diff options
Diffstat (limited to 'core/helpers')
-rw-r--r-- | core/helpers/core_event.php | 13 | ||||
-rw-r--r-- | core/helpers/core_organize.php | 63 | ||||
-rw-r--r-- | core/helpers/item.php | 20 |
3 files changed, 85 insertions, 11 deletions
diff --git a/core/helpers/core_event.php b/core/helpers/core_event.php index c9e4e743..d1869360 100644 --- a/core/helpers/core_event.php +++ b/core/helpers/core_event.php @@ -44,19 +44,12 @@ class core_event_Core { ->in("id", $event_parms->itemids[0]) ->find(); - $generalPane = new View("organize_edit_general.html"); - $generalPane->item = $item; - $event_parms->panes[] = array("label" => $item->is_album() ? t("Edit Album") : t("Edit Photo"), - "content" => $generalPane); + "content" => core_organize::getGeneralEditForm($item)); if ($item->is_album()) { - $sortPane = new View("organize_edit_sort.html"); - $sortPane->sort_by = $item->sort_column; - $sortPane->sort_order = - empty($item->sort_order) || $item->sort_order == "ASC" ? t("Ascending") : t("Descending"); - - $event_parms->panes[] = array("label" => t("Sort Order"), "content" => $sortPane); + $event_parms->panes[] = array("label" => t("Sort Order"), + "content" => core_organize::getSortEditForm($item)); } } diff --git a/core/helpers/core_organize.php b/core/helpers/core_organize.php new file mode 100644 index 00000000..6ccc0197 --- /dev/null +++ b/core/helpers/core_organize.php @@ -0,0 +1,63 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2009 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 core_organize_Core { + static function getGeneralEditForm($item) { + $generalPane = new Forge("core_organize/__FUNCTION__", "", "post", + array("id" => "gEditGeneral", "ref" => "general")); + // In this case we know there is only 1 item, but in general we should loop + // and create multiple hidden items. + $generalPane->hidden("item[]")->value($item->id); + $generalPane->input("title")->label(t("Title"))->value($item->title); + $generalPane->textarea("description")->label(t("Description"))->value($item->description); + $generalPane->input("dirname")->label(t("Path Name"))->value($item->name) + ->callback("item::validate_no_slashes") + ->error_messages("no_slashes", t("The directory name can't contain a \"/\"")) + ->callback("item::validate_no_trailing_period") + ->error_messages("no_trailing_period", t("The directory name can't end in \".\"")) + ->callback("item::validate_no_name_conflict") + ->error_messages("conflict", t("The path name is not unique")); + + return $generalPane; + } + + static function getSortEditForm($item) { + $sortPane = new Forge("core_organize/__FUNCTION__", "", "post", + array("id" => "gEditSort", "ref" => "sort")); + $sortPane->hidden("item[]")->value($item->id); + $sortPane->dropdown("column", array("id" => "gAlbumSortColumn")) + ->label(t("Sort by")) + ->options(array("weight" => t("Default"), + "captured" => t("Capture Date"), + "created" => t("Creation Date"), + "title" => t("Title"), + "updated" => t("Updated Date"), + "view_count" => t("Number of views"), + "rand_key" => t("Random"))) + ->selected($item->sort_column); + $sortPane->dropdown("direction", array("id" => "gAlbumSortDirection")) + ->label(t("Order")) + ->options(array("ASC" => t("Ascending"), + "DESC" => t("Descending"))) + ->selected($item->sort_order); + + return $sortPane; + } +} diff --git a/core/helpers/item.php b/core/helpers/item.php index 8ff09535..7daaf1e1 100644 --- a/core/helpers/item.php +++ b/core/helpers/item.php @@ -79,9 +79,27 @@ class item_Core { } } - static function validate_no_trailing_period($input) { + static function validate_no_trailing_period($input) { if (rtrim($input->value, ".") !== $input->value) { $input->add_error("no_trailing_period", 1); } } + + static function validate_no_name_conflict($input) { + $itemid = Input::instance()->post("item"); + if (is_array($itemid)) { + $itemid = $itemid[0]; + } + $item = ORM::factory("item") + ->in("id", $itemid) + ->find(); + if (Database::instance() + ->from("items") + ->where("parent_id", $item->parent_id) + ->where("id <>", $item->id) + ->where("name", $input->value) + ->count_records()) { + $input->add_error("conflict", 1); + } + } }
\ No newline at end of file |