%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/text.php |
<?php
/**
* @copyright Copyright (c) 2009-2017 Ryan Demmer. All rights reserved
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. 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 WFElementText extends WFElement
{
/*
* Element name
*
* @access protected
* @var string
*/
public $_name = 'Text';
public function fetchElement($name, $value, &$node, $control_name)
{
$attributes = array();
foreach ($node->attributes() as $k => $v) {
if ($k === 'parent') {
continue;
}
if ($v != '') {
$attributes[$k] = (string) $v;
}
}
$class = (string) $node->attributes()->class;
if (strpos($name, 'max_size') !== false || strpos($class, 'upload_size') !== false) {
$uploadsize = intval($this->getUploadValue());
$attributes['max'] = $uploadsize;
}
$attributes['class'] = ($class ? $class : '');
$control = $control_name.'['.$name.']';
// create array id repeatable
if ((string) $node->attributes()->repeatable) {
$control .= '[]';
}
$attributes['type'] = strtolower($this->_name);
$attributes['name'] = $control;
$attributes['id'] = preg_replace('#\W+#', '_', $control_name.$name);
// pattern data attribute for editable select input box
if ((string) $node->attributes()->parent) {
$prefix = preg_replace(array('#^params#', '#([^\w]+)#'), '', $control_name);
$items = array();
foreach (explode(';', (string) $node->attributes()->parent) as $item) {
$items[] = $prefix.$item;
}
$attributes['data-parent'] = implode(';', $items);
}
if ((string) $node->attributes()->repeatable && is_array($value)) {
$values = $value;
} else {
$values = array(htmlspecialchars_decode($value, ENT_QUOTES));
}
$html = '';
if (strpos($class, 'color') !== false) {
$html .= '<div class="input-append">';
}
foreach ($values as $value) {
$attributes['value'] = $value;
if ((string) $node->attributes()->repeatable) {
$html .= '<div class="ui-repeatable form-inline"><div class="input-append">';
}
$html .= '<input';
foreach ($attributes as $k => $v) {
if (!in_array($k, array('default', 'label', 'description'))) {
$html .= ' '.$k.' = "'.$v.'"';
}
}
$html .= ' />';
if ((string) $node->attributes()->repeatable) {
$html .= '<button type="button" class="btn btn-link ui-repeatable-create"><i class="icon-plus"></i></button>';
$html .= '<button type="button" class="btn btn-link ui-repeatable-delete"><i class="icon-trash"></i></button>';
$html .= '</div></div>';
}
if (strpos($name, 'max_size') !== false) {
$html .= $this->uploadSize();
}
if (strpos($class, 'color') !== false) {
$html .= '</div>';
}
}
return $html;
}
public function uploadSize()
{
return '<span class="help-block help-block-inline">'.WFText::_('WF_SERVER_UPLOAD_SIZE').' : '.$this->getUploadValue().'</span>';
}
public function getUploadValue()
{
$upload = trim(ini_get('upload_max_filesize'));
$post = trim(ini_get('post_max_size'));
$upload = $this->convertValue($upload);
$post = $this->convertValue($post);
if (intval($post) === 0) {
return $upload;
}
if (intval($upload) < intval($post)) {
return $upload;
}
return $post;
}
public function convertValue($value)
{
$unit = 'KB';
$prefix = '';
preg_match('#([0-9]+)\s?([a-z]*)#i', $value, $matches);
// get unit
if (isset($matches[2])) {
$prefix = $matches[2];
}
// get value
if (isset($matches[1])) {
$value = (int) $matches[1];
}
// Convert to bytes
switch (strtolower($prefix)) {
case 'g':
$value *= 1073741824;
break;
case 'm':
$value *= 1048576;
break;
case 'k':
$value *= 1024;
break;
}
// Convert to unit value
switch (strtolower($unit)) {
case 'g':
case 'gb':
$value /= 1073741824;
break;
case 'm':
case 'mb':
$value /= 1048576;
break;
case 'k':
case 'kb':
$value /= 1024;
break;
}
return (int) $value.' KB';
}
}