mirror of
https://github.com/e107inc/e107.git
synced 2025-07-28 18:30:53 +02:00
Progress on inverted switch
This commit is contained in:
@@ -2330,7 +2330,6 @@ class e_form
|
|||||||
if(e_ADMIN_AREA === true)
|
if(e_ADMIN_AREA === true)
|
||||||
{
|
{
|
||||||
$options['switch'] = 'small';
|
$options['switch'] = 'small';
|
||||||
|
|
||||||
$label_enabled = ($label_enabled) ? strtoupper($label_enabled) : strtoupper(LAN_ON);
|
$label_enabled = ($label_enabled) ? strtoupper($label_enabled) : strtoupper(LAN_ON);
|
||||||
$label_disabled = ($label_disabled) ? strtoupper($label_disabled): strtoupper(LAN_OFF);
|
$label_disabled = ($label_disabled) ? strtoupper($label_disabled): strtoupper(LAN_OFF);
|
||||||
|
|
||||||
@@ -2342,32 +2341,7 @@ class e_form
|
|||||||
|
|
||||||
if(!empty($options['switch']))
|
if(!empty($options['switch']))
|
||||||
{
|
{
|
||||||
if(!empty($options['inverse']))
|
return $this->switch($name,$checked_enabled, array('on'=>$options_on['label'],'off'=>$options_off['label']),$options);
|
||||||
{
|
|
||||||
$checked_enabled = !$checked_enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
$js_options = array(
|
|
||||||
// Each form element has its own options.
|
|
||||||
$name => array(
|
|
||||||
'size' => $options['switch'],
|
|
||||||
'onText' => $options_on['label'],
|
|
||||||
'offText' => $options_off['label'],
|
|
||||||
'inverse' => !empty($options['inverse']),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
if(e_ADMIN_AREA === true)
|
|
||||||
{
|
|
||||||
$js_options[$name]['wrapperClass'] = 'wrapper form-control';
|
|
||||||
}
|
|
||||||
|
|
||||||
e107::library('load', 'bootstrap.switch');
|
|
||||||
e107::js('settings', array('bsSwitch' => $js_options));
|
|
||||||
e107::js('footer', '{e_WEB}js/bootstrap.switch.init.js', 'jquery', 5);
|
|
||||||
|
|
||||||
$text = $this->hidden($name, (int) $checked_enabled);
|
|
||||||
$text .= $this->checkbox($name, 1, $checked_enabled);
|
|
||||||
}
|
}
|
||||||
elseif(!empty($options['inverse'])) // Same as 'writeParms'=>'reverse=1&enabled=LAN_DISABLED&disabled=LAN_ENABLED'
|
elseif(!empty($options['inverse'])) // Same as 'writeParms'=>'reverse=1&enabled=LAN_DISABLED&disabled=LAN_ENABLED'
|
||||||
{
|
{
|
||||||
@@ -2387,6 +2361,60 @@ class e_form
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $name
|
||||||
|
* @param bool|false $checked_enabled
|
||||||
|
* @param array $labels on & off
|
||||||
|
* @param array $options
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function switch($name, $checked_enabled = false, $labels=array('on' =>LAN_ON, 'off' =>LAN_OFF), $options = array())
|
||||||
|
{
|
||||||
|
|
||||||
|
if(!empty($options['inverse']))
|
||||||
|
{
|
||||||
|
$checked_enabled = !$checked_enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!empty($options['reverse']))
|
||||||
|
{
|
||||||
|
$on = $labels['on'];
|
||||||
|
$options_on['label'] = $labels['off'];
|
||||||
|
$options_off['label'] = $on;
|
||||||
|
unset($on);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$js_options = array(
|
||||||
|
// Each form element has its own options.
|
||||||
|
$name => array(
|
||||||
|
'size' => $options['switch'],
|
||||||
|
'onText' => $labels['on'],
|
||||||
|
'offText' => $labels['off'],
|
||||||
|
'inverse' => !empty($options['inverse']),
|
||||||
|
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
if(e_ADMIN_AREA === true)
|
||||||
|
{
|
||||||
|
$js_options[$name]['wrapperClass'] = 'wrapper form-control';
|
||||||
|
}
|
||||||
|
|
||||||
|
e107::library('load', 'bootstrap.switch');
|
||||||
|
e107::js('settings', array('bsSwitch' => $js_options));
|
||||||
|
e107::js('footer', '{e_WEB}js/bootstrap.switch.init.js', 'jquery', 5);
|
||||||
|
|
||||||
|
$text = $this->hidden($name, (int) $checked_enabled);
|
||||||
|
$text .= $this->checkbox($name, $checked_enabled, $checked_enabled);
|
||||||
|
|
||||||
|
return $text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* XXX INTERNAL ONLY - Use radio() instead. array will automatically trigger this internal method.
|
* XXX INTERNAL ONLY - Use radio() instead. array will automatically trigger this internal method.
|
||||||
* @param string $name
|
* @param string $name
|
||||||
|
4
e107_web/js/bootstrap.switch.init.js
vendored
4
e107_web/js/bootstrap.switch.init.js
vendored
@@ -25,6 +25,8 @@ var e107 = e107 || {'settings': {}, 'behaviors': {}};
|
|||||||
onText: options.onText || null,
|
onText: options.onText || null,
|
||||||
offText: options.offText || null,
|
offText: options.offText || null,
|
||||||
wrapperClass: options.wrapperClass || null
|
wrapperClass: options.wrapperClass || null
|
||||||
|
// state:
|
||||||
|
// inverse: options.inverse // this is 'reverse' - default values but reversed order.
|
||||||
});
|
});
|
||||||
|
|
||||||
$(this).on('switchChange.bootstrapSwitch', function (event, state) {
|
$(this).on('switchChange.bootstrapSwitch', function (event, state) {
|
||||||
@@ -40,7 +42,7 @@ var e107 = e107 || {'settings': {}, 'behaviors': {}};
|
|||||||
|
|
||||||
if(options.inverse)
|
if(options.inverse)
|
||||||
{
|
{
|
||||||
// value = checked ? 0 : 1;
|
value = checked ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$('input[type="hidden"][name="' + name + '"]').val(value);
|
$('input[type="hidden"][name="' + name + '"]').val(value);
|
||||||
|
Reference in New Issue
Block a user