HtmlTemplateFramework
[ class tree: HtmlTemplateFramework ] [ index: HtmlTemplateFramework ] [ all elements ]

Source for file htf_frm_headconfig.phl

Documentation is available at htf_frm_headconfig.phl

  1. <?php
  2. /**
  3.  * htf_frm_headconfigクラス
  4.  *
  5.  * headconfig情報を保持しヘッダを管理するクラス
  6.  *
  7.  * @package HtmlTemplateFramework
  8.  * @subpackage frame
  9.  * @access  public
  10.  * @author    Yamauchi Shogo <htf@as-prj.com>
  11.  * @version $Id: htf_frm_headconfig.phl ,v 1.0 $
  12.  ***/
  13. require_once("htf_com_initialize.inc");        //共通初期処理
  14. require_once("htf_tag_element.phl");            //タグオブジェクト
  15. require_once("htf_frm_headtag_element.phl");    //headタグ要素オブジェクト
  16.  
  17. /**
  18.  * headconfig情報を保持しヘッダを管理するクラス。
  19.  *
  20.  * コンストラクタに引数で渡されるheadconfig要素のDOMノードを参照し、
  21.  * htfフレームで出力するhtmlのheadタグ部分の情報を保持します。<br>
  22.  * 
  23.  * @access  public
  24.  * @author    Yamauchi Shogo <htf@as-prj.com>
  25.  ***/
  26.    /**
  27.     * content_type属性
  28.     * 
  29.     * htmlのheadタグ内に出力するmetaタグのcontent-type指定文字列を指定します。<br>
  30.     * 初期値は、htf環境設定情報に設定されている内部エンコーディング文字列を参照して決定されます。<br>
  31.     * UTF-8の場合には、'text/html; charset=utf-8'<br>
  32.     * EUC-JPの場合には、'text/html; charset=euc-jp'<br>
  33.     * が設定されています。<br>
  34.     * htmlタグ出力時の例として、たとえば、content_type属性に'text/html; charset=euc-jp'と設定すると、headタグ内に<br>
  35.     * <br><samp>
  36.     * <meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
  37.     * </samp><br>
  38.     * <br>
  39.     * とmetaタグが出力されます。
  40.     * 
  41.     * @access public
  42.     * @var string 
  43.     */
  44.     var $content_type;
  45.    /**
  46.     * content_style_type属性
  47.     * 
  48.     * htmlのheadタグ内に出力するmetaタグのcontent-style-type指定文字列を指定します。<br>
  49.     * 初期値は、'text/css'です。空文字を指定すると該当のmetaタグは出力されません。<br>
  50.     * htmlタグ出力時の例として、たとえば、content_style_type属性に'text/cssと設定すると、headタグ内に<br>
  51.     * <br><samp>
  52.     * <meta http-equiv="Content-Style-Type" content="text/css">
  53.     * </samp><br>
  54.     * <br>
  55.     * とmetaタグが出力されます。
  56.     * 
  57.     * @access public
  58.     * @var string 
  59.     */
  60.     var $content_style_type;
  61.    /**
  62.     * content_script_type属性
  63.     * 
  64.     * htmlのheadタグ内に出力するmetaタグのcontent-script-type指定文字列を指定します。<br>
  65.     * 初期値は、'text/javascript'です。空文字を指定すると該当のmetaタグは出力されません。<br>
  66.     * htmlタグ出力時の例として、たとえば、content_script_type属性に'text/vbscript'と設定すると、headタグ内に<br>
  67.     * <br><samp>
  68.     * <meta http-equiv="Content-Script-Type" content="text/vbscript">
  69.     * </samp><br>
  70.     * <br>
  71.     * とmetaタグが出力されます。
  72.     * 
  73.     * @access public
  74.     * @var string 
  75.     */
  76.     var $content_script_type;
  77.    /**
  78.     * title属性
  79.     * 
  80.     * htmlのheadタグ内に出力するtitleタグの文字列を指定します。<br>
  81.     * 初期値は、空文字です。空文字の場合には、titleタグは出力されません。<br>
  82.     * htmlタグ出力時の例として、たとえば、title属性に'出力タイトル'と設定すると、headタグ内に<br>
  83.     * <br><samp>
  84.     * <title>出力タイトル<title>
  85.     * </samp><br>
  86.     * <br>
  87.     * とtitleタグが出力されます。
  88.     * 
  89.     * @access public
  90.     * @var string 
  91.     */
  92.     var $title;
  93.    /**
  94.     * author属性
  95.     * 
  96.     * htmlのheadタグ内に出力するmetaタグのauthor指定文字列を指定します。<br>
  97.     * 初期値は、空文字です。空文字の場合には、authorを出力するmetaタグは出力されません。<br>
  98.     * htmlタグ出力時の例として、たとえば、author属性に'ASP Software'と設定すると、headタグ内に<br>
  99.     * <br><samp>
  100.     * <meta name="author" content="ASP Software">
  101.     * </samp><br>
  102.     * <br>
  103.     * とmetaタグが出力されます。
  104.     * 
  105.     * @access public
  106.     * @var string 
  107.     */
  108.     var $author;
  109.    /**
  110.     * copyright属性
  111.     * 
  112.     * htmlのheadタグ内に出力するmetaタグのcopyright指定文字列を指定します。<br>
  113.     * 初期値は、空文字です。空文字の場合には、copyrightを出力するmetaタグは出力されません。<br>
  114.     * htmlタグ出力時の例として、たとえば、copyright属性に'Copyright(C)1996-2006 ASP Software. All rights reserved.'と設定すると、headタグ内に<br>
  115.     * <br><samp>
  116.     * <meta name="copyright" content="Copyright(C)1996-2006 ASP Software. All rights reserved.">
  117.     * </samp><br>
  118.     * <br>
  119.     * とmetaタグが出力されます。
  120.     * 
  121.     * @access public
  122.     * @var string 
  123.     */
  124.     var $copyright;
  125.    /**
  126.     * description属性
  127.     * 
  128.     * htmlのheadタグ内に出力するmetaタグのdescription指定文字列を指定します。<br>
  129.     * 初期値は、空文字です。空文字の場合には、descriptionを出力するmetaタグは出力されません。<br>
  130.     * htmlタグ出力時の例として、たとえば、description属性に'ASPソフトウエアが役立つフリー&シェアウエアを提供します。'と設定すると、headタグ内に<br>
  131.     * <br><samp>
  132.     * <meta name="description" content="ASPソフトウエアが役立つフリー&シェアウエアを提供します。">
  133.     * </samp><br>
  134.     * <br>
  135.     * とmetaタグが出力されます。
  136.     * 
  137.     * @access public
  138.     * @var string 
  139.     */
  140.     var $description;
  141.    /**
  142.     * keywords属性
  143.     * 
  144.     * htmlのheadタグ内に出力するmetaタグのkeywords指定文字列を指定します。<br>
  145.     * 初期値は、空文字です。空文字の場合には、keywordsを出力するmetaタグは出力されません。<br>
  146.     * htmlタグ出力時の例として、たとえば、keywords属性に'メール配信,一括配信,AS-SMTP,AS-POP3,AS-SendMail'と設定すると、headタグ内に<br>
  147.     * <br><samp>
  148.     * <meta name="keywords" content="メール配信,一括配信,AS-SMTP,AS-POP3,AS-SendMail">
  149.     * </samp><br>
  150.     * <br>
  151.     * とmetaタグが出力されます。
  152.     * 
  153.     * @access public
  154.     * @var string 
  155.     */
  156.     var $keywords;
  157.    /**
  158.     * robots属性
  159.     * 
  160.     * htmlのheadタグ内に出力するmetaタグのrobots指定文字列を指定します。<br>
  161.     * 初期値は、空文字です。空文字の場合には、robotsを出力するmetaタグは出力されません。<br>
  162.     * htmlタグ出力時の例として、たとえば、robots属性に'INDEX,FOLLOW'と設定すると、headタグ内に<br>
  163.     * <br><samp>
  164.     * <meta name="robots" content="INDEX,FOLLOW">
  165.     * </samp><br>
  166.     * <br>
  167.     * とmetaタグが出力されます。
  168.     * 
  169.     * @access public
  170.     * @var string 
  171.     */
  172.     var $robots;
  173.    /**
  174.     * addheader属性
  175.     * 
  176.     * htfで指定可能な各属性情報以外にheadタグ内に出力を行いたい場合、addheader属性にPHPスクリプトファイル名を設定します。<br>
  177.     * headタグ出力時に、属性指定のファイルをサーチし、ファイル内容をincludeして出力します。初期値は、空文字です。<br>
  178.     * ファイルのサーチ順は、<br>
  179.     * (1)現在の実行ディレクトリ<br>
  180.     * (2)実行ディレクトリから上位(ドキュメントルート・またはルートディレクトリまで)<br>
  181.     * (3)PHPに設定されたインクルードディレクトリ<br>
  182.     * となります。<br>
  183.     * また、使用する用途としては、たとえば、<br>
  184.     * (1)htfで選択されるCSSファイル以外のCSSファイルを使用したい<br>
  185.     * (2)JavaScriptファイルを読み込みたい<br>
  186.     * (3)他のmetaタグを出力したい<br>
  187.     * 場合などが該当します。
  188.     * 
  189.     * @access public
  190.     * @var string 
  191.     */
  192.     var $addheader;
  193.    /**
  194.     * cssstr属性
  195.     * 
  196.     * CSS文字列をhead内に直接出力したい場合、cssstr属性に出力文字列を設定します。<br>
  197.     * この属性はhtf_frm_frameconfigクラスで使用され、htfフレームの他ページエリアでの指定書式は、このプロパティを介して出力されます。<br>
  198.     * 
  199.     * @access public
  200.     * @var string 
  201.     */
  202.     var $cssstr;
  203.    /**
  204.     * cssfilename属性
  205.     * 
  206.     * 読み込むCSSファイル名を指定します。<br>
  207.     * この属性は、htfが判別するCSSファイルを定義するために使用されます。<br>
  208.     * htmlタグ出力時の例として、たとえば、cssfilename属性に'/css/style.css'と設定されたとすると、headタグ内に<br>
  209.     * <br><samp>
  210.     * <link rel="stylesheet" href="/css/style.css" type="text/css">
  211.     * </samp><br>
  212.     * <br>
  213.     * とlinkタグが出力されます。
  214.     * 
  215.     * @access public
  216.     * @var string 
  217.     */
  218.     var $cssfilename;
  219.     
  220.    /**
  221.     * head属性
  222.     * 
  223.     * 出力するheadタグのタグオブジェクトです。
  224.     * 
  225.     * @access private
  226.     * @var htf_frm_headtag_element 
  227.     */
  228.     var $head;
  229.  
  230.     /**
  231.      * 引数のDOMノードから、htf_frm_headconfigクラスのインスタンスを生成します。
  232.      * 各属性値が存在しない場合には、初期値で生成します。
  233.      *
  234.      * @param     object    $objnode  headconfigのDOMノード
  235.      * @return    void 
  236.      ***/
  237.     function htf_frm_headconfig($objnode=NULL{
  238.         //プロパティ初期化
  239.         $this->initialize_property();
  240.  
  241.         //各プロパティ上書き
  242.         if (!is_null($objnode)) {
  243.             $this->override_property($objnode->attributes());
  244.         }
  245.         /*
  246.         print("headconfig_construct<br>\n");
  247.         print("content_type:".$this->content_type."<br>\n");
  248.         print("content_style_type:".$this->content_style_type."<br>\n");
  249.         */
  250.         return;
  251.     }
  252.  
  253.     
  254.     /**
  255.      * HTMLのheadタグを文字列として取得します。
  256.      *
  257.      * @access  public
  258.      * @return    string  headタグ文字列
  259.      ***/
  260.     function get_htmltag({
  261.     
  262.         //headタグ生成
  263.         $this->make_headtag();
  264.         //headタグ出力
  265.         return $this->head->get_htmltag();
  266.  
  267.     }
  268.  
  269.     /**
  270.      * HTMLのheadタグを出力します。
  271.      *
  272.      * @access  public
  273.      * @return    void 
  274.      ***/
  275.     function print_htmltag({
  276.     
  277.         //headタグ生成
  278.         $this->make_headtag();
  279.         //headタグ出力
  280.         $this->head->print_htmltag();
  281.         
  282.         return;
  283.     }
  284.  
  285.     /**
  286.      * headタグオブジェクトを生成します。
  287.      *
  288.      * @access  private
  289.      * @return    void 
  290.      ***/
  291.     function make_headtag({
  292.         //mm_swap用jsファイルパス取得(インクルードパスから)
  293.         $strjspath htf_get_fileincludepath(HTF_MM_SWAP_JS);        
  294.         //addheader指定ファイルパス取得
  295.         $strfpath$this->get_addheaderpath();
  296.         
  297.         //headタグオブジェクト作成
  298.         $this->head new htf_frm_headtag_element($strfpath);
  299.     
  300.         //metaタグ・Content-Type
  301.         $this->head->add_meta_content_type($this->content_type);
  302.         //metaタグ・Content-Styel-Type
  303.         $this->head->add_meta_content_style_type($this->content_style_type);
  304.         //metaタグ・Content-Script-Type
  305.         $this->head->add_meta_content_script_type($this->content_script_type);
  306.         //metaタグ・author
  307.         $this->head->add_meta_author($this->author);
  308.         //metaタグ・copyright
  309.         $this->head->add_meta_copyright($this->copyright);
  310.         //metaタグ・description
  311.         $this->head->add_meta_description($this->description);
  312.         //metaタグ・keywords
  313.         $this->head->add_meta_keywords($this->keywords);
  314.         //metaタグ・robots
  315.         $this->head->add_meta_robots($this->robots);
  316.         //metaタグ・Generator
  317.         $this->head->add_meta_generator();
  318.         //titleタグ
  319.         $this->head->add_title($this->title);
  320.         //styleタグ(引数のCSS文字列から生成)
  321.         $this->head->add_style($this->cssstr$this->content_style_type);
  322.         //linkタグ(引数のCSSファイル名から生成)
  323.         $this->head->add_link($this->cssfilename);
  324.         //scriptタグ(イメージスワップ用jsファイルがインクルードにあるはず)
  325.         $this->head->add_script($strjspath'text/javascript''JavaScript1.1');
  326.     
  327.         return;
  328.     }
  329.  
  330.     /**
  331.      * 各種プロパティを初期化します。
  332.      *
  333.      * @access  private
  334.      * @return    void 
  335.      ***/
  336.     function initialize_property({
  337.         //内部エンコードからContent-Type設定文字列を判断
  338.         if (!strcasecmp(HTF_PHP_INTERNAL_ENCODING'euc-jp')) {
  339.             $this->content_type = HTF_CONTENT_TYPE_HTML_EUCJP;
  340.         else {
  341.             $this->content_type = HTF_CONTENT_TYPE_HTML_UTF8;
  342.         }
  343.         $this->title = "";
  344.         $this->author = "";
  345.         $this->copyright = "";
  346.         $this->description = "";
  347.         $this->keywords = "";
  348.         $this->robots = "";
  349.         $this->addheader = "";
  350.         $this->cssstr = "";
  351.         $this->cssfilename = "";
  352.  
  353.         return;
  354.     }
  355.  
  356.     /**
  357.      * 各種プロパティを上書きします。
  358.      *
  359.      * @access  private
  360.      * @return    void 
  361.      ***/
  362.     function override_property($arrattr{
  363.         for ($i=$i<count($arrattr$i++{
  364.             if (htf_comp_xmlattrname(HTF_ATTR_HEADCONFIG_CONTENT_TYPE$arrattr[$i]->name)){
  365.                 //content_type属性
  366.                 $this->content_type = htf_get_encoded_attr($arrattr[$i]->value);
  367.             else if (htf_comp_xmlattrname(HTF_ATTR_HEADCONFIG_CONTENT_STYLE_TYPE$arrattr[$i]->name)){
  368.                 //content_style_type属性
  369.                 $this->content_style_type = htf_get_encoded_attr($arrattr[$i]->value);
  370.             else if (htf_comp_xmlattrname(HTF_ATTR_HEADCONFIG_CONTENT_SCRIPT_TYPE$arrattr[$i]->name)){
  371.                 //content_script_type属性
  372.                 $this->content_script_type = htf_get_encoded_attr($arrattr[$i]->value);
  373.             else if (htf_comp_xmlattrname(HTF_ATTR_HEADCONFIG_TITLE$arrattr[$i]->name)) {
  374.                 //title属性
  375.                 $this->title = htf_get_encoded_attr($arrattr[$i]->value);
  376.             else if (htf_comp_xmlattrname(HTF_ATTR_HEADCONFIG_AUTHOR$arrattr[$i]->name)){
  377.                 //author属性
  378.                 $this->author = htf_get_encoded_attr($arrattr[$i]->value);
  379.             else if (htf_comp_xmlattrname(HTF_ATTR_HEADCONFIG_COPYRIGHT$arrattr[$i]->name)){
  380.                 //copyright属性
  381.                 $this->copyright = htf_get_encoded_attr($arrattr[$i]->value);
  382.             else if (htf_comp_xmlattrname(HTF_ATTR_HEADCONFIG_DESCRIPTION$arrattr[$i]->name)){
  383.                 //description属性
  384.                 $this->description = htf_get_encoded_attr($arrattr[$i]->value);
  385.             else if (htf_comp_xmlattrname(HTF_ATTR_HEADCONFIG_KEYWORDS$arrattr[$i]->name)){
  386.                 //keywords属性
  387.                 $this->keywords = htf_get_encoded_attr($arrattr[$i]->value);
  388.             else if (htf_comp_xmlattrname(HTF_ATTR_HEADCONFIG_ROBOTS$arrattr[$i]->name)){
  389.                 //robots属性
  390.                 $this->robots = htf_get_encoded_attr($arrattr[$i]->value);
  391.             else if (htf_comp_xmlattrname(HTF_ATTR_HEADCONFIG_ADDHEADER$arrattr[$i]->name)){
  392.                 //addheader属性
  393.                 $this->addheader = htf_get_encoded_attr($arrattr[$i]->value);
  394.             }
  395.         }
  396.         
  397.         return;
  398.     }
  399.  
  400.     /**
  401.      * addheaderの存在パスをサーチして取得します。
  402.      *
  403.      * @access  private
  404.      * @return    string addheaderの存在パス
  405.      ***/
  406.     function get_addheaderpath({
  407.         $retpath="";
  408.         if (htf_is_existsval($this->addheader)) {
  409.             //まずは上位パスをサーチ
  410.             $retpath htf_get_filepath_relative(realpath('.')$this->addheader);
  411.             if (!htf_is_existsval($retpath)) {
  412.                 //見つからなかったらインクルードパスをサーチ
  413.                 $retpath htf_get_fileincludepath($this->addheader);
  414.             }
  415.         }
  416.         return $retpath;
  417.     }
  418. }
  419.  
  420. ?>

Documentation generated on Tue, 19 Sep 2006 06:20:55 +0900 by phpDocumentor 1.3.0