Jeremy Ruston
10a635927d
Add confirmation when overwriting an existing tiddler
...
Now there's a JavaScript confirm when attempting to save a tiddler that
has been renamed to the name of an existing tiddler
2013-09-14 21:57:23 +01:00
Jeremy Ruston
1b094b1d5c
Avoid attempts to save a tiddler with an empty title
...
Clicking "save" with a blank title will now be ignored
2013-08-28 19:46:21 +01:00
Jeremy Ruston
fbfe5a26c5
Move the animation duration into a tiddler so that we can easily let it be adjusted in the control panel
2013-08-28 15:15:56 +01:00
Jeremy Ruston
e8425131f4
Correct typo in 954a987d31
2013-08-28 14:44:59 +01:00
Jeremy Ruston
954a987d31
Extend the edit widget to be able to edit properties of data tiddlers
2013-08-28 11:23:14 +01:00
Jeremy Ruston
06599bcfc6
Fix up closing tiddlers in the zoomin listview
...
One for @giffmex
2013-08-26 14:48:05 +01:00
Jeremy Ruston
d0dff80d6d
Fix problem with insertBefore() on Win7/IE10
...
The problem is that insertBefore() on Win7/IE10 crashes if the second
parameter is undefined, rather than behaving as if the parameter is
missing, as all other browsers do. Aaargh.
2013-08-24 23:28:17 +01:00
Jeremy Ruston
be06257430
Split "transclude" widget into a separate "tiddler" and "transclude" widget
...
Belatedly realised that the design would be clearer without these two
separate concepts being conflated into a single widget.
As a result of this change, any other widget or template that generates
transclude widgets has needed adjustment.
2013-08-24 16:45:45 +01:00
Jeremy Ruston
e1a38d88a7
Add a count widget
2013-08-21 23:09:54 +01:00
Jeremy Ruston
44f172c5ec
Correct harmless but confusing typo
2013-08-21 23:09:40 +01:00
Jeremy Ruston
ca142dbdb5
Remove extraneous references to current field context variable
...
This should have been done as part of
6fc4e5db7c
2013-08-21 22:42:05 +01:00
Jeremy Ruston
8cbb98d44d
Hack the list widget
...
Usually the list transcludes each tiddler through the sample template.
This hack makes it work differently, where each tiddler is used as a
template to render the same current tiddler. The attribute that
switches modes is called "hackTemplate" because this is a temporary
implementation of this capability for experimental purposes
2013-08-21 20:50:08 +01:00
Jeremy Ruston
bc56253479
Extend the list widget to allow the generated HTML elements to be controlled
...
This makes it possible to generate UL or OL lists as well as the
current divs and spans.
This feature is clearly necessary but I'm not very happy with it. It
feels as though the syntax should be modifying a UL tag to specify the
extra information required to generate the list, rather than turning
the list widget to indirectly specify it's elements.
2013-08-19 11:08:00 +01:00
Jeremy Ruston
a36d3895ff
Remove type attribute from the list widget
...
It's just a shortcut that clutters things up; easier to do the same
thing with a macro
2013-08-18 20:41:46 +01:00
Jeremy Ruston
f4b4415676
Fix problem which was preventing transcluded indexed properties from being parsed inline
2013-08-16 13:11:44 +01:00
Jeremy Ruston
6fc4e5db7c
Get rid of the old "fieldgrid" and "fieldlist" widgets
...
Instead, we'll use the "list" widget with the new support for macros.
2013-08-15 18:17:11 +01:00
Jeremy Ruston
6be8afe49f
Extend the list widget to allow it to render each element as a macro
...
This will enable us to drop several existing widgets: fields,
fieldlist, fieldgrid
2013-08-13 19:33:45 +01:00
Jeremy Ruston
0cf4c578d4
First take of the ConfigInfo panel
...
It displays internal configuration information for debugging and
learning about TiddlyWiki. Also introduces a way of interleaving
documentation tiddlers (complete for tiddler fields, more module type
docs to come)
2013-08-09 21:57:05 +01:00
Jeremy Ruston
0bda00ae71
Extend the fieldlist widget to retrieve all fields used across all tiddlers
2013-08-09 16:46:17 +01:00
Jeremy Ruston
9b7cee81f2
Add type="modules" support to the info widget
...
With type="modules", the info widget outputs a list of the currently
loaded modules, grouped by module type.
2013-08-09 16:45:40 +01:00
Jeremy Ruston
7e82eb13eb
Fix problem with stray drag image showing
...
Changes to the main layout CSS a few weeks ago meant that the drag
image element was visible at the top left corner of the window.
Astoundingly, the fix is to cover it with another div with the same
background colour as the page….
2013-08-08 21:46:38 +01:00
Jeremy Ruston
83ea953a1d
Switch the story list over to using the new list field
2013-08-07 17:54:27 +01:00
Jeremy Ruston
86e73ee323
Set modified field and other metadata for newly created and modified tiddlers
...
Right now we're setting the created/modified time, and only setting the
creator/modifier if the tiddler `$:/status/UserName` is defined.
2013-08-04 14:02:07 +01:00
Jeremy Ruston
5994a84644
Extend ginsu.sh to generate a split.recipe file
2013-08-03 15:03:07 +01:00
Jeremy Ruston
602b9d34e4
Unpack the object returned by getBoundingClientRect()
...
Embedding the return object directly doesn't survive the object being
passed as an event parameter.
Fixes #114
2013-07-25 16:58:42 +01:00
Jeremy Ruston
a79e876806
First pass at a grid widget
...
Need to add support for cell templates and in place editing.
2013-07-22 13:03:46 +01:00
Jeremy Ruston
6e98af3bbd
Experimenting with different easing functions for the zoomin animation
2013-07-08 17:20:06 +01:00
Jeremy Ruston
24ad677d75
Add back the zoomin view
...
An alternative visualisation for the story list. It just shows the
currently selected tiddler, with smooth animations between tiddlers.
Not entirely finished yet; for instance, if you close the current
tiddler you get a blank screen until you select another tiddler.
2013-07-08 15:19:00 +01:00
Jeremy Ruston
594f4ba204
Update animations to use a timer instead the transitionEnd event
...
Thr trouble is that the transitionEnd event doesn't fire under some
circumstances (eg if the animated element is hidden). So, it's more
reliable to use a timer instead
2013-07-06 12:57:37 +01:00
Jeremy Ruston
6d3f224817
Fix problem with pop listview animation
...
It turns out the transitionEnd event fires separately for each animated
property. We'll just remove ourselves on the first one
2013-07-05 11:15:51 +01:00
Jeremy Ruston
e6450e60e2
Add a popping animation to the tags editor
2013-07-04 12:50:31 +01:00
Jeremy Ruston
e583c1d72d
Use empty string as default value for reveal widget
2013-07-03 16:00:26 +01:00
Jeremy Ruston
d93e6b1229
Always default to a href='#title' format for tiddler links
...
The link format will be overridden when we're creating links within
static HTML representations
2013-06-27 09:03:59 +01:00
Jeremy Ruston
cb34ef20ad
Add input type handling to the texteditor
...
This allows us to customise the input element used for each field type.
The only one implemented at the moment is color, which currently only
works on Chrome
2013-06-13 09:17:36 +01:00
Jeremy Ruston
204bd69e83
Fix issue preventing tags being added to a tiddler with no existing tags
2013-06-11 14:52:01 +01:00
Jeremy Ruston
2c20e6579d
Update edit widget to trigger a popup when focussed
...
This will allow us to do autocompletion
2013-06-09 19:27:45 +01:00
Jeremy Ruston
e4aa80b277
Update the transclude widget to update parameters for remove tag message
2013-06-09 19:27:15 +01:00
Jeremy Ruston
d4b6c05bc2
Update linkcatcher to optionally trigger a different event
2013-06-09 19:26:42 +01:00
Jeremy Ruston
0cbb89770f
Update fieldmangler widget to be able to add and remove tags
2013-06-09 19:26:05 +01:00
Jeremy Ruston
92fee547a9
Allow class to be specified for list widget frame element
2013-06-09 19:25:11 +01:00
Jeremy Ruston
a20eb4867e
Update link widget to use current tiddler as default target
2013-06-09 19:24:45 +01:00
Jeremy Ruston
aeb8d0d1e6
Allow a placeholder attribute to be specified on the edit widget
...
Also fix some problems with handling of the class and style attributes
2013-06-08 17:30:54 +01:00
Jeremy Ruston
694ca76e7f
Improve the bitmap editor to allow the bitmap to be resized
...
A bit rough and ready, too
2013-06-06 20:55:43 +01:00
Jeremy Ruston
d81f45764a
Start refactoring the bitmap editor to permit a more complex UI
2013-06-05 19:04:40 +01:00
Jeremy Ruston
2d5d1d1ce1
Improve editting of corrupt images
...
We now detect errors loading the image and initialise a blank canvas
instead.
This means that it's possible to open HelloThere for editting, and then
change the "type" field to "image/jpeg", and the textarea automatically
switches to a blank bitmap. Next up is making it possible to change the
size of the bitmap.
2013-06-05 15:47:44 +01:00
Jeremy Ruston
c0a26d2849
Ensure that the edit widget refreshes whenever the editor type changes
2013-06-05 15:38:29 +01:00
Jeremy Ruston
131874e154
Fix typo
2013-06-05 15:38:06 +01:00
Jeremy Ruston
e925f1c3dd
Adjust fields widget to sort fields
...
Making it easier to track .tid files under source code control
2013-06-05 14:12:52 +01:00
Jeremy Ruston
348a6976b7
Add fieldmangler widget that allows fields to be added and removed to tiddlers
2013-06-04 12:02:37 +01:00
Jeremy Ruston
ab75dde048
Update transclude widget to flag events with the current field
2013-06-04 12:02:18 +01:00
Jeremy Ruston
7a080b7aac
Update class for fieldlist widget
2013-06-04 12:01:40 +01:00
Jeremy Ruston
fb76ee5606
Fix problem that was stopping buttons being able to set tiddlers to the empty string
2013-06-04 12:01:28 +01:00
Jeremy Ruston
538d12e017
Add the fieldlist widget
...
Allows us to render a sequence of fields
2013-06-02 23:20:43 +01:00
Jeremy Ruston
938124ca37
Extend the info widget to return the current field
2013-06-02 23:20:24 +01:00
Jeremy Ruston
6f3f4528c9
Make the edit and view widgets default to the current field
2013-06-02 23:20:08 +01:00
Jeremy Ruston
d5b0a0fb68
Extend the transclude widget to allow a currentField to be set
...
We set the current field as a context variable for the transcluded
content
2013-06-02 23:19:50 +01:00
Jeremy Ruston
456d50b6ef
Make the setstyle widget refresh itself properly
...
This will allow us to dynamically change the colour of tags
2013-06-02 23:18:54 +01:00
Jeremy Ruston
f743e09e7a
Corrected typo
2013-06-02 23:17:53 +01:00
Jeremy Ruston
d27cb19e22
Update titles of certain widgets that were misspelled
2013-05-31 13:23:25 +01:00
Jeremy Ruston
a8b1da33de
Improvements to slide animation
2013-05-28 16:47:16 +01:00
Jeremy Ruston
5cdcadd8b2
Make the reveal widget use the new animator mechanism
2013-05-28 16:28:38 +01:00
Jeremy Ruston
5394fc4ee1
Fix typo
2013-05-25 16:40:44 +01:00
Jeremy Ruston
4ad6f05010
Fix issue with scrolling while editting long tiddlers in Firefox
2013-05-21 17:54:10 +01:00
Jeremy Ruston
d3fa781287
Switch to using a slider for tiddler info
2013-05-19 12:11:18 +01:00
Jeremy Ruston
96462de2f5
Fix problem with not encoding body of non-base64 data URIs
2013-05-18 16:59:53 +01:00
Jeremy Ruston
f3bcc1c0af
Add a datauri widget
...
Used in stylesheets to get a data URI for a font or bitmap
2013-05-17 17:30:03 +01:00
Jeremy Ruston
551ebdc005
Major refactoring of rendering mechanism
...
We now use a fake DOM implementation on the server to let us share more
rendering code between the text output vs. DOM output paths.
2013-05-17 10:12:25 +01:00
Jeremy Ruston
07d4c9a639
A slightly better fix for the render context inheritance issue with the htmlwikified viewer for the view widget
2013-05-15 22:15:57 +01:00
Jeremy Ruston
98986ba9cc
Fix problem with render context not inherited into htmlwikified view widgets
2013-05-15 21:33:40 +01:00
Jeremy Ruston
8564602256
Refactor rendertree to simplify context handling
...
Get rid of the separate renderContext stack and instead have a parent
pointer on renderer nodes. This lets us walk back up the render tree to
resolve context references
2013-05-15 17:32:17 +01:00
Jeremy Ruston
15d1abf523
Fix problem with context-menu paste not triggering saving of edits
...
We'll use the input event to detect changes, which is reliable but
doesn't work on older browsers
2013-05-11 10:03:11 +01:00
Jeremy Ruston
abcf7df875
Adjust bitmap editor to draw with a yellow pen
...
For highlighting
2013-05-08 15:11:53 +01:00
Jeremy Ruston
ed5f88ab84
Fix problem with importing TW files
2013-05-03 19:19:01 +01:00
Jeremy Ruston
1696daf2bf
More explanation of the linkcatcher widget
...
Prompted by @pmaro
2013-05-01 16:11:52 +01:00
Jeremy Ruston
aa7b9441fd
Add a linkcatcher widget
...
It intercepts navigation events and saves the target tiddler title into
a specified text reference
2013-05-01 12:02:33 +01:00
Jeremy Ruston
594871e2d1
Fix for the link macro to work around iPhone annoyance
...
This prevents Mobile Safari from sliding the address bar into view
whenever a tiddler link is clicked
2013-04-29 16:03:35 +01:00
Jeremy Ruston
b305debf97
Add a close all tiddlers button
...
For @pmario
2013-04-27 16:35:59 +01:00
Jeremy Ruston
059a36b23d
Animate tiddler closures to the left
...
As @pmario points out, avoids nasty interactions with the sidebar
2013-04-27 16:24:41 +01:00
Jeremy Ruston
94287c9ac3
Tidying up drag and drop
2013-04-10 16:55:25 +01:00
Jeremy Ruston
e39d246317
Added basic support for drag and drop of tiddlers
...
Links are now draggable. Dragging outside the browser will drop the
wiki text of the tiddler. Dragging to another TW5 browser window will
drop the entire tiddler, including fields.
2013-04-08 18:47:46 +01:00
Jeremy Ruston
45ee2b3048
Fix bug that was preventing pasting into edit textareas or input boxes
2013-04-05 13:57:55 +01:00
Jeremy Ruston
b69f87484d
Remove extraneous debugging code
2013-04-04 14:24:37 +01:00
Jeremy Ruston
dc00e584fb
Add support for filtering shadow tiddlers
2013-04-03 14:29:12 +01:00
Jeremy Ruston
6c210df0bd
Update HTML deserializer to cope with TiddlyWiki classic and TW5 files
2013-04-03 12:57:17 +01:00
Jeremy Ruston
a17e3588a6
Fix problem triggered by stale history list
2013-04-02 09:28:48 +01:00
Jeremy Ruston
c287d9d6d0
First pass at a widget for importing tiddlers
2013-04-01 19:06:39 +01:00
Jeremy Ruston
d99db91dd5
Fixed attribute assignment
2013-03-28 21:47:51 +00:00
Jeremy Ruston
0f0a96c4da
Update list widget to transclude block vs. inline correctly
2013-03-28 21:29:42 +00:00
Jeremy Ruston
abf3673fc9
Update texteditor to respect prevailing classes and styles
2013-03-28 21:29:20 +00:00
Jeremy Ruston
54d858a371
Improved default logic for the reveal widget
2013-03-27 13:48:39 +00:00
Jeremy Ruston
738952029b
Icons for editing tiddlers
2013-03-20 17:20:46 +00:00
Jeremy Ruston
0d2ac57ff7
Make static links to tiddlers with spaces work
...
A bit of a hack - the savetiddlers command should generate filenames
better
2013-03-20 11:02:06 +00:00
Jeremy Ruston
cbf2e9add9
Add fieldgrid in tiddler info dropdown
2013-03-19 22:39:24 +00:00
Jeremy Ruston
d4ada346dd
The list widget should parse the empty message as inline text
2013-03-19 22:39:04 +00:00
Jeremy Ruston
2aff4db744
Fix relative date viewer so that it displays absolute dates in static HTML representations
2013-03-19 19:06:23 +00:00
Jeremy Ruston
ec83bc5c64
Bring back the relativedate viewer
2013-03-19 18:59:13 +00:00
Jeremy Ruston
dbfbad3dd3
Let view widget viewers get postRenderInDom() callbacks
2013-03-19 18:59:00 +00:00
Jeremy Ruston
952f1b3900
Add tiddler info dropdown
...
Including backlinks
2013-03-19 16:45:07 +00:00
Jeremy Ruston
a1260dc57d
Basic first implementation of tabs for the sidebar
2013-03-18 22:18:54 +00:00
Jeremy Ruston
5b6376a386
Better titles for drafts of new tiddlers
2013-03-18 10:59:47 +00:00
Jeremy Ruston
623a3ec8f8
Rename "shadow" tiddlers to "system" tiddlers
...
What we have at the moment isn't really the same as TiddlyWiki
classic's shadow tiddlers, it's a much simpler system for excluding
tiddlers. We'll use the term "shadow" instead to refer to the way that
tiddlers in plugins behave, which is exactly like TiddlyWiki classic's
shadow tiddlers.
2013-03-15 22:00:19 +00:00
Jeremy Ruston
7e57c422dc
Re-introduce video widget
2013-03-12 19:17:13 +00:00
Jeremy Ruston
fc33df8829
Add support for deleting tiddlers
2013-03-10 19:24:49 +00:00
Jeremy Ruston
21cb1e233e
Add "info" widget for displaying information about tiddlers
...
Currently only supports displaying the changecount of a tiddler
2013-03-10 19:24:22 +00:00
Jeremy Ruston
f85afdb964
Fixed #70
2013-03-06 22:12:21 +00:00
Jeremy Ruston
8e9b2996eb
Restore qualifyHoverTitles
attribute to link widget
2013-03-05 11:55:25 +00:00
Jeremy Ruston
c24c00e8d6
Make the htmwikified viewer pass the renderContext through
2013-03-04 18:05:22 +00:00
Jeremy Ruston
fc79db53ab
Allow templating with the link widget
...
And add some documentation
2013-03-04 11:13:10 +00:00
Jeremy Ruston
79bb082b92
Restore password widget
...
Hence allowing TiddlySpot integration to work again
2013-03-04 11:12:49 +00:00
Jeremy Ruston
25df8bae6a
Quick fix to allow wikilinks to be disabled
...
And using it to disable wikilinks in the readmes
2013-03-01 18:04:53 +00:00
Jeremy Ruston
f3acc92730
Tweak removal animation in classic list view
2013-02-09 17:18:00 +00:00
Jeremy Ruston
87986a945d
Animation tweaks for classic listview
2013-02-06 17:06:48 +00:00
Jeremy Ruston
b0a20e704b
Restored the classic listview
2013-02-06 11:27:09 +00:00
Jeremy Ruston
170c1425f7
Normalise custom event names
2013-02-04 15:29:25 +00:00
Jeremy Ruston
365974d14f
Improved generation of titles for draft tiddlers
2013-02-04 11:56:11 +00:00
Jeremy Ruston
30d0dec1fa
Replacement styles
...
Smaller simpler styles (including CSS reset from
https://github.com/necolas/normalize.css/ )
2013-02-03 23:02:23 +00:00
Jeremy Ruston
a9de17bd55
Restore encrypted TiddlyWiki support
2013-01-31 10:20:13 +00:00
Jeremy Ruston
f37e99d1fb
Extend fields widget to allow stripping of prefixes from tiddler titles
...
This functionality is a bit specific to the production of TW2, and so
might be refactored elsewise in the future.
2013-01-21 17:26:43 +00:00
Jeremy Ruston
dd3433f39f
Fixed problem with closing all tiddlers in a story
2013-01-18 15:36:49 +00:00
Jeremy Ruston
5e7e1fa93d
Re-introduce the checkbox widget
2013-01-18 09:33:16 +00:00
Jeremy Ruston
71f6194f01
Introduce a simple listview that scrolls to newly inserted entries
2013-01-17 13:52:46 +00:00
Jeremy Ruston
94744843b6
Added new tiddler button
2013-01-17 11:38:02 +00:00
Jeremy Ruston
aba120befc
Added text and bitmap editors
2013-01-17 11:30:35 +00:00
Jeremy Ruston
106099d991
Removed obsolete code
2013-01-17 11:29:35 +00:00
Jeremy Ruston
e024440ca8
Fixed transclude widget to only refresh when the template changes
...
Not when the tiddler being viewed changes; any such changes will be
picked up by embedded view widgets.
2013-01-17 11:29:21 +00:00
Jeremy Ruston
df59dee188
Removed ability for widgets to not generate any elements
...
It interfered with the refresh mechanism
2013-01-17 11:28:24 +00:00
Jeremy Ruston
baff901685
Added ability to transclude fields of data tiddlers
...
This allows us to transclude colours into CSS
2013-01-15 17:50:47 +00:00
Jeremy Ruston
698f8dd602
Added version widget
2013-01-03 22:55:23 +00:00
Jeremy Ruston
a43d7aed95
Added setstyle widget and use it to colour the tag buttons
2013-01-03 22:36:51 +00:00
Jeremy Ruston
95c9b7b114
Fixed bug with refreshing transclude widget
2013-01-03 20:54:34 +00:00
Jeremy Ruston
a2dfaec054
Get rid of the extraneous <span> around link widgets
2013-01-03 20:51:28 +00:00
Jeremy Ruston
6d24cedbcc
Refactored widget renderers to be hosted within HTML element renderers
...
This arrangement takes better advantage of the similarities between the
now deleted widget renderer and the element renderer. It also obviates
the need for wrapper elements around every widget.
2013-01-03 16:27:55 +00:00
Jeremy Ruston
2124dd1ac1
Add a better error message for unknown widgets
2013-01-01 18:00:02 +00:00
Jeremy Ruston
d96e0073ac
Refactored widgets not to use a base class
2013-01-01 17:51:02 +00:00
Jeremy Ruston
f8340bc4dc
Improvements to reveal widget popup handling
2013-01-01 16:14:42 +00:00
Jeremy Ruston
8fdeefd7d1
Added reveal macro
2012-12-31 18:36:39 +00:00
Jeremy Ruston
5b7cdc20ba
Added beginnings of popup widget
2012-12-30 17:23:44 +00:00
Jeremy Ruston
db0b82d4ef
Fix typo in list filter type for shadow tiddlers
2012-12-28 22:57:18 +00:00
Jeremy Ruston
b006cf163f
Remove the old parser code
...
Thus introducing a few functional regressions, but it's going to be
easier to fix things up without the old code knocking around and
getting in the way.
2012-12-28 22:08:32 +00:00
Jeremy Ruston
8d185399de
Some new viewers we'll need for cooking TiddlyWiki files
...
This is all part of getting the new parser able to cook TiddlyWiki files
2012-12-26 19:37:33 +00:00
Jeremy Ruston
ac96b13b47
Added "fields" widget
...
Outputs tiddler fields through a text template.
2012-12-26 19:36:54 +00:00
Jeremy Ruston
11d001ad80
Added inline variant of filtered transclusion syntax
2012-12-23 10:47:14 +00:00
Jeremy Ruston
fa17eb1b96
Fixed support for custom attributes, classes and tooltips on transclusions
2012-12-20 17:19:28 +00:00
Jeremy Ruston
42945789e9
Refactor parser rule architecture to allow individual parsers to function as both block and inline parsers
2012-12-20 16:02:03 +00:00
Jeremy Ruston
055bdd8d8f
Added inline transclusion as well as block transclusion
2012-12-20 15:07:38 +00:00
Jeremy Ruston
c0e36f1129
Removed extraneous code
...
This was left over from before the refactoring
2012-12-15 11:38:47 +00:00
Jeremy Ruston
7593cf1075
Cleaning up the widget refresh mechanism
2012-12-14 19:31:37 +00:00
Jeremy Ruston
966684cb13
Improved event handling for widgets
2012-12-14 17:57:53 +00:00
Jeremy Ruston
5c1caa672b
Moved render() and renderInDom() into widget base class
2012-12-14 17:51:14 +00:00
Jeremy Ruston
3e06bca347
Refactor widget implementation
2012-12-14 16:01:37 +00:00
Jeremy Ruston
d338a54370
Introduce refactored wiki parser and renderer
...
This is a half-way through a big refactoring of the parsing and
rendering infrastructure. The main change is to separate the parse and
render trees, which makes the code a lot cleaner. The new parser isn't
yet functional enough to replace the existing parser so for the moment
you have to manually invoke it with `$tw.testNewParser()` in your
browser console. I really ought to use branches for this kind of
thing...
2012-12-13 21:34:31 +00:00