- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2016-10-22T10:50:38+09:00","","")
#author("2016-11-15T09:04:15+09:00","","")
* HTML5 の DOCTYPE 宣言を出力できるようにする [#r70c828a]
- ページ: [[BugTrack2]]
- 投稿者: [[bee]]
- 優先順位: 普通
- 状態: 提案
- 状態: 完了
- カテゴリー: 本体新機能
- 投稿日: 2016-10-14 (金) 08:52:12
- バージョン: 1.5.1
- リリース予定バージョン: 1.5.2
** メッセージ [#u596ac72]
関連: [[BugTrack2/387]]
かなり場当たり感が目立っていますが、まずは機能を追加して、次にデフォルト引数を変更、最終的にガラッとリファクタリングできればいいかなと思っています。
%%osdn.net/users/beec1e/pf/pukiwiki/ にコードを置いてあります。%%
適用しづらそうなので git format-patch で分割したものを用意しました。~
xrea.beecle.net/pukiwiki/?Patch/BugTrack2-389
一応 UnitTest も書いてみました(PHPUnit 4.8 なので PHP 5.3 以降限定ですが…)。~
PHP 5.3 以降で Regression していることはないはず。~
travis-ci.org/beec1e/pukiwiki/builds/167510623
*** patch [#xbbb8a7a]
diff --git a/lib/html.php b/lib/html.php
index 6b2fc6c..274dca8 100644
--- a/lib/html.php
+++ b/lib/html.php
@@ -526,6 +526,7 @@ function pkwk_common_headers()
}
// DTD definitions
+define('PKWK_DOCTYPE_HTML5', 28);
define('PKWK_DTD_XHTML_1_1', 17); // Strict only
define('PKWK_DTD_XHTML_1_0', 16); // Strict
define('PKWK_DTD_XHTML_1_0_STRICT', 16);
@@ -575,6 +575,9 @@ function pkwk_output_dtd($pkwk_dtd = PKWK_DTD_XHTML_1_1, $charset = CONTENT_CHAR
$option = 'Transitional';
$dtd = 'http:// www.w3.org/TR/html4/loose.dtd';
break;
+ case PKWK_DOCTYPE_HTML5:
+ $type = PKWK_DTD_TYPE_HTML;
+ break;
default: die('DTD not specified or invalid DTD');
break;
@@ -586,13 +589,17 @@ function pkwk_output_dtd($pkwk_dtd = PKWK_DTD_XHTML_1_1, $charset = CONTENT_CHAR
if ($type == PKWK_DTD_TYPE_XHTML) echo '<?xml version="1.0" encoding="' . $charset . '" ?>' . "\n";
// Output doctype
- echo '<!DOCTYPE html PUBLIC "-//W3C//DTD ' .
- ($type == PKWK_DTD_TYPE_XHTML ? 'XHTML' : 'HTML') . ' ' .
- $version .
- ($option != '' ? ' ' . $option : '') .
- '//EN" "' .
- $dtd .
- '">' . "\n";
+ if ($pkwk_dtd == PKWK_DOCTYPE_HTML5) {
+ echo "<!DOCTYPE html>\n";
+ } else {
+ echo '<!DOCTYPE html PUBLIC "-//W3C//DTD ' .
+ ($type == PKWK_DTD_TYPE_XHTML ? 'XHTML' : 'HTML') . ' ' .
+ $version .
+ ($option != '' ? ' ' . $option : '') .
+ '//EN" "' .
+ $dtd .
+ '">' . "\n";
+ }
// Output <html> start tag
echo '<html';
@@ -609,6 +616,8 @@ function pkwk_output_dtd($pkwk_dtd = PKWK_DTD_XHTML_1_1, $charset = CONTENT_CHAR
if ($type == PKWK_DTD_TYPE_XHTML) {
// NOTE: XHTML 1.1 browser will ignore http-equiv
return '<meta http-equiv="content-type" content="application/xhtml+xml; charset=' . $charset . '" />' . "\n";
+ } elseif ($pkwk_dtd == PKWK_DOCTYPE_HTML5) {
+ return '<meta charset="' . $charset . '" />' . "\n";
} else {
return '<meta http-equiv="content-type" content="text/html; charset=' . $charset . '" />' . "\n";
}
--------
- 実装ありがとうございます。テストがあるのが良いですね!この変更を取り込んでさらにskinからも消してしまいます -- [[umorigu]] &new{2016-10-20 (木) 05:42:19};
- すみません。前言撤回です。一度パッチを取り込んでみたのですが、結局metaヘッダも変更になってしまうので(Content-Style-Type / Content-Script-Type削除)、DTD選択機能ごと削除しました [[osdn.net:projects/pukiwiki/scm/git/pukiwiki/commits/dc10e467307721d15ecc5ae485582af32aa7d64e]] -- [[umorigu]] &new{2016-11-15 (火) 08:24:08};
#comment