SettingsController endpoint for updating setting values
parent
5232b55eae
commit
3840624403
|
|
@ -18,25 +18,34 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.ui.admin.configuration;
|
package org.libreccm.ui.admin.configuration;
|
||||||
|
|
||||||
|
import org.libreccm.configuration.AbstractSetting;
|
||||||
import org.libreccm.configuration.ConfigurationInfo;
|
import org.libreccm.configuration.ConfigurationInfo;
|
||||||
import org.libreccm.configuration.ConfigurationManager;
|
import org.libreccm.configuration.ConfigurationManager;
|
||||||
import org.libreccm.configuration.SettingInfo;
|
import org.libreccm.configuration.SettingInfo;
|
||||||
|
import org.libreccm.configuration.SettingManager;
|
||||||
import org.libreccm.core.CoreConstants;
|
import org.libreccm.core.CoreConstants;
|
||||||
import org.libreccm.l10n.GlobalizationHelper;
|
import org.libreccm.l10n.GlobalizationHelper;
|
||||||
|
import org.libreccm.l10n.LocalizedString;
|
||||||
import org.libreccm.l10n.LocalizedTextsUtil;
|
import org.libreccm.l10n.LocalizedTextsUtil;
|
||||||
import org.libreccm.security.AuthorizationRequired;
|
import org.libreccm.security.AuthorizationRequired;
|
||||||
import org.libreccm.security.RequiresPrivilege;
|
import org.libreccm.security.RequiresPrivilege;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.mvc.Controller;
|
import javax.mvc.Controller;
|
||||||
import javax.mvc.Models;
|
import javax.mvc.Models;
|
||||||
|
import javax.ws.rs.FormParam;
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.PathParam;
|
import javax.ws.rs.PathParam;
|
||||||
|
|
||||||
|
|
@ -58,6 +67,9 @@ public class SettingsController {
|
||||||
@Inject
|
@Inject
|
||||||
private Models models;
|
private Models models;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private SettingManager settingManager;
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("/")
|
@Path("/")
|
||||||
@AuthorizationRequired
|
@AuthorizationRequired
|
||||||
|
|
@ -68,7 +80,7 @@ public class SettingsController {
|
||||||
final Class<?> confClass;
|
final Class<?> confClass;
|
||||||
try {
|
try {
|
||||||
confClass = Class.forName(configurationClass);
|
confClass = Class.forName(configurationClass);
|
||||||
} catch(ClassNotFoundException ex) {
|
} catch (ClassNotFoundException ex) {
|
||||||
models.put("configurationClass", configurationClass);
|
models.put("configurationClass", configurationClass);
|
||||||
return "org/libreccm/ui/admin/configuration/configuration-class-not-found.xhtml";
|
return "org/libreccm/ui/admin/configuration/configuration-class-not-found.xhtml";
|
||||||
}
|
}
|
||||||
|
|
@ -77,7 +89,8 @@ public class SettingsController {
|
||||||
confClass
|
confClass
|
||||||
);
|
);
|
||||||
|
|
||||||
final LocalizedTextsUtil textUtil = globalizationHelper.getLocalizedTextsUtil(confInfo.getDescBundle());
|
final LocalizedTextsUtil textUtil = globalizationHelper
|
||||||
|
.getLocalizedTextsUtil(confInfo.getDescBundle());
|
||||||
models.put(
|
models.put(
|
||||||
"confLabel",
|
"confLabel",
|
||||||
textUtil.getText(confInfo.getTitleKey())
|
textUtil.getText(confInfo.getTitleKey())
|
||||||
|
|
@ -119,4 +132,318 @@ public class SettingsController {
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/{settingName}")
|
||||||
|
@AuthorizationRequired
|
||||||
|
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||||
|
public String updateSettingValue(
|
||||||
|
@PathParam("configurationClass") final String configurationClassName,
|
||||||
|
@PathParam("settingName") final String settingName,
|
||||||
|
@FormParam("settingValue") final String valueParam
|
||||||
|
) {
|
||||||
|
final Class<?> confClass;
|
||||||
|
try {
|
||||||
|
confClass = Class.forName(configurationClassName);
|
||||||
|
} catch (ClassNotFoundException ex) {
|
||||||
|
models.put("configurationClass", configurationClassName);
|
||||||
|
return "org/libreccm/ui/admin/configuration/configuration-class-not-found.xhtml";
|
||||||
|
}
|
||||||
|
final SettingInfo settingInfo = settingManager.getSettingInfo(
|
||||||
|
confClass, settingName
|
||||||
|
);
|
||||||
|
|
||||||
|
final String valueType = settingInfo.getValueType();
|
||||||
|
if (valueType.equals(BigDecimal.class.getName())) {
|
||||||
|
return updateBigDecimalSetting(
|
||||||
|
configurationClassName, settingName, valueType, valueParam
|
||||||
|
);
|
||||||
|
} else if (valueType.equals(Boolean.class.getName())
|
||||||
|
|| valueType.equals("boolean")) {
|
||||||
|
return updateBooleanSetting(
|
||||||
|
configurationClassName, settingName, valueType, valueParam
|
||||||
|
);
|
||||||
|
} else if (valueType.equals(Double.class.getName())
|
||||||
|
|| valueType.equals("double")) {
|
||||||
|
return updateDoubleSetting(
|
||||||
|
configurationClassName, settingName, valueType, valueParam
|
||||||
|
);
|
||||||
|
} else if (valueType.equals(LocalizedString.class.getName())) {
|
||||||
|
return updateLocalizedStringSetting(
|
||||||
|
configurationClassName, settingName, valueType, valueParam
|
||||||
|
);
|
||||||
|
} else if (valueType.equals(Long.class.getName())
|
||||||
|
|| valueType.equals("long")) {
|
||||||
|
return updateLongSetting(
|
||||||
|
configurationClassName, settingName, valueType, valueParam
|
||||||
|
);
|
||||||
|
} else if (valueType.equals(List.class.getName())) {
|
||||||
|
return updateStringListSetting(
|
||||||
|
configurationClassName, settingName, valueType, valueParam
|
||||||
|
);
|
||||||
|
} else if (valueType.equals(Set.class.getName())) {
|
||||||
|
return updateStringListSetting(
|
||||||
|
configurationClassName, settingName, valueType, valueParam
|
||||||
|
);
|
||||||
|
} else if (valueType.equals(String.class.getName())) {
|
||||||
|
return updateStringSetting(
|
||||||
|
configurationClassName, settingName, valueType, valueParam
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
models.put("configurationClass", configurationClassName);
|
||||||
|
models.put("settingName", settingName);
|
||||||
|
models.put("valueType", valueType);
|
||||||
|
return "org/libreccm/ui/admin/configuration/unsupported-setting-type.xhtml";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String updateBigDecimalSetting(
|
||||||
|
final String configurationClassName,
|
||||||
|
final String settingName,
|
||||||
|
final String valueType,
|
||||||
|
final String valueParam
|
||||||
|
) {
|
||||||
|
final BigDecimal value;
|
||||||
|
try {
|
||||||
|
value = new BigDecimal(valueParam);
|
||||||
|
} catch (NumberFormatException ex) {
|
||||||
|
return buildInvalidTypeErrorTarget(
|
||||||
|
configurationClassName,
|
||||||
|
settingName,
|
||||||
|
valueType,
|
||||||
|
valueParam
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
final AbstractSetting<BigDecimal> setting = settingManager
|
||||||
|
.findSetting(
|
||||||
|
configurationClassName, settingName, BigDecimal.class
|
||||||
|
);
|
||||||
|
|
||||||
|
if (setting == null) {
|
||||||
|
return buildSettingNotFoundErrorTarget(
|
||||||
|
configurationClassName,
|
||||||
|
settingName,
|
||||||
|
valueType
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
setting.setValue(value);
|
||||||
|
settingManager.saveSetting(setting);
|
||||||
|
return buildRedirectAfterUpdateSettingTarget(
|
||||||
|
configurationClassName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String updateBooleanSetting(
|
||||||
|
final String configurationClassName,
|
||||||
|
final String settingName,
|
||||||
|
final String valueType,
|
||||||
|
final String valueParam
|
||||||
|
) {
|
||||||
|
final Boolean value = Boolean.valueOf(valueParam);
|
||||||
|
|
||||||
|
final AbstractSetting<Boolean> setting = settingManager.findSetting(
|
||||||
|
configurationClassName, settingName, Boolean.class
|
||||||
|
);
|
||||||
|
|
||||||
|
if (setting == null) {
|
||||||
|
return buildSettingNotFoundErrorTarget(
|
||||||
|
configurationClassName, settingName, valueType
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
setting.setValue(value);
|
||||||
|
settingManager.saveSetting(setting);
|
||||||
|
return buildRedirectAfterUpdateSettingTarget(
|
||||||
|
configurationClassName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String updateDoubleSetting(
|
||||||
|
final String configurationClassName,
|
||||||
|
final String settingName,
|
||||||
|
final String valueType,
|
||||||
|
final String valueParam
|
||||||
|
) {
|
||||||
|
final Double value;
|
||||||
|
try {
|
||||||
|
value = Double.valueOf(valueParam);
|
||||||
|
} catch (NumberFormatException ex) {
|
||||||
|
return buildInvalidTypeErrorTarget(
|
||||||
|
configurationClassName,
|
||||||
|
settingName,
|
||||||
|
valueType,
|
||||||
|
valueParam
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
final AbstractSetting<Double> setting = settingManager.findSetting(
|
||||||
|
configurationClassName, settingName, Double.class
|
||||||
|
);
|
||||||
|
|
||||||
|
if (setting == null) {
|
||||||
|
return buildSettingNotFoundErrorTarget(
|
||||||
|
configurationClassName, settingName, valueType
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
setting.setValue(value);
|
||||||
|
settingManager.saveSetting(setting);
|
||||||
|
return buildRedirectAfterUpdateSettingTarget(
|
||||||
|
configurationClassName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String updateLocalizedStringSetting(
|
||||||
|
final String configurationClassName,
|
||||||
|
final String settingName,
|
||||||
|
final String valueType,
|
||||||
|
final String valueParam
|
||||||
|
) {
|
||||||
|
final LocalizedString value = new LocalizedString();
|
||||||
|
final String[] lines = valueParam.split("\n");
|
||||||
|
for (final String line : lines) {
|
||||||
|
final String[] tokens = line.split(":");
|
||||||
|
if (tokens.length != 2) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
final Locale locale = new Locale(tokens[0]);
|
||||||
|
final String localeValue = tokens[1];
|
||||||
|
value.addValue(locale, localeValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
final AbstractSetting<LocalizedString> setting = settingManager
|
||||||
|
.findSetting(
|
||||||
|
configurationClassName, settingName, LocalizedString.class
|
||||||
|
);
|
||||||
|
|
||||||
|
if (setting == null) {
|
||||||
|
return buildSettingNotFoundErrorTarget(
|
||||||
|
configurationClassName, settingName, valueType
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
setting.setValue(value);
|
||||||
|
settingManager.saveSetting(setting);
|
||||||
|
return buildRedirectAfterUpdateSettingTarget(
|
||||||
|
configurationClassName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String updateLongSetting(
|
||||||
|
final String configurationClassName,
|
||||||
|
final String settingName,
|
||||||
|
final String valueType,
|
||||||
|
final String valueParam
|
||||||
|
) {
|
||||||
|
final Long value;
|
||||||
|
try {
|
||||||
|
value = Long.valueOf(valueParam, 10);
|
||||||
|
} catch (NumberFormatException ex) {
|
||||||
|
return buildInvalidTypeErrorTarget(
|
||||||
|
configurationClassName,
|
||||||
|
settingName,
|
||||||
|
valueType,
|
||||||
|
valueParam
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
final AbstractSetting<Long> setting = settingManager.findSetting(
|
||||||
|
configurationClassName, settingName, Long.class
|
||||||
|
);
|
||||||
|
|
||||||
|
if (setting == null) {
|
||||||
|
return buildSettingNotFoundErrorTarget(
|
||||||
|
configurationClassName, settingName, valueType
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
setting.setValue(value);
|
||||||
|
settingManager.saveSetting(setting);
|
||||||
|
return buildRedirectAfterUpdateSettingTarget(
|
||||||
|
configurationClassName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String updateStringListSetting(
|
||||||
|
final String configurationClassName,
|
||||||
|
final String settingName,
|
||||||
|
final String valueType,
|
||||||
|
final String valueParam
|
||||||
|
) {
|
||||||
|
final String[] tokens = valueParam.split(",");
|
||||||
|
final List<String> value = Arrays.asList(tokens);
|
||||||
|
|
||||||
|
final AbstractSetting<List> setting = settingManager.findSetting(
|
||||||
|
configurationClassName, settingName, List.class
|
||||||
|
);
|
||||||
|
|
||||||
|
if (setting == null) {
|
||||||
|
return buildSettingNotFoundErrorTarget(
|
||||||
|
configurationClassName, settingName, valueType
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
setting.setValue(value);
|
||||||
|
settingManager.saveSetting(setting);
|
||||||
|
return buildRedirectAfterUpdateSettingTarget(
|
||||||
|
configurationClassName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String updateStringSetting(
|
||||||
|
final String configurationClassName,
|
||||||
|
final String settingName,
|
||||||
|
final String valueType,
|
||||||
|
final String valueParam
|
||||||
|
) {
|
||||||
|
final AbstractSetting<String> setting = settingManager.findSetting(
|
||||||
|
configurationClassName, settingName, String.class
|
||||||
|
);
|
||||||
|
|
||||||
|
if (setting == null) {
|
||||||
|
return buildSettingNotFoundErrorTarget(
|
||||||
|
configurationClassName, settingName, valueType
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
setting.setValue(valueParam);
|
||||||
|
settingManager.saveSetting(setting);
|
||||||
|
return buildRedirectAfterUpdateSettingTarget(
|
||||||
|
configurationClassName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildInvalidTypeErrorTarget(
|
||||||
|
final String configurationClassName,
|
||||||
|
final String settingName,
|
||||||
|
final String valueType,
|
||||||
|
final String valueParam
|
||||||
|
) {
|
||||||
|
models.put("configurationClass", configurationClassName);
|
||||||
|
models.put("settingName", settingName);
|
||||||
|
models.put("valueType", valueType);
|
||||||
|
models.put("valueParam", valueParam);
|
||||||
|
return "org/libreccm/ui/admin/configuration/invalid-setting-value.xhtml";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildSettingNotFoundErrorTarget(
|
||||||
|
final String configurationClassName,
|
||||||
|
final String settingName,
|
||||||
|
final String valueType
|
||||||
|
) {
|
||||||
|
models.put("configurationClass", configurationClassName);
|
||||||
|
models.put("settingName", settingName);
|
||||||
|
models.put("valueType", valueType);
|
||||||
|
return "org/libreccm/ui/admin/configuration/setting-not-found.xhtml";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildRedirectAfterUpdateSettingTarget(
|
||||||
|
final String configurationClassName
|
||||||
|
) {
|
||||||
|
return String.format(
|
||||||
|
"redirect:configuration/%s", configurationClassName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||||
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||||
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
|
||||||
|
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||||
|
<ui:param name="activePage" value="configuration" />
|
||||||
|
<ui:param name="title"
|
||||||
|
value="#{AdminMessages('configuration.class.not_found.title')}" />
|
||||||
|
|
||||||
|
<ui:define name="breadcrumb">
|
||||||
|
<ui:define name="breadcrumb">
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
#{AdminMessages['configuration.label']}
|
||||||
|
</li>
|
||||||
|
</ui:define>
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="panel">
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
#{AdminMessages.getMessage('configuration.class.not_found.message', [configurationClass])}
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
</ui:composition>
|
||||||
|
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||||
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||||
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
|
||||||
|
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||||
|
<ui:param name="activePage" value="configuration" />
|
||||||
|
<ui:param name="title"
|
||||||
|
value="#{AdminMessages('configuration.setting.invalid_type.title')}" />
|
||||||
|
|
||||||
|
<ui:define name="breadcrumb">
|
||||||
|
<ui:define name="breadcrumb">
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
#{AdminMessages['configuration.label']}
|
||||||
|
</li>
|
||||||
|
</ui:define>
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="panel">
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
#{AdminMessages.getMessage('configuration.setting.invalid_type.message', [configurationClass, settingName, valueType, valueParam])}
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
</ui:composition>
|
||||||
|
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||||
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||||
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
|
||||||
|
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||||
|
<ui:param name="activePage" value="configuration" />
|
||||||
|
<ui:param name="title"
|
||||||
|
value="#{AdminMessages('configuration.setting.not_found.title')}" />
|
||||||
|
|
||||||
|
<ui:define name="breadcrumb">
|
||||||
|
<ui:define name="breadcrumb">
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
#{AdminMessages['configuration.label']}
|
||||||
|
</li>
|
||||||
|
</ui:define>
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="panel">
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
#{AdminMessages.getMessage('configuration.setting.not_found.message', [configurationClass, settingName, valueType])}
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
</ui:composition>
|
||||||
|
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||||
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||||
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
|
||||||
|
<ui:composition template="/WEB-INF/views/org/libreccm/ui/admin/ccm-admin.xhtml">
|
||||||
|
<ui:param name="activePage" value="configuration" />
|
||||||
|
<ui:param name="title"
|
||||||
|
value="#{AdminMessages('configuration.setting.type_unsupported.title')}" />
|
||||||
|
|
||||||
|
<ui:define name="breadcrumb">
|
||||||
|
<ui:define name="breadcrumb">
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
#{AdminMessages['configuration.label']}
|
||||||
|
</li>
|
||||||
|
</ui:define>
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="panel">
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
#{AdminMessages.getMessage('configuration.setting.type_unsupported.message', [configurationClass, settingName, valueType])}
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
</ui:composition>
|
||||||
|
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -225,3 +225,11 @@ configuration.settings.setting.dialog.title=Edit setting {0}
|
||||||
configuration.settings.setting.dialog.close=Cancel
|
configuration.settings.setting.dialog.close=Cancel
|
||||||
configuration.settings.setting.dialog.save=Save
|
configuration.settings.setting.dialog.save=Save
|
||||||
configuration.settings.setting.dialog.unsupported_type=Sorry, settings of type "{0}" are not supported yet.
|
configuration.settings.setting.dialog.unsupported_type=Sorry, settings of type "{0}" are not supported yet.
|
||||||
|
configuration.class.not_found.title=Configuration class not found
|
||||||
|
configuration.class.not_found.message=Configuration class {0} not found
|
||||||
|
configuration.setting.type_unsupported.title=Unsupported type of setting
|
||||||
|
configuration.setting.type_unsupported.message=Type {2} of setting {1} from configuration class {0} is not supported
|
||||||
|
configuration.setting.invalid_type.title=Invalid type of value
|
||||||
|
configuration.setting.invalid_type.message=Setting {1} of configuration class {0} is of type {2} but the value {3} can be converted into this type
|
||||||
|
configuration.setting.not_found.title=Setting not found
|
||||||
|
configuration.setting.not_found.message=Setting {1} of type {2} not found in configuration class {0}
|
||||||
|
|
|
||||||
|
|
@ -225,3 +225,11 @@ configuration.settings.setting.dialog.title=Einstellung {0} bearbeiten
|
||||||
configuration.settings.setting.dialog.close=Abbrechen
|
configuration.settings.setting.dialog.close=Abbrechen
|
||||||
configuration.settings.setting.dialog.save=Speichern
|
configuration.settings.setting.dialog.save=Speichern
|
||||||
configuration.settings.setting.dialog.unsupported_type=Leider werden Einstellunge vom Typ "{0}" noch nicht unterst\u00fctzt.
|
configuration.settings.setting.dialog.unsupported_type=Leider werden Einstellunge vom Typ "{0}" noch nicht unterst\u00fctzt.
|
||||||
|
configuration.class.not_found.title=Konfiguration nicht gefunden
|
||||||
|
configuration.class.not_found.message=Konfiguration {0} nicht gefunden
|
||||||
|
configuration.setting.type_unsupported.title=Typ der Einstellung nicht unterst\u00fctzt
|
||||||
|
configuration.setting.type_unsupported.message=Einstellung {1} aus Konfiguration {0} ist vom Typ {3}, dieser wird aber nicht unterst\u00fctzt
|
||||||
|
configuration.setting.invalid_type.title=Invalid type of value
|
||||||
|
configuration.setting.invalid_type.message=Einstellung {1} der Konfigurations-Klasse {0} ist vom Typ {2}, der angegebene Wert {3} kann aber nicht in diesen Typ konvertiert werden
|
||||||
|
configuration.setting.not_found.title=Einstellung nicht gefunden
|
||||||
|
configuration.setting.not_found.message=Keine Einstellung {1} vom Typ {3} in Konfiguration {0} gefunden
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue