Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/public/main/inc/lib/pear/HTML/QuickForm/button.php

257 lines
7.0 KiB

<?php
/**
* HTML class for an <input type="button" /> elements
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 3.01 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_01.txt If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
*
* @category HTML
* @package HTML_QuickForm
* @author Adam Daniel <adaniel1@eesus.jnj.com>
* @author Bertrand Mansion <bmansion@mamasam.com>
* @copyright 2001-2009 The PHP Group
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version CVS: $Id: button.php,v 1.6 2009/04/04 21:34:02 avb Exp $
* @link http://pear.php.net/package/HTML_QuickForm
*/
/**
* HTML class for an <input type="button" /> elements
*
* @category HTML
* @package HTML_QuickForm
* @author Adam Daniel <adaniel1@eesus.jnj.com>
* @author Bertrand Mansion <bmansion@mamasam.com>
* @version Release: 3.2.11
* @since 1.0
*/
class HTML_QuickForm_button extends HTML_QuickForm_input
{
private $icon;
private $style;
private $size;
private $class;
/**
* @param string $name input name example 'submit'
* @param string $text button text to show
* @param string $icon icons based in font-awesome
* @param string $style i.e default|primary|success|info|warning|danger|link
* @param string $size large|default|small|extra-small
* @param string $class
* @param array $attributes
*/
public function __construct(
$name,
$text,
$icon = 'check',
$style = 'default',
$size = 'default',
$class = null,
$attributes = []
) {
$this->setIcon($icon);
$this->setStyle($style);
$this->setSize($size);
$this->setClass($class);
$columnsSize = $attributes['cols-size'] ?? null;
$this->setColumnsSize($columnsSize);
parent::__construct(
$name,
null,
$attributes
);
$this->_persistantFreeze = false;
$this->setValue($text);
$this->setType('submit');
}
/**
* @return string
*/
public function toHtml()
{
if ($this->_flagFrozen) {
return $this->getFrozenHtml();
} else {
$value = null;
if (isset($this->_attributes['value'])) {
$value = $this->_attributes['value'];
unset($this->_attributes['value']);
}
unset($this->_attributes['class']);
$icon = $this->getIcon();
if (!empty($icon)) {
$icon = '<em class="'.$this->getIcon().'"></em> ';
}
$class = $this->getClass().' '.$this->getStyle().' '.$this->getSize();
return
$this->_getTabs() . '
<button class="'.$class.'"' . $this->_getAttrString($this->_attributes) . '>'.
$icon.
$value.
'</button>';
}
}
/**
* @return mixed
*/
public function getClass()
{
return $this->class;
}
/**
* @param mixed $class
*/
public function setClass($class)
{
$this->class = $class;
}
/**
* @return mixed
*/
public function getIcon()
{
return $this->icon;
}
/**
* @param mixed $icon
*/
public function setIcon($icon)
{
// Try and sanitize $icon in case it's an array (take the first element and consider it's a string)
if (is_array($icon)) {
$icon = @strval($icon[0]);
}
$this->icon = !empty($icon) ? 'mdi mdi-'.$icon : null;
}
/**
* @return mixed
*/
public function getStyle()
{
return $this->style;
}
/**
* @param mixed $style
*/
public function setStyle($style)
{
$style = !empty($style) ? 'btn btn--'.$style : null;
$this->style = $style;
}
/**
* @return mixed
*/
public function getSize()
{
return $this->size;
}
/**
* @param mixed $size
*/
public function setSize($size)
{
switch ($size) {
case 'large':
$size = 'btn-lg';
break;
case 'small':
$size = 'btn-sm';
break;
case 'extra-small':
$size = 'btn-xs';
break;
case 'default':
$size = null;
break;
}
$size = !empty($size) ? $size : null;
$this->size = $size;
}
/**
* Freeze the element so that only its value is returned
*
* @access public
* @return void
*/
public function freeze()
{
return false;
}
/*public function getTemplate(string $layout): string
{
$size = $this->calculateSize();
$attributes = $this->getAttributes();
$template = ' {element} ';
switch ($layout) {
case FormValidator::LAYOUT_HORIZONTAL:
if (isset($attributes['custom']) && $attributes['custom'] == true) {
$template = '
{icon}
{element}
';
} else {
$template = '
<div class="mb-6 {error_class}">
<label {label-for} class="ch-form-label h-4 md:w-1/4 flex justify-left md:justify-end pr-3 text-gray-600 '.$size[0].' " >
<!-- BEGIN required --><span class="form_required">*</span><!-- END required -->
{label}
</label>
<div class="md:w-3/4 '.$size[1].'">
{icon}
{element}
<!-- BEGIN label_2 -->
<p class="help-block">{label_2}</p>
<!-- END label_2 -->
<!-- BEGIN error -->
<span class="help-inline help-block">{error}</span>
<!-- END error -->
</div>
<div class="col-sm-'.$size[2].'">
<!-- BEGIN label_3 -->
{label_3}
<!-- END label_3 -->
</div>
</div>';
}
break;
case FormValidator::LAYOUT_INLINE:
$template = ' {element} ';
break;
case FormValidator::LAYOUT_GRID:
case FormValidator::LAYOUT_BOX_NO_LABEL:
default:
$template = ' {element} ';
break;
}
return $template;
}*/
}