%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home1/lightco1/www/administrator/components/com_csvi/views/template/
Upload File :
Create Path :
Current File : //home1/lightco1/www/administrator/components/com_csvi/views/template/view.html.php

<?php
/**
 * @package     CSVI
 * @subpackage  Templates
 *
 * @author      Roland Dalmulder <contact@csvimproved.com>
 * @copyright   Copyright (C) 2006 - 2016 RolandD Cyber Produksi. All rights reserved.
 * @license     GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 * @link        http://www.csvimproved.com
 */

defined('_JEXEC') or die;

/**
 * Template view.
 *
 * @package     CSVI
 * @subpackage  Templates
 * @since       6.0
 */
class CsviViewTemplate extends JViewLegacy
{
	/**
	 * The action to perform.
	 *
	 * @var    string
	 * @since  6.0
	 */
	protected $action;

	/**
	 * The component to use.
	 *
	 * @var    string
	 * @since  6.0
	 */
	protected $component;

	/**
	 * The operation to perform.
	 *
	 * @var    string
	 * @since  6.0
	 */
	protected $operation;

	/**
	 * The forms handler.
	 *
	 * @var    object
	 * @since  6.0
	 */
	protected $forms;

	/**
	 * List of available components.
	 *
	 * @var    array
	 * @since  6.0
	 */
	protected $components = array();

	/**
	 * List of tabs to show.
	 *
	 * @var    array
	 * @since  6.0
	 */
	protected $optiontabs = array();

	/**
	 * Template details
	 *
	 * @var    JObject
	 * @since  6.5.0
	 */
	protected $item;

	/**
	 * Wizard step
	 *
	 * @var    int
	 * @since  6.5.0
	 */
	protected $step;

	/**
	 * Show the extra help
	 *
	 * @var    int
	 * @since  6.5.0
	 */
	protected $extraHelp;

	/**
	 * Access rights of a user
	 *
	 * @var    JObject
	 * @since  6.6.0
	 */
	protected $canDo;

	/**
	 * List of fields linked to the template.
	 *
	 * @var    array
	 * @since  6.0
	 */
	protected $fields = array();

	/**
	 * Execute and display a template script.
	 *
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.
	 *
	 * @return  mixed  A string if successful, otherwise a JError object.
	 *
	 * @since   6.0
	 *
	 * @throws  Exception
	 * @throws  RuntimeException
	 * @throws  InvalidArgumentException
	 * @throws  UnexpectedValueException
	 */
	public function display($tpl = null)
	{
		// Set the layout file to use
		$this->setLayout('form');

		// Load the data
		$this->item	= $this->get('Item');

		// Load the helper
		$helper = new CsviHelperCsvi;
		$jinput = JFactory::getApplication()->input;

		// Set some variables
		$post_form = $jinput->get('jform', array(), 'array');
		$this->action = array_key_exists('action', $post_form) ? $post_form['action'] : $this->item->options->get('action', 'import');
		$this->component = array_key_exists('component', $post_form) ? $post_form['component'] : $this->item->options->get('component', 'com_csvi');
		$this->operation = array_key_exists('operation', $post_form) ? $post_form['operation'] : $this->item->options->get('operation', 'custom');

		// Get the step
		$this->step = $jinput->getInt('step', 0);

		if (null === $this->item->csvi_template_id || 0 === $this->item->csvi_template_id)
		{
			$this->step = 1;
		}

		// Set the extra help option
		$this->setExtraHelp();

		// Reset the option values
		$this->item->options->set('action', $this->action);
		$this->item->options->set('component', $this->component);
		$this->item->options->set('operation', $this->operation);

		// Make the template settings available for the form fields
		$jinput->set('item', $this->item);

		// Set the paths to look for files
		$this->setPaths();

		// Load the components
		$this->loadComponents($helper);

		// Load the tabs
		$this->loadTabs($helper, $jinput);

		// Load the associated fields
		$templatefieldsModel = JModelLegacy::getInstance('Templatefields', 'CsviModel', array('ignore_request' => true));
		$templatefieldsModel->setState('filter.csvi_template_id', $this->item->csvi_template_id);
		$templatefieldsModel->setState('list.ordering', 'ordering');
		$this->fields = $templatefieldsModel->getItems();

		// Add the toolbar
		$this->canDo = JHelperContent::getActions('com_csvi');
		$this->addToolbar();

		// Display it all
		parent::display($tpl);
	}

	/**
	 * Set the extra help option for this user.
	 *
	 * @return  void.
	 *
	 * @since   6.0
	 */
	private function setExtraHelp()
	{
		// Load the extra help settings
		$db = JFactory::getDbo();
		$settings = new CsviHelperSettings($db);
		$this->extraHelp = $settings->get('extraHelp');
	}

	/**
	 * Set the paths where the view needs to look for needed files.
	 *
	 * @return  void.
	 *
	 * @since   6.6.0
	 *
	 * @throws  RuntimeException
	 */
	private function setPaths()
	{
		// Add the form files
		JFormHelper::addFormPath(JPATH_ADMINISTRATOR . '/components/com_csvi/views/template/tmpl/');
		JFormHelper::addFormPath(JPATH_ADMINISTRATOR . '/components/com_csvi/views/template/tmpl/' . $this->action);
		JFormHelper::addFormPath(JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $this->component . '/tmpl/' . $this->action);

		// Add the form paths
		JFormHelper::addFieldPath(JPATH_ADMINISTRATOR . '/components/com_csvi/models/fields/');
		JFormHelper::addFieldPath(JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $this->component . '/fields/');

		$this->addTemplatePath(JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $this->component . '/tmpl/' . $this->action);

		// Setup the autoloader
		$addon = ucfirst($this->component);
		$path = JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . strtolower($addon);
		JLoader::registerPrefix($addon, $path);
	}

	/**
	 * Load the list of available components.
	 *
	 * @param   CsviHelperCsvi  $helper  The CSVI helper class.
	 *
	 * @return  void.
	 *
	 * @since   6.6.0
	 *
	 * @throws  RuntimeException
	 * @throws  InvalidArgumentException
	 */
	private function loadComponents(CsviHelperCsvi $helper)
	{
		// Load the components
		$this->components = $helper->getComponents();
		array_unshift($this->components, JHtml::_('select.option', '', 'COM_CSVI_MAKE_CHOICE'));
	}

	/**
	 * Load the tabs to display the template options.
	 *
	 * @param   CsviHelperCsvi  $helper  The CSVI helper class.
	 * @param   JInput          $jinput  The input class.
	 *
	 * @return  void.
	 *
	 * @since   6.6.0
	 *
	 * @throws  RuntimeException
	 * @throws  InvalidArgumentException
	 * @throws  UnexpectedValueException
	 */
	private function loadTabs(CsviHelperCsvi $helper, JInput $jinput)
	{
		// Load the option tabs
		if ($this->component && $this->operation)
		{
			$tasksModel = JModelLegacy::getInstance('Tasks', 'CsviModel', array('ignore_request' => true));
			$this->optiontabs = $tasksModel->getTaskOptions($this->component, $this->action, $this->operation);
		}

		// Check if we are doing a wizard
		if ($this->step === 0)
		{
			// Load the operations
			$this->forms = new stdClass;
			$form = JForm::getInstance('operations', 'operations');
			$form->bind(array_merge($this->item->getProperties(), array('jform' => $this->item->options->toArray())));
			$form->setFieldAttribute('rules', 'action', $this->action);
			$this->forms->operations = $helper->renderCsviForm($form, $jinput);

			// Load the language file for the selected component
			$helper->loadLanguage($this->component);

			// Load the forms
			foreach ($this->optiontabs as $tab)
			{
				$tabName = $tab;

				if (strpos($tab, '.'))
				{
					list($tabName, $pro) = explode('.', $tab);
				}

				if (!empty($tabName))
				{
					// We don't do the fields tab as this is special, fields are loaded separately
					if ($tabName !== 'fields' && stripos($tabName, 'custom_') === false)
					{
						$form = JForm::getInstance($tabName, $tabName);
						$form->bind(array('jform' => $this->item->options->toArray()));

						// Render standard XMLs
						$this->forms->$tabName = $helper->renderCsviForm($form, $jinput);
					}
					elseif (($tabName === 'fields' && $this->action === 'export') || stripos($tabName, 'custom_') !== false)
					{
						// Do not render any page of the type custom, this is handled in a PHP file
						$form = JForm::getInstance(str_ireplace('custom_', '', $tabName), str_ireplace('custom_', '', $tabName));
						$form->bind(array('jform' => $this->item->options->toArray()));
						$this->forms->$tabName = $form;
					}
				}
			}
		}
		else
		{
			// Get the page file
			$tabName = false;

			switch ($this->step)
			{
				case 1:
					$tabName = 'step1';
					break;
				case 2:
					$tabName = 'source';
					break;
				case 3:
					$tabName = 'file';
					break;
				case 4:
					if ($this->action === 'export')
					{
						$tabName = 'fields';
					}
					break;
			}

			if ($tabName)
			{
				// Load the operations
				$this->forms = new stdClass;
				$form = JForm::getInstance($tabName, $tabName);
				$form->bind(array_merge($this->item->getProperties(), array('jform' => $this->item->options->toArray())));

				// These fields we don't want to use in the wizard
				$form->removeField('record_name', 'jform');
				$form->removeField('export_file', 'jform');
				$form->removeField('export_site', 'jform');
				$form->setValue('enabled', '', 1);

				// Set the form
				$this->forms->form = $helper->renderCsviForm($form, $jinput);
			}
		}
	}

	/**
	 * Load a template file -- first look in the templates folder for an override
	 *
	 * @param   string  $tpl        The name of the template source file; automatically searches the template paths and compiles as needed.
	 * @param   bool    $addLayout  Prepend the layout to the form
	 *
	 * @return  string  The output of the the template script.
	 *
	 * @since   6.6.0
	 * @throws  Exception
	 */
	public function loadTemplate($tpl = null, $addLayout = true)
	{
		// Clear prior output
		$this->_output = null;

		$template = JFactory::getApplication()->getTemplate();
		$layout = $this->getLayout();
		$layoutTemplate = $this->getLayoutTemplate();

		// Create the template file name based on the layout
		$file = isset($tpl) && $addLayout ? $layout . '_' : '';
		$file .= isset($tpl) ? $tpl : $layout;

		// Clean the file name
		$file = preg_replace('/[^A-Z0-9_\.-]/i', '', $file);
		$tpl = isset($tpl) ? preg_replace('/[^A-Z0-9_\.-]/i', '', $tpl) : $tpl;

		// Load the language file for the template
		$lang = JFactory::getLanguage();
		$lang->load('tpl_' . $template, JPATH_BASE, null, false, true)
		|| $lang->load('tpl_' . $template, JPATH_THEMES . "/$template", null, false, true);

		// Change the template folder if alternative layout is in different template
		if (isset($layoutTemplate) && $layoutTemplate != '_' && $layoutTemplate != $template)
		{
			$this->_path['template'] = str_replace($template, $layoutTemplate, $this->_path['template']);
		}

		// Load the template script
		jimport('joomla.filesystem.path');
		$filetofind = $this->_createFileName('template', array('name' => $file));
		$this->_template = JPath::find($this->_path['template'], $filetofind);

		// If alternate layout can't be found, fall back to default layout
		if ($this->_template == false)
		{
			$filetofind = $this->_createFileName('', array('name' => 'default' . (isset($tpl) ? '_' . $tpl : $tpl)));
			$this->_template = JPath::find($this->_path['template'], $filetofind);
		}

		if ($this->_template != false)
		{
			// Unset so as not to introduce into template scope
			unset($tpl);
			unset($file);

			// Never allow a 'this' property
			if (isset($this->this))
			{
				unset($this->this);
			}

			// Start capturing output into a buffer
			ob_start();

			// Include the requested template filename in the local scope
			// (this will execute the view logic).
			include $this->_template;

			// Done with the requested template; get the buffer and
			// clear it.
			$this->_output = ob_get_contents();
			ob_end_clean();

			return $this->_output;
		}
		else
		{
			throw new Exception(JText::sprintf('JLIB_APPLICATION_ERROR_LAYOUTFILE_NOT_FOUND', $file), 500);
		}
	}

	/**
	 * Add the page title and toolbar.
	 *
	 * @return  void
	 *
	 * @since   6.0
	 *
	 * @throws  Exception
	 */
	private function addToolbar()
	{
		JFactory::getApplication()->input->set('hidemainmenu', true);

		JToolbarHelper::title('CSVI - ' . JText::_('COM_CSVI_TITLE_TEMPLATE_EDIT'), 'folder');

		// Check which step we are at in the wizard
		$step = JFactory::getApplication()->input->getInt('step', $this->step);

		if ($step)
		{
			$this->wizardToolbar($step);
		}
		else
		{
			if ($this->canDo->get('core.edit') || $this->canDo->get('core.edit.own'))
			{
				JToolbarHelper::apply('template.apply');
				JToolbarHelper::save('template.save');
			}

			JToolbarHelper::cancel('template.cancel');
			JToolbarHelper::custom('hidetips', 'help', 'help', JText::_('COM_CSVI_HELP'), false);
			JToolbarHelper::custom('crontips', 'puzzle', 'puzzle', JText::_('COM_CSVI_CRON'), false);
			JToolbarHelper::custom('advanceduser', 'flash', 'flash', JText::_('COM_CSVI_ADVANCEDUSER'), false);
		}
	}

	/**
	 * Toolbar for the wizard.
	 *
	 * @param   int  $step  The step number.
	 *
	 * @return  void.
	 *
	 * @since   6.5.0
	 */
	private function wizardToolbar($step)
	{
		switch ($step)
		{
			case 2:
			case 3:
			case 4:
				JToolbarHelper::cancel('template.cancel');

				if ($this->canDo->get('core.edit') || $this->canDo->get('core.edit.own'))
				{
					JToolbarHelper::custom('template.edit', 'edit', 'edit', JText::_('JTOOLBAR_EDIT'), false);
					JToolbarHelper::custom('template.wizard', 'play', 'play', JText::_('COM_CSVI_TEMPLATE_TOOLBAR_STEP' . $step), false);
				}
				break;
			case 5:
				JToolbarHelper::custom('template.cancel', 'play', 'play', JText::_('COM_CSVI_TEMPLATE_TOOLBAR_STEP' . $step), false);

				if ($this->canDo->get('core.edit') || $this->canDo->get('core.edit.own'))
				{
					JToolbarHelper::custom('template.edit', 'edit', 'edit', JText::_('JTOOLBAR_EDIT'), false);
				}
				break;
			default:
				JToolbarHelper::cancel('template.cancel');

				if ($this->canDo->get('core.edit') || $this->canDo->get('core.edit.own'))
				{
					JToolbarHelper::custom('template.wizard', 'play', 'play', JText::_('COM_CSVI_TEMPLATE_TOOLBAR_STEP' . $step), false);
				}
				break;
		}

		JToolbarHelper::divider();
		JToolbarHelper::custom('hidetips', 'help', 'help', JText::_('COM_CSVI_HELP'), false);
	}
}

Zerion Mini Shell 1.0