Author: solomax
Date: Fri May 31 17:27:48 2013
New Revision: 1488327
URL: http://svn.apache.org/r1488327
Log:
[OPENMEETINGS-626] select/delete folder works as expected;
Styles are enhanced;
Code clean up;
Added:
openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/cross.png
(with props)
openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/folder.png
(with props)
Modified:
openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/User.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/ChatPanel.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
Added:
openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/cross.png
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/cross.png?rev=1488327&view=auto
==============================================================================
Binary file - no diff available.
Propchange:
openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/cross.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added:
openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/folder.png
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/folder.png?rev=1488327&view=auto
==============================================================================
Binary file - no diff available.
Propchange:
openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/images/folder.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
(original)
+++ openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css Fri
May 31 17:27:48 2013
@@ -733,15 +733,20 @@ table.messages td.main {
}
.email {
padding-left: 25px;
- background-repeat: no-repeat;
- background-position-x: 5px;
+ background-repeat: no-repeat !important;
+ background-position-x: 5px !important;
padding-top: 2px;
- background-position-y: 3px;
+ background-position-y: 3px !important;
+ display: block;
+ text-align:left;
}
.email.new {
background-image: url(images/email_add.png);
font-weight: normal;
}
+.email.new .ui-button-text, .email.newdir .ui-button-text {
+ padding: 0;
+}
.email.inbox {
background-image: url(images/basket_put.png);
}
@@ -755,3 +760,20 @@ table.messages td.main {
background-image: url(images/folder_add.png);
font-weight: normal;
}
+.email.folder {
+ background-image: url(images/folder.png);
+ font-weight: normal;
+ position: relative;
+}
+.email.folder .delete {
+ position:absolute;
+ right: 2px;
+ top: 2px;
+ background-image: url(images/cross.png);
+ font-weight: normal;
+ padding: 0;
+ display: inline-block;
+ background-position: 0;
+ width: 18px;
+ height: 18px;
+}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
Fri May 31 17:27:48 2013
@@ -182,12 +182,14 @@ public class PrivateMessagesDao implemen
hql += " ) ";
}
- hql += "ORDER BY "+orderBy;
-
- if (asc) {
- hql += " ASC";
- } else {
- hql += " DESC";
+ if (orderBy != null && orderBy.length() > 0) {
+ hql += "ORDER BY "+orderBy;
+
+ if (asc) {
+ hql += " ASC";
+ } else {
+ hql += " DESC";
+ }
}
TypedQuery<PrivateMessage> query = em.createQuery(hql,
PrivateMessage.class);
@@ -246,6 +248,7 @@ public class PrivateMessagesDao implemen
return null;
}
+ //FIXME need to be rewritten
public List<PrivateMessage> getTrashPrivateMessagesByUser(Long user_id,
String search,
String orderBy, int start, Boolean asc, int max) {
try {
@@ -265,12 +268,14 @@ public class PrivateMessagesDao implemen
hql += " ) ";
}
- hql += "ORDER BY "+orderBy;
-
- if (asc) {
- hql += " ASC";
- } else {
- hql += " DESC";
+ if (orderBy != null && orderBy.length() > 0) {
+ hql += "ORDER BY "+orderBy;
+
+ if (asc) {
+ hql += " ASC";
+ } else {
+ hql += " DESC";
+ }
}
TypedQuery<PrivateMessage> query = em.createQuery(hql,
PrivateMessage.class);
@@ -321,7 +326,8 @@ public class PrivateMessagesDao implemen
}
return null;
}
-
+
+ //FIXME need to be rewritten
public List<PrivateMessage> getSendPrivateMessagesByUser(Long toUserId,
String search,
String orderBy, int start, Boolean asc, Long
privateMessageFolderId, int max) {
try {
@@ -343,14 +349,15 @@ public class PrivateMessagesDao implemen
hql += " ) ";
}
- hql += "ORDER BY "+orderBy;
-
- if (asc) {
- hql += " ASC";
- } else {
- hql += " DESC";
+ if (orderBy != null && orderBy.length() > 0) {
+ hql += "ORDER BY "+orderBy;
+
+ if (asc) {
+ hql += " ASC";
+ } else {
+ hql += " DESC";
+ }
}
-
TypedQuery<PrivateMessage> query = em.createQuery(hql,
PrivateMessage.class);
query.setParameter("toUserId", toUserId);
query.setParameter("privateMessageFolderId",
privateMessageFolderId);
@@ -404,6 +411,7 @@ public class PrivateMessagesDao implemen
return null;
}
+ //FIXME need to be rewritten
public List<PrivateMessage> getFolderPrivateMessagesByUser(Long
toUserId, String search, String orderBy,
int start, Boolean asc, Long privateMessageFolderId,
int max) {
try {
@@ -424,12 +432,14 @@ public class PrivateMessagesDao implemen
hql += " ) ";
}
- hql += "ORDER BY "+orderBy;
-
- if (asc) {
- hql += " ASC";
- } else {
- hql += " DESC";
+ if (orderBy != null && orderBy.length() > 0) {
+ hql += "ORDER BY "+orderBy;
+
+ if (asc) {
+ hql += " ASC";
+ } else {
+ hql += " DESC";
+ }
}
log.debug("HQL "+hql);
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/User.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/User.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/User.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/User.java
Fri May 31 17:27:48 2013
@@ -103,8 +103,14 @@ import org.simpleframework.xml.Root;
@Table(name = "om_user")
@Root(name = "user")
public class User implements Serializable, IDataProviderEntity {
-
private static final long serialVersionUID = -2265479712596674065L;
+
+ public enum Type {
+ user
+ , ldap //should we add it???
+ , external
+ , contact
+ }
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -255,6 +261,10 @@ public class User implements Serializabl
@Element(data = true, required = false)
private Boolean showContactDataToContacts;
+ @Column(name = "type")
+ @Element(data = true, required = false)
+ private Type type = Type.user;
+
public Long getUser_id() {
return user_id;
}
@@ -598,4 +608,11 @@ public class User implements Serializabl
return getSendSMS() ? getAdresses().getPhone() : "";
}
+ public Type getType() {
+ return type;
+ }
+
+ public void setType(Type type) {
+ this.type = type;
+ }
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
Fri May 31 17:27:48 2013
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.web.app;
+import static java.text.DateFormat.SHORT;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.DASHBOARD_SHOW_MYROOMS_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.DASHBOARD_SHOW_RSS_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.DEFAUT_LANG_KEY;
@@ -57,12 +58,14 @@ import ro.fortsoft.wicket.dashboard.web.
public class WebSession extends AbstractAuthenticatedWebSession {
private static final long serialVersionUID = 1123393236459095315L;
+ //private static final Map<String, Locale> LNG_TO_LOCALE_MAP = new
HashMap<String, Locale> ();
private long userId = -1;
private long userLevel = -1;
private String SID = null;
private OmUrlFragment area = null;
private TimeZone tz;
private SimpleDateFormat ISO8601FORMAT = new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
+ private DateFormat sdf;
private Dashboard dashboard;
public WebSession(Request request) {
@@ -75,6 +78,7 @@ public class WebSession extends Abstract
userId = -1;
userLevel = -1;
SID = null;
+ sdf = null;
}
@Override
@@ -108,6 +112,8 @@ public class WebSession extends Abstract
userId = user.getUser_id();
tz =
TimeZone.getTimeZone(user.getOmTimeZone().getIcal());
ISO8601FORMAT.setTimeZone(tz);
+ //FIXMW locale need to be set by User language first
+ sdf = DateFormat.getDateTimeInstance(SHORT, SHORT,
getLocale());
if (null == getId()) {
bind();
}
@@ -151,10 +157,14 @@ public class WebSession extends Abstract
return Calendar.getInstance(get().tz);
}
- public static DateFormat getDateFormat() {
+ public static DateFormat getIsoDateFormat() {
return get().ISO8601FORMAT;
}
-
+
+ public static DateFormat getDateFormat() {
+ return get().sdf;
+ }
+
public static long getUserLevel() {
return get().userLevel;
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.html?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.html
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.html
Fri May 31 17:27:48 2013
@@ -23,6 +23,7 @@
<form wicket:id="form">
<span style="padding-left: 20px; padding-right:
20px;"><wicket:ommessage key="572"/></span><input type="text"
wicket:id="title"/>
<div wicket:id="feedback"></div>
+ <input type="submit" wicket:id="submit" style="position:
absolute; top: -9999px; width: 1px; height: 1px;"/>
</form>
</wicket:panel>
</html>
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/AddFolderDialog.java
Fri May 31 17:27:48 2013
@@ -23,6 +23,7 @@ import java.util.List;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
@@ -53,6 +54,19 @@ public abstract class AddFolderDialog ex
add(title = new
RequiredTextField<String>("title", getModel()));
title.setLabel(Model.of(WebSession.getString(572)));
add(feedback.setOutputMarkupId(true));
+ add(new AjaxButton("submit") { //FAKE button so
"submit-on-enter" works as expected
+ private static final long
serialVersionUID = -3612671587183668912L;
+
+ @Override
+ protected void
onSubmit(AjaxRequestTarget target, Form<?> form) {
+
AddFolderDialog.this.onSubmit(target);
+ }
+
+ @Override
+ protected void
onError(AjaxRequestTarget target, Form<?> form) {
+
AddFolderDialog.this.onError(target);
+ }
+ });
}
};
add(form);
@@ -65,6 +79,11 @@ public abstract class AddFolderDialog ex
setModelObject(name);
getFeedbackMessages().clear();
}
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ close(target, getSubmitButton());
+ }
@Override
protected List<DialogButton> getButtons() {
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
Fri May 31 17:27:48 2013
@@ -44,7 +44,7 @@ public class UploadableProfileImagePanel
final Form<Void> form = new Form<Void>("form");
form.setMultiPart(true);
form.setMaxSize(Bytes.bytes(getMaxUploadSize(getBean(ConfigurationDao.class))));
- //Model is necessary here to avoidwriting image to the User
object
+ // Model is necessary here to avoid writing image to the User
object
form.add(fileUploadField = new FileUploadField("image", new
IModel<List<FileUpload>>() {
private static final long serialVersionUID =
-8514518605278263956L;
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
Fri May 31 17:27:48 2013
@@ -238,7 +238,6 @@ public class SignInDialog extends Abstra
@Override
protected void onError(AjaxRequestTarget
target, Form<?> form) {
- // TODO Auto-generated method stub
SignInDialog.this.onError(target);
}
});
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/ChatPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/ChatPanel.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/ChatPanel.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/ChatPanel.java
Fri May 31 17:27:48 2013
@@ -19,15 +19,15 @@
package org.apache.openmeetings.web.user;
import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import java.text.DateFormat;
import java.util.Date;
import org.apache.openmeetings.data.chat.ChatDao;
import org.apache.openmeetings.data.user.dao.UsersDao;
import org.apache.openmeetings.persistence.beans.chat.ChatMessage;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.UserPanel;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -49,11 +49,11 @@ import org.red5.logging.Red5LoggerFactor
import org.slf4j.Logger;
import com.googlecode.wicket.jquery.ui.plugins.emoticons.EmoticonsBehavior;
+
public class ChatPanel extends UserPanel {
private static final Logger log =
Red5LoggerFactory.getLogger(ChatPanel.class, webAppRootKey);
private static final long serialVersionUID = -9144707674886211557L;
private static final String MESSAGE_AREA_ID = "messageArea";
- private final DateFormat sdf;
private String message;
private JSONObject getMessage(ChatMessage m) throws JSONException {
@@ -62,13 +62,12 @@ public class ChatPanel extends UserPanel
.put("msg", new JSONObject()
.put("id", m.getId())
.put("message", m.getMessage())
- .put("sent", sdf.format(m.getSent()))
+ .put("sent",
getDateFormat().format(m.getSent()))
);
}
public ChatPanel(String id) {
super(id);
- sdf = DateFormat.getDateInstance(DateFormat.MEDIUM,
getSession().getLocale());
setOutputMarkupId(true);
setMarkupId(id);
@@ -78,7 +77,7 @@ public class ChatPanel extends UserPanel
@Override
public void renderHead(Component component,
IHeaderResponse response) {
- ChatDao dao =
Application.getBean(ChatDao.class);
+ ChatDao dao = getBean(ChatDao.class);
try {
StringBuilder sb = new StringBuilder();
//FIXME limited count should be loaded
with "earlier" link
@@ -103,11 +102,11 @@ public class ChatPanel extends UserPanel
private static final long serialVersionUID =
-3746739738826501331L;
protected void onSubmit(AjaxRequestTarget target) {
- ChatDao dao =
Application.getBean(ChatDao.class);
+ ChatDao dao = getBean(ChatDao.class);
ChatMessage m = new ChatMessage();
m.setMessage(message);
m.setSent(new Date());
-
m.setFromUser(Application.getBean(UsersDao.class).get(WebSession.getUserId()));
+
m.setFromUser(getBean(UsersDao.class).get(getUserId()));
dao.update(m);
IWebSocketConnectionRegistry reg =
IWebSocketSettings.Holder.get(getApplication()).getConnectionRegistry();
for (IWebSocketConnection c :
reg.getConnections(getApplication())) {
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
Fri May 31 17:27:48 2013
@@ -24,13 +24,16 @@
<table class="messages">
<tr>
<td class="side left">
- <div class="email new clickable
ui-widget-header ui-corner-all" wicket:id="new"
wicket:ommessage="title:1208"><wicket:ommessage key="1207"/></div>
- <div class="email inbox clickable"
wicket:id="inbox"><wicket:ommessage key="1222"/></div>
- <div class="email sent clickable"
wicket:id="sent"><wicket:ommessage key="1223"/></div>
- <div class="email trash clickable"
wicket:id="trash"><wicket:ommessage key="1224"/></div>
- <div class="email newdir clickable
ui-widget-header ui-corner-all" wicket:id="newdir"
wicket:ommessage="title:1259"><wicket:ommessage key="1258"/></div>
+ <div class="email new" wicket:id="new"
wicket:ommessage="title:1208"><wicket:ommessage key="1207"/></div>
<div wicket:id="folders">
- <div wicket:id="folder"><div
wicket:id="name"></div><div wicket:id="delete"></div></div>
+ <div
wicket:id="inbox"><wicket:ommessage key="1222"/></div>
+ <div wicket:id="sent"><wicket:ommessage
key="1223"/></div>
+ <div
wicket:id="trash"><wicket:ommessage key="1224"/></div>
+ <div class="email newdir"
wicket:id="newdir" wicket:ommessage="title:1259"><wicket:ommessage
key="1258"/></div>
+ <div wicket:id="folder">
+ <div wicket:id="name"></div>
+ <div class="delete"
wicket:id="delete" wicket:ommessage="title:1262"></div>
+ </div>
</div>
</td>
<td class="main">
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java?rev=1488327&r1=1488326&r2=1488327&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
Fri May 31 17:27:48 2013
@@ -19,6 +19,7 @@
package org.apache.openmeetings.web.user.profile;
import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
import static org.apache.wicket.util.time.Duration.seconds;
@@ -29,7 +30,9 @@ import org.apache.openmeetings.data.user
import org.apache.openmeetings.data.user.dao.PrivateMessagesDao;
import org.apache.openmeetings.persistence.beans.user.PrivateMessage;
import org.apache.openmeetings.persistence.beans.user.PrivateMessageFolder;
+import org.apache.openmeetings.persistence.beans.user.User;
import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.AddFolderDialog;
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.common.UserPanel;
@@ -39,6 +42,8 @@ import org.apache.openmeetings.web.data.
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
@@ -47,6 +52,10 @@ import org.apache.wicket.markup.repeater
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
+import ro.fortsoft.wicket.dashboard.web.util.ConfirmAjaxCallListener;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+
public class MessagesContactsPanel extends UserPanel {
private static final long serialVersionUID = 8098087441571734957L;
private final WebMarkupContainer container = new
WebMarkupContainer("container");
@@ -57,6 +66,42 @@ public class MessagesContactsPanel exten
private final static long TRASH_FOLDER_ID = -3;
private final IModel<Long> selectedModel = Model.of(INBOX_FOLDER_ID);
private final IModel<List<? extends PrivateMessageFolder>> foldersModel;
+ private final WebMarkupContainer inbox = new
WebMarkupContainer("inbox");
+ private final WebMarkupContainer sent = new WebMarkupContainer("sent");
+ private final WebMarkupContainer trash = new
WebMarkupContainer("trash");
+
+ private void setDefaultFolderClass() {
+ inbox.add(AttributeAppender.replace("class", "email inbox
clickable"));
+ sent.add(AttributeAppender.replace("class", "email sent
clickable"));
+ trash.add(AttributeAppender.replace("class", "email trash
clickable"));
+ }
+
+ private void selectFolder(WebMarkupContainer folder) {
+ folder.add(AttributeAppender.append("class", "ui-widget-header
ui-corner-all"));
+ }
+
+ private void setFolderClass(ListItem<PrivateMessageFolder> folder) {
+ folder.add(AttributeAppender.replace("class", "email folder
clickable"));
+ if (folder.getModelObject().getPrivateMessageFolderId() ==
selectedModel.getObject()) {
+ selectFolder(folder);
+ }
+ }
+
+ private void selectFolder(WebMarkupContainer folder, long id,
AjaxRequestTarget target) {
+ selectedModel.setObject(id);
+ setDefaultFolderClass();
+ selectFolder(folder);
+ if (target != null) {
+ target.add(folders, container);
+ }
+ }
+
+ private String getDisplayName(User u) {
+ return new StringBuilder().append(u.getFirstname()).append(" ")
+ .append(u.getLastname()).append(" ")
+
.append("<").append(u.getAdresses().getEmail()).append(">")
+ .toString();
+ }
@SuppressWarnings("unchecked")
public MessagesContactsPanel(String id) {
@@ -68,6 +113,7 @@ public class MessagesContactsPanel exten
@Override
protected void onSubmit(AjaxRequestTarget target) {
+ super.onSubmit(target);
PrivateMessageFolderDao fDao =
getBean(PrivateMessageFolderDao.class);
fDao.addPrivateMessageFolder(getModelObject(),
getUserId());
foldersModel.setObject(fDao.get(0,
Integer.MAX_VALUE));
@@ -81,49 +127,71 @@ public class MessagesContactsPanel exten
@Override
protected void onEvent(AjaxRequestTarget target) {
}
- }));
- add(new WebMarkupContainer("inbox").add(new
AjaxEventBehavior("click") {
+ }).add(new JQueryBehavior(".email.new", "button")));
+ folders.add(inbox.add(new AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;
@Override
protected void onEvent(AjaxRequestTarget target) {
- selectedModel.setObject(INBOX_FOLDER_ID);
- target.add(container);
+ selectFolder(inbox, INBOX_FOLDER_ID, target);
}
}));
- add(new WebMarkupContainer("sent").add(new
AjaxEventBehavior("click") {
+ folders.add(sent.add(new AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;
@Override
protected void onEvent(AjaxRequestTarget target) {
- selectedModel.setObject(SENT_FOLDER_ID);
- target.add(container);
+ selectFolder(sent, SENT_FOLDER_ID, target);
}
}));
- add(new WebMarkupContainer("trash").add(new
AjaxEventBehavior("click") {
+ folders.add(trash.add(new AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;
@Override
protected void onEvent(AjaxRequestTarget target) {
- selectedModel.setObject(TRASH_FOLDER_ID);
- target.add(container);
+ selectFolder(trash, TRASH_FOLDER_ID, target);
}
}));
- add(new WebMarkupContainer("newdir").add(new
AjaxEventBehavior("click") {
+ folders.add(new WebMarkupContainer("newdir").add(new
AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;
@Override
protected void onEvent(AjaxRequestTarget target) {
addFolder.open(target);
}
- }));
+ }).add(new JQueryBehavior(".email.newdir", "button")));
add(folders.add(new ListView<PrivateMessageFolder>("folder",
foldersModel) {
private static final long serialVersionUID = 1L;
@Override
- protected void
populateItem(ListItem<PrivateMessageFolder> item) {
+ protected void populateItem(final
ListItem<PrivateMessageFolder> item) {
item.add(new Label("name",
item.getModelObject().getFolderName()));
- item.add(new WebMarkupContainer("delete"));
+ item.add(new
WebMarkupContainer("delete").add(new AjaxEventBehavior("click") {
+ private static final long
serialVersionUID = 1L;
+
+ @Override
+ protected void
onEvent(AjaxRequestTarget target) {
+ PrivateMessageFolderDao fDao =
getBean(PrivateMessageFolderDao.class);
+
fDao.delete(item.getModelObject(), getUserId());
+
foldersModel.setObject(fDao.get(0, Integer.MAX_VALUE));
+ target.add(folders);
+ }
+
+ @Override
+ protected void
updateAjaxAttributes(AjaxRequestAttributes attributes) {
+
super.updateAjaxAttributes(attributes);
+
attributes.getAjaxCallListeners().add(new
ConfirmAjaxCallListener(WebSession.getString(713)));
+ }
+ }));
+ item.add(new AjaxEventBehavior("click") {
+ private static final long
serialVersionUID = 1L;
+
+ @Override
+ protected void
onEvent(AjaxRequestTarget target) {
+ selectFolder(item,
item.getModelObject().getPrivateMessageFolderId(), target);
+ }
+ });
+ setFolderClass(item);
}
}).setOutputMarkupId(true));
unreadModel.setObject(getBean(PrivateMessagesDao.class).count(getUserId(),
null, false, false));
@@ -173,9 +241,9 @@ public class MessagesContactsPanel exten
protected void populateItem(Item<PrivateMessage> item) {
PrivateMessage m = item.getModelObject();
item.add(new Label("id",
m.getPrivateMessageId()));
- item.add(new Label("from", m.getFrom()));
+ item.add(new Label("from",
getDisplayName(m.getFrom())));
item.add(new Label("subject", m.getSubject()));
- item.add(new Label("send", m.getInserted()));
+ item.add(new Label("send",
getDateFormat().format(m.getInserted())));
}
};
DataViewContainer<PrivateMessage> dataContainer = new
DataViewContainer<PrivateMessage>(container, dv);
@@ -193,6 +261,7 @@ public class MessagesContactsPanel exten
}
});
+ selectFolder(inbox, INBOX_FOLDER_ID, null);
container.add(new Label("unread", unreadModel));
add(new WebMarkupContainer("pendingContacts"));//FIXME
add(new WebMarkupContainer("na1"));//FIXME