トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/307

ページの作成や編集にはユーザ登録が必要です。

IE用スタイルシートを利用可能にするパッチ等

  • 投稿者: A_M
  • カテゴリ: 新規
  • 優先度: 低
  • 状態: 提案
  • 日時: 2006年08月19日 16時28分51秒

 内容

FSWikiのカスタマイズのために、以下の2点を適用するパッチです。

  1. IE用スタイルシートの利用を可能にするパッチ
  2. 携帯電話用テンプレート未作成時に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&amp;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

影響を受けるプラグイン

BugTrack-plugin/161

  • 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秒)

お名前: コメント:
IE_CSS2_diff.txt IE_CSS_diff.txt

最終更新時間:2008年02月14日 23時08分35秒