« WBEditor 1.0 と 1.1 beta、同時リリース | トップページ | カレイドスター トレーディングコレクション »
2004.04.05
コメント記録機能強化(?)版の extedit
ということで、 extedit を改造して、コメント記録機能を強化してみました。
どの辺を強化したかというと。
- ログファイルの拡張子が .html のとき、コメント投稿先の記事を
<a href="当該記事のURL">当該記事のタイトル</a> (コメント投稿日時)
の形式で記録するようにした。 - 従来の版では対応していなかった JUGEM, NewsCollector (のコメント欄)にも対応した。
- エディタに渡すファイル名のフォーマットを yyyymmddHHMMSS.txt にした。
といった辺り。あとは自分向けにエディタを xyzzy にしたときにできる *.~1 ファイルを消すようにした、ってところかな。
以下に、私が修正した箇所を context diff 形式で公開しておきます。参考にしてくださいませ。
*** extedit.js.orig Mon Mar 29 02:41:49 2004 --- extedit.js Mon Apr 05 19:21:13 2004 *************** *** 1,6 **** <script type="text/javascript"> /* ! $Id: extedit.js,v 1.6 2004/03/28 17:41:49 ishinao Exp $ Author: ishinao <ishinao@ishinao.net> Licence: GPL extedit - Webブラウザの入力フォームで好きなエディタを使う --- 1,7 ---- <script type="text/javascript"> /* ! $Id: extedit.js,v 1.6.1.1 2004/04/05 07:04:05 tsupo Exp $ ! #Id: extedit.js,v 1.6 2004/03/28 17:41:49 ishinao Exp $ Author: ishinao <ishinao@ishinao.net> Licence: GPL extedit - Webブラウザの入力フォームで好きなエディタを使う *************** *** 10,34 **** //設定-------------> //temporary file作成directory。空ならシステム設定temporaryパスになる。 ! var tempdir = ""; //logファイル。空ならシステム設定temporaryパス+extedit.logになる。 ! var logfile = ""; //使用するeditorのpath。空なら「.txt」に関連づけられているエディタになる。 ! var editor = ""; //使用済みのtemporaryを削除する? var deletetemp = false; //textarea名。優先順位が高い順に記述 var targetItems = new Array( ! "body", ! "text", ! "comment", "message" ); //<-------------設定 ! var window = external.menuArguments; main(); window.focus(); self.close(); --- 11,45 ---- //設定-------------> //temporary file作成directory。空ならシステム設定temporaryパスになる。 ! var tempdir = "c:\\user\\local\\menuExt\\log"; //logファイル。空ならシステム設定temporaryパス+extedit.logになる。 ! var logfile = "c:\\user\\local\\menuExt\\log\\extedit_log.html"; //使用するeditorのpath。空なら「.txt」に関連づけられているエディタになる。 ! var editor = "C:\\user\\local\\xyzzy\\xyzzy.exe"; //使用済みのtemporaryを削除する? var deletetemp = false; //textarea名。優先順位が高い順に記述 var targetItems = new Array( ! "comment-text", // for TypePad, ココログ, ブログ人 ! "text", // for Movable Type ! "body", // for ishinao.net ! "comment", // for blosxom, WebryBlog, doblog, goo BLOG, News Handler, 北国.tv ! "description", // for JUGEM ! "cmnt", // for NewsCollector "message" ); //<-------------設定 ! var window = external.menuArguments; ! var page_url = window.document.URL; // ページのURL ! var page_href = window.location.href; // 同上 ! var title_txt = window.document.title; // タイトル文字列 + if ( page_href == "" ) { + page_href = page_url; + } + main(); window.focus(); self.close(); *************** *** 59,72 **** alert("no textarea"); } function doEdit(textarea) { var fs = new ActiveXObject("Scripting.FileSystemObject"); var date = new Date(); if (tempdir == "") {tempdir = fs.GetSpecialFolder(2);} var tempfile = tempdir + "\\"; ! tempfile += "" + date.getYear() + date.getMonth() + date.getDate(); ! tempfile += "" + date.getHours() + date.getMinutes() + date.getSeconds(); tempfile += ".txt"; var body = textarea.value; --- 70,109 ---- alert("no textarea"); } + function zeroPadding(str) { + var s = "00" + str; + var len = s.length; + return s.substring(len - 2, len); + } + + function monthString(date) { + return zeroPadding("" + (date.getMonth() + 1)); + } + + function dateString(date) { + return zeroPadding("" + date.getDate()); + } + + function hourString(date) { + return zeroPadding("" + date.getHours()); + } + + function minuteString(date) { + return zeroPadding("" + date.getMinutes()); + } + + function secondString(date) { + return zeroPadding("" + date.getSeconds()); + } + function doEdit(textarea) { var fs = new ActiveXObject("Scripting.FileSystemObject"); var date = new Date(); if (tempdir == "") {tempdir = fs.GetSpecialFolder(2);} var tempfile = tempdir + "\\"; ! tempfile += "" + date.getYear() + monthString(date) + dateString(date); ! tempfile += hourString(date) + minuteString(date) + secondString(date); tempfile += ".txt"; var body = textarea.value; *************** *** 83,89 **** shell.run(cmd, 1, true); body = ""; ! file = fs.OpenTextFile(tempfile, 1); while (!file.AtEndOfStream) { body += file.Read(1024); } --- 120,126 ---- shell.run(cmd, 1, true); body = ""; ! file = fs.OpenTextFile(tempfile, 1); // read only で open while (!file.AtEndOfStream) { body += file.Read(1024); } *************** *** 94,106 **** if (deletetemp) { fs.DeleteFile(tempfile); } else { ! var datestr = "" + date.getYear() + "/" + date.getMonth() + "/"+ date.getDate(); ! datestr += " " + date.getHours() + ":" + date.getMinutes(); file = fs.CreateTextFile(tempfile); ! file.Write("URL: " + window.location.href + "\n"); ! file.Write("Date: " + datestr + "\n"); ! file.Write("\n"); file.Write(body); file.close(); --- 131,143 ---- if (deletetemp) { fs.DeleteFile(tempfile); } else { ! var datestr = "" + date.getYear() + "/" + monthString(date) + "/"+ dateString(date); ! datestr += " " + hourString(date) + ":" + minuteString(date); file = fs.CreateTextFile(tempfile); ! file.WriteLine("URL: " + page_href); ! file.WriteLine("Date: " + datestr); ! file.WriteLine(""); file.Write(body); file.close(); *************** *** 108,122 **** logfile = tempdir + "\\extedit.log"; } if (fs.FileExists(logfile)) { ! file = fs.OpenTextFile(logfile, 8); } else { file = fs.CreateTextFile(logfile); } ! file.Write(datestr + " "); ! file.Write(tempfile + " "); ! file.Write(window.location.href); ! file.Write("\n"); file.close(); } } --- 145,167 ---- logfile = tempdir + "\\extedit.log"; } if (fs.FileExists(logfile)) { ! file = fs.OpenTextFile(logfile, 8); // 8 は append } else { file = fs.CreateTextFile(logfile); } ! if (logfile.substring(logfile.length-5,logfile.length) == ".html") { ! file.WriteLine("<a href=\"" + page_href + "\">" + title_txt + "</a> (" + datestr + ")"); ! } ! else { ! file.WriteLine("Date: " + datestr); ! file.WriteLine("Title: " + title_txt); ! file.WriteLine("URL: <a href=\"" + page_href + "\">" + page_href + "</a>"); ! file.WriteLine("filename: " + tempfile); ! file.WriteLine("-----------------------------------------------------"); ! } file.close(); + + fs.DeleteFile(tempfile+".1~"); // for xyzzy (xyzzy が作り出したbackupファイルの削除) } }
ということで、しばらく、これを使ってコメントを投稿してみます。常用するところまでいけば、 問題解決…… どうなることやら。
早速、コメント投稿を実践。ログの方にはこんな感じで記録されました。
Webブラウザの入力フォームで好きなエディタを使う : kojidoiのチャンネル -北国tv (2004/04/05 19:56)
これなら、そんなに面倒じゃないかな。
投稿者: tsupo 2004.04.05 午後 07:42
| 固定リンク
|
|
|
|
|
アマゾンわくわく探検隊
トラックバック
この記事のトラックバックURL:
この記事へのトラックバック一覧です: コメント記録機能強化(?)版の extedit:
» exteditで、快適blog生活! from kojidoiのチャンネル
blog(に限らないが)、エントリー作成・編集やコメント作成の記録を半自動的に簡単に貯めていけるようになった。これはかなり便利ですよ。 続きを読む
» extedit - Webブラウザの入力フォームで好きなエディタを使う from ishinao.net/mylog
!!最近の更新
*2004/4/15 月情報が-1されていたのを修正(ネタ元:multiさんのコメント#925)。日付時刻ベースの文字列をきちんとフォーマ... 続きを読む
コメント
トラックバックありがとうございます。
このアイディア、blogに書いたら1時間もたたぬうちに本家のほうで採用していただけたようで、インターネットのすごさを再認識させられた次第です。それでも仕様ががすこしづつ違うのが面白いですね。
logをhtmlにするというのはいいですね。クリック一発で投稿先を呼び出せますからますます快適になります。私も考えないでもなかったのですが先を越されました。
投稿者: kojidoi (2004.04.05 午後 10:18)