2011-06-12 06:17:46 +00:00
|
|
|
<?php defined("SYSPATH") or die("No direct script access.");
|
|
|
|
/**
|
|
|
|
* Gallery - a web based photo album viewer and editor
|
|
|
|
* Copyright (C) 2000-2011 Bharat Mediratta
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or (at
|
|
|
|
* your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful, but
|
|
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
class Admin_Pages_Controller extends Admin_Controller {
|
|
|
|
public function index() {
|
|
|
|
// Display the admin page.
|
|
|
|
$view = new Admin_View("admin.html");
|
|
|
|
$view->page_title = t("Manage pages");
|
|
|
|
$view->content = new View("admin_pages.html");
|
|
|
|
$query = ORM::factory("static_page");
|
|
|
|
$view->content->pages = $query->order_by("name", "ASC")->find_all();
|
|
|
|
print $view;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function createpage() {
|
|
|
|
// Display a form for creating a new page.
|
|
|
|
$view = new Admin_View("admin.html");
|
|
|
|
$view->page_title = t("Create page");
|
|
|
|
$view->content = new View("admin_pages_new.html");
|
|
|
|
$view->content->form = $this->get_new_page_form();
|
|
|
|
print $view;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function editpage($id) {
|
|
|
|
// Display a form for editing an existing page.
|
|
|
|
$existing_page = ORM::factory("static_page", $id);
|
|
|
|
$view = new Admin_View("admin.html");
|
|
|
|
$view->page_title = t("Edit page");
|
|
|
|
$view->content = new View("admin_pages_new.html");
|
|
|
|
$view->content->form = $this->get_edit_page_form($existing_page);
|
|
|
|
print $view;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function savepage() {
|
|
|
|
// Save a page to the database.
|
|
|
|
|
|
|
|
access::verify_csrf();
|
|
|
|
|
|
|
|
// Store form values into variables.
|
|
|
|
$page_id = Input::instance()->post("page_id");
|
|
|
|
$page_name = urlencode(trim(Input::instance()->post("page_name")));
|
|
|
|
$page_title = Input::instance()->post("page_title");
|
|
|
|
$page_code = Input::instance()->post("page_code");
|
2011-06-13 04:49:57 +00:00
|
|
|
$display_menu = Input::instance()->post("display_menu");
|
2011-06-12 06:17:46 +00:00
|
|
|
|
|
|
|
// If $page_id is set, update an existing page.
|
|
|
|
if (isset($page_id)) {
|
|
|
|
$update_page = ORM::factory("static_page", $page_id);
|
|
|
|
$update_page->title = $page_title;
|
|
|
|
$update_page->html_code = $page_code;
|
2011-06-13 04:49:57 +00:00
|
|
|
$update_page->display_menu = $display_menu;
|
2011-06-12 06:17:46 +00:00
|
|
|
$update_page->save();
|
|
|
|
message::success(t("Page %page_name updated", array("page_name" => $update_page->name)));
|
|
|
|
log::success("pages", t("Page %page_name updated", array("page_name" => $update_page->name)));
|
|
|
|
url::redirect("admin/pages");
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// If $page_id is not set, we are dealing with a new page.
|
|
|
|
// Check and make sure a page with the same names doesn't already exist.
|
|
|
|
$existing_page = ORM::factory("static_page")
|
|
|
|
->where("name", "=", $page_name)
|
|
|
|
->find_all();
|
|
|
|
|
|
|
|
// If the page doesn't exist, save it to the database.
|
|
|
|
if (count($existing_page) == 0) {
|
|
|
|
$new_page = ORM::factory("static_page");
|
|
|
|
$new_page->name = $page_name;
|
|
|
|
$new_page->title = $page_title;
|
|
|
|
$new_page->html_code = $page_code;
|
2011-06-13 04:49:57 +00:00
|
|
|
$new_page->display_menu = $display_menu;
|
2011-06-12 06:17:46 +00:00
|
|
|
$new_page->save();
|
|
|
|
message::success(t("Page %page_name created", array("page_name" => $page_name)));
|
|
|
|
log::success("pages", t("Page %page_name created", array("page_name" => $page_name)));
|
|
|
|
url::redirect("admin/pages");
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// If the page does exist, ask the user if they want to overwrite the old page with the new one.
|
|
|
|
message::error(t("Page %page_name already exists, press Save again to overwrite.", array("page_name" => $page_name)));
|
|
|
|
$view = new Admin_View("admin.html");
|
|
|
|
$view->page_title = t("Edit page");
|
|
|
|
$view->content = new View("admin_pages_new.html");
|
2011-06-13 04:49:57 +00:00
|
|
|
$view->content->form = $this->get_overwrite_page_form($existing_page[0]->id, $page_name, $page_title, $page_code, $display_menu);
|
2011-06-12 06:17:46 +00:00
|
|
|
print $view;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function form_delete($id) {
|
|
|
|
// Display a form asking the user if they want to delete a page.
|
|
|
|
$one_page = ORM::factory("static_page", $id);
|
|
|
|
if ($one_page->loaded()) {
|
|
|
|
print $this->get_delete_form($one_page);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function delete($id) {
|
|
|
|
// Delete the specified page.
|
|
|
|
|
|
|
|
access::verify_csrf();
|
|
|
|
|
|
|
|
// Make sure $id belongs to an actual page.
|
|
|
|
$one_page = ORM::factory("static_page", $id);
|
|
|
|
if (!$one_page->loaded()) {
|
|
|
|
throw new Kohana_404_Exception();
|
|
|
|
}
|
|
|
|
|
|
|
|
// If the form validates, delete the specified page.
|
|
|
|
$form = $this->get_delete_form($one_page);
|
|
|
|
if ($form->validate()) {
|
|
|
|
$name = $one_page->name;
|
|
|
|
$one_page->delete();
|
|
|
|
message::success(t("Deleted page %page_name", array("page_name" => $name)));
|
|
|
|
log::success("pages", t("Deleted page %page_name", array("page_name" => $name)));
|
|
|
|
json::reply(array("result" => "success", "location" => url::site("admin/pages")));
|
|
|
|
} else {
|
|
|
|
print $form;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function form_rename($id) {
|
|
|
|
// Display a form to allow the user to rename a page.
|
|
|
|
$one_page = ORM::factory("static_page", $id);
|
|
|
|
if ($one_page->loaded()) {
|
|
|
|
print InPlaceEdit::factory(urldecode($one_page->name))
|
|
|
|
->action("admin/pages/rename/$id")
|
|
|
|
->render();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function rename($id) {
|
|
|
|
// Rename an existing page.
|
|
|
|
access::verify_csrf();
|
|
|
|
|
|
|
|
// Make sure the page specified by $id exists.
|
|
|
|
$one_page = ORM::factory("static_page", $id);
|
|
|
|
if (!$one_page->loaded()) {
|
|
|
|
throw new Kohana_404_Exception();
|
|
|
|
}
|
|
|
|
|
|
|
|
$in_place_edit = InPlaceEdit::factory($one_page->name)
|
|
|
|
->action("admin/pages/rename/$one_page->id")
|
|
|
|
->rules(array("required", "length[1,64]"));
|
|
|
|
|
|
|
|
// If the form validates, and if the new name doesn't already exist, rename the page.
|
|
|
|
if ($in_place_edit->validate()) {
|
|
|
|
$old_name = $one_page->name;
|
|
|
|
$new_name = urlencode(trim($in_place_edit->value()));
|
|
|
|
$new_name_exists = ORM::factory("static_page")->where("name", "=", $new_name)->find_all();
|
|
|
|
if (count($new_name_exists) == 0) {
|
|
|
|
$one_page->name = $new_name;
|
|
|
|
$one_page->save();
|
|
|
|
$message = t("Renamed page <i>%old_name</i> to <i>%new_name</i>",
|
|
|
|
array("old_name" => $old_name, "new_name" => $new_name));
|
|
|
|
message::success($message);
|
|
|
|
log::success("pages", $message);
|
|
|
|
json::reply(array("result" => "success", "location" => url::site("admin/pages")));
|
|
|
|
} else {
|
|
|
|
json::reply(array("result" => "error", "form" => (string)$in_place_edit->render()));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
json::reply(array("result" => "error", "form" => (string)$in_place_edit->render()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static function get_delete_form($one_page) {
|
|
|
|
// Generate a new form asking the user if they want to delete a page.
|
|
|
|
$form = new Forge("admin/pages/delete/$one_page->id", "", "post", array("id" => "g-delete-pages-form"));
|
|
|
|
$group = $form->group("delete_page")
|
|
|
|
->label(t("Really delete page %page_name?", array("page_name" => $one_page->name)));
|
|
|
|
$group->submit("")->value(t("Delete Page"));
|
|
|
|
return $form;
|
|
|
|
}
|
|
|
|
|
|
|
|
private function get_new_page_form() {
|
|
|
|
// Generate a form for creating a new page.
|
|
|
|
$form = new Forge("admin/pages/savepage", "", "post",
|
|
|
|
array("id" => "g-pages-admin-form"));
|
|
|
|
|
|
|
|
$pages_group = $form->group("new_page");
|
|
|
|
$pages_group->input("page_name")
|
|
|
|
->label(t("Name"));
|
|
|
|
$pages_group->input("page_title")
|
|
|
|
->label(t("Title"));
|
|
|
|
$pages_group->textarea("page_code")
|
|
|
|
->label(t("HTML Code"));
|
2011-06-13 04:49:57 +00:00
|
|
|
$pages_group->checkbox("display_menu")
|
|
|
|
->label(t("Display in menu?"))
|
|
|
|
->checked(false);
|
2011-06-12 06:17:46 +00:00
|
|
|
$pages_group->submit("save_page")
|
|
|
|
->value(t("Save"));
|
|
|
|
|
|
|
|
return $form;
|
|
|
|
}
|
|
|
|
|
2011-06-13 04:49:57 +00:00
|
|
|
private function get_overwrite_page_form($id, $name, $title, $html_code, $display_menu) {
|
2011-06-12 06:17:46 +00:00
|
|
|
// Generate a form for overwriting an existing page.
|
|
|
|
$form = new Forge("admin/pages/savepage", "", "post",
|
|
|
|
array("id" => "g-pages-admin-form"));
|
|
|
|
|
|
|
|
$pages_group = $form->group("new_page");
|
|
|
|
$pages_group->hidden("page_id")
|
|
|
|
->value($id);
|
|
|
|
$pages_group->input("page_name")
|
|
|
|
->label(t("Name"))
|
|
|
|
->readonly()
|
|
|
|
->value($name);
|
|
|
|
$pages_group->input("page_title")
|
|
|
|
->label(t("Title"))
|
|
|
|
->value($title);
|
|
|
|
$pages_group->textarea("page_code")
|
|
|
|
->label(t("HTML Code"))
|
|
|
|
->value($html_code);
|
2011-06-13 04:49:57 +00:00
|
|
|
$pages_group->checkbox("display_menu")
|
|
|
|
->label(t("Display in menu?"))
|
|
|
|
->checked($display_menu);
|
2011-06-12 06:17:46 +00:00
|
|
|
$pages_group->submit("save_page")
|
|
|
|
->value(t("Save"));
|
|
|
|
|
|
|
|
return $form;
|
|
|
|
}
|
|
|
|
|
|
|
|
private function get_edit_page_form($existing_page) {
|
|
|
|
// Generate a form for editing an existing page. Reuse the overwrite form for as it's basically the same thing.
|
2011-06-13 04:49:57 +00:00
|
|
|
return ($this->get_overwrite_page_form($existing_page->id, $existing_page->name, $existing_page->title, $existing_page->html_code, $existing_page->display_menu));
|
2011-06-12 06:17:46 +00:00
|
|
|
}
|
|
|
|
}
|