#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


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

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

SourceForge