Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
//only for generate an <<tag Menu>> item
Journal作成ボタンのテスト
journalの使い方[[日記をつける]]を作成。
Copyright (c) 2005-2008, BidiX (http://BidiX.info)
All rights reserved.
ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
* ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
* バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
* 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、<組織>の名前またはコントリビューターの名前を使用してはならない。
本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。
この訳は、[[オープンソース グループ・ジャパン|http://sourceforge.jp/projects/opensource]] の[[翻訳|http://sourceforge.jp/projects/opensource/wiki/licenses%2Fnew_BSD_license]]によるものです
----
Copyright (c) 2005-2008, BidiX (http://BidiX.info)
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
*Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
*Neither the name of BidiX nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Contact : [[BidiX @ bidix . info|mailto:BidiX@BidiX.info]]
URL : [[BidiX.info|http://BidiX.info/]]
Donation : [[Donation via Paypal|https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=BidiX%40bidix%2einfo&item_name=TiddlyWikiHacking%20Donations&item_number=Donations&no_shipping=2&no_note=1&tax=0¤cy_code=EUR&bn=PP%2dDonationsBF&charset=UTF%2d8]]
|''Type:''|file|
|''URL:''|http://tiddlywiki.bidix.info/|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
/***
|Name|CheckboxPlugin|
|Source|http://www.TiddlyTools.com/#CheckboxPlugin|
|Documentation|http://www.TiddlyTools.com/#CheckboxPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Add checkboxes to your tiddler content|
This plugin extends the TiddlyWiki syntax to allow definition of checkboxes that can be embedded directly in tiddler content. Checkbox states are preserved by:
* by setting/removing tags on specified tiddlers,
* or, by setting custom field values on specified tiddlers,
* or, by saving to a locally-stored cookie ID,
* or, automatically modifying the tiddler content (deprecated)
When an ID is assigned to the checkbox, it enables direct programmatic access to the checkbox DOM element, as well as creating an entry in TiddlyWiki's config.options[ID] internal data. In addition to tracking the checkbox state, you can also specify custom javascript for programmatic initialization and onClick event handling for any checkbox, so you can provide specialized side-effects in response to state changes.
!!!!!Documentation
>see [[CheckboxPluginInfo]]
!!!!!Revisions
<<<
2008.01.08 [*.*.*] plugin size reduction: documentation moved to [[CheckboxPluginInfo]]
2008.01.05 [2.4.0] set global "window.place" to current checkbox element when processing checkbox clicks. This allows init/beforeClick/afterClick handlers to reference RELATIVE elements, including using "story.findContainingTiddler(place)". Also, wrap handlers in "function()" so "return" can be used within handler code.
|please see [[CheckboxPluginInfo]] for additional revision details|
2005.12.07 [0.9.0] initial BETA release
<<<
!!!!!Code
***/
//{{{
version.extensions.CheckboxPlugin = {major: 2, minor: 4, revision:0 , date: new Date(2008,1,5)};
//}}}
//{{{
config.checkbox = { refresh: { tagged:true, tagging:true, container:true } };
config.formatters.push( {
name: "checkbox",
match: "\\[[xX_ ][\\]\\=\\(\\{]",
lookahead: "\\[([xX_ ])(=[^\\s\\(\\]{]+)?(\\([^\\)]*\\))?({[^}]*})?({[^}]*})?({[^}]*})?\\]",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
// get params
var checked=(lookaheadMatch[1].toUpperCase()=="X");
var id=lookaheadMatch[2];
var target=lookaheadMatch[3];
if (target) target=target.substr(1,target.length-2).trim(); // trim off parentheses
var fn_init=lookaheadMatch[4];
var fn_clickBefore=lookaheadMatch[5];
var fn_clickAfter=lookaheadMatch[6];
var tid=story.findContainingTiddler(w.output); if (tid) tid=tid.getAttribute("tiddler");
var srctid=w.tiddler?w.tiddler.title:null;
config.macros.checkbox.create(w.output,tid,srctid,w.matchStart+1,checked,id,target,config.checkbox.refresh,fn_init,fn_clickBefore,fn_clickAfter);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} );
config.macros.checkbox = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
if(!(tiddler instanceof Tiddler)) { // if no tiddler passed in try to find one
var here=story.findContainingTiddler(place);
if (here) tiddler=store.getTiddler(here.getAttribute("tiddler"))
}
var srcpos=0; // "inline X" not applicable to macro syntax
var target=params.shift(); if (!target) target="";
var defaultState=params[0]=="checked"; if (defaultState) params.shift();
var id=params.shift(); if (id && !id.length) id=null;
var fn_init=params.shift(); if (fn_init && !fn_init.length) fn_init=null;
var fn_clickBefore=params.shift();
if (fn_clickBefore && !fn_clickBefore.length) fn_clickBefore=null;
var fn_clickAfter=params.shift();
if (fn_clickAfter && !fn_clickAfter.length) fn_clickAfter=null;
var refresh={ tagged:true, tagging:true, container:false };
this.create(place,tiddler.title,tiddler.title,0,defaultState,id,target,refresh,fn_init,fn_clickBefore,fn_clickAfter);
},
create: function(place,tid,srctid,srcpos,defaultState,id,target,refresh,fn_init,fn_clickBefore,fn_clickAfter) {
// create checkbox element
var c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick=this.onClickCheckbox;
c.srctid=srctid; // remember source tiddler
c.srcpos=srcpos; // remember location of "X"
c.container=tid; // containing tiddler (may be null if not in a tiddler)
c.tiddler=tid; // default target tiddler
c.refresh = {};
c.refresh.container = refresh.container;
c.refresh.tagged = refresh.tagged;
c.refresh.tagging = refresh.tagging;
place.appendChild(c);
// set default state
c.checked=defaultState;
// track state in config.options.ID
if (id) {
c.id=id.substr(1); // trim off leading "="
if (config.options[c.id]!=undefined)
c.checked=config.options[c.id];
else
config.options[c.id]=c.checked;
}
// track state in (tiddlername|tagname) or (fieldname@tiddlername)
if (target) {
var pos=target.indexOf("@");
if (pos!=-1) {
c.field=pos?target.substr(0,pos):"checked"; // get fieldname (or use default "checked")
c.tiddler=target.substr(pos+1); // get specified tiddler name (if any)
if (!c.tiddler || !c.tiddler.length) c.tiddler=tid; // if tiddler not specified, default == container
if (store.getValue(c.tiddler,c.field)!=undefined)
c.checked=(store.getValue(c.tiddler,c.field)=="true"); // set checkbox from saved state
} else {
var pos=target.indexOf("|"); if (pos==-1) var pos=target.indexOf(":");
c.tag=target;
if (pos==0) c.tag=target.substr(1); // trim leading "|" or ":"
if (pos>0) { c.tiddler=target.substr(0,pos); c.tag=target.substr(pos+1); }
if (!c.tag.length) c.tag="checked";
var t=store.getTiddler(c.tiddler);
if (t && t.tags)
c.checked=t.isTagged(c.tag); // set checkbox from saved state
}
}
// trim off surrounding { and } delimiters from init/click handlers
if (fn_init) c.fn_init="(function(){"+fn_init.trim().substr(1,fn_init.length-2)+"})()";
if (fn_clickBefore) c.fn_clickBefore="(function(){"+fn_clickBefore.trim().substr(1,fn_clickBefore.length-2)+"})()";
if (fn_clickAfter) c.fn_clickAfter="(function(){"+fn_clickAfter.trim().substr(1,fn_clickAfter.length-2)+"})()";
c.init=true; c.onclick(); c.init=false; // compute initial state and save in tiddler/config/cookie
},
onClickCheckbox: function(event) {
window.place=this;
if (this.init && this.fn_init) // custom function hook to set initial state (run only once)
{ try { eval(this.fn_init); } catch(e) { displayMessage("Checkbox init error: "+e.toString()); } }
if (!this.init && this.fn_clickBefore) // custom function hook to override changes in checkbox state
{ try { eval(this.fn_clickBefore) } catch(e) { displayMessage("Checkbox onClickBefore error: "+e.toString()); } }
if (this.id)
// save state in config AND cookie (only when ID starts with 'chk')
{ config.options[this.id]=this.checked; if (this.id.substr(0,3)=="chk") saveOptionCookie(this.id); }
if (this.srctid && this.srcpos>0 && (!this.id || this.id.substr(0,3)!="chk") && !this.tag && !this.field) {
// save state in tiddler content only if not using cookie, tag or field tracking
var t=store.getTiddler(this.srctid); // put X in original source tiddler (if any)
if (t && this.checked!=(t.text.substr(this.srcpos,1).toUpperCase()=="X")) { // if changed
t.set(null,t.text.substr(0,this.srcpos)+(this.checked?"X":"_")+t.text.substr(this.srcpos+1),null,null,t.tags);
if (!story.isDirty(t.title)) story.refreshTiddler(t.title,null,true);
store.setDirty(true);
}
}
if (this.field) {
if (this.checked && !store.tiddlerExists(this.tiddler))
store.saveTiddler(this.tiddler,this.tiddler,"",config.options.txtUserName,new Date());
// set the field value in the target tiddler
store.setValue(this.tiddler,this.field,this.checked?"true":"false");
// DEBUG: displayMessage(this.field+"@"+this.tiddler+" is "+this.checked);
}
if (this.tag) {
if (this.checked && !store.tiddlerExists(this.tiddler))
store.saveTiddler(this.tiddler,this.tiddler,"",config.options.txtUserName,new Date());
var t=store.getTiddler(this.tiddler);
if (t) {
var tagged=(t.tags && t.tags.indexOf(this.tag)!=-1);
if (this.checked && !tagged) { t.tags.push(this.tag); store.setDirty(true); }
if (!this.checked && tagged) { t.tags.splice(t.tags.indexOf(this.tag),1); store.setDirty(true); }
}
// if tag state has been changed, update display of corresponding tiddlers (unless they are in edit mode...)
if (this.checked!=tagged) {
if (this.refresh.tagged) {
if (!story.isDirty(this.tiddler)) // the TAGGED tiddler in view mode
story.refreshTiddler(this.tiddler,null,true);
else // the TAGGED tiddler in edit mode (with tags field)
config.macros.checkbox.refreshEditorTagField(this.tiddler,this.tag,this.checked);
}
if (this.refresh.tagging)
if (!story.isDirty(this.tag)) story.refreshTiddler(this.tag,null,true); // the TAGGING tiddler
}
}
if (!this.init && this.fn_clickAfter) // custom function hook to react to changes in checkbox state
{ try { eval(this.fn_clickAfter) } catch(e) { displayMessage("Checkbox onClickAfter error: "+e.toString()); } }
// refresh containing tiddler (but not during initial rendering, or we get an infinite loop!) (and not when editing container)
if (!this.init && this.refresh.container && this.container!=this.tiddler)
if (!story.isDirty(this.container)) story.refreshTiddler(this.container,null,true); // the tiddler CONTAINING the checkbox
return true;
},
refreshEditorTagField: function(title,tag,set) {
var tagfield=story.getTiddlerField(title,"tags");
if (!tagfield||tagfield.getAttribute("edit")!="tags") return; // if no tags field in editor (i.e., custom template)
var tags=tagfield.value.readBracketedList();
if (tags.contains(tag)==set) return; // if no change needed
if (set) tags.push(tag); // add tag
else tags.splice(tags.indexOf(tag),1); // remove tag
for (var t=0;t<tags.length;t++) tags[t]=String.encodeTiddlyLink(tags[t]);
tagfield.value=tags.join(" "); // reassemble tag string (with brackets as needed)
return;
}
}
//}}}
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
C_header1:#FF0000
C_header2:#0000FF
C_header3:#008000
C_header4:#FF0000
C_header5:#0000FF
C_header6:#008000
<<search>>
----
<<newTiddler>>
<<newJournal title:'YYYY.0MM.0DD' tag:journal>>
<<saveChanges>>
<<upload>>
----
ImportTiddlers
[[Sync]]
SideBarOptions
[[Indexes]]
あなたのサイトの名前を設定します。あわせてあなたの登録ユーザー名とパスワードを入力してください。オプションで他の登録ユーザーがこのサイトを更新できる用にしたいならば、そのユーザー名のリストを記入してください。最後に非公開か公開かを選択します。
Site(サイトの名前を設定) : 「 」
Owner(登録ユーザー名) : 「 」
Password(パスワード) : 「 」
Author list(更新を許可してもよいユーザーのリスト。そのユーザーもSign Upのページでアカウントをとる必要があります) : 「 」
Private(非公開ならばチェックを入れる。公開ならばそのまま) :
あなたの新しいサイトは次のURLで利用できます。{{{ http://itw.bidix.info/<SiteName>}}}
----
Choose your site name. Give your username and password. Optionally give the list of other registered usernames allowed to update this site. Finally choose to keep it private or not.
Your new site will be available at {{{ http://itw.bidix.info/<SiteName>}}}
iTW 1.3.1 パッケージのダウンロード
バージョン1.3.1のリリースの詳細については、 [[History]] (更新履歴)を参照してください。
iTWのデータの記入されていないバージョンは、 http://itw.bidix.info/empty_iTW.html で入手できます。この1つのファイルに、TiddlyWikiのバージョン <<version>> のiTWに必要な全てのプラグインとスタイルシートが含まれています。
http://itw.bidix.info/iTW_1.3.1.zip のパッケージされたバージョンではiTWと合わせてアップロードサービスのプログラムが利用できます。
この中には以下のものが含まれています。
*[[empty_iTW.html|http://itw.bidix.info/empty_iTW.html]] アップロードのためのUploadPlugin や UploadTiddlerPlugin といったプラグインが含まれていない、スタンドアロンのデータのないiTW。
*[[store.php|http://itw.bidix.info/store.php]]
* [[storeTiddler.php|http://itw.bidix.info/storeTiddler.php]]
* ~TiddlySaver.jar for a "save to disk" in Safari :Safari上で「ディスクに保存」を実現するためのプログラム
UploadPlugin, UploadTiddlerPlugin, UploadServicesの詳細については http://tiddlywiki.bidix.info/ で確認してください。
iTWとBidiXのプラグインは、[[BSD Open Source License]]のもとに提供されています、
他のプラグインはそれぞれの著作者の許可のもとに提供されています。
----
See [[History]] for details on this 1.3.1 release.
A empty version of iTW is available at http://itw.bidix.info/empty_iTW.html. This single file contains all plugins and styleSheet for a iTW version of full TiddlyWiki version <<version>>.
A packaged version available at http://itw.bidix.info/iTW_1.3.1.zip with a iTW and UploadService components. This distribution contains :
* [[empty_iTW.html|http://itw.bidix.info/empty_iTW.html]] the standalone empty iTW without UploadPlugin or UploadTiddlerPlugin.
* [[store.php|http://itw.bidix.info/store.php]]
* [[storeTiddler.php|http://itw.bidix.info/storeTiddler.php]]
* ~TiddlySaver.jar for a "save to disk" in Safari
For detail on UploadPlugin, UploadTiddlerPlugin, UploadServices visit http://tiddlywiki.bidix.info/
iTW and BidiX's Plugins are distributed under a [[BSD Open Source License]]
Other plugins are distributed under their author's license.
iTWはiPhoneのアプリケーションのような見え方と操作性をもったTiddlyWikiのひとつです。これはSafariでも一応動作しますが、FireFoxで正確に動作します。
iTWの主な機能は以下のとおりです。
*HistoryPluginを使用したiPhone的な操作性:SinglePageMode(1ページ単位のモード。訳注:標準のTiddlyWikiは複数ページが表示されます)と<<back>><<history>><<forward>>というボタン
*iPhoneらしいリスト
**[[systemList format|systemList tag]] : 行全体がタップ可能です。
**ListByTagによってタグのついたtiddlersのリストを簡単に表示できます。
*トップメニューは[[Navigation]]ボタン、<<tag Menu>>ボタンと<<search>>ボックスなどカスタマイズが可能です。
*「save to web(web上に保存)」または「upload edited tiddlers(編集したtiddlersをアップロードする)という機能があります。それは次のプラグインで対応しています。
** UploadPlugin
** UploadTiddlerPlugin
BidiXのコメントとアドバイスに感謝します。
----
iTW is a TiddlyWiki with the look and feel of an iPhone application. It works also fine in Safari, and correctly in FireFox.
The main features of iTW are :
* iPhone oriented navigation with HistoryPlugin : SinglePageMode and <<back>><<history>><<forward>> buttons
* iPhone like list
** [[systemList format|systemList tag]] : the entire line is "tappable"
** ListByTag to easily display list of tiddlers using tags
* TopMenu customizable with [[Navigation]] buttons, <<tag Menu>> Button and <<search>> box
* Ready to ''save to web'' or to ''upload edited tiddlers'' with :
** UploadPlugin
** UploadTiddlerPlugin
Thanks to make comments and suggestions to BidiX.
/***
|''Name:''|GenerateRssByTagPlugin|
|''Description:''|Only tiddlers with a specific tag are inluded in the RSSFeed. If no tiddlers are selected then works as before. (see ticket #270: http://trac.tiddlywiki.org/tiddlywiki/ticket/270). <br>RssTag: <<option txtRssTag>>|
|''Version:''|1.0.2|
|''Date:''|Apr 20, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#GenerateRssByTagPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''[[License]]:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.GenerateRssByTagPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 20, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0 (Beta 5)'
};
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.generateRssByTag = function()
{
var s = [];
var d = new Date();
var u = store.getTiddlerText("SiteUrl");
// Assemble the header
s.push("<" + "?xml version=\"1.0\"" + " encoding='UTF-8' " + "?" + ">");
s.push("<rss version=\"2.0\">");
s.push("<channel>");
s.push("<title" + ">" + wikifyPlain("SiteTitle").htmlEncode() + "</title" + ">");
if(u)
s.push("<link>" + u.htmlEncode() + "</link>");
s.push("<description>" + wikifyPlain("SiteSubtitle").htmlEncode() + "</description>");
s.push("<language>en-us</language>");
s.push("<copyright>Copyright " + d.getFullYear() + " " + config.options.txtUserName.htmlEncode() + "</copyright>");
s.push("<pubDate>" + d.toGMTString() + "</pubDate>");
s.push("<lastBuildDate>" + d.toGMTString() + "</lastBuildDate>");
s.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");
s.push("<generator>TiddlyWiki " + version.major + "." + version.minor + "." + version.revision + "</generator>");
// The body
var tiddlers;
if (config.options.txtRssTag && store.getTaggedTiddlers(config.options.txtRssTag).length > 0)
tiddlers = store.getTaggedTiddlers(config.options.txtRssTag,"modified");
else
tiddlers = store.getTiddlers("modified","[[excludeLists]]");
var n = config.numRssItems > tiddlers.length ? 0 : tiddlers.length-config.numRssItems;
for (var t=tiddlers.length-1; t>=n; t--)
s.push(tiddlers[t].saveToRss(u));
// And footer
s.push("</channel>");
s.push("</rss>");
// Save it all
return s.join("\n");
};
//
// Initializations
//
bidix.generateRss = generateRss; // backup core version
generateRss = bidix.generateRssByTag; // install new one
config.options.txtRssTag = "toRSS"; // default RssTag. use <<option txtRssTag>> to overwritte
merge(config.optionsDesc,{txtRssTag: "Only tiddlers with this tag will be included in the RSS Feed."});
//}}}
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* SiteUrl: The home URL of the site (used in the RSSFeed)
* Set [[Options]] and [[iTWTweaks]]
* Tiddlers tagged [[Menu]] are displaid in <<tag Menu>>
* Tiddlers tagged with [[Home]] are displaid in the Home page when the TiddlyWiki is opened.
*For additionnal informations : http://iTW.BidiX.info/
*iTW is available with a [[BSD Open Source License]] feel free to send comments and suggestions to BidiX
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{
window.hideWhenLastTest = false;
window.removeElementWhen = function(test,place) {
window.hideWhenLastTest = test;
if (test) {
removeChildren(place);
place.parentNode.removeChild(place);
}
};
merge(config.macros,{
hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( eval(paramString), place);
}},
showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !eval(paramString), place);
}},
hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAny(params), place);
}},
showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAny(params), place);
}},
hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
}},
showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
}},
hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title == params[0], place);
}},
showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title != params[0], place);
}},
'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !window.hideWhenLastTest, place);
}}
});
//}}}
! 2008 09 03 - iTW 1.3.1 released
Changes from 1.3.0 are :
* [[Options]] tiddler has no more warning
* Minor presentation tweaks in [[StyleSheet]]
* UploadTiddlerPlugin v 1.2.1
! 2008 08 17 - iTW 1.3.0 released
Changes from 1.2.2 are :
* iTW as a single file : core, plugins and images are embedded in a empty TiddlyWiki
* Core version 1.4.1
* Updated version of UploadPlugin and UploadTiddlerPlugin
* new TopMenu with seach box
* Presentation tuning. Now iTW is compatible with Firefox (But net yet with IE).
* TagMenu plugin to display a Menu with tiddlers tagged ''Menu'' (tiddler [[<<newTiddler>>]] renders as a ''newTiddler'' button)
! 2008 04 09 - iTW 1.2.2 released
# Title in Home tiddler
** Manage noTitle tag
*** ViewTempate
*** Home tiddler
** StyleSheet
*** homeTitle style
# Tweaks : Label more = +
# add systemServer iTWRepository and syncing with it
! 2008 03 30 - iTW 1.2.1 released
# Change UploadTiddlerPlugin V 1.1.1 in [[iplugin.js]]
## Changer le message : Tiddler ''updated'' => UploadTiddlerPlugin 1.1.1
# Patch pour ne pas utiliser TiddlySaver.jar lorsque sous http
## [[twcore.js]]
# Ajouter une icon => AppleDev
## images/iTW.png
## images/iTW.icns
## modifié MarkupPreHead
# Changer Menu
## ITW/empty
## iTW
# add lock in [[storeTiddler.php]]
## [[storeTiddler.php]] V 1.2.0
#Options (txt and pas) does not save properly, the last character is missing
##workaround add an extra space character
##add a comment in empty#Options
#add a new favicon
##add images/favicon.ico
## change MarkupPreHead
#Add signed TiddlySaver.jar
##add js/TiddlySaver.jar
##change MarkupPostBody
##change tempale html
! 2008-03-22 - iTW 1.2.0 released
! 2008-03-07 - iTW 1.1.0 released
! 2008-03-02 - iTW 1.0.0 released
/***
|''Name:''|HistoryPlugin|
|''Description:''|Limits to only one tiddler open. Manages an history stack and provides macro to navigate in this history (<<history>><<back>><<forward>>).|
|''Version:''|1.0.0|
|''Date:''|2008-03-23|
|''Source:''|http://tiddlywiki.bidix.info/#HistoryPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''[[License]]:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.3.0|
***/
//{{{
Story.prototype.tiddlerHistory = [];
Story.prototype.historyCurrentPos = -1;
Story.prototype.currentTiddler = null;
Story.prototype.maxPos = 11;
Story.prototype.old_history_displayTiddler = Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)
{
title = ((typeof title === "string") ? title : title.title);
//SinglePageMode
if (this.currentTiddler) this.closeTiddler(this.currentTiddler);
if (template == 2) {
//switch to Edit mode : don't manage
story.old_history_displayTiddler(null,title,template,animate,slowly);
return;
}
// if same tiddler no change
if (this.tiddlerHistory[this.historyCurrentPos] == title) {
this.currentTiddler = title;
story.old_history_displayTiddler(null,title,template,animate,slowly);
return;
}
if (this.historyCurrentPos == this.tiddlerHistory.length -1) {
// bottom of stack
this.tiddlerHistory.push(title);
if (this.tiddlerHistory.length > 11) {
this.tiddlerHistory.shift();
} else {
this.historyCurrentPos += 1;
}
} else {
// middle of stack
this.historyCurrentPos += 1;
if (this.tiddlerHistory[this.historyCurrentPos] != title) {
// path change => cut history
this.tiddlerHistory[this.historyCurrentPos] = title;
var a = [];
for(var i = 0; i <= this.historyCurrentPos;i++) {
a[i] = this.tiddlerHistory[i];
}
this.tiddlerHistory = a;
}
}
this.currentTiddler = title;
story.old_history_displayTiddler(null,title,template,animate,true);
scrollTo(0, 1);
}
Story.prototype.old_history_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler = function(title,animate,slowly)
{
this.currentTiddler = null;
story.old_history_closeTiddler.apply(this,arguments);
}
config.macros.history = {};
config.macros.history.action = function(event) {
var popup = Popup.create(this);
if(popup)
{
if (!story.tiddlerHistory.length)
createTiddlyText(popup,"No history");
else
{
var c = story.tiddlerHistory.length;
for (i=0; i<c;i++ )
{
var elmt = createTiddlyElement(popup,"li");
var btn = createTiddlyButton(elmt,story.tiddlerHistory[i],story.tiddlerHistory[i],config.macros.history.onClick);
btn.setAttribute("historyPos",i);
}
}
}
Popup.show(popup,false);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
config.macros.history.handler = function(place,macroName,params)
{
createTiddlyButton(place, 'history', 'history', config.macros.history.action);
}
config.macros.history.onClick = function(ev)
{
var e = ev ? ev : window.event;
var historyPos = this.getAttribute("historyPos");
story.historyCurrentPos = historyPos -1;
story.displayTiddler(null,story.tiddlerHistory[historyPos]);
return false;
};
config.macros.back = {};
config.macros.back.action = function() {
if (story.historyCurrentPos > 0) {
if (story.currentTiddler) story.closeTiddler(story.currentTiddler);
story.historyCurrentPos = story.historyCurrentPos -2;
story.displayTiddler(null,story.tiddlerHistory[story.historyCurrentPos+1]);
} else {
//if (story.currentTiddler) story.old_history_displayTiddler(null,story.currentTiddler);
};
return false;
}
config.macros.back.handler = function(place,macroName,params)
{
createTiddlyButton(place, '<', 'back', config.macros.back.action,"backButton");
}
config.macros.forward = {};
config.macros.forward.action = function() {
if (story.historyCurrentPos < story.tiddlerHistory.length -1) {
if (story.currentTiddler) story.closeTiddler(story.currentTiddler);
//story.historyCurrentPos = story.historyCurrentPos;
story.displayTiddler(null,story.tiddlerHistory[story.historyCurrentPos+1]);
} else {
//if (story.currentTiddler) story.old_history_displayTiddler(null,story.currentTiddler);
}
return false;
}
config.macros.forward.handler = function(place,macroName,params)
{
createTiddlyButton(place, '>', 'forward', config.macros.forward.action, "ibutton");
}
//}}}
{{homeTitle{~MobilememoBiz iTW - iPhoneのための~TiddlyWiki}}}
http://itw.bidix.info/の内容を翻訳しました。
何かございましたら、[[MobilememoWeblog|http://spen.cocolog-nifty.com/mobilememo/]]にコメントをください。
<<listByTag '' created ''>>
新しく作成したtiddlerをHomeに表示するには
{{{
タグにHomeと記載します。
}}}
<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>
//{{{
/*
* ListByTag
*/
Array.prototype.tiddlerList = function(listFormat,max) {
var output = "";
if (!listFormat)
listFormat = "'\\n{{tiddlerListItem{{{tiddlerListItemTitle{[[' + tiddler.title + ']]}}} - ' + tiddler.created.formatString('0DD/0MM/YY') + ' - ' + tiddler.modifier + '\\n{{tiddlerExcerpt{' + text + ' ... \\n}}}}}}'";
if (!max)
max = this.length;
if (this.length > 0 && this[0] instanceof Tiddler) {
for (var i=0;i<max;i++) {
var tiddler = this[i];
var text = "{{{"+wikifyPlain(tiddler.title, store, 100)+"}}}";
output += eval(listFormat);
}
}
output += "\n----\n";
return output;
};
// tag, sorted, listformat, max(0), noReverse(true)
config.macros.listByTag = {};
config.macros.listByTag.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
params[0] = (params[0] ? params[0] : tiddler.title);
var tiddlers = store.getTaggedTiddlers(params[0],params[1]);
if (params[3] == 0) params[3] = null;
if (! params[4])
tiddlers = tiddlers.reverse();
wikify(tiddlers.tiddlerList(params[2],params[3]),place,null,tiddler.tiddler);
var tiddlerElem = document.getElementById(story.idPrefix + tiddler.title);
var e = null;
if(tiddlerElem != null) {
var children = tiddlerElem.getElementsByTagName("span");
for(var t=0; t<children.length; t++) {
var c = children[t];
if(c.className == 'tiddlerListItem') {
c.addEventListener('mousedown', function(event) {
var tiddlyLink = event.currentTarget.firstChild.firstChild;
var tiddlerTitle = tiddlyLink.getAttribute("tiddlyLink");
story.displayTiddler(null, tiddlerTitle);
event.preventDefault();
}, true);
}
}
}
};
//}}}
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
major: 1, minor: 1, revision: 0,
date: new Date("mar 17, 2007"),
source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};
if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};
bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){
url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
}
return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
あなたのプロフィール(パスワード、メールアドレス...)や作成したサイトの設定(アクセス方法、編集権限...)などを変更するには[[ControlPanel| ControlPanel/index.html]]にアクセスしてください。
あなたのサイトに関連して、[[Useful URL]]に記載されたコマンド(ダウンロード...)が利用できます。
----
To change your profile (password, email ...) or your site configuration (access, authors ...) go to the [[ControlPanel| ControlPanel/index.html]]
Associated with your site, commands (download ...) are available through [[Useful URL]]
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<link rel="shortcut icon" href="data:;base64,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" type="image/vnd.microsoft.icon" />
<link rel="icon" href="data:;base64,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" type="image/vnd.microsoft.icon" />
<link rel="apple-touch-icon" href="data:image/png;base64,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"/>
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
<!--}}}-->
トップメニューに表示されている<<tag Menu>>ボタンには「Menu」というタグがつけられたtiddlersのタイトルが表示されています。
「Menu」というタグのつけられた[[<<newTiddler>>]]というtiddlerで <<newTiddler>> マクロが表示されています。
<<tag Menu>> button in the TopMenu display title of tiddlers tagged with //Menu//.
The tiddler [[<<newTiddler>>]] tagged with //Menu// is displayed as a <<newTiddler>> Macro
新しく作成したtiddlerをMenuに表示させるには
{{{
タグにMenuと記載します。
}}}
操作
iTWは表示されたtiddlersのリストの履歴を保持するとともに次のリストに記載された操作をすることができます。
*Back button (戻るボタン): <<back>>
*Forward button(進むボタン) : <<forward>>
*history menu(履歴メニュー) : <<history>>
トップメニューでこれらのボタンが提供されています。safariではこれらはiPhone用のスキンで表示されます。
iTW maintains an history list of displayed tiddlers and allows to navigate in this list using :
*Back button : <<back>>
*Forward button : <<forward>>
*history menu : <<history>>
TopMenu provides these buttons. In safari they are displayed with an iPhone skin.
!Basic
These Interface Options for customising TiddlyWiki are saved in your browser
Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)
UserName: <<option txtUserName>>
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
!Upload
UploadUserName : <<option txtUploadUserName>>
UploadPassword : <<option pasUploadPassword>>
UploadFilename : <<option txtUploadFilename>>
UploadStoreUrl :<<option txtUploadStoreUrl>>
UploadDir :<<option txtUploadDir>>
UploadFilename : <<option txtUploadFilename>>
UploadBackupDir : <<option txtUploadBackupDir>>
UploadLog : <<option chkUploadLog>>
UploadLogMaxLine : <<option txtUploadLogMaxLine>>
!~UploadTiddler
UploadTiddler: <<option chkUploadTiddler>>
UploadTiddlerStoreUrl : <<option txtUploadTiddlerStoreUrl>>
----
see also AdvancedOptions and [[iTWTweaks]]
<<search>>
----
<<newTiddler>>
<<saveChanges>>
----
ImportTiddlers
[[Sync]]
SideBarOptions
[[Indexes]]
<!--{{{-->
<div id='displayArea'>
<div id='topMenu' refresh='content' tiddler='TopMenu'></div>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
あなた自身のiTWサイトを設置する
iTWは無料のiTWのホスティングをしているプレーンな[[TiddlyHome|http://tiddlyhome.bidix.info]]のサイトです。
{{{ http://itw.bidix.info/<SiteName>}}}というあなた自身のサイトを作るには、まず[[Sign up]]でアカウントを作成して、それから [[Create a site]]でサイトを作成することになります。
{{{<<listByTag 'newSite'>>}}}「newSite」というタグのつけられている記事のリスト
----
iTW is also a plain [[TiddlyHome|http://tiddlyhome.bidix.info]] site that offer iTW hosting for free.
To get your own site at {{{ http://itw.bidix.info/<SiteName>}}}, you need to [[Sign up]] first before you can [[Create a site]].
<<listByTag 'newSite'>>
もしもまだあなたが登録されたユーザーでないなら、下のフォームを使ってサインアップしてください。
Emailはあなたのサイトを管理する目的のためにだけ使用されます。
(訳注)ここは、http://itw.bidix.info/ にアクセスして行ってください。
表示されるのは以下のような内容です。
----
Username(あなたの登録したいユーザー名) 「 」
(at least 3 characters3文字以上である必要があります)
password(パスワード) 「 」
(at least 5 characters5文字以上である必要があります)
confirm password(パスワードの再確認) 「 」
email(メールアドレス)「 」
----
If you are not a registered user, sign up using the form below.
Email will be used only to manage your sites.
/*{{{*/
body {font-size:14px; font-family:arial,helvetica; margin:0; padding:0; min-height: 418px; width: 100%}
#messageArea {position:fixed; top:28px; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
#displayArea {margin:0em 0em 0em 0em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; left:0em;}
#topMenu {
positon:relative;
padding-top:0.5em;
padding-left:0.5em;
}
#topMenu br {display:none; }
#topMenu {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFJJREFUeNpcjjsOgDAMQy3f/2qMzAwMbOwg6pCPSisGy8+2FAXLunE/TgJGmUvl1jkl78Q2Z/f2ceyYevG6n7wxhLr5y52jjx9G747akYxXgAEA9FZw6HEbDVoAAAAASUVORK5CYII=) #6d84a2 repeat-x;
box-sizing: border-box;
border-bottom: 1px solid #2d3642;
margin: 0;
line-height: 20px;
height: 30px;
font-size: 12px;
font-weight: bold;
padding: 1px 10px 10px 10px;
text-align: center;
color: #FFFFFF;
text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0;
text-overflow: ellipsis;
box-sizing: border-box;
overflow: hidden;
white-space: nowrap;
}
.backButton, .ibutton, #topMenu .button, .toolbar .button {
top: 6px;
-webkit-border-radius: 0;
padding: 0 1px 2px 1px;
height: 28px;
line-height: 28px;
font-weight: bold;
color: #FFFFFF;
text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0;
text-decoration: none;
background: #4A6C9B;
border-color: #4A6C9B;
}
#topMenu .backButton {
position: absolute;
left: 6px;
right: auto;
font-size: 20px;
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAeCAIAAAA6iHCJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtJJREFUeNrEV21P01AYbbtubNExBnXDbYjjZYI4BMdgEANDQoTElw/+Rw0mBs0UiSGaoJFEQEPwjRhFCW/JxrZ2Xdu1fe71bpAhCHzqupPnS5ObPOeec+5zb+lHLxao05HPiwvzr3/++J7N7FFGgaaDLe034+O+wCXyxSKET1u5+Wc98XTK39zeOzjudLmNIoAR2tlaf/Zkqm9gKNI/RBigE9dtb23MJKZj8fvuC16b3WGxsJRxOFfHeQOtH+ZnOI+XRfgEBoLAzz6fjo7ebfD4GYYhMiEdDGRAW6xOt6d7YGzl4xIL/7mgyPL044edkVt19T4EFAJEVQYud+MvOCkHc7MJ3+VrXGOzXrHeZS1s9trjOVj7tiqpONTWBRgD6BVmQFls9iMaSHnx/bu3ffEHgC2gVVqAIojKR3Iw9zLRcjVmtTnA0NydxQDg0IWvq59kYIOeZtWs9gQkagcMcgK/vLjYNXQHcEkas0AcYPdNIPr7Q/0M69B089ofavB5ZVm3OJ2cTwegzAUgxGbSe8tLS52xewjRZGabzAABZt+8mvGHBsiYNF+AAw1cXEBGNUiQqWpAlArM5MSYBXgEOl0NkLcCkxak28MRKbuDMa6KDAwAUnU8HO2Q+N0SJ3OLMCA7V1S9vt7d3tSg5LNV0ACXwOekcGfreVbVVYUqMjOvyPsH71cqkxsZ7NHFJIXBTCMONMAlEryoxAfDucyOmaOpmINyaTowrK23IyDxKbNzUIYoKU3+i37OXpCESvfGCOw11uMMcCkQke4rDlrS1coOSk2VOXftERfKtZsURmLXQUqBVqiUABgrQirc0Xp4Fv4t8kxN8dLkaJQupOVcGnTN0PuQHHlRSG1Eu9tUTLOnxZ5clclsfmK078va7/WN7axomCN2e42Xc/VEIoiiM0KePeM20DTY3M22BZtuhENW1rC/NrI3WVGTmZxSKEr7V4ABAJ+53J1I3nPjAAAAAElFTkSuQmCC) 0 8 0 14;
border-width: 0 8px 0 14px;
}
#topMenu .backButton .pressed {
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAeCAIAAAA6iHCJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAsJJREFUeNrEV9tP01AYP6eXrZddyoAtDGkRHnwUjdEHEUKCaJyQIT4Y/z9jYgJE0QgENYjRRB+JZIMxCco2iQ4YdO3annM8XAJhgE9t98v30pyTfr/v991a+PzNF3AxdH1v7vV46Xdpe6sM3AKEqqr1D6aSl9T9p2dTny+6OT8zuZTJtrQmREEICqJbBAghhlEtFQtaR/v99FMOY3zuvYW5l9nlvKp1SXKY5XkIGeAeAoIsiHKh8PPD9ASHyTkMvi7MruTy7VqnHIpACAmhxLGLDCDDBKVQPNH2t7zNIUzqjk3DWMost8STohShfql34A0EMVzZqdAs1DuYfvUiqrTK4aazR24DsixfXwfzMxOmDeIx5SB4BLwGw5zSoKrv5deLqtZNAESIAO9Bwz9VB7NT4/F4G8Py3ut/BMc2TrKwMDtp2igshhDGwC/QUI8Y7GyV135tJju0g8Yj/jEglMGBu/czU02xZsjwCPvn/kSDb5/mHMJG5Aj2Uf8TDTbWV5eyqx3qZUIgAX6DTjyWCSpRReGCImkELEPnJDFoYc6gY6gRMBHHjIw9gcTcXzwQNsIIU9r8kxoetYxdQEhDZKADUDBr9rWeq7a5C+mu8N0YGrmFgNZ9pUWRHctogAaHNVksbPQNpgIswsjxmwGdCdSEkLK29uNeahRbe7RL/SvEYw0opEhzsVjs7RuoGRWfswCOjRcjXEBUk62WqftdB8cwHdJzsz8qc45d83wkE8IzmDk7KfO57MDQME9bxOOqRMiWxMCpLBxaOJZczmSGHqSJpWOEPBMAOKZ+/cbto16oMznWls/nHqbHgFO1a4a7W5u+zXEss7rd3dWpmwYHLvgdkJTEam5l5NHjj+/elrcqhgPdYkBzH5KF3rtpB6Edvcb9ZxuI0cT3xcVbd4YiIZHnONe+ThEyTIuOH1aI0sd/AgwAlqkuN/kCJYwAAAAASUVORK5CYII=) 0 8 0 14;
}
#topMenu .ibutton{
position: absolute;
padding : 0px 7px 2px 6px;
right: 6px;
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAeCAIAAACqmwlGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbVJREFUeNqUlEtLw0AUhSfJTRpTk5Za1FAfxS5sBVtfC7tQdOcv8C+6FURx50JBEUGwG0HrA5EqtlRtTNM0d+KtrqyCk8NAmJnzce7AzZW2do8ZY/d31bPjw1rt8aP1zn4qblq2nVkqr0xmc7QFzsOTw4PKxXkuX8xOLxqDZh/gOq1m42l/Z3u2OL+8sg63N9dXN1erG5sDg5aqarKi9AFWCofsiUw2f3q0Z49PKFZquLCwlkyPSrISMkaBfYsO6UrTDTORrpwdgazGreRw0OXsP5FNAgM0w0TOkCMTUCxugQxaFwMmJjIDIvMF6vkWmQlADFAYQAiQ+8IAmQF5SB/RBB72EroBj5TAAxR+A+fAMUQMBQEyR09w3I723hYEyAxM6kkQILPMIgqkHiYcQO0UOeELE45gElA9Ud4cvaTogApAv7qINQw5gCInE0bQ9YRa1fdSSVMuzuTcVoP4fwPIVipMyQroc/mxt5cH33P4X9OADumKDGRjEAPX62TskdF0qnJZfa6/eF6nD9D12Eg6MTtXUlS18eoATbZ60zF0rbxUHNA1+DUqqfnbnk9W13Fo+ynAAB714wGw06ZOAAAAAElFTkSuQmCC) 0 5 0 5;
border-width: 0 5px 0 5px;
}
#topMenu .button {
position: relative;
// height: 28px;
padding : 8px 8px 8px 8px;
// margin-top: 16px;
// line-height: 28px;
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAeCAIAAACqmwlGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbVJREFUeNqUlEtLw0AUhSfJTRpTk5Za1FAfxS5sBVtfC7tQdOcv8C+6FURx50JBEUGwG0HrA5EqtlRtTNM0d+KtrqyCk8NAmJnzce7AzZW2do8ZY/d31bPjw1rt8aP1zn4qblq2nVkqr0xmc7QFzsOTw4PKxXkuX8xOLxqDZh/gOq1m42l/Z3u2OL+8sg63N9dXN1erG5sDg5aqarKi9AFWCofsiUw2f3q0Z49PKFZquLCwlkyPSrISMkaBfYsO6UrTDTORrpwdgazGreRw0OXsP5FNAgM0w0TOkCMTUCxugQxaFwMmJjIDIvMF6vkWmQlADFAYQAiQ+8IAmQF5SB/RBB72EroBj5TAAxR+A+fAMUQMBQEyR09w3I723hYEyAxM6kkQILPMIgqkHiYcQO0UOeELE45gElA9Ud4cvaTogApAv7qINQw5gCInE0bQ9YRa1fdSSVMuzuTcVoP4fwPIVipMyQroc/mxt5cH33P4X9OADumKDGRjEAPX62TskdF0qnJZfa6/eF6nD9D12Eg6MTtXUlS18eoATbZ60zF0rbxUHNA1+DUqqfnbnk9W13Fo+ynAAB714wGw06ZOAAAAAElFTkSuQmCC) 0 5 0 5;
border-width: 0 5px 0 5px;
}
.toolbar .button {
position: relative;
height: 28px;
padding : 8px 8px 8px 8px;
margin-top: 16px;
line-height: 28px;
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAeCAIAAACqmwlGAAACJWlDQ1BJQ0MgUHJvZmlsZQAAeJyVkstrE1EUh7+ZIJFSgsqYhSiMqCAYSx4Ws0yaPkibNtMkJQ+6SWbSJDqZDJNJrOKif4Erd65cCMGdImhdudSF4AOkCzduRHDlg65i08U4ExBC8cCF7xzOPY/fveD7XTVNXQTahm3llubkUrki+/fwIXGaE0xV1a6ZVJQME23/EwLAx6tV09Ql/V7659krxrXd79sz4pfNyfcACFilcgWEECA1HE4AUs3hAiDdsk0bhCYgqc2qBsJdIGQVcikQBkCg4fALIFBz+DUQ6KsNG4Q9IGxoLQPE40Bcq3dVEBPAltZV2yAOgIN2u6OBbwBcVk3LBt874GKpXJGdkXt/IPEMxK/j2OZnGOzAuTfj2IUhBH/B09449mMZARCguxWLAiBM9eHY8mi03wB/AIZPRqPh49HooAjiI/hwRu1Z/b96CcJbOMp3dnZ8eG+7NIkdXQAIw8MElHcg8wru78Cl5xB8ADmgCGIs5h5HQwCmU9lVJbkuR+LR2SOe/P+trffcPqeAaaO2lgWCwDfTVgoud/v5BZe3Wotpl7Xq/IrLd5qpNS/HWsy5fKO6rLhcNzbyXn1dyYx7zXn59e5CflyzUHTZ6uU2XL7ZWfHytfq8N5uhr3k1W3bam58UWVZRSLKOTIQ4UWbB+ZMAgZMgKUuxyPWXu/7z/+pk17dtgFTHvG21Gk1bTpqmXg/JaUOdCcnRcDjOIYF5rvXkqWSvAAABuklEQVQ4jZ2UMWtUQRDHZ3ZnffjuDOrlvEsMHAqCIgQDIqeNCF4hYmGs/AoWksLWKqUWqfwQgmnE6gQRRFIEIrFQEATRUw45TcK9Z97bNzMWp4LPIvsctvz/Zn+zLIOpjgHg7srz/rO3wy8fd5Mt+Lvs/ubc0Xbv0snlpYsAgKmOF2/11zc2a53eocZsY8qWgNEOfx99Tj70zy7Mrz7o4e17jx8+eT9/YbExZWuRseU8MEOSyWiHN1+u3rx23G65c7Onrx9rO7IoCizlIwpk8UBsOD7xev0F/TAznZbzhZY7/1Odlhu8a5O6wwVrwXvmAQB03zShjTK/d/tJoY0IQMMBACXl3If5AIByTiB+N5NQQjypcs6hSqpMyrkvqiip+PChVTyBCkvwK6mQihcOdVLxJNk2p8NAQLJtAgBAE6oEUCH6G0CsEEc0sU3D8zVKJjNUuKSqkvmPoasChiLQsK+hisYZFzfFJyF58UlUnzFXz7c4GYQAnAyudJuY6vjG0tqrN58obiHFaF1ZhL0WaZEOz5yae7TSxV+79f7a043xt9HXPM9KgHH1I9MHLy/Ul+90YbJbQ3z+1E898dPExYV7UAAAAABJRU5ErkJggg==) 0 5 0 5;
border-width: 0 5px 0 5px;
}
#topMenu .txtOptionInput {
vertical-align: baseline;
}
.popup li a {display:block; padding:1em; font-weight:bold; cursor:pointer;}
.toolbar {height: 34px;}
.selected .toolbar a {color:#FFF;}
.selected .toolbar a:hover {color:#FFF;}
.tagged { float:left; }
.tagged li { display:inline; }
.tagged { background:transparent !important; border:0 !important; }
.tagged .button {color: [[ColorPalette::TiertiaryPale]] !important; }
.tiddler {padding:0em 1em 0em 1em;}
.tiddlerListItem .tiddlerListItemTitle, .tiddlerListItem .tiddlerListItemTitle a {
line-height: 28px;
font-size: 1.2em;
color: #000;
background: #FFF;
text-decoration: none;
}
.tiddlerListItem {
display: block;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1woZERcgh0frmgAAALVJREFUeNrt1TEKAjEQheH/qZWNxd7GSmQX8QpewDN5BS8ggoiVt9nCZkufTXaJCxbirIU41YTAfCSZJLLN0DHiC/GjiKRSUhmNTHIAqFKO7dMQKxlneSVpGY7YPgLnbG4VBT2dSYIuPWgR3l22Dz1o/Sn0qoWvQJON55KmYYikGbAF2qI3YGe7ibonLVD0gDpku4YCOkTSCNgMAXSI7TuwT8VDAQDl/4mkIqF15Nul/6f1TjwAO6BGddCkxQkAAAAASUVORK5CYII=) no-repeat right center;
padding-right: 24px;
border:0;
border-top:dashed 1px [[ColorPalette::TertiaryDark]];
}
.tiddlerListItem a, .tiddlerListItem code {
font-family: Arial;
font-size: 1em;
color: #333;
background: #FFF;
text-decoration: none;
}
.homeTitle {
line-height: 28px;
font-family: Arial;
font-size: 2em;
font-weight: bold;
color:[[ColorPalette::SecondaryDark]];
background: #FFF;
text-decoration: none;
}
/*}}}*/
/*{{{*/
@media print {
#topMenu {display: none ! important;}
}
/*}}}*/
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}
h1 {color:[[ColorPalette::C_header1]];background:transparent;}
h2 {color:[[ColorPalette::C_header2]];background:transparent;}
h3 {color:[[ColorPalette::C_header3]];background:transparent;}
h4 {color:[[ColorPalette::C_header4]];background:transparent;}
h5 {color:[[ColorPalette::C_header5]];background:transparent;}
h6 {color:[[ColorPalette::C_header6]];background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::C_header1]];}
h2 {border-bottom:2px solid [[ColorPalette::C_header2]];}
h3 {border-bottom:2px solid [[ColorPalette::C_header3]];}
h4 {border-bottom:2px dotted [[ColorPalette::C_header4]];}
h5 {border-bottom:2px dotted [[ColorPalette::C_header5]];}
h6 {border-bottom:2px dotted [[ColorPalette::C_header6]];}
.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}
.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}
.tabSelected{color:[[ColorPalette::PrimaryDark]];
background:[[ColorPalette::TertiaryPale]];
border-left:1px solid [[ColorPalette::TertiaryLight]];
border-top:1px solid [[ColorPalette::TertiaryLight]];
border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}
#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}
.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}
#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}
.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}
.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
.tiddler .defaultCommand {font-weight:bold;}
.shadow .title {color:[[ColorPalette::TertiaryDark]];}
.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}
.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}
.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}
.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}
.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}
.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}
.imageLink, #displayArea .imageLink {background:transparent;}
.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}
.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}
.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}
.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}
.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}
body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}
h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:0.5em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:0.5em;margin-bottom:0.3em;}
h1 {font-size:1.25em;}
h2 {font-size:1.2em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:1em;}
h6 {font-size:1em;}
hr {height:1px;}
a {text-decoration:none;}
dt {font-weight:bold;}
ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}
.txtOptionInput {width:11em;}
#contentWrapper .chkOptionInput {border:0;}
.externalLink {text-decoration:underline;}
.indent {margin-left:0.5em;}
.outdent {margin-left:0.5em; text-indent:-0.5em;}
code.escaped {white-space:nowrap;}
.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}
/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
#mainMenu .tiddlyLinkExisting,
#mainMenu .tiddlyLinkNonExisting,
#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}
.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}
#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}
.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}
#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}
.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}
.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}
.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}
#contentWrapper {display:block;}
#splashScreen {display:none;}
#displayArea {margin:1em 17em 0em 14em;}
.toolbar {text-align:right; font-size:.9em;}
.tiddler {padding:1em 1em 0em 1em;}
.missing .viewer,.missing .title {font-style:italic;}
.title {font-size:1.6em; font-weight:bold;}
.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}
.tiddler .button {padding:0.2em 0.4em;}
.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}
.footer {font-size:.9em;}
.footer li {display:inline;}
.annotation {padding:0.5em; margin:0.5em;}
* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:2em; padding-left:1.5em;}
.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}
.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:0.9em; line-height:1.4em;}
.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}
.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}
.sparkline {line-height:1em;}
.sparktick {outline:0;}
.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}
* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
{{{
// Create a button for a tag with a popup listing all the tiddlers that it tags
//# title and tooltip arguments are optional
createTagButton = function(place,tag,excludeTiddler,title,tooltip)
{
if (tag == "Menu")
var onClick = onClickMenuTag;
else
var onClick = onClickTag;
var btn = createTiddlyButton(place,title||tag,(tooltip||config.views.wikified.tag.tooltip).format([tag]), onClick);
btn.setAttribute("tag",tag);
if(excludeTiddler)
btn.setAttribute("tiddler",excludeTiddler);
return btn;
}
// Event handler for clicking on a tiddler tag
function onClickMenuTag(ev)
{
var e = ev || window.event;
var popup = Popup.create(this);
var tag = this.getAttribute("tag");
var title = this.getAttribute("tiddler");
if(popup && tag) {
var tagged = store.getTaggedTiddlers(tag);
var titles = [];
var li,r;
for(r=0;r<tagged.length;r++) {
if(tagged[r].title != title)
titles.push(tagged[r].title);
}
var lingo = config.views.wikified.tag;
if(titles.length > 0) {
for(r=0; r<titles.length; r++) {
//function(place,title,params,label,prompt,accessKey,newFocus,isJournal)
if (titles[r] == "<<newTiddler>>")
config.macros.newTiddler.createNewTiddlerButton(createTiddlyElement(popup,"li"),"New Tiddler ","","New Tiddler", "create a new tiddler");
else
createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);
}
} else {
createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),lingo.popupNone.format([tag]));
}
}
Popup.show();
e.cancelBubble = true;
if(e.stopPropagation) e.stopPropagation();
return false;
}
}}}
iPhoneではテキストのエリアでスクロールできない(完了)
ようやく発見した。テキストエリアでスクロールするには[["two-finger scroll"|http://www.apple.com/macbook/features.html]](2本の指でスクロール)すればよい。
----
編集モードで、tiddlerがテキストエリアよりも大きい場合、iPhone上でテキストエリアのスクロールができないために、テキスト全体が見渡せません。
これはiPhoneのSafariの現在のバージョンの限界です。
Finally I discover that TextArea is scrollable with a [["two-finger scroll"|http://www.apple.com/macbook/features.html]]
----
In EditMode, if tiddler is larger than the TextArea, you can't see the whole tiddler text due to not scrollable TextArea on iPhone.
It is certainly a limitation of the current version of Safari on iPhone.
TiddlyHome
[img[http://tiddlyhome.bidix.info/_th/images/TiddlyHomeLogo.32.jpg][http://tiddlyhome.bidix.info/]] TiddlyHome は UploadPlugin により、マルチユーザーとマルチサイトを実現したTiddlyWikiのホスティングサービスのためのインフラとしてデザインされたパッケージです。
TiddlyHome は TiddlyWiki 2.3 を使用したベータ版です。
詳しい情報は http://TiddlyHome.bidix.info/ を参照してください。
----
[img[http://tiddlyhome.bidix.info/_th/images/TiddlyHomeLogo.32.jpg][http://tiddlyhome.bidix.info/]] TiddlyHome is a package design as an infrastructure for multi-user and multi-site TiddlyWiki hosting service based on UploadPlugin.
TiddlyHome is in beta stage and uses TiddlyWiki 2.3
More at http://TiddlyHome.bidix.info/
TiddlyWikiは強力な[[wiki|http://en.wikipedia.org/wiki/Wiki]]で個人的なノートを管理したり、概要をまとめたりするのに効果的な方法で、すべての機能を盛込んだ単独のhtmlファイルです。
特別の技術は必要ありません。これを使い始めるにはあなたのパソコンのデスクトップにデータのない空のTiddlyWikiをダウンロードするだけで良いのです。そのファイルはUSBスティックメモリに保存することもできます。メールに添付して送ることも可能です。webサーバーにアップロードすればどこのサイトでもwikiを置くことができます。
TiddlyWikiはJeremy Ruston氏によって作成されました。TiddlyWikiはBSD Open Source License (このページでソースを見てください)のもとに配布されています。
詳細については[[www.TiddlyWiki.com|http://www.tiddlywiki.com]]にアクセスしてください。
現在のバージョンは:<<version>>
----
TiddlyWiki is a powerful [[wiki|http://en.wikipedia.org/wiki/Wiki]] in a single html file which possesses all the features needed to manage and to outline personal notes in an efficient way.
No facility is required. You only need to download an empty TiddlyWiki on your desktop to start to use it. It can be stored on USB stick. To send it just attached it to mail. You can also upload it on web server to publish a whole site.
TiddlyWiki was created by Jeremy Ruston. TiddlyWiki is distributed under a BSD Open Source License (see the source of this page).
For details visit [[www.TiddlyWiki.com|http://www.tiddlywiki.com]].
Current Version: <<version>>
検討項目
#作業をしようと考えている項目[[Tickets|Ticket]](完了項目[[closed Tickets|ClosedTicket]]参照)
#ファイルサイズを効率的にする。
----
# Resolve [[Tickets|Ticket]] (see [[closed Tickets|ClosedTicket]])
# Optimize the File size.
<<back>>
<<tag Menu>>
<<history>>
<<forward>>
<<search>>
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 13/10/2008 11:32:02 | BidiX | [[iTW_mobilememobiz.html|file:///D:/iTW/iTW_mobilememobiz.html]] | [[store.php|http://itw.bidix.info/store.php]] | . | [[index.html | http://itw.bidix.info/index.html]] | backup | failed |
| 13/10/2008 11:35:39 | MobileMemoBiz | [[iTW_mobilememobiz.html|file:///D:/iTW/iTW_mobilememobiz.html]] | [[store.php|http://itw.bidix.info/mobilememobiz/store.php]] | . | [[index.html | http://itw.bidix.info/mobilememobiz/index.html]] | backup | ok |
| 13/10/2008 12:08:40 | MobileMemoBiz | [[iTW_mobilememobiz.html|file:///D:/iTW/iTW_mobilememobiz.html]] | [[store.php|http://itw.bidix.info/mobilememobiz/store.php]] | . | [[index.html | http://itw.bidix.info/mobilememobiz/index.html]] | backup |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.4|
|''Date:''|2008-08-11|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 4,
date: new Date("2008-08-11"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
if (!params) params = {};
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
options: [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine"
],
refreshOptions: function(listWrapper) {
var opts = [];
for(i=0; i<this.options.length; i++) {
var opt = {};
opts.push();
opt.option = "";
n = this.options[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
};
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
var rssString = generateRss();
// no UnicodeToUTF8 conversion needed when location is "file" !!!
if (document.location.toString().substr(0,4) != "file")
rssString = convertUnicodeToUTF8(rssString);
bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == 404)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
//}}}
UploadTiddlerPlugin ではtiddlerのタイトルの書換えに対応していない。
tiddlerのタイトルが変更されても、UploadTiddlerPluginでは元のタイトルの記事を削除することができません。
----
When the title of a tiddler changes, UploadTiddlerPlugin doesn't delete the tiddler with the old title.
/***
|''Name:''|UploadTiddlerPlugin|
|''Description:''|Upload a tiddler and Update a remote TiddlyWiki |
|''Version:''|1.2.1|
|''Date:''|2008-08-19|
|''Source:''|http://tiddlywiki.bidix.info/#UploadTiddlerPlugin|
|''Usage:''|Uses {{{uploadOptions>>}}}<br>with those UploadTiddler Options : <br>chkUploadTiddler: <<option chkUploadTiddler>><br>txtUploadTiddlerStoreUrl: <<option txtUploadTiddlerStoreUrl>>|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''[[License]]:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''CoreVersion:''|2.3.0|
***/
//{{{
version.extensions.UploadTiddlerPlugin = {
major: 1, minor: 2, revision: 1,
date: new Date("2008-08-11"),
source: 'http://tiddlywiki.bidix.info/#UploadTiddlerPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.3.0'
};
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;
bidix.uploadTiddler = {
messages: {
aboutToSaveTiddler: "About to update tiddler '%0'...",
storeTiddlerNotFound: "Script store tiddler '%0' not found",
tiddlerSaved: "Tiddler '%0' updated in '%1'"
},
upload: function(title,tiddler,oldTitle) {
var callback = function(status,params,responseText,url,xhr) {
if (xhr.status == 404) {
alert(bidix.uploadTiddler.messages.storeTiddlerNotFound.format([url]));
return;
}
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
else
displayMessage(bidix.uploadTiddler.messages.tiddlerSaved.format([params[0], params[1]]));
store.setDirty(false);
}
if ((config.options['chkUploadTiddler']) && (document.location.toString().substr(0,4) == "http")){
displayMessage(bidix.uploadTiddler.messages.aboutToSaveTiddler.format([title]));
var ExtTiddler = null;
var html = null;
if (tiddler) {
ExtTiddler = store.getSaver().externalizeTiddler(store,tiddler);
html = wikifyStatic(tiddler.text,null,tiddler).htmlEncode();
}
var form = "title="+encodeURIComponent(title);
form = form + "&tiddler="+(ExtTiddler?encodeURIComponent(ExtTiddler):'');
form = form + "&html="+(html?encodeURIComponent(html):'');
var filename = (config.options['txtUploadFilename']?config.options['txtUploadFilename']:'index.html');
form = form +"&oldTitle="+encodeURIComponent(oldTitle);
form = form +"&fileName="+encodeURIComponent(filename);
form = form +"&backupDir="+encodeURIComponent(config.options['txtUploadBackupDir']);
form = form +"&user="+encodeURIComponent(config.options['txtUploadUserName']);
form = form +"&password="+encodeURIComponent(config.options['pasUploadPassword']);
form = form +"&uploadir="+encodeURIComponent(config.options['txtUploadDir']);
form = form +"&debug="+encodeURIComponent(0);
var storeScript = (config.options.txtUploadTiddlerStoreUrl
? config.options.txtUploadTiddlerStoreUrl : 'storeTiddler.php');
var r = doHttp("POST",storeScript,form+"\n",'application/x-www-form-urlencoded',
config.options['txtUploadUserName'],config.options['pasUploadPassword'],callback,Array(title,filename),null);
}
}
}
TiddlyWiki.prototype.saveTiddler_bidix = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(oldTitle,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
var tiddler = TiddlyWiki.prototype.saveTiddler_bidix.apply(this,arguments);
var title = (newTitle?newTitle:oldTitle);
if (oldTitle == title)
oldTitle = '';
bidix.uploadTiddler.upload(title, tiddler, oldTitle);
}
TiddlyWiki.prototype.removeTiddler_bidix =TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler = function(title) {
TiddlyWiki.prototype.removeTiddler_bidix.apply(this,arguments);
bidix.uploadTiddler.upload(title, null);
}
//
// Initializations
//
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
// styleSheet
setStylesheet('.txtUploadTiddlerStoreUrl {width: 22em;}',"uploadTiddlerPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadTiddlerStoreUrl: "Url of the UploadTiddlerService script (default: storeTiddler.php)",
chkUploadTiddler: "Do per Tiddler upload using txtUploadTiddlerStoreUrl (default: false)"
});
// Options Initializations
bidix.initOption('txtUploadTiddlerStoreUrl','');
bidix.initOption('chkUploadTiddler','');
// add options in backstage UploadOptions
if (config.macros.uploadOptions) {
if (config.macros.uploadOptions.options) {
config.macros.uploadOptions.options.push("txtUploadTiddlerStoreUrl","chkUploadTiddler");
}
}
//}}}
iTWでは次のサイトは以下のURLで提供されています。
*http://itw.bidix.info/YourSite/backup : バックアップファイルのリスト
*http://itw.bidix.info/YourSite/download.php : あなたのiTWをダウンロードする
*http://itw.bidix.info/YourSite/index.xml : あなたのサイトの RSSFeed
*http://itw.bidix.info/YourSite/news.php : RSSFeedの表示
*http://itw.bidix.info/YourSite/proxy.php : 外部からのアクセスのためのproxy
----
Each site hosted in a iTW provides these ~URLs :
*http://itw.bidix.info/YourSite/backup : List of backup files
*http://itw.bidix.info/YourSite/download.php : to download your iTW
*http://itw.bidix.info/YourSite/index.xml : your RSSFeed
*http://itw.bidix.info/YourSite/news.php : to display your RSSFeed
*http://itw.bidix.info/YourSite/proxy.php : to access remote sites
ユーザー名とパスワードの入力にはiPhoneでは、別のスペースが必要。
>__「iPhone上の場合には:」__
>「バグのために、どちらのオプション(テキストとパスワード)の後ろにスペース文字を追加して入力する必要がある。
>
>BidiX
----
>__''Only on iPhone :''__
>'' Because of a bug, you need to add an extra space character after each option (text or password)''
>
> BidiX
<!--{{{-->
<div class='toolbar' macro='toolbar +editTiddler > closeTiddler permalink references'></div>
<div macro="hideWhenTaggedAny noTitle">
<div class='title' macro='view title'></div>
</div>
<div macro="hideWhenTaggedAny systemTool systemList">
<div class='tagged' macro='tags'></div>
</div>
<div class='tagClear'></div>
<div class='viewer' macro='view text wikified'></div>
<div macro="showWhenTagged [[systemList]]">
<div class='viewer' macro="listByTag '' modified ''"></div>
</div>
<div class='tagClear'></div>
<!--}}}-->
iTWは標準のTiddlyWikiをBidiXによって、iPhone上で閲覧したり修正したりできるようにデザインし、カスタマイズしたものです。
それはwebからアクセスできるようにサーバーにインストールできます。
あなたは http://itw.bidix.info/ のサイトから[[Download iTW 1.3.0 package]]をダウンロードするか、[[Setup your own iTW Site]]で自分自身のiTWのサイト
設定することで、自分のiTWサイトを構築することができます。
詳細の変更箇所については、[[History]]の履歴を読んでください。
iTW is a plain TiddlyWiki designed and customized by BidiX to be @@viewed and edited@@ on an iPhone.
It should be installed @@on a server@@ to be accessed from the web.
You can setup your own @@iTW site@@ by downloading the [[Download iTW 1.3.0 package]] or [[Setup your own iTW Site]] at http://itw.bidix.info/
See [[History]] for details on changes.
!Wikiとブログの比較
*[[Wikiとブログの比較|http://qwerty777.s57.xrea.com/etc/wikiblog.htm]]にあるように、日記のように時系列なものはブログが向いていますし、時間の順序は関係なくひとつの記事を何度も参照するような場合は、~WikiPediaがその代表ですがWikiが向いています。
*iPhoneでテキストを持歩くには、iNoteのようなメモ帳型のソフトがあります。アプリケーションによっては、Webサイトとシンクロすることもできるので、WebサイトとiPhoneの両方にデータを入れて持歩くことが可能です。
*しかしながら、個人的にWikiを使用するのは、[[Wiki記法]]が使えるからです。
*[[Wiki記法]]はリンク先を見てもらえばわかりますが
**見出しやリストなどが、簡単な記号「!」とか「*」などを使用することで簡単に作成できることです。CSSを少し勉強すれば見出しなどをStyleSheetやStyleSheetColorsを書換えることで、自分の好きなデザインに変更することができるのです。
**文字の装飾も簡単で、太字やイタリック、下線や取消線などひととおりのことができるのです。
*そして一番の理由は、データごとのリンクを簡単に設定することができることにあります。
**テキスト形のアプリケーションではカテゴリごとにデータをまとめることはできますが、多くの場合リンクを貼ることはできません。
**ブログなどでも、リンクを貼るにはURLを指定する必要があります。
**しかしながら、Wikiでは[[リンク先タイトル]]のように二重の中括弧でくくることで、簡単にリンクを貼ることができるのです。これは特にコピー&ペーストのできないiPhoneでは有効だと思います。また~WikiNameと呼ばれる英文字の大文字小文字の組合わせ(大文字が単語の途中にある必要があります)を記載すれば、自動的にリンクになります。
!iTWのメリットと問題点
!!メリット
*iTWはTiddlyWikiというJavaを使った1つのファイルで作られたWikiです。
*TiddlyWikiについては、[[本家のサイト|http://www.tiddlywiki.org/wiki/Main_Page]]、[[TiddlyWikiのススメ|http://hsj.jp/junknews/archives/tiddlywiki_susume.html]]、その他Googleで検索してみてください。
*1ファイルでできているため、USBメモリにおいたり、メールに添付したりすることができます。
*通常のWikiはPHP、Ruby、Perlなどの言語とMySQLなどのデータベースでできており、Apacheのようなサーバーアプリケーションが必要になるのですが、そういうものが一切不要というのがすごいところです。
*iPhoneで使うには、bidixのサイトにWikiを設置するとともに、パソコン(もしくはUSBメモリ)にダウンロードし、両者を同期させながら使います。書込みはWEBか、パソコンのどちらかで行います。
*そして、iPhoneには[[Air Sharing|http://www.avatron.com/products/]]というアプリをつかって、パソコンからiPhoneにコピーをします。ファイルをクリックするとsafariが立上がり、中身をみることができます。残念ながら、iPhoneにコピーしたものは、iPhoneのsafariに保存機能がないため、閲覧することしかできません。
*iPhoneから新しい記事を書込むときは、WEBにアクセスして新規記事を作成することになります。
*なお、私の環境ではなぜかSyncがうまく機能せず、一部の記事が表示されません。とりあえずWEBで修正した場合はWEBで修正した箇所をPCに手動でコピーしています。PCで修正した場合は、PCのファイルをWEBにアップロードし、上書きすることにしています。
*それでもデータベースが蓄積されれば、自分だけのWikiPediaを持つようなもので、大変便利だと思っています。
!!デメリット
*TiddlyWikiはJavaを駆使しているために大変重たいものになってしまいます。さらに便利につかうため、プラグインを導入すると負担が大きくなります。
*iTWは、Javaをできるだけ小さくするように調整しているようですが、記事が増えてくるにつれ重たくなりそうです。また、あまり記事を書いていないのに落ちる場合は、一度電源を切ってリンゴマークをだし、リセットすると動く場合があります。
Youtubeへのリンクをはることもできる。
方法は、リンクしたい動画のところにある埋め込みのスクリプトを、<html>と</html>(もちろんすべて半角で)
ただし、動画をみることができるのは無線LANの環境が必要。
(事例としてはちょっと長すぎ。。。最後まで見たい方は気長にお待ちください。)
<html><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/Mmj2jqyHeH0&hl=ja&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Mmj2jqyHeH0&hl=ja&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></html>
It should be nice if the transition between List and Tiddler occurs with a RightToLeft Animation, like Mail for example.
プラグインは次のひとつのファイルからエクスポートされています。: http://itw.bidix.info/js/iplugins.j
このファイルは MarkupPostBody の部分にロードされています。
次のファイルが含まれています。
* SimonBaird氏のHideWhenPlugin
* BidiX(ナビゲーションプラグイン)のHistoryPlugin
* SaqImtiaz氏のオリジナルバージョンのListByTag
* BidiXのLoadRemoteFileThroughProxy
* BidiXのPasswordOptionPlugin
* BidiXのUploadPlugin
* BidiXのUploadTiddlerPlugin
----
Plugins are exported in a file : http://itw.bidix.info/js/iplugins.j
This file is loaded in MarkupPostBody.
This file contains :
* HideWhenPlugin from SimonBaird
* HistoryPlugin from BidiX (the navigation plugin).
* ListByTag original version from SaqImtiaz
* LoadRemoteFileThroughProxy from BidiX
* PasswordOptionPlugin from BidiX
* UploadPlugin from BidiX
* UploadTiddlerPlugin from BidiX
私はiTWのバージョン1.3.0をリリースできることをうれしく思います。
iTWはiPhone上で閲覧したり修正したりできるようにデザインし、カスタマイズされたプレーンなTiddlyWikiです。
iTWは主にiPhone用に調整されたUploadTiddlerPlugin、 UploadPlugin、 HistoryPlugin、 ListByTag および StyleSheet を使用しています。
主な変更点は:
*iTWは1つのファイルです:コア、プラグインとイメージはTiddlyWikiに組込まれているものです
*コアのバージョンは1.4.1です
*UploadPlugin と UploadTiddlerPluginの新しいバージョンを使用しています。
*検索ボックス付の新しいトップメニューを実装しました
*表示の調整。現在iTWはFirefoxに対応しています(しかしIEには未対応です)
*「Menu」というタグがついたtiddlersをメニューに表示するタグメニュープラグインを実装しています。([[<<newTiddler>>]]と書かれたtiddlerは「newTiddler」ボタンとして機能します。
iTWは以下により利用可能です:
* スタンドアロンのファイル : http://itw.bidix.info/empty_iTW.html
* webサーバーにインストールできるパッケージ : http://itw.bidix.info/iTW_1.3.0.zip
* 無料のホスティングサービス: [[http://itw.bidix.info/#Setup your own iTW Site|http://itw.bidix.info/#%5B%5BSetup%20your%20own%20iTW%20Site%5D%5D]]
コメントや助言をくれたBidiXに感謝します
iTWを楽しんでください
----
I'm pleased to announce the availability of version 1.3.0 of iTW.
iTW is a plain TiddlyWiki designed and customized to be viewed and edited on an iPhone.
iTW mainly uses UploadTiddlerPlugin, UploadPlugin, HistoryPlugin, ListByTag and StyleSheet tuned for iPhone (works also fine in Safari and correctly in FireFox).
The main changes are :
* iTW as a single file : core, plugins and images are embedded in TiddlyWiki
* Core version 1.4.1
* Updated version of UploadPlugin and UploadTiddlerPlugin
* new TopMenu with seach box
* Presentation tuning. Now iTW is compatible with Firefox (But net yet with IE).
* TagMenu plugin to display a Menu with tiddlers tagged ''Menu'' (tiddler [[<<newTiddler>>]] renders as a ''newTiddler'' button)
iTW is available as :
* a standalone file : http://itw.bidix.info/empty_iTW.html
* a package ready to install on a web server : http://itw.bidix.info/iTW_1.3.0.zip
* a directly as a free hosting service : [[http://itw.bidix.info/#Setup your own iTW Site|http://itw.bidix.info/#%5B%5BSetup%20your%20own%20iTW%20Site%5D%5D]]
Thanks to make comments and suggestions to BidiX.
Enjoy iTW,
私はiTWのバージョン1.3.1がリリースできることを喜んで発表します。
これはマイナーリリースです。主な変更箇所は:
*[[Options]] tiddlerで警告がでなくなりました
*[[StyleSheet]] でのマイナーな表示の調整
* UploadTiddlerPlugin v 1.2.1
iTWは以下により利用可能です:
* スタンドアロンのファイル : http://itw.bidix.info/empty_iTW.html
* webサーバーにインストールできるパッケージ : http://itw.bidix.info/iTW_1.3.0.zip
* 無料のホスティングサービス: http://itw.bidix.info/#Setup your own iTW Site
コメントや助言をくれたBidiXに感謝します
iTWを楽しんでください
----
I'm pleased to announce the availability of version 1.3.1 of iTW.
This is minor release. The main changes are :
* [[Options]] tiddler has no more warning
* Minor presentation tweaks in [[StyleSheet]]
* UploadTiddlerPlugin v 1.2.1
iTW is available as :
* a standalone file : http://itw.bidix.info/empty_iTW.html
* a package ready to install on a web server : http://itw.bidix.info/iTW_1.3.1.zip
* a directly as a free hosting service : http://itw.bidix.info/#Setup your own iTW Site
Thanks to make comments and suggestions to BidiX.
Enjoy iTW,
-- BidiX
iTWでのトップメニューの印刷
(iPhone以外で)iTWを印刷するときに、トップメニューが表示されてしまいます。
When printing an iTW (of course not on an iPhone ;) the topMenu is displayed.
iTWは標準のTiddlyWikiをBidiXによって、iPhone上で閲覧したり修正したりできるようにデザインし、カスタマイズしたものです。
それはwebからアクセスできるようにサーバーにインストールできます。
あなたは http://itw.bidix.info/ のサイトから[[Download iTW 1.3.0 package]]をダウンロードするか、[[Setup your own iTW Site]]で自分自身のiTWのサイトを設定することで、自分のiTWサイトを構築することができます。
詳細の変更箇所については、[[History]]の履歴を読んでください。
----
iTW is a plain TiddlyWiki designed and customized by BidiX to be @@viewed and edited@@ on an iPhone.
It should be installed @@on a server@@ to be accessed from the web.
You can setup your own @@iTW site@@ by downloading the [[Download iTW 1.3.0 package]] or [[Setup your own iTW Site]] at http://itw.bidix.info/
See [[History]] for details on changes.
<<tagging>>
|''Type:''|file|
|''URL:''|http://itw.bidix.info/iTWRepository/index.html|
|''Workspace:''|(default)|
////! iTW specific tweaks :
//// This settings always overwrite core defaults or previous cookies,
//// but they can be changed temporarily using [[Options]] or AdvancedOptions
//// Edit this to fix your default values for this iTW
//{{{
// UserName :
config.options.txtUserName = "MobileMemoBiz";
// save policy
config.options.chkAutosave = true;
config.options.chkSaveBackups = true;
config.options.txtBackupFolder = "backup";
// upload policy
config.options.txtUploadUserName = "mobilememobiz";
config.options.txtUploadFilename = "index.html";
config.options.txtUploadStoreUrl = "http://itw.bidix.info/mobilememobiz/store.php";
config.options.txtUploadDir = ".";
config.options.txtUploadBackupDir = "backup";
config.options.chkUploadLog = true;
config.options.txtUploadLogMaxLine = 3;
config.options. chkUploadTiddler = true;
config.options.txtUploadTiddlerStoreUrl = "storeTiddler.php";
// Always editable
config.options.chkHttpReadOnly = false;
readOnly = false;
// no backstage
showBackstage = false;
backstage.init = {};
//}}}
////iTW presentation tweaks
//{{{
// some label tweaks
merge(config.views.wikified.tag,{
labelNoTags: "",
labelTags: ""});
config.macros.search.label = "";
config.macros.toolbar.moreLabel = "+";
// some shadow initializations
merge(config.shadowTiddlers,{
SiteTitle: "MobilememoBiz iTW",
SiteSubtitle: "iPhoneのためのTiddlyWiki",
SiteUrl: "http:/itw.bidix.info/mobilememobiz",
});
//}}}
!環境を作る
!!BidiXのサイトに自分のWikiを設置
*[[Setup your own iTW Site]]から自分のWikiを設置
*privateにチェックを入れると非公開にすることもできます。
!!ローカル(パソコン、USB)にWikiをダウンロード
*[[Download iTW 1.3.1 package]]からダウンロードし解凍したあと適当な場所に設置
**ただしフォルダーのパスに日本語が含まれないこと。
**そのフォルダーの中に「backup」というフォルダーを新たに作ってください。
*GettingStartedの記事に従って設定する。
**SiteTitle と SiteSubtitleの設定
**Options と iTWTweaksの設定
!!スタイルシートなどの修正
*パソコンのファイルをFirefoxやSafariで開いて
*もしも、デザインの修正に興味があるのならば、[[デザインの微修正]]に従って修正してください。
*文字の大きさや見出しの色・背景などはGoogleでCSS入門、スタイルシートなどの検索語で検索して参考にしてください。
*CommandsのSyncでWEBサイトと同期させます。
**もし私のようにSyncがうまくいかないときは、しかたがないのでパソコン側を正とし、uploadでWEB側を上書きすることになります。
**WEB側を修正した場合は、パソコン側で~importTiddlersという機能を使って記事を取込むことができるはずですが、私はうまくいかないのでパソコン側も開いてコピーしています。
!!iPhoneへの登録
*自分のサイトに接続すればWEB側で記事を追加したりすることもできます。
**その場合はブックマークを登録しておくと便利です。
*外部接続していないときに見るには
**Air Sharingというアプリ(有料)でiPhoneの中にiTWのファイルをコピーします。
**コピーを選択すればiPhoneのSafariが起動しローカルで見ることができます。
**ただし記事を記入することはできません。iPhoneのSafariには保存機能がありません。
!記事を追加する
*~NewTiddlerを選択して記事を追加します。
*タグをつけておくと、[[同じタグのついたtiddlerのリストを表示する方法]]に記載した方法で一覧表を作成することができます。
*仕事やプライベートのTips
**LifehacksやListfreakなどのサイトで参考になる記事を記入する
**仕事上の資料で参考になる記事を記入する
*iPhone関連サイトのリンク集
iTWの利用方法について簡単に説明します。
<<listByTag '利用方法'>>
systemListタグ
たとえば「L」というtiddlerに「systemList」というタグを付けると、iPhoneの上では、「L」というタグがつけられたtiddlerのクリック可能なリストに変換されます。
訳注)
例えば、「レストラン」というタグをつけた記事が5件あるとします。「レストラン」というタイトルのtiddlerを新規に作成し、そこにsystemListというタグをつけておくと、「レストラン」という記事を呼出すと同時に、「レストラン」というタグのついた5件の記事のリストが表示されます。それもiPhoneでよく使われているブロック全体がクリックできるような形式で表示されます。あわせて「Menu」というタグをつけておけば「Menu」ボタンに「レストラン」が表示されますし、「Home」というタグをつけておけば、最初のページに「レストラン」が表示されるので、簡単に「レストラン」というタグのついた記事にアクセスできるようになります。
The //systemList// tag transform the tagged tiddler (say //L//) in a iPhone clickable list of //L// tagged tiddlers.
!Wikiデザインの修正
!!1.StyleSheetの修正
!!!標準の文字が小さすぎるので大きくする
{{{
body {font-size:12px; -->14px
}}}
!!!Home画面の一覧の文字が大きくなりすぎるので
一番下の方のフォントサイズを修正
{{{
.tiddlerListItem .tiddlerListItemTitle, .tiddlerListItem .tiddlerListItemTitle a {
line-height: 28px;
font-size: 1.35em; -->1.2em
}}}
!!2.StyleSheetLayoutの修正
!!!見出しの文字のバランスを調整する
{{{
h1 {font-size:1.35em;} -->1.25em
h2 {font-size:1.25em;} -->1.2em
h3 {font-size:1.1em;} -->1.1em
h4 {font-size:1em;} -->1.0em
h5 {font-size:.9em;} -->1.0em
h6なし--> h6 {font-size:1em;} を追加
}}}
!!!見出しと本文の行間が空きすぎるので調整する
{{{
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
-->
h1,h2,h3 {padding-bottom:1px; margin-top:0.5em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:0.5em;margin-bottom:0.3em;}
}}}
!!!引用部分を逆に小さく
{{{
.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; -->0.9em
}}}
!!3.ColorPaletteの修正
見出しの色が楽しくないので、とりあえず赤、青、緑の順に色をつけることに変更
!!!見出し専用の色をColorPalette追加
{{{
C_header1:#FF0000
C_header2:#0000FF
C_header3:#008000
C_header4:#FF0000
C_header5:#0000FF
C_header6:#008000
}}}
!!4.StyleSheetColorsの修正
!!!見出しの色と下線の指定
とりあえず、h1、h2、h3は実線の下線、h4、h5、h6は点線の下線をつける。
{{{
h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}
h1 {color:[[ColorPalette::C_header1]];background:transparent;}
h2 {color:[[ColorPalette::C_header2]];background:transparent;}
h3 {color:[[ColorPalette::C_header3]];background:transparent;}
h4 {color:[[ColorPalette::C_header4]];background:transparent;}
h5 {color:[[ColorPalette::C_header5]];background:transparent;}
h6 {color:[[ColorPalette::C_header6]];background:transparent;}
h1 {boder-bottom:2px solid [[ColorPalette::C_header1]];}
h2 {boder-bottom:2px solid [[ColorPalette::C_header2]];}
h3 {boder-bottom:2px solid [[ColorPalette::C_header3]];}
h4 {boder-bottom:2px dotted [[ColorPalette::C_header4]];}
h5 {boder-bottom:2px dotted [[ColorPalette::C_header5]];}
h6 {boder-bottom:2px dotted [[ColorPalette::C_header6]];}
}}}
!プラグインの導入
TiddlyWikiは、いろいろなプラグインが作成されており、import機能を使って、簡単に導入することができる。ただし、Javaで書かれているので、プラグインを増やすとiPhoneでは重たくなりすぎて、safariが落ちてしまうので、最低限にしたい。
!!1.チェックボックスマクロの導入
[[CheckboxPlugin]]というマクロを入れると、[半角スペース]または[文字のx]を書き込むとチェックボックスが作成できる。
{{{
[ ]材料を揃える
[x]器具を揃える
}}}
[ ]材料を揃える
[x]器具を揃える
!!2.標準機能のマクロ
!!!「Home」というタグのTiddlerのリストを表示
{{{
<<tagging Home>>
}}}
<<tagging Home>>
!!!「Wiki記法」というタグのボタンを表示。クリックするとTiddlerのリストが表示
{{{
<<tag 'Wiki記法'>>
}}}
<<tag 'Wiki記法'>>
!!!「tag」というボタンを表示。クリックするとtagのリストが表示される
{{{
<<tagChooser>>
}}}
<<tagChooser>>
!!!全Tiddlerのリストが表示される。
{{{
<<list all>>
}}}
<<list all>>
!! [[リンク・マクロ]]
!!! ~WikiWord
英大文字で始まる語で、さらに途中にもう1文字以上英大文字が含まれる語は WikiWord となる。
WikiWordを記載すると、自動的にそれを件名とするtiddlerへのリンクが貼られる。
ただし、上記に該当する語の前に ~ を付加することで、WikiWord になるのを抑止可能。
「[[(半角に)」 と「 ]](半角に)」 で囲まれた語および句は、WikiWord またはリンクとなる。
日本語でWikiWord・リンクを作りたい場合は、下記のように書く。
{{{
[[WikiWord]]
}}}
!!! リンクの貼り方
http://などで始まる文字列は自動的にリンクされる。
リンクタイトルを変えたい場合は以下の書式で可能となる。
WikiWordでリンクを貼り、リンクタイトルを変えたい場合にも使える。
{{{
[[リンクタイトル|URLアドレス]]
[[リンクタイトル|WikiWord]]
}}}
!!! イメージ表示
[img[Lily-Chou-Chou|http://www1.tcnet.ne.jp/leo/Files/TiddlyWiki/image/sample.jpg]]
画像は相対パス「./images/image.jpg」のようなリンクも使用できるが、iTWのサイトに画像用のフォルダーを設置できないので、外部リンクしか使えない。自分のサイトに設置できる人なら、相対パスの記述が有効になる。
{{{
[img[イメージURL]]
[img[タイトル|イメージURL]]
[img[タイトル|イメージURL]
[リンク先URL]]
[img[イメージURL][リンク先URL]]
}}}
!!!Youtubeへのリンク
<html>と</html>でスクリプトをはさむとYoutubeなどへのリンクも作成できる。
詳しくは[[Youtubeリンク]]を参照してください。
!!! マクロ
{{{
<<マクロ名 パラメータ>>
の書式で書く。
}}}
<<today>>
{{{
<<today>>
現在の日時が表示される。
}}}
<<tag help>>
{{{
<<tag タグ名>>
タグ名が割り当てられている
Tiddlerをポップアップ。
}}}
<<newJournal "DD MMM YYYY, hh:mm">>
{{{
<<newJournal "DD MMM YYYY,
hh:mm">>
"DD MMM YYYY, hh:mm" という
タイトルのついたTiddlerが生成される。
DD - 月の日
MMM - 月の文字表記。例えばJulyなど。
MM - 月の数値表記。
YYYY - 西暦年
hh - 時(24時間制だと思う)
mm - 分
}}}
{{{
<<tiddler Tiddler名>>
パラメータのTiddlerの内容を埋め
込むことができる。
}}}
<<slider tocSlider MainMenu メインメニューの展開テスト "ツールチップ">>
{{{
<<slider tocSlider MainMenu
メインメニューの展開テスト
"ツールチップ">>
のように書く。クリックすることで
Tiddlerの表示・非表示を切り替えれる。
パラメータはこんな感じ
1 表示・非表示の状態保存する
cookieに使われる名称
2 スライド表示するTiddler名
3 ボタンのラベル
4 ボタンのツールチップ
}}}
<<tabs tocSelect
タイトル "サイトのタイトル" SiteTitle
サブタイトル "サイトのサブタイトル" SiteSubtitle
>>
{{{
<<tabs tocSelect
タイトル "サイトのタイトル"
SiteTitle
サブタイトル "サイトのサブ
タイトル" SiteSubtitle
>>
のように書く。タブ表示で
Tiddlerを埋め込むことができる。
パラメータはこんな感じ
1. タブの状態保存する
cookieに使われる名称
2. タブのラベル
3. タブのツールチップ
4. 展開するTiddler名
}}}
!! [[レイアウト・書式]]
!!! 水平線
----
{{{
----
}}}
!!! 箇条書き
* 箇条書きの書き方
** 階層化の仕方
** テスト項目
*** さらに階層化
* 適当な項目の作成
{{{
* 箇条書きの書き方
** 階層化の仕方
** テスト項目
*** さらに階層化
* 適当な項目の作成
}}}
!!! 箇条書き(番号付加)
# 箇条書きの書き方
## 階層化の仕方
## あとは箇条書きの書き方と同じ
### 3段階階層化
#### 4段階階層化
# もう飽きた
{{{
# 箇条書きの書き方
## 階層化の仕方
## あとは箇条書きの
書き方と同じ
### 3段階階層化
#### 4段階階層化
# もう飽きた
}}}
!!! 見出し
!見出し1
!! 見出し2
!!! 見出し3
!!!! 見出し4
!!!!! 見出し5
{{{
!見出し1
!! 見出し2
!!! 見出し3
!!!! 見出し4
!!!!! 見出し5
}}}
!! 引用
<<<
引用内容1
引用内容2
引用内容3
引用内容4
<<<
{{{
<<<
引用内容1
引用内容2
引用内容3
引用内容4
<<<
}}}
<<<
>level 1
>level 1
>>level 2
>>level 2
>>>level 3
>>>level 3
>>level 2
>level 1
<<<
{{{
<<<
>level 1
>level 1
>>level 2
>>level 2
>>>level 3
>>>level 3
>>level 2
>level 1
<<<
}}}
!!! 表
|!1111111|!2222222|
|>| colspan |
| rowspan |左|
|~| 右|
|bgcolor(#a0ffa0):colored| 中央 |
|caption|c
{{{
|!1111111|!2222222|
|>| colspan |
| rowspan |左|
|~| 右|
|bgcolor(#a0ffa0):
colored| 中央 |
|caption|c
}}}
{{{
|の左に文字を付けて記述す
ると左寄せ
|の左を空けて、右に寄せて
記述すると右寄せ
|の左右を空けて記述すると
中央寄せ
セル結合
|>|で列の結合表示
|~|でそのセルの行を結合し
て表示
}}}
!!! 展開抑止
''{''''{''''{'' と ''}}}'' で囲んだ部分
は展開されない。
{{{http://itw.bidix.info/mobilememobiz/}}}
{{{
この中に書いたものは展開
されない
}}}
例えば「iPhone」というタグのついたtiddler(記事)をいくつか作成したときに、その一覧を表示するための方法がいくつか用意されています。
!1.「systemList」を使う方法
*「iPhone」というtiddlerを新しく作成し、タグの欄にsystemListと書込むと、「iPhone」というtiddlerの下に、「iPhone」というタグがついたtiddlerの一覧が表示されます。(参考、[[Features]]はこの機能を使っています。)
*それぞれのtiddlerのタイトルと最初の数行がブロック単位で表示され、それぞれのブロックをクリックすると、それぞれのtiddlerへジャンプします。
*iPhoneらしい操作性が得られます。
*もちろん、その「iPhone」という記事に、(半角スペースで区切って)「Home」、「Menu」というタグをつけると、HomeやMenuに表示されます。
!2.listByTagマクロを使う方法
*任意のタイトルのtiddlerの記事の最後に、<<listByTag 'iPhone'>>(注意:左側の<は半角に変更してください)。と記述するとその部分に「iPhone」というタグがついたtiddlerのタイトルと記事の最初の数行がブロック単位で一覧表示されます。(参考、[[Setup your own iTW Site]]はこの機能を使っています。)
*表示上は、上のsystemListを使った場合と同じように見えますが、実はこれは、書込まれた元記事の一部として表示されているもので、1.は独立したtiddlerの一部が並んでいるのであり、多少意味合いがことなります。ただし、効果は同じです。
*注意すべき点は、元の記事のタグには決して「iPhone」とつけないでください。つけてしまうと、無限ループになり、延々と繰返されることになります。
!3.taggingを使う方法
*任意のタイトルのtiddlerの記事の中で、<<tagging 'iPhone'>>(注意:左側の<は半角に)と書込むと、そこの場所に、「iPhone」というタグのついたtiddlerのタイトルの一覧が表示されます。
*タイトルをクリックすれば、WEBのリンクと同じように、そのtiddlerにジャンプします。
!4.tagを使う方法
*任意のタイトルのtiddlerの記事の中で、<<tag 'iPhone'>>(注意:左側の<は半角に)と書込むと、そこの場所に、「iPhone」という文字が四角で囲まれたボタンが表示されます。
*このボタンをクリックすると、「iPhone」というタグのついたtiddlerのタイトルの一覧がポップアップで表示されます。
*ポップアップの中から、タイトルをクリックすると、そのタイトルのtiddlerにジャンプします。
*なお、<<tagChooser>>と記入すると「tag」というボタンが作成され、クリックすると全タグのリストが、<<list all>>と記入すると全Tiddlerのリストが表示されます。
!5.(番外)タグがあろうがなかろうが手動でリストを作成する方法
*~WikiPediaで新規記事を作成する方法と同じですが、なんらかの基準のtiddlerに、新しく作成したいタイトル(例えば、「iPhoneの使い方」)を[[iPhoneの使い方]]のように二重の中括弧で囲みます。そこをクリックするとそのタイトルのtiddlerがないときは、新規記事が作成されリンクが張られます。(もちろん記事を作ってから、リンクを作成しても良いです。)
!! [[文字装飾]]
!!! ''太字''
{{{
''太字''
}}}
!!! ==打ち消し線==
{{{
==打ち消し線==
}}}
!!! __アンダーライン__
{{{
__アンダーライン__
}}}
!!! //イタリック//
{{{
//イタリック//
}}}
!!! 上付き^^文字^^
{{{
上付き^^文字^^
}}}
!!! 下付き~~文字~~
{{{
下付き~~文字~~
}}}
!!! @@ハイライト@@
{{{
@@ハイライト@@
}}}
!!! @@color(green):カラー@@
{{{
@@color(green):カラー@@
}}}
!!! @@bgcolor(#a0ffa0):バックグラウンドカラー@@
{{{
@@bgcolor(#a0ffa0):
バックグラウンドカラー@@
}}}
TiddlyWikiには標準でJournalと呼ばれる日記を作成する機能があります。
次のようなマクロをコマンドに書込むことで、タイトルに日付と時間、タグにjournalと記入された新規記事を簡単に作成することができます。
@@iPhoneでコマンド部分のはみ出したところを見るには、2本指でスクロールさせてください@@
{{{
<<newJournal title:'YYYY.0MM.0DD 0hh:0mm:0ss' tag:journal tag:日記>>
タイトルに時刻を入れ、タグに複数項目を入れる場合
<<newJournal title:'YYYY.0MM.0DD' tag:journal>>個人的にはこれで十分
}}}
!!時刻、複数タグ
{{{
<<newJournal title:'YYYY.0MM.0DD 0hh:0mm:0ss' tag:journal tag:日記>>
}}}
<<newJournal title:'YYYY.0MM.0DD 0hh:0mm:0ss' tag:journal tag:日記>>
!!!シンプル
{{{
<<newJournal title:'YYYY.0MM.0DD' tag:journal>>
}}}
<<newJournal title:'YYYY.0MM.0DD' tag:journal>>
これをCommandsに書込んでおくとよい。
また、journalという記事を作成して、systemList というタグをつけておけば、日記の一覧表が作成できます。
日付のフォーマットはhttp://www.tiddlywiki.com/#DateFormatString
を参考にしてください。