mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-24 02:27:19 +00:00
e9405ac810
* Fix for Bug #6618 This Commit fixes Bug #6618. It is a little bit more complicated than using one tiddler to store the new value for a field. Because the following can happen: * The user types "not-a-date" into the field value of a simple text field. * The user now selects a field name that uses a HTML5 date editor. The Editor will show no date because the value cannot be parsed. * The user saves the tiddler by clicking the checkmark. Now the date-field contains the value "not-a-date" but the user was not aware that this will be added. The edit control showed no date (because the value was invalid) and the user assumed the field was empty and won't be added to the tiddler. To prevent this, every kind of field editor gets its own storage tiddler. Its name is derived from the SHA256-hash of the name of the tiddler that is returned by the Field Editor Cascade. That way every editor in the cascade is only seeing its input. As long as the default setup (with one default editor) is used, everything works like in 5.2.1. This commit also fixes the bug that the after adding a field the field-type input box was not focused again. * Update Documentation for Field Editor Cascade The fix for bug #6618 makes the handling of the tiddler backing the edit operation much more complicated. See previous commit "Fix for Bug #6618" for more details.
51 lines
2.9 KiB
Plaintext
51 lines
2.9 KiB
Plaintext
title: $:/core/ui/EditTemplate
|
|
|
|
\define delete-edittemplate-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [prefix<newFieldValueTiddlerPrefix>] [<newFieldNameInputTiddler>] [<newFieldNameSelectionTiddler>] [<newTagNameTiddler>] [<newTagNameInputTiddler>] [<newTagNameSelectionTiddler>] [<typeInputTiddler>] [<typeSelectionTiddler>]"/>
|
|
|
|
\define get-field-value-tiddler-filter() [subfilter<get-field-editor-filter>sha256[16]addprefix[/]addprefix<newFieldValueTiddlerPrefix>]
|
|
\define get-field-editor-filter() [<newFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]
|
|
|
|
\define save-tiddler-actions()
|
|
\whitespace trim
|
|
<$action-sendmessage $message="tm-add-tag" $param={{{ [<newTagNameTiddler>get[text]] }}}/>
|
|
<$action-sendmessage $message="tm-add-field" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldNameTiddler>get[text]] :map[subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
|
|
<<delete-edittemplate-state-tiddlers>>
|
|
<$action-sendmessage $message="tm-save-tiddler"/>
|
|
\end
|
|
|
|
\define cancel-delete-tiddler-actions(message)
|
|
\whitespace trim
|
|
<<delete-edittemplate-state-tiddlers>>
|
|
<$action-sendmessage $message="tm-$message$-tiddler"/>
|
|
\end
|
|
|
|
\whitespace trim
|
|
<div
|
|
data-tiddler-title=<<currentTiddler>>
|
|
data-tags={{!!tags}}
|
|
class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>
|
|
<$fieldmangler>
|
|
<$vars
|
|
storyTiddler=<<currentTiddler>>
|
|
newTagNameTiddler=<<qualify "$:/temp/NewTagName">>
|
|
newFieldNameTiddler=<<qualify "$:/temp/NewFieldName">>
|
|
newFieldValueTiddlerPrefix=<<qualify "$:/temp/NewFieldValue">>
|
|
newFieldNameInputTiddler=<<qualify "$:/temp/NewFieldName/input">>
|
|
newFieldNameSelectionTiddler=<<qualify "$:/temp/NewFieldName/selected-item">>
|
|
newTagNameInputTiddler=<<qualify "$:/temp/NewTagName/input">>
|
|
newTagNameSelectionTiddler=<<qualify "$:/temp/NewTagName/selected-item">>
|
|
typeInputTiddler=<<qualify "$:/temp/Type/input">>
|
|
typeSelectionTiddler=<<qualify "$:/temp/Type/selected-item">>>
|
|
<$keyboard key="((cancel-edit-tiddler))" actions=<<cancel-delete-tiddler-actions "cancel">> tag="div">
|
|
<$keyboard key="((save-tiddler))" actions=<<save-tiddler-actions>> tag="div">
|
|
<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]" variable="listItem">
|
|
<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">
|
|
<$transclude tiddler=<<listItem>>/>
|
|
</$set>
|
|
</$list>
|
|
</$keyboard>
|
|
</$keyboard>
|
|
</$vars>
|
|
</$fieldmangler>
|
|
</div>
|