From 5793b462baa21602b955217c1eafe5a2b147381b Mon Sep 17 00:00:00 2001 From: nathan Date: Fri, 15 Jul 2022 12:48:25 -0600 Subject: [PATCH] Fix et2-select widgets in template did not validate --- api/src/Etemplate/Widget.php | 11 ++++++----- api/src/Etemplate/Widget/Select.php | 4 ++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/api/src/Etemplate/Widget.php b/api/src/Etemplate/Widget.php index d0d1710cf8..51879fee7f 100644 --- a/api/src/Etemplate/Widget.php +++ b/api/src/Etemplate/Widget.php @@ -420,13 +420,14 @@ class Widget if (!isset($class_name)) { - list($basetype) = explode('-',$type); - if (//dont think this is used: !class_exists($class_name = 'etemplate_widget_'.str_replace('-','_',$type)) && - !class_exists($class_name = __CLASS__.'\\'.ucfirst($basetype)) && + $exploded = explode('-', $type); + $basetype = $exploded[0] == "et2" ? $exploded[1] : $exploded[0]; + if(//dont think this is used: !class_exists($class_name = 'etemplate_widget_'.str_replace('-','_',$type)) && + !class_exists($class_name = __CLASS__ . '\\' . ucfirst($basetype)) && // widgets supplied by application in class ${app}_widget_etemplate or ${app}_${subtype}_widget_etemplate !(isset($GLOBALS['egw_info']['apps'][$basetype]) && - (class_exists($class_name = str_replace('-','_',$type).'_etemplate_widget') || - class_exists($class_name = $basetype.'_etemplate_widget')))) + (class_exists($class_name = str_replace('-', '_', $type) . '_etemplate_widget') || + class_exists($class_name = $basetype . '_etemplate_widget')))) { // Try for base type, it's probably better than the root if(isset(self::$widget_registry[$basetype]) && self::$widget_registry[$basetype] !== $class_name) diff --git a/api/src/Etemplate/Widget/Select.php b/api/src/Etemplate/Widget/Select.php index 600baeed6b..7226d39546 100644 --- a/api/src/Etemplate/Widget/Select.php +++ b/api/src/Etemplate/Widget/Select.php @@ -560,6 +560,10 @@ class Select extends Etemplate\Widget { $widget = $widget_type; $widget_type = $widget->attrs['type'] ? $widget->attrs['type'] : $widget->type; + if(str_starts_with($widget_type, 'et2-')) + { + $widget_type = str_replace('et2-', '', $widget_type); + } } // Legacy / static support // Have to do this explicitly, since legacy options is not defined on class level