?php /** * Controller is the customized base controller class. * All controller classes for this application should extend from this base class. */ class Controller extends CController { /** * @var string the default layout for the controller view. Defaults to '//layouts/column1', * meaning using a single column layout. See 'protected/views/layouts/column1.php'. */ public $layout='//layouts/main'; /** * Стандартные вьюхи * @var unknown_type */ public $stdViews = 'standart'; /** * @var array context menu items. This property will be assigned to {@link CMenu::items}. */ public $menu=array(); /** * Активный пункт меню * @var unknown_type */ public $menuItem = null; /** * Хлебные крошки */ public $breadcrumbs=array(); /** * Название страницы */ public $pageCaption = null; /** * $_GET['id'] * @var CustomAR */ public $activeID = null; /** * $_GET['model'] * @var unknown_type */ public $activeModel = null; /** * Модель активного элемента * @var CustomAR */ public $activeItem = null; /** * Массив с файлами. * Если необходимо отобразить файлы внизу страницы - необходимо сохранить их в этом массиве. */ protected $activeFiles = array('files'=>array(), 'images'=>array()); /** * Путь в корень * @var unknown_type */ protected $baseUrl = null; /** * Обработчик клиентских скриптов * @var CClientScript */ protected $cs; /** * дерево действий для ajax запросов * * ВНИМАНИЕ! * - ни в коем случае родительское действие не должно совпадать с каким-либо дочерним! * - если в ключе первого уровня вложенности указано несуществующее действие - будет ошибка */ public $ajaxMap = array(); protected function beforeAction($action) { $this->defineActionParams(); // попробуем поступить жестко if (!$this->menuItem) return false; // отключение админки /* if (Yii::app()->user->id) { Yii::app()->user->logout(); header('Location: /'); } */ // отключаем автоподгружаемые скрипты в случае ajax запроса. // все должно грузиться при первой загрузке if( Yii::app()->request->isAjaxRequest ) { Yii::app()->clientScript->scriptMap['jquery.js'] = false; Yii::app()->clientScript->scriptMap['jquery-ui.min.js'] = false; } // что пришло $this->activeModel = isset($_POST['model'])? $_POST['model'] : null; // имя модели $this->activeID = isset($_GET['id'])? (int)$_GET['id'] : 0; // активный элемент на странице // перехватить ajax запрос return $this->handleAjax($action); } protected function beforeRender($view) { $typeName = ParamsConfig::get('siteType'); $this->baseUrl = Yii::app()->request->baseUrl; $maskUrl = Yii::app()->theme->baseUrl; $themeUrl = Yii::app()->theme->baseUrl.'/css/'.ParamsConfig::get('themeName'); $this->cs = Yii::app()->clientScript; // скрипты $this->cs->registerCoreScript('jquery'); $this->cs->registerScriptFile($this->baseUrl.'/js/Base.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/slimbox/slimbox2.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/classes/fasade.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/classes/action-panel.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/tools/showhide.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/tools/utils.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/tools/editor-loader.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/tools/banner-editor.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/tools/jquery.mousewheel.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/tools/jquery.transit.min.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/tools/jquery.form.min.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/uploadify-3.2/jquery.uploadify.min.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/tinymce/tinymce.min.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/jquery-ui/js/jquery-ui-1.10.3.custom.min.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/jquery-ui/js/jquery-ui-timepicker-addon.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/custom/common.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/jscrollpane/jquery.jscrollpane.min.js',CClientScript::POS_END); $this->cs->registerScriptFile($this->baseUrl.'/js/carouFredSel/min.js',CClientScript::POS_END); // стили $this->cs->registerCssFile($this->baseUrl.'/css/main.css'); $this->cs->registerCssFile($this->baseUrl.'/css/fonts.css'); $this->cs->registerCssFile($this->baseUrl.'/css/system.css'); // $this->cs->registerCssFile($this->baseUrl.'/css/'.$typeName.'.css'); $this->cs->registerCssFile($this->baseUrl.'/css/std.css'); $this->cs->registerCssFile($this->baseUrl.'/css/slimbox2.css'); $this->cs->registerCssFile($this->baseUrl.'/js/jquery-ui/css/smoothness/jquery-ui-1.9.2.custom.min.css'); $this->cs->registerCssFile($this->baseUrl.'/js/uploadify-3.2/uploadify.css'); $this->cs->registerCssFile($this->baseUrl.'/css/jscrollpane.css'); // $this->cs->registerCssFile($maskUrl.'/css/theme.css'); // $this->cs->registerCssFile($themeUrl.'/main.css'); $this->defineRenderParams(); // определим активный элемент $this->activeItem(); // Название страницы $this->pageCaption(); // Хлебные крохи $this->breadcrumbs(); return true; } protected function handleAjax($action) { // надо перехватить ajax запрос $ajax = isset($_POST['ajax']) ? $_POST['ajax'] : null; if ($ajax) { $this->activeID = isset($_POST['id'])? (int)$_POST['id'] : $this->activeID; // надо определить что грузим $actionID = isset($_POST['action']) ? $_POST['action'] : $action->id; // при повторном обращении он снова будет считывать POST - нам так не надо unset($_POST['action']); if (isset($_POST['norender'])) Yii::app()->end(); // флаг говорит, что рендерить ничего не надо // echo $actionID; $actionsList = isset($this->ajaxMap[$actionID]) ? $this->ajaxMap[$actionID] : null; if (!$actionsList) return true; // действий нет - выходим if ($this->activeID) { // грузим конкретный элемент $this->run($actionsList['item']); } else { // грузим список $this->run($actionsList['list']); } Yii::app()->end(); } return true; } protected function defineActionParams() { // название страницы по умолчанию $this->pageTitle = ParamsConfig::get('site-caption'); // активный пункт меню $actionID = (Yii::app()->controller->action->id == $this->defaultAction)? '' : Yii::app()->controller->action->id; if ($this->id == 'menu' && $actionID === '' && isset($_GET['id'])) { // если мы находимся в контроллере меню $this->menuItem = Menu::model()->find('id = ?', array((int)$_GET['id'])); } else { // попробуем найти по контроллеру и действию $this->menuItem = Menu::model()->find(array( 'condition'=>'route = ?', 'params'=>array($this->id.'/'.$actionID), 'order'=>'sort_index DESC' )); } if (!$this->menuItem) { // попробуем найти по контроллеру $this->menuItem = Menu::model()->find(array( 'condition'=>'route = ?', 'params'=>array($this->id.'/'), 'order'=>'sort_index DESC' )); } if ($this->menuItem) { $this->pageTitle = $this->menuItem->view().' - '.$this->pageTitle; } } protected function defineRenderParams() { } protected function activeItem(){} /** * Функция для определения названия страницы * @param Menu $menuItem */ protected function pageCaption() { // if (isset($this->activeItem)) // { // $this->pageCaption = $this->activeItem->view(); // } if ($this->menuItem) { // надо найти корневой элемент // $rootMenu = Utils::findRootElement($this->menuItem); $this->pageCaption = $this->menuItem->caption; } } /** * Функция для определения хлебных крошек * @param Menu $menuItem */ protected function breadcrumbs() { if ($this->menuItem) { // найдем всех предков // $list = Menu::model()->read()->findAll(array( // 'condition'=>'l<=? AND r>=?', // 'order'=>'l', // 'params'=>array($this->menuItem->l, $this->menuItem->r))); $list = CtRepository::get()->getParents($this->menuItem); // формируем крошки foreach($list as $item) { $this->breadcrumbs[$item->caption] = $item->path; } } if ($this->activeItem) { if ($this->activeItem->tree && isset($this->activeItem->l)) { $this->buildTreeCrumbs($this->activeItem->parent); } if (isset($this->activeItem->parent) && $this->activeItem->parent->tree && isset($this->activeItem->parent->l)) { $this->buildTreeCrumbs($this->activeItem->parent); } $this->breadcrumbs[] = $this->activeItem->view(); } } private function buildTreeCrumbs($item) { $modelName = $item->className(); $list = $modelName::model()->read()->findAll(array( 'condition'=>'l<=? AND r>=? AND lvl > 0', 'order'=>'l', 'params'=>array($item->l,$item->r) )); // $path = $this->id.'/'.(($this->action->id != 'index')? $this->action->id : ''); $path = $this->id.'/'; foreach($list as $item) { // $this->breadcrumbs[$item->caption] = CHtml::normalizeUrl(array($path,'id'=>$item->id)); $this->breadcrumbs[$item->caption] = $item->cardLink(); } } public function renderPartialByController($action, $data = array(), $return = false, $processOutput = false) { $viewPath = Yii::app()->basePath.'/views/'; $controller = Yii::app()->controller->id; if (is_readable($viewPath.$controller.'/'.$action.'.php')) { $view = '/'.$controller.'/'.$action; } else { $view = '/'.$this->stdViews.'/'.$action; } $this->renderPartial($view, $data, $return, $processOutput); } /** * @param CustomAR $list */ protected function setActiveFilesFromList($list) { foreach($list as $item) { $files = $item->files(); $fileTypeList = isset($files['file']) ? $files['file'] : array(); $imageTypeList = isset($files['image']) ? $files['image'] : array(); $this->activeFiles['files'] = array_merge($this->activeFiles['files'], $fileTypeList); $this->activeFiles['images'] = array_merge($this->activeFiles['images'], $imageTypeList); } } }
Fatal error: Class 'Controller' not found in /var/www/html/multiclass/protected/controllers/PhotogalleryController.php on line 4