Fixar
git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@460 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
parent
7bd8ae7300
commit
3e119f2182
src/main/java/se/su/dsv/scipro/knol/resource/panels
EmbedResourceBookmarkablePanel.htmlEmbedResourceBookmarkablePanel.javaEmbedResourcePanel.htmlEmbedResourcePanel.javaFileResourcePanel.htmlFileResourcePanel.javaKnolPanel.htmlKnolPanel.javaLinkResourceBookmarkablePanel.htmlLinkResourceBookmarkablePanel.javaLinkResourcePanel.htmlLinkResourcePanel.javaLinkResourcePanel.properties
31
src/main/java/se/su/dsv/scipro/knol/resource/panels/EmbedResourceBookmarkablePanel.html
Normal file
31
src/main/java/se/su/dsv/scipro/knol/resource/panels/EmbedResourceBookmarkablePanel.html
Normal file
@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div wicket:id ="listContainer">
|
||||
<h2>Video Resource</h2>
|
||||
<table>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="rating-cell">
|
||||
<div class = "centered" ><a href="#" wicket:id="upLink"><img src="images/icons/arrow-up.png" class="icon-24" alt="Up"/></a></div>
|
||||
<div class = "centered" wicket:id="rate"></div>
|
||||
<div class = "centered" ><a href="#" wicket:id="downLink"><img src="images/icons/arrow-down.png" class="icon-24" alt="Down"/></a></div>
|
||||
</td>
|
||||
<td>
|
||||
<div><strong>Tag/s: </strong> <span wicket:id="tag"></span></div>
|
||||
<div><strong>Created: </strong> <span wicket:id="date"></span></div>
|
||||
<div><strong>Created by: </strong> <span wicket:id="user"></span></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><hr/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div wicket:id="embed"></div>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
|
||||
</body>
|
||||
</html>
|
170
src/main/java/se/su/dsv/scipro/knol/resource/panels/EmbedResourceBookmarkablePanel.java
Normal file
170
src/main/java/se/su/dsv/scipro/knol/resource/panels/EmbedResourceBookmarkablePanel.java
Normal file
@ -0,0 +1,170 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package se.su.dsv.scipro.knol.resource.panels;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.RestartResponseException;
|
||||
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.link.ExternalLink;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.SciProApplication;
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.EmbedResourceDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.LinkResourceDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RatableDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RatingDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.EmbedResource;
|
||||
import se.su.dsv.scipro.data.dataobjects.LinkResource;
|
||||
import se.su.dsv.scipro.data.dataobjects.Rating;
|
||||
import se.su.dsv.scipro.data.dataobjects.Tag;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.data.enums.RatingValue;
|
||||
import se.su.dsv.scipro.knol.resource.page.EmbedWebMarkupContainer;
|
||||
|
||||
/**
|
||||
* @author Johan Aschan - aschan@dsv.su.se
|
||||
*
|
||||
*/
|
||||
public class EmbedResourceBookmarkablePanel extends Panel {
|
||||
|
||||
@SpringBean
|
||||
private RatingDao ratingDao;
|
||||
|
||||
@SpringBean
|
||||
private UserDao userDao;
|
||||
|
||||
@SpringBean
|
||||
private EmbedResourceDao embedResourceDao;
|
||||
|
||||
@SpringBean
|
||||
private RatableDao ratableDao;
|
||||
|
||||
private WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
|
||||
|
||||
private User user;
|
||||
|
||||
private int point;
|
||||
private EmbedResource embed;
|
||||
|
||||
public EmbedResourceBookmarkablePanel(String id, PageParameters pp) {
|
||||
super(id);
|
||||
Long linkId = pp.getAsLong("embedres");
|
||||
if(linkId == null){
|
||||
failAndRedirect();
|
||||
}
|
||||
else {
|
||||
|
||||
embed = embedResourceDao.load(linkId);
|
||||
if(embed == null)
|
||||
failAndRedirect();
|
||||
}
|
||||
user = userDao.load(SciProSession.get().getUser().getId());
|
||||
loadListView();
|
||||
listContainer.setOutputMarkupId(true);
|
||||
add(listContainer);
|
||||
// pp.put("res", link.getId());
|
||||
// new BookmarkablePageLink<Void>("up", LinkResourcePage.class, pp);
|
||||
}
|
||||
private void failAndRedirect(){
|
||||
throw new RestartResponseException(SciProApplication.get().getApplicationSettings().getAccessDeniedPage());
|
||||
}
|
||||
|
||||
|
||||
public void loadListView() {
|
||||
final List<Rating> ratingList = embed.getRatingList();
|
||||
boolean rated = false;
|
||||
point = ratableDao.getRating(embed);
|
||||
Rating rating = null;
|
||||
for (Rating r : ratingList) {
|
||||
if (r.getUser().equals(user)) {
|
||||
rating = r;
|
||||
rated = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (rating == null) {
|
||||
rating = new Rating();
|
||||
rating.setUser(user);
|
||||
}
|
||||
final boolean finalRated = rated;
|
||||
final Rating rating2 = rating;
|
||||
listContainer.add(new Label("rate", point + ""));
|
||||
listContainer.add(new AjaxLink<String>("upLink", new Model<String>("Up")) {
|
||||
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated && rating2.getRatingValue() == RatingValue.UP) {
|
||||
ratingList.remove(rating2);
|
||||
embed.setRatingList(ratingList);
|
||||
embedResourceDao.save(embed);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
embed.setRatingList(ratingList);
|
||||
rating2.setRatingValue(RatingValue.UP);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
embedResourceDao.save(embed);
|
||||
listContainer.removeAll();
|
||||
loadListView();
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
listContainer.add(new AjaxLink<String>("downLink", new Model<String>("Down")) {
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated && rating2.getRatingValue() == RatingValue.DOWN) {
|
||||
ratingList.remove(rating2);
|
||||
embed.setRatingList(ratingList);
|
||||
embedResourceDao.save(embed);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
rating2.setRatingValue(RatingValue.DOWN);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
|
||||
embedResourceDao.save(embed);
|
||||
listContainer.removeAll();
|
||||
loadListView();
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
});
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
listContainer.add(new Label("date", df.format(embed.getDateCreated())));
|
||||
listContainer.add(new Label("user", embed.getCreator().getFirstName() + " "
|
||||
+ embed.getCreator().getLastName()));
|
||||
listContainer.add(new EmbedWebMarkupContainer("embed", embed.getInfo()));
|
||||
String tags = "";
|
||||
|
||||
int count = 0;
|
||||
for (Tag tag : embed.getTagList()) {
|
||||
if (count == 0) {
|
||||
tags = tag.getTag();
|
||||
count++;
|
||||
} else {
|
||||
tags += ", " + tag.getTag();
|
||||
}
|
||||
}
|
||||
listContainer.add(new Label("tag", tags));
|
||||
};
|
||||
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div wicket:id="feedbackPanel"></div>
|
||||
<div class="span-6 last">
|
||||
<form wicket:id="resourceForm">
|
||||
|
||||
<div wicket:id="editContainer">
|
||||
|
||||
<div class ="span-6 last">
|
||||
<strong>Embed Code:</strong>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<textarea wicket:id="info" ></textarea>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<strong>Tag/s:</strong>
|
||||
</div>
|
||||
|
||||
<div class ="span-6 last">
|
||||
<select wicket:id="selectedTagList" class = "span-8 last"></select>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<input type="submit" wicket:id="submitButton" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<div wicket:id="listContainer">
|
||||
<div wicket:id ="link-item" class="span-20 last">
|
||||
<table>
|
||||
<tr>
|
||||
<td><strong>Rating</strong></td>
|
||||
<td><strong>Up</strong></td>
|
||||
<td><strong>Down</strong></td>
|
||||
<td><strong>Created</strong></td>
|
||||
<td><strong>By User</strong></td>
|
||||
<td><strong>Tag/s</strong></td>
|
||||
<!-- <td><strong>File</strong></td>-->
|
||||
<td><strong>Edit</strong></td>
|
||||
<td><strong>Delete</strong></td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td wicket:id="rate"></td>
|
||||
<td><a href="#" wicket:id="upLink"><img src="images/icons/arrow-up.png" class="icon-24" alt="Up"/></a></td>
|
||||
<td><a href="#" wicket:id="downLink"><img src="images/icons/arrow-down.png" class="icon-24" alt="Down"/></a></td>
|
||||
<td wicket:id="date"></td>
|
||||
<td wicket:id="user"></td>
|
||||
<td wicket:id="tag"></td>
|
||||
<!-- <td><span wicket:id="filePanel"></span></td> -->
|
||||
<td><a href="#" wicket:id="editLink"><img src="images/icons/pencil.png" class="icon-24" alt="Edit"/></a></td>
|
||||
<td><a href="#" wicket:id="deleteLink"><img src="images/icons/circle-delete.png" class="icon-24" alt="Delete"/></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div wicket:id="embed"></div>
|
||||
<div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</wicket:panel>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,331 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package se.su.dsv.scipro.knol.resource.panels;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.ChoiceRenderer;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.form.ListMultipleChoice;
|
||||
import org.apache.wicket.markup.html.form.TextArea;
|
||||
import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.CompoundPropertyModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.model.util.ListModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.EmbedResourceDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RatableDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RatingDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ResourceDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.TagDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.EmbedResource;
|
||||
import se.su.dsv.scipro.data.dataobjects.LinkResource;
|
||||
import se.su.dsv.scipro.data.dataobjects.Rating;
|
||||
import se.su.dsv.scipro.data.dataobjects.Recipient;
|
||||
import se.su.dsv.scipro.data.dataobjects.Resource;
|
||||
import se.su.dsv.scipro.data.dataobjects.Tag;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.data.enums.RatingValue;
|
||||
import se.su.dsv.scipro.knol.resource.page.EmbedWebMarkupContainer;
|
||||
import se.su.dsv.scipro.knol.resource.page.ResourceModel;
|
||||
|
||||
/**
|
||||
* @author Johan Aschan - aschan@dsv.su.se
|
||||
*
|
||||
*/
|
||||
public class EmbedResourcePanel extends Panel{
|
||||
|
||||
@SpringBean
|
||||
private RatingDao ratingDao;
|
||||
|
||||
@SpringBean
|
||||
private UserDao userDao;
|
||||
|
||||
@SpringBean
|
||||
private EmbedResourceDao embedResourceDao;
|
||||
|
||||
@SpringBean
|
||||
private RatableDao ratableDao;
|
||||
|
||||
@SpringBean
|
||||
private TagDao tagDao;
|
||||
|
||||
private WebMarkupContainer listContainer;
|
||||
|
||||
private ListView<EmbedResource> linkListView;
|
||||
|
||||
private Collection<Tag> selectedTagList = new ArrayList<Tag>();
|
||||
|
||||
private User user;
|
||||
|
||||
private int point;
|
||||
|
||||
private boolean edit;
|
||||
private WebMarkupContainer editContainer;
|
||||
|
||||
private TextArea<String> info;
|
||||
private TextField<String> linkAddress;
|
||||
private ListMultipleChoice<Tag> userMultipleChoiceList;
|
||||
|
||||
private EmbedResource editLink;
|
||||
private FeedbackPanel feedbackPanel;
|
||||
private ResourceModel resourceModel;
|
||||
|
||||
public EmbedResourcePanel(String id) {
|
||||
super(id);
|
||||
feedbackPanel = new FeedbackPanel("feedbackPanel");
|
||||
add(feedbackPanel);
|
||||
feedbackPanel.setOutputMarkupId(true);
|
||||
user = userDao.load(SciProSession.get().getUser().getId());
|
||||
loadListView();
|
||||
listContainer = new WebMarkupContainer("listContainer");
|
||||
listContainer.add(linkListView);
|
||||
listContainer.setOutputMarkupId(true);
|
||||
|
||||
add(listContainer);
|
||||
add(new LinkResourceForm("resourceForm"));
|
||||
}
|
||||
|
||||
public class LinkResourceForm extends Form<ResourceModel> {
|
||||
public LinkResourceForm(String name) {
|
||||
super(name, new CompoundPropertyModel<ResourceModel>(
|
||||
resourceModel = new ResourceModel()));
|
||||
editContainer = new WebMarkupContainer("editContainer");
|
||||
editContainer.setOutputMarkupId(true);
|
||||
info = new TextArea<String>("info");
|
||||
info.setRequired(true);
|
||||
editContainer.add(info);
|
||||
|
||||
userMultipleChoiceList = new ListMultipleChoice<Tag>(
|
||||
"selectedTagList", new ListModel<Tag>(tagDao.findAll()),
|
||||
new ChoiceRenderer<Tag>("tag")) {
|
||||
private static final long serialVersionUID = -7117603450416845711L;
|
||||
|
||||
@Override
|
||||
protected CharSequence getDefaultChoice(Object selected) {
|
||||
return "";
|
||||
}
|
||||
};
|
||||
OnChangeAjaxBehavior userSelectBehaviour = new OnChangeAjaxBehavior() {
|
||||
|
||||
private static final long serialVersionUID = 3412906970812300312L;
|
||||
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
selectedTagList = userMultipleChoiceList.getModelObject();
|
||||
}
|
||||
};
|
||||
userMultipleChoiceList.add(userSelectBehaviour);
|
||||
|
||||
userMultipleChoiceList.setOutputMarkupId(true);
|
||||
editContainer.add(userMultipleChoiceList);
|
||||
|
||||
editContainer.add(new AjaxButton("submitButton", new Model<String>(
|
||||
"Save Resource")) {
|
||||
|
||||
@Override
|
||||
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
|
||||
EmbedResource link;
|
||||
ResourceModel resourceModel = ((ResourceModel) form
|
||||
.getModelObject());
|
||||
if (edit) {
|
||||
link = editLink;
|
||||
edit = false;
|
||||
} else {
|
||||
link = new EmbedResource();
|
||||
}
|
||||
link.setInfo(resourceModel.getInfo());
|
||||
link.setCreator(user);
|
||||
link.setTagList(new ArrayList<Tag>(resourceModel.getSelectedTagList()));
|
||||
embedResourceDao.save(link);
|
||||
loadListView();
|
||||
resourceModel.setSelectedTagList(new ArrayList<Tag>());
|
||||
resourceModel.setInfo("");
|
||||
listContainer.removeAll();
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(feedbackPanel);
|
||||
target.addComponent(listContainer);
|
||||
target.addComponent(editContainer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onError(final AjaxRequestTarget target, final Form form) {
|
||||
target.addComponent(feedbackPanel);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
add(editContainer);
|
||||
}
|
||||
}
|
||||
|
||||
public void loadListView() {
|
||||
List<EmbedResource> linkList = embedResourceDao.findAll();
|
||||
Collections.sort(linkList, new Comparator<EmbedResource>() {
|
||||
@Override
|
||||
public int compare(EmbedResource o1, EmbedResource o2) {
|
||||
return Integer.valueOf(ratableDao.getRating(o2)).compareTo(
|
||||
Integer.valueOf(ratableDao.getRating(o1)));
|
||||
}
|
||||
});
|
||||
linkListView = new ListView<EmbedResource>("link-item", linkList) {
|
||||
|
||||
@Override
|
||||
protected void populateItem(final ListItem<EmbedResource> item) {
|
||||
final EmbedResource link = item.getModelObject();
|
||||
final List<Rating> ratingList = link.getRatingList();
|
||||
boolean rated = false;
|
||||
point = 0;
|
||||
Rating rating = null;
|
||||
|
||||
for (Rating r : ratingList) {
|
||||
if (r.getUser().equals(user)) {
|
||||
rating = r;
|
||||
rated = true;
|
||||
}
|
||||
if (r.getRatingValue() == RatingValue.UP) {
|
||||
point++;
|
||||
} else {
|
||||
point--;
|
||||
}
|
||||
}
|
||||
if (rating == null) {
|
||||
rating = new Rating();
|
||||
rating.setUser(user);
|
||||
}
|
||||
final boolean finalRated = rated;
|
||||
final Rating rating2 = rating;
|
||||
item.add(new Label("rate", point + ""));
|
||||
item.add(new AjaxLink<String>("upLink", new Model<String>("Up")) {
|
||||
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated
|
||||
&& rating2.getRatingValue() == RatingValue.UP) {
|
||||
ratingList.remove(rating2);
|
||||
link.setRatingList(ratingList);
|
||||
embedResourceDao.save(link);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
link.setRatingList(ratingList);
|
||||
rating2.setRatingValue(RatingValue.UP);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
embedResourceDao.save(link);
|
||||
loadListView();
|
||||
listContainer.removeAll();
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
item.add(new AjaxLink<String>("downLink", new Model<String>(
|
||||
"Down")) {
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated
|
||||
&& rating2.getRatingValue() == RatingValue.DOWN) {
|
||||
ratingList.remove(rating2);
|
||||
link.setRatingList(ratingList);
|
||||
embedResourceDao.save(link);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
rating2.setRatingValue(RatingValue.DOWN);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
|
||||
embedResourceDao.save(link);
|
||||
loadListView();
|
||||
listContainer.removeAll();
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
});
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
item.add(new Label("date", df.format(link.getDateCreated())));
|
||||
item.add(new Label("user", link.getCreator().getFirstName()
|
||||
+ " " + link.getCreator().getLastName()));
|
||||
|
||||
String tags = "";
|
||||
|
||||
int count = 0;
|
||||
for (Tag tag : link.getTagList()) {
|
||||
if (count == 0) {
|
||||
tags = tag.getTag();
|
||||
count++;
|
||||
} else {
|
||||
tags += ", " + tag.getTag();
|
||||
}
|
||||
}
|
||||
item.add(new EmbedWebMarkupContainer("embed", link.getInfo()));
|
||||
item.add(new Label("tag", tags));
|
||||
|
||||
item.add(new AjaxLink<Recipient>("deleteLink") {
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
EmbedResource link2 = embedResourceDao.reLoad(link);
|
||||
if (link2.equals(editLink)) {
|
||||
edit = false;
|
||||
target.addComponent(editContainer);
|
||||
}
|
||||
embedResourceDao.delete(link2);
|
||||
loadListView();
|
||||
listContainer.removeAll();
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(listContainer);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
item.add(new AjaxLink<Recipient>("editLink") {
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
edit = true;
|
||||
editLink = embedResourceDao.reLoad(link);
|
||||
info.setModelObject(editLink.getInfo());
|
||||
//listChoice = new ListMultipleChoice("choices", MANY_CHOICES)
|
||||
resourceModel.setSelectedTagList(editLink.getTagList());
|
||||
// userMultipleChoiceList.setModelObject(editLink
|
||||
// .getTagList());
|
||||
target.addComponent(editContainer);
|
||||
}
|
||||
|
||||
});
|
||||
// item.add(new FileResourcePanel("filePanel",
|
||||
// item.getModelObject()));
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
}
|
@ -5,39 +5,20 @@
|
||||
|
||||
<div><span wicket:id="feedbackPanel">[Feedback goes here]</span></div>
|
||||
<form wicket:id="uploadForm">
|
||||
<p>
|
||||
<label>Add file to resource:</label> <input wicket:id="fileInput"
|
||||
id="fileInput" type="file" />
|
||||
<br/>
|
||||
<input type="submit" value="Upload!" name="upload" />
|
||||
</p>
|
||||
<div wicket:id="progress">[[ajax upload progressbar]]</div>
|
||||
<div><input wicket:id="fileInput" id="fileInput" type="file" /></div>
|
||||
<div><input type="submit" value="Upload!" name="upload" /></div>
|
||||
<span wicket:id="progress">[[ajax upload progressbar]]</span>
|
||||
</form>
|
||||
<table>
|
||||
<thead wicket:id="tableHead">
|
||||
<tr>
|
||||
<!-- <th></th>-->
|
||||
<th>Name</th>
|
||||
<th>Created</th>
|
||||
<th>Size</th>
|
||||
<th>Content Type</th>
|
||||
<th>Uploader</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody wicket:id="listFiles">
|
||||
<table wicket:id="listFiles">
|
||||
<tr wicket:id="content">
|
||||
<!-- <td><a href="delete" wicket:id="delete"><span-->
|
||||
<!-- wicket:id="deleteIcon" /></a></td>-->
|
||||
<td><span wicket:id="name">name</span></td>
|
||||
<td><span wicket:id="modified">modified</span></td>
|
||||
<td><span wicket:id="size">size</span></td>
|
||||
<td><span wicket:id="mimeType">mimeType</span></td>
|
||||
<td><span wicket:id="userId">userId</span></td>
|
||||
<td><a href="#" wicket:id="open">Open</a></td>
|
||||
|
||||
<td><a href="#" wicket:id="download">Download</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
</wicket:panel>
|
||||
|
||||
|
@ -53,8 +53,6 @@ public class FileResourcePanel extends Panel{
|
||||
add(new FeedbackPanel("feedbackPanel"));
|
||||
this.resource = resource;
|
||||
|
||||
tableHead = new WebMarkupContainer("tableHead");
|
||||
add(tableHead);
|
||||
listFiles = new WebMarkupContainer("listFiles");
|
||||
add(listFiles);
|
||||
reloadFiles();
|
||||
@ -72,9 +70,9 @@ public class FileResourcePanel extends Panel{
|
||||
List<FileDescription> items = fileRepository.searchFiles(fileRepository.getResourcePath(resource.getId()));
|
||||
|
||||
if(items.isEmpty())
|
||||
tableHead.setVisible(false);
|
||||
listFiles.setVisible(false);
|
||||
else
|
||||
tableHead.setVisible(true);
|
||||
listFiles.setVisible(true);
|
||||
|
||||
fileRepository.sortFileDescriptions(items, SortOrder.Name);
|
||||
|
||||
@ -106,16 +104,16 @@ public class FileResourcePanel extends Panel{
|
||||
// });
|
||||
inner.add(new BookmarkablePageLink<Void>("download", RepositoryDownloadPage.class, RepositoryDownloadPage.getPageParameters(desc)));
|
||||
|
||||
inner.add(new Label("modified", df.format(desc.getTargetLastModified())));
|
||||
inner.add(new Label("size", fileRepository.formatBytes(desc.getSize())));
|
||||
inner.add(new Label("mimeType", desc.getMimeType()));
|
||||
String userId = "";
|
||||
if(desc.getUserId() != null){
|
||||
User user = userDao.load(desc.getUserId());
|
||||
if(user != null)
|
||||
userId = user.toString();
|
||||
}
|
||||
inner.add(new Label("userId", userId));
|
||||
// inner.add(new Label("modified", df.format(desc.getTargetLastModified())));
|
||||
// inner.add(new Label("size", fileRepository.formatBytes(desc.getSize())));
|
||||
// inner.add(new Label("mimeType", desc.getMimeType()));
|
||||
// String userId = "";
|
||||
// if(desc.getUserId() != null){
|
||||
// User user = userDao.load(desc.getUserId());
|
||||
// if(user != null)
|
||||
// userId = user.toString();
|
||||
// }
|
||||
// inner.add(new Label("userId", userId));
|
||||
contents.add(inner);
|
||||
}//for
|
||||
}//reloadFiles
|
||||
|
@ -0,0 +1,58 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
|
||||
<div wicket:id="listContainer">
|
||||
<h2>Link Resources</h2>
|
||||
<table wicket:id = "link-item" class = "link-resource-border">
|
||||
|
||||
<tr>
|
||||
<td class="rating-cell">
|
||||
<div class = "centered" ><a href="#" wicket:id="upLink"><img src="images/icons/arrow-up_16x16.png" class="icon-24" alt="Up"/></a></div>
|
||||
<div class = "centered larger-rate-number" wicket:id="rate"></div>
|
||||
<div class = "centered" ><a href="#" wicket:id="downLink"><img src="images/icons/arrow-down_16x16.png" class="icon-24" alt="Down"/></a></div>
|
||||
</td>
|
||||
<td>
|
||||
<div><a href="#" target="_new" wicket:id="link" class="larger">this body will be replaced</a></div>
|
||||
<div><strong>Info: </strong> <span wicket:id="info"></span></div>
|
||||
<div><strong>Tag/s: </strong> <span wicket:id="tag"></span></div>
|
||||
<div><strong>Created: </strong> <span wicket:id="date"></span></div>
|
||||
<div><strong>Created by: </strong> <span wicket:id="user"></span></div>
|
||||
<div><a href="#" wicket:id="bookmark">Resource Link</a></div>
|
||||
<div><a href="#" wicket:id="showComments"><span wicket:id="commentNumber"></span></a></div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="rating-cell"></td>
|
||||
<td><div wicket:id="commentThread"></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div wicket:id ="navigator"></div>
|
||||
<h2>Video Resources</h2>
|
||||
<div wicket:id ="embed-item" class="span-20 last">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="rating-cell">
|
||||
<div class = "centered" ><a href="#" wicket:id="upLink"><img src="images/icons/arrow-up_16x16.png" class="icon-24" alt="Up"/></a></div>
|
||||
<div class = "centered" wicket:id="rate"></div>
|
||||
<div class = "centered" ><a href="#" wicket:id="downLink"><img src="images/icons/arrow-down_16x16.png" class="icon-24" alt="Down"/></a></div>
|
||||
</td>
|
||||
<td>
|
||||
<div><strong>Info: </strong> <span wicket:id="info"></span></div>
|
||||
<div><strong>Tag/s: </strong> <span wicket:id="tag"></span></div>
|
||||
<div><strong>Created: </strong> <span wicket:id="date"></span></div>
|
||||
<div><strong>Created by: </strong> <span wicket:id="user"></span></div>
|
||||
<div><a href="#" wicket:id="bookmarkEmbed">Resource Link</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div wicket:id="embed"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,388 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package se.su.dsv.scipro.knol.resource.panels;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
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.form.ListMultipleChoice;
|
||||
import org.apache.wicket.markup.html.form.TextArea;
|
||||
import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.link.ExternalLink;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.list.PageableListView;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.commentthread.panel.CommentThreadPanel;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.CommentThreadDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.EmbedResourceDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.LinkResourceDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RatableDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RatingDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ResourceDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.EmbedResource;
|
||||
import se.su.dsv.scipro.data.dataobjects.LinkResource;
|
||||
import se.su.dsv.scipro.data.dataobjects.Rating;
|
||||
import se.su.dsv.scipro.data.dataobjects.Tag;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.data.enums.RatingValue;
|
||||
import se.su.dsv.scipro.knol.resource.page.EmbedResourcePage;
|
||||
import se.su.dsv.scipro.knol.resource.page.EmbedWebMarkupContainer;
|
||||
import se.su.dsv.scipro.knol.resource.page.LinkResourcePage;
|
||||
import se.su.dsv.scipro.message.panels.CustomPagingNavigator;
|
||||
|
||||
/**
|
||||
* @author Johan Aschan - aschan@dsv.su.se
|
||||
*
|
||||
*/
|
||||
public class KnolPanel extends Panel {
|
||||
|
||||
@SpringBean
|
||||
private RatingDao ratingDao;
|
||||
|
||||
@SpringBean
|
||||
private UserDao userDao;
|
||||
|
||||
@SpringBean
|
||||
private LinkResourceDao linkResourceDao;
|
||||
@SpringBean
|
||||
private EmbedResourceDao embedResourceDao;
|
||||
@SpringBean
|
||||
private CommentThreadDao commentThreadDao;
|
||||
|
||||
@SpringBean
|
||||
private RatableDao ratableDao;
|
||||
|
||||
private WebMarkupContainer listContainer;
|
||||
|
||||
private PageableListView<LinkResource> linkListView;
|
||||
private ListView<EmbedResource> embedListView;
|
||||
private AjaxLink<String> expandLink;
|
||||
|
||||
private User user;
|
||||
|
||||
private int point;
|
||||
private CustomPagingNavigator pagingNavigator;
|
||||
|
||||
public KnolPanel(String id) {
|
||||
super(id);
|
||||
user = userDao.load(SciProSession.get().getUser().getId());
|
||||
loadListView();
|
||||
listContainer = new WebMarkupContainer("listContainer");
|
||||
listContainer.add(linkListView);
|
||||
listContainer.add(embedListView);
|
||||
listContainer.setOutputMarkupId(true);
|
||||
listContainer.add(pagingNavigator = new CustomPagingNavigator(
|
||||
"navigator", linkListView) {
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return linkListView.size() > 0;
|
||||
}
|
||||
});
|
||||
add(listContainer);
|
||||
}
|
||||
|
||||
public void loadListView() {
|
||||
List<LinkResource> linkList = linkResourceDao.findAll();
|
||||
Collections.sort(linkList, new Comparator<LinkResource>() {
|
||||
@Override
|
||||
public int compare(LinkResource o1, LinkResource o2) {
|
||||
return Integer.valueOf(ratableDao.getRating(o2)).compareTo(
|
||||
Integer.valueOf(ratableDao.getRating(o1)));
|
||||
}
|
||||
});
|
||||
linkListView = new PageableListView<LinkResource>("link-item",
|
||||
linkList, 20) {
|
||||
|
||||
@Override
|
||||
protected void populateItem(final ListItem<LinkResource> item) {
|
||||
final LinkResource link = item.getModelObject();
|
||||
final List<Rating> ratingList = link.getRatingList();
|
||||
boolean rated = false;
|
||||
point = ratableDao.getRating(link);
|
||||
Rating rating = null;
|
||||
for (Rating r : ratingList) {
|
||||
if (r.getUser().equals(user)) {
|
||||
rating = r;
|
||||
rated = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (rating == null) {
|
||||
rating = new Rating();
|
||||
rating.setUser(user);
|
||||
}
|
||||
final boolean finalRated = rated;
|
||||
final Rating rating2 = rating;
|
||||
item.add(new Label("rate", point + ""));
|
||||
item.add(new AjaxLink<String>("upLink", new Model<String>("Up")) {
|
||||
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated
|
||||
&& rating2.getRatingValue() == RatingValue.UP) {
|
||||
ratingList.remove(rating2);
|
||||
link.setRatingList(ratingList);
|
||||
linkResourceDao.save(link);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
link.setRatingList(ratingList);
|
||||
rating2.setRatingValue(RatingValue.UP);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
linkResourceDao.save(link);
|
||||
loadListView();
|
||||
listContainer.removeAll();
|
||||
listContainer.add(embedListView);
|
||||
listContainer.add(pagingNavigator);
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
item.add(new AjaxLink<String>("downLink", new Model<String>(
|
||||
"Down")) {
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated
|
||||
&& rating2.getRatingValue() == RatingValue.DOWN) {
|
||||
ratingList.remove(rating2);
|
||||
link.setRatingList(ratingList);
|
||||
linkResourceDao.save(link);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
rating2.setRatingValue(RatingValue.DOWN);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
|
||||
linkResourceDao.save(link);
|
||||
loadListView();
|
||||
listContainer.removeAll();
|
||||
listContainer.add(pagingNavigator);
|
||||
listContainer.add(embedListView);
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
});
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
item.add(new Label("date", df.format(link.getDateCreated())));
|
||||
item.add(new Label("user", link.getCreator().getFirstName()
|
||||
+ " " + link.getCreator().getLastName()));
|
||||
if (link.getLinkName() == null) {
|
||||
item.add(new ExternalLink("link", link.getLink(), link
|
||||
.getLink()));
|
||||
} else {
|
||||
item.add(new ExternalLink("link", link.getLink(), link
|
||||
.getLinkName()));
|
||||
}
|
||||
item.add(new Label("info", link.getInfo()));
|
||||
String tags = "";
|
||||
|
||||
int count = 0;
|
||||
for (Tag tag : link.getTagList()) {
|
||||
if (count == 0) {
|
||||
tags = tag.getTag();
|
||||
count++;
|
||||
} else {
|
||||
tags += ", " + tag.getTag();
|
||||
}
|
||||
}
|
||||
|
||||
final int commentSize;
|
||||
if (commentThreadDao.getCommentThreadByClassAndId(link
|
||||
.getClass().getCanonicalName(), link.getId()) == null) {
|
||||
commentSize = 0;
|
||||
} else {
|
||||
commentSize = commentThreadDao
|
||||
.getCommentThreadByClassAndId(
|
||||
link.getClass().getCanonicalName(),
|
||||
link.getId()).getCommentList().size();
|
||||
}
|
||||
|
||||
item.add(new Label("tag", tags));
|
||||
item.add(LinkResourcePage.getBookmarkablePageLink("bookmark",
|
||||
link));
|
||||
final Label comment = new Label("commentNumber", commentSize
|
||||
+ " comments");
|
||||
|
||||
comment.setOutputMarkupId(true);
|
||||
|
||||
final CommentThreadPanel ctp = new CommentThreadPanel(
|
||||
"commentThread", link.getClass().getCanonicalName(),
|
||||
link.getId(), 5);
|
||||
ctp.setOutputMarkupPlaceholderTag(true);
|
||||
ctp.setVisible(false);
|
||||
item.add(ctp);
|
||||
item.add(new AjaxLink<String>("showComments",
|
||||
new Model<String>("Show Comments")) {
|
||||
|
||||
private boolean clicked = false;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
clicked = !clicked;
|
||||
if (clicked) {
|
||||
comment.setDefaultModelObject("Hide comments");
|
||||
} else {
|
||||
comment.setDefaultModelObject(+commentThreadDao
|
||||
.getCommentThreadByClassAndId(
|
||||
link.getClass().getCanonicalName(),
|
||||
link.getId()).getCommentList()
|
||||
.size()
|
||||
+ " comments");
|
||||
}
|
||||
ctp.setVisible(clicked);
|
||||
target.addComponent(ctp);
|
||||
target.addComponent(comment);
|
||||
}
|
||||
|
||||
}.add(comment));
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
List<EmbedResource> embedList = embedResourceDao.findAll();
|
||||
Collections.sort(embedList, new Comparator<EmbedResource>() {
|
||||
@Override
|
||||
public int compare(EmbedResource o1, EmbedResource o2) {
|
||||
return Integer.valueOf(ratableDao.getRating(o2)).compareTo(
|
||||
Integer.valueOf(ratableDao.getRating(o1)));
|
||||
}
|
||||
});
|
||||
embedListView = new ListView<EmbedResource>("embed-item", embedList) {
|
||||
|
||||
@Override
|
||||
protected void populateItem(final ListItem<EmbedResource> item) {
|
||||
final EmbedResource link = item.getModelObject();
|
||||
final List<Rating> ratingList = link.getRatingList();
|
||||
boolean rated = false;
|
||||
point = 0;
|
||||
Rating rating = null;
|
||||
|
||||
for (Rating r : ratingList) {
|
||||
if (r.getUser().equals(user)) {
|
||||
rating = r;
|
||||
rated = true;
|
||||
}
|
||||
if (r.getRatingValue() == RatingValue.UP) {
|
||||
point++;
|
||||
} else {
|
||||
point--;
|
||||
}
|
||||
}
|
||||
if (rating == null) {
|
||||
rating = new Rating();
|
||||
rating.setUser(user);
|
||||
}
|
||||
final boolean finalRated = rated;
|
||||
final Rating rating2 = rating;
|
||||
item.add(new Label("rate", point + ""));
|
||||
item.add(new AjaxLink<String>("upLink", new Model<String>("Up")) {
|
||||
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated
|
||||
&& rating2.getRatingValue() == RatingValue.UP) {
|
||||
ratingList.remove(rating2);
|
||||
link.setRatingList(ratingList);
|
||||
embedResourceDao.save(link);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
link.setRatingList(ratingList);
|
||||
rating2.setRatingValue(RatingValue.UP);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
embedResourceDao.save(link);
|
||||
loadListView();
|
||||
listContainer.removeAll();
|
||||
listContainer.add(pagingNavigator);
|
||||
listContainer.add(embedListView);
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
item.add(new AjaxLink<String>("downLink", new Model<String>(
|
||||
"Down")) {
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated
|
||||
&& rating2.getRatingValue() == RatingValue.DOWN) {
|
||||
ratingList.remove(rating2);
|
||||
link.setRatingList(ratingList);
|
||||
embedResourceDao.save(link);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
rating2.setRatingValue(RatingValue.DOWN);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
|
||||
embedResourceDao.save(link);
|
||||
loadListView();
|
||||
listContainer.removeAll();
|
||||
listContainer.add(pagingNavigator);
|
||||
listContainer.add(embedListView);
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
});
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
item.add(new Label("date", df.format(link.getDateCreated())));
|
||||
item.add(new Label("user", link.getCreator().getFirstName()
|
||||
+ " " + link.getCreator().getLastName()));
|
||||
|
||||
String tags = "";
|
||||
|
||||
int count = 0;
|
||||
for (Tag tag : link.getTagList()) {
|
||||
if (count == 0) {
|
||||
tags = tag.getTag();
|
||||
count++;
|
||||
} else {
|
||||
tags += ", " + tag.getTag();
|
||||
}
|
||||
}
|
||||
item.add(new EmbedWebMarkupContainer("embed", link.getInfo()));
|
||||
item.add(new Label("info", link.getInfo()));
|
||||
item.add(new Label("tag", tags));
|
||||
item.add(EmbedResourcePage.getBookmarkablePageLink(
|
||||
"bookmarkEmbed", link));
|
||||
|
||||
// item.add(new FileResourcePanel("filePanel",
|
||||
// item.getModelObject()));
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
}
|
32
src/main/java/se/su/dsv/scipro/knol/resource/panels/LinkResourceBookmarkablePanel.html
Normal file
32
src/main/java/se/su/dsv/scipro/knol/resource/panels/LinkResourceBookmarkablePanel.html
Normal file
@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div wicket:id ="listContainer">
|
||||
<h2>Link Resources</h2>
|
||||
<table>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="rating-cell">
|
||||
<div class = "centered" ><a href="#" wicket:id="upLink"><img src="images/icons/arrow-up.png" class="icon-24" alt="Up"/></a></div>
|
||||
<div class = "centered" wicket:id="rate"></div>
|
||||
<div class = "centered" ><a href="#" wicket:id="downLink"><img src="images/icons/arrow-down.png" class="icon-24" alt="Down"/></a></div>
|
||||
</td>
|
||||
<td>
|
||||
<div><a href="#" target="_new" wicket:id="link" class="large">this body will be replaced</a></div>
|
||||
<div><strong>Info: </strong> <span wicket:id="info"></span></div>
|
||||
<div><strong>Tag/s: </strong> <span wicket:id="tag"></span></div>
|
||||
<div><strong>Created: </strong> <span wicket:id="date"></span></div>
|
||||
<div><strong>Created by: </strong> <span wicket:id="user"></span></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><hr/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
|
||||
</body>
|
||||
</html>
|
172
src/main/java/se/su/dsv/scipro/knol/resource/panels/LinkResourceBookmarkablePanel.java
Normal file
172
src/main/java/se/su/dsv/scipro/knol/resource/panels/LinkResourceBookmarkablePanel.java
Normal file
@ -0,0 +1,172 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package se.su.dsv.scipro.knol.resource.panels;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.RestartResponseException;
|
||||
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.link.ExternalLink;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.SciProApplication;
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.LinkResourceDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RatableDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RatingDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.LinkResource;
|
||||
import se.su.dsv.scipro.data.dataobjects.Rating;
|
||||
import se.su.dsv.scipro.data.dataobjects.Tag;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.data.enums.RatingValue;
|
||||
|
||||
/**
|
||||
* @author Johan Aschan - aschan@dsv.su.se
|
||||
*
|
||||
*/
|
||||
public class LinkResourceBookmarkablePanel extends Panel {
|
||||
|
||||
@SpringBean
|
||||
private RatingDao ratingDao;
|
||||
|
||||
@SpringBean
|
||||
private UserDao userDao;
|
||||
|
||||
@SpringBean
|
||||
private LinkResourceDao linkResourceDao;
|
||||
|
||||
@SpringBean
|
||||
private RatableDao ratableDao;
|
||||
|
||||
private WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
|
||||
|
||||
private User user;
|
||||
|
||||
private int point;
|
||||
private LinkResource link;
|
||||
|
||||
public LinkResourceBookmarkablePanel(String id, PageParameters pp) {
|
||||
super(id);
|
||||
Long linkId = pp.getAsLong("linkres");
|
||||
if(linkId == null){
|
||||
failAndRedirect();
|
||||
}
|
||||
else {
|
||||
|
||||
link = linkResourceDao.load(linkId);
|
||||
if(link == null)
|
||||
failAndRedirect();
|
||||
}
|
||||
user = userDao.load(SciProSession.get().getUser().getId());
|
||||
loadListView();
|
||||
listContainer.setOutputMarkupId(true);
|
||||
add(listContainer);
|
||||
// pp.put("res", link.getId());
|
||||
// new BookmarkablePageLink<Void>("up", LinkResourcePage.class, pp);
|
||||
}
|
||||
private void failAndRedirect(){
|
||||
throw new RestartResponseException(SciProApplication.get().getApplicationSettings().getAccessDeniedPage());
|
||||
}
|
||||
|
||||
|
||||
public void loadListView() {
|
||||
final List<Rating> ratingList = link.getRatingList();
|
||||
boolean rated = false;
|
||||
point = ratableDao.getRating(link);
|
||||
Rating rating = null;
|
||||
for (Rating r : ratingList) {
|
||||
if (r.getUser().equals(user)) {
|
||||
rating = r;
|
||||
rated = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (rating == null) {
|
||||
rating = new Rating();
|
||||
rating.setUser(user);
|
||||
}
|
||||
final boolean finalRated = rated;
|
||||
final Rating rating2 = rating;
|
||||
listContainer.add(new Label("rate", point + ""));
|
||||
listContainer.add(new AjaxLink<String>("upLink", new Model<String>("Up")) {
|
||||
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated && rating2.getRatingValue() == RatingValue.UP) {
|
||||
ratingList.remove(rating2);
|
||||
link.setRatingList(ratingList);
|
||||
linkResourceDao.save(link);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
link.setRatingList(ratingList);
|
||||
rating2.setRatingValue(RatingValue.UP);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
linkResourceDao.save(link);
|
||||
listContainer.removeAll();
|
||||
loadListView();
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
listContainer.add(new AjaxLink<String>("downLink", new Model<String>("Down")) {
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated && rating2.getRatingValue() == RatingValue.DOWN) {
|
||||
ratingList.remove(rating2);
|
||||
link.setRatingList(ratingList);
|
||||
linkResourceDao.save(link);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
rating2.setRatingValue(RatingValue.DOWN);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
|
||||
linkResourceDao.save(link);
|
||||
listContainer.removeAll();
|
||||
loadListView();
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
});
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
listContainer.add(new Label("date", df.format(link.getDateCreated())));
|
||||
listContainer.add(new Label("user", link.getCreator().getFirstName() + " "
|
||||
+ link.getCreator().getLastName()));
|
||||
if (link.getLinkName() == null) {
|
||||
listContainer.add(new ExternalLink("link", link.getLink(), link.getLink()));
|
||||
} else {
|
||||
listContainer.add(new ExternalLink("link", link.getLink(), link.getLinkName()));
|
||||
}
|
||||
listContainer.add(new Label("info", link.getInfo()));
|
||||
String tags = "";
|
||||
|
||||
int count = 0;
|
||||
for (Tag tag : link.getTagList()) {
|
||||
if (count == 0) {
|
||||
tags = tag.getTag();
|
||||
count++;
|
||||
} else {
|
||||
tags += ", " + tag.getTag();
|
||||
}
|
||||
}
|
||||
listContainer.add(new Label("tag", tags));
|
||||
};
|
||||
|
||||
}
|
@ -0,0 +1,91 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div wicket:id="feedbackPanel"></div>
|
||||
<div class="span-6 last">
|
||||
<form wicket:id="resourceForm">
|
||||
|
||||
<div wicket:id="editContainer">
|
||||
|
||||
<div class ="span-6 last">
|
||||
<strong>Link Address:</strong>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<input type="text" wicket:id="link" class ="span-6" />
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<strong>Link Name:</strong>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<input type="text" wicket:id="linkName"/>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<strong>Info:</strong>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<textarea wicket:id="info" ></textarea>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<strong>Tag/s:</strong>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<select wicket:id="selectedTagList" class = "span-8 last"></select>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<strong>Tags:</strong>
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
Separate by comma.
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<input type="text" wicket:id="tags" class ="span-6" />
|
||||
</div>
|
||||
<div class ="span-6 last">
|
||||
<input type="submit" wicket:id="submitButton" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="span-20 last">
|
||||
<div wicket:id="listContainer">
|
||||
<table>
|
||||
<tr>
|
||||
<td><strong>Rating</strong></td>
|
||||
<td><strong>Up</strong></td>
|
||||
<td><strong>Down</strong></td>
|
||||
<td><strong>Created</strong></td>
|
||||
<td><strong>By User</strong></td>
|
||||
<td><strong>Link</strong></td>
|
||||
<td><strong>Info</strong></td>
|
||||
<td><strong>Tag/s</strong></td>
|
||||
<!-- <td><strong>File</strong></td>-->
|
||||
<td><strong>Edit</strong></td>
|
||||
<td><strong>Delete</strong></td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr wicket:id = "link-item">
|
||||
<td wicket:id="rate"></td>
|
||||
<td><a href="#" wicket:id="upLink"><img src="images/icons/arrow-up.png" class="icon-24" alt="Up"/></a></td>
|
||||
<td><a href="#" wicket:id="downLink"><img src="images/icons/arrow-down.png" class="icon-24" alt="Down"/></a></td>
|
||||
<td wicket:id="date"></td>
|
||||
<td wicket:id="user"></td>
|
||||
<td><a href="#" target="_new" wicket:id="link">this body will be replaced</a></td>
|
||||
<td wicket:id="info"></td>
|
||||
<td wicket:id="tag"></td>
|
||||
<!-- <td><span wicket:id="filePanel"></span></td> -->
|
||||
<td><a href="#" wicket:id="editLink"><img src="images/icons/pencil.png" class="icon-24" alt="Edit"/></a></td>
|
||||
<td><a href="#" wicket:id="deleteLink"><img src="images/icons/circle-delete.png" class="icon-24" alt="Delete"/></a></td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</wicket:panel>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,394 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package se.su.dsv.scipro.knol.resource.panels;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.ChoiceRenderer;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.form.ListMultipleChoice;
|
||||
import org.apache.wicket.markup.html.form.TextArea;
|
||||
import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
||||
import org.apache.wicket.markup.html.link.ExternalLink;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.CompoundPropertyModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.model.util.ListModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.LinkResourceDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RatableDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.RatingDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ResourceDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.TagDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.LinkResource;
|
||||
import se.su.dsv.scipro.data.dataobjects.Rating;
|
||||
import se.su.dsv.scipro.data.dataobjects.Recipient;
|
||||
import se.su.dsv.scipro.data.dataobjects.Resource;
|
||||
import se.su.dsv.scipro.data.dataobjects.Tag;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.data.enums.RatingValue;
|
||||
import se.su.dsv.scipro.knol.resource.page.EmbedWebMarkupContainer;
|
||||
import se.su.dsv.scipro.knol.resource.page.ResourceModel;
|
||||
|
||||
/**
|
||||
* @author Johan Aschan - aschan@dsv.su.se
|
||||
*
|
||||
*/
|
||||
public class LinkResourcePanel extends Panel {
|
||||
|
||||
@SpringBean
|
||||
private RatingDao ratingDao;
|
||||
|
||||
@SpringBean
|
||||
private ResourceDao resourceDao;
|
||||
|
||||
@SpringBean
|
||||
private UserDao userDao;
|
||||
|
||||
@SpringBean
|
||||
private LinkResourceDao linkResourceDao;
|
||||
|
||||
@SpringBean
|
||||
private TagDao tagDao;
|
||||
|
||||
@SpringBean
|
||||
private RatableDao ratableDao;
|
||||
|
||||
private WebMarkupContainer listContainer;
|
||||
|
||||
private ListView<LinkResource> linkListView;
|
||||
|
||||
private Collection<Tag> selectedTagList = new ArrayList<Tag>();
|
||||
|
||||
private User user;
|
||||
|
||||
private int point;
|
||||
|
||||
private boolean edit = false;
|
||||
private WebMarkupContainer editContainer;
|
||||
|
||||
private TextArea<String> info;
|
||||
private TextField<String> linkAddress, linkName, tags;
|
||||
private ListMultipleChoice<Tag> userMultipleChoiceList;
|
||||
|
||||
private LinkResource editLink;
|
||||
private FeedbackPanel feedbackPanel;
|
||||
private ResourceModel resourceModel;
|
||||
|
||||
public LinkResourcePanel(String id) {
|
||||
super(id);
|
||||
|
||||
feedbackPanel = new FeedbackPanel("feedbackPanel");
|
||||
add(feedbackPanel);
|
||||
feedbackPanel.setOutputMarkupId(true);
|
||||
user = userDao.load(SciProSession.get().getUser().getId());
|
||||
loadListView();
|
||||
listContainer = new WebMarkupContainer("listContainer");
|
||||
listContainer.add(linkListView);
|
||||
listContainer.setOutputMarkupId(true);
|
||||
|
||||
add(listContainer);
|
||||
add(new LinkResourceForm("resourceForm"));
|
||||
}
|
||||
|
||||
public class LinkResourceForm extends Form<ResourceModel> {
|
||||
public LinkResourceForm(String name) {
|
||||
super(name, new CompoundPropertyModel<ResourceModel>(
|
||||
new ResourceModel()));
|
||||
editContainer = new WebMarkupContainer("editContainer");
|
||||
editContainer.setOutputMarkupId(true);
|
||||
editContainer.add(info = new TextArea<String>("info"));
|
||||
linkAddress = new TextField<String>("link");
|
||||
tags = new TextField<String>("tags");
|
||||
linkAddress.setRequired(true);
|
||||
editContainer.add(linkAddress);
|
||||
editContainer.add(tags);
|
||||
editContainer.add(linkName = new TextField<String>("linkName"));
|
||||
|
||||
userMultipleChoiceList = new ListMultipleChoice<Tag>(
|
||||
"selectedTagList", new ListModel<Tag>(tagDao.findAll()),
|
||||
new ChoiceRenderer<Tag>("tag")) {
|
||||
private static final long serialVersionUID = -7117603450416845711L;
|
||||
|
||||
@Override
|
||||
protected CharSequence getDefaultChoice(Object selected) {
|
||||
return "";
|
||||
}
|
||||
};
|
||||
OnChangeAjaxBehavior userSelectBehaviour = new OnChangeAjaxBehavior() {
|
||||
|
||||
private static final long serialVersionUID = 3412906970812300312L;
|
||||
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
selectedTagList = userMultipleChoiceList.getModelObject();
|
||||
}
|
||||
};
|
||||
userMultipleChoiceList.add(userSelectBehaviour);
|
||||
|
||||
editContainer.add(userMultipleChoiceList);
|
||||
|
||||
editContainer.add(new AjaxButton("submitButton", new Model<String>(
|
||||
"Save Resource")) {
|
||||
|
||||
@Override
|
||||
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
|
||||
LinkResource link = new LinkResource();
|
||||
ResourceModel resourceModel = ((ResourceModel) form
|
||||
.getModelObject());
|
||||
if (edit) {
|
||||
link = editLink;
|
||||
link.setLastModified(new Date());
|
||||
edit = false;
|
||||
} else {
|
||||
link = new LinkResource();
|
||||
}
|
||||
String tags = resourceModel.getTags();
|
||||
|
||||
if (tags != null) {
|
||||
StringTokenizer stringTokenizer = new StringTokenizer(
|
||||
tags, ",");
|
||||
|
||||
while (stringTokenizer.hasMoreTokens()) {
|
||||
Tag tag = new Tag();
|
||||
tag.setTag(stringTokenizer.nextToken().trim());
|
||||
tag = tagDao.save(tag);
|
||||
selectedTagList.add(tag);
|
||||
}
|
||||
}
|
||||
|
||||
link.setInfo(resourceModel.getInfo());
|
||||
link.setLink(resourceModel.getLink());
|
||||
link.setCreator(user);
|
||||
link.setTagList(new ArrayList<Tag>(selectedTagList));
|
||||
if (resourceModel.getLinkName() != null) {
|
||||
link.setLinkName(resourceModel.getLinkName());
|
||||
}
|
||||
linkResourceDao.save(link);
|
||||
loadListView();
|
||||
resourceModel.setLink("");
|
||||
resourceModel.setLinkName("");
|
||||
resourceModel.setTags("");
|
||||
resourceModel.setSelectedTagList(new ArrayList<Tag>());
|
||||
resourceModel.setInfo("");
|
||||
listContainer.removeAll();
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(feedbackPanel);
|
||||
target.addComponent(listContainer);
|
||||
target.addComponent(editContainer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onError(final AjaxRequestTarget target,
|
||||
final Form form) {
|
||||
target.addComponent(feedbackPanel);
|
||||
}
|
||||
});
|
||||
|
||||
add(editContainer);
|
||||
}
|
||||
}
|
||||
|
||||
public void loadListView() {
|
||||
List<LinkResource> linkList = linkResourceDao.findAll();
|
||||
Collections.sort(linkList, new Comparator<LinkResource>() {
|
||||
@Override
|
||||
public int compare(LinkResource o1, LinkResource o2) {
|
||||
return Integer.valueOf(ratableDao.getRating(o2)).compareTo(
|
||||
Integer.valueOf(ratableDao.getRating(o1)));
|
||||
}
|
||||
});
|
||||
linkListView = new ListView<LinkResource>("link-item", linkList) {
|
||||
|
||||
@Override
|
||||
protected void populateItem(final ListItem<LinkResource> item) {
|
||||
final LinkResource link = item.getModelObject();
|
||||
final List<Rating> ratingList = link.getRatingList();
|
||||
boolean rated = false;
|
||||
point = ratableDao.getRating(link);
|
||||
Rating rating = null;
|
||||
for (Rating r : ratingList) {
|
||||
if (r.getUser().equals(user)) {
|
||||
rating = r;
|
||||
rated = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (rating == null) {
|
||||
rating = new Rating();
|
||||
rating.setUser(user);
|
||||
}
|
||||
final boolean finalRated = rated;
|
||||
final Rating rating2 = rating;
|
||||
item.add(new Label("rate", point + ""));
|
||||
item.add(new AjaxLink<String>("upLink", new Model<String>("Up")) {
|
||||
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated
|
||||
&& rating2.getRatingValue() == RatingValue.UP) {
|
||||
ratingList.remove(rating2);
|
||||
link.setRatingList(ratingList);
|
||||
linkResourceDao.save(link);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
link.setRatingList(ratingList);
|
||||
rating2.setRatingValue(RatingValue.UP);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
linkResourceDao.save(link);
|
||||
loadListView();
|
||||
listContainer.removeAll();
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
item.add(new AjaxLink<String>("downLink", new Model<String>(
|
||||
"Down")) {
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (finalRated
|
||||
&& rating2.getRatingValue() == RatingValue.DOWN) {
|
||||
ratingList.remove(rating2);
|
||||
link.setRatingList(ratingList);
|
||||
linkResourceDao.save(link);
|
||||
Rating rating3 = ratingDao.reLoad(rating2);
|
||||
ratingDao.delete(rating3);
|
||||
} else {
|
||||
rating2.setRatingValue(RatingValue.DOWN);
|
||||
Rating rating3 = ratingDao.save(rating2);
|
||||
ratingList.remove(rating2);
|
||||
ratingList.add(rating3);
|
||||
}
|
||||
|
||||
linkResourceDao.save(link);
|
||||
loadListView();
|
||||
listContainer.removeAll();
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(listContainer);
|
||||
}
|
||||
});
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
item.add(new Label("date", df.format(link.getDateCreated())));
|
||||
item.add(new Label("user", link.getCreator().getFirstName()
|
||||
+ " " + link.getCreator().getLastName()));
|
||||
if (link.getLinkName() == null) {
|
||||
item.add(new ExternalLink("link", link.getLink(), link
|
||||
.getLink()));
|
||||
} else {
|
||||
item.add(new ExternalLink("link", link.getLink(), link
|
||||
.getLinkName()));
|
||||
}
|
||||
item.add(new Label("info", link.getInfo()));
|
||||
String tags = "";
|
||||
|
||||
int count = 0;
|
||||
for (Tag tag : link.getTagList()) {
|
||||
if (count == 0) {
|
||||
tags = tag.getTag();
|
||||
count++;
|
||||
} else {
|
||||
tags += ", " + tag.getTag();
|
||||
}
|
||||
}
|
||||
item.add(new Label("tag", tags));
|
||||
|
||||
item.add(new AjaxLink<Recipient>("deleteLink") {
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
LinkResource link2 = linkResourceDao.reLoad(link);
|
||||
if (link2.equals(editLink)) {
|
||||
edit = false;
|
||||
target.addComponent(editContainer);
|
||||
}
|
||||
linkResourceDao.delete(link2);
|
||||
loadListView();
|
||||
listContainer.removeAll();
|
||||
listContainer.add(linkListView);
|
||||
target.addComponent(listContainer);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
item.add(new AjaxLink<Recipient>("editLink") {
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
edit = true;
|
||||
editLink = linkResourceDao.reLoad(link);
|
||||
linkAddress.setModelObject(editLink.getLink());
|
||||
linkName.setModelObject(editLink.getLinkName());
|
||||
info.setModelObject(editLink.getInfo());
|
||||
// listChoice = new ListMultipleChoice("choices",
|
||||
// MANY_CHOICES)
|
||||
userMultipleChoiceList.setModelObject(editLink
|
||||
.getTagList());
|
||||
// userMultipleChoiceList.setModelObject(editLink
|
||||
// .getTagList());
|
||||
target.addComponent(editContainer);
|
||||
}
|
||||
|
||||
});
|
||||
// item.add(new FileResourcePanel("filePanel",
|
||||
// item.getModelObject()));
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
// public void generateRatings(LinkResource resource) {
|
||||
// Resource resource1 = linkResourceDao.reLoad(resource);
|
||||
// List<Rating> ratingList = resource1.getRatingList();
|
||||
// for (Rating r : ratingList) {
|
||||
// if (r.getRatingValue() == RatingValue.UP) {
|
||||
// point++;
|
||||
// } else {
|
||||
// point--;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// public int getRating(LinkResource resource) {
|
||||
// Resource resource1 = linkResourceDao.reLoad(resource);
|
||||
// List<Rating> ratingList = resource1.getRatingList();
|
||||
// int ratingValue = 0;
|
||||
// for (Rating r : ratingList) {
|
||||
// if (r.getRatingValue() == RatingValue.UP) {
|
||||
// ratingValue++;
|
||||
// } else {
|
||||
// ratingValue--;
|
||||
// }
|
||||
// }
|
||||
// return ratingValue;
|
||||
// }
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
resourceForm.editContainer.link=Link Address
|
||||
Required='${label}' is required
|
Loading…
x
Reference in New Issue
Block a user