Merge branch 'develop' of ssh://git.dsv.su.se/git/scipro/scipro into develop
This commit is contained in:
commit
a31d7218c5
src
main
java/se/su/dsv/scipro
webapp
test/java/se/su/dsv/scipro/dao/jpa
@ -10,9 +10,10 @@ import se.su.dsv.scipro.admin.pages.settings.AdminFinalSeminarSettingsPage;
|
||||
import se.su.dsv.scipro.admin.pages.settings.AdminFinalSeminarSettingsPerProjectClassPage;
|
||||
import se.su.dsv.scipro.admin.pages.settings.AdminGeneralSettingsPage;
|
||||
import se.su.dsv.scipro.admin.pages.settings.AdminPeerSettingsPage;
|
||||
import se.su.dsv.scipro.admin.pages.settings.AdminProjectClassSettingsPage;
|
||||
import se.su.dsv.scipro.admin.pages.settings.AdminServerEnvironmentSettingsPage;
|
||||
|
||||
import se.su.dsv.scipro.components.AbstractMenuPanel;
|
||||
import se.su.dsv.scipro.icons.ImageIcon;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
|
||||
@ -32,8 +33,10 @@ public abstract class AbstractAdminSettingsPage extends AbstractAdminPage {
|
||||
items.add(new MenuItem("General settings", AdminGeneralSettingsPage.class));
|
||||
items.add(new MenuItem("Server Environment", AdminServerEnvironmentSettingsPage.class));
|
||||
items.add(new MenuItem("Final seminar general settings", AdminFinalSeminarSettingsPage.class));
|
||||
items.add(new MenuItem("Final seminar project level settings", AdminFinalSeminarSettingsPerProjectClassPage.class));
|
||||
items.add(new MenuItem("Peer settings", AdminPeerSettingsPage.class /*,ImageIcon.ICON_SETTINGS */));
|
||||
items.add(new MenuItem("Final seminar project level settings", AdminFinalSeminarSettingsPerProjectClassPage.class));
|
||||
items.add(new MenuItem("Level settings", AdminPeerSettingsPage.class));
|
||||
items.add(new MenuItem("Edit levels", AdminProjectClassSettingsPage.class));
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
|
60
src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
Normal file
60
src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
Normal file
@ -0,0 +1,60 @@
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:extend>
|
||||
|
||||
<!-- Edit/add dialog -->
|
||||
<div wicket:id="dialog">
|
||||
<div wicket:id="dialogContent"></div>
|
||||
</div>
|
||||
|
||||
<a href=# wicket:id="createLink"><img src="images/icons/add_16x16.png" alt=""/> Create new level</a>
|
||||
<div class="span-15 last">
|
||||
<h3 class="section">Active</h3>
|
||||
</div>
|
||||
<table class="rounded-table-top">
|
||||
<tr>
|
||||
<th>Code</th>
|
||||
<th>Name</th>
|
||||
<th>Description</th>
|
||||
<th>Edit</th>
|
||||
</tr>
|
||||
<tr>
|
||||
</tr>
|
||||
<tbody wicket:id="activeProjectClassContainer">
|
||||
<tr wicket:id="projectClassList">
|
||||
<td wicket:id="code"></td>
|
||||
<td wicket:id="name"></td>
|
||||
<td wicket:id="desc"></td>
|
||||
<td><a href=# wicket:id="editLink"><img src="images/icons/edit_16x16.png" " alt="Edit" title="Edit"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="span-15 last">
|
||||
<h3 class="section">Inactive</h3>
|
||||
</div>
|
||||
<table class="rounded-table-top">
|
||||
<tr>
|
||||
<th>Code</th>
|
||||
<th>Name</th>
|
||||
<th>Description</th>
|
||||
<th>Edit</th>
|
||||
</tr>
|
||||
<tr>
|
||||
</tr>
|
||||
<tbody wicket:id="deletedProjectClassContainer">
|
||||
<tr wicket:id="projectClassListDel">
|
||||
<td wicket:id="codeDel"></td>
|
||||
<td wicket:id="nameDel"></td>
|
||||
<td wicket:id="descDel"></td>
|
||||
<td><a href=# wicket:id="undeleteLink">Activate</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
154
src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
Normal file
154
src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
Normal file
@ -0,0 +1,154 @@
|
||||
package se.su.dsv.scipro.admin.pages.settings;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.basic.MultiLineLabel;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.LoadableDetachableModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||
|
||||
import se.su.dsv.scipro.admin.pages.AbstractAdminSettingsPage;
|
||||
import se.su.dsv.scipro.admin.panels.AdminProjectClassPanel;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
|
||||
public class AdminProjectClassSettingsPage extends AbstractAdminSettingsPage {
|
||||
|
||||
@SpringBean
|
||||
ProjectClassDao projectClassDao;
|
||||
|
||||
public AdminProjectClassSettingsPage(PageParameters pp) {
|
||||
super(pp);
|
||||
|
||||
String msg = "";
|
||||
if((msg = pp.getString("info")) != null)
|
||||
info(msg);
|
||||
else if((msg = pp.getString("error")) != null)
|
||||
error(msg);
|
||||
|
||||
final Dialog dialog = new Dialog("dialog");
|
||||
dialog.setModal(true);
|
||||
dialog.setAutoOpen(false);
|
||||
dialog.add(new EmptyPanel("dialogContent"));
|
||||
|
||||
dialog.setWidth(500);
|
||||
dialog.setHeight(360);
|
||||
add(dialog);
|
||||
|
||||
IModel<List<ProjectClass>> activeProjectClass = new LoadableDetachableModel<List<ProjectClass>>() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected List<ProjectClass> load() {
|
||||
return projectClassDao.findAll();
|
||||
}
|
||||
};
|
||||
|
||||
final WebMarkupContainer activeWmc = new WebMarkupContainer("activeProjectClassContainer");
|
||||
activeWmc.setOutputMarkupId(true);
|
||||
add(activeWmc);
|
||||
|
||||
final ListView<ProjectClass> listView = new ListView<ProjectClass>("projectClassList", activeProjectClass){
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(ListItem<ProjectClass> item) {
|
||||
final IModel<ProjectClass> model = item.getModel();
|
||||
|
||||
item.add(new Label("code", model.getObject().getCode()));
|
||||
item.add(new Label("name", model.getObject().getName()));
|
||||
item.add(new MultiLineLabel("desc", model.getObject().getDescription()));
|
||||
|
||||
AjaxLink<Void> editLink = new AjaxLink<Void>("editLink"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
dialog.replace(new AdminProjectClassPanel("dialogContent", model));
|
||||
target.addComponent(dialog);
|
||||
dialog.setTitle("Edit");
|
||||
dialog.open(target);
|
||||
}
|
||||
};
|
||||
item.add(editLink);
|
||||
}
|
||||
|
||||
};
|
||||
activeWmc.add(listView);
|
||||
|
||||
/*
|
||||
* Begin - list of deleted project classes
|
||||
*/
|
||||
|
||||
final IModel<List<ProjectClass>> deletedProjectClass = new LoadableDetachableModel<List<ProjectClass>>() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected List<ProjectClass> load() {
|
||||
return projectClassDao.findAllDeleted();
|
||||
}
|
||||
};
|
||||
|
||||
final WebMarkupContainer deletedWmc = new WebMarkupContainer("deletedProjectClassContainer");
|
||||
deletedWmc.setOutputMarkupId(true);
|
||||
add(deletedWmc);
|
||||
|
||||
final ListView<ProjectClass> listViewDeleted = new ListView<ProjectClass>("projectClassListDel", deletedProjectClass){
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(ListItem<ProjectClass> item) {
|
||||
final IModel<ProjectClass> model = item.getModel();
|
||||
|
||||
item.add(new Label("codeDel", model.getObject().getCode()));
|
||||
item.add(new Label("nameDel", model.getObject().getName()));
|
||||
item.add(new MultiLineLabel("descDel", model.getObject().getDescription()));
|
||||
|
||||
AjaxLink<Void> undeleteLink = new AjaxLink<Void>("undeleteLink"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
model.getObject().setDeleted(false);
|
||||
model.setObject(projectClassDao.save(model.getObject()));
|
||||
deletedProjectClass.detach();
|
||||
target.addComponent(activeWmc);
|
||||
target.addComponent(deletedWmc);
|
||||
info("Level activated");
|
||||
}
|
||||
};
|
||||
item.add(undeleteLink);
|
||||
}
|
||||
|
||||
};
|
||||
deletedWmc.add(listViewDeleted);
|
||||
|
||||
AjaxLink<Void> createLink = new AjaxLink<Void>("createLink"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
dialog.replace(new AdminProjectClassPanel("dialogContent"));
|
||||
target.addComponent(dialog);
|
||||
dialog.setTitle("Add new...");
|
||||
dialog.open(target);
|
||||
}
|
||||
};
|
||||
add(createLink);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<form wicket:id="projectClassForm">
|
||||
|
||||
<!-- Fix max lengths -->
|
||||
<table>
|
||||
<tr>
|
||||
<td>Code: <input wicket:id="code" type="text" maxlength="50" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Name: <input wicket:id="name" type="text" maxlength="50" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Description:</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><textarea wicket:id="description" cols="60" rows="5"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input wicket:id="createButton" type="submit" value="Save" />
|
||||
</td>
|
||||
<td><input wicket:id="deleteButton" type="submit"
|
||||
value="Inactivate" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,98 @@
|
||||
package se.su.dsv.scipro.admin.panels;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.markup.html.form.Button;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.form.TextArea;
|
||||
import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.model.PropertyModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.admin.pages.settings.AdminProjectClassSettingsPage;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
|
||||
public class AdminProjectClassPanel extends Panel {
|
||||
|
||||
@SpringBean
|
||||
ProjectClassDao projectClassDao;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public AdminProjectClassPanel(final String id) {
|
||||
super(id);
|
||||
|
||||
Model<ProjectClass> model = new Model<ProjectClass>(new ProjectClass());
|
||||
add(new ProjectClassSettingsForm("projectClassForm", model, false));
|
||||
}
|
||||
|
||||
public AdminProjectClassPanel(String id, IModel<ProjectClass> model) {
|
||||
super(id);
|
||||
|
||||
add(new ProjectClassSettingsForm("projectClassForm", model, true));
|
||||
}
|
||||
|
||||
private class ProjectClassSettingsForm extends Form<Void>{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
IModel<ProjectClass> projectClassModel;
|
||||
|
||||
public ProjectClassSettingsForm(String id, final IModel<ProjectClass> model, final boolean editMode) {
|
||||
super(id);
|
||||
|
||||
final PageParameters pp = new PageParameters();
|
||||
setRedirect(true);
|
||||
|
||||
projectClassModel = model;
|
||||
|
||||
add(new TextField<ProjectClass>("code", new PropertyModel<ProjectClass>(projectClassModel, "code")));
|
||||
add(new TextField<ProjectClass>("name", new PropertyModel<ProjectClass>(projectClassModel, "name")));
|
||||
add(new TextArea<ProjectClass>("description", new PropertyModel<ProjectClass>(projectClassModel, "description")));
|
||||
|
||||
Button createButton = new Button("createButton"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
public void onSubmit(){
|
||||
|
||||
if (editMode) {
|
||||
pp.add("info", "Level edited");
|
||||
ProjectClass pc = projectClassDao.save(projectClassModel.getObject());
|
||||
projectClassModel.setObject(pc);
|
||||
setResponsePage(AdminProjectClassSettingsPage.class, pp);
|
||||
} else {
|
||||
ProjectClass duplicateCheck = projectClassDao.getProjectClass(projectClassModel.getObject().getCode());
|
||||
if (duplicateCheck != null){
|
||||
String msg = "Level already exists";
|
||||
pp.add("error", msg);
|
||||
setResponsePage(AdminProjectClassSettingsPage.class, pp);
|
||||
return;
|
||||
}
|
||||
ProjectClass pc = projectClassDao.save(projectClassModel.getObject());
|
||||
projectClassModel.setObject(pc);
|
||||
pp.add("info", "New level created");
|
||||
setResponsePage(AdminProjectClassSettingsPage.class, pp);
|
||||
}
|
||||
}
|
||||
};
|
||||
add(createButton);
|
||||
|
||||
Button deleteButton = new Button("deleteButton"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
public void onSubmit(){
|
||||
projectClassModel.getObject().setDeleted(true);
|
||||
projectClassDao.save(projectClassModel.getObject());
|
||||
pp.add("info", "Level inactivated");
|
||||
setResponsePage(AdminProjectClassSettingsPage.class, pp);
|
||||
}
|
||||
};
|
||||
add(deleteButton);
|
||||
deleteButton.setEnabled(editMode);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,9 +1,13 @@
|
||||
package se.su.dsv.scipro.data.dao.interfaces;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
|
||||
public interface ProjectClassDao extends Dao<ProjectClass>{
|
||||
|
||||
ProjectClass getProjectClass(String projectCode);
|
||||
ProjectClass getProjectClass(String projectCode);
|
||||
|
||||
List<ProjectClass> findAllDeleted();
|
||||
|
||||
}
|
||||
|
@ -1,9 +1,13 @@
|
||||
package se.su.dsv.scipro.data.dao.jpa;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.NoResultException;
|
||||
import javax.persistence.PersistenceException;
|
||||
import javax.persistence.TypedQuery;
|
||||
|
||||
import org.hibernate.ejb.QueryHints;
|
||||
import org.springframework.orm.jpa.JpaCallback;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -38,6 +42,16 @@ public class ProjectClassDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<ProjectCl
|
||||
});
|
||||
}
|
||||
|
||||
@Transactional( readOnly=true )
|
||||
public List<ProjectClass> findAllDeleted() {
|
||||
return getJpaTemplate().execute(new JpaCallback<List<ProjectClass>>() {
|
||||
public List<ProjectClass> doInJpa(EntityManager em) throws PersistenceException {
|
||||
TypedQuery<ProjectClass> query = em.createQuery("SELECT x FROM ProjectClass x WHERE x.deleted = 1", ProjectClass.class);
|
||||
return query.getResultList();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public ProjectClass save(ProjectClass projectClass){
|
||||
|
@ -9,7 +9,6 @@ import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Lob;
|
||||
import javax.persistence.OneToOne;
|
||||
import javax.persistence.PostLoad;
|
||||
import javax.persistence.Table;
|
||||
import org.hibernate.annotations.Cache;
|
||||
import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
|
@ -67,7 +67,7 @@ public class ProjectEvent extends Event {
|
||||
|
||||
@Override
|
||||
protected void onFormSubmit(AjaxRequestTarget target) {
|
||||
System.out.println("On form submitt in event class");
|
||||
//System.out.println("On form submitt in event class");
|
||||
callback.doCallback(target);
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,45 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<p></p>
|
||||
<span class="event-title" wicket:id="eventTitle">Event title here</span>
|
||||
<div>
|
||||
<img wicket:id="eventDeleteIcon" class="right" />
|
||||
<img wicket:id="eventEditIcon" class="right" />
|
||||
<div>
|
||||
<div wicket:id="showDetailsIcon" class="left"></div>
|
||||
<span wicket:id="eventDueDate" class="span-2 left month"></span>
|
||||
<div>
|
||||
<a href="#" wicket:id="eventPageLink"><span wicket:id="statusIcon"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<div wicket:id="eventDetailsContainer" style="display:none;">
|
||||
<div wicket:id="eventDetails"></div>
|
||||
</div>
|
||||
<!--
|
||||
<div wicket:id="showDetailsIcon" class="left"></div>
|
||||
<div wicket:id="month" class="span-1 left month"></div>
|
||||
<img wicket:id="calendarIcon" class="left">
|
||||
|
||||
<div>
|
||||
<div>
|
||||
|
||||
<span wicket:id="eventTitle">Event title here</span>
|
||||
|
||||
<img wicket:id="eventDeleteIcon" class="right" />
|
||||
<img wicket:id="eventEditIcon" class="right" />
|
||||
<a href="#" class="right" wicket:id="eventPageLink"><img wicket:id="eventPageLinkIcon" /></a>
|
||||
<span wicket:id="eventDueDate" class ="right"></span>
|
||||
<div wicket:id="statusIcon"></div>
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<div wicket:id="eventDetailsContainer" style="display:none;">
|
||||
<div wicket:id="eventDetails"></div>
|
||||
</div> -->
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,186 @@
|
||||
package se.su.dsv.scipro.project.panels;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.datetime.PatternDateConverter;
|
||||
import org.apache.wicket.datetime.markup.html.basic.DateLabel;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.link.Link;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.core.effects.EffectSpeed;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.EventDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.HandInActivityDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RoleDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.Event;
|
||||
import se.su.dsv.scipro.data.dataobjects.HandInActivity;
|
||||
import se.su.dsv.scipro.data.dataobjects.Project;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.icons.AjaxActionIcon;
|
||||
import se.su.dsv.scipro.icons.ExpandContractActionIcon;
|
||||
import se.su.dsv.scipro.icons.IconPanel;
|
||||
import se.su.dsv.scipro.icons.ImageIcon;
|
||||
import se.su.dsv.scipro.schedule.baseevent.panels.EventScheduleDetailsPanel;
|
||||
import se.su.dsv.scipro.util.IAjaxCallback;
|
||||
import se.su.dsv.scipro.util.JavascriptEventConfirmation;
|
||||
import se.su.dsv.scipro.util.WiQueryCoreEffectsHelper;
|
||||
|
||||
public abstract class EventLayoutPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@SpringBean
|
||||
protected EventDao eventDao;
|
||||
|
||||
@SpringBean
|
||||
protected ProjectDao projectDao;
|
||||
|
||||
@SpringBean
|
||||
protected RoleDao roleDao;
|
||||
|
||||
@SpringBean
|
||||
protected HandInActivityDao handInActivityDao;
|
||||
|
||||
public EventLayoutPanel(String id, final Event event, final Project project, final boolean isSupervisorView){
|
||||
super(id);
|
||||
final User user = SciProSession.get().getUser();
|
||||
|
||||
//add(new CalendarIconImage("calendarIcon", event.getDueDate()));
|
||||
//add(new DateLabel("month", new Model<Date>(event.getDueDate()), new PatternDateConverter("MMM", false)));
|
||||
add(new DateLabel("eventDueDate", new Model<Date>(event.getDueDate()), new PatternDateConverter("yyyy-MM-dd HH:mm", false)));
|
||||
add(new Label("eventTitle", event.getTitle()));
|
||||
|
||||
final WebMarkupContainer eventDetailsContainer = new WebMarkupContainer("eventDetailsContainer");
|
||||
eventDetailsContainer.setOutputMarkupId(true);
|
||||
eventDetailsContainer.add(new EmptyPanel("eventDetails"));
|
||||
add(eventDetailsContainer);
|
||||
|
||||
final ExpandContractActionIcon showDetailsIcon = new ExpandContractActionIcon("showDetailsIcon"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onExpand(AjaxRequestTarget target) {
|
||||
eventDetailsContainer.replace(new EventScheduleDetailsPanel("eventDetails", event));
|
||||
target.addComponent(eventDetailsContainer);
|
||||
target.appendJavascript(WiQueryCoreEffectsHelper.slideDownJs(eventDetailsContainer, EffectSpeed.FAST));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContract(AjaxRequestTarget target) {
|
||||
target.appendJavascript(WiQueryCoreEffectsHelper.slideUpJs(eventDetailsContainer, EffectSpeed.FAST));
|
||||
}
|
||||
|
||||
};
|
||||
add(showDetailsIcon);
|
||||
|
||||
Link<Void> eventPageLink = new Link<Void>("eventPageLink"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onClick() {
|
||||
onEventDetailsClick();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
add(eventPageLink);
|
||||
|
||||
add(new AjaxActionIcon("eventEditIcon", AjaxActionIcon.ICON_EDIT){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onClick(AjaxRequestTarget target) {
|
||||
final IAjaxCallback cb = new IAjaxCallback(){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void doCallback(AjaxRequestTarget onSubmitTarget) {
|
||||
closeDialogAndRefreshListView(onSubmitTarget);
|
||||
}
|
||||
};
|
||||
|
||||
replaceAndOpenDialog(target, event.getCreationPanel("containerContent", cb, isSupervisorView));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVisible(){
|
||||
return eventDao.isEditable(event, user);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
add(new AjaxActionIcon("eventDeleteIcon", AjaxActionIcon.ICON_DELETE){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onClick(AjaxRequestTarget target) {
|
||||
eventDao.lazyDelete(event);
|
||||
refreshListView(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVisible(){
|
||||
return eventDao.isDeletable(event, user);
|
||||
}
|
||||
|
||||
}.add(new JavascriptEventConfirmation("onclick", "Delete " + event.getTitle() + "?")));
|
||||
|
||||
/*if(event.isRequireHandIn()){
|
||||
add(new IconPanel("handInRequiredIcon", ImageIcon.ICON_RED_FLAG){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public String getDisplayString() {
|
||||
return "Hand in required";
|
||||
}
|
||||
});
|
||||
} else {
|
||||
add(new EmptyPanel("handInRequiredIcon"));
|
||||
}*/
|
||||
|
||||
String statusIcon = ImageIcon.ICON_EMPTY;
|
||||
final Model<String> statusMsgModel = new Model<String>("");
|
||||
//Check the status
|
||||
if(eventDao.eventIsDone(event, user, project)) {
|
||||
statusIcon = ImageIcon.ICON_EVENT_DONE;
|
||||
statusMsgModel.setObject("Event is done");
|
||||
} else if (event.isRequireHandIn()){
|
||||
//Ok, event is not done
|
||||
HandInActivity hia = handInActivityDao.getHandInActivity(event, project);
|
||||
//if there are hand ins and the event is not done, it must be awaiting feedback
|
||||
if(hia != null && hia.getHandIns().size() > 0){
|
||||
statusMsgModel.setObject("Awaiting supervisor feedback");
|
||||
} else {
|
||||
statusMsgModel.setObject("No hand in uploaded yet");
|
||||
}
|
||||
statusIcon = ImageIcon.ICON_EVENT_ALERT;
|
||||
} else {
|
||||
//The event must be upcoming
|
||||
if(event.getDueDate().getTime() > new Date().getTime()){
|
||||
statusMsgModel.setObject("Event upcoming");
|
||||
statusIcon = ImageIcon.ICON_EVENT_UPCOMING;
|
||||
}
|
||||
}
|
||||
|
||||
eventPageLink.add(new IconPanel("statusIcon", statusIcon){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public String getDisplayString() {
|
||||
return statusMsgModel.getObject();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public abstract void replaceAndOpenDialog(AjaxRequestTarget target, Panel replacePanel);
|
||||
public abstract void refreshListView(AjaxRequestTarget target);
|
||||
public abstract void closeDialogAndRefreshListView(AjaxRequestTarget target);
|
||||
public abstract void onEventDetailsClick();
|
||||
}
|
@ -26,8 +26,6 @@ import se.su.dsv.scipro.data.dataobjects.Project;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.project.pages.ProjectEventPage;
|
||||
import se.su.dsv.scipro.project.pages.ProjectScheduleGeneratorPage;
|
||||
import se.su.dsv.scipro.project.pages.ProjectSchedulePlannerPage;
|
||||
import se.su.dsv.scipro.schedule.baseevent.panels.EventSchedulePanel;
|
||||
import se.su.dsv.scipro.util.WiQueryCoreEffectsHelper;
|
||||
|
||||
public class UpcomingEventPanel extends Panel{
|
||||
@ -100,7 +98,7 @@ public class UpcomingEventPanel extends Panel{
|
||||
@Override
|
||||
protected void populateItem(ListItem<Event> item) {
|
||||
final Event e = item.getModelObject();
|
||||
item.add(new EventSchedulePanel("eventPanel", e, project, false){
|
||||
item.add(new EventLayoutPanel("eventPanel", e, project, false){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
|
@ -64,7 +64,7 @@
|
||||
<!-- Use deployment for production, development for development -->
|
||||
<context-param>
|
||||
<param-name>configuration</param-name>
|
||||
<!--param-value>development</param-value-->
|
||||
<!-- <param-value>development</param-value> -->
|
||||
<param-value>deployment</param-value>
|
||||
</context-param>
|
||||
|
||||
|
@ -1042,4 +1042,14 @@ div.wicket-aa ul li.selected {
|
||||
background-color: #dedeff;
|
||||
padding: 0px;
|
||||
margin:0;
|
||||
}
|
||||
}
|
||||
|
||||
.month{
|
||||
font-size: 1em;
|
||||
font-style: strong;
|
||||
}
|
||||
|
||||
.event-title{
|
||||
font-size: 1.4em;
|
||||
font-style: strong;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package se.su.dsv.scipro.dao.jpa;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Assert;
|
||||
@ -528,8 +529,10 @@ public class TestPeerReviewDaoJPA {
|
||||
review2.setSubmitted(true);
|
||||
review2 = peerReviewDao.save(review2);
|
||||
|
||||
review1.setLastModified(new Date());
|
||||
|
||||
List<PeerReview> sortedByDate = peerReviewDao.findReviewsSortedByDate();
|
||||
Assert.assertEquals(review2, sortedByDate.get(0));
|
||||
Assert.assertEquals(review1, sortedByDate.get(0));
|
||||
Assert.assertEquals(2, peerReviewDao.countSubmittedReviews());
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user