Gjort alla länkar till bookmarkable och sett till att endast ha defaultkonstruktorer på sidorna. Fixat exceptions och sidor man kan kasta för 404 och om man inte har rättigheter på något som man inte kan kolla med befintliga mekanismer. Fixat diverse buggar i templatessidorna
git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@540 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
parent
755c4be7ef
commit
e1ae365d77
src/main
java/se/su/dsv/scipro
SciProApplication.java
basepages/errorpages
basepanels
exceptions
schedule
pages
panels
templates
pages
ScheduleTemplateDetailsPage.javaScheduleTemplateEditorPage.javaScheduleTemplatesEditorAdminPage.htmlScheduleTemplatesEditorAdminPage.javaScheduleTemplatesEditorPage.htmlScheduleTemplatesEditorPage.javaScheduleTemplatesEditorSupervisorPage.htmlScheduleTemplatesEditorSupervisorPage.javaScheduleTemplatesSupervisorPage.java
panels
webapp/WEB-INF
@ -8,15 +8,16 @@ import org.apache.wicket.ResourceReference;
|
||||
import org.apache.wicket.Response;
|
||||
import org.apache.wicket.Session;
|
||||
import org.apache.wicket.authorization.strategies.CompoundAuthorizationStrategy;
|
||||
import org.apache.wicket.injection.web.InjectorHolder;
|
||||
import org.apache.wicket.protocol.http.WebApplication;
|
||||
import org.odlabs.wiquery.ui.themes.IThemableApplication;
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
import org.springframework.web.context.support.WebApplicationContextUtils;
|
||||
|
||||
import se.su.dsv.scipro.basepages.DemoPage;
|
||||
import se.su.dsv.scipro.basepages.SystemSettingsPage;
|
||||
import se.su.dsv.scipro.knol.resource.page.BookmarkableResourcePage;
|
||||
import se.su.dsv.scipro.basepages.SystemSettingsPage;
|
||||
import se.su.dsv.scipro.basepages.errorpages.AccessDeniedPage;
|
||||
import se.su.dsv.scipro.basepages.errorpages.NotFoundPage;
|
||||
import se.su.dsv.scipro.knol.resource.page.BookmarkableResourcePage;
|
||||
import se.su.dsv.scipro.knol.resource.page.ResourcePage;
|
||||
import se.su.dsv.scipro.loginlogout.pages.LoginPage;
|
||||
import se.su.dsv.scipro.loginlogout.pages.LogoutPage;
|
||||
@ -28,15 +29,17 @@ import se.su.dsv.scipro.project.pages.ProjectStartPage;
|
||||
import se.su.dsv.scipro.repository.RepositoryApplication;
|
||||
import se.su.dsv.scipro.repository.pages.SysAdminFilePage;
|
||||
import se.su.dsv.scipro.schedule.pages.EventPage;
|
||||
import se.su.dsv.scipro.schedule.pages.ScheduleGeneratorPage;
|
||||
import se.su.dsv.scipro.schedule.pages.SchedulePlannerPage;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplateDetailsPage;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplatesAdminPage;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplatesEditorAdminPage;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplatesEditorSupervisorPage;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplatesSupervisorPage;
|
||||
import se.su.dsv.scipro.security.auth.ComponentSecurityLogger;
|
||||
import se.su.dsv.scipro.security.auth.MetaDataActionStrategy;
|
||||
import se.su.dsv.scipro.security.auth.RoleBasedAuthorizationStrategy;
|
||||
import se.su.dsv.scipro.wiquery.themes.ThemeResourceReference;
|
||||
import se.su.dsv.scipro.workerthreads.Scheduler;
|
||||
|
||||
/**
|
||||
* Application object for your web application. If you want to run this application without deploying, run the Start class.
|
||||
@ -95,17 +98,28 @@ public class SciProApplication extends RepositoryApplication implements IThemabl
|
||||
mountBookmarkablePage("res", BookmarkableResourcePage.class);
|
||||
mountBookmarkablePage("demo", DemoPage.class);
|
||||
mountBookmarkablePage("project/schedule/event", EventPage.class);
|
||||
mountBookmarkablePage("project/schedule/generator", ScheduleGeneratorPage.class);
|
||||
mountBookmarkablePage("templates/details", ScheduleTemplateDetailsPage.class);
|
||||
mountBookmarkablePage("admin/templates", ScheduleTemplatesAdminPage.class);
|
||||
mountBookmarkablePage("supervisor/templates", ScheduleTemplatesSupervisorPage.class);
|
||||
|
||||
mountBookmarkablePage("admin/templates/editor", ScheduleTemplatesEditorAdminPage.class);
|
||||
mountBookmarkablePage("supervisor/templates/editor", ScheduleTemplatesEditorSupervisorPage.class);
|
||||
|
||||
/*
|
||||
* Error pages
|
||||
*/
|
||||
mountBookmarkablePage("404", NotFoundPage.class);
|
||||
mountBookmarkablePage("403", AccessDeniedPage.class);
|
||||
|
||||
getApplicationSettings().setAccessDeniedPage(AccessDeniedPage.class);
|
||||
|
||||
addComponentInstantiationListener(getSpringInjector());
|
||||
|
||||
CompoundAuthorizationStrategy cas = new CompoundAuthorizationStrategy();
|
||||
cas.add(new RoleBasedAuthorizationStrategy());
|
||||
cas.add(new MetaDataActionStrategy());
|
||||
getSecuritySettings().setAuthorizationStrategy(cas);
|
||||
|
||||
|
||||
//getResourceSettings().setThrowExceptionOnMissingResource(false);
|
||||
//getResourceSettings().addStringResourceLoader(new JpaStringResourceLoader());
|
||||
getSecuritySettings().setUnauthorizedComponentInstantiationListener(new ComponentSecurityLogger());
|
||||
|
@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en"
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<div class="span-22 last append-bottom">
|
||||
<h3>403: Forbidden</h3>
|
||||
<span>You don't have access to the requested page</span>
|
||||
</div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,27 @@
|
||||
package se.su.dsv.scipro.basepages.errorpages;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import se.su.dsv.scipro.basepages.MenuPage;
|
||||
|
||||
public class AccessDeniedPage extends MenuPage {
|
||||
|
||||
public AccessDeniedPage(){}
|
||||
|
||||
@Override
|
||||
protected void configureResponse() {
|
||||
super.configureResponse();
|
||||
getWebRequestCycle().getWebResponse().getHttpServletResponse().setStatus(HttpServletResponse.SC_FORBIDDEN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVersioned() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isErrorPage() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en"
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<div class="span-22 last append-bottom">
|
||||
<h3>404: Page not found</h3>
|
||||
<span>The requested page was not found</span>
|
||||
</div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,34 @@
|
||||
package se.su.dsv.scipro.basepages.errorpages;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
|
||||
import se.su.dsv.scipro.basepages.MenuPage;
|
||||
|
||||
public class NotFoundPage extends MenuPage {
|
||||
|
||||
public NotFoundPage(final PageParameters pp){
|
||||
}
|
||||
|
||||
public NotFoundPage(){
|
||||
this(new PageParameters());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureResponse() {
|
||||
super.configureResponse();
|
||||
getWebRequestCycle().getWebResponse().getHttpServletResponse().setStatus(HttpServletResponse.SC_NOT_FOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVersioned() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isErrorPage() {
|
||||
return true;
|
||||
}
|
||||
}
|
@ -32,42 +32,23 @@ public class MainMenuPanel extends Panel {
|
||||
/*
|
||||
* Project
|
||||
*/
|
||||
add(new Link<Void>("projectScheduleLink"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onClick() {
|
||||
PageParameters pp = new PageParameters();
|
||||
pp.add("pid", String.valueOf(SciProSession.get().getActiveProject().getId()));
|
||||
setResponsePage(SchedulePlannerPage.class, pp);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
final PageParameters projectScheduleParams = new PageParameters();
|
||||
if(SciProSession.get().getActiveProject() != null){
|
||||
projectScheduleParams.put("pid", String.valueOf(SciProSession.get().getActiveProject().getId()));
|
||||
}
|
||||
add(new BookmarkablePageLink<SchedulePlannerPage>("projectScheduleLink", SchedulePlannerPage.class, projectScheduleParams));
|
||||
|
||||
|
||||
/*
|
||||
* Supervisor
|
||||
*/
|
||||
add(new Link<Void>("supervisorTemplatesLink"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
public void onClick() {
|
||||
setResponsePage(ScheduleTemplatesSupervisorPage.class);
|
||||
}
|
||||
|
||||
});
|
||||
add(new BookmarkablePageLink<ScheduleTemplatesSupervisorPage>("supervisorTemplatesLink", ScheduleTemplatesSupervisorPage.class));
|
||||
|
||||
/*
|
||||
* Admin
|
||||
*/
|
||||
add(new Link<Void>("sysadminTemplatesLink"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
public void onClick() {
|
||||
setResponsePage(ScheduleTemplatesAdminPage.class);
|
||||
}
|
||||
|
||||
});
|
||||
add(new BookmarkablePageLink<ScheduleTemplatesAdminPage>("sysadminTemplatesLink", ScheduleTemplatesAdminPage.class));
|
||||
}
|
||||
|
||||
private BookmarkablePageLink<Void> getMenuLink(String id, final Class<? extends Page> targetPageClass, final Class<? extends Page> containerClass){
|
||||
|
@ -0,0 +1,15 @@
|
||||
package se.su.dsv.scipro.exceptions;
|
||||
|
||||
import org.apache.wicket.Component;
|
||||
import org.apache.wicket.authorization.UnauthorizedInstantiationException;
|
||||
|
||||
public class AccessDeniedException extends UnauthorizedInstantiationException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public AccessDeniedException(final Component comp){
|
||||
super(comp.getClass());
|
||||
System.out.println("Access denied to page "+ comp.getClass().getCanonicalName());
|
||||
//TODO: Possibly log exception...
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package se.su.dsv.scipro.exceptions;
|
||||
|
||||
import org.apache.wicket.Page;
|
||||
import org.apache.wicket.RestartResponseAtInterceptPageException;
|
||||
import org.apache.wicket.WicketRuntimeException;
|
||||
|
||||
import se.su.dsv.scipro.basepages.errorpages.NotFoundPage;
|
||||
|
||||
public class PageNotFoundException extends WicketRuntimeException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public PageNotFoundException(final Page page){
|
||||
throw new RestartResponseAtInterceptPageException(NotFoundPage.class);
|
||||
//TODO: Possibly log something...
|
||||
}
|
||||
|
||||
}
|
@ -49,6 +49,7 @@ import se.su.dsv.scipro.schedule.templates.panels.ScheduleTemplateDetailsPanel;
|
||||
import se.su.dsv.scipro.schedule.templates.panels.ScheduleTemplateFilterPanel;
|
||||
import se.su.dsv.scipro.schedule.templates.panels.models.ScheduleTemplatesModel;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
import se.su.dsv.scipro.util.ScheduleGenerator;
|
||||
import se.su.dsv.scipro.util.ScheduleGeneratorResult;
|
||||
import se.su.dsv.scipro.util.WiQueryCoreEffectsHelper;
|
||||
@ -69,6 +70,10 @@ public class ScheduleGeneratorPage extends SchedulePage {
|
||||
public ScheduleGeneratorPage(final PageParameters pp){
|
||||
super(pp);
|
||||
|
||||
if(project.getProjectSchedule() != null){
|
||||
setResponsePage(SchedulePlannerPage.class, pp);
|
||||
}
|
||||
|
||||
templateModel = new ScheduleTemplatesModel();
|
||||
|
||||
dialog = new Dialog("dialog");
|
||||
@ -281,7 +286,7 @@ public class ScheduleGeneratorPage extends SchedulePage {
|
||||
projectEventDao.save(e);
|
||||
}
|
||||
final PageParameters pp = new PageParameters();
|
||||
pp.put("id", project.getId());
|
||||
pp.put("pid", project.getId());
|
||||
setResponsePage(SchedulePlannerPage.class, pp);
|
||||
}
|
||||
});
|
||||
|
@ -1,15 +1,15 @@
|
||||
package se.su.dsv.scipro.schedule.pages;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.Project;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.exceptions.AccessDeniedException;
|
||||
import se.su.dsv.scipro.exceptions.PageNotFoundException;
|
||||
import se.su.dsv.scipro.project.pages.ProjectPage;
|
||||
import se.su.dsv.scipro.schedule.panels.SchedulePlannerPanel;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
|
||||
public abstract class SchedulePage extends ProjectPage {
|
||||
|
||||
@ -28,7 +28,12 @@ public abstract class SchedulePage extends ProjectPage {
|
||||
}
|
||||
|
||||
if(project == null || pid == null){
|
||||
//TODO: 404
|
||||
throw new PageNotFoundException(this);
|
||||
}
|
||||
|
||||
if(!SciProSession.get().authorizedForRole(Roles.SYSADMIN) &&
|
||||
!projectDao.isPartOf(SciProSession.get().getUser(), project)){
|
||||
throw new AccessDeniedException(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ public class SchedulePlannerPanel extends Panel implements ISchedulePlannerPanel
|
||||
@Override
|
||||
public void onClick() {
|
||||
final PageParameters pp = new PageParameters();
|
||||
pp.put("id", project.getId());
|
||||
pp.put("pid", project.getId());
|
||||
setResponsePage(ScheduleGeneratorPage.class, pp);
|
||||
}
|
||||
};
|
||||
@ -115,7 +115,7 @@ public class SchedulePlannerPanel extends Panel implements ISchedulePlannerPanel
|
||||
ps.setProject(project);
|
||||
ps = projectScheduleDao.save(ps);
|
||||
final PageParameters pp = new PageParameters();
|
||||
pp.put("id", project.getId());
|
||||
pp.put("pid", project.getId());
|
||||
setResponsePage(SchedulePlannerPage.class, pp);
|
||||
}
|
||||
};
|
||||
|
@ -6,26 +6,26 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import se.su.dsv.scipro.basepages.MenuPage;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.exceptions.PageNotFoundException;
|
||||
import se.su.dsv.scipro.schedule.templates.panels.ScheduleTemplateDetailsPanel;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
|
||||
@Authorization(requiresLoggedInUser=false)
|
||||
public class ScheduleTemplateDetailsPage extends MenuPage {
|
||||
|
||||
@SpringBean
|
||||
private ScheduleTemplateDao scheduleTemplateDao;
|
||||
|
||||
public ScheduleTemplateDetailsPage(final PageParameters pp){
|
||||
Long id = pp.getAsLong("id");
|
||||
Long id = pp.getAsLong("tid");
|
||||
|
||||
if(id == null){
|
||||
//TODO: 404
|
||||
throw new PageNotFoundException(this);
|
||||
}
|
||||
|
||||
ScheduleTemplate s = scheduleTemplateDao.load(id);
|
||||
|
||||
if(s == null){
|
||||
//404
|
||||
throw new PageNotFoundException(this);
|
||||
}
|
||||
|
||||
add(new ScheduleTemplateDetailsPanel("scheduleTemplateDetailsPanel", s));
|
||||
|
@ -1,33 +0,0 @@
|
||||
package se.su.dsv.scipro.schedule.templates.pages;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.basepages.MenuPage;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.schedule.templates.panels.ScheduleTemplateFormPanel;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
|
||||
@Authorization(requiresLoggedInUser=false)
|
||||
public class ScheduleTemplateEditorPage extends MenuPage {
|
||||
|
||||
@SpringBean
|
||||
private ScheduleTemplateDao scheduleTemplateDao;
|
||||
|
||||
public ScheduleTemplateEditorPage(final PageParameters pp, Long id, final boolean isSysAdminView){
|
||||
super(pp);
|
||||
ScheduleTemplate st = null;
|
||||
|
||||
if(id != null){
|
||||
st = scheduleTemplateDao.load(id);
|
||||
}
|
||||
|
||||
add(new ScheduleTemplateFormPanel("scheduleTemplateFormPanel", st, isSysAdminView));
|
||||
}
|
||||
|
||||
public ScheduleTemplateEditorPage(final boolean isSysAdminView){
|
||||
this(new PageParameters(), null, isSysAdminView);
|
||||
}
|
||||
|
||||
}
|
21
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplatesEditorAdminPage.java
Normal file
21
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplatesEditorAdminPage.java
Normal file
@ -0,0 +1,21 @@
|
||||
package se.su.dsv.scipro.schedule.templates.pages;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
|
||||
import se.su.dsv.scipro.schedule.templates.panels.ScheduleTemplateFormPanel;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
|
||||
@Authorization(authorizedRoles={Roles.SYSADMIN})
|
||||
public class ScheduleTemplatesEditorAdminPage extends ScheduleTemplatesEditorPage {
|
||||
|
||||
public ScheduleTemplatesEditorAdminPage(final PageParameters pp) {
|
||||
super(pp);
|
||||
add(new ScheduleTemplateFormPanel("scheduleTemplateFormPanel", template, true));
|
||||
}
|
||||
|
||||
public ScheduleTemplatesEditorAdminPage(){
|
||||
this(new PageParameters());
|
||||
}
|
||||
|
||||
}
|
8
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplatesEditorPage.html
Normal file
8
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplatesEditorPage.html
Normal file
@ -0,0 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<wicket:child />
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
35
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplatesEditorPage.java
Normal file
35
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplatesEditorPage.java
Normal file
@ -0,0 +1,35 @@
|
||||
package se.su.dsv.scipro.schedule.templates.pages;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.basepages.MenuPage;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.exceptions.AccessDeniedException;
|
||||
import se.su.dsv.scipro.exceptions.PageNotFoundException;
|
||||
|
||||
public abstract class ScheduleTemplatesEditorPage extends MenuPage {
|
||||
|
||||
@SpringBean
|
||||
private ScheduleTemplateDao scheduleTemplateDao;
|
||||
|
||||
protected ScheduleTemplate template = null;
|
||||
|
||||
public ScheduleTemplatesEditorPage(final PageParameters pp){
|
||||
super(pp);
|
||||
|
||||
Long id = pp.getAsLong("tid");
|
||||
|
||||
if(id != null){
|
||||
template = scheduleTemplateDao.load(id);
|
||||
}
|
||||
|
||||
if(template != null && !SciProSession.get().getUser().equals(template.getCreator())){
|
||||
throw new AccessDeniedException(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
8
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplatesEditorSupervisorPage.html
Normal file
8
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplatesEditorSupervisorPage.html
Normal file
@ -0,0 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<div wicket:id="scheduleTemplateFormPanel"></div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
21
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplatesEditorSupervisorPage.java
Normal file
21
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplatesEditorSupervisorPage.java
Normal file
@ -0,0 +1,21 @@
|
||||
package se.su.dsv.scipro.schedule.templates.pages;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
|
||||
import se.su.dsv.scipro.schedule.templates.panels.ScheduleTemplateFormPanel;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
|
||||
@Authorization(authorizedRoles={Roles.EMPLOYEE})
|
||||
public class ScheduleTemplatesEditorSupervisorPage extends ScheduleTemplatesEditorPage {
|
||||
|
||||
public ScheduleTemplatesEditorSupervisorPage(final PageParameters pp) {
|
||||
super(pp);
|
||||
add(new ScheduleTemplateFormPanel("scheduleTemplateFormPanel", template, false));
|
||||
}
|
||||
|
||||
public ScheduleTemplatesEditorSupervisorPage(){
|
||||
this(new PageParameters());
|
||||
}
|
||||
|
||||
}
|
@ -4,7 +4,10 @@ import org.apache.wicket.PageParameters;
|
||||
|
||||
import se.su.dsv.scipro.basepages.MenuPage;
|
||||
import se.su.dsv.scipro.schedule.templates.panels.ScheduleTemplatePanel;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
|
||||
@Authorization(authorizedRoles={Roles.EMPLOYEE})
|
||||
public class ScheduleTemplatesSupervisorPage extends MenuPage {
|
||||
|
||||
public ScheduleTemplatesSupervisorPage(final PageParameters pp){
|
||||
|
@ -61,7 +61,7 @@ public class ScheduleTemplateDetailsPanel extends Panel {
|
||||
|
||||
|
||||
final PageParameters pp = new PageParameters();
|
||||
pp.put("id", template.getId());
|
||||
pp.put("tid", template.getId());
|
||||
BookmarkablePageLink<ScheduleTemplateDetailsPage> directLink = new BookmarkablePageLink<ScheduleTemplateDetailsPage>("directLink", ScheduleTemplateDetailsPage.class, pp);
|
||||
add(directLink);
|
||||
|
||||
|
@ -1,19 +1,15 @@
|
||||
package se.su.dsv.scipro.schedule.templates.panels;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
|
||||
import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
|
||||
import org.apache.wicket.datetime.PatternDateConverter;
|
||||
import org.apache.wicket.datetime.markup.html.basic.DateLabel;
|
||||
import org.apache.wicket.extensions.ajax.markup.html.AjaxIndicatorAppender;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.DropDownChoice;
|
||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
||||
import org.apache.wicket.markup.html.link.Link;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.PageableListView;
|
||||
@ -29,10 +25,11 @@ import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.icons.ActionIcon;
|
||||
import se.su.dsv.scipro.icons.AjaxActionIcon;
|
||||
import se.su.dsv.scipro.icons.ImageIcon;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplateEditorPage;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplatesEditorAdminPage;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplatesEditorSupervisorPage;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplatesEditorPage;
|
||||
import se.su.dsv.scipro.schedule.templates.panels.models.ScheduleTemplatesModel;
|
||||
import se.su.dsv.scipro.util.JavascriptEventConfirmation;
|
||||
import se.su.dsv.scipro.util.SelectOption;
|
||||
import se.su.dsv.scipro.util.WiQueryCoreEffectsHelper;
|
||||
|
||||
public class ScheduleTemplatePanel extends Panel {
|
||||
@ -58,10 +55,11 @@ public class ScheduleTemplatePanel extends Panel {
|
||||
private WebMarkupContainer templateListContainer;
|
||||
private ScheduleTemplatesModel templateModel;
|
||||
private WebMarkupContainer templateDetailsContainer;
|
||||
private boolean isSysAdminView = false;
|
||||
|
||||
public ScheduleTemplatePanel(String id, final boolean isSysAdminView) {
|
||||
super(id);
|
||||
|
||||
this.isSysAdminView = isSysAdminView;
|
||||
templateModel = new ScheduleTemplatesModel();
|
||||
|
||||
templateDetailsContainer = new WebMarkupContainer("templateDetailsContainer");
|
||||
@ -91,17 +89,8 @@ public class ScheduleTemplatePanel extends Panel {
|
||||
item.add(new DateLabel("templateUpdated", new Model<Date>(s.getLastModified()), pc));
|
||||
|
||||
ImageIcon editIcon = new ImageIcon("editIcon", ImageIcon.ICON_EDIT);
|
||||
Link<Void> editLink = new Link<Void>("editLink"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
public void onClick() {
|
||||
setResponsePage(new ScheduleTemplateEditorPage(new PageParameters(), s.getId(), isSysAdminView));
|
||||
}
|
||||
@Override
|
||||
public boolean isVisible(){
|
||||
return isSysAdminView || s.getCreator().equals(SciProSession.get().getUser());
|
||||
}
|
||||
};
|
||||
BookmarkablePageLink<ScheduleTemplatesEditorPage> editLink = getEditorLink("editLink", s.getId());
|
||||
editLink.setVisible(isSysAdminView || s.getCreator().equals(SciProSession.get().getUser()));
|
||||
editLink.add(editIcon);
|
||||
item.add(editLink);
|
||||
|
||||
@ -159,20 +148,25 @@ public class ScheduleTemplatePanel extends Panel {
|
||||
templateListContainer.add(templateList);
|
||||
add(templateListContainer);
|
||||
|
||||
Link<Void> createNewLink = new Link<Void>("createNew"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
public void onClick() {
|
||||
setResponsePage(new ScheduleTemplateEditorPage(isSysAdminView));
|
||||
}
|
||||
};
|
||||
createNewLink.add(new ActionIcon("createNewIcon", ActionIcon.ICON_ADD, "Create new"));
|
||||
BookmarkablePageLink<ScheduleTemplatesEditorPage> createNewLink = getEditorLink("createNew", null);
|
||||
createNewLink.add(new ImageIcon("createNewIcon", ImageIcon.ICON_ADD, "Create new"));
|
||||
add(createNewLink);
|
||||
|
||||
add(templateDetailsContainer);
|
||||
}
|
||||
|
||||
public void reloadTemplateList(){
|
||||
templateModel.reloadModel();
|
||||
}
|
||||
|
||||
private BookmarkablePageLink<ScheduleTemplatesEditorPage> getEditorLink(String id, Long tid){
|
||||
PageParameters pp = new PageParameters();
|
||||
if(tid != null){
|
||||
pp.put("tid", tid);
|
||||
}
|
||||
if(isSysAdminView){
|
||||
return new BookmarkablePageLink<ScheduleTemplatesEditorPage>(id, ScheduleTemplatesEditorAdminPage.class, pp);
|
||||
} else {
|
||||
return new BookmarkablePageLink<ScheduleTemplatesEditorPage>(id, ScheduleTemplatesEditorSupervisorPage.class, pp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,8 +28,15 @@
|
||||
<filter-mapping>
|
||||
<filter-name>wicket.WicketWarp</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
<dispatcher>REQUEST</dispatcher>
|
||||
<dispatcher>ERROR</dispatcher>
|
||||
</filter-mapping>
|
||||
|
||||
<error-page>
|
||||
<error-code>404</error-code>
|
||||
<location>/404</location>
|
||||
</error-page>
|
||||
|
||||
<!-- Session timeout set to 8 hours -->
|
||||
<session-config>
|
||||
<session-timeout>480</session-timeout>
|
||||
@ -39,7 +46,7 @@
|
||||
<context-param>
|
||||
<param-name>configuration</param-name>
|
||||
<param-value>development</param-value>
|
||||
<!-- param-value>deployment</param-value-->
|
||||
<!-- <param-value>deployment</param-value>-->
|
||||
</context-param>
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user