この前書いた希望を完全に満たすものがなかったので書いた。骨格に「append-css.rb」を利用した。
テーマ別に修正が行えるのと同時にappend-css.rbのように全てのテーマにも修正が行える。
ソースは以下の通り。コピーして misc/plugin/ ディレクトリに user_css2.rb として EUC で保存するとよい。
# user_css2.rb: lastupdate:2005-04-04 # # Append CSS fragment via Preferences Page. # # @conf['user_css2..css'] = '全てのテーマに適用するCSS断片' # @conf['user_css2.<theme>.css'] = 'テーマ「<theme>」に適用するCSS断片' # @cgi.params['user_css2.theme'] = 'CSS追加の対象となるテーマ名' # @cgi.params['user_css2.css'] = '追加するCSS断片' add_header_proc do css_base = @conf["user_css2..css"]; css_theme = @conf["user_css2.#{@conf.theme}.css"]; if((css_base && !css_base.empty?) || (css_theme && !css_theme.empty?)) <<-HTML <style type="text/css"><!-- #{css_base.gsub(/\x0d\x0a|\x0a|\x0d/, "\n\t\t") if css_base} #{css_theme.gsub(/\x0d\x0a|\x0a|\x0d/, "\n\t\t") if css_theme} --></style> HTML else '' end end # デフォルトの言語リソース unless @resource_loaded then def user_css2_label 'テーマの微調整' end def user_css2_desc <<-HTML <h3>CSS断片</h3> <p>下から選んだテーマに、スタイルシートを追加設定する場合、以下にCSSの断片を入力してください。</p> HTML end def user_css2_label2 'このテーマを修正する' end end add_conf_proc( 'user_css2', user_css2_label ) do if @mode == 'saveconf' then if(@cgi.params['user_css2.css'].empty? || @cgi.params['user_css2.css'][0].empty?) @conf.delete("user_css2.#{@cgi.params['user_css2.theme'][0]}.css"); else @conf["user_css2.#{@cgi.params['user_css2.theme'][0]}.css"] = @cgi.params['user_css2.css'][0]; end end unless(@conf_theme_list) # plugin/00default.rb からのコピー @conf_theme_list = [] Dir::glob( "#{::TDiary::PATH}/theme/*" ).sort.each do |dir| theme = dir.sub( %r[.*/theme/], '') next unless FileTest::file?( "#{dir}/#{theme}.css".untaint ) name = theme.split( /_/ ).collect{|s| s.capitalize}.join( ' ' ) @conf_theme_list << [theme,name] end end theme = (@cgi.params['user_css2.theme'][0] or @conf.theme); theme_hash = Hash[* @conf.options.map{|thm,css| (thm =~ /^user_css2\.(.+)\.css$/) ? [$1, $1.split(/_/).collect{|s| s.capitalize}.join(' ')+' (deleted)'] : nil}.compact.flatten ].update( Hash[* @conf_theme_list.flatten] ); theme_hash[''] = '* All Theme *'; <<-HTML #{user_css2_desc} <select name="user_css2.theme"> #{theme_hash.keys.sort.map{|t| %(<option value="#{CGI::escapeHTML(t)}"#{' selected' if t == theme}>#{CGI::escapeHTML(theme_hash[t])}</option>)}.join} </select> <input type="submit" value="#{user_css2_label2}" /> <p><textarea name="user_css2.css" cols="70" rows="15">#{CGI::escapeHTML( @conf["user_css2.#{theme}.css"].to_s )}</textarea></p> HTML end
自作プラグイン第2弾
昨日のと似たようなので、設定画面からプラグインが書ける。ラベルの書き換えや、他のプラグインの動作の一部修正、自作プラグインを FTP 無しにレンタルサーバーで運用中の tDiary に適用することなどを想定している。(最近 FTP に不自由してるものですから (;^_^A
ソースは以下の通り。コピーして misc/plugin/ ディレクトリに「~chotto_plugin.rb」として EUC で保存するとよい。ファイル名の頭の ~ は他のプラグインの後に読み込まれるように付けてある。もちろん、その後で設定画面からこのプラグインを使用可能な状態にすることを忘れてはいけない。
# ~chotto_plugin.rb # # 設定画面からプラグインを定義/上書きできる。 # ラベルの書き換え、プラグインの動作の一部修正など、 # ちょっとしたことに使う。 if(@conf['~chotto_plugin.script']) begin instance_eval(@conf['~chotto_plugin.script']); rescue Exception end end add_conf_proc('~chotto_plugin', 'プラグインの微調整') { if(@mode == 'saveconf') if(@cgi.params['~chotto_plugin.script'].empty? || @cgi.params['~chotto_plugin.script'][0].empty?) @conf.delete('~chotto_plugin.script'); else @conf['~chotto_plugin.script'] = @cgi.params['~chotto_plugin.script'][0]; end end <<-HTML <h3>ちょっとしたプラグインスクリプト</h3> <p>入力したスクリプトが読み込み時に実行されます。普通のプラグインと同じ内容のものを書きます。他のプラグインのちょっとした修正や、自作プラグインの試用に使って下さい。</p> <p><textarea name="~chotto_plugin.script" cols="70" rows="15">#{CGI::escapeHTML(@conf['~chotto_plugin.script'].to_s)}</textarea></p> HTML }
待ってました。
♪
ブックマーク
同期するのが面倒臭い。
♪
Googleツールバー
「検索文字列のページ内検索」と「検索文字列のハイライト」と「上に移動」よく使う。
♪
Amazonツールバー
Google と同じくらい使うなあ。Firefox で追加の検索エンジンから Amazon を探したらあったけどアメリカ、イギリス、カナダとかばっか。
入力した文字列をURLエンコードして特定の文字列 "http://www.amazon.co.jp/exec/obidos/external-search?keyword=..." に埋め込んでそのページを表示するだけでええねんけど。
Firefox の searchplugin って単なるテキストファイルやね。Amazon 検索を追加しとこう。
タクシーが前を走ってた。国道とかじゃなくって普通の道。他に車は無し。
道路の左脇 前方に右ウィンカーを出した車がおって、タクシーが近付いてるのに もそもそとUターンを始めてタクシーの進路に侵入していく。
「おいおい、Uターン早よやめろよ」と思いながらどうなるか見てるうちにタクシーがどんどん近付いていく。どちらの車も動きを止める気配がない。
「ぶつかる」と本気で思ったところでタクシーが、15cmくらいの隙間を空けてきっちり止まった。
いいですね、このタクシーの運ちゃん。好きですよこういう運転。好きっていうか、自分もこういうことしますよ。
甘えた運転、厚かましい運転、寝ぼけた運転に対して、事故にはしないけど、「好きにはさせない」という意思表示なのです。
選択ミスによる突然死ではない、初めての ED がコレです。
教会で聖杯を前にしたセイバーに殺されちゃいました。シロウより聖杯を選んだんです。好感度が足らんかったんだって。12日目以降は値が変化しないから7日目ぐらいからやり直すのが吉だそうで。とほほ. . .(;_;)
(12:00)
空腹のセイバーに断食を強要して、きゅるる、と恥をかかせたり、
イリヤの城から脱出する際、ベッドに隠れて、遊んでるとバカにされたり、
バーサーカー戦の前、廃墟での一夜の後、セイバーでなく凛の心配をしたりしたのがダメだったようです。
どうやら今度はまともなエンディングに向かっている模様。
(13:30)
デスクトップのファイルとコンピュータの情報をWinnyに流すウィルスがあるとか。(slashdot.jp)
昨日その記事読んで、ぬるぽウィルス (W32.HLLW.Antinny) とかいうものの存在も同時に知った。
で、今日、感染ですよ。ぬるぽ の方やから大したことないし、そもそも PC がしょぼくて exe が走る前に、起動でもたついてる所を強制終了できたから被害はなし。
実行ファイルのアイコンにフォルダアイコンを流用するとは、なかなかやりますよ。見事に引っかかっちまった。
雨なので Fate の日なのです。
そういえば前回こんなこと書いた日は 12日目 の袋小路に迷い込んでたっけ。今日見た タイガー道場24 にそのヒントがあったけど、遅いって。
累計プレイ時間 2日と21時間 で True End 『Brillilant Years』 到達。
15日目の選択肢に戻って Good End 『sunny day』 も回収。
素晴らしい。感動した。
次は桜だ。