Source for file htf_dat_menuitem.phl
Documentation is available at htf_dat_menuitem.phl
* menuitemデータを保持し、各種リンクタグを生成するクラス
* @package HtmlTemplateFramework
* @author Yamauchi Shogo <htf@as-prj.com>
* @version $Id: htf_dat_menuitem.phl ,v 1.0 $;
require_once("htf_com_initialize.inc"); //共通初期処理
require_once("htf_tag_element.phl"); //タグ生成クラス
* menuitemデータを保持し、各種リンクタグを生成するクラス
* コンストラクタに指定されたmenuitemのDOMノードを参照し、
* htfで取り扱うメニューアイテム情報を保有します。
* DOMノード上でネストしているmenuitemノードについても子メニューアイテムとして保有します。
* また、各種リンクタグを生成や、IDやURLでの子メニューアイテムサーチ、
* @author Yamauchi Shogo <htf@as-prj.com>
* メニューアイテム固有のID(デフォルトは空文字)
* 表示するイメージファイルのパス(デフォルトは空文字)
* また、DOMノードからの生成時、このプロパティ内容にHTFの置換タグがあった場合には、置換されて設定されます。
* ただし、HTFフレームの置換タグは置換されません。
* スワップするイメージファイルのパス(デフォルトは空文字)
* また、DOMノードからの生成時、このプロパティ内容にHTFの置換タグがあった場合には、置換されて設定されます。
* ただし、HTFフレームの置換タグは置換されません。
* イメージファイルに指定するalt属性値(デフォルトは空文字)
* イメージファイルに指定するheight属性値(デフォルトは空文字)
* イメージファイルに指定するwidth属性値(デフォルトは空文字)
* イメージファイルに指定するborder属性値(デフォルトは'0')
* また、DOMノードからの生成時、このプロパティ内容にHTFの置換タグがあった場合には、置換されて設定されます。
* ただし、HTFフレームの置換タグは置換されません。
* アンカーに指定するtarget属性値(デフォルトは空文字)
* 子メニューアイテム(デフォルトは初期化した配列)
* 引数のDOMノードからmenuitemを生成します。引数指定がない場合には
* また、DOMノードからの生成時、このプロパティ内容にHTFの置換タグがあった場合には、置換されて設定されます。
* ただし、htfフレームの置換タグは置換されません。
* @param DomNode $objnode DOMのmenuitemノード
$ret = $this->set_fromnode($objnode);
$ret = $this->set_childnodes($objnode);
* 子メニューアイテムが存在するかどうかを返します。
* @return bool TRUE:子ノードあり FALSE:子ノードなし
* HTMLのアンカータグを作成します。(テキストリンク)
* @return string 作成したアンカータグ
$anchor->add_content($this->label);
$strret = $anchor->get_htmltag();
* HTMLのアンカータグを作成します。(イメージリンク)
* @return string 作成したアンカータグ
$img->add_attribute("src", $this->image, HTF_ITMECASE_ATTRIBUTE);
$img->add_attribute("height", $this->height, HTF_ITMECASE_ATTRIBUTE);
$img->add_attribute("width", $this->width, HTF_ITMECASE_ATTRIBUTE);
$img->add_attribute("alt", $this->alt, HTF_ITMECASE_ATTRIBUTE);
$img->add_attribute("border", $this->border, HTF_ITMECASE_ATTRIBUTE);
$anchor->add_content($img);
$strret = $anchor->get_htmltag();
* HTMLのアンカータグを作成します。(スワップイメージリンク)
* @return string 作成したアンカータグ
$anchor->add_attribute("onmouseout",'MM_swapImgRestore();');
$anchor->add_attribute("onmouseover",'MM_swapImage(\''. $strimgname. '\',\'\',\''. $this->swapimage. '\',1)');
$img->add_attribute("name", $strimgname, HTF_ITMECASE_ATTRIBUTE);
$img->add_attribute("src", $this->image, HTF_ITMECASE_ATTRIBUTE);
$img->add_attribute("height", $this->height, HTF_ITMECASE_ATTRIBUTE);
$img->add_attribute("width", $this->width, HTF_ITMECASE_ATTRIBUTE);
$img->add_attribute("alt", $this->alt, HTF_ITMECASE_ATTRIBUTE);
$img->add_attribute("border", $this->border, HTF_ITMECASE_ATTRIBUTE);
$anchor->add_content($img);
$strret = $anchor->get_htmltag();
* 子ノードを再帰的に引数urlでサーチし、該当するmenuitemまでのルートを返します。
* @param string $url サーチするURL
* @return array ルートを格納したmenuitem配列
$objret = $this->search_arr_by_url($url, $this->arr_menuitem, $arr_nowitem);
* 子ノードを再帰的にIDでサーチし、該当するmenuitemまでのルートを返します。
* @param string $ID サーチするメニューアイテムのID
* @return array ルートを格納したmenuitem配列
$objret = $this->search_arr_by_id($ID, $this->arr_menuitem, $arr_nowitem);
* 子ノードを再帰的にurlでサーチし、該当するmenuitemを返します。
* @param string $url サーチするURL
//サーチ中のmenuitemをpush(arr_menuitemはNULLにする)
//print($this->arr_menuitem[$i]->id.":[now search]<br>\n");
//print($this->arr_menuitem[$i]->id.":[it's me]<br>\n");
//該当しない場合はさらに子の直下menuitem配列をサーチ
$childret = $this->arr_menuitem[$i]->search_childnodes_by_url($url);
//print($this->id.":[not found]<br>\n");
* 子ノードを再帰的にidでサーチし、該当するmenuitemを返します。
* @param string $id サーチするID
//サーチ中のmenuitemをpush(arr_menuitemはNULLにする)
//該当しない場合はさらに子の直下menuitem配列をサーチ
$childret = $this->arr_menuitem[$i]->search_childnodes_by_id($id);
* @param DomNode 参照するDOMノード
function set_fromnode($objnode= NULL) {
$arrattr = $objnode->attributes();
for ($j= 0 ; $j< count($arrattr) ; $j++ ) {
* 引数DOMノードの子menuitemノードをarr_menuitemに生成します。
* @param DomNode 参照するDOMノード
function set_childnodes($objmgnode= NULL) {
$arritem = $objmgnode->child_nodes();
for ($i= 0; $i< count($arritem) ; $i++ ) {
if ($arritem[$i]->node_type() != XML_TEXT_NODE) {
//menuitemタグ内容をクラス配列に取得する
* 指定menuitem配列をurlで検索し、見つかった場合には検索ルートを設定・結果menuitemを返します。
* @param string $url 検索キーURL
* @param string $arr_search 検索対象配列
* @param string $arr_nowitem 検索ルート格納配列
* @return menuitem 検索結果menuitem
function search_arr_by_url($url, $arr_search, &$arr_nowitem) {
for ($i= 0; $i< count($arr_search) ; $i++ ) {
//サーチ中のmenuitemをpush(arr_menuitemはNULLにする)
$itemwk = $arr_search[$i];
$itemwk->arr_menuitem = NULL;
if ($arr_search[$i]->has_child()) {
if (!strcmp($arr_search[$i]->url, $url)) |