/**
  * 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;
     }
 }