mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-22 23:00:56 +01:00
using WCs for simple select, r/o select-* and r/o date(-time)
ToDo/Questions Nathan: - Tracker index gives a client-side TypeError - <et2-select-account readonly="true" is not registered, but <et2-select type="select-account" readonly="true" works - <et2-date-time was registered as <et2-datetime, was that a typo of a conscious choice to rename the widget and not just prefix with et2- - not yet enabled are r/w et2-date(-time) - still missing are r/o et2-date-(since|duration)
This commit is contained in:
parent
410f882cb7
commit
5ec2a233a4
@ -13,7 +13,7 @@
|
|||||||
use EGroupware\Api;
|
use EGroupware\Api;
|
||||||
|
|
||||||
// add et2- prefix to following widgets/tags
|
// add et2- prefix to following widgets/tags
|
||||||
const ADD_ET2_PREFIX_REGEXP = '#<((/?)([vh]?box|textbox|textarea|button|colorpicker))(/?|\s[^>]*)>#m';
|
const ADD_ET2_PREFIX_REGEXP = '#<((/?)([vh]?box|textbox|textarea|button|colorpicker|description))(/?|\s[^>]*)>#m';
|
||||||
|
|
||||||
// switch evtl. set output-compression off, as we cant calculate a Content-Length header with transparent compression
|
// switch evtl. set output-compression off, as we cant calculate a Content-Length header with transparent compression
|
||||||
ini_set('zlib.output_compression', 0);
|
ini_set('zlib.output_compression', 0);
|
||||||
@ -77,6 +77,28 @@ function send_template()
|
|||||||
(substr($matches[4], -1) === '/' ? substr($matches[4], 0, -1) . '></et2-' . $matches[3] : $matches[4]) . '>';
|
(substr($matches[4], -1) === '/' ? substr($matches[4], 0, -1) . '></et2-' . $matches[3] : $matches[4]) . '>';
|
||||||
}, $str);
|
}, $str);
|
||||||
|
|
||||||
|
// handling of partially implemented select and date widget (only readonly or simple select without tags or search attribute or options)
|
||||||
|
$str = preg_replace_callback('#<(select|date)(-[^ ]+)? ([^>]+)/>#', static function (array $matches)
|
||||||
|
{
|
||||||
|
preg_match_all('/(^| )([a-z0-9_-]+)="([^"]+)"/', $matches[3], $attrs, PREG_PATTERN_ORDER);
|
||||||
|
$attrs = array_combine($attrs[2], $attrs[3]);
|
||||||
|
// fix not understood <et2-select-account --> <et2-select type="select-account", ToDo: Nathan
|
||||||
|
if ($matches[1] === 'select' && $matches[2] === '-account')
|
||||||
|
{
|
||||||
|
$matches[2] = '';
|
||||||
|
$matches[3] = 'type="select-account" '.$matches[3];
|
||||||
|
}
|
||||||
|
// add et2-prefix for <select-* or <date-* readonly="true"
|
||||||
|
if (($matches[1] === 'select' || in_array($matches[1].$matches[2], ['date','date-time'])) &&
|
||||||
|
isset($attrs['readonly']) && !in_array($attrs['readonly'], ['false', '0']) ||
|
||||||
|
// also add it for untyped/simple <select without search or tags attribute
|
||||||
|
$matches[1] === 'select' && empty($matches[2]) && !isset($attrs['type']) && !isset($attrs['search']) && !isset($attrs['tags']))
|
||||||
|
{
|
||||||
|
return '<et2-'.$matches[1].$matches[2].' '.$matches[3].'></et2-'.$matches[1].$matches[2].'>';
|
||||||
|
}
|
||||||
|
return $matches[0];
|
||||||
|
}, $str);
|
||||||
|
|
||||||
$processing = microtime(true);
|
$processing = microtime(true);
|
||||||
|
|
||||||
if(isset($cache) && (file_exists($cache_dir = dirname($cache)) || mkdir($cache_dir, 0755, true)))
|
if(isset($cache) && (file_exists($cache_dir = dirname($cache)) || mkdir($cache_dir, 0755, true)))
|
||||||
|
@ -66,4 +66,4 @@ export class Et2DateTime extends Et2Date
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore TypeScript is not recognizing that Et2DateTime is a LitElement
|
// @ts-ignore TypeScript is not recognizing that Et2DateTime is a LitElement
|
||||||
customElements.define("et2-datetime", Et2DateTime);
|
customElements.define("et2-date-time", Et2DateTime);
|
||||||
|
@ -24,4 +24,4 @@ export class Et2DateTimeReadonly extends Et2DateReadonly
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore TypeScript is not recognizing that Et2Date is a LitElement
|
// @ts-ignore TypeScript is not recognizing that Et2Date is a LitElement
|
||||||
customElements.define("et2-datetime_ro", Et2DateTimeReadonly);
|
customElements.define("et2-date-time_ro", Et2DateTimeReadonly);
|
Loading…
Reference in New Issue
Block a user