public function saveAction() { if ($datas = $this->getRequest()->getPost()) { try { $delete_features = array(); $app_id = $this->getApplication()->getId(); if (empty($datas['option_id'])) { throw new Exception($this->_('An error occurred while adding the option')); } // Récupère l'option $option_id = $datas['option_id']; unset($datas['option_id']); $option = new Application_Model_Option(); $option->find($option_id); if (!$option->getId()) { throw new Exception($this->_('An error occurred while adding the option')); } // Récupère les données de l'application pour cette option $option_value = new Application_Model_Option_Value(); if (!empty($datas['value_id'])) { $option_value->find($datas['value_id']); // Test s'il n'y a pas embrouille entre les ids passés en paramètre et l'application en cours customization if ($option_value->getId() and ($option_value->getOptionId() != $option->getId() or $option_value->getAppId() != $app_id)) { throw new Exception($this->_('An error occurred while adding the option')); } unset($datas['value_id']); } // Ajoute les données $option_value->addData(array('app_id' => $app_id, 'option_id' => $option->getId(), 'position' => $option_value->getPosition() ? $option_value->getPosition() : 0, 'is_visible' => 1))->addData($datas); // Sauvegarde $option_value->save(); $id = $option_value->getId(); $option_value = new Application_Model_Option_Value(); $option_value->find($id); $option_value->getObject()->prepareFeature($option_value); if ($option->onlyOnce()) { $delete_features[] = $option->getId(); } // Renvoi le nouveau code HTML // $this->getLayout()->setBaseRender('content', 'application/customization/page/list.phtml', 'admin_view_default'); $row = $this->getLayout()->addPartial('row_' . $option_value->getId(), 'application_view_customization_features_list_options', 'application/customization/features/list/options/li.phtml')->setOptionValue($option_value)->setIsSortable(1)->toHtml(); $html = array('success' => 1, 'page_html' => $row, 'path' => $option_value->getPath(null, array(), "mobile"), 'delete_features' => $delete_features, 'page_id' => $option_value->getOptionId(), 'use_user_account' => $this->getApplication()->usesUserAccount()); } catch (Exception $e) { $html = array('message' => $e->getMessage(), 'message_button' => 1, 'message_loader' => 1); } $this->_sendHtml($html); } }
public function createDummyContents($option_value, $design, $category) { $dummy_content_xml = $this->_getDummyXml($design, $category); foreach ($dummy_content_xml->folders->folder as $folder) { $root_category = new Folder_Model_Category(); $root_category->addData((array) $folder->category->main->content)->save(); if ($folder->category->main->features) { $i = 1; foreach ($folder->category->main->features->feature as $feature) { $option = new Application_Model_Option(); $option->find((string) $feature->code, "code")->getObject(); $option_value_obj = new Application_Model_Option_Value(); $icon_id = NULL; if ((string) $feature->icon) { $icon = new Media_Model_Library_Image(); $icon->find((string) $feature->icon, "link"); if (!$icon->getData()) { $icon->setLibraryId($option->getLibraryId())->setLink((string) $feature->icon)->setOptionId($option->getId())->setCanBeColorized($feature->colorizable ? (string) $feature->colorizable : 1)->setPosition(0)->save(); } $icon_id = $icon->getId(); } $datas = array("tabbar_name" => (string) $feature->name ? (string) $feature->name : NULL, "icon_id" => $icon_id, "app_id" => $this->getApplication()->getId(), "option_id" => $option->getId(), "layout_id" => $this->getApplication()->getLayout()->getId(), "folder_id" => $option_value->getId(), "folder_category_id" => $root_category->getId(), "folder_category_position" => $i++); $option_value_obj->addData($datas)->save(); } } $this->unsData(); $this->setValueId($option_value->getId())->setRootCategoryId($root_category->getId())->save(); foreach ($folder->category->subcategory as $subcategory) { $sub_root_category = new Folder_Model_Category(); $sub_root_category->addData((array) $subcategory->content)->setParentId($root_category->getId())->save(); if ($folder->category->subcategory->features) { $i = 1; foreach ($folder->category->subcategory->features->children() as $feature) { $option = new Application_Model_Option(); $option->find((string) $feature->code, "code")->getObject(); $option_value_obj = new Application_Model_Option_Value(); $icon_id = NULL; if ((string) $feature->icon) { $icon = new Media_Model_Library_Image(); $icon->find((string) $feature->icon, "link"); if (!$icon->getData()) { $icon->setLibraryId($option->getLibraryId())->setLink((string) $feature->icon)->setOptionId($option->getId())->setCanBeColorized(1)->setPosition(0)->save(); } $icon_id = $icon->getId(); } $datas = array("tabbar_name" => (string) $feature->name ? (string) $feature->name : NULL, "icon_id" => $icon_id, "app_id" => $this->getApplication()->getId(), "option_id" => $option->getId(), "layout_id" => $this->getApplication()->getLayout()->getId(), "folder_id" => $option_value->getId(), "folder_category_id" => $sub_root_category->getId(), "folder_category_position" => $i++); $option_value_obj->addData($datas)->save(); } } } } }