summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2010-02-23 18:32:00 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2010-02-23 18:32:00 +0000
commitdce608f5a4a33fb679c266c926efdaf4a084ba86 (patch)
tree6c2721039fb182d119e0c97480f0881f17c60f32
parent124f83e79c6da47c6434f794335baf86bd21aa3c (diff)
downloadbrdo-dce608f5a4a33fb679c266c926efdaf4a084ba86.tar.gz
brdo-dce608f5a4a33fb679c266c926efdaf4a084ba86.tar.bz2
#674784 by JohnAlbin, naxoc, et al: Fixed theme_get_suggestions() fails to return 'page__front()' suggestion on front page.
-rw-r--r--includes/theme.inc8
-rw-r--r--modules/simpletest/tests/theme.test14
2 files changed, 19 insertions, 3 deletions
diff --git a/includes/theme.inc b/includes/theme.inc
index 0c9b0c3ed..5d5363113 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -2460,20 +2460,22 @@ function theme_get_suggestions($args, $base, $delimiter = '__') {
// page__node__edit page-node-edit
$suggestions = array();
+ $prefix = $base;
foreach ($args as $arg) {
// Remove slashes or null per SA-CORE-2009-003.
$arg = str_replace(array("/", "\\", "\0"), '', $arg);
// The percent acts as a wildcard for numeric arguments since
// asterisks are not valid filename characters on many filesystems.
if (is_numeric($arg)) {
- $suggestions[] = $base . $delimiter . '%';
+ $suggestions[] = $prefix . $delimiter . '%';
}
- $suggestions[] = $base . $delimiter . $arg;
+ $suggestions[] = $prefix . $delimiter . $arg;
if (!is_numeric($arg)) {
- $base .= $delimiter . $arg;
+ $prefix .= $delimiter . $arg;
}
}
if (drupal_is_front_page()) {
+ // Front templates should be based on root only, not prefixed arguments.
$suggestions[] = $base . $delimiter . 'front';
}
diff --git a/modules/simpletest/tests/theme.test b/modules/simpletest/tests/theme.test
index 0be8cb05a..c46dc9d93 100644
--- a/modules/simpletest/tests/theme.test
+++ b/modules/simpletest/tests/theme.test
@@ -39,6 +39,20 @@ class TemplateUnitTest extends DrupalWebTestCase {
$suggestions = theme_get_suggestions($args, 'page');
$this->assertEqual($suggestions, array('page__node', 'page__node__%', 'page__node__1'), t('Removed invalid \\0 from suggestions'));
}
+
+ /**
+ * Ensure page-front template suggestion is added when on front page.
+ */
+ function testFrontPageThemeSuggestion() {
+ $q = $_GET['q'];
+ // Set $_GET['q'] to node because theme_get_suggestions() will query it to
+ // see if we are on the front page.
+ $_GET['q'] = variable_get('site_frontpage', 'node');
+ $suggestions = theme_get_suggestions(explode('/', $_GET['q']), 'page');
+ // Set it back to not annoy the batch runner.
+ $_GET['q'] = $q;
+ $this->assertTrue(in_array('page__front', $suggestions), t('Front page template was suggested.'));
+ }
}
/**