%PDF- %PDF-
| Direktori : /home/lightco1/www/administrator/components/com_poweradmin/libraries/joomlashine/document/ |
| Current File : /home/lightco1/www/administrator/components/com_poweradmin/libraries/joomlashine/document/media.php |
<?php
/**
* @version $Id$
* @package JSNPoweradmin
* @subpackage item
* @author JoomlaShine Team <support@joomlashine.com>
* @copyright Copyright (C) 2012 JoomlaShine.com. All Rights Reserved.
* @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
*
* Websites: http://www.joomlashine.com
* Technical Support: Feedback - http://www.joomlashine.com/contact-us/get-support.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
function is_jquery($link)
{
if ( strpos($link, 'com_poweradmin') !== false || strpos($link, 'com_imageshow') !== false ){
return false;
}
if (strpos($src, 'jquery.') !== false ){
return true;
}
return false;
}
class JSNMedia{
private $_scripts;
private $_styles;
private $_styleDeclaration;
private $_scriptDeclaration;
private $_customs;
private $_lang = 'en';
private $_dispatch = false;
private $_docType;
private $_conflict;
private $_load_js_language;
public function __construct()
{
$this->_scripts = Array();
$this->_styles = Array();
$this->_customs = Array();
$this->_scriptDeclaration = Array();
$this->_styleDeclaration = Array();
$this->_docType = JFactory::getDocument()->getType();
$this->_conflict = true;
if ( !$this->_dispatch ){
if(class_exists('JSNHtmlAsset')){
if(method_exists('JSNHtmlAsset','addScript') && method_exists('JSNHtmlAsset','addStyle')){
JSNHtmlAsset::addStyle( JSN_FRAMEWORK_ASSETS . '/3rd-party/jquery-ui/css/ui-bootstrap/jquery-ui-1.9.0.custom.css');
JSNHtmlAsset::addStyle(JSN_FRAMEWORK_ASSETS . '/joomlashine/css/jsn-gui.css');
JSNHtmlAsset::addScript(JURI::root(true) . '/media/jui/js/jquery.js');
JSNHtmlAsset::addScript( JSN_POWERADMIN_LIB_JSNJS_URI . 'jsn.jquery.noconflict.js');
JSNHtmlAsset::addScript(JSN_FRAMEWORK_ASSETS . '/3rd-party/jquery-ui/js/jquery-ui-1.9.0.custom.min.js');
JSNHtmlAsset::addScript(JURI::root(true) . '/media/jui/js/jquery.ui.sortable.js');
JSNHtmlAsset::addScript( JSN_FRAMEWORK_ASSETS . '/3rd-party/jquery-ck/jquery.ck.js');
JSNHtmlAsset::addScript( JSN_POWERADMIN_LIB_JS_URI . 'jquery.topzindex.js');
JSNHtmlAsset::addScript( JSN_POWERADMIN_LIB_JSNJS_URI . 'jsn.window.js');
JSNHtmlAsset::addScript( JSN_POWERADMIN_LIB_JSNJS_URI . 'jsn.lang.js');
JSNHtmlAsset::addStyle(JSN_POWERADMIN_STYLE_URI ."poweradmin.css");
}
}
//Load js lang
if ( JRequest::getVar('option', '') == 'com_poweradmin' ){
JSNFactory::localimport('libraries.joomlashine.language.javascriptlanguages');
$jsLang = JSNJavascriptLanguages::getInstance();
$this->addScriptDeclaration($jsLang->loadLang());
}
}
}
/**
*
* Get instance
*
*/
public static function getInstance()
{
static $instances;
if (!isset($instances)) {
$instances = array();
}
if ( empty($instances['JSNMedia']) ) {
$instance = new JSNMedia();
$instances['JSNMedia'] = &$instance;
}
return $instances['JSNMedia'];
}
public function setLoadJSLang($load = true)
{
$this->_load_js_language = $load;
}
/**
*
* Set doctype to render
*
* @param String $type
*/
public function setType($type)
{
if ( !in_array($type, Array('raw', 'html') ) )
{
$this->_docType = 'html';
}else{
$this->_docType = $type;
}
}
/**
*
* Return language key
*/
public function getLang()
{
return $this->_lang;
}
/**
*
* Queue store script file to array
*
* @param String $filename
*/
public function addScript( $filename )
{
if ( !in_array($filename, $this->_scripts) ){
JSNFactory::localimport('helpers.poweradmin');
$currentVersion = PoweradminHelper::getVersion();
$filename .= '?v=' . $currentVersion;
$this->_scripts[] = $filename;
}
}
/**
*
* Conflict
*
* @param Boolean $conflict
*/
public function conflict($conflict = true)
{
$this->_conflict = ( $conflict == true || $conflict == false ) ? $conflict : true;
}
/**
*
* Queue store style file to array
*
* @param String $filename
*/
public function addStyleSheet( $filename )
{
if ( !in_array($filename, $this->_styles) ){
JSNFactory::localimport('helpers.poweradmin');
$currentVersion = PoweradminHelper::getVersion();
$filename .= '?v=' . $currentVersion;
$this->_styles[] = $filename;
}
}
/**
*
* Queue store custom tag to array
*
* @param String $str
*/
public function addCustomTag( $str )
{
$this->_customs[] = $str;
}
/**
*
* Queue store style declaration to array
*
* @param String $str
*/
public function addStyleDeclaration( $str )
{
$this->_styleDeclaration[] = $str;
}
/**
*
* Queue store script declaration to array
*
* @param String $str
*/
public function addScriptDeclaration( $str )
{
$this->_scriptDeclaration[] = $str;
}
/**
*
* Parse all queue to page
*
*/
public function addMedia()
{
$document = JFactory::getDocument();
$docType = $document->getType();
if ( $this->_load_js_language )
{
JSNFactory::localimport('libraries.joomlashine.language.javascriptlanguages');
$jsLang = JSNJavascriptLanguages::getInstance();
$this->addScriptDeclaration($jsLang->loadLang());
}
if ( $this->_docType == 'raw' ){
$medias = Array();
//Add all style file to page
if ( count( $this->_styles ) ){
foreach( $this->_styles as $style ){
$medias[] = '<link type="text/css" rel="stylesheet" href="'.$style.'" />';
}
}
//Add all script file to page
if ( count( $this->_scripts ) ){
foreach( $this->_scripts as $script ){
$medias[] = '<script type="text/javascript" src="'.$script.'"></script>';
}
if ( !in_array( PoweradminHelper::makeUrlWithSuffix(JSN_POWERADMIN_LIB_JSNJS_URI. 'conflict.js'), $this->_scripts ) ){
$medias[] = '<script type="text/javascript" src="'.PoweradminHelper::makeUrlWithSuffix(JSN_POWERADMIN_LIB_JSNJS_URI. 'jsn.conflict.js').'"></script>';
}
}
//Add all custom tag to page
if ( count( $this->_customs ) ){
foreach( $this->_customs as $custom ){
$medias[] = $custom;
}
}
//Add all style declaration to page
if ( count( $this->_styleDeclaration ) ){
$medias[] = '<style type="text/css">'. implode( PHP_EOL, $this->_styleDeclaration ) .'</style>';
}
//Add all script declaration to page
if ( count( $this->_scriptDeclaration ) ){
$medias[] = '<script type="text/javascript">'. implode( PHP_EOL, $this->_scriptDeclaration ) .'</script>';
}
echo implode(PHP_EOL, $medias);
}else{
//behavior mootools
JHtmlBehavior::framework();
//behavior modal
JHtml::_('behavior.modal');
//behavior tooltip
JHtml::_('behavior.tooltip');
//behavior formvalidation
JHtml::_('behavior.formvalidation');
//behavior combobox
JHtml::_('behavior.combobox');
//Add all style file to page
if ( count( $this->_styles ) ){
foreach( $this->_styles as $style ){
$document->addStyleSheet( $style );
}
}
$system_js = Array();
$user_js = Array();
$docScripts = $document->_scripts;
if ( count($docScripts) ){
foreach ($docScripts as $key => $script ){
if ( strpos($key, '/media/system/' ) !== false ){
$system_js[$key] = $script;
}else if ( !is_jquery($key) ){
$user_js[$key] = $script;
}
}
$document->_scripts = Array();
}
//Add all script file to page
if ( count( $this->_scripts ) ){
foreach( $this->_scripts as $script ){
JSNHtmlAsset::addScript( $script );
}
if ( !in_array( PoweradminHelper::makeUrlWithSuffix(JSN_POWERADMIN_LIB_JSNJS_URI. 'conflict.js'), $this->_scripts ) ){
JSNHtmlAsset::addScript( PoweradminHelper::makeUrlWithSuffix(JSN_POWERADMIN_LIB_JSNJS_URI. 'jsn.conflict.js') );
}
}
$docScripts = $document->_scripts;
$index = 0;
$jsn_jquery = Array();
foreach ( $docScripts as $key => $script ){
if ( $index < 2 ){
$jsn_jquery[$key] = $script;
}else{
$user_js[$key] = $script;
}
$index++;
}
$document->_scripts = $system_js + $jsn_jquery + $user_js;
//Add all custom tag to page
if ( count( $this->_customs ) ){
foreach( $this->_customs as $custom ){
$document->addCustomTag( $custom );
}
}
//Add all style declaration to page
if ( count( $this->_styleDeclaration ) ){
$document->addStyleDeclaration( implode( PHP_EOL, $this->_styleDeclaration ) );
}
//Add all script declaration to page
if ( count( $this->_scriptDeclaration ) ){
$document->addScriptDeclaration( implode( PHP_EOL, $this->_scriptDeclaration ) );
}
}
$this->_dispatch = true;
$this->__construct();
}
}