/** * Saves New Navnode * */ public function actionSaveNavnode() { $this->requirePostRequest(); $navnode = new NavigationBuilder_NavnodeModel(); $navnode->id = craft()->request->getPost('navnodeId'); $navnode->name = craft()->request->getPost('name'); $navnode->handle = craft()->request->getPost('handle'); $navnode->description = craft()->request->getPost('description'); if ($navnode->validate()) { if (craft()->navigationBuilder_navnode->saveNavnodeService($navnode)) { craft()->userSession->setNotice(Craft::t('Navnode saved')); $this->redirectToPostedUrl($navnode); } else { craft()->userSession->setError(Craft::t('Could not save navnode')); } } else { $navnode->getErrors(); } craft()->urlManager->setRouteVariables(array('navnode' => $navnode)); }
/** * Save New Navnode * */ public function saveNavnodeService(NavigationBuilder_NavnodeModel $navnode) { if ($navnode->id) { $navnodeRecord = NavigationBuilder_NavnodeRecord::model()->findById($navnode->id); if (!$navnodeRecord) { throw new Exception(Craft::t('No navnode exists with the ID “{id}”', array('id' => $navnode->id))); } $isNewNavnode = false; } else { $navnodeRecord = new NavigationBuilder_NavnodeRecord(); $isNewNavnode = true; } $navnodeRecord->name = $navnode->name; $navnodeRecord->handle = $navnode->handle; $navnodeRecord->description = $navnode->description; // $navnodeRecord->navNode = JsonHelper::encode($navnode->navNode); $navnodeRecord->validate(); $navnode->addErrors($navnodeRecord->getErrors()); if (!$navnode->hasErrors()) { $transaction = craft()->db->getCurrentTransaction() === null ? craft()->db->beginTransaction() : null; try { $navnodeRecord->save(); if (!$navnode->id) { $navnode->id = $navnodeRecord->id; } $this->_navnodesById[$navnode->id] = $navnode; if ($transaction !== null) { $transaction->commit(); } } catch (\Exception $e) { if ($transaction !== null) { $transaction->rollback(); } throw $e; } return true; } else { return false; } }