2011年1月23日日曜日

window.printで1ページしか印刷できない問題

 ExtWikiでアクティブパネルの印刷をしようとし、タブの内容をiframeにコピーし、window.printを使って印刷するようにしたところ、最初の1ページしか印刷されないという現象に遭遇した。
同じ方法をExtJSのAPIドキュメントのタブパネルに試したところ、同じように1ページしか印刷されなかった。
 同様な現象が出たのでこれは一般的な問題かと思い、http://www.sencha.com/forum/showthread.php?121909-SOLVED-How-to-print-the-document-on-tabpanel&p=563722 の質問を投げてみた。その後、iframeを見えるようにして確認をしたところ、1瞬、スクロールバーが見えることに気がついた。ステップ実行で1つ1つスタイルシートを適用したところ原因が判明。

 結局この問題はdoc.cssにある「html,body {overflow:hidden}」の設定が問題だった。ExtWikiも初期にExtJSのAPIドキュメントの表示に似せようと、スタイルの設定を真似た為にこの設定が紛れ込んだようだ。
現在のExtJSはViewportを使用すると、上記のスタイルが設定されるので、この設定は不要であった。doc.cssに残っているのも歴史的な残骸かと思う。

作成した、ブックマークレット:ExtJS APIページの印刷
※上記は「Hide Inherited Members」と「Extend All Members」を反映しないので使い道はいまいちです

2011年1月13日木曜日

utf-8のjsファイルをextdocで処理する

今まで、utf-8のjsファイルのext-docでの処理が文字化けしてしまうため、一旦、s-jisにしてから、処理を行っていた。
今日、ext-docのバージョンが上がっていないかと、
http://www.sencha.com/forum/showthread.php?55214-ext-doc-ExtJS-style-JavaScript-comments-processor/page26

にアクセスしたところ、javaのオプションで
java -Dfile.encoding=UTF8 -jar path_to\ext-doc.jar ...
とすればいいという情報を見つけた。
試してみると、文字化けもなくうまく動作する。

utf-8 → s-jis はサクラのマクロでやっていたので、手間としてはそれほど変わらないが、正解がわかったのですっきり。

2011年1月12日水曜日

ExtJSの問い合わせをするなら

ExtJSの問い合わせをする場合、日本語のフォーラム「Ext International」に質問しても最近は誰もレスをつけていない。さびしい限りだ。

少々面倒だが、見ている人の数が圧倒的に多い英語のサイトに投稿するのが結局速そうだ。
手順はこんな感じ
 ・問い合わせのテキストを作成し、翻訳サイト( http://www.excite.co.jp/world/english/ )等で翻訳する
 ・ソースのコメントやリテラルの文字列を英語にし、コードタグ([code][/code])でくくる
 ・http://www.sencha.com/forum/forumdisplay.php?40-Ext-Help でフォームにポストする

Ext-Helpにポストした投稿は

http://www.sencha.com/forum/search.php?do=finduser&userid=14691&contenttype=vBForum_Post&showposts=1&forumchoice%5B%5D=40


で調べられる。(14591は自分のユーザID)

2011年1月7日金曜日

winscpをバッチ処理で使用する

こんなこともできるらしい。
サクラのマクロに取り込めば、いろいろなことが自動化できそう

下記を1行でコマンドラインに打つ
"C:\Program Files\WinSCP\winscp.com" /command
   "open ""mashiki@shell.sourceforge.jp"""
   "put ""C:\DLSoft\develop\ext-doc-1.0.131\extwikidoc.zip""
   ""/home/groups/e/ex/extwiki/htdocs/"""
   "exit"

参考
http://winscp.net/eng/docs/commandline
http://winscp.net/eng/docs/script_commands

実際に作って使っているのがこれ
・現在のファイルがextwiki-debug.jsか確認
・現在のファイルを保存する
・SJISにして名前を付けてextdoc用のフォルダに保存する
・ext-docに変換する
・生成されたファイル数が大量のためzipに固める
・zipをサーバのドキュメントルートにアップロードし解凍する

// ext-doc.js
var cmd, oe,
 TARGET = 'extwiki-debug.js',
 DOCDIR = 'C:\\DLSoft\\develop\\ext-doc-1.0.131',
 SAVEAS = 'DOCDIR\\source\\extwiki.js',
 MAKEDOC= 'java -jar DOCDIR\\ext-doc.jar'
   +' -p DOCDIR\\source/extwiki.xml'
   +' -o DOCDIR\\extwikidoc'
   +' -t DOCDIR\\template/ext/template.xml'
   +' -verbose',
 ZIPDOC = '"C:/Program Files/Lhaplus/Lhaplus.exe" /c:zip /o:DOCDIR DOCDIR\\extwikidoc',
 PUTFILE= '"C:/Program Files/WinSCP/winscp.com" /log=log.txt /command'
   +' "open ""mashiki@shell.sourceforge.jp"""'
   +' "cd ""/home/groups/e/ex/extwiki/htdocs/"""'
   +' "put ""DOCDIR\\extwikidoc.zip"""'
   +' "call unzip -o extwikidoc.zip"'
   +' "exit"'
 ws = new ActiveXObject("WScript.Shell"),
 fn = GetFilename().replace(/^.*\\/,'');
// 現在のファイルがextwiki-debug.jsか確認
if (fn!==TARGET) {
 ws.Popup('ファイル名"' + fn + '"は処理対象外です', 0, "ファイル名", 0);
} else {
 // 現在のファイルを保存する
 FileSave();

 // SJISにして名前を付けて保存する
 FileSaveAs(resolveVars(SAVEAS),0,1); // SJIS, CRLF

 // ext-docに変換する
 oe = ws.Run(
  resolveVars(MAKEDOC),
  1,   // ウィンドウをアクティブにして表示する。
  true // 終了するまでスクリプトの実行を停止
 );

 // zipに固める
 oe = ws.Run(
  resolveVars(ZIPDOC),
  1,   // ウィンドウをアクティブにして表示する。
  true // 終了するまでスクリプトの実行を停止
 );

 // zipをサーバにアップロードし解凍する
 oe = ws.Run(
  resolveVars(PUTFILE),
  1,   // ウィンドウをアクティブにして表示する。
  true // 終了するまでスクリプトの実行を停止
 );

}

function resolveVars(path) {
 return path.replace(/DOCDIR/g, DOCDIR);
}

2011年1月3日月曜日

SourceForgeのDiff画面でサイドバーを非表示にするブックマークレット

SourceForgeのDiff画面は右側のサイドバーが大きく、せっかくソースを並べて表示できても、まったくもって見やすいとは言えない状態です。

下記で紹介しているブックマークレットはサイドバーを一時的に非表示にします。

SourceForgeの画面でサイドバーを一時的に非表示にする

ページ移動もしくはリロードすれば元に戻ります。
SourceForgeの収入源である広告の表示やクリックできるチャンスを損なうものではないと思っていますが、なにかお気づきの点があればご指摘いただければ。