X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FRegion.php;h=7868cee23813384dcd91f33f40ccb39a2d88c6d8;hb=9ff0c7a14c08d62bcec9bfe39b4dd970186804eb;hp=1dcca501ef6105983268703e49576dc68a8bedf5;hpb=c8dd7c11b391cda17ad708d827fa6f4f68bca77a;p=civicrm-core.git diff --git a/CRM/Core/Region.php b/CRM/Core/Region.php index 1dcca501ef..7868cee238 100644 --- a/CRM/Core/Region.php +++ b/CRM/Core/Region.php @@ -7,14 +7,15 @@ class CRM_Core_Region { static private $_instances = NULL; /** - * Obtain the content for a given region + * Obtain the content for a given region. * * @param string $name - * @param bool $autocreate whether to automatically create an empty region + * @param bool $autocreate + * Whether to automatically create an empty region. * @return CRM_Core_Region */ - static function &instance($name, $autocreate = TRUE) { - if ( $autocreate && ! isset( self::$_instances[$name] ) ) { + public static function &instance($name, $autocreate = TRUE) { + if ($autocreate && !isset(self::$_instances[$name])) { self::$_instances[$name] = new CRM_Core_Region($name); } return self::$_instances[$name]; @@ -47,7 +48,7 @@ class CRM_Core_Region { public function __construct($name) { // Templates injected into regions should normally be file names, but sometimes inline notation is handy. require_once 'CRM/Core/Smarty/resources/String.php'; - civicrm_smarty_register_string_resource( ); + civicrm_smarty_register_string_resource(); $this->_name = $name; $this->_snippets = array(); @@ -63,7 +64,7 @@ class CRM_Core_Region { } /** - * Add a snippet of content to a region + * Add a snippet of content to a region. * * @code * CRM_Core_Region::instance('page-header')->add(array( @@ -83,7 +84,8 @@ class CRM_Core_Region { * Note: This function does not perform any extra encoding of markup, script code, or etc. If * you're passing in user-data, you must clean it yourself. * - * @param $snippet array; keys: + * @param array $snippet + * Array; keys:. * - type: string (auto-detected for markup, template, callback, script, scriptUrl, jquery, style, styleUrl) * - name: string, optional * - weight: int, optional; default=1 @@ -120,7 +122,7 @@ class CRM_Core_Region { if (!isset($snippet['name'])) { $snippet['name'] = count($this->_snippets); } - $this->_snippets[ $snippet['name'] ] = $snippet; + $this->_snippets[$snippet['name']] = $snippet; $this->_isSorted = FALSE; return $snippet; } @@ -144,10 +146,12 @@ class CRM_Core_Region { } /** - * Render all the snippets in a region + * Render all the snippets in a region. * - * @param string $default HTML, the initial content of the region - * @param bool $allowCmsOverride allow CMS to override rendering of region + * @param string $default + * HTML, the initial content of the region. + * @param bool $allowCmsOverride + * Allow CMS to override rendering of region. * @return string, HTML */ public function render($default, $allowCmsOverride = TRUE) { @@ -169,25 +173,29 @@ class CRM_Core_Region { if ($snippet['disabled']) { continue; } - switch($snippet['type']) { + switch ($snippet['type']) { case 'markup': $html .= $snippet['markup']; break; + case 'template': $tmp = $smarty->get_template_vars('snippet'); $smarty->assign('snippet', $snippet); $html .= $smarty->fetch($snippet['template']); $smarty->assign('snippet', $tmp); break; + case 'callback': $args = isset($snippet['arguments']) ? $snippet['arguments'] : array(&$snippet, &$html); $html .= call_user_func_array($snippet['callback'], $args); break; + case 'scriptUrl': if (!$allowCmsOverride || !$cms->addScriptUrl($snippet['scriptUrl'], $this->_name)) { $html .= sprintf("\n", $snippet['scriptUrl']); } break; + case 'jquery': $snippet['script'] = sprintf("CRM.\$(function(\$) {\n%s\n});", $snippet['jquery']); // no break - continue processing as script @@ -196,20 +204,23 @@ class CRM_Core_Region { $html .= sprintf("\n", $snippet['script']); } break; + case 'styleUrl': if (!$allowCmsOverride || !$cms->addStyleUrl($snippet['styleUrl'], $this->_name)) { $html .= sprintf("\n", $snippet['styleUrl']); } break; + case 'style': if (!$allowCmsOverride || !$cms->addStyle($snippet['style'], $this->_name)) { $html .= sprintf("\n", $snippet['style']); } break; + default: require_once 'CRM/Core/Error.php'; - CRM_Core_Error::fatal( ts( 'Snippet type %1 is unrecognized', - array( 1 => $snippet['type'] ) ) ); + CRM_Core_Error::fatal(ts('Snippet type %1 is unrecognized', + array(1 => $snippet['type']))); } } return $html; @@ -221,53 +232,65 @@ class CRM_Core_Region { * * @return int */ - static function _cmpSnippet($a, $b) { - if ($a['weight'] < $b['weight']) return -1; - if ($a['weight'] > $b['weight']) return 1; + public static function _cmpSnippet($a, $b) { + if ($a['weight'] < $b['weight']) { + return -1; + } + if ($a['weight'] > $b['weight']) { + return 1; + } // fallback to name sort; don't really want to do this, but it makes results more stable - if ($a['name'] < $b['name']) return -1; - if ($a['name'] > $b['name']) return 1; + if ($a['name'] < $b['name']) { + return -1; + } + if ($a['name'] > $b['name']) { + return 1; + } return 0; } /** - * Add block of static HTML to a region + * Add block of static HTML to a region. * - * @param string $markup HTML + * @param string $markup + * HTML. * - public function addMarkup($markup) { - return $this->add(array( - 'type' => 'markup', - 'markup' => $markup, - )); - } - - /** - * Add a Smarty template file to a region + * public function addMarkup($markup) { + * return $this->add(array( + * 'type' => 'markup', + * 'markup' => $markup, + * )); + * } + * + * /** + * Add a Smarty template file to a region. * * Note: File is not evaluated until the page is rendered * - * @param string $template path to the Smarty template file + * @param string $template + * Path to the Smarty template file. * - public function addTemplate($template) { - return $this->add(array( - 'type' => 'template', - 'template' => $template, - )); - } - - /** - * Use a callback function to extend a region + * public function addTemplate($template) { + * return $this->add(array( + * 'type' => 'template', + * 'template' => $template, + * )); + * } + * + * /** + * Use a callback function to extend a region. * * @param mixed $callback - * @param array $arguments optional, array of parameters for callback; if omitted, the default arguments are ($snippetSpec, $html) + * @param array $arguments + * Optional, array of parameters for callback; if omitted, the default arguments are ($snippetSpec, $html). * - public function addCallback($callback, $arguments = FALSE) { - return $this->add(array( - 'type' => 'callback', - 'callback' => $callback, - 'arguments' => $arguments, - )); - } - */ + * public function addCallback($callback, $arguments = FALSE) { + * return $this->add(array( + * 'type' => 'callback', + * 'callback' => $callback, + * 'arguments' => $arguments, + * )); + * } + */ + }