Merge branch 'master' of ssh://hsh04.hostsharing.net/home/doms/source.hostsharing.net/source/hsadmin into prod
This commit is contained in:
commit
3506f9ff9f
2
authenticator/.gitignore
vendored
Normal file
2
authenticator/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/build
|
||||||
|
/bin
|
1
hsacppcli/.gitignore
vendored
Normal file
1
hsacppcli/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/build
|
2
hsarback/.gitignore
vendored
2
hsarback/.gitignore
vendored
@ -0,0 +1,2 @@
|
|||||||
|
/build
|
||||||
|
/bin
|
@ -166,3 +166,5 @@ INSERT INTO domain_option (domain_option_name)
|
|||||||
VALUES ('indexes');
|
VALUES ('indexes');
|
||||||
INSERT INTO domain_option (domain_option_name)
|
INSERT INTO domain_option (domain_option_name)
|
||||||
VALUES ('multiviews');
|
VALUES ('multiviews');
|
||||||
|
INSERT INTO domain_option (domain_option_name)
|
||||||
|
VALUES ('php');
|
||||||
|
@ -1,80 +1,31 @@
|
|||||||
-- Migrate database from version 2.1 to version 2.2
|
-- Migrate database from version 2.2 to version 2.3
|
||||||
--
|
--
|
||||||
-- domain options
|
|
||||||
--
|
|
||||||
CREATE SEQUENCE domain_option_id_seq
|
|
||||||
INCREMENT BY 1
|
|
||||||
NO MAXVALUE
|
|
||||||
NO MINVALUE
|
|
||||||
CACHE 1;
|
|
||||||
|
|
||||||
CREATE TABLE domain_option (
|
|
||||||
domain_option_id integer DEFAULT nextval(('"domain_option_id_seq"'::text)::regclass) NOT NULL,
|
|
||||||
domain_option_name character varying(50) NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
ALTER TABLE ONLY domain_option
|
|
||||||
ADD CONSTRAINT pk_domain_option PRIMARY KEY (domain_option_id);
|
|
||||||
|
|
||||||
CREATE UNIQUE INDEX domain_option_name_idx ON domain_option USING btree ( domain_option_name );
|
|
||||||
|
|
||||||
CREATE TABLE domain__domain_option (
|
|
||||||
domain_option_id integer NOT NULL,
|
|
||||||
domain_id integer NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
ALTER TABLE ONLY domain__domain_option
|
|
||||||
ADD CONSTRAINT pk_domain__domain_option PRIMARY KEY (domain_option_id, domain_id);
|
|
||||||
|
|
||||||
ALTER TABLE ONLY domain__domain_option
|
|
||||||
ADD CONSTRAINT domain_option_id_fkey FOREIGN KEY (domain_option_id)
|
|
||||||
REFERENCES domain_option(domain_option_id) DEFERRABLE;
|
|
||||||
|
|
||||||
ALTER TABLE ONLY domain__domain_option
|
|
||||||
ADD CONSTRAINT domain_id_fkey FOREIGN KEY (domain_id)
|
|
||||||
REFERENCES domain(domain_id) DEFERRABLE;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- table: domain_option
|
-- table: domain_option
|
||||||
--
|
--
|
||||||
INSERT INTO domain_option (domain_option_name)
|
INSERT INTO domain_option (domain_option_name)
|
||||||
VALUES ('backupmxforexternalmx');
|
VALUES ('php');
|
||||||
INSERT INTO domain_option (domain_option_name)
|
|
||||||
VALUES ('greylisting');
|
|
||||||
INSERT INTO domain_option (domain_option_name)
|
|
||||||
VALUES ('htdocsfallback');
|
|
||||||
INSERT INTO domain_option (domain_option_name)
|
|
||||||
VALUES ('includes');
|
|
||||||
INSERT INTO domain_option (domain_option_name)
|
|
||||||
VALUES ('indexes');
|
|
||||||
INSERT INTO domain_option (domain_option_name)
|
|
||||||
VALUES ('multiviews');
|
|
||||||
--
|
--
|
||||||
-- new domain options settings
|
-- new domain options settings
|
||||||
--
|
--
|
||||||
-- existing default = ON
|
-- existing default = On for DW-packet, Off otherwise.
|
||||||
--
|
--
|
||||||
INSERT INTO domain__domain_option SELECT domain_option_id, domain_id
|
INSERT INTO domain__domain_option SELECT domain_option_id, domain_id
|
||||||
FROM domain, domain_option
|
FROM domain
|
||||||
WHERE domain_option.domain_option_name = 'greylisting' ;
|
JOIN unixuser on ( domain.domain_owner = unixuser.unixuser_id )
|
||||||
INSERT INTO domain__domain_option SELECT domain_option_id, domain_id
|
JOIN packet on ( unixuser.packet_id = packet.packet_id )
|
||||||
FROM domain, domain_option
|
JOIN basepacket on ( packet.bp_id = basepacket.basepacket_id )
|
||||||
WHERE domain_option.domain_option_name = 'htdocsfallback' ;
|
, domain_option
|
||||||
INSERT INTO domain__domain_option SELECT domain_option_id, domain_id
|
WHERE basepacket.basepacket_code = 'DW/B'
|
||||||
FROM domain, domain_option
|
AND domain_option.domain_option_name = 'php' ;
|
||||||
WHERE domain_option.domain_option_name = 'includes' ;
|
DELETE FROM domain__domain_option USING domain_option, domain
|
||||||
INSERT INTO domain__domain_option SELECT domain_option_id, domain_id
|
JOIN unixuser on ( domain.domain_owner = unixuser.unixuser_id )
|
||||||
FROM domain, domain_option
|
JOIN packet on ( unixuser.packet_id = packet.packet_id )
|
||||||
WHERE domain_option.domain_option_name = 'indexes' ;
|
JOIN basepacket on ( packet.bp_id = basepacket.basepacket_id )
|
||||||
INSERT INTO domain__domain_option SELECT domain_option_id, domain_id
|
WHERE basepacket.basepacket_code != 'DW/B'
|
||||||
FROM domain, domain_option
|
AND domain__domain_option.domain_option_id = domain_option.domain_option_id
|
||||||
WHERE domain_option.domain_option_name = 'multiviews' ;
|
AND domain_option.domain_option_name = 'php' ;
|
||||||
--
|
--
|
||||||
-- existing default = OFF
|
-- End of migration to version 2.3
|
||||||
--
|
|
||||||
DELETE FROM domain__domain_option USING domain_option
|
|
||||||
WHERE domain__domain_option.domain_option_id = domain_option.domain_option_id
|
|
||||||
AND domain_option.domain_option_name = 'backupmxforexternalmx' ;
|
|
||||||
--
|
|
||||||
-- End of migratino to version 2.2
|
|
||||||
--
|
--
|
||||||
|
@ -59,7 +59,7 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
|
|||||||
mainProcessor.appendProcessor(queueName, createDNSServerSetupProcessor(domName, hiveInetAddr), queueName + ".hostsharing.net");
|
mainProcessor.appendProcessor(queueName, createDNSServerSetupProcessor(domName, hiveInetAddr), queueName + ".hostsharing.net");
|
||||||
}
|
}
|
||||||
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
||||||
mainProcessor.appendProcessor(queueName, createMailinSetupProcessor(em, domName, pac), queueName + ".hostsharing.net");
|
mainProcessor.appendProcessor(queueName, createMailinSetupProcessor(em, dom, pac), queueName + ".hostsharing.net");
|
||||||
}
|
}
|
||||||
templateVars = new HashMap<String, String>();
|
templateVars = new HashMap<String, String>();
|
||||||
templateVars.put("PAC", pacName);
|
templateVars.put("PAC", pacName);
|
||||||
@ -95,7 +95,7 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
|
|||||||
WaitingTasksProcessor processor = new WaitingTasksProcessor(createApacheVHostSetupProcessor(em, dom, templateVars));
|
WaitingTasksProcessor processor = new WaitingTasksProcessor(createApacheVHostSetupProcessor(em, dom, templateVars));
|
||||||
Config config = Config.getInstance();
|
Config config = Config.getInstance();
|
||||||
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
||||||
processor.appendProcessor(queueName, createPostgreyConfiguration(em), queueName + ".hostsharing.net");
|
processor.appendProcessor(queueName, createMailinSetupProcessor(em, dom, pac), queueName + ".hostsharing.net");
|
||||||
}
|
}
|
||||||
return processor;
|
return processor;
|
||||||
}
|
}
|
||||||
@ -111,8 +111,7 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
|
|||||||
mainProcessor.appendProcessor(queueName, createDNSServerRemoveProcessor(domName), queueName + ".hostsharing.net");
|
mainProcessor.appendProcessor(queueName, createDNSServerRemoveProcessor(domName), queueName + ".hostsharing.net");
|
||||||
}
|
}
|
||||||
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
||||||
mainProcessor.appendProcessor(queueName, createMailinDeleteProcessor(domName), queueName + ".hostsharing.net");
|
mainProcessor.appendProcessor(queueName, createMailinUnsetupProcessor(em, dom), queueName + ".hostsharing.net");
|
||||||
mainProcessor.appendProcessor(queueName, createPostgreyConfiguration(em), queueName + ".hostsharing.net");
|
|
||||||
}
|
}
|
||||||
mainProcessor.appendProcessor(dom.getHiveName(), createApacheVHostDeleteProcessor(dom), "remove apache vhost");
|
mainProcessor.appendProcessor(dom.getHiveName(), createApacheVHostDeleteProcessor(dom), "remove apache vhost");
|
||||||
return mainProcessor;
|
return mainProcessor;
|
||||||
@ -176,17 +175,30 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
|
|||||||
" && invoke-rc.d bind9 reload");
|
" && invoke-rc.d bind9 reload");
|
||||||
}
|
}
|
||||||
|
|
||||||
private Processor createMailinSetupProcessor(EntityManager em, String domName, Pac pac) throws ProcessorException {
|
private Processor createMailinSetupProcessor(EntityManager em, Domain dom, Pac pac) throws ProcessorException {
|
||||||
String inetAddr = pac.getCurINetAddr().getInetAddr();
|
String inetAddr = pac.getCurINetAddr().getInetAddr();
|
||||||
return new CompoundProcessor(
|
CompoundProcessor cp = new CompoundProcessor(
|
||||||
createPostgreyConfiguration(em),
|
createPostgreyConfiguration(em),
|
||||||
new ShellProcessor("postmap -r -i /etc/postfix-mailin/relaydomains",
|
new ShellProcessor("postmap -r -i /etc/postfix-mailin/relaydomains",
|
||||||
domName + " anything\n" +
|
dom.getName() + " anything\n" +
|
||||||
"." + domName + " anything\n"),
|
"." + dom.getName() + " anything\n"));
|
||||||
|
Query query = em.createQuery("SELECT d FROM Domains d WHERE d.domainoptions.name = :option AND d.name = :domname");
|
||||||
|
query.setParameter("domname", dom.getName());
|
||||||
|
query.setParameter("option", "backupmxforexternalmx");
|
||||||
|
if (query.getResultList().isEmpty()) {
|
||||||
|
cp.appendProcessor(
|
||||||
new ShellProcessor("postmap -r -i /etc/postfix-mailin/transport",
|
new ShellProcessor("postmap -r -i /etc/postfix-mailin/transport",
|
||||||
domName + " smtp:" + inetAddr + ":225\n" +
|
dom.getName() + " smtp:" + inetAddr + ":225\n" +
|
||||||
"." + domName + " smtp:" + inetAddr + ":225\n")
|
"." + dom.getName() + " smtp:" + inetAddr + ":225\n")
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
cp.appendProcessor(
|
||||||
|
new ShellProcessor(
|
||||||
|
"postmap -d '" + dom.getName() + "' /etc/postfix-mailin/transport && " +
|
||||||
|
"postmap -d '." + dom.getName() + "' /etc/postfix-mailin/transport")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return cp;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Processor createPostgreyConfiguration(EntityManager em) throws ProcessorException {
|
private Processor createPostgreyConfiguration(EntityManager em) throws ProcessorException {
|
||||||
@ -213,12 +225,14 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Processor createMailinDeleteProcessor(String domName) {
|
private Processor createMailinUnsetupProcessor(EntityManager em, Domain dom) throws ProcessorException {
|
||||||
Processor mailQueueProcessor = new ShellProcessor(
|
Processor mailQueueProcessor = new CompoundProcessor(
|
||||||
"postmap -d '" + domName + "' /etc/postfix-mailin/relaydomains && " +
|
createPostgreyConfiguration(em),
|
||||||
"postmap -d '" + domName + "' /etc/postfix-mailin/transport && " +
|
new ShellProcessor(
|
||||||
"postmap -d '." + domName + "' /etc/postfix-mailin/relaydomains && " +
|
"postmap -d '" + dom.getName() + "' /etc/postfix-mailin/relaydomains && " +
|
||||||
"postmap -d '." + domName + "' /etc/postfix-mailin/transport");
|
"postmap -d '" + dom.getName() + "' /etc/postfix-mailin/transport && " +
|
||||||
|
"postmap -d '." + dom.getName() + "' /etc/postfix-mailin/relaydomains && " +
|
||||||
|
"postmap -d '." + dom.getName() + "' /etc/postfix-mailin/transport"));
|
||||||
return mailQueueProcessor;
|
return mailQueueProcessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,12 +23,16 @@ public class EMailAddressProcessorFactory implements EntityProcessorFactory {
|
|||||||
CompoundProcessor cp = new CompoundProcessor();
|
CompoundProcessor cp = new CompoundProcessor();
|
||||||
cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix-mailin/virtual",
|
cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix-mailin/virtual",
|
||||||
email.getFullDomain() + " -" ) );
|
email.getFullDomain() + " -" ) );
|
||||||
|
WaitingTasksProcessor waitingTasksProcessor = new WaitingTasksProcessor(cp);
|
||||||
|
Config config = Config.getInstance();
|
||||||
cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix-mailin/virtual",
|
cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix-mailin/virtual",
|
||||||
email.getEMailAddress() + " " + email.getTarget() ) );
|
email.getEMailAddress() + " " + email.getTarget() ) );
|
||||||
if (emailAddressCount(em, email) < 2) {
|
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
||||||
WaitingTasksProcessor waitingTasksProcessor = new WaitingTasksProcessor(cp);
|
waitingTasksProcessor.appendProcessor(queueName, new ShellProcessor( "postmap -r -i /etc/postfix-mailin/relayrecipients",
|
||||||
|
email.getEMailAddress() + " anything" ), "Add to relayrecipients" );
|
||||||
|
}
|
||||||
|
if (emailAddressCount(em, email) <= 1) {
|
||||||
String domName = email.getDomain().getName();
|
String domName = email.getDomain().getName();
|
||||||
Config config = Config.getInstance();
|
|
||||||
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
||||||
waitingTasksProcessor.appendProcessor(queueName, createMailinSetupProcessor(domName, pac), queueName + ".hostsharing.net");
|
waitingTasksProcessor.appendProcessor(queueName, createMailinSetupProcessor(domName, pac), queueName + ".hostsharing.net");
|
||||||
}
|
}
|
||||||
@ -49,14 +53,18 @@ public class EMailAddressProcessorFactory implements EntityProcessorFactory {
|
|||||||
EMailAddress email = (EMailAddress) entity;
|
EMailAddress email = (EMailAddress) entity;
|
||||||
cp.appendProcessor(
|
cp.appendProcessor(
|
||||||
new ShellProcessor( "postmap -d '" + email.getEMailAddress() + "' /etc/postfix-mailin/virtual" ) );
|
new ShellProcessor( "postmap -d '" + email.getEMailAddress() + "' /etc/postfix-mailin/virtual" ) );
|
||||||
|
Config config = Config.getInstance();
|
||||||
|
WaitingTasksProcessor waitingTasksProcessor = new WaitingTasksProcessor(cp);
|
||||||
|
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
||||||
|
waitingTasksProcessor.appendProcessor(queueName,
|
||||||
|
new ShellProcessor( "postmap -d '" + email.getEMailAddress() + "' /etc/postfix-mailin/relayrecipients" ), "Remove from relayrecipients" );
|
||||||
|
}
|
||||||
int emailAddressCount = emailAddressCount(em, email);
|
int emailAddressCount = emailAddressCount(em, email);
|
||||||
if (emailAddressCount == 0) {
|
if (emailAddressCount == 0) {
|
||||||
// remove the domain from virtual.db
|
// remove the domain from virtual.db
|
||||||
String fullDomain = email.getFullDomain();
|
String fullDomain = email.getFullDomain();
|
||||||
cp.appendProcessor(
|
cp.appendProcessor(
|
||||||
new ShellProcessor( "postmap -d '" + fullDomain + "' /etc/postfix-mailin/virtual" ) );
|
new ShellProcessor( "postmap -d '" + fullDomain + "' /etc/postfix-mailin/virtual" ) );
|
||||||
WaitingTasksProcessor waitingTasksProcessor = new WaitingTasksProcessor(cp);
|
|
||||||
Config config = Config.getInstance();
|
|
||||||
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
for (String queueName : config.getProperty("queues.mail").split(",")) {
|
||||||
waitingTasksProcessor.appendProcessor(queueName, createMailinDeleteProcessor(fullDomain), queueName + ".hostsharing.net");
|
waitingTasksProcessor.appendProcessor(queueName, createMailinDeleteProcessor(fullDomain), queueName + ".hostsharing.net");
|
||||||
}
|
}
|
||||||
|
1
hsarback/webapp/META-INF/.gitignore
vendored
Normal file
1
hsarback/webapp/META-INF/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/context.xml
|
1
hsarback/webapp/WEB-INF/.gitignore
vendored
Normal file
1
hsarback/webapp/WEB-INF/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/web.xml
|
2
hsarjcli/.gitignore
vendored
Normal file
2
hsarjcli/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/build
|
||||||
|
/bin
|
1
hsarweb/.gitignore
vendored
1
hsarweb/.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
/build
|
/build
|
||||||
|
/bin
|
1
hsarweb/WebContent/WEB-INF/.gitignore
vendored
Normal file
1
hsarweb/WebContent/WEB-INF/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/web.xml
|
@ -19,11 +19,13 @@
|
|||||||
<script language='javascript' src='/hsarweb/VAADIN/widgetsets/com.vaadin.terminal.gwt.DefaultWidgetSet/com.vaadin.terminal.gwt.DefaultWidgetSet.nocache.js'>
|
<script language='javascript' src='/hsarweb/VAADIN/widgetsets/com.vaadin.terminal.gwt.DefaultWidgetSet/com.vaadin.terminal.gwt.DefaultWidgetSet.nocache.js'>
|
||||||
</script>
|
</script>
|
||||||
<link rel="stylesheet" type="text/css" href="/hsarweb/VAADIN/themes/reindeer/styles.css"/>
|
<link rel="stylesheet" type="text/css" href="/hsarweb/VAADIN/themes/reindeer/styles.css"/>
|
||||||
|
<!--#include virtual="/hostsharing/includes/head.html" -->
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<iframe id="__gwt_historyFrame" style="width:0;height:0;border:0"></iframe>
|
<iframe id="__gwt_historyFrame" style="width:0;height:0;border:0"></iframe>
|
||||||
<h1>HSAdmin Web</h1>
|
<!--#include virtual="/hostsharing/includes/header.html" -->
|
||||||
<div id="hsarweb" style="width:100%;height:800px;"
|
<div id="hsarweb" style="width:100%;height:800px;"
|
||||||
class="v-app v-app-loading v-theme-reindeer v-app-MainApplication"> </div>
|
class="v-app v-app-loading v-theme-reindeer v-app-MainApplication"> </div>
|
||||||
|
<!--#include virtual="/hostsharing/includes/footer.html" -->
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -57,6 +57,7 @@
|
|||||||
</init-param>
|
</init-param>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
|
|
||||||
<filter-mapping>
|
<filter-mapping>
|
||||||
<filter-name>CAS Validation Filter</filter-name>
|
<filter-name>CAS Validation Filter</filter-name>
|
||||||
<url-pattern>/*</url-pattern>
|
<url-pattern>/*</url-pattern>
|
||||||
@ -93,11 +94,15 @@
|
|||||||
|
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet-name>HSAdmin Web</servlet-name>
|
<servlet-name>HSAdmin Web</servlet-name>
|
||||||
<url-pattern>/*</url-pattern>
|
<url-pattern>/MainApplication/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>HSAdmin Web</servlet-name>
|
||||||
|
<url-pattern>/VAADIN/*</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
<welcome-file-list>
|
<welcome-file-list>
|
||||||
<welcome-file>index.html</welcome-file>
|
|
||||||
<welcome-file>index.jsp</welcome-file>
|
<welcome-file>index.jsp</welcome-file>
|
||||||
</welcome-file-list>
|
</welcome-file-list>
|
||||||
</web-app>
|
</web-app>
|
@ -4,15 +4,21 @@ import java.io.Serializable;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.vaadin.data.Property;
|
||||||
|
import com.vaadin.data.Property.ValueChangeEvent;
|
||||||
|
import com.vaadin.terminal.ExternalResource;
|
||||||
import com.vaadin.terminal.Sizeable;
|
import com.vaadin.terminal.Sizeable;
|
||||||
import com.vaadin.terminal.ThemeResource;
|
import com.vaadin.terminal.ThemeResource;
|
||||||
import com.vaadin.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.Button.ClickEvent;
|
||||||
|
import com.vaadin.ui.Button.ClickListener;
|
||||||
import com.vaadin.ui.Component;
|
import com.vaadin.ui.Component;
|
||||||
import com.vaadin.ui.Form;
|
import com.vaadin.ui.Form;
|
||||||
import com.vaadin.ui.HorizontalLayout;
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
|
import com.vaadin.ui.Label;
|
||||||
|
import com.vaadin.ui.Select;
|
||||||
import com.vaadin.ui.VerticalLayout;
|
import com.vaadin.ui.VerticalLayout;
|
||||||
import com.vaadin.ui.Window;
|
import com.vaadin.ui.Window;
|
||||||
import com.vaadin.ui.Button.ClickEvent;
|
|
||||||
|
|
||||||
import de.hsadmin.web.config.ComponentFactory;
|
import de.hsadmin.web.config.ComponentFactory;
|
||||||
import de.hsadmin.web.config.LocaleConfig;
|
import de.hsadmin.web.config.LocaleConfig;
|
||||||
@ -28,22 +34,28 @@ public abstract class AbstractModule implements Module, Serializable {
|
|||||||
private VerticalLayout layout;
|
private VerticalLayout layout;
|
||||||
private Component component;
|
private Component component;
|
||||||
private ComponentFactory componentFactory;
|
private ComponentFactory componentFactory;
|
||||||
|
private Select selRunAs;
|
||||||
|
|
||||||
public Component getComponent() {
|
public Component getComponent() {
|
||||||
return layout;
|
return layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reload() throws HsarwebException {
|
public void reload() throws HsarwebException {
|
||||||
|
if (selRunAs != null) {
|
||||||
|
selRunAs.select(application.getRunAs());
|
||||||
|
selRunAs.setScrollToSelectedItem(true);
|
||||||
|
}
|
||||||
componentFactory.loadData();
|
componentFactory.loadData();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initLayout() {
|
private void initLayout() throws HsarwebException {
|
||||||
layout = new VerticalLayout();
|
layout = new VerticalLayout();
|
||||||
layout.setSizeFull();
|
layout.setSizeFull();
|
||||||
final Module thisModule = this;
|
final Module thisModule = this;
|
||||||
final ModuleConfig moduleConfig = getModuleConfig();
|
final ModuleConfig moduleConfig = getModuleConfig();
|
||||||
final LocaleConfig localeConfig = application.getLocaleConfig();
|
final LocaleConfig localeConfig = application.getLocaleConfig();
|
||||||
if (this instanceof SearchAble || this instanceof InsertAble) {
|
if (this instanceof SearchAble || this instanceof InsertAble ||
|
||||||
|
!("USER".equals(application.getLoginUserRole()) || "NONE".equals(application.getLoginUserRole()))) {
|
||||||
HorizontalLayout toolbar = new HorizontalLayout();
|
HorizontalLayout toolbar = new HorizontalLayout();
|
||||||
if (this instanceof InsertAble) {
|
if (this instanceof InsertAble) {
|
||||||
Button btNew = new Button(moduleConfig.getLabel("new"));
|
Button btNew = new Button(moduleConfig.getLabel("new"));
|
||||||
@ -97,16 +109,53 @@ public abstract class AbstractModule implements Module, Serializable {
|
|||||||
});
|
});
|
||||||
toolbar.addComponent(btNew);
|
toolbar.addComponent(btNew);
|
||||||
}
|
}
|
||||||
// if (this instanceof SearchAble) {
|
toolbar.setWidth("100%");
|
||||||
// Button btSearch = new Button("search");
|
Label space = new Label(" ");
|
||||||
// toolbar.addComponent(btSearch);
|
space.setWidth("100%");
|
||||||
// }
|
toolbar.addComponent(space);
|
||||||
|
toolbar.setExpandRatio(space, 1.0f);
|
||||||
|
createRunAsSelect(toolbar);
|
||||||
|
Button btLogout = new Button(localeConfig.getText("logout"));
|
||||||
|
btLogout.addListener(new ClickListener() {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
@Override
|
||||||
|
public void buttonClick(ClickEvent event) {
|
||||||
|
ExternalResource logoutLink = new ExternalResource("logout");
|
||||||
|
application.getMainWindow().open(logoutLink);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
toolbar.addComponent(btLogout);
|
||||||
|
ThemeResource icon = new ThemeResource("../runo/icons/16/cancel.png");
|
||||||
|
btLogout.setIcon(icon);
|
||||||
layout.addComponent(toolbar);
|
layout.addComponent(toolbar);
|
||||||
}
|
}
|
||||||
layout.addComponent(component);
|
layout.addComponent(component);
|
||||||
layout.setExpandRatio(component, 1.0f);
|
layout.setExpandRatio(component, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void createRunAsSelect(HorizontalLayout toolbar) throws UnsupportedOperationException, HsarwebException {
|
||||||
|
selRunAs = new Select();
|
||||||
|
selRunAs.setWidth(100.0f, Sizeable.UNITS_PIXELS);
|
||||||
|
selRunAs.setImmediate(true);
|
||||||
|
selRunAs.setNewItemsAllowed(true);
|
||||||
|
selRunAs.setNullSelectionAllowed(false);
|
||||||
|
selRunAs.addItem(application.getLogin());
|
||||||
|
for (Object item : application.readSelectRunAsItems()) {
|
||||||
|
selRunAs.addItem(item);
|
||||||
|
}
|
||||||
|
selRunAs.select(application.getRunAs());
|
||||||
|
selRunAs.setScrollToSelectedItem(true);
|
||||||
|
selRunAs.addListener(new Property.ValueChangeListener() {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
@Override
|
||||||
|
public void valueChange(ValueChangeEvent event) {
|
||||||
|
Property property = event.getProperty();
|
||||||
|
application.setRunAs(property.getValue().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
selRunAs.setDescription(application.getLocaleConfig().getText("runas"));
|
||||||
|
toolbar.addComponent(selRunAs);
|
||||||
|
}
|
||||||
|
|
||||||
public void setApplication(MainApplication app) throws HsarwebException {
|
public void setApplication(MainApplication app) throws HsarwebException {
|
||||||
application = app;
|
application = app;
|
||||||
|
@ -29,7 +29,7 @@ public abstract class DatabaseModule extends GenericModule {
|
|||||||
protected void initModule() {
|
protected void initModule() {
|
||||||
MainApplication application = getApplication();
|
MainApplication application = getApplication();
|
||||||
moduleConfig = new ModuleConfig(getModuleIdent(), application.getLocale());
|
moduleConfig = new ModuleConfig(getModuleIdent(), application.getLocale());
|
||||||
String login = application.getLogin();
|
String login = application.getRunAs();
|
||||||
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
||||||
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
||||||
idProp.setReadOnly(true);
|
idProp.setReadOnly(true);
|
||||||
|
@ -24,7 +24,7 @@ public abstract class DatabaseUserModule extends GenericModule {
|
|||||||
protected void initModule() {
|
protected void initModule() {
|
||||||
MainApplication application = getApplication();
|
MainApplication application = getApplication();
|
||||||
moduleConfig = new ModuleConfig(getModuleIdent(), application.getLocale());
|
moduleConfig = new ModuleConfig(getModuleIdent(), application.getLocale());
|
||||||
String login = application.getLogin();
|
String login = application.getRunAs();
|
||||||
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
||||||
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
||||||
idProp.setReadOnly(true);
|
idProp.setReadOnly(true);
|
||||||
|
@ -23,7 +23,7 @@ public class DomainModule extends GenericModule {
|
|||||||
protected void initModule() {
|
protected void initModule() {
|
||||||
MainApplication application = getApplication();
|
MainApplication application = getApplication();
|
||||||
moduleConfig = new ModuleConfig("domain", application.getLocale());
|
moduleConfig = new ModuleConfig("domain", application.getLocale());
|
||||||
String login = application.getLogin();
|
String login = application.getRunAs();
|
||||||
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
||||||
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
||||||
idProp.setReadOnly(true);
|
idProp.setReadOnly(true);
|
||||||
|
@ -22,7 +22,7 @@ public class EMailAddressModule extends GenericModule {
|
|||||||
protected void initModule() {
|
protected void initModule() {
|
||||||
MainApplication application = getApplication();
|
MainApplication application = getApplication();
|
||||||
moduleConfig = new ModuleConfig("emailaddress", application.getLocale());
|
moduleConfig = new ModuleConfig("emailaddress", application.getLocale());
|
||||||
String login = application.getLogin();
|
String login = application.getRunAs();
|
||||||
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
||||||
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
||||||
idProp.setReadOnly(true);
|
idProp.setReadOnly(true);
|
||||||
|
@ -22,7 +22,7 @@ public class EMailAliasModule extends GenericModule {
|
|||||||
protected void initModule() {
|
protected void initModule() {
|
||||||
MainApplication application = getApplication();
|
MainApplication application = getApplication();
|
||||||
moduleConfig = new ModuleConfig("emailalias", application.getLocale());
|
moduleConfig = new ModuleConfig("emailalias", application.getLocale());
|
||||||
String login = application.getLogin();
|
String login = application.getRunAs();
|
||||||
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
||||||
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
||||||
idProp.setReadOnly(true);
|
idProp.setReadOnly(true);
|
||||||
|
@ -95,7 +95,7 @@ public class HomeModule extends AbstractModule implements ComponentFactory, Upda
|
|||||||
ThemeResource icon = new ThemeResource(moduleConfig.getLabel("change_password_icon"));
|
ThemeResource icon = new ThemeResource(moduleConfig.getLabel("change_password_icon"));
|
||||||
button.setIcon(icon);
|
button.setIcon(icon);
|
||||||
Map<String, String> whereHash = new HashMap<String, String>();
|
Map<String, String> whereHash = new HashMap<String, String>();
|
||||||
whereHash.put("name", application.getLogin());
|
whereHash.put("name", application.getRunAs());
|
||||||
Long key = -1L;
|
Long key = -1L;
|
||||||
try {
|
try {
|
||||||
Object object = application.getRemote().callSearch(moduleConfig.getRemoteName(), whereHash);
|
Object object = application.getRemote().callSearch(moduleConfig.getRemoteName(), whereHash);
|
||||||
|
25
hsarweb/src/de/hsadmin/web/ItemsReader.java
Normal file
25
hsarweb/src/de/hsadmin/web/ItemsReader.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package de.hsadmin.web;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ItemsReader {
|
||||||
|
|
||||||
|
public static List<Object> readItemList(MainApplication app, String module, String property) throws HsarwebException {
|
||||||
|
final List<Object> itemsList = new ArrayList<Object>();
|
||||||
|
Object custListObj = app.getRemote().callSearch(module, new HashMap<String, String>());
|
||||||
|
if (custListObj instanceof Object[]) {
|
||||||
|
Object[] custList = (Object[]) custListObj;
|
||||||
|
for (Object custObj : custList) {
|
||||||
|
if (custObj instanceof Map<?, ?>) {
|
||||||
|
Map<?, ?> custHash = (Map<?, ?>)custObj;
|
||||||
|
itemsList.add(custHash.get(property));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return itemsList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,6 +1,8 @@
|
|||||||
package de.hsadmin.web;
|
package de.hsadmin.web;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -46,6 +48,11 @@ public class MainApplication extends Application implements HttpServletRequestLi
|
|||||||
private Remote remote;
|
private Remote remote;
|
||||||
private Map<String, Module> modules;
|
private Map<String, Module> modules;
|
||||||
private Locale requestLocale;
|
private Locale requestLocale;
|
||||||
|
private String loginUserRole = "NONE";
|
||||||
|
private String runAs = null;
|
||||||
|
private TabSheet tabSheet;
|
||||||
|
private Window mainWindow;
|
||||||
|
private List<Object> runAsList = null;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -56,41 +63,9 @@ public class MainApplication extends Application implements HttpServletRequestLi
|
|||||||
}
|
}
|
||||||
localeConfig = new LocaleConfig(locale, "main");
|
localeConfig = new LocaleConfig(locale, "main");
|
||||||
remote = new Remote(this);
|
remote = new Remote(this);
|
||||||
String role = "NONE";
|
loginUserRole = readUserRole();
|
||||||
try {
|
mainWindow = new Window(localeConfig.getText("applicationtitle"));
|
||||||
Object rolesArrayObj = remote.callSearch("role", null);
|
Module firstModule = initTabSheet();
|
||||||
if (rolesArrayObj != null && rolesArrayObj instanceof Object[]) {
|
|
||||||
Object[] rolesArray = (Object[]) rolesArrayObj;
|
|
||||||
if (rolesArray.length > 0 && rolesArray[0] instanceof Map<?, ?>) {
|
|
||||||
role = (String) ((Map<?, ?>) rolesArray[0]).get("role");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (HsarwebException e) {
|
|
||||||
showSystemException(e);
|
|
||||||
}
|
|
||||||
Window mainWindow = new Window(localeConfig.getText("applicationtitle"));
|
|
||||||
TabSheet tabs = new TabSheet();
|
|
||||||
tabs.setSizeFull();
|
|
||||||
String modulesParamString = localeConfig.getText("modules." + role);
|
|
||||||
modules = new HashMap<String, Module>();
|
|
||||||
Module firstModule = null;
|
|
||||||
for (String className : modulesParamString.split(",")) {
|
|
||||||
try {
|
|
||||||
Module module = (Module) Class.forName(className).newInstance();
|
|
||||||
module.setApplication(this);
|
|
||||||
if (firstModule == null) {
|
|
||||||
firstModule = module;
|
|
||||||
}
|
|
||||||
ModuleConfig moduleConfig = module.getModuleConfig();
|
|
||||||
String label = moduleConfig.getLabel("moduletitle");
|
|
||||||
modules.put(label, module);
|
|
||||||
tabs.addTab((Component) module.getComponent(), label, new ThemeResource(moduleConfig.getLabel("moduleicon")));
|
|
||||||
} catch (Exception e) {
|
|
||||||
showSystemException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tabs.addListener(this);
|
|
||||||
mainWindow.setContent(tabs);
|
|
||||||
setMainWindow(mainWindow);
|
setMainWindow(mainWindow);
|
||||||
setErrorHandler(new Terminal.ErrorListener() {
|
setErrorHandler(new Terminal.ErrorListener() {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@ -106,6 +81,51 @@ public class MainApplication extends Application implements HttpServletRequestLi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String readUserRole() {
|
||||||
|
try {
|
||||||
|
Object rolesArrayObj = remote.callSearch("role", null);
|
||||||
|
if (rolesArrayObj != null && rolesArrayObj instanceof Object[]) {
|
||||||
|
Object[] rolesArray = (Object[]) rolesArrayObj;
|
||||||
|
if (rolesArray.length > 0 && rolesArray[0] instanceof Map<?, ?>) {
|
||||||
|
return (String) ((Map<?, ?>) rolesArray[0]).get("role");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (HsarwebException e) {
|
||||||
|
showSystemException(e);
|
||||||
|
}
|
||||||
|
return "NONE";
|
||||||
|
}
|
||||||
|
|
||||||
|
private Module initTabSheet() {
|
||||||
|
tabSheet = new TabSheet();
|
||||||
|
tabSheet.setSizeFull();
|
||||||
|
String modulesParamString = localeConfig.getText("modules." + readUserRole());
|
||||||
|
modules = new HashMap<String, Module>();
|
||||||
|
Module firstModule = null;
|
||||||
|
for (String className : modulesParamString.split(",")) {
|
||||||
|
try {
|
||||||
|
Module module = (Module) Class.forName(className).newInstance();
|
||||||
|
module.setApplication(this);
|
||||||
|
if (firstModule == null) {
|
||||||
|
firstModule = module;
|
||||||
|
}
|
||||||
|
ModuleConfig moduleConfig = module.getModuleConfig();
|
||||||
|
String label = moduleConfig.getLabel("moduletitle");
|
||||||
|
modules.put(label, module);
|
||||||
|
tabSheet.addTab((Component) module.getComponent(), label, new ThemeResource(moduleConfig.getLabel("moduleicon")));
|
||||||
|
} catch (Exception e) {
|
||||||
|
showSystemException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tabSheet.addListener(this);
|
||||||
|
mainWindow.setContent(tabSheet);
|
||||||
|
return firstModule;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLoginUserRole() {
|
||||||
|
return loginUserRole;
|
||||||
|
}
|
||||||
|
|
||||||
public String getProxyTicket() {
|
public String getProxyTicket() {
|
||||||
return userPrincipal.getProxyTicketFor(servletContext.getInitParameter("backendURL"));
|
return userPrincipal.getProxyTicketFor(servletContext.getInitParameter("backendURL"));
|
||||||
}
|
}
|
||||||
@ -186,4 +206,41 @@ public class MainApplication extends Application implements HttpServletRequestLi
|
|||||||
getMainWindow().showNotification("System-Fehler", "<br />Bitte informieren Sie den Support<br/ >" + e.getMessage(), Notification.TYPE_ERROR_MESSAGE);
|
getMainWindow().showNotification("System-Fehler", "<br />Bitte informieren Sie den Support<br/ >" + e.getMessage(), Notification.TYPE_ERROR_MESSAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRunAs() {
|
||||||
|
if (runAs == null) {
|
||||||
|
return getLogin();
|
||||||
|
}
|
||||||
|
return runAs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRunAs(String runAs) {
|
||||||
|
this.runAs = runAs;
|
||||||
|
initTabSheet();
|
||||||
|
Component selectedTab = tabSheet.getSelectedTab();
|
||||||
|
Tab tab = tabSheet.getTab(selectedTab);
|
||||||
|
Module module = modules.get(tab.getCaption());
|
||||||
|
try {
|
||||||
|
module.reload();
|
||||||
|
} catch (HsarwebException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
showSystemException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Object> readSelectRunAsItems() throws HsarwebException {
|
||||||
|
if (runAsList == null) {
|
||||||
|
runAsList = new ArrayList<Object>();
|
||||||
|
if ("HOSTMASTER".equals(loginUserRole)) {
|
||||||
|
runAsList = ItemsReader.readItemList(this, "member", "membercode");
|
||||||
|
}
|
||||||
|
if ("CUSTOMER".equals(loginUserRole)) {
|
||||||
|
runAsList = ItemsReader.readItemList(this, "pac", "name");
|
||||||
|
}
|
||||||
|
if (loginUserRole.startsWith("PAC")) {
|
||||||
|
runAsList = ItemsReader.readItemList(this, "user", "name");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return runAsList;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ public class Remote {
|
|||||||
|
|
||||||
private Object xmlrpcCall(String module, String operation, Map<String, String> param1) throws HsarwebException {
|
private Object xmlrpcCall(String module, String operation, Map<String, String> param1) throws HsarwebException {
|
||||||
Object[] params = new Object[3];
|
Object[] params = new Object[3];
|
||||||
params[0] = app.getLogin();
|
params[0] = app.getRunAs();
|
||||||
params[1] = app.getProxyTicket();
|
params[1] = app.getProxyTicket();
|
||||||
params[2] = param1 != null ? param1 : new HashMap<String, String>();
|
params[2] = param1 != null ? param1 : new HashMap<String, String>();
|
||||||
return xmlrpcCall(module + "." + operation, params);
|
return xmlrpcCall(module + "." + operation, params);
|
||||||
@ -44,7 +44,7 @@ public class Remote {
|
|||||||
|
|
||||||
private Object xmlrpcCall(String module, String operation, Map<String, String> param1, Map<String, String> param2) throws HsarwebException {
|
private Object xmlrpcCall(String module, String operation, Map<String, String> param1, Map<String, String> param2) throws HsarwebException {
|
||||||
Object[] params = new Object[4];
|
Object[] params = new Object[4];
|
||||||
params[0] = app.getLogin();
|
params[0] = app.getRunAs();
|
||||||
params[1] = app.getProxyTicket();
|
params[1] = app.getProxyTicket();
|
||||||
params[2] = param1 != null ? param1 : new HashMap<String, String>();
|
params[2] = param1 != null ? param1 : new HashMap<String, String>();
|
||||||
params[3] = param2 != null ? param2 : new HashMap<String, String>();
|
params[3] = param2 != null ? param2 : new HashMap<String, String>();
|
||||||
|
@ -22,7 +22,7 @@ public class UnixUserModule extends GenericModule {
|
|||||||
protected void initModule() {
|
protected void initModule() {
|
||||||
MainApplication application = getApplication();
|
MainApplication application = getApplication();
|
||||||
moduleConfig = new ModuleConfig("user", application.getLocale());
|
moduleConfig = new ModuleConfig("user", application.getLocale());
|
||||||
String login = application.getLogin();
|
String login = application.getRunAs();
|
||||||
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
||||||
PropertyConfig pacProp = new PropertyConfig(moduleConfig, "pac", String.class, PropertyTableColumn.HIDDEN, new SelectPropertyFieldFactory());
|
PropertyConfig pacProp = new PropertyConfig(moduleConfig, "pac", String.class, PropertyTableColumn.HIDDEN, new SelectPropertyFieldFactory());
|
||||||
pacProp.setSelectValues(new PropertySelectValues() {
|
pacProp.setSelectValues(new PropertySelectValues() {
|
||||||
|
@ -75,6 +75,38 @@ public class GenericForm {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Form createDeleteForm() {
|
||||||
|
try {
|
||||||
|
MainApplication application = module.getApplication();
|
||||||
|
ModuleConfig config = module.getModuleConfig();
|
||||||
|
Map<String, String> where = new HashMap<String, String>();
|
||||||
|
where.put(findIdKey(), entityId.toString());
|
||||||
|
Object searchResult = application.getRemote().callSearch(config.getRemoteName(), where);
|
||||||
|
if (searchResult instanceof Object[]) {
|
||||||
|
Map<?, ?> row = (Map<?, ?>) (((Object[]) searchResult)[0]);
|
||||||
|
Form f = new Form();
|
||||||
|
f.setCaption(config.getLabel("delete"));
|
||||||
|
f.setData(entityId);
|
||||||
|
Layout layout = f.getLayout();
|
||||||
|
for (PropertyConfig prop : config.getPropertyList()) {
|
||||||
|
if (prop.getPropFieldFactory().getClass().equals(DefaultPropertyFieldFactory.class)
|
||||||
|
&& prop.getPropTableColumn().equals(PropertyTableColumn.DISPLAY)) {
|
||||||
|
PropertyFieldFactory propFieldFactory = prop.getPropFieldFactory();
|
||||||
|
Object value = row.get(prop.getId());
|
||||||
|
Component component = (Component) propFieldFactory.createFieldComponent(prop, value);
|
||||||
|
component.setReadOnly(true);
|
||||||
|
layout.addComponent(component);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
} catch (HsarwebException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private String findIdKey() {
|
private String findIdKey() {
|
||||||
List<PropertyConfig> propertyList = module.getModuleConfig().getPropertyList();
|
List<PropertyConfig> propertyList = module.getModuleConfig().getPropertyList();
|
||||||
String idKey = null;
|
String idKey = null;
|
||||||
|
@ -13,13 +13,12 @@ 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.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.Button.ClickEvent;
|
||||||
import com.vaadin.ui.Form;
|
import com.vaadin.ui.Form;
|
||||||
import com.vaadin.ui.HorizontalLayout;
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
import com.vaadin.ui.Label;
|
|
||||||
import com.vaadin.ui.Table;
|
import com.vaadin.ui.Table;
|
||||||
import com.vaadin.ui.VerticalLayout;
|
import com.vaadin.ui.VerticalLayout;
|
||||||
import com.vaadin.ui.Window;
|
import com.vaadin.ui.Window;
|
||||||
import com.vaadin.ui.Button.ClickEvent;
|
|
||||||
import com.vaadin.ui.themes.BaseTheme;
|
import com.vaadin.ui.themes.BaseTheme;
|
||||||
|
|
||||||
import de.hsadmin.web.DeleteAble;
|
import de.hsadmin.web.DeleteAble;
|
||||||
@ -260,6 +259,7 @@ public class TableComponentFactory implements ComponentFactory, Serializable {
|
|||||||
private Button createDeleteButton(long id) {
|
private Button createDeleteButton(long id) {
|
||||||
ThemeResource icon = new ThemeResource("../runo/icons/16/document-delete.png");
|
ThemeResource icon = new ThemeResource("../runo/icons/16/document-delete.png");
|
||||||
final Button button = new Button();
|
final Button button = new Button();
|
||||||
|
final Module thisModule = module;
|
||||||
button.setIcon(icon);
|
button.setIcon(icon);
|
||||||
button.setDescription(module.getApplication().getLocaleConfig().getText("delete"));
|
button.setDescription(module.getApplication().getLocaleConfig().getText("delete"));
|
||||||
button.setData(id);
|
button.setData(id);
|
||||||
@ -269,14 +269,16 @@ public class TableComponentFactory implements ComponentFactory, Serializable {
|
|||||||
private Window childWindow;
|
private Window childWindow;
|
||||||
@Override
|
@Override
|
||||||
public void buttonClick(ClickEvent event) {
|
public void buttonClick(ClickEvent event) {
|
||||||
|
final GenericForm genericForm = new GenericForm(thisModule, (Long) button.getData());
|
||||||
|
final Form form = genericForm.createDeleteForm();
|
||||||
final MainApplication application = module.getApplication();
|
final MainApplication application = module.getApplication();
|
||||||
LocaleConfig localeConfig = application.getLocaleConfig();
|
LocaleConfig localeConfig = application.getLocaleConfig();
|
||||||
childWindow = new Window(module.getModuleConfig().getLabel("moduletitle") + " " + localeConfig.getText("delete"));
|
childWindow = new Window(module.getModuleConfig().getLabel("moduletitle") + " " + localeConfig.getText("delete"));
|
||||||
childWindow.setWidth(320.0f, Sizeable.UNITS_PIXELS);
|
childWindow.setWidth(640.0f, Sizeable.UNITS_PIXELS);
|
||||||
VerticalLayout vLayout = new VerticalLayout();
|
VerticalLayout vLayout = new VerticalLayout();
|
||||||
vLayout.setMargin(true);
|
vLayout.setMargin(true);
|
||||||
vLayout.setSpacing(true);
|
vLayout.setSpacing(true);
|
||||||
vLayout.addComponent(new Label(localeConfig.getText("confirmdelete")));
|
vLayout.addComponent(form);
|
||||||
HorizontalLayout hLayout = new HorizontalLayout();
|
HorizontalLayout hLayout = new HorizontalLayout();
|
||||||
Button btDeleteRow = new Button(localeConfig.getText("delete"));
|
Button btDeleteRow = new Button(localeConfig.getText("delete"));
|
||||||
btDeleteRow.addListener(new Button.ClickListener() {
|
btDeleteRow.addListener(new Button.ClickListener() {
|
||||||
|
@ -8,3 +8,4 @@ moduletitle=domains
|
|||||||
moduleicon=../runo/icons/16/document-web.png
|
moduleicon=../runo/icons/16/document-web.png
|
||||||
new=configure domain
|
new=configure domain
|
||||||
update=update domain
|
update=update domain
|
||||||
|
delete=delete domain
|
@ -7,4 +7,5 @@ since=aufgeschaltet seit
|
|||||||
moduletitle=Domains
|
moduletitle=Domains
|
||||||
moduleicon=../runo/icons/16/document-web.png
|
moduleicon=../runo/icons/16/document-web.png
|
||||||
new=Domain konfigurieren
|
new=Domain konfigurieren
|
||||||
update=Domaindaten ändern
|
update=Domainkonfiguration ändern
|
||||||
|
delete=Domainkonfiguration löschen
|
@ -11,3 +11,4 @@ moduletitle=email addresses
|
|||||||
moduleicon=../runo/icons/16/email.png
|
moduleicon=../runo/icons/16/email.png
|
||||||
new=create address
|
new=create address
|
||||||
update=update address
|
update=update address
|
||||||
|
delete=delete address
|
@ -11,3 +11,4 @@ moduletitle=EMail Adressen
|
|||||||
moduleicon=../runo/icons/16/email.png
|
moduleicon=../runo/icons/16/email.png
|
||||||
new=EMail-Adresse anlegen
|
new=EMail-Adresse anlegen
|
||||||
update=EMail-Adresse ändern
|
update=EMail-Adresse ändern
|
||||||
|
delete=EMail-Adresse löschen
|
@ -6,3 +6,4 @@ moduletitle=email aliases
|
|||||||
moduleicon=../runo/icons/16/email-send.png
|
moduleicon=../runo/icons/16/email-send.png
|
||||||
new=create alias
|
new=create alias
|
||||||
update=update alias
|
update=update alias
|
||||||
|
delete=delete alias
|
@ -6,3 +6,4 @@ moduletitle=EMail Aliases
|
|||||||
moduleicon=../runo/icons/16/email-send.png
|
moduleicon=../runo/icons/16/email-send.png
|
||||||
new=EMail-Alias anlegen
|
new=EMail-Alias anlegen
|
||||||
update=EMail-Alias ändern
|
update=EMail-Alias ändern
|
||||||
|
delete=EMail-Alias löschen
|
@ -5,6 +5,8 @@ confirmdelete=confirm delete
|
|||||||
save=save
|
save=save
|
||||||
abort=abort
|
abort=abort
|
||||||
new=new
|
new=new
|
||||||
|
runas=<strong>select</strong><br />change user perspective
|
||||||
|
logout=logout
|
||||||
modules.NONE=de.hsadmin.web.HomeModule
|
modules.NONE=de.hsadmin.web.HomeModule
|
||||||
modules.USER=de.hsadmin.web.HomeModule
|
modules.USER=de.hsadmin.web.HomeModule
|
||||||
modules.DOM_ADMIN=de.hsadmin.web.DomainReadonlyModule,de.hsadmin.web.EMailAddressModule,de.hsadmin.web.HomeModule
|
modules.DOM_ADMIN=de.hsadmin.web.DomainReadonlyModule,de.hsadmin.web.EMailAddressModule,de.hsadmin.web.HomeModule
|
||||||
|
@ -5,3 +5,5 @@ confirmdelete=Diesen Eintrag l
|
|||||||
save=speichern
|
save=speichern
|
||||||
abort=abbrechen
|
abort=abbrechen
|
||||||
new=Eintrag anlegen
|
new=Eintrag anlegen
|
||||||
|
runas=<strong>Auswahl/Eingabe:</strong><br />zur Ansicht eines anderen<br />Benutzers wechseln
|
||||||
|
logout=abmelden
|
||||||
|
@ -4,6 +4,7 @@ pac=packet
|
|||||||
encoding=encoding
|
encoding=encoding
|
||||||
owner=owner
|
owner=owner
|
||||||
moduletitle=mysql db
|
moduletitle=mysql db
|
||||||
new=create db
|
new=create database
|
||||||
update=update db
|
update=database
|
||||||
|
delete=delete database
|
||||||
moduleicon=../hs/icons/table.png
|
moduleicon=../hs/icons/table.png
|
@ -5,5 +5,6 @@ encoding=Zeichensatz
|
|||||||
owner=Verwalter
|
owner=Verwalter
|
||||||
moduletitle=MySQL DB
|
moduletitle=MySQL DB
|
||||||
new=Datenbank anlegen
|
new=Datenbank anlegen
|
||||||
update=Datenbank ändern
|
update=Datenbank
|
||||||
|
delete=Datenbank löschen
|
||||||
moduleicon=../hs/icons/table.png
|
moduleicon=../hs/icons/table.png
|
@ -7,4 +7,5 @@ pac=packet
|
|||||||
moduletitle=mysql user
|
moduletitle=mysql user
|
||||||
new=create user
|
new=create user
|
||||||
update=change password
|
update=change password
|
||||||
|
delete=delete user
|
||||||
moduleicon=../hs/icons/table_key.png
|
moduleicon=../hs/icons/table_key.png
|
@ -7,4 +7,5 @@ pac=Paket
|
|||||||
moduletitle=MySQL User
|
moduletitle=MySQL User
|
||||||
new=User anlegen
|
new=User anlegen
|
||||||
update=Passwort ändern
|
update=Passwort ändern
|
||||||
|
delete=User löschen
|
||||||
moduleicon=../hs/icons/table_key.png
|
moduleicon=../hs/icons/table_key.png
|
@ -4,6 +4,7 @@ pac=packet
|
|||||||
encoding=encoding
|
encoding=encoding
|
||||||
owner=owner
|
owner=owner
|
||||||
moduletitle=postgresql db
|
moduletitle=postgresql db
|
||||||
new=create db
|
new=create database
|
||||||
update=database
|
update=database
|
||||||
|
delete=delete database
|
||||||
moduleicon=../hs/icons/database.png
|
moduleicon=../hs/icons/database.png
|
@ -6,4 +6,5 @@ owner=Verwalter
|
|||||||
moduletitle=PostgreSQL DB
|
moduletitle=PostgreSQL DB
|
||||||
new=Datenbank anlegen
|
new=Datenbank anlegen
|
||||||
update=Datenbank
|
update=Datenbank
|
||||||
|
delete=Datenbank löschen
|
||||||
moduleicon=../hs/icons/database.png
|
moduleicon=../hs/icons/database.png
|
@ -7,4 +7,5 @@ pac=packet
|
|||||||
moduletitle=postgres user
|
moduletitle=postgres user
|
||||||
new=create user
|
new=create user
|
||||||
update=change password
|
update=change password
|
||||||
|
delete=delete user
|
||||||
moduleicon=../hs/icons/database_key.png
|
moduleicon=../hs/icons/database_key.png
|
@ -7,4 +7,5 @@ pac=Paket
|
|||||||
moduletitle=PostgreSQL User
|
moduletitle=PostgreSQL User
|
||||||
new=User anlegen
|
new=User anlegen
|
||||||
update=Passwort ändern
|
update=Passwort ändern
|
||||||
|
delete=User löschen
|
||||||
moduleicon=../hs/icons/database_key.png
|
moduleicon=../hs/icons/database_key.png
|
@ -13,4 +13,5 @@ quota_hardlimit=quota hard limit
|
|||||||
moduletitle=unix user
|
moduletitle=unix user
|
||||||
new=create user
|
new=create user
|
||||||
update=update user
|
update=update user
|
||||||
|
delete=delete user
|
||||||
moduleicon=../runo/icons/16/users.png
|
moduleicon=../runo/icons/16/users.png
|
@ -14,3 +14,4 @@ moduletitle=Unix User
|
|||||||
moduleicon=../runo/icons/16/users.png
|
moduleicon=../runo/icons/16/users.png
|
||||||
new=Benutzer anlegen
|
new=Benutzer anlegen
|
||||||
update=Benutzer ändern
|
update=Benutzer ändern
|
||||||
|
delete=Benutzer löschen
|
Loading…
Reference in New Issue
Block a user