mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-26 19:47:20 +00:00
Make it possible to disable plugins
This commit is contained in:
parent
04e049df97
commit
32a7ee2683
13
boot/boot.js
13
boot/boot.js
@ -967,19 +967,22 @@ $tw.Wiki = function(options) {
|
||||
this.registerPluginTiddlers = function(pluginType,titles) {
|
||||
var self = this,
|
||||
registeredTitles = [],
|
||||
checkTiddler = function(tiddler) {
|
||||
checkTiddler = function(tiddler,title) {
|
||||
if(tiddler && tiddler.fields.type === "application/json" && tiddler.fields["plugin-type"] === pluginType) {
|
||||
pluginTiddlers.push(tiddler);
|
||||
registeredTitles.push(tiddler.fields.title);
|
||||
var disablingTiddler = self.getTiddler("$:/config/Plugins/Disabled/" + title);
|
||||
if(title === "$:/core" || !disablingTiddler || (disablingTiddler.fields.text || "").trim() !== "yes") {
|
||||
pluginTiddlers.push(tiddler);
|
||||
registeredTitles.push(tiddler.fields.title);
|
||||
}
|
||||
}
|
||||
};
|
||||
if(titles) {
|
||||
$tw.utils.each(titles,function(title) {
|
||||
checkTiddler(self.getTiddler(title));
|
||||
checkTiddler(self.getTiddler(title),title);
|
||||
});
|
||||
} else {
|
||||
this.each(function(tiddler,title) {
|
||||
checkTiddler(tiddler);
|
||||
checkTiddler(tiddler,title);
|
||||
});
|
||||
}
|
||||
return registeredTitles;
|
||||
|
@ -64,7 +64,12 @@ Basics/Title/Prompt: Title of this ~TiddlyWiki:
|
||||
Basics/Username/Prompt: Username for signing edits:
|
||||
Basics/Version/Prompt: ~TiddlyWiki version:
|
||||
Plugins/Caption: Plugins
|
||||
Plugins/Disable/Caption: disable
|
||||
Plugins/Disable/Hint: Disable this plugin when reloading page
|
||||
Plugins/Disabled/Status: (disabled)
|
||||
Plugins/Empty/Hint: None
|
||||
Plugins/Enable/Caption: enable
|
||||
Plugins/Enable/Hint: Enable this plugin when reloading page
|
||||
Plugins/Language/Prompt: Languages
|
||||
Plugins/Plugin/Prompt: Plugins
|
||||
Plugins/Theme/Prompt: Themes
|
||||
|
@ -12,11 +12,10 @@ $(popup-state)$-$(pluginInfoType)$
|
||||
\define plugin-icon-title()
|
||||
$(currentTiddler)$/icon
|
||||
\end
|
||||
\define plugin-table(type)
|
||||
<$set name="qualified-state" value=<<qualify "$:/state/plugin-info">>>
|
||||
<$list filter="[!has[draft.of]plugin-type[$type$]sort[description]]" emptyMessage=<<lingo "Empty/Hint">>>
|
||||
<$set name="popup-state" value=<<popup-state-macro>>>
|
||||
<$link to={{!!title}} class="tw-plugin-info">
|
||||
\define plugin-disable-title()
|
||||
$:/config/Plugins/Disabled/$(currentTiddler)$
|
||||
\end
|
||||
\define plugin-table-body(type,disabledMessage)
|
||||
<div class="tw-plugin-info-chunk">
|
||||
<$reveal type="nomatch" state=<<popup-state>> text="yes">
|
||||
<$button class="btn-invisible btn-dropdown" set=<<popup-state>> setTo="yes">
|
||||
@ -36,7 +35,7 @@ $(currentTiddler)$/icon
|
||||
</div>
|
||||
<div class="tw-plugin-info-chunk">
|
||||
<div>
|
||||
''<$view field="description"><$view field="title"/></$view>''
|
||||
''<$view field="description"><$view field="title"/></$view>'' $disabledMessage$
|
||||
</div>
|
||||
<div>
|
||||
<$view field="title"/>
|
||||
@ -45,18 +44,44 @@ $(currentTiddler)$/icon
|
||||
<$view field="version"/>
|
||||
</div>
|
||||
</div>
|
||||
\end
|
||||
\define plugin-table(type)
|
||||
<$set name="qualified-state" value=<<qualify "$:/state/plugin-info">>>
|
||||
<$list filter="[!has[draft.of]plugin-type[$type$]sort[description]]" emptyMessage=<<lingo "Empty/Hint">>>
|
||||
<$set name="popup-state" value=<<popup-state-macro>>>
|
||||
<$reveal type="nomatch" state=<<plugin-disable-title>> text="yes">
|
||||
<$link to={{!!title}} class="tw-plugin-info">
|
||||
<<plugin-table-body type:"$type$">>
|
||||
</$link>
|
||||
</$reveal>
|
||||
<$reveal type="match" state=<<plugin-disable-title>> text="yes">
|
||||
<$link to={{!!title}} class="tw-plugin-info tw-plugin-info-disabled">
|
||||
<<plugin-table-body type:"$type$" disabledMessage:"<$macrocall $name='lingo' title='Disabled/Status'/>">>
|
||||
</$link>
|
||||
</$reveal>
|
||||
<$reveal type="match" text="yes" state=<<popup-state>>>
|
||||
<$reveal type="nomatch" text="" state="!!list">
|
||||
<div class="tw-plugin-info-dropdown">
|
||||
<$macrocall $name="tabs" state=<<tabs-state-macro>> tabsList={{!!list}} default="readme" template="$:/core/ui/PluginInfo"/>
|
||||
<$list filter="[all[current]] -[[$:/core]]">
|
||||
<div style="float:right;">
|
||||
<$reveal type="nomatch" state=<<plugin-disable-title>> text="yes">
|
||||
<$button set=<<plugin-disable-title>> setTo="yes" title={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>
|
||||
<<lingo Disable/Caption>>
|
||||
</$button>
|
||||
</$reveal>
|
||||
<$reveal type="match" state=<<plugin-disable-title>> text="yes">
|
||||
<$button set=<<plugin-disable-title>> setTo="no" title={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>
|
||||
<<lingo Enable/Caption>>
|
||||
</$button>
|
||||
</$reveal>
|
||||
</div>
|
||||
</$list>
|
||||
<$reveal type="nomatch" text="" state="!!list">
|
||||
<$macrocall $name="tabs" state=<<tabs-state-macro>> tabsList={{!!list}} default="readme" template="$:/core/ui/PluginInfo"/>
|
||||
</$reveal>
|
||||
<$reveal type="match" text="" state="!!list">
|
||||
<div class="tw-plugin-info-dropdown">
|
||||
No information provided
|
||||
</div>
|
||||
</$reveal>
|
||||
</div>
|
||||
</$reveal>
|
||||
</$set>
|
||||
</$list>
|
||||
|
@ -1,5 +1,5 @@
|
||||
created: 20130826122000000
|
||||
modified: 20140807094840608
|
||||
modified: 20140815094840608
|
||||
tags: mechanism
|
||||
title: PluginMechanism
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -87,6 +87,16 @@ The wiki object keeps track of all of the currently loaded plugins. If a request
|
||||
|
||||
In the browser, any constituent tiddlers that are JavaScript modules (ie shadow tiddlers of content type `application/javascript` and possessing the field `module-type`) are executed during startup processing.
|
||||
|
||||
!! Disabling Plugins
|
||||
|
||||
Plugins can be disabled by creating a tiddler titled `$:/config/Plugins/Disabled/` concatenated with the plugin title, and setting its text to `yes`.
|
||||
|
||||
For example, to disable the plugin `$:/plugins/tiddlywiki/highlight`, the title would be:
|
||||
|
||||
```
|
||||
$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/highlight
|
||||
```
|
||||
|
||||
! Information Tiddlers for Plugins
|
||||
|
||||
Plugin authors are encouraged to provide special information and documentation tiddlers that TiddlyWiki can include as plugin information tabs in the [[control panel|$:/ControlPanel]].
|
||||
|
@ -1251,6 +1251,16 @@ canvas.tw-edit-bitmapeditor {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.tw-plugin-info-disabled {
|
||||
background: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);
|
||||
background: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);
|
||||
}
|
||||
|
||||
.tw-plugin-info-disabled:hover {
|
||||
background: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);
|
||||
background: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);
|
||||
}
|
||||
|
||||
a.tw-tiddlylink.tw-plugin-info:hover {
|
||||
text-decoration: none;
|
||||
background-color: <<colour primary>>;
|
||||
@ -1273,7 +1283,7 @@ a.tw-tiddlylink.tw-plugin-info:hover {
|
||||
|
||||
.tw-plugin-info-dropdown {
|
||||
border: 1px solid <<colour muted-foreground>>;
|
||||
padding: 1em;
|
||||
padding: 1em 1em 0 1em;
|
||||
margin-top: -1em;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user