diff --git a/Products/zms/ZMSMetaobjManager.py b/Products/zms/ZMSMetaobjManager.py index 7dacdd327..7f88fbfb9 100644 --- a/Products/zms/ZMSMetaobjManager.py +++ b/Products/zms/ZMSMetaobjManager.py @@ -1201,7 +1201,8 @@ def manage_changeProperties(self, lang, btn='', key='all', REQUEST=None, RESPONS if (len(attr_id) > 0 and len(newName) > 0 and len(newType) > 0) or newType in self.getMetadictAttrs(): message += self.setMetaobjAttr( id, None, attr_id, newName, newMandatory, newMultilang, newRepetitive, newType, newKeys, newCustom, newDefault) message += self.getZMILangStr('MSG_INSERTED')%attr_id - # Lang-Dict. + # Insert (multiple) new language keys at once. + # Ref: _multilangmanager.py#L647 for key in REQUEST.form.keys(): if key.startswith('_lang_dict_key_'): i = int(key[len('_lang_dict_key_'):]) diff --git a/Products/zms/_multilangmanager.py b/Products/zms/_multilangmanager.py index 6cab5debe..12933a84c 100644 --- a/Products/zms/_multilangmanager.py +++ b/Products/zms/_multilangmanager.py @@ -506,23 +506,28 @@ def manage_changeLanguages(self, lang, btn, REQUEST, RESPONSE): # Change. # ------- elif btn == 'BTN_SAVE': - newId = REQUEST.get('language_id','').strip() + # Change available languages. for id in self.getLangIds(): - if id != newId: - newLabel = REQUEST.get('%s_label'%id).strip() - newParent = REQUEST.get('%s_parent'%id).strip() - newManage = REQUEST.get('%s_manage'%id).strip() - self.setLanguage(id, newLabel, newParent, newManage) - # Insert - if len(newId) > 0: - newLabel = REQUEST.get('language_label').strip() - if len(self.getLangIds()) == 0: - newParent = '' - else: - newParent = REQUEST.get('language_parent').strip() - newManage = REQUEST.get('language_manage').strip() - self.setLanguage(newId, newLabel, newParent, newManage) - + newLabel = REQUEST.get('%s_label'%id).strip() + newParent = REQUEST.get('%s_parent'%id).strip() + newManage = REQUEST.get('%s_manage'%id).strip() + self.setLanguage(id, newLabel, newParent, newManage) + # Insert new languages + # Ref: _multilangmanager.py#L647 + for key in REQUEST.form.keys(): + if key.startswith('_lang_id_'): + i = int(key[len('_lang_id_'):]) + if REQUEST[key]: + newId = REQUEST[key].strip() + if newId not in self.getLangIds(): + newLabel = REQUEST.get('_lang_label_%i'%i).strip() + if len(self.getLangIds()) == 0: + newParent = '' + else: + newParent = REQUEST.get('_lang_parent_%i'%i).strip() + newManage = REQUEST.get('_lang_manage_%i'%i).strip() + self.setLanguage(newId, newLabel, newParent, newManage) + # Return with message. message = standard.url_quote(self.getZMILangStr('MSG_CHANGED')) return RESPONSE.redirect('manage_customizeLanguagesForm?lang=%s&manage_tabs_message=%s'%(lang, message)) @@ -639,14 +644,19 @@ def manage_changeLangDictProperties(self, lang, btn, REQUEST, RESPONSE=None): enabled = lang_id not in d[key].get('acquired', []) if enabled: lang_dict[key][lang_id] = REQUEST['%s_value_%s'%(key, lang_id)].strip() - # Insert - key = REQUEST['_key'].strip() - if len(key) > 0: - lang_dict = self.get_lang_dict() - lang_dict[key] = {} - for lang_id in self.getLangIds(): - lang_dict[key][lang_id] = REQUEST['_value_%s'%lang_id].strip() - self.set_lang_dict(lang_dict) + # Insert (multiple) new language keys at once. + # Ref: ZMSMetaobjManager.py#L1294 + for key in REQUEST.form.keys(): + if key.startswith('_lang_dict_key_'): + i = int(key[len('_lang_dict_key_'):]) + if REQUEST[key]: + k = REQUEST[key].strip() + lang_dict[k] = {} + for key2 in REQUEST.form.keys(): + if key2.startswith('_lang_dict_value_%i_'%i): + lang_id = key2[len('_lang_dict_value_%i_'%i):] + lang_dict[k][lang_id] = REQUEST[key2].strip() + self.set_lang_dict(lang_dict) # Export. # ------- diff --git a/Products/zms/plugins/www/zmi.core.css b/Products/zms/plugins/www/zmi.core.css index 9fca5a6df..4494670cd 100644 --- a/Products/zms/plugins/www/zmi.core.css +++ b/Products/zms/plugins/www/zmi.core.css @@ -1076,8 +1076,12 @@ div.zmi-manage-main-change { border-bottom-left-radius: .25rem; border-top-left-radius: .25rem; padding-right: .25em; + padding-left: 0; +} +.zmi.metas.metaobj form table.table td.meta-sort select.zmi-sort { + width: 3em; } -.zmi form.manage_metas table.table td.meta-sort select.zmi-sort { +.zmi.metas:not(.metaobj) form table.table td.meta-sort select.zmi-sort { width: 3.9em; } .zmi table.table .input-group { @@ -1693,11 +1697,6 @@ table.table-sm tr.row_metadata td, table.table-sm tr.row_insert td { background-color: #e9ecef !important } -table.table-sm tr.row_metadata td .btn-add, -table.table-sm tr.row_insert td .btn-add { - padding-right: 0.4rem; - color: #888; -} .zmi table.table-sm td.meta-id input { background:rgba(53, 79, 103, 0.10); } diff --git a/Products/zms/zpt/ZMS/manage_customizelanguagesform.zpt b/Products/zms/zpt/ZMS/manage_customizelanguagesform.zpt index 6b2dc969b..459f20154 100644 --- a/Products/zms/zpt/ZMS/manage_customizelanguagesform.zpt +++ b/Products/zms/zpt/ZMS/manage_customizelanguagesform.zpt @@ -59,7 +59,7 @@ function zmiFormSubmit(sender,d) { tal:content="python:here.getZMILangStr('TAB_LANGUAGES')"> Languages - +
@@ -101,16 +101,16 @@ function zmiFormSubmit(sender,d) { - - - + + + @@ -130,7 +130,8 @@ function zmiFormSubmit(sender,d) { tal:content="python:here.getZMILangStr('ATTR_DICTIONARY')"> Dictionary -
- -
@@ -159,9 +160,9 @@ function zmiFormSubmit(sender,d) { - - - + + +
@@ -203,6 +204,101 @@ function zmiFormSubmit(sender,d) { + + + + \ No newline at end of file diff --git a/Products/zms/zpt/ZMSFilterManager/manage_main.zpt b/Products/zms/zpt/ZMSFilterManager/manage_main.zpt index 145d63fd8..0eefc150a 100644 --- a/Products/zms/zpt/ZMSFilterManager/manage_main.zpt +++ b/Products/zms/zpt/ZMSFilterManager/manage_main.zpt @@ -159,7 +159,7 @@ - + @@ -568,7 +568,7 @@ let table_id = $(this).closest('table').attr('id'); // meta_properties or meta_languages let new_row_name = `new_row_${table_id}_${new_row_counter}`; let new_btn_html = ` - diff --git a/Products/zms/zpt/ZMSMetamodelProvider/manage_main.zpt b/Products/zms/zpt/ZMSMetamodelProvider/manage_main.zpt index a3f9ca4cb..e813a6400 100644 --- a/Products/zms/zpt/ZMSMetamodelProvider/manage_main.zpt +++ b/Products/zms/zpt/ZMSMetamodelProvider/manage_main.zpt @@ -8,7 +8,7 @@ > zmi_html_head - +
zmi_body_header
- + @@ -404,7 +404,7 @@ - + @@ -589,6 +589,21 @@
zmi_body_footer
+