Grayeul
da54236f5a
Change names to tw=close-other-tiddlers and handleCloseOtherTiddlersEvent
2013-11-11 07:34:19 -06:00
Grayeul
c930d84d01
Add support for close-all-others
2013-11-11 07:28:29 -06:00
Jermolene
8357d90e59
Fix bug caused when creating a tiddler title starting or ending with a space
2013-11-11 08:48:06 +00:00
Jermolene
04e2f18ff1
Remove tooltip, classes and styles from transclusion syntax
...
Now that transclusion doesn't generate any intrinsic elements we don't
have an element to attach the tooltip, classes and styles to.
2013-11-10 22:46:37 +00:00
Jermolene
b1667259f0
Fix default password
...
The password widget was defaulting to the password "null".
2013-11-10 19:22:10 +00:00
Jermolene
c77b451863
Fixed bug when using checkbox widget to apply a tag to a tiddler that is untagged
2013-11-10 19:21:37 +00:00
Jermolene
a7bb331412
Extend view widget so that it falls back to its content if the field/property is empty or missing
2013-11-09 17:30:06 +00:00
Jermolene
6f1c9d88cc
Improve the Widget.prototype.removeChildDomNodes() method so that most subclasses won't need to override it
2013-11-09 16:55:14 +00:00
Jermolene
ccb7fac25e
Fix further typo in edit-text widget
2013-11-09 14:17:08 +00:00
Jermolene
bbe9a9c191
Fixed typos in edit-text widget
...
Thanks @grayeul
2013-11-09 13:15:54 +00:00
Jermolene
b745e304a2
Fix problem with edit-text widget and indexed properties
...
Thanks to @grayeul for the pointer:
https://github.com/Jermolene/TiddlyWiki5/commit/78bc89cbdbcc26e373001f2d
473436489d8d4365#commitcomment-4554613
2013-11-09 10:55:18 +00:00
Jermolene
e54148033b
Fix client server edition syncing
2013-11-08 21:34:47 +00:00
Jeremy Ruston
ec481415f9
Fixes for TiddlyWeb
2013-11-08 20:18:26 +00:00
Jeremy Ruston
5a8ef2681b
Update tw-new-tiddler
message to take a template tiddler
...
The template tiddler title is used as the basis of the new title, which
is probably not very convenient. We'd like to be able to use system
tiddlers as templates, without defaulting the new instance to a system
tiddler title.
2013-11-08 16:57:52 +00:00
Jeremy Ruston
8fbae4435f
Make the zoomin storyview visualisation properly track the title node
2013-11-08 12:36:30 +00:00
Jeremy Ruston
e93ac76581
Make sure external links have the class "tw-tiddlylink-external"
...
Fix #203
2013-11-08 12:26:32 +00:00
Jeremy Ruston
cc0011abd3
Get rid of the "new_" prefix we had on some methods
...
There's still the "old_" prefix to get rid of too.
2013-11-08 08:51:14 +00:00
Jeremy Ruston
b7cb1d3391
Change new_widget
to widget
...
I was avoiding doing this until after the merge.
2013-11-08 08:47:00 +00:00
Jeremy Ruston
3e3a5917b7
Move the widgets back to the right folder
2013-11-08 08:38:44 +00:00
Jeremy Ruston
35adf4269a
Merge backlog of changes from master branch
...
This is too easy. I'm worried.
2013-11-08 08:33:27 +00:00
Jeremy Ruston
c444b48dca
Restore the zoomin storyview
...
Now we fix the tiddler width properly.
2013-11-07 22:55:39 +00:00
Jeremy Ruston
69888e6701
Allow field modules to specify HTML element tag used for editing
2013-11-07 19:39:50 +00:00
Jeremy Ruston
e5b66a08bf
Reuse existing draft if available when switching a tiddler to edit mode
...
Fixes #199
2013-11-07 19:39:26 +00:00
Jeremy Ruston
cc11b86d81
Fixed typo
2013-11-05 09:00:31 +00:00
Jeremy Ruston
aa79b4aff1
Add pop visualiser
2013-11-05 08:52:32 +00:00
Jeremy Ruston
6a0ae2c48b
Make sure we animate emptying the list widget
2013-11-05 08:52:17 +00:00
Jeremy Ruston
7c250fd7fe
Re-introduce listviews
...
Now called storyviews because they're aware of the history structure as
well as the list structure.
2013-11-04 22:22:28 +00:00
Jeremy Ruston
63243c5855
Introduce a PageMacros tiddler containing a tabs macro
...
This is a hacky way of having macro definitions that behave as if they
are global to the wiki.
The new tabs macro itself is cool, though: neatly encapsulates most of
the gubbins around a tab control, and the rendering is quite easy to
style.
2013-11-04 18:21:20 +00:00
Jeremy Ruston
ff4d76f045
Fix up missing variable values
...
We were crashing if a variable was inadvertantly set to undefined
2013-11-04 10:00:34 +00:00
Jeremy Ruston
adf16eeaf3
Update macrocall widget to allow type of input and output to be specified
...
Means that you can invoke macros without parsing them as wikitext.
2013-11-04 10:00:02 +00:00
Jeremy Ruston
ed6fd475ab
Add 'default' attribute to button widget
...
This allows us to do things like tab controls properly.
2013-11-04 09:59:26 +00:00
Jeremy Ruston
8ab7a1dd8f
Only set the style of the button widget if the style attribute is specified
2013-11-04 09:58:56 +00:00
Jeremy Ruston
fd70aa8c45
Get rid of the qualifyTiddlerTitles hack
...
Now, finally, we can implement qualifyTiddlerTitles as a macro.
2013-11-02 15:42:24 +00:00
Jeremy Ruston
0b1f0a5fab
Refactor the list widget to get rid of some hacks
...
As promised.
2013-11-02 10:12:55 +00:00
Jeremy Ruston
51394e50e8
Get rid of the event handling in the tiddler widget
...
Much neater if each widget does as little as possible.
2013-11-02 10:12:22 +00:00
Jeremy Ruston
31ae8910c6
Fix animation behaviour of reveal widget
2013-11-02 09:21:11 +00:00
Jeremy Ruston
6a6f6c7713
Restored animations for the reveal widget
2013-11-01 17:23:08 +00:00
Jeremy Ruston
0b0fb0a145
Fixed refresh logic of element widget
2013-11-01 17:22:51 +00:00
Jeremy Ruston
6b6b444269
Fixed refresh logic of checkbox widget
2013-11-01 17:22:40 +00:00
Jeremy Ruston
363e90fca8
Remove version widget in favour of widget macro
2013-11-01 13:22:06 +00:00
Jeremy Ruston
4118afe9e8
Make the widget tree for the page accessible to the JS console
...
Now you can browse the render tree of widgets by inspecting
`$tw.pageWidgetNode` in the JS console
2013-11-01 12:44:03 +00:00
Jeremy Ruston
4f4d45a972
Fix problem with default attribute of edit-text widget
...
Setting `default=""` wasn't working
2013-11-01 12:43:23 +00:00
Jeremy Ruston
e870e28cf3
Remove unused wikified format from viewwidget
2013-10-31 22:01:12 +00:00
Jeremy Ruston
01a0c9481e
Remove unused class attribute from reveal widget
2013-10-31 21:59:53 +00:00
Jeremy Ruston
45f0f46fdf
Fix macrocall widget to not pass $name as a parameter
2013-10-31 21:59:37 +00:00
Jeremy Ruston
1ca473fd2f
Remove unused preserveCurrentTiddler attribute from list widget
2013-10-31 21:59:15 +00:00
Jeremy Ruston
1cc27b2598
Correct typo
2013-10-31 21:59:01 +00:00
Jeremy Ruston
0ec2cf20a9
Rename "focusSet" attribute of edit-text widget to "focusPopup"
2013-10-31 12:37:22 +00:00
Jeremy Ruston
4d4a84c5bf
Remove unused class attribute from edit-bitmap widget
2013-10-31 12:36:38 +00:00
Jeremy Ruston
4646ba4e30
Remove unused class attribute from checkbox widget
2013-10-30 16:28:57 +00:00
Jeremy Ruston
f9c95dda46
Allow browsing for multiple files at once
2013-10-30 16:05:49 +00:00
Jeremy Ruston
8084837f48
Fix problem with default text handling in edit-text widget
2013-10-30 14:27:55 +00:00
Jeremy Ruston
9e3618bdcf
Rename the 'title' attributes of various widgets to 'tiddler'
...
The change is to avoid confusion with the HTML 'title' attribute. The
name 'tiddler' better emphasises the purpose of the attribute, too.
2013-10-30 13:36:44 +00:00
Jeremy Ruston
05e73ee1da
Cope with localStorage not being available
...
IE10 doesn't allow localStorage for HTML pages loaded from the file://
protocol.
Boo.
2013-10-29 22:21:25 +00:00
Jeremy Ruston
d42fb673f8
Fix checkbox widget to update modified
and modifier
fields
2013-10-29 21:20:59 +00:00
Jeremy Ruston
654f48b14d
Fix problem with modal titles
2013-10-29 15:01:36 +00:00
Jeremy Ruston
731cbb8cd6
Switch from new_pageContainer
back to pageContainer
2013-10-29 15:01:27 +00:00
Jeremy Ruston
b4da65d1c9
Update fakedom to no longer add a newline after opening tags
...
The newline was being rendered within `<code>` elements.
2013-10-29 14:52:12 +00:00
Jeremy Ruston
14d7d5ea59
Use the new wiki.makeWidget() method where we can
2013-10-29 14:51:35 +00:00
Jeremy Ruston
4eebe7388d
Add a wiki.makeWidget() method
...
Encapsulates some logic that has been duplicated elsewhere.
2013-10-29 14:48:24 +00:00
Jeremy Ruston
371c8ab45a
Fix changed attribute detection in tiddler widget
2013-10-29 09:04:18 +00:00
Jeremy Ruston
bf48e6f8a1
Rename tiddlerTitle
variable to currentTiddler
2013-10-28 23:40:45 +00:00
Jeremy Ruston
b4b0eae4e5
Allow the foreignObject element in SVG to embed HTML via the body element
...
This change means that any `<body>` elements inside an SVG region of
the DOM tree will switch the namespace back to XHTML.
2013-10-28 15:05:19 +00:00
Jeremy Ruston
20f03de712
The big purge of the old widget mechanism
...
Getting rid of the old widget mechanism files finally gives us a payoff
for all the refactoring. Still a bit of tidying up to do, and we need
to re-introduce the animation mechanisms.
2013-10-27 22:55:36 +00:00
Jeremy Ruston
5610efff01
Update typedblock parser to use new widget mechanism
2013-10-27 22:53:22 +00:00
Jeremy Ruston
d84e398d7a
Fix problem when widgets don't have a parse tree node
2013-10-27 22:53:06 +00:00
Jeremy Ruston
c7d56361ee
Parse and render macro attributes, rather than using the raw text
2013-10-27 22:52:34 +00:00
Jeremy Ruston
d1108c7fcc
Remove inaccurate comments
2013-10-27 22:52:04 +00:00
Jeremy Ruston
b1208a8d37
Fix problem with getTiddlerLinks()
...
It was crashing if it encountered a link widget that didn't have a `to`
attribute.
2013-10-27 13:54:39 +00:00
Jeremy Ruston
3ad3cfd526
Bring back the bitmap editor widget
2013-10-26 13:13:55 +01:00
Jeremy Ruston
f8f524d378
Make sure the dragger cover properly covers the dragger
2013-10-26 10:29:52 +01:00
Jeremy Ruston
76faba2d9f
Get rid of the old tempwidget
2013-10-26 10:29:40 +01:00
Jeremy Ruston
98da59be7a
Extend the link widget to make the links draggable
2013-10-26 08:36:43 +01:00
Jeremy Ruston
05fc9848bb
Extend the dropzone widget to cope with dataTransfer objects (as well as files)
2013-10-26 08:36:31 +01:00
Jeremy Ruston
068befb24f
Refactor link widget with tidier event handler
2013-10-25 23:22:46 +01:00
Jeremy Ruston
ad518c181d
Add jsencoded view format
2013-10-25 23:00:43 +01:00
Jeremy Ruston
925e22c46f
Fix up the server command to use the new widget mechanism
2013-10-25 22:30:15 +01:00
Jeremy Ruston
bdcead624a
Add a changecount macro
2013-10-25 22:29:49 +01:00
Jeremy Ruston
b3ae45cbde
Invoke macros with this
set to the host widget
2013-10-25 22:29:28 +01:00
Jeremy Ruston
8fbc5759ad
Refactor widget.getVariable() to have better behaved parameters
2013-10-25 22:16:15 +01:00
Jeremy Ruston
75231fec39
Add browse and dropzone widgets
...
We're splitting out the two aspects of the old import widget
2013-10-25 21:16:03 +01:00
Jeremy Ruston
c2efdfdbc4
Extend the navigator widget to handle import events
2013-10-25 21:15:32 +01:00
Jeremy Ruston
8c2fb7b8d0
Extend wiki object to have methods required for importing
2013-10-25 21:15:20 +01:00
Jeremy Ruston
62b72f6bd1
Move browser-startup module initialisation to the end of startup
2013-10-25 12:53:40 +01:00
Jeremy Ruston
11a07e71dc
Move stripcomments from the classictools plugin into the core
...
It's a bit of a hack for the moment. The plan is to implement
stripcomments via the macro mechanism, at which point it can move back
into the plugin.
2013-10-25 12:32:57 +01:00
Jeremy Ruston
8a709a0b00
Give the edit-text widget some extensibility hooks
...
So that the upcoming CodeMirror plugin can do its stuff
2013-10-25 09:15:56 +01:00
Jeremy Ruston
3251aa191f
Fix up saving encrypted wikis
2013-10-24 13:10:32 +01:00
Jeremy Ruston
56b2c25588
Whoops file in the wrong place
2013-10-24 12:00:32 +01:00
Jeremy Ruston
632970cd86
Get external links working again
...
We no longer use the `<$link>` widget for external links. Instead the
parser generates `<a>` elements. This makes things simpler, but does
mean that the `target=_blank` behaviour is baked into the parser.
Probably we should introduce a new `<$extlink>` widget that generates
an `<a>` element with a configurable `target` attribute
2013-10-24 11:54:54 +01:00
Jeremy Ruston
3350510516
Add new modules and moduletypes filter operators
2013-10-23 23:11:41 +01:00
Jeremy Ruston
3241c2b76a
Added password widget
2013-10-23 20:24:45 +01:00
Jeremy Ruston
54bed81ab9
Missed off some of the refresh logic
2013-10-23 19:46:31 +01:00
Jeremy Ruston
4e713baeee
Add checkbox widget and fix up task management example
2013-10-23 19:38:36 +01:00
Jeremy Ruston
67490cbb74
Whoops console.log.alypse
2013-10-23 17:50:51 +01:00
Jeremy Ruston
f2ac04943f
Fixed tag autocomplete popup on focus
2013-10-23 17:41:12 +01:00
Jeremy Ruston
d5f09a4608
Prevented generation of illegal elements
...
Previously, text like <-> would try to generate an element with an
illegal name, causing a JS error
2013-10-23 12:36:34 +01:00
Jeremy Ruston
6f2dbd0978
Refactor name of "findNextSiblingDomNode()" method for consistency
2013-10-22 18:14:16 +01:00
Jeremy Ruston
7393a296dd
Add a fieldmangler widget
2013-10-21 22:54:58 +01:00
Jeremy Ruston
06af26b1c8
Give the edit-text widget support for the placeholder attribute
2013-10-21 22:54:48 +01:00
Jeremy Ruston
e2b8249a1b
Fix problem with findNextSibling()
2013-10-21 22:27:12 +01:00
Jeremy Ruston
409152afb8
Make the default list widget template include a div or span
...
Otherwise writing this makes a list on one line:
```
{{{ [tag[done]] }}}
```
2013-10-21 22:26:36 +01:00
Jeremy Ruston
c96cb6e956
Parse typed blocks with the new parser
2013-10-21 20:20:44 +01:00
Jeremy Ruston
a99f912bad
Fix typo
2013-10-21 20:20:32 +01:00
Jeremy Ruston
2a571b4f5f
Switch the notifier and modal mechanisms to use the new widget mechanism
...
Note the use of the `$tw.rootWidget` to collect together the root event
handlers
2013-10-21 20:14:01 +01:00
Jeremy Ruston
48dbacc88a
Add support for widget event listeners to be specified as functions
2013-10-21 20:13:08 +01:00
Jeremy Ruston
ce1fb300f8
Use the new widget mechanism for stylesheet parsing and rendering
2013-10-21 18:38:20 +01:00
Jeremy Ruston
89310e71c8
Add a new version of rendertiddlers command
...
So that we can test static html generation
2013-10-21 18:33:00 +01:00
Jeremy Ruston
26ac940637
Fix typo
2013-10-21 18:32:29 +01:00
Jeremy Ruston
e33f588b73
Let the new rendering methods accept a parent widget
2013-10-21 18:32:19 +01:00
Jeremy Ruston
dc9c2522b9
Fix typo in macro variable substitution
2013-10-21 18:31:41 +01:00
Jeremy Ruston
167116d416
Fix output type for view format htmlwikified
2013-10-21 18:31:27 +01:00
Jeremy Ruston
3005604b83
Give link widget support for configuration variables
...
One can now use `\define tw-wikilinks() no` to disable wikilinks, and
`tw-wikilink-template` to configure the link template.
2013-10-21 18:31:04 +01:00
Jeremy Ruston
2b5fb9801f
Add skype: protocol for external links
...
The matching of external links is hacky at the moment. The plan is to
make it more easily extensible (ie without writing code)
2013-10-20 10:47:02 +01:00
Jeremy Ruston
25612958d7
Fixed bugs in previous commit to extend search to titles and tags of binary tiddlers
2013-10-18 16:09:10 +01:00
Jeremy Ruston
3f151ba70e
Add support for macro modules
...
Now JavaScript macros can be defined in "macro" modules
2013-10-17 16:57:07 +01:00
Jeremy Ruston
55d479c540
Extend macrocall widget to take parameters both from the parse tree node and the attributes
...
This allows us to invoke macros using the ordinary widget syntax, which
in turn allows us to use features like indirection on the parameters.
2013-10-17 16:55:23 +01:00
Jeremy Ruston
6b9b75142b
Fix text reference regexp to allow for tiddler titles with embedded spaces
2013-10-17 16:40:13 +01:00
Jeremy Ruston
e11c620c27
Fix search filter so that titles and tags of binary tiddlers are searched
2013-10-17 16:34:50 +01:00
Jeremy Ruston
a3eaffa666
Add a linkcatcher widget
2013-10-16 16:30:06 +01:00
Jeremy Ruston
adb395d10f
Fix edit-text widget to work with indexed values
2013-10-16 16:29:51 +01:00
Jeremy Ruston
7f6d770ca6
The reveal widget should generate a span when in inline mode
...
The only reason that the reveal widget generates an element is so that
we can use `display:none/block;` (as did the pre-refactored code) as a
quick way of hiding and showing the content. We don't do that yet, and
it may be best never to do it.
2013-10-16 16:29:35 +01:00
Jeremy Ruston
77248d08a8
Add the count widget
2013-10-15 21:07:13 +01:00
Jeremy Ruston
5b4ca67d6e
Make the reveal widget hide the div element if it is not open
2013-10-15 21:06:52 +01:00
Jeremy Ruston
78bc89cbdb
Add a edit text widget
...
Now rather than a separate module type for different editors, we
instead have a meta-widget "edit" that chooses the appropriate concrete
widget (currently just "edit-text", but soon to be joined by
"edit-bitmap" as well)
2013-10-15 14:32:27 +01:00
Jeremy Ruston
a696c716e3
Support the remaining events on the navigator widget
2013-10-15 14:30:36 +01:00
Jeremy Ruston
933afee996
Get rid of the old setstyle widget
...
And fix up the colouring of tiddler icons
2013-10-15 08:36:19 +01:00
Jeremy Ruston
20cd398e88
Fix popup positioning in the reveal widget
2013-10-14 23:32:01 +01:00
Jeremy Ruston
707024a118
Set the colour of the tag pills
...
We no longer need the old setstyle widget
2013-10-14 21:38:12 +01:00
Jeremy Ruston
e3dcb8cdc1
Fix view widget to display friendly text of tiddler values
2013-10-14 21:02:03 +01:00
Jeremy Ruston
468fe8b6f1
Add macrocall widget
...
Now the fields table works in the tiddler info popup
2013-10-14 17:48:26 +01:00
Jeremy Ruston
ebd28c8dc7
Get the tiddler info panel fields list working properly
...
Now we can display the fields list as a proper table.
We've had to temporarily hack the list widget again…
2013-10-14 17:35:52 +01:00
Jeremy Ruston
94c2eacdc9
Support selectedClass properly in the button widget
2013-10-14 16:56:13 +01:00
Jeremy Ruston
0c73c56b70
Fixes to button refreshing
2013-10-14 13:52:03 +01:00
Jeremy Ruston
1669c6eab5
Make recursion markers include the current tiddler
...
Otherwise the generated qualifying state title is not unique. In other
words, clicking the "i" button on a tiddler was opening the info panels
for all open tiddlers.
2013-10-14 13:06:07 +01:00
Jeremy Ruston
ea0b298b78
Deal with viewing date fields that don't exist
2013-10-14 12:59:39 +01:00
Jeremy Ruston
cc4940f41f
Use the setvariable widget instead of macrodef
...
setvariable is more general
2013-10-13 23:40:11 +01:00
Jeremy Ruston
942e463b20
Fixes to get recent changes list to work
2013-10-13 22:59:14 +01:00
Jeremy Ruston
ce4a6ffa49
More useful class variables for tiddler status
2013-10-13 22:46:45 +01:00
Jeremy Ruston
9278c43a91
Add support for macro definitions
2013-10-13 22:39:05 +01:00
Jeremy Ruston
79dcc9a557
Refactor macro parameter substitution
...
Now macros can also include references to variables as `$(variable)$`
2013-10-13 22:38:46 +01:00
Jeremy Ruston
987890c085
Add button widget
2013-10-13 21:31:00 +01:00
Jeremy Ruston
b0503cf709
Fixes to make SVG and MathML elements work properly
2013-10-13 20:14:31 +01:00
Jeremy Ruston
ed35d91be6
Initial Commit
...
Carried over from the abortive pull request #169
2013-10-12 17:05:13 +01:00
Jeremy Ruston
d3d72eff1b
Search over tags as well as the title and text fields
2013-10-11 08:46:09 +01:00
Jeremy Ruston
f2b598ef13
Correct example
2013-10-05 16:01:07 +01:00
natecain
c45f4d1c62
Small revision to previous commit, avoids double encoding.
...
We don't need to encodeURIComponent at all when using blob links.
The data never goes into the dom directly, just a guid reference.
This makes saving with blobs very fast!
2013-10-01 17:35:58 -04:00
natecain
aef8e63cf8
Use Blob api to generate data links in download saver
...
This should fix crashing on large wikis under chrome
see chrome bug: https://code.google.com/p/chromium/issues/detail?id=103234
This should also speed up generating the download html by a couple of seconds
it avoids repeatedly marshalling the base64 encoded href string across the sandbox boundary
it avoids some time and memory consumed by "large" dom manipulation
major remaining delay is in encodeURIComponent
TODO: consider using iconv on the server
TODO: consider async invocation of regular expressions to avoid client "lockup"
Conflicts:
core/modules/savers/download.js
2013-10-01 17:35:47 -04:00
David Johnston
d321508437
Remove incorrect slice parameter.
...
Remove incorrect slice parameter, which made the ! (not) prefix fail to return any results.
2013-10-01 10:50:13 +01:00
David Johnston
f0b6790ae1
Previous in list filter.
2013-09-22 09:58:18 +01:00
David Johnston
b72afda7a2
Next in List filter
2013-09-22 09:57:23 +01:00
Jeremy Ruston
f51d0c55fe
Fix eachday and sameday filter operators
...
There was some inconsistency of UTC vs. timezone handling
2013-09-21 10:08:16 +01:00
Jeremy Ruston
d0db2221d3
Fix problem with lowercase drive letters when saving with TiddlyFox under Windows
2013-09-19 13:50:28 +01:00
Jeremy Ruston
dec7870eeb
Update HTML5 saver to use current filename where possible
...
Most browsers still ignore the specified filename, sadly.
2013-09-19 10:50:14 +01:00
Jeremy Ruston
3d5d5952b7
Fix broken regexps
...
Using .|\n was a very bad idea, as it doesn't match other newline
characters
2013-09-18 19:09:54 +01:00
Jeremy Ruston
b563d8e98a
Ensure getTiddlerList() returns a copy of the tiddler list
...
Fixes #155
2013-09-18 12:12:29 +01:00
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
4fb6836481
Add an untagged filter operator and sidebar tab
2013-09-14 16:28:46 +01:00
Jeremy Ruston
4a663d1661
Improve docs for $tw.utils.addEventListeners()
2013-09-14 13:47:51 +01:00
Jeremy Ruston
e39663ede3
Fix crash on processing anonymous macro parameters
...
Fixes #151
2013-09-10 22:08:09 +01:00
Jeremy Ruston
e034f28091
Bail out earlier when displaying a modal for a non-existent tiddler
2013-09-10 15:28:15 +01:00
Jeremy Ruston
2be9e82f84
Get rid of the modal popup for empty wikis
...
Ugly and clumsy.
2013-09-01 22:33:23 +01:00
Jeremy Ruston
83f85cad7d
Add support for MathML namespace
...
It doesn't actually work, though, which is weird, since SVG works just
fine using the same mechanism
2013-08-31 11:15:50 +01:00
Jeremy Ruston
ee33cbbc2e
Fix up some problems when the animation duration is zero
...
We want to be able to suppress animations by making the duration zero
2013-08-29 12:43:24 +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
dfb49f811e
Fixed problem with importing tiddlers with double quotes, gt, lt etc
...
Reported by @giffmex
2013-08-28 09:25:54 +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
779d8b3aad
Update TW2 wikitext content type to text/x-tiddlywiki
...
And also stop assigning the default content type of
`text/vnd.tiddlywiki` to imported tiddlers.
2013-08-25 22:06:28 +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
df0a1a7c42
Fix problem with wiki.search() incorrectly searching missing tiddlers
2013-08-24 16:51:54 +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
3b563e19cf
Removed obsolete comments
2013-08-23 18:38:44 +01:00
Jeremy Ruston
d6ec1ea1e5
Remove plugin
field now that we've got the plugin-type
field
...
I've been meaning to remove the `plugin` field for ages.
2013-08-23 18:37:54 +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
5fe2d718e0
Fix crash with "fields" filter operator applied to missing tiddlers
...
Fixes #132
2013-08-21 22:33:04 +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
a427702628
Allow username to be set for the built-in server
2013-08-21 09:53:45 +01:00
Jeremy Ruston
1fd59a4bd3
First pass at a saver for the AndTidWiki app on Android
2013-08-19 13:55:40 +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
b88079442c
Add "listed" filter operator for retrieving the tiddlers that list a specified tiddler
2013-08-16 09:31:05 +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
8c48d45479
Add a "fields" filter operator
2013-08-15 18:15:54 +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
e27c5005ef
File renames for 46b2fde2d9
2013-08-09 22:00:42 +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
46b2fde2d9
Rename "dump" command to "print" command
...
Being pan-cultural is hard.
2013-08-09 09:24:58 +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
a9a2ae2223
Add sorting by tiddler lists
...
The tag and tagging filters now sort their results by the list field of
the tag, if present
2013-08-08 17:39:34 +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
8443a9d6ca
Fix comment
2013-08-07 16:04:06 +01:00
Jeremy Ruston
85007cb1e1
Correct comments
2013-08-06 15:27:02 +01:00
Jeremy Ruston
39b6091258
Don't set modification fields on synced tiddlers
2013-08-06 15:26:48 +01:00
Jeremy Ruston
0ae0f68257
Update filenames to reflect changes in 05ac094d2e
2013-08-04 22:31:09 +01:00
Jeremy Ruston
05ac094d2e
Rename the savetiddler
/savetiddlers
commands to rendertiddler
/rendertiddlers
...
'Render' reflects what the commands actually do, and frees up 'save'
for actually saving the raw content of a tiddler.
2013-08-04 22:26:45 +01:00
Jeremy Ruston
be7cc67ab6
Correct mistaken classification of savetiddlers command as asynchronous
2013-08-04 22:02:19 +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
799647e38b
Fix problem with search term being filtered from search results
...
Some leftover code meant that tiddlers titled with the precise search
term were excluded from the results.
2013-08-03 09:28:51 +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
f1a7e433ab
Allow widget names to include digits
2013-07-14 23:13:42 +01:00
Jeremy Ruston
8c73d8db4b
Confirmation message for $tw.slowmo()
2013-07-14 23:13:13 +01:00
Jeremy Ruston
1a160485a8
Documentation correction
2013-07-08 21:44:12 +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
ea8c795d01
Add a hack to switch slowmo animation mode
...
Just type `$tw.slowmo()` in the developer console to engage slowmo mode.
2013-07-08 15:17:29 +01:00
Jeremy Ruston
1304bfd0d4
Special treatment so that text reference to title field works for missing tiddlers
...
The title field is the one field that we know for missing tiddlers.
This is needed in a subsequent commit of viewswitcher.
2013-07-08 15:16:55 +01:00
Jeremy Ruston
53ead15273
Refactor scroller so that the scrollIntoView() method is a bit more usable
...
Passing an event instead of a DOM node was silly.
2013-07-08 15:15:53 +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
b51fb9cfa9
Linting
2013-07-05 22:37:55 +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
c72a63849b
Add some more methods to the fake DOM
...
These methods are needed to get static saving working in the browser
again (click "Save Static" in the Demo tiddler)
2013-07-05 10:47:08 +01:00
Jeremy Ruston
e6450e60e2
Add a popping animation to the tags editor
2013-07-04 12:50:31 +01:00
Jeremy Ruston
647bd51299
Fix problem with erroneous initialisation of changedTiddlers member
2013-07-03 16:00:48 +01:00
Jeremy Ruston
e583c1d72d
Use empty string as default value for reveal widget
2013-07-03 16:00:26 +01:00
Jeremy Ruston
627dba01e4
Make getContextScopeId() more selective about context fields that are included
...
We were getting a problem whereby macro definitions were showing up in
the context string.
2013-07-03 16:00:10 +01:00
Jeremy Ruston
6299026407
Fix issue with child nodes of macro call not being refreshed
2013-07-03 15:59:09 +01:00
Jeremy Ruston
0edfc855b4
Replace obsolete content type
2013-06-27 10:19:38 +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
12b471b8fb
Extend the HTML rendering mechanism to support attributes specified as macro invocations
2013-06-18 15:37:19 +01:00
Jeremy Ruston
18f8b7266e
Refactor the HTML element parser
...
The purpose is to allow attributes to be specified as macro
invocations. For example `<div myattr=<<mymacro param1 param3>>>`. The
parser needed sprucing up in order to copy with the nesting of angle
brackets. The refactoring has been done with an eye on using the same
technique in the filter expression parser (which is pretty messy at the
moment -- it throws exceptions for syntax errors, which is bad). Later
I'm hoping to extend the technique to create a more flexible table
parser.
2013-06-15 15:12:05 +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
8471a2217a
Improve handling of fieldmodules lacking a stringify method
2013-06-13 09:16:26 +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
d6654c4a0b
Fixed problem with not being able to manually scroll after navigating to a tiddler
2013-06-10 21:07:23 +01:00
Jeremy Ruston
3cda8758ae
Refactor scrolling animation to use requestAnimationFrame() instead of setInterval()
2013-06-10 14:11:58 +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
2c8352c442
Update the popup manager to allow popup state to be forced, rather than toggled
...
We'll be needing this shortly
2013-06-09 19:24:21 +01:00
Jeremy Ruston
b3c6b51fc7
Make the prefix filter operator be case insensitive by default
2013-06-09 19:23:52 +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
6ae73e0fc7
Fix regex typos
...
The trouble with regexs being that they breed typos…
Fix #103
2013-06-05 19:06:31 +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
1f21bd36d6
Fix problem with displaying modals before the page container is initialised
2013-06-04 16:22:37 +01:00
Jeremy Ruston
854a9d6d1c
Toggle a style on the page container when a modal is displayed
2013-06-04 16:19:47 +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
bf4216f3ac
Don't count references to shadow tiddlers as missing tiddlers
2013-05-31 17:53:11 +01:00
Jeremy Ruston
b0d183070c
Don't allow < and > in external links
2013-05-31 17:42:40 +01:00
Jeremy Ruston
28b0b58a11
Make a distinction between templates and UI
...
Templates are the low-level bits and pieces that allow TW5 to generate
HTML and CSS renderings of tiddlers. The UI folder contains the
user-visible UI of TW5
2013-05-31 15:38:27 +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
227cadd326
Add a barebones animation framework
...
The idea is to allow us to package animations/transitions into plugins
2013-05-28 16:28:16 +01:00
Jeremy Ruston
cf75b209ba
Add eachday
and sameday
filter operators
...
These operators will enable us to group the recent changes list by day
2013-05-27 17:59:33 +01:00
Jeremy Ruston
ca51634041
Add the each
filter operator
...
This makes it possible to do grouping within lists
2013-05-27 17:59:03 +01:00
Jeremy Ruston
887d955fc4
Change the search filter operator to not indirect through a tiddler
...
Now that we can make any filter operator indirect through a tiddler we
don't need to have that as a special capability of the search operator.
2013-05-27 17:58:27 +01:00
Jeremy Ruston
f4a3b25d3e
Extend the filter mechanism to allow operands to be indirected through a tiddler text reference
...
In other words, as well as `[sort[myfield]]` to sort by the field
called `myfield`, one can do `[sort{MyTiddler}]` to sort by the field
whose name is in the text of the tiddler `MyTiddler`.
2013-05-27 17:57:37 +01:00
Jeremy Ruston
9193937125
Fixed problem with field filter operator not performing string comparisons
2013-05-27 17:55:45 +01:00
Jeremy Ruston
31a4b96f57
Fixed problem with getTextReference() not always returning a string
2013-05-27 17:55:23 +01:00
Jeremy Ruston
0cf5dc699e
Refactor the filter mechanism
...
Long overdue rewrite to make it simpler, and break the filter operators
out into individual modules.
2013-05-25 17:26:22 +01:00
Jeremy Ruston
5394fc4ee1
Fix typo
2013-05-25 16:40:44 +01:00
Jeremy Ruston
d19affc9c3
Fix problem with non-shadow stylesheets not being recognised at startup
2013-05-25 16:40:34 +01:00
Jeremy Ruston
1e5842dc1c
Fix download saver on Firefox
...
Turns out that Firefox needs the link to be in the document before it
will honour the click on it.
2013-05-23 11:26:47 +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
3806168038
Fixed problem with non-shadow style tiddlers not being recognised
2013-05-18 16:59:24 +01:00
Jeremy Ruston
d8abc0e9e3
Fix up more document references
2013-05-17 17:37:39 +01:00
Jeremy Ruston
5abc0a7835
Get rid of the obsolete font parser
2013-05-17 17:30:33 +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
6e1cd46bc7
Fix document references
2013-05-17 17:29:43 +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
0a3389c277
Add namespace support to the element renderer
...
This allows us to create SVG elements with the correct namespace, which
allows us to have inline SVG images (coming up next)
2013-05-15 18:44:23 +01:00
Jeremy Ruston
dd2a7199f6
Allow a default value to be specified for WikiRenderTree.getContextVariable
2013-05-15 18:43:19 +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
c0683fd65c
Added a saver for the TWEdit iPad/iPhone app
2013-05-14 20:20:48 +01:00
Jeremy Ruston
6864251962
Cleaning up content types
...
Dealt with some inconsistencies
2013-05-13 17:42:07 +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
f43e22f8e5
Remove early bail on switching to a non-existent theme
...
Fixes #98
The excised code was unnecessary, as the rest of the function operates
correctly even if the theme tiddler is missing
2013-05-10 20:24:40 +01:00
Jeremy Ruston
6e44a20804
Fix problem with TiddlyFox on Windows
...
Fix #97
2013-05-10 18:14:01 +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
8796f312cb
A different animation for hiding notifications
...
Only slightly different, but it seems to add visual interest
2013-05-08 13:27:04 +01:00