diff --git a/.gitignore b/.gitignore index d8c42b06a..5d7cc4870 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ .c9/ tmp/ output/ +node_modules/ diff --git a/.jshintignore b/.jshintignore index cca917270..1e934b384 100644 --- a/.jshintignore +++ b/.jshintignore @@ -5,3 +5,4 @@ plugins/tiddlywiki/highlight/files/ plugins/tiddlywiki/jasmine/files/ plugins/tiddlywiki/markdown/files/ plugins/tiddlywiki/markdown/files/ +node_modules/ diff --git a/.npmignore b/.npmignore index d8c42b06a..5d7cc4870 100644 --- a/.npmignore +++ b/.npmignore @@ -2,3 +2,4 @@ .c9/ tmp/ output/ +node_modules/ diff --git a/bin/clean.sh b/bin/clean.sh new file mode 100755 index 000000000..522479edb --- /dev/null +++ b/bin/clean.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# Remove any output files + +find . -regex "^./editions/[a-z0-9\.-]*/output/.*" -delete diff --git a/boot/boot.js b/boot/boot.js index dab39238f..1a41b4d07 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -590,7 +590,7 @@ Crypto helper object for encrypted content. It maintains the password text in a the password, and to encrypt/decrypt a block of text */ $tw.utils.Crypto = function() { - var sjcl = $tw.node ? require("./sjcl.js") : window.sjcl, + var sjcl = $tw.node ? (global.sjcl || require("./sjcl.js")) : window.sjcl, currentPassword = null, callSjcl = function(method,inputText,password) { password = password || currentPassword; @@ -812,6 +812,7 @@ $tw.Tiddler = function(/* [fields,] fields */) { } // Freeze the tiddler against modification Object.freeze(this.fields); + Object.freeze(this); }; $tw.Tiddler.prototype.hasField = function(field) { @@ -1399,10 +1400,6 @@ $tw.loadTiddlersBrowser = function() { for(var t=0; t + + + + + + + + + + \ No newline at end of file diff --git a/core/images/folder.tid b/core/images/folder.tid new file mode 100644 index 000000000..354e6e633 --- /dev/null +++ b/core/images/folder.tid @@ -0,0 +1,9 @@ +title: $:/core/images/folder +tags: $:/tags/Image + + + + + + + \ No newline at end of file diff --git a/core/images/spiral.tid b/core/images/spiral.tid new file mode 100644 index 000000000..5ad004f46 --- /dev/null +++ b/core/images/spiral.tid @@ -0,0 +1,8 @@ +title: $:/core/images/spiral +tags: $:/tags/Image + + + + + + \ No newline at end of file diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index 215cc1daf..1c1c23c50 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -32,6 +32,8 @@ ExportTiddlers/Caption: export tiddlers ExportTiddlers/Hint: Export tiddlers Fold/Caption: fold tiddler Fold/Hint: Fold the body of this tiddler +Fold/FoldBar/Caption: fold-bar +Fold/FoldBar/Hint: Optional bars to fold and unfold tiddlers Unfold/Caption: unfold tiddler Unfold/Hint: Unfold the body of this tiddler FoldOthers/Caption: fold other tiddlers diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index f6f09f5b0..abd4e9ae7 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -39,7 +39,7 @@ Palette/HideEditor/Caption: hide editor Palette/Prompt: Current palette: Palette/ShowEditor/Caption: show editor Parsing/Caption: Parsing -Parsing/Hint: Here you can globally disable individual wiki parser rules. Take care as disabling some paser rules can prevent ~TiddlyWiki functioning correctly (you can restore normal operation with [[safe mode|http://tiddlywiki.com/#SafeMode]] ) +Parsing/Hint: Here you can globally disable individual wiki parser rules. Take care as disabling some parser rules can prevent ~TiddlyWiki functioning correctly (you can restore normal operation with [[safe mode|http://tiddlywiki.com/#SafeMode]] ) Parsing/Block/Caption: Block Parse Rules Parsing/Inline/Caption: Inline Parse Rules Parsing/Pragma/Caption: Pragma Parse Rules diff --git a/core/language/en-GB/EditTemplate.multids b/core/language/en-GB/EditTemplate.multids index b864e7896..2125495e2 100644 --- a/core/language/en-GB/EditTemplate.multids +++ b/core/language/en-GB/EditTemplate.multids @@ -13,8 +13,8 @@ Fields/Add/Prompt: Add a new field: Fields/Add/Value/Placeholder: field value Fields/Add/Dropdown/System: System fields Fields/Add/Dropdown/User: User fields -Shadow/Warning: This is a shadow tiddler. Any changes will override the default version -Shadow/OverriddenWarning: This is a modified shadow tiddler. You can revert to the default version by deleting this tiddler +Shadow/Warning: This is a shadow tiddler. Any changes you make will override the default version from the plugin <> +Shadow/OverriddenWarning: This is a modified shadow tiddler. You can revert to the default version in the plugin <> by deleting this tiddler Tags/Add/Button: add Tags/Add/Placeholder: tag name Tags/Dropdown/Caption: tag list diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index 3c19e0e37..d953eb01f 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -34,5 +34,5 @@ TagManager/Count/Heading: Count TagManager/Icon/Heading: Icon TagManager/Info/Heading: Info TagManager/Tag/Heading: Tag -Tiddler/DateFormat: DDth MMM YYYY at hh12:mmam +Tiddler/DateFormat: DDth MMM YYYY at hh12:0mmam UnsavedChangesWarning: You have unsaved changes in TiddlyWiki diff --git a/core/modules/commands/server.js b/core/modules/commands/server.js index 0e888a21e..437db4dec 100644 --- a/core/modules/commands/server.js +++ b/core/modules/commands/server.js @@ -12,7 +12,7 @@ Serve tiddlers over http /*global $tw: false */ "use strict"; -if(!$tw.browser) { +if($tw.node) { var util = require("util"), fs = require("fs"), url = require("url"), diff --git a/core/modules/filters/days.js b/core/modules/filters/days.js new file mode 100644 index 000000000..39cd375f7 --- /dev/null +++ b/core/modules/filters/days.js @@ -0,0 +1,49 @@ +/*\ +title: $:/core/modules/filters/days.js +type: application/javascript +module-type: filteroperator + +Filter operator that selects tiddlers with a specified date field within a specified date interval. + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Export our filter function +*/ +exports.days = function(source,operator,options) { + var results = [], + fieldName = operator.suffix || "modified", + dayInterval = (parseInt(operator.operand,10)||0), + dayIntervalSign = $tw.utils.sign(dayInterval), + targetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval, + isWithinDays = function(dateField) { + var sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0)); + return sign === 0 || sign === dayIntervalSign; + }; + + if(operator.prefix === "!") { + source(function(tiddler,title) { + if(tiddler && tiddler.fields[fieldName]) { + if(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) { + results.push(title); + } + } + }); + } else { + source(function(tiddler,title) { + if(tiddler && tiddler.fields[fieldName]) { + if(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) { + results.push(title); + } + } + }); + } + return results; +}; + +})(); diff --git a/core/modules/filters/each.js b/core/modules/filters/each.js index 591dfeae0..25e852638 100644 --- a/core/modules/filters/each.js +++ b/core/modules/filters/each.js @@ -3,7 +3,8 @@ title: $:/core/modules/filters/each.js type: application/javascript module-type: filteroperator -Filter operator that selects one tiddler for each unique value of the specified field +Filter operator that selects one tiddler for each unique value of the specified field. +With suffix "list", selects all tiddlers that are values in a specified list field. \*/ (function(){ @@ -16,22 +17,34 @@ Filter operator that selects one tiddler for each unique value of the specified Export our filter function */ exports.each = function(source,operator,options) { - var results = [], - values = {}; - source(function(tiddler,title) { - if(tiddler) { - var value; - if((operator.operand === "") || (operator.operand === "title")) { - value = title; - } else { - value = tiddler.getFieldString(operator.operand); + var results =[] , + value,values = {}, + field = operator.operand || "title"; + if(operator.suffix !== "list-item") { + source(function(tiddler,title) { + if(tiddler) { + value = (field === "title") ? title : tiddler.getFieldString(field); + if(!$tw.utils.hop(values,value)) { + values[value] = true; + results.push(title); + } } - if(!$tw.utils.hop(values,value)) { - values[value] = true; - results.push(title); + }); + } else { + source(function(tiddler,title) { + if(tiddler) { + $tw.utils.each( + options.wiki.getTiddlerList(title,field), + function(value) { + if(!$tw.utils.hop(values,value)) { + values[value] = true; + results.push(value); + } + } + ); } - } - }); + }); + } return results; }; diff --git a/core/modules/filters/recent.js b/core/modules/filters/recent.js deleted file mode 100644 index 897847d00..000000000 --- a/core/modules/filters/recent.js +++ /dev/null @@ -1,35 +0,0 @@ -/*\ -title: $:/core/modules/filters/recent.js -type: application/javascript -module-type: filteroperator - -Filter operator that selects tiddlers with a specified date field within the last N days. - -\*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ -"use strict"; - -/* -Export our filter function -*/ -exports.recent = function(source,operator,options) { - var results = [], - fieldName = operator.suffix || "modified", - targetTimeStamp = (new Date()).setHours(0,0,0,0) - 1000*60*60*24*(parseInt(operator.operand,10) || 0), - isRecent = function(dateField) { - return targetTimeStamp <= (new Date(dateField)).setHours(0,0,0,0); - }; - source(function(tiddler,title) { - if(tiddler && tiddler.fields[fieldName]) { - if(isRecent($tw.utils.parseDate(tiddler.fields[fieldName]))) { - results.push(title); - } - } - }); - return results; -}; - -})(); diff --git a/core/modules/filters/x-listops.js b/core/modules/filters/x-listops.js new file mode 100644 index 000000000..a20fd5646 --- /dev/null +++ b/core/modules/filters/x-listops.js @@ -0,0 +1,189 @@ +/*\ +title: $:/core/modules/filters/x-listops.js +type: application/javascript +module-type: filteroperator + +Extended filter operators to manipulate the current list. + +\*/ +(function () { + + /*jslint node: true, browser: true */ + /*global $tw: false */ + "use strict"; + + /* + Fetch titles from the current list + */ + var prepare_results = function (source) { + var results = []; + source(function (tiddler, title) { + results.push(title); + }); + return results; + }; + + /* + Moves a number of items from the tail of the current list before the item named in the operand + */ + exports.putbefore = function (source, operator) { + var results = prepare_results(source), + index = results.indexOf(operator.operand), + count = parseInt(operator.suffix) || 1; + return (index === -1) ? + results.slice(0, -1) : + results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count)); + }; + + /* + Moves a number of items from the tail of the current list after the item named in the operand + */ + exports.putafter = function (source, operator) { + var results = prepare_results(source), + index = results.indexOf(operator.operand), + count = parseInt(operator.suffix) || 1; + return (index === -1) ? + results.slice(0, -1) : + results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count)); + }; + + /* + Replaces the item named in the operand with a number of items from the tail of the current list + */ + exports.replace = function (source, operator) { + var results = prepare_results(source), + index = results.indexOf(operator.operand), + count = parseInt(operator.suffix) || 1; + return (index === -1) ? + results.slice(0, -count) : + results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count)); + }; + + /* + Moves a number of items from the tail of the current list to the head of the list + */ + exports.putfirst = function (source, operator) { + var results = prepare_results(source), + count = parseInt(operator.suffix) || 1; + return results.slice(-count).concat(results.slice(0, -count)); + }; + + /* + Moves a number of items from the head of the current list to the tail of the list + */ + exports.putlast = function (source, operator) { + var results = prepare_results(source), + count = parseInt(operator.suffix) || 1; + return results.slice(count).concat(results.slice(0, count)); + }; + + /* + Moves the item named in the operand a number of places forward or backward in the list + */ + exports.move = function (source, operator) { + var results = prepare_results(source), + index = results.indexOf(operator.operand), + count = parseInt(operator.suffix) || 1, + marker = results.splice(index, 1); + return results.slice(0, index + count).concat(marker).concat(results.slice(index + count)); + }; + + /* + Returns the items from the current list that are after the item named in the operand + */ + exports.allafter = function (source, operator) { + var results = prepare_results(source), + index = results.indexOf(operator.operand); + return (index === -1 || index > (results.length - 2)) ? [] : + (operator.suffix) ? results.slice(index) : + results.slice(index + 1); + }; + + /* + Returns the items from the current list that are before the item named in the operand + */ + exports.allbefore = function (source, operator) { + var results = prepare_results(source), + index = results.indexOf(operator.operand); + return (index <= 0) ? [] : + (operator.suffix) ? results.slice(0, index + 1) : + results.slice(0, index); + }; + + /* + Appends the items listed in the operand array to the tail of the current list + */ + exports.append = function (source, operator) { + var append = $tw.utils.parseStringArray(operator.operand, "true"), + results = prepare_results(source), + count = parseInt(operator.suffix) || append.length; + return (append.length === 0) ? results : + (operator.prefix) ? results.concat(append.slice(-count)) : + results.concat(append.slice(0, count)); + }; + + /* + Prepends the items listed in the operand array to the head of the current list + */ + exports.prepend = function (source, operator) { + var prepend = $tw.utils.parseStringArray(operator.operand, "true"), + results = prepare_results(source), + count = parseInt(operator.suffix) || prepend.length; + return (prepend.length === 0) ? results : + (operator.prefix) ? prepend.slice(-count).concat(results) : + prepend.slice(0, count).concat(results); + }; + + /* + Returns all items from the current list except the items listed in the operand array + */ + exports.remove = function (source, operator) { + var array = $tw.utils.parseStringArray(operator.operand, "true"), + results = prepare_results(source), + count = parseInt(operator.suffix) || array.length, + p, + len, + index; + len = array.length - 1; + for (p = 0; p < count; ++p) { + if (operator.prefix) { + index = results.indexOf(array[len - p]); + } else { + index = results.indexOf(array[p]); + } + if (index !== -1) { + results.splice(index, 1); + } + } + return results; + }; + + /* + Returns all items from the current list sorted in the order of the items in the operand array + */ + exports.sortby = function (source, operator) { + var results = prepare_results(source); + if (!results || results.length < 2) { + return results; + } + var lookup = $tw.utils.parseStringArray(operator.operand, "true"); + results.sort(function (a, b) { + return lookup.indexOf(a) - lookup.indexOf(b); + }); + return results; + }; + + /* + Removes all duplicate items from the current list + */ + exports.unique = function (source, operator) { + var results = prepare_results(source); + var set = results.reduce(function (a, b) { + if (a.indexOf(b) < 0) { + a.push(b); + } + return a; + }, []); + return set; + }; +})(); diff --git a/core/modules/utils/dom/popup.js b/core/modules/utils/dom/popup.js index 25f14e612..5096d13bb 100644 --- a/core/modules/utils/dom/popup.js +++ b/core/modules/utils/dom/popup.js @@ -31,12 +31,7 @@ Trigger a popup open or closed. Parameters are in a hashmap: */ Popup.prototype.triggerPopup = function(options) { // Check if this popup is already active - var index = -1; - for(var t=0; t 0 ? 1 : -1; +}; + +})(); diff --git a/core/modules/widgets/action-listops.js b/core/modules/widgets/action-listops.js new file mode 100644 index 000000000..a6b0d4f62 --- /dev/null +++ b/core/modules/widgets/action-listops.js @@ -0,0 +1,92 @@ +/*\ +title: $:/core/modules/widgets/action-listops.js +type: application/javascript +module-type: widget + +Action widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler) + +\*/ +(function() { + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; +var Widget = require("$:/core/modules/widgets/widget.js").widget; +var ActionListopsWidget = function(parseTreeNode, options) { + this.initialise(parseTreeNode, options); +}; +/** + * Inherit from the base widget class + */ +ActionListopsWidget.prototype = new Widget(); +/** + * Render this widget into the DOM + */ +ActionListopsWidget.prototype.render = function(parent, nextSibling) { + this.computeAttributes(); + this.execute(); +}; +/** + * Compute the internal state of the widget + */ +ActionListopsWidget.prototype.execute = function() { + // Get our parameters + this.target = this.getAttribute("$tiddler", this.getVariable( + "currentTiddler")); + this.filter = this.getAttribute("$filter"); + this.subfilter = this.getAttribute("$subfilter"); + this.listField = this.getAttribute("$field", "list"); + this.listIndex = this.getAttribute("$index"); + this.filtertags = this.getAttribute("$tags"); +}; +/** + * Refresh the widget by ensuring our attributes are up to date + */ +ActionListopsWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(changedAttributes.$tiddler || changedAttributes.$filter || + changedAttributes.$subfilter || changedAttributes.$field || + changedAttributes.$index || changedAttributes.$tags) { + this.refreshSelf(); + return true; + } + return this.refreshChildren(changedTiddlers); +}; +/** + * Invoke the action associated with this widget + */ +ActionListopsWidget.prototype.invokeAction = function(triggeringWidget, + event) { + //Apply the specified filters to the lists + var field = this.listField, + index, + type = "!!", + list = this.listField; + if(this.listIndex) { + field = undefined; + index = this.listIndex; + type = "##"; + list = this.listIndex; + } + if(this.filter) { + this.wiki.setText(this.target, field, index, $tw.utils.stringifyList( + this.wiki + .filterTiddlers(this.filter, this))); + } + if(this.subfilter) { + var subfilter = "[list[" + this.target + type + list + "]] " + this.subfilter; + this.wiki.setText(this.target, field, index, $tw.utils.stringifyList( + this.wiki + .filterTiddlers(subfilter, this))); + } + if(this.filtertags) { + var tagfilter = "[list[" + this.target + "!!tags]] " + this.filtertags; + this.wiki.setText(this.target, "tags", undefined, $tw.utils.stringifyList( + this.wiki.filterTiddlers(tagfilter, this))); + } + return true; // Action was invoked +}; + +exports["action-listops"] = ActionListopsWidget; + +})(); diff --git a/core/modules/widgets/action-setfield.js b/core/modules/widgets/action-setfield.js index 1e1ba6d8e..98079f00c 100644 --- a/core/modules/widgets/action-setfield.js +++ b/core/modules/widgets/action-setfield.js @@ -61,7 +61,9 @@ SetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) { var self = this, options = {}; options.suppressTimestamp = !this.actionTimestamp; - this.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options); + if((typeof this.actionField == "string") || (typeof this.actionIndex == "string") || (typeof this.actionValue == "string")) { + this.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options); + } $tw.utils.each(this.attributes,function(attribute,name) { if(name.charAt(0) !== "$") { self.wiki.setText(self.actionTiddler,name,undefined,attribute,options); diff --git a/core/modules/widgets/browse.js b/core/modules/widgets/browse.js index 195bda8d6..fca8e7467 100644 --- a/core/modules/widgets/browse.js +++ b/core/modules/widgets/browse.js @@ -42,9 +42,14 @@ BrowseWidget.prototype.render = function(parent,nextSibling) { if(this.tooltip) { domNode.setAttribute("title",this.tooltip); } + // Nw.js supports "nwsaveas" to force a "save as" dialogue that allows a new or existing file to be selected if(this.nwsaveas) { domNode.setAttribute("nwsaveas",this.nwsaveas); } + // Nw.js supports "webkitdirectory" to allow a directory to be selected + if(this.webkitdirectory) { + domNode.setAttribute("webkitdirectory",this.webkitdirectory); + } // Add a click event handler domNode.addEventListener("change",function (event) { if(self.message) { @@ -71,6 +76,7 @@ BrowseWidget.prototype.execute = function() { this.param = this.getAttribute("param"); this.tooltip = this.getAttribute("tooltip"); this.nwsaveas = this.getAttribute("nwsaveas"); + this.webkitdirectory = this.getAttribute("webkitdirectory"); }; /* diff --git a/core/modules/widgets/edit-text.js b/core/modules/widgets/edit-text.js index 377b7d5a5..c0588f93c 100644 --- a/core/modules/widgets/edit-text.js +++ b/core/modules/widgets/edit-text.js @@ -52,6 +52,9 @@ EditTextWidget.prototype.render = function(parent,nextSibling) { if(this.editSize) { domNode.setAttribute("size",this.editSize); } + if(this.editRows) { + domNode.setAttribute("rows",this.editRows); + } // Assign classes if(this.editClass) { domNode.className = this.editClass; @@ -79,7 +82,7 @@ EditTextWidget.prototype.render = function(parent,nextSibling) { if(this.editFocus === "true") { if(domNode.focus && domNode.select) { domNode.focus(); - domNode.select(); + domNode.select(); } } }; @@ -148,6 +151,7 @@ EditTextWidget.prototype.execute = function() { this.editClass = this.getAttribute("class"); this.editPlaceholder = this.getAttribute("placeholder"); this.editSize = this.getAttribute("size"); + this.editRows = this.getAttribute("rows"); this.editAutoHeight = this.getAttribute("autoHeight","yes") === "yes"; this.editMinHeight = this.getAttribute("minHeight",DEFAULT_MIN_TEXT_AREA_HEIGHT); this.editFocusPopup = this.getAttribute("focusPopup"); @@ -178,7 +182,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of EditTextWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); // Completely rerender if any of our attributes have changed - if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup) { + if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows) { this.refreshSelf(); return true; } else if(changedTiddlers[this.editTitle]) { @@ -213,18 +217,31 @@ EditTextWidget.prototype.updateEditorDomNode = function(text) { } }; +/* +Get the first parent element that has scrollbars or use the body as fallback. +*/ +EditTextWidget.prototype.getScrollContainer = function(el) { + while(el.parentNode) { + el = el.parentNode; + if(el.scrollTop) { + return el; + } + } + return this.document.body; +}; + /* Fix the height of textareas to fit their content */ EditTextWidget.prototype.fixHeight = function() { - var self = this, - domNode = this.domNodes[0]; + var domNode = this.domNodes[0]; if(this.editAutoHeight && domNode && !domNode.isTiddlyWikiFakeDom && this.editTag === "textarea") { // Resize the textarea to fit its content, preserving scroll position - var scrollPosition = $tw.utils.getScrollPosition(), - scrollTop = scrollPosition.y; - // Measure the specified minimum height - domNode.style.height = self.editMinHeight; + // Get the scroll container and register the current scroll position + var container = this.getScrollContainer(domNode), + scrollTop = container.scrollTop; + // Measure the specified minimum height + domNode.style.height = this.editMinHeight; var minHeight = domNode.offsetHeight; // Set its height to auto so that it snaps to the correct height domNode.style.height = "auto"; @@ -232,12 +249,11 @@ EditTextWidget.prototype.fixHeight = function() { var newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,minHeight); // Only try to change the height if it has changed if(newHeight !== domNode.offsetHeight) { - domNode.style.height = newHeight + "px"; + domNode.style.height = newHeight + "px"; // Make sure that the dimensions of the textarea are recalculated $tw.utils.forceLayout(domNode); - // Check that the scroll position is still visible before trying to scroll back to it - scrollTop = Math.min(scrollTop,self.document.body.scrollHeight - window.innerHeight); - window.scrollTo(scrollPosition.x,scrollTop); + // Set the container to the position we registered at the beginning + container.scrollTop = scrollTop; } } }; diff --git a/core/modules/widgets/fieldmangler.js b/core/modules/widgets/fieldmangler.js index 1cd0c5aa6..a829b77e3 100644 --- a/core/modules/widgets/fieldmangler.js +++ b/core/modules/widgets/fieldmangler.js @@ -135,6 +135,10 @@ FieldManglerWidget.prototype.handleAddTagEvent = function(event) { $tw.utils.pushTop(modification.tags,tag); this.wiki.addTiddler(new $tw.Tiddler(tiddler,modification)); } + } else if(typeof event.param === "string" && event.param.trim() !== "" && this.mangleTitle.trim() !== "") { + var tag = []; + tag.push(event.param.trim()); + this.wiki.addTiddler({title: this.mangleTitle, tags: tag}); } return true; }; diff --git a/core/modules/widgets/keyboard.js b/core/modules/widgets/keyboard.js index 2eb392a75..df32cc5b8 100644 --- a/core/modules/widgets/keyboard.js +++ b/core/modules/widgets/keyboard.js @@ -42,6 +42,7 @@ KeyboardWidget.prototype.render = function(parent,nextSibling) { // Add a keyboard event handler domNode.addEventListener("keydown",function (event) { if($tw.utils.checkKeyDescriptor(event,self.keyInfo)) { + self.invokeActions(this,event); self.dispatchMessage(event); event.preventDefault(); event.stopPropagation(); diff --git a/core/modules/widgets/select.js b/core/modules/widgets/select.js index 904988f97..b0d7385cb 100644 --- a/core/modules/widgets/select.js +++ b/core/modules/widgets/select.js @@ -51,7 +51,12 @@ SelectWidget.prototype.render = function(parent,nextSibling) { Handle a change event */ SelectWidget.prototype.handleChangeEvent = function(event) { - var value = this.getSelectDomNode().value; + if(this.selectMultiple == false) { + var value = this.getSelectDomNode().value; + } else { + var value = this.getSelectValues() + value = $tw.utils.stringifyList(value); + } this.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value); }; @@ -81,9 +86,21 @@ SelectWidget.prototype.setSelectValue = function() { } } // Assign it to the select element if it's different than the current value - var domNode = this.getSelectDomNode(); - if(domNode.value !== value) { - domNode.value = value; + if (this.selectMultiple) { + value = value === undefined ? "" : value; + var select = this.getSelectDomNode(); + var values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value); + for(var i=0; i < select.children.length; i++){ + if(values.indexOf(select.children[i].value) != -1) { + select.children[i].selected = true; + } + } + + } else { + var domNode = this.getSelectDomNode(); + if(domNode.value !== value) { + domNode.value = value; + } } }; @@ -94,6 +111,22 @@ SelectWidget.prototype.getSelectDomNode = function() { return this.children[0].domNodes[0]; }; +// Return an array of the selected opion values +// select is an HTML select element +SelectWidget.prototype.getSelectValues = function() { + var select, result, options, opt; + select = this.getSelectDomNode(); + result = []; + options = select && select.options; + for (var i=0; i - <> -
-<$reveal state=<> type="nomatch" text="" default=""> -
-<$list filter="[all[shadows+tiddlers]tag[$:/tags/Filter]]"><$link to={{!!filter}}><$transclude field="description"/> - -
- -
- - - <$reveal state="$:/temp/advancedsearch" type="nomatch" text=""> <$set name="resultCount" value="""<$count filter={{$:/temp/advancedsearch}}/>""">
diff --git a/core/ui/AdvancedSearch/FilterButtons/clear.tid b/core/ui/AdvancedSearch/FilterButtons/clear.tid new file mode 100644 index 000000000..3dd22e03d --- /dev/null +++ b/core/ui/AdvancedSearch/FilterButtons/clear.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear +tags: $:/tags/AdvancedSearch/FilterButton + +<$reveal state="$:/temp/advancedsearch" type="nomatch" text=""> +<$button class="tc-btn-invisible"> +<$action-setfield $tiddler="$:/temp/advancedsearch" $field="text" $value=""/> +{{$:/core/images/close-button}} + + diff --git a/core/ui/AdvancedSearch/FilterButtons/delete.tid b/core/ui/AdvancedSearch/FilterButtons/delete.tid new file mode 100644 index 000000000..fea48a667 --- /dev/null +++ b/core/ui/AdvancedSearch/FilterButtons/delete.tid @@ -0,0 +1,26 @@ +title: $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete +tags: $:/tags/AdvancedSearch/FilterButton + +<$reveal state="$:/temp/advancedsearch" type="nomatch" text=""> +<$button popup=<> class="tc-btn-invisible"> +{{$:/core/images/delete-button}} + + + +<$reveal state=<> type="popup" position="belowleft" animate="yes"> +
+
+
+<$set name="resultCount" value="""<$count filter={{$:/temp/advancedsearch}}/>"""> +Are you sure you wish to delete <> tiddler(s)? + +
+
+<$button class="tc-btn"> +<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/> +Delete these tiddlers + +
+
+
+ diff --git a/core/ui/AdvancedSearch/FilterButtons/dropdown.tid b/core/ui/AdvancedSearch/FilterButtons/dropdown.tid new file mode 100644 index 000000000..ee1c5eb37 --- /dev/null +++ b/core/ui/AdvancedSearch/FilterButtons/dropdown.tid @@ -0,0 +1,19 @@ +title: $:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown +tags: $:/tags/AdvancedSearch/FilterButton + + +<$button popup=<> class="tc-btn-invisible"> +{{$:/core/images/down-arrow}} + + + +<$reveal state=<> type="popup" position="belowleft" animate="yes"> +<$linkcatcher to="$:/temp/advancedsearch"> +
+
+<$list filter="[all[shadows+tiddlers]tag[$:/tags/Filter]]"><$link to={{!!filter}}><$transclude field="description"/> + +
+
+ + diff --git a/core/ui/AdvancedSearch/FilterButtons/export.tid b/core/ui/AdvancedSearch/FilterButtons/export.tid new file mode 100644 index 000000000..ec9ea91ac --- /dev/null +++ b/core/ui/AdvancedSearch/FilterButtons/export.tid @@ -0,0 +1,6 @@ +title: $:/core/ui/AdvancedSearch/Filter/FilterButtons/export +tags: $:/tags/AdvancedSearch/FilterButton + +<$reveal state="$:/temp/advancedsearch" type="nomatch" text=""> +<$macrocall $name="exportButton" exportFilter={{$:/temp/advancedsearch}} lingoBase="$:/language/Buttons/ExportTiddlers/"/> + diff --git a/core/ui/AlertTemplate.tid b/core/ui/AlertTemplate.tid index c4e457b75..87ddbd376 100644 --- a/core/ui/AlertTemplate.tid +++ b/core/ui/AlertTemplate.tid @@ -2,8 +2,7 @@ title: $:/core/ui/AlertTemplate
-<$button message="tm-delete-tiddler" class="tc-btn-invisible"> -{{$:/core/images/delete-button}} +<$button class="tc-btn-invisible"><$action-deletetiddler $tiddler=<>/>{{$:/core/images/delete-button}}
<$view field="component"/> - <$view field="modified" format="date" template="0hh:0mm:0ss DD MM YYYY"/> <$reveal type="nomatch" state="!!count" text="">(count: <$view field="count"/>) diff --git a/core/ui/ControlPanel/Plugins.tid b/core/ui/ControlPanel/Plugins.tid index c2ce9beb4..d91dead26 100644 --- a/core/ui/ControlPanel/Plugins.tid +++ b/core/ui/ControlPanel/Plugins.tid @@ -96,9 +96,7 @@ No information provided \end -<$button message="tm-modal" param="$:/core/ui/ControlPanel/Modals/AddPlugins" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class="tc-btn-big-green" style="background:blue;"> -{{$:/core/images/download-button}} <> - +{{$:/core/ui/ControlPanel/Plugins/AddPlugins}} <> diff --git a/core/ui/ControlPanel/Plugins/AddPlugins.tid b/core/ui/ControlPanel/Plugins/AddPlugins.tid new file mode 100644 index 000000000..51132e270 --- /dev/null +++ b/core/ui/ControlPanel/Plugins/AddPlugins.tid @@ -0,0 +1,7 @@ +title: $:/core/ui/ControlPanel/Plugins/AddPlugins + +\define lingo-base() $:/language/ControlPanel/Plugins/ + +<$button message="tm-modal" param="$:/core/ui/ControlPanel/Modals/AddPlugins" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class="tc-btn-big-green" style="background:blue;"> +{{$:/core/images/download-button}} <> + diff --git a/core/ui/EditTemplate/shadow.tid b/core/ui/EditTemplate/shadow.tid index f35605eb6..7bdff4e27 100644 --- a/core/ui/EditTemplate/shadow.tid +++ b/core/ui/EditTemplate/shadow.tid @@ -2,18 +2,37 @@ title: $:/core/ui/EditTemplate/shadow tags: $:/tags/EditTemplate \define lingo-base() $:/language/EditTemplate/Shadow/ +\define pluginLinkBody() +<$link to="""$(pluginTitle)$"""> +<$text text="""$(pluginTitle)$"""/> + +\end <$list filter="[all[current]get[draft.of]is[shadow]!is[tiddler]]"> + +<$list filter="[all[current]shadowsource[]]" variable="pluginTitle"> + +<$set name="pluginLink" value=<>>
<>
+ + + <$list filter="[all[current]get[draft.of]is[shadow]is[tiddler]]"> + +<$list filter="[all[current]shadowsource[]]" variable="pluginTitle"> + +<$set name="pluginLink" value=<>>
<>
+ + + \ No newline at end of file diff --git a/core/ui/SideBarLists.tid b/core/ui/SideBarLists.tid index 2e75a63ff..dfe012502 100644 --- a/core/ui/SideBarLists.tid +++ b/core/ui/SideBarLists.tid @@ -29,16 +29,12 @@ title: $:/core/ui/SideBarLists
-<$reveal state="$:/temp/search" type="nomatch" text=""> +<$reveal tag="div" class="tc-block-dropdown-wrapper" state="$:/temp/search" type="nomatch" text=""> -<$reveal state=<> type="nomatch" text="" default=""> - -
+<$reveal tag="div" class="tc-block-dropdown tc-search-drop-down tc-popup-handle" state=<> type="nomatch" text="" default=""> {{$:/core/ui/SearchResults}} -
- diff --git a/core/ui/TagTemplate.tid b/core/ui/TagTemplate.tid index 6cce1d297..006758f73 100644 --- a/core/ui/TagTemplate.tid +++ b/core/ui/TagTemplate.tid @@ -27,4 +27,4 @@ color:$(foregroundColor)$; \end -<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}}/> +<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}}/> \ No newline at end of file diff --git a/core/ui/ViewToolbar/fold-bar.tid b/core/ui/ViewToolbar/fold-bar.tid index e5f9b48c0..6e813dbb4 100644 --- a/core/ui/ViewToolbar/fold-bar.tid +++ b/core/ui/ViewToolbar/fold-bar.tid @@ -1,6 +1,6 @@ title: $:/core/ui/Buttons/fold-bar tags: $:/tags/ViewToolbar -caption: fold-bar -description: Optional bars to fold and unfold tiddlers +caption: {{$:/language/Buttons/Fold/FoldBar/Caption}} +description: {{$:/language/Buttons/Fold/FoldBar/Hint}} \ No newline at end of file diff --git a/core/ui/ViewToolbar/fold.tid b/core/ui/ViewToolbar/fold.tid index aa6e384fd..545114a82 100644 --- a/core/ui/ViewToolbar/fold.tid +++ b/core/ui/ViewToolbar/fold.tid @@ -3,8 +3,7 @@ tags: $:/tags/ViewToolbar caption: {{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}} description: {{$:/language/Buttons/Fold/Hint}} -<$reveal type="nomatch" state=<> text="hide" default="show"> -<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<>> +<$reveal type="nomatch" state=<> text="hide" default="show"><$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<>> <$action-sendmessage $message="tm-fold-tiddler" $param=<> foldedState=<>/> <$list filter="[prefix[yes]]" variable="listItem"> {{$:/core/images/fold-button}} @@ -14,11 +13,7 @@ description: {{$:/language/Buttons/Fold/Hint}} <$text text={{$:/language/Buttons/Fold/Caption}}/> - - - -<$reveal type="match" state=<> text="hide" default="show"> -<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<>> +<$reveal type="match" state=<> text="hide" default="show"><$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<>> <$action-sendmessage $message="tm-fold-tiddler" $param=<> foldedState=<>/> <$list filter="[prefix[yes]]" variable="listItem"> {{$:/core/images/unfold-button}} @@ -28,5 +23,4 @@ description: {{$:/language/Buttons/Fold/Hint}} <$text text={{$:/language/Buttons/Unfold/Caption}}/> - - + \ No newline at end of file diff --git a/core/wiki/config/OfficialPluginLibrary.tid b/core/wiki/config/OfficialPluginLibrary.tid index e4bfbc02c..aa878e946 100644 --- a/core/wiki/config/OfficialPluginLibrary.tid +++ b/core/wiki/config/OfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: http://tiddlywiki.com/library/v5.1.9/index.html +url: http://tiddlywiki.com/library/v5.1.12/index.html caption: {{$:/language/OfficialPluginLibrary}} {{$:/language/OfficialPluginLibrary/Hint}} diff --git a/core/wiki/macros/tabs.tid b/core/wiki/macros/tabs.tid index da07dd2ee..c9d44d2e3 100644 --- a/core/wiki/macros/tabs.tid +++ b/core/wiki/macros/tabs.tid @@ -4,16 +4,16 @@ tags: $:/tags/Macro \define tabs(tabsList,default,state:"$:/state/tab",class,template)
-<$list filter="$tabsList$" variable="currentTab"> -<$button set=<> setTo=<> default="$default$" selectedClass="tc-tab-selected"> +<$list filter="$tabsList$" variable="currentTab"><$set name="save-currentTiddler" value=<>><$tiddler tiddler=<>><$button set=<> setTo=<> default="$default$" selectedClass="tc-tab-selected" tooltip={{!!tooltip}}> +<$tiddler tiddler=<>> <$set name="tv-wikilinks" value="no"> <$transclude tiddler=<> field="caption"> <$macrocall $name="currentTab" $type="text/plain" $output="text/plain"/> - - - -
+ +
+
+
<$list filter="$tabsList$" variable="currentTab"> <$reveal type="match" state=<> text=<> default="$default$"> diff --git a/core/wiki/tags/AdvancedSearchFilterButton.tid b/core/wiki/tags/AdvancedSearchFilterButton.tid new file mode 100644 index 000000000..74d38bdc2 --- /dev/null +++ b/core/wiki/tags/AdvancedSearchFilterButton.tid @@ -0,0 +1,2 @@ +title: $:/tags/AdvancedSearch/FilterButton +list: $:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete diff --git a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid index 641c8f452..4893a16fa 100644 --- a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid +++ b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid @@ -2,7 +2,7 @@ title: Releasing a new version of TiddlyWiki # Move the latest release note from the prerelease edition into the tw5.com edition # Adjust the release date and the ''released'' field of the latest release tiddler (eg, [[Release 5.1.3]]) -# Ensure [[Releases]] has the new version as the default tab +# Ensure [[TiddlyWiki Releases]] has the new version as the default tab # Adjust the modified time of HelloThere # Make sure ''Jermolene/TiddlyWiki5'' is fully committed # Edit `package.json` to the new version number diff --git a/editions/dev/tiddlers/from Heigele and Jurke/Parser.tid b/editions/dev/tiddlers/from Heigele and Jurke/Parser.tid index 6d9ac1b58..3b132dc47 100644 --- a/editions/dev/tiddlers/from Heigele and Jurke/Parser.tid +++ b/editions/dev/tiddlers/from Heigele and Jurke/Parser.tid @@ -12,7 +12,7 @@ The parse-tree consists of nested nodes like ```js {type: "element", tag: , attributes: {}, children: []} - an HTML element {type: "text", text: } - a text node -{type: "entity", value: } - an HTML entity like © for a copyright symbol +{type: "entity", entity: } - an HTML entity like © for a copyright symbol {type: "raw", html: } - raw HTML ``` @@ -37,4 +37,4 @@ Attributes in the parse-tree are not stored as simple strings but they are nodes ```js {type: "string", value: } - literal string {type: "indirect", textReference: } - indirect through a text reference -``` \ No newline at end of file +``` diff --git a/editions/full/tiddlywiki.info b/editions/full/tiddlywiki.info index 9b6f87a09..26138e18b 100644 --- a/editions/full/tiddlywiki.info +++ b/editions/full/tiddlywiki.info @@ -16,6 +16,7 @@ "tiddlywiki/railroad", "tiddlywiki/stacked-view", "tiddlywiki/text-slicer", + "tiddlywiki/xmldom", "tiddlywiki/powered-by-tiddlywiki" ], "languages": [ diff --git a/editions/introduction/tiddlers/slides/Translations.tid b/editions/introduction/tiddlers/slides/Translations.tid index e29a2c193..588b400e9 100644 --- a/editions/introduction/tiddlers/slides/Translations.tid +++ b/editions/introduction/tiddlers/slides/Translations.tid @@ -4,9 +4,9 @@ title: Translations $(languagePluginTitle)$/icon \end -The following plugin translations are currently available: +TiddlyWiki is currently available in <$count filter="[[$:/languages/en-GB]] [plugin-type[language]sort[title]] -[[$:/languages/de-AT]]"/> languages: -
+
<$list filter="[[$:/languages/en-GB]] [plugin-type[language]sort[title]] -[[$:/languages/de-AT]]">
diff --git a/editions/introduction/tiddlywiki.info b/editions/introduction/tiddlywiki.info index 2e2b3d0e3..1fe3c6cd7 100644 --- a/editions/introduction/tiddlywiki.info +++ b/editions/introduction/tiddlywiki.info @@ -17,20 +17,29 @@ "tiddlywiki/readonly" ], "languages": [ + "ca-ES", + "cs-CZ", "da-DK", - "el-GR", - "en-US", - "en-GB", "de-AT", "de-DE", + "el-GR", + "en-GB", + "en-US", "es-ES", "fr-FR", - "zh-Hans", - "zh-Hant", + "hi-IN", + "ia-IA", "it-IT", "ja-JP", - "cs-CZ", - "ru-RU" + "ko-KR", + "nl-NL", + "pa-IN", + "pt-PT", + "ru-RU", + "sk-SK", + "sv-SE", + "zh-Hans", + "zh-Hant" ], "build": { "index": [ diff --git a/editions/katexdemo/tiddlers/HelloThere.tid b/editions/katexdemo/tiddlers/HelloThere.tid index fd633b109..0d058a371 100644 --- a/editions/katexdemo/tiddlers/HelloThere.tid +++ b/editions/katexdemo/tiddlers/HelloThere.tid @@ -22,59 +22,60 @@ These examples are taken from http://khan.github.io/KaTeX/ !! Example 1 +If the text between `$$` contains newlines it will rendered in display mode: + ``` -$$\displaystyle f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi$$ +$$ +f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi +$$ ``` -$$\displaystyle f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi$$ +$$ +f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi +$$ !! Example 2 ``` -$$\displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } }$$ +$$ +\frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } } +$$ ``` -$$\displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } }$$ +$$ +\frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } } +$$ + !! Example 3 -Use a wrapper element with the class `katex-display` to render math in display mode, centred on a single line in display style. - ``` -
-$$\displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$ -
+$$ +1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, \quad\quad \text{for }\lvert q\rvert<1. +$$ ``` -
-$$\displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$ -
- -!! Example 4 - -``` -$$\displaystyle 1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, \quad\quad \text{for }\lvert q\rvert<1.$$ -``` - -$$\displaystyle 1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, \quad\quad \text{for }\lvert q\rvert<1.$$ +$$ +1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, \quad\quad \text{for }\lvert q\rvert<1. +$$ !! Widget Example For more flexibility the KaTeX widget can also be used via the full widget syntax: ``` -<$latex text="\displaystyle f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi"> +<$latex text="f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi" displayMode="true"> ``` -<$latex text="\displaystyle f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi"> +<$latex text="f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi" displayMode="true"> ! Error Handling Any LaTeX syntax errors are flagged with the problematic syntax highlighted. For example: ``` -$$\displaystyle f(x) = \int_{-\infty}^\infinity\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi$$ +$$ f(x) = \int_{-\infty}^\infinity\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi $$ ``` -$$\displaystyle f(x) = \int_{-\infty}^\infinity\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi$$ +$$ f(x) = \int_{-\infty}^\infinity\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi $$ diff --git a/editions/prerelease/tiddlers/Release 5.1.12.tid b/editions/prerelease/tiddlers/Release 5.1.12.tid new file mode 100644 index 000000000..4f0436693 --- /dev/null +++ b/editions/prerelease/tiddlers/Release 5.1.12.tid @@ -0,0 +1,40 @@ +caption: 5.1.12 +created: 20160205184203773 +modified: 20160205184203773 +tags: ReleaseNotes +title: Release 5.1.12 +type: text/vnd.tiddlywiki + +//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.11...v5.1.12]]// + +! Major Improvements + +!! TBD + +! Other Improvements + +!! Translation Improvements + +* TBD + +!! Usability Improvements + +* TBD + +!! Hackability Improvements + +* TBD + +!! Bug Fixes + +* TBD + +!! Node.js Improvements + +* TBD + +!! Contributors + +[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: + +* [[@telmiger|https://github.com/telmiger]] diff --git a/editions/prerelease/tiddlers/staging/filters/recent.tid b/editions/prerelease/tiddlers/staging/filters/recent.tid deleted file mode 100644 index 4adeb8c96..000000000 --- a/editions/prerelease/tiddlers/staging/filters/recent.tid +++ /dev/null @@ -1,15 +0,0 @@ -tags: [[Filter Operators]] [[Date Operators]] -title: recent Operator -type: text/vnd.tiddlywiki -caption: recent -op-purpose: filter the input by age -op-input: a [[selection of titles|Title Selection]] -op-suffix: the name of a [[date field|Date Fields]], defaulting to <<.field modified>> -op-suffix-name: F -op-parameter: a number of days, defaulting to 0 -op-parameter-name: D -op-output: those input tiddlers in which field <<.place F>> is at most <<.place D>> days old, ignoring time - -Select tiddlers where a specified date field (default "modified") is within the last N days (default 0, meaning today). - -<<.operator-examples "recent">> diff --git a/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid index 1a03b1a77..3f7c07ffd 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/LocalPluginLibrary tags: $:/tags/PluginLibrary -url: http://127.0.0.1:8080/prerelease/library/v5.1.10/index.html +url: http://127.0.0.1:8080/prerelease/library/v5.1.12/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease Local) A locally installed version of the official ~TiddlyWiki plugin library at tiddlywiki.com for testing and debugging. //Requires a local web server to share the library// diff --git a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid index 417681328..9a259024e 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: http://tiddlywiki.com/prerelease/library/v5.1.10/index.html +url: http://tiddlywiki.com/prerelease/library/v5.1.11/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease) The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. diff --git a/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid b/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid index 5138cf817..6ef34d420 100644 --- a/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid +++ b/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid @@ -5,9 +5,7 @@ modified: 20150428204930183 <$edit-text tiddler="""$tiddler$""" index="""$colour$""" type="color" tag="input"/> \end -This is a pre-release build of TiddlyWiki. - -It is provided for testing purposes. Please don't try to use it for anything important -- you should use the latest official release from http://tiddlywiki.com. +This is a pre-release build of TiddlyWiki. It is provided for testing purposes. ''Please don't try to use it for anything important'' -- you should use the latest official release from http://tiddlywiki.com. <$list filter="[tag[ReleaseNotes]!has[released]!sort[created]]">

<$text text=<>/>

diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js index 45ea8919e..2af6c2e36 100644 --- a/editions/test/tiddlers/tests/test-filters.js +++ b/editions/test/tiddlers/tests/test-filters.js @@ -51,12 +51,14 @@ describe("Filter tests", function() { title: "TiddlerOne", text: "The quick brown fox in $:/TiddlerTwo", tags: ["one"], + authors: "Joe Bloggs", modifier: "JoeBloggs", modified: "201304152222"}); wiki.addTiddler({ title: "$:/TiddlerTwo", text: "The rain in Spain\nfalls mainly on the plain and [[a fourth tiddler]]", tags: ["two"], + authors: "[[John Doe]]", modifier: "JohnDoe", modified: "201304152211"}); wiki.addTiddler({ @@ -217,6 +219,8 @@ describe("Filter tests", function() { it("should handle the each operator", function() { expect(wiki.filterTiddlers("[each[modifier]sort[title]]").join(",")).toBe("$:/TiddlerTwo,TiddlerOne"); + expect(wiki.filterTiddlers("[each:list-item[tags]sort[title]]").join(",")).toBe("one,two"); + expect(wiki.filterTiddlers("[each:list-item[authors]sort[title]]").join(",")).toBe("Bloggs,Joe,John Doe"); }); it("should handle the eachday operator", function() { diff --git a/editions/text-slicer/tiddlers/Sample Text.tid b/editions/text-slicer/tiddlers/Sample Text.tid index 0c15eb858..b44e6a9ae 100644 --- a/editions/text-slicer/tiddlers/Sample Text.tid +++ b/editions/text-slicer/tiddlers/Sample Text.tid @@ -104,6 +104,13 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor i Dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
Term being defined
+
Definition of that term
+
Another term
+
Another definition
+
+

Story

    diff --git a/editions/text-slicer/tiddlywiki.info b/editions/text-slicer/tiddlywiki.info index 8fa0682e3..11e1808de 100644 --- a/editions/text-slicer/tiddlywiki.info +++ b/editions/text-slicer/tiddlywiki.info @@ -1,7 +1,8 @@ { "description": "Tools for slicing up long texts into individual tiddlers", "plugins": [ - "tiddlywiki/text-slicer" + "tiddlywiki/text-slicer", + "tiddlywiki/xmldom" ], "languages": [ ], diff --git a/editions/tw5.com/tiddlers/demonstrations/SampleAlert.tid b/editions/tw5.com/tiddlers/SampleAlert.tid similarity index 75% rename from editions/tw5.com/tiddlers/demonstrations/SampleAlert.tid rename to editions/tw5.com/tiddlers/SampleAlert.tid index 7ee3de9c2..4a316fb25 100644 --- a/editions/tw5.com/tiddlers/demonstrations/SampleAlert.tid +++ b/editions/tw5.com/tiddlers/SampleAlert.tid @@ -1,5 +1,8 @@ -title: SampleAlert component: demo +created: 20160107230134172 +modified: 20160107230134172 +title: SampleAlert +type: text/vnd.tiddlywiki This is a demonstration alert. diff --git a/editions/tw5.com/tiddlers/community/articles/_A_free,_open_source_wiki_revisited__by_Mark_Gibbs,_NetworkWorld.tid b/editions/tw5.com/tiddlers/community/articles/_A_free,_open_source_wiki_revisited__by_Mark_Gibbs,_NetworkWorld.tid new file mode 100644 index 000000000..dc402677a --- /dev/null +++ b/editions/tw5.com/tiddlers/community/articles/_A_free,_open_source_wiki_revisited__by_Mark_Gibbs,_NetworkWorld.tid @@ -0,0 +1,16 @@ +created: 20160204225047445 +modified: 20160204225307847 +tags: Articles +title: "A free, open source wiki revisited" by Mark Gibbs, NetworkWorld +type: text/vnd.tiddlywiki +url: http://www.networkworld.com/article/3028098/open-source-tools/tiddlywiki-a-free-open-source-wiki-revisited.html + +Interesting article giving the perspective of someone who has been away from TiddlyWiki for a few years: + +{{!!url}} + +<<< +Way back in the mists of time (actually, January 2009) I wrote about a really cool tool called TiddlyWiki, a “non-linear personal web notebook”. Fast forward to today and I just had an out of body experience: Completely by accident I found a TiddlyWiki that I started when I wrote that piece and it still works! + +Finding code that works flawlessly after just two or three years is magical enough but after seven years?! And given that TiddlyWiki is written as a single page Web application and considering how different browsers are now than they were in 2009, the fact that the old version of TiddlyWiki still works is not short of miraculous. +<<< diff --git a/editions/tw5.com/tiddlers/community/resources/TWCommunitySearch.tid b/editions/tw5.com/tiddlers/community/resources/TWCommunitySearch.tid new file mode 100644 index 000000000..d116f8027 --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/TWCommunitySearch.tid @@ -0,0 +1,22 @@ +created: 20150913184230499 +modified: 20150913184230499 +tags: Resources +title: TWCommunitySearch +type: text/vnd.tiddlywiki +url: http://erwanm.github.io/tw-community-search + +The [[CommunitySearch wiki|http://erwanm.github.io/tw-community-search]] aggregates many public wikis from the community. It is updated automatically every day. At the time of writing, more than 5000 tiddlers are indexed, thus giving access to the largest known collection of TW content. + +It lets you search for some specific content among a preselected list of wikis. The indexed content is mostly focused on TW usage, so you would typically use this search system to find information about a particular aspect of TiddlyWiki. Say for example that you want to learn how to make a table of content, type "table of content" in the [[CommunitySearch box|http://erwanm.github.io/tw-community-search/#CommunitySearch]] (also accessible in the default tiddler [[GettingStarted|http://erwanm.github.io/tw-community-search/#GettingStarted]]). The search results are links to various wikis, and point directly to the specific tiddlers containing your request. + + +The ~CommunitySearch wiki also lets you: + +* Browse the [[list of wikis|http://erwanm.github.io/tw-community-search/#CommunityWikis]] +* Browse the [[list of author|http://erwanm.github.io/tw-community-search/#CommunityAuthors]] +* Browse the [[list of plugins|http://erwanm.github.io/tw-community-search/#CommunityPlugins]] +* Access content by [[tag|http://erwanm.github.io/tw-community-search/#CommunityTags]] (see also [[BookmarkingTags|http://erwanm.github.io/tw-community-search/#BookmarkingTags]]) +* Follow the [[latest news|http://erwanm.github.io/tw-community-search/#CommunityNews]] from the community (and [[publish your own news|http://erwanm.github.io/tw-community-search/#PublishingInCommunityNews]] if you are a wiki author) + + + diff --git a/editions/tw5.com/tiddlers/community/resources/TiddlyWiki_Jingle_by_Måns_Mårtensson.tid b/editions/tw5.com/tiddlers/community/resources/TiddlyWiki_Jingle_by_Mans_Martensson.tid similarity index 100% rename from editions/tw5.com/tiddlers/community/resources/TiddlyWiki_Jingle_by_Måns_Mårtensson.tid rename to editions/tw5.com/tiddlers/community/resources/TiddlyWiki_Jingle_by_Mans_Martensson.tid diff --git a/editions/tw5.com/tiddlers/community/resources/datepicker based on Pikaday.tid b/editions/tw5.com/tiddlers/community/resources/datepicker based on Pikaday.tid new file mode 100644 index 000000000..754f634db --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/datepicker based on Pikaday.tid @@ -0,0 +1,12 @@ +created: 20151015072304780 +modified: 20151015073121685 +tags: Resources +title: datepicker plugin based on Pikaday, by kixam +type: text/vnd.tiddlywiki +url: http://kixam.github.io/TW5-datePicker/ + +An interactive date picker plugin based on [[Pikaday|https://github.com/dbushell/Pikaday]]. A demo can be found here: {{!!url}}. + +<<< +datepicker is a TiddlyWiki plugin that allows you to use a widget much like EditTextWidget to pick a date (not a time). It shows a nice interactive mini-calendar when clicked, allows you to set a date format for display, and is compatible with core date fields such as `modified` and `created`. +<<< diff --git a/editions/tw5.com/tiddlers/concepts/Transclusion.tid b/editions/tw5.com/tiddlers/concepts/Transclusion.tid index b1f9e48d5..c7d2af671 100644 --- a/editions/tw5.com/tiddlers/concepts/Transclusion.tid +++ b/editions/tw5.com/tiddlers/concepts/Transclusion.tid @@ -3,7 +3,7 @@ modified: 20141130195444237 tags: Concepts title: Transclusion -Transclusion is the process of referencing one tiddler "A" from another tiddler "B" such that the content of "A" appears to be a part of "B". +[[Transclusion|http://en.wikipedia.org/wiki/Transclusion]] is the process of referencing one tiddler "A" from another tiddler "B" such that the content of "A" appears to be a part of "B". Copying and pasting content creates multiple copies of the same content in several different places. With transclusion, there can be a single copy and a special instruction in "B" which indicates the point at which content should be inserted from tiddler "A". @@ -16,6 +16,7 @@ To learn more: * [[Transclusion in WikiText]] * [[Transclusion Basic Usage]] * [[Transclusion with Templates]] +* [[Transclusion and Substitution]] * TextReference * TemplateTiddlers * TranscludeWidget diff --git a/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid b/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid index 725cfd783..b324f01fb 100644 --- a/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid +++ b/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid @@ -1,6 +1,6 @@ created: 20140126125259638 -modified: 20150427121710347 -tags: Definitions Features Saving Platforms +modified: 20160107230954643 +tags: Definitions Saving Platforms title: TiddlyDesktop type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/demonstrations/SampleTabFour.tid b/editions/tw5.com/tiddlers/demonstrations/SampleTabFour.tid index fe57544f4..87c01e931 100644 --- a/editions/tw5.com/tiddlers/demonstrations/SampleTabFour.tid +++ b/editions/tw5.com/tiddlers/demonstrations/SampleTabFour.tid @@ -3,6 +3,7 @@ modified: 20150221211613000 title: SampleTabFour tags: sampletab caption: Four +tooltip: This tab specifies both a caption and a tooltip order: 4 This is the fourth of our sample tabs. diff --git a/editions/tw5.com/tiddlers/demonstrations/SampleTabThree.tid b/editions/tw5.com/tiddlers/demonstrations/SampleTabThree.tid index a13ab5786..f5e3c205a 100644 --- a/editions/tw5.com/tiddlers/demonstrations/SampleTabThree.tid +++ b/editions/tw5.com/tiddlers/demonstrations/SampleTabThree.tid @@ -2,5 +2,6 @@ created: 20150221211557000 title: SampleTabThree tags: sampletab order: 3 +tooltip: This tab specifies a tooltip only This is the third of our sample tabs. diff --git a/editions/prerelease/tiddlers/staging/editions/Blog_Edition.tid b/editions/tw5.com/tiddlers/editions/Blog_Edition.tid similarity index 100% rename from editions/prerelease/tiddlers/staging/editions/Blog_Edition.tid rename to editions/tw5.com/tiddlers/editions/Blog_Edition.tid diff --git a/editions/tw5.com/tiddlers/editions/Editions.tid b/editions/tw5.com/tiddlers/editions/Editions.tid index a2a81621d..39e4f0605 100644 --- a/editions/tw5.com/tiddlers/editions/Editions.tid +++ b/editions/tw5.com/tiddlers/editions/Editions.tid @@ -1,12 +1,16 @@ created: 20140908125500000 list: [[Empty Edition]] -modified: 20150412185442868 +modified: 20160107222125923 tags: TableOfContents title: Editions type: text/vnd.tiddlywiki -TiddlyWiki is distributed in several different editions that are tuned for specific purposes. Each one consists of the same TiddlyWiki core components along with the required plugins, documentation and sample content. +TiddlyWiki is distributed in several distinct editions that are tuned for specific purposes. -You can mix and match the components of these editions, to make a unique solution to your particular application. +An edition consists of the TiddlyWiki core components along with plugins, documentation and sample content to get you up and running as quickly as possible. + +You can mix and match the components of these editions, to make a unique solution for your particular application. <> + +<$macrocall $name=".tip" _="""Note that editions should not be confused with the [[platforms|Platforms]] on which TiddlyWiki runs (eg as a [[single HTML file|Saving]] vs. [[under Node.js|TiddlyWiki on Node.js]])"""/> diff --git a/editions/prerelease/tiddlers/staging/editions/Resume_Builder_Edition.tid b/editions/tw5.com/tiddlers/editions/Resume_Builder_Edition.tid similarity index 100% rename from editions/prerelease/tiddlers/staging/editions/Resume_Builder_Edition.tid rename to editions/tw5.com/tiddlers/editions/Resume_Builder_Edition.tid diff --git a/editions/prerelease/tiddlers/staging/editions/Text_Slicer_Edition.tid b/editions/tw5.com/tiddlers/editions/Text_Slicer_Edition.tid similarity index 100% rename from editions/prerelease/tiddlers/staging/editions/Text_Slicer_Edition.tid rename to editions/tw5.com/tiddlers/editions/Text_Slicer_Edition.tid diff --git a/editions/tw5.com/tiddlers/features/Features.tid b/editions/tw5.com/tiddlers/features/Features.tid index bf6876dba..1b1781d33 100644 --- a/editions/tw5.com/tiddlers/features/Features.tid +++ b/editions/tw5.com/tiddlers/features/Features.tid @@ -1,23 +1,11 @@ created: 20130822172800000 -modified: 20140920143945484 +modified: 20160107225826644 tags: TableOfContents title: Features type: text/vnd.tiddlywiki -\define alert-demo() -<$fieldmangler tiddler="SampleAlert"><$set name="currentTiddler" value="SampleAlert"><$button message="tm-add-tag" param="$:/tags/Alert">alerts -\end - Further information about specific TiddlyWiki features: <> ----- - -* Familiar user interface elements like <>, <$button message="tm-modal" param="SampleWizard">wizards and <$button message="tm-notify" param="SampleNotification">notifications -* Try out the <$button message="tm-full-screen">full screen support -* Explore the [[D3.js visualisation plugin|http://tiddlywiki.com/plugins/tiddlywiki/d3/index.html]] -* [[CodeMirror support via a plugin|http://tiddlywiki.com/plugins/tiddlywiki/codemirror/index.html]] -* [[Markdown support via a plugin|http://tiddlywiki.com/plugins/tiddlywiki/markdown/index.html]] -* [[Classic TiddlyWiki markup support via a plugin|http://tiddlywiki.com/plugins/tiddlywiki/tw2parser/index.html]] -* Last but not least, TiddlyWiki is a rare example of a practical [[quine|Quine]] +Last but not least, TiddlyWiki is a rare example of a practical [[quine|Quine]] diff --git a/editions/tw5.com/tiddlers/features/LazyLoading.tid b/editions/tw5.com/tiddlers/features/LazyLoading.tid index 542b94918..0d2adb623 100644 --- a/editions/tw5.com/tiddlers/features/LazyLoading.tid +++ b/editions/tw5.com/tiddlers/features/LazyLoading.tid @@ -1,5 +1,5 @@ created: 20140206214608586 -modified: 20140912141710950 +modified: 20151105122712982 tags: Features title: LazyLoading type: text/vnd.tiddlywiki @@ -8,19 +8,27 @@ Ordinarily with TiddlyWiki, the full content of all tiddlers is embedded into th Lazy loading can be used in two configurations: -* When running [[TiddlyWiki on Node.js]], image tiddlers can be subject to lazy loading +* When running [[TiddlyWiki on Node.js]], just image tiddlers or all non-system tiddlers can be subject to lazy loading * When running [[TiddlyWiki in the Sky for TiddlyWeb]], all tiddlers are subject to lazy loading See the LazyLoadingMechanism for details of how lazy loading is implemented. ! Lazy loading under Node.js -To run TiddlyWiki with lazy loading for images, use this alternative ServerCommand to start the server: +To start TiddlyWiki with lazy loading for image tiddlers use this command: + ``` tiddlywiki --server 8080 $:/core/save/lazy-images ``` +To apply lazy loading to all non-system tiddlers use this command: + + +``` +tiddlywiki --server 8080 $:/core/save/lazy-all +``` + ! Lazy loading under TiddlyWeb With the current configuration, lazy loading is enabled by default. diff --git a/editions/tw5.com/tiddlers/features/Modals.tid b/editions/tw5.com/tiddlers/features/Modals.tid new file mode 100644 index 000000000..ae4b3f26f --- /dev/null +++ b/editions/tw5.com/tiddlers/features/Modals.tid @@ -0,0 +1,11 @@ +created: 20160107225427489 +modified: 20160107225651558 +tags: Features +title: Modals +type: text/vnd.tiddlywiki + +Modals (or "wizards") fade the main TiddlyWiki window to display an isolated tiddler that must be explicitly dismissed by the user. + +Modals are displayed with the [[WidgetMessage: tm-modal]]. + +<$button message="tm-modal" param="SampleWizard">Open demo modal \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/features/Notifications.tid b/editions/tw5.com/tiddlers/features/Notifications.tid new file mode 100644 index 000000000..6c132f314 --- /dev/null +++ b/editions/tw5.com/tiddlers/features/Notifications.tid @@ -0,0 +1,9 @@ +created: 20160107225753340 +modified: 20160107225855353 +tags: Features +title: Notifications +type: text/vnd.tiddlywiki + +Notifications are small informational messages that appear at the top right of the TiddlyWiki window, and automatically disappear after a preset time. + +<$button message="tm-notify" param="SampleNotification">Display sample notification \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/filters/FilterOperators.tid b/editions/tw5.com/tiddlers/filters/FilterOperators.tid index 60fdb35cd..22c7245f5 100644 --- a/editions/tw5.com/tiddlers/filters/FilterOperators.tid +++ b/editions/tw5.com/tiddlers/filters/FilterOperators.tid @@ -28,7 +28,9 @@ The following table lists all the core operators. The commonest ones are checkma <<.operator-rows "[tag[Filter Operators]!tag[Order Operators]!tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> <<.group-heading "Order Operators">> -<<.operator-rows "[tag[Filter Operators]tag[Order Operators]!tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> +<<.operator-rows "[tag[Filter Operators]tag[Order Operators]!tag[Listops Operators]!tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> +<<.group-heading "Listops Operators">> +<<.operator-rows "[tag[Filter Operators]tag[Listops Operators]tag[Order Operators]!tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> <<.group-heading "String Operators">> <<.operator-rows "[tag[Filter Operators]!tag[Order Operators]tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> <<.group-heading "Tag Operators">> diff --git a/editions/tw5.com/tiddlers/filters/allafter.tid b/editions/tw5.com/tiddlers/filters/allafter.tid new file mode 100644 index 000000000..5041995b5 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/allafter.tid @@ -0,0 +1,14 @@ +caption: allafter +created: 20151017145021839 +modified: 20151108051523860 +op-input: a list of items +op-output: all items after the marker +op-parameter: the list item to be used as a marker +op-parameter-name: marker +op-purpose: discard all items except those after the marker +op-suffix: specifying a suffix ('include') will include the marker in the output +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: allafter Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "allafter">> diff --git a/editions/tw5.com/tiddlers/filters/allbefore.tid b/editions/tw5.com/tiddlers/filters/allbefore.tid new file mode 100644 index 000000000..71196eec2 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/allbefore.tid @@ -0,0 +1,14 @@ +caption: allbefore +created: 20151017145131857 +modified: 20151108051507578 +op-input: a list of items +op-output: all items before the marker +op-parameter: the list item to be used as a marker +op-parameter-name: marker +op-purpose: discard all items except those before the marker +op-suffix: specifying a suffix ('include') will include the marker in the output +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: allbefore Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "allbefore">> diff --git a/editions/tw5.com/tiddlers/filters/append.tid b/editions/tw5.com/tiddlers/filters/append.tid new file mode 100644 index 000000000..881dfc257 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/append.tid @@ -0,0 +1,15 @@ +caption: append +created: 20151017145358368 +modified: 20151108051540981 +op-input: a list of items +op-neg-output: a list with items appended from the tail of the operand array +op-output: a list with items appended from the head of the operand array +op-parameter: the array of items to be appended to the tail of the list +op-parameter-name: list +op-purpose: append a range of items from an array to the list +op-suffix: an integer N, defaulting to all +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: append Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "append">> diff --git a/editions/tw5.com/tiddlers/filters/days.tid b/editions/tw5.com/tiddlers/filters/days.tid new file mode 100644 index 000000000..732bb3aab --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/days.tid @@ -0,0 +1,16 @@ +tags: [[Filter Operators]] [[Date Operators]] [[Negatable Operators]] +title: days Operator +type: text/vnd.tiddlywiki +caption: days +op-input: a [[selection of titles|Title Selection]] +op-neg-output: those input tiddlers in which field <<.place F>> is more than <<.place D>> days in the { future | past }, where <<.place D>> is { positive | negative } +op-output: those input tiddlers in which field <<.place F>> is <<.place D>> days in the { future | past } or any time { before | after } that, including { past | future }, where <<.place D>> is { positive | negative } +op-parameter: a number of days, defaulting to 0 +op-parameter-name: D +op-purpose: filter the input by date +op-suffix: the name of a [[date field|Date Fields]], defaulting to <<.field modified>> +op-suffix-name: F + +Select tiddlers where a specified date field (default "modified") is withing a specified date range. Time portion is ignored. + +<<.operator-examples "days">> diff --git a/editions/tw5.com/tiddlers/filters/each.tid b/editions/tw5.com/tiddlers/filters/each.tid index 09b69fa70..8a48fb122 100644 --- a/editions/tw5.com/tiddlers/filters/each.tid +++ b/editions/tw5.com/tiddlers/filters/each.tid @@ -6,7 +6,7 @@ type: text/vnd.tiddlywiki caption: each op-purpose: select one of each group of input titles by field op-input: a [[selection of titles|Title Selection]] -op-suffix: optionally, `list` +op-suffix: optionally, `list-item` op-parameter: the name of a [[field|TiddlerFields]], defaulting to <<.field title>> op-parameter-name: F op-output: a selection containing the first input title encountered for each distinct value of field <<.place F>> @@ -15,7 +15,7 @@ Each input title is processed in turn. The value of field <<.place F>> in the co ;each :As long as the field's value has not been encountered before, the title is appended to the output. -;each:list +;each:list-item :The value is treated as a [[title list|Title List]]. Each title in the list considered in turn. If it has not been encountered before, it is appended to the output. If a tiddler doesn't contain field <<.place F>>, it is treated as if the field's value was empty. diff --git a/editions/tw5.com/tiddlers/filters/examples/allafter.tid b/editions/tw5.com/tiddlers/filters/examples/allafter.tid new file mode 100644 index 000000000..e1224b56b --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/allafter.tid @@ -0,0 +1,10 @@ +created: 20151022123929297 +modified: 20151108080543606 +tags: [[Operator Examples]] [[allafter Operator]] +title: allafter Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]] +[allafter[Wednesday]]">> +<<.operator-example 2 "[list[Days of the Week]] +[allafter:include[Wednesday]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/allbefore.tid b/editions/tw5.com/tiddlers/filters/examples/allbefore.tid new file mode 100644 index 000000000..01313dbec --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/allbefore.tid @@ -0,0 +1,10 @@ +created: 20151017150902487 +modified: 20151108051438263 +tags: [[Operator Examples]] [[allbefore Operator]] +title: allbefore Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]allbefore[Wednesday]]">> +<<.operator-example 2 "[list[Days of the Week]allbefore:include[Wednesday]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/append.tid b/editions/tw5.com/tiddlers/filters/examples/append.tid new file mode 100644 index 000000000..33c5c2dc4 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/append.tid @@ -0,0 +1,14 @@ +created: 20151017150942725 +modified: 20151108051557748 +tags: [[Operator Examples]] [[append Operator]] +title: append Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]append[Tomorrow]]">> +<<.operator-example 2 "[list[Days of the Week]append[Yesterday Today Tomorrow]]">> + +;Append the first 4 short days of the week to our list + +<<.operator-example 3 "[list[Days of the Week]append:4{Days of the Week!!short}]">> diff --git a/editions/prerelease/tiddlers/staging/filters/examples/recent.tid b/editions/tw5.com/tiddlers/filters/examples/days.tid similarity index 52% rename from editions/prerelease/tiddlers/staging/filters/examples/recent.tid rename to editions/tw5.com/tiddlers/filters/examples/days.tid index 9f366823d..c4cc2bf16 100644 --- a/editions/prerelease/tiddlers/staging/filters/examples/recent.tid +++ b/editions/tw5.com/tiddlers/filters/examples/days.tid @@ -1,9 +1,9 @@ -tags: [[recent Operator]] [[Operator Examples]] -title: recent Operator (Examples) +tags: [[Operator Examples]] [[days Operator]] +title: days Operator (Examples) type: text/vnd.tiddlywiki -<<.operator-example 1 "[recent[1]]" "tiddlers modified yesterday and today">> -<<.operator-example 2 "[recent:created[14]]" "tiddlers created within the last 14 days">> +<<.operator-example 1 "[days[-14]]" "tiddlers modified within the last 14 days">> +<<.operator-example 2 "[!days:created[-800]]" "tiddlers created more than 800 days ago">> The filter can be used to highlight new items in a list. For example: <$macrocall $name="wikitext-example-without-html" src= @@ -11,7 +11,7 @@ The filter can be used to highlight new items in a list. For example:
      <$list filter="[tag[ReleaseNotes]!!sort[modified]]">
    • - <$link><$view field="title"/><$list filter="[recent[90]]"> @@color:red;^^new^^@@ + <$link><$view field="title"/><$list filter="[days[-120]]"> @@color:red;^^new^^@@
    diff --git a/editions/tw5.com/tiddlers/filters/examples/each.tid b/editions/tw5.com/tiddlers/filters/examples/each.tid index 0b5017957..f6e2ed23b 100644 --- a/editions/tw5.com/tiddlers/filters/examples/each.tid +++ b/editions/tw5.com/tiddlers/filters/examples/each.tid @@ -6,5 +6,6 @@ type: text/vnd.tiddlywiki <<.operator-example 1 "[each[color]]">> <<.operator-example 2 "[sort[title]each[type]]" "the alphabetically first tiddler of each type">> +<<.operator-example 3 "[each:list-item[list]]" "all tiddlers listed anywhere in the core list field">> For an example of using the <<.op each>> operator to generate a two-tier list of groups and members, see [[GroupedLists]]. diff --git a/editions/tw5.com/tiddlers/filters/examples/move.tid b/editions/tw5.com/tiddlers/filters/examples/move.tid new file mode 100644 index 000000000..367f3f0c3 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/move.tid @@ -0,0 +1,10 @@ +created: 20151022123633433 +modified: 20151108051643871 +tags: [[Operator Examples]] [[move Operator]] +title: move Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]] +[move[Wednesday]]">> +<<.operator-example 2 "[list[Days of the Week]] +[move:-2[Wednesday]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/prepend.tid b/editions/tw5.com/tiddlers/filters/examples/prepend.tid new file mode 100644 index 000000000..0c66d1002 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/prepend.tid @@ -0,0 +1,15 @@ +created: 20151017151508135 +modified: 20151108051743531 +tags: [[Operator Examples]] [[prepend Operator]] +title: prepend Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +The operator may be used to prepend a number of items to the list. + +<<.operator-example 1 "[list[Days of the Week]prepend[Yesterday Today Tomorrow]]">> + +The operand may list only items without spaces -- to include items with spaces, use a reference to an array e.g. prepend the last three short days of the week to the list + +<<.operator-example 2 "[list[Days of the Week]!prepend:3{Days of the Week!!short}]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/putafter.tid b/editions/tw5.com/tiddlers/filters/examples/putafter.tid new file mode 100644 index 000000000..e433ee250 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/putafter.tid @@ -0,0 +1,11 @@ +created: 20151017151905558 +modified: 20151108051825288 +tags: [[Operator Examples]] [[putafter Operator]] +title: putafter Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]] +[putafter[Wednesday]]">> +<<.operator-example 2 "[list[Days of the Week]] +[putafter:2[Tuesday]]">> +<<.operator-example 3 "[list[Days of the Week]] [[Yesterday]] [[Today]] [[Tomorrow]] +[putafter:3[Tuesday]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/putbefore.tid b/editions/tw5.com/tiddlers/filters/examples/putbefore.tid new file mode 100644 index 000000000..321d7605d --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/putbefore.tid @@ -0,0 +1,11 @@ +created: 20151022142602628 +modified: 20151108051906935 +tags: [[Operator Examples]] [[putbefore Operator]] +title: putbefore Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]] +[putbefore[Wednesday]]">> +<<.operator-example 2 "[list[Days of the Week]] +[putbefore:2[Tuesday]]">> +<<.operator-example 3 "[list[Days of the Week]] [[Yesterday]] [[Today]] [[Tomorrow]] +[putbefore:3[Tuesday]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/putfirst.tid b/editions/tw5.com/tiddlers/filters/examples/putfirst.tid new file mode 100644 index 000000000..46684366b --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/putfirst.tid @@ -0,0 +1,11 @@ +created: 20151017152847899 +modified: 20151108051943204 +tags: [[Operator Examples]] [[putfirst Operator]] +title: putfirst Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]] +[putfirst[]]">> +<<.operator-example 2 "[list[Days of the Week]] +[putfirst:2[]]">> +<<.operator-example 3 "[list[Days of the Week]] [[Yesterday]] [[Today]] [[Tomorrow]] +[putfirst:-2[]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/putlast.tid b/editions/tw5.com/tiddlers/filters/examples/putlast.tid new file mode 100644 index 000000000..981042c8b --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/putlast.tid @@ -0,0 +1,11 @@ +created: 20151017153037776 +modified: 20151108052020761 +tags: [[Operator Examples]] [[putlast Operator]] +title: putlast Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]] +[putlast[]]">> +<<.operator-example 2 "[list[Days of the Week]] +[putlast:2[]]">> +<<.operator-example 3 "one two three [list[Days of the Week]] +[putlast:-3[]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/remove.tid b/editions/tw5.com/tiddlers/filters/examples/remove.tid new file mode 100644 index 000000000..b402fc04f --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/remove.tid @@ -0,0 +1,11 @@ +created: 20151018054129966 +modified: 20151108052052606 +tags: [[Operator Examples]] [[remove Operator]] +title: remove Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]] +[remove[Tuesday Wednesday Thursday]]">> +<<.operator-example 2 "[list[Days of the Week]] +[remove:3[Monday Wednesday Friday Saturday]]">> +<<.operator-example 3 "[list[Days of the Week]] +[!remove:2{Days of the Week!!list}]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/replace.tid b/editions/tw5.com/tiddlers/filters/examples/replace.tid new file mode 100644 index 000000000..3f1d024a7 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/replace.tid @@ -0,0 +1,11 @@ +created: 20151017153634099 +modified: 20151108052127454 +tags: [[Operator Examples]] [[replace Operator]] +title: replace Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "[list[Days of the Week]] Last +[replace[Wednesday]]">> +<<.operator-example 2 "[list[Days of the Week]] Last +[replace:2[Tuesday]]">> +<<.operator-example 3 "[list[Days of the Week]] [[Yesterday]] [[Today]] [[Tomorrow]] +[replace:3[Tuesday]]">> diff --git a/editions/tw5.com/tiddlers/filters/examples/sortby.tid b/editions/tw5.com/tiddlers/filters/examples/sortby.tid new file mode 100644 index 000000000..83b94a3c9 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/examples/sortby.tid @@ -0,0 +1,11 @@ +created: 20151018123433917 +modified: 20151108052158811 +tags: [[Operator Examples]] [[sortby Operator]] +title: sortby Operator (Examples) +type: text/vnd.tiddlywiki + +<<.using-days-of-week>> + +<<.operator-example 1 "10 6 4 9 3 2 8 +[sortby[1 2 3 4 5 6 7 8 9 10]]">> +<<.operator-example 2 "Friday Tuesday Monday Thursday Sunday +[sortby{Days of the Week!!list}]">> +<<.operator-example 3 "1 Mon 5 Fri 4 Tue Sun 2 +[sortby{Days of the Week!!short}]">> diff --git a/editions/tw5.com/tiddlers/filters/move.tid b/editions/tw5.com/tiddlers/filters/move.tid new file mode 100644 index 000000000..313e3722e --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/move.tid @@ -0,0 +1,14 @@ +caption: move +created: 20151022123413501 +modified: 20151108082424017 +op-input: a list of items +op-output: re-ordered list of items +op-parameter: the list item to be used as a marker +op-parameter-name: marker +op-purpose: move marker N places in the list +op-suffix: an integer N, defaulting to 1 +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: move Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "move">> diff --git a/editions/tw5.com/tiddlers/filters/prepend.tid b/editions/tw5.com/tiddlers/filters/prepend.tid new file mode 100644 index 000000000..5f6cc102d --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/prepend.tid @@ -0,0 +1,15 @@ +caption: prepend +created: 20151017145439292 +modified: 20151108051701587 +op-input: a list of items +op-neg-output: a list with items prepended from the tail of the operand array +op-output: a list with items prepended from the head of the operand array +op-parameter: the array of items to be prepended to the head of the list +op-parameter-name: list +op-purpose: prepend a range of items from an array to the list +op-suffix: an integer N, defaulting to all +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: prepend Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "prepend">> diff --git a/editions/tw5.com/tiddlers/filters/putafter.tid b/editions/tw5.com/tiddlers/filters/putafter.tid new file mode 100644 index 000000000..771a31687 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/putafter.tid @@ -0,0 +1,14 @@ +caption: putafter +created: 20151017144307862 +modified: 20151108051805137 +op-input: a list of items +op-output: re-ordered list of items +op-parameter: the list item to be used as a marker +op-parameter-name: marker +op-purpose: move N trailing items after the marker +op-suffix: an integer N, defaulting to 1 +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: putafter Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "putafter">> diff --git a/editions/tw5.com/tiddlers/filters/putbefore.tid b/editions/tw5.com/tiddlers/filters/putbefore.tid new file mode 100644 index 000000000..3c4441abc --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/putbefore.tid @@ -0,0 +1,12 @@ +caption: putbefore +op-input: a [[selection of titles|Title Selection]] +op-output: the first <<.place N>> input titles +op-parameter: an integer, defaulting to 1 +op-parameter-name: marker +op-purpose: move N trailing items before the marker +op-suffix: an integer N, defaulting to 1 +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: putbefore Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "putbefore">> diff --git a/editions/tw5.com/tiddlers/filters/putfirst.tid b/editions/tw5.com/tiddlers/filters/putfirst.tid new file mode 100644 index 000000000..3cf8f3dc9 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/putfirst.tid @@ -0,0 +1,13 @@ +caption: putfirst +created: 20151017144802884 +modified: 20151108051922934 +op-input: a list of items +op-output: re-ordered list of items +op-parameter: ignored +op-purpose: move N trailing items to the head of the list +op-suffix: an integer N, defaulting to 1 +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: putfirst Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "putfirst">> diff --git a/editions/tw5.com/tiddlers/filters/putlast.tid b/editions/tw5.com/tiddlers/filters/putlast.tid new file mode 100644 index 000000000..d40061f83 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/putlast.tid @@ -0,0 +1,13 @@ +caption: putlast +created: 20151017144822139 +modified: 20151108052000425 +op-input: a list of items +op-output: re-ordered list of items +op-parameter: ignored +op-purpose: move N leading items to the tail of the list +op-suffix: an integer N, defaulting to 1 +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: putlast Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "putlast">> diff --git a/editions/tw5.com/tiddlers/filters/remove.tid b/editions/tw5.com/tiddlers/filters/remove.tid new file mode 100644 index 000000000..172948345 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/remove.tid @@ -0,0 +1,16 @@ +caption: remove +created: 20151017144531676 +modified: 20151108052035773 +op-input: a list of items +op-neg-output: items removed from current list that appear at the tail of the operand array +op-output: items removed from current list that appear at the head of the operand array +op-parameter: an array of items to remove +op-parameter-name: array +op-prefix: causes N items from the end of the array to be removed +op-purpose: remove a range of items in an array from the current list +op-suffix: an integer N, defaulting to all +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: remove Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "remove">> diff --git a/editions/tw5.com/tiddlers/filters/replace.tid b/editions/tw5.com/tiddlers/filters/replace.tid new file mode 100644 index 000000000..cda41d6a0 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/replace.tid @@ -0,0 +1,14 @@ +caption: replace +created: 20151017144531676 +modified: 20151108052110493 +op-input: a list of items +op-output: re-ordered list of items +op-parameter: the item to be used as a marker +op-parameter-name: marker +op-purpose: replace marker with N trailing items +op-suffix: an integer N, defaulting to 1 +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: replace Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "replace">> diff --git a/editions/tw5.com/tiddlers/filters/sortby.tid b/editions/tw5.com/tiddlers/filters/sortby.tid new file mode 100644 index 000000000..d6555ae4d --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/sortby.tid @@ -0,0 +1,13 @@ +caption: sortby +created: 20151017145021839 +modified: 20151108052142057 +op-input: a list of items +op-output: all items sorted by lookup list +op-parameter: a list specifying the order in which to sort the current list +op-parameter-name: order +op-purpose: sort the current list in the order of the list referenced in the operand +tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]] +title: sortby Operator +type: text/vnd.tiddlywiki + +<<.operator-examples "sortby">> diff --git a/editions/tw5.com/tiddlers/filters/syntax/FilterRun.tid b/editions/tw5.com/tiddlers/filters/syntax/FilterRun.tid index 640891906..e3843b492 100644 --- a/editions/tw5.com/tiddlers/filters/syntax/FilterRun.tid +++ b/editions/tw5.com/tiddlers/filters/syntax/FilterRun.tid @@ -11,7 +11,7 @@ type: text/vnd.tiddlywiki | '"' [:{/'anything but "'/}] '"' | - "'" [:{/"anything but '"/}] '"' + "'" [:{/"anything but '"/}] "'" ) """/> diff --git a/editions/tw5.com/tiddlers/hellothere/Discover TiddlyWiki.tid b/editions/tw5.com/tiddlers/hellothere/Discover TiddlyWiki.tid index ca8d25c5c..d1b0adc64 100644 --- a/editions/tw5.com/tiddlers/hellothere/Discover TiddlyWiki.tid +++ b/editions/tw5.com/tiddlers/hellothere/Discover TiddlyWiki.tid @@ -1,5 +1,5 @@ created: 20140904121000000 -modified: 20150414072046785 +modified: 20151023165341339 tags: HelloThere title: Discover TiddlyWiki type: text/vnd.tiddlywiki @@ -13,7 +13,7 @@ You've never seen //anything// like ~TiddlyWiki. ~TiddlyWiki is: ! ~TiddlyWiki is a Tool -''~TiddlyWiki is first and foremost a tool:'' it is a free downloadable tool for capturing and organising content from the web, from your documents or from your brain. Its a tool for note-taking, bookmarking, pinning, writing, managing to-do lists and projects, collaborating, blogging, and publishing. +''~TiddlyWiki is first and foremost a tool:'' it is a free downloadable tool for capturing and organising content from the web, from your documents or from your brain. It is a tool for note-taking, bookmarking, pinning, writing, managing to-do lists and projects, collaborating, blogging, and publishing. In ~TiddlyWiki you create or paste content into notes called tiddlers, then connect your tiddlers with hyperlinks and tags. You can then quickly retrieve your notes through features such as tag pills, sidebar tabs, and ~TiddlyWiki's lightning fast search window. You can even dynamically include one tiddler's content inside another - similar to using building blocks - to create articles, lists, presentations and more. diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index 82e4601d7..3c3dc9262 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -1,6 +1,6 @@ created: 20130822170200000 list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] -modified: 20150703153725652 +modified: 20160130124109312 tags: TableOfContents title: HelloThere type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/images/New Release Banner.png b/editions/tw5.com/tiddlers/images/New Release Banner.png index f40277aef..a6a6d046e 100644 Binary files a/editions/tw5.com/tiddlers/images/New Release Banner.png and b/editions/tw5.com/tiddlers/images/New Release Banner.png differ diff --git a/editions/tw5.com/tiddlers/languages/LanguageGallery.tid b/editions/tw5.com/tiddlers/languages/LanguageGallery.tid new file mode 100644 index 000000000..437fdaa6a --- /dev/null +++ b/editions/tw5.com/tiddlers/languages/LanguageGallery.tid @@ -0,0 +1,25 @@ +created: 20151231083708980 +modified: 20151231084132703 +tags: +title: LanguageGallery +type: text/vnd.tiddlywiki + +Here is an example of using the ListWidget and the TranscludeWidget to show a grid of all language icons (ie, tiddlers tagged [[Language]] and [[Icon]]). + + + diff --git a/editions/tw5.com/tiddlers/languages/Languages.tid b/editions/tw5.com/tiddlers/languages/Languages.tid index ae4802e1d..0d65836f1 100644 --- a/editions/tw5.com/tiddlers/languages/Languages.tid +++ b/editions/tw5.com/tiddlers/languages/Languages.tid @@ -1,13 +1,17 @@ created: 20141202125500000 -modified: 20141202125500000 +modified: 20160106153341817 tags: TableOfContents title: Languages type: text/vnd.tiddlywiki -Language plugins provide translations of the core TiddlyWiki interface. +!! Language Plugins -The following languages are currently available: +The core TiddlyWiki user interface is available in over 20 languages. You can install language plugins using the plugin manager under the [[control panel|$:/ControlPanel]] ''plugins'' tab. + +You can contribute a new language to the library by learning how to [[translate TiddlyWiki into your language|Translate TiddlyWiki into your language]]. + +!! Language Editions + +For some languages, there are pre-built editions with additional translated documentation: <> - -You can contribute by learning how to [[translate TiddlyWiki into your language|Translate TiddlyWiki into your language]]. diff --git a/editions/tw5.com/tiddlers/macros/TabsMacro.tid b/editions/tw5.com/tiddlers/macros/TabsMacro.tid index c012135a2..0119afda2 100644 --- a/editions/tw5.com/tiddlers/macros/TabsMacro.tid +++ b/editions/tw5.com/tiddlers/macros/TabsMacro.tid @@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki The <<.def tabs>> [[macro|Macros]] presents a [[selection of tiddlers|Title Selection]] as a set of tabs that the user can switch between. -The tabs display the <<.field caption>> field of a tiddler if it has one, or the tiddler's title otherwise. +The tabs display the <<.field caption>> field of a tiddler if it has one, or the tiddler's title otherwise. If specified, the tabs display the <<.field tooltip>> field of a tiddler as the respective button tooltip. By default the tabs are arranged horizontally above the content. To get vertical tabs, set the <<.param class>> parameter to <<.value tc-vertical>>. diff --git a/editions/tw5.com/tiddlers/mechanisms/AlertMechanism.tid b/editions/tw5.com/tiddlers/mechanisms/AlertMechanism.tid index e1219cf53..f5b215d17 100644 --- a/editions/tw5.com/tiddlers/mechanisms/AlertMechanism.tid +++ b/editions/tw5.com/tiddlers/mechanisms/AlertMechanism.tid @@ -1,6 +1,6 @@ created: 20140213224306412 -modified: 20140213224622441 -tags: Mechanisms +modified: 20160107225720338 +tags: Mechanisms Features title: AlertMechanism type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/mechanisms/PopupMechanism.tid b/editions/tw5.com/tiddlers/mechanisms/PopupMechanism.tid index a8cc56710..60566a329 100644 --- a/editions/tw5.com/tiddlers/mechanisms/PopupMechanism.tid +++ b/editions/tw5.com/tiddlers/mechanisms/PopupMechanism.tid @@ -1,13 +1,14 @@ created: 20131212175656755 -modified: 20131212180213909 +modified: 20151223222712715 tags: Mechanisms title: PopupMechanism type: text/vnd.tiddlywiki The popup mechanism allows blocks of content to be selectively displayed and positioned with respect to an anchor. It has several parts: -* StateTiddlers to record whether a popup is currently displayed or not +* [[StateTiddlers|StateMechanism]] to record whether a popup is currently displayed or not * The RevealWidget to selectively display the popup content +** For "sticky" popups — those that don't close when clicking inside one — set the ''class'' attribute to `tc-popup-keep` * The ButtonWidget to trigger the display of the popup by setting the state tiddler appropriately diff --git a/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid b/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid index 60324a939..82b830e9e 100644 --- a/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/CodeMirror Plugin.tid @@ -1,6 +1,9 @@ +created: 20160107223435497 +list: +modified: 20160107223725809 +tags: [[Plugin Editions]] title: CodeMirror Plugin -modified: 20140922074322741 -tags: Plugins +type: text/vnd.tiddlywiki The CodeMirror plugin adds a sophisticated web-based editor to TiddlyWiki. diff --git a/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid b/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid index 45d1fe073..210be4f4e 100644 --- a/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/D3 Plugin.tid @@ -1,6 +1,9 @@ +created: 20160107223425581 +list: +modified: 20160107223725807 +tags: [[Plugin Editions]] title: D3 Plugin -modified: 20140922074322741 -tags: Plugins +type: text/vnd.tiddlywiki The D3 plugin integrates the D3 visualisation library with TiddlyWiki. diff --git a/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid b/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid index b04b1c39a..d914cfd7c 100644 --- a/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid @@ -1,6 +1,9 @@ +created: 20160107223417655 +list: +modified: 20160107223725805 +tags: [[Plugin Editions]] title: Highlight Plugin -modified: 20140922074322741 -tags: Plugins +type: text/vnd.tiddlywiki The Highlight plugin provides the ability to apply syntax colouring to text. diff --git a/editions/tw5.com/tiddlers/plugins/Installing_a_plugin_from_the_plugin_library.tid b/editions/tw5.com/tiddlers/plugins/Installing_a_plugin_from_the_plugin_library.tid new file mode 100644 index 000000000..a071fdd24 --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Installing_a_plugin_from_the_plugin_library.tid @@ -0,0 +1,17 @@ +created: 20160107222352710 +modified: 20160107224746041 +tags: Plugins +title: Installing a plugin from the plugin library +type: text/vnd.tiddlywiki + +# Create a backup of your current TiddlyWiki HTML file ([[just in case|The First Rule of Using TiddlyWiki]]) +# Open your TiddlyWiki in a browser +# Open the [[$:/ControlPanel]], click on the ''Plugins'' tab and then the ''Get more plugins'' button +# Click ''open plugin library'' to open the official plugin library +# When the library listing is loaded: +## Use the dropdown to select between ''plugins'', ''themes'' and ''languages'' +## Use the ''search'' box to search the plugin details +# Click the ''install'' button to install a plugin +# Save your TiddlyWiki +# ''Refresh the page so that TiddlyWiki loads the new plugin'' +# The plugin should now be available for use diff --git a/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid b/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid index fe6a00ebf..c76ae917c 100644 --- a/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/KaTeX Plugin.tid @@ -1,6 +1,9 @@ +created: 20160107223410181 +list: +modified: 20160107223725803 +tags: [[Plugin Editions]] title: KaTeX Plugin -modified: 20140922074322741 -tags: Plugins +type: text/vnd.tiddlywiki This plugin adds the ability to display mathematical notation written in ~LaTeX. diff --git a/editions/tw5.com/tiddlers/plugins/Manually_installing_a_plugin.tid b/editions/tw5.com/tiddlers/plugins/Manually_installing_a_plugin.tid new file mode 100644 index 000000000..ecfb8b23f --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Manually_installing_a_plugin.tid @@ -0,0 +1,13 @@ +created: 20160107222430613 +modified: 20160107222721398 +tags: Plugins +title: Manually installing a plugin +type: text/vnd.tiddlywiki + +# Create a backup of your current TiddlyWiki HTML file ([[just in case|The First Rule of Using TiddlyWiki]]) +# Open your TiddlyWiki in a browser +# In another browser window, find a link to the plugin, e.g. [[$:/plugins/tiddlywiki/example]]. You will typically find these links on the home page of the plugin (for example, http://tiddlywiki.com/plugins/tiddlywiki/katex/) +# Drag the link [[$:/plugins/tiddlywiki/example]] to the browser window containing your TiddlyWiki +# Save your TiddlyWiki +# ''Refresh the page so that TiddlyWiki loads the new plugin'' +# The plugin should now be available for use \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid b/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid index 8872b0c75..f16ffbf98 100644 --- a/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Markdown Plugin.tid @@ -1,6 +1,9 @@ +created: 20160107223401584 +list: +modified: 20160107223725801 +tags: [[Plugin Editions]] title: Markdown Plugin -modified: 20140922074322741 -tags: Plugins +type: text/vnd.tiddlywiki The Markdown plugin enables you to use tiddlers that are written in standard Markdown markup. diff --git a/editions/tw5.com/tiddlers/plugins/Plugin_Editions.tid b/editions/tw5.com/tiddlers/plugins/Plugin_Editions.tid new file mode 100644 index 000000000..7bc9d5748 --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Plugin_Editions.tid @@ -0,0 +1,9 @@ +created: 20160107223443647 +modified: 20160107223732928 +tags: Editions +title: Plugin Editions +type: text/vnd.tiddlywiki + +These editions contain simple demos of the original set of TiddlyWiki plugins. They were prepared for earlier versions of TiddlyWiki that lacked the plugin library. + +<> diff --git a/editions/tw5.com/tiddlers/plugins/Plugins.tid b/editions/tw5.com/tiddlers/plugins/Plugins.tid index 51cbc00ea..42ef97994 100644 --- a/editions/tw5.com/tiddlers/plugins/Plugins.tid +++ b/editions/tw5.com/tiddlers/plugins/Plugins.tid @@ -1,55 +1,16 @@ created: 20140910215514237 -modified: 20150313101514237 +modified: 20160107224627982 tags: Concepts TableOfContents title: Plugins type: text/vnd.tiddlywiki -! Available Plugins +Plugins in TiddlyWiki5 are used to distribute optional components that customise and extend TiddlyWiki. You can install them from the [[official plugin library|Installing a plugin from the plugin library]] or from [[community sites|Resources]]. + +{{$:/core/ui/ControlPanel/Plugins/AddPlugins}} + +Internally, plugins are a bundle of tiddlers packaged together as a single tiddler that can be installed, copied or deleted as a unit. The individual tiddlers within a plugin appear as ShadowTiddlers. See the PluginMechanism discussion for more details about how plugins are implemented internally. + +Plugins can contain JavaScript modules, style sheets, and templates. Plugins can also be used to distribute ordinary text, images or any other content. -The following plugins are distributed on tiddlywiki.com as part of the main TiddlyWiki distribution. <> - -! What is a plugin? - -A plugin in TiddlyWiki5 is a bundle of tiddlers packaged together as a single tiddler. Plugins are used to distribute optional, custom components for TiddlyWiki and also to package the core components of TiddlyWiki itself. - -The tiddlers within a plugin appear as ShadowTiddlers. - -Plugins can contain JavaScript modules, style sheets, and templates to extend the functionality of TiddlyWiki itself. Plugins can also be used to distribute ordinary text, images or other content. Plugins can be updated from their source as a unit. - -See the PluginMechanism discussion for more details about how plugins are implemented internally. - -! Installing a plugin from the plugin library - -# Create a backup of your current TiddlyWiki HTML file ([[just in case|The First Rule of Using TiddlyWiki]]) -# Open your TiddlyWiki in a browser -# Open the [[$:/ControlPanel]] and click on the ''Plugins'' tab and then the ''Add'' tab -# Click ''open plugin library'' to open the official plugin library -# When the library listing is loaded: -## Use the dropdown to select between ''plugins'', ''themes'' and ''languages'' -## Use the ''search'' box to search the plugin details -# Click the ''install'' button to install a plugin -# Save your TiddlyWiki -# ''Refresh the page so that TiddlyWiki loads the new plugin'' -# The plugin should now be available for use - -! Manually installing a plugin - -# Create a backup of your current TiddlyWiki HTML file ([[just in case|The First Rule of Using TiddlyWiki]]) -# Open your TiddlyWiki in a browser -# In another browser window, find a link to the plugin, e.g. [[$:/plugins/tiddlywiki/example]]. You will typically find these links on the home page of the plugin (for example, http://tiddlywiki.com/plugins/tiddlywiki/katex/) -# Drag the link [[$:/plugins/tiddlywiki/example]] to the browser window containing your TiddlyWiki -# Save your TiddlyWiki -# ''Refresh the page so that TiddlyWiki loads the new plugin'' -# The plugin should now be available for use - -! How to uninstall / delete a plugin - -# Create a backup of your current TiddlyWiki HTML file ([[just in case|The First Rule of Using TiddlyWiki]]) -# Open the [[$:/ControlPanel]] and go to the ''Plugins'' tab -# Click on the plugin you want to delete to open its tiddler -# Click the edit icon and then delete the tiddler -# Save your TiddlyWiki -# ''Refresh the window so that TiddlyWiki completely removes the plugin'' -# The plugin should now be deleted diff --git a/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid b/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid index 3d3d948b2..288c9d50b 100644 --- a/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid @@ -1,6 +1,9 @@ +created: 20160107223348621 +list: +modified: 20160107223725798 +tags: [[Plugin Editions]] title: Railroad Plugin -modified: 20150105134500000 -tags: Plugins +type: text/vnd.tiddlywiki {{$:/plugins/tiddlywiki/railroad/readme}} diff --git a/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid b/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid index 72afa10ee..a2c473877 100644 --- a/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/TW2Parser Plugin.tid @@ -1,6 +1,9 @@ +created: 20160107223340750 +list: +modified: 20160107223725794 +tags: [[Plugin Editions]] title: TW2Parser Plugin -modified: 20140922074322741 -tags: Plugins +type: text/vnd.tiddlywiki This experimental plugin adds the ability to display WikiText written for the original Classic version of TiddlyWiki. diff --git a/editions/tw5.com/tiddlers/plugins/Uninstalling_a_plugin.tid b/editions/tw5.com/tiddlers/plugins/Uninstalling_a_plugin.tid new file mode 100644 index 000000000..683e5f5dd --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Uninstalling_a_plugin.tid @@ -0,0 +1,13 @@ +created: 20160107222504269 +modified: 20160107222727164 +tags: Plugins +title: Uninstalling a plugin +type: text/vnd.tiddlywiki + +# Create a backup of your current TiddlyWiki HTML file ([[just in case|The First Rule of Using TiddlyWiki]]) +# Open the [[$:/ControlPanel]] and go to the ''Plugins'' tab +# Click on the plugin you want to delete to open its tiddler +# Click the edit icon and then delete the tiddler +# Save your TiddlyWiki +# ''Refresh the window so that TiddlyWiki completely removes the plugin'' +# The plugin should now be deleted \ No newline at end of file diff --git a/editions/prerelease/tiddlers/Release 5.1.10.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.10.tid similarity index 77% rename from editions/prerelease/tiddlers/Release 5.1.10.tid rename to editions/tw5.com/tiddlers/releasenotes/Release 5.1.10.tid index af1488fb2..1b58f7dc6 100644 --- a/editions/prerelease/tiddlers/Release 5.1.10.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.10.tid @@ -1,9 +1,10 @@ caption: 5.1.10 -created: 20150801123725652 -modified: 20150801123725652 +created: 20160107231609312 +modified: 20160107231609312 tags: ReleaseNotes title: Release 5.1.10 type: text/vnd.tiddlywiki +released: 20160107231609312 //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.9...v5.1.10]]// @@ -22,17 +23,13 @@ This release includes several low-level performance optimisations that should im There is a new setting in the control panel to enable performance instrumentation, making it much easier to measure and improve performance issues. -!! Résumé Builder Edition +!! New Editions -The new [[Résumé Builder Edition]] by @inmysocks is a custom edition to guide you through the process of using TiddlyWiki to create a good looking résumé (or curriculum vitæ). +Three new editions of TiddlyWiki are included in this release. These can be used as starting points for creating your own wiki for several purposes: -!! Blog Edition - -The new [[Blog Edition]] provides tools for using TiddlyWiki under Node.js to create a static HTML blog that can be published on GitHub pages (or similar). - -!! Text-Slicer Edition - -The new [[Text-Slicer Edition]] is a custom edition with tools to help advanced users slice longer texts up into individual tiddlers. +* The [[Résumé Builder Edition]] by @inmysocks is a custom edition to guide you through the process of using TiddlyWiki to create a good looking résumé (or curriculum vitæ) +* The [[Blog Edition]] provides tools for using TiddlyWiki under Node.js to create a static HTML blog that can be published on GitHub pages (or similar) +* The [[Text-Slicer Edition]] is a custom edition with tools to help advanced users slice longer texts up into individual tiddlers. !! External Text Tiddlers @@ -64,7 +61,7 @@ Revert * Added Swedish translation by @Superdos * Added Korean (Korean Republic) translation by @araname -* Improved Danish and Dutch translations +* Improved Catalan, Chinese, Danish, Dutch, French, German, Italian, Russian and Spanish translations !! Usability Improvements @@ -74,11 +71,12 @@ Revert * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/2cb6400773096b02b71c1851fb0fac5dfefbbd6f]] support for automatically linked system tiddler titles to include digits and underscore * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2c9b1ae2579f8d2452c60217aa3e153a29d32d1f]] warning when trying to use plugins designed for TiddlyWiki Classic * Upgraded to version v8.8.0 of highlight.js for the [[Highlight Plugin]] +* [[Removed|https://github.com/Jermolene/TiddlyWiki5/pull/1981]] the need to manually confirm deleting alerts +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2147]] optional tooltips to [[tabs Macro]] !! Hackability Improvements * Updated to KaTeX v0.5.1, with [[several new features|https://github.com/Khan/KaTeX/releases]] -* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c4397792f5d396288048bcc3bb4ee8e95dbc2c5e]] added [[recent Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e0aacc84d5f084ff7a53153c590fbff3d24f2e2c]] `publishFilter` to default save template * [[Allow|https://github.com/Jermolene/TiddlyWiki5/commit/7dddc925ae93725552b98bc348a07572895da96c]] ''delete'' button to be used in the tiddler view-mode toolbar * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/742161675421a942051abed01cb47c0394f4db6d]] a new [[hidden setting for keyboard shortcuts|Hidden Setting: Keyboard Shortcuts]] @@ -93,6 +91,15 @@ Revert * [[Made|https://github.com/Jermolene/TiddlyWiki5/commit/746aab2cf6bbe3c1905efd5caf80e40e23b914b0]] the tw5.com documentation available as a plugin and an edition, simplifying some scenarios for re-using it * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/0035a0046315ee0203b1adfb75efdbb0e854a7f6]] rendering of "More" sidebar tab gradients in the "Snow White" theme * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/33563d01baed4b4092fc834eb6a1df55e1671418]] option in [[control panel|$:/ControlPanel]] to enable the display of detailed performance instrumentation in the browser developer console +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/bc0cbf907063ccd484da7d56c8e42cf5e90489b8]] a LazyLoading template for all non-system tiddlers +* [[Improved|https://github.com/Jermolene/TiddlyWiki5/issues/1984]] handling of TiddlerLinks in Markdown tiddlers +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2004]] FieldManglerWidget to create the target tiddler if it does not exist +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2049]] KeyboardWidget to trigger ActionWidgets +* [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2074]] SelectWidget to support multiple selections +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/1909]] new [[days Operator]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/231d0a3dc8385fcb2173436754f00f464d7b018e]] official plugin wrappers for the JavaScript libraries [[async.js|https://github.com/caolan/async]] and [[JSZip|https://stuk.github.io/jszip/]] +* [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2037]] new ActionListopsWidget +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/791f97983e8bbbbb209cf0e7068f858dfd2d38eb]] ''rows'' attribute to EditTextWidget !! Bug Fixes @@ -114,16 +121,30 @@ Revert [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: +* [[@afeldspar|https://github.com/afeldspar]] * [[@araname|https://github.com/araname]] * [[@BramChen|https://github.com/BramChen]] * [[@danielo515|https://github.com/danielo515]] +* [[@Drakor|https://github.com/Drakor]] +* [[@erwanm|https://github.com/erwanm]] +* [[@felixhayashi|https://github.com/felixhayashi]] * [[@Evolena|https://github.com/Evolena]] * [[@hegart-dmishiv|https://github.com/hegart-dmishiv]] * [[@idoine|https://github.com/idoine]] * [[@inmysocks|https://github.com/inmysocks]] +* [[@IreneKnapp|https://github.com/IreneKnapp]] +* [[@gernert|https://github.com/gernert]] +* [[@kixam|https://github.com/kixam]] +* [[@Marxsal|https://github.com/Marxsal]] * [[@matabele|https://github.com/matabele]] +* [[@mklauber|https://github.com/mklauber]] * [[@nameanyone|https://github.com/nameanyone]] +* [[@pmario|https://github.com/pmario]] +* [[@senevoldsen90|https://github.com/senevoldsen90]] +* [[@Spangenhelm|https://github.com/Spangenhelm]] +* [[@spelufo|https://github.com/spelufo]] * [[@SuperDOS|https://github.com/SuperDOS]] * [[@tgrosinger|https://github.com/tgrosinger]] * [[@tobibeer|https://github.com/tobibeer]] +* [[@xcazin|https://github.com/xcazin]] * [[@zahlman|https://github.com/zahlman]] diff --git a/editions/tw5.com/tiddlers/releasenotes/Release 5.1.11.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.11.tid new file mode 100644 index 000000000..18eff4b38 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.11.tid @@ -0,0 +1,11 @@ +caption: 5.1.11 +created: 20160130124109312 +modified: 20160130124109312 +tags: ReleaseNotes +title: Release 5.1.11 +type: text/vnd.tiddlywiki +released: 20160130124109312 + +//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.10...v5.1.11]]// + +This is a bug-fix release for [[Release 5.1.10]] that fixes a serious issue affecting the operation of the official plugin library. diff --git a/editions/tw5.com/tiddlers/macros/if-macro.js b/editions/tw5.com/tiddlers/system/if-macro.js similarity index 100% rename from editions/tw5.com/tiddlers/macros/if-macro.js rename to editions/tw5.com/tiddlers/system/if-macro.js diff --git a/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.5.tid b/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.5.tid new file mode 100644 index 000000000..f9e30a96b --- /dev/null +++ b/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.5.tid @@ -0,0 +1,26 @@ +caption: 0.0.5 +created: 20151026171331736 +modified: 20151026171331736 +tags: TiddlyDesktopReleaseNotes +title: TiddlyDesktop Release 0.0.5 +type: text/vnd.tiddlywiki +released: 20151026 + + +{{$:/core/images/github}} Download from ~GitHub + + +[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.4...v0.0.5]] + +This is an important bug fix release. + +Please report any problems or suggestions via GitHub issues, or post to the TiddlyWiki discussion group: + +http://groups.google.com/group/TiddlyWiki + +* Upgraded to the latest stable v12.0.3 of nw.js, fixing a number of bugs in the process, including one that prevented v0.0.4 from being used successfully under Windows +** Bugs fixed: #66, #65, #61, #57, #53, #52 +* Added a warning about disrupting the backstage wiki +* Switched to using "Settings" instead of "Control Panel", to reduce confusion with TiddlyWiki's control panel +* Updated app icon +* Cleaned up TiddlyWiki build products, fixing #67 diff --git a/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.6.tid b/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.6.tid new file mode 100644 index 000000000..4c42e88af --- /dev/null +++ b/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.6.tid @@ -0,0 +1,24 @@ +caption: 0.0.6 +created: 20151029171331736 +modified: 20151029171331736 +tags: TiddlyDesktopReleaseNotes +title: TiddlyDesktop Release 0.0.6 +type: text/vnd.tiddlywiki +released: 20151029 + + +{{$:/core/images/github}} Download from ~GitHub + + +[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.5...v0.0.6]] + +A minor bug fix release. + +Please report any problems or suggestions via GitHub issues, or post to the TiddlyWiki discussion group: + +http://groups.google.com/group/TiddlyWiki + +* Added ability to drag and drop TiddlyWiki files into the wiki list window from Windows Explorer/Mac Finder +* Fixed bug triggered by moving TiddlyDesktop executable after first running it +* Added custom user agent string identifying TiddlyDesktop +** eg ``Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36 TiddlyDesktop/0.0.6`` diff --git a/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.7.tid b/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.7.tid new file mode 100644 index 000000000..0af75b7ae --- /dev/null +++ b/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.7.tid @@ -0,0 +1,25 @@ +caption: 0.0.7 +created: 20160105190019710 +modified: 20160105190302408 +released: 20151205 +tags: TiddlyDesktopReleaseNotes +title: TiddlyDesktop Release 0.0.7 +type: text/vnd.tiddlywiki + + +{{$:/core/images/github}} Download from ~GitHub + + +[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.6...v0.0.7]] + +Please report any problems or suggestions via GitHub issues, or post to the TiddlyWiki discussion group: + +http://groups.google.com/group/TiddlyWiki + + * Experimental support for "wiki folders" (the Node.js format for TiddlyWiki, where each tiddler is a separate file), including the ability to serve wiki folders over HTTP so that you can use any browser or device to access them + * Switched from representing wikis as thumbnails to favicons + * New system tray/menu icon for quick access to TiddlyDesktop + * Fixed problem with restarting after quitting with minimised windows on Windows (#77) + * Added TiddlyDesktop version number to "Help" window + +Note: Upgrading to this release will clear your list of loaded wiki files. The files themselves are not affected; you can re-add them by dragging and dropping them into the wiki list window. diff --git a/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.8.tid b/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.8.tid new file mode 100644 index 000000000..6bbf7822c --- /dev/null +++ b/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Release_0.0.8.tid @@ -0,0 +1,22 @@ +caption: 0.0.8 +created: 20160105190346176 +modified: 20160105190448153 +released: 20151206 +tags: TiddlyDesktopReleaseNotes +title: TiddlyDesktop Release 0.0.8 +type: text/vnd.tiddlywiki + + +{{$:/core/images/github}} Download from ~GitHub + + +[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.7...v0.0.8]] + +A minor bug fix release. + +Please report any problems or suggestions via GitHub issues, or post to the TiddlyWiki discussion group: + +http://groups.google.com/group/TiddlyWiki + + * Fixes crash when clicking on external links + * Added warning when attempting to remove a wiki folder window that has been opened diff --git a/editions/tw5.com/tiddlers/widgets/ActionListopsWidget.tid b/editions/tw5.com/tiddlers/widgets/ActionListopsWidget.tid new file mode 100644 index 000000000..bba6dafc6 --- /dev/null +++ b/editions/tw5.com/tiddlers/widgets/ActionListopsWidget.tid @@ -0,0 +1,127 @@ +caption: action-listops +created: 20141025120850184 +list: efg hlm pqr +modified: 20151228083329099 +myfield: +revision: 0 +tags: ActionWidgets Widgets +title: ActionListopsWidget +type: text/vnd.tiddlywiki + +\define .operator-rows(filter) +<$list filter="$filter$"> +<$link to={{!!title}}>{{!!caption}} +{{!!op-purpose}} <$list filter="[all[current]tag[Common Operators]]">{{$:/core/images/done-button}} +<$list filter="[all[current]tag[Negatable Operators]]">`!` + +\end + +\define .group-heading(_) +$_$ +\end + +! Introduction + +The ''action-listops'' widget is an [[action widget|ActionWidgets]] that manipulates user lists in any field or data index. ActionWidgets are used within triggering widgets such as the ButtonWidget. + +! Content and Attributes + +The ''action-listops'' widget is invisible. Any content within it is ignored. + +|!Attribute |!Description | +|$tiddler |The title of the tiddler whose lists are to be modified (if not provided defaults to the [[current tiddler|Current Tiddler]] | +|$field |The name of a field to be manipulated as a list (defaults to 'list') | +|$index |Optional index of a property in a [[data tiddler|DataTiddlers]] index to be manipulated as a list | +|$filter |An optional filter expression, the output of which will be saved to the field/index being manipulated | +|$subfilter |An optional subfilter expression, which takes the list being manipulated as input, and saves the modified list back to the field/index being manipulated | +|$tags |An optional subfilter expression, which takes the 'tags' field of the target tiddler as input, and saves the modified list of tags back to the 'tags' field | + +! Extended Filter Operators + +A number of [[extended filter operators|The Extended Listops Filters]] are necessary for the manipulation of lists. These operators have been designed primarily for use in subfilter expressions whereby the modified current list is returned in place of the current list. + + +<<.group-heading "Listops Operators">> + + + + + +<<.operator-rows "[tag[Filter Operators]tag[Listops Operators]tag[Order Operators]!tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> +
    OperatorPurpose
    + +! Examples + +In this example we shall populate and then clear a list in an ordinary field (myfield) of this tiddler (the default.) + +<$macrocall $name='wikitext-example-without-html' +src="""<$button> +<$action-listops $field="myfield" $subfilter="efg hlm pqr"/> +Populate 'myfield' + +<$button> +<$action-listops $field="myfield" $subfilter="abc xyz"/> +Append More Items + +<$button> +<$action-listops $field="myfield" $subfilter="-abc -hlm"/> +Remove Items + +<$button> +<$action-listops $field="myfield" $filter="[[]]"/> +Clear 'myfield' + + +<$list filter="[list[!!myfield]]"> + +"""/> + +--- +In this example we shall append and remove items from a list in an ordinary field (myfield) of this tiddler (the default) and sort the resultant list. We shall then remove some of the appended items and sort the resulting list in reverse order. + +<$macrocall $name='wikitext-example-without-html' +src="""<$button> +<$action-listops $field="myfield" $subfilter="-efg ijk xyz [[this is a title]] +[sort[]]"/> +Mangle List + +<$button> +<$action-listops $field="myfield" $subfilter="-xyz -[[this is a title]] +[!sort[]]"/> +Unmangle List + + +<$list filter="[list[!!myfield]]"> + +"""/> + +--- +In this example we shall append a few tags to the 'tags' field of this tiddler (the default.) We shall then remove some of the appended tags. + +<$macrocall $name='wikitext-example-without-html' +src="""<$button> +<$action-listops $tags="+[append{Days of the Week!!short}] $:/tag1 $:/tag2 $:/tag3"/> +Populate 'tags' + +<$button> +<$action-listops $tags="+[!remove:2{!!tags}]"/> +Remove Last Two Tags + +<$button> +<$action-listops $tags="+[!prefix[$:/]]"/> +Remove System Tags + +<$button> +<$action-listops $tags="-Mon -Tue"/> +Remove Mon and Tue + +<$button> +<$action-listops $tags="+[prefix[$:/]] ActionWidgets Widgets"/> +Remove User Tags + +<$button> +<$action-listops $tags="+[[]] ActionWidgets Widgets"/> +Clear Tags + + +<$list filter="[list[!!tags]]"> + +"""/> diff --git a/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid b/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid index 3e40b75e0..28c1f6822 100644 --- a/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid @@ -37,4 +37,14 @@ The content of the `<$button>` widget is displayed within the button. |tag |An optional html tag to use instead of the default "button" | |default |Default value if `set` tiddler is missing for testing against `setTo` to determine `selectedClass` | -''Tip:'' Set ''class'' to `tc-btn-invisible tc-tiddlylink` to have a button look like an internal link. \ No newline at end of file +''Note:'' In almost all other cases where a TextReference is used as a widget attribute, it will be placed between curly brackets, to [[transclude|Transclusion in WikiText]] the value currently stored there. However, when we use a TextReference as the value of a button widget's `set` attribute, we are referencing //the storage location itself//, rather than the value stored there, so we do ''not'' use curly brackets there. //Example:// we could code a button widget that sets the `caption` field of TiddlerA to be the same as that of TiddlerB as: + +``` +<$button set="TiddlerA!!caption" setTo={{TiddlerB!!caption}} > + +Press me! + + +``` + +''Tip:'' Set ''class'' to `tc-btn-invisible tc-tiddlylink` to have a button look like an internal link. diff --git a/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid b/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid index 51042756e..b4e7c3c31 100644 --- a/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid @@ -1,8 +1,9 @@ -title: EditTextWidget -created: 201310241419 -modified: 20150220162131000 -tags: Widgets caption: edit-text +created: 20131024141900000 +modified: 20151224143914772 +tags: Widgets +title: EditTextWidget +type: text/vnd.tiddlywiki ! Introduction @@ -28,6 +29,7 @@ The content of the `<$edit-text>` widget is ignored. |size |The size of the input field (in characters) | |autoHeight |Either "yes" or "no" to specify whether to automatically resize `textarea` editors to fit their content (defaults to "yes") | |minHeight |Minimum height for automatically resized `textarea` editors, specified in CSS length units such as "px", "em" or "%" | +|rows|Sets the rows attribute of a generated textarea | ! Notes diff --git a/editions/tw5.com/tiddlers/widgets/FieldMangler Widget (Examples).tid b/editions/tw5.com/tiddlers/widgets/FieldMangler Widget (Examples).tid index a49fbf82a..54c4fb621 100644 --- a/editions/tw5.com/tiddlers/widgets/FieldMangler Widget (Examples).tid +++ b/editions/tw5.com/tiddlers/widgets/FieldMangler Widget (Examples).tid @@ -1,7 +1,7 @@ created: 20150706160301163 modified: 20150706172915783 tags: [[Widget Examples]] FieldManglerWidget -title: FieldMangler Widget Example +title: FieldMangler Widget (Examples) type: text/vnd.tiddlywiki <$macrocall $name=".example" n="1" diff --git a/editions/tw5.com/tiddlers/widgets/KeyboardWidget.tid b/editions/tw5.com/tiddlers/widgets/KeyboardWidget.tid index e69b59932..69a784bff 100644 --- a/editions/tw5.com/tiddlers/widgets/KeyboardWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/KeyboardWidget.tid @@ -1,13 +1,13 @@ caption: keyboard created: 20140302192136805 -modified: 20150514091459257 +modified: 20151224141005939 tags: Widgets title: KeyboardWidget type: text/vnd.tiddlywiki ! Introduction -The keyboard widget allows [[Messages]] to be generated in response to key presses. +The keyboard widget allows ActionWidgets to be triggered by specific key combinations. There is also a shorthand for generating [[Messages]]. ! Content and Attributes diff --git a/editions/tw5.com/tiddlers/widgets/ListopsData.tid b/editions/tw5.com/tiddlers/widgets/ListopsData.tid new file mode 100644 index 000000000..5b8d062be --- /dev/null +++ b/editions/tw5.com/tiddlers/widgets/ListopsData.tid @@ -0,0 +1,7 @@ +created: 20151017094630847 +daysoftheweek: four three Fri Thu Wed Tue Mon +modified: 20151108041839747 +title: ListopsData +type: application/x-tiddler-dictionary + +DataIndex: diff --git a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid index def34c3f4..18e1f6490 100644 --- a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid @@ -1,9 +1,9 @@ +caption: reveal created: 20131024141900000 -modified: 20150518163239603 +modified: 20151223222838652 tags: Widgets title: RevealWidget type: text/vnd.tiddlywiki -caption: reveal ! Introduction @@ -22,7 +22,7 @@ The content of the `<$reveal>` widget is displayed according to the rules given |tag |Overrides the default HTML element tag (`
    ` in block mode or `` in inline mode) | |type |The type of matching performed: ''match'', ''nomatch'' or ''popup'' | |text |The text to match when the type is ''match'' and ''nomatch'' | -|class |An optional CSS class name to be assigned to the HTML element| +|class |An optional CSS class name to be assigned to the HTML element
    » Set to `tc-popup-keep` to make a popup "sticky", so it won't close when you click inside of it| |style |An optional CSS style attribute to be assigned to the HTML element | |position |The position used for the popup when the type is ''popup''. Can be ''left'', ''above'', ''aboveright'', ''right'', ''belowleft'' or ''below'' | |default |Default value to use when the state tiddler is missing | diff --git a/editions/tw5.com/tiddlers/widgets/SelectWidget.tid b/editions/tw5.com/tiddlers/widgets/SelectWidget.tid index f57c8a103..f8db9617f 100644 --- a/editions/tw5.com/tiddlers/widgets/SelectWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/SelectWidget.tid @@ -10,6 +10,8 @@ type: text/vnd.tiddlywiki The select widget displays a popup menu based on a [[HTML select element|https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select]]. The popup (or dropdown) contains a list of items defined by `` elements. Every time the user selects a new value in the menu, the selected value is written to the text of a specified tiddler field or index. If the tiddler value changes the menu is automatically updated to reflect the new value. +In multiple selection mode, the list of selected values is bound to the specified tiddler field or index. Browsers generally use the ctrl or cmd keys for multiple selection. + For example, this select widget displays a list of the tags in this wiki: <$macrocall $name="wikitext-example-without-html" src="<$select tiddler=<> default='HelloThere'> @@ -34,7 +36,8 @@ The content of the `<$select>` widget should be one or more HTML `