mehrere Tabs fuer Module, EMail noch kaputt
This commit is contained in:
parent
e780b1a427
commit
4cb63d7c3b
@ -22,6 +22,11 @@
|
|||||||
<param-name>productionMode</param-name>
|
<param-name>productionMode</param-name>
|
||||||
<param-value>false</param-value>
|
<param-value>false</param-value>
|
||||||
</context-param>
|
</context-param>
|
||||||
|
<context-param>
|
||||||
|
<description>HSAdmin Module</description>
|
||||||
|
<param-name>hsarmodules</param-name>
|
||||||
|
<param-value>de.hsadmin.web.DomainModule,de.hsadmin.web.EMailAddressModule,de.hsadmin.web.EMailAliasModule</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<filter-name>CAS Authentication Filter</filter-name>
|
<filter-name>CAS Authentication Filter</filter-name>
|
||||||
@ -32,7 +37,7 @@
|
|||||||
</init-param>
|
</init-param>
|
||||||
<init-param>
|
<init-param>
|
||||||
<param-name>service</param-name>
|
<param-name>service</param-name>
|
||||||
<param-value>https://agnes.ostwall195.de:8443/HSAdmin</param-value>
|
<param-value>https://agnes.ostwall195.de:8443/hsarweb</param-value>
|
||||||
</init-param>
|
</init-param>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
@ -49,11 +54,11 @@
|
|||||||
</init-param>
|
</init-param>
|
||||||
<init-param>
|
<init-param>
|
||||||
<param-name>proxyCallbackUrl</param-name>
|
<param-name>proxyCallbackUrl</param-name>
|
||||||
<param-value>https://agnes.ostwall195.de:8443/HSAdmin/proxyCallback</param-value>
|
<param-value>https://agnes.ostwall195.de:8443/hsarweb/proxyCallback</param-value>
|
||||||
</init-param>
|
</init-param>
|
||||||
<init-param>
|
<init-param>
|
||||||
<param-name>service</param-name>
|
<param-name>service</param-name>
|
||||||
<param-value>https://agnes.ostwall195.de:8443/HSAdmin</param-value>
|
<param-value>https://agnes.ostwall195.de:8443/hsarweb</param-value>
|
||||||
</init-param>
|
</init-param>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
@ -73,7 +78,7 @@
|
|||||||
<init-param>
|
<init-param>
|
||||||
<description>Vaadin application class to start</description>
|
<description>Vaadin application class to start</description>
|
||||||
<param-name>application</param-name>
|
<param-name>application</param-name>
|
||||||
<param-value>de.hsadmin.web.DomainModule</param-value>
|
<param-value>de.hsadmin.web.MainApplication</param-value>
|
||||||
</init-param>
|
</init-param>
|
||||||
</servlet>
|
</servlet>
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
|
30
hsarweb/src/de/hsadmin/web/EMailAddressModule.java
Normal file
30
hsarweb/src/de/hsadmin/web/EMailAddressModule.java
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package de.hsadmin.web;
|
||||||
|
|
||||||
|
import de.hsadmin.web.config.ModuleConfig;
|
||||||
|
import de.hsadmin.web.config.PropertyConfig;
|
||||||
|
|
||||||
|
public class EMailAddressModule extends GenericModule {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private ModuleConfig moduleConfig;
|
||||||
|
|
||||||
|
public EMailAddressModule() {
|
||||||
|
moduleConfig = new ModuleConfig("emailaddress");
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "id", Long.class, "", true, true));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "emailaddress", String.class, ""));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "localpart", String.class, "", true));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "subdomain", String.class, "", true));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "domain", String.class, "", true));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "target", String.class, ""));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "admin", String.class, "", true));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "pac", String.class, "", true));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "fulldomain", String.class, "", true));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ModuleConfig getModuleConfig() {
|
||||||
|
return moduleConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
25
hsarweb/src/de/hsadmin/web/EMailAliasModule.java
Normal file
25
hsarweb/src/de/hsadmin/web/EMailAliasModule.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package de.hsadmin.web;
|
||||||
|
|
||||||
|
import de.hsadmin.web.config.ModuleConfig;
|
||||||
|
import de.hsadmin.web.config.PropertyConfig;
|
||||||
|
|
||||||
|
public class EMailAliasModule extends GenericModule {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private ModuleConfig moduleConfig;
|
||||||
|
|
||||||
|
public EMailAliasModule() {
|
||||||
|
moduleConfig = new ModuleConfig("emailalias");
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "id", Long.class, "", true, true));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "name", String.class, ""));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "target", String.class, ""));
|
||||||
|
moduleConfig.addProperty(new PropertyConfig(moduleConfig, "pac", String.class, "", true));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ModuleConfig getModuleConfig() {
|
||||||
|
return moduleConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -8,53 +8,44 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import javax.servlet.http.HttpSession;
|
|
||||||
|
|
||||||
import org.jasig.cas.client.authentication.AttributePrincipal;
|
|
||||||
import org.jasig.cas.client.authentication.AuthenticationFilter;
|
|
||||||
import org.jasig.cas.client.validation.Assertion;
|
|
||||||
|
|
||||||
import com.vaadin.Application;
|
|
||||||
import com.vaadin.data.Property;
|
import com.vaadin.data.Property;
|
||||||
import com.vaadin.terminal.Sizeable;
|
import com.vaadin.terminal.Sizeable;
|
||||||
import com.vaadin.terminal.ThemeResource;
|
import com.vaadin.terminal.ThemeResource;
|
||||||
import com.vaadin.terminal.gwt.server.HttpServletRequestListener;
|
|
||||||
import com.vaadin.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.Component;
|
||||||
import com.vaadin.ui.Table;
|
import com.vaadin.ui.Table;
|
||||||
import com.vaadin.ui.Window;
|
|
||||||
import com.vaadin.ui.Button.ClickEvent;
|
import com.vaadin.ui.Button.ClickEvent;
|
||||||
import com.vaadin.ui.themes.BaseTheme;
|
import com.vaadin.ui.themes.BaseTheme;
|
||||||
|
|
||||||
import de.hsadmin.web.config.ModuleConfig;
|
import de.hsadmin.web.config.ModuleConfig;
|
||||||
import de.hsadmin.web.config.PropertyConfig;
|
import de.hsadmin.web.config.PropertyConfig;
|
||||||
|
|
||||||
public abstract class GenericModule extends Application implements HttpServletRequestListener {
|
public abstract class GenericModule {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private static final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
|
private static final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
|
||||||
|
|
||||||
private HttpSession httpSession;
|
|
||||||
private AttributePrincipal userPrincipal;
|
|
||||||
private ServletContext servletContext;
|
|
||||||
private Table table;
|
private Table table;
|
||||||
|
private Remote remote;
|
||||||
|
|
||||||
|
public void setRemote(Remote remote) {
|
||||||
@Override
|
this.remote = remote;
|
||||||
public void init() {
|
|
||||||
Window mainWindow = new Window(getModuleConfig().getName());
|
|
||||||
mainWindow.setHeight(100.0f, Sizeable.UNITS_PERCENTAGE);
|
|
||||||
mainWindow.setWidth(100.0f, Sizeable.UNITS_PERCENTAGE);
|
|
||||||
try {
|
try {
|
||||||
initTable();
|
initTable();
|
||||||
mainWindow.addComponent(table);
|
|
||||||
} catch (IllegalAccessException e) {
|
} catch (IllegalAccessException e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
setMainWindow(mainWindow);
|
}
|
||||||
|
|
||||||
|
public abstract ModuleConfig getModuleConfig();
|
||||||
|
|
||||||
|
public Component getComponent() {
|
||||||
|
return table;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reload() {
|
||||||
|
loadTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initTable() throws IllegalAccessException {
|
private void initTable() throws IllegalAccessException {
|
||||||
@ -92,14 +83,12 @@ public abstract class GenericModule extends Application implements HttpServletRe
|
|||||||
table.addContainerProperty("del", Button.class, null);
|
table.addContainerProperty("del", Button.class, null);
|
||||||
table.setColumnWidth("del", 16);
|
table.setColumnWidth("del", 16);
|
||||||
table.setColumnHeader("del", "");
|
table.setColumnHeader("del", "");
|
||||||
loadTable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadTable() {
|
private void loadTable() {
|
||||||
Remote remote = new Remote(this);
|
|
||||||
table.removeAllItems();
|
table.removeAllItems();
|
||||||
try {
|
try {
|
||||||
Object callSearch = remote.callSearch(userPrincipal.getName(), new HashMap<String, String>());
|
Object callSearch = remote.callSearch(getModuleConfig().getName(), new HashMap<String, String>());
|
||||||
List<PropertyConfig> propertyList = getModuleConfig().getPropertyList();
|
List<PropertyConfig> propertyList = getModuleConfig().getPropertyList();
|
||||||
if (callSearch instanceof Object[]) {
|
if (callSearch instanceof Object[]) {
|
||||||
for (Object row : ((Object[])callSearch)) {
|
for (Object row : ((Object[])callSearch)) {
|
||||||
@ -169,7 +158,7 @@ public abstract class GenericModule extends Application implements HttpServletRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Button createDeleteButton(long id) {
|
private Button createDeleteButton(long id) {
|
||||||
ThemeResource icon = new ThemeResource("../runo/icons/16/cancel.png");
|
ThemeResource icon = new ThemeResource("../runo/icons/16/document-delete.png");
|
||||||
Button button = new Button();
|
Button button = new Button();
|
||||||
button.setIcon(icon);
|
button.setIcon(icon);
|
||||||
button.setData(id);
|
button.setData(id);
|
||||||
@ -184,29 +173,5 @@ public abstract class GenericModule extends Application implements HttpServletRe
|
|||||||
});
|
});
|
||||||
return button;
|
return button;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getProxyTicket() {
|
|
||||||
return userPrincipal.getProxyTicketFor(servletContext.getInitParameter("backendURL"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getContextParam(String string) {
|
|
||||||
return servletContext.getInitParameter(string);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRequestStart(HttpServletRequest request,
|
|
||||||
HttpServletResponse response) {
|
|
||||||
httpSession = request.getSession();
|
|
||||||
servletContext = httpSession.getServletContext();
|
|
||||||
userPrincipal = ((Assertion) httpSession.getAttribute(AuthenticationFilter.CONST_CAS_ASSERTION)).getPrincipal();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRequestEnd(HttpServletRequest request,
|
|
||||||
HttpServletResponse response) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract ModuleConfig getModuleConfig();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
114
hsarweb/src/de/hsadmin/web/MainApplication.java
Normal file
114
hsarweb/src/de/hsadmin/web/MainApplication.java
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
package de.hsadmin.web;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.servlet.ServletContext;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
|
import org.jasig.cas.client.authentication.AttributePrincipal;
|
||||||
|
import org.jasig.cas.client.authentication.AuthenticationFilter;
|
||||||
|
import org.jasig.cas.client.validation.Assertion;
|
||||||
|
|
||||||
|
import com.vaadin.Application;
|
||||||
|
import com.vaadin.terminal.Sizeable;
|
||||||
|
import com.vaadin.terminal.ThemeResource;
|
||||||
|
import com.vaadin.terminal.gwt.server.HttpServletRequestListener;
|
||||||
|
import com.vaadin.ui.Component;
|
||||||
|
import com.vaadin.ui.TabSheet;
|
||||||
|
import com.vaadin.ui.Window;
|
||||||
|
import com.vaadin.ui.TabSheet.SelectedTabChangeEvent;
|
||||||
|
import com.vaadin.ui.TabSheet.Tab;
|
||||||
|
|
||||||
|
import de.hsadmin.web.config.LocaleConfig;
|
||||||
|
import de.hsadmin.web.config.ModuleConfig;
|
||||||
|
|
||||||
|
public class MainApplication extends Application implements HttpServletRequestListener, TabSheet.SelectedTabChangeListener {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private HttpSession httpSession;
|
||||||
|
private ServletContext servletContext;
|
||||||
|
private AttributePrincipal userPrincipal;
|
||||||
|
private LocaleConfig localeConfig;
|
||||||
|
private Remote remote;
|
||||||
|
private Map<String, GenericModule> modules;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {
|
||||||
|
localeConfig = new LocaleConfig(Locale.getDefault(), "main");
|
||||||
|
remote = new Remote(this);
|
||||||
|
Window mainWindow = new Window(localeConfig.getText("title"));
|
||||||
|
TabSheet tabs = new TabSheet();
|
||||||
|
tabs.setWidth(100.0f, Sizeable.UNITS_PERCENTAGE);
|
||||||
|
tabs.setHeight(680.0f, Sizeable.UNITS_PIXELS);
|
||||||
|
String modulesParamString = getContextParam("hsarmodules");
|
||||||
|
modules = new HashMap<String, GenericModule>();
|
||||||
|
GenericModule firstModule = null;
|
||||||
|
for (String className : modulesParamString.split(",")) {
|
||||||
|
try {
|
||||||
|
GenericModule module = (GenericModule) Class.forName(className).newInstance();
|
||||||
|
module.setRemote(remote);
|
||||||
|
if (firstModule == null) {
|
||||||
|
firstModule = module;
|
||||||
|
}
|
||||||
|
ModuleConfig moduleConfig = module.getModuleConfig();
|
||||||
|
String label = moduleConfig.getLabel("title");
|
||||||
|
modules.put(label, module);
|
||||||
|
tabs.addTab(module.getComponent(), label, new ThemeResource(moduleConfig.getLabel("icon")));
|
||||||
|
} catch (InstantiationException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tabs.addListener(this);
|
||||||
|
mainWindow.addComponent(tabs);
|
||||||
|
setMainWindow(mainWindow);
|
||||||
|
firstModule.reload();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProxyTicket() {
|
||||||
|
return userPrincipal.getProxyTicketFor(servletContext.getInitParameter("backendURL"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContextParam(String string) {
|
||||||
|
return servletContext.getInitParameter(string);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getLogin() {
|
||||||
|
return userPrincipal.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequestStart(HttpServletRequest request,
|
||||||
|
HttpServletResponse response) {
|
||||||
|
httpSession = request.getSession();
|
||||||
|
servletContext = httpSession.getServletContext();
|
||||||
|
userPrincipal = ((Assertion) httpSession.getAttribute(AuthenticationFilter.CONST_CAS_ASSERTION)).getPrincipal();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequestEnd(HttpServletRequest request,
|
||||||
|
HttpServletResponse response) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void selectedTabChange(SelectedTabChangeEvent event) {
|
||||||
|
TabSheet tabSheet = event.getTabSheet();
|
||||||
|
Component selectedTab = tabSheet.getSelectedTab();
|
||||||
|
Tab tab = tabSheet.getTab(selectedTab);
|
||||||
|
GenericModule module = modules.get(tab.getCaption());
|
||||||
|
module.reload();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -11,20 +11,20 @@ import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
|
|||||||
public class Remote {
|
public class Remote {
|
||||||
|
|
||||||
private XmlRpcClient client;
|
private XmlRpcClient client;
|
||||||
private GenericModule module;
|
private MainApplication app;
|
||||||
|
|
||||||
public Remote(GenericModule module) {
|
public Remote(MainApplication application) {
|
||||||
this.module = module;
|
this.app = application;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object callSearch(String user, Map<String, String> where) throws HsarwebException {
|
public Object callSearch(String module, Map<String, String> where) throws HsarwebException {
|
||||||
Object[] params = new Object[3];
|
Object[] params = new Object[3];
|
||||||
params[0] = user;
|
params[0] = app.getLogin();
|
||||||
params[1] = module.getProxyTicket();
|
params[1] = app.getProxyTicket();
|
||||||
params[2] = where;
|
params[2] = where;
|
||||||
Object res;
|
Object res;
|
||||||
try {
|
try {
|
||||||
res = getClient().execute(module.getModuleConfig().getName() + ".search", params);
|
res = getClient().execute(module + ".search", params);
|
||||||
} catch (XmlRpcException e) {
|
} catch (XmlRpcException e) {
|
||||||
throw new HsarwebException("error in remote server call", e);
|
throw new HsarwebException("error in remote server call", e);
|
||||||
}
|
}
|
||||||
@ -35,13 +35,14 @@ public class Remote {
|
|||||||
if (client == null) {
|
if (client == null) {
|
||||||
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
|
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
|
||||||
try {
|
try {
|
||||||
String xmlrpcURL = module.getContextParam("xmlrpcURL");
|
String xmlrpcURL = app.getContextParam("xmlrpcURL");
|
||||||
config.setServerURL(new URL(xmlrpcURL));
|
config.setServerURL(new URL(xmlrpcURL));
|
||||||
|
config.setEnabledForExceptions(true);
|
||||||
|
client = new XmlRpcClient();
|
||||||
|
client.setConfig(config);
|
||||||
} catch (MalformedURLException e) {
|
} catch (MalformedURLException e) {
|
||||||
throw new HsarwebException("error in remote server url", e);
|
throw new HsarwebException("error in remote server url", e);
|
||||||
}
|
}
|
||||||
client = new XmlRpcClient();
|
|
||||||
client.setConfig(config);
|
|
||||||
}
|
}
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
@ -3,4 +3,6 @@ name=domain
|
|||||||
user=admin
|
user=admin
|
||||||
pac=packet
|
pac=packet
|
||||||
hive=host
|
hive=host
|
||||||
since=connected since
|
since=connected since
|
||||||
|
title=domains
|
||||||
|
icon=../runo/icons/16/document-web.png
|
@ -3,4 +3,6 @@ name=Domain
|
|||||||
user=Administrator
|
user=Administrator
|
||||||
pac=Paket
|
pac=Paket
|
||||||
hive=Server
|
hive=Server
|
||||||
since=aufgeschaltet seit
|
since=aufgeschaltet seit
|
||||||
|
title=Domains
|
||||||
|
icon=../runo/icons/16/document-web.png
|
11
hsarweb/src/texts/emailaddress.properties
Normal file
11
hsarweb/src/texts/emailaddress.properties
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
id=identifier
|
||||||
|
emailaddress=adress
|
||||||
|
localpart=local part
|
||||||
|
subdomain=subdomain
|
||||||
|
domain=main domain
|
||||||
|
target=target(s)
|
||||||
|
admin=admin user
|
||||||
|
pac=packet
|
||||||
|
fulldomain=full domain
|
||||||
|
title=email addresses
|
||||||
|
icon=../runo/icons/16/email.png
|
11
hsarweb/src/texts/emailaddress_de.properties
Normal file
11
hsarweb/src/texts/emailaddress_de.properties
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
id=Schlüssel
|
||||||
|
emailaddress=EMail Adresse
|
||||||
|
localpart=lokaler Teil
|
||||||
|
subdomain=Sub-Domain
|
||||||
|
domain=Haupt-Domain
|
||||||
|
target=Ziel(e)
|
||||||
|
admin=Administrator
|
||||||
|
pac=Paket
|
||||||
|
fulldomain=volle Domain
|
||||||
|
title=EMail Adressen
|
||||||
|
icon=../runo/icons/16/email.png
|
6
hsarweb/src/texts/emailalias.properties
Normal file
6
hsarweb/src/texts/emailalias.properties
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
id=identifier
|
||||||
|
name=name
|
||||||
|
target=target(s)
|
||||||
|
pac=packet
|
||||||
|
title=email aliases
|
||||||
|
icon=../runo/icons/16/email-send.png
|
6
hsarweb/src/texts/emailalias_de.properties
Normal file
6
hsarweb/src/texts/emailalias_de.properties
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
id=Schlüssel
|
||||||
|
name=Alias
|
||||||
|
target=Ziel(e)
|
||||||
|
pac=Paket
|
||||||
|
title=EMail Aliases
|
||||||
|
icon=../runo/icons/16/email-send.png
|
1
hsarweb/src/texts/main.properties
Normal file
1
hsarweb/src/texts/main.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
title=HSAdmin Web Application
|
Loading…
Reference in New Issue
Block a user