137 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * @package     FrameworkOnFramework
 | |
|  * @subpackage  view
 | |
|  * @copyright   Copyright (C) 2010-2016 Nicholas K. Dionysopoulos / Akeeba Ltd. All rights reserved.
 | |
|  * @license     GNU General Public License version 2 or later; see LICENSE.txt
 | |
|  */
 | |
| // Protect from unauthorized access
 | |
| defined('F0F_INCLUDED') or die;
 | |
| 
 | |
| /**
 | |
|  * FrameworkOnFramework Form class. It preferrably renders an XML view template
 | |
|  * instead of a traditional PHP-based view template.
 | |
|  *
 | |
|  * @package  FrameworkOnFramework
 | |
|  * @since    2.0
 | |
|  */
 | |
| class F0FViewForm extends F0FViewHtml
 | |
| {
 | |
| 	/** @var F0FForm The form to render */
 | |
| 	protected $form;
 | |
| 
 | |
| 	/**
 | |
| 	 * Displays the view
 | |
| 	 *
 | |
| 	 * @param   string  $tpl  The template to use
 | |
| 	 *
 | |
| 	 * @return  boolean|null False if we can't render anything
 | |
| 	 */
 | |
| 	public function display($tpl = null)
 | |
| 	{
 | |
| 		$model = $this->getModel();
 | |
| 
 | |
| 		// Get the form
 | |
| 		$this->form = $model->getForm();
 | |
| 		$this->form->setModel($model);
 | |
| 		$this->form->setView($this);
 | |
| 
 | |
| 		// Get the task set in the model
 | |
| 		$task = $model->getState('task', 'browse');
 | |
| 
 | |
| 		// Call the relevant method
 | |
| 		$method_name = 'on' . ucfirst($task);
 | |
| 
 | |
| 		if (method_exists($this, $method_name))
 | |
| 		{
 | |
| 			$result = $this->$method_name($tpl);
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			$result = $this->onDisplay();
 | |
| 		}
 | |
| 
 | |
| 		// Bail out if we're told not to render anything
 | |
| 
 | |
| 		if ($result === false)
 | |
| 		{
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		// Show the view
 | |
| 		// -- Output HTML before the view template
 | |
| 		$this->preRender();
 | |
| 
 | |
| 		// -- Try to load a view template; if not exists render the form directly
 | |
| 		$basePath = F0FPlatform::getInstance()->isBackend() ? 'admin:' : 'site:';
 | |
| 		$basePath .= $this->config['option'] . '/';
 | |
| 		$basePath .= $this->config['view'] . '/';
 | |
| 		$path = $basePath . $this->getLayout();
 | |
| 
 | |
| 		if ($tpl)
 | |
| 		{
 | |
| 			$path .= '_' . $tpl;
 | |
| 		}
 | |
| 
 | |
| 		$viewTemplate = $this->loadAnyTemplate($path);
 | |
| 
 | |
| 		// If there was no template file found, display the form
 | |
| 		if ($viewTemplate instanceof Exception)
 | |
| 		{
 | |
| 			$viewTemplate = $this->getRenderedForm();
 | |
| 		}
 | |
| 
 | |
| 		// -- Output the view template
 | |
| 		echo $viewTemplate;
 | |
| 
 | |
| 		// -- Output HTML after the view template
 | |
| 		$this->postRender();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the HTML rendering of the F0FForm attached to this view. Very
 | |
| 	 * useful for customising a form page without having to meticulously hand-
 | |
| 	 * code the entire form.
 | |
| 	 *
 | |
| 	 * @return  string  The HTML of the rendered form
 | |
| 	 */
 | |
| 	public function getRenderedForm()
 | |
| 	{
 | |
| 		$html = '';
 | |
| 		$renderer = $this->getRenderer();
 | |
| 
 | |
| 		if ($renderer instanceof F0FRenderAbstract)
 | |
| 		{
 | |
| 			// Load CSS and Javascript files defined in the form
 | |
| 			$this->form->loadCSSFiles();
 | |
| 			$this->form->loadJSFiles();
 | |
| 
 | |
| 			// Get the form's HTML
 | |
| 			$html = $renderer->renderForm($this->form, $this->getModel(), $this->input);
 | |
| 		}
 | |
| 
 | |
| 		return $html;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * The event which runs when we are displaying the Add page
 | |
| 	 *
 | |
| 	 * @param   string  $tpl  The view sub-template to use
 | |
| 	 *
 | |
| 	 * @return  boolean  True to allow display of the view
 | |
| 	 */
 | |
| 	protected function onAdd($tpl = null)
 | |
| 	{
 | |
| 		// Hide the main menu
 | |
| 		JRequest::setVar('hidemainmenu', true);
 | |
| 
 | |
| 		// Get the model
 | |
| 		$model = $this->getModel();
 | |
| 
 | |
| 		// Assign the item and form to the view
 | |
| 		$this->item = $model->getItem();
 | |
| 
 | |
| 		return true;
 | |
| 	}
 | |
| }
 |