Beispiel #1
0
 /**
  * Show a form for editing an entry
  *
  * @param   mixed  $row
  * @return  void
  */
 public function editTask($row = null)
 {
     Request::setVar('hidemainmenu', 1);
     if (!is_object($row)) {
         // Incoming
         $id = Request::getVar('id', array(0));
         if (is_array($id) && !empty($id)) {
             $id = $id[0];
         }
         // Load category
         $row = Article::oneOrNew($id);
     }
     $this->view->row = $row;
     // Fail if checked out not by 'me'
     if ($this->view->row->get('checked_out') && $this->view->row->get('checked_out') != User::get('id')) {
         App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller, false), Lang::txt('COM_KB_CHECKED_OUT'), 'warning');
         return;
     }
     if ($this->view->row->isNew()) {
         $this->view->row->set('created_by', User::get('id'));
         $this->view->row->set('created', Date::toSql());
     }
     $this->view->params = new Parameter($this->view->row->get('params'), dirname(dirname(__DIR__)) . DS . 'kb.xml');
     // Get the sections
     $this->view->categories = Category::all()->ordered();
     /*
     $m = new KbModelAdminArticle();
     $this->view->form = $m->getForm();
     */
     // Output the HTML
     $this->view->setLayout('edit')->display();
 }
Beispiel #2
0
 /**
  * Show a form for editing an entry
  *
  * @param   mixed  $row
  * @return  void
  */
 public function editTask($row = null)
 {
     if (!User::authorise('core.edit', $this->_option) && !User::authorise('core.create', $this->_option)) {
         App::abort(403, Lang::txt('JERROR_ALERTNOAUTHOR'));
     }
     Request::setVar('hidemainmenu', 1);
     if (!is_object($row)) {
         // Incoming
         $id = Request::getVar('id', array(0));
         if (is_array($id) && !empty($id)) {
             $id = $id[0];
         }
         // Load category
         $row = Article::oneOrNew($id);
     }
     // Fail if checked out not by 'me'
     if ($row->get('checked_out') && $row->get('checked_out') != User::get('id')) {
         Notify::warning(Lang::txt('COM_KB_CHECKED_OUT'));
         return $this->cancelTask();
     }
     if ($row->isNew()) {
         $row->set('created_by', User::get('id'));
         $row->set('created', Date::toSql());
     }
     $params = new Parameter($row->get('params'), dirname(dirname(__DIR__)) . DS . 'kb.xml');
     // Get the sections
     $categories = Category::all()->ordered()->rows();
     /*
     $m = new KbModelAdminArticle();
     $form = $m->getForm();
     */
     // Output the HTML
     $this->view->set('row', $row)->set('params', $params)->set('categories', $categories)->setLayout('edit')->display();
 }
Beispiel #3
0
 /**
  * Create an item entry
  *
  * @param   integer  $id  Optional ID to use
  * @return  boolean
  */
 public function make($id = null)
 {
     if ($this->exists()) {
         return true;
     }
     $id = $id ?: Request::getInt('id', 0);
     include_once PATH_CORE . DS . 'components' . DS . 'com_kb' . DS . 'models' . DS . 'article.php';
     $article = null;
     if (!$id) {
         $category = Category::all()->whereEquals('alias', Request::getVar('category'))->limit(1)->row();
         if (!$category->get('id')) {
             return true;
         }
         $article = Article::all()->whereEquals('alias', Request::getVar('alias', ''))->whereEquals('category', $category->get('id'))->limit(1)->row();
         $id = $article->get('id');
     }
     $this->_tbl->loadType($id, $this->_type);
     if ($this->exists()) {
         return true;
     }
     if (!$article) {
         $article = Article::oneOrNew($id);
     }
     if ($article->isNew()) {
         $this->setError(Lang::txt('Knowledge base article not found.'));
         return false;
     }
     $this->set('type', $this->_type)->set('object_id', $article->get('id'))->set('created', $article->get('created'))->set('created_by', $article->get('created_by'))->set('title', $article->get('title'))->set('description', \Hubzero\Utility\String::truncate($article->fulltxt(), 200))->set('url', Route::url($article->link()));
     if (!$this->store()) {
         return false;
     }
     return true;
 }
Beispiel #4
0
 /**
  * Parse the segments of a URL.
  *
  * @param   array  &$segments  The segments of the URL to parse.
  * @return  array  The URL attributes to be used by the application.
  */
 public function parse(&$segments)
 {
     $vars = array();
     $vars['task'] = 'categories';
     if (empty($segments[0])) {
         return $vars;
     }
     $count = count($segments);
     // section/
     switch ($count) {
         case 1:
             $vars['task'] = 'category';
             $vars['alias'] = urldecode($segments[0]);
             $vars['alias'] = str_replace(':', '-', $vars['alias']);
             break;
         case 2:
             $title1 = urldecode($segments[0]);
             $title1 = str_replace(':', '-', $title1);
             $title2 = urldecode($segments[1]);
             $title2 = str_replace(':', '-', $title2);
             include_once dirname(__DIR__) . DS . 'models' . DS . 'archive.php';
             $category = Category::all()->whereEquals('path', $title1 . '/' . $title2)->row();
             //$db = \App::get('db');
             //$category = Category::oneByAlias($title2);
             if ($category->get('id')) {
                 // section/category
                 $vars['task'] = 'category';
                 $vars['id'] = $category->get('id');
                 //$vars['alias'] = $title2;
                 return $vars;
             }
             /*else
             		{
             			$category->loadAlias($title1);
             		}*/
             if (!$category->get('id')) {
                 $vars['alias'] = $title2;
                 $vars['task'] = 'article';
                 $vars['category'] = $title1;
                 return $vars;
             }
             /*$article = Article::oneByAliasAndCategory($title2, $category->get('id'));
             
             				if ($article->get('id'))
             				{
             					// section/article
             					$vars['id'] = $article->get('id');
             					$vars['task'] = 'article';
             					//$vars['alias'] = $title2; //urldecode($segments[1]);
             				}*/
             break;
         case 3:
             // section/category/article
             // section/article/comments.rss
             if ($segments[2] == 'comments.rss') {
                 $vars['task'] = 'comments';
                 $vars['alias'] = urldecode($segments[1]);
                 $vars['alias'] = str_replace(':', '-', $vars['alias']);
                 $vars['category'] = $segments[0];
             } else {
                 $vars['task'] = 'article';
                 if (isset($vars['alias']) && $vars['alias']) {
                     $vars['category'] = $vars['alias'];
                 } else {
                     $vars['category'] = $segments[0];
                 }
                 $vars['alias'] = urldecode($segments[2]);
                 $vars['alias'] = str_replace(':', '-', $vars['alias']);
             }
             break;
         case 4:
             // task/category/id/vote
             // section/category/article/comments.rss
             if ($segments[3] == 'comments.rss') {
                 $vars['task'] = 'comments';
                 $vars['alias'] = urldecode($segments[2]);
                 $vars['alias'] = str_replace(':', '-', $vars['alias']);
                 $vars['category'] = $segments[1];
             } else {
                 $vars['task'] = $segments[0];
                 $vars['type'] = $segments[1];
                 $vars['id'] = $segments[2];
                 $vars['vote'] = $segments[3];
             }
             break;
     }
     return $vars;
 }