diff --git a/Products/zms/_objattrs.py b/Products/zms/_objattrs.py index 392d2d178..624a41350 100644 --- a/Products/zms/_objattrs.py +++ b/Products/zms/_objattrs.py @@ -723,14 +723,17 @@ def isActive(self, REQUEST): def formatObjAttrValue(self, obj_attr, v, lang=None): #-- DATATYPE - datatype = obj_attr.get('datatype_key', _globals.DT_UNKNOWN) + try: + datatype = obj_attr.get('datatype_key', _globals.DT_UNKNOWN) + except: + datatype = _globals.DT_UNKNOWN #-- VALUE if isinstance(v, str): chars = ''.join([ x for x in string.whitespace if x != '\t']) v = v.strip(chars) # Retrieve v from options. - if 'options' in obj_attr: + if obj_attr is not None and 'options' in obj_attr: options = obj_attr['options'] try: i = options.index(int(v)) diff --git a/Products/zms/import/exampledb.metaobj.xml b/Products/zms/import/exampledb.metaobj.xml index 456800ad8..50f1840c3 100644 --- a/Products/zms/import/exampledb.metaobj.xml +++ b/Products/zms/import/exampledb.metaobj.xml @@ -14,7 +14,7 @@ - + @@ -96,7 +96,7 @@ records python:zmscontext.attr(metaObjAttrIds[0]); metaObjAttrs python:[x for x in metaObj['attrs'][1:] if x['id'] not in ['sort_id'] - and x['custom'] + and x.get('custom') and x['type'] in zmscontext.metaobj_manager.valid_types and not x['type'] in ['password'] ]"> @@ -108,7 +108,7 @@
- +
@@ -159,7 +159,7 @@ - + @@ -301,7 +301,7 @@ records python:zmscontext.attr(metaObjAttrIds[0]); metaObjAttrs python:[x for x in metaObj['attrs'][1:] if x['id'] not in ['sort_id'] - and x['custom'] + and x.get('custom') and x['type'] in zmscontext.metaobj_manager.valid_types and not x['type'] in ['password'] ]"> @@ -313,7 +313,7 @@
- +
@@ -364,7 +364,7 @@ - + @@ -480,7 +480,7 @@ - + diff --git a/Products/zms/plugins/www/bootstrap/plugin/bootstrap.plugin.zmi.js b/Products/zms/plugins/www/bootstrap/plugin/bootstrap.plugin.zmi.js index 2c52a83b9..59a624dba 100644 --- a/Products/zms/plugins/www/bootstrap/plugin/bootstrap.plugin.zmi.js +++ b/Products/zms/plugins/www/bootstrap/plugin/bootstrap.plugin.zmi.js @@ -550,7 +550,7 @@ $ZMI.registerReady(function(){ $ZMI.setCursorAuto("EO bootstrap.plugin.zmi"); // Set Save-Button Behaviour: Menu Lock - $('#menulock').prop('checked', JSON.parse($ZMILocalStorageAPI.get('ZMS.menulock',false))); + $('#menulock').val(JSON.parse($ZMILocalStorageAPI.get('ZMS.menulock',0))); // ZMSLightbox $('a.zmslightbox, a.fancybox') @@ -1755,7 +1755,7 @@ function zmiActionButtonsRefresh(sender,evt) { * @param v Boolean value for new (un-)checked state. */ function zmiToggleSelectionButtonClick(sender,v) { - var $fm = $(sender).parents('form,.zmi-form-container'); + var $fm = $(sender).closest('form,.zmi-form-container'); var $inputs = $('input:checkbox:not([id~="active"]):not([id~="attr_dc_coverage"])',$fm); if (typeof v == "undefined") { v = !$inputs.prop('checked'); diff --git a/Products/zms/plugins/www/zmi.core.css b/Products/zms/plugins/www/zmi.core.css index 9fca5a6df..a77c23822 100644 --- a/Products/zms/plugins/www/zmi.core.css +++ b/Products/zms/plugins/www/zmi.core.css @@ -1128,6 +1128,17 @@ input.btn.btn-file { text-align:right; width:100%; } +.zmi .controls.save .btn:not(:last-child) { + margin-right:0.25rem; +} +.zmi .controls.save dialog#menulock_btn { + /* Hint: is dialog element for react on focus/click event */ + display:inline-block; + position: relative; +} +.zmi .controls.save dialog#menulock_btn #menulock[value='0'] + #menulock_icon { + color:#bfc8cf; +} .zmi .single-line { width:100%; flex-wrap:nowrap; diff --git a/Products/zms/zpt/ZMSIndex/manage_main.zpt b/Products/zms/zpt/ZMSIndex/manage_main.zpt index 03b855174..f38e5d01c 100644 --- a/Products/zms/zpt/ZMSIndex/manage_main.zpt +++ b/Products/zms/zpt/ZMSIndex/manage_main.zpt @@ -35,7 +35,7 @@ function openWindow(url) { ZMSIndex
-
+
diff --git a/Products/zms/zpt/ZMSMetacmdProvider/manage_main.zpt b/Products/zms/zpt/ZMSMetacmdProvider/manage_main.zpt index 09226d6fc..c310992c9 100644 --- a/Products/zms/zpt/ZMSMetacmdProvider/manage_main.zpt +++ b/Products/zms/zpt/ZMSMetacmdProvider/manage_main.zpt @@ -186,21 +186,21 @@
-
-