Action create tiddler improvements (#4436)

* add a new-line before the log text to increase readability of the test output

* make eslint, jslint happy

* add $template and $overwrite parameter

* documentation for new parameters + 4 new examples

* remove unwanted files
Jermolene-patch-1
Mario Pietsch 2020-04-15 16:51:21 +02:00 zatwierdzone przez GitHub
rodzic 7cbe766bde
commit 22802b4be8
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
7 zmienionych plików z 174 dodań i 6 usunięć

Wyświetl plik

@ -9,7 +9,7 @@ Action widget to create a new tiddler with a unique name and specified fields.
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
/*global $tw:false, require:false, exports:false */
"use strict";
var Widget = require("$:/core/modules/widgets/widget.js").widget;
@ -36,9 +36,15 @@ Compute the internal state of the widget
*/
CreateTiddlerWidget.prototype.execute = function() {
this.actionBaseTitle = this.getAttribute("$basetitle");
this.hasBase = !!this.actionBaseTitle;
this.actionSaveTitle = this.getAttribute("$savetitle");
this.actionSaveDraftTitle = this.getAttribute("$savedrafttitle");
this.actionTimestamp = this.getAttribute("$timestamp","yes") === "yes";
//Following params are new since 5.1.22
this.actionTemplate = this.getAttribute("$template");
this.useTemplate = !!this.actionTemplate;
this.actionOverwrite = this.getAttribute("$overwrite","no");
};
/*
@ -57,7 +63,7 @@ CreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {
Invoke the action associated with this widget
*/
CreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {
var title = this.wiki.generateNewTitle(this.actionBaseTitle),
var title = this.wiki.getTiddlerText("$:/language/DefaultNewTiddlerTitle"), // Get the initial new-tiddler title
fields = {},
creationFields,
modificationFields;
@ -70,7 +76,22 @@ CreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {
creationFields = this.wiki.getCreationFields();
modificationFields = this.wiki.getModificationFields();
}
var tiddler = this.wiki.addTiddler(new $tw.Tiddler(creationFields,fields,modificationFields,{title: title}));
if(this.hasBase && this.actionOverwrite === "no") {
title = this.wiki.generateNewTitle(this.actionBaseTitle);
} else if (this.hasBase && this.actionOverwrite === "yes") {
title = this.actionBaseTitle
}
// NO $basetitle BUT $template parameter is available
// the title MUST be unique, otherwise the template would be overwritten
if (!this.hasBase && this.useTemplate) {
title = this.wiki.generateNewTitle(this.actionTemplate);
} else if (!this.hasBase && !this.useTemplate) {
// If NO $basetitle AND NO $template use initial title
// DON'T overwrite any stuff
title = this.wiki.generateNewTitle(title);
}
var templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};
var tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));
if(this.actionSaveTitle) {
this.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable("currentTiddler"));
}

Wyświetl plik

@ -0,0 +1,26 @@
created: 20200131142401129
modified: 20200131152023958
tags: ActionCreateTiddlerWidget
title: ActionCreateTiddlerWidget Example 1
type: text/vnd.tiddlywiki
\define testCreate()
<$action-createtiddler />
\end
This example will create "New Tiddler", "New Tiddler 1", " New Tiddler 2" and so on
```
\define testCreate()
<$action-createtiddler />
\end
<$button actions=<<testCreate>> >
Create Tiddler
</$button>
```
<$button actions=<<testCreate>> >
<$action-setfield $tiddler="$:/state/tab/sidebar-1206596165" text="$:/core/ui/SideBar/Recent"/>
Create Tiddler
</$button> - Clicking this button, will also open the Right sidebar: Recent tab

Wyświetl plik

@ -0,0 +1,28 @@
created: 20200131144828713
modified: 20200131152102232
tags: ActionCreateTiddlerWidget
title: ActionCreateTiddlerWidget Example 2
type: text/vnd.tiddlywiki
\define testCreate()
<$action-createtiddler $basetitle={{$:/language/DefaultNewTiddlerTitle}} $overwrite="yes"/>
\end
This example will use the base title defined in [[$:/language/DefaultNewTiddlerTitle]].
It will overwrite the tiddler, if the button is clicked several times.
```
\define testCreate()
<$action-createtiddler $basetitle={{$:/language/DefaultNewTiddlerTitle}} $overwrite="yes"/>
\end
<$button actions=<<testCreate>> >
Create Tiddler
</$button>
```
<$button actions=<<testCreate>> >
<$action-setfield $tiddler="$:/state/tab/sidebar-1206596165" text="$:/core/ui/SideBar/Recent"/>
Create Tiddler
</$button> - Clicking this button, will also open the Right sidebar: Recent tab

Wyświetl plik

@ -0,0 +1,28 @@
created: 20200131145355658
modified: 20200131152045990
tags: ActionCreateTiddlerWidget
title: ActionCreateTiddlerWidget Example 3
type: text/vnd.tiddlywiki
\define testCreate()
<$action-createtiddler $basetitle="base" $template="ActionCreateTiddlerWidget Template"/>
\end
This example will uses a base-title and a template: [[ActionCreateTiddlerWidget Template]]
It will create: "base", "base 1", "base 2" and so on
```
\define testCreate()
<$action-createtiddler $basetitle="base" $template="ActionCreateTiddlerWidget Template"/>
\end
<$button actions=<<testCreate>> >
Create Tiddler
</$button>
```
<$button actions=<<testCreate>> >
<$action-setfield $tiddler="$:/state/tab/sidebar-1206596165" text="$:/core/ui/SideBar/Recent"/>
Create Tiddler
</$button> - Clicking this button, will also open the Right sidebar: Recent tab

Wyświetl plik

@ -0,0 +1,28 @@
created: 20200131150229551
modified: 20200131152051626
tags: ActionCreateTiddlerWidget
title: ActionCreateTiddlerWidget Example 4
type: text/vnd.tiddlywiki
\define testCreate()
<$action-createtiddler $basetitle="base" $template="ActionCreateTiddlerWidget Template" aa="new field aa" bb="new field bb" />
\end
This example will uses a base-title: "base" and a template: [[ActionCreateTiddlerWidget Template]].
There will be new fields "aa" and "bb" which are added to the new tiddlers.
```
\define testCreate()
<$action-createtiddler $basetitle="base" $template="ActionCreateTiddlerWidget Template" aa="new field aa" bb="new field bb" />
\end
<$button actions=<<testCreate>> >
Create Tiddler
</$button>
```
<$button actions=<<testCreate>> >
<$action-setfield $tiddler="$:/state/tab/sidebar-1206596165" text="$:/core/ui/SideBar/Recent"/>
Create Tiddler
</$button> - Clicking this button, will also open the Right sidebar: Recent tab

Wyświetl plik

@ -0,0 +1,8 @@
created: 20200131145608087
modified: 20200131150801682
tags: test
title: ActionCreateTiddlerWidget Template
type: text/vnd.tiddlywiki
x: x
This is a tiddler used as a template in: [[ActionCreateTiddlerWidget Example 3]]

Wyświetl plik

@ -1,6 +1,6 @@
caption: action-createtiddler
created: 20161020152745942
modified: 20190604113017742
modified: 20200131151847266
tags: Widgets ActionWidgets
title: ActionCreateTiddlerWidget
type: text/vnd.tiddlywiki
@ -23,9 +23,38 @@ The ''action-createtiddler'' widget is invisible. Any content within it is ignor
|$savetitle |A text reference identifying a field or index into which the title of the newly created tiddler will be stored after it is created |
|$savedrafttitle |<<.from-version "5.1.20">> A text reference identifying a field or index into which the draft title associated with the newly created tiddler will be stored after it is created. This is useful when using a sequence of action widgets to create a new tiddler, put it into edit mode, and position it within the list of its parent tag |
|$timestamp |Specifies whether the timestamp(s) of the target tiddler will be updated (''modified'' and ''modifier'', plus ''created'' and ''creator'' for newly created tiddlers). Can be "yes" (the default) or "no" |
|$template |<<.from-version "5.1.22">> The title of a template tiddler, that will be used to create a new tiddler |
|$overwrite |<<.from-version "5.1.22">> If set to "yes", it will overwrite existing tiddlers. ''Be careful!'' |
|//{any attributes not starting with $}// |Each attribute name specifies a field to be created in the new tiddler |
! Examples
<$macrocall $name='wikitext-example-without-html'
src={{ActionCreateTiddlerWidget Example}}/>
<<<
<$macrocall $name='wikitext-example-without-html' src={{ActionCreateTiddlerWidget Example}}/>
<<<
---
<<<
<$transclude tiddler="ActionCreateTiddlerWidget Example 1" mode=block/>
<<<
---
<<<
{{ActionCreateTiddlerWidget Example 2}}
<<<
---
<<<
{{ActionCreateTiddlerWidget Example 3}}
<<<
---
<<<
{{ActionCreateTiddlerWidget Example 4}}
<<<