mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-05 05:29:13 +01:00
transforming legacy options in preprocessor (not all select-* stuff implemented currently)
This commit is contained in:
parent
1776dd9005
commit
72f227d670
@ -66,6 +66,50 @@ function send_template()
|
|||||||
// fix <menulist...><menupopup type="select-*"/></menulist> --> <select type="select-*" .../>
|
// fix <menulist...><menupopup type="select-*"/></menulist> --> <select type="select-*" .../>
|
||||||
$str = preg_replace('#<menulist([^>]*)>[\r\n\s]*<menupopup([^>]+>)[\r\n\s]*</menulist>#', '<select$1$2', $str);
|
$str = preg_replace('#<menulist([^>]*)>[\r\n\s]*<menupopup([^>]+>)[\r\n\s]*</menulist>#', '<select$1$2', $str);
|
||||||
|
|
||||||
|
// fix legacy options, so new client-side has not to deal with them
|
||||||
|
$str = preg_replace_callback('#<([^- ]+)(-[^ ]+)?[^>]* (options="([^"]+)")[ />]#', static function($matches)
|
||||||
|
{
|
||||||
|
// take care of (static) type attribute, if used
|
||||||
|
if (preg_match('/ type="([a-z-]+)"/', $matches[0], $type))
|
||||||
|
{
|
||||||
|
str_replace('<'.$matches[1].$matches[2], '<'.$type[1], $matches[0]);
|
||||||
|
str_replace($type[0], '', $matches[0]);
|
||||||
|
list($matches[1], $matches[2]) = explode('-', $type[1], 2);
|
||||||
|
}
|
||||||
|
static $legacy_options = array(
|
||||||
|
'select' => 'empty_label',
|
||||||
|
'box' => ',cellpadding,cellspacing,keep',
|
||||||
|
'hbox' => 'cellpadding,cellspacing,keep',
|
||||||
|
'vbox' => 'cellpadding,cellspacing,keep',
|
||||||
|
'groupbox' => 'cellpadding,cellspacing,keep',
|
||||||
|
'checkbox' => 'selected_value,unselected_value,ro_true,ro_false',
|
||||||
|
'radio' => 'set_value,ro_true,ro_false',
|
||||||
|
'customfields' => 'sub-type,use-private,field-names',
|
||||||
|
'date' => 'data_format,mode',
|
||||||
|
'description' => 'bold-italic,link,activate_links,label_for,link_target,link_popup_size,link_title',
|
||||||
|
);
|
||||||
|
// prefer more specific type-subtype over just type
|
||||||
|
$names = $legacy_options[$matches[1].$matches[2]] ?? $legacy_options[$matches[1]] ?? null;
|
||||||
|
if (isset($names))
|
||||||
|
{
|
||||||
|
$names = explode(',', $names);
|
||||||
|
$attrs = array_diff(array_combine($names, explode(',', $matches[4], count($names))), ['', null]);
|
||||||
|
// fix select options can be either multiple or empty_label
|
||||||
|
if ($matches[1] === 'select' && !empty($attrs['empty_label']) && (int)$attrs['empty_label'] > 0)
|
||||||
|
{
|
||||||
|
$attrs['multiple'] = (int)$attrs['empty_label'];
|
||||||
|
unset($matches['empty_label']);
|
||||||
|
}
|
||||||
|
$options = '';
|
||||||
|
foreach($attrs as $attr => $value)
|
||||||
|
{
|
||||||
|
$options .= $attr.'="'.$value.'" ';
|
||||||
|
}
|
||||||
|
return str_replace($matches[3], $options, $matches[0]);
|
||||||
|
}
|
||||||
|
return $matches[0];
|
||||||
|
}, $str);
|
||||||
|
|
||||||
// fix <textbox multiline="true" .../> --> <textarea .../> (et2-prefix and self-closing is handled below)
|
// fix <textbox multiline="true" .../> --> <textarea .../> (et2-prefix and self-closing is handled below)
|
||||||
$str = preg_replace('#<textbox(.*?)\smultiline="true"(.*?)/>#u', '<textarea$1$2/>', $str);
|
$str = preg_replace('#<textbox(.*?)\smultiline="true"(.*?)/>#u', '<textarea$1$2/>', $str);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user