<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>delab &#187; CSS</title>
	<atom:link href="http://de-lab.com/tag/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://de-lab.com</link>
	<description>xhtml CSS SEO CMS PHP など Webデザイン WEBサイト構築の話題</description>
	<lastBuildDate>Wed, 05 Oct 2011 23:41:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>WordPress投稿画面のins,delの修正 &#8211; XHTML準拠とdatetimeを日本時間に</title>
		<link>http://de-lab.com/article/wordpress-ins-del-datetime/</link>
		<comments>http://de-lab.com/article/wordpress-ins-del-datetime/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 03:18:01 +0000</pubDate>
		<dc:creator>sato</dc:creator>
				<category><![CDATA[Article]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://de-lab.com/?p=122</guid>
		<description><![CDATA[WordPress投稿画面のクイックタグにあるinsdelを使うと、世界標準時間でタグが生成されますので、日本時間に修正しました。どこにも情報がなかった (※あったけど内容が消えてる) のであげてみます。 それと、ins [...]]]></description>
			<content:encoded><![CDATA[<div class="disc">
<p>WordPress投稿画面のクイックタグにある<kbd>ins</kbd><kbd>del</kbd>を使うと、世界標準時間でタグが生成されますので、日本時間に修正しました。どこにも情報がなかった (※あったけど内容が消えてる) のであげてみます。</p>
<p>それと、<kbd>ins</kbd><kbd>del</kbd>が必ずPタグで括られる問題を修正しました。</p>
<p>せっかく直したので活用するために、ins,delのデータタイム要素をCSSで表示させます。</p>
</div>
<p><span id="more-122"></span></p>
<h2 id="toc-ins-deldatetime">ins delのdatetimeを日本時間に修正</h2>
<p>とっても気になっていたのですが、Wordpressの投稿クイックタグを使って<kbd>ins</kbd><kbd>del</kbd>を生成すると、投稿時間にずれが生じています。</p>
<h3 id="toc-">生成される形式</h3>
<pre name="code" class="html" start="5">
&lt;ins datetime="2008-06-01T10:10:39+00:00"&gt;&lt;/ins&gt;
</pre>
<p>生成された形式を見るとわかりますが、日時表記は国際標準のISO 8601準拠しています。</p>
<p><span class="red">datetime=&#8221;2008-06-01T10:10:39+00:00&#8243;</span>一番最後の+00:00は、世界標準時間を表しています。投稿された時間は世界表時間に合わせているようです。</p>
<p>日本はGMT+09:00ですので、これに合わせて修正します。</p>
<h3 id="toc-1">修正箇所</h3>
<p><span class="page">wp-includes/js/quicktags.js</span> 27行目</p>
<pre name="code" class="js">var now = new Date();
var datetime = now.getUTCFullYear() + '-' +
zeroise(now.getUTCMonth() + 1, 2) + '-' +
zeroise(now.getUTCDate(), 2) + 'T' +
zeroise(now.getUTCHours(), 2) + ':' +
zeroise(now.getUTCMinutes(), 2) + ':' +
zeroise(now.getUTCSeconds() ,2) +
'+00:00';</pre>
<p>修正後</p>
<pre name="code" class="js">var now = new Date();
var datetime = now.getFullYear() + '-' +
zeroise(now.getMonth() + 1, 2) + '-' +
zeroise(now.getDate(), 2) + 'T' +
zeroise(now.getHours(), 2) + ':' +
zeroise(now.getMinutes(), 2) + ':' +
zeroise(now.getSeconds() ,2) +
'+09:00';</pre>
<h2 id="toc-ins-del-xhtml">ins del タグがXHTML準拠するように内部を修正</h2>
<p>insタグを使うと不正なXHTML形式になる問題も修正しました。</p>
<p><kbd>ins</kbd>は、その場所によってブロック要素としてもインライン要素としても使えるタグですが、Wordpressで記事として投稿すると、自動修正機能でインライン要素として判断されて、pタグで括られてしまいます。</p>
<p>例えば、こういう場合</p>
<pre name="code" class="xhtml">
&lt;ins&gt;
  &lt;p&gt;追記の内容&lt;/p&gt;
&lt;/ins&gt;
</pre>
<p>WordPressに投稿されると、自動修正されます。</p>
<pre name="code" class="xhtml">&lt;p&gt;
   &lt;ins&gt;
     &lt;p&gt;追記の内容&lt;/p&gt;
   &lt;/ins&gt;
&lt;/p&gt;</pre>
<p>ブロック要素の<kbd>ins</kbd>をPタグが囲む形に修正されてしまいました。これは、設定の「不正な XHTML 構文を自動的に修正する」のチェックを外しても同じですので、内部のコードを修正しました。</p>
<h3 id="toc-2">修正箇所</h3>
<p><span class="page">wp-include\formatting.php</span> 66行目</p>
<pre name="code" class="php">
	$allblocks = '(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr)';
 // 該当部分を書き換え
	$allblocks = '(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr|ins|del)';
</pre>
<pre name="code" class="php">
	$pee = preg_replace('|&lt;ins([^&gt;]*)&gt;|i', "&lt;ins$1&gt;", $pee);
	$pee = str_replace('&lt;/ins&gt;', '&lt;/ins&gt;', $pee);
	$pee = preg_replace('|&lt;del([^&gt;]*)&gt;|i', "&lt;del$1&gt;", $pee);
	$pee = str_replace('&lt;/del&gt;', '&lt;/del&gt;', $pee);
 // if ($br) {　の前に上の4行を入れる
	if ($br) {
</pre>
<h2 id="toc-insdelcss">ins,delタグの要素をCSSで表示させる</h2>
<p>せっかくinsに正しく要素がくっついてくるようになったので、それをサイトに反映させるために、CSSで要素を表示させます。</p>
<p><ins datetime="2008-06-05T19:17:48+09:00">これは追記です。</ins></p>
<p>insの要素となっているdatetimeをCSSのcontentプロパティを使って表示させています。</p>
<p>CSSはこんな感じで書いてます。</p>
<pre name="code" class="css">ins{
	display: block;
	margin: 10px 0;
	background: #EFEFEF;
	border: #999 1px dotted;
	padding: 10px 20px;
	text-decoration:none;
	}
ins:before {
 	display: block;
	content: "\8ffd\8a18  - (" attr(datetime) ")";
	text-align: left;
	font-size: 85%;
}
</pre>
<p>擬似要素を使っているのでIE6では「追記&#8230;」部分が表示されません。</p>
<p>対策として、本文との区別がつくようにボーダーで囲んでボックスで表示しています。</p>
<img src="http://de-lab.com/?ak_action=api_record_view&id=122&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://de-lab.com/article/wordpress-ins-del-datetime/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

