Home> blogging > Tagging Input Helper
Tagging Input Helper
- May 1, 2006 12:48 AM
- blogging
Taggingを行うにあたって、記事編集時のタグ入力を支援するプラグインを作成しました。
私はあまり沢山の記事を書くわけではないので、昔どんなタグを使ったのか忘れていることが多々あります。
例えばMovableTypeの話題を扱った記事を書いて、昔"MT"を使ったのか"MovableType"を使ったのか...このプラグインを用いることで、そんな風に過去に入力したタグか判らなくなることを防ぎやすくなります。
基本的には上記ファイルを解凍して、プラグインディレクトリへインストールすればOKです。
(動作するためにはBigPAPIプラグインと(o)さんのTagwireプラグインを導入していることが条件です)
利用したいウェブログのインデックステンプレートで以下の内容をtagwire.jsとして保存すれば、そのウェブログの記事編集画面でタグ入力支援が動作します。
var tagarray = new Array(<MTTags delimiter="," glue=","> '<li title="<$MTTag$>:<$MTTagCount$>:<$MTTagDate format="%Y-%m-%d"$>"><a title="tag" href="javascript:void(0);" onclick="return addTags(document.entry_form.keywords, \'<MTTag encode_js=1>\')"><MTTag encode_js="1"></a></li>'</MTTags> );
taglink=tagarray.join(" ");
document.write(taglink);
function addTags (e, v) {
if (!canFormat) return;
var str = getSelected(e);
setSelection(e, v + ',');
return false;
}
function calcFontSize(count) {
return count / 6 + 12;
}
var tags = new Array();
var now = (new Date()).getTime();
var tagsNode = document.getElementById('tags');
var childNodes = tagsNode.childNodes;
for (var i = 0; i < childNodes.length; i++) {
var e = childNodes.item(i);
if (e.nodeName.match(/li/i)) {
var s = e.title.split(':');
e.style.fontSize = calcFontSize(s[1]) + 'px';
var d = s[2].split('-');
var diff = (now - (new Date(d[0], d[1] - 1, d[2])).getTime()) / 86400000;
if (diff < 14) e.className = 'hot';
else if (diff > 365) e.className = 'oldest';
else if (diff > 60) e.className = 'old';
tags.push([ e, s[1] ]);
}
}
tagsNode.style.display = 'block';
var coff = 0;
var coffNode = document.getElementById('coff');
function decCoff(c) {
if (coff == 0) return;
coff -= c;
if (coff < 0) coff = 0;
coffNode.innerHTML = coff;
refreshCoff();
}
function incCoff(c) {
if (coff == 20) return;
coff += c;
if (coff > 20) coff = 20;
coffNode.innerHTML = coff;
refreshCoff();
}
function refreshCoff() {
for (var i = 0; i < tags.length; i++) {
var tag = tags[i];
tag[0].style.visibility = (tag[1] <= coff) ? "hidden" : "visible";
}
}
タギングのデリミタ(タグの区切り文字)を|にしている場合は、上記コード7行目あたりで
setSelection関数に引数として渡している','を以下のように'|'へ変更すれば大丈夫です。
function addTags (e, v) {
if (!canFormat) return;
var str = getSelected(e);
setSelection(e, v + '|');
return false;
}
このプラグインは無保証とします。
導入したことによる不具合などについて、私は責任を負いません。
また各自改造は自由ですが、再配布は取り敢えず禁止としておきます。
(何かあればコメント欄にどうぞ)
では、愉快なTagged Weblog Lifeを。
----以下のような方法もあります。お好みで。drry+@-> Movable Type 3.17-ja and customized interface with application templates
----
[2006May21追記]
TaggingInput.plを0.2版にバージョンアップ。
タグが途中で改行されて見辛くなってしまうのをちょっとアクロバティックなCSS記述でやっつけました。
使用頻度の高いタグがどうなってしまうかテスト環境がないため挙動予測出来てませんが、とりあえずリリース。
0.1版からのアップデートはプラグインの上書きのみで、tagwire.jsの内容はそのままでOKです。
Trackbacks:1
- TrackBack URL for this entry
- https://w3neu.net/mt/mt-tb.cgi/26
- Listed below are links to weblogs that reference
- Tagging Input Helper from Sequentially Altered Days
- Tagging Input Helper 0.2.0 from Sequentially altered days 2006-05-25 (Thu) 00:24
- ウチは記事の更新でわざわざフィードを吐き直さない仕様なのですが、ひっそりと更新...
- Categories
- Archives
- Syndication
Comments:0