CCM NG: Basic structure for new application management
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4130 8810af33-2d31-482b-a856-94f89814c4dfpull/2/head
parent
7bc7551413
commit
60002bd481
|
|
@ -29,6 +29,7 @@ import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
import com.arsdigita.templating.Templating;
|
import com.arsdigita.templating.Templating;
|
||||||
import com.arsdigita.ui.SiteBanner;
|
import com.arsdigita.ui.SiteBanner;
|
||||||
import com.arsdigita.ui.UserBanner;
|
import com.arsdigita.ui.UserBanner;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationsTab;
|
||||||
import com.arsdigita.ui.admin.categories.CategoriesTab;
|
import com.arsdigita.ui.admin.categories.CategoriesTab;
|
||||||
import com.arsdigita.ui.admin.configuration.ConfigurationTab;
|
import com.arsdigita.ui.admin.configuration.ConfigurationTab;
|
||||||
import com.arsdigita.web.BaseApplicationServlet;
|
import com.arsdigita.web.BaseApplicationServlet;
|
||||||
|
|
@ -114,7 +115,7 @@ public class AdminServlet extends BaseApplicationServlet {
|
||||||
tabbedPane.addTab(
|
tabbedPane.addTab(
|
||||||
new Label(new GlobalizedMessage("ui.admin.tab.applications",
|
new Label(new GlobalizedMessage("ui.admin.tab.applications",
|
||||||
ADMIN_BUNDLE)),
|
ADMIN_BUNDLE)),
|
||||||
new ApplicationsAdminTab());
|
new ApplicationsTab());
|
||||||
|
|
||||||
tabbedPane.addTab(
|
tabbedPane.addTab(
|
||||||
new Label(new GlobalizedMessage(
|
new Label(new GlobalizedMessage(
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ public class ApplicationTypePropertySheetModel implements PropertySheetModel {
|
||||||
|
|
||||||
private static enum AppTypeProperty {
|
private static enum AppTypeProperty {
|
||||||
NAME,
|
NAME,
|
||||||
|
TITLE,
|
||||||
DESC,
|
DESC,
|
||||||
APP_CLASS,
|
APP_CLASS,
|
||||||
CREATOR,
|
CREATOR,
|
||||||
|
|
@ -97,6 +98,8 @@ public class ApplicationTypePropertySheetModel implements PropertySheetModel {
|
||||||
switch(currentProperty) {
|
switch(currentProperty) {
|
||||||
case NAME:
|
case NAME:
|
||||||
return applicationType.name();
|
return applicationType.name();
|
||||||
|
case TITLE:
|
||||||
|
return getAppTypeTitle();
|
||||||
case DESC:
|
case DESC:
|
||||||
return getAppTypeDesc();
|
return getAppTypeDesc();
|
||||||
case APP_CLASS:
|
case APP_CLASS:
|
||||||
|
|
@ -114,6 +117,13 @@ public class ApplicationTypePropertySheetModel implements PropertySheetModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getAppTypeTitle() {
|
||||||
|
final org.libreccm.web.ApplicationManager appManager = CdiUtil.createCdiUtil().findBean(
|
||||||
|
org.libreccm.web.ApplicationManager.class);
|
||||||
|
|
||||||
|
return appManager.getApplicationTypeTitle(applicationType);
|
||||||
|
}
|
||||||
|
|
||||||
private String getAppTypeDesc() {
|
private String getAppTypeDesc() {
|
||||||
final org.libreccm.web.ApplicationManager appManager = CdiUtil.createCdiUtil().findBean(
|
final org.libreccm.web.ApplicationManager appManager = CdiUtil.createCdiUtil().findBean(
|
||||||
org.libreccm.web.ApplicationManager.class);
|
org.libreccm.web.ApplicationManager.class);
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ package com.arsdigita.ui.admin.applications;
|
||||||
|
|
||||||
import com.arsdigita.bebop.tree.TreeNode;
|
import com.arsdigita.bebop.tree.TreeNode;
|
||||||
|
|
||||||
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.web.ApplicationType;
|
import org.libreccm.web.ApplicationType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -36,16 +37,19 @@ public class ApplicationTypeTreeNode implements TreeNode {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getKey() {
|
public Object getKey() {
|
||||||
return applicationType.applicationClass().getName();
|
return applicationType.name();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getElement() {
|
public Object getElement() {
|
||||||
return applicationType.name();
|
final org.libreccm.web.ApplicationManager appManager = CdiUtil
|
||||||
|
.createCdiUtil().findBean(org.libreccm.web.ApplicationManager.class);
|
||||||
|
|
||||||
|
return appManager.getApplicationTypeTitle(applicationType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApplicationType getApplicationType() {
|
public ApplicationType getApplicationType() {
|
||||||
return applicationType;
|
return applicationType;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,24 @@
|
||||||
*/
|
*/
|
||||||
package com.arsdigita.ui.admin.applications;
|
package com.arsdigita.ui.admin.applications;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.ActionLink;
|
||||||
|
import com.arsdigita.bebop.BoxPanel;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.Page;
|
import com.arsdigita.bebop.Page;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.ParameterSingleSelectionModel;
|
import com.arsdigita.bebop.ParameterSingleSelectionModel;
|
||||||
|
import com.arsdigita.bebop.PropertySheet;
|
||||||
|
import com.arsdigita.bebop.Text;
|
||||||
import com.arsdigita.bebop.Tree;
|
import com.arsdigita.bebop.Tree;
|
||||||
import com.arsdigita.bebop.parameters.StringParameter;
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
import com.arsdigita.toolbox.ui.LayoutPanel;
|
import com.arsdigita.toolbox.ui.LayoutPanel;
|
||||||
|
|
||||||
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
|
import org.libreccm.web.ApplicationType;
|
||||||
|
|
||||||
|
import static com.arsdigita.ui.admin.AdminUiConstants.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
|
@ -37,6 +49,10 @@ public class ApplicationsTab extends LayoutPanel {
|
||||||
private final ParameterSingleSelectionModel<String> selectedAppInstance;
|
private final ParameterSingleSelectionModel<String> selectedAppInstance;
|
||||||
|
|
||||||
private final Tree applicationTree;
|
private final Tree applicationTree;
|
||||||
|
private final BoxPanel managementLinks;
|
||||||
|
private final Text placeholderInstances;
|
||||||
|
private final Text placeholderSingletonSettings;
|
||||||
|
private final BoxPanel appInfo;
|
||||||
|
|
||||||
public ApplicationsTab() {
|
public ApplicationsTab() {
|
||||||
super();
|
super();
|
||||||
|
|
@ -45,28 +61,212 @@ public class ApplicationsTab extends LayoutPanel {
|
||||||
|
|
||||||
selectedAppTypeParam = new StringParameter("selectedAppType");
|
selectedAppTypeParam = new StringParameter("selectedAppType");
|
||||||
selectedAppType = new ParameterSingleSelectionModel<>(
|
selectedAppType = new ParameterSingleSelectionModel<>(
|
||||||
selectedAppTypeParam);
|
selectedAppTypeParam);
|
||||||
|
|
||||||
selectedAppInstanceParam = new StringParameter("selectedAppInstance");
|
selectedAppInstanceParam = new StringParameter("selectedAppInstance");
|
||||||
selectedAppInstance = new ParameterSingleSelectionModel<>(
|
selectedAppInstance = new ParameterSingleSelectionModel<>(
|
||||||
selectedAppInstanceParam);
|
selectedAppInstanceParam);
|
||||||
|
|
||||||
applicationTree = new Tree(new ApplicationTreeModelBuilder());
|
applicationTree = new Tree(new ApplicationTreeModelBuilder());
|
||||||
applicationTree.addChangeListener(e -> {
|
applicationTree.addChangeListener(e -> {
|
||||||
|
final PageState state = e.getPageState();
|
||||||
|
|
||||||
|
final Object key = applicationTree.getSelectedKey(state);
|
||||||
|
if (key instanceof Long) {
|
||||||
|
|
||||||
|
} else if (key instanceof String) {
|
||||||
|
//ApplicationType node is selected
|
||||||
|
showManagementLinks(state);
|
||||||
|
final String appTypeKey = (String) key;
|
||||||
|
|
||||||
|
selectedAppType.setSelectedKey(state, appTypeKey);
|
||||||
|
|
||||||
|
final org.libreccm.web.ApplicationManager appManager = CdiUtil
|
||||||
|
.createCdiUtil().findBean(
|
||||||
|
org.libreccm.web.ApplicationManager.class);
|
||||||
|
final ApplicationType appType = appManager.getApplicationTypes()
|
||||||
|
.get(appTypeKey);
|
||||||
|
|
||||||
|
if (appType.singleton()) {
|
||||||
|
showSingletonAppSettings(state);
|
||||||
|
} else {
|
||||||
|
showInstances(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"The key of the selected must be Long or a String");
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
setLeft(applicationTree);
|
setLeft(applicationTree);
|
||||||
|
|
||||||
|
final BoxPanel managementPanel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
|
managementLinks = new BoxPanel(BoxPanel.HORIZONTAL);
|
||||||
|
|
||||||
|
final ActionLink singletonAppSettingsLink
|
||||||
|
= new SingletonAppSettingsLink(
|
||||||
|
new GlobalizedMessage("ui.admin.applications.singleton.link",
|
||||||
|
ADMIN_BUNDLE));
|
||||||
|
singletonAppSettingsLink.addActionListener(e -> {
|
||||||
|
final PageState state = e.getPageState();
|
||||||
|
|
||||||
|
showSingletonAppSettings(state);
|
||||||
|
});
|
||||||
|
managementLinks.add(singletonAppSettingsLink);
|
||||||
|
|
||||||
|
final ActionLink instancesLink = new InstancesLink(
|
||||||
|
new GlobalizedMessage("ui.admin.applications.instances.link",
|
||||||
|
ADMIN_BUNDLE));
|
||||||
|
instancesLink.addActionListener(e -> {
|
||||||
|
final PageState state = e.getPageState();
|
||||||
|
|
||||||
|
showInstances(state);
|
||||||
|
});
|
||||||
|
managementLinks.add(instancesLink);
|
||||||
|
|
||||||
|
final ActionLink infoLink = new ActionLink(new GlobalizedMessage(
|
||||||
|
"ui.admin.applications.info.link", ADMIN_BUNDLE));
|
||||||
|
infoLink.addActionListener(e -> {
|
||||||
|
final PageState state = e.getPageState();
|
||||||
|
|
||||||
|
showAppInfo(state);
|
||||||
|
});
|
||||||
|
managementLinks.add(infoLink);
|
||||||
|
|
||||||
|
managementPanel.add(managementLinks);
|
||||||
|
|
||||||
|
placeholderInstances = new Text("placeholder instances");
|
||||||
|
managementPanel.add(placeholderInstances);
|
||||||
|
|
||||||
|
placeholderSingletonSettings
|
||||||
|
= new Text("placeholder singleton settings");
|
||||||
|
managementPanel.add(placeholderSingletonSettings);
|
||||||
|
|
||||||
|
appInfo = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
|
final Label appInfoHeading = new Label(new GlobalizedMessage(
|
||||||
|
"ui.admin.applications.info.heading", ADMIN_BUNDLE));
|
||||||
|
appInfoHeading.setClassAttr("heading");
|
||||||
|
appInfo.add(appInfoHeading);
|
||||||
|
|
||||||
|
final PropertySheet appInfoSheet = new PropertySheet(
|
||||||
|
new ApplicationTypePropertySheetModelBuilder(selectedAppType));
|
||||||
|
appInfo.add(appInfoSheet);
|
||||||
|
managementPanel.add(appInfo);
|
||||||
|
|
||||||
|
setBody(managementPanel);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(final Page page) {
|
public void register(final Page page) {
|
||||||
super.register(page);
|
super.register(page);
|
||||||
|
|
||||||
page.addGlobalStateParam(selectedAppTypeParam);
|
page.addGlobalStateParam(selectedAppTypeParam);
|
||||||
page.addGlobalStateParam(selectedAppInstanceParam);
|
page.addGlobalStateParam(selectedAppInstanceParam);
|
||||||
|
|
||||||
|
page.setVisibleDefault(managementLinks, false);
|
||||||
|
page.setVisibleDefault(placeholderInstances, false);
|
||||||
|
page.setVisibleDefault(placeholderSingletonSettings, false);
|
||||||
|
page.setVisibleDefault(appInfo, false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void showManagementLinks(final PageState state) {
|
||||||
|
managementLinks.setVisible(state, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void hideManagementLinks(final PageState state) {
|
||||||
|
managementLinks.setVisible(state, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void showInstances(final PageState state) {
|
||||||
|
placeholderInstances.setVisible(state, true);
|
||||||
|
placeholderSingletonSettings.setVisible(state, false);
|
||||||
|
appInfo.setVisible(state, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void hideInstances(final PageState state) {
|
||||||
|
placeholderInstances.setVisible(state, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void showSingletonAppSettings(final PageState state) {
|
||||||
|
placeholderInstances.setVisible(state, false);
|
||||||
|
placeholderSingletonSettings.setVisible(state, true);
|
||||||
|
appInfo.setVisible(state, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void hideSingletonAppSettings(final PageState state) {
|
||||||
|
placeholderSingletonSettings.setVisible(state, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void showAppInfo(final PageState state) {
|
||||||
|
placeholderInstances.setVisible(state, false);
|
||||||
|
placeholderSingletonSettings.setVisible(state, false);
|
||||||
|
appInfo.setVisible(state, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void hideAppInfo(final PageState state) {
|
||||||
|
appInfo.setVisible(state, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class SingletonAppSettingsLink extends ActionLink {
|
||||||
|
|
||||||
|
public SingletonAppSettingsLink(final GlobalizedMessage label) {
|
||||||
|
super(label);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVisible(final PageState state) {
|
||||||
|
if (super.isVisible(state)) {
|
||||||
|
if (selectedAppType.getSelectedKey(state) == null) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
final org.libreccm.web.ApplicationManager appManager
|
||||||
|
= CdiUtil
|
||||||
|
.createCdiUtil().findBean(
|
||||||
|
org.libreccm.web.ApplicationManager.class);
|
||||||
|
final ApplicationType appType = appManager
|
||||||
|
.getApplicationTypes().get(selectedAppType
|
||||||
|
.getSelectedKey(state));
|
||||||
|
|
||||||
|
return appType.singleton();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private class InstancesLink extends ActionLink {
|
||||||
|
|
||||||
|
public InstancesLink(final GlobalizedMessage label) {
|
||||||
|
super(label);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVisible(final PageState state) {
|
||||||
|
if (super.isVisible(state)) {
|
||||||
|
if (selectedAppType.getSelectedKey(state) == null) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
final org.libreccm.web.ApplicationManager appManager
|
||||||
|
= CdiUtil
|
||||||
|
.createCdiUtil().findBean(
|
||||||
|
org.libreccm.web.ApplicationManager.class);
|
||||||
|
final ApplicationType appType = appManager
|
||||||
|
.getApplicationTypes().get(selectedAppType
|
||||||
|
.getSelectedKey(state));
|
||||||
|
|
||||||
|
return !appType.singleton();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,28 @@ public class ApplicationManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getApplicationTypeTitle(
|
||||||
|
final ApplicationType applicationType) {
|
||||||
|
|
||||||
|
final String descBundle;
|
||||||
|
if (Strings.isBlank(applicationType.descBundle())) {
|
||||||
|
descBundle = String.join("", applicationType.name(), "Description");
|
||||||
|
} else {
|
||||||
|
descBundle = applicationType.descBundle();
|
||||||
|
}
|
||||||
|
|
||||||
|
final ResourceBundle bundle;
|
||||||
|
try {
|
||||||
|
bundle = ResourceBundle.getBundle(
|
||||||
|
descBundle, globalizationHelper.getNegotiatedLocale());
|
||||||
|
return bundle.getString(applicationType.titleKey());
|
||||||
|
} catch (MissingResourceException ex) {
|
||||||
|
LOGGER.warn("Failed to find resource bundle '{}'.", ex);
|
||||||
|
|
||||||
|
return applicationType.name();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public String getApplicationTypeDescription(
|
public String getApplicationTypeDescription(
|
||||||
final ApplicationType applicationType) {
|
final ApplicationType applicationType) {
|
||||||
|
|
||||||
|
|
@ -164,13 +186,12 @@ public class ApplicationManager {
|
||||||
try {
|
try {
|
||||||
bundle = ResourceBundle.getBundle(
|
bundle = ResourceBundle.getBundle(
|
||||||
descBundle, globalizationHelper.getNegotiatedLocale());
|
descBundle, globalizationHelper.getNegotiatedLocale());
|
||||||
|
return bundle.getString(applicationType.descKey());
|
||||||
} catch (MissingResourceException ex) {
|
} catch (MissingResourceException ex) {
|
||||||
LOGGER.warn("Failed to find resource bundle '{}'.", ex);
|
LOGGER.warn("Failed to find resource bundle '{}'.", ex);
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
return bundle.getString(applicationType.descKey());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,13 +54,23 @@ public @interface ApplicationType {
|
||||||
String descBundle() default "";
|
String descBundle() default "";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The (optional) key for the description of the application in its resource
|
* The (optional) key for the title of the application in its resource
|
||||||
* bundle. Defaults to {@code application_title}
|
* bundle. Defaults to {@code application_title}
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
|
*
|
||||||
|
* @return
|
||||||
*/
|
*/
|
||||||
String descKey() default "application_title";
|
String titleKey() default "application_title";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The (optional) key for the description of the application in its resource
|
||||||
|
* bundle. Defaults to {@code application_desc}
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String descKey() default "application_desc";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The application type class. Default is {@link CcmApplication}. Most
|
* The application type class. Default is {@link CcmApplication}. Most
|
||||||
* application types will no need to extend these class and can leave the
|
* application types will no need to extend these class and can leave the
|
||||||
|
|
|
||||||
|
|
@ -527,3 +527,14 @@ ui.admin.categories.category.name.visible=Visible?
|
||||||
ui.admin.categories.category.name.abstract=Abstract?
|
ui.admin.categories.category.name.abstract=Abstract?
|
||||||
ui.admin.appliations.type_pane.info_sheet=About
|
ui.admin.appliations.type_pane.info_sheet=About
|
||||||
application_title=Administration
|
application_title=Administration
|
||||||
|
ui.admin.applications.singleton.link=Settings
|
||||||
|
ui.admin.applications.info.link=About
|
||||||
|
ui.admin.applications.type.property_sheet.name=Name
|
||||||
|
ui.admin.applications.type.property_sheet.title=Title
|
||||||
|
ui.admin.applications.type.property_sheet.desc=Description
|
||||||
|
ui.admin.applications.type.property_sheet.app_class=Application Class
|
||||||
|
ui.admin.applications.type.property_sheet.creator=Creator class
|
||||||
|
ui.admin.applications.type.property_sheet.singleton=Singleton?
|
||||||
|
ui.admin.applications.type.property_sheet.servlet_class=Servlet
|
||||||
|
ui.admin.applications.type.property_sheet.servlet_path=Servlet path
|
||||||
|
ui.admin.applications.info.heading=About the application type
|
||||||
|
|
|
||||||
|
|
@ -530,3 +530,14 @@ ui.admin.categories.category.name.visible=Sichtbar?
|
||||||
ui.admin.categories.category.name.abstract=Abstrakt?
|
ui.admin.categories.category.name.abstract=Abstrakt?
|
||||||
ui.admin.appliations.type_pane.info_sheet=\u00dcber
|
ui.admin.appliations.type_pane.info_sheet=\u00dcber
|
||||||
application_title=Administration
|
application_title=Administration
|
||||||
|
ui.admin.applications.singleton.link=Einstellungen
|
||||||
|
ui.admin.applications.info.link=Info
|
||||||
|
ui.admin.applications.type.property_sheet.name=Name
|
||||||
|
ui.admin.applications.type.property_sheet.title=Titel
|
||||||
|
ui.admin.applications.type.property_sheet.desc=Beschreibung
|
||||||
|
ui.admin.applications.type.property_sheet.app_class=Applikationsklasse
|
||||||
|
ui.admin.applications.type.property_sheet.creator=Creator class
|
||||||
|
ui.admin.applications.type.property_sheet.singleton=Singleton?
|
||||||
|
ui.admin.applications.type.property_sheet.servlet_class=Servlet
|
||||||
|
ui.admin.applications.type.property_sheet.servlet_path=Servlet-Pfad
|
||||||
|
ui.admin.applications.info.heading=\u00dcber den Applikationstyp
|
||||||
|
|
|
||||||
|
|
@ -523,3 +523,14 @@ ui.admin.categories.category.name.visible=Visible?
|
||||||
ui.admin.categories.category.name.abstract=Abstract?
|
ui.admin.categories.category.name.abstract=Abstract?
|
||||||
ui.admin.appliations.type_pane.info_sheet=About
|
ui.admin.appliations.type_pane.info_sheet=About
|
||||||
application_title=Administration
|
application_title=Administration
|
||||||
|
ui.admin.applications.singleton.link=Settings
|
||||||
|
ui.admin.applications.info.link=About
|
||||||
|
ui.admin.applications.type.property_sheet.name=Name
|
||||||
|
ui.admin.applications.type.property_sheet.title=Title
|
||||||
|
ui.admin.applications.type.property_sheet.desc=Description
|
||||||
|
ui.admin.applications.type.property_sheet.app_class=Application Class
|
||||||
|
ui.admin.applications.type.property_sheet.creator=Creator class
|
||||||
|
ui.admin.applications.type.property_sheet.singleton=Singleton?
|
||||||
|
ui.admin.applications.type.property_sheet.servlet_class=Servlet
|
||||||
|
ui.admin.applications.type.property_sheet.servlet_path=Servlet path
|
||||||
|
ui.admin.applications.info.heading=About the application type
|
||||||
|
|
|
||||||
|
|
@ -514,3 +514,14 @@ ui.admin.categories.category.name.visible=Visible?
|
||||||
ui.admin.categories.category.name.abstract=Abstract?
|
ui.admin.categories.category.name.abstract=Abstract?
|
||||||
ui.admin.appliations.type_pane.info_sheet=About
|
ui.admin.appliations.type_pane.info_sheet=About
|
||||||
application_title=Administration
|
application_title=Administration
|
||||||
|
ui.admin.applications.singleton.link=Settings
|
||||||
|
ui.admin.applications.info.link=About
|
||||||
|
ui.admin.applications.type.property_sheet.name=Name
|
||||||
|
ui.admin.applications.type.property_sheet.title=Title
|
||||||
|
ui.admin.applications.type.property_sheet.desc=Description
|
||||||
|
ui.admin.applications.type.property_sheet.app_class=Application Class
|
||||||
|
ui.admin.applications.type.property_sheet.creator=Creator class
|
||||||
|
ui.admin.applications.type.property_sheet.singleton=Singleton?
|
||||||
|
ui.admin.applications.type.property_sheet.servlet_class=Servlet
|
||||||
|
ui.admin.applications.type.property_sheet.servlet_path=Servlet path
|
||||||
|
ui.admin.applications.info.heading=About the application type
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue