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

BugTrack-plugin/161

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

テンプレート/スタイル変更プラグイン

  • 投稿者: KG
  • カテゴリ: 新規
  • 優先度: 低
  • 状態: 提案
  • 日時: 2004年12月01日 09時51分44秒

 内容

Wikiサイト全体のスタイル(tmpl,css)設定を変更するプラグインです。

閲覧者側で任意のスタイルを指定して表示方法を変更できるようになります。このプラグインによって、config.datのスタイル設定の変更は行われません。

変更したスタイル設定はクッキーに保存され、ユーザーが自分の好みのスタイルを設定することができるようになります。

また、添付ファイル中にあるように

./theme/print/print.css
./tmpl/site/print/print.tmpl

を追加することによって、上部メニュー領域に「印刷」メニューが追加されます。

この「印刷」メニュー選択時には print.css, print.tmpl を使用してページが表示されます。印刷用の表示方法を変更する場合には、これらのファイルをカスタマイズしてください。

印刷スタイル時には、パート編集/WikiName/editパラグラフは無効になります。(ログイン時にはeditパラグラフが有効になってしまいます。ちょっとやり方がわかりません。)

さらに、管理メニューの「テンプレート/スタイルの自動設定」より、任意のCGIパラメータの条件を設定することで自動的にテンプレート/スタイルを変更することができます。

 インストール方法

添付ファイルを解凍し、各ディレクトリに展開してください。また、プラグイン設定画面で sitestyle を有効にしてください。

 使用方法

設定用のフォームを表示する場合は下記のように指定します。./tmpl/site_style.tmpl を編集することで設定フォームをカスタマイズできます。

{{sitestyle}}

あるページに対してのみ指定のテンプレート/スタイルを指定する場合は、そのページ中に下記のように指定します。

{{sitestyle テンプレート名,スタイル名}}

CGIパラメータもしくはHTTP RequestHeaderの任意の項目を条件にしてテンプレート/スタイルを自動的に設定する場合は、管理メニューの「テンプレート/スタイルの自動設定」より条件設定を行います。

この条件は設定順で評価されます。

テンプレート/スタイルは FreeStyle Wiki に登録されたものから選ぶことができます。

 ライセンス

GPLでお願いします。

 サンプル

下記リンク先でサンプルを見ることが出来ます。

 更新履歴

2004/12/02 - sitestyle_20041202.zip(823)
  • バグ修正
2004/12/22 - sitestyle_20041222.zip(813)
  • 任意の設定フォーム指定に対応
  • printのテンプレート/スタイルを選択項目から外した
2005/03/18 - sitestyle_20050318.zip(849)
  • setup.datの theme_dir, theme_uri の設定値が異なる場合に正常に動作しないバグを修正
2005/11/28 - sitestyle_20051128.zip(859)
  • IIS環境において、WikiFarm利用時にエラーが出ていたのを修正
2006/03/23 - sitestyle_20060323.zip(823)
  • $wiki->config('xxx')の設定値で、theme, site_tmpl_theme も変更するように修正
2006/09/21 - sitestyle_20060921.zip(810)
  • 2005/11/28のIIS対応部分の反映ミスを修正
2007/02/15 - sitestyle_20070215.zip(807)
  • 管理メニューに「テンプレート/スタイルの自動設定」を追加しました。
2007/04/13 - sitestyle_20070413.zip(1199)
  • include プラグイン対応(取り込んだページ内にsitestyleプラグイン記述がある場合は適用されないように修正した)。
2010/07/21 - sitestyle_20100721.zip(496)
  • 2010/02/09修正分の反映
  • 自動適用設定の比較条件に正しくない条件を記述した際にエラーとして保存しない様に修正
2011/02/21 - sitestyle_20110221.zip(417)
  • HTTPRequestHeaderの任意の項目値を条件に指定できるようにした。
2011/02/23 - sitestyle_20110223.zip(621)
  • 携帯テンプレート対応
2018/09/26 - sitestyle_20180926.zip(3)
  • スマートフォン・テンプレート対応
  • create_url()対応

 コメント

  • バグがあったので修正しました。日付の新しい方をダウンロードしてください。 - KG (2004年12月02日 16時32分16秒)
  • サンプル表示へリンクを追加しました。 - KG (2004年12月05日 00時05分42秒)
  • プラグインを更新しました。詳しくは更新履歴を参照してください。 - KG (2004年12月22日 09時18分23秒)
  • バグ修正しました。今頃、こんなバグを発見するなんて・・・(涙) - KG (2005年03月18日 20時17分37秒)
  • 子wiki環境で印刷ボタンを押したらエラーが表示されました。 - KGファン (2005年11月27日 22時53分36秒)
  • KGファンさん(なんだか照れますね・・・)、エラー発生時にメッセージ等は表示されていないでしょうか?エラーメッセージ等が無いと、ちょっと分かり辛いです。 - KG (2005年11月28日 00時52分54秒)
  • こんばんわKGさん。自分、IIS環境なんですが、印刷をクリックするとソフトウェアエラーが発生します。

少し調べてみたんですが、hook時のメニュー追加時に$ENV{REQUEST_URI}の値が何もないようで、パスがおかしくなってしまうのが原因なんでしょうか・・・たとえば

http://localhost/~home/wiki.cgi/TPage/mickey?page=Header

というページの印刷メニューのリンク先は、

http://localhost/~home/wiki.cgi/TPage/&print=1

となっており表示ページのHTMLソースの該当部分は、

<span class="adminmenu">
  <a href="&print=1">印刷</a>
</span>

となっています。

上記のまま印刷をクリックすると以下のエラーメッセージが出力されます。

Software error:
HTML::Template->new() : Cannot open included file ./tmpl/site//.tmpl : file not found. at lib/HTML/Template.pm line 1616
HTML::Template::_init_template('HTML::Template=HASH(0x33f9a40)') called at lib/HTML/Template.pm line 1189
HTML::Template::_init('HTML::Template=HASH(0x33f9a40)') called at lib/HTML/Template.pm line 1083
HTML::Template::new('HTML::Template','filename','./tmpl/site//.tmpl','die_on_bad_params',0,'case_sensitive',1) called at C:\away\wiki.cgi line 201

For help, please send mail to this site's webmaster, giving this error message and the time and date of the error.

- KGファン (2005年11月28日 01時48分37秒)

  • IISの実行環境が無かったので、作ってテストしたところ同現象を確認しました。ご指摘の通り、REQUEST_URI が取得できないようですね。なんとか修正を行ってみます。 - KG (2005年11月28日 09時52分52秒)
  • 解決方法がわかりましたので、近々バージョンアップします。 - KG (2005年11月28日 11時12分23秒)
  • 楽しみにしております。よろしくお願い致します。 - KGファン (2005年11月28日 14時54分25秒)
  • とりあえず、修正完了しました。IIS5.1で動作確認しましたが、他のIIS環境において正常に動作するかどうかはわかりません。 - KG (2005年11月28日 17時37分39秒)
  • 動作するのを確認致しました!!ありがとうございます!! - KGファン (2005年11月28日 17時57分07秒)
  • 久々に修正。あるプラグインを作成中に $wiki->config() の設定値が変更されていないのに気づいたので・・・。 - KG (2006年03月23日 01時05分45秒)
  • 印刷メニューをクリックすると、「ページが見つかりません」が表示されます。印刷メニューのリンク先が
http://〜/wiki/&print=1

となっています。ページのURLは

http://〜/wiki/wiki.cgi?page=Top

です。環境は、Win2000Server+IISです。 - K.Y. (2006年09月21日 18時50分58秒)

  • 2006/03/23 にアップしたものに 2005/11/28 における IIS対応修正が含まれていなかったので修正(マージ)しました。最新版をお試しください。 - KG (2006年09月21日 19時52分16秒)
  • 管理メニューに「テンプレート/スタイルの自動設定」を追加しました。この設定画面では JavaScript が必須となりますが、Win版のIEとFirefoxでの動作チェックしか行っておりません。他の環境にて不具合がありましたらご報告ください。 - KG (2007年02月15日 12時17分00秒)
  • AutoSiteStyleHandler用のadd_hook()と,AdminSiteStyleHandler用の add_admin_handler()とadd_admin_menu()が抜けているので,Install.pmに追加願います - 名無しさん (2007年02月17日 04時38分25秒)
  • 失礼しました。Install.pmを置き換えたものをアップしました。 - KG (2007年02月17日 05時42分40秒)
  • include プラグイン対応版として更新しました。詳細は変更履歴を参照してください。 - KG (2007年04月13日 10時09分48秒)
  • お世話になっております。CGI-KeyにPageを指定してTemplateを切り替えるようにしたところ、切り替えたページのWikiメニューの印刷が効かなくなってしまいました。URLには&print=1が付きますが、Wikiメニューから印刷のリンクが消えて、CSSとTmplateがそのままで印刷に切り替わりませんでした。AutoSiteStyleHandler.pmのフックメソッドに印刷用テンプレート/スタイルの取得を追加したところ、とりあえずうまくいきました。- すなぷ (2010年02月08日 15時14分54秒)
# 設定ファイルチェック
$wiki->config('sitestyle_file','sitestyle.dat') if (!$wiki->config('sitestyle_file'));
my $config = &Util::load_config_text($wiki,$wiki->config('sitestyle_file'));
my $find = undef;

+	# 印刷用テンプレート/スタイルの取得
+	my $print = $cgi->param("print");
+	my $site_tmpl = $wiki->config('tmpl_dir')."/site/print/print.tmpl";
+	my $css  = $wiki->config('theme_uri')."/print/print.css";
+	my $css_file = $wiki->config('theme_dir')."/print/print.css";
+ 
+	if ( defined($print) )  {
+		# 印刷用スタイル/テンプレートがあれば置換え
+		$wiki->config('css', $css) if ( -f $css_file );
+		$wiki->config('site_tmpl', $site_tmpl) if ( -f $site_tmpl );
+		$wiki->config('theme', 'print');
+		$wiki->config('site_tmpl_theme', 'print');
+		# パート編集の無効化
+		$wiki->config("partedit", 0);
+		# WikiNameの無効化
+		$wiki->config("wikiname", 0);
+		# editパラグラフの無効化
+		$wiki->config('accept_edit', 0);
+		# ログイン時のeditパラグラフの無効化
+		#### print.css の div.partedit に display:none; を追加してください。
+		return;
+	}
  • この部分に関しては検証を行っていませんでした。申し訳ないです。また、修正箇所ですが、、、元々ページ内に個別に設定がある場合はそれを優先するつもりでしたので Install.pm 内の hook の順番を変えることで対応したいと思います。 - KG (2010年02月09日 14時31分29秒)
$wiki->add_hook("initialize", "plugin::sitestyle::SiteStyleHandler");
$wiki->add_hook("initialize","plugin::sitestyle::AutoSiteStyleHandler");
                  ↓
$wiki->add_hook("initialize","plugin::sitestyle::AutoSiteStyleHandler");
$wiki->add_hook("initialize", "plugin::sitestyle::SiteStyleHandler");
  • このプラグインでサイト内のタブの切り替えが使えるようになり感謝です。 - すなぷ (2010年02月09日 21時52分13秒)
  • CGI-KEYをaction、比較条件を*にしたところ、エラーが発生します。sitestyle.datからaction *の行を削除し、回避しました。ご報告まで。 - shino (2010年07月21日 18時00分57秒)
  • ご報告ありがとうございます。修正分をアップしました。sitestyle_20100721.zip(496) - KG (2010年07月21日 22時42分32秒)
  • 今更 BugTrack-theme/25 見ました。 user agent で tmp と css を振り分ける事が出来るのですか? - kitta (2011年02月15日 17時54分37秒)
  • まだ実装してませんよ〜。そういう機能を実装するのも良いかと思いまして・・・って、2年前のコメですね(笑)。必要かどうかはわかりませんでしたので、必要だったらコメ返来るかなぁって思ってました。 - KG (2011年02月16日 09時36分32秒)
  • ごめんなさい。2年も経ってましたか。会社で、今時の携帯端末で社外からもっとうまく使えないかなぁ?言われたんですけど、header に CSS 乱立させちゃうとちょっとした改修で「めんどくせ〜」ってなるのが目に見えてて。個人的にやりたく無いなぁ、と。で、久しぶりにここへ来てみたら、あ... これが欲しいぞ。と思った訳です。これなら tmp も専用で軽量なのとかも作れちゃうじゃん、と。UA と モニターサイズで振り分けられると嬉しいなとか思ってます。ってこれじゃ作ってくれる前提のリクエストですね(w - kitta (2011年02月16日 12時37分43秒)
  • ん〜UA対応というのはできそうですが、モニターサイズ無理かなぁ・・・リクエストヘッダにそういう情報があれば対応できるかもしれませんが・・・auとsoftbankはあるみたいですね。プラグインで対応するとしたら、任意のリクエストヘッダーに対する比較条件という感じですね。何かこうすればいいという案はありませんか?(どなたでも) - KG (2011年02月16日 23時20分29秒)
  • モニターサイズは css で切り分け出来ます。ので、CSSでやってみます。UAで分けられるだけでも嬉しいです。 - kitta (2011年02月18日 17時26分45秒)
  • HTTP Request Header の値を条件に指定できるようにしました。sitestyle_20110221.zip(417) - KG (2011年02月21日 14時37分09秒)
  • 有り難うございます。試してみます。 - kitta (2011年02月21日 17時11分43秒)
  • UA対応の件。標準で実装されている携帯電話対応とはどうゆう優先順位になっていますか?AndoroidoのUAに一部Docomoと書かれているものが有るらしい事が分かりまして、ちょっと気になっています。 - kitta (2011年02月22日 11時15分40秒)
  • 携帯対応を元から忘れてました。(>_<) ということで、携帯テンプレート対応しました。sitestyle_20110223.zip(621) - KG (2011年02月23日 01時53分28秒)
  • お、忘れられていましたか。対応有り難うございます。 - kitta (2011年02月23日 10時50分18秒)
  • これ、凄くいいです。IE6 非対応とかも専用tmplへ飛ばしちゃえばいいんで簡単ですし。タブレットとかスマートフォン対応もアドレスそのままでOKなのがいいですね。スマートフォン対応だけhtml5とかにしちゃう事も出来ますし。マウス&キーボードなインターフェイスのPC、タッチデバイスなタブレットとスマートフォン。この三つが完全に別々に考えられる様になって嬉しいです。 - kitta (2011年02月24日 15時50分09秒)
  • ありがとうございます。スマホ対応のテンプレートができたら、是非投稿してくださいね。 - KG (2011年02月24日 17時35分03秒)
  • スマートフォン・テンプレートに対応しました。sitestyle_20180926.zip(3) - KG (2018年09月26日 20時12分14秒)
お名前: コメント: