summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2009-09-07 21:01:51 -0700
committerBharat Mediratta <bharat@menalto.com>2009-09-07 21:01:51 -0700
commitf28353f4e1c573a33dc1c3375585ab040f8be2fc (patch)
treeaa99bcedc2c7e5725733ca452323a7eb57fc9e8c /modules
parentdccfce4c00024fa170a060b1c4b1d2bb227964ae (diff)
Add the 'Internet Address' field to all items, along with proper
validation for the fields.
Diffstat (limited to 'modules')
-rw-r--r--modules/gallery/controllers/albums.php20
-rw-r--r--modules/gallery/controllers/movies.php20
-rw-r--r--modules/gallery/controllers/photos.php31
-rw-r--r--modules/gallery/helpers/album.php17
-rw-r--r--modules/gallery/helpers/photo.php16
5 files changed, 80 insertions, 24 deletions
diff --git a/modules/gallery/controllers/albums.php b/modules/gallery/controllers/albums.php
index 5f62f798..732a1789 100644
--- a/modules/gallery/controllers/albums.php
+++ b/modules/gallery/controllers/albums.php
@@ -168,15 +168,27 @@ class Albums_Controller extends Items_Controller {
$form = album::get_edit_form($album);
if ($valid = $form->validate()) {
- // Make sure that there's not a conflict
if ($album->id != 1 &&
- Database::instance()
+ $form->edit_item->dirname->value != $album->name ||
+ $form->edit_item->slug->value != $album->slug) {
+ // Make sure that there's not a conflict
+ $row = Database::instance()
+ ->select(array("name", "slug"))
->from("items")
->where("parent_id", $album->parent_id)
->where("id <>", $album->id)
+ ->open_paren()
->where("name", $form->edit_item->dirname->value)
- ->count_records()) {
- $form->edit_item->dirname->add_error("conflict", 1);
+ ->orwhere("slug", $form->edit_item->slug->value)
+ ->close_paren()
+ ->get()
+ ->current();
+ if ($row->name == $form->edit_item->dirname->value) {
+ $form->edit_item->dirname->add_error("name_conflict", 1);
+ }
+ if ($row->slug == $form->edit_item->slug->value) {
+ $form->edit_item->slug->add_error("slug_conflict", 1);
+ }
$valid = false;
}
}
diff --git a/modules/gallery/controllers/movies.php b/modules/gallery/controllers/movies.php
index c40cde9e..2ba6bb5b 100644
--- a/modules/gallery/controllers/movies.php
+++ b/modules/gallery/controllers/movies.php
@@ -72,14 +72,26 @@ class Movies_Controller extends Items_Controller {
$form = photo::get_edit_form($photo);
if ($valid = $form->validate()) {
- // Make sure that there's not a conflict
- if (Database::instance()
+ if ($form->edit_item->filename->value != $photo->name ||
+ $form->edit_item->slug->value != $photo->slug) {
+ // Make sure that there's not a name or slug conflict
+ $row = Database::instance()
+ ->select(array("name", "slug"))
->from("items")
->where("parent_id", $photo->parent_id)
->where("id <>", $photo->id)
+ ->open_paren()
->where("name", $form->edit_item->filename->value)
- ->count_records()) {
- $form->edit_item->filename->add_error("conflict", 1);
+ ->orwhere("slug", $form->edit_item->slug->value)
+ ->close_paren()
+ ->get()
+ ->current();
+ if ($row->name == $form->edit_item->filename->value) {
+ $form->edit_item->filename->add_error("name_conflict", 1);
+ }
+ if ($row->slug == $form->edit_item->slug->value) {
+ $form->edit_item->slug->add_error("slug_conflict", 1);
+ }
$valid = false;
}
}
diff --git a/modules/gallery/controllers/photos.php b/modules/gallery/controllers/photos.php
index dd6d3ab5..159501c0 100644
--- a/modules/gallery/controllers/photos.php
+++ b/modules/gallery/controllers/photos.php
@@ -62,18 +62,29 @@ class Photos_Controller extends Items_Controller {
access::required("edit", $photo);
$form = photo::get_edit_form($photo);
+ $valid = $form->validate();
if ($valid = $form->validate()) {
- if ($form->edit_item->filename->value != $photo->name) {
- // Make sure that there's not a conflict
- if (Database::instance()
- ->from("items")
- ->where("parent_id", $photo->parent_id)
- ->where("id <>", $photo->id)
- ->where("name", $form->edit_item->filename->value)
- ->count_records()) {
- $form->edit_item->filename->add_error("conflict", 1);
- $valid = false;
+ if ($form->edit_item->filename->value != $photo->name ||
+ $form->edit_item->slug->value != $photo->slug) {
+ // Make sure that there's not a name or slug conflict
+ $row = Database::instance()
+ ->select(array("name", "slug"))
+ ->from("items")
+ ->where("parent_id", $photo->parent_id)
+ ->where("id <>", $photo->id)
+ ->open_paren()
+ ->where("name", $form->edit_item->filename->value)
+ ->orwhere("slug", $form->edit_item->slug->value)
+ ->close_paren()
+ ->get()
+ ->current();
+ if ($row->name == $form->edit_item->filename->value) {
+ $form->edit_item->filename->add_error("name_conflict", 1);
}
+ if ($row->slug == $form->edit_item->slug->value) {
+ $form->edit_item->slug->add_error("slug_conflict", 1);
+ }
+ $valid = false;
}
}
diff --git a/modules/gallery/helpers/album.php b/modules/gallery/helpers/album.php
index d995b6ad..bae480b7 100644
--- a/modules/gallery/helpers/album.php
+++ b/modules/gallery/helpers/album.php
@@ -97,10 +97,14 @@ class album_Core {
->label(t("Add an album to %album_title", array("album_title" => $parent->title)));
$group->input("title")->label(t("Title"));
$group->textarea("description")->label(t("Description"));
- $group->input("name")->label(t("Directory Name"))
+ $group->input("name")->label(t("Directory name"))
->callback("item::validate_no_slashes")
->error_messages("no_slashes", t("The directory name can't contain the \"/\" character"));
- $group->input("slug")->label(t("Internet Address"));
+ $group->input("slug")->label(t("Internet Address"))
+ ->callback("item::validate_url_safe")
+ ->error_messages(
+ "not_url_safe",
+ t("The internet address should contain only letters, numbers, hyphens and underscores"));
$group->hidden("type")->value("album");
$group->submit("")->value(t("Create"));
$form->add_rules_from(ORM::factory("item"));
@@ -119,11 +123,18 @@ class album_Core {
if ($parent->id != 1) {
$group->input("dirname")->label(t("Directory Name"))->value($parent->name)
->rules("required")
+ ->error_messages("name_conflict", t("There is already a photo or album with this 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 \".\""));
- $group->input("slug")->label(t("Internet Address"))->value($parent->slug);
+ $group->input("slug")->label(t("Internet Address"))->value($parent->slug)
+ ->error_messages(
+ "slug_conflict", t("There is already a photo or album with this internet address"))
+ ->callback("item::validate_url_safe")
+ ->error_messages(
+ "not_url_safe",
+ t("The internet address should contain only letters, numbers, hyphens and underscores"));
}
$sort_order = $group->group("sort_order", array("id" => "gAlbumSortOrder"))
diff --git a/modules/gallery/helpers/photo.php b/modules/gallery/helpers/photo.php
index 12515330..a56c7e3c 100644
--- a/modules/gallery/helpers/photo.php
+++ b/modules/gallery/helpers/photo.php
@@ -144,7 +144,11 @@ class photo_Core {
$group->input("title")->label(t("Title"));
$group->textarea("description")->label(t("Description"));
$group->input("name")->label(t("Filename"));
- $group->input("slug")->label(t("Internet Address"))->value($photo->slug);
+ $group->input("slug")->label(t("Internet Address"))->value($photo->slug)
+ ->callback("item::validate_url_safe")
+ ->error_messages(
+ "not_url_safe",
+ t("The internet address should contain only letters, numbers, hyphens and underscores"));
$group->upload("file")->label(t("File"))->rules("required|allow[jpg,png,gif,flv,mp4]");
$group->hidden("type")->value("photo");
$group->submit("")->value(t("Upload"));
@@ -159,12 +163,18 @@ class photo_Core {
$group->input("title")->label(t("Title"))->value($photo->title);
$group->textarea("description")->label(t("Description"))->value($photo->description);
$group->input("filename")->label(t("Filename"))->value($photo->name)
- ->error_messages("conflict", t("There is already a file with this name"))
+ ->error_messages("name_conflict", t("There is already a photo or album with this name"))
->callback("item::validate_no_slashes")
->error_messages("no_slashes", t("The photo name can't contain a \"/\""))
->callback("item::validate_no_trailing_period")
->error_messages("no_trailing_period", t("The photo name can't end in \".\""));
- $group->input("slug")->label(t("Internet Address"))->value($photo->slug);
+ $group->input("slug")->label(t("Internet Address"))->value($photo->slug)
+ ->callback("item::validate_url_safe")
+ ->error_messages(
+ "slug_conflict", t("There is already a photo or album with this internet address"))
+ ->error_messages(
+ "not_url_safe",
+ t("The internet address should contain only letters, numbers, hyphens and underscores"));
module::event("item_edit_form", $photo, $form);