示例#1
0
文件: menu.php 项目: boolive/basic
 /**
  * Преобразование ветки объектов в структуру из массивов для вывода в шаблоне
  * @param array $items Масив объектов - пунктов меню
  * @param Entity $active Активный пункт меню
  * @param bool $sub_active Признак, есть или нет активные подчиненные?
  * @return array
  */
 protected function itemsToArray($items, $active, &$sub_active = false)
 {
     $list = array();
     $have_active = false;
     foreach ($items as $item) {
         $children = $item['sub'];
         $item = $item['object'];
         $real = $item->linked();
         $info = array('title' => $item->title->value(), 'icon' => false, 'url' => Request::url($real->uri()), 'active' => $active && $active->eq($real) ? 1 : 0);
         // Иконка
         //            $icon = $item->icon->isExist() ? $item->icon : ($real->icon->isExist()? $real->icon : null);
         //            if ($icon && !$icon->isDraft() && !$icon->isHidden()){
         //                $info['icon'] = $icon->resize(0,30,Image::FIT_OUTSIDE_LEFT_TOP)->file();
         //            }
         // Если заголовок не определен
         if (empty($info['title'])) {
             $info['title'] = $real->title->value();
             if (empty($info['title'])) {
                 $info['title'] = $real->name();
             }
         }
         if ($children) {
             $info['children'] = $this->itemsToArray($children, $active, $sub_active);
             if (!$info['active'] && $sub_active) {
                 $info['active'] = 2;
             }
         }
         $have_active = $have_active || $info['active'];
         $list[] = $info;
     }
     $sub_active = $have_active;
     return $list;
 }
示例#2
0
文件: main.php 项目: boolive/admin
 function process(Request $request)
 {
     if (parent::process($request)) {
         $request->redirect(Request::url('/admin' . $request['REQUEST']['object']->uri()));
     } else {
         $request->redirect(Request::url(null, [], true));
     }
 }
示例#3
0
 function show($v, Request $request)
 {
     $obj = $request['REQUEST']['object'];
     $v['uri'] = Request::url($obj->uri());
     $v['count'] = $request['REQUEST']['page_count'];
     $v['current'] = min($v['count'], $request['REQUEST']['page']);
     $v['show'] = $this->show_cnt->value();
     return parent::show($v, $request);
 }
示例#4
0
 function show($v, Request $request)
 {
     $page = $request['REQUEST']['object'];
     $v['title'] = $page->title->value();
     $v['text'] = $page->text->value();
     //
     if (($split_pos = mb_strpos($v['text'], '<a class="more"> </a>')) || ($split_pos = mb_strpos($v['text'], '<!--more-->'))) {
         $v['text'] = mb_substr($v['text'], 0, $split_pos);
     }
     //
     $v['url'] = Request::url($page->uri());
     return parent::show($v, $request);
 }
示例#5
0
文件: handler.php 项目: boolive/forms
 function work(Request $request)
 {
     $out = $request['REQUEST']['handler']->start($request);
     if ($redirect = $request->getCommands('redirect')) {
         header("HTTP/1.1 303 See Other");
         header('Location: ' . $redirect[0][0]);
     } else {
         if ($out != false) {
             if (is_array($out)) {
                 header('Content-Type: application/json');
                 echo F::toJSON($out, false);
             } else {
                 echo $out;
             }
         } else {
             header('Location: ' . Request::url());
             //текущий адрес без аргументов
         }
     }
 }
示例#6
0
 function work(Request $request)
 {
     $this->_base_uri = $request['REQUEST']['object']->uri();
     $request->mix(['REQUEST' => ['base_uri' => $this->_base_uri]]);
     if ($request['REQUEST']['form'] !== false) {
         // Обработка формы
         $session = array();
         try {
             // Вызов полей для свойств объекта
             $request->mix(['REQUEST' => ['call' => 'check']]);
             $list = $this->getList($request);
             if (is_array($list)) {
                 $input = $request->getInput();
                 $views = $this->linked()->views->linked();
                 foreach ($list as $obj) {
                     $name = preg_replace('/' . preg_quote($this->_base_uri . '/', '/') . '/u', '', $obj->uri());
                     $obj_input = [];
                     if (isset($input['REQUEST'][$name])) {
                         $obj_input['REQUEST']['value'] = $input['REQUEST'][$name];
                     }
                     if (isset($input['FILES'][$name])) {
                         $obj_input['FILES']['value'] = $input['FILES'][$name];
                     }
                     $obj_input['REQUEST']['object'] = $obj;
                     $views->start($request->mix($obj_input));
                 }
             }
             if (!$request['REQUEST']['object']->errors()->isExist()) {
                 // Выполнение действия
                 $this->process($request);
                 $this->_result = self::FORM_RESULT_OK;
                 if (!($redirect = $this->getCommands('redirect'))) {
                     $redirect = $this->redirect->inner();
                     if (!$redirect->is_draft() && $redirect->value() != '') {
                         $request->redirect(Request::url($redirect->value()));
                     }
                 }
             } else {
                 $this->_result = self::FORM_RESULT_ERROR;
             }
         } catch (\Exception $error) {
             $this->_result = self::FORM_RESULT_ERROR;
         }
         $session['result'] = $this->_result;
         if ($this->_result == self::FORM_RESULT_ERROR) {
             $session['object'] = $request['REQUEST']['object']->toArray();
             // @todo Для ajax запросов нужна развернутая информация об ошибках для каждого поля
             $session['message'] = 'Ошибки';
         } else {
             if ($this->_result == self::FORM_RESULT_ERROR) {
                 $session['message'] = 'Успех';
             }
         }
         // @todo Для ajax запросов в сессию сохранять нет смысла
         Session::set('form', array($this->uri() . $this->getToken() => $session));
         setcookie('token', $this->getToken(), 0, '/');
         return $session;
     } else {
         // Отображение формы
         $v = array();
         if (isset($request['COOKIE']['token']) && Session::is_exist('form')) {
             $form = Session::get('form');
             if (isset($form[$this->uri() . $request['COOKIE']['token']])) {
                 $form = $form[$this->uri() . $request['COOKIE']['token']];
                 Session::remove('form');
             }
             if (isset($form['object'])) {
                 $request['REQUEST']['object'] = Entity::fromArray($form['object']);
             }
             if (isset($form['result'])) {
                 $this->_result = $form['result'];
             }
         }
         $this->res->start($request);
         return $this->show($v, $request);
     }
 }