/** * Диспатчер ajax-запросов * * @param string $action * @return JSON */ public function ajax_action($action = NULL) { $ajax = new Ajax(); switch ($action) { case 'saveItemsTree': if (!($menu = menu($param))) { return event('empty'); } if ($this->rebuildItemsTree($this->input->post('items'))) { $ajax->success = TRUE; $ajax->message(t('Структура сохранена!')); } else { $ajax->success = FALSE; $ajax->message(t('Не удалось сохранить структуру'), 'error', t('Ошибка')); } break; case 'order': default: if ($menus = $this->input->post('menus')) { foreach ($menus as $id => $position) { if ($menu = menu($id)) { $menu->update(array('position' => $position)); } } } } $ajax->json(); }
/** * 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(); }
/** * Ajax интерцептор * * @param string $action * @param mixed $param */ public function admin_ajax($action = 'getLink', $param = NULL) { $ajax = new Ajax(); switch ($action) { case 'getLink': if ($page = page($param)) { $ajax->success = TRUE; $ajax->link = trim($page->getLink(), '/'); } else { $ajax->success = FALSE; } break; case 'saveDBtree': if ($pages = $this->rebuildPagesTree($this->input->post('items'))) { $ajax->success = TRUE; $ajax->message(t('Структура сохранена!')); } else { $ajax->success = FALSE; $ajax->message(t('Не удалось сохранить структуру'), 'error', t('Ошибка')); } break; } $ajax->json(); }