aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-10-28 16:01:53 +0000
committerben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-10-28 16:01:53 +0000
commit225e17002545e9965f959918d4ac804a5004e9ad (patch)
tree1556750c1ea1b5a9ceed8d2b6605fc7239246f4c
parentb8192c6349d9b5b3293099d06ee1eb239dd7b9fd (diff)
downloadelgg-225e17002545e9965f959918d4ac804a5004e9ad.tar.gz
elgg-225e17002545e9965f959918d4ac804a5004e9ad.tar.bz2
Views are now more granular.
git-svn-id: https://code.elgg.org/elgg/trunk@2331 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r--engine/lib/elgglib.php45
-rw-r--r--engine/lib/plugins.php10
2 files changed, 39 insertions, 16 deletions
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php
index 1bc05fca2..df2b3f7de 100644
--- a/engine/lib/elgglib.php
+++ b/engine/lib/elgglib.php
@@ -138,15 +138,17 @@
function elgg_get_view_location($view)
{
global $CONFIG;
-
- if (!isset($CONFIG->views->locations[$view])) {
+
+ $viewtype = elgg_get_viewtype();
+
+ if (!isset($CONFIG->views->locations[$viewtype][$view])) {
if (!isset($CONFIG->viewpath)) {
return dirname(dirname(dirname(__FILE__))) . "/views/";
} else {
return $CONFIG->viewpath;
}
} else {
- return $CONFIG->views->locations[$view];
+ return $CONFIG->views->locations[$viewtype][$view];
}
return false;
@@ -278,14 +280,14 @@
// Detect view type
$viewtype = elgg_get_viewtype();
- if (!isset($CONFIG->views->locations[$view])) {
+ if (!isset($CONFIG->views->locations[$viewtype][$view])) {
if (!isset($CONFIG->viewpath)) {
$location = dirname(dirname(dirname(__FILE__))) . "/views/";
} else {
$location = $CONFIG->viewpath;
}
} else {
- $location = $CONFIG->views->locations[$view];
+ $location = $CONFIG->views->locations[$viewtype][$view];
}
if (file_exists($location . "{$viewtype}/{$view}.php")) {
@@ -336,14 +338,17 @@
global $CONFIG;
static $treecache;
+ // Get viewtype
+ $viewtype = elgg_get_viewtype();
+
// Has the treecache been initialised?
if (!isset($treecache)) $treecache = array();
// A little light internal caching
if (!empty($treecache[$view_root])) return $treecache[$view_root];
// Examine $CONFIG->views->locations
- if (isset($CONFIG->views->locations)) {
- foreach($CONFIG->views->locations as $view => $path) {
+ if (isset($CONFIG->views->locations[$viewtype])) {
+ foreach($CONFIG->views->locations[$viewtype] as $view => $path) {
$pos = strpos($view,$view_root);
if ($pos === 0) {
$treecache[$view_root][] = $view;
@@ -769,9 +774,10 @@
* @param string $view_name The name of the view to extend
* @param int $priority The priority, from 0 to 1000, to add at (lowest numbers will be displayed first)
*/
- function extend_view($view, $view_name, $priority = 501) {
+ function extend_view($view, $view_name, $priority = 501, $viewtype = '') {
global $CONFIG;
+
if (!isset($CONFIG->views)) {
$CONFIG->views = new stdClass;
}
@@ -795,16 +801,26 @@
* @param string $view The name of the view
* @param string $location The base location path
*/
- function set_view_location($view, $location) {
+ function set_view_location($view, $location, $viewtype = '') {
global $CONFIG;
+
+ if (empty($viewtype))
+ $viewtype = 'default';
+
if (!isset($CONFIG->views)) {
$CONFIG->views = new stdClass;
}
if (!isset($CONFIG->views->locations)) {
- $CONFIG->views->locations = array($view => $location);
+ $CONFIG->views->locations = array($viewtype => array(
+ $view => $location
+ ));
+ } else if (!isset($CONFIG->views->locations[$viewtype])) {
+ $CONFIG->views->locations[$viewtype] = array(
+ $view => $location
+ );
} else {
- $CONFIG->views->locations[$view] = $location;
+ $CONFIG->views->locations[$viewtype][$view] = $location;
}
}
@@ -815,8 +831,9 @@
* @param string $view_base The base of the view name
* @param string $folder The folder to begin looking in
* @param string $base_location_path The base views directory to use with set_view_location
+ * @param string $viewtype The type of view we're looking at (default, rss, etc)
*/
- function autoregister_views($view_base, $folder, $base_location_path) {
+ function autoregister_views($view_base, $folder, $base_location_path, $viewtype) {
if (!isset($i)) $i = 0;
if ($handle = opendir($folder)) {
@@ -824,11 +841,11 @@
if (!in_array($view,array('.','..','.svn','CVS')) && !is_dir($folder . "/" . $view)) {
if ((substr_count($view,".php") > 0) || (substr_count($view,".png") > 0)) {
if (!empty($view_base)) { $view_base_new = $view_base . "/"; } else { $view_base_new = ""; }
- set_view_location($view_base_new . str_replace(".php","",$view), $base_location_path);
+ set_view_location($view_base_new . str_replace(".php","",$view), $base_location_path, $viewtype);
}
} else if (!in_array($view,array('.','..','.svn','CVS')) && is_dir($folder . "/" . $view)) {
if (!empty($view_base)) { $view_base_new = $view_base . "/"; } else { $view_base_new = ""; }
- autoregister_views($view_base_new . $view, $folder . "/" . $view, $base_location_path);
+ autoregister_views($view_base_new . $view, $folder . "/" . $view, $base_location_path, $viewtype);
}
}
}
diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php
index b78418243..3cc11f96c 100644
--- a/engine/lib/plugins.php
+++ b/engine/lib/plugins.php
@@ -185,8 +185,14 @@
if (file_exists($CONFIG->pluginspath . $mod)) {
if (!@include($CONFIG->pluginspath . $mod . "/start.php"))
throw new PluginException(sprintf(elgg_echo('PluginException:MisconfiguredPlugin'), $mod));
- if (is_dir($CONFIG->pluginspath . $mod . "/views/default")) {
- autoregister_views("",$CONFIG->pluginspath . $mod . "/views/default",$CONFIG->pluginspath . $mod . "/views/");
+ if (is_dir($CONFIG->pluginspath . $mod . "/views")) {
+ if ($handle = opendir($CONFIG->pluginspath . $mod . "/views")) {
+ while ($viewtype = readdir($handle)) {
+ if (!in_array($viewtype,array('.','..','.svn','CVS')) && is_dir($CONFIG->pluginspath . $mod . "/views/" . $viewtype)) {
+ autoregister_views("",$CONFIG->pluginspath . $mod . "/views/" . $viewtype,$CONFIG->pluginspath . $mod . "/views/", $viewtype);
+ }
+ }
+ }
}
if (is_dir($CONFIG->pluginspath . $mod . "/languages")) {
register_translations($CONFIG->pluginspath . $mod . "/languages/");