Example #1
0
 public function actionCreate()
 {
     $page = new Page();
     // I need some form of post checking
     if (Input::post('page.title', false)) {
         try {
             $success = false;
             $page->site_id = (int) Input::post('page.site_id');
             $page->layout_id = Input::post('page.layout_id');
             $page->title = Input::post('page.title');
             $page->subtitle = Input::post('page.subtitle');
             $page->description = Input::post('page.description');
             $page->status = Input::post('page.status');
             $page->priority = Input::post('page.priority');
             $page->change_frequency = Input::post('page.change_frequency');
             $uri = Input::post('page.uri');
             if (strpos($uri, '@@') !== false) {
                 $page->errors['uri'][] = 'You may not add your own special "@@" pages, only the system may do that.';
             } else {
                 $page->uri = $uri;
             }
             // If there are validation errors, fail.
             if ($page->hasErrors()) {
                 throw new \OutOfBoundsException('');
             }
             // Attempt database write.
             list($success, $count) = $page->insert();
             // If database wrote and actually added a record.
             if ($success and $count > 0) {
                 $this->flash->set('success', "Successfully added {$page->title}.");
                 $this->application->redirect(Url::site('/pages'));
             } else {
                 $this->flash->set('error', "Unable to save <em>{$page->title}</em>.");
             }
         } catch (\Nerd\DB\Exception $e) {
             $this->flash->set('error', 'There was a database error…');
         } catch (\OutOfBoundsException $e) {
             $form = $page->form($this->form())->action("/pages/create");
             foreach ($page->errors as $field => $errors) {
                 $form->findByAttribute('id', "page_{$field}")->wrap('<div class="control-group error">', '</div>');
             }
             $this->flash->set('error', $page->errors);
         }
     }
     if (!isset($form)) {
         $form = $page->form($this->form())->action(Url::site('/pages/create'));
     }
     $form->container('div', new Reset(['class' => 'btn btn-danger']), new Submit(['class' => 'btn btn-primary']))->class('form-actions');
     return $this->template->partial('content', 'pages/new', ['form' => $form, 'page' => $page]);
 }