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
-