summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xinstaller/install.sql11
-rw-r--r--modules/akismet/helpers/akismet_event.php16
-rw-r--r--modules/akismet/helpers/akismet_menu.php36
-rw-r--r--modules/comment/helpers/comment_event.php28
-rw-r--r--modules/comment/helpers/comment_menu.php37
-rw-r--r--modules/comment/helpers/comment_search.php34
-rw-r--r--modules/comment/models/comment.php2
-rw-r--r--modules/digibug/helpers/digibug_event.php (renamed from modules/digibug/helpers/digibug_menu.php)8
-rw-r--r--modules/g2_import/helpers/g2_import.php2
-rw-r--r--modules/g2_import/helpers/g2_import_event.php9
-rw-r--r--modules/g2_import/helpers/g2_import_menu.php29
-rw-r--r--modules/gallery/controllers/albums.php10
-rw-r--r--modules/gallery/controllers/movies.php5
-rw-r--r--modules/gallery/controllers/photos.php5
-rw-r--r--modules/gallery/helpers/access.php52
-rw-r--r--modules/gallery/helpers/album.php16
-rw-r--r--modules/gallery/helpers/gallery.php118
-rw-r--r--modules/gallery/helpers/gallery_event.php6
-rw-r--r--modules/gallery/helpers/gallery_installer.php27
-rw-r--r--modules/gallery/helpers/gallery_menu.php164
-rw-r--r--modules/gallery/helpers/gallery_search.php24
-rw-r--r--modules/gallery/helpers/gallery_theme.php6
-rw-r--r--modules/gallery/helpers/photo.php14
-rw-r--r--modules/gallery/libraries/Admin_View.php17
-rw-r--r--modules/gallery/libraries/Form_Script.php66
-rw-r--r--modules/gallery/libraries/MY_View.php7
-rw-r--r--modules/gallery/libraries/ORM_MPTT.php84
-rw-r--r--modules/gallery/libraries/Theme_View.php61
-rw-r--r--modules/gallery/models/item.php53
-rw-r--r--modules/gallery/module.info2
-rw-r--r--modules/gallery/tests/Access_Helper_Test.php42
-rw-r--r--modules/gallery/tests/Database_Test.php8
-rw-r--r--modules/gallery/tests/DrawForm_Test.php39
-rw-r--r--modules/gallery/tests/Gallery_Installer_Test.php10
-rw-r--r--modules/gallery/tests/Item_Model_Test.php6
-rw-r--r--modules/gallery/tests/ORM_MPTT_Test.php14
-rw-r--r--modules/gallery/tests/Photo_Helper_Test.php4
-rw-r--r--modules/gallery/tests/xss_data.txt20
-rw-r--r--modules/gallery/views/admin_maintenance_task.html.php15
-rw-r--r--modules/gallery/views/form.html.php2
-rw-r--r--modules/gallery/views/item_edit.html.php9
-rw-r--r--modules/notification/helpers/notification.php4
-rw-r--r--modules/notification/helpers/notification_event.php19
-rw-r--r--modules/notification/helpers/notification_menu.php39
-rw-r--r--modules/organize/helpers/organize_event.php (renamed from modules/organize/helpers/organize_menu.php)4
-rw-r--r--modules/recaptcha/helpers/recaptcha_event.php8
-rw-r--r--modules/recaptcha/helpers/recaptcha_menu.php28
-rw-r--r--modules/search/helpers/search.php11
-rw-r--r--modules/server_add/helpers/server_add_event.php (renamed from modules/server_add/helpers/server_add_menu.php)6
-rw-r--r--modules/slideshow/helpers/slideshow_event.php30
-rw-r--r--modules/slideshow/helpers/slideshow_menu.php51
-rw-r--r--modules/tag/controllers/tags.php6
-rw-r--r--modules/tag/helpers/tag_event.php36
-rw-r--r--modules/tag/helpers/tag_menu.php28
-rw-r--r--modules/tag/helpers/tag_search.php24
-rw-r--r--modules/tag/js/tag.js14
-rw-r--r--modules/tag/views/tag_block.html.php4
-rw-r--r--modules/user/controllers/admin_users.php2
-rw-r--r--modules/user/helpers/user.php11
-rw-r--r--modules/user/helpers/user_event.php8
-rw-r--r--modules/user/helpers/user_menu.php28
-rw-r--r--modules/watermark/helpers/watermark_event.php (renamed from modules/watermark/helpers/watermark_menu.php)4
62 files changed, 629 insertions, 854 deletions
diff --git a/installer/install.sql b/installer/install.sql
index 36ccaaff..48b504ba 100755
--- a/installer/install.sql
+++ b/installer/install.sql
@@ -141,7 +141,7 @@ CREATE TABLE {items} (
`created` int(9) default NULL,
`description` varchar(2048) default NULL,
`height` int(9) default NULL,
- `left` int(9) NOT NULL,
+ `left_ptr` int(9) NOT NULL,
`level` int(9) NOT NULL,
`mime_type` varchar(64) default NULL,
`name` varchar(255) default NULL,
@@ -152,7 +152,7 @@ CREATE TABLE {items} (
`resize_dirty` tinyint(1) default '1',
`resize_height` int(9) default NULL,
`resize_width` int(9) default NULL,
- `right` int(9) NOT NULL,
+ `right_ptr` int(9) NOT NULL,
`sort_column` varchar(64) default NULL,
`sort_order` char(4) default 'ASC',
`thumb_dirty` tinyint(1) default '1',
@@ -169,7 +169,8 @@ CREATE TABLE {items} (
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
KEY `type` (`type`),
- KEY `random` (`rand_key`)
+ KEY `random` (`rand_key`),
+ KEY `weight` (`weight`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;
INSERT INTO {items} VALUES (1,NULL,NULL,UNIX_TIMESTAMP(),'',NULL,1,1,NULL,NULL,NULL,0,NULL,'',1,NULL,NULL,2,'weight','ASC',1,NULL,NULL,'Gallery','album',UNIX_TIMESTAMP(),0,1,NULL,'1','1');
@@ -225,7 +226,7 @@ CREATE TABLE {modules} (
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;
-INSERT INTO {modules} VALUES (1,1,'gallery',7);
+INSERT INTO {modules} VALUES (1,1,'gallery',10);
INSERT INTO {modules} VALUES (2,1,'user',1);
INSERT INTO {modules} VALUES (3,1,'comment',2);
INSERT INTO {modules} VALUES (4,1,'organize',1);
@@ -277,7 +278,7 @@ CREATE TABLE {search_records} (
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;
-INSERT INTO {search_records} VALUES (1,1,0,' Gallery');
+INSERT INTO {search_records} VALUES (1,1,0,' Gallery');
DROP TABLE IF EXISTS {sessions};
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
diff --git a/modules/akismet/helpers/akismet_event.php b/modules/akismet/helpers/akismet_event.php
index bffc0fd7..d6cde222 100644
--- a/modules/akismet/helpers/akismet_event.php
+++ b/modules/akismet/helpers/akismet_event.php
@@ -51,4 +51,20 @@ class akismet_event_Core {
akismet::submit_ham($new);
}
}
+
+ static function admin_menu($menu, $theme) {
+ $menu->get("settings_menu")
+ ->append(Menu::factory("link")
+ ->id("akismet")
+ ->label(t("Akismet"))
+ ->url(url::site("admin/akismet")));
+
+ if (module::get_var("akismet", "api_key")) {
+ $menu->get("statistics_menu")
+ ->append(Menu::factory("link")
+ ->id("akismet")
+ ->label(t("Akismet"))
+ ->url(url::site("admin/akismet/stats")));
+ }
+ }
}
diff --git a/modules/akismet/helpers/akismet_menu.php b/modules/akismet/helpers/akismet_menu.php
deleted file mode 100644
index ebd948d6..00000000
--- a/modules/akismet/helpers/akismet_menu.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?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 akismet_menu_Core {
- static function admin($menu, $theme) {
- $menu->get("settings_menu")
- ->append(Menu::factory("link")
- ->id("akismet")
- ->label(t("Akismet"))
- ->url(url::site("admin/akismet")));
-
- if (module::get_var("akismet", "api_key")) {
- $menu->get("statistics_menu")
- ->append(Menu::factory("link")
- ->id("akismet")
- ->label(t("Akismet"))
- ->url(url::site("admin/akismet/stats")));
- }
- }
-}
diff --git a/modules/comment/helpers/comment_event.php b/modules/comment/helpers/comment_event.php
index 3850a001..0234aea9 100644
--- a/modules/comment/helpers/comment_event.php
+++ b/modules/comment/helpers/comment_event.php
@@ -21,4 +21,32 @@ class comment_event_Core {
static function item_deleted($item) {
Database::instance()->delete("comments", array("item_id" => $item->id));
}
+
+ static function admin_menu($menu, $theme) {
+ $menu->get("content_menu")
+ ->append(Menu::factory("link")
+ ->id("comments")
+ ->label(t("Comments"))
+ ->url(url::site("admin/comments")));
+ }
+
+ static function photo_menu($menu, $theme) {
+ $menu
+ ->append(Menu::factory("link")
+ ->id("comments")
+ ->label(t("View comments on this item"))
+ ->url("#comments")
+ ->css_id("gCommentsLink"));
+ }
+
+ static function item_index_data($item, $data) {
+ foreach (Database::instance()
+ ->select("text")
+ ->from("comments")
+ ->where("item_id", $item->id)
+ ->get()
+ ->as_array() as $row) {
+ $data[] = $row->text;
+ }
+ }
}
diff --git a/modules/comment/helpers/comment_menu.php b/modules/comment/helpers/comment_menu.php
deleted file mode 100644
index 01881921..00000000
--- a/modules/comment/helpers/comment_menu.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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 comment_menu_Core {
- static function admin($menu, $theme) {
- $menu->get("content_menu")
- ->append(Menu::factory("link")
- ->id("comments")
- ->label(t("Comments"))
- ->url(url::site("admin/comments")));
- }
-
- static function photo($menu, $theme) {
- $menu
- ->append(Menu::factory("link")
- ->id("comments")
- ->label(t("View comments on this item"))
- ->url("#comments")
- ->css_id("gCommentsLink"));
- }
-}
diff --git a/modules/comment/helpers/comment_search.php b/modules/comment/helpers/comment_search.php
deleted file mode 100644
index 29762eae..00000000
--- a/modules/comment/helpers/comment_search.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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 Comment_Search_Core {
- static function item_index_data($item) {
- $data = array();
- foreach (Database::instance()
- ->select("text")
- ->from("comments")
- ->where("item_id", $item->id)
- ->get()
- ->as_array() as $row) {
- $data[] = $row->text;
- }
- return join(" ", $data);
- }
-}
diff --git a/modules/comment/models/comment.php b/modules/comment/models/comment.php
index 551fb245..d052a39c 100644
--- a/modules/comment/models/comment.php
+++ b/modules/comment/models/comment.php
@@ -31,7 +31,7 @@ class Comment_Model extends ORM {
if ($author->guest) {
return $this->guest_name;
} else {
- return $author->full_name;
+ return $author->display_name();
}
}
diff --git a/modules/digibug/helpers/digibug_menu.php b/modules/digibug/helpers/digibug_event.php
index 3f70fa24..c4f9e560 100644
--- a/modules/digibug/helpers/digibug_menu.php
+++ b/modules/digibug/helpers/digibug_event.php
@@ -17,8 +17,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class digibug_menu {
- static function admin($menu, $theme) {
+class digibug_event_Core {
+ static function admin_menu($menu, $theme) {
$menu->get("settings_menu")
->append(Menu::factory("link")
->id("digibug_menu")
@@ -26,7 +26,7 @@ class digibug_menu {
->url(url::site("admin/digibug")));
}
- static function photo($menu, $theme) {
+ static function photo_menu($menu, $theme) {
$item = $theme->item();
$menu->append(
Menu::factory("link")
@@ -36,7 +36,7 @@ class digibug_menu {
->css_id("gDigibugLink"));
}
- static function thumb($menu, $theme, $item) {
+ static function thumb_menu($menu, $theme, $item) {
if ($item->type == "photo") {
$menu->get("options_menu")
->append(
diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php
index 134edcff..436cef52 100644
--- a/modules/g2_import/helpers/g2_import.php
+++ b/modules/g2_import/helpers/g2_import.php
@@ -616,7 +616,7 @@ class g2_import_Core {
// Multiword tags have the space changed to dots.s
foreach ($tag_names as $tag_name) {
$tags .= (strlen($tags) ? ", " : "") .
- tag::add($g3_item, preg_replace('/\s+/', '.', $tag_name));
+ tag::add($g3_item, $tag_name);
}
// Tag operations are idempotent so we don't need to map them. Which is good because we don't
diff --git a/modules/g2_import/helpers/g2_import_event.php b/modules/g2_import/helpers/g2_import_event.php
index 77b489a7..609e1a45 100644
--- a/modules/g2_import/helpers/g2_import_event.php
+++ b/modules/g2_import/helpers/g2_import_event.php
@@ -25,4 +25,13 @@ class g2_import_event_Core {
static function item_created($item) {
g2_import::copy_matching_thumbnails_and_resizes($item);
}
+
+ static function admin_menu($menu, $theme) {
+ $menu
+ ->get("settings_menu")
+ ->append(Menu::factory("link")
+ ->id("g2_import")
+ ->label(t("Gallery 2 Import"))
+ ->url(url::site("admin/g2_import")));
+ }
}
diff --git a/modules/g2_import/helpers/g2_import_menu.php b/modules/g2_import/helpers/g2_import_menu.php
deleted file mode 100644
index 68d75cb4..00000000
--- a/modules/g2_import/helpers/g2_import_menu.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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 g2_import_menu_Core {
- static function admin($menu, $theme) {
- $menu
- ->get("settings_menu")
- ->append(Menu::factory("link")
- ->id("g2_import")
- ->label(t("Gallery 2 Import"))
- ->url(url::site("admin/g2_import")));
- }
-}
diff --git a/modules/gallery/controllers/albums.php b/modules/gallery/controllers/albums.php
index 4fefd3a1..cdfa823d 100644
--- a/modules/gallery/controllers/albums.php
+++ b/modules/gallery/controllers/albums.php
@@ -122,7 +122,7 @@ class Albums_Controller extends Items_Controller {
print json_encode(
array(
"result" => "error",
- "form" => $form->__toString() . html::script("modules/gallery/js/albums_form_add.js")));
+ "form" => $form->__toString()));
}
}
@@ -166,8 +166,7 @@ class Albums_Controller extends Items_Controller {
access::required("view", $album);
access::required("edit", $album);
- $view = album::get_edit_form($album);
- $form = $view->form;
+ $form = album::get_edit_form($album);
if ($valid = $form->validate()) {
// Make sure that there's not a conflict
if ($album->id != 1 &&
@@ -203,7 +202,7 @@ class Albums_Controller extends Items_Controller {
} else {
print json_encode(
array("result" => "error",
- "form" => $view->__toString()));
+ "form" => $form->__toString()));
}
}
@@ -217,8 +216,7 @@ class Albums_Controller extends Items_Controller {
switch ($this->input->get("type")) {
case "album":
- print album::get_add_form($album) .
- html::script("modules/gallery/js/albums_form_add.js");
+ print album::get_add_form($album);
break;
case "photo":
diff --git a/modules/gallery/controllers/movies.php b/modules/gallery/controllers/movies.php
index 1391c4b4..c8227d74 100644
--- a/modules/gallery/controllers/movies.php
+++ b/modules/gallery/controllers/movies.php
@@ -70,8 +70,7 @@ class Movies_Controller extends Items_Controller {
access::required("view", $photo);
access::required("edit", $photo);
- $view = photo::get_edit_form($photo);
- $form = $view->form;
+ $form = photo::get_edit_form($photo);
if ($valid = $form->validate()) {
// Make sure that there's not a conflict
if (Database::instance()
@@ -102,7 +101,7 @@ class Movies_Controller extends Items_Controller {
} else {
print json_encode(
array("result" => "error",
- "form" => $view->__toString()));
+ "form" => $form->__toString()));
}
}
diff --git a/modules/gallery/controllers/photos.php b/modules/gallery/controllers/photos.php
index 9d9b25a1..8ee24da8 100644
--- a/modules/gallery/controllers/photos.php
+++ b/modules/gallery/controllers/photos.php
@@ -61,8 +61,7 @@ class Photos_Controller extends Items_Controller {
access::required("view", $photo);
access::required("edit", $photo);
- $view = photo::get_edit_form($photo);
- $form = $view->form;
+ $form = photo::get_edit_form($photo);
if ($valid = $form->validate()) {
if ($form->edit_item->filename->value != $photo->name) {
// Make sure that there's not a conflict
@@ -95,7 +94,7 @@ class Photos_Controller extends Items_Controller {
} else {
print json_encode(
array("result" => "error",
- "form" => $view->__toString()));
+ "form" => $form->__toString()));
}
}
diff --git a/modules/gallery/helpers/access.php b/modules/gallery/helpers/access.php
index abb48fc3..949aea84 100644
--- a/modules/gallery/helpers/access.php
+++ b/modules/gallery/helpers/access.php
@@ -99,16 +99,8 @@ class access_Core {
return true;
}
- if ($item->owner_id == $user->id &&
- in_array($perm_name, array("view_full", "edit", "add"))) {
- return true;
- }
-
- if ($perm_name == "view") {
- $resource = $item->owner_id == $user->id ? $item->parent() : $item;
- } else {
- $resource = model_cache::get("access_cache", $item->id, "item_id");
- }
+ $resource = $perm_name == "view" ?
+ $item : model_cache::get("access_cache", $item->id, "item_id");
foreach ($user->groups as $group) {
if ($resource->__get("{$perm_name}_{$group->id}") === self::ALLOW) {
return true;
@@ -174,8 +166,8 @@ class access_Core {
// For view permissions, if any parent is self::DENY, then those parents lock this one.
// Return
$lock = ORM::factory("item")
- ->where("`left` <= $item->left")
- ->where("`right` >= $item->right")
+ ->where("`left_ptr` <= $item->left_ptr")
+ ->where("`right_ptr` >= $item->right_ptr")
->where("items.id <> $item->id")
->join("access_intents", "items.id", "access_intents.item_id")
->where("access_intents.view_$group->id", self::DENY)
@@ -498,11 +490,11 @@ class access_Core {
// item, then its safe to propagate from here.
if ($access->$field !== self::DENY) {
$tmp_item = ORM::factory("item")
- ->where("left <", $item->left)
- ->where("right >", $item->right)
+ ->where("left_ptr <", $item->left_ptr)
+ ->where("right_ptr >", $item->right_ptr)
->join("access_intents", "access_intents.item_id", "items.id")
->where("access_intents.$field", self::DENY)
- ->orderby("left", "DESC")
+ ->orderby("left_ptr", "DESC")
->limit(1)
->find();
if ($tmp_item->loaded) {
@@ -515,13 +507,13 @@ class access_Core {
// them according the rule above. So mark every permission below this level as UNKNOWN so
// that we can tell which permissions have been changed, and which ones need to be updated.
$db->update("items", array($field => self::UNKNOWN),
- array("left >=" => $item->left, "right <=" => $item->right));
+ array("left_ptr >=" => $item->left_ptr, "right_ptr <=" => $item->right_ptr));
$query = ORM::factory("access_intent")
- ->select(array("access_intents.$field", "items.left", "items.right", "items.id"))
+ ->select(array("access_intents.$field", "items.left_ptr", "items.right_ptr", "items.id"))
->join("items", "items.id", "access_intents.item_id")
- ->where("left >=", $item->left)
- ->where("right <=", $item->right)
+ ->where("left_ptr >=", $item->left_ptr)
+ ->where("right_ptr <=", $item->right_ptr)
->where("type", "album")
->where("access_intents.$field IS NOT", self::INHERIT)
->orderby("level", "DESC")
@@ -530,11 +522,11 @@ class access_Core {
if ($row->$field == self::ALLOW) {
// Propagate ALLOW for any row that is still UNKNOWN.
$db->update("items", array($field => $row->$field),
- array($field => self::UNKNOWN, "left >=" => $row->left, "right <=" => $row->right));
+ array($field => self::UNKNOWN, "left_ptr >=" => $row->left_ptr, "right_ptr <=" => $row->right_ptr));
} else if ($row->$field == self::DENY) {
// DENY overwrites everything below it
$db->update("items", array($field => $row->$field),
- array("left >=" => $row->left, "right <=" => $row->right));
+ array("left_ptr >=" => $row->left_ptr, "right_ptr <=" => $row->right_ptr));
}
}
@@ -542,7 +534,7 @@ class access_Core {
// DENY parent in the hierarchy to propagate from. So we'll still have a UNKNOWN values in
// the hierarchy, and all of those are safe to change to ALLOW.
$db->update("items", array($field => self::ALLOW),
- array($field => self::UNKNOWN, "left >=" => $item->left, "right <=" => $item->right));
+ array($field => self::UNKNOWN, "left_ptr >=" => $item->left_ptr, "right_ptr <=" => $item->right_ptr));
}
/**
@@ -570,10 +562,10 @@ class access_Core {
if ($access->$field === self::INHERIT) {
$tmp_item = ORM::factory("item")
->join("access_intents", "items.id", "access_intents.item_id")
- ->where("left <", $item->left)
- ->where("right >", $item->right)
+ ->where("left_ptr <", $item->left_ptr)
+ ->where("right_ptr >", $item->right_ptr)
->where("$field IS NOT", self::UNKNOWN)
- ->orderby("left", "DESC")
+ ->orderby("left_ptr", "DESC")
->limit(1)
->find();
if ($tmp_item->loaded) {
@@ -584,10 +576,10 @@ class access_Core {
// With non-view permissions, each level can override any permissions that came above it
// so start at the top and work downwards, overlaying permissions as we go.
$query = ORM::factory("access_intent")
- ->select(array("access_intents.$field", "items.left", "items.right"))
+ ->select(array("access_intents.$field", "items.left_ptr", "items.right_ptr"))
->join("items", "items.id", "access_intents.item_id")
- ->where("left >=", $item->left)
- ->where("right <=", $item->right)
+ ->where("left_ptr >=", $item->left_ptr)
+ ->where("right_ptr <=", $item->right_ptr)
->where("$field IS NOT", self::INHERIT)
->orderby("level", "ASC")
->find_all();
@@ -597,8 +589,8 @@ class access_Core {
"UPDATE {access_caches} SET `$field` = $value " .
"WHERE `item_id` IN " .
" (SELECT `id` FROM {items} " .
- " WHERE `left` >= $row->left " .
- " AND `right` <= $row->right)");
+ " WHERE `left_ptr` >= $row->left_ptr " .
+ " AND `right_ptr` <= $row->right_ptr)");
}
}
diff --git a/modules/gallery/helpers/album.php b/modules/gallery/helpers/album.php
index f146bfb3..8a7c9951 100644
--- a/modules/gallery/helpers/album.php
+++ b/modules/gallery/helpers/album.php
@@ -90,15 +90,15 @@ class album_Core {
$group->hidden("type")->value("album");
$group->submit("")->value(t("Create"));
$form->add_rules_from(ORM::factory("item"));
+ $form->script("")
+ ->url(url::abs_file("modules/gallery/js/albums_form_add.js"));
return $form;
}
static function get_edit_form($parent) {
- $view = new View("item_edit.html");
- $view->script = array();
- $view->form = new Forge("albums/{$parent->id}", "", "post", array("id" => "gEditAlbumForm"));
- $view->form->hidden("_method")->value("put");
- $group = $view->form->group("edit_item")->label(t("Edit Album"));
+ $form = new Forge("albums/{$parent->id}", "", "post", array("id" => "gEditAlbumForm"));
+ $form->hidden("_method")->value("put");
+ $group = $form->group("edit_item")->label(t("Edit Album"));
$group->input("title")->label(t("Title"))->value($parent->title);
$group->textarea("description")->label(t("Description"))->value($parent->description);
@@ -130,11 +130,11 @@ class album_Core {
"DESC" => t("Descending")))
->selected($parent->sort_order);
- module::event("item_edit_form", $parent, $view);
+ module::event("item_edit_form", $parent, $form);
$group->hidden("type")->value("album");
$group->submit("")->value(t("Modify"));
- $view->form->add_rules_from(ORM::factory("item"));
- return $view;
+ $form->add_rules_from(ORM::factory("item"));
+ return $form;
}
}
diff --git a/modules/gallery/helpers/gallery.php b/modules/gallery/helpers/gallery.php
index 2fa7ad1c..476e9cbe 100644
--- a/modules/gallery/helpers/gallery.php
+++ b/modules/gallery/helpers/gallery.php
@@ -78,4 +78,122 @@ class gallery_Core {
static function time($timestamp) {
return date(module::get_var("gallery", "time_format", "H:i:s"), $timestamp);
}
+
+ static function site_menu($menu, $theme) {
+ if ($theme->page_type != "login") {
+ $menu->append(Menu::factory("link")
+ ->id("home")
+ ->label(t("Home"))
+ ->url(url::site("albums/1")));
+
+ $item = $theme->item();
+
+ $can_edit = $item && access::can("edit", $item);
+ $can_add = $item && access::can("add", $item);
+
+ if ($can_add) {
+ $menu->append(Menu::factory("dialog")
+ ->id("add_photos_item")
+ ->label(t("Add photos"))
+ ->url(url::site("simple_uploader/app/$item->id")));
+ }
+
+ $menu->append($options_menu = Menu::factory("submenu")
+ ->id("options_menu")
+ ->label(t("Options")));
+ if ($item && ($can_edit || $can_add)) {
+ if ($can_edit) {
+ $options_menu
+ ->append(Menu::factory("dialog")
+ ->id("edit_item")
+ ->label($item->is_album() ? t("Edit album") : t("Edit photo"))
+ ->url(url::site("form/edit/{$item->type}s/$item->id")));
+ }
+
+ // @todo Move album options menu to the album quick edit pane
+ if ($item->is_album()) {
+ if ($can_add) {
+ $options_menu
+ ->append(Menu::factory("dialog")
+ ->id("add_album")
+ ->label(t("Add an album"))
+ ->url(url::site("form/add/albums/$item->id?type=album")));
+ }
+
+ if ($can_edit) {
+ $options_menu
+ ->append(Menu::factory("dialog")
+ ->id("edit_permissions")
+ ->label(t("Edit permissions"))
+ ->url(url::site("permissions/browse/$item->id")));
+ }
+ }
+ }
+
+ if (user::active()->admin) {
+ $menu->append($admin_menu = Menu::factory("submenu")
+ ->id("admin_menu")
+ ->label(t("Admin")));
+ gallery::admin_menu($admin_menu, $theme);
+ module::event("admin_menu", $admin_menu, $theme);
+ }
+
+ module::event("site_menu", $menu, $theme);
+ }
+ }
+
+ static function admin_menu($menu, $theme) {
+ $menu
+ ->append(Menu::factory("link")
+ ->id("dashboard")
+ ->label(t("Dashboard"))
+ ->url(url::site("admin")))
+ ->append(Menu::factory("submenu")
+ ->id("settings_menu")
+ ->label(t("Settings"))
+ ->append(Menu::factory("link")
+ ->id("graphics_toolkits")
+ ->label(t("Graphics"))
+ ->url(url::site("admin/graphics")))
+ ->append(Menu::factory("link")
+ ->id("languages")
+ ->label(t("Languages"))
+ ->url(url::site("admin/languages")))
+ ->append(Menu::factory("link")
+ ->id("l10n_mode")
+ ->label(Session::instance()->get("l10n_mode", false)
+ ? t("Stop translating") : t("Start translating"))
+ ->url(url::site("l10n_client/toggle_l10n_mode?csrf=" .
+ access::csrf_token())))
+ ->append(Menu::factory("link")
+ ->id("advanced")
+ ->label(t("Advanced"))
+ ->url(url::site("admin/advanced_settings"))))
+ ->append(Menu::factory("link")
+ ->id("modules")
+ ->label(t("Modules"))
+ ->url(url::site("admin/modules")))
+ ->append(Menu::factory("submenu")
+ ->id("content_menu")
+ ->label(t("Content")))
+ ->append(Menu::factory("submenu")
+ ->id("appearance_menu")
+ ->label(t("Appearance"))
+ ->append(Menu::factory("link")
+ ->id("themes")
+ ->label(t("Theme Choice"))
+ ->url(url::site("admin/themes")))
+ ->append(Menu::factory("link")
+ ->id("theme_options")
+ ->label(t("Theme Options"))
+ ->url(url::site("admin/theme_options"))))
+ ->append(Menu::factory("submenu")
+ ->id("statistics_menu")
+ ->label(t("Statistics")))
+ ->append(Menu::factory("link")
+ ->id("maintenance")
+ ->label(t("Maintenance"))
+ ->url(url::site("admin/maintenance")));
+ return $menu;
+ }
} \ No newline at end of file
diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php
index 1cd96372..64f2a9ff 100644
--- a/modules/gallery/helpers/gallery_event.php
+++ b/modules/gallery/helpers/gallery_event.php
@@ -47,4 +47,10 @@ class gallery_event_Core {
module::clear_var("gallery", "choose_default_tookit");
}
}
+
+ static function item_index_data($item, $data) {
+ $data[] = $item->description;
+ $data[] = $item->name;
+ $data[] = $item->title;
+ }
}
diff --git a/modules/gallery/helpers/gallery_installer.php b/modules/gallery/helpers/gallery_installer.php
index db13307f..d12dad70 100644
--- a/modules/gallery/helpers/gallery_installer.php
+++ b/modules/gallery/helpers/gallery_installer.php
@@ -72,7 +72,7 @@ class gallery_installer {
`created` int(9) default NULL,
`description` varchar(2048) default NULL,
`height` int(9) default NULL,
- `left` int(9) NOT NULL,
+ `left_ptr` int(9) NOT NULL,
`level` int(9) NOT NULL,
`mime_type` varchar(64) default NULL,
`name` varchar(255) default NULL,
@@ -83,7 +83,7 @@ class gallery_installer {
`resize_dirty` boolean default 1,
`resize_height` int(9) default NULL,
`resize_width` int(9) default NULL,
- `right` int(9) NOT NULL,
+ `right_ptr` int(9) NOT NULL,
`sort_column` varchar(64) default NULL,
`sort_order` char(4) default 'ASC',
`thumb_dirty` boolean default 1,
@@ -98,7 +98,8 @@ class gallery_installer {
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
KEY `type` (`type`),
- KEY `random` (`rand_key`))
+ KEY `random` (`rand_key`),
+ KEY `weight` (`weight` DESC))
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
$db->query("CREATE TABLE {logs} (
@@ -204,8 +205,8 @@ class gallery_installer {
$root->type = "album";
$root->title = "Gallery";
$root->description = "";
- $root->left = 1;
- $root->right = 2;
+ $root->left_ptr = 1;
+ $root->right_ptr = 2;
$root->parent_id = 0;
$root->level = 1;
$root->thumb_dirty = 1;
@@ -258,7 +259,7 @@ class gallery_installer {
module::set_var("gallery", "show_credits", 1);
// @todo this string needs to be picked up by l10n_scanner
module::set_var("gallery", "credits", "Powered by <a href=\"%url\">Gallery %version</a>");
- module::set_version("gallery", 7);
+ module::set_version("gallery", 10);
}
static function upgrade($version) {
@@ -323,7 +324,19 @@ class gallery_installer {
}
module::set_version("gallery", $version = 8);
}
- }
+
+ if ($version == 8) {
+ $db->query("ALTER TABLE {items} CHANGE COLUMN `left` `left_ptr` INT(9) NOT NULL;");
+ $db->query("ALTER TABLE {items} CHANGE COLUMN `right` `right_ptr` INT(9) NOT NULL;");
+ module::set_version("gallery", $version = 9);
+ }
+
+ if ($version == 9) {
+ $db->query("ALTER TABLE {items} ADD KEY `weight` (`weight` DESC);");
+
+ module::set_version("gallery", $version = 10);
+ }
+}
static function uninstall() {
$db = Database::instance();
diff --git a/modules/gallery/helpers/gallery_menu.php b/modules/gallery/helpers/gallery_menu.php
deleted file mode 100644
index 040b19e1..00000000
--- a/modules/gallery/helpers/gallery_menu.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?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 gallery_menu_Core {
- static function site($menu, $theme) {
- $menu->append(Menu::factory("link")
- ->id("home")
- ->label(t("Home"))
- ->url(url::site("albums/1")));
-
- $item = $theme->item();
-
- $can_edit = $item && access::can("edit", $item);
- $can_add = $item && access::can("add", $item);
-
- if ($can_add) {
- $menu->append(Menu::factory("dialog")
- ->id("add_photos_item")
- ->label(t("Add photos"))
- ->url(url::site("simple_uploader/app/$item->id")));
- }
-
- $menu->append($options_menu = Menu::factory("submenu")
- ->id("options_menu")
- ->label(t("Options")));
- if ($item && ($can_edit || $can_add)) {
- if ($can_edit) {
- $options_menu
- ->append(Menu::factory("dialog")
- ->id("edit_item")
- ->label($item->is_album() ? t("Edit album") : t("Edit photo"))
- ->url(url::site("form/edit/{$item->type}s/$item->id")));
- }
-
- // @todo Move album options menu to the album quick edit pane
- if ($item->is_album()) {
- if ($can_add) {
- $options_menu
- ->append(Menu::factory("dialog")
- ->id("add_album")
- ->label(t("Add an album"))
- ->url(url::site("form/add/albums/$item->id?type=album")));
- }
-
- if ($can_edit) {
- $options_menu
- ->append(Menu::factory("dialog")
- ->id("edit_permissions")
- ->label(t("Edit permissions"))
- ->url(url::site("permissions/browse/$item->id")));
- }
- }
- }
-
- if (user::active()->admin) {
- $menu->append($admin_menu = Menu::factory("submenu")
- ->id("admin_menu")
- ->label(t("Admin")));
- self::admin($admin_menu, $theme);
- foreach (module::active() as $module) {
- if ($module->name == "gallery") {
- continue;
- }
- $class = "{$module->name}_menu";
- if (method_exists($class, "admin")) {
- call_user_func_array(array($class, "admin"), array(&$admin_menu, $theme));
- }
- }
- }
- }
-
- static function album($menu, $theme) {
- }
-
- static function tag($menu, $theme) {
- }
-
- static function thumb($menu, $theme, $item) {
- $menu->append(Menu::factory("submenu")
- ->id("options_menu")
- ->label(t("Options"))
- ->css_class("gThumbMenu"));
- }
-
- static function photo($menu, $theme) {
- if (access::can("view_full", $theme->item())) {
- $menu->append(Menu::factory("link")
- ->id("fullsize")
- ->label(t("View full size"))
- ->url($theme->item()->file_url())
- ->css_class("gFullSizeLink"));
- }
- }
-
- static function admin($menu, $theme) {
- $menu
- ->append(Menu::factory("link")
- ->id("dashboard")
- ->label(t("Dashboard"))
- ->url(url::site("admin")))
- ->append(Menu::factory("submenu")
- ->id("settings_menu")
- ->label(t("Settings"))
- ->append(Menu::factory("link")
- ->id("graphics_toolkits")
- ->label(t("Graphics"))
- ->url(url::site("admin/graphics")))
- ->append(Menu::factory("link")
- ->id("languages")
- ->label(t("Languages"))
- ->url(url::site("admin/languages")))
- ->append(Menu::factory("link")
- ->id("l10n_mode")
- ->label(Session::instance()->get("l10n_mode", false)
- ? t("Stop translating") : t("Start translating"))
- ->url(url::site("l10n_client/toggle_l10n_mode?csrf=" .
- access::csrf_token())))
- ->append(Menu::factory("link")
- ->id("advanced")
- ->label(t("Advanced"))
- ->url(url::site("admin/advanced_settings"))))
- ->append(Menu::factory("link")
- ->id("modules")
- ->label(t("Modules"))
- ->url(url::site("admin/modules")))
- ->append(Menu::factory("submenu")
- ->id("content_menu")
- ->label(t("Content")))
- ->append(Menu::factory("submenu")
- ->id("appearance_menu")
- ->label(t("Appearance"))
- ->append(Menu::factory("link")
- ->id("themes")
- ->label(t("Theme Choice"))
- ->url(url::site("admin/themes")))
- ->append(Menu::factory("link")
- ->id("theme_options")
- ->label(t("Theme Options"))
- ->url(url::site("admin/theme_options"))))
- ->append(Menu::factory("submenu")
- ->id("statistics_menu")
- ->label(t("Statistics")))
- ->append(Menu::factory("link")
- ->id("maintenance")
- ->label(t("Maintenance"))
- ->url(url::site("admin/maintenance")));
- }
-}
diff --git a/modules/gallery/helpers/gallery_search.php b/modules/gallery/helpers/gallery_search.php
deleted file mode 100644
index 2a4029d3..00000000
--- a/modules/gallery/helpers/gallery_search.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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 gallery_search_Core {
- static function item_index_data($item) {
- return join(" ", array($item->description, $item->name, $item->title));
- }
-}
diff --git a/modules/gallery/helpers/gallery_theme.php b/modules/gallery/helpers/gallery_theme.php
index 998eb289..d3751b80 100644
--- a/modules/gallery/helpers/gallery_theme.php
+++ b/modules/gallery/helpers/gallery_theme.php
@@ -127,4 +127,10 @@ class gallery_theme_Core {
static function admin_credits() {
return gallery_theme::credits();
}
+
+ static function body_attributes() {
+ if (locales::is_rtl()) {
+ return 'class="rtl"';
+ }
+ }
} \ No newline at end of file
diff --git a/modules/gallery/helpers/photo.php b/modules/gallery/helpers/photo.php
index 299195e9..5cf37de1 100644
--- a/modules/gallery/helpers/photo.php
+++ b/modules/gallery/helpers/photo.php
@@ -135,11 +135,9 @@ class photo_Core {
}
static function get_edit_form($photo) {
- $view = new View("item_edit.html");
- $view->script = array();
- $view->form = new Forge("photos/$photo->id", "", "post", array("id" => "gEditPhotoForm"));
- $view->form->hidden("_method")->value("put");
- $group = $view->form->group("edit_item")->label(t("Edit Photo"));
+ $form = new Forge("photos/$photo->id", "", "post", array("id" => "gEditPhotoForm"));
+ $form->hidden("_method")->value("put");
+ $group = $form->group("edit_item")->label(t("Edit Photo"));
$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)
@@ -149,11 +147,11 @@ class photo_Core {
->callback("item::validate_no_trailing_period")
->error_messages("no_trailing_period", t("The photo name can't end in \".\""));
- module::event("item_edit_form", $photo, $view);
+ module::event("item_edit_form", $photo, $form);
$group->submit("")->value(t("Modify"));
- $view->form->add_rules_from(ORM::factory("item"));
- return $view;
+ $form->add_rules_from(ORM::factory("item"));
+ return $form;
}
/**
diff --git a/modules/gallery/libraries/Admin_View.php b/modules/gallery/libraries/Admin_View.php
index 47770a90..21b70df6 100644
--- a/modules/gallery/libraries/Admin_View.php
+++ b/modules/gallery/libraries/Admin_View.php
@@ -46,20 +46,10 @@ class Admin_View_Core extends Gallery_View {
public function admin_menu() {
$menu = Menu::factory("root");
- gallery_menu::admin($menu, $this);
-
- foreach (module::active() as $module) {
- if ($module->name == "gallery") {
- continue;
- }
- $class = "{$module->name}_menu";
- if (method_exists($class, "admin")) {
- call_user_func_array(array($class, "admin"), array(&$menu, $this));
- }
- }
-
+ gallery::admin_menu($menu, $this);
+ module::event("admin_menu", $menu, $this);
$menu->compact();
- print $menu;
+ return $menu;
}
/**
@@ -88,6 +78,7 @@ class Admin_View_Core extends Gallery_View {
case "admin_page_bottom":
case "admin_page_top":
case "admin_head":
+ case "body_attributes":
$blocks = array();
foreach (module::active() as $module) {
$helper_class = "{$module->name}_theme";
diff --git a/modules/gallery/libraries/Form_Script.php b/modules/gallery/libraries/Form_Script.php
new file mode 100644
index 00000000..e841408d
--- /dev/null
+++ b/modules/gallery/libraries/Form_Script.php
@@ -0,0 +1,66 @@
+<?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 Form_Script_Core extends Forge {
+ protected $data = array(
+ "name" => false,
+ "type" => "script",
+ "url" => "",
+ "text" => "");
+
+ public function __construct($name) {
+ // Set dummy data so we don"t get errors
+ $this->attr["action"] = "";
+ $this->attr["method"] = "post";
+ $this->data["name"] = $name;
+ }
+
+ public function __get($key) {
+ return isset($this->data[$key]) ? $this->data[$key] : null;
+ }
+
+ /**
+ * Sets url attribute
+ */
+ public function url($url) {
+ $this->data["url"] = $url;
+
+ return $this;
+ }
+
+ public function text($script_text) {
+ $this->data["text"] = $script_text;
+
+ return $this;
+ }
+
+ public function render() {
+ $script = array();
+ if (!empty($this->data["url"])) {
+ $script[] = html::script($this->data["url"]);
+ }
+
+ if (!empty($this->data["text"])) {
+ $script[] = "<script type=\"text/javascript\">\n{$this->data['text']}\n</script>\n";
+ }
+
+ return implode("\n", $script);
+ }
+
+} // End Form Script \ No newline at end of file
diff --git a/modules/gallery/libraries/MY_View.php b/modules/gallery/libraries/MY_View.php
index 43783158..eb55aca6 100644
--- a/modules/gallery/libraries/MY_View.php
+++ b/modules/gallery/libraries/MY_View.php
@@ -42,11 +42,4 @@ class View extends View_Core {
return "";
}
}
-
- public function body_attributes() {
- if (locales::is_rtl()) {
- return 'class="rtl"';
- }
- return '';
- }
}
diff --git a/modules/gallery/libraries/ORM_MPTT.php b/modules/gallery/libraries/ORM_MPTT.php
index e371f159..1917d738 100644
--- a/modules/gallery/libraries/ORM_MPTT.php
+++ b/modules/gallery/libraries/ORM_MPTT.php
@@ -52,14 +52,14 @@ class ORM_MPTT_Core extends ORM {
try {
// Make a hole in the parent for this new item
$this->db->query(
- "UPDATE {{$this->table_name}} SET `left` = `left` + 2 WHERE `left` >= {$parent->right}");
+ "UPDATE {{$this->table_name}} SET `left_ptr` = `left_ptr` + 2 WHERE `left_ptr` >= {$parent->right_ptr}");
$this->db->query(
- "UPDATE {{$this->table_name}} SET `right` = `right` + 2 WHERE `right` >= {$parent->right}");
- $parent->right += 2;
+ "UPDATE {{$this->table_name}} SET `right_ptr` = `right_ptr` + 2 WHERE `right_ptr` >= {$parent->right_ptr}");
+ $parent->right_ptr += 2;
// Insert this item into the hole
- $this->left = $parent->right - 2;
- $this->right = $parent->right - 1;
+ $this->left_ptr = $parent->right_ptr - 2;
+ $this->right_ptr = $parent->right_ptr - 1;
$this->parent_id = $parent->id;
$this->level = $parent->level + 1;
$this->save();
@@ -81,7 +81,7 @@ class ORM_MPTT_Core extends ORM {
if ($children) {
foreach ($this->children() as $item) {
// Deleting children affects the MPTT tree, so we have to reload each child before we
- // delete it so that we have current left/right pointers. This is inefficient.
+ // delete it so that we have current left_ptr/right_ptr pointers. This is inefficient.
// @todo load each child once, not twice.
$item->reload()->delete();
}
@@ -93,9 +93,9 @@ class ORM_MPTT_Core extends ORM {
$this->lock();
try {
$this->db->query(
- "UPDATE {{$this->table_name}} SET `left` = `left` - 2 WHERE `left` > {$this->right}");
+ "UPDATE {{$this->table_name}} SET `left_ptr` = `left_ptr` - 2 WHERE `left_ptr` > {$this->right_ptr}");
$this->db->query(
- "UPDATE {{$this->table_name}} SET `right` = `right` - 2 WHERE `right` > {$this->right}");
+ "UPDATE {{$this->table_name}} SET `right_ptr` = `right_ptr` - 2 WHERE `right_ptr` > {$this->right_ptr}");
} catch (Exception $e) {
$this->unlock();
throw $e;
@@ -111,7 +111,7 @@ class ORM_MPTT_Core extends ORM {
* @return boolean
*/
function is_descendant($target) {
- return ($this->left <= $target->left && $this->right >= $target->right);
+ return ($this->left_ptr <= $target->left_ptr && $this->right_ptr >= $target->right_ptr);
}
/**
@@ -133,10 +133,10 @@ class ORM_MPTT_Core extends ORM {
*/
function parents() {
return $this
- ->where("`left` <= {$this->left}")
- ->where("`right` >= {$this->right}")
+ ->where("`left_ptr` <= {$this->left_ptr}")
+ ->where("`right_ptr` >= {$this->right_ptr}")
->where("id <> {$this->id}")
- ->orderby("left", "ASC")
+ ->orderby("left_ptr", "ASC")
->find_all();
}
@@ -181,8 +181,8 @@ class ORM_MPTT_Core extends ORM {
* @return object ORM_Iterator
*/
function descendants($limit=null, $offset=0, $type=null, $orderby=null) {
- $this->where("left >", $this->left)
- ->where("right <=", $this->right);
+ $this->where("left_ptr >", $this->left_ptr)
+ ->where("right_ptr <=", $this->right_ptr);
if ($type) {
$this->where("type", $type);
}
@@ -203,8 +203,8 @@ class ORM_MPTT_Core extends ORM {
* @return integer child count
*/
function descendants_count($type=null) {
- $this->where("left >", $this->left)
- ->where("right <=", $this->right);
+ $this->where("left_ptr >", $this->left_ptr)
+ ->where("right_ptr <=", $this->right_ptr);
if ($type) {
$this->where("type", $type);
}
@@ -219,16 +219,16 @@ class ORM_MPTT_Core extends ORM {
* @return ORM_MTPP
*/
function move_to($target) {
- if ($this->left <= $target->left &&
- $this->right >= $target->right) {
+ if ($this->left_ptr <= $target->left_ptr &&
+ $this->right_ptr >= $target->right_ptr) {
throw new Exception("@todo INVALID_TARGET can't move item inside itself");
}
- $number_to_move = (int)(($this->right - $this->left) / 2 + 1);
+ $number_to_move = (int)(($this->right_ptr - $this->left_ptr) / 2 + 1);
$size_of_hole = $number_to_move * 2;
- $original_left = $this->left;
- $original_right = $this->right;
- $target_right = $target->right;
+ $original_left_ptr = $this->left_ptr;
+ $original_right_ptr = $this->right_ptr;
+ $target_right_ptr = $target->right_ptr;
$level_delta = ($target->level + 1) - $this->level;
$this->lock();
@@ -237,45 +237,45 @@ class ORM_MPTT_Core extends ORM {
// Update the levels for the to-be-moved items
$this->db->query(
"UPDATE {{$this->table_name}} SET `level` = `level` + $level_delta" .
- " WHERE `left` >= $original_left AND `right` <= $original_right");
+ " WHERE `left_ptr` >= $original_left_ptr AND `right_ptr` <= $original_right_ptr");
}
// Make a hole in the target for the move
$target->db->query(
- "UPDATE {{$this->table_name}} SET `left` = `left` + $size_of_hole" .
- " WHERE `left` >= $target_right");
+ "UPDATE {{$this->table_name}} SET `left_ptr` = `left_ptr` + $size_of_hole" .
+ " WHERE `left_ptr` >= $target_right_ptr");
$target->db->query(
- "UPDATE {{$this->table_name}} SET `right` = `right` + $size_of_hole" .
- " WHERE `right` >= $target_right");
+ "UPDATE {{$this->table_name}} SET `right_ptr` = `right_ptr` + $size_of_hole" .
+ " WHERE `right_ptr` >= $target_right_ptr");
// Change the parent.
$this->db->query(
"UPDATE {{$this->table_name}} SET `parent_id` = {$target->id}" .
" WHERE `id` = {$this->id}");
- // If the source is to the right of the target then we just adjusted its left and right above.
- $left = $original_left;
- $right = $original_right;
- if ($original_left > $target_right) {
- $left += $size_of_hole;
- $right += $size_of_hole;
+ // If the source is to the right of the target then we just adjusted its left_ptr and right_ptr above.
+ $left_ptr = $original_left_ptr;
+ $right_ptr = $original_right_ptr;
+ if ($original_left_ptr > $target_right_ptr) {
+ $left_ptr += $size_of_hole;
+ $right_ptr += $size_of_hole;
}
- $new_offset = $target->right - $left;
+ $new_offset = $target->right_ptr - $left_ptr;
$this->db->query(
"UPDATE {{$this->table_name}}" .
- " SET `left` = `left` + $new_offset," .
- " `right` = `right` + $new_offset" .
- " WHERE `left` >= $left" .
- " AND `right` <= $right");
+ " SET `left_ptr` = `left_ptr` + $new_offset," .
+ " `right_ptr` = `right_ptr` + $new_offset" .
+ " WHERE `left_ptr` >= $left_ptr" .
+ " AND `right_ptr` <= $right_ptr");
// Close the hole in the source's parent after the move
$this->db->query(
- "UPDATE {{$this->table_name}} SET `left` = `left` - $size_of_hole" .
- " WHERE `left` > $right");
+ "UPDATE {{$this->table_name}} SET `left_ptr` = `left_ptr` - $size_of_hole" .
+ " WHERE `left_ptr` > $right_ptr");
$this->db->query(
- "UPDATE {{$this->table_name}} SET `right` = `right` - $size_of_hole" .
- " WHERE `right` > $right");
+ "UPDATE {{$this->table_name}} SET `right_ptr` = `right_ptr` - $size_of_hole" .
+ " WHERE `right_ptr` > $right_ptr");
} catch (Exception $e) {
$this->unlock();
throw $e;
diff --git a/modules/gallery/libraries/Theme_View.php b/modules/gallery/libraries/Theme_View.php
index fa45ec89..360e5e46 100644
--- a/modules/gallery/libraries/Theme_View.php
+++ b/modules/gallery/libraries/Theme_View.php
@@ -80,53 +80,45 @@ class Theme_View_Core extends Gallery_View {
public function site_menu() {
$menu = Menu::factory("root");
- if ($this->page_type != "login") {
- gallery_menu::site($menu, $this);
-
- foreach (module::active() as $module) {
- if ($module->name == "gallery") {
- continue;
- }
- $class = "{$module->name}_menu";
- if (method_exists($class, "site")) {
- call_user_func_array(array($class, "site"), array(&$menu, $this));
- }
- }
- }
-
- $menu->compact();
- print $menu;
+ gallery::site_menu($menu, $this);
+ module::event("site_menu", $menu, $this);
+ return $menu->compact();
}
public function album_menu() {
- print $this->_menu("album");
+ $menu = Menu::factory("root");
+ module::event("album_menu", $menu, $this);
+ return $menu->compact();
}
public function tag_menu() {
- print $this->_menu("tag");
+ $menu = Menu::factory("root");
+ module::event("tag_menu", $menu, $this);
+ return $menu->compact();
}
public function photo_menu() {
- print $this->_menu("photo");
- }
+ $menu = Menu::factory("root");
+ if (access::can("view_full", $this->item())) {
+ $menu->append(Menu::factory("link")
+ ->id("fullsize")
+ ->label(t("View full size"))
+ ->url($this->item()->file_url())
+ ->css_class("gFullSizeLink"));
+ }
- public function thumb_menu($item) {
- print $this->_menu("thumb", $item)->css_class("gThumbMenu");
+ module::event("photo_menu", $menu, $this);
+ return $menu->compact();
}
- private function _menu($type, $item=null) {
- $menu = Menu::factory("root");
- call_user_func_array(array("gallery_menu", $type), array(&$menu, $this, $item));
- foreach (module::active() as $module) {
- if ($module->name == "gallery") {
- continue;
- }
- $class = "{$module->name}_menu";
- if (method_exists($class, $type)) {
- call_user_func_array(array($class, $type), array(&$menu, $this, $item));
- }
- }
+ public function thumb_menu($item) {
+ $menu = Menu::factory("root")
+ ->append(Menu::factory("submenu")
+ ->id("options_menu")
+ ->label(t("Options")))
+ ->css_class("gThumbMenu");
+ module::event("thumb_menu", $menu, $this, $item);
return $menu->compact();
}
@@ -164,6 +156,7 @@ class Theme_View_Core extends Gallery_View {
case "album_blocks":
case "album_bottom":
case "album_top":
+ case "body_attributes":
case "credits";
case "dynamic_bottom":
case "dynamic_top":
diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php
index 99d1ca6d..b3c7998b 100644
--- a/modules/gallery/models/item.php
+++ b/modules/gallery/models/item.php
@@ -38,17 +38,31 @@ class Item_Model extends ORM_MPTT {
if (user::active()->admin) {
$this->view_restrictions = array();
} else {
- $this->view_restrictions["owner_id"] = user::active()->id;
foreach (user::group_ids() as $id) {
- $this->view_restrictions["view_$id"] = access::ALLOW;
+ // Separate the first restriction from the rest to make it easier for us to formulate
+ // our where clause below
+ if (empty($this->view_restrictions)) {
+ $this->view_restrictions[0] = "view_$id";
+ } else {
+ $this->view_restrictions[1]["view_$id"] = access::ALLOW;
+ }
}
}
}
+ switch (count($this->view_restrictions)) {
+ case 0:
+ break;
- if (!empty($this->view_restrictions)) {
+ case 1:
+ $this->where($this->view_restrictions[0], access::ALLOW);
+ break;
+
+ default:
$this->open_paren();
- $this->orwhere($this->view_restrictions);
+ $this->where($this->view_restrictions[0], access::ALLOW);
+ $this->orwhere($this->view_restrictions[1]);
$this->close_paren();
+ break;
}
return $this;
@@ -136,7 +150,7 @@ class Item_Model extends ORM_MPTT {
Database::instance()
->update("items",
array("relative_path_cache" => null),
- array("left >" => $this->left, "right <" => $this->right));
+ array("left_ptr >" => $this->left_ptr, "right_ptr <" => $this->right_ptr));
} else {
@rename($original_resize_path, $this->resize_path());
@rename($original_thumb_path, $this->thumb_path());
@@ -172,7 +186,7 @@ class Item_Model extends ORM_MPTT {
Database::instance()
->update("items",
array("relative_path_cache" => null),
- array("left >" => $this->left, "right <" => $this->right));
+ array("left_ptr >" => $this->left_ptr, "right_ptr <" => $this->right_ptr));
}
return $this;
@@ -288,10 +302,10 @@ class Item_Model extends ORM_MPTT {
foreach (Database::instance()
->select("name")
->from("items")
- ->where("left <=", $this->left)
- ->where("right >=", $this->right)
+ ->where("left_ptr <=", $this->left_ptr)
+ ->where("right_ptr >=", $this->right_ptr)
->where("id <>", 1)
- ->orderby("left", "ASC")
+ ->orderby("left_ptr", "ASC")
->get() as $row) {
$paths[] = $row->name;
}
@@ -337,8 +351,14 @@ class Item_Model extends ORM_MPTT {
$this->updated = time();
if (!$this->loaded) {
$this->created = $this->updated;
- $r = ORM::factory("item")->select("MAX(weight) as max_weight")->find();
- $this->weight = $r->max_weight + 1;
+ // Guard against an empty result when we create the first item. It's unfortunate that we
+ // have to check this every time.
+ // @todo: figure out a better way to bootstrap the weight.
+ $result = Database::instance()
+ ->select("weight")->from("items")
+ ->orderby("weight", "desc")->limit(1)
+ ->get()->current();
+ $this->weight = ($result ? $result->weight : 0) + 1;
} else {
$send_event = 1;
}
@@ -385,10 +405,10 @@ class Item_Model extends ORM_MPTT {
$db = Database::instance();
$position = $db->query("
SELECT COUNT(*) AS position FROM {items}
- WHERE parent_id = {$this->id}
+ WHERE `parent_id` = {$this->id}
AND `{$this->sort_column}` $comp (SELECT `{$this->sort_column}`
- FROM {items} WHERE id = $child_id)
- ORDER BY `{$this->sort_column}` {$this->sort_order}")->current()->position;
+ FROM {items} WHERE `id` = $child_id)")
+ ->current()->position;
// We stopped short of our target value in the sort (notice that we're using a < comparator
// above) because it's possible that we have duplicate values in the sort column. An
@@ -400,9 +420,10 @@ class Item_Model extends ORM_MPTT {
// our base value.
$result = $db->query("
SELECT id FROM {items}
- WHERE parent_id = {$this->id}
+ WHERE `parent_id` = {$this->id}
AND `{$this->sort_column}` = (SELECT `{$this->sort_column}`
- FROM {items} WHERE id = $child_id)");
+ FROM {items} WHERE `id` = $child_id)
+ ORDER BY `id` ASC");
foreach ($result as $row) {
$position++;
if ($row->id == $child_id) {
diff --git a/modules/gallery/module.info b/modules/gallery/module.info
index ba367878..dfb1a7a2 100644
--- a/modules/gallery/module.info
+++ b/modules/gallery/module.info
@@ -1,3 +1,3 @@
name = "Gallery 3"
description = "Gallery core application"
-version = 8
+version = 10
diff --git a/modules/gallery/tests/Access_Helper_Test.php b/modules/gallery/tests/Access_Helper_Test.php
index 737ed8a6..59cec453 100644
--- a/modules/gallery/tests/Access_Helper_Test.php
+++ b/modules/gallery/tests/Access_Helper_Test.php
@@ -101,48 +101,6 @@ class Access_Helper_Test extends Unit_Test_Case {
$this->assert_false(access::user_can($user, "view", $item), "Should be unable to view");
}
- public function owner_can_view_album_test() {
- $user = user::create("access_test", "Access Test", "");
- foreach ($user->groups as $group) {
- $user->remove($group);
- }
- $user->save();
-
- $root = ORM::factory("item", 1);
- $item = album::create($root, rand(), "test album", $user->id);
-
- $this->assert_true(access::user_can($user, "view", $item), "Should be able to view");
- }
-
- public function owner_can_view_photo_test() {
- $user = user::create("access_test", "Access Test", "");
- foreach ($user->groups as $group) {
- $user->remove($group);
- }
- $user->save();
-
- $root = ORM::factory("item", 1);
- $album = album::create($root, rand(), "test album", $user->id);
- $item = photo::create($album, MODPATH . "gallery/images/gallery.png", "", "", null, $user->id);
-
- $this->assert_true(access::user_can($user, "view", $item), "Should be able to view");
- }
-
- public function owner_cant_view_photo_test() {
- $user = user::create("access_test", "Access Test", "");
- foreach ($user->groups as $group) {
- $user->remove($group);
- }
- $user->save();
-
- $root = ORM::factory("item", 1);
- $album = album::create($root, rand(), "test album");
- access::deny(group::everybody(), "view", $album);
- $item = photo::create($album, MODPATH . "gallery/images/gallery.png", "", "", null, $user->id);
-
- $this->assert_false(access::user_can($user, "view", $item), "Should not be able to view");
- }
-
public function adding_and_removing_items_adds_ands_removes_rows_test() {
$root = ORM::factory("item", 1);
$item = album::create($root, rand(), "test album");
diff --git a/modules/gallery/tests/Database_Test.php b/modules/gallery/tests/Database_Test.php
index bd3d2f53..d83212ad 100644
--- a/modules/gallery/tests/Database_Test.php
+++ b/modules/gallery/tests/Database_Test.php
@@ -103,15 +103,15 @@ class Database_Test extends Unit_Test_Case {
$sql = "UPDATE {test_tables} SET `name` = '{test string}' " .
"WHERE `item_id` IN " .
" (SELECT `id` FROM {items} " .
- " WHERE `left` >= 1 " .
- " AND `right` <= 6)";
+ " WHERE `left_ptr` >= 1 " .
+ " AND `right_ptr` <= 6)";
$sql = $db->add_table_prefixes($sql);
$expected = "UPDATE g3test_test_tables SET `name` = '{test string}' " .
"WHERE `item_id` IN " .
" (SELECT `id` FROM g3test_items " .
- " WHERE `left` >= 1 " .
- " AND `right` <= 6)";
+ " WHERE `left_ptr` >= 1 " .
+ " AND `right_ptr` <= 6)";
$this->assert_same($expected, $sql);
}
diff --git a/modules/gallery/tests/DrawForm_Test.php b/modules/gallery/tests/DrawForm_Test.php
index 2c5aaba4..dde54257 100644
--- a/modules/gallery/tests/DrawForm_Test.php
+++ b/modules/gallery/tests/DrawForm_Test.php
@@ -80,5 +80,44 @@ class DrawForm_Test extends Unit_Test_Case {
$this->assert_same($expected, $rendered);
}
+ function form_script_test() {
+ $form = new Forge("test/controller", "", "post", array("id" => "gTestGroupForm"));
+ $group = $form->group("test_group")->label(t("Test Group"));
+ $group->input("title")->label(t("Title"));
+ $group->textarea("description")->label(t("Text Area"));
+ $form->script("")
+ ->url(url::file("test.js"))
+ ->text("alert('Test Javascript');");
+ $group->submit("")->value(t("Submit"));
+ $rendered = $form->__toString();
+
+ $expected = "<form action=\"http://./index.php/test/controller\" method=\"post\" " .
+ "id=\"gTestGroupForm\">\n" .
+ "<input type=\"hidden\" name=\"csrf\" value=\"" . access::csrf_token() . "\" />\n" .
+ " <fieldset>\n" .
+ " <legend>Test Group</legend>\n" .
+ " <ul>\n" .
+ " <li>\n" .
+ " <label for=\"title\" >Title</label>\n" .
+ " <input type=\"text\" id=\"title\" name=\"title\" value=\"\" " .
+ "class=\"textbox\" />\n" .
+ " </li>\n" .
+ " <li>\n" .
+ " <label for=\"description\" >Text Area</label>\n" .
+ " <textarea id=\"description\" name=\"description\" " .
+ "class=\"textarea\" ></textarea>\n" .
+ " </li>\n" .
+ " <li>\n" .
+ " <input type=\"submit\" value=\"Submit\" class=\"submit\" />\n" .
+ " </li>\n" .
+ " </ul>\n" .
+ " </fieldset>\n" .
+ "<script type=\"text/javascript\" src=\"http://./test.js\"></script>\n\n" .
+ "<script type=\"text/javascript\">\n" .
+ "alert('Test Javascript');\n" .
+ "</script>\n" .
+ "</form>\n";
+ $this->assert_same($expected, $rendered);
+ }
}
diff --git a/modules/gallery/tests/Gallery_Installer_Test.php b/modules/gallery/tests/Gallery_Installer_Test.php
index 27157d6e..36ced2bb 100644
--- a/modules/gallery/tests/Gallery_Installer_Test.php
+++ b/modules/gallery/tests/Gallery_Installer_Test.php
@@ -34,13 +34,13 @@ class Gallery_Installer_Test extends Unit_Test_Case {
}
public function install_creates_root_item_test() {
- $max_right = ORM::factory("item")
- ->select("MAX(`right`) AS `right`")
- ->find()->right;
+ $max_right_ptr = ORM::factory("item")
+ ->select("MAX(`right_ptr`) AS `right_ptr`")
+ ->find()->right_ptr;
$root = ORM::factory('item')->find(1);
$this->assert_equal("Gallery", $root->title);
- $this->assert_equal(1, $root->left);
- $this->assert_equal($max_right, $root->right);
+ $this->assert_equal(1, $root->left_ptr);
+ $this->assert_equal($max_right_ptr, $root->right_ptr);
$this->assert_equal(null, $root->parent_id);
$this->assert_equal(1, $root->level);
}
diff --git a/modules/gallery/tests/Item_Model_Test.php b/modules/gallery/tests/Item_Model_Test.php
index a21cdc13..c2773097 100644
--- a/modules/gallery/tests/Item_Model_Test.php
+++ b/modules/gallery/tests/Item_Model_Test.php
@@ -142,17 +142,11 @@ class Item_Model_Test extends Unit_Test_Case {
}
public function save_original_values_test() {
- print "START\n";
$item = $this->create_random_item();
$item->title = "ORIGINAL_VALUE";
$item->save();
-
- print "CHANGE\n";
$item->title = "NEW_VALUE";
- //printf("<pre>%s</pre>",print_r($item,1));flush();
-
- print "COMPARE\n";
$this->assert_same("ORIGINAL_VALUE", $item->original("title"));
$this->assert_same("NEW_VALUE", $item->title);
}
diff --git a/modules/gallery/tests/ORM_MPTT_Test.php b/modules/gallery/tests/ORM_MPTT_Test.php
index 200c8a74..943810c3 100644
--- a/modules/gallery/tests/ORM_MPTT_Test.php
+++ b/modules/gallery/tests/ORM_MPTT_Test.php
@@ -33,8 +33,8 @@ class ORM_MPTT_Test extends Unit_Test_Case {
$album->sort_order = "ASC";
$album->add_to_parent($root);
- $this->assert_equal($album->parent()->right - 2, $album->left);
- $this->assert_equal($album->parent()->right - 1, $album->right);
+ $this->assert_equal($album->parent()->right_ptr - 2, $album->left_ptr);
+ $this->assert_equal($album->parent()->right_ptr - 1, $album->right_ptr);
$this->assert_equal($album->parent()->level + 1, $album->level);
$this->assert_equal($album->parent()->id, $album->parent_id);
}
@@ -48,10 +48,10 @@ class ORM_MPTT_Test extends Unit_Test_Case {
$album1_1_2 = self::create_item_and_add_to_parent($album1_1);
$album1->reload();
- $this->assert_equal(9, $album1->right - $album1->left);
+ $this->assert_equal(9, $album1->right_ptr - $album1->left_ptr);
$album1_1->reload();
- $this->assert_equal(5, $album1_1->right - $album1_1->left);
+ $this->assert_equal(5, $album1_1->right_ptr - $album1_1->left_ptr);
}
public function delete_hierarchy_test() {
@@ -66,7 +66,7 @@ class ORM_MPTT_Test extends Unit_Test_Case {
$album1->reload();
// Now album1 contains only album1_2
- $this->assert_equal(3, $album1->right - $album1->left);
+ $this->assert_equal(3, $album1->right_ptr - $album1->left_ptr);
}
public function move_to_test() {
@@ -85,8 +85,8 @@ class ORM_MPTT_Test extends Unit_Test_Case {
$album1_1->reload();
$album1_2->reload();
- $this->assert_equal(3, $album1_1->right - $album1_1->left);
- $this->assert_equal(3, $album1_2->right - $album1_2->left);
+ $this->assert_equal(3, $album1_1->right_ptr - $album1_1->left_ptr);
+ $this->assert_equal(3, $album1_2->right_ptr - $album1_2->left_ptr);
$this->assert_equal(
array($album1_1_2->id => "move_to_test_1_1_2"),
diff --git a/modules/gallery/tests/Photo_Helper_Test.php b/modules/gallery/tests/Photo_Helper_Test.php
index cc1f20da..c0641ef4 100644
--- a/modules/gallery/tests/Photo_Helper_Test.php
+++ b/modules/gallery/tests/Photo_Helper_Test.php
@@ -43,8 +43,8 @@ class Photo_Helper_Test extends Unit_Test_Case {
$this->assert_equal($image_info[0], $photo->width);
$this->assert_equal($image_info[1], $photo->height);
- $this->assert_equal($photo->parent()->right - 2, $photo->left);
- $this->assert_equal($photo->parent()->right - 1, $photo->right);
+ $this->assert_equal($photo->parent()->right_ptr - 2, $photo->left_ptr);
+ $this->assert_equal($photo->parent()->right_ptr - 1, $photo->right_ptr);
}
public function create_conflicting_photo_test() {
diff --git a/modules/gallery/tests/xss_data.txt b/modules/gallery/tests/xss_data.txt
index 2940a8df..0e118ce7 100644
--- a/modules/gallery/tests/xss_data.txt
+++ b/modules/gallery/tests/xss_data.txt
@@ -163,9 +163,9 @@ modules/gallery/views/admin_maintenance_show_log.html.php 8 DIRTY $task->id
modules/gallery/views/admin_maintenance_show_log.html.php 8 DIRTY $csrf
modules/gallery/views/admin_maintenance_show_log.html.php 13 DIRTY $task->name
modules/gallery/views/admin_maintenance_show_log.html.php 15 $task->get_log()
-modules/gallery/views/admin_maintenance_task.html.php 5 DIRTY $task->id
-modules/gallery/views/admin_maintenance_task.html.php 5 DIRTY $csrf
-modules/gallery/views/admin_maintenance_task.html.php 26 DIRTY $task->name
+modules/gallery/views/admin_maintenance_task.html.php 30 DIRTY $task->id
+modules/gallery/views/admin_maintenance_task.html.php 30 DIRTY $csrf
+modules/gallery/views/admin_maintenance_task.html.php 54 DIRTY $task->name
modules/gallery/views/admin_modules.html.php 19 DIRTY $i
modules/gallery/views/admin_modules.html.php 22 DIRTY $data
modules/gallery/views/admin_modules.html.php 22 DIRTY $module_name
@@ -207,8 +207,6 @@ modules/gallery/views/admin_themes_preview.html.php 4 DIRTY $info->na
modules/gallery/views/admin_themes_preview.html.php 7 DIRTY $url
modules/gallery/views/after_install.html.php 11 $user->name
modules/gallery/views/after_install.html.php 15 DIRTY $user->id
-modules/gallery/views/item_edit.html.php 4 DIRTY $script
-modules/gallery/views/item_edit.html.php 8 DIRTY $form
modules/gallery/views/kohana_error_page.php 102 DIRTY $message
modules/gallery/views/kohana_error_page.php 104 DIRTY $file
modules/gallery/views/kohana_error_page.php 104 DIRTY $line
@@ -444,8 +442,8 @@ modules/tag/views/admin_tags.html.php 50 DIRTY $tag->id
modules/tag/views/admin_tags.html.php 50 $tag->name
modules/tag/views/admin_tags.html.php 51 DIRTY $tag->count
modules/tag/views/admin_tags.html.php 52 DIRTY $tag->id
-modules/tag/views/tag_block.html.php 13 DIRTY $cloud
-modules/tag/views/tag_block.html.php 15 DIRTY $form
+modules/tag/views/tag_block.html.php 15 DIRTY $cloud
+modules/tag/views/tag_block.html.php 17 DIRTY $form
modules/tag/views/tag_cloud.html.php 4 DIRTY $tag->count
modules/tag/views/tag_cloud.html.php 4 DIRTY $max_count
modules/tag/views/tag_cloud.html.php 5 DIRTY $tag->count
@@ -567,11 +565,11 @@ themes/default/views/dynamic.html.php 29 DIRTY $theme->p
themes/default/views/footer.html.php 2 DIRTY $theme->footer()
themes/default/views/footer.html.php 4 DIRTY $footer_text
themes/default/views/footer.html.php 9 DIRTY $theme->credits()
-themes/default/views/header.html.php 2 DIRTY $theme->header_top()
-themes/default/views/header.html.php 4 DIRTY $header_text
-themes/default/views/header.html.php 7 DIRTY $theme->url("images/logo.png")
+themes/default/views/header.html.php 3 DIRTY $theme->header_top()
+themes/default/views/header.html.php 5 DIRTY $header_text
+themes/default/views/header.html.php 8 DIRTY $theme->url("images/logo.png")
themes/default/views/header.html.php 12 DIRTY $theme->site_menu()
-themes/default/views/header.html.php 15 DIRTY $theme->header_bottom()
+themes/default/views/header.html.php 14 DIRTY $theme->header_bottom()
themes/default/views/header.html.php 21 DIRTY $parent->id
themes/default/views/header.html.php 21 DIRTY $item->id
themes/default/views/header.html.php 22 $parent->title
diff --git a/modules/gallery/views/admin_maintenance_task.html.php b/modules/gallery/views/admin_maintenance_task.html.php
index c81fe571..0eb0b38c 100644
--- a/modules/gallery/views/admin_maintenance_task.html.php
+++ b/modules/gallery/views/admin_maintenance_task.html.php
@@ -5,11 +5,18 @@
var delta = 1;
animate_progress_bar = function() {
var current_value = Number($(".gProgressBar div").css("width").replace("%", ""));
- if (current_value != target_value) {
+ if (target_value > current_value) {
+ // speed up
+ delta = Math.min(delta + 0.04, 3);
+ } else {
+ // slow down
+ delta = Math.max(delta - 0.05, 1);
+ }
+
+ if (target_value == 100) {
+ $(".gProgressBar").progressbar("value", 100);
+ } else if (current_value != target_value || delta != 1) {
var new_value = Math.min(current_value + delta, target_value);
- if (target_value - current_value > delta) {
- delta += .075;
- }
$(".gProgressBar").progressbar("value", new_value);
animation = setTimeout(function() { animate_progress_bar(target_value); }, 100);
} else {
diff --git a/modules/gallery/views/form.html.php b/modules/gallery/views/form.html.php
index ec2a56a9..730d77cb 100644
--- a/modules/gallery/views/form.html.php
+++ b/modules/gallery/views/form.html.php
@@ -40,6 +40,8 @@ if (!function_exists("DrawForm")) {
print "$prefix {$hidden->render()}\n";
}
print "$prefix</fieldset>\n";
+ } else if ($input->type == 'script') {
+ print $input->render();
} else {
if ($input->error_messages()) {
print "$prefix<li class=\"gError\">\n";
diff --git a/modules/gallery/views/item_edit.html.php b/modules/gallery/views/item_edit.html.php
deleted file mode 100644
index 9aa2fb64..00000000
--- a/modules/gallery/views/item_edit.html.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php defined("SYSPATH") or die("No direct script access.") ?>
-<? if (!empty($script)): ?>
-<script>
- <?= implode("\n", $script) ?>
-</script>
-<? endif ?>
-<div id="gEditFormContainer">
- <?= $form ?>
-</div> \ No newline at end of file
diff --git a/modules/notification/helpers/notification.php b/modules/notification/helpers/notification.php
index d91a37e8..92c40d4f 100644
--- a/modules/notification/helpers/notification.php
+++ b/modules/notification/helpers/notification.php
@@ -73,8 +73,8 @@ class notification {
->join("subscriptions", "users.id", "subscriptions.user_id")
->join("items", "subscriptions.item_id", "items.id")
->where("email IS NOT", null)
- ->where("items.left <=", $item->left)
- ->where("items.right >", $item->right)
+ ->where("items.left_ptr <=", $item->left_ptr)
+ ->where("items.right_ptr >", $item->right_ptr)
->find_all();
$subscribers = array();
diff --git a/modules/notification/helpers/notification_event.php b/modules/notification/helpers/notification_event.php
index 536557c6..c6e770a7 100644
--- a/modules/notification/helpers/notification_event.php
+++ b/modules/notification/helpers/notification_event.php
@@ -55,4 +55,23 @@ class notification_event_Core {
static function batch_complete() {
notification::send_pending_notifications();
}
+
+ static function site_menu($menu, $theme) {
+ if (!user::active()->guest) {
+ $item = $theme->item();
+
+ if ($item && $item->is_album() && access::can("view", $item)) {
+ $watching = notification::is_watching($item);
+
+ $label = $watching ? t("Remove notifications") : t("Enable notifications");
+
+ $menu->get("options_menu")
+ ->append(Menu::factory("link")
+ ->id("watch")
+ ->label($label)
+ ->css_id("gNotifyLink")
+ ->url(url::site("notification/watch/$item->id?csrf=" . access::csrf_token())));
+ }
+ }
+ }
} \ No newline at end of file
diff --git a/modules/notification/helpers/notification_menu.php b/modules/notification/helpers/notification_menu.php
deleted file mode 100644
index 73d1dd03..00000000
--- a/modules/notification/helpers/notification_menu.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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 notification_menu_Core {
- static function site($menu, $theme) {
- if (!user::active()->guest) {
- $item = $theme->item();
-
- if ($item && $item->is_album() && access::can("view", $item)) {
- $watching = notification::is_watching($item);
-
- $label = $watching ? t("Remove notifications") : t("Enable notifications");
-
- $menu->get("options_menu")
- ->append(Menu::factory("link")
- ->id("watch")
- ->label($label)
- ->css_id("gNotifyLink")
- ->url(url::site("notification/watch/$item->id?csrf=" . access::csrf_token())));
- }
- }
- }
-}
diff --git a/modules/organize/helpers/organize_menu.php b/modules/organize/helpers/organize_event.php
index 850c1eab..99a28673 100644
--- a/modules/organize/helpers/organize_menu.php
+++ b/modules/organize/helpers/organize_event.php
@@ -17,8 +17,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class organize_menu {
- static function site($menu, $theme) {
+class organize_event_Core {
+ static function site_menu($menu, $theme) {
$item = $theme->item();
if ($item && access::can("edit", $item) && $item->is_album()) {
diff --git a/modules/recaptcha/helpers/recaptcha_event.php b/modules/recaptcha/helpers/recaptcha_event.php
index 932ddee6..d23a0c74 100644
--- a/modules/recaptcha/helpers/recaptcha_event.php
+++ b/modules/recaptcha/helpers/recaptcha_event.php
@@ -23,4 +23,12 @@ class recaptcha_event_Core {
$form->add_comment->recaptcha("recaptcha")->label("")->id("gRecaptcha");
}
}
+
+ static function admin_menu($menu, $theme) {
+ $menu->get("settings_menu")
+ ->append(Menu::factory("link")
+ ->id("recaptcha")
+ ->label(t("reCAPTCHA"))
+ ->url(url::site("admin/recaptcha")));
+ }
}
diff --git a/modules/recaptcha/helpers/recaptcha_menu.php b/modules/recaptcha/helpers/recaptcha_menu.php
deleted file mode 100644
index 047abf8f..00000000
--- a/modules/recaptcha/helpers/recaptcha_menu.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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 recaptcha_menu_Core {
- static function admin($menu, $theme) {
- $menu->get("settings_menu")
- ->append(Menu::factory("link")
- ->id("recaptcha")
- ->label(t("reCAPTCHA"))
- ->url(url::site("admin/recaptcha")));
- }
-}
diff --git a/modules/search/helpers/search.php b/modules/search/helpers/search.php
index b08cf89d..355c4493 100644
--- a/modules/search/helpers/search.php
+++ b/modules/search/helpers/search.php
@@ -64,19 +64,14 @@ class search_Core {
}
static function update($item) {
- $data = array();
+ $data = new ArrayObject();
$record = ORM::factory("search_record")->where("item_id", $item->id)->find();
if (!$record->loaded) {
$record->item_id = $item->id;
}
- foreach (module::active() as $module) {
- $class_name = "{$module->name}_search";
- if (method_exists($class_name, "item_index_data")) {
- $data[] = call_user_func(array($class_name, "item_index_data"), $record->item());
- }
- }
- $record->data = join(" ", $data);
+ module::event("item_index_data", $record->item(), $data);
+ $record->data = join(" ", (array)$data);
$record->dirty = 0;
$record->save();
}
diff --git a/modules/server_add/helpers/server_add_menu.php b/modules/server_add/helpers/server_add_event.php
index 0f01eb64..b53e72d1 100644
--- a/modules/server_add/helpers/server_add_menu.php
+++ b/modules/server_add/helpers/server_add_event.php
@@ -17,8 +17,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class server_add_menu_Core {
- static function admin($menu, $theme) {
+class server_add_event_Core {
+ static function admin_menu($menu, $theme) {
$menu->get("settings_menu")
->append(Menu::factory("link")
->id("server_add")
@@ -26,7 +26,7 @@ class server_add_menu_Core {
->url(url::site("admin/server_add")));
}
- static function site($menu, $theme) {
+ static function site_menu($menu, $theme) {
$item = $theme->item();
$paths = unserialize(module::get_var("server_add", "authorized_paths"));
diff --git a/modules/slideshow/helpers/slideshow_event.php b/modules/slideshow/helpers/slideshow_event.php
index c6cd7dc7..cf79f71a 100644
--- a/modules/slideshow/helpers/slideshow_event.php
+++ b/modules/slideshow/helpers/slideshow_event.php
@@ -29,4 +29,34 @@ class slideshow_event_Core {
site_status::clear("slideshow_needs_rss");
}
}
+
+ static function album_menu($menu, $theme) {
+ $menu
+ ->append(Menu::factory("link")
+ ->id("slideshow")
+ ->label(t("View slideshow"))
+ ->url("javascript:PicLensLite.start(" .
+ "{maxScale:0,feedUrl:PicLensLite.indexFeeds()[0].url})")
+ ->css_id("gSlideshowLink"));
+ }
+
+ static function photo_menu($menu, $theme) {
+ $menu
+ ->append(Menu::factory("link")
+ ->id("slideshow")
+ ->label(t("View slideshow"))
+ ->url("javascript:PicLensLite.start(" .
+ "{maxScale:0,feedUrl:PicLensLite.indexFeeds()[0].url})")
+ ->css_id("gSlideshowLink"));
+ }
+
+ static function tag_menu($menu, $theme) {
+ $menu
+ ->append(Menu::factory("link")
+ ->id("slideshow")
+ ->label(t("View slideshow"))
+ ->url("javascript:PicLensLite.start(" .
+ "{maxScale:0,feedUrl:PicLensLite.indexFeeds()[0].url})")
+ ->css_id("gSlideshowLink"));
+ }
}
diff --git a/modules/slideshow/helpers/slideshow_menu.php b/modules/slideshow/helpers/slideshow_menu.php
deleted file mode 100644
index ee975d88..00000000
--- a/modules/slideshow/helpers/slideshow_menu.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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 slideshow_menu_Core {
- static function album($menu, $theme) {
- $menu
- ->append(Menu::factory("link")
- ->id("slideshow")
- ->label(t("View slideshow"))
- ->url("javascript:PicLensLite.start(" .
- "{maxScale:0,feedUrl:PicLensLite.indexFeeds()[0].url})")
- ->css_id("gSlideshowLink"));
- }
-
- static function photo($menu, $theme) {
- $menu
- ->append(Menu::factory("link")
- ->id("slideshow")
- ->label(t("View slideshow"))
- ->url("javascript:PicLensLite.start(" .
- "{maxScale:0,feedUrl:PicLensLite.indexFeeds()[0].url})")
- ->css_id("gSlideshowLink"));
- }
-
- static function tag($menu, $theme) {
- $menu
- ->append(Menu::factory("link")
- ->id("slideshow")
- ->label(t("View slideshow"))
- ->url("javascript:PicLensLite.start(" .
- "{maxScale:0,feedUrl:PicLensLite.indexFeeds()[0].url})")
- ->css_id("gSlideshowLink"));
- }
-
-}
diff --git a/modules/tag/controllers/tags.php b/modules/tag/controllers/tags.php
index a600ea1a..c993e374 100644
--- a/modules/tag/controllers/tags.php
+++ b/modules/tag/controllers/tags.php
@@ -53,10 +53,10 @@ class Tags_Controller extends REST_Controller {
$form = tag::get_add_form($item);
if ($form->validate()) {
- foreach (split("[\,\;]", $form->add_tag->inputs["name"]->value) as $tag_name) {
+ foreach (split(",", $form->add_tag->inputs["name"]->value) as $tag_name) {
$tag_name = trim($tag_name);
if ($tag_name) {
- $tag = tag::add($item, str_replace(" ", ".", $tag_name));
+ $tag = tag::add($item, $tag_name);
}
}
@@ -81,7 +81,7 @@ class Tags_Controller extends REST_Controller {
public function autocomplete() {
$tags = array();
- $tag_parts = preg_split("#[,\s;]+# ", $this->input->get("q"));
+ $tag_parts = preg_split("#,#", $this->input->get("q"));
$limit = $this->input->get("limit");
$tag_part = end($tag_parts);
$tag_list = ORM::factory("tag")
diff --git a/modules/tag/helpers/tag_event.php b/modules/tag/helpers/tag_event.php
index bf60978d..57986e40 100644
--- a/modules/tag/helpers/tag_event.php
+++ b/modules/tag/helpers/tag_event.php
@@ -34,8 +34,8 @@ class tag_event_Core {
if (!empty($iptc["2#025"])) {
foreach($iptc["2#025"] as $tag) {
$tag = str_replace("\0", "", $tag);
- foreach (preg_split("/[,;]/", $tag) as $word) {
- $word = preg_replace('/\s+/', '.', trim($word));
+ foreach (preg_split("/,/", $tag) as $word) {
+ $word = trim($word);
if (function_exists("mb_detect_encoding") && mb_detect_encoding($word) != "UTF-8") {
$word = utf8_encode($word);
}
@@ -64,25 +64,37 @@ class tag_event_Core {
tag::compact();
}
- static function item_edit_form($item, $view) {
+ static function item_edit_form($item, $form) {
$url = url::site("tags/autocomplete");
- $view->script[] = "$('#gEditFormContainer form').ready(function() {
- $('#gEditFormContainer form input[id=tags]').autocomplete(
- '$url', {max: 30, formatResult: formatTagAutoCompleteResult}
- );
- });";
- $tag_value = implode("; ", tag::item_tags($item));
- $view->form->edit_item->input("tags")->label(t("Tags (comma or semicolon separated)"))
+ $form->script("")
+ ->text("$('form input[id=tags]').ready(function() {
+ $('form input[id=tags]').autocomplete(
+ '$url', {max: 30, multiple: true, multipleSeparator: ',', cacheLength: 1});
+ });");
+ $tag_value = implode(", ", tag::item_tags($item));
+ $form->edit_item->input("tags")->label(t("Tags (comma separated)"))
->value($tag_value);
}
static function item_edit_form_completed($item, $form) {
tag::clear_all($item);
- foreach (preg_split("/[,;]/", $form->edit_item->tags->value) as $tag_name) {
+ foreach (preg_split("/,/", $form->edit_item->tags->value) as $tag_name) {
if ($tag_name) {
- tag::add($item, str_replace(" ", ".", $tag_name));
+ tag::add($item, trim($tag_name));
}
}
tag::compact();
}
+
+ static function admin_menu($menu, $theme) {
+ $menu->get("content_menu")
+ ->append(Menu::factory("link")
+ ->id("tags")
+ ->label(t("Tags"))
+ ->url(url::site("admin/tags")));
+ }
+
+ static function item_index_data($item, $data) {
+ $data[] = join(" ", tag::item_tags($item));
+ }
}
diff --git a/modules/tag/helpers/tag_menu.php b/modules/tag/helpers/tag_menu.php
deleted file mode 100644
index e1b61a93..00000000
--- a/modules/tag/helpers/tag_menu.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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 tag_menu_Core {
- static function admin($menu, $theme) {
- $menu->get("content_menu")
- ->append(Menu::factory("link")
- ->id("tags")
- ->label(t("Tags"))
- ->url(url::site("admin/tags")));
- }
-}
diff --git a/modules/tag/helpers/tag_search.php b/modules/tag/helpers/tag_search.php
deleted file mode 100644
index 034b7af5..00000000
--- a/modules/tag/helpers/tag_search.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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 tag_search_Core {
- static function item_index_data($item) {
- return join(" ", tag::item_tags($item));
- }
-}
diff --git a/modules/tag/js/tag.js b/modules/tag/js/tag.js
index bbf44166..765c2a35 100644
--- a/modules/tag/js/tag.js
+++ b/modules/tag/js/tag.js
@@ -67,17 +67,3 @@ function editInPlace(element) {
ajaxify_editInPlaceForm();
}
-function formatTagAutoCompleteResult(row) {
- var text = $(".ac_loading").val();
- if (/[\s,;]/.test(text)) {
- for (var i= text.length - 1; i >= 0; i--) {
- var chr = text.charAt(i);
- if (chr == " " || chr == "," || chr == ";") {
- break;
- }
- }
- return text.substr(0, i + 1) + row[0];
- } else {
- return row[0];
- }
-}
diff --git a/modules/tag/views/tag_block.html.php b/modules/tag/views/tag_block.html.php
index 233eb361..59a4ef88 100644
--- a/modules/tag/views/tag_block.html.php
+++ b/modules/tag/views/tag_block.html.php
@@ -5,7 +5,9 @@
$("#gAddTagForm input:text").autocomplete(
url, {
max: 30,
- formatResult: formatTagAutoCompleteResult}
+ multiple: true,
+ multipleSeparator: ',',
+ cacheLength: 1}
);
});
</script>
diff --git a/modules/user/controllers/admin_users.php b/modules/user/controllers/admin_users.php
index 043a4ee5..f87602b8 100644
--- a/modules/user/controllers/admin_users.php
+++ b/modules/user/controllers/admin_users.php
@@ -49,7 +49,6 @@ class Admin_Users_Controller extends Controller {
$user->locale = $desired_locale == "none" ? null : $desired_locale;
}
$user->save();
-
module::event("user_add_form_admin_completed", $user, $form);
message::success(t("Created user %user_name", array("user_name" => p::clean($user->name))));
@@ -141,6 +140,7 @@ class Admin_Users_Controller extends Controller {
$user->admin = $form->edit_user->admin->checked;
}
$user->save();
+ module::event("user_edit_form_admin_completed", $user, $form);
message::success(t("Changed user %user_name", array("user_name" => p::clean($user->name))));
print json_encode(array("result" => "success"));
diff --git a/modules/user/helpers/user.php b/modules/user/helpers/user.php
index b1722a1e..69a6ecb3 100644
--- a/modules/user/helpers/user.php
+++ b/modules/user/helpers/user.php
@@ -34,15 +34,16 @@ class user_Core {
->matches($group->password);
$group->input("email")->label(t("Email"))->id("gEmail")->value($user->email);
$group->input("url")->label(t("URL"))->id("gUrl")->value($user->url);
- $group->submit("")->value(t("Save"));
$form->add_rules_from($user);
module::event("user_edit_form", $user, $form);
+ $group->submit("")->value(t("Save"));
return $form;
}
static function get_edit_form_admin($user) {
- $form = new Forge("admin/users/edit_user/$user->id", "", "post", array("id" => "gEditUserForm"));
+ $form = new Forge(
+ "admin/users/edit_user/$user->id", "", "post", array("id" => "gEditUserForm"));
$group = $form->group("edit_user")->label(t("Edit User"));
$group->input("name")->label(t("Username"))->id("gUsername")->value($user->name);
$group->inputs["name"]->error_messages(
@@ -55,11 +56,11 @@ class user_Core {
$group->input("email")->label(t("Email"))->id("gEmail")->value($user->email);
$group->input("url")->label(t("URL"))->id("gUrl")->value($user->url);
$group->checkbox("admin")->label(t("Admin"))->id("gAdmin")->checked($user->admin);
- $group->submit("")->value(t("Modify User"));
$form->add_rules_from($user);
$form->edit_user->password->rules("-required");
module::event("user_edit_form_admin", $user, $form);
+ $group->submit("")->value(t("Modify User"));
return $form;
}
@@ -76,11 +77,11 @@ class user_Core {
$group->input("url")->label(t("URL"))->id("gUrl");
self::_add_locale_dropdown($group);
$group->checkbox("admin")->label(t("Admin"))->id("gAdmin");
- $group->submit("")->value(t("Add User"));
$user = ORM::factory("user");
$form->add_rules_from($user);
- module::event("user_add_form_admin", $user);
+ module::event("user_add_form_admin", $user, $form);
+ $group->submit("")->value(t("Add User"));
return $form;
}
diff --git a/modules/user/helpers/user_event.php b/modules/user/helpers/user_event.php
index 6515fbfb..4bde224b 100644
--- a/modules/user/helpers/user_event.php
+++ b/modules/user/helpers/user_event.php
@@ -30,4 +30,12 @@ class user_event_Core {
I18n::instance()->locale($locale);
}
}
+
+ static function admin_menu($menu, $theme) {
+ $menu->add_after("appearance_menu",
+ Menu::factory("link")
+ ->id("users_groups")
+ ->label(t("Users/Groups"))
+ ->url(url::site("admin/users")));
+ }
}
diff --git a/modules/user/helpers/user_menu.php b/modules/user/helpers/user_menu.php
deleted file mode 100644
index 05e401f9..00000000
--- a/modules/user/helpers/user_menu.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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 user_menu_Core {
- static function admin($menu, $theme) {
- $menu->add_after("appearance_menu",
- Menu::factory("link")
- ->id("users_groups")
- ->label(t("Users/Groups"))
- ->url(url::site("admin/users")));
- }
-}
diff --git a/modules/watermark/helpers/watermark_menu.php b/modules/watermark/helpers/watermark_event.php
index bc3a4fed..45b410f9 100644
--- a/modules/watermark/helpers/watermark_menu.php
+++ b/modules/watermark/helpers/watermark_event.php
@@ -17,8 +17,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class watermark_menu_Core {
- static function admin($menu, $theme) {
+class watermark_event_Core {
+ static function admin_menu($menu, $theme) {
$menu->get("content_menu")
->append(
Menu::factory("link")