From 394fa73b85c552c0562ea5bc51b2c780ee25f2df Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 11 May 2016 12:21:45 +0000 Subject: [PATCH] CCM NG: ccm/admin Configuration tab (not tested yet) git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4064 8810af33-2d31-482b-a856-94f89814c4df --- .../admin/configuration/ConfigurationTab.java | 237 +++++++- .../configuration/SettingEditorEnum.java | 419 +++++++++++++ .../SettingEditorLocalizedString.java | 80 ++- .../SettingEditorStringList.java | 567 ++++++++++++++++++ .../ui/admin/AdminResources.properties | 24 +- .../ui/admin/AdminResources_de.properties | 24 +- .../ui/admin/AdminResources_en.properties | 24 +- .../ui/admin/AdminResources_fr.properties | 24 +- 8 files changed, 1355 insertions(+), 44 deletions(-) create mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorEnum.java create mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorStringList.java diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTab.java index fe9c219e1..b2d562cc5 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTab.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTab.java @@ -48,12 +48,24 @@ public class ConfigurationTab extends LayoutPanel { private final StringParameter selectedSettingParam; private final ParameterSingleSelectionModel selectedSetting; + private final StringParameter selectedValueParam; + private final ParameterSingleSelectionModel selectedValue; + private final Label confClassesFilterHeading; private final Form confClassesFilterForm; private final ConfigurationsTable configurationsTable; private final ConfigurationTable configurationTable; + private final SettingFormBoolean settingFormBoolean; + private final SettingFormLong settingFormLong; + private final SettingFormDouble settingFormDouble; + private final SettingFormBigDecimal settingFormBigDecimal; + private final SettingFormString settingFormString; + private final SettingEditorLocalizedString settingEditorLocalizedString; + private final SettingEditorStringList settingEditorStringList; + private final SettingEditorEnum settingEditorEnum; + public ConfigurationTab() { super(); @@ -66,6 +78,9 @@ public class ConfigurationTab extends LayoutPanel { selectedSetting = new ParameterSingleSelectionModel<>( selectedSettingParam); + selectedValueParam = new StringParameter("selectedValue"); + selectedValue = new ParameterSingleSelectionModel<>(selectedValueParam); + final SegmentedPanel left = new SegmentedPanel(); confClassesFilterHeading = new Label(new GlobalizedMessage( @@ -97,6 +112,43 @@ public class ConfigurationTab extends LayoutPanel { selectedSetting); body.add(configurationTable); + settingFormBoolean = new SettingFormBoolean(this, + selectedConf, + selectedSetting); + body.add(settingFormBoolean); + + settingFormLong = new SettingFormLong(this, + selectedConf, + selectedSetting); + body.add(settingFormLong); + + settingFormDouble = new SettingFormDouble(this, + selectedConf, + selectedSetting); + body.add(settingFormDouble); + + settingFormBigDecimal = new SettingFormBigDecimal(this, + selectedConf, + selectedSetting); + body.add(settingFormBigDecimal); + + settingFormString = new SettingFormString(this, + selectedConf, + selectedSetting); + body.add(settingFormString); + + settingEditorLocalizedString = new SettingEditorLocalizedString( + this, selectedConf, selectedSetting, selectedValue); + body.add(settingEditorLocalizedString); + + settingEditorStringList = new SettingEditorStringList( + this, selectedConf, selectedSetting, selectedValue); + body.add(settingEditorStringList); + + settingEditorEnum = new SettingEditorEnum( + this, selectedConf, selectedSetting, selectedValue); + body.add(settingEditorEnum); + setBody(body); } @@ -106,18 +158,39 @@ public class ConfigurationTab extends LayoutPanel { page.addGlobalStateParam(selectedConfParam); page.addGlobalStateParam(selectedSettingParam); - + page.addGlobalStateParam(selectedValueParam); + page.setVisibleDefault(confClassesFilterHeading, true); page.setVisibleDefault(confClassesFilterForm, true); page.setVisibleDefault(configurationsTable, true); - + page.setVisibleDefault(configurationTable, false); + + page.setVisibleDefault(settingFormBoolean, false); + page.setVisibleDefault(settingFormLong, false); + page.setVisibleDefault(settingFormDouble, false); + page.setVisibleDefault(settingFormBigDecimal, false); + page.setVisibleDefault(settingFormString, false); + page.setVisibleDefault(settingEditorLocalizedString, false); + page.setVisibleDefault(settingEditorStringList, false); + page.setVisibleDefault(settingEditorEnum, false); } protected void showConfigurationsTable(final PageState state) { confClassesFilterHeading.setVisible(state, true); confClassesFilterForm.setVisible(state, true); configurationsTable.setVisible(state, true); + + configurationTable.setVisible(state, false); + + settingFormBoolean.setVisible(state, false); + settingFormLong.setVisible(state, false); + settingFormDouble.setVisible(state, false); + settingFormBigDecimal.setVisible(state, false); + settingFormString.setVisible(state, false); + settingEditorLocalizedString.setVisible(state, false); + settingEditorStringList.setVisible(state, false); + settingEditorEnum.setVisible(state, false); } protected void hideConfigurationsTable(final PageState state) { @@ -128,51 +201,175 @@ public class ConfigurationTab extends LayoutPanel { protected void showConfiguration(final PageState state) { hideConfigurationsTable(state); - + hideSettingForms(state); + configurationTable.setVisible(state, true); } protected void hideConfiguration(final PageState state) { configurationTable.setVisible(state, false); + + selectedConf.clearSelection(state); showConfigurationsTable(state); } - + protected void showBigDecimalSettingForm(final PageState state) { - + confClassesFilterHeading.setVisible(state, false); + confClassesFilterForm.setVisible(state, false); + configurationsTable.setVisible(state, false); + + configurationTable.setVisible(state, false); + + settingFormBoolean.setVisible(state, false); + settingFormLong.setVisible(state, false); + settingFormDouble.setVisible(state, false); + settingFormBigDecimal.setVisible(state, true); + settingFormString.setVisible(state, false); + settingEditorLocalizedString.setVisible(state, false); + settingEditorStringList.setVisible(state, false); + settingEditorEnum.setVisible(state, false); } - + protected void showBooleanSettingForm(final PageState state) { - + confClassesFilterHeading.setVisible(state, false); + confClassesFilterForm.setVisible(state, false); + configurationsTable.setVisible(state, false); + + configurationTable.setVisible(state, false); + + settingFormBoolean.setVisible(state, true); + settingFormLong.setVisible(state, false); + settingFormDouble.setVisible(state, false); + settingFormBigDecimal.setVisible(state, false); + settingFormString.setVisible(state, false); + settingEditorLocalizedString.setVisible(state, false); + settingEditorStringList.setVisible(state, false); + settingEditorEnum.setVisible(state, false); } - + protected void showDoubleSettingForm(final PageState state) { - + confClassesFilterHeading.setVisible(state, false); + confClassesFilterForm.setVisible(state, false); + configurationsTable.setVisible(state, false); + + configurationTable.setVisible(state, false); + + settingFormBoolean.setVisible(state, false); + settingFormLong.setVisible(state, false); + settingFormDouble.setVisible(state, true); + settingFormBigDecimal.setVisible(state, false); + settingFormString.setVisible(state, false); + settingEditorLocalizedString.setVisible(state, false); + settingEditorStringList.setVisible(state, false); + settingEditorEnum.setVisible(state, false); } - + protected void showEnumSettingForm(final PageState state) { - + confClassesFilterHeading.setVisible(state, false); + confClassesFilterForm.setVisible(state, false); + configurationsTable.setVisible(state, false); + + configurationTable.setVisible(state, false); + + settingFormBoolean.setVisible(state, false); + settingFormLong.setVisible(state, false); + settingFormDouble.setVisible(state, false); + settingFormBigDecimal.setVisible(state, false); + settingFormString.setVisible(state, false); + settingEditorLocalizedString.setVisible(state, false); + settingEditorStringList.setVisible(state, false); + settingEditorEnum.setVisible(state, true); } - + protected void showLocalizedStringSettingForm(final PageState state) { - + confClassesFilterHeading.setVisible(state, false); + confClassesFilterForm.setVisible(state, false); + configurationsTable.setVisible(state, false); + + configurationTable.setVisible(state, false); + + settingFormBoolean.setVisible(state, false); + settingFormLong.setVisible(state, false); + settingFormDouble.setVisible(state, false); + settingFormBigDecimal.setVisible(state, false); + settingFormString.setVisible(state, false); + settingEditorLocalizedString.setVisible(state, true); + settingEditorStringList.setVisible(state, false); + settingEditorEnum.setVisible(state, false); } - + protected void showLongSettingForm(final PageState state) { - + confClassesFilterHeading.setVisible(state, false); + confClassesFilterForm.setVisible(state, false); + configurationsTable.setVisible(state, false); + + configurationTable.setVisible(state, false); + + settingFormBoolean.setVisible(state, false); + settingFormLong.setVisible(state, true); + settingFormDouble.setVisible(state, false); + settingFormBigDecimal.setVisible(state, false); + settingFormString.setVisible(state, false); + settingEditorLocalizedString.setVisible(state, false); + settingEditorStringList.setVisible(state, false); + settingEditorEnum.setVisible(state, false); } - + protected void showStringListSettingForm(final PageState state) { - + confClassesFilterHeading.setVisible(state, false); + confClassesFilterForm.setVisible(state, false); + configurationsTable.setVisible(state, false); + + configurationTable.setVisible(state, false); + + settingFormBoolean.setVisible(state, false); + settingFormLong.setVisible(state, false); + settingFormDouble.setVisible(state, false); + settingFormBigDecimal.setVisible(state, false); + settingFormString.setVisible(state, false); + settingEditorLocalizedString.setVisible(state, false); + settingEditorStringList.setVisible(state, true); + settingEditorEnum.setVisible(state, false); } - + protected void showStringSettingForm(final PageState state) { - + confClassesFilterHeading.setVisible(state, false); + confClassesFilterForm.setVisible(state, false); + configurationsTable.setVisible(state, false); + + configurationTable.setVisible(state, false); + + settingFormBoolean.setVisible(state, false); + settingFormLong.setVisible(state, false); + settingFormDouble.setVisible(state, false); + settingFormBigDecimal.setVisible(state, false); + settingFormString.setVisible(state, true); + settingEditorLocalizedString.setVisible(state, false); + settingEditorStringList.setVisible(state, false); + settingEditorEnum.setVisible(state, false); } - + protected void hideSettingForms(final PageState state) { + confClassesFilterHeading.setVisible(state, false); + confClassesFilterForm.setVisible(state, false); + configurationsTable.setVisible(state, false); + + configurationTable.setVisible(state, false); + + settingFormBoolean.setVisible(state, false); + settingFormLong.setVisible(state, false); + settingFormDouble.setVisible(state, false); + settingFormBigDecimal.setVisible(state, false); + settingFormString.setVisible(state, false); + settingEditorLocalizedString.setVisible(state, false); + settingEditorStringList.setVisible(state, false); + settingEditorEnum.setVisible(state, false); + selectedSetting.clearSelection(state); + selectedValue.clearSelection(state); showConfiguration(state); } + } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorEnum.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorEnum.java new file mode 100644 index 000000000..49f35d3b6 --- /dev/null +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorEnum.java @@ -0,0 +1,419 @@ +/* + * Copyright (C) 2016 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package com.arsdigita.ui.admin.configuration; + +import com.arsdigita.bebop.ActionLink; +import com.arsdigita.bebop.BoxPanel; +import com.arsdigita.bebop.Component; +import com.arsdigita.bebop.ControlLink; +import com.arsdigita.bebop.Form; +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.ParameterSingleSelectionModel; +import com.arsdigita.bebop.SaveCancelSection; +import com.arsdigita.bebop.Table; +import com.arsdigita.bebop.Text; +import com.arsdigita.bebop.event.TableActionEvent; +import com.arsdigita.bebop.event.TableActionListener; +import com.arsdigita.bebop.form.TextField; +import com.arsdigita.bebop.table.TableCellRenderer; +import com.arsdigita.bebop.table.TableColumn; +import com.arsdigita.bebop.table.TableColumnModel; +import com.arsdigita.bebop.table.TableModel; +import com.arsdigita.bebop.table.TableModelBuilder; +import com.arsdigita.globalization.GlobalizedMessage; +import com.arsdigita.util.LockableImpl; +import com.arsdigita.util.UncheckedWrapperException; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.libreccm.cdi.utils.CdiUtil; +import org.libreccm.configuration.ConfigurationManager; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import static com.arsdigita.ui.admin.AdminUiConstants.*; + +/** + * + * @author Jens Pelzetter + */ +public class SettingEditorEnum extends BoxPanel { + + private static final Logger LOGGER = LogManager.getLogger( + SettingEditorEnum.class); + + private static final int COL_VALUE = 0; + private static final int COL_EDIT = 1; + private static final int COL_DEL = 2; + + private final ConfigurationTab configurationTab; + private final ParameterSingleSelectionModel selectedConf; + private final ParameterSingleSelectionModel selectedSetting; + private final ParameterSingleSelectionModel selectedValue; + + public SettingEditorEnum( + final ConfigurationTab configurationTab, + final ParameterSingleSelectionModel selectedConf, + final ParameterSingleSelectionModel selectedSetting, + final ParameterSingleSelectionModel selectedValue) { + + super(BoxPanel.VERTICAL); + + this.configurationTab = configurationTab; + this.selectedConf = selectedConf; + this.selectedSetting = selectedSetting; + this.selectedValue = selectedValue; + + final ActionLink backLink = new ActionLink(new GlobalizedMessage( + "ui.admin.configuration.setting.localized_string.back", + ADMIN_BUNDLE)); + backLink.addActionListener(e -> { + configurationTab.hideSettingForms(e.getPageState()); + }); + add(backLink); + + add(new SettingFormHeader(selectedConf, selectedSetting)); + + add(new ValuesTable()); + + add(new ValueForm()); + } + + private class ValuesTable extends Table { + + public ValuesTable() { + + super(); + + setIdAttr("enumValues"); + + setEmptyView(new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.enum.no_values", ADMIN_BUNDLE))); + + final TableColumnModel columnModel = getColumnModel(); + columnModel.add(new TableColumn( + COL_VALUE, + new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.enum.col_value", + ADMIN_BUNDLE)))); + columnModel.add(new TableColumn( + COL_EDIT, + new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.enum.col_edit", + ADMIN_BUNDLE)))); + columnModel.add(new TableColumn( + COL_DEL, + new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.enum.col_del", + ADMIN_BUNDLE)))); + + columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() { + + @Override + public Component getComponent(final Table table, + final PageState state, + final Object value, + final boolean isSelected, + final Object key, + final int row, + final int column) { + return new ControlLink((Component) value); + } + + }); + + columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() { + + @Override + public Component getComponent(final Table table, + final PageState state, + final Object value, + final boolean isSelected, + final Object key, + final int row, + final int column) { + if (value == null) { + return new Text(""); + } else { + final ControlLink link = new ControlLink( + (Component) value); + link.setConfirmation(new GlobalizedMessage( + "ui.admin.configuration.setting.enum.del_confirm", + ADMIN_BUNDLE)); + + return link; + } + } + + }); + + addTableActionListener(new TableActionListener() { + + @Override + @SuppressWarnings("unchecked") + public void cellSelected(final TableActionEvent event) { + final PageState state = event.getPageState(); + + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + + final Class confClass; + try { + confClass = Class + .forName(selectedConf.getSelectedKey(state)); + } catch (ClassNotFoundException ex) { + throw new UncheckedWrapperException(ex); + } + + final ConfigurationManager confManager = cdiUtil + .findBean( + ConfigurationManager.class); + + final Object config = confManager.findConfiguration( + confClass); + + final Set values; + try { + values = (Set) confClass.getField( + selectedSetting.getSelectedKey(state)).get(config); + } catch (NoSuchFieldException | SecurityException | + IllegalAccessException | ClassCastException ex) { + LOGGER.warn( + "Failed to read setting {} from configuration {}", + selectedSetting.getSelectedKey(state), + selectedConf.getSelectedKey(state)); + LOGGER.warn(ex); + + throw new UncheckedWrapperException(ex); + } + + switch (event.getColumn()) { + case COL_EDIT: { + selectedValue.setSelectedKey(state, event + .getRowKey()); + + break; + } + case COL_DEL: { + values.remove(event.getRowKey()); + + confManager.saveConfiguration(config); + + break; + } + } + } + + @Override + public void headSelected(final TableActionEvent event) { + //Notthing + } + + }); + + setModelBuilder(new ValuesTableModelBuilder()); + + } + + } + + private class ValuesTableModelBuilder + extends LockableImpl + implements TableModelBuilder { + + @Override + public TableModel makeModel(final Table table, + final PageState state) { + table.getRowSelectionModel().clearSelection(state); + + return new ValuesTableModel(state); + } + + } + + private class ValuesTableModel implements TableModel { + + private final List values; + private int index = -1; + + public ValuesTableModel(final PageState state) { + + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + + final Class confClass; + try { + confClass = Class + .forName(selectedConf.getSelectedKey(state)); + } catch (ClassNotFoundException ex) { + throw new UncheckedWrapperException(ex); + } + + final ConfigurationManager confManager = cdiUtil.findBean( + ConfigurationManager.class); + + final Object config = confManager.findConfiguration(confClass); + try { + @SuppressWarnings("unchecked") + final Set valuesSet = (Set) confClass.getField( + selectedSetting + .getSelectedKey(state)).get(config); + + values = new ArrayList<>(valuesSet); + + } catch (NoSuchFieldException | SecurityException | + IllegalAccessException | ClassCastException ex) { + LOGGER.warn("Failed to read setting {} from configuration {}", + selectedSetting.getSelectedKey(state), + selectedConf.getSelectedKey(state)); + LOGGER.warn(ex); + throw new UncheckedWrapperException(ex); + } + } + + @Override + public int getColumnCount() { + return 3; + } + + @Override + public boolean nextRow() { + index++; + return index < values.size(); + } + + @Override + public Object getElementAt(final int columnIndex) { + switch (columnIndex) { + case COL_VALUE: + return values.get(index); + case COL_EDIT: + return new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.enum.value.edit", + ADMIN_BUNDLE)); + case COL_DEL: + return new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.enum.value.del", + ADMIN_BUNDLE)); + default: + throw new IllegalArgumentException( + "Not a valid column index"); + } + } + + @Override + public Object getKeyAt(final int columnIndex) { + return values.get(index); + } + + } + + private class ValueForm extends Form { + + private final String VALUE = "value"; + + @SuppressWarnings("unchecked") + public ValueForm() { + + super("settingEnumValueForm"); + + final TextField valueField = new TextField(VALUE); + valueField.setLabel(new GlobalizedMessage( + "ui.admin.configuration.setting.enum.value.label", + ADMIN_BUNDLE)); + add(valueField); + + final SaveCancelSection saveCancelSection = new SaveCancelSection(); + add(saveCancelSection); + + addInitListener(e -> { + final PageState state = e.getPageState(); + + if (selectedValue.getSelectedKey(state) != null) { + + valueField.setValue(state, selectedValue.getSelectedKey( + state)); + } + }); + + addProcessListener(e -> { + final PageState state = e.getPageState(); + + if (saveCancelSection.getSaveButton().isSelected(state)) { + + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + + final Class confClass; + try { + confClass = Class + .forName(selectedConf.getSelectedKey(state)); + } catch (ClassNotFoundException ex) { + throw new UncheckedWrapperException(ex); + } + + final ConfigurationManager confManager = cdiUtil.findBean( + ConfigurationManager.class); + + final Object config = confManager.findConfiguration( + confClass); + + final Set enumSetting; + try { + final Object value = confClass.getField(selectedSetting + .getSelectedKey(state)).get(config); + + if (value == null) { + enumSetting = new HashSet<>(); + confClass.getField(selectedSetting.getSelectedKey( + state)).set(config, enumSetting); + } else { + enumSetting = (Set) value; + } + } catch (NoSuchFieldException | SecurityException | + IllegalAccessException | ClassCastException ex) { + LOGGER.warn( + "Failed to read setting {} from configuration {}", + selectedSetting.getSelectedKey(state), + selectedConf.getSelectedKey(state)); + LOGGER.warn(ex); + + throw new UncheckedWrapperException(ex); + } + + final FormData data = e.getFormData(); + final String valueData = data.getString(VALUE); + if (selectedValue.getSelectedKey(state) == null) { + enumSetting.add(valueData); + } else { + final String selected = selectedValue.getSelectedKey( + state); + enumSetting.remove(selected); + enumSetting.add(valueData); + } + confManager.saveConfiguration(config); + } + }); + } + + } + +} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorLocalizedString.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorLocalizedString.java index 306e37925..48d4d7ee2 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorLocalizedString.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorLocalizedString.java @@ -49,7 +49,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.configuration.ConfigurationManager; -import org.libreccm.configuration.SettingManager; import org.libreccm.l10n.LocalizedString; import java.util.ArrayList; @@ -58,7 +57,6 @@ import java.util.List; import java.util.Locale; import java.util.Set; import java.util.TooManyListenersException; -import java.util.logging.Level; import static com.arsdigita.ui.admin.AdminUiConstants.*; @@ -119,29 +117,29 @@ public class SettingEditorLocalizedString extends BoxPanel { setIdAttr("localizedStringSettingValues"); setEmptyView(new Label(new GlobalizedMessage( - "ui.admin.categories.setting.localized_string.no_values", + "ui.admin.configuration.setting.localized_string.no_values", ADMIN_BUNDLE))); final TableColumnModel columnModel = getColumnModel(); columnModel.add(new TableColumn( COL_LOCALE, new Label(new GlobalizedMessage( - "ui.admin.categories.setting.localized_string.col_lang", + "ui.admin.configuration.setting.localized_string.col_lang", ADMIN_BUNDLE)))); columnModel.add(new TableColumn( COL_VALUE, new Label(new GlobalizedMessage( - "ui.admin.categories.setting.localized_string.col_value", + "ui.admin.configuration.setting.localized_string.col_value", ADMIN_BUNDLE)))); columnModel.add(new TableColumn( COL_EDIT, new Label(new GlobalizedMessage( - "ui.admin.categories.setting.localized_string.col_del", + "ui.admin.configuration.setting.localized_string.col_del", ADMIN_BUNDLE)))); columnModel.add(new TableColumn( COL_DEL, new Label(new GlobalizedMessage( - "ui.admin.categories.setting.localized_string.col_del", + "ui.admin.configuration.setting.localized_string.col_del", ADMIN_BUNDLE)))); columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() { @@ -154,7 +152,7 @@ public class SettingEditorLocalizedString extends BoxPanel { final Object key, final int row, final int column) { - return new ControlLink((String) value); + return new ControlLink((Component) value); } }); @@ -175,7 +173,7 @@ public class SettingEditorLocalizedString extends BoxPanel { final ControlLink link = new ControlLink( (Component) value); link.setConfirmation(new GlobalizedMessage( - "ui.admin.categories.setting.localized_string.del_confirm", + "ui.admin.configuration.setting.localized_string.del_confirm", ADMIN_BUNDLE)); return link; } @@ -189,7 +187,62 @@ public class SettingEditorLocalizedString extends BoxPanel { public void cellSelected(final TableActionEvent event) { final PageState state = event.getPageState(); - selectedValue.setSelectedKey(state, event.getRowKey()); + switch (event.getColumn()) { + case COL_EDIT: + selectedValue.setSelectedKey(state, + event.getRowKey()); + break; + case COL_DEL: + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + + final Class confClass; + try { + confClass = Class + .forName(selectedConf.getSelectedKey(state)); + } catch (ClassNotFoundException ex) { + throw new UncheckedWrapperException(ex); + } + + final ConfigurationManager confManager = cdiUtil + .findBean( + ConfigurationManager.class); + + final Object config = confManager.findConfiguration( + confClass); + + final LocalizedString localizedStr; + try { + final Object value = confClass.getField( + selectedSetting + .getSelectedKey(state)).get(config); + + if (value == null) { + localizedStr = new LocalizedString(); + confClass.getField(selectedSetting + .getSelectedKey( + state)).set(config, localizedStr); + } else { + localizedStr = (LocalizedString) value; + } + } catch (NoSuchFieldException | SecurityException | IllegalAccessException | ClassCastException ex) { + LOGGER.warn( + "Failed to read setting {} from configuration {}", + selectedSetting.getSelectedKey(state), + selectedConf.getSelectedKey(state)); + LOGGER.warn(ex); + + throw new UncheckedWrapperException(ex); + } + + final Locale locale = new Locale((String) event + .getRowKey()); + + localizedStr.removeValue(locale); + + confManager.saveConfiguration(config); + + break; + } } @Override @@ -285,7 +338,7 @@ public class SettingEditorLocalizedString extends BoxPanel { ADMIN_BUNDLE)); case COL_DEL: return new Label(new GlobalizedMessage( - "ui.admin.categories.setting.localized_string.title.del", + "ui.admin.configuration.setting.localized_string.title.del", ADMIN_BUNDLE )); default: @@ -473,7 +526,8 @@ public class SettingEditorLocalizedString extends BoxPanel { } else { localizedStr = (LocalizedString) value; } - } catch (NoSuchFieldException | SecurityException | IllegalAccessException | ClassCastException ex) { + } catch (NoSuchFieldException | SecurityException | + IllegalAccessException | ClassCastException ex) { LOGGER.warn( "Failed to read setting {} from configuration {}", selectedSetting.getSelectedKey(state), @@ -488,6 +542,8 @@ public class SettingEditorLocalizedString extends BoxPanel { LOCALE_SELECT)); final String valueData = data.getString(VALUE); localizedStr.addValue(locale, valueData); + + confManager.saveConfiguration(config); } }); } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorStringList.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorStringList.java new file mode 100644 index 000000000..0661c6870 --- /dev/null +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorStringList.java @@ -0,0 +1,567 @@ +/* + * Copyright (C) 2016 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package com.arsdigita.ui.admin.configuration; + +import com.arsdigita.bebop.ActionLink; +import com.arsdigita.bebop.BoxPanel; +import com.arsdigita.bebop.Component; +import com.arsdigita.bebop.ControlLink; +import com.arsdigita.bebop.Form; +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.ParameterSingleSelectionModel; +import com.arsdigita.bebop.SaveCancelSection; +import com.arsdigita.bebop.Table; +import com.arsdigita.bebop.Text; +import com.arsdigita.bebop.event.TableActionEvent; +import com.arsdigita.bebop.event.TableActionListener; +import com.arsdigita.bebop.form.TextField; +import com.arsdigita.bebop.table.TableCellRenderer; +import com.arsdigita.bebop.table.TableColumn; +import com.arsdigita.bebop.table.TableColumnModel; +import com.arsdigita.bebop.table.TableModel; +import com.arsdigita.bebop.table.TableModelBuilder; +import com.arsdigita.globalization.GlobalizedMessage; +import com.arsdigita.util.LockableImpl; +import com.arsdigita.util.UncheckedWrapperException; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.libreccm.cdi.utils.CdiUtil; +import org.libreccm.configuration.ConfigurationManager; + +import java.util.ArrayList; +import java.util.List; + +import static com.arsdigita.ui.admin.AdminUiConstants.*; + +/** + * + * @author Jens Pelzetter + */ +public class SettingEditorStringList extends BoxPanel { + + private static final Logger LOGGER = LogManager.getLogger( + SettingEditorStringList.class); + + private static final int COL_VALUE = 0; + private static final int COL_UP = 1; + private static final int COL_DOWN = 2; + private static final int COL_EDIT = 3; + private static final int COL_DEL = 4; + + private final ConfigurationTab configurationTab; + private final ParameterSingleSelectionModel selectedConf; + private final ParameterSingleSelectionModel selectedSetting; + private final ParameterSingleSelectionModel selectedValue; + + public SettingEditorStringList( + final ConfigurationTab configurationTab, + final ParameterSingleSelectionModel selectedConf, + final ParameterSingleSelectionModel selectedSetting, + final ParameterSingleSelectionModel selectedValue) { + + super(BoxPanel.VERTICAL); + + this.configurationTab = configurationTab; + this.selectedConf = selectedConf; + this.selectedSetting = selectedSetting; + this.selectedValue = selectedValue; + + final ActionLink backLink = new ActionLink(new GlobalizedMessage( + "ui.admin.configuration.setting.localized_string.back", + ADMIN_BUNDLE)); + backLink.addActionListener(e -> { + configurationTab.hideSettingForms(e.getPageState()); + }); + add(backLink); + + add(new SettingFormHeader(selectedConf, selectedSetting)); + + add(new ValuesTable()); + + add(new ValueForm()); + + } + + private class ValuesTable extends Table { + + public ValuesTable() { + + super(); + + setIdAttr("stringListValues"); + + setEmptyView(new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.no_values", + ADMIN_BUNDLE))); + + final TableColumnModel columnModel = getColumnModel(); + columnModel.add(new TableColumn( + COL_VALUE, + new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.col_value", + ADMIN_BUNDLE)))); + columnModel.add(new TableColumn( + COL_UP, + new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.col_up", + ADMIN_BUNDLE)))); + columnModel.add(new TableColumn( + COL_DOWN, + new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.col_down", + ADMIN_BUNDLE)))); + columnModel.add(new TableColumn( + COL_EDIT, + new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.col_edit", + ADMIN_BUNDLE)))); + columnModel.add(new TableColumn( + COL_DEL, + new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.col_delete", + ADMIN_BUNDLE)))); + + columnModel.get(COL_UP).setCellRenderer(new TableCellRenderer() { + + @Override + public Component getComponent(final Table table, + final PageState state, + final Object value, + final boolean isSelected, + final Object key, + final int row, + final int column) { + if (row > 0) { + return new ControlLink((Component) value); + } else { + return null; + } + } + + }); + + columnModel.get(COL_DOWN).setCellRenderer(new TableCellRenderer() { + + @Override + public Component getComponent(final Table table, + final PageState state, + final Object value, + final boolean isSelected, + final Object key, + final int row, + final int column) { + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + + final Class confClass; + try { + confClass = Class + .forName(selectedConf.getSelectedKey(state)); + } catch (ClassNotFoundException ex) { + throw new UncheckedWrapperException(ex); + } + + final ConfigurationManager confManager = cdiUtil + .findBean( + ConfigurationManager.class); + + final Object config = confManager.findConfiguration( + confClass); + + final List values; + try { + values = (List) confClass.getField( + selectedSetting.getSelectedKey(state)).get(config); + } catch (NoSuchFieldException | SecurityException | IllegalAccessException | ClassCastException ex) { + LOGGER.warn( + "Failed to read setting {} from configuration {}", + selectedSetting.getSelectedKey(state), + selectedConf.getSelectedKey(state)); + LOGGER.warn(ex); + + throw new UncheckedWrapperException(ex); + } + + if (row < values.size()) { + return new ControlLink((Component) value); + } else { + return null; + } + } + + }); + + columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() { + + @Override + public Component getComponent(final Table table, + final PageState state, + final Object value, + final boolean isSelected, + final Object key, + final int row, + final int column) { + return new ControlLink((Component) value); + } + + }); + + columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() { + + @Override + public Component getComponent(final Table table, + final PageState state, + final Object value, + final boolean isSelected, + final Object key, + final int row, + final int column) { + if (value == null) { + return new Text(""); + } else { + final ControlLink link = new ControlLink( + (Component) value); + link.setConfirmation(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.del_confirm", + ADMIN_BUNDLE)); + return link; + } + } + + }); + + addTableActionListener(new TableActionListener() { + + @Override + public void cellSelected(final TableActionEvent event) { + final PageState state = event.getPageState(); + + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + + final Class confClass; + try { + confClass = Class + .forName(selectedConf.getSelectedKey(state)); + } catch (ClassNotFoundException ex) { + throw new UncheckedWrapperException(ex); + } + + final ConfigurationManager confManager = cdiUtil + .findBean( + ConfigurationManager.class); + + final Object config = confManager.findConfiguration( + confClass); + + final List values; + try { + values = (List) confClass.getField( + selectedSetting.getSelectedKey(state)).get(config); + } catch (NoSuchFieldException | SecurityException | + IllegalAccessException | ClassCastException ex) { + LOGGER.warn( + "Failed to read setting {} from configuration {}", + selectedSetting.getSelectedKey(state), + selectedConf.getSelectedKey(state)); + LOGGER.warn(ex); + + throw new UncheckedWrapperException(ex); + } + + switch (event.getColumn()) { + case COL_UP: { + + final int currentIndex = (int) event.getRowKey(); + final int previousIndex = currentIndex - 1; + + final String currentValue = values.get(currentIndex); + final String previousValue = values.get( + previousIndex); + + values.set(previousIndex, currentValue); + values.set(currentIndex, previousValue); + + confManager.saveConfiguration(config); + + break; + } + case COL_DOWN: { + + final int currentIndex = (int) event.getRowKey(); + final int nextIndex = currentIndex + 1; + + final String currentValue = values.get(currentIndex); + final String nextValue = values.get(nextIndex); + + values.set(nextIndex, currentValue); + values.set(currentIndex, nextValue); + + confManager.saveConfiguration(config); + + break; + } + case COL_EDIT: { + selectedValue.setSelectedKey(state, + event.getRowKey()); + break; + } + case COL_DEL: { + values.remove((int) event.getRowKey()); + + confManager.saveConfiguration(config); + + break; + } + } + + } + + @Override + public void headSelected(final TableActionEvent event) { + //Notthing + } + + }); + + setModelBuilder(new ValuesTableModelBuilder()); + } + + } + + private class ValuesTableModelBuilder + extends LockableImpl + implements TableModelBuilder { + + @Override + public TableModel makeModel(final Table table, + final PageState state) { + table.getRowSelectionModel().clearSelection(state); + + return new ValuesTableModel(state); + } + + } + + private class ValuesTableModel implements TableModel { + + private final List values; + private int index = -1; + + public ValuesTableModel(final PageState state) { + + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + + final Class confClass; + try { + confClass = Class + .forName(selectedConf.getSelectedKey(state)); + } catch (ClassNotFoundException ex) { + throw new UncheckedWrapperException(ex); + } + + final ConfigurationManager confManager = cdiUtil.findBean( + ConfigurationManager.class); + + final Object config = confManager.findConfiguration(confClass); + + try { + values = (List) confClass.getField(selectedSetting + .getSelectedKey(state)).get(config); + } catch (NoSuchFieldException | SecurityException | + IllegalAccessException | ClassCastException ex) { + LOGGER.warn("Failed to read setting {} from configuration {}", + selectedSetting.getSelectedKey(state), + selectedConf.getSelectedKey(state)); + LOGGER.warn(ex); + throw new UncheckedWrapperException(ex); + } + + } + + @Override + public int getColumnCount() { + return 5; + } + + @Override + public boolean nextRow() { + index++; + return index < values.size(); + } + + @Override + public Object getElementAt(final int columnIndex) { + switch (columnIndex) { + case COL_VALUE: + return values.get(index); + case COL_UP: + return new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.value.up", + ADMIN_BUNDLE)); + case COL_DOWN: + return new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.value.down", + ADMIN_BUNDLE)); + case COL_EDIT: + return new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.value.edit", + ADMIN_BUNDLE)); + case COL_DEL: + return new Label(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.value.del", + ADMIN_BUNDLE)); + default: + throw new IllegalArgumentException( + "Not a valid column index"); + } + } + + @Override + public Object getKeyAt(final int columnIndex) { + return index; + } + + } + + private class ValueForm extends Form { + + private final String VALUE = "value"; + + @SuppressWarnings("unchecked") + public ValueForm() { + super("settingStringListValueForm"); + + final TextField valueField = new TextField(VALUE); + valueField.setLabel(new GlobalizedMessage( + "ui.admin.configuration.setting.stringlist.value.label", + ADMIN_BUNDLE)); + add(valueField); + + final SaveCancelSection saveCancelSection = new SaveCancelSection(); + add(saveCancelSection); + + addInitListener(e -> { + final PageState state = e.getPageState(); + + if (selectedValue.getSelectedKey(state) != null) { + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + + final Class confClass; + try { + confClass = Class + .forName(selectedConf.getSelectedKey(state)); + } catch (ClassNotFoundException ex) { + throw new UncheckedWrapperException(ex); + } + + final ConfigurationManager confManager = cdiUtil.findBean( + ConfigurationManager.class); + + final Object config = confManager.findConfiguration( + confClass); + + try { + @SuppressWarnings("unchecked") + final List stringList = (List) confClass + .getField(selectedSetting.getSelectedKey(state)) + .get(config); + + final String str = stringList.get(Integer.parseInt( + selectedValue.getSelectedKey(state))); + + valueField.setValue(state, str); + + } catch (NoSuchFieldException | SecurityException | + IllegalAccessException | ClassCastException ex) { + LOGGER.warn( + "Failed to read setting {} from configuration {}", + selectedSetting.getSelectedKey(state), + selectedConf.getSelectedKey(state)); + LOGGER.warn(ex); + + throw new UncheckedWrapperException(ex); + } + } + }); + + addProcessListener(e -> { + final PageState state = e.getPageState(); + + if (saveCancelSection.getSaveButton().isSelected(state)) { + + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + + final Class confClass; + try { + confClass = Class + .forName(selectedConf.getSelectedKey(state)); + } catch (ClassNotFoundException ex) { + throw new UncheckedWrapperException(ex); + } + + final ConfigurationManager confManager = cdiUtil.findBean( + ConfigurationManager.class); + + final Object config = confManager.findConfiguration( + confClass); + + final List stringList; + try { + final Object value = confClass.getField(selectedSetting + .getSelectedKey(state)).get(config); + + if (value == null) { + stringList = new ArrayList<>(); + confClass.getField(selectedSetting.getSelectedKey( + state)).set(config, stringList); + } else { + stringList = (List) value; + } + } catch (NoSuchFieldException | SecurityException | + IllegalAccessException | ClassCastException ex) { + LOGGER.warn( + "Failed to read setting {} from configuration {}", + selectedSetting.getSelectedKey(state), + selectedConf.getSelectedKey(state)); + LOGGER.warn(ex); + + throw new UncheckedWrapperException(ex); + } + + final FormData data = e.getFormData(); + final String valueData = data.getString(VALUE); + + if (selectedValue.getSelectedKey(state) == null) { + stringList.add(valueData); + } else { + final int selected = Integer.parseInt(selectedValue + .getSelectedKey(state)); + stringList.set(selected, valueData); + } + + confManager.saveConfiguration(config); + } + }); + } + + } + +} diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties index 053c5b9dc..730e58a64 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties @@ -425,9 +425,27 @@ ui.admin.configuration.setting.edit.heading=Edit setting {0}/{1} ui.admin.configuration.setting.edit.current_value=Current value ui.admin.configuration.setting.edit.new_value=New value ui.admin.configuration.setting.error.blank=New value can't be blank. -ui.admin.categories.setting.localized_string.no_values=No values for this setting. -ui.admin.categories.setting.localized_string.del_confirm=Are you sure to delete this value? +ui.admin.configuration.setting.localized_string.no_values=No values for this setting. +ui.admin.configuration.setting.localized_string.del_confirm=Are you sure to delete this value? ui.admin.configuration.setting.localized_string.value.edit=Edit -ui.admin.categories.setting.localized_string.title.del=Delete +ui.admin.configuration.setting.localized_string.title.del=Delete ui.admin.configuration.setting.localized_string.back=Back ui.admin.configuration.setting.localized_string.locale.label=Locale +ui.admin.configuration.setting.stringlist.no_values=No values for this setting. +ui.admin.configuration.setting.stringlist.col_value=Value +ui.admin.configuration.setting.stringlist.col_up=Up +ui.admin.configuration.setting.stringlist.col_down=Down +ui.admin.configuration.setting.stringlist.col_edit=Edit +ui.admin.configuration.setting.stringlist.col_delete=Delete +ui.admin.configuration.setting.stringlist.del_confirm=Are you sure to delete this value? +ui.admin.configuration.setting.stringlist.value.up=Up +ui.admin.configuration.setting.stringlist.value.down=Down +ui.admin.configuration.setting.stringlist.value.edit=Edit +ui.admin.configuration.setting.stringlist.value.del=Delete +ui.admin.configuration.setting.enum.no_values=No values for this enum setting. +ui.admin.configuration.setting.enum.col_value=Value +ui.admin.configuration.setting.enum.col_edit=Edit +ui.admin.configuration.setting.enum.col_del=Delete +ui.admin.configuration.setting.enum.value.edit=Edit +ui.admin.configuration.setting.enum.value.del=Delete +ui.admin.configuration.setting.enum.value.label=Value diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties index 6095c33ec..65d53d647 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties @@ -428,9 +428,27 @@ ui.admin.configuration.setting.edit.heading=Parameter {0}/{1} bearbeiten ui.admin.configuration.setting.edit.current_value=Aktueller Wert ui.admin.configuration.setting.edit.new_value=Neuer Wert ui.admin.configuration.setting.error.blank=Der neue Wert darf nicht leer sein. -ui.admin.categories.setting.localized_string.no_values=Keine Werte f\u00fcr diesen Parameter. -ui.admin.categories.setting.localized_string.del_confirm=Sind Sie sicher, dass Sie diesen Wert entfernen wollen? +ui.admin.configuration.setting.localized_string.no_values=Keine Werte f\u00fcr diesen Parameter. +ui.admin.configuration.setting.localized_string.del_confirm=Sind Sie sicher, dass Sie diesen Wert entfernen wollen? ui.admin.configuration.setting.localized_string.value.edit=Bearbeiten -ui.admin.categories.setting.localized_string.title.del=L\u00f6schen +ui.admin.configuration.setting.localized_string.title.del=L\u00f6schen ui.admin.configuration.setting.localized_string.back=Zur\u00fcck ui.admin.configuration.setting.localized_string.locale.label=Sprache +ui.admin.configuration.setting.stringlist.no_values=Keine Werte f\u00fcr diesen Parameter. +ui.admin.configuration.setting.stringlist.col_value=Wert +ui.admin.configuration.setting.stringlist.col_up=Hoch +ui.admin.configuration.setting.stringlist.col_down=Runter +ui.admin.configuration.setting.stringlist.col_edit=Bearbeiten +ui.admin.configuration.setting.stringlist.col_delete=L\u00f6schen +ui.admin.configuration.setting.stringlist.del_confirm=Sind Sie sicher, dass Sie diesen Wert entfernen wollen? +ui.admin.configuration.setting.stringlist.value.up=Hoch +ui.admin.configuration.setting.stringlist.value.down=Runter +ui.admin.configuration.setting.stringlist.value.edit=Bearbeiten +ui.admin.configuration.setting.stringlist.value.del=L\u00f6schen +ui.admin.configuration.setting.enum.no_values=Keine Werte f\u00fcr diesen Parameter. +ui.admin.configuration.setting.enum.col_value=Wert +ui.admin.configuration.setting.enum.col_edit=Bearbeiten +ui.admin.configuration.setting.enum.col_del=L\u00f6schen +ui.admin.configuration.setting.enum.value.edit=Bearbeiten +ui.admin.configuration.setting.enum.value.del=L\u00f6schen +ui.admin.configuration.setting.enum.value.label=Wert diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties index a575d5df6..b2f54da7e 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties @@ -401,9 +401,27 @@ ui.admin.configuration.setting.edit.heading=Edit setting {0}/{1} ui.admin.configuration.setting.edit.current_value=Current value ui.admin.configuration.setting.edit.new_value=New value ui.admin.configuration.setting.error.blank=New value can't be blank. -ui.admin.categories.setting.localized_string.no_values=No values for this setting. -ui.admin.categories.setting.localized_string.del_confirm=Are you sure to delete this value? +ui.admin.configuration.setting.localized_string.no_values=No values for this setting. +ui.admin.configuration.setting.localized_string.del_confirm=Are you sure to delete this value? ui.admin.configuration.setting.localized_string.value.edit=Edit -ui.admin.categories.setting.localized_string.title.del=Delete +ui.admin.configuration.setting.localized_string.title.del=Delete ui.admin.configuration.setting.localized_string.back=Back ui.admin.configuration.setting.localized_string.locale.label=Locale +ui.admin.configuration.setting.stringlist.no_values=No values for this setting. +ui.admin.configuration.setting.stringlist.col_value=Value +ui.admin.configuration.setting.stringlist.col_up=Up +ui.admin.configuration.setting.stringlist.col_down=Down +ui.admin.configuration.setting.stringlist.col_edit=Edit +ui.admin.configuration.setting.stringlist.col_delete=Delete +ui.admin.configuration.setting.stringlist.del_confirm=Are you sure to delete this value? +ui.admin.configuration.setting.stringlist.value.up=Up +ui.admin.configuration.setting.stringlist.value.down=Down +ui.admin.configuration.setting.stringlist.value.edit=Edit +ui.admin.configuration.setting.stringlist.value.del=Delete +ui.admin.configuration.setting.enum.no_values=No values for this enum setting. +ui.admin.configuration.setting.enum.col_value=Value +ui.admin.configuration.setting.enum.col_edit=Edit +ui.admin.configuration.setting.enum.col_del=Delete +ui.admin.configuration.setting.enum.value.edit=Edit +ui.admin.configuration.setting.enum.value.del=Delete +ui.admin.configuration.setting.enum.value.label=Value diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties index 479eb3a2d..48469efa7 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties @@ -392,9 +392,27 @@ ui.admin.configuration.setting.edit.heading=Edit setting {0}/{1} ui.admin.configuration.setting.edit.current_value=Current value ui.admin.configuration.setting.edit.new_value=New value ui.admin.configuration.setting.error.blank=New value can't be blank. -ui.admin.categories.setting.localized_string.no_values=No values for this setting. -ui.admin.categories.setting.localized_string.del_confirm=Are you sure to delete this value? +ui.admin.configuration.setting.localized_string.no_values=No values for this setting. +ui.admin.configuration.setting.localized_string.del_confirm=Are you sure to delete this value? ui.admin.configuration.setting.localized_string.value.edit=Edit -ui.admin.categories.setting.localized_string.title.del=Delete +ui.admin.configuration.setting.localized_string.title.del=Delete ui.admin.configuration.setting.localized_string.back=Back ui.admin.configuration.setting.localized_string.locale.label=Locale +ui.admin.configuration.setting.stringlist.no_values=No values for this setting. +ui.admin.configuration.setting.stringlist.col_value=Value +ui.admin.configuration.setting.stringlist.col_up=Up +ui.admin.configuration.setting.stringlist.col_down=Down +ui.admin.configuration.setting.stringlist.col_edit=Edit +ui.admin.configuration.setting.stringlist.col_delete=Delete +ui.admin.configuration.setting.stringlist.del_confirm=Are you sure to delete this value? +ui.admin.configuration.setting.stringlist.value.up=Up +ui.admin.configuration.setting.stringlist.value.down=Down +ui.admin.configuration.setting.stringlist.value.edit=Edit +ui.admin.configuration.setting.stringlist.value.del=Delete +ui.admin.configuration.setting.enum.no_values=No values for this enum setting. +ui.admin.configuration.setting.enum.col_value=Value +ui.admin.configuration.setting.enum.col_edit=Edit +ui.admin.configuration.setting.enum.col_del=Delete +ui.admin.configuration.setting.enum.value.edit=Edit +ui.admin.configuration.setting.enum.value.del=Delete +ui.admin.configuration.setting.enum.value.label=Value