Spade
Mini Shell
| Directory:~$ /home/lmsyaran/www/administrator/components/com_phocacart/models/fields/modal/ |
| [Home] [System Details] [Kill Me] |
<?php
/**
* @package Phoca Cart
* @author Jan Pavelka - https://www.phoca.cz
* @copyright Copyright (C) Jan Pavelka https://www.phoca.cz
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 and later
* @cms Joomla
* @copyright Copyright (C) Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
*/
defined('JPATH_BASE') or die;
use Joomla\CMS\Language\LanguageHelper;
class JFormFieldModal_Phocacartitem extends JFormField
{
protected $type = 'Modal_Phocacartitem';
protected function getInput()
{
$allowNew = ((string) $this->element['new'] ==
'true');
$allowEdit = ((string) $this->element['edit'] ==
'true');
$allowClear = ((string) $this->element['clear'] !=
'false');
$allowSelect = ((string) $this->element['select'] !=
'false');
$allowPropagate = ((string) $this->element['propagate'] ==
'true');
$languages = LanguageHelper::getContentLanguages(array(0, 1));
// Load language
JFactory::getLanguage()->load('com_phocacart',
JPATH_ADMINISTRATOR);
// The active product id field.
$value = (int) $this->value > 0 ? (int) $this->value :
'';
// Create the modal id.
$modalId = 'Phocacartitem_' . $this->id;
// Add the modal field script to the document head.
Joomla\CMS\HTML\HTMLHelper::_('jquery.framework');
Joomla\CMS\HTML\HTMLHelper::_('script',
'system/modal-fields.js', array('version' =>
'auto', 'relative' => true));
// Script to proxy the select modal function to the modal-fields.js file.
if ($allowSelect)
{
static $scriptSelect = null;
if (is_null($scriptSelect))
{
$scriptSelect = array();
}
if (!isset($scriptSelect[$this->id]))
{
JFactory::getDocument()->addScriptDeclaration("
function jSelectPhocacartitem_" . $this->id . "(id, title,
object) {
window.processModalSelect('Phocacartitem', '" .
$this->id . "', id, title, '', object);
}
");
JText::script('JGLOBAL_ASSOCIATIONS_PROPAGATE_FAILED');
$scriptSelect[$this->id] = true;
}
}
// Setup variables for display.
$linkProducts =
'index.php?option=com_phocacart&view=phocacartitems&layout=modal&tmpl=component&'
. JSession::getFormToken() . '=1';
$linkProduct =
'index.php?option=com_phocacart&view=phocacartitem&layout=modal&tmpl=component&'
. JSession::getFormToken() . '=1';
$modalTitle = JText::_('COM_PHOCACART_CHANGE_PRODUCT');
if (isset($this->element['language']))
{
$linkProducts .= '&forcedLanguage=' .
$this->element['language'];
$linkProduct .= '&forcedLanguage=' .
$this->element['language'];
$modalTitle .= ' — ' .
$this->element['label'];
}
$urlSelect = $linkProducts .
'&function=jSelectPhocacartitem_' . $this->id;
$urlEdit = $linkProduct .
'&task=phocacartitem.edit&id=\' +
document.getElementById("' . $this->id .
'_id").value + \'';
$urlNew = $linkProduct . '&task=phocacartitem.add';
if ($value)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('title'))
->from($db->quoteName('#__phocacart_products'))
->where($db->quoteName('id') . ' = ' . (int)
$value);
$db->setQuery($query);
try
{
$title = $db->loadResult();
}
catch (RuntimeException $e)
{
throw new Exception($e->getMessage(), 500);
}
}
$title = empty($title) ?
JText::_('COM_PHOCACART_SELECT_A_PRODUCT') :
htmlspecialchars($title, ENT_QUOTES, 'UTF-8');
// The current product display field.
$html = '<span class="input-append">';
$html .= '<input class="input-medium" id="' .
$this->id . '_name" type="text" value="' .
$title . '" disabled="disabled" size="35"
/>';
// Select product button
if ($allowSelect)
{
$html .= '<a'
. ' class="btn hasTooltip' . ($value ? '
hidden' : '') . '"'
. ' id="' . $this->id . '_select"'
. ' data-toggle="modal"'
. ' role="button"'
. ' href="#ModalSelect' . $modalId . '"'
. ' title="' .
JHtml::tooltipText('COM_PHOCACART_CHANGE_PRODUCT') .
'">'
. '<span class="icon-file"
aria-hidden="true"></span> ' .
JText::_('JSELECT')
. '</a>';
}
// New product button
if ($allowNew)
{
$html .= '<a'
. ' class="btn hasTooltip' . ($value ? '
hidden' : '') . '"'
. ' id="' . $this->id . '_new"'
. ' data-toggle="modal"'
. ' role="button"'
. ' href="#ModalNew' . $modalId . '"'
. ' title="' .
JHtml::tooltipText('COM_PHOCACART_NEW_PRODUCT') .
'">'
. '<span class="icon-new"
aria-hidden="true"></span> ' .
JText::_('JACTION_CREATE')
. '</a>';
}
// Edit product button
if ($allowEdit)
{
$html .= '<a'
. ' class="btn hasTooltip' . ($value ? '' :
' hidden') . '"'
. ' id="' . $this->id . '_edit"'
. ' data-toggle="modal"'
. ' role="button"'
. ' href="#ModalEdit' . $modalId . '"'
. ' title="' .
JHtml::tooltipText('COM_PHOCACART_EDIT_PRODUCT') .
'">'
. '<span class="icon-edit"
aria-hidden="true"></span> ' .
JText::_('JACTION_EDIT')
. '</a>';
}
// Clear product button
if ($allowClear)
{
$html .= '<a'
. ' class="btn' . ($value ? '' : '
hidden') . '"'
. ' id="' . $this->id . '_clear"'
. ' href="#"'
. ' onclick="window.processModalParent(\'' .
$this->id . '\'); return false;">'
. '<span class="icon-remove"
aria-hidden="true"></span>' .
JText::_('JCLEAR')
. '</a>';
}
// Propagate product button
if ($allowPropagate && count($languages) > 2)
{
// Strip off language tag at the end
$tagLength = (int) strlen($this->element['language']);
$callbackFunctionStem = substr("jSelectPhocacartitem_" .
$this->id, 0, -$tagLength);
$html .= '<a'
. ' class="btn hasTooltip' . ($value ? '' :
' hidden') . '"'
. ' id="' . $this->id . '_propagate"'
. ' href="#"'
. ' title="' .
JHtml::tooltipText('JGLOBAL_ASSOCIATIONS_PROPAGATE_TIP') .
'"'
. ' onclick="Joomla.propagateAssociation(\'' .
$this->id . '\', \'' . $callbackFunctionStem .
'\');">'
. '<span class="icon-refresh"
aria-hidden="true"></span>' .
JText::_('JGLOBAL_ASSOCIATIONS_PROPAGATE_BUTTON')
. '</a>';
}
$html .= '</span>';
// Select product modal
if ($allowSelect)
{
$html .= Joomla\CMS\HTML\HTMLHelper::_(
'bootstrap.renderModal',
'ModalSelect' . $modalId,
array(
'title' => $modalTitle,
'url' => $urlSelect,
'height' => '400px',
'width' => '800px',
'bodyHeight' => '70',
'modalWidth' => '80',
'footer' => '<a role="button"
class="btn" data-dismiss="modal"
aria-hidden="true">' .
JText::_('JLIB_HTML_BEHAVIOR_CLOSE') . '</a>',
)
);
}
// New product modal
// phocacartitem-form => adminForm
if ($allowNew)
{
$html .= Joomla\CMS\HTML\HTMLHelper::_(
'bootstrap.renderModal',
'ModalNew' . $modalId,
array(
'title' =>
JText::_('COM_PHOCACART_NEW_PRODUCT'),
'backdrop' => 'static',
'keyboard' => false,
'closeButton' => false,
'url' => $urlNew,
'height' => '400px',
'width' => '800px',
'bodyHeight' => '70',
'modalWidth' => '80',
'footer' => '<a role="button"
class="btn" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \''
. $this->id . '\', \'add\',
\'phocacartitem\', \'cancel\', \'adminForm\',
\'jform_id\', \'jform_title\'); return
false;">'
. JText::_('JLIB_HTML_BEHAVIOR_CLOSE') .
'</a>'
. '<a role="button" class="btn
btn-primary" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \''
. $this->id . '\', \'add\',
\'phocacartitem\', \'save\', \'adminForm\',
\'jform_id\', \'jform_title\'); return
false;">'
. JText::_('JSAVE') . '</a>'
. '<a role="button" class="btn
btn-success" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \''
. $this->id . '\', \'add\',
\'phocacartitem\', \'apply\', \'adminForm\',
\'jform_id\', \'jform_title\'); return
false;">'
. JText::_('JAPPLY') . '</a>',
)
);
}
// Edit product modal.
// phocacartitem-form => adminForm
if ($allowEdit)
{
$html .= Joomla\CMS\HTML\HTMLHelper::_(
'bootstrap.renderModal',
'ModalEdit' . $modalId,
array(
'title' =>
JText::_('COM_PHOCACART_EDIT_PRODUCT'),
'backdrop' => 'static',
'keyboard' => false,
'closeButton' => false,
'url' => $urlEdit,
'height' => '400px',
'width' => '800px',
'bodyHeight' => '70',
'modalWidth' => '80',
'footer' => '<a role="button"
class="btn" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \'' .
$this->id
. '\', \'edit\', \'phocacartitem\',
\'cancel\', \'adminForm\', \'jform_id\',
\'jform_title\'); return false;">'
. JText::_('JLIB_HTML_BEHAVIOR_CLOSE') .
'</a>'
. '<a role="button" class="btn
btn-primary" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \''
. $this->id . '\', \'edit\',
\'phocacartitem\', \'save\', \'adminForm\',
\'jform_id\', \'jform_title\'); return
false;">'
. JText::_('JSAVE') . '</a>'
. '<a role="button" class="btn
btn-success" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \''
. $this->id . '\', \'edit\',
\'phocacartitem\', \'apply\', \'adminForm\',
\'jform_id\', \'jform_title\'); return
false;">'
. JText::_('JAPPLY') . '</a>',
)
);
}
// Note: class='required' for client side validation.
$class = $this->required ? ' class="required
modal-value"' : '';
$html .= '<input type="hidden" id="' .
$this->id . '_id"' . $class . '
data-required="' . (int) $this->required . '"
name="' . $this->name
. '" data-text="' .
htmlspecialchars(JText::_('COM_PHOCACART_SELECT_A_PRODUCT',
true), ENT_COMPAT, 'UTF-8') . '" value="' .
$value . '" />';
return $html;
}
/**
* Method to get the field label markup.
*
* @return string The field label markup.
*
* @since 3.4
*/
protected function getLabel()
{
return str_replace($this->id, $this->id . '_id',
parent::getLabel());
}
}