Ejemplo n.º 1
0
 /**
  * Create a new menu item
  * 
  * @param int $site_id
  */
 public function actionCreateFromContent($target, $content)
 {
     if (\GO\Base\Util\Http::isPostRequest()) {
         $target = json_decode($target);
         $content = json_decode($content);
         $targetModelName = \GO\Site\SiteModule::getModelNameFromTreeNodeType($target->type);
         $contentModelName = \GO\Site\SiteModule::getModelNameFromTreeNodeType($content->type);
         $targetModel = $targetModelName::model()->findByPk($target->modelId);
         $contentModel = $contentModelName::model()->findByPk($content->modelId);
         if ($targetModel instanceof \GO\Site\Model\MenuItem) {
             $menuId = $targetModel->menu_id;
         } else {
             $menuId = $targetModel->id;
         }
         $model = $this->_loadModel($menuId);
         $model->parent_id = $targetModel->id;
         $model->content_id = $contentModel->id;
         $model->label = $contentModel->title;
         // * @property int $menu_id The menu_id of this menu
         // * @property int $id The id of this menu item
         // * @property int $parent_id Optional: The parent menuItem of this current item.
         // * @property int $content_id Optional: The content_id where this menu items links to
         // * @property String $label The label of the menu item
         // * @property String $url Optional: url field to create menu items that link to a page that you can fill in manually
         // * @property Boolean $display_children Only usable when content_id is set. When true this will load the child items of the current content_id.
         // * @property int $sort_order The sort order for the menu items at the same level
         // * @property String $target The target for the url in this menu item
         //
         //			$model->setAttributes($_POST);
         $model->save();
     }
     echo $this->renderJson(array('success' => true));
 }
Ejemplo n.º 2
0
 public static function setTreeSort($extractedParent, $sortOrder, $allowedTypes)
 {
     $sort = 0;
     foreach ($sortOrder as $sortItem) {
         $extrChild = \GO\Site\SiteModule::extractTreeNode($sortItem);
         if (in_array($extrChild['type'], $allowedTypes)) {
             $modelName = \GO\Site\SiteModule::getModelNameFromTreeNodeType($extrChild['type']);
             $model = $modelName::model()->findByPk($extrChild['modelId']);
             $model->parent_id = $extractedParent['modelId'];
             $model->sort_order = $sort;
             if ($model->save()) {
                 $sort++;
             }
         }
     }
     return array("success" => true);
 }
Ejemplo n.º 3
0
 /**
  * Rearrange the tree based on the given sorting
  * 
  * @param array $params
  * @return array
  */
 protected function actionTreeSort($sortOrder, $parent)
 {
     //		EXAMPLE INPUT
     //		parent:1_menu_11
     //		sortOrder:["1_menuitem_30","1_menuitem_31","1_menuitem_33","1_menuitem_8"]
     $sortOrder = json_decode($sortOrder, true);
     $extractedParentNode = \GO\Site\SiteModule::extractTreeNode($parent);
     switch ($extractedParentNode['type']) {
         case 'content':
             $allowedTypes = array('content');
             return \GO\Site\Model\Content::setTreeSort($extractedParentNode, $sortOrder, $allowedTypes);
             break;
             //				case 'site':
             //					$allowedTypes = array('content');
             //					return \GO\Site\Model\Site::setTreeSort($extractedParentNode, $sortOrder, $allowedTypes);
             //					break;
         //				case 'site':
         //					$allowedTypes = array('content');
         //					return \GO\Site\Model\Site::setTreeSort($extractedParentNode, $sortOrder, $allowedTypes);
         //					break;
         case 'menu':
             $allowedTypes = array('menuitem');
             return \GO\Site\Model\Menu::setTreeSort($extractedParentNode, $sortOrder, $allowedTypes);
             break;
         case 'menuitem':
             $allowedTypes = array('menuitem');
             return \GO\Site\Model\MenuItem::setTreeSort($extractedParentNode, $sortOrder, $allowedTypes);
             break;
     }
 }