summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/gallery/models/item.php4
-rw-r--r--modules/gallery/tests/Item_Model_Test.php10
2 files changed, 12 insertions, 2 deletions
diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php
index da1f6959..a87997c6 100644
--- a/modules/gallery/models/item.php
+++ b/modules/gallery/models/item.php
@@ -284,8 +284,8 @@ class Item_Model extends ORM_MPTT {
->where("id <>", 1)
->orderby("left_ptr", "ASC")
->get() as $row) {
- $names[] = urlencode($row->name);
- $slugs[] = urlencode($row->slug);
+ $names[] = rawurlencode($row->name);
+ $slugs[] = rawurlencode($row->slug);
}
$this->relative_path_cache = implode($names, "/");
$this->relative_url_cache = implode($slugs, "/");
diff --git a/modules/gallery/tests/Item_Model_Test.php b/modules/gallery/tests/Item_Model_Test.php
index 585e247c..84210e4c 100644
--- a/modules/gallery/tests/Item_Model_Test.php
+++ b/modules/gallery/tests/Item_Model_Test.php
@@ -150,4 +150,14 @@ class Item_Model_Test extends Unit_Test_Case {
$this->assert_same("ORIGINAL_VALUE", $item->original()->title);
$this->assert_same("NEW_VALUE", $item->title);
}
+
+ public function urls_are_rawurlencoded_test() {
+ $item = self::_create_random_item();
+ $item->slug = "foo bar";
+ $item->name = "foo bar.jpg";
+ $item->save();
+
+ $this->assert_equal("foo%20bar", $item->relative_url());
+ $this->assert_equal("foo%20bar.jpg", $item->relative_path());
+ }
}