Robot
88104fd483
Move all JText to use the namespaced class Text directly. Move all JHtml to use the namespaced class Html directly. Move all JFactory to use the namespaced class Factory directly. Move all JRoute to use the namespaced class Route directly. Move all JFormHelper to use the namespaced class FormHelper directly. Move all JLayout to use the namespaced class FileLayout directly. Move all JLanguageMultilang to use the namespaced class Multilanguage directly. Move all JComponentHelper to use the namespaced class ComponentHelper directly. Move all JCategoryNode to use the namespaced class CategoryNode directly. Move all JComponentHelper to use the namespaced class ComponentHelper directly. Move all JToolbar to use the namespaced class Toolbar directly. Move all JToolbarHelper to use the namespaced class ToolbarHelper directly. Convert all addStyleSheet to make use of Html class instead. Convert all addScript to make use of Html class instead.
188 lines
6.5 KiB
PHP
188 lines
6.5 KiB
PHP
<?php
|
|
/*----------------------------------------------------------------------------------| io.vdm.dev |----/
|
|
Vast Development Method
|
|
/-------------------------------------------------------------------------------------------------------/
|
|
|
|
@package getBible.net
|
|
|
|
@created 3rd December, 2015
|
|
@author Llewellyn van der Merwe <https://getbible.net>
|
|
@git Get Bible <https://git.vdm.dev/getBible>
|
|
@github Get Bible <https://github.com/getBible>
|
|
@support Get Bible <https://git.vdm.dev/getBible/support>
|
|
@copyright Copyright (C) 2015. All Rights Reserved
|
|
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
|
|
|
/------------------------------------------------------------------------------------------------------*/
|
|
|
|
// No direct access to this file
|
|
defined('_JEXEC') or die('Restricted access');
|
|
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\CMS\HTML\HTMLHelper as Html;
|
|
|
|
// import the list field type
|
|
jimport('joomla.form.helper');
|
|
JFormHelper::loadFieldClass('list');
|
|
|
|
/**
|
|
* Linkers Form Field class for the Getbible component
|
|
*/
|
|
class JFormFieldLinkers extends JFormFieldList
|
|
{
|
|
/**
|
|
* The linkers field type.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $type = 'linkers';
|
|
|
|
/**
|
|
* Override to add new button
|
|
*
|
|
* @return string The field input markup.
|
|
*
|
|
* @since 3.2
|
|
*/
|
|
protected function getInput()
|
|
{
|
|
// see if we should add buttons
|
|
$set_button = $this->getAttribute('button');
|
|
// get html
|
|
$html = parent::getInput();
|
|
// if true set button
|
|
if ($set_button === 'true')
|
|
{
|
|
$button = array();
|
|
$script = array();
|
|
$button_code_name = $this->getAttribute('name');
|
|
// get the input from url
|
|
$app = Factory::getApplication();
|
|
$jinput = $app->input;
|
|
// get the view name & id
|
|
$values = $jinput->getArray(array(
|
|
'id' => 'int',
|
|
'view' => 'word'
|
|
));
|
|
// check if new item
|
|
$ref = '';
|
|
$refJ = '';
|
|
if (!is_null($values['id']) && strlen($values['view']))
|
|
{
|
|
// only load referral if not new item.
|
|
$ref = '&ref=' . $values['view'] . '&refid=' . $values['id'];
|
|
$refJ = '&ref=' . $values['view'] . '&refid=' . $values['id'];
|
|
// get the return value.
|
|
$_uri = (string) \Joomla\CMS\Uri\Uri::getInstance();
|
|
$_return = urlencode(base64_encode($_uri));
|
|
// load return value.
|
|
$ref .= '&return=' . $_return;
|
|
$refJ .= '&return=' . $_return;
|
|
}
|
|
// get button label
|
|
$button_label = trim($button_code_name);
|
|
$button_label = preg_replace('/_+/', ' ', $button_label);
|
|
$button_label = preg_replace('/\s+/', ' ', $button_label);
|
|
$button_label = preg_replace("/[^A-Za-z ]/", '', $button_label);
|
|
$button_label = ucfirst(strtolower($button_label));
|
|
// get user object
|
|
$user = Factory::getUser();
|
|
// only add if user allowed to create linker
|
|
if ($user->authorise('linker.create', 'com_getbible') && $app->isClient('administrator')) // TODO for now only in admin area.
|
|
{
|
|
// build Create button
|
|
$button[] = '<a id="'.$button_code_name.'Create" class="btn btn-small btn-success hasTooltip" title="'.Text::sprintf('COM_GETBIBLE_CREATE_NEW_S', $button_label).'" style="border-radius: 0px 4px 4px 0px; padding: 4px 4px 4px 7px;"
|
|
href="index.php?option=com_getbible&view=linker&layout=edit'.$ref.'" >
|
|
<span class="icon-new icon-white"></span></a>';
|
|
}
|
|
// only add if user allowed to edit linker
|
|
if ($user->authorise('linker.edit', 'com_getbible') && $app->isClient('administrator')) // TODO for now only in admin area.
|
|
{
|
|
// build edit button
|
|
$button[] = '<a id="'.$button_code_name.'Edit" class="btn btn-small hasTooltip" title="'.Text::sprintf('COM_GETBIBLE_EDIT_S', $button_label).'" style="display: none; padding: 4px 4px 4px 7px;" href="#" >
|
|
<span class="icon-edit"></span></a>';
|
|
// build script
|
|
$script[] = "
|
|
jQuery(document).ready(function() {
|
|
jQuery('#adminForm').on('change', '#jform_".$button_code_name."',function (e) {
|
|
e.preventDefault();
|
|
var ".$button_code_name."Value = jQuery('#jform_".$button_code_name."').val();
|
|
".$button_code_name."Button(".$button_code_name."Value);
|
|
});
|
|
var ".$button_code_name."Value = jQuery('#jform_".$button_code_name."').val();
|
|
".$button_code_name."Button(".$button_code_name."Value);
|
|
});
|
|
function ".$button_code_name."Button(value) {
|
|
if (value > 0) {
|
|
// hide the create button
|
|
jQuery('#".$button_code_name."Create').hide();
|
|
// show edit button
|
|
jQuery('#".$button_code_name."Edit').show();
|
|
var url = 'index.php?option=com_getbible&view=linkers&task=linker.edit&id='+value+'".$refJ."';
|
|
jQuery('#".$button_code_name."Edit').attr('href', url);
|
|
} else {
|
|
// show the create button
|
|
jQuery('#".$button_code_name."Create').show();
|
|
// hide edit button
|
|
jQuery('#".$button_code_name."Edit').hide();
|
|
}
|
|
}";
|
|
}
|
|
// check if button was created for linker field.
|
|
if (is_array($button) && count($button) > 0)
|
|
{
|
|
// Load the needed script.
|
|
$document = Factory::getDocument();
|
|
$document->addScriptDeclaration(implode(' ',$script));
|
|
// return the button attached to input field.
|
|
return '<div class="input-append">' .$html . implode('',$button).'</div>';
|
|
}
|
|
}
|
|
return $html;
|
|
}
|
|
|
|
/**
|
|
* Method to get a list of options for a list input.
|
|
*
|
|
* @return array An array of Html options.
|
|
*/
|
|
protected function getOptions()
|
|
{
|
|
// Get the user object.
|
|
$user = JFactory::getUser();
|
|
// Get the databse object.
|
|
$db = JFactory::getDBO();
|
|
$query = $db->getQuery(true);
|
|
$query->select($db->quoteName(array('a.guid','a.name'),array('guid','linker_name')));
|
|
$query->from($db->quoteName('#__getbible_linker', 'a'));
|
|
$query->where($db->quoteName('a.published') . ' = 1');
|
|
$query->order('a.name ASC');
|
|
// Implement View Level Access (if set in table)
|
|
if (!$user->authorise('core.options', 'com_getbible'))
|
|
{
|
|
$columns = $db->getTableColumns('#__getbible_linker');
|
|
if(isset($columns['access']))
|
|
{
|
|
$groups = implode(',', $user->getAuthorisedViewLevels());
|
|
$query->where('a.access IN (' . $groups . ')');
|
|
}
|
|
}
|
|
$db->setQuery((string)$query);
|
|
$items = $db->loadObjectList();
|
|
$options = array();
|
|
if ($items)
|
|
{
|
|
if ($this->multiple === false)
|
|
{
|
|
$options[] = JHtml::_('select.option', '', JText::_('COM_GETBIBLE_SELECT_AN_OPTION'));
|
|
}
|
|
foreach($items as $item)
|
|
{
|
|
$options[] = JHtml::_('select.option', $item->guid, $item->linker_name . ' (' . substr($item->guid, 0, 8) . ')');
|
|
}
|
|
}
|
|
return $options;
|
|
}
|
|
}
|