X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FRegion.php;h=9db08aa172b053e9a270f583456854fc064dec43;hb=5c4d65599fee6dfdf661b4932d12c5905e60ac90;hp=63953d104b95b1ce7b86f5f2e58c275475e1316d;hpb=1789c269b1c68178c1f3de38d751a4e37f94db4c;p=civicrm-core.git diff --git a/CRM/Core/Region.php b/CRM/Core/Region.php index 63953d104b..9db08aa172 100644 --- a/CRM/Core/Region.php +++ b/CRM/Core/Region.php @@ -10,11 +10,12 @@ class CRM_Core_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]; @@ -42,12 +43,12 @@ class CRM_Core_Region { var $_isSorted; /** - * @param $name + * @param string $name */ 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(); @@ -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,13 +122,13 @@ 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; } /** - * @param $name + * @param string $name * @param $snippet */ public function update($name, $snippet) { @@ -135,7 +137,7 @@ class CRM_Core_Region { } /** - * @param $name + * @param string $name * * @return mixed */ @@ -146,8 +148,10 @@ class CRM_Core_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 * - * @param string $markup HTML + * @param string $markup + * HTML. * - public function addMarkup($markup) { - return $this->add(array( - 'type' => 'markup', - 'markup' => $markup, - )); - } - - /** + * 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, - )); - } - - /** + * 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, + * )); + * } + */ + }