60 lines
1.9 KiB
PHP
60 lines
1.9 KiB
PHP
<?php
|
|
|
|
class renderSpecialContentClass extends renderClass_abstract
|
|
{
|
|
public function createSpecialContent ( $id , $popupData , $type )
|
|
{
|
|
$html = file_get_contents ( $this -> _pathTpl . $this -> _layout . '/tpl_' . $this -> _template . '_' . $id . '.php' );
|
|
$html = str_replace ( $this -> _renderSearch , $this -> _renderReplace , $html );
|
|
$subTpl = new DOMDocument ( );
|
|
$subTpl -> preserveWhitespace = false;
|
|
$subTpl -> formatOutput = true;
|
|
$subTpl -> loadHTML ( $html );
|
|
|
|
$xpath = new DOMXpath ( $subTpl );
|
|
$subCont = $xpath -> query ( ".//*[contains(concat(' ', @class, ' '), ' " . $id . " ')]" ) -> item( 0 );
|
|
|
|
foreach ( $popupData as $singleData )
|
|
{
|
|
$tmp_node = $subCont -> firstChild -> cloneNode ( true );
|
|
if ( isset ( $singleData[ 'id' ] ) )
|
|
{
|
|
$subCont -> setAttributeNode ( new DOMAttr ( 'id' , $type . '_' . $singleData[ 'id' ] ) );
|
|
}
|
|
|
|
foreach ( $singleData as $key => $data )
|
|
{
|
|
$nodeList = $xpath -> query ( ".//*[contains(concat(' ', @class, ' '), ' " . $key . " ')]" , $tmp_node );
|
|
if ( $nodeList -> length !== 0 )
|
|
{
|
|
|
|
foreach ( $nodeList as $node )
|
|
{
|
|
switch ( $key )
|
|
{
|
|
case 'link' :
|
|
$node -> setAttributeNode ( new DOMAttr ( 'href' , $data ) );
|
|
break;
|
|
|
|
default :
|
|
$node -> appendChild ( new DOMCdataSection ( $data ) );
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
$subCont -> appendChild ( $tmp_node );
|
|
}
|
|
|
|
$subCont -> removeChild ( $subCont -> firstChild );
|
|
|
|
|
|
$new_node = $this -> _tpl -> importNode ( $subCont , true );
|
|
return $new_node;
|
|
}
|
|
|
|
}
|
|
|
|
?>
|