125 lines
3.6 KiB
PHP
125 lines
3.6 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* @package Joomla.Libraries
|
||
|
* @subpackage Form
|
||
|
*
|
||
|
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||
|
* @license GNU General Public License version 2 or later; see LICENSE
|
||
|
*/
|
||
|
|
||
|
defined('JPATH_PLATFORM') or die;
|
||
|
|
||
|
/**
|
||
|
* Field to select a user id from a modal list.
|
||
|
*
|
||
|
* @package Joomla.Libraries
|
||
|
* @subpackage Form
|
||
|
* @since 1.6.0
|
||
|
*/
|
||
|
class JFormFieldUser extends JFormField
|
||
|
{
|
||
|
/**
|
||
|
* The form field type.
|
||
|
*
|
||
|
* @var string
|
||
|
* @since 1.6.0
|
||
|
*/
|
||
|
public $type = 'User';
|
||
|
|
||
|
/**
|
||
|
* Method to get the user field input markup.
|
||
|
*
|
||
|
* @return string The field input markup.
|
||
|
*
|
||
|
* @since 1.6.0
|
||
|
*/
|
||
|
protected function getInput()
|
||
|
{
|
||
|
$html = array();
|
||
|
$groups = $this->getGroups();
|
||
|
$excluded = $this->getExcluded();
|
||
|
$link = 'index.php?option=com_users&view=users&layout=modal&tmpl=component&field=' . $this->id
|
||
|
. (isset($groups) ? ('&groups=' . base64_encode(json_encode($groups))) : '')
|
||
|
. (isset($excluded) ? ('&excluded=' . base64_encode(json_encode($excluded))) : '');
|
||
|
|
||
|
// Initialize some field attributes.
|
||
|
$attr = $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
|
||
|
$attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';
|
||
|
|
||
|
// Initialize JavaScript field attributes.
|
||
|
$onchange = (string) $this->element['onchange'];
|
||
|
|
||
|
// Load the modal behavior script.
|
||
|
JHtml::_('behavior.modal', 'a.modal_' . $this->id);
|
||
|
|
||
|
// Build the script.
|
||
|
$script = array();
|
||
|
$script[] = ' function jSelectUser_' . $this->id . '(id, title) {';
|
||
|
$script[] = ' var old_id = document.getElementById("' . $this->id . '_id").value;';
|
||
|
$script[] = ' if (old_id != id) {';
|
||
|
$script[] = ' document.getElementById("' . $this->id . '_id").value = id;';
|
||
|
$script[] = ' document.getElementById("' . $this->id . '_name").value = title;';
|
||
|
$script[] = ' ' . $onchange;
|
||
|
$script[] = ' }';
|
||
|
$script[] = ' SqueezeBox.close();';
|
||
|
$script[] = ' }';
|
||
|
|
||
|
// Add the script to the document head.
|
||
|
JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
|
||
|
|
||
|
// Load the current username if available.
|
||
|
$table = JTable::getInstance('user');
|
||
|
if ($this->value)
|
||
|
{
|
||
|
$table->load($this->value);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$table->username = JText::_('JLIB_FORM_SELECT_USER');
|
||
|
}
|
||
|
|
||
|
// Create a dummy text field with the user name.
|
||
|
$html[] = '<div class="input-append">';
|
||
|
$html[] = ' <input class="input-medium" type="text" id="' . $this->id . '_name" value="' . htmlspecialchars($table->name, ENT_COMPAT, 'UTF-8') . '"'
|
||
|
. ' disabled="disabled"' . $attr . ' />';
|
||
|
|
||
|
// Create the user select button.
|
||
|
if ($this->element['readonly'] != 'true')
|
||
|
{
|
||
|
$html[] = ' <a class="btn btn-primary modal_' . $this->id . '" title="' . JText::_('JLIB_FORM_CHANGE_USER') . '" href="' . $link . '"'
|
||
|
. ' rel="{handler: \'iframe\', size: {x: 800, y: 500}}">';
|
||
|
$html[] = '<i class="icon-user"></i></a>';
|
||
|
}
|
||
|
$html[] = '</div>';
|
||
|
|
||
|
// Create the real field, hidden, that stored the user id.
|
||
|
$html[] = '<input type="hidden" id="' . $this->id . '_id" name="' . $this->name . '" value="' . (int) $this->value . '" />';
|
||
|
|
||
|
return implode("\n", $html);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Method to get the filtering groups (null means no filtering)
|
||
|
*
|
||
|
* @return mixed array of filtering groups or null.
|
||
|
*
|
||
|
* @since 1.6.0
|
||
|
*/
|
||
|
protected function getGroups()
|
||
|
{
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Method to get the users to exclude from the list of users
|
||
|
*
|
||
|
* @return mixed Array of users to exclude or null to to not exclude them
|
||
|
*
|
||
|
* @since 1.6.0
|
||
|
*/
|
||
|
protected function getExcluded()
|
||
|
{
|
||
|
return null;
|
||
|
}
|
||
|
}
|