Add the 'Internet Address' field to all items, along with proper

validation for the fields.
This commit is contained in:
Bharat Mediratta
2009-09-07 21:01:51 -07:00
parent dccfce4c00
commit f28353f4e1
5 changed files with 80 additions and 24 deletions
+16 -4
View File
@@ -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;
}
}
+16 -4
View File
@@ -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;
}
}
+21 -10
View File
@@ -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;
}
}
+14 -3
View File
@@ -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"))
+13 -3
View File
@@ -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);