fusen.inc.php

サマリ付箋プラグイン
リビジョン1.10
対応バージョン1.4.5_1
投稿者ohguma?
投稿日2005-03-12 (土) 18:06:30

付箋機能プラグイン

概要

pukiwikiに付箋機能を追加するプラグインです。
本文中に以下を記述するとそこにメニューを表示します。

#fusen 

付箋のデータは添付ファイルのfusen.datに格納します。 fusen.datを削除すると、全付箋データが消えます。
JavaScriptを使っています。 MSIE6.0SP1とFireFox1.0で動作確認しました。 wema?を参考にしています。
他のプラグインを参考に作成しましたが、こんなつくりでよいのかご意見等お願いします。

V1.8 からJavaScript:XMLHttpRequest()を使っています(よって、Opera7.54では動きません。対応する予定もありません。)(V1.9でOpera対応。Operaの場合、リアルタイム更新しません)。

ファイル

更新日バージョン修正点など
2005/05/101.10XMLHttpRequestで取得するPlain Textのエスケープ
2005/04/151.9バグ修正,Opera対応,リアルタイム更新パラメータをjsからphpへ移行
2005/04/031.81.7で入れたバグ対応, Auto set, リアルタイム更新
2005/04/021.7HELP,入力欄変更,付箋データ保持方法変更,fusen.js大幅変更,onLoad修正,onDblClick対応
2005/03/281.6新規追加時のID付与にあったバグ修正(phpのみ)
2005/03/181.5真のRecentChanges対応、検索機能修正など
2005/03/181.4RecentChanges対応、検索機能追加
2005/03/171.3XHTML1.1対策他
2005/03/161.2XSS対策他
2005/03/161.1バグ修正
2005/03/121.0初版

filefusen.inc.php.1.10 は fusen.inc.php とリネームし plugin へ、
filefusen.js.1.10 は fusen.js とりネームし、skinへコピーしてください。

ライセンス

wema1を参考にしていますので修正BSDライセンスです。

コメント

  • おもしろいですね!私の管理してるページではFUSEN_SCRIPT_FILEを「DATA_HOME . SKIN_DIR . '/fusen.js'」としたらうまくいきました。 -- u*j*2*6* 2005-03-13 (日) 21:26:34
  • 付箋の中は、PukiWikiの他のコンテンツと同様、すべての機能が使えます。表も作れますし、数式のプラグインも動作し、キーワードの扱いも一緒です。ただ、付箋の中で使えるかと思って、付箋の中に#fusenと書いてはいけません。PukiWikiがエラーをはいて、落ちてしまいます。これはNGワードとして処理していただいた方が良いかと思われます。 -- 試した人? 2005-03-15 (火) 21:02:18
    • 付箋内に#fusenを入れた際のフリーズ回避ほか、付箋内にformが表示された際の不具合、削除時に線が消えないなどのバグ修正版をリリースしました。 -- ohguma? 2005-03-16 (水) 12:16:11
    • 早速の対応有り難うございました。これで安心して使えます。(_/_( -- 試した人? 2005-03-16 (水) 12:17:00
  • 付箋内に"><script>alert('XSS');</script>と書くとスクリプトが実行されてしまいます。これは危険ですね。
    		$fusens .= $fusen;
    +		$s_txt = htmlspecialchars($dat['txt']);
    		$backyards .= <<<EOD
     <input type="hidden" id="tc{$id}" name="tc{$id}" value="{$dat['tc']}" />
     <input type="hidden" id="bg{$id}" name="bg{$id}" value="{$dat['bg']}" />
     <input type="hidden" id="ln{$id}" name="ln{$id}" value="{$dat['ln']}" />
    -<input type="hidden" id="d{$id}" name="d{$id}" value="{$dat['txt']}" />
    +<input type="hidden" id="d{$id}" name="d{$id}" value="{$s_txt}" />
    • ご指摘のXSS対策を取り込みました。バージョン1.1以前を使われている場合は至急1.2に更新してください。 -- ohguma? 2005-03-16 (水) 22:34:02
  • バージョン1.3 でW3C Markup Validation Serviceでエラーが出ない程度にXHTML1.1対応しました。また、1.2で新たに追加したバグ(背景を透明にできない)を修正しました。Windows版IE6SP2,FireFox1.0.1で動作確認しています。 -- ohguma? 2005-03-18 (金) 00:38:09
  • 付箋がついたページはRecentChangesに反映されると嬉しいのだけど、普通の添付でも反映されてないから難しいのかな。。 -- 2005-03-18 (金) 11:21:47
    • v1.4でRecentChangesを反映するようにしました。また、wema2の検索機能を真似しました。 -- ohguma? 2005-03-18 (金) 13:04:59
    • ところで、このページの不要な添付ファイルはどうやって削除したらよいでしょうか?>管理人殿 -- ohguma? 2005-03-18 (金) 13:05:59
    • 管理者にしか削除できません。受け皿としてWebTrack/37を作っておきました。 -- henoheno 2005-03-28 (月) 23:33:08
  • v1.4でRecentChangesに更新が反映されなかったので最終更新日を更新したあとに put_lastmodfield() が必要かもしれません -- tester? 2005-03-18 (金) 14:49:24
    • fusen.inc.php 294行:if (file_exists($fname)) touch($fname); の下に、put_lastmodified(); を追加してください。次に何か追加したときに対応します。 -- ohguma? 2005-03-18 (金) 16:03:28
  • 編集認証を使ってるページには付けられないんですか? -- 2005-03-18 (金) 18:14:25
    • 編集認証がされているページでも動きました。管理者に#fusenの記述をお願いしてください。 -- ohguma? 2005-03-18 (金) 18:32:32
  • V1.5リリースです。RecentChangesの反映追加、検索時に入力テキストでなく表示テキストを見るように修正、XSS対策修正。 -- ohguma? 2005-03-18 (金) 18:43:13
    • XSS対策はぱんださんがされている方法を参考にさせていただきました。 -- ohguma? 2005-03-18 (金) 18:51:32
    • 付箋のメニュー部分はqwikWebを参考にさせていただきました。分かりやすくなったと思います。 -- ohguma? 2005-03-18 (金) 18:53:34
    • 検索時にプラグインで表示しているテキストを検索するようにしました。(V1.4は編集欄に表示される文字列で検索をかけていました。) -- ohguma? 2005-03-18 (金) 18:54:56
  • 新規追加時のID付与にあったバグを修正したV1.6をリリースしました。jsファイルは1.5をそのまま使います。 -- ohguma? 2005-03-28 (月) 23:36:28
  • ヘルプで■を押すと、とか書いてありますが現バージョンにはないようです??? -- 2005-03-30 (水) 19:39:07
fusen.inc.php
 <form id="edit_frm" method="post" action="index.php" style="padding:0; margin:0">
   <p style="margin:0">
     文字色:
     <select name="tc" size="1">
       <option id="tc000000" value="#000000" style="color: #000000">■</option>
       <option id="tc808080" value="#808080" style="color: #808080">■</option>
       <option id="tcC0C0C0" value="#C0C0C0" style="color: #C0C0C0">■</option>
       <option id="tc000000" value="#FFFFFF" style="color: #FFFFFF" selected>□</option>
       <option id="tcFF0000" value="#FF0000" style="color: #FF0000">■</option>
       <option id="tcFFFF00" value="#FFFF00" style="color: #FFFF00">■</option>
       <option id="tc00FF00" value="#00FF00" style="color: #00FF00">■</option>
       <option id="tc00FFFF" value="#00FFFF" style="color: #00FFFF">■</option>
       <option id="tc0000FF" value="#0000FF" style="color: #0000FF">■</option>
       <option id="tcFF00FF" value="#FF00FF" style="color: #FF00FF">■</option>
       <option id="tc800000" value="#800000" style="color: #800000">■</option>
       <option id="tc808000" value="#808000" style="color: #808000">■</option>
       <option id="tc008000" value="#008000" style="color: #008000">■</option>
       <option id="tc008080" value="#008080" style="color: #008080">■</option>
       <option id="tc000080" value="#000080" style="color: #000080">■</option>
       <option id="tc800080" value="#800080" style="color: #800080">■</option>
     </select>
     背景色:
     <select name="bg" size="1">
       <option id="bg000000" value="#000000" style="color: #000000">■</option>
       <option id="bg808080" value="#808080" style="color: #808080">■</option>
       <option id="bgC0C0C0" value="#C0C0C0" style="color: #C0C0C0">■</option>
       <option id="bg000000" value="#FFFFFF" style="color: #FFFFFF">□</option>
       <option id="bgFF0000" value="#FF0000" style="color: #FF0000">■</option>
       <option id="bgFFFF00" value="#FFFF00" style="color: #FFFF00">■</option>
       <option id="bg00FF00" value="#00FF00" style="color: #00FF00">■</option>
       <option id="bg00FFFF" value="#00FFFF" style="color: #00FFFF">■</option>
       <option id="bg0000FF" value="#0000FF" style="color: #0000FF">■</option>
       <option id="bgFF00FF" value="#FF00FF" style="color: #FF00FF">■</option>
       <option id="bg800000" value="#800000" style="color: #800000">■</option>
       <option id="bg808000" value="#808000" style="color: #808000">■</option>
       <option id="bg008000" value="#008000" style="color: #008000" selected>■</option>
       <option id="bg008080" value="#008080" style="color: #008080">■</option>
       <option id="bg000080" value="#000080" style="color: #000080">■</option>
       <option id="bg800080" value="#800080" style="color: #800080">■</option>
       <option id="bgtransparent" value="#transparent">透</option>
     </select>
     <br />
     線を引く:<input type="text" name="ln" id="edit_ln"/><br />
     <textarea name="body" id="edit_body" cols="40" rows="10"></textarea><br />
     <input type="submit" value="書き込み" />
     <input type="hidden" name="id" id="edit_id"/>
     <input type="hidden" name="z" id="edit_z" value="1" />
     <input type="hidden" name="l" id="edit_l" />
     <input type="hidden" name="t" id="edit_t" />
     <input type="hidden" name="pass" id="edit_pass" value="" />
     <input type="hidden" name="mode" id="edit_mode" value="edit" />
     <input type="hidden" name="plugin" value="fusen" />
     <input type="hidden" name="refer" value="{$refer}" />
   </p>
 </form>
fusen.js
function editbox_show() {
 getElement('edit_id').value = '';
 getElement('edit_ln').value = '';
 getElement('tc000000').selected = true;
 getElement('bg008000').selected = true;
 getElement('edit_body').value = '';
 getElement('edit_l').value = mouseX;
 getElement('edit_t').value = mouseY;
 show('edit_box');
 obj = null;
}
function edit(id) {
 obj = getElement(id)
 getElement('edit_id').value = id;
 getElement('edit_l').value = parseInt(obj.style.left.replace("px",""));
 getElement('edit_t').value = parseInt(obj.style.top.replace("px",""));
 getElement('edit_ln').value = getElement('ln'+id).value;
 getElement('edit_body').value = getElement('d'+id).value;
 tcid = getElement('tc'+id).value;
 tcid = 'tc' + tcid.substr(1);
 getElement(tcid).selected = true;
 bgid = getElement('bg'+id).value;
 bgid = 'bg' + bgid.substr(1);
 getElement(bgid).selected = true;
 show('edit_box');
}

とても面白いプラグインですね。 fusen.inc.php と fusen.js を上記のようにして 色んな色を簡単に追加、選択できるようにして使っています。 今後とも宜しくお願いします。

  • 上記の書き込みは「けぴ与太郎」です。 -- けぴ与太郎? 2005-03-30 (水) 23:06:05
  • PukiWikiスキン「bluebox」を使っているのですが、線がずれてしまいます。PukiWiki本体は1.4.5です。 -- カーズV3? 2005-03-31 (木) 14:21:02
    • おそらく、tableを使わずに段組が構成されているスキンでは線がずれるのだと思います。CSSの設定自体ややこしい、CSSの動作の規格もややこしい、そもそもUAのCSS対応が厳格ではない、というCSS的問題がまずあります。さらに、線はJavaScriptで描かれています。以上から、現実的な解決案としては、スキン(もしくはUAにも?)にあわせて線の位置のオフセットを設定できるようにするのが良いのではないかと、勝手に考えていたことがありました。 -- sloth? 2005-03-31 (木) 15:34:24
  • JavaScriptでonloadを設定していますが、他のプラグインやスキン等でもonloadを設定している場合に、上書きされてしまうようです。対策方法はいろいろあるようですが、以下のようにイベントハンドラを変数に退避しておくのが楽みたいです。 -- jitte? 2005-03-31 (木) 23:55:46
    var __fusen_onload_save = window.onload;
    window.onload = function () {
      if (__fusen_onload_save) __fusen_onload_save(); init();
    }
    • 自作プラグイン/exlink.inc.php自作プラグイン/cookie.inc.php もonloadをつかっていますが、同様の修正をすれば共存可能でした。「bluebox」スキンもonloadを設定しているので、上記の線ずれ現象もひょっとすると関係するかもしれません(環境がなく、未確認ですみません)。 -- jitte? 2005-04-01 (金) 00:06:13
  • ver1.6を取り込んだのですが、新規⇒登録を行うと「Runtime errorError message : PKWK_READONLY prohibits editing」というエラーが出てしまいます。何が原因なのでしょうか? -- ichi? 2005-04-01 (金) 15:11:50
    • PKWK_READONLYを1にしている場合、そう出るようにしています。 function plugin_fusen_actioin() の if (PKWK_READONLY)...の行を削除すれば使えると思います。 -- ohguma? 2005-04-01 (金) 22:36:21
  • V1.7リリースです。これまでのコメントの内容を反映させ追加で大幅修正しました。スキンの問題については環境が無いため、今回対応していません。 -- ohguma? 2005-04-02 (土) 03:12:14
  • 1.7使ってみました。まず、少なくともInternet Explorerではblueboxでの線のずれが無くなりました。ただ、Operaでblueboxの場合、付箋が表示されなくなりました。新規ウィンドウやヘルプは表示されます。Opera+標準スキンでは何の問題もありません。私自身は、付箋優先で標準スキンなので関係ないのですが。以上ご報告でした。 -- sloth? 2005-04-02 (土) 03:48:22
  • 対応ありがとうございます。こちらも線のずれがなくなりました。Internet ExplorerとGeckoエンジンブラウザでは正常に表示されました。 -- カーズV3? 2005-04-02 (土) 16:59:29
  • V1.8リリースです。趣味でAJAXしています。 -- ohguma ? 2005-04-03 (日) 01:44:13
    • Drag&Dropした際に、reloadなしでsetするようにしました -- ohguma? 2005-04-03 (日) 01:50:48
    • fusen.js.1.8のパラメータ変更でreloadなしで付箋を自動更新します。自動更新する場合は「var fusenInterval = 0;」で更新タイミングをミリ秒単位で指定します。0の場合は自動更新しません。サーバに負荷がかかることが予想されるため、設定は慎重におこなってください。 -- ohguma? 2005-04-03 (日) 01:52:27
  • とっても素晴らしいプラグインですね。ここ数日夢中なっちゃいました。 :p
    PukiWikiMod用に改造してみたので、配布したいのですが、ライセンスはどのようになっていますか? -- nao-pon? 2005-04-15 (金) 08:52:01
    • wema1を参考にしていますので修正BSDライセンスです。 -- ohguma? 2005-04-15 (金) 14:49:12
      • 了解しました。 :) -- nao-pon? 2005-04-16 (土) 08:56:52
  • V1.9リリースです。バグ修正しています。 -- ohguma? 2005-04-15 (金) 14:58:43
  • PukiWiki 1.4.5とfusen.inc.php 1.9の組合せで、Mac OS X上のSafari 1.3にて日本語の付箋が文字化けするようになりました。同じ付箋が貼り込んである頁を同じくMac OS X上でFirefox 1.0.3を使って見てみたら、文字化けしませんでした。もしかしたら、こちらのマシンの設定の問題かもしれないのですが、一応、お知らせまで。 -- 試した人? 2005-04-20 (水) 14:00:52
    • Windows2000 IE6でも文字化けします。回避法はありますか? -- テストしてみた? 2005-04-25 (月) 20:49:27
      • しばらく作業する時間がとれません。とりあえずサーバ側でmbstringをどう設定しているか教えてください。 -- ohguma? 2005-04-28 (木) 22:53:48
    • 別のパソコンでは正常に表示されました。mbstringについてはすみませんがわかりません。2005-04-30 (土) 12:00:27
  • おそらく、ajax が影響しているかとおもいます。 See Safari の XMLHttpRequest 。わたしも ajax で同じことではまりました (^^; -- みこ? 2005-05-04 (水) 17:11:58
  • ちなみに、解決策は文字コードつきでxml宣言することです。eucならば以下 -- みこ? 2005-05-04 (水) 17:17:23
    <?xml version="1.0" encoding="euc-jp"?>
    • XMLHttpRequestを使っていますが、取得するのはプレーンテキストです。fusen.php.js.1.9の162行目のheader関数の引数を調整すると直らないでしょうか?case-insensitiveなはずなので、"Content-type"でも大丈夫だと思うのですが。 -- ohguma? 2005-05-07 (土) 09:57:35
      • 亀レスでごめんなさい。残念ながら、 Safari は XML ヘッダが無い限り UTF-8 固定になっています (^^; *1 -- みこ? 2005-06-02 (木) 14:13:38
  • V1.10リリースです。XMLHttpRequestで取得するPlain Textのうち、マルチバイト文字を%uxxxx形式でやりとりするよう修正しました。これで文字化けは直るでしょうか? -- ohguma? 2005-05-10 (火) 01:32:47
    • V1.10じゃデフォで3秒間隔の自動更新が掛かるんですね。強制Proxyが混んでてセッション貼るのに3秒以上掛かるようなおっそいネットワーク越しに使ったらブラウザがほぼ固まって焦りました(^^;<自動更新外したら普通に動作するようになりましたけど -- 2005-05-21 (土) 01:00:40
    • テストで使っていた設定をそのままにファイル更新してしまったようです。以後気をつけます。 -- ohguma? 2005-05-27 (金) 23:35:51
  • 付箋の内容をTrackerみたく一覧表示できるviewがあれば便利かも -- uwf? 2005-06-26 (日) 02:57:37
  • https環境だと、動作しないと言うことはありますか? -- katekin? 2005-06-30 (木) 14:56:15
    • 自己レスです。PHPをSSLオプションつきで再コンパイルしたら動作しました。 -- katekin? 2005-07-04 (月) 13:23:08
  • 付箋同士を結ぶ線の線種(-,=,・・・)とか、終端(-●,->,<-)とかは変更できませんか? -- katekin? 2005-07-04 (月) 13:28:29
  • 楽しいプラグインですね。これ白地図に書き込む感覚で応用できないでしょうか。付箋同士を繋ぐかわりに地図上(画面上)のポイントから付箋をひっぱれるような… -- 2005-07-22 (金) 10:30:47
  • 細かい事ですが、lockでパスワードを入力しますが、「*****」のように見えなくすべきではないかと思いますが、どうでしょう? -- 2006-03-30 (木) 14:06:10
  • 文字がencodeされて表示されちゃいます。もしかしてPHP5のせい? -- 2006-05-12 (金) 11:37:28
  • 最新版のpukiwikiに入れてみたのですが、入力欄は表示され、書き込みはできますが、入力後画面に反映されません。 添付ファイルは生成されているのですが、なぜでしょうか? -- だいごろう? 2006-06-19 (月) 14:54:02
  • ページが長くなってきたときに、「あ、このへんに付箋がほしいな」というところに設置しても、新規で付箋を作成すると、ページの上部にフォームが出ちゃうのが不便かなぁ。。ページの途中に設置したら、設置したところに出てきて欲しいです。 -- だといいな? 2006-07-10 (月) 17:57:24
  • 気に入って使おうと思いましたが、文字化けと日本語のwikiページで付箋が作成されません mbstringは組み込んでます PHP5です -- しゅう? 2006-08-26 (土) 00:00:45
  • 35行目「skin/fusen.js」とskinを直接指定しているので,SKIN_DIRを指定した方がいいんでは?
    2005-03-13 (日) 21:26:34 にコメントがあるのに修正していないんですね。。。 -- がこ? 2006-09-16 (土) 11:06:22
    • 9割程度?の自作プラグイン作者は不在ですよ。書くだけ無駄かも? -- 2006-09-16 (土) 16:51:33
  • fusen -- 2008-02-11 (月) 11:24:08
  • 付箋の中で「#article」「#comment」などを入力すると、それまでの全ての付箋が消えて新規作成もできなくなります。バグでしょうか? -- あっきゅん? 2008-11-08 (土) 21:31:10
  • SPAMに追加変更させられたリンクを元に戻しました -- 2010-07-15 (木) 19:23:46

*1 わたしが某所でUTF-8版専用といっているのはこのへんのトラブルを避けるため (^^;

添付ファイル: filefusen.inc.php.1.10 4667件 [詳細] filefusen.js.1.10 3931件 [詳細] filefusen.js.1.9 805件 [詳細] filefusen.inc.php.1.9 898件 [詳細] filefusen.js.1.8 767件 [詳細] filefusen.inc.php.1.8 815件 [詳細] filefusen.js.1.7 689件 [詳細] filefusen.inc.php.1.7 714件 [詳細] filefusen.inc.php.1.6 773件 [詳細] filefusen.js.1.5 827件 [詳細] filefusen.inc.php.1.5 857件 [詳細] filefusen.js.txt 769件 [詳細] filefusen.inc.php.txt 1094件 [詳細] filefusen.js.4 696件 [詳細] filefusen.inc.php.4 703件 [詳細] filefusen.js.3 738件 [詳細] filefusen.inc.php.3 740件 [詳細] filefusen.inc.php.2 750件 [詳細] filefusen.js.1 875件 [詳細] filefusen.inc.php.1 988件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-07-15 (木) 19:29:31
Site admin: PukiWiki Development Team

PukiWiki 1.5.1+ © 2001-2016 PukiWiki Development Team. Powered by PHP 5.6.30-0+deb8u1. HTML convert time: 0.850 sec.

OSDN