Example #1
0
 public function action_edit($name = '')
 {
     $page = Model_Page::get_by_title($name);
     $new_page = !$page;
     if (Input::method() == 'POST') {
         $val = Model_Page::validate($new_page ? 'create' : 'edit');
         if ($val->run(array('title' => $name))) {
             $page = $page ?: Model_Page::forge();
             $page->title = $val->validated('title');
             $page->body = $val->validated('body');
             $page->brief = $val->validated('brief');
             if (!Input::post('preview')) {
                 if ($page->save()) {
                     Session::set_flash('success', $new_page ? 'Added page.' : 'Updated page.');
                     Response::redirect($name);
                 } else {
                     Session::set_flash('error', $new_page ? 'Could not save page.' : 'Could not update page.');
                 }
             }
         } else {
             Session::set_flash('error', $val->error());
         }
         $this->template->set_global('body_html', Model_Page::parse_markdown(Input::post('body')), false);
     } else {
         if ($page) {
             $page->brief = '';
         }
     }
     $this->template->set_global('page', $page, false);
     $this->template->title = ($new_page ? 'Creating ' : 'Editing ') . (empty($name) ? '(top)' : $name);
     $this->template->name = $name;
     $this->template->content = View::forge('page/edit');
 }
Example #2
0
 public function action_create()
 {
     \View::set_global('title', 'Add New');
     if (\Input::post()) {
         $val = Model_Page::validate('create');
         // Upload image and display errors if there are any
         $image = $this->upload_image();
         if (!$image['exists'] && \Config::get('details.image.required', false) && empty($item->image)) {
             // No previous images and image is not selected and it is required
             \Messages::error('<strong>There was an error while trying to upload page image</strong>');
             \Messages::error('You have to select image');
         } elseif ($image['errors']) {
             \Messages::error('<strong>There was an error while trying to upload page image</strong>');
             foreach ($image['errors'] as $error) {
                 \Messages::error($error);
             }
         }
         if ($val->run() && $image['is_valid'] && !(!$image['exists'] && \Config::get('details.image.required', false))) {
             // Get POST values
             $insert = \Input::post();
             // Prepare some values
             //				$insert['published_at'] = !empty($insert['published_at']) ? strtotime($insert['published_at']) : \Date::forge()->get_timestamp();
             $insert['active_from'] = !empty($insert['active_from']) ? strtotime($insert['active_from']) : NULL;
             $insert['active_to'] = !empty($insert['active_to']) ? strtotime($insert['active_to']) : NULL;
             if ($insert['status'] != 2) {
                 unset($insert['active_from']);
                 unset($insert['active_to']);
             }
             $item = Model_Page::forge($insert);
             try {
                 $item->save();
                 // Validate and insert page slug into SEO database table
                 $val_seo = Model_Seo::validate('create_seo');
                 $insert_seo = array('content_id' => $item->id, 'slug' => \Inflector::friendly_title($item->title, '-', true));
                 while (!$val_seo->run($insert_seo)) {
                     $insert_seo['slug'] = \Str::increment($insert_seo['slug'], 1, '-');
                 }
                 $item_seo = Model_Seo::forge($insert_seo);
                 $item_seo->save();
                 // END OF: SEO
                 // Insert page images
                 if ($this->_image_data) {
                     $item_image = array(array('id' => 0, 'data' => array('content_id' => $item->id, 'image' => $this->_image_data[0]['saved_as'], 'alt_text' => \Input::post('alt_text', ''), 'cover' => 1, 'sort' => 1)));
                     Model_Page::bind_images($item_image);
                 }
                 \Messages::success('Page successfully created.');
                 \Response::redirect(\Input::post('update', false) ? \Uri::create('admin/page/update/' . $item->id) : \Uri::admin('current'));
             } catch (\Database_Exception $e) {
                 // show validation errors
                 \Messages::error('<strong>There was an error while trying to create page</strong>');
                 // Uncomment lines below to show database errors
                 $errors = $e->getMessage();
                 \Messages::error($errors);
             }
         } else {
             if ($val->error() != array()) {
                 // show validation errors
                 \Messages::error('<strong>There was an error while trying to create page</strong>');
                 foreach ($val->error() as $e) {
                     \Messages::error($e->get_message());
                 }
             }
         }
         // Delete uploaded image if there is page saving error
         if (isset($this->_image_data)) {
             $this->delete_image($this->_image_data[0]['saved_as']);
         }
     }
     \Theme::instance()->set_partial('content', $this->view_dir . 'create');
 }