summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-11-03 05:52:13 +0000
committerBharat Mediratta <bharat@menalto.com>2008-11-03 05:52:13 +0000
commit6da6b8ed52086d967bdb0d8e4140cbdffdb18cf7 (patch)
tree8220fcccfd225b1e27727ea74f7a0c22aa5d7176 /core
parent6c35abd30a741a77c7657db3f22d35c1b7dbb64b (diff)
Theme helper. Right now it has one api method, theme::url which
returns a url local to the theme that you're in. For example, if you're in themes/foo/views/page_header.html.php and you call theme::url("images/foo.png") then it'll create a url to: themes/foo/images/foo.png
Diffstat (limited to 'core')
-rw-r--r--core/helpers/theme.php30
-rw-r--r--core/tests/Theme_Test.php34
2 files changed, 64 insertions, 0 deletions
diff --git a/core/helpers/theme.php b/core/helpers/theme.php
new file mode 100644
index 00000000..2146f322
--- /dev/null
+++ b/core/helpers/theme.php
@@ -0,0 +1,30 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 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 theme_Core {
+ public static $debug_backtrace = "debug_backtrace";
+
+ public static function url($path) {
+ $caller = array_shift(call_user_func(theme::$debug_backtrace));
+ $calling_file = $caller['file'];
+ $theme_name = substr($caller['file'], strlen(THEMEPATH));
+ $theme_name = substr($theme_name, 0, strcspn($theme_name, "/"));
+ return url::base() . "themes/{$theme_name}/$path";
+ }
+}
diff --git a/core/tests/Theme_Test.php b/core/tests/Theme_Test.php
new file mode 100644
index 00000000..b8f702f3
--- /dev/null
+++ b/core/tests/Theme_Test.php
@@ -0,0 +1,34 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 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 Theme_Test extends Unit_Test_Case {
+ public function teardown() {
+ theme::$debug_backtrace = "debug_backtrace";
+ }
+
+ public function url_test() {
+ theme::$debug_backtrace = array("Theme_Test", "_fake_debug_backtrace");
+ $this->assert_equal("http://./themes/fake_theme/file", theme::url("file"));
+ }
+
+ public function _fake_debug_backtrace() {
+ return array(array('file' => THEMEPATH . "fake_theme/views/some_file.html.php"));
+ }
+} \ No newline at end of file