Esempio n. 1
0
 /**
  * @param string $sSkinId
  * @param array $aData
  */
 public function LoadFromXmlFile($sSkinId, $aData = null)
 {
     if (isset($aData['dir'])) {
         $sSkinDir = $aData['dir'];
     } else {
         $sSkinDir = null;
     }
     $sSkinXML = E::ModuleSkin()->GetSkinManifest($sSkinId, $sSkinDir);
     if (!is_array($aData)) {
         $aData = array('id' => $sSkinId);
     } elseif (!isset($aData['id'])) {
         $aData['id'] = $sSkinId;
     }
     $this->LoadFromXml($sSkinXML, $aData);
 }
Esempio n. 2
0
 /**
  * Initialization of render before Fetch() or Display()
  *
  * @param bool $bForce
  */
 protected function _initRender($bForce = false)
 {
     if ($this->bInitRender && !$bForce) {
         return;
     }
     $nTimer = microtime(true);
     E::ModuleHook()->Run('render_init_start', array('bLocal' => $this->bLocal));
     // If skin not initialized (or it was changed) then init one
     if ($this->sViewSkin != $this->GetConfigSkin()) {
         $this->_initSkin();
     } else {
         // Level could be changed after skin initialization
         Config::SetLevel(Config::LEVEL_SKIN_CUSTOM);
     }
     // init templator if not yet
     $this->_initTemplator();
     // Loads localized texts
     $aLang = E::ModuleLang()->GetLangMsg();
     // Old skin compatibility
     $aLang['registration_password_notice'] = E::ModuleLang()->Get('registration_password_notice', array('min' => C::Val('module.security.password_len', 3)));
     $this->Assign('aLang', $aLang);
     //$this->Assign('oLang', E::ModuleLang()->Dictionary());
     if (!$this->bLocal && !$this->GetResponseAjax()) {
         // Initialization of assets (JS-, CSS-files)
         $this->InitAssetFiles();
     }
     $oSkin = E::ModuleSkin()->GetSkin($this->sViewSkin);
     if (!$oSkin || !$oSkin->GetCompatible() || $oSkin->SkinCompatible('1.1', '<')) {
         // Для старых скинов загружаем объект доступа к конфигурации
         $this->Assign('oConfig', Config::getInstance());
     }
     E::ModuleHook()->Run('render_init_done', array('bLocal' => $this->bLocal));
     $this->bInitRender = true;
     self::$_preprocessTime += microtime(true) - $nTimer;
 }
Esempio n. 3
0
 /**
  * Check the skin compatibility
  *
  * @param string      $sSkinName
  * @param string|null $sVersion
  * @param string|null $sOperator
  *
  * @return bool
  */
 public function SkinCompatible($sSkinName, $sVersion = null, $sOperator = null)
 {
     $oSkin = E::ModuleSkin()->GetSkin($sSkinName);
     return $oSkin->SkinCompatible($sVersion, $sOperator);
 }
Esempio n. 4
0
 /**
  * Выполняет загрузку необходимых (возможно даже системных :)) переменных в шаблонизатор
  */
 public function VarAssign()
 {
     // * Загружаем весь $_REQUEST, предварительно обработав его функцией F::HtmlSpecialChars()
     $aRequest = $_REQUEST;
     F::HtmlSpecialChars($aRequest);
     $this->Assign('_aRequest', $aRequest);
     // * Параметры стандартной сессии
     // TODO: Убрать! Не должно этого быть на страницах сайта
     $this->Assign('_sPhpSessionName', session_name());
     $this->Assign('_sPhpSessionId', session_id());
     // * Загружаем роутинг с учетом правил rewrite
     $aRouter = array();
     $aPages = Config::Get('router.page');
     if (!$aPages || !is_array($aPages)) {
         throw new Exception('Router rules is underfined.');
     }
     foreach ($aPages as $sPage => $aAction) {
         $aRouter[$sPage] = R::GetPath($sPage);
     }
     $this->Assign('aRouter', $aRouter);
     // * Загружаем виджеты
     $this->Assign('aWidgets', $this->GetWidgets());
     // * Загружаем HTML заголовки
     $this->Assign('sHtmlTitle', $this->GetHtmlTitle());
     $this->Assign('sHtmlKeywords', $this->GetHtmlKeywords());
     $this->Assign('sHtmlDescription', $this->GetHtmlDescription());
     $this->Assign('aHtmlHeadFiles', $this->aHtmlHeadFiles);
     $this->Assign('aHtmlRssAlternate', $this->aHtmlRssAlternate);
     $this->Assign('sHtmlCanonical', $this->sHtmlCanonical);
     $this->Assign('aHtmlHeadTags', $this->aHtmlHeadTags);
     $this->Assign('aJsAssets', E::ModuleViewerAsset()->GetPreparedAssetLinks());
     // * Загружаем список активных плагинов
     $aPlugins = E::GetActivePlugins();
     $this->Assign('aPluginActive', array_fill_keys(array_keys($aPlugins), true));
     // * Загружаем пути до шаблонов плагинов
     $aPluginsTemplateUrl = array();
     $aPluginsTemplateDir = array();
     /** @var Plugin $oPlugin */
     foreach ($aPlugins as $sPlugin => $oPlugin) {
         $sDir = Plugin::GetTemplateDir(get_class($oPlugin));
         $this->oSmarty->addTemplateDir(array($sDir . 'tpls/', $sDir), $oPlugin->GetName(false));
         $aPluginsTemplateDir[$sPlugin] = $sDir;
         $aPluginsTemplateUrl[$sPlugin] = Plugin::GetTemplateUrl(get_class($oPlugin));
     }
     if (E::ActivePlugin('ls')) {
         // LS-compatible //
         $this->Assign('aTemplateWebPathPlugin', $aPluginsTemplateUrl);
         $this->Assign('aTemplatePathPlugin', $aPluginsTemplateDir);
     }
     $sSkinTheme = $this->GetConfigTheme();
     if (!$sSkinTheme) {
         $sSkinTheme = 'default';
     }
     // Проверка существования темы
     if ($this->CheckTheme($sSkinTheme)) {
         $this->oSmarty->compile_id = $sSkinTheme;
     }
     $this->Assign('sSkinTheme', $sSkinTheme);
     $oSkin = E::ModuleSkin()->GetSkin($this->sViewSkin);
     if (!$oSkin->GetCompatible() || $oSkin->SkinCompatible('1.1', '<')) {
         // Для старых скинвов загружаем объект доступа к конфигурации
         $this->Assign('oConfig', Config::getInstance());
     }
 }
Esempio n. 5
0
 protected function EventSkins()
 {
     $this->sMainMenuItem = 'site';
     $this->_setTitle(E::ModuleLang()->Get('action.admin.skins_title'));
     $this->SetTemplateAction('site/skins');
     // Определяем скин и тему основного сайта (не админки)
     $sSiteSkin = Config::Get('view.skin', Config::LEVEL_CUSTOM);
     $sSiteTheme = Config::Get('skin.' . $sSiteSkin . '.config.view.theme');
     // Определяем скин и тему админки
     $sAdminSkin = Config::Get('view.skin');
     $sAdminTheme = Config::Get('skin.' . $sAdminSkin . '.config.view.theme');
     if (!$sSiteTheme && ($sSkinTheme = $this->_getSkinFromConfig($sSiteSkin))) {
         $sSiteTheme = $sSkinTheme;
     }
     if (!$sAdminTheme && ($sSkinTheme = $this->_getSkinFromConfig($sAdminSkin))) {
         $sAdminTheme = $sSkinTheme;
     }
     $sMode = $this->GetParam(0);
     if ($sMode == 'adm') {
         $aFilter = array('type' => 'adminpanel');
     } elseif ($sMode == 'all') {
         $aFilter = array('type' => '');
     } else {
         $sMode = 'site';
         $aFilter = array('type' => 'site');
     }
     if ($this->GetPost('submit_skins_del')) {
         // Удаление плагинов
         $this->_eventSkinsDelete($sMode);
     } elseif ($sSkin = $this->GetPost('skin_activate')) {
         $this->_eventSkinActivate($sMode, $sSkin);
     } elseif (($sSkin = $this->GetPost('skin')) && ($sTheme = $this->GetPost('theme_activate'))) {
         $this->_eventSkinThemeActivate($sMode, $sSkin, $sTheme);
     }
     $aSkins = E::ModuleSkin()->GetSkinsList($aFilter);
     $oActiveSkin = null;
     foreach ($aSkins as $sKey => $oSkin) {
         if ($sMode == 'adm') {
             if ($sKey == $sAdminSkin) {
                 $oActiveSkin = $oSkin;
                 unset($aSkins[$sKey]);
             }
         } else {
             if ($sKey == $sSiteSkin) {
                 $oActiveSkin = $oSkin;
                 unset($aSkins[$sKey]);
             }
         }
     }
     if ($sMode == 'adm') {
         E::ModuleViewer()->Assign('sSiteSkin', $sAdminSkin);
         E::ModuleViewer()->Assign('sSiteTheme', $sAdminTheme);
     } else {
         E::ModuleViewer()->Assign('sSiteSkin', $sSiteSkin);
         E::ModuleViewer()->Assign('sSiteTheme', $sSiteTheme);
     }
     E::ModuleViewer()->Assign('oActiveSkin', $oActiveSkin);
     E::ModuleViewer()->Assign('aSkins', $aSkins);
     E::ModuleViewer()->Assign('sMode', $sMode);
 }
Esempio n. 6
0
 protected function _initSkin()
 {
     $oSkin = E::ModuleSkin()->GetSkin($this->GetConfigSkin());
     $sCompatible = $oSkin ? $oSkin->GetCompatible() : '';
     if (!$sCompatible || $sCompatible == 'ls') {
         // It's old LS skin
         $aOldJs = Config::Get('assets.ls.head.default.js');
         $aOldCss = Config::Get('assets.ls.head.default.css');
         Config::Set('head.default.js', $aOldJs);
         Config::Set('head.default.css', $aOldCss);
         Config::Set('view.compatible', 'ls');
     } else {
         Config::Set('view.compatible', $sCompatible ? $sCompatible : 'alto');
     }
     parent::_initSkin();
 }
Esempio n. 7
0
 /**
  * Список событий в ленте активности пользователя
  *
  */
 protected function EventFollow()
 {
     /**
      * Пользователь авторизован?
      */
     if (!$this->oUserCurrent) {
         return parent::EventNotFound();
     }
     $this->sMenuItemSelect = 'follow';
     $oSkin = E::ModuleSkin()->GetSkin(E::ModuleViewer()->GetConfigSkin());
     if ($oSkin && $oSkin->GetCompatible() == 'alto') {
         E::ModuleViewer()->AddWidget('right', 'activitySettings');
         E::ModuleViewer()->AddWidget('right', 'activityFriends');
         E::ModuleViewer()->AddWidget('right', 'activityUsers');
     } else {
         E::ModuleViewer()->AddWidget('right', 'streamConfig');
     }
     /**
      * Читаем события
      */
     $aEvents = E::ModuleStream()->Read();
     E::ModuleViewer()->Assign('bDisableGetMoreButton', E::ModuleStream()->GetCountByReaderId($this->oUserCurrent->getId()) < Config::Get('module.stream.count_default'));
     E::ModuleViewer()->Assign('aStreamEvents', $aEvents);
     if (count($aEvents)) {
         $oEvenLast = end($aEvents);
         E::ModuleViewer()->Assign('iStreamLastId', $oEvenLast->getId());
     }
 }