mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-12-28 02:50:27 +00:00
Add provisional version of new tagger manager
For discussion
This commit is contained in:
parent
3bceb98119
commit
e98d324e66
9
core/images/list.tid
Normal file
9
core/images/list.tid
Normal file
@ -0,0 +1,9 @@
|
||||
title: $:/core/images/list
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-list tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M0.719999312,185.568543 C2.21955287,181.862817 3.0452019,177.812144 3.0452019,173.568542 C3.0452019,155.891545 -11.2816707,141.568542 -28.9547636,141.568542 L-60.9548326,141.568542 C-78.6344937,141.568542 -92.9547981,155.895431 -92.9547981,173.568542 C-92.9547981,191.24554 -78.6279255,205.568542 -60.9548326,205.568542 L-28.9547636,205.568542 C-27.593228,205.568542 -26.2516158,205.483573 -24.9349335,205.31865 C-31.5207556,201.78951 -36.8809788,196.272192 -40.2126959,189.568542 L-60.9493786,189.568542 C-69.7889277,189.568542 -76.9547981,182.407041 -76.9547981,173.568542 C-76.9547981,164.731986 -69.7994766,157.568542 -60.9493786,157.568542 L-28.9602176,157.568542 C-20.1206685,157.568542 -12.9547981,164.730044 -12.9547981,173.568542 C-12.9547981,176.946528 -14.0004297,180.080016 -15.7866505,182.6623 C-13.6856165,184.473592 -10.949961,185.568542 -7.9585771,185.568542 L0.720002586,185.568542 Z" transform="translate(-44.954798, 173.568542) rotate(-225.000000) translate(44.954798, -173.568542) "></path>
|
||||
<path d="M87.7480315,128 L23.9992458,128 C19.5813843,128 16,124.409247 16,119.993027 L16,8.00697327 C16,3.58484404 19.5881049,0 23.9992458,0 L104.000754,0 C108.418616,0 112,3.59075293 112,8.00697327 L112,104 L91.2492027,104 C90.2848199,104 89.410573,104.391703 88.7768998,105.025201 C88.1373658,105.661376 87.7480315,106.53563 87.7480315,107.501171 L87.7480315,128 Z M95.7480315,127.879386 L111.627417,112 L95.7480315,112 L95.7480315,127.879386 Z M40,15.5089165 C40,13.5709954 41.5636015,12 43.4998101,12 L98.5001899,12 C100.433082,12 102,13.5614718 102,15.5089165 L102,16.4910835 C102,18.4290046 100.436399,20 98.5001899,20 L43.4998101,20 C41.5669183,20 40,18.4385282 40,16.4910835 L40,15.5089165 Z M32,22 C35.3137085,22 38,19.3137085 38,16 C38,12.6862915 35.3137085,10 32,10 C28.6862915,10 26,12.6862915 26,16 C26,19.3137085 28.6862915,22 32,22 Z M40,31.5089165 C40,29.5709954 41.5636015,28 43.4998101,28 L98.5001899,28 C100.433082,28 102,29.5614718 102,31.5089165 L102,32.4910835 C102,34.4290046 100.436399,36 98.5001899,36 L43.4998101,36 C41.5669183,36 40,34.4385282 40,32.4910835 L40,31.5089165 Z M40,47.5089165 C40,45.5709954 41.5636015,44 43.4998101,44 L98.5001899,44 C100.433082,44 102,45.5614718 102,47.5089165 L102,48.4910835 C102,50.4290046 100.436399,52 98.5001899,52 L43.4998101,52 C41.5669183,52 40,50.4385282 40,48.4910835 L40,47.5089165 Z M40,63.5089165 C40,61.5709954 41.5636015,60 43.4998101,60 L98.5001899,60 C100.433082,60 102,61.5614718 102,63.5089165 L102,64.4910835 C102,66.4290046 100.436399,68 98.5001899,68 L43.4998101,68 C41.5669183,68 40,66.4385282 40,64.4910835 L40,63.5089165 Z M40,79.5089165 C40,77.5709954 41.5636015,76 43.4998101,76 L98.5001899,76 C100.433082,76 102,77.5614718 102,79.5089165 L102,80.4910835 C102,82.4290046 100.436399,84 98.5001899,84 L43.4998101,84 C41.5669183,84 40,82.4385282 40,80.4910835 L40,79.5089165 Z M40,95.5089165 C40,93.5709954 41.5636015,92 43.4998101,92 L98.5001899,92 C100.433082,92 102,93.5614718 102,95.5089165 L102,96.4910835 C102,98.4290046 100.436399,100 98.5001899,100 L43.4998101,100 C41.5669183,100 40,98.4385282 40,96.4910835 L40,95.5089165 Z M40,111.508916 C40,109.570995 41.5680474,108 43.4972017,108 L76.5027983,108 C78.4342495,108 80,109.561472 80,111.508916 L80,112.491084 C80,114.429005 78.4319526,116 76.5027983,116 L43.4972017,116 C41.5657505,116 40,114.438528 40,112.491084 L40,111.508916 Z M32,38 C35.3137085,38 38,35.3137085 38,32 C38,28.6862915 35.3137085,26 32,26 C28.6862915,26 26,28.6862915 26,32 C26,35.3137085 28.6862915,38 32,38 Z M32,54 C35.3137085,54 38,51.3137085 38,48 C38,44.6862915 35.3137085,42 32,42 C28.6862915,42 26,44.6862915 26,48 C26,51.3137085 28.6862915,54 32,54 Z M32,70 C35.3137085,70 38,67.3137085 38,64 C38,60.6862915 35.3137085,58 32,58 C28.6862915,58 26,60.6862915 26,64 C26,67.3137085 28.6862915,70 32,70 Z M32,86 C35.3137085,86 38,83.3137085 38,80 C38,76.6862915 35.3137085,74 32,74 C28.6862915,74 26,76.6862915 26,80 C26,83.3137085 28.6862915,86 32,86 Z M32,102 C35.3137085,102 38,99.3137085 38,96 C38,92.6862915 35.3137085,90 32,90 C28.6862915,90 26,92.6862915 26,96 C26,99.3137085 28.6862915,102 32,102 Z M32,118 C35.3137085,118 38,115.313708 38,112 C38,108.686292 35.3137085,106 32,106 C28.6862915,106 26,108.686292 26,112 C26,115.313708 28.6862915,118 32,118 Z"></path>
|
||||
</g>
|
||||
</svg>
|
@ -54,6 +54,8 @@ Home/Caption: home
|
||||
Home/Hint: Open the default tiddlers
|
||||
Language/Caption: language
|
||||
Language/Hint: Choose the user interface language
|
||||
Manager/Caption: tiddler manager
|
||||
Manager/Hint: Open tiddler manager
|
||||
More/Caption: more
|
||||
More/Hint: More actions
|
||||
NewHere/Caption: new here
|
||||
|
@ -43,6 +43,8 @@ OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywik
|
||||
PluginReloadWarning: Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect
|
||||
RecentChanges/DateFormat: DDth MMM YYYY
|
||||
SystemTiddler/Tooltip: This is a system tiddler
|
||||
Tagger/Caption: Tagger
|
||||
TagManager/Caption: Tags
|
||||
TagManager/Colour/Heading: Colour
|
||||
TagManager/Count/Heading: Count
|
||||
TagManager/Icon/Heading: Icon
|
||||
|
@ -12,6 +12,23 @@ Filter operators for manipulating the current selection list
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Order a list
|
||||
*/
|
||||
exports.order = function(source,operator,options) {
|
||||
var results = [];
|
||||
if(operator.operand.toLowerCase() === "reverse") {
|
||||
source(function(tiddler,title) {
|
||||
results.unshift(title);
|
||||
});
|
||||
} else {
|
||||
source(function(tiddler,title) {
|
||||
results.push(title);
|
||||
});
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
||||
/*
|
||||
Reverse list
|
||||
*/
|
||||
|
@ -17,19 +17,30 @@ Export our filter function
|
||||
*/
|
||||
exports.tag = function(source,operator,options) {
|
||||
var results = [];
|
||||
if(operator.prefix === "!") {
|
||||
if((operator.suffix || "").toLowerCase() === "strict" && !operator.operand) {
|
||||
// New semantics:
|
||||
// Always return copy of input if operator.operand is missing
|
||||
source(function(tiddler,title) {
|
||||
if(tiddler && !tiddler.hasTag(operator.operand)) {
|
||||
results.push(title);
|
||||
}
|
||||
results.push(title);
|
||||
});
|
||||
} else {
|
||||
source(function(tiddler,title) {
|
||||
if(tiddler && tiddler.hasTag(operator.operand)) {
|
||||
results.push(title);
|
||||
}
|
||||
});
|
||||
results = options.wiki.sortByList(results,operator.operand);
|
||||
// Old semantics:
|
||||
if(operator.prefix === "!") {
|
||||
// Returns a copy of the input if operator.operand is missing
|
||||
source(function(tiddler,title) {
|
||||
if(tiddler && !tiddler.hasTag(operator.operand)) {
|
||||
results.push(title);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Returns empty results if operator.operand is missing
|
||||
source(function(tiddler,title) {
|
||||
if(tiddler && tiddler.hasTag(operator.operand)) {
|
||||
results.push(title);
|
||||
}
|
||||
});
|
||||
results = options.wiki.sortByList(results,operator.operand);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
@ -16,16 +16,22 @@ Filter operator returning all the selected tiddlers that are untagged
|
||||
Export our filter function
|
||||
*/
|
||||
exports.untagged = function(source,operator,options) {
|
||||
var results = [];
|
||||
var results = [],
|
||||
isTagged = (operator.operand || operator.suffix || "").toLowerCase() === "no" ?
|
||||
function(tiddler) {
|
||||
return false;
|
||||
} : function(tiddler) {
|
||||
return tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0;
|
||||
};
|
||||
if(operator.prefix === "!") {
|
||||
source(function(tiddler,title) {
|
||||
if(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {
|
||||
if(isTagged(tiddler)) {
|
||||
$tw.utils.pushTop(results,title);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
source(function(tiddler,title) {
|
||||
if(!tiddler || !tiddler.hasField("tags") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {
|
||||
if(!isTagged(tiddler)) {
|
||||
$tw.utils.pushTop(results,title);
|
||||
}
|
||||
});
|
||||
|
@ -202,32 +202,42 @@ DropZoneWidget.prototype.importDataTypes = [
|
||||
];
|
||||
|
||||
DropZoneWidget.prototype.handlePasteEvent = function(event) {
|
||||
var self = this,
|
||||
createTiddlerFromString = function(text,type) {
|
||||
var tiddlerFields = {
|
||||
title: self.wiki.generateNewTitle("Untitled"),
|
||||
text: text,
|
||||
type: type
|
||||
};
|
||||
if($tw.log.IMPORT) {
|
||||
console.log("Importing string '" + text + "', type: '" + type + "'");
|
||||
}
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify([tiddlerFields])});
|
||||
};
|
||||
// Let the browser handle it if we're in a textarea or input box
|
||||
if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) == -1) {
|
||||
var self = this,
|
||||
items = event.clipboardData.items;
|
||||
var items = event.clipboardData.items;
|
||||
// Enumerate the clipboard items
|
||||
for(var t = 0; t<items.length; t++) {
|
||||
var item = items[t];
|
||||
if(item.kind === "file") {
|
||||
// Import any files
|
||||
this.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
});
|
||||
} else if(item.kind === "string") {
|
||||
// Create tiddlers from string items
|
||||
var type = item.type;
|
||||
item.getAsString(function(str) {
|
||||
var tiddlerFields = {
|
||||
title: self.wiki.generateNewTitle("Untitled"),
|
||||
text: str,
|
||||
type: type
|
||||
};
|
||||
if($tw.log.IMPORT) {
|
||||
console.log("Importing string '" + str + "', type: '" + type + "'");
|
||||
}
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify([tiddlerFields])});
|
||||
});
|
||||
if(items) {
|
||||
for(var t = 0; t<items.length; t++) {
|
||||
var item = items[t];
|
||||
if(item.kind === "file") {
|
||||
// Import any files
|
||||
this.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
});
|
||||
} else if(item.kind === "string") {
|
||||
// Create tiddlers from string items
|
||||
item.getAsString(function(str) {
|
||||
createTiddlerFromString(str,item.type);
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Enumerate the clipboard types
|
||||
var type = event.clipboardData.types[0];
|
||||
if(type) {
|
||||
createTiddlerFromString(event.clipboardData.getData(type),type);
|
||||
}
|
||||
}
|
||||
// Tell the browser that we've handled the paste
|
||||
|
@ -2,11 +2,13 @@ title: $:/core/ui/EditTemplate/tags
|
||||
tags: $:/tags/EditTemplate
|
||||
|
||||
\define lingo-base() $:/language/EditTemplate/
|
||||
|
||||
\define tag-styles()
|
||||
background-color:$(backgroundColor)$;
|
||||
fill:$(foregroundColor)$;
|
||||
color:$(foregroundColor)$;
|
||||
\end
|
||||
|
||||
\define tag-body-inner(colour,fallbackTarget,colourA,colourB)
|
||||
<$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$""">
|
||||
<span style=<<tag-styles>> class="tc-tag-label">
|
||||
@ -15,39 +17,24 @@ color:$(foregroundColor)$;
|
||||
</span>
|
||||
</$vars>
|
||||
\end
|
||||
|
||||
\define tag-body(colour,palette)
|
||||
<$macrocall $name="tag-body-inner" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/>
|
||||
\end
|
||||
|
||||
\define tag-picker-actions()
|
||||
<$action-listops
|
||||
$tiddler=<<currentTiddler>>
|
||||
$field="tags"
|
||||
$subfilter="[<tag>] [all[current]tags[]]"
|
||||
/>
|
||||
\end
|
||||
|
||||
<div class="tc-edit-tags">
|
||||
<$fieldmangler>
|
||||
<$list filter="[all[current]tags[]sort[title]]" storyview="pop">
|
||||
<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}}/>
|
||||
</$list>
|
||||
|
||||
<div class="tc-edit-add-tag">
|
||||
<span class="tc-add-tag-name">
|
||||
<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle"/>
|
||||
</span> <$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class="tc-add-tag-button">
|
||||
<$button message="tm-add-tag" param={{$:/temp/NewTagName}} set="$:/temp/NewTagName" setTo="" class="">
|
||||
<<lingo Tags/Add/Button>>
|
||||
</$button>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="tc-block-dropdown-wrapper">
|
||||
<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default="">
|
||||
<div class="tc-block-dropdown">
|
||||
<$linkcatcher set="$:/temp/NewTagName" setTo="" message="tm-add-tag">
|
||||
<$list filter="[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]">
|
||||
{{||$:/core/ui/Components/tag-link}}
|
||||
</$list>
|
||||
<hr>
|
||||
<$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]">
|
||||
{{||$:/core/ui/Components/tag-link}}
|
||||
</$list>
|
||||
</$linkcatcher>
|
||||
</div>
|
||||
</$reveal>
|
||||
</div>
|
||||
</$fieldmangler>
|
||||
</div>
|
||||
<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/>
|
||||
</div>
|
||||
|
7
core/ui/Manager.tid
Normal file
7
core/ui/Manager.tid
Normal file
@ -0,0 +1,7 @@
|
||||
title: $:/Manager
|
||||
icon: $:/core/images/list
|
||||
color: #bbb
|
||||
|
||||
<div class="tc-manager">
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/Manager]!has[draft.of]]" "$:/TagManager">>
|
||||
</div>
|
19
core/ui/PageControls/manager.tid
Normal file
19
core/ui/PageControls/manager.tid
Normal file
@ -0,0 +1,19 @@
|
||||
title: $:/core/ui/Buttons/manager
|
||||
tags: $:/tags/PageControls
|
||||
caption: {{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}
|
||||
description: {{$:/language/Buttons/Manager/Hint}}
|
||||
|
||||
\define manager-button(class)
|
||||
<$button to="$:/Manager" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class="""$(tv-config-toolbar-class)$ $class$""">
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
|
||||
{{$:/core/images/list}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>
|
||||
</$list>
|
||||
</$button>
|
||||
\end
|
||||
|
||||
<$list filter="[list[$:/StoryList]] +[field:title[$:/Manager]]" emptyMessage=<<manager-button>>>
|
||||
<<manager-button "tc-selected">>
|
||||
</$list>
|
@ -1,6 +1,8 @@
|
||||
title: $:/TagManager
|
||||
tags: $:/tags/Manager
|
||||
icon: $:/core/images/tag-button
|
||||
color: #bbb
|
||||
caption: {{$:/language/TagManager/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/TagManager/
|
||||
\define iconEditorTab(type)
|
||||
@ -51,7 +53,7 @@ $title$$(currentTiddler)$
|
||||
<$list filter="[tags[]!is[system]sort[title]]">
|
||||
<tr>
|
||||
<td><$edit-text field="color" tag="input" type="color"/></td>
|
||||
<td><$transclude tiddler="$:/core/ui/TagTemplate"/></td>
|
||||
<td><$macrocall $name="tag" tag=<<currentTiddler>>/></td>
|
||||
<td><$count filter="[all[current]tagging[]]"/></td>
|
||||
<td>
|
||||
<$macrocall $name="iconEditor" title={{!!title}}/>
|
||||
|
@ -1,30 +1,3 @@
|
||||
title: $:/core/ui/TagTemplate
|
||||
|
||||
\define tag-styles()
|
||||
background-color:$(backgroundColor)$;
|
||||
fill:$(foregroundColor)$;
|
||||
color:$(foregroundColor)$;
|
||||
\end
|
||||
|
||||
\define tag-body-inner(colour,fallbackTarget,colourA,colourB)
|
||||
<$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$""">
|
||||
<$button popup=<<qualify "$:/state/popup/tag">> class="tc-btn-invisible tc-tag-label" style=<<tag-styles>>>
|
||||
<$transclude tiddler={{!!icon}}/> <$view field="title" format="text" />
|
||||
</$button>
|
||||
<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"><$transclude tiddler="$:/core/ui/ListItemTemplate"/>
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem">
|
||||
<$transclude tiddler=<<listItem>>/>
|
||||
</$list>
|
||||
<hr>
|
||||
<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/>
|
||||
</$reveal>
|
||||
</$vars>
|
||||
\end
|
||||
|
||||
\define tag-body(colour,palette)
|
||||
<span class="tc-tag-list-item">
|
||||
<$macrocall $name="tag-body-inner" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/>
|
||||
</span>
|
||||
\end
|
||||
|
||||
<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}}/>
|
||||
<$macrocall $name="tag" tag=<<currentTiddler>>/>
|
||||
|
122
core/ui/Tagger.tid
Normal file
122
core/ui/Tagger.tid
Normal file
@ -0,0 +1,122 @@
|
||||
title: $:/Tagger
|
||||
tags: $:/tags/Manager
|
||||
icon: $:/core/images/list
|
||||
color: #bbb
|
||||
caption: {{$:/language/Tagger/Caption}}
|
||||
|
||||
\define tag-checkbox-actions()
|
||||
<$action-listops
|
||||
$tiddler="$:/config/Tagger/RecentTags"
|
||||
$subfilter="[<tag>] [list[$:/config/Tagger/RecentTags]] +[limit[12]]"
|
||||
/>
|
||||
\end
|
||||
|
||||
\define tag-picker-actions()
|
||||
<<tag-checkbox-actions>>
|
||||
<$action-listops
|
||||
$tiddler=<<currentTiddler>>
|
||||
$field="tags"
|
||||
$subfilter="[<tag>] [all[current]tags[]]"
|
||||
/>
|
||||
\end
|
||||
|
||||
<div class="tc-manager-wrapper">
|
||||
<div class="tc-manager-controls">
|
||||
<div class="tc-manager-control">
|
||||
Search: <$edit-text tiddler="$:/config/Tagger/Filter" tag="input" default="" placeholder="Search"/>
|
||||
</div>
|
||||
<div class="tc-manager-control">
|
||||
Filter by tag: <$select tiddler="$:/config/Tagger/Tag" default="">
|
||||
<option value="">(none)</option>
|
||||
<$list filter="[!is{$:/config/Tagger/System}tags[]!is[system]sort[title]]" variable="tag">
|
||||
<option value=<<tag>>><$text text=<<tag>>/></option>
|
||||
</$list>
|
||||
</$select>
|
||||
</div>
|
||||
<div class="tc-manager-control">
|
||||
Sort by: <$select tiddler="$:/config/Tagger/Sort" default="title">
|
||||
<optgroup label="Common">
|
||||
<$list filter="title modified modifier created creator created" variable="field">
|
||||
<option value=<<field>>><$text text=<<field>>/></option>
|
||||
</$list>
|
||||
</optgroup>
|
||||
<optgroup label="All">
|
||||
<$list filter="[!is{$:/config/Tagger/System}fields[]sort[title]] -title -modified -modifier -created -creator -created" variable="field">
|
||||
<option value=<<field>>><$text text=<<field>>/></option>
|
||||
</$list>
|
||||
</optgroup>
|
||||
</$select>
|
||||
<$checkbox tiddler="$:/config/Tagger/Order" field="text" checked="reverse" unchecked="forward" default="forward">
|
||||
Reverse order
|
||||
</$checkbox>
|
||||
</div>
|
||||
<div class="tc-manager-control">
|
||||
<$checkbox tiddler="$:/config/Tagger/Untagged" field="text" checked="yes" unchecked="no" default="no">
|
||||
Only show untagged tiddlers
|
||||
</$checkbox>
|
||||
</div>
|
||||
<div class="tc-manager-control">
|
||||
<$checkbox tiddler="$:/config/Tagger/System" field="text" checked="missing" unchecked="system" default="system">
|
||||
Show system tiddlers
|
||||
</$checkbox>
|
||||
</div>
|
||||
<div class="tc-manager-control">
|
||||
<$checkbox tiddler="$:/config/Tagger/View" field="text" checked="plain" unchecked="wikified" default="wikified">
|
||||
Show raw text
|
||||
</$checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tc-manager-list">
|
||||
<$list filter="[!is{$:/config/Tagger/System}search{$:/config/Tagger/Filter}tag:strict{$:/config/Tagger/Tag}untagged:no{$:/config/Tagger/Untagged}sort{$:/config/Tagger/Sort}order{$:/config/Tagger/Order}]">
|
||||
<$vars transclusion=<<currentTiddler>>>
|
||||
<div style="tc-manager-list-item">
|
||||
<$button popup=<<qualify "$:/state/manager/popup">> class="tc-btn-invisible tc-manager-list-item-heading">
|
||||
<$text text=<<currentTiddler>>/>
|
||||
</$button>
|
||||
<$reveal state=<<qualify "$:/state/manager/popup">> type="nomatch" text="" default="" tag="div" class="tc-manager-list-item-content tc-popup-handle">
|
||||
<div class="tc-manager-list-item-content-tiddler">
|
||||
<div class="tc-manager-list-item-content-tiddler-item">
|
||||
<$reveal state="$:/config/Tagger/View" type="nomatch" text="plain">
|
||||
<$transclude mode="block"/>
|
||||
</$reveal>
|
||||
<$reveal state="$:/config/Tagger/View" type="match" text="plain">
|
||||
<pre>
|
||||
<code>
|
||||
<$view/>
|
||||
</code>
|
||||
</pre>
|
||||
</$reveal>
|
||||
</div>
|
||||
<table class="tc-manager-list-item-content-tiddler-item tc-manager-list-item-content-tiddler-item-table">
|
||||
<tbody>
|
||||
<$list filter="[all[current]fields[]sort[title]] -text" template="$:/core/ui/TiddlerFieldTemplate" variable="listItem"/>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="tc-manager-list-item-content-sidebar">
|
||||
<div class="tc-manager-list-item-content-sidebar-item">
|
||||
<$list filter="[is[current]tags[]] [list[$:/config/Tagger/RecentTags]] +[sort[title]] " variable="tag">
|
||||
<div>
|
||||
<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>
|
||||
<$macrocall $name="tag-pill" tag=<<tag>>/>
|
||||
</$checkbox>
|
||||
</div>
|
||||
</$list>
|
||||
<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/>
|
||||
</div>
|
||||
<div class="tc-manager-list-item-content-sidebar-item">
|
||||
<p>
|
||||
<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>
|
||||
</p>
|
||||
<p>
|
||||
<$button message="tm-edit-tiddler" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</$reveal>
|
||||
</div>
|
||||
</$vars>
|
||||
</$list>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -11,6 +11,7 @@ core/ui/Buttons/refresh: hide
|
||||
core/ui/Buttons/import: hide
|
||||
core/ui/Buttons/language: hide
|
||||
core/ui/Buttons/tag-manager: hide
|
||||
core/ui/Buttons/manager: hide
|
||||
core/ui/Buttons/more-page-actions: hide
|
||||
core/ui/Buttons/new-journal: hide
|
||||
core/ui/Buttons/new-image: hide
|
||||
|
9
core/wiki/config/Tagger.multids
Normal file
9
core/wiki/config/Tagger.multids
Normal file
@ -0,0 +1,9 @@
|
||||
title: $:/config/Tagger/
|
||||
|
||||
Filter:
|
||||
Order: forward
|
||||
Sort: title
|
||||
System: system
|
||||
Tag:
|
||||
Untagged: no
|
||||
View: wikified
|
41
core/wiki/macros/tag-picker.tid
Normal file
41
core/wiki/macros/tag-picker.tid
Normal file
@ -0,0 +1,41 @@
|
||||
title: $:/core/macros/tag-picker
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define tag-button()
|
||||
<$button class="tc-btn-invisible" tag="a">
|
||||
$(actions)$
|
||||
<$action-deletetiddler $tiddler="$:/temp/NewTagName"/>
|
||||
<$macrocall $name="tag-pill" tag=<<tag>>/>
|
||||
</$button>
|
||||
\end
|
||||
|
||||
\define tag-picker(actions)
|
||||
<$set name="actions" value="""$actions$""">
|
||||
<div class="tc-edit-add-tag">
|
||||
<span class="tc-add-tag-name">
|
||||
<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle"/>
|
||||
</span> <$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class="tc-add-tag-button">
|
||||
<$set name="tag" value={{$:/temp/NewTagName}}>
|
||||
<$button set="$:/temp/NewTagName" setTo="" class="">
|
||||
$actions$
|
||||
<$action-deletetiddler $tiddler="$:/temp/NewTagName"/>
|
||||
{{$:/language/EditTemplate/Tags/Add/Button}}
|
||||
</$button>
|
||||
</$set>
|
||||
</span>
|
||||
</div>
|
||||
<div class="tc-block-dropdown-wrapper">
|
||||
<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default="">
|
||||
<div class="tc-block-dropdown">
|
||||
<$list filter="[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag">
|
||||
<<tag-button>>
|
||||
</$list>
|
||||
<hr>
|
||||
<$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag">
|
||||
<<tag-button>>
|
||||
</$list>
|
||||
</div>
|
||||
</$reveal>
|
||||
</div>
|
||||
</$set>
|
||||
\end
|
@ -1,6 +1,44 @@
|
||||
title: $:/core/macros/tag
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define tag(tag)
|
||||
{{$tag$||$:/core/ui/TagTemplate}}
|
||||
\define tag-pill-styles()
|
||||
background-color:$(backgroundColor)$;
|
||||
fill:$(foregroundColor)$;
|
||||
color:$(foregroundColor)$;
|
||||
\end
|
||||
|
||||
\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)
|
||||
<$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$""">
|
||||
<$element-tag$ $element-attributes$ class="tc-tag-label tc-btn-invisible" style=<<tag-pill-styles>>>
|
||||
$actions$<$transclude tiddler="""$icon$"""/> <$view tiddler="""$tag$""" field="title" format="text" />
|
||||
</$element-tag$>
|
||||
</$vars>
|
||||
\end
|
||||
|
||||
\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)
|
||||
<$macrocall $name="tag-pill-inner" tag="""$tag$""" icon="""$icon$""" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/>
|
||||
\end
|
||||
|
||||
\define tag-pill(tag,element-tag:"span",element-attributes:"",actions:"")
|
||||
<span class="tc-tag-list-item">
|
||||
<$macrocall $name="tag-pill-body" tag="""$tag$""" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/>
|
||||
</span>
|
||||
\end
|
||||
|
||||
\define tag(tag)
|
||||
<span class="tc-tag-list-item">
|
||||
<$set name="transclusion" value="""$tag$""">
|
||||
<$macrocall $name="tag-pill-body" tag="""$tag$""" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">>"""/>
|
||||
<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down">
|
||||
<$tiddler tiddler="""$tag$""">
|
||||
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem">
|
||||
<$transclude tiddler=<<listItem>>/>
|
||||
</$list>
|
||||
<hr>
|
||||
<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/>
|
||||
</$tiddler>
|
||||
</$reveal>
|
||||
</$set>
|
||||
</span>
|
||||
\end
|
||||
|
@ -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/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/full-screen]] [[$:/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/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]]
|
||||
|
@ -1,18 +1,23 @@
|
||||
caption: tag
|
||||
created: 20140410103123179
|
||||
modified: 20150203191853000
|
||||
modified: 20161126122900712
|
||||
op-input: a [[selection of titles|Title Selection]]
|
||||
op-neg-output: those input tiddlers that do <<.em not>> have tag <<.place T>>
|
||||
op-output: those input tiddlers that have tag <<.place T>>
|
||||
op-parameter: the title of a [[tag|Tagging]]
|
||||
op-parameter-name: T
|
||||
op-purpose: filter the input by tag
|
||||
op-suffix: <<.from-version "5.1.14">> optional `strict` flag
|
||||
op-suffix-name: S
|
||||
tags: [[Filter Operators]] [[Common Operators]] [[Tag Operators]] [[Negatable Operators]]
|
||||
title: tag Operator
|
||||
type: text/vnd.tiddlywiki
|
||||
caption: tag
|
||||
op-purpose: filter the input by tag
|
||||
op-input: a [[selection of titles|Title Selection]]
|
||||
op-parameter: the title of a [[tag|Tagging]]
|
||||
op-parameter-name: T
|
||||
op-output: those input tiddlers that have tag <<.place T>>
|
||||
op-neg-output: those input tiddlers that do <<.em not>> have tag <<.place T>>
|
||||
|
||||
The output is [[sorted|Order of Tagged Tiddlers]] using the tag's <<.field list>> field and the tiddlers' <<.field list-before>> and <<.field list-after>> fields.
|
||||
|
||||
If <<.place T>> is empty, the output of `tag` is empty, and the output of `!tag` is a copy of the input.
|
||||
The behaviour when <<.place T>> is empty depends on the settings of the <<.place S>> optional suffix:
|
||||
|
||||
* if <<.place T>> is missing and <<.place S>> is either missing or set to "loose", then the output of `tag` is empty, and the output of `!tag` is a copy of the input.
|
||||
* <<.from-version "5.1.14">> if <<.place T>> is missing and <<.place S>> is set to "strict", then the output of both `tag` and `!tag` is a copy of the input
|
||||
|
||||
<<.operator-examples "tag">>
|
||||
|
@ -50,7 +50,7 @@ canvas.tc-edit-bitmapeditor {
|
||||
<<box-shadow "2px 2px 5px rgba(0, 0, 0, 0.5)">>
|
||||
}
|
||||
|
||||
.tc-drop-down {
|
||||
.tc-drop-down, .tc-drop-down-simple {
|
||||
border-radius: 4px;
|
||||
<<box-shadow "2px 2px 10px rgba(0, 0, 0, 0.5)">>
|
||||
}
|
||||
|
@ -1287,6 +1287,14 @@ html body.tc-body.tc-single-tiddler-window {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tc-drop-down-simple {
|
||||
min-width: 380px;
|
||||
border: 1px solid <<colour dropdown-border>>;
|
||||
background-color: <<colour dropdown-background>>;
|
||||
padding: 7px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
|
||||
.tc-drop-down {
|
||||
min-width: 380px;
|
||||
border: 1px solid <<colour dropdown-border>>;
|
||||
@ -1725,6 +1733,80 @@ html body.tc-body.tc-single-tiddler-window {
|
||||
border: none;
|
||||
}
|
||||
|
||||
/*
|
||||
** Manager
|
||||
*/
|
||||
|
||||
.tc-manager-wrapper {
|
||||
|
||||
}
|
||||
|
||||
.tc-manager-controls {
|
||||
|
||||
}
|
||||
|
||||
.tc-manager-control {
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
|
||||
.tc-manager-list {
|
||||
width: 100%;
|
||||
border-top: 1px solid <<colour muted-foreground>>;
|
||||
border-left: 1px solid <<colour muted-foreground>>;
|
||||
border-right: 1px solid <<colour muted-foreground>>;
|
||||
}
|
||||
|
||||
.tc-manager-list-item {
|
||||
|
||||
}
|
||||
|
||||
.tc-manager-list-item-heading {
|
||||
display: block;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid <<colour muted-foreground>>;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.tc-manager-list-item-heading:hover {
|
||||
background: <<colour primary>>;
|
||||
color: <<colour background>>;
|
||||
}
|
||||
|
||||
.tc-manager-list-item-content {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.tc-manager-list-item-content-sidebar {
|
||||
flex: 1 0;
|
||||
background: <<colour tiddler-editor-background>>;
|
||||
border-right: 0.5em solid <<colour muted-foreground>>;
|
||||
border-bottom: 0.5em solid <<colour muted-foreground>>;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.tc-manager-list-item-content-sidebar-item {
|
||||
border-top: 0.5em solid <<colour muted-foreground>>;
|
||||
padding: 0 0.5em 0 0.5em;
|
||||
}
|
||||
|
||||
.tc-manager-list-item-content-tiddler {
|
||||
flex: 3 1;
|
||||
border-left: 0.5em solid <<colour muted-foreground>>;
|
||||
border-right: 0.5em solid <<colour muted-foreground>>;
|
||||
border-bottom: 0.5em solid <<colour muted-foreground>>;
|
||||
}
|
||||
|
||||
.tc-manager-list-item-content-tiddler-item {
|
||||
border-top: 0.5em solid <<colour muted-foreground>>;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.tc-manager-list-item-content-tiddler-item.tc-manager-list-item-content-tiddler-item-table {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
** Alerts
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user