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

Source for file htf_frm_pagearea.phl

Documentation is available at htf_frm_pagearea.phl

  1. <?php
  2. /**
  3.  * htf_frm_pageareaクラス
  4.  *
  5.  * 作成する各ページエリアの情報を保持するスーパークラス
  6.  *
  7.  * @package HtmlTemplateFramework
  8.  * @subpackage frame
  9.  * @access  public
  10.  * @author    Yamauchi Shogo <htf@as-prj.com>
  11.  * @version $Id: htf_frm_pagearea.phl ,v 1.0 $
  12.  ***/
  13. require_once("htf_com_initialize.inc");    //共通初期処理
  14. require_once("htf_css_style.phl");            //CSSスタイル情報クラス
  15. require_once("htf_tag_table.phl");            //tableタグ情報
  16. require_once("htf_tag_tr.phl");            //trタグ情報
  17. require_once("htf_tag_td.phl");            //tdタグ情報
  18.  
  19. /**
  20.  * 作成する各ページエリアの情報を保持するスーパークラス
  21.  *
  22.  * ページエリア内の各エリア(ページヘッダ・ページフッタ・インデックスバー・レフトエリア・ライトエリア・コンテンツエリア)
  23.  * の情報を管理する各クラス(htf_frm_pageheader/htf_frm_pagefooter/htf_frm_indexbar/htf_frm_leftarea/htf_frm_rightarea/htf_frm_contentarea)のスーパークラス。
  24.  * 各クラスで使用する共通の属性情報を定義します。<br>
  25.  * 
  26.  * @access  public
  27.  * @author    Yamauchi Shogo <htf@as-prj.com>
  28.  ***/
  29.    /**
  30.     * type属性
  31.     * 
  32.     * 各エリアの出力方法を指定する属性です。有効な値は以下です。<br>
  33.     * 'text'→指定したテキストを出力<br>
  34.     * 'include'→指定したファイルをincludeして出力
  35.     * 
  36.     * @access public
  37.     * @var string 
  38.     */
  39.     var $type;
  40.    /**
  41.     * text属性
  42.     * 
  43.     * type属性が'text'(指定したテキストを出力)の場合に出力するテキストです。
  44.     * 
  45.     * @access public
  46.     * @var string 
  47.     */
  48.     var $text;
  49.    /**
  50.     * includefile属性
  51.     * 
  52.     * type属性が'include'(指定したファイルをincludeして出力)の場合に出力するファイル名です。
  53.     * ファイル名は以下の順番にサーチし、includeします。<br>
  54.     * (1)現在の実行ディレクトリ<br>
  55.     * (2)実行ディレクトリから上位(ドキュメントルート・またはルートディレクトリまで)<br>
  56.     * (3)PHPに設定されたインクルードディレクトリ
  57.     * 
  58.     * @access public
  59.     * @var string 
  60.     */
  61.     var $includefile;    //includeファイル名
  62.       /**
  63.     * funcname属性
  64.     * 
  65.     * 未使用
  66.     * 
  67.     * @access public
  68.     * @var string 
  69.     */
  70.     var $funcname;        //タグ出力部品関数/メソッド名
  71.       /**
  72.     * param属性
  73.     * 
  74.     * 未使用
  75.     * 
  76.     * @access public
  77.     * @var string 
  78.     */
  79.     var $param;            //タグ出力部品関数の引数(カンマ区切り)
  80.       /**
  81.     * align属性
  82.     * 
  83.     * tdタグでブロッキングされた各エリア内での横位置を指定します。
  84.     * この値は、そのままブロッキングしたtdタグのalign属性となります。
  85.     * 'left','center','right'等を指定してください。
  86.     * 
  87.     * @access public
  88.     * @var string 
  89.     */
  90.     var $align;            //横配置
  91.       /**
  92.     * valign属性
  93.     * 
  94.     * tdタグでブロッキングされた各エリア内での縦位置を指定します。
  95.     * この値は、そのままブロッキングしたtdタグのvalign属性となります。
  96.     * 
  97.     * @access public
  98.     * @var string 
  99.     */
  100.     var $valign;        //縦配置
  101.       /**
  102.     * width属性
  103.     * 
  104.     * 各エリアの幅を指定します。
  105.     * この値はCSSのwidthプロパティの値としてそのまま出力されます。
  106.     * CSSの記述方法に沿って指定してください。
  107.     * 
  108.     * @access public
  109.     * @var string 
  110.     */
  111.     var $width;            //幅
  112.       /**
  113.     * height属性
  114.     * 
  115.     * 各エリアの高さを指定します。
  116.     * この値はCSSのhtightプロパティの値としてそのまま出力されます。
  117.     * CSSの記述方法に沿って指定してください。
  118.     * 
  119.     * @access public
  120.     * @var string 
  121.     */
  122.     var $height;        //高さ
  123.       /**
  124.     * border属性
  125.     * 
  126.     * 各エリアの枠線の太さを指定します。
  127.     * この値はCSSのborder-widthプロパティの値としてそのまま出力されます。
  128.     * CSSの記述方法に沿って指定してください。
  129.     * 
  130.     * @access public
  131.     * @var string 
  132.     */
  133.     var $border;        //枠線の太さ
  134.       /**
  135.     * bordercolor属性
  136.     * 
  137.     * 各エリアの枠線の色を指定します。
  138.     * この値はCSSのborder-colorプロパティの値としてそのまま出力されます。
  139.     * CSSの記述方法に沿って指定してください。
  140.     * 
  141.     * @access public
  142.     * @var string 
  143.     */
  144.     var $bordercolor;    //枠線の色
  145.       /**
  146.     * bgcolor属性
  147.     * 
  148.     * 各エリアの背景の色を指定します。
  149.     * この値はCSSのbackground-colorプロパティの値としてそのまま出力されます。
  150.     * CSSの記述方法に沿って指定してください。
  151.     * 
  152.     * @access public
  153.     * @var string 
  154.     */
  155.     var $bgcolor;        //背景色
  156.       /**
  157.     * bgimage属性
  158.     * 
  159.     * 各エリアの背景イメージを指定します。
  160.     * この値はCSSのbackground-colorプロパティの値として出力されます。
  161.     * ただし、CSS記述の際に必要な url() の記述は必要ありません。
  162.     * また、DOMノードからの生成時、このプロパティ内容にHTFフレームの置換タグがあった場合には、置換されて設定されます。
  163.     * 
  164.     * @access public
  165.     * @var string 
  166.     */
  167.     var $bgimage;        //背景イメージ
  168.       /**
  169.     * fontcolor属性
  170.     * 
  171.     * 各エリアの文字色を指定します。
  172.     * この値はCSSのcolorプロパティの値として出力されます。
  173.     * CSSの記述方法に沿って指定してください。
  174.     * 
  175.     * @access public
  176.     * @var string 
  177.     */
  178.     var $fontcolor;        //フォントの色
  179.       /**
  180.     * linkcolor属性
  181.     * 
  182.     * 各エリアのリンクの文字色を指定します。
  183.     * この値はCSSのcolorプロパティの値として出力されます。
  184.     * CSSの記述方法に沿って指定してください。
  185.     * 
  186.     * @access public
  187.     * @var string 
  188.     */
  189.     var $linkcolor;        //リンクのフォント色
  190.       /**
  191.     * visitedcolor属性
  192.     * 
  193.     * 各エリアの既に見たリンクの文字色を指定します。
  194.     * この値はCSSのcolorプロパティの値として出力されます。
  195.     * CSSの記述方法に沿って指定してください。
  196.     * 
  197.     * @access public
  198.     * @var string 
  199.     */
  200.     var $visitedcolor;    //リンクの訪問済フォント色
  201.       /**
  202.     * activecolor属性
  203.     * 
  204.     * 各エリアのクリック時リンクの文字色を指定します。
  205.     * この値はCSSのcolorプロパティの値として出力されます。
  206.     * CSSの記述方法に沿って指定してください。
  207.     * 
  208.     * @access public
  209.     * @var string 
  210.     */
  211.     var $activecolor;    //リンクのクリック時フォント色
  212.       /**
  213.     * hovercolor属性
  214.     * 
  215.     * 各エリアのカーソルが乗った時のリンク文字色を指定します。
  216.     * この値はCSSのcolorプロパティの値として出力されます。
  217.     * CSSの記述方法に沿って指定してください。
  218.     * 
  219.     * @access public
  220.     * @var string 
  221.     */
  222.     var $hovercolor;    //リンクのマウスオーバ時フォント色
  223.       /**
  224.     * ページエリア名
  225.     * 
  226.     * 各エリアのページエリア名です。継承先クラスで設定されます。
  227.     * 
  228.     * @access public
  229.     * @var string 
  230.     */
  231.     var $strpaname;        //ページエリア名
  232.       /**
  233.     * テーブル適用CSSクラス名
  234.     * 
  235.     * 各エリアのテーブルに適用されるCSSクラス名です。継承先クラスで設定されます。
  236.     * 
  237.     * @access public
  238.     * @var string 
  239.     */
  240.     var $classname;        //tableに適用するCSSクラス名
  241.       /**
  242.     * セル適用CSSクラス名
  243.     * 
  244.     * 各エリアのテーブルのセルに適用されるCSSクラス名です。継承先クラスで設定されます。
  245.     * 
  246.     * @access public
  247.     * @var string 
  248.     */
  249.     var $tdclassname;    //tdに適用するCSSクラス名
  250.         
  251.             
  252.     /**
  253.      * 引数のDOMノードから、ページエリアクラスのインスタンスを生成します。
  254.      * 各属性値が存在しない場合には、それぞれを初期値で生成します。
  255.      *
  256.      * @param     object    $objnode  DOMノード
  257.      * @return    void 
  258.      ***/
  259.     function htf_frm_pagearea($objnode=NULL{
  260.         //プロパティ初期化
  261.         $this->initialize_property();
  262.         
  263.         //引数ノードがNULLの場合はそのまま終了
  264.         if (is_null($objnode)) {
  265.             return;
  266.         }
  267.         //各プロパティ上書き
  268.         $this->override_property($objnode->attributes());
  269.     }
  270.     
  271.     /**
  272.      * ページエリアのtableタグに適用するCSS書式記述を取得します。
  273.      *
  274.      * @access     public
  275.      * @return    string CSS書式記述
  276.      ***/
  277.     function get_cssformat({
  278.         
  279.         //引数チェック
  280.         if (!htf_is_existsval($this->classname)) {
  281.             return "";
  282.         }
  283.         
  284.         //指定クラスCSS生成オブジェクト作成
  285.         $objcssstyle new htf_css_style();
  286.         $objcssstyle->class_name $this->classname;
  287.         
  288.         //border
  289.         if (htf_is_existsval($this->border)) {
  290.             $objcssstyle->add_property('border-width',$this->border);
  291.             $objcssstyle->add_property('border-style','solid');
  292.         }
  293.         //bordercolor
  294.         if (htf_is_existsval($this->bordercolor)) {
  295.             $objcssstyle->add_property('border-color',$this->bordercolor);
  296.         }
  297.         //font
  298.         if (htf_is_existsval($this->fontcolor)) {
  299.             $objcssstyle->add_property('color',$this->fontcolor);
  300.         }
  301.         
  302.         //CSS書式文字列取得
  303.         $strret htf_add_cr($objcssstyle->get_css_style(HTF_CSS_STYLE_USE_CLASS));
  304.  
  305.         //指定クラス・A要素のCSS作成
  306.         //link
  307.         if (htf_is_existsval($this->linkcolor)) {
  308.             $objcssstyleAlink new htf_css_style();
  309.             $objcssstyleAlink->class_name $this->classname;
  310.             $objcssstyleAlink->anchor_name 'A:link';
  311.             $objcssstyleAlink->add_property('color',$this->linkcolor);
  312.             $strret .= htf_add_cr($objcssstyleAlink->get_css_style(HTF_CSS_STYLE_USE_CLASS +HTF_CSS_STYLE_USE_ANCNAME));
  313.         }
  314.  
  315.         //visited
  316.         if (htf_is_existsval($this->visitedcolor)) {
  317.             $objcssstyleAvisited new htf_css_style();
  318.             $objcssstyleAvisited->class_name $this->classname;
  319.             $objcssstyleAvisited->anchor_name 'A:visited';
  320.             $objcssstyleAvisited->add_property('color',$this->visitedcolor);
  321.             $strret .= htf_add_cr($objcssstyleAvisited->get_css_style(HTF_CSS_STYLE_USE_CLASS +HTF_CSS_STYLE_USE_ANCNAME));
  322.         }
  323.  
  324.         //active
  325.         if (htf_is_existsval($this->activecolor)) {
  326.             $objcssstyleAactive new htf_css_style();
  327.             $objcssstyleAactive->class_name $this->classname;
  328.             $objcssstyleAactive->anchor_name 'A:active';
  329.             $objcssstyleAactive->add_property('color',$this->activecolor);
  330.             $strret .= htf_add_cr($objcssstyleAactive->get_css_style(HTF_CSS_STYLE_USE_CLASS +HTF_CSS_STYLE_USE_ANCNAME));
  331.         }
  332.  
  333.         //hovercolor
  334.         if (htf_is_existsval($this->hovercolor)) {
  335.             $objcssstyleAhover new htf_css_style();
  336.             $objcssstyleAhover->class_name $this->classname;
  337.             $objcssstyleAhover->anchor_name 'A:hover';
  338.             $objcssstyleAhover->add_property('color',$this->hovercolor);
  339.             $strret .= htf_add_cr($objcssstyleAhover->get_css_style(HTF_CSS_STYLE_USE_CLASS +HTF_CSS_STYLE_USE_ANCNAME));
  340.         }
  341.  
  342.         return $strret;
  343.  
  344.     }
  345.     
  346.     /**
  347.      * ページエリアのtdタグに適用するCSS書式記述記述を取得します。
  348.      *
  349.      * @access     public
  350.      * @return    string CSS書式記述
  351.      ***/
  352.     function get_td_cssformat({
  353.         
  354.         //引数チェック
  355.         if (!htf_is_existsval($this->tdclassname)) {
  356.             return "";
  357.         }
  358.         
  359.         //指定クラスCSS生成オブジェクト作成
  360.         $objcssstyle new htf_css_style();
  361.         $objcssstyle->class_name $this->tdclassname;
  362.  
  363.         //bgcolor
  364.         if (htf_is_existsval($this->bgcolor)) {
  365.             $objcssstyle->add_property('background-color',$this->bgcolor);
  366.         }
  367.         //bgimage
  368.         if (htf_is_existsval($this->bgimage)) {
  369.             $objcssstyle->add_property('background-image','url('.$this->bgimage.')');
  370.         }
  371.         //height
  372.         if (htf_is_existsval($this->height)) {
  373.             $objcssstyle->add_property('height',$this->height);
  374.         }
  375.         //CSS書式文字列取得
  376.         $strret htf_add_cr($objcssstyle->get_css_style(HTF_CSS_STYLE_USE_CLASS));
  377.  
  378.         return $strret;
  379.     
  380.     }
  381.  
  382.     /**
  383.      * ページエリアのHTMLタグを文字列として取得します。
  384.      * 
  385.      * ただし、ページエリアのタイプ指定がinclude指定の場合、その部分はincludeを記述したphpスクリプト文字列となります。
  386.      *
  387.      * @access     public
  388.      * @return    string 
  389.      ***/
  390.     function get_htmltag({
  391.         $strret "";
  392.         if (!strcmp($this->type,HTF_TYPE_INCLUDE)) {
  393.             //インクルードファイル指定
  394.             $strret $this->get_htmltag_include();
  395.         else if (!strcmp($this->type,HTF_TYPE_TEXT)) {
  396.             //テキスト指定
  397.             $strret $this->get_htmltag_text();
  398.         }
  399.         
  400.         return $strret;
  401.         
  402.     }
  403.  
  404.     /**
  405.      * ページエリアのHTMLタグを出力します。
  406.      *
  407.      * @param     string $strclass   エリアのtableタグに適用するcssクラス名
  408.      * @param     string $strtdclass エリアのtdタグに適用するcssクラス名
  409.      * @access     public
  410.      * @return    void 
  411.      ***/
  412.     function print_htmltag({
  413.         $strret "";
  414.         if (!strcmp($this->type,HTF_TYPE_INCLUDE)) {
  415.             //インクルードファイル指定
  416.             $this->print_htmltag_include();
  417.         else if (!strcmp($this->type,HTF_TYPE_TEXT)) {
  418.             //テキスト指定
  419.             $this->print_htmltag_text();
  420.         }
  421.         
  422.         return;
  423.         
  424.     }
  425.  
  426.     /**
  427.      * インクルードファイル指定の場合のHTMLタグを出力します。
  428.      *
  429.      * @param     string $strclass   エリアのtableタグに適用するcssクラス名
  430.      * @param     string $strtdclass エリアのtdタグに適用するcssクラス名
  431.      * @access     private
  432.      * @return    void 
  433.      ***/
  434.     function print_htmltag_include({
  435.         //includeファイルの存在パス取得
  436.         $strfpath $this->get_includepath();
  437.  
  438.         //テーブルオブジェクト取得
  439.         $objtagtable $this->get_tag_table();
  440.         
  441.         //開始コメント取得
  442.         $retstr htf_get_comment_areastart($this->strpaname);
  443.         
  444.         //各開始タグ取得&出力
  445.         $retstr.= htf_add_cr($objtagtable->get_starttag());        //tableタグ
  446.         $retstr.= htf_add_cr($objtagtable->contents[$objtagtable->tb_ix]->contents[0]->get_starttag());        //trタグ
  447.         $retstr.= htf_add_cr($objtagtable->contents[$objtagtable->tb_ix]->contents[0]->contents[0]->get_starttag());    //tdタグ
  448.         print($retstr);
  449.         
  450.         //ファイルインクルード
  451.         if (htf_is_existsval($strfpath)) {
  452.             include($strfpath);
  453.         }
  454.         
  455.         //終了タグ作成&出力
  456.         $retstr htf_add_cr($objtagtable->contents[$objtagtable->tb_ix]->contents[0]->contents[0]->get_endtag());        //tdタグ
  457.         $retstr.= htf_add_cr($objtagtable->contents[$objtagtable->tb_ix]->contents[0]->get_endtag());        //trタグ
  458.         $retstr.= htf_add_cr($objtagtable->get_endtag());        //tableタグ
  459.         
  460.         //終了コメント取得&出力
  461.         $retstr .= htf_get_comment_areaend($this->strpaname);
  462.         print($retstr);
  463.         
  464.         return;
  465.         
  466.     }
  467.  
  468.     /**
  469.      * インクルードファイル指定の場合のHTMLタグを取得します。
  470.      *
  471.      * @param     string $strclass   エリアのtableタグに適用するcssクラス名
  472.      * @param     string $strtdclass エリアのtdタグに適用するcssクラス名
  473.      * @access     private
  474.      * @return    string 
  475.      ***/
  476.     function get_htmltag_include({
  477.         //includeファイルの存在パス取得
  478.         $strfpath $this->get_includepath();
  479.  
  480.         //テーブルオブジェクト取得
  481.         $objtagtable $this->get_tag_table();
  482.         
  483.         //開始コメント取得
  484.         $retstr htf_get_comment_areastart($this->strpaname);
  485.         
  486.         //各開始タグ取得&出力
  487.         $retstr.= htf_add_cr($objtagtable->get_starttag());
  488.         $retstr.= htf_add_cr($objtagtable->contents[$objtagtable->tb_ix]->get_starttag());
  489.         $retstr.= htf_add_cr($objtagtable->contents[$objtagtable->tb_ix]->contents[0]->get_starttag());
  490.         $retstr.= htf_add_cr($objtagtable->contents[$objtagtable->tb_ix]->contents[0]->contents[0]->get_starttag());
  491.         
  492.         //ファイルインクルード
  493.         if (htf_is_existsval($strfpath)) {
  494.             $retstr.='<?php ';
  495.             $retstr.='include("';
  496.             $retstr.=$strfpath;
  497.             $retstr.='");';
  498.             $retstr.=' ?>';
  499.             $retstr.="\n";
  500.         }
  501.         
  502.         //終了タグ作成&出力
  503.         $retstr.= htf_add_cr($objtagtable->contents[$objtagtable->tb_ix]->contents[0]->contents[0]->get_endtag());
  504.         $retstr.= htf_add_cr($objtagtable->contents[$objtagtable->tb_ix]->contents[0]->get_endtag());
  505.         $retstr.= htf_add_cr($objtagtable->contents[$objtagtable->tb_ix]->get_endtag());
  506.         $retstr.= htf_add_cr($objtagtable->get_endtag());
  507.         
  508.         //終了コメント取得&出力
  509.         $retstr .= htf_get_comment_areaend($this->strpaname);
  510.         
  511.         return $retstr;
  512.         
  513.     }
  514.  
  515.     /**
  516.      * テキスト指定の場合のHTMLタグを出力します。
  517.      *
  518.      * @access     private
  519.      * @return    void 
  520.      ***/
  521.     function print_htmltag_text({
  522.         
  523.         $retstr $this->get_htmltag_text();
  524.  
  525.         //HTMLタグ出力
  526.         print($retstr);
  527.         
  528.         return;
  529.         
  530.     }
  531.  
  532.     /**
  533.      * テキスト指定の場合のHTMLタグを取得します。
  534.      *
  535.      * @access     private
  536.      * @return    string 
  537.      ***/
  538.     function get_htmltag_text({
  539.         
  540.         //テーブルオブジェクト取得
  541.         $objtagtable $this->get_tag_table($this->text);
  542.         
  543.         //HTMLタグ取得
  544.         $retstr htf_get_comment_areastart($this->strpaname);    //開始コメント
  545.         $retstr.= $objtagtable->get_htmltag();                    //エリアのHTMLタグ
  546.         $retstr.= htf_get_comment_areaend($this->strpaname);    //終了コメント
  547.  
  548.         return $retstr;
  549.         
  550.     }
  551.  
  552.     /**
  553.      * ページエリアの枠となるテーブルオブジェクトを取得します。
  554.      *
  555.      * @param     string $strcontents   tdに設定するコンテンツ内容
  556.      * @access     private
  557.      * @return    htf_tag_table 
  558.      ***/
  559.     function get_tag_table$contents="" {
  560.         //テーブルタグオブジェクト生成(各一つ)
  561.         $objtagtable new htf_tag_table(HTF_ITEMCASE_ELEMENT);
  562.         $objtagtr new htf_tag_tr(HTF_ITEMCASE_ELEMENT);
  563.         $objtagtd new htf_tag_td(HTF_ITEMCASE_ELEMENT);
  564.         
  565.         //tableタグ属性設定
  566.         if (htf_is_existsval($this->classname)) {
  567.             $objtagtable->add_attribute('class'$this