Example #1
0
 /**
  * Панель управления
  */
 public function admin_action()
 {
     $form = new Form("Wysiwyg/forms/config");
     $options = new Core_ArrayObject();
     $options->type = config('wysiwyg.editor');
     $form->type->setValues(self::$editors);
     $form->object($options);
     if ($result = $form->result()) {
         if (isset(self::$editors[$result['type']])) {
             cogear()->set('wysiwyg.editor', $result['type']);
             success(t('Конфигурация успешно сохранена.'));
         }
     }
     append('content', $form->render());
 }
Example #2
0
 /**
  * Control Panel
  */
 public function admin()
 {
     $form = new Form("Wysiwyg.config");
     $options = new Core_ArrayObject();
     $options->editor = config('wysiwyg.editor');
     $form->init();
     $form->elements->type->setValues(self::$editors);
     $form->object($options);
     if ($result = $form->result()) {
         if (isset(self::$editors[$result['type']])) {
             cogear()->set('wysiwyg.editor', $result['type']);
             success('Configuration saved successfully.');
         }
     }
     append('content', $form->render());
 }
Example #3
0
 /**
  * Login form show
  */
 public function login_action()
 {
     $this->theme->template('User/templates/login');
     $this->showMenu();
     $form = new Form('User/forms/login');
     if ($data = $form->result()) {
         $user = new User();
         $user->object($data);
         $user->hashPassword();
         if ($user->find() && $user->login()) {
             $data->saveme && $user->remember();
             redirect();
         } else {
             $user->email = $user->login;
             $user->object()->offsetUnset('login');
             if ($user->find() && $user->login()) {
                 $data->saveme && $user->remember();
                 redirect();
             }
         }
         $user->password = '';
         $form->object($user);
         error(t('Введены неверные данные.'), t('Ошибка авторизации'));
     }
     $form->show();
 }
Example #4
0
 /**
  * Edit action
  */
 public function edit_action($id = NULL)
 {
     $post = new Post();
     $post->id = $id;
     $post->cache(FALSE);
     if (!$post->find()) {
         return event('404');
     }
     $form = new Form('Post/forms/post');
     $form->object($post);
     $form->elements->title->options->label = t('Редактирование публикации');
     event('post.edit', $post, $form);
     if ($result = $form->result()) {
         $post->object()->extend($result);
         if ($result->delete && access('Post.delete', $post)) {
             if ($post->delete()) {
                 flash_success(t('Пост удалён!'));
                 redirect();
             }
         }
         if ($result->preview) {
             $post->created_date = time();
             $post->aid = $this->user->id;
             $post->preview = TRUE;
             $post->show();
         } else {
             if (Ajax::is() && $this->input->get('autosave')) {
                 $post->update();
                 $ajax = new Ajax();
                 $ajax->message(t('Пост сохранён!', 'Post'));
                 $ajax->send();
             }
             if ($result->draft) {
                 $post->published = 0;
             } elseif ($result->publish) {
                 $post->published = 1;
             }
             if ($post->save()) {
                 if ($post->published) {
                     $link = l($post->getLink());
                     flash_success(t('Пост опубликован!'), NULL, 'growl');
                 } else {
                     $link = l($post->getLink());
                     flash_success(t('Сохранено в черновиках!'), NULL, 'growl');
                 }
                 redirect($post->getLink());
             }
         }
     }
     $form->show();
 }
Example #5
0
 /**
  * Управление элементами отдельного меню
  *
  * @param mixed $id
  */
 public function items_action($menu_id, $id = NULL)
 {
     $this->theme->hookAdminMenu();
     $this->hookAdminMenu();
     if ($menu = menu($menu_id)) {
         append('content', '<div class="page-header"><h2>' . $menu->name . '</h2></div>');
     } else {
         return event('empty');
     }
     $pills = new Menu_Pills(array('name' => 'admin.menu.items', 'render' => FALSE, 'elements' => array(array('label' => icon('list') . ' ' . t('Список пунктов'), 'link' => l('/admin/theme/menu/' . $menu_id . '/items')), array('label' => icon('plus') . ' ' . t('Добавить'), 'link' => l('/admin/theme/menu/' . $menu_id . '/item/add'), 'class' => 'fl_r'), array('label' => icon('pencil') . ' ' . t('Редактировать'), 'link' => l('/admin/theme/menu/' . $menu_id . '/item/' . $this->router->getSegments(5)), 'access' => check_route('admin/theme/menu/\\d+/item/\\d+'), 'class' => 'fl_r'))));
     append('content', $pills->render());
     if (NULL === $id) {
         $handler = new Menu_Db_Item();
         $handler->menu_id = $menu->id;
         if ($items = $handler->findAll()) {
             $tree = new Db_Tree_DDList(array('items' => $items, 'saveUri' => l('/admin/theme/menu/ajax/saveItemsTree/')));
         } else {
             return event('empty');
         }
     } else {
         $form = new Form('Menu/forms/item');
         $item = new Menu_Db_Item();
         if ($id != 'add' && is_numeric($id)) {
             $item->id = $id;
             if ($item->find()) {
                 $form->object($item);
             } else {
                 return event('empty');
             }
         } else {
             $form->remove('delete');
             $item->menu_id = $menu_id;
         }
         $form->pid->setValues($item->getSelectValues('label'));
         if ($result = $form->result()) {
             if ($result->delete && $item->delete()) {
                 flash_success(t('Элемент меню <b>«%s»</b> был удалён!', $item->label), '', 'growl');
                 redirect(l('admin/theme/menu/' . $menu_id . '/items'));
             }
             $item->object()->extend($result);
             if ($id !== 'add') {
                 $item->branching();
             }
             if ($item->save()) {
                 flash_success($id == 'add' ? t('Элемент меню <b>«%s»</b> успешно создан!', $item->label) : t('Элемент меню <b>«%s»</b> успешно отредактирован!', $item->label), '', 'growl');
                 redirect(l('admin/theme/menu/' . $menu_id . '/items'));
             }
         }
         $form->show();
     }
 }
Example #6
0
 /**
  * Site config
  */
 public function site_action()
 {
     $this->hookSiteSettingsMenu();
     $front_values = new Core_ArrayObject(array('Admin' => t('Панель управления'), 'Post' => t('Пост'), 'Pages' => t('Страницы')));
     $config = array('#name' => 'admin-site', 'name' => array('#type' => 'text', '#label' => t('Название сайта'), '#validators' => array('Required')), 'front_page' => array('#type' => 'select', '#label' => t('Шестерёнка главной страницы:'), '#values' => $front_values, '#value' => config('router.defaults.gear')), 'dev' => array('#type' => 'checkbox', '#label' => t('Режим разработки'), '#value' => config('development')), 'save' => array());
     $form = new Form($config);
     $form->object(array('name' => config('site.name'), 'dev' => config('development')));
     if ($result = $form->result()) {
         $this->set('site.name', $result->name);
         $this->set('development', $result->dev);
         $this->set('router.defaults.gear', $result->front_page);
         flash_success(t('Настройки успешно сохранены!'));
         back();
     }
     $form->show();
 }
Example #7
0
    /**
     * Добавление или редактирование сниппета
     *
     * @param int $id
     */
    public function snippet_action($id = NULL)
    {
        $this->hookAdminMenu();
        $form = new Form('Code/forms/snippet');
        $tpl = new Template('Code/templates/form');
        $snippet = new Code_Snippet();
        if ($id) {
            $snippet->id = $id;
            if ($snippet->find()) {
                $tpl->code = $snippet->code;
                $form->object($snippet);
            }
        } else {
            $tpl->code = htmlspecialchars('<?php

');
        }
        $snippet->name or $form->remove('delete');
        $form->code_editor->options->label = $tpl->render();
        if ($result = $form->result()) {
            $snippet->name = $result->name;
            $snippet->code = $result->code;
            $snippet->aid or $snippet->aid = user()->id;
            $snippet->type = $result->type;
            $snippet->created_date or $snippet->created_date = time();
            if ($snippet->save()) {
                flash_success(t('Сниппет кода успешно сохранён!'));
                redirect(l('/admin/code/snippet/' . $snippet->id));
            }
        }
        $form->show();
    }
Example #8
0
 /**
  * Edit action
  * 
  * @param   string  $login
  */
 public function edit_action($id = NULL)
 {
     $id or $id = $this->user->id;
     $user = new User_Object();
     $this->db->where('id', $id);
     if (!$user->find()) {
         return _404();
     }
     if (!access('user edit_all') && $this->id != $user->id) {
         return _403();
     }
     $this->renderUserInfo($user);
     $user = new User_Object();
     $user->where('id', $id);
     $user->find();
     $form = new Form('User.profile');
     $user->password = '';
     $form->object($user->object());
     if ($form->elements->avatar->is_ajaxed && Ajax::get('action') == 'replace') {
         $user->avatar = '';
         $user->update();
     }
     if ($result = $form->result()) {
         if ($user->login != $result['login']) {
             $redirect = Url::gear('user') . $result['login'];
         }
         if ($result->delete && access('users delete_all')) {
             $user->delete();
             flash_success(t('User <b>%s</b> was deleted!'));
             redirect(Url::link('/users'));
         }
         $user->merge($result);
         if ($result->password) {
             $user->hashPassword();
         } else {
             unset($user->password);
         }
         if ($user->update()) {
             d('User edit');
             flash_success(t('User data saved!'), t('Success'));
             d();
             if ($user->id == $this->id) {
                 $this->store($user->object()->toArray());
             }
             redirect(Url::gear('user') . $user->login);
         }
     }
     append('content', $form->render());
 }
Example #9
0
 /**
  * Управление виджетами
  *
  * @param mixed $action
  */
 public function widgets_action($action = 'list', $subaction = NULL)
 {
     $this->hookAdminMenu();
     new Menu_Tabs(array('name' => 'admin.theme.widgets', 'elements' => array(array('label' => icon('list') . ' ' . t('Список'), 'link' => l('/admin/theme/widgets')), array('label' => icon('plus') . ' ' . t('Добавить'), 'link' => l('/admin/theme/widgets/add') . e('uri', $this->input->get('uri')), 'class' => 'fl_r'), array('label' => icon('pencil') . ' ' . t('Редактировать'), 'link' => l('/admin/theme/widgets/' . $this->router->getSegments(3)), 'access' => check_route('widgets/(\\d+)'), 'active' => check_route('widgets/(\\d+)$'), 'class' => 'fl_r'), array('label' => icon('wrench') . ' ' . t('Настройки'), 'link' => l('/admin/theme/widgets/' . $this->router->getSegments(3) . '/options'), 'access' => check_route('widgets/(\\d+)'), 'active' => check_route('widgets/(\\d+)/options'), 'class' => 'fl_r'))));
     if ($action == 'ajax' && ($widgets = $this->input->post('widgets'))) {
         $ajax = new Ajax();
         $position = 0;
         foreach ($widgets as $config) {
             if ($widget = widget($config['id'])) {
                 $widget->region = $config['region'];
                 $widget->position = ++$position;
                 $widget->save();
             }
         }
         $this->cache->remove('widgets');
         $ajax->success = TRUE;
         $ajax->json();
     } else {
         if ($action == 'list') {
             jqueryui();
             template('Theme/templates/widgets/search')->show();
             $widget = widget();
             $widget->order('position');
             $widgets = $widget->findAll();
             // Фильтруем, если задан параметр
             if ($uri = $this->input->get('uri')) {
                 $remove_ids = array();
                 foreach ($widgets as $key => $widget) {
                     if (!check_route($widget->route, $uri)) {
                         $remove_ids[] = $key;
                     }
                 }
                 foreach ($remove_ids as $id) {
                     $widgets->offsetUnset($id);
                 }
             }
             template('Theme/templates/widgets/list', array('regions' => $this->regions, 'widgets' => $widgets))->show();
         } else {
             $form = new Form('Theme/forms/widget');
             $form->callback->setValues($this->getWidgets());
             $form->region->setValues(array_combine($this->regions, $this->regions));
             if (is_numeric($action) && ($widget = widget($action))) {
                 if ($subaction === 'options') {
                     template('Theme/templates/widgets/options.header', array('widget' => $widget))->show();
                     $class = $widget->callback;
                     $current_widget = new $class($widget->object()->options);
                     $current_widget->object($widget);
                     if ($current_widget->settings()) {
                         $this->cache->remove('widgets');
                         flash_success(t('Настройки виджета <b>%s</b> сохранены!', $widget->name), '', 'growl');
                         redirect(l(TRUE));
                     }
                     return;
                 }
                 $form->object($widget);
                 $form->callback->options->disabled = TRUE;
             } elseif ($action == 'add') {
                 if ($uri = $this->input->get('uri')) {
                     $form->route->setValue($uri);
                 }
                 if ($region = $this->input->get('region')) {
                     $form->region->setValue($region);
                 }
                 $form->remove('delete');
                 $widget = widget();
             } else {
                 return event('empty');
             }
             if ($result = $form->result()) {
                 $this->cache->remove('widgets');
                 if ($result->delete && $widget->delete()) {
                     flash_success(t('Виджет «<b>%s</b>»успешно удалён!', $widget->name), '', 'growl');
                     redirect(l('/admin/theme/widgets'));
                 }
                 if ($action == 'add') {
                     $result->position = 1 + widget()->where('region', $result->region)->countAll();
                 }
                 $widget->object()->extend($result);
                 if ($widget->save()) {
                     if ($action == 'add') {
                         flash_success(t('Виджет «<b>%s</b>» успешно добавлен!', $widget->name), '', 'growl');
                         redirect(l('/admin/theme/widgets/' . $widget->id . '/options'));
                     } else {
                         flash_success(t('Виджет  «<b>%s</b>» успешно отредактирован!', $widget->name));
                         redirect(l(TRUE));
                     }
                 }
             }
             $form->show();
         }
     }
 }
Example #10
0
 /**
  * Создание страницы
  */
 public function admin_createdit($id = NULL)
 {
     $this->hookPagesAdminMenu();
     js($this->folder . '/js/inline/autolink_from_select.js');
     $form = new Form('Pages/forms/page');
     if ($id && ($page = page($id))) {
         $page->link = $page->getLink();
         $form->object($page);
     } else {
         $page = page();
         $form->remove('delete');
         $form->pid->setValue($this->input->get('pid', 0));
     }
     $form->pid->setValues($page->getSelectValues());
     if ($result = $form->result()) {
         if ($result->delete) {
             if ($page->delete()) {
                 flash_success(t('Страница удалена вместе со всеми подстраницами!'));
                 redirect(l('/admin/pages'));
             }
         }
         // Заполняем объект страницы
         $page->object()->extend($result);
         $refresh = TRUE;
         // Если у страницы уже установлен путь, и он находится в базе
         if ($page->route) {
             // Если равны, то обновлять не надо
             $refresh = $page->route != $page->getLink();
         }
         // Если путь не указан или не существует
         if ($refresh) {
             // Создаём новый путь
             $route = route();
             $route->route = trim($page->link, '/');
             // На всякий случай, если такой путь уже есть
             if (!$route->find()) {
                 // Сохраняем его
                 $route->insert();
             } else {
                 $route->update();
             }
             // Обновляем id
             $page->route = $route->id;
         }
         // Сохранение страницы
         if ($result->save && $page->save()) {
             if ($refresh) {
                 $route->callback = $route->encodeCallback(array($this, 'show_action'), array($page->id));
                 $route->update();
             }
             flash_success(t('Страница <b>«%s»</b> успешно сохранена', $page->name), '', 'growl');
             redirect(l('/admin/pages'));
         } elseif (!$result->preview) {
             success(t('Страница <b>«%s»</b> успешно сохранена', $page->name), '', 'growl');
         }
     }
     $form->show();
     if ($result && $result->preview) {
         $page->show();
     }
 }