<?php
/**
* @package Joomla.Libraries
* @subpackage Form
*
* @copyright Copyright (C) 2005 - 2009 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('JPATH_PLATFORM') or die;
JFormHelper::loadFieldClass('moduleposition');
/**
* Form Field class for the Joomla Framework.
*
* @since 2.5
*/
class JFormFieldTplhelper extends JFormField
{
/**
* The field type.
*
* @var string
*/
protected $type = 'TplHelper';
protected $task = '';
protected $html = '';
protected function getInput()
{
if (isset($this->element['task'])) $this->task = $this->element['task'];
if (!$this->task) $this->task = 'default';
$func = $this->task . 'Task';
if (method_exists($this, $func)) {
$this->$func();
}
return $this->html;
}
/**
* Method to get the field label markup for a spacer.
* Use the label text or name from the XML element as the spacer or
* Use a hr="true" to automatically generate plain hr markup
*
* @return string The field label markup.
*
* @since 11.1
*/
protected function getLabel()
{
// use this indicator to hide the empty control generated by tplhelper
return '<span class="hide tplhelper"></span>';
}
protected function defaultTask () {
// get template name
$path = str_replace (JPATH_ROOT, '', dirname(__DIR__));
$path = str_replace ('\\', '/', substr($path, 1));
$doc = JFactory::getDocument();
// input content
$this->html = '<input type="hidden" id="tplhelper" name="' . $this->name . '" value="' . htmlspecialchars($this->value) . '" />';
}
// Add assets (js,css)
protected function assetTask () {
$doc = JFactory::getDocument();
$path = str_replace (JPATH_ROOT, '', dirname(__DIR__));
$path = str_replace ('\\', '/', substr($path, 1)) . '/assets/';
// add script
$js = isset($this->element['js']) ? explode(',', $this->element['js']) : null;
if (is_array($js)) {
foreach ($js as $name) {
$doc->addScript (JUri::root() . $path . 'js/' . $name . '.js');
}
}
// add css
$css = isset($this->element['css']) ? explode(',', $this->element['css']) : null;
if (is_array($css)) {
foreach ($css as $name) {
$doc->addStyleSheet (JUri::root() . $path . 'css/' . $name . '.css');
}
}
}
// include html
protected function htmlTask() {
$file = isset($this->element['file']) ? $this->element['file'] : null;
if (is_file(JPATH_ROOT . '/' . $file)) {
$this->html = file_get_contents(JPATH_ROOT . '/' . $file);
}
}
}