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

Source for file htf_frm_bodyconfig.phl

Documentation is available at htf_frm_bodyconfig.phl

  1. <?php
  2. /**
  3.  * htf_frm_bodyconfigクラス
  4.  *
  5.  * bodyconfigの情報を管理するクラス
  6.  *
  7.  * @package HtmlTemplateFramework
  8.  * @subpackage frame
  9.  * @access  public
  10.  * @author    Yamauchi Shogo <htf@as-prj.com>
  11.  * @version $Id: htf_frm_bodyconfig.phl ,v 1.0 $
  12.  ***/
  13. require_once("htf_com_initialize.inc");        //共通初期処理
  14. require_once("htf_tag_element.phl");            //タグオブジェクト
  15. require_once("htf_frm_pageconfig.phl");        //pageconfig
  16.  
  17. /**
  18.  * bodyconfigの情報を管理するクラス
  19.  *
  20.  * コンストラクタに引数で渡されるbodyconfig要素のDOMノードを参照し、
  21.  * bodyconfig要素と、配下の子要素(pageconfig)の情報を保持します。<br>
  22.  * <br>
  23.  * pageconfig要素が存在しない場合には、初期値でpageconfig要素の保有インスタンスを生成します。<br>
  24.  * 
  25.  * @access  public
  26.  * @author    Yamauchi Shogo <htf@as-prj.com>
  27.  ***/
  28.    /**
  29.     * bgcolor属性
  30.     * 
  31.     * HTMLタグのbody部の背景色を指定する属性です。初期値は空文字で、その場合には背景色は指定されません。
  32.     * コンストラクタの引数ノードにbgcolor属性の指定がある場合には、その値がそのまま設定されます。
  33.     * この値はCSSのbackground-colorプロパティの値として出力されます。CSSの記述方法に沿って指定してください。
  34.     * 
  35.     * @access public
  36.     * @var string 
  37.     */
  38.     var $bgcolor;
  39.    /**
  40.     * bgimage属性
  41.     * 
  42.     * HTMLタグのbody部の背景イメージURLを指定する属性です。初期値は空文字で、その場合には背景イメージは指定されません。
  43.     * コンストラクタの引数ノードにbgimage属性の指定がある場合には、その値がそのまま設定されます。
  44.     * この値はCSSのbackground-imageプロパティの値として出力されます。
  45.     * ただし、CSS記述の際に必要な url() の記述は必要ありません。
  46.     * また、DOMノードからの生成時、このプロパティ内容にHTFフレームの置換タグがあった場合には、置換されて設定されます。
  47.     * 
  48.     * @access public
  49.     * @var string 
  50.     */
  51.     var $bgimage;
  52.    /**
  53.     * margin属性
  54.     * 
  55.     * HTMLタグのbody部のマージンを指定する属性です。初期値は空文字で、その場合にはマージンは指定されません。
  56.     * コンストラクタの引数ノードにmargin属性の指定がある場合には、その値がそのまま設定されます。
  57.     * この値はCSSのmarginプロパティの値として出力されます。
  58.     * 
  59.     * @access public
  60.     * @var string 
  61.     */
  62.     var $margin;
  63.    /**
  64.     * pageconfig
  65.     * 
  66.     * bodyconfig要素の子要素のpageconfig要素の内容を保持します。
  67.     * 
  68.     * @access public
  69.     * @var htf_frm_pageconfig 
  70.     */
  71.     var $pageconfig;
  72.     
  73.     /**
  74.      * 引数のDOMノードから、htf_frm_bodyconfigクラスのインスタンスを生成します。
  75.      * 各属性値や子要素が存在しない場合には、それぞれを初期値で生成します。
  76.      *
  77.      * @param     object    $objnode  bodyconfigのDOMノード
  78.      * @return    void 
  79.      ***/
  80.     function htf_frm_bodyconfig($objnode=NULL{
  81.         //属性配列・ノード配列取得
  82.         if (!is_null($objnode)) {
  83.             $arrattr $objnode->attributes();
  84.             $arrnodes $objnode->child_nodes();
  85.         else {
  86.             $arrattr array();
  87.             $arrnodes array();
  88.         }
  89.         //プロパティ初期化
  90.         $this->initialize_property();
  91.         //各プロパティ上書き
  92.         $this->override_property($arrattr);
  93.         //bodyconfig配下の子ノード取得
  94.         $this->get_childnodes($arrnodes);
  95.         //pageconfigが生成されない場合は初期値で生成
  96.         $this->initialize_nullnodes();
  97.     }
  98.  
  99.     /**
  100.      * ボディと配下の各エリアに適用するCSS書式を取得します。
  101.      *
  102.      * @access  public
  103.      * @return string    CSS書式文字列
  104.      ***/
  105.     function get_cssformat({
  106.         //CSS書式文字列取得(bodyconfig)
  107.         $strret $this->get_cssformat_bodyconfig();
  108.         //CSS書式文字列取得(pageconfig)
  109.         $strret .= $this->get_cssformat_childnodes();
  110.         
  111.         return $strret;
  112.     }
  113.     
  114.     /**
  115.      * ボディのHTMLタグを文字列として取得します。
  116.      *
  117.      * ただし、配下のページエリアのタイプがinclude指定の場合、その部分はincludeを記述したphpスクリプト文字列となります。
  118.      * 
  119.      * @access  public
  120.      * @return    string  ボディ部HTMLタグ文字列
  121.      ***/
  122.     function get_htmltag({
  123.  
  124.         //開始コメント・body開始タグ&出力
  125.         $body new htf_tag_element("body"TRUEHTF_ITEMCASE_ELEMENT);
  126.         $strret htf_get_comment_areastart('body');
  127.         $strret.= htf_add_cr($body->get_starttag());
  128.         
  129.         //pageconfigのタグ出力
  130.         $strret.= $this->pageconfig->get_htmltag();
  131.  
  132.         //終了コメント・body終了タグ作成&出力
  133.         $strret.= htf_add_cr($body->get_endtag());
  134.         $strret.= htf_get_comment_areaend('body');
  135.  
  136.         return $strret;
  137.     }
  138.  
  139.     /**
  140.      * ボディのHTMLタグを出力します。
  141.      *
  142.      * @access  public
  143.      * @return    void 
  144.      ***/
  145.     function print_htmltag({
  146.  
  147.         //開始コメント・body開始タグ&出力
  148.         $body new htf_tag_element("body"TRUEHTF_ITEMCASE_ELEMENT);
  149.         $strret htf_get_comment_areastart('body');
  150.         $strret.= htf_add_cr($body->get_starttag());
  151.         print($strret);
  152.         
  153.         //pageconfigのタグ出力
  154.         $this->pageconfig->print_htmltag();
  155.  
  156.         //終了コメント・body終了タグ作成&出力
  157.         $strret htf_add_cr($body->get_endtag());
  158.         $strret.= htf_get_comment_areaend('body');
  159.         print($strret);
  160.  
  161.         return;
  162.     }
  163.  
  164.     /**
  165.      * 各種プロパティを初期化します。
  166.      *
  167.      * @access  private
  168.      * @return    void 
  169.      ***/
  170.     function initialize_property({
  171.  
  172.         //プロパティ初期化
  173.         $this->bgcolor = "";
  174.         $this->bgimage = "";
  175.         $this->margin = "";
  176.         $this->pageconfig = NULL;
  177.  
  178.         return;
  179.     }
  180.  
  181.     /**
  182.      * 各種プロパティを引数の属性配列値で上書きします。
  183.      *
  184.      * @param     array  $arrattr  属性情報(htf_tag_attribute)配列
  185.      * @access  private
  186.      * @return    void 
  187.      ***/
  188.     function override_property($arrattr{
  189.         for ($i=$i<count($arrattr$i++{
  190.             if (htf_comp_xmlattrname(HTF_ATTR_BODYCONFIG_BGCOLOR$arrattr[$i]->name)){
  191.                 //bgcolor属性
  192.                 $this->bgcolor = htf_get_encoded_attr($arrattr[$i]->value);
  193.             else if (htf_comp_xmlattrname(HTF_ATTR_BODYCONFIG_BGIMAGE$arrattr[$i]->name)){
  194.                 //bgimage属性
  195.                 $this->bgimage = htf_replace_definetag(htf_get_encoded_attr($arrattr[$i]->value));
  196.             else if (htf_comp_xmlattrname(HTF_ATTR_BODYCONFIG_MARGIN$arrattr[$i]->name)){
  197.                 //margin属性
  198.                 $this->margin = htf_get_encoded_attr($arrattr[$i]->value);
  199.             }
  200.         }
  201.         return;
  202.     }
  203.  
  204.     /**
  205.      * 子ノード配列から、配下のオブジェクト(htf_frm_pageconfig)を生成します。
  206.      *
  207.      * @param     array  $arrcnode  子ノード配列配列
  208.      * @access  private
  209.      * @return    void 
  210.      ***/
  211.     function get_childnodes($arrcnode{
  212.         for ($i=0$i<count($arrcnode$i++{
  213.             if ($arrcnode[$i]->node_type(!= XML_TEXT_NODE{
  214.                 if (htf_comp_xmlelementname(HTF_CONF_XML_PAGECONFIG$arrcnode[$i]->node_name())) {
  215.                     //pageconfig
  216.                     $this->pageconfig = new htf_frm_pageconfig($arrcnode[$i]);
  217.                 }
  218.             }
  219.         }    
  220.         return;
  221.     }
  222.  
  223.     /**
  224.      * 存在しない要素について、子要素を初期値で生成する。
  225.      *
  226.      * @access     private
  227.      * @return    void 
  228.      ***/
  229.     function initialize_nullnodes({
  230.         if (is_null($this->pageconfig)) {
  231.             $this->pageconfig = new htf_frm_pageconfig();
  232.         }
  233.         return;
  234.     }
  235.  
  236.     /**
  237.      * BODY部に適用するCSS書式文字列を取得します。
  238.      *
  239.      * @access     private
  240.      * @return    string    BODY部のCSS書式文字列
  241.      ***/
  242.     function get_cssformat_bodyconfig({
  243.         $cssstyle new htf_css_style();
  244.         array_push($cssstyle->arr_element_name'body');
  245.  
  246.         //bgcolor
  247.         if (htf_is_existsval($this->bgcolor)) {
  248.             $cssstyle->add_property('background-color'$this->bgcolor);
  249.         }
  250.         //bgimage
  251.         if (htf_is_existsval($this->bgimage)) {
  252.             $cssstyle->add_property('background-image''url('.$this->bgimage.')');
  253.         }
  254.         //margin
  255.         if (htf_is_existsval($this->margin)) {
  256.             $cssstyle->add_property('margin'$this->margin);
  257.         }
  258.         //CSS書式文字列取得
  259.         $strret htf_add_cr($cssstyle->get_css_style(HTF_CSS_STYLE_USE_ELEMENT_FST));
  260.         return $strret;
  261.     }
  262.  
  263.     /**
  264.      * 子ノードに適用するCSS書式文字列を取得します。
  265.      *
  266.      * @access     private
  267.      * @return    string    子ノードのCSS書式文字列
  268.      ***/
  269.     function get_cssformat_childnodes({
  270.         $strret "";
  271.         //子ノードのCSS取得
  272.         //pageheader
  273.         if (!is_null($this->pageconfig)) {
  274.             $strret .= htf_add_cr($this->pageconfig->get_cssformat());
  275.         }
  276.         return $strret;
  277.     }
  278. }
  279.  
  280. ?>

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