ページの作成や編集にはユーザ登録が必要です。
IE用スタイルシートを利用可能にするパッチ等
- 投稿者: A_M
- カテゴリ: 新規
- 優先度: 低
- 状態: 提案
- 日時: 2006年08月19日 16時28分51秒
内容
FSWikiのカスタマイズのために、以下の2点を適用するパッチです。
- IE用スタイルシートの利用を可能にするパッチ
- 携帯電話用テンプレート未作成時にdefaultを代替利用するパッチ
ref_text IE_CSS_diff.txt ミスコードがあり差し替え(2006-09-17)
--- ../wiki3_6_2/wiki.cgi Sun Jul 2 18:09:00 2006 +++ ./wiki.cgi Fri Aug 18 09:03:48 2006 @@ -84,10 +84,20 @@ # 個別に設定が必要なものだけ上書き $wiki->config('css', $wiki->config('theme_uri')."/".$config->{theme}."/".$config->{theme}.".css"); + # IE用CSSの存在を確認 + $wiki->config('ie_css', + $wiki->config('theme_uri')."/".$config->{theme}."/".$config->{theme}."_ie.css"); + if(!(-e $wiki->config('theme_dir')."/".$config->{theme}."/".$config->{theme}."_ie.css")){ + $wiki->config('ie_css',""); + } $wiki->config('site_tmpl', $wiki->config('tmpl_dir')."/site/".$config->{site_tmpl_theme}."/".$config->{site_tmpl_theme}.".tmpl"); $wiki->config('site_handyphone_tmpl', $wiki->config('tmpl_dir')."/site/".$config->{site_tmpl_theme}."/".$config->{site_tmpl_theme}."_handyphone.tmpl"); + # 携帯用テンプレートが存在しないときに「default」を活用 + if(!(-e $wiki->config('site_handyphone_tmpl'))){ + $wiki->config('site_handyphone_tmpl',$wiki->config('tmpl_dir')."/site/default/default_handyphone.tmpl"); + } # キャッシュの設定を反映 my $cache_config = &Util::load_config_hash($wiki,'cache.dat'); @@ -151,8 +161,7 @@ # ページのタイトルを決定 my $title = ""; if($cgi->param('action') eq "" && $wiki->page_exists($cgi->param('page'))){ - $title = "<a href=\"".$wiki->config("script_name")."?action=SEARCH&word=". - &Util::url_encode($wiki->get_title())."\">". + $title = "<a href=\"".$wiki->create_url({ action=>"SEARCH",word=>$wiki->get_title() })."\">". &Util::escapeHTML($wiki->get_title())."</a>"; } else { $title = &Util::escapeHTML($wiki->get_title()); @@ -260,6 +269,7 @@ # パラメータをセット $template->param(HAVE_USER_CSS => $usercss ne "", THEME_CSS => $wiki->config('css'), + IE_CSS => $wiki->config('ie_css'), USER_CSS => &Util::escapeHTML($usercss), THEME_URI => $wiki->config('theme_uri')); --- ../wiki3_6_2/tmpl/site/default/default.tmpl Sun Jul 2 18:10:00 2006 +++ ./tmpl/site/default/default.tmpl Fri Aug 18 09:52:01 2006 @@ -17,7 +17,10 @@ <!--TMPL_IF NAME="THEME_CSS"--> <link rel="stylesheet" type="text/css" href="<!--TMPL_VAR NAME="THEME_CSS"-->"> <!--/TMPL_IF--> - + <!--TMPL_IF NAME="IE_CSS"--> + <!--[if IE]><link rel="stylesheet" type="text/css" href="<!--TMPL_VAR NAME="IE_CSS"-->"><![endif]--> + <!--/TMPL_IF--> + <!--TMPL_IF NAME="HAVE_USER_CSS"--> <style type="text/css"> <!--
IE用スタイルシートの利用を可能にするパッチ
IE用スタイルシートをHTMLに取り込む為に、以下のLINK要素を出力するパッチです。
<link rel="stylesheet" type="text/css" href="(CSSのURI)"> <!--[if IE]><link rel="stylesheet" type="text/css" href="(IE用CSSのURI)"><![endif]-->
仕様の変化
テーマディレクトリに「(theme)_ie.css」というファイルがある場合に限り、IE用LINK要素を出力します。
theme/default/default.css theme/default/default_ie.css
影響を受けるプラグイン
- SiteStyleHandler.pm hookメソッドを弄ることで、IE用スタイルシートを適用できるようになります。
- 参考に、私の修正事例を挙げてみます。
- 修正箇所は最後のifブロック
if ( $sitestyle =~ /^(.+)?\|(.+)?$/ ) { $site_tmpl = $wiki->config('tmpl_dir')."/site/".$1."/".$1.".tmpl"; $css = $wiki->config('theme_uri')."/".$2."/".$2.".css"; $css_file = $wiki->config('theme_dir')."/".$2."/".$2.".css"; my $ie_css = $wiki->config('theme_uri')."/".$2."/".$2."_ie.css"; # 追記箇所 my $ie_css_file = $wiki->config('theme_dir')."/".$2."/".$2."_ie.css"; # 追記箇所 $wiki->config('css', $css) if ( -f $css_file ); $wiki->config('ie_css', $ie_css) if ( -f $ie_css_file ); # 追記箇所 $wiki->config('site_tmpl', $site_tmpl) if ( -f $site_tmpl ); }
携帯電話用テンプレート未作成時にdefaultを代替利用するパッチ
ディストリの仕様は、PC用テンプレートと携帯用テンプレートとを同じディレクトリに作成する必要がありますが、未作成にも対応するパッチです。
仕様の変化
テンプレート(PC用)を自作する時、携帯電話用テンプレートを作成しなくてもdefaultの携帯電話用テンプレートを利用するようになります。
tmpl/site/original/original.tmpl (携帯電話用テンプレートを作成していない場合) tmpl/site/default/default_handyphone.tmpl
コメント
- 初版のdiffにバグがありました。「# IE用CSSの存在を確認」以降ファイルの存在確認をしているはずが、ファイルシステムのパスではなくURLを評価していました。 - A_M (2006年09月17日 02時29分48秒)
正しくIE用CSSファイルを評価するために、次のように修正しています。
+ if(!(-e $wiki->config('ie_css'))){ ↓ + if(!(-e $wiki->config('theme_dir')."/".$config->{theme}."/".$config->{theme}."_ie.css")){
- 以前のパッチを適用された方は、お手数ですが、上記の箇所をご確認下さい。 - A_M (2006年09月17日 02時32分56秒)
- このパッチは何処にあてるのですか? - 名無しさん (2008年02月14日 21時34分13秒)
- 書いてある通りじゃないですか。
--- ../wiki3_6_2/wiki.cgi Sun Jul 2 18:09:00 2006
--- ../wiki3_6_2/tmpl/site/default/default.tmpl Sun Jul 2 18:10:00 2006
- 名無しさん (2008年02月14日 23時06分11秒)
最終更新時間:2008年02月14日 23時08分35秒