mirror of
				https://github.com/Jermolene/TiddlyWiki5
				synced 2025-10-31 15:42:59 +00:00 
			
		
		
		
	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
This commit is contained in:
		| @@ -9,7 +9,7 @@ Action widget to create a new tiddler with a unique name and specified fields. | |||||||
| (function(){ | (function(){ | ||||||
|  |  | ||||||
| /*jslint node: true, browser: true */ | /*jslint node: true, browser: true */ | ||||||
| /*global $tw: false */ | /*global $tw:false, require:false, exports:false */ | ||||||
| "use strict"; | "use strict"; | ||||||
|  |  | ||||||
| var Widget = require("$:/core/modules/widgets/widget.js").widget; | var Widget = require("$:/core/modules/widgets/widget.js").widget; | ||||||
| @@ -36,9 +36,15 @@ Compute the internal state of the widget | |||||||
| */ | */ | ||||||
| CreateTiddlerWidget.prototype.execute = function() { | CreateTiddlerWidget.prototype.execute = function() { | ||||||
| 	this.actionBaseTitle = this.getAttribute("$basetitle"); | 	this.actionBaseTitle = this.getAttribute("$basetitle"); | ||||||
|  | 	this.hasBase = !!this.actionBaseTitle; | ||||||
| 	this.actionSaveTitle = this.getAttribute("$savetitle"); | 	this.actionSaveTitle = this.getAttribute("$savetitle"); | ||||||
| 	this.actionSaveDraftTitle = this.getAttribute("$savedrafttitle"); | 	this.actionSaveDraftTitle = this.getAttribute("$savedrafttitle"); | ||||||
| 	this.actionTimestamp = this.getAttribute("$timestamp","yes") === "yes"; | 	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 | Invoke the action associated with this widget | ||||||
| */ | */ | ||||||
| CreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) { | 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 = {}, | 		fields = {}, | ||||||
| 		creationFields, | 		creationFields, | ||||||
| 		modificationFields; | 		modificationFields; | ||||||
| @@ -70,7 +76,22 @@ CreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) { | |||||||
| 		creationFields = this.wiki.getCreationFields(); | 		creationFields = this.wiki.getCreationFields(); | ||||||
| 		modificationFields = this.wiki.getModificationFields(); | 		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) { | 	if(this.actionSaveTitle) { | ||||||
| 		this.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable("currentTiddler")); | 		this.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable("currentTiddler")); | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -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 | ||||||
| @@ -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 | ||||||
| @@ -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 | ||||||
| @@ -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 | ||||||
| @@ -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]] | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| caption: action-createtiddler | caption: action-createtiddler | ||||||
| created: 20161020152745942 | created: 20161020152745942 | ||||||
| modified: 20190604113017742 | modified: 20200131151847266 | ||||||
| tags: Widgets ActionWidgets | tags: Widgets ActionWidgets | ||||||
| title: ActionCreateTiddlerWidget | title: ActionCreateTiddlerWidget | ||||||
| type: text/vnd.tiddlywiki | 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 | | |$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 | | |$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" | | |$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  | | |//{any attributes not starting with $}// |Each attribute name specifies a field to be created in the new tiddler  | | ||||||
|  |  | ||||||
| ! Examples | ! 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}} | ||||||
|  | <<< | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Mario Pietsch
					Mario Pietsch