mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-12-25 17:40:29 +00:00
Merge branch 'master' into parameterised-transclusions
This commit is contained in:
commit
31f4c1f6af
4
core/images/layout-button.tid
Executable file
4
core/images/layout-button.tid
Executable file
@ -0,0 +1,4 @@
|
||||
title: $:/core/images/layout-button
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg width="22pt" height="22pt" class="tc-image-layout-button tc-image-button" viewBox="0 0 24 24" stroke-width="1" stroke="none"><path d="M0 0h24v24H0z" fill="none"/><rect x="2" y="2" width="7" height="7" rx="2"/><rect x="2" y="13" width="7" height="9" rx="2"/><rect x="12" y="2" width="10" height="20" rx="2"/></svg>
|
@ -59,6 +59,8 @@ Home/Caption: home
|
||||
Home/Hint: Open the default tiddlers
|
||||
Language/Caption: language
|
||||
Language/Hint: Choose the user interface language
|
||||
LayoutSwitcher/Hint: Open layout switcher
|
||||
LayoutSwitcher/Caption: layout
|
||||
Manager/Caption: tiddler manager
|
||||
Manager/Hint: Open tiddler manager
|
||||
More/Caption: more
|
||||
|
18
core/language/en-GB/Help/commands.tid
Normal file
18
core/language/en-GB/Help/commands.tid
Normal file
@ -0,0 +1,18 @@
|
||||
title: $:/language/Help/commands
|
||||
description: Run commands returned from a filter
|
||||
|
||||
Sequentially run the command tokens returned from a filter
|
||||
|
||||
```
|
||||
--commands <filter>
|
||||
```
|
||||
|
||||
Examples
|
||||
|
||||
```
|
||||
--commands "[enlist{$:/build-commands-as-text}]"
|
||||
```
|
||||
|
||||
```
|
||||
--commands "[{$:/build-commands-as-json}jsonindexes[]] :map[{$:/build-commands-as-json}jsonget<currentTiddler>]"
|
||||
```
|
42
core/modules/commands/commands.js
Normal file
42
core/modules/commands/commands.js
Normal file
@ -0,0 +1,42 @@
|
||||
/*\
|
||||
title: $:/core/modules/commands/commands.js
|
||||
type: application/javascript
|
||||
module-type: command
|
||||
|
||||
Runs the commands returned from a filter
|
||||
|
||||
\*/
|
||||
|
||||
(function() {
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.info = {
|
||||
name: "commands",
|
||||
synchronous: true
|
||||
};
|
||||
|
||||
var Command = function(params, commander) {
|
||||
this.params = params;
|
||||
this.commander = commander;
|
||||
};
|
||||
|
||||
Command.prototype.execute = function() {
|
||||
// Parse the filter
|
||||
var filter = this.params[0];
|
||||
if(!filter) {
|
||||
return "No filter specified";
|
||||
}
|
||||
var commands = this.commander.wiki.filterTiddlers(filter)
|
||||
if(commands.length === 0) {
|
||||
return "No tiddlers found for filter '" + filter + "'";
|
||||
}
|
||||
this.commander.addCommandTokens(commands);
|
||||
return null;
|
||||
};
|
||||
|
||||
exports.Command = Command;
|
||||
|
||||
})();
|
@ -298,7 +298,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
|
||||
Propogate keydown events to our container for the keyboard widgets benefit
|
||||
*/
|
||||
EditTextWidget.prototype.propogateKeydownEvent = function(event) {
|
||||
var newEvent = this.cloneEvent(event,["keyCode","which","metaKey","ctrlKey","altKey","shiftKey"]);
|
||||
var newEvent = this.cloneEvent(event,["keyCode","code","which","key","metaKey","ctrlKey","altKey","shiftKey"]);
|
||||
return !this.parentDomNode.dispatchEvent(newEvent);
|
||||
};
|
||||
|
||||
|
@ -12,6 +12,8 @@ Various static DOM-related utility functions.
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var Popup = require("$:/core/modules/utils/dom/popup.js");
|
||||
|
||||
/*
|
||||
Determines whether element 'a' contains element 'b'
|
||||
Code thanks to John Resig, http://ejohn.org/blog/comparing-document-position/
|
||||
@ -294,8 +296,21 @@ exports.collectDOMVariables = function(selectedNode,domNode,event) {
|
||||
});
|
||||
|
||||
if(selectedNode.offsetLeft) {
|
||||
// Add a variable with a popup coordinate string for the selected node
|
||||
variables["tv-popup-coords"] = "(" + selectedNode.offsetLeft + "," + selectedNode.offsetTop +"," + selectedNode.offsetWidth + "," + selectedNode.offsetHeight + ")";
|
||||
// Add variables with a (relative and absolute) popup coordinate string for the selected node
|
||||
var nodeRect = {
|
||||
left: selectedNode.offsetLeft,
|
||||
top: selectedNode.offsetTop,
|
||||
width: selectedNode.offsetWidth,
|
||||
height: selectedNode.offsetHeight
|
||||
};
|
||||
variables["tv-popup-coords"] = Popup.buildCoordinates(Popup.coordinatePrefix.csOffsetParent,nodeRect);
|
||||
|
||||
var absRect = $tw.utils.extend({}, nodeRect);
|
||||
for (var currentNode = selectedNode.offsetParent; currentNode; currentNode = currentNode.offsetParent) {
|
||||
absRect.left += currentNode.offsetLeft;
|
||||
absRect.top += currentNode.offsetTop;
|
||||
}
|
||||
variables["tv-popup-abs-coords"] = Popup.buildCoordinates(Popup.coordinatePrefix.csAbsolute,absRect);
|
||||
|
||||
// Add variables for offset of selected node
|
||||
variables["tv-selectednode-posx"] = selectedNode.offsetLeft.toString();
|
||||
|
@ -26,6 +26,8 @@ Display a modal dialogue
|
||||
options: see below
|
||||
Options include:
|
||||
downloadLink: Text of a big download link to include
|
||||
event: widget event
|
||||
variables: from event.paramObject
|
||||
*/
|
||||
Modal.prototype.display = function(title,options) {
|
||||
options = options || {};
|
||||
@ -209,6 +211,10 @@ Modal.prototype.display = function(title,options) {
|
||||
headerWidgetNode.addEventListener("tm-close-tiddler",closeHandler,false);
|
||||
bodyWidgetNode.addEventListener("tm-close-tiddler",closeHandler,false);
|
||||
footerWidgetNode.addEventListener("tm-close-tiddler",closeHandler,false);
|
||||
// Whether to close the modal dialog when the mask (area outside the modal) is clicked
|
||||
if(tiddler.fields && (tiddler.fields["mask-closable"] === "yes" || tiddler.fields["mask-closable"] === "true")) {
|
||||
modalBackdrop.addEventListener("click",closeHandler,false);
|
||||
}
|
||||
// Set the initial styles for the message
|
||||
$tw.utils.setStyle(modalBackdrop,[
|
||||
{opacity: "0"}
|
||||
|
@ -22,6 +22,19 @@ var Popup = function(options) {
|
||||
this.popups = []; // Array of {title:,wiki:,domNode:} objects
|
||||
};
|
||||
|
||||
/*
|
||||
Global regular expression for parsing the location of a popup.
|
||||
This is also used by the Reveal widget.
|
||||
*/
|
||||
exports.popupLocationRegExp = /^(@?)\((-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+)\)$/
|
||||
|
||||
/*
|
||||
Objekt containing the available prefixes for coordinates build with the `buildCoordinates` function:
|
||||
- csOffsetParent: Uses a coordinate system based on the offset parent (no prefix).
|
||||
- csAbsolute: Use an absolute coordinate system (prefix "@").
|
||||
*/
|
||||
exports.coordinatePrefix = { csOffsetParent: "", csAbsolute: "@" }
|
||||
|
||||
/*
|
||||
Trigger a popup open or closed. Parameters are in a hashmap:
|
||||
title: title of the tiddler where the popup details are stored
|
||||
@ -136,8 +149,17 @@ Popup.prototype.show = function(options) {
|
||||
height: options.domNode.offsetHeight
|
||||
};
|
||||
}
|
||||
var popupRect = "(" + rect.left + "," + rect.top + "," +
|
||||
rect.width + "," + rect.height + ")";
|
||||
if(options.absolute && options.domNode) {
|
||||
// Walk the offsetParent chain and add the position of the offsetParents to make
|
||||
// the position absolute to the root node of the page.
|
||||
var currentNode = options.domNode.offsetParent;
|
||||
while(currentNode) {
|
||||
rect.left += currentNode.offsetLeft;
|
||||
rect.top += currentNode.offsetTop;
|
||||
currentNode = currentNode.offsetParent;
|
||||
}
|
||||
}
|
||||
var popupRect = exports.buildCoordinates(options.absolute?exports.coordinatePrefix.csAbsolute:exports.coordinatePrefix.csOffsetParent,rect);
|
||||
if(options.noStateReference) {
|
||||
options.wiki.setText(options.title,"text",undefined,popupRect);
|
||||
} else {
|
||||
@ -172,13 +194,54 @@ Popup.prototype.cancel = function(level) {
|
||||
};
|
||||
|
||||
/*
|
||||
Returns true if the specified title and text identifies an active popup
|
||||
Returns true if the specified title and text identifies an active popup.
|
||||
This function is safe to call, even if the popup class was not initialized.
|
||||
*/
|
||||
Popup.prototype.readPopupState = function(text) {
|
||||
var popupLocationRegExp = /^\((-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+)\)$/;
|
||||
return popupLocationRegExp.test(text);
|
||||
exports.readPopupState = function(text) {
|
||||
return exports.popupLocationRegExp.test(text);
|
||||
};
|
||||
|
||||
/*
|
||||
Parses a coordinate string in the format `(x,y,w,h)` or `@(x,y,z,h)` and returns
|
||||
an object containing the position, width and height. The absolute-Mark is boolean
|
||||
value that indicates the coordinate system of the coordinates. If they start with
|
||||
an `@`, `absolute` is set to true and the coordinates are relative to the root
|
||||
element. If the initial `@` is missing, they are relative to the offset parent
|
||||
element and `absoute` is false.
|
||||
This function is safe to call, even if the popup class was not initialized.
|
||||
*/
|
||||
exports.parseCoordinates = function(coordinates) {
|
||||
var match = exports.popupLocationRegExp.exec(coordinates);
|
||||
if(match) {
|
||||
return {
|
||||
absolute: (match[1] === "@"),
|
||||
left: parseFloat(match[2]),
|
||||
top: parseFloat(match[3]),
|
||||
width: parseFloat(match[4]),
|
||||
height: parseFloat(match[5])
|
||||
};
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Builds a coordinate string from a coordinate system identifier and an object
|
||||
containing the left, top, width and height values.
|
||||
Use constants defined in coordinatePrefix to specify a coordinate system.
|
||||
If one of the parameters is invalid for building a coordinate string `(0,0,0,0)`
|
||||
will be returned.
|
||||
This function is safe to call, even if the popup class was not initialized.
|
||||
*/
|
||||
exports.buildCoordinates = function(prefix,position) {
|
||||
var coord = prefix + "(" + position.left + "," + position.top + "," + position.width + "," + position.height + ")";
|
||||
if (exports.popupLocationRegExp.test(coord)) {
|
||||
return coord;
|
||||
} else {
|
||||
return "(0,0,0,0)";
|
||||
}
|
||||
}
|
||||
|
||||
exports.Popup = Popup;
|
||||
|
||||
})();
|
||||
|
@ -15,10 +15,11 @@ function LinkedList() {
|
||||
|
||||
LinkedList.prototype.clear = function() {
|
||||
// LinkedList performs the duty of both the head and tail node
|
||||
this.next = Object.create(null);
|
||||
this.prev = Object.create(null);
|
||||
this.first = undefined;
|
||||
this.last = undefined;
|
||||
this.next = new LLMap();
|
||||
this.prev = new LLMap();
|
||||
// Linked list head initially points to itself
|
||||
this.next.set(null, null);
|
||||
this.prev.set(null, null);
|
||||
this.length = 0;
|
||||
};
|
||||
|
||||
@ -41,28 +42,29 @@ Push behaves like array.push and accepts multiple string arguments. But it also
|
||||
accepts a single array argument too, to be consistent with its other methods.
|
||||
*/
|
||||
LinkedList.prototype.push = function(/* values */) {
|
||||
var values = arguments;
|
||||
var i, values = arguments;
|
||||
if($tw.utils.isArray(values[0])) {
|
||||
values = values[0];
|
||||
}
|
||||
for(var i = 0; i < values.length; i++) {
|
||||
for(i = 0; i < values.length; i++) {
|
||||
_assertString(values[i]);
|
||||
}
|
||||
for(var i = 0; i < values.length; i++) {
|
||||
for(i = 0; i < values.length; i++) {
|
||||
_linkToEnd(this,values[i]);
|
||||
}
|
||||
return this.length;
|
||||
};
|
||||
|
||||
LinkedList.prototype.pushTop = function(value) {
|
||||
var t;
|
||||
if($tw.utils.isArray(value)) {
|
||||
for (var t=0; t<value.length; t++) {
|
||||
for (t=0; t<value.length; t++) {
|
||||
_assertString(value[t]);
|
||||
}
|
||||
for(var t=0; t<value.length; t++) {
|
||||
for(t=0; t<value.length; t++) {
|
||||
_removeOne(this,value[t]);
|
||||
}
|
||||
for(var t=0; t<value.length; t++) {
|
||||
for(t=0; t<value.length; t++) {
|
||||
_linkToEnd(this,value[t]);
|
||||
}
|
||||
} else {
|
||||
@ -74,11 +76,11 @@ LinkedList.prototype.pushTop = function(value) {
|
||||
|
||||
LinkedList.prototype.each = function(callback) {
|
||||
var visits = Object.create(null),
|
||||
value = this.first;
|
||||
while(value !== undefined) {
|
||||
value = this.next.get(null);
|
||||
while(value !== null) {
|
||||
callback(value);
|
||||
var next = this.next[value];
|
||||
if(typeof next === "object") {
|
||||
var next = this.next.get(value);
|
||||
if(Array.isArray(next)) {
|
||||
var i = visits[value] || 0;
|
||||
visits[value] = i+1;
|
||||
value = next[i];
|
||||
@ -105,87 +107,79 @@ LinkedList.prototype.makeTiddlerIterator = function(wiki) {
|
||||
};
|
||||
|
||||
function _removeOne(list,value) {
|
||||
var prevEntry = list.prev[value],
|
||||
nextEntry = list.next[value],
|
||||
var nextEntry = list.next.get(value);
|
||||
if(nextEntry === undefined) {
|
||||
return;
|
||||
}
|
||||
var prevEntry = list.prev.get(value),
|
||||
prev = prevEntry,
|
||||
next = nextEntry;
|
||||
if(typeof nextEntry === "object") {
|
||||
next = nextEntry,
|
||||
ref;
|
||||
if(Array.isArray(nextEntry)) {
|
||||
next = nextEntry[0];
|
||||
prev = prevEntry[0];
|
||||
}
|
||||
// Relink preceding element.
|
||||
if(list.first === value) {
|
||||
list.first = next
|
||||
} else if(prev !== undefined) {
|
||||
if(typeof list.next[prev] === "object") {
|
||||
if(next === undefined) {
|
||||
// Must have been last, and 'i' would be last element.
|
||||
list.next[prev].pop();
|
||||
} else {
|
||||
var i = list.next[prev].indexOf(value);
|
||||
list.next[prev][i] = next;
|
||||
}
|
||||
} else {
|
||||
list.next[prev] = next;
|
||||
}
|
||||
ref = list.next.get(prev);
|
||||
if(Array.isArray(ref)) {
|
||||
var i = ref.indexOf(value);
|
||||
ref[i] = next;
|
||||
} else {
|
||||
return;
|
||||
list.next.set(prev,next);
|
||||
}
|
||||
|
||||
// Now relink following element
|
||||
// Check "next !== undefined" rather than "list.last === value" because
|
||||
// we need to know if the FIRST value is the last in the list, not the last.
|
||||
if(next !== undefined) {
|
||||
if(typeof list.prev[next] === "object") {
|
||||
// Nothing special needed for first since list.prev[next][0] will be 'undefined'
|
||||
var i = list.prev[next].indexOf(value);
|
||||
list.prev[next][i] = prev;
|
||||
} else {
|
||||
list.prev[next] = prev;
|
||||
}
|
||||
ref = list.prev.get(next);
|
||||
if(Array.isArray(ref)) {
|
||||
var i = ref.indexOf(value);
|
||||
ref[i] = prev;
|
||||
} else {
|
||||
list.last = prev;
|
||||
list.prev.set(next,prev);
|
||||
}
|
||||
|
||||
// Delink actual value. If it uses arrays, just remove first entries.
|
||||
if(typeof nextEntry === "object") {
|
||||
if(Array.isArray(nextEntry) && nextEntry.length > 1) {
|
||||
nextEntry.shift();
|
||||
prevEntry.shift();
|
||||
} else {
|
||||
list.next[value] = undefined;
|
||||
list.prev[value] = undefined;
|
||||
list.next.set(value,undefined);
|
||||
list.prev.set(value,undefined);
|
||||
}
|
||||
list.length -= 1;
|
||||
};
|
||||
|
||||
// Sticks the given node onto the end of the list.
|
||||
function _linkToEnd(list,value) {
|
||||
if(list.first === undefined) {
|
||||
list.first = value;
|
||||
var old = list.next.get(value);
|
||||
var last = list.prev.get(null);
|
||||
// Does it already exists?
|
||||
if(old !== undefined) {
|
||||
if(!Array.isArray(old)) {
|
||||
old = [old];
|
||||
list.next.set(value,old);
|
||||
list.prev.set(value,[list.prev.get(value)]);
|
||||
}
|
||||
old.push(null);
|
||||
list.prev.get(value).push(last);
|
||||
} else {
|
||||
// Does it already exists?
|
||||
if(list.first === value || list.prev[value] !== undefined) {
|
||||
if(typeof list.next[value] === "string") {
|
||||
list.next[value] = [list.next[value]];
|
||||
list.prev[value] = [list.prev[value]];
|
||||
} else if(typeof list.next[value] === "undefined") {
|
||||
// list.next[value] must be undefined.
|
||||
// Special case. List already has 1 value. It's at the end.
|
||||
list.next[value] = [];
|
||||
list.prev[value] = [list.prev[value]];
|
||||
}
|
||||
list.prev[value].push(list.last);
|
||||
// We do NOT append a new value onto "next" list. Iteration will
|
||||
// figure out it must point to End-of-List on its own.
|
||||
} else {
|
||||
list.prev[value] = list.last;
|
||||
}
|
||||
// Make the old last point to this new one.
|
||||
if(typeof list.next[list.last] === "object") {
|
||||
list.next[list.last].push(value);
|
||||
} else {
|
||||
list.next[list.last] = value;
|
||||
}
|
||||
list.next.set(value,null);
|
||||
list.prev.set(value,last);
|
||||
}
|
||||
// Make the old last point to this new one.
|
||||
if(value !== last) {
|
||||
var array = list.next.get(last);
|
||||
if(Array.isArray(array)) {
|
||||
array[array.length-1] = value;
|
||||
} else {
|
||||
list.next.set(last,value);
|
||||
}
|
||||
list.prev.set(null,value);
|
||||
} else {
|
||||
// Edge case, the pushed value was already the last value.
|
||||
// The second-to-last nextPtr for that value must point to itself now.
|
||||
var array = list.next.get(last);
|
||||
array[array.length-2] = value;
|
||||
}
|
||||
list.last = value;
|
||||
list.length += 1;
|
||||
};
|
||||
|
||||
@ -195,6 +189,20 @@ function _assertString(value) {
|
||||
}
|
||||
};
|
||||
|
||||
var LLMap = function() {
|
||||
this.map = Object.create(null);
|
||||
};
|
||||
|
||||
// Just a wrapper so our object map can also accept null.
|
||||
LLMap.prototype = {
|
||||
set: function(key,val) {
|
||||
(key === null) ? (this.null = val) : (this.map[key] = val);
|
||||
},
|
||||
get: function(key) {
|
||||
return (key === null) ? this.null : this.map[key];
|
||||
}
|
||||
};
|
||||
|
||||
exports.LinkedList = LinkedList;
|
||||
|
||||
})();
|
||||
|
@ -14,6 +14,8 @@ Action widget to trigger a popup.
|
||||
|
||||
var Widget = require("$:/core/modules/widgets/widget.js").widget;
|
||||
|
||||
var Popup = require("$:/core/modules/utils/dom/popup.js");
|
||||
|
||||
var ActionPopupWidget = function(parseTreeNode,options) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
};
|
||||
@ -57,20 +59,20 @@ Invoke the action associated with this widget
|
||||
*/
|
||||
ActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {
|
||||
// Trigger the popup
|
||||
var popupLocationRegExp = /^\((-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+)\)$/,
|
||||
match = popupLocationRegExp.exec(this.actionCoords || "");
|
||||
if(match) {
|
||||
var coordinates = Popup.parseCoordinates(this.actionCoords || "");
|
||||
if(coordinates) {
|
||||
$tw.popup.triggerPopup({
|
||||
domNode: null,
|
||||
domNodeRect: {
|
||||
left: parseFloat(match[1]),
|
||||
top: parseFloat(match[2]),
|
||||
width: parseFloat(match[3]),
|
||||
height: parseFloat(match[4])
|
||||
left: coordinates.left,
|
||||
top: coordinates.top,
|
||||
width: coordinates.width,
|
||||
height: coordinates.height
|
||||
},
|
||||
title: this.actionState,
|
||||
wiki: this.wiki,
|
||||
floating: this.floating
|
||||
floating: this.floating,
|
||||
absolute: coordinates.absolute
|
||||
});
|
||||
} else {
|
||||
$tw.popup.cancel(0);
|
||||
|
@ -14,6 +14,8 @@ Button widget
|
||||
|
||||
var Widget = require("$:/core/modules/widgets/widget.js").widget;
|
||||
|
||||
var Popup = require("$:/core/modules/utils/dom/popup.js");
|
||||
|
||||
var ButtonWidget = function(parseTreeNode,options) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
};
|
||||
@ -147,7 +149,7 @@ ButtonWidget.prototype.isSelected = function() {
|
||||
|
||||
ButtonWidget.prototype.isPoppedUp = function() {
|
||||
var tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);
|
||||
var result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;
|
||||
var result = tiddler && tiddler.fields.text ? Popup.readPopupState(tiddler.fields.text) : false;
|
||||
return result;
|
||||
};
|
||||
|
||||
@ -173,6 +175,7 @@ ButtonWidget.prototype.triggerPopup = function(event) {
|
||||
if(this.popupTitle) {
|
||||
$tw.popup.triggerPopup({
|
||||
domNode: this.domNodes[0],
|
||||
absolute: (this.popupAbsCoords === "yes"),
|
||||
title: this.popupTitle,
|
||||
wiki: this.wiki,
|
||||
noStateReference: true
|
||||
@ -180,6 +183,7 @@ ButtonWidget.prototype.triggerPopup = function(event) {
|
||||
} else {
|
||||
$tw.popup.triggerPopup({
|
||||
domNode: this.domNodes[0],
|
||||
absolute: (this.popupAbsCoords === "yes"),
|
||||
title: this.popup,
|
||||
wiki: this.wiki
|
||||
});
|
||||
@ -223,6 +227,7 @@ ButtonWidget.prototype.execute = function() {
|
||||
this.setField = this.getAttribute("setField");
|
||||
this.setIndex = this.getAttribute("setIndex");
|
||||
this.popupTitle = this.getAttribute("popupTitle");
|
||||
this.popupAbsCoords = this.getAttribute("popupAbsCoords", "no");
|
||||
this.tabIndex = this.getAttribute("tabindex");
|
||||
this.isDisabled = this.getAttribute("disabled","no");
|
||||
// Make child widgets
|
||||
@ -252,7 +257,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
|
||||
*/
|
||||
ButtonWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle || changedAttributes.disabled || changedAttributes["default"]) {
|
||||
if(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.popupAbsCoords || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle || changedAttributes.disabled || changedAttributes["default"]) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else if(changedAttributes["class"]) {
|
||||
|
@ -14,6 +14,8 @@ Reveal widget
|
||||
|
||||
var Widget = require("$:/core/modules/widgets/widget.js").widget;
|
||||
|
||||
var Popup = require("$:/core/modules/utils/dom/popup.js");
|
||||
|
||||
var RevealWidget = function(parseTreeNode,options) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
};
|
||||
@ -94,6 +96,13 @@ RevealWidget.prototype.positionPopup = function(domNode) {
|
||||
left = Math.max(0,left);
|
||||
top = Math.max(0,top);
|
||||
}
|
||||
if (this.popup.absolute) {
|
||||
// Traverse the offsetParent chain and correct the offset to make it relative to the parent node.
|
||||
for (var offsetParentDomNode = domNode.offsetParent; offsetParentDomNode; offsetParentDomNode = offsetParentDomNode.offsetParent) {
|
||||
left -= offsetParentDomNode.offsetLeft;
|
||||
top -= offsetParentDomNode.offsetTop;
|
||||
}
|
||||
}
|
||||
domNode.style.left = left + "px";
|
||||
domNode.style.top = top + "px";
|
||||
};
|
||||
@ -183,19 +192,11 @@ RevealWidget.prototype.compareStateText = function(state) {
|
||||
};
|
||||
|
||||
RevealWidget.prototype.readPopupState = function(state) {
|
||||
var popupLocationRegExp = /^\((-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+)\)$/,
|
||||
match = popupLocationRegExp.exec(state);
|
||||
this.popup = Popup.parseCoordinates(state);
|
||||
// Check if the state matches the location regexp
|
||||
if(match) {
|
||||
if(this.popup) {
|
||||
// If so, we're open
|
||||
this.isOpen = true;
|
||||
// Get the location
|
||||
this.popup = {
|
||||
left: parseFloat(match[1]),
|
||||
top: parseFloat(match[2]),
|
||||
width: parseFloat(match[3]),
|
||||
height: parseFloat(match[4])
|
||||
};
|
||||
} else {
|
||||
// If not, we're closed
|
||||
this.isOpen = false;
|
||||
|
@ -42,6 +42,9 @@ SelectWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.execute();
|
||||
this.renderChildren(parent,nextSibling);
|
||||
this.setSelectValue();
|
||||
if(this.selectFocus == "yes") {
|
||||
this.getSelectDomNode().focus();
|
||||
}
|
||||
$tw.utils.addEventListeners(this.getSelectDomNode(),[
|
||||
{name: "change", handlerObject: this, handlerMethod: "handleChangeEvent"}
|
||||
]);
|
||||
@ -143,6 +146,7 @@ SelectWidget.prototype.execute = function() {
|
||||
this.selectMultiple = this.getAttribute("multiple", false);
|
||||
this.selectSize = this.getAttribute("size");
|
||||
this.selectTooltip = this.getAttribute("tooltip");
|
||||
this.selectFocus = this.getAttribute("focus");
|
||||
// Make the child widgets
|
||||
var selectNode = {
|
||||
type: "element",
|
||||
|
@ -14,7 +14,7 @@ tags: $:/tags/AdvancedSearch/FilterButton
|
||||
<$linkcatcher actions="<$action-setfield $tiddler='$:/temp/advancedsearch' text=<<navigateTo>>/><$action-setfield $tiddler='$:/temp/advancedsearch/input' text=<<navigateTo>>/><$action-setfield $tiddler='$:/temp/advancedsearch/refresh' text='yes'/><$action-sendmessage $message='tm-focus-selector' $param='.tc-advanced-search input' />">
|
||||
<div class="tc-block-dropdown-wrapper">
|
||||
<div class="tc-block-dropdown tc-edit-type-dropdown">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Filter]]">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Filter]!is[draft]]">
|
||||
<$link to={{!!filter}}><$let tv-wikilinks="no"><$transclude field="description"/></$let></$link>
|
||||
</$list>
|
||||
</div>
|
||||
|
15
core/ui/PageControls/layout.tid
Normal file
15
core/ui/PageControls/layout.tid
Normal file
@ -0,0 +1,15 @@
|
||||
title: $:/core/ui/Buttons/layout
|
||||
tags: $:/tags/PageControls
|
||||
caption: {{$:/core/images/layout-button}} {{$:/language/Buttons/LayoutSwitcher/Caption}}
|
||||
description: {{$:/language/LayoutSwitcher/Description}}
|
||||
|
||||
\whitespace trim
|
||||
<$button tooltip={{$:/language/Buttons/LayoutSwitcher/Hint}} aria-label={{$:/language/Buttons/LayoutSwitcher/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$action-sendmessage $message="tm-show-switcher" switch="layout"/>
|
||||
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
|
||||
{{$:/core/images/layout-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>match[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/LayoutSwitcher/Caption}}/></span>
|
||||
</$list>
|
||||
</$button>
|
@ -3,6 +3,6 @@ tags: $:/tags/SideBar
|
||||
caption: {{$:/language/SideBar/More/Caption}}
|
||||
|
||||
\whitespace trim
|
||||
<div class="tc-more-sidebar">
|
||||
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]" default={{$:/config/DefaultMoreSidebarTab}} state="$:/state/tab/moresidebar" class="tc-vertical tc-sidebar-tabs-more" explicitState="$:/state/tab/moresidebar-1850697562"/>
|
||||
<div class={{{ [{$:/config/ui/SideBar/More/horizontal}match[yes]then[tc-sidebar-tabs]else[tc-more-sidebar]] }}}>
|
||||
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]" default={{$:/config/DefaultMoreSidebarTab}} state="$:/state/tab/moresidebar" class={{{ [{$:/config/ui/SideBar/More/horizontal}match[yes]then[tc-sidebar-tabs-more]else[tc-vertical tc-sidebar-tabs-more]] }}} explicitState="$:/state/tab/moresidebar-1850697562"/>
|
||||
</div>
|
||||
|
@ -1,6 +1,7 @@
|
||||
title: $:/core/ui/SwitcherModal
|
||||
subtitle: <$text text={{{[<switch>lookup[$:/language/Switcher/Subtitle/]]}}}/>
|
||||
class: tc-modal-centered
|
||||
mask-closable: yes
|
||||
|
||||
<$tiddler tiddler={{{[<switch>lookup[$:/config/SwitcherTargets/]]}}}>
|
||||
|
||||
|
@ -2,17 +2,21 @@ title: $:/core/ui/ViewTemplate/unfold
|
||||
tags: $:/tags/ViewTemplate
|
||||
|
||||
\whitespace trim
|
||||
<$reveal tag="div" type="nomatch" state="$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar" text="hide">
|
||||
<div class="tc-reveal">
|
||||
<$list filter="[{$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar}match[show]]" variable="ignore">
|
||||
<$reveal tag="div" type="nomatch" stateTitle=<<folded-state>> text="hide" default="show" retain="yes" animate="yes">
|
||||
<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class="tc-fold-banner">
|
||||
<$action-sendmessage $message="tm-fold-tiddler" $param=<<currentTiddler>> foldedState=<<folded-state>>/>
|
||||
{{$:/core/images/chevron-up}}
|
||||
</$button>
|
||||
</$reveal>
|
||||
</$list>
|
||||
<$list filter="[{$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar}match[show]] :else[<folded-state>get[text]match[hide]]" variable="ignore">
|
||||
<$reveal tag="div" type="nomatch" stateTitle=<<folded-state>> text="show" default="show" retain="yes" animate="yes">
|
||||
<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class="tc-unfold-banner">
|
||||
<$action-sendmessage $message="tm-fold-tiddler" $param=<<currentTiddler>> foldedState=<<folded-state>>/>
|
||||
{{$:/core/images/chevron-down}}
|
||||
</$button>
|
||||
</$reveal>
|
||||
</$reveal>
|
||||
</$list>
|
||||
</div>
|
@ -21,4 +21,5 @@ core/ui/Buttons/print: hide
|
||||
core/ui/Buttons/storyview: hide
|
||||
core/ui/Buttons/timestamp: hide
|
||||
core/ui/Buttons/theme: hide
|
||||
core/ui/Buttons/layout: hide
|
||||
core/ui/Buttons/unfold-all: hide
|
||||
|
@ -1,2 +1,2 @@
|
||||
title: $:/tags/PageControls
|
||||
list: [[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]
|
||||
list: [[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/layout]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]
|
||||
|
@ -13,9 +13,13 @@ type: text/vnd.tiddlywiki
|
||||
url:"https://raw.githubusercontent.com/Jermolene/TiddlyWiki5/0dc30086e933cf2272cddb076a9fcbedad252735/editions/tw5.com/tiddlers/images/New%20Release%20Banner.png"
|
||||
>>
|
||||
|
||||
! Plugin Improvements
|
||||
! Major Improvements
|
||||
|
||||
* New [[Twitter Archivist|./editions/twitter-archivist]] plugin to imports the tweets and associated media from a Twitter Archive as individual tiddlers
|
||||
New [ext[Twitter Archivist|./editions/twitter-archivist]] plugin to import the tweets and associated media from a Twitter Archive as individual tiddlers.
|
||||
|
||||
<<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6961">> new GenesisWidget that allows the dynamic construction of another widget, where the name and attributes of the new widget can be dynamically determined, without needing to be known in advance
|
||||
|
||||
<<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6936">> new operators for reading and formatting JSON data: [[jsonget Operator]], [[jsonindexes Operator]], [[jsontype Operator]] and [[format Operator]]
|
||||
|
||||
! Translation improvement
|
||||
|
||||
@ -32,10 +36,6 @@ Improvements to the translation features of TiddlyWiki:
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6882">> the [[Translators Edition|Translate TiddlyWiki into your language]] to add an option to display the original English text underneath the text area
|
||||
* <<.link-badge-updated "https://github.com/Jermolene/TiddlyWiki5/pull/6933">> "delete" button text in $:/AdvancedSearch so that it is translatable
|
||||
|
||||
! Accessibility Improvements
|
||||
|
||||
*
|
||||
|
||||
! Usability Improvements
|
||||
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/d62a16ee464fb9984b766b48504829a1a3eb143b">> problem with long presses on tiddler links triggering a preview on iOS/iPadOS
|
||||
@ -46,11 +46,15 @@ Improvements to the translation features of TiddlyWiki:
|
||||
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/6877">> default styles for [[styled runs|Styles and Classes in WikiText]]
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6881">> upgrade wizard to make the version number more prominent
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/7042">> parsing of tiddlers containing CSV data for greater compatibility
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7076">> new page control button to summon the layout switcher
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7084">> folded tiddlers to ensure that the unfold button is always visible
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/7072">> handling of [[Modals]] to optionally allow them to be dismissed by clicking on the background
|
||||
|
||||
! Widget Improvements
|
||||
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6961">> new GenesisWidget that allows the dynamic construction of another widget, where the name and attributes of the new widget can be dynamically determined, without needing to be known in advance
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/127f660c91020dcbb43897d954066b31af729e74">> EditTextWidget to remove the default text "Type the text for the tiddler 'foo'"
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7081">> ''focus'' attribute to SelectWidget
|
||||
* <<.link-badge-removed "https://github.com/Jermolene/TiddlyWiki5/commit/1df4c29d73073788ba3859668112e8bb46171a6c">> restriction of the LetWidget being unable to create variables whose names begin with a dollar sign
|
||||
|
||||
! Filter improvements
|
||||
|
||||
@ -61,10 +65,8 @@ Improvements to the translation features of TiddlyWiki:
|
||||
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7004">> support for nested [[macro definitions|Macro Definitions in WikiText]]
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6976">> support for [[SystemTag: $:/tags/ClassFilters/TiddlerTemplate]] and [[SystemTag: $:/tags/ClassFilters/PageTemplate]] to assign dynamic CSS classes to both tiddler frames and the page template
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6936">> new operators for reading and formatting JSON data: [[jsonget Operator]], [[jsonindexes Operator]], [[jsontype Operator]] and [[format Operator]]
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/c5d3d4c26e8fe27f272dda004aec27d6b66c4f60">> safe mode to disable wiki store indexers
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/166a1565843878083fb1eba47c73b8e67b78400d">> safe mode to prevent globally disabling parser rules
|
||||
* <<.link-badge-removed "https://github.com/Jermolene/TiddlyWiki5/commit/1df4c29d73073788ba3859668112e8bb46171a6c">> restriction of the LetWidget being unable to create variables whose names begin with a dollar sign
|
||||
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/6735">> keyboard shortcut handling to allow to global shortcuts to override all other shortcuts
|
||||
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/commit/965bd090a905f5756e79124b698c894f7f72ad5b">> [[list-links Macro]] to allow the rendered field to be overriden
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6913">> [[Table-of-Contents Macros]] to allow the default icons to be overridden
|
||||
@ -72,6 +74,8 @@ Improvements to the translation features of TiddlyWiki:
|
||||
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/5947">> [[timeline Macro]] to override the link template
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7043">> support for Unix epoch timestamps in [[date format strings|DateFormat]]
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7064">> the "big green download button" to use the defined palette colour
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7063">> new hidden setting [[to use horizontal tabs for the "more" sidebar tab|Hidden Setting: More Tabs Horizontal]]
|
||||
|
||||
|
||||
! Bug Fixes
|
||||
|
||||
@ -80,13 +84,11 @@ Improvements to the translation features of TiddlyWiki:
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7017">> issue with wikification within the advanced search filter dropdown
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7057">> the table in $:/Import to avoid creating hidden empty rows
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7008">> advanced search keyboard shortcut not navigating correctly
|
||||
|
||||
! Developer Improvements
|
||||
|
||||
*
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7083">> erroneous display of drafts within the advanced search filter dropdown
|
||||
|
||||
! Node.js Improvements
|
||||
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7073">> new CommandsCommand to enable command tokens to be dynamically generated from a filter
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6947">> console logging to avoid spaces and `<empty string>` message
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7014">> problem with lazy loading deleting tiddler bodies under certian circumstances
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/344110e2890caf711ab8f3c4f4deaa7d86771231">> handling of ".mp4" file extension so that it defaults to video not audio
|
||||
@ -98,7 +100,7 @@ Improvements to the translation features of TiddlyWiki:
|
||||
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/53d229592df76c6dd607e40be5bea4d5e063c48e">> performance of `wiki.getTiddler()`
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/81ac9874846b3ead275f67010fcfdb49f3d2f43c">> performance of variable prototype chain handling
|
||||
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6056">> performance of list handling during filter processing
|
||||
|
||||
! Acknowledgements
|
||||
|
||||
@ -109,12 +111,15 @@ AnthonyMuscio
|
||||
bestony
|
||||
btheado
|
||||
BramChen
|
||||
carlo-columbo
|
||||
EvidentlyCube
|
||||
FlashSystems
|
||||
flibbles
|
||||
fu-sen
|
||||
joebordes
|
||||
hoelzro
|
||||
kookma
|
||||
linonetwo
|
||||
Marxsal
|
||||
oflg
|
||||
pmario
|
||||
|
@ -59,10 +59,35 @@ describe("LinkedList class tests", function() {
|
||||
return pair;
|
||||
};
|
||||
|
||||
// This returns an array in reverse using a LinkList's prev member. Thus
|
||||
// testing that prev is not corrupt. It doesn't exist in the LinkList module
|
||||
// itself to avoid full support for it. Maybe that will change later.
|
||||
function toReverseArray(list) {
|
||||
var visits = Object.create(null),
|
||||
value = list.prev.get(null),
|
||||
array = [];
|
||||
while(value !== null) {
|
||||
array.push(value);
|
||||
var prev = list.prev.get(value);
|
||||
if(Array.isArray(prev)) {
|
||||
var i = (visits[value] || prev.length) - 1;
|
||||
visits[value] = i;
|
||||
value = prev[i];
|
||||
} else {
|
||||
value = prev;
|
||||
}
|
||||
}
|
||||
return array;
|
||||
};
|
||||
|
||||
// compares an array and a linked list to make sure they match up
|
||||
function compare(pair) {
|
||||
expect(pair.list.toArray()).toEqual(pair.array);
|
||||
var forward = pair.list.toArray();
|
||||
expect(forward).toEqual(pair.array);
|
||||
expect(pair.list.length).toBe(pair.array.length);
|
||||
// Now we reverse the linked list and test it back to front, thus
|
||||
// confirming that the list.prev isn't corrupt.
|
||||
expect(toReverseArray(pair.list)).toEqual(forward.reverse());
|
||||
return pair;
|
||||
};
|
||||
|
||||
@ -115,7 +140,7 @@ describe("LinkedList class tests", function() {
|
||||
// for list.last to be anything other than a string, but I
|
||||
// can't figure out how to make that corruption manifest a problem.
|
||||
// So I dig into its private members. Bleh...
|
||||
expect(typeof pair.list.last).toBe("string");
|
||||
expect(typeof pair.list.prev.get(null)).toBe("string");
|
||||
});
|
||||
|
||||
it("can pushTop value linked to by a repeat item", function() {
|
||||
|
63
editions/test/tiddlers/tests/test-popup.js
Normal file
63
editions/test/tiddlers/tests/test-popup.js
Normal file
@ -0,0 +1,63 @@
|
||||
/*\
|
||||
title: test-popup.js
|
||||
type: application/javascript
|
||||
tags: [[$:/tags/test-spec]]
|
||||
|
||||
Tests some utility function of the Popup prototype.
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
describe("Popup tests", function() {
|
||||
|
||||
it("parseCoordinates should parse valid coordinates", function() {
|
||||
var popup = require("$:/core/modules/utils/dom/popup.js");
|
||||
|
||||
expect(popup.parseCoordinates("(1,2,3,4)")).toEqual({absolute: false, left: 1, top: 2, width: 3, height: 4});
|
||||
expect(popup.parseCoordinates("(1.5,2.6,3.7,4.8)")).toEqual({absolute: false, left: 1.5, top: 2.6, width: 3.7, height: 4.8});
|
||||
expect(popup.parseCoordinates("@(1,2,3,4)")).toEqual({absolute: true, left: 1, top: 2, width: 3, height: 4});
|
||||
expect(popup.parseCoordinates("@(1.5,2.6,3.7,4.8)")).toEqual({absolute: true, left: 1.5, top: 2.6, width: 3.7, height: 4.8});
|
||||
});
|
||||
|
||||
it("parseCoordinates should not parse invalid coordinates", function() {
|
||||
var popup = require("$:/core/modules/utils/dom/popup.js");
|
||||
|
||||
expect(popup.parseCoordinates("#(1,2,3,4)")).toEqual(false);
|
||||
expect(popup.parseCoordinates("(1,2,3,4")).toEqual(false);
|
||||
expect(popup.parseCoordinates("(1,2,3)")).toEqual(false);
|
||||
});
|
||||
|
||||
it("buildCoordinates should create valid coordinates", function() {
|
||||
var popup = require("$:/core/modules/utils/dom/popup.js");
|
||||
|
||||
var coordinates = {
|
||||
left: 1.5,
|
||||
top: 2.6,
|
||||
width: 3.7,
|
||||
height: 4.8
|
||||
};
|
||||
|
||||
expect(popup.buildCoordinates(popup.coordinatePrefix.csOffsetParent, coordinates)).toEqual("(1.5,2.6,3.7,4.8)");
|
||||
expect(popup.buildCoordinates(popup.coordinatePrefix.csAbsolute, coordinates)).toEqual("@(1.5,2.6,3.7,4.8)");
|
||||
});
|
||||
|
||||
it("buildCoordinates should detect invalid input", function() {
|
||||
var popup = require("$:/core/modules/utils/dom/popup.js");
|
||||
|
||||
var coordinates = {
|
||||
left: "invalid",
|
||||
top: 2.6,
|
||||
width: 3.7,
|
||||
height: 4.8
|
||||
};
|
||||
|
||||
expect(popup.buildCoordinates(popup.coordinatePrefix.csOffsetParent, coordinates)).toEqual("(0,0,0,0)");
|
||||
expect(popup.buildCoordinates("dummy", coordinates)).toEqual("(0,0,0,0)");
|
||||
});
|
||||
});
|
||||
|
||||
})();
|
@ -13,4 +13,5 @@ core/ui/Buttons/more-page-actions: show
|
||||
core/ui/Buttons/new-journal: hide
|
||||
core/ui/Buttons/permaview: hide
|
||||
core/ui/Buttons/storyview: hide
|
||||
core/ui/Buttons/layout: hide
|
||||
core/ui/Buttons/theme: hide
|
||||
|
BIN
editions/tw5.com/tiddlers/_tw_shared/favicons/markplace.png
Normal file
BIN
editions/tw5.com/tiddlers/_tw_shared/favicons/markplace.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
@ -0,0 +1,3 @@
|
||||
title: $:/_tw_shared/favicons/marketplace
|
||||
type: image/png
|
||||
tags: TiddlyWikiSitesMenu
|
@ -0,0 +1,6 @@
|
||||
title: $:/_tw_shared/sites/marketplace
|
||||
tags: $:/tags/TiddlyWikiSites TiddlyWikiSitesMenu
|
||||
caption: marketplace
|
||||
description: Commercial Products and Services
|
||||
url: https://talk.tiddlywiki.org/c/marketplace/22
|
||||
icon: $:/_tw_shared/favicons/marketplace
|
@ -1,3 +1,3 @@
|
||||
title: $:/tags/TiddlyWikiSites
|
||||
list: $:/_tw_shared/sites/tiddlywiki.com $:/_tw_shared/sites/tiddlywiki.org $:/_tw_shared/sites/talk.tiddlywiki.org $:/_tw_shared/sites/links.tiddlywiki.org $:/_tw_shared/sites/tiddlywiki.com.upgrade $:/_tw_shared/sites/tiddlywiki.com.dev $:/_tw_shared/sites/tiddlywiki.com.prerelease $:/_tw_shared/sites/classic.tiddlywiki.com
|
||||
list: $:/_tw_shared/sites/tiddlywiki.com $:/_tw_shared/sites/tiddlywiki.org $:/_tw_shared/sites/talk.tiddlywiki.org $:/_tw_shared/sites/links.tiddlywiki.org $:/_tw_shared/sites/tiddlywiki.com.upgrade $:/_tw_shared/sites/tiddlywiki.com.dev $:/_tw_shared/sites/tiddlywiki.com.prerelease $:/_tw_shared/sites/classic.tiddlywiki.com $:/_tw_shared/sites/marketplace
|
||||
tags: TiddlyWikiSitesMenu
|
||||
|
19
editions/tw5.com/tiddlers/about/Funding TiddlyWiki.tid
Normal file
19
editions/tw5.com/tiddlers/about/Funding TiddlyWiki.tid
Normal file
@ -0,0 +1,19 @@
|
||||
title: Funding TiddlyWiki
|
||||
tags: About HelloThere
|
||||
modified: 20221204165636777
|
||||
created: 20221204165636777
|
||||
|
||||
TiddlyWiki is more useful to everybody if it is free to use, with no financial barriers to long term adoption. It is not altruism; we believe that removing or reducing barriers to adoption will help to ensure TiddlyWiki's future by making the community larger and stronger.
|
||||
|
||||
Nonetheless, TiddlyWiki is a relatively big, complex machine that requires a significant amount of ongoing work to maintain and improve. Some community infrastructure also requires monthly fees to operate (notably the [[TiddlyWiki forum|Forums]]).
|
||||
|
||||
The people in the community that do the work have widely varying needs:
|
||||
|
||||
* At one end, a good proportion of the work on TiddlyWiki is performed by community members on a purely voluntary basis. For those people, the satisfaction of helping others is sufficient reward. Indeed, for many people, unpaid voluntary activities are a satisfying antidote to everyday paid work
|
||||
* At the other extreme, JeremyRuston and some other contributors are trying to make a full-time living working on TiddlyWiki by offering commercial products and services around it
|
||||
* In between, there are other people who would appreciate an ocassional token to reward them for their work
|
||||
|
||||
To support these needs in the community, we have two initiatives:
|
||||
|
||||
* We use [[Open Collective]] to collect donations for the infrastructure costs of the Community and to crowdfund specific developments by individuals or organisations
|
||||
* The [[TiddlyWiki Marketplace]] provides a shop window for individuals and organisations offering commercial products and services
|
14
editions/tw5.com/tiddlers/about/Open Collective.tid
Normal file
14
editions/tw5.com/tiddlers/about/Open Collective.tid
Normal file
@ -0,0 +1,14 @@
|
||||
title: Open Collective
|
||||
modified: 20221204165636777
|
||||
created: 20221204165636777
|
||||
tags: About HelloThere [[Open Collective]]
|
||||
|
||||
Open Collective is a platform for transparent fundraising and expenses for projects like TiddlyWiki. It is the official TiddlyWiki community fundraising space.
|
||||
|
||||
https://opencollective.com/tiddlywikidotorg
|
||||
|
||||
You can make a fixed one-time donation, or setup a recurring contribution.
|
||||
|
||||
The main goals listed for donations are to cover basic costs for community infrastructure like the Discourse forum, and a new goal for supporting the TiddlyWiki Core.
|
||||
|
||||
Additionally, the community can make use of the platform for special projects - to pool funds to pay for development, design, or anything else. The [[File Upload Plugin|https://opencollective.com/tiddlywikidotorg/projects/tiddlywiki-file-upload]] is the first of these, and we want to welcome others to launch projects here.
|
8
editions/tw5.com/tiddlers/commands/CommandsCommand.tid
Normal file
8
editions/tw5.com/tiddlers/commands/CommandsCommand.tid
Normal file
@ -0,0 +1,8 @@
|
||||
created: 20221204202531478
|
||||
modified: 20221204202531478
|
||||
tags: Commands
|
||||
title: CommandsCommand
|
||||
type: text/vnd.tiddlywiki
|
||||
caption: commands
|
||||
|
||||
{{$:/language/Help/commands}}
|
@ -1,5 +1,4 @@
|
||||
created: 20171107181449175
|
||||
creator: Ste Willson
|
||||
modified: 20210106151027136
|
||||
tags: [[Community Plugins]]
|
||||
title: "JD Mobile Layout plugin" by JD
|
||||
|
@ -1,5 +1,4 @@
|
||||
created: 20171111192738730
|
||||
creator: MAS
|
||||
modified: 20210106151027013
|
||||
tags: [[Other Resources]]
|
||||
title: "Dropboard" by Reid Gould
|
||||
|
@ -1,7 +1,5 @@
|
||||
created: 20161226165024380
|
||||
creator: Thomas Elmiger
|
||||
modified: 20210106151027097
|
||||
modifier: Thomas Elmiger
|
||||
tags: [[Other Resources]]
|
||||
title: "Hacks" by Thomas Elmiger
|
||||
type: text/vnd.tiddlywiki
|
||||
|
@ -1,5 +1,4 @@
|
||||
created: 20161226165024380
|
||||
creator: Ste Willson
|
||||
modified: 20210106151027156
|
||||
tags: [[Other Resources]]
|
||||
title: "MathCell" by Stephen Kimmel
|
||||
|
@ -1,5 +1,4 @@
|
||||
created: 20161226165024380
|
||||
creator: Matt Lauber
|
||||
modified: 20211113230709926
|
||||
tags: [[Other Resources]]
|
||||
title: "TiddlyServer" by Matt Lauber
|
||||
|
@ -1,5 +1,4 @@
|
||||
created: 20171107175718679
|
||||
creator: Ste Willson
|
||||
modified: 20210106151027400
|
||||
tags: [[Other Resources]]
|
||||
title: "X3DOM for TiddlyWiki 5" by Jamal Wills
|
||||
|
42
editions/tw5.com/tiddlers/concepts/CoordinateSystems.tid
Normal file
42
editions/tw5.com/tiddlers/concepts/CoordinateSystems.tid
Normal file
@ -0,0 +1,42 @@
|
||||
created: 20220810201659784
|
||||
modified: 20220810201659784
|
||||
tags: Concepts
|
||||
title: Coordinate Systems
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
TiddlyWiki (primarily the RevealWidget) supports two coordinate systems for positioning popups (see PopupMechanism to learn more about popups).
|
||||
|
||||
<<.from-version "5.2.4">> We introduced absolute coordinates that may not work with all extensions and plugins. For maximum backwards compatibility, use absolute coordinates only where necessary.
|
||||
|
||||
!! Relative coordinate system
|
||||
|
||||
The default coordinate system is relative to the nearest positioned ancestor element. This is either:
|
||||
|
||||
* an element with a non-static position, or
|
||||
* a ''td'', ''th'', ''table'' in case the element itself is static positioned.
|
||||
|
||||
For tiddlers the nearest positioned ancestor element mostly is the body of the tiddler. Read the next chapter to learn about the exceptions.
|
||||
|
||||
Relative coordinates are expressed in the form ''(x,y,w,h)''. Where ''x'' and ''y'' represent the position and ''w'' and ''h'' the width and height of the element.
|
||||
|
||||
!! Absolute coordinate system
|
||||
|
||||
The relative coordinate system works flawless most of the time. Problems occure if the target element (for example, a popup) and the source element (the triggering button) do not share the same positioned ancherstor element. This is often the case if the popup is declared outside a table and the triggering button is declared within a table cell. In this case the coordiante systems have different origins and the popup will be displayed in the wrong location.
|
||||
|
||||
Absolute coordinates can fix this problem by using the root element of the page (the upper-left corner of the page) as the origin of the coordinate system. Absolute coordinates are expressed in the form ''@(x,y,w,h)''. Where ''x'' and ''y'' represent the position and ''w'' and ''h'' the width and height of the element. The leading ''@''-symbol marks these coordinates as absolute.
|
||||
|
||||
The ButtonWidget has an option (''popupAbsCoords'') to put absolute coordinates into the state tiddler. The DraggableWidget and the EventCatcherWidget provide the absolute coordinate of an event within the attribute `tv-popup-abs-coords`.
|
||||
|
||||
|
||||
!! Example
|
||||
|
||||
The following example shows a popup that is triggerd from within a table cell. The table cell is the nearest positioned ancestor element. The popup was defined outside the table cell. The button using relative coordinates will open the popup in the wrong location because the button and the popup do not agree on the same coordinate system. Using absolute coordinates fixes this problem.
|
||||
|
||||
<<wikitext-example-without-html '<$reveal type="popup" state="$:/state/CoordinateSampleReveal">
|
||||
<div class="tc-drop-down">
|
||||
Popup
|
||||
</div>
|
||||
</$reveal>
|
||||
|
||||
| Table Row 1 |<$button popup="$:/state/CoordinateSampleReveal">Relative coordinates</$button>|
|
||||
| Table Row 2 |<$button popup="$:/state/CoordinateSampleReveal" popupAbsCoords="yes">Absolute coordinates</$button>|'>>
|
@ -1,9 +1,21 @@
|
||||
created: 20130825154900000
|
||||
modified: 20170718160846820
|
||||
modified: 20221204165636777
|
||||
tags: Definitions
|
||||
title: Federatial
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Federatial Limited is a software consultancy founded by JeremyRuston, the creator of TiddlyWiki. Federatial helps organisations explore new user interaction concepts through rapid prototyping of sophisticated web-based tools.
|
||||
Federatial Limited helps organisations explore new user interaction concepts through rapid prototyping of sophisticated web-based tools. Services include:
|
||||
|
||||
* Consultancy advice on TiddlyWiki adoption
|
||||
* Development of custom solutions based on TiddlyWiki
|
||||
* Multi-user TiddlyWiki hosting – no outages since 2016
|
||||
* Sponsorship of TiddlyWiki core development
|
||||
|
||||
See https://federatial.com/ and https://twitter.com/federatial for more information.
|
||||
|
||||
JeremyRuston founded Federatial Limited in 2011 to support his work on TiddlyWiki for the advertised 25 years. Since then, Federatial has been privileged to have worked with a wide range of fantastic clients in very different sectors, on some very diverse projects:
|
||||
|
||||
* For a law firm in the Washington DC, developing a custom multi-user ~TiddlyWiki application. It replaced a Microsoft Word document hosted on ~SharePoint that had grown to 18,000 pages and 10 million words, and was increasingly unwieldy to manage. We converted the document to a non-linear TiddlyWiki structure. Startup, searching and browsing are an order of magnitude faster than using Word and ~SharePoint
|
||||
* For a publishing firm in Paris, devising a new TiddlyWiki-based format for interactive electronic publications (including conversion from the established EPUB format). See https://twpub-tools.org/
|
||||
* For a charity in London, maintaining a multiuser instance of TiddlyWiki running on Amazon's serverless infrastructure. It has more than 1,000 users, and over 15,000 tiddlers in 500 interlinked wikis. See https://manuals.annafreud.org/ambit
|
||||
|
@ -4,6 +4,8 @@ tags: Definitions
|
||||
title: TiddlyWikiClassic
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
"~TiddlyWiki Classic" refers to versions prior to 5.0, before TiddlyWiki was completely rewritten from the ground up. TiddlyWiki Classic is still being maintained at:
|
||||
[img[TiddlyWiki Classic.png]]
|
||||
|
||||
"~TiddlyWiki Classic" refers to versions prior to 5.0, before TiddlyWiki was completely rewritten. TiddlyWiki Classic is still actively maintained at:
|
||||
|
||||
https://classic.tiddlywiki.com/
|
||||
|
@ -13,9 +13,12 @@ The tiddler to be displayed can contain the following optional fields that are u
|
||||
|subtitle|The subtitle text for a modal, displayed in a `h3` html tag|
|
||||
|class|An additional class to apply to the modal wrapper|
|
||||
|help|An optional external link that will be displayed at the left of the footer with the text "Help"|
|
||||
|mask-closable|When set to ''yes'' or ''true'', will close the modal dialog when the mask (area outside the modal) is clicked|
|
||||
|
||||
Note that the footer and subtitle fields are not limited to plain text, and wiki text features such as widgets and transclusions can be used as well.
|
||||
|
||||
Modals are displayed with the [[WidgetMessage: tm-modal]].
|
||||
|
||||
<$button message="tm-modal" param="SampleWizard">Open demo modal</$button>
|
||||
|
||||
<<.tip """<$macrocall $name=".from-version" version="5.2.4"/> allow using "mask-closable" field""">>
|
||||
|
@ -1,34 +1,38 @@
|
||||
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: 20220802122551819
|
||||
modified: 20221204165636777
|
||||
tags: TableOfContents
|
||||
title: HelloThere
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
''Have you ever had the feeling that your head is not quite big enough to hold everything you need to remember?''
|
||||
|
||||
Welcome to TiddlyWiki, a unique [[non-linear|Philosophy of Tiddlers]] notebook for [[capturing|Creating and editing tiddlers]], [[organising|Structuring TiddlyWiki]] and [[sharing|Sharing your tiddlers with others]] complex information.
|
||||
!! ''Welcome to TiddlyWiki, a unique [[non-linear|Philosophy of Tiddlers]] notebook for [[capturing|Creating and editing tiddlers]], [[organising|Structuring TiddlyWiki]] and [[sharing|Sharing your tiddlers with others]] complex information''
|
||||
|
||||
Use it to keep your [[to-do list|TaskManagementExample]], to plan an [[essay or novel|"TiddlyWiki for Scholars" by Alberto Molina]], or to organise your wedding. Record every thought that crosses your brain, or build a flexible and responsive website.
|
||||
|
||||
<div style="font-size:0.7em;text-align:center;margin-top:2em;margin-bottom:2em;">
|
||||
<<list-thumbnails filter:"[tag[HelloThumbnail]]" width:"168" height:"95">>
|
||||
</div>
|
||||
|
||||
Unlike conventional online services, TiddlyWiki lets you choose where to keep your data, guaranteeing that in the decades to come you will [[still be able to use|Future Proof]] the notes you take today.
|
||||
|
||||
<div style="font-size:0.7em;text-align:center;margin:3em auto;">
|
||||
!! ''Find Out More''
|
||||
|
||||
<div class="tc-cards">
|
||||
<$list filter="[tag[HelloThumbnail]]">
|
||||
<$macrocall $name="flex-card" captionField="caption" descriptionField="text"/>
|
||||
</$list>
|
||||
</div>
|
||||
|
||||
!! ''~TiddlyWiki Hubs''
|
||||
|
||||
<div class="tc-cards" style="font-size:0.7em;text-align:center;margin:3em auto;">
|
||||
<a href="https://talk.tiddlywiki.org/" class="tc-btn-big-green" style="border-radius:4px;background-color:#FF8C19;" target="_blank" rel="noopener noreferrer">
|
||||
{{$:/core/images/help}} ~TalkTW
|
||||
</a>
|
||||
<a href="https://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="border-radius:4px;background-color:#e52d27;" target="_blank" rel="noopener noreferrer">
|
||||
{{$:/core/images/video}} ~YouTube
|
||||
</a>
|
||||
<a href="https://twitter.com/TiddlyWiki" class="tc-btn-big-green" style="border-radius:4px;background-color:#5E9FCA;" target="_blank" rel="noopener noreferrer">
|
||||
<a href="https://twitter.com/TiddlyWiki" class="tc-btn-big-green" style="border-radius:4px;background-color:#1DA1F2;" target="_blank" rel="noopener noreferrer">
|
||||
{{$:/core/images/twitter}} Twitter
|
||||
</a>
|
||||
<a rel="me" href="https://fosstodon.org/@TiddlyWiki" class="tc-btn-big-green" style="border-radius:4px;background-color:#2b90d9;" target="_blank" rel="noopener noreferrer">
|
||||
{{$:/core/images/mastodon}} Mastodon
|
||||
{{$:/core/images/globe}} Mastodon
|
||||
</a>
|
||||
<a href="https://github.com/Jermolene/TiddlyWiki5" class="tc-btn-big-green" style="border-radius:4px;background-color:#444;" target="_blank" rel="noopener noreferrer">
|
||||
{{$:/core/images/github}} ~GitHub
|
||||
@ -38,16 +42,10 @@ Unlike conventional online services, TiddlyWiki lets you choose where to keep yo
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<<<.tc-big-quote
|
||||
''The ~TiddlyWiki is the best software I've ever found for organising my ideas.''
|
||||
!! ''Testimonials & Reviews''
|
||||
|
||||
It's well worth spending an hour or so playing with it to see how it can help you. This will be time well-spent and will change how you think and how you organise your ideas.
|
||||
<<< [[Joe Armstrong, Co-inventor of Erlang|https://joearms.github.io/]]
|
||||
|
||||
<<<.tc-big-quote
|
||||
''~TiddlyWiki gets a Gearhead rating of 6 out of 5 (it's that good).''
|
||||
|
||||
Finding code that works flawlessly after just two or three years is magical enough but after seven years?!
|
||||
<<< [[Mark Gibbs, Network World|http://www.networkworld.com/article/3028098/open-source-tools/tiddlywiki-a-free-open-source-wiki-revisited.html]]
|
||||
|
||||
<div style="font-size:0.7em;text-align:center;margin:3em auto;">{{Product Hunt Link}}</div>
|
||||
<div class="tc-cards">
|
||||
<$list filter="[tag[Testimonial]]">
|
||||
<$macrocall $name="flex-card" class="tc-card-quote" captionField="caption" descriptionField="text"/>
|
||||
</$list>
|
||||
</div>
|
@ -1,5 +1,5 @@
|
||||
created: 20150414070451144
|
||||
list: [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Gentle Guide]] [[HelloThumbnail - Grok TiddlyWiki]] [[HelloThumbnail - Firefox Apocalypse]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - TiddlyWikiLinks]] [[HelloThumbnail - TiddlyMap]] [[HelloThumbnail - HelpingTiddlyWiki]] [[HelloThumbnail - Developers]] [[HelloThumbnail - Classic]]
|
||||
list: [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Grok TiddlyWiki]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - TiddlyWikiLinks]] [[HelloThumbnail - Developers]] [[HelloThumbnail - Funding]] [[HelloThumbnail - Marketplace]] [[HelloThumbnail - Federatial]]
|
||||
modified: 20150414070948246
|
||||
title: HelloThumbnail
|
||||
type: text/vnd.tiddlywiki
|
||||
|
@ -1,6 +0,0 @@
|
||||
title: HelloThumbnail - Classic
|
||||
tags: HelloThumbnail
|
||||
color: #D5B7EA
|
||||
image: TiddlyWiki Classic.png
|
||||
caption: ~TiddlyWiki Classic
|
||||
link: TiddlyWikiClassic
|
@ -1,7 +0,0 @@
|
||||
title: HelloThumbnail - Developers
|
||||
tags: HelloThumbnail
|
||||
color: #6B6E98
|
||||
background-color: #EAE57D
|
||||
image: Dev Thumbnail.jpg
|
||||
caption: Developers
|
||||
link: Developers
|
@ -0,0 +1,10 @@
|
||||
background-color: #EDB431
|
||||
caption: How is ~TiddlyWiki Funded?
|
||||
color: #ff0
|
||||
image: Funding.png
|
||||
link: Funding TiddlyWiki
|
||||
tags: HelloThumbnail
|
||||
title: HelloThumbnail - Funding
|
||||
ribbon-text: NEW
|
||||
|
||||
Find out how you can help support ~TiddlyWiki financially
|
@ -1,11 +0,0 @@
|
||||
background-color: #EDB431
|
||||
caption: A Gentle Guide
|
||||
color: #fff
|
||||
created: 20150325172634195
|
||||
image: Motovun Jack.jpg
|
||||
link: A Gentle Guide to TiddlyWiki
|
||||
modified: 20150414071032492
|
||||
tags: HelloThumbnail
|
||||
title: HelloThumbnail - Gentle Guide
|
||||
type: text/vnd.tiddlywiki
|
||||
|
@ -4,3 +4,5 @@ color: #D5B7EA
|
||||
image: Grok TiddlyWiki Banner
|
||||
caption: Grok ~TiddlyWiki
|
||||
link: "Grok TiddlyWiki" by Soren Bjornstad
|
||||
|
||||
A guided tutorial through ~TiddlyWiki
|
@ -1,7 +0,0 @@
|
||||
title: HelloThumbnail - HelpingTiddlyWiki
|
||||
tags: HelloThumbnail
|
||||
color: #B7D5EA
|
||||
background-color: #fff
|
||||
caption: Helping ~TiddlyWiki
|
||||
link: HelpingTiddlyWiki
|
||||
image: Tiddler Poster.png
|
@ -6,3 +6,5 @@ icon: {{$:/core/images/video}}
|
||||
caption: Introduction to ~TiddlyWiki
|
||||
link: Introduction Video
|
||||
image: Introduction Video Thumbnail.jpg
|
||||
|
||||
Short video introducing basic ~TiddlyWiki concepts
|
@ -1,6 +1,14 @@
|
||||
title: HelloThumbnail - Latest Version
|
||||
tags: HelloThumbnail
|
||||
caption: What's New in <<version>>
|
||||
caption: What's New in v<<version>>
|
||||
link: Releases
|
||||
image: New Release Banner
|
||||
color: #fff
|
||||
|
||||
\define prerelease-regexp() [0-9]+\.[0-9]+\.[0-9]+\-prerelease
|
||||
<$list filter="[<version>!regexp<prerelease-regexp>]" variable="ignore">
|
||||
The latest version v<<version>> of ~TiddlyWiki (released on <$view field="released" tiddler={{{ [<version>addprefix[Release ]] }}} format="date" template="DDth MMM YYYY"/>)
|
||||
</$list>
|
||||
<$list filter="[<version>regexp<prerelease-regexp>]" variable="ignore">
|
||||
This is a prerelease build for testing and review
|
||||
</$list>
|
||||
|
@ -0,0 +1,10 @@
|
||||
title: HelloThumbnail - Marketplace
|
||||
tags: HelloThumbnail
|
||||
color: #6B6E98
|
||||
background-color: #EAE57D
|
||||
image: TiddlyWiki Marketplace Banner
|
||||
caption: ~TiddlyWiki Marketplace
|
||||
link: TiddlyWiki Marketplace
|
||||
ribbon-text: NEW
|
||||
|
||||
Explore commercial products and services for ~TiddlyWiki
|
@ -1,8 +0,0 @@
|
||||
title: HelloThumbnail - TWEUM2017
|
||||
tags: HelloThumbnail-disabled
|
||||
color: #fff
|
||||
background-color: #000
|
||||
icon: <span style="font-size:3.5em;font-weight:bold;text-shadow:1px 1px 3px rgba(0,0,0,1);">2017</span>
|
||||
image: TWEUM Thumbnail.jpg
|
||||
caption: European Meetup 2017
|
||||
link: TiddlyWiki European Meetup 2017
|
@ -1,6 +0,0 @@
|
||||
title: HelloThumbnail - TiddlyMap
|
||||
tags: HelloThumbnail
|
||||
color: #D5B7EA
|
||||
image: TiddlyMap.png
|
||||
caption: ~TiddlyMap Plugin
|
||||
link: TiddlyMap Plugin by Felix Küppers
|
@ -2,5 +2,7 @@ title: HelloThumbnail - TiddlyWikiLinks
|
||||
tags: HelloThumbnail
|
||||
color: #D5B7EA
|
||||
image: TiddlyWikiLinks
|
||||
caption: links.tiddlywiki.com
|
||||
caption: links.tiddlywiki.org
|
||||
link: Community Links Aggregator
|
||||
|
||||
Links to ~TiddlyWiki-related content collected by the community
|
@ -0,0 +1,11 @@
|
||||
background-color: #EDB431
|
||||
caption: Federatial
|
||||
color: #ff0
|
||||
image: Federatial.png
|
||||
link: Federatial
|
||||
tags: HelloThumbnail
|
||||
title: HelloThumbnail - Federatial
|
||||
type: text/vnd.tiddlywiki
|
||||
ribbon-text: NEW
|
||||
|
||||
Support the development of ~TiddlyWiki by hiring Jeremy Ruston through Federatial Limited
|
@ -0,0 +1,7 @@
|
||||
created: 20221128092648000
|
||||
modified: 20221128092903706
|
||||
tags: [[Hidden Settings]]
|
||||
title: Hidden Setting: More Tabs Horizontal
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Set the $:/config/ui/SideBar/More/horizontal tiddler to ''yes'', to align the ''More -> Tabs'' in horizontal orientation.
|
Binary file not shown.
Before Width: | Height: | Size: 24 KiB |
@ -1,3 +0,0 @@
|
||||
title: Dev Thumbnail.jpg
|
||||
type: image/jpeg
|
||||
tags: picture
|
BIN
editions/tw5.com/tiddlers/images/Federatial.png
Normal file
BIN
editions/tw5.com/tiddlers/images/Federatial.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 220 KiB |
3
editions/tw5.com/tiddlers/images/Federatial.png.meta
Normal file
3
editions/tw5.com/tiddlers/images/Federatial.png.meta
Normal file
@ -0,0 +1,3 @@
|
||||
title: Federatial.png
|
||||
type: image/png
|
||||
tags: picture
|
BIN
editions/tw5.com/tiddlers/images/Funding.png
Normal file
BIN
editions/tw5.com/tiddlers/images/Funding.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 184 KiB |
@ -1,3 +1,3 @@
|
||||
title: TiddlyMap.png
|
||||
title: Funding.png
|
||||
type: image/png
|
||||
tags: picture
|
BIN
editions/tw5.com/tiddlers/images/Marketplace Banner.png
Normal file
BIN
editions/tw5.com/tiddlers/images/Marketplace Banner.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 89 KiB |
@ -0,0 +1,3 @@
|
||||
title: TiddlyWiki Marketplace Banner
|
||||
type: image/jpeg
|
||||
tags: picture
|
Binary file not shown.
Before Width: | Height: | Size: 20 KiB |
@ -0,0 +1,18 @@
|
||||
title: TiddlyWiki Marketplace
|
||||
tags: Community
|
||||
modified: 20221204165636777
|
||||
created: 20221204165636777
|
||||
|
||||
<span style="float:right;">[img width=200px [TiddlyWiki Marketplace Banner]]</span>
|
||||
|
||||
Welcome to the TiddlyWiki Marketplace. This new forum is designed to provide a space for individuals and organizations to offer commercial products and services that are built around TiddlyWiki:
|
||||
|
||||
* Paid hosting services
|
||||
* Custom solution development
|
||||
* Training courses
|
||||
* One-to-one training sessions
|
||||
* "Fix my wiki" debugging sessions
|
||||
|
||||
<a href="https://talk.tiddlywiki.org/c/marketplace/22" class="tc-btn-big-green" style="border-radius:4px;background-color:#ff5c48;" target="_blank" rel="noopener noreferrer">
|
||||
~TiddlyWiki Marketplace
|
||||
</a>
|
@ -8,6 +8,7 @@ The popup mechanism allows blocks of content to be selectively displayed and pos
|
||||
|
||||
* [[StateTiddlers|StateMechanism]] to record whether a popup is currently displayed or not
|
||||
* The RevealWidget to selectively display the popup content
|
||||
** <<.from-version "5.2.4">> For positioning the popups relative or absolute coordinates can be used. See [[Coordinate Systems]] for more information about usage and format.
|
||||
** 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
|
||||
|
||||
|
@ -10,12 +10,14 @@ type: text/vnd.tiddlywiki
|
||||
|paramObject |Hashmap of variables to be provided to the modal, contains all extra parameters passed to the widget sending the message. |
|
||||
|rootwindow |<<.from-version 5.1.18>> ''yes'' or ''true'' will always display a modal in the wiki-root-window |
|
||||
|
||||
The "currentTiddler" variable is set to the title of the modal tiddler, but can be overridden by specifying a different value in `paramObject`.
|
||||
|
||||
The modal message is usually generated with the ButtonWidget. The modal message is handled by the TiddlyWiki core.
|
||||
|
||||
[[Fields within the tiddler|Modals]] being displayed in the modal can be used to customize its appearance.
|
||||
|
||||
!! paramObject
|
||||
|
||||
The "currentTiddler" variable is set to the title of the modal tiddler, but can be overridden by specifying a different value in `paramObject`.
|
||||
|
||||
! Example
|
||||
|
||||
Here is an example of displaying a modal and passing parameters to it:
|
||||
|
@ -2,7 +2,7 @@ caption: Emergency Export
|
||||
color: #7986CB
|
||||
created: 20180309211328412
|
||||
delivery: Saver
|
||||
description: Awkward but useful emergency technique for saving tiddlers
|
||||
description: Retrieve and save tiddlers when saving is broken
|
||||
method: save
|
||||
modified: 20200507202809334
|
||||
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera Safari Saving Windows Edge
|
||||
|
@ -9,6 +9,7 @@ modified: 20220223160414274
|
||||
tags: Chrome Firefox [[Internet Explorer]] Linux Mac Opera Safari Saving Windows Edge
|
||||
title: Saving with Polly
|
||||
type: text/vnd.tiddlywiki
|
||||
ribbon-text: NEW
|
||||
|
||||
[[Polly|https://github.com/Marxsal/polly]] is a batch file system using Windows //~PowerShell// to restore ~TiddlyWiki files from a specified download directory to their original home directory.
|
||||
|
||||
|
@ -54,7 +54,7 @@ Available methods for saving changes with ~TiddlyWiki:
|
||||
</div>
|
||||
|
||||
<!-- Page content -->
|
||||
<div class="content">
|
||||
<div class="tc-cards">
|
||||
<$wikify text=<<alltagsfilter>> name="alltagsfilterwikified">
|
||||
<$list filter=<<alltagsfilterwikified>>>
|
||||
{{||$:/_tw5.com-card-template}}
|
||||
|
@ -0,0 +1,15 @@
|
||||
caption: ~TiddlyBucket
|
||||
color: #f48fb1
|
||||
created: 20221126192148031
|
||||
delivery: Protocol
|
||||
description: Save to AWS or Google Storage
|
||||
method: save
|
||||
modified: 20221126192853897
|
||||
tags: Chrome Firefox [[Internet Explorer]] Linux Mac Opera Safari Saving Windows iOS Edge
|
||||
title: TiddlyBucket - Save to AWS or Google Storage
|
||||
type: text/vnd.tiddlywiki
|
||||
ribbon-text: NEW
|
||||
|
||||
~TiddlyBucket - Save to AWS or Google Storage using Go
|
||||
|
||||
This tool replicates the ~TiddlyWeb backend API and can read and write the tiddler files to a local directory like the canonical ~TiddlyWiki5 app. But, in addition, it can do the same with a given a Google Cloud Storage bucket or AWS S3 bucket. Written in the Go programming language
|
@ -3,19 +3,4 @@ modified: 20220719134613555
|
||||
title: $:/_tw5.com-card-template
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define tw-card-template(bordercolor:"")
|
||||
\whitespace trim
|
||||
<div class="tc-card" style="border-top: 5px solid $bordercolor$;">
|
||||
<$link>
|
||||
<$let tv-wikilinks=no>
|
||||
<div class="tc-card-title"><$transclude field="caption"><$view field="title"/></$transclude></div>
|
||||
<div class="tc-card-author">
|
||||
<$list filter="[is[current]has[community-author]]">by {{!!community-author}}</$list>
|
||||
</div>
|
||||
<p><$view field="description"/></p>
|
||||
</$let>
|
||||
</$link>
|
||||
</div>
|
||||
\end
|
||||
|
||||
<$macrocall $name="tw-card-template" bordercolor={{!!color}}/>
|
||||
<$macrocall $name="flex-card" bordercolor={{!!color}} captionField="caption" subtitle={{{ [{!!community-author}!is[blank]addprefix[by ]] }}}/>
|
||||
|
@ -122,62 +122,180 @@ type: text/vnd.tiddlywiki
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.tc-card {
|
||||
margin: 15px;
|
||||
padding: 10px 20px;
|
||||
border-radius: 10px;
|
||||
border-top: 5px solid #45D3D3;
|
||||
box-shadow: 0 8px 17px -8px #A3A5AE;
|
||||
background-color: #FFF;
|
||||
width: 200px;
|
||||
transition: box-shadow 0.3s ease-in-out;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
.tc-cards {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-evenly;
|
||||
width: 100%;
|
||||
padding: 0.5em;
|
||||
background: <<colour background>>;
|
||||
border-color: rgba(34,36,38,.15);
|
||||
box-shadow: 0 2px 25px 0 rgb(34 36 38 / 5%) inset;
|
||||
}
|
||||
|
||||
.tc-card:hover {
|
||||
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
|
||||
.tc-tiddlylink.tc-card {
|
||||
font-weight: normal;
|
||||
max-width: 100%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: <<colour background>>;
|
||||
color: <<colour foreground>>;
|
||||
width: 200px;
|
||||
min-height: 0;
|
||||
padding: 0 0 0.5em 0;
|
||||
margin: 0.5em;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 1px 3px 0 #d4d4d5, 0 0 0 1px #d4d4d5;
|
||||
transition: box-shadow 0.3s ease,transform .3s ease;
|
||||
}
|
||||
.tc-card:hover .tc-card-title {
|
||||
color: #1462ff;
|
||||
|
||||
@media (max-width: 500px) {
|
||||
|
||||
.tc-cards {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card {
|
||||
margin: 0.25em;
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card.tc-card-quote {
|
||||
width: 320px;
|
||||
box-shadow: none;
|
||||
background-color: #effdff;
|
||||
}
|
||||
|
||||
.tc-card-accent {
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 8px;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card:hover {
|
||||
color: <<colour foreground>>;
|
||||
background: <<colour notification-background>>;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
box-shadow: 0 1px 5px 0 #bcbdbd, 0 0 0 1px #d4d4d5;
|
||||
transform: translateY(-3px);
|
||||
}
|
||||
|
||||
.tc-card-ribbon-wrapper {
|
||||
line-height: 0;
|
||||
width: 75px;
|
||||
height: 75px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
overflow: hidden;
|
||||
top: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.tc-card-ribbon {
|
||||
transition: top 0.3s ease-in-out;
|
||||
top: 15px;
|
||||
right: -77px;
|
||||
position: absolute;
|
||||
transform: rotate(45deg);
|
||||
background-color: red;
|
||||
box-shadow: 0px 0px 2px 0px rgb(0 0 0 / 50%);
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card:hover .tc-card-ribbon {
|
||||
top: -77px;
|
||||
}
|
||||
|
||||
.tc-card-ribbon-inner {
|
||||
font-size: 10px;
|
||||
line-height: 13px;
|
||||
font-weight: 700;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 -1px rgb(0 0 0 / 50%);
|
||||
width: 200px;
|
||||
display: inline-block;
|
||||
padding: 2px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tc-card-image {
|
||||
line-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tc-card-image img {
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 8px;
|
||||
width: 100%;
|
||||
transition: transform 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card:hover .tc-card-image img {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.tc-card-title {
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
line-height: 1.2;
|
||||
font-weight: 600;
|
||||
transition: color 0.2s ease-in-out;
|
||||
padding: 10px 0;
|
||||
transition: color 0.3s ease-in-out;
|
||||
padding: 0 10px;
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
|
||||
.tc-card-subtitle,
|
||||
.tc-card-author {
|
||||
text-align: center;
|
||||
font-size: 0.8em;
|
||||
line-height: 1.2;
|
||||
color: <<colour muted-foreground>>;
|
||||
padding: 0 10px;
|
||||
margin: 0.5em 0;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.tc-card p {
|
||||
height: 67px;
|
||||
overflow: hidden;
|
||||
.tc-card-body {
|
||||
font-size: 0.9em;
|
||||
line-height: 1.2;
|
||||
padding: 0 10px;
|
||||
margin: 0;
|
||||
padding: 13px 0;
|
||||
}
|
||||
|
||||
.tc-card a {
|
||||
color: #222;
|
||||
.tc-card-body-wrapper {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tc-card a:hover {
|
||||
text-decoration:none;
|
||||
.tc-tiddlylink.tc-card.tc-card-quote .tc-card-body:before {
|
||||
font-family: Georgia, serif;
|
||||
color: <<colour blockquote-bar>>;
|
||||
content: open-quote;
|
||||
font-size: 5em;
|
||||
line-height: 1;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card.tc-card-quote .tc-card-body:after {
|
||||
font-family: Georgia, serif;
|
||||
color: <<colour blockquote-bar>>;
|
||||
content: close-quote;
|
||||
font-size: 5em;
|
||||
line-height: 1;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.tc-tiddlylink.tc-card .tc-card-body-clear {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.tc-card-body > p {
|
||||
margin: 0.25em 0;
|
||||
}
|
||||
|
||||
.tc-card a:active, .tc-card a:focus, .tc-btn-download:active, .tc-btn-download:focus{
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.content {
|
||||
padding: 1px 16px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.tc-btn-download {
|
||||
|
@ -94,3 +94,38 @@ That renders as:
|
||||
|
||||
<<tw-code $tiddler$>>
|
||||
\end
|
||||
|
||||
\define flex-card(class,bordercolor:"",imageField:"image",captionField:"caption",subtitle:"",descriptionField:"description",linkField:"link")
|
||||
\whitespace trim
|
||||
<$link class={{{ [<__class__>addprefix[tc-card ]] }}} to={{{ [<currentTiddler>get<__linkField__>else<currentTiddler>] }}}>
|
||||
<div class="tc-card-accent" style.borderTop={{{ [<__bordercolor__>!is[blank]addprefix[5px solid ]] }}}>
|
||||
<$list filter="[<currentTiddler>has[ribbon-text]]" variable="ignore">
|
||||
<div class="tc-card-ribbon-wrapper">
|
||||
<div class="tc-card-ribbon" style.backgroundColor={{{ [<currentTiddler>get[ribbon-color]else[red]] }}}>
|
||||
<div class="tc-card-ribbon-inner">
|
||||
<$text text={{!!ribbon-text}}/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</$list>
|
||||
<$list filter="[<currentTiddler>has<__imageField__>]" variable="ignore">
|
||||
<div class="tc-card-image">
|
||||
<$image source={{{ [<currentTiddler>get<__imageField__>] }}}/>
|
||||
</div>
|
||||
</$list>
|
||||
<div class="tc-card-title"><$transclude field=<<__captionField__>>><$view field="title"/></$transclude></div>
|
||||
<$list filter="[<__subtitle__>!is[blank]]" variable="ignore">
|
||||
<div class="tc-card-subtitle">
|
||||
<$text text=<<__subtitle__>>/>
|
||||
</div>
|
||||
</$list>
|
||||
<div class="tc-card-body-wrapper">
|
||||
<div class="tc-card-body">
|
||||
<$transclude field=<<__descriptionField__>> mode="block"/>
|
||||
</div>
|
||||
<div class="tc-card-body-clear">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</$link>
|
||||
\end
|
||||
|
@ -0,0 +1,8 @@
|
||||
title: Testimonials - Joe Armstrong
|
||||
tags: Testimonial
|
||||
caption: Joe Armstrong, Co-inventor of Erlang
|
||||
extlink: https://joearms.github.io/
|
||||
|
||||
The ~TiddlyWiki is the best software I've ever found for organising my ideas.
|
||||
|
||||
It's well worth spending an hour or so playing with it to see how it can help you. This will be time well-spent and will change how you think and how you organise your ideas.
|
@ -0,0 +1,8 @@
|
||||
title: Testimonials - Network World
|
||||
tags: Testimonial
|
||||
caption: Mark Gibbs, Network World
|
||||
extlink: http://www.networkworld.com/article/3028098/open-source-tools/tiddlywiki-a-free-open-source-wiki-revisited.html
|
||||
|
||||
~TiddlyWiki gets a Gearhead rating of 6 out of 5 (it's that good).
|
||||
|
||||
Finding code that works flawlessly after just two or three years is magical enough but after seven years?!
|
@ -0,0 +1,6 @@
|
||||
title: Testimonials - Product Hunt
|
||||
tags: Testimonial
|
||||
caption: Product Hunt
|
||||
extlink: https://www.producthunt.com/posts/tiddlywiki-2?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-tiddlywiki-2
|
||||
|
||||
<div style="text-align:center;">{{Product Hunt Link}}</div>
|
@ -1,6 +1,6 @@
|
||||
caption: action-popup
|
||||
created: 20200303114556528
|
||||
modified: 20210501203451387
|
||||
modified: 20220815205132124
|
||||
tags: Widgets ActionWidgets
|
||||
title: ActionPopupWidget
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -15,10 +15,11 @@ The ''action-popup'' widget is invisible. Any content within it is ignored.
|
||||
|
||||
|!Attribute |!Description |
|
||||
|$state |The title of the state tiddler for the popup |
|
||||
|$coords |Optional coordinates for the handle to which popup is positioned (in the format `(x,y,w,h)`) |
|
||||
|$coords |Optional coordinates for the handle to which popup is positioned (see [[Coordinate Systems]] for the supported formats) |
|
||||
|$floating |<<.from-version "5.2.0">> Optional. Defaults to `no`. Set to `yes` to create a popup that must be closed explicitly. |
|
||||
|
||||
<<.from-version "5.1.23">> If the ''$coords'' attribute is missing or empty then all popups are cancelled.
|
||||
<<.from-version "5.1.23">> If the ''$coords'' attribute is missing or empty then all popups are cancelled.<br/>
|
||||
<<.from-version "5.2.4">> The ''$coords'' attribute supports absolute and relative coordinates. See [[Coordinate Systems]] for more information.
|
||||
|
||||
<<.tip "Delete the state tiddler for a floating popup to close it.">>
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
caption: button
|
||||
created: 20131024141900000
|
||||
modified: 20211009121239795
|
||||
modified: 20220810192251345
|
||||
tags: Widgets TriggeringWidgets
|
||||
title: ButtonWidget
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -37,6 +37,7 @@ The content of the `<$button>` widget is displayed within the button.
|
||||
|default |Default value if <<.attr set>> tiddler is missing for testing against <<.attr setTo>> to determine <<.attr selectedClass>> |
|
||||
|popup |Title of a state tiddler for a popup that is toggled when the button is clicked. See PopupMechanism for details |
|
||||
|popupTitle |Title of a state tiddler for a popup that is toggled when the button is clicked. In difference to the <<.attr popup>> attribute, ''no'' TextReference is used. See PopupMechanism for details |
|
||||
|popupAbsCoords |<<.from-version "5.2.4">> If set to ''yes'' writes absolute coordinates to the tiddler referenced by the <<.attr popup>>. If set to ''no'' (the default) uses relative coordinates. See [[Coordinate Systems]] for details |
|
||||
|aria-label |Optional [[Accessibility]] label |
|
||||
|tooltip |Optional tooltip |
|
||||
|class |An optional CSS class name to be assigned to the HTML element|
|
||||
|
@ -41,7 +41,8 @@ The LinkWidget incorporates the functionality of the DraggableWidget via the ''d
|
||||
|!Variables |!Description |
|
||||
|`modifier` |The [[modifier Variable]] contains the Modifier Key held while dragging |
|
||||
|`dom-*` |All DOM attributes of the node being dragged are made available as variables, with the prefix `dom-` |
|
||||
|`tv-popup-coords` |A co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the DOM node that's being dragged where the event originated |
|
||||
|`tv-popup-coords` |A relative co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the DOM node matching the selector where the event originated (see [[Coordinate Systems]] for more information) |
|
||||
|`tv-popup-abs-coords` |<<.from-version "5.2.4">> An absolute co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the DOM node matching the selector where the event originated (see [[Coordinate Systems]] for more information) |
|
||||
|`tv-selectednode-posx` |`x` offset position of the dragged DOM node |
|
||||
|`tv-selectednode-posy` |`y` offset position of the dragged DOM node |
|
||||
|`tv-selectednode-width` |`offsetWidth` of the dragged DOM node |
|
||||
|
@ -1,5 +1,5 @@
|
||||
created: 20201123113532200
|
||||
modified: 20220507184043398
|
||||
modified: 20221012194222875
|
||||
tags: Widgets TriggeringWidgets
|
||||
title: EventCatcherWidget
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -10,7 +10,7 @@ type: text/vnd.tiddlywiki
|
||||
|
||||
//This is an advanced widget intended for use by those familiar with HTML, CSS and JavaScript handling of DOM events.//
|
||||
|
||||
The event catcher widget traps DOM-initiated Javascript events dispatched within its child content, and allows invoking a series of ActionWidgets in response to those events.
|
||||
The event catcher widget traps DOM-initiated Javascript events dispatched within its child content, and allows invoking a series of ActionWidgets in response to those events.
|
||||
|
||||
In order for the events to be trapped:
|
||||
|
||||
@ -47,7 +47,8 @@ The following variables are made available to the actions:
|
||||
|`event-mousebutton` |The mouse button (if any) used to trigger the event (can be "left", "right" or "middle"). Note that not all event types support the mousebutton property |
|
||||
|`event-type` |The type property of the JavaScript event |
|
||||
|`event-detail-*` |Any properties in the detail attribute of the event are made available with the prefix `event-detail-` |
|
||||
|`tv-popup-coords` |A co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the DOM node matching the selector where the event originated |
|
||||
|`tv-popup-coords` |A relative co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the DOM node matching the selector where the event originated (see [[Coordinate Systems]] for more information) |
|
||||
|`tv-popup-abs-coords` |<<.from-version "5.2.4">> An absolute co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the DOM node matching the selector where the event originated (see [[Coordinate Systems]] for more information) |
|
||||
|`tv-widgetnode-width` |<<.from-version "5.2.3">> `offsetWidth` of the DOM node created by the eventcatcher widget |
|
||||
|`tv-widgetnode-height` |<<.from-version "5.2.3">> `offsetHeight` of the DOM node created by the eventcatcher widget |
|
||||
|`tv-selectednode-posx` |`x` offset position of the selected DOM node |
|
||||
|
@ -40,6 +40,7 @@ The content of the `<$select>` widget should be one or more HTML `<option>` or `
|
||||
|multiple |If present, switches to multiple selection mode |
|
||||
|size |The number of rows to display in multiple selection mode |
|
||||
|actions |A string containing ActionWidgets to be triggered when the key combination is detected |
|
||||
|focus |<<.from-version "5.2.4">> Optional. Set to "yes" to automatically focus the HTML select element after creation |
|
||||
|
||||
! Examples
|
||||
|
||||
|
@ -59,6 +59,8 @@ Home/Caption: strona główna
|
||||
Home/Hint: Otwórz domyślne tiddlery
|
||||
Language/Caption: języki
|
||||
Language/Hint: Zmień jezyk interfejsu
|
||||
LayoutSwitcher/Hint: Otwórz przełacznik układu
|
||||
LayoutSwitcher/Caption: układ
|
||||
Manager/Caption: menedżer tiddlerów
|
||||
Manager/Hint: Otwórz menedżer tiddlerów
|
||||
More/Caption: więcej
|
||||
|
18
languages/pl-PL/Help/commands.tid
Normal file
18
languages/pl-PL/Help/commands.tid
Normal file
@ -0,0 +1,18 @@
|
||||
title: $:/language/Help/commands
|
||||
description: Uruchom komendy zwrócone przez filtr
|
||||
|
||||
Uruchamia komendy zwrócone przez filtr.
|
||||
|
||||
```
|
||||
--commands <filter>
|
||||
```
|
||||
|
||||
Dla przykładu:
|
||||
|
||||
```
|
||||
--commands "[enlist{$:/build-commands-as-text}]"
|
||||
```
|
||||
|
||||
```
|
||||
--commands "[{$:/build-commands-as-json}jsonindexes[]] :map[{$:/build-commands-as-json}jsonget<currentTiddler>]"
|
||||
```
|
@ -1,11 +1,11 @@
|
||||
title: $:/language/Buttons/
|
||||
|
||||
AdvancedSearch/Caption: 高级查找
|
||||
AdvancedSearch/Hint: 高级查找
|
||||
AdvancedSearch/Caption: 高级搜索
|
||||
AdvancedSearch/Hint: 高级搜索
|
||||
Cancel/Caption: 取消
|
||||
Cancel/Hint: 放弃对此条目的更改
|
||||
Clone/Caption: 克隆
|
||||
Clone/Hint: 克隆此条目
|
||||
Cancel/Hint: 取消对此条目的修改
|
||||
Clone/Caption: 复制
|
||||
Clone/Hint: 复制此条目
|
||||
Close/Caption: 关闭
|
||||
Close/Hint: 关闭此条目
|
||||
CloseAll/Caption: 全部关闭
|
||||
@ -34,21 +34,21 @@ ExportTiddler/Caption: 导出此条目
|
||||
ExportTiddler/Hint: 导出此条目
|
||||
ExportTiddlers/Caption: 导出条目
|
||||
ExportTiddlers/Hint: 导出条目
|
||||
SidebarSearch/Hint: 选择侧边栏的查找字段
|
||||
Fold/Caption: 收合条目
|
||||
Fold/Hint: 收合此条目的内容
|
||||
SidebarSearch/Hint: 选择侧边栏的搜索字段
|
||||
Fold/Caption: 折叠条目
|
||||
Fold/Hint: 折叠此条目的内容
|
||||
Unfold/Caption: 展开条目
|
||||
Unfold/Hint: 展开此条目的内容
|
||||
FoldOthers/Caption: 收合其他条目
|
||||
FoldOthers/Hint: 收合其他已开启条目的内容
|
||||
FoldAll/Caption: 收合所有条目
|
||||
FoldAll/Hint: 收合所有已开启条目的内容
|
||||
Fold/FoldBar/Caption: 收合栏
|
||||
Fold/FoldBar/Hint: 可选的收合与展开条目的长条按钮
|
||||
FoldOthers/Caption: 折叠其他条目
|
||||
FoldOthers/Hint: 折叠其他已开启条目的内容
|
||||
FoldAll/Caption: 折叠所有条目
|
||||
FoldAll/Hint: 折叠所有已开启条目的内容
|
||||
Fold/FoldBar/Caption: 折叠栏
|
||||
Fold/FoldBar/Hint: 可选的折叠与展开条目的长条按钮
|
||||
UnfoldAll/Caption: 展开所有条目
|
||||
UnfoldAll/Hint: 展开所有已开启条目的内容
|
||||
FullScreen/Caption: 全屏幕
|
||||
FullScreen/Hint: 进入或离开全屏模式
|
||||
FullScreen/Caption: 全屏
|
||||
FullScreen/Hint: 进入或退出全屏模式
|
||||
Help/Caption: 帮助
|
||||
Help/Hint: 显示帮助面板
|
||||
Home/Caption: 首页
|
||||
@ -58,11 +58,13 @@ Import/Hint: 导入许多类型的文件包括文本、图像、~TiddlyWiki 或
|
||||
Info/Caption: 信息
|
||||
Info/Hint: 显示此条目的信息
|
||||
Language/Caption: 语言
|
||||
Language/Hint: 选择用户介面语言
|
||||
Language/Hint: 选择用户界面语言
|
||||
LayoutSwitcher/Hint: 开启布局切换器
|
||||
LayoutSwitcher/Caption: 布局
|
||||
Manager/Caption: 条目管理器
|
||||
Manager/Hint: 开启条目管理器
|
||||
More/Caption: 更多
|
||||
More/Hint: 更多动作
|
||||
More/Hint: 更多操作
|
||||
NewHere/Caption: 添加子条目
|
||||
NewHere/Hint: 创建一个标签为此条目名称的新条目
|
||||
NewJournal/Caption: 添加日志
|
||||
@ -91,7 +93,7 @@ Save/Caption: 确定
|
||||
Save/Hint: 确定对此条目的更改
|
||||
SaveWiki/Caption: 保存变更
|
||||
SaveWiki/Hint: 保存变更
|
||||
StoryView/Caption: 查看模式
|
||||
StoryView/Caption: 视图模式
|
||||
StoryView/Hint: 选择查看条目的视觉效果
|
||||
HideSideBar/Caption: 隐藏侧边栏
|
||||
HideSideBar/Hint: 隐藏侧边栏
|
||||
@ -99,20 +101,20 @@ ShowSideBar/Caption: 显示侧边栏
|
||||
ShowSideBar/Hint: 显示侧边栏
|
||||
TagManager/Caption: 标签管理
|
||||
TagManager/Hint: 标签管理
|
||||
Timestamp/Caption: 时间戳记
|
||||
Timestamp/Hint: 选择修改是否更新时间戳记
|
||||
Timestamp/On/Caption: 时间戳记开启
|
||||
Timestamp/On/Hint: 条目被修改时,更新时间戳记
|
||||
Timestamp/Off/Caption: 时间戳记关闭
|
||||
Timestamp/Off/Hint: 条目被修改时,不更新时间戳记
|
||||
Theme/Caption: 布景主题
|
||||
Theme/Hint: 选择布景主题
|
||||
Timestamp/Caption: 时间戳
|
||||
Timestamp/Hint: 选择修改是否更新时间戳
|
||||
Timestamp/On/Caption: 时间戳开启
|
||||
Timestamp/On/Hint: 条目被修改时,更新时间戳
|
||||
Timestamp/Off/Caption: 时间戳关闭
|
||||
Timestamp/Off/Hint: 条目被修改时,不更新时间戳
|
||||
Theme/Caption: 布局主题
|
||||
Theme/Hint: 选择布局主题
|
||||
Bold/Caption: 粗体
|
||||
Bold/Hint: 套用粗体格式于所选文本
|
||||
Clear/Caption: 清除
|
||||
Clear/Hint: 清除图像为纯色
|
||||
EditorHeight/Caption: 编辑器高度
|
||||
EditorHeight/Caption/Auto: 自动调整高度以适合内容
|
||||
EditorHeight/Caption/Auto: 自动调整高度以适应内容
|
||||
EditorHeight/Caption/Fixed: 固定高度︰
|
||||
EditorHeight/Hint: 选择文本编辑器的高度
|
||||
Excise/Caption: 剪切
|
||||
@ -124,7 +126,7 @@ Excise/Caption/Replace/Macro: 宏
|
||||
Excise/Caption/Replace/Link: 链接
|
||||
Excise/Caption/Replace/Transclusion: 嵌入
|
||||
Excise/Caption/Tag: 将新条目的标签设为此条目的名称
|
||||
Excise/Caption/TiddlerExists: 警示:条目已经存在
|
||||
Excise/Caption/TiddlerExists: 提醒:条目已经存在
|
||||
Excise/Hint: 剪切所选文本到一个新条目
|
||||
Heading1/Caption: 标题 1
|
||||
Heading1/Hint: 套用标题级别 1 的格式于包含所选文本的列
|
||||
@ -164,8 +166,8 @@ Preview/Caption: 预览
|
||||
Preview/Hint: 显示预览窗格
|
||||
PreviewType/Caption: 预览类型
|
||||
PreviewType/Hint: 选择预览类型
|
||||
Quote/Caption: 引言
|
||||
Quote/Hint: 套用引言文本格式于包含所选文本的列
|
||||
Quote/Caption: 引用
|
||||
Quote/Hint: 套用引用文本格式于包含所选文本的列
|
||||
RotateLeft/Caption: 向左旋转
|
||||
RotateLeft/Hint: 图像向左旋转 90 度
|
||||
Size/Caption: 图像大小
|
||||
@ -177,7 +179,7 @@ Stamp/Caption: 印记
|
||||
Stamp/Caption/New: 添加您自己的
|
||||
Stamp/Hint: 插入一个预配置的文本片段
|
||||
Stamp/New/Title: 在选单中显示的标题
|
||||
Stamp/New/Text: 片段的文本。(记得在 `caption` 栏位中添加一个说明性的标题)。
|
||||
Stamp/New/Text: 片段的文本。(记得在 `caption` 字段中添加一个说明性的标题)。
|
||||
Strikethrough/Caption: 删除线
|
||||
Strikethrough/Hint: 套用删除线格式于所选文本
|
||||
Subscript/Caption: 下标
|
||||
|
@ -2,11 +2,11 @@ title: $:/language/ControlPanel/
|
||||
|
||||
Advanced/Caption: 高级
|
||||
Advanced/Hint: 关于此 TiddlyWiki 的内部信息
|
||||
Appearance/Caption: 视觉外观
|
||||
Appearance/Caption: 外观
|
||||
Appearance/Hint: 定制您的 TiddlyWiki 外观。
|
||||
Basics/AnimDuration/Prompt: 动画持续时间
|
||||
Basics/AutoFocus/Prompt: 编辑条目时的默认自动停留栏位
|
||||
Basics/Caption: 基本
|
||||
Basics/AutoFocus/Prompt: 编辑条目时的默认自动停留字段
|
||||
Basics/Caption: 基础
|
||||
Basics/DefaultTiddlers/BottomHint: 标题含空白时请使用 [[双中括弧]],或者您可用 {{保留开启中的条目顺序||$:/snippets/retain-story-ordering-button}}
|
||||
Basics/DefaultTiddlers/Prompt: 首页
|
||||
Basics/DefaultTiddlers/TopHint: 默认开启的条目
|
||||
@ -92,8 +92,8 @@ Plugins/PluginWillRequireReload: (需要重新加载)
|
||||
Plugins/Plugins/Caption: 插件
|
||||
Plugins/Plugins/Hint: 插件
|
||||
Plugins/Reinstall/Caption: 重新安装
|
||||
Plugins/Themes/Caption: 布景主题
|
||||
Plugins/Themes/Hint: 布景主题插件
|
||||
Plugins/Themes/Caption: 布局主题
|
||||
Plugins/Themes/Hint: 布局主题插件
|
||||
Plugins/Update/Caption: 更新
|
||||
Plugins/Updates/Caption: 更新
|
||||
Plugins/Updates/Hint: 已安装插件的可用更新
|
||||
@ -165,18 +165,18 @@ Settings/LinkToBehaviour/InsideRiver/Hint: 从故事河//中//导航
|
||||
Settings/LinkToBehaviour/OutsideRiver/Hint: 从故事河//外//导航
|
||||
Settings/LinkToBehaviour/OpenAbove: 开启于当前条目之上
|
||||
Settings/LinkToBehaviour/OpenBelow: 开启于当前条目之下
|
||||
Settings/LinkToBehaviour/OpenAtTop: 开启于故事河的顶端
|
||||
Settings/LinkToBehaviour/OpenAtTop: 开启于故事河的顶部
|
||||
Settings/LinkToBehaviour/OpenAtBottom: 开启于故事河的底部
|
||||
Settings/MissingLinks/Caption: 维基链接
|
||||
Settings/MissingLinks/Hint: 选择是否要链接到尚未存在的条目
|
||||
Settings/MissingLinks/Description: 启用链接到佚失条目
|
||||
Settings/NavigationAddressBar/Caption: 网址栏导览
|
||||
Settings/NavigationAddressBar/Hint: 在浏览器网址栏导览到条目时的行为:
|
||||
Settings/NavigationAddressBar/Caption: 网址栏导航
|
||||
Settings/NavigationAddressBar/Hint: 在浏览器网址栏导航到条目时的行为:
|
||||
Settings/NavigationAddressBar/No/Description: 不更新网址栏
|
||||
Settings/NavigationAddressBar/Permalink/Description: 包含目标条目
|
||||
Settings/NavigationAddressBar/Permaview/Description: 包括目标条目和当前已开启的条目序列
|
||||
Settings/NavigationHistory/Caption: 历史记录导览
|
||||
Settings/NavigationHistory/Hint: 当导览到条目时,更新浏览器历史记录:
|
||||
Settings/NavigationHistory/Caption: 历史记录导航
|
||||
Settings/NavigationHistory/Hint: 当导航到条目时,更新浏览器历史记录:
|
||||
Settings/NavigationHistory/No/Description: 不更新历史记录
|
||||
Settings/NavigationHistory/Yes/Description: 更新历史记录
|
||||
Settings/NavigationPermalinkviewMode/Caption: 引用链接/固定链接 模式
|
||||
@ -201,18 +201,18 @@ Settings/TitleLinks/No/Description: 不显示条目标题为链接
|
||||
Settings/TitleLinks/Yes/Description: 显示条目标题为链接
|
||||
StoryTiddler/Caption: 故事条目
|
||||
StoryTiddler/Hint: 此规则级联用于动态选择模板,以便在故事河中显示条目。
|
||||
StoryView/Caption: 查看模式
|
||||
StoryView/Prompt: 当前的查看模式:
|
||||
StoryView/Caption: 视图模式
|
||||
StoryView/Prompt: 当前的视图模式:
|
||||
Stylesheets/Caption: 样式表
|
||||
Stylesheets/Expand/Caption: 全部展开
|
||||
Stylesheets/Hint: 这是当前标签为 <<tag "$:/tags/Stylesheet">> 的样式表条目呈现的 CSS
|
||||
Stylesheets/Restore/Caption: 复原
|
||||
Theme/Caption: 布景主题
|
||||
Theme/Prompt: 当前的布景主题:
|
||||
Theme/Caption: 布局主题
|
||||
Theme/Prompt: 当前的布局主题:
|
||||
TiddlerColour/Caption: 条目颜色
|
||||
TiddlerColour/Hint: 此规则级联用于动态地为条目选择颜色 (用于图示和关联的标签丸)。
|
||||
TiddlerFields/Caption: 条目栏位
|
||||
TiddlerFields/Hint: 这是本维基使用中的所有条目栏位(含系统条目的栏位,但默认条目的栏位除外)。
|
||||
TiddlerFields/Caption: 条目字段
|
||||
TiddlerFields/Hint: 这是本维基使用中的所有条目字段(含系统条目的字段,但默认条目的字段除外)。
|
||||
TiddlerIcon/Caption: 条目图示
|
||||
TiddlerIcon/Hint: 此规则级联用于动态地为条目选择图示。
|
||||
Toolbars/Caption: 工具栏
|
||||
@ -224,7 +224,7 @@ Toolbars/PageControls/Hint: 选择将显示哪些按钮于主页面的工具栏
|
||||
Toolbars/EditorToolbar/Caption: 编辑器工具栏
|
||||
Toolbars/EditorToolbar/Hint: 选择将显示哪些按钮于编辑器工具栏。请注意,某些按钮只会出现在编辑某一类型的条目时。拖放可改变顺序。
|
||||
Toolbars/ViewToolbar/Caption: 查看工具栏
|
||||
Toolbars/ViewToolbar/Hint: 选择将显示哪些按钮于条目的查看模式工具栏。拖放可改变顺序。
|
||||
Toolbars/ViewToolbar/Hint: 选择将显示哪些按钮于条目的视图模式工具栏。拖放可改变顺序。
|
||||
Tools/Download/Full/Caption: 下载完整副本
|
||||
ViewTemplateBody/Caption: 查看模板主体
|
||||
ViewTemplateBody/Hint: 默认的查看模板使用此规则级联,动态选择模板以显示条目的主体。
|
||||
|
@ -4,5 +4,5 @@ title: $:/core/zh-Hans/readme
|
||||
|
||||
* JavaScript 代码模块
|
||||
* 图标
|
||||
* 创建 TiddlyWiki 的用户介面所需的模板
|
||||
* 创建 TiddlyWiki 的用户界面所需的模板
|
||||
* 核心所使用的可当地语系化字串的英国英语 (''en-GB'') 翻译
|
||||
|
@ -16,10 +16,10 @@ parser: 不同内容类型的解析器。
|
||||
route: 定义内置 HTTP 服务器如何处理各个网址格式。
|
||||
saver: 于浏览器保存文件的不同的保存处理方法。
|
||||
startup: 启动时期的功能函数。
|
||||
storyview: 查看模式用以自订 list 小部件的动画与行为。
|
||||
storyview: 视图模式用以自订 list 小部件的动画与行为。
|
||||
texteditoroperation: 一个文本编辑器工具栏操作。
|
||||
tiddlerdeserializer: 转换不同内容类型至条目。
|
||||
tiddlerfield: 定义个别条目栏位的行为。
|
||||
tiddlerfield: 定义个别条目字段的行为。
|
||||
tiddlermethod: 添加方法至 `$tw.Tiddler` 原型。
|
||||
upgrader: 于升级/导入过程中,套用升级处理至条目。
|
||||
utils: 添加方法至 `$tw.utils`。
|
||||
|
@ -1,11 +1,11 @@
|
||||
title: $:/language/Docs/PaletteColours/
|
||||
|
||||
alert-background: 警示背景
|
||||
alert-border: 警示边框
|
||||
alert-highlight: 警示高亮度
|
||||
alert-muted-foreground: 警示的低调前景
|
||||
alert-background: 提醒背景
|
||||
alert-border: 提醒边框
|
||||
alert-highlight: 提醒高亮度
|
||||
alert-muted-foreground: 提醒的低调前景
|
||||
background: 一般背景
|
||||
blockquote-bar: 引言条
|
||||
blockquote-bar: 引用条
|
||||
button-background: 默认按钮背景
|
||||
button-border: 默认按钮边框
|
||||
button-foreground: 默认按钮前景
|
||||
@ -66,7 +66,7 @@ sidebar-tab-foreground: 侧边栏页签前景
|
||||
sidebar-tiddler-link-foreground-hover: 侧边栏悬停条目链结前景
|
||||
sidebar-tiddler-link-foreground: 侧边栏条目链结前景
|
||||
site-title-foreground: 网站标题前景
|
||||
static-alert-foreground: 静态警示前景
|
||||
static-alert-foreground: 静态提醒前景
|
||||
tab-background-selected: 选定的页签背景
|
||||
tab-background: 页签背景
|
||||
tab-border-selected: 选定的页签边框
|
||||
@ -87,8 +87,8 @@ tiddler-controls-foreground: 条目控制项前景
|
||||
tiddler-editor-background: 条目编辑器背景
|
||||
tiddler-editor-border-image: 条目编辑器边框图片
|
||||
tiddler-editor-border: 条目编辑器边框
|
||||
tiddler-editor-fields-even: 条目编辑器中偶数栏位背景
|
||||
tiddler-editor-fields-odd: 条目编辑器中奇数栏位背景
|
||||
tiddler-editor-fields-even: 条目编辑器中偶数字段背景
|
||||
tiddler-editor-fields-odd: 条目编辑器中奇数字段背景
|
||||
tiddler-info-background: 条目信息面板背景
|
||||
tiddler-info-border: 条目信息面板边框
|
||||
tiddler-info-tab-background: 条目信息面板页签背景
|
||||
|
@ -5,21 +5,21 @@ bag: 条目的来源集的名称
|
||||
caption: 显示于页签或按钮上的标题文字
|
||||
code-body: 若设置为 ''yes'',视图模板将以程式码形式显示条目
|
||||
color: 条目的 CSS 颜色值
|
||||
component: 负责[[警示条目|AlertMechanism]]的组件名称
|
||||
component: 负责[[提醒条目|AlertMechanism]]的组件名称
|
||||
created: 条目的创建日期
|
||||
creator: 条目的创建者
|
||||
current-tiddler: 用于缓存[[浏览历史列表|HistoryMechanism]]的最上层条目
|
||||
dependents: 插件的相依插件列表
|
||||
dependents: 插件的依赖插件列表
|
||||
description: 插件的说明、描述
|
||||
draft.of: 草稿条目,包含条目的标题、标签、栏位 ...
|
||||
draft.of: 草稿条目,包含条目的标题、标签、字段 ...
|
||||
draft.title: 草稿条目的标题
|
||||
footer: 互动窗口的注脚
|
||||
hide-body: 若设置为 ''yes'',视图模板将隐藏条目的主体
|
||||
icon: 条目的标题含有与条目关联的图标
|
||||
library: 若设置为 ''yes'',表示条目应该被保存为一个 JavaScript 程序库
|
||||
list: 条目的列表,指定一些条目的标题清单
|
||||
list-before:当前条目名称将被添加到条目排序清单中的设置条目名称之前,或若此栏位存在但是空的,则被添加于清单的前端
|
||||
list-after: 当前条目名称将被添加到条目排序清单的设置条目名称之后,或若此栏位存在但是空的,则被添加于清单的尾端
|
||||
list-before:当前条目名称将被添加到条目排序清单中的设置条目名称之前,或若此字段存在但是空的,则被添加于清单的前端
|
||||
list-after: 当前条目名称将被添加到条目排序清单的设置条目名称之后,或若此字段存在但是空的,则被添加于清单的尾端
|
||||
modified: 条目的最近修改日期与时间
|
||||
modifier: 条目的最近修改者
|
||||
name: 具可读性的插件条目的名称
|
||||
|
@ -9,7 +9,7 @@ Drafts: 草稿条目
|
||||
Orphans: 孤立条目
|
||||
SystemTiddlers: 系统条目
|
||||
ShadowTiddlers: 默认条目
|
||||
OverriddenShadowTiddlers: 被覆写的默认条目
|
||||
OverriddenShadowTiddlers: 被覆盖的默认条目
|
||||
SessionTiddlers: 自维基加载后修改的条目
|
||||
SystemTags: 系统标签
|
||||
StoryList: 故事河中的条目,不含 ~$:/AdvancedSearch
|
||||
|
@ -1,9 +1,10 @@
|
||||
title: GettingStarted
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Basics/
|
||||
欢迎使用 ~TiddlyWiki 及参与 ~TiddlyWiki 社群
|
||||
|
||||
开始将重要资讯存放于 ~TiddlyWiki 之前,确认您可以可靠地保存变更是很重要的。详细资讯请参阅 https://tiddlywiki.com/#GettingStarted
|
||||
欢迎来到 ~TiddlyWiki 和 ~TiddlyWiki 社区
|
||||
|
||||
开始在 ~TiddlyWiki 中存储重要信息之前,确保能够可靠地保存更改很重要。详情见 https://tiddlywiki.com/#GettingStarted
|
||||
|
||||
!! 设置此 ~TiddlyWiki
|
||||
|
||||
@ -15,4 +16,4 @@ title: GettingStarted
|
||||
|^ <$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link><br><<lingo DefaultTiddlers/TopHint>>|<$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
|
||||
</div>
|
||||
|
||||
请参阅[[控制台|$:/ControlPanel]]查看更多选项。
|
||||
可在[[控制台|$:/ControlPanel]]查看更多选项。
|
18
languages/zh-Hans/Help/commands.tid
Normal file
18
languages/zh-Hans/Help/commands.tid
Normal file
@ -0,0 +1,18 @@
|
||||
title: $:/language/Help/commands
|
||||
description: 运行从筛选器传回的命令
|
||||
|
||||
按顺序运行从筛选器传回的命令符记
|
||||
|
||||
```
|
||||
--commands <filter>
|
||||
```
|
||||
|
||||
示例
|
||||
|
||||
```
|
||||
--commands "[enlist{$:/build-commands-as-text}]"
|
||||
```
|
||||
|
||||
```
|
||||
--commands "[{$:/build-commands-as-json}jsonindexes[]] :map[{$:/build-commands-as-json}jsonget<currentTiddler>]"
|
||||
```
|
@ -1,7 +1,7 @@
|
||||
title: $:/language/Help/fetch
|
||||
description: 通过网址从维基撷取条目
|
||||
description: 通过网址从维基提取条目
|
||||
|
||||
通过 HTTP/HTTPS 撷取一个或多个文件,并导入匹配筛选器的条目,可选的转换传入的名称。
|
||||
通过 HTTP/HTTPS 提取一个或多个文件,并导入匹配筛选器的条目,可选的转换传入的名称。
|
||||
|
||||
```
|
||||
--fetch file <url> <import-filter> <transform-filter>
|
||||
@ -10,11 +10,11 @@ description: 通过网址从维基撷取条目
|
||||
--fetch raw-files <url-filter> <transform-filter>
|
||||
```
|
||||
|
||||
"file" 和 "files" 选项撷取指定的文件,并尝试导入其中的条目(与将文件拖动到浏览器视窗中的处理相同)。 "raw-file" 和 "raw-files" 变选项撷取指定的文件,并将原始文件资料存储于条目,而不套用导入逻辑。
|
||||
"file" 和 "files" 选项提取指定的文件,并尝试导入其中的条目(与将文件拖动到浏览器视窗中的处理相同)。 "raw-file" 和 "raw-files" 变选项提取指定的文件,并将原始文件资料存储于条目,而不套用导入逻辑。
|
||||
|
||||
使用 "file" and "raw-file" 选项为仅撷取单个文件,且第一个参数为要读取文件的网址。
|
||||
使用 "file" and "raw-file" 选项为仅提取单个文件,且第一个参数为要读取文件的网址。
|
||||
|
||||
使用 "files" 和 "raw-files" 选项为撷取多个文件,且第一个参数是一个产生要读取文件的网址清单的筛选器。例如,给定标签为 "remote-server" 的一组具有字段 "url" 的条目,筛选器 `[tag[remote-server]get[url]]` 将取回所有可用的网址。
|
||||
使用 "files" 和 "raw-files" 选项为提取多个文件,且第一个参数是一个产生要读取文件的网址清单的筛选器。例如,给定标签为 "remote-server" 的一组具有字段 "url" 的条目,筛选器 `[tag[remote-server]get[url]]` 将取回所有可用的网址。
|
||||
|
||||
对于 "file" 和 "files" 选项,the `<import-filter>` 参数指定一个筛选器,用于确定要导入哪些条目。如果未提供,则默认为 `[all[tiddlers]]`。
|
||||
|
||||
@ -22,7 +22,7 @@ description: 通过网址从维基撷取条目
|
||||
|
||||
于 `--fetch` 之前使用 `--verbose` 命令,将在导入期间输出进度信息。
|
||||
|
||||
请注意,TiddlyWiki 不会撷取一个已经加载插件的旧版本。
|
||||
请注意,TiddlyWiki 不会提取一个已经加载插件的旧版本。
|
||||
|
||||
以下示例从 https://tiddlywiki.com 取回所有非系统条目,并将其保存到一个 JSON 文件:
|
||||
|
||||
|
@ -19,5 +19,5 @@ tiddlywiki ./MyWikiFolder --init empty
|
||||
* 其中 "edition" 默认为 ''empty''
|
||||
* 若 wiki 文件夹不是空的,则初始化命令将失败
|
||||
* 初始化命令会删除 'tiddlywiki.info' 文件内所有 'includeWikis' 的定义。
|
||||
* 当指定多个版本时,这些版本于初始化后,将覆写早期版本共用的所有文件 (故此最终的 `tiddlywiki.info` 文件将是从最近的版本复制而得)
|
||||
* 当指定多个版本时,这些版本于初始化后,将覆盖早期版本共用的所有文件 (故此最终的 `tiddlywiki.info` 文件将是从最近的版本复制而得)
|
||||
* `--editions` 传回所有可用版本的清单。
|
||||
|
@ -16,16 +16,16 @@ listen 命令使用[[命名的命令参数|NamedCommandParameters]]:
|
||||
* ''port'' - 侦听的埠号;非数值会被解译为一个系统环境变数,从其中提取埠号 (默认为 "8080")
|
||||
* ''credentials'' - 凭证 CSV 文件的路径名(相对于维基文件夹)
|
||||
* ''anon-username'' - 匿名用户的编辑署名
|
||||
* ''username'' - 可选的基本验证用户名称
|
||||
* ''password'' - 可选的基本验证密码
|
||||
* ''username'' - 可选的基础验证用户名称
|
||||
* ''password'' - 可选的基础验证密码
|
||||
* ''authenticated-user-header'' - 可选的标头名称,用于受信任身份验证
|
||||
* ''readers'' - 允许读取此维基,以逗号分隔的用户名称的清单
|
||||
* ''writers'' - 允许写入此维基,以逗号分隔的用户名称的清单
|
||||
* ''csrf-disable'' - 设置为 "yes" 以禁用 CSRF 检查 (默认为 "no")
|
||||
* ''sse-enabled'' - 设置为 "yes" 以启用服务器传送的事件 (默认为 "no")
|
||||
* ''root-tiddler'' - 服务的基本条目 (默认为 "$:/core/save/all")
|
||||
* ''root-render-type'' - 呈现的基本条目的内容类型 (默认为 "text/plain")
|
||||
* ''root-serve-type'' - 服务的基本条目的内容类型 (默认为 "text/html")
|
||||
* ''root-tiddler'' - 服务的基础条目 (默认为 "$:/core/save/all")
|
||||
* ''root-render-type'' - 呈现的基础条目的内容类型 (默认为 "text/plain")
|
||||
* ''root-serve-type'' - 服务的基础条目的内容类型 (默认为 "text/html")
|
||||
* ''tls-cert'' - TLS 证书文件的路径名(相对于维基文件夹)
|
||||
* ''tls-key'' - TLS 密钥文件的路径名(相对于维基文件夹)
|
||||
* ''debug-level'' - 可选的调试级别;设置为 "debug" 来查看请求的详细信息;(默认为 "none")
|
||||
|
@ -3,7 +3,7 @@ description: 构建升级处理所需的程式库插件
|
||||
|
||||
为升级处理构建 `$:/UpgradeLibrary` 条目。
|
||||
|
||||
升级程式库被格式化为一个插件类型为 `library` 的一般插件条目。它包含 TiddlyWiki5 存储库中所有可用的插件、布景主题和语言包的副本。
|
||||
升级程式库被格式化为一个插件类型为 `library` 的一般插件条目。它包含 TiddlyWiki5 存储库中所有可用的插件、布局主题和语言包的副本。
|
||||
|
||||
此命令仅供内部使用;它只是与使用者构建一个自订的升级程序相关。
|
||||
|
||||
|
@ -11,6 +11,6 @@ description: 将一群条目的原始内容保存到一个文件夹
|
||||
|
||||
默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。
|
||||
|
||||
保存指定的文件之前,会先清除输出目录的现有文件。可藉由指定 ''noclean'' 旗标,禁用该删除动作。
|
||||
保存指定的文件之前,会先清除输出目录的现有文件。可藉由指定 ''noclean'' 旗标,禁用该删除操作。
|
||||
|
||||
自动创建在路径中任何缺少的文件夹。
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user