162 lines
5.7 KiB
PHP
162 lines
5.7 KiB
PHP
<?php
|
|
class Application_Controller_Plugin_Theme extends Zend_Controller_Plugin_Abstract
|
|
{
|
|
public function preDispatch(Zend_Controller_Request_Abstract $request)
|
|
{
|
|
Zend_Registry::get('firebug')->info('PLUGIN THEME - START');
|
|
|
|
$auth = Zend_Auth::getInstance();
|
|
$theme = 'default'; //$theme = 'mobile';
|
|
if ( $auth->hasIdentity() ) {
|
|
$theme = !empty($auth->getIdentity()->theme) ? $auth->getIdentity()->theme : 'default';
|
|
}
|
|
|
|
$module = $request->getModuleName();
|
|
$controller = $request->getControllerName();
|
|
$action = $request->getActionName();
|
|
|
|
//Sauvegarde des paramètres du themes pour gérer les scripts et styles à utiliser
|
|
$paramsTheme = new stdClass();
|
|
$paramsTheme->name = $theme;
|
|
$paramsTheme->pathStyle = '/themes/'.$theme.'/styles';
|
|
$paramsTheme->pathScript = '/themes/'.$theme.'/scripts';
|
|
$paramsTheme->pathImg = '/themes/'.$theme.'/images';
|
|
Zend_Registry::set('theme', $paramsTheme);
|
|
|
|
//Load bootstrap
|
|
$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
|
|
|
|
//Get useragent and device informations
|
|
$userAgent = $bootstrap->getResource('useragent');
|
|
$device = $userAgent->getDevice();
|
|
|
|
//Module default de l'application
|
|
$layoutPath = APPLICATION_PATH . '/layouts/' . $theme;
|
|
$helperPath = APPLICATION_PATH . '/layouts/helpers';
|
|
$viewPath = APPLICATION_PATH . '/modules/'.$module.'/views/default';
|
|
|
|
//Override path for view and layout
|
|
$view = $bootstrap->bootstrap('View')->getResource('View');
|
|
$view->setBasePath($viewPath);
|
|
$view->setHelperPath($helperPath);
|
|
$layout = $bootstrap->bootstrap('Layout')->getResource('Layout');
|
|
$layout->setLayout('layout');
|
|
$layout->setLayoutPath($layoutPath);
|
|
|
|
//Load default style and javascript files for the selected theme
|
|
switch ( $theme ) {
|
|
case 'default':
|
|
case 'default2016':
|
|
default:
|
|
|
|
$view->doctype('HTML5');
|
|
|
|
$view->headMeta()
|
|
->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8')
|
|
->appendHttpEquiv('Content-Language', 'fr-FR');
|
|
|
|
//Favicon - Touch icon for iOS 2.0+ and Android 2.1+
|
|
$view->headLink()->headLink(array(
|
|
'rel' => 'apple-touch-icon-precomposed',
|
|
'href' => '/favicon-152.png'
|
|
));
|
|
//Favicon - targeted to any additional png size
|
|
$view->headLink()->headLink(array(
|
|
'rel' => 'icon',
|
|
'type' => 'image/png',
|
|
'href' => '/favicon-32.png'
|
|
));
|
|
$view->headLink()->headLink(array(
|
|
'rel' => 'shortcut icon',
|
|
'type' => 'image/x-icon',
|
|
'href' => '/favicon.ico')
|
|
);
|
|
|
|
$UserLogin = false;
|
|
if ( $module == 'auth' ) {
|
|
$UserLogin = true;
|
|
}
|
|
|
|
/**
|
|
* ===> Standard Styles
|
|
*/
|
|
$view->headLink()
|
|
->appendStylesheet('/libs/bootstrap-3.3.6/css/bootstrap.min.css', 'all')
|
|
->appendStylesheet('/libs/ui-1.11.4/themes/smoothness/jquery-ui.min.css', 'all')
|
|
->appendStylesheet('/libs/qtip/jquery.qtip.min.css', 'all')
|
|
->appendStylesheet('/libs/font-awesome-4.5.0/css/font-awesome.min.css', 'all');
|
|
if ( $UserLogin ) {
|
|
$view->headLink()->appendStylesheet('/themes/default/styles/user-login.css', 'all');
|
|
} else {
|
|
$view->headLink()->appendStylesheet($paramsTheme->pathStyle.'/main.css', 'all');
|
|
}
|
|
|
|
/**
|
|
* ===> Standard Javascript
|
|
*/
|
|
$view->headScript()
|
|
->appendFile('/libs/html5shiv.min.js', 'text/javascript', array('conditional' => 'lt IE 9'))
|
|
->appendFile('/libs/respond.min.js', 'text/javascript', array('conditional' => 'lt IE 9'))
|
|
->appendFile('/libs/jquery/jquery-1.12.3.min.js', 'text/javascript')
|
|
->appendFile('/libs/bootstrap-3.3.6/js/bootstrap.min.js', 'text/javascript');
|
|
|
|
if ( $UserLogin ) {
|
|
$view->headScript()
|
|
->appendFile('/libs/jquery/jquery.placeholder.min.js', 'text/javascript', array('conditional' => 'lt IE 9'));
|
|
}
|
|
|
|
$view->headScript()
|
|
->appendFile('/libs/ui-1.11.4/jquery-ui.min.js', 'text/javascript')
|
|
->appendFile('/libs/ui-1.11.4/i18n/datepicker-fr.js', 'text/javascript');
|
|
|
|
|
|
if ( ! $UserLogin ) {
|
|
$view->headScript()
|
|
->appendFile('/libs/qtip/jquery.qtip.min.js', 'text/javascript')
|
|
->appendFile($paramsTheme->pathScript.'/script.js', 'text/javascript');
|
|
}
|
|
|
|
break;
|
|
|
|
case 'mobile': //@todo
|
|
|
|
$view->doctype('HTML5');
|
|
|
|
$view->headMeta()
|
|
->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8')
|
|
->appendHttpEquiv('Content-Language', 'fr-FR')
|
|
->appendName('viewport', 'width=device-width, initial-scale=1');
|
|
|
|
//Favicon - Touch icon for iOS 2.0+ and Android 2.1+
|
|
$view->headLink()->headLink(array(
|
|
'rel' => 'apple-touch-icon-precomposed',
|
|
'href' => '/favicon-152.png'
|
|
));
|
|
//Favicon - targeted to any additional png size
|
|
$view->headLink()->headLink(array(
|
|
'rel' => 'icon',
|
|
'type' => 'image/png',
|
|
'href' => '/favicon-32.png'
|
|
));
|
|
$view->headLink()->headLink(array(
|
|
'rel' => 'shortcut icon',
|
|
'type' => 'image/x-icon',
|
|
'href' => '/favicon.ico')
|
|
);
|
|
|
|
//Style
|
|
$view->headLink()
|
|
->appendStylesheet('/libs/mobile/1.4.2/jquery.mobile-1.4.2.min.css', 'all');
|
|
|
|
//JavaScript
|
|
$view->headScript()
|
|
->appendFile('/libs/jquery/jquery-2.1.0.min.js', 'text/javascript')
|
|
->appendFile('/libs/mobile/1.4.2/jquery.mobile-1.4.2.min.js', 'text/javascript')
|
|
->appendFile($paramsTheme->pathScript.'/script.js', 'text/javascript');
|
|
|
|
break;
|
|
}
|
|
|
|
Zend_Registry::get('firebug')->info('PLUGIN THEME - STOP');
|
|
}
|
|
} |