From 38b2efc44cf3345d97798e9637db241b05e2dded Mon Sep 17 00:00:00 2001
From: Tim Almdal
Date: Sat, 29 Aug 2009 11:43:10 -0700
Subject: Fix for 641... extend viewable functionality to comments. Viewable
unit test is not working.
---
modules/gallery/helpers/item.php | 37 +++++++++++++
modules/gallery/models/item.php | 34 +-----------
modules/gallery/tests/Item_Helper_Test.php | 84 ++++++++++++++++++++++++++++++
3 files changed, 122 insertions(+), 33 deletions(-)
create mode 100644 modules/gallery/tests/Item_Helper_Test.php
(limited to 'modules/gallery')
diff --git a/modules/gallery/helpers/item.php b/modules/gallery/helpers/item.php
index a2d3859f..8839861f 100644
--- a/modules/gallery/helpers/item.php
+++ b/modules/gallery/helpers/item.php
@@ -151,4 +151,41 @@ class item_Core {
->get()->current();
return ($result ? $result->weight : 0) + 1;
}
+
+ /**
+ * Add a set of restrictions to any following queries to restrict access only to items
+ * viewable by the active user.
+ * @chainable
+ */
+ static function viewable($model) {
+ $view_restrictions = array();
+ if (!user::active()->admin) {
+ foreach (user::group_ids() as $id) {
+ // Separate the first restriction from the rest to make it easier for us to formulate
+ // our where clause below
+ if (empty($view_restrictions)) {
+ $view_restrictions[0] = "items.view_$id";
+ } else {
+ $view_restrictions[1]["items.view_$id"] = access::ALLOW;
+ }
+ }
+ }
+ switch (count($view_restrictions)) {
+ case 0:
+ break;
+
+ case 1:
+ $model->where($view_restrictions[0], access::ALLOW);
+ break;
+
+ default:
+ $model->open_paren();
+ $model->where($view_restrictions[0], access::ALLOW);
+ $model->orwhere($view_restrictions[1]);
+ $model->close_paren();
+ break;
+ }
+
+ return $model;
+ }
}
\ No newline at end of file
diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php
index 7a3a2ba7..68e89db6 100644
--- a/modules/gallery/models/item.php
+++ b/modules/gallery/models/item.php
@@ -19,7 +19,6 @@
*/
class Item_Model extends ORM_MPTT {
protected $children = 'items';
- private $view_restrictions = null;
protected $sorting = array();
var $rules = array(
@@ -34,38 +33,7 @@ class Item_Model extends ORM_MPTT {
* @chainable
*/
public function viewable() {
- if (is_null($this->view_restrictions)) {
- if (user::active()->admin) {
- $this->view_restrictions = array();
- } else {
- foreach (user::group_ids() as $id) {
- // 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;
-
- case 1:
- $this->where($this->view_restrictions[0], access::ALLOW);
- break;
-
- default:
- $this->open_paren();
- $this->where($this->view_restrictions[0], access::ALLOW);
- $this->orwhere($this->view_restrictions[1]);
- $this->close_paren();
- break;
- }
-
- return $this;
+ return item::viewable($this);
}
/**
diff --git a/modules/gallery/tests/Item_Helper_Test.php b/modules/gallery/tests/Item_Helper_Test.php
new file mode 100644
index 00000000..48fdd962
--- /dev/null
+++ b/modules/gallery/tests/Item_Helper_Test.php
@@ -0,0 +1,84 @@
+_group->delete();
+ } catch (Exception $e) { }
+
+ try {
+ $this->_album->delete();
+ } catch (Exception $e) { }
+
+ //try {
+ // $this->_user->delete();
+ //} catch (Exception $e) { }
+ }
+
+ public function setup() {
+ }
+
+ public function viewable_item_test() {
+ $this->_group = group::create("access_test");
+ $root = ORM::factory("item", 1);
+ $this->_album = album::create($root, rand(), "visible_test");
+ $this->_user = user::create("visible_test", "Visible Test", "");
+ $this->_user->add($this->_group);
+ $this->_item = self::_create_random_item($this->_album);
+ comment::create($this->_item, $this->_user, "This is a comment");
+ access::deny(group::everybody(), "view", $this->_album);
+ $active = user::active();
+
+ $items = ORM::factory("item")
+ ->where("id", $this->_album->id)
+ ->find_all();
+ print Database::instance()->last_query() . "\n";
+ $items = ORM::factory("item")
+ ->where("id", $this->_album->id)
+ ->viewable()
+ ->find_all();
+ print Database::instance()->last_query() . "\n";
+ }
+
+
+ //public function viewable_one_restrictions_test() {
+ // $item = self::create_random_item();
+ // $this->assert_true(!empty($item->created));
+ // $this->assert_true(!empty($item->updated));
+ //}
+ //public function viewable_multiple_restrictions_test() {
+ // $item = self::create_random_item();
+ // $this->assert_true(!empty($item->created));
+ // $this->assert_true(!empty($item->updated));
+ //}
+
+ private static function _create_random_item($album) {
+ $item = ORM::factory("item");
+ /* Set all required fields (values are irrelevant) */
+ $item->name = rand();
+ $item->type = "photo";
+ return $item->add_to_parent($album);
+ }
+}
--
cgit v1.2.3
From 0d16cc1c106dc324fde59cac54fa82e4a70e04e2 Mon Sep 17 00:00:00 2001
From: Bharat Mediratta
Date: Sat, 29 Aug 2009 12:12:53 -0700
Subject: Clean up the test and get it working.
---
modules/gallery/tests/Item_Helper_Test.php | 69 ++++++++----------------------
1 file changed, 17 insertions(+), 52 deletions(-)
(limited to 'modules/gallery')
diff --git a/modules/gallery/tests/Item_Helper_Test.php b/modules/gallery/tests/Item_Helper_Test.php
index 48fdd962..3f80733f 100644
--- a/modules/gallery/tests/Item_Helper_Test.php
+++ b/modules/gallery/tests/Item_Helper_Test.php
@@ -18,65 +18,30 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class Item_Helper_Test extends Unit_Test_Case {
- private $_group;
- private $_album;
- private $_item;
- //private $_user;
- public function teardown() {
- try {
- $this->_group->delete();
- } catch (Exception $e) { }
-
- try {
- $this->_album->delete();
- } catch (Exception $e) { }
-
- //try {
- // $this->_user->delete();
- //} catch (Exception $e) { }
- }
-
- public function setup() {
- }
-
- public function viewable_item_test() {
- $this->_group = group::create("access_test");
+ public function viewable_test() {
$root = ORM::factory("item", 1);
- $this->_album = album::create($root, rand(), "visible_test");
- $this->_user = user::create("visible_test", "Visible Test", "");
- $this->_user->add($this->_group);
- $this->_item = self::_create_random_item($this->_album);
- comment::create($this->_item, $this->_user, "This is a comment");
- access::deny(group::everybody(), "view", $this->_album);
- $active = user::active();
-
- $items = ORM::factory("item")
- ->where("id", $this->_album->id)
- ->find_all();
- print Database::instance()->last_query() . "\n";
- $items = ORM::factory("item")
- ->where("id", $this->_album->id)
- ->viewable()
- ->find_all();
- print Database::instance()->last_query() . "\n";
+ $album = album::create($root, rand(), rand(), rand());
+ $item = self::_create_random_item($album);
+ user::set_active(user::guest());
+
+ // We can see the item when permissions are granted
+ access::allow(group::everybody(), "view", $album);
+ $this->assert_equal(
+ 1,
+ ORM::factory("item")->viewable()->where("id", $item->id)->count_all());
+
+ // We can't see the item when permissions are denied
+ access::deny(group::everybody(), "view", $album);
+ $this->assert_equal(
+ 0,
+ ORM::factory("item")->viewable()->where("id", $item->id)->count_all());
}
- //public function viewable_one_restrictions_test() {
- // $item = self::create_random_item();
- // $this->assert_true(!empty($item->created));
- // $this->assert_true(!empty($item->updated));
- //}
- //public function viewable_multiple_restrictions_test() {
- // $item = self::create_random_item();
- // $this->assert_true(!empty($item->created));
- // $this->assert_true(!empty($item->updated));
- //}
-
private static function _create_random_item($album) {
+ // Set all required fields (values are irrelevant)
$item = ORM::factory("item");
- /* Set all required fields (values are irrelevant) */
$item->name = rand();
$item->type = "photo";
return $item->add_to_parent($album);
--
cgit v1.2.3
From 5db0b68a70434a16d8881a6e560a9526530a8a60 Mon Sep 17 00:00:00 2001
From: Chad Kieffer
Date: Sat, 29 Aug 2009 14:01:04 -0600
Subject: Update status message styles. Lighten backgrounds, don't show
background on Admin Maintenance rows, and added gModuleStatus class.
---
modules/akismet/views/admin_akismet.html.php | 2 +-
modules/comment/views/admin_comments.html.php | 2 +-
modules/gallery/views/admin_graphics_gd.html.php | 12 ++--
.../views/admin_graphics_graphicsmagick.html.php | 10 +--
.../views/admin_graphics_imagemagick.html.php | 10 +--
modules/gallery/views/admin_graphics_none.html.php | 5 +-
modules/gallery/views/admin_maintenance.html.php | 16 +++--
modules/gallery/views/admin_modules.html.php | 2 +-
themes/admin_default/css/admin_screen.css | 9 ++-
themes/admin_default/css/screen.css | 80 ++++++++++------------
themes/default/css/screen.css | 60 +++++-----------
11 files changed, 92 insertions(+), 116 deletions(-)
(limited to 'modules/gallery')
diff --git a/modules/akismet/views/admin_akismet.html.php b/modules/akismet/views/admin_akismet.html.php
index 410902a5..009d8810 100644
--- a/modules/akismet/views/admin_akismet.html.php
+++ b/modules/akismet/views/admin_akismet.html.php
@@ -8,7 +8,7 @@
if ($valid_key): ?>
-
+
= t("Your API Key is valid. Your comments will be filtered!") ?>
endif ?>
diff --git a/modules/comment/views/admin_comments.html.php b/modules/comment/views/admin_comments.html.php
index 9fe7164b..03511d91 100644
--- a/modules/comment/views/admin_comments.html.php
+++ b/modules/comment/views/admin_comments.html.php
@@ -103,7 +103,7 @@
foreach ($comments as $i => $comment): ?>
-
$i = 0 ?>
foreach ($available as $module_name => $module_info): ?>
-
">
+
">
$data = array("name" => $module_name); ?>
if ($module_info->locked) $data["disabled"] = 1; ?>
| = form::checkbox($data, '1', module::is_active($module_name)) ?> |
diff --git a/themes/admin_default/css/admin_screen.css b/themes/admin_default/css/admin_screen.css
index 913631dc..7e468442 100644
--- a/themes/admin_default/css/admin_screen.css
+++ b/themes/admin_default/css/admin_screen.css
@@ -35,13 +35,12 @@
.gSelected img,
.gAvailable .gBlock img {
float: left;
- margin-right: 1em;
+ margin: 0 1em 1em 0;
}
.rtl .gSelected img,
.rtl .gAvailable .gBlock img {
float: right;
- margin-left: 1em;
}
.gSelected {
@@ -202,7 +201,7 @@
#gAdminGraphics .gAvailable .gBlock {
clear: none;
float: left;
- height: 16em;
+ height: 17em;
margin-right: 1em;
width: 30%;
}
@@ -263,8 +262,8 @@ li.gGroup {
}
li.gGroup h4 {
- background-color: #EEEEEE;
- border-bottom: 1px dashed #CCCCCC;
+ background-color: #eee;
+ border-bottom: 1px dashed ccc;
padding: .5em 0 .5em .5em;
}
li.gGroup .gButtonLink {
diff --git a/themes/admin_default/css/screen.css b/themes/admin_default/css/screen.css
index 062c0e41..c275eb10 100644
--- a/themes/admin_default/css/screen.css
+++ b/themes/admin_default/css/screen.css
@@ -108,7 +108,7 @@ table {
}
#gContent table {
- margin: 1em 0;
+ margin: 1em 0 3em 0;
}
caption,
@@ -124,6 +124,10 @@ td {
vertical-align: top;
}
+#gAdminMaintenance td {
+ vertical-align: middle;
+}
+
/* Forms ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
fieldset {
@@ -279,9 +283,9 @@ li.gError select {
width: 100%;
}
-#gAdminAkismet .gSuccess,
#gSiteStatus li,
-#gMessage li {
+#gMessage li,
+.gModuleStatus {
border: 1px solid #ccc;
margin-bottom: .4em;
}
@@ -292,71 +296,62 @@ li.gError select {
border-bottom: 1px solid #ccc;
}
-#gSiteStatus .gError,
-#gMessage .gError,
-form p.gError,
-#gSiteStatus .gInfo,
-#gMessage .gInfo,
-#gSiteStatus .gSuccess,
-#gMessage .gSuccess,
-#gSiteStatus .gWarning,
-#gMessage .gWarning {
+.gModuleStatus {
+ clear: both;
+ margin-bottom: 1em;
+}
+
+.gError,
+.gInfo,
+.gSuccess,
+.gWarning {
background-position: .4em 50%;
background-repeat: no-repeat;
padding: .4em .5em .4em 30px;
}
.gError {
- background-color: #fcc;
-}
-
-form .gError {
- color: #f00;
-}
-
-#gSiteStatus .gError,
-#gMessage .gError,
-form p.gError {
+ background-color: #f6cbca;
+ color: red;
background-image: url('../images/ico-error.png');
}
.gInfo {
background-color: #e8e8e8;
-}
-
-#gSiteStatus .gInfo,
-#gMessage .gInfo {
background-image: url('../images/ico-info.png');
}
.gSuccess {
- background-color: #96EF95;
-}
-
-#gSiteStatus .gSuccess,
-#gMessage .gSuccess {
+ background-color: #d9efc2;
background-image: url('../images/ico-success.png');
}
.gWarning {
- background-color: #ff9;
+ background-color: #fcf9ce;
+ background-image: url('../images/ico-warning.png');
}
-#gSiteStatus .gWarning,
-#gMessage .gWarning {
- background-image: url('../images/ico-warning.png');
+table .gError {
+ background-color: #f6cbca !important;
+}
+
+table .gWarning {
+ background-color: #fcf9ce !important;
}
+.gPager .gInfo,
form .gError,
-.gPager .gInfo {
- background-color: #fff;
+table .gInfo,
+table .gSuccess {
+ background-color: transparent !important;
}
-#gAdminMaintenance .gError,
-#gAdminMaintenance .gInfo,
-#gAdminMaintenance .gWarning,
-#gAdminMaintenance .gSuccess {
- background-image: none;
+.gPager .gInfo,
+table .gError,
+table .gInfo,
+table .gSuccess,
+table .gWarning {
+ background-image: none !important;
}
/* Inline layout (forms, lists) ~~~~~~~~~~ */
@@ -823,7 +818,6 @@ form .gError,
.ui-widget-overlay {
background: #000;
opacity: .7;
- filter: Alpha(Opacity=70);
}
#gDialog {
diff --git a/themes/default/css/screen.css b/themes/default/css/screen.css
index d39152e4..82cdb331 100644
--- a/themes/default/css/screen.css
+++ b/themes/default/css/screen.css
@@ -279,9 +279,9 @@ li.gError select {
width: 100%;
}
-#gAdminAkismet .gSuccess,
#gSiteStatus li,
-#gMessage li {
+#gMessage li,
+.gModuleStatus {
border: 1px solid #ccc;
margin-bottom: .4em;
}
@@ -292,71 +292,49 @@ li.gError select {
border-bottom: 1px solid #ccc;
}
-#gSiteStatus .gError,
-#gMessage .gError,
-form p.gError,
-#gSiteStatus .gInfo,
-#gMessage .gInfo,
-#gSiteStatus .gSuccess,
-#gMessage .gSuccess,
-#gSiteStatus .gWarning,
-#gMessage .gWarning {
+.gModuleStatus {
+ clear: both;
+ margin-bottom: 1em;
+}
+
+.gError,
+.gInfo,
+.gSuccess,
+.gWarning {
background-position: .4em 50%;
background-repeat: no-repeat;
padding: .4em .5em .4em 30px;
}
.gError {
- background-color: #fcc;
-}
-
-form .gError {
- color: #f00;
-}
-
-#gSiteStatus .gError,
-#gMessage .gError,
-form p.gError {
+ background-color: #f6cbca;
+ color: #fc0;
background-image: url('../images/ico-error.png');
}
.gInfo {
background-color: #e8e8e8;
-}
-
-#gSiteStatus .gInfo,
-#gMessage .gInfo {
background-image: url('../images/ico-info.png');
}
.gSuccess {
- background-color: #96EF95;
-}
-
-#gSiteStatus .gSuccess,
-#gMessage .gSuccess {
+ background-color: #d9efc2;
background-image: url('../images/ico-success.png');
}
.gWarning {
- background-color: #ff9;
-}
-
-#gSiteStatus .gWarning,
-#gMessage .gWarning {
+ background-color: #fcf9ce;
background-image: url('../images/ico-warning.png');
}
form .gError,
.gPager .gInfo {
- background-color: #fff;
+ background-color: #fff !important;
}
-#gAdminMaintenance .gError,
-#gAdminMaintenance .gInfo,
-#gAdminMaintenance .gWarning,
-#gAdminMaintenance .gSuccess {
- background-image: none;
+.gPager .gInfo {
+ background-image: none !important;
+ padding: 0 !important;
}
/* Inline layout (forms, lists) ~~~~~~~~~~ */
--
cgit v1.2.3
From a5ddef021c1ca4920e40c0657de082ae0d7008ee Mon Sep 17 00:00:00 2001
From: Tim Almdal
Date: Sat, 29 Aug 2009 15:03:46 -0700
Subject: Fix invalida syntax on trying to parse the progress bar percentage
---
modules/gallery/views/admin_maintenance_task.html.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'modules/gallery')
diff --git a/modules/gallery/views/admin_maintenance_task.html.php b/modules/gallery/views/admin_maintenance_task.html.php
index 0eb0b38c..509e87b5 100644
--- a/modules/gallery/views/admin_maintenance_task.html.php
+++ b/modules/gallery/views/admin_maintenance_task.html.php
@@ -4,7 +4,7 @@
var animation = null;
var delta = 1;
animate_progress_bar = function() {
- var current_value = Number($(".gProgressBar div").css("width").replace("%", ""));
+ var current_value = parseInt($(".gProgressBar div").css("width").replace("%", ""));
if (target_value > current_value) {
// speed up
delta = Math.min(delta + 0.04, 3);
--
cgit v1.2.3
From 0aceba6f48e5542d3edfbb1f195af50187adbac4 Mon Sep 17 00:00:00 2001
From: Tim Almdal
Date: Sat, 29 Aug 2009 15:20:27 -0700
Subject: Fix for ticket #628: 1) increased gallery module version to 11 2)
added image_sharpened parameter to the gallery module 3) sharpen all resizes.
---
modules/gallery/helpers/gallery_installer.php | 9 ++++++++-
modules/gallery/helpers/graphics.php | 5 +++++
modules/gallery/module.info | 2 +-
3 files changed, 14 insertions(+), 2 deletions(-)
(limited to 'modules/gallery')
diff --git a/modules/gallery/helpers/gallery_installer.php b/modules/gallery/helpers/gallery_installer.php
index a212ef85..40830bc0 100644
--- a/modules/gallery/helpers/gallery_installer.php
+++ b/modules/gallery/helpers/gallery_installer.php
@@ -223,6 +223,7 @@ class gallery_installer {
module::set_var("gallery", "resize_size", 640);
module::set_var("gallery", "default_locale", "en_US");
module::set_var("gallery", "image_quality", 75);
+ module::set_var("gallery", "image_sharpen", 15);
// Add rules for generating our thumbnails and resizes
graphics::add_rule(
@@ -259,7 +260,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 Gallery %version");
- module::set_version("gallery", 10);
+ module::set_version("gallery", 11);
}
static function upgrade($version) {
@@ -336,6 +337,12 @@ class gallery_installer {
module::set_version("gallery", $version = 10);
}
+
+ if ($version == 10) {
+ module::set_var("gallery", "image_sharpen", 15);
+
+ module::set_version("gallery", $version = 11);
+ }
}
static function uninstall() {
diff --git a/modules/gallery/helpers/graphics.php b/modules/gallery/helpers/graphics.php
index 7dc46eeb..2892011f 100644
--- a/modules/gallery/helpers/graphics.php
+++ b/modules/gallery/helpers/graphics.php
@@ -206,10 +206,15 @@ class graphics_Core {
// Image would get upscaled; do nothing
copy($input_file, $output_file);
} else {
+ try {
Image::factory($input_file)
->resize($options["width"], $options["height"], $options["master"])
->quality(module::get_var("gallery", "image_quality"))
+ ->sharpen(module::get_var("gallery", "image_sharpen"))
->save($output_file);
+ } catch (Exception $e) {
+ Kohana::log("error", $e->getMessage());
+ }
}
module::event("graphics_resize_completed", $input_file, $output_file, $options);
diff --git a/modules/gallery/module.info b/modules/gallery/module.info
index dfb1a7a2..6b9dd1ba 100644
--- a/modules/gallery/module.info
+++ b/modules/gallery/module.info
@@ -1,3 +1,3 @@
name = "Gallery 3"
description = "Gallery core application"
-version = 10
+version = 11
--
cgit v1.2.3