Example #1
0
 /**
  * Render the view
  *
  * @param string $___viewFn
  * @param string $___dataForView
  * @return void
  */
 protected function _render($___viewFn, $___dataForView = array())
 {
     $isCtpFile = substr($___viewFn, -3) === 'ctp';
     if (empty($___dataForView)) {
         $___dataForView = $this->viewVars;
     }
     if ($isCtpFile) {
         $out = parent::_render($___viewFn, $___dataForView);
     } else {
         ob_start();
         // Setup the helpers from the new Helper Collection
         $helpers = array();
         $loadedHelpers = $this->Helpers->loaded();
         foreach ($loadedHelpers as $helper) {
             $name = Inflector::variable($helper);
             $helpers[$name] = $this->loadHelper($helper);
         }
         $data = array_merge($___dataForView, $helpers);
         $data['_view'] = $this;
         $data['config'] = Configure::read();
         $relativeFn = str_replace($this->templatePaths, '', $___viewFn);
         $template = $this->Twig->loadTemplate($relativeFn);
         echo $template->render($data);
         $out = ob_get_clean();
     }
     return $out;
 }
Example #2
0
 /**
  * @brief render views
  *
  * Let cake render the view as per normal, then pass the data to Mustache
  * to render the data into any templates
  *
  * @access protected
  *
  * @param string $viewFile the file that is being rendered
  * @param array $data see cake docs
  *
  * @return string the rendered output
  */
 protected function _render($viewFile, $data = array())
 {
     $this->__loadHelpers();
     $out = parent::_render($viewFile, $data);
     $this->__renderMustache($out);
     $this->__parseSnips($out);
     return $out;
 }
Example #3
0
 /**
  * Overrides the View::_render()
  * Sets variables used in CakePHP to Smarty variables
  *
  * @param string $___viewFn
  * @param string $___data_for_view
  * @param string $___play_safe
  * @param string $loadHelpers
  * @return rendered views
  */
 function _render($___viewFn, $___data_for_view = array())
 {
     // use cake's render for .ctp files.
     if (preg_match('/\\.ctp$/', $___viewFn)) {
         return parent::_render($___viewFn, $___data_for_view);
     }
     if ($this->helpers != false) {
         $this->loadHelpers();
         $loadedHelpers = $this->helpers;
         foreach (array_keys($loadedHelpers) as $helper) {
             $replace = strtolower(substr($helper, 0, 1));
             $camelBackedHelper = preg_replace('/\\w/', $replace, $helper, 1);
             ${$camelBackedHelper} =& $loadedHelpers[$helper];
             if (isset(${$camelBackedHelper}->helpers) && is_array(${$camelBackedHelper}->helpers)) {
                 foreach (${$camelBackedHelper}->helpers as $subHelper) {
                     ${$camelBackedHelper}->{$subHelper} =& $loadedHelpers[$subHelper];
                 }
             }
             $this->loaded[$camelBackedHelper] = ${$camelBackedHelper};
             switch ($this->smartyMajorVersion) {
                 case 2:
                     $this->Smarty->assign_by_ref($camelBackedHelper, ${$camelBackedHelper});
                     break;
                 case 3:
                     $this->Smarty->assignByRef($camelBackedHelper, ${$camelBackedHelper});
                     break;
             }
         }
     }
     $this->registerFunctions();
     if (empty($___data_for_view)) {
         $___data_for_view = $this->viewVars;
     }
     foreach ($___data_for_view as $data => $value) {
         if (!is_object($data)) {
             $this->Smarty->assign($data, $value);
         }
     }
     switch ($this->smartyMajorVersion) {
         case 2:
             $this->Smarty->assign_by_ref('view', $this);
             $this->Smarty->assign_by_ref('this', $this);
             break;
         case 3:
             $this->Smarty->assignByRef('view', $this);
             $this->Smarty->assignByRef('this', $this);
             break;
     }
     $res = $this->Smarty->fetch($___viewFn);
     return $res;
 }
Example #4
0
 /**
  * Render the view
  *
  * @param string $_viewFn 
  * @param string $_dataForView 
  * @return void
  */
 protected function _render($_viewFn, $_dataForView = array())
 {
     $isCtpFile = substr($_viewFn, -3) === 'ctp';
     if (empty($_dataForView)) {
         $_dataForView = $this->viewVars;
     }
     if ($isCtpFile) {
         return parent::_render($_viewFn, $_dataForView);
     }
     ob_start();
     // Setup the helpers from the new Helper Collection
     $helpers = array();
     $loaded_helpers = $this->Helpers->attached();
     foreach ($loaded_helpers as $helper) {
         $name = Inflector::variable($helper);
         $helpers[$name] = $this->loadHelper($helper);
     }
     if (!isset($_dataForView['cakeDebug'])) {
         $_dataForView['cakeDebug'] = null;
     }
     $data = array_merge($_dataForView, $helpers);
     $data['_this'] = $this;
     $relativeFn = str_replace($this->templatePaths, '', $_viewFn);
     $template = $this->Twig->loadTemplate($relativeFn);
     echo $template->render($data);
     return ob_get_clean();
 }
Example #5
0
 protected function _render($___viewFn, $___dataForView = array())
 {
     $isCtpFile = substr($___viewFn, -3) === 'ctp';
     if (empty($___dataForView)) {
         $___dataForView = $this->viewVars;
     }
     if ($isCtpFile) {
         $out = parent::_render($___viewFn, $___dataForView);
     } else {
         extract($___dataForView, EXTR_SKIP);
         foreach ($___dataForView as $data => $value) {
             if (!is_object($data)) {
                 $this->Smarty->assign($data, $value);
             }
         }
         $this->Smarty->assign('_view', $this);
         $out = $this->Smarty->fetch($___viewFn);
     }
     return $out;
 }
Example #6
0
 /**
  * Renders a layout. Returns output from _render(). Returns false on error.
  *
  * @param string $content_for_layout Content to render in a view, wrapped by the surrounding layout.
  * @return mixed Rendered output, or false on error
  */
 function renderLayout($content_for_layout, $layout = null)
 {
     $layoutFileName = $this->_getLayoutFileName($layout);
     if (empty($layoutFileName)) {
         return $this->output;
     }
     $debug = '';
     if (isset($this->viewVars['cakeDebug']) && Configure::read() > 2) {
         $params = array('controller' => $this->viewVars['cakeDebug']);
         $debug = View::element('dump', $params, false);
         unset($this->viewVars['cakeDebug']);
     }
     if ($this->pageTitle !== false) {
         $pageTitle = $this->pageTitle;
     } else {
         $pageTitle = Inflector::humanize($this->viewPath);
     }
     $data_for_layout = array_merge($this->viewVars, array('title_for_layout' => $pageTitle, 'content_for_layout' => $content_for_layout, 'scripts_for_layout' => join("\n\t", $this->__scripts), 'cakeDebug' => $debug));
     if (empty($this->loaded) && !empty($this->helpers)) {
         $loadHelpers = true;
     } else {
         $loadHelpers = false;
         $data_for_layout = array_merge($data_for_layout, $this->loaded);
     }
     $this->_triggerHelpers('beforeLayout', 'beforeSmartyLayout');
     if (substr($layoutFileName, -3) === 'ctp' || substr($layoutFileName, -5) === 'thtml') {
         $this->output = View::_render($layoutFileName, $data_for_layout, $loadHelpers, true);
     } else {
         $this->output = $this->_render($layoutFileName, $data_for_layout, $loadHelpers, true);
     }
     if ($this->output === false) {
         $this->output = $this->_render($layoutFileName, $data_for_layout);
         $msg = __("Error in layout %s, got: <blockquote>%s</blockquote>", true);
         trigger_error(sprintf($msg, $layoutFileName, $this->output), E_USER_ERROR);
         return false;
     }
     $this->_triggerHelpers('afterLayout', 'afterSmartyLayout');
     return $this->output;
 }
Example #7
0
File: view.php Project: venka10/RUS
 /**
  * Renders a layout. Returns output from _render(). Returns false on error.
  *
  * @param string $contentForLayout Content to render in a view, wrapped by the surrounding layout.
  * @return mixed Rendered output, or false on error
  * @access public
  */
 function renderLayout($contentForLayout)
 {
     $layoutFilename = $this->_getLayoutFileName();
     if (Configure::read() > 2 && $this->controller != null) {
         $debug = View::_render(LIBS . 'view' . DS . 'templates' . DS . 'elements' . DS . 'dump.thtml', array('controller' => $this->controller), false);
     } else {
         $debug = '';
     }
     if ($this->pageTitle !== false) {
         $pageTitle = $this->pageTitle;
     } else {
         $pageTitle = Inflector::humanize($this->viewPath);
     }
     $dataForLayout = array_merge($this->viewVars, array('title_for_layout' => $pageTitle, 'content_for_layout' => $contentForLayout, 'cakeDebug' => $debug));
     if (is_file($layoutFilename)) {
         if (empty($this->loaded) && !empty($this->helpers)) {
             $loadHelpers = true;
         } else {
             $loadHelpers = false;
             $dataForLayout = array_merge($dataForLayout, $this->loaded);
         }
         if (substr($layoutFilename, -5) === 'thtml') {
             $out = View::_render($layoutFilename, $dataForLayout, $loadHelpers, true);
         } else {
             $out = $this->_render($layoutFilename, $dataForLayout, $loadHelpers);
         }
         if ($out === false) {
             $out = $this->_render($layoutFilename, $dataForLayout);
             trigger_error(sprintf("Error in layout %s, got: <blockquote>%s</blockquote>", $layoutFilename, $out), E_USER_ERROR);
             return false;
         } else {
             return $out;
         }
     } else {
         return $this->cakeError('missingLayout', array(array('layout' => $this->layout, 'file' => $layoutFilename, 'base' => $this->base)));
     }
 }
Example #8
0
File: mi.php Project: hiromi2424/mi
 /**
  * render method
  *
  * Wrap the file contents in a comment with the filename (debug mode, and not the layout, only)
  *
  * @param mixed $___viewFn
  * @param mixed $___dataForView
  * @param bool $loadHelpers true
  * @param bool $cached false
  * @return void
  * @access protected
  */
 function _render($___viewFn, $___dataForView, $loadHelpers = true, $cached = false)
 {
     $return = parent::_render($___viewFn, $___dataForView, $loadHelpers, $cached);
     if (!empty($return[0]) && $return[0] === '<' && Configure::read() && !strpos($___viewFn, 'layout')) {
         $return = "\n" . '<!-- ' . $___viewFn . ' START -->' . "\n" . $return . "\n" . '<!-- ' . $___viewFn . ' END -->' . "\n";
     }
     return $return;
 }
Example #9
0
 /**
  * Renders a layout. Returns output from _render(). Returns false on error.
  * Several variables are created for use in layout.
  *	title_for_layout - contains page title
  *	content_for_layout - contains rendered view file
  *	scripts_for_layout - contains scripts added to header
  *  cakeDebug - if debug is on, cake debug information is added.
  *
  * @param string $content_for_layout Content to render in a view, wrapped by the surrounding layout.
  * @return mixed Rendered output, or false on error
  */
 function renderLayout($content_for_layout, $layout = null)
 {
     $layoutFileName = $this->_getLayoutFileName($layout);
     $debug = '';
     if (isset($this->viewVars['cakeDebug']) && Configure::read() > 2) {
         $debug = View::element('dump', array('controller' => $this->viewVars['cakeDebug']), false);
         unset($this->viewVars['cakeDebug']);
     }
     if ($this->pageTitle !== false) {
         $pageTitle = $this->pageTitle;
     } else {
         $pageTitle = Inflector::humanize($this->viewPath);
     }
     $data_for_layout = array_merge($this->viewVars, array('title_for_layout' => $pageTitle, 'content_for_layout' => $content_for_layout, 'scripts_for_layout' => join("\n\t", $this->__scripts), 'cakeDebug' => $debug));
     if (empty($this->loaded) && !empty($this->helpers)) {
         $loadHelpers = true;
     } else {
         $loadHelpers = false;
         $data_for_layout = array_merge($data_for_layout, $this->loaded);
     }
     if (!empty($this->loaded)) {
         $helpers = array_keys($this->loaded);
         foreach ($helpers as $helperName) {
             $helper =& $this->loaded[$helperName];
             if (is_object($helper)) {
                 if (is_subclass_of($helper, 'Helper') || is_subclass_of($helper, 'helper')) {
                     $helper->beforeLayout();
                 }
             }
         }
     }
     if (substr($layoutFileName, -3) === 'ctp' || substr($layoutFileName, -5) === 'thtml') {
         $this->output = View::_render($layoutFileName, $data_for_layout, $loadHelpers, true);
     } else {
         $this->output = $this->_render($layoutFileName, $data_for_layout, $loadHelpers);
     }
     if ($this->output === false) {
         $this->output = $this->_render($layoutFileName, $data_for_layout);
         trigger_error(sprintf(__("Error in layout %s, got: <blockquote>%s</blockquote>", true), $layoutFileName, $this->output), E_USER_ERROR);
         return false;
     }
     if (!empty($this->loaded)) {
         $helpers = array_keys($this->loaded);
         foreach ($helpers as $helperName) {
             $helper =& $this->loaded[$helperName];
             if (is_object($helper)) {
                 if (is_subclass_of($helper, 'Helper') || is_subclass_of($helper, 'helper')) {
                     $helper->afterLayout();
                 }
             }
         }
     }
     return $this->output;
 }
Example #10
0
	/**
	 * Renders and returns output for given view filename with its
	 * array of data.
	 *
	 * @param string Filename of the view
	 * @param array Data to include in rendered view
	 * @return string Rendered output
	 * @access protected 
	 */
	function _render($___viewFn, $___dataForView, $loadHelpers = true, $cached = false) {
		if (substr($___viewFn, strrpos($___viewFn, '.')) == $this->ext) {
			$cachedViewFile = $this->_getCachedViewFileName($___viewFn);
			if(!$this->cache||@filemtime($___viewFn)>@filemtime($cachedViewFile)) {
				if (empty($this->haml)) $this->_init();
				file_put_contents($cachedViewFile, $data = $this->haml->parse($___viewFn));
				@chmod($cachedViewFile, $this->filePermission);
			}
			return parent::_render($cachedViewFile, $___dataForView, $loadHelpers, $cached);
		}
		else {
			return parent::_render($___viewFn, $___dataForView, $loadHelpers, $cached);
		}
	}