この前書いた希望を完全に満たすものがなかったので書いた。骨格に「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
少し前の話題だけど。DR にデカタンクとデカライトとキャリアを付けたモデルである DJEBEL がちょっと変わった。ホントにちょっと。バッテリー容量が少し増えて、タンクのデカールが 200cc と共通デザインになった。
ジェベルでよく言われるのが、バッテリーの弱さ と オイル滲み/漏れで、それに応えたんだろうが 自分は毎日乗ってるせいかバッテリーに不足を感じたことはない。むしろウチの DR の滴るほど漏れてるエンジンオイルを何とかして下さい。
タンクのデカールは極めて地味で小さい。下地の青色の面積が広すぎてのっぺり。見てらんない。飾り気も何もあったもんじゃない。新車より96、97年あたりのの方が見た目もキャブも魅力的。
♪
テーマの微調整
テーマなんてなくてもいいものだ。好みのものだ。だから気に入ったテーマが見つかっても、人の作ったテーマでは微妙に気に入らない所があって当然。そんな時の選択肢。
3が俺の希望だ。ファイルのアップロードが必要なく編集が簡単だから。テーマ別の上書きスタイルと常に適用する上書きスタイル(base.cssの上書きにあたる)とを設定画面で定義して、プラグインはテーマ名を見て<style>の内容を書き分ける。
♪
footnote.rb
本文と脚注とを相互に結ぶリンクは、「同一ページ内」の脚注と本文に向けてはってほしい。現状では日別表示に移動してしまう。
♪
title_list.rb, recent_list.rb
サブタイトルを抜き出してリスト表示するプラグイン。
リンクを「同一ページ内」の日記にはってほしい。あと、サブタイトルからカテゴリ除かんといて。
♪
calendar3.rb
一月分の日付リストを表示し、日付をポイントするとポップアップでサブタイトルを表示するプラグイン。
CSSで各部のスタイルを定義できるが、日記の書いてある日とない日を区別できるクラスがない。
♪
category.rb
category_form の 1Q、2Q、3Q、4Q という表記がわかりにくい。
♭ ds14050「3が俺の希望だ。」についてるセクションアンカーって etDiaryスタイルの間違いだよね。段落番号かぶってるし。
♭ ds14050うわ! append-css.rb がまさにソレ (⇒テーマの一部修正)。
♭ ds14050いや違う! 毎月テーマを変える人向きではない。