%PDF- %PDF-
| Direktori : /home1/lightco1/www/ilfanale.com.au/plugins/system/jsnpoweradmin/libraries/ |
| Current File : //home1/lightco1/www/ilfanale.com.au/plugins/system/jsnpoweradmin/libraries/jsnjoomlaxtc.php |
<?php
/*------------------------------------------------------------------------
# JSN PowerAdmin
# ------------------------------------------------------------------------
# author JoomlaShine.com Team
# copyright Copyright (C) 2012 JoomlaShine.com. All Rights Reserved.
# Websites: http://www.joomlashine.com
# Technical Support: Feedback - http://www.joomlashine.com/joomlashine/contact-us.html
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# @version $Id: jsnjoomlaxtc.php 16006 2012-09-13 03:29:17Z hiepnv $
-------------------------------------------------------------------------*/
defined( '_JEXEC' ) or die( 'Restricted access' );
JSNFactory::localimport('libraries.joomlshine.libraries.template');
class JSNJoomlaXTCHelper{
private $_template;
private $_document;
private $_columns;
/**
*
* Constructure
*/
public function __construct( $template, $document = null )
{
$this->_template = $template;
$this->_document = $document;
$this->makeArrayColumns();
}
public static function getInstance( $template, $document = null )
{
static $instances;
if (!isset($instances)) {
$instances = array();
}
if (empty($instances['JSNJoomlaXTCHelper'])) {
$instance = new JSNJoomlaXTCHelper( $template, $document );
$instances['JSNJoomlaXTCHelper'] = &$instance;
}
return $instances['JSNJoomlaXTCHelper'];
}
/**
*
* Set document HTML page
*
* @param HTML $document is HTML of page
*/
public function setDocument( $document )
{
$this->_document = $document;
}
/**
*
* Make array store all position in template
*/
protected function makeArrayColumns(){
//All position not defined in XML
$this->_columns = Array('user14', 'user15', 'user16', 'user17', 'user18', 'user19', 'user20',
'user21', 'user22', 'user23', 'user24', 'user25', 'user26', 'user27',
'bottom1', 'bottom2', 'bottom3', 'bottom4', 'bottom5');
$template = JSNFactory::getTemplate();
$positions = $template->loadXMLPositions();
foreach( $positions as $position ){
if ( !in_array( $position->name[0], $this->_columns ) ){
$this->_columns[] = (string) $position->name[0];
}
}
}
/**
*
* Get <head>
*/
protected function getHeader()
{
return preg_replace("/.*<head]*>|<\/head>.*/si", "", $this->_document);
}
/**
*
* Get <body>
*/
protected function getBody()
{
$body = new stdClass();
$body->attr = '';
if(preg_match_all('#<body\ (.*)>#iU', $this->_document, $matches)) {
$body->attr = $matches[1][0];
}
preg_match('/<body(.*)>(.*)<\/body>/is', $this->_document, $matches);
$body->html = $matches[0];
return $body;
}
/**
*
* Render page
*
* @param (Number) $vms_mode is mode of request
*/
protected function renderModules( $vms_mode = 0)
{
$domDocument = new DOMDocument();
$domDocument->loadHTML( $this->_document );
if ( $vms_mode ){
foreach( $this->_columns as $column ){
$contentPosition = $domDocument->getElementById( $column );
if ( is_object($contentPosition) ){
$class = $contentPosition->getAttribute('class');
$contentPosition->setAttribute('class', 'jsn-element-container_inner');
$contentPosition->removeAttribute('id');
foreach( $contentPosition->childNodes as $child ){
$contentPosition->removeChild($child);
}
$positionContainer = $domDocument->createElement("div");
$positionContainer->setAttribute('class', 'poweradmin-position');
$positionContainer->setAttribute('id', $column.'-jsnposition');
$positionTitle = $domDocument->createElement("p", $column);
$positionContainer->appendChild( $positionTitle );
$contentPosition->appendChild( $positionContainer );
}
}
$this->_document = $domDocument->saveHTML();
}else{
$modulesHTML = Array();
foreach( $this->_columns as $column ){
$contentPosition = $domDocument->getElementById( $column );
if ( is_object($contentPosition) ){
$class = $contentPosition->getAttribute('class');
$contentPosition->setAttribute('class', 'jsn-element-container_inner');
$contentPosition->removeAttribute('id');
foreach( $contentPosition->childNodes as $child ){
$contentPosition->removeChild($child);
}
if ((string) $column != ''){
$modules = JModuleHelper::getModules( $column );
}else{
$modules = Array();
}
$HTML = '';
if ( count($modules) ){
foreach ( $modules as $mod ) {
if ($mod->position != $column) continue;
$HTML .= JSNHtmlHelper::openTag('div', array('class'=>"poweradmin-module-item", 'id'=>$mod->id.'-jsnposition-published', 'title'=>$mod->title, 'showtitle'=>$mod->showtitle))
.JSNHtmlHelper::openTag('div', array('id'=>"moduleid-'.$mod->id.'-content"))
.JModuleHelper::renderModule($mod, array('style'=>'none'))
.JSNHtmlHelper::closeTag('div')
.JSNHtmlHelper::closeTag('div');
}
}
$modulesHTML[$column] = $HTML;
$positionContainer = $domDocument->createElement("div");
$positionContainer->setAttribute('class', 'poweradmin-position');
$positionContainer->setAttribute('id', $column.'-jsnposition');
$positionContainer->appendChild( new DOMText('HTML'.$column) );
$contentPosition->appendChild( $positionContainer );
}
}
$this->_document = $domDocument->saveHTML();
foreach ($modulesHTML as $key => $innerHTML ){
$this->_document = str_replace( 'HTML'.$key, $innerHTML, $this->_document );
}
}
}
/**
*
* Main function to render page
*/
public function render()
{
$poweradmin = JRequest::getCmd('poweradmin', 0);
$vms_mode = JRequest::getCmd('vsm_changeposition', 0);
if ( $poweradmin ){
$header = $this->getHeader();
$this->renderModules( $vms_mode );
$body = $this->getBody();
$HTML = Array();
$HTML[] = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
$HTML[] = '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$this->_template->language.'" lang="'.$this->_template->language.'" >';
$HTML[] = '<head>'.$header.'</head>';
$HTML[] = '<body '.$body->attr.'>'.$body->html.'</body>';
$HTML[] = '</html>';
echo implode(PHP_EOL, $HTML);
}else{
echo $this->_document;
}
}
}
?>