質問箱/5106

カテゴリデザイン・CSS・スキン
サマリ差分表示のときだけ整形済みテキストを折り返し表示したい
バージョン1.4.7_notb_utf8
投稿者tfujii
状態完了
投稿日2012-09-09 (日) 15:09:50

質問

概要

またお世話になります。差分表示(?cmd=diff)のときだけ整形済みテキスト(pre)を折り返し表示したいです。

試行錯誤したこと

skin/pukiwiki.skin.php で、
<?php print($vars['cmd']); ?>
とやると、差分ページでは"diff"と返される事を知っていたので、イケる!と思って下記のようにしたのですができませんでした。。

skin/pukiwiki.css.php ※余計なものは省略しています
pre {
<?php if ($vars['cmd'] == 'diff') { ?>
	white-space: -moz-pre-wrap; /* Mozilla */
	white-space: -pre-wrap;     /* Opera 4-6 */
	white-space: -o-pre-wrap;   /* Opera 7 */
	white-space: pre-wrap;      /* CSS3 */
	word-wrap: break-word;      /* IE 5.5+ */
<?php } else { ?>
	white-space:pre;
<?php } ?>
}

$vars が読み込まれていないのかと思い、
<?php global $vars; ?>
を記述に加えてみたのですがそれでもうまくいきませんでした。

なぜCSSでは$varsが使えないのでしょうか(そもそも$varsが何者かもよくわかっていないのですが・・^^;)

PKWK使用環境

Apache/2.2.22 (Win32) PHP/5.3.14

回答


まとめ

下記の その1 または その2 を行えば、差分表示時に整形済みテキストを折り返し表示できます。複雑ではないかもしれませんが一応まとめておきました。

その1

skin/pukiwiki.skin.php の、
<link rel="stylesheet" type="text/css" media="screen" href="skin/pukiwiki.css.php?charset=<?php echo $css_charset ?>" charset="<?php echo $css_charset ?>" />

<link rel="stylesheet" type="text/css" media="screen" href="skin/pukiwiki.css.php?charset=<?php echo $css_charset.'&cmd='.$vars['cmd'] ?>" charset="<?php echo $css_charset ?>" />
に置換。

skin/pukiwiki.css.php の、
$media   = isset($_GET['media'])   ? $_GET['media']    : '';
が書いてある辺りなどに、
$cmd  = isset($_GET['cmd'])   ? $_GET['cmd']    : '';
を追記しておき、
pre {
~(省略)~
}
の中にある、
	white-space:pre;
という行を
<?php if ($cmd == 'diff') { ?>
	white-space: -moz-pre-wrap; /* Mozilla */
	white-space: -pre-wrap;     /* Opera 4-6 */
	white-space: -o-pre-wrap;   /* Opera 7 */
	white-space: pre-wrap;      /* CSS3 */
	word-wrap: break-word;      /* IE 5.5+ */
<?php } else { ?>
	white-space:pre;
<?php } ?>
}
の10行に置換する。


その2

plugin/diff.inc.php 内にある、
<pre>

<pre class="diff">
にすべて置換する。

skin/pukiwiki.css.php の
pre {
~(省略)~
	white-space:pre;
~(省略)~
}
を複製し、
pre.diff {
~(省略)~
	white-space: -moz-pre-wrap; /* Mozilla */
	white-space: -pre-wrap;     /* Opera 4-6 */
	white-space: -o-pre-wrap;   /* Opera 7 */
	white-space: pre-wrap;      /* CSS3 */
	word-wrap: break-word;      /* IE 5.5+ */
~(省略)~
}
のように変える。

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-23 (木) 19:14:24
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.333 sec.

SourceForge