%PDF- %PDF-
| Direktori : /home1/lightco1/www/lightcolab.com/administrator/components/com_jce/elements/ |
| Current File : //home1/lightco1/www/lightcolab.com/administrator/components/com_jce/elements/extension.php |
<?php
/**
* @copyright Copyright (c) 2009-2017 Ryan Demmer. All rights reserved
* @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* JCE is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses
*/
defined('JPATH_BASE') or die('RESTRICTED');
/**
* Renders a text element.
*/
class WFElementExtension extends WFElement
{
/*
* Element name
*
* @access protected
* @var string
*/
public $_name = 'Extension';
private static function array_flatten($array, $return)
{
foreach ($array as $key => $value) {
if (is_array($value)) {
$return = self::array_flatten($value, $return);
} else {
$return[] = $value;
}
}
return $return;
}
private function mapValue($value)
{
$data = array();
// no grouping
if (strpos($value, '=') === false) {
return array(explode(',', $value));
}
foreach (explode(';', $value) as $group) {
$items = explode('=', $group);
$name = $items[0];
$values = explode(',', $items[1]);
array_walk($values, function (&$item, $name) {
if ($name{0} === '-') {
$item = '-'.$item;
}
}, $name);
$data[$name] = $values;
}
return $data;
}
private function cleanValue($value)
{
$data = $this->mapValue($value);
// get array values only
$values = self::array_flatten($data, array());
// convert to string
$string = implode(',', $values);
// return single array
return explode(',', $string);
}
public function fetchElement($name, $value, &$node, $control_name)
{
$value = htmlspecialchars_decode($value, ENT_QUOTES);
$class = ((string) $node->attributes()->class ? 'class="'.(string) $node->attributes()->class.'"' : '');
// default extensions list
$default = (string) $node->attributes()->default;
// create default array
$default = $this->mapValue($default);
if ($value && $value{0} === '=') {
$value = substr($value, 1);
}
if (!empty($value)) {
$data = $this->mapValue($value);
}
$output = array();
$output[] = '<div class="extensions input-append">';
$output[] = '<input type="text" name="'.$control_name.'['.$name.']" id="'.$control_name.$name.'" value="'.$value.'" '.$class.' /><button class="btn btn-link extension_edit"><i class="icon-edit icon-apply"></i></button>';
foreach ($data as $group => $items) {
$custom = array();
$output[] = '<dl>';
if (is_string($group)) {
$checked = '';
$is_default = isset($default[$group]);
if (empty($value) || $is_default || (!$is_default && $group{0} !== '-')) {
$checked = ' checked="checked"';
}
// clear minus sign
$group = str_replace('-', '', $group);
$output[] = '<dt data-extension-group="'.$group.'"><label><input type="checkbox" value="'.$group.'"'.$checked.' />'.$group.'</label></dt>';
}
foreach ($items as $item) {
$checked = '';
$item = strtolower($item);
// clear minus sign
$mod = str_replace('-', '', $item);
$is_default = isset($default[$group]) && in_array($item, $default[$group]);
if (empty($value) || $is_default || (!$is_default && $mod === $item)) {
$checked = ' checked="checked"';
}
$output[] = '<dd><label><input type="checkbox" value="'.$mod.'"'.$checked.' /><span class="file '.$mod.'"></span> '.$mod.'</label>';
if (!$is_default) {
$output[] = '<button class="btn btn-link extension-remove"><span class="icon-trash"></span></button>';
}
$output[] = '</dd>';
}
$output[] = '<dd class="extension-custom"><span class="file"></span><input type="text" value="" pattern="[a-zA-Z0-9]{2,4}" placeholder="'.WFText::_('WF_EXTENSION_MAPPER_TYPE_NEW', 'Add new type...').'" /><button class="btn btn-link extension-add"><span class="icon-plus"></span></button><button class="btn btn-link extension-remove"><span class="icon-trash"></span></button></dd>';
$output[] = '</dl>';
}
$output[] = '</div>';
return implode("\n", $output);
}
}