Author: solomax
Date: Fri Jun 28 06:20:36 2013
New Revision: 1497652

URL: http://svn.apache.org/r1497652
Log:
[OPENMEETINGS-615] new Messages form is implemented

Modified:
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.html?rev=1497652&r1=1497651&r2=1497652&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.html
 Fri Jun 28 06:20:36 2013
@@ -30,6 +30,9 @@
        <form wicket:id="form">
                <table style="width: 100%;">
                        <tr>
+                               <td colspan="2" wicket:id="feedback"></td>
+                       </tr>
+                       <tr>
                                <td class="messages column 
label"><wicket:ommessage key="1210"/></td>
                                <td><input class="messages text" type="text" 
wicket:id="to"/></td>
                        </tr>
@@ -55,11 +58,11 @@
                                                                        </tr>
                                                                        <tr>
                                                                                
<td><wicket:ommessage key="570" /></td>
-                                                                               
<td><span type="text" wicket:id="start"></span></td>
+                                                                               
<td><span wicket:id="start"></span></td>
                                                                        </tr>
                                                                        <tr>
                                                                                
<td><wicket:ommessage key="571" /></td>
-                                                                               
<td><span type="text" wicket:id="end"></span></td>
+                                                                               
<td><span wicket:id="end"></span></td>
                                                                        </tr>
                                                                </table>
                                                        </td>

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.java?rev=1497652&r1=1497651&r2=1497652&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.java
 Fri Jun 28 06:20:36 2013
@@ -18,12 +18,17 @@
  */
 package org.apache.openmeetings.web.user.profile;
 
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.util.RoomTypeDropDown.getRoomTypes;
 
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
+import org.apache.openmeetings.data.conference.dao.RoomDao;
+import org.apache.openmeetings.data.user.dao.PrivateMessagesDao;
+import org.apache.openmeetings.data.user.dao.UsersDao;
 import org.apache.openmeetings.persistence.beans.room.Room;
 import org.apache.openmeetings.persistence.beans.user.PrivateMessage;
 import org.apache.openmeetings.web.app.WebSession;
@@ -37,6 +42,7 @@ import org.apache.wicket.markup.html.for
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
@@ -47,7 +53,8 @@ import com.googlecode.wicket.jquery.ui.w
 public class MessageDialog extends AbstractFormDialog<PrivateMessage> {
        private static final long serialVersionUID = 1L;
        private final Form<PrivateMessage> form;
-       private DialogButton send = new DialogButton(WebSession.getString(218));
+       private FeedbackPanel feedback = new FeedbackPanel("feedback");
+       DialogButton send = new DialogButton(WebSession.getString(218));
        private DialogButton cancel = new 
DialogButton(WebSession.getString(219));
        private final WebMarkupContainer roomParamsBlock = new 
WebMarkupContainer("roomParamsBlock");
        private final WebMarkupContainer roomParams = new 
WebMarkupContainer("roomParams");
@@ -64,6 +71,11 @@ public class MessageDialog extends Abstr
                modelStart.setObject(new Date());
                modelEnd.setObject(new Date()); //TODO should we add 1 hour or 
generalize with Calendar???
                PrivateMessage p = new PrivateMessage();
+               p.setFrom(getBean(UsersDao.class).get(getUserId()));
+               p.setOwner(p.getFrom());
+               p.setIsTrash(false);
+               p.setIsRead(false);
+               p.setPrivateMessageFolderId(0L);
                Room r = new Room();
                r.setAppointment(true);
                r.setRoomtype(getRoomTypes().get(0));
@@ -79,7 +91,8 @@ public class MessageDialog extends Abstr
                super(id, WebSession.getString(1209), model);
                form = new Form<PrivateMessage>("form", getModel());
                
-               form.add(new UserAutoCompleteTextField("to"));
+               form.add(feedback.setOutputMarkupId(true));
+               form.add(new UserAutoCompleteTextField("to").setRequired(true));
                form.add(new TextField<String>("subject"));
                form.add(new TextArea<String>("message"));
                form.add(roomParamsBlock.setOutputMarkupId(true));
@@ -119,13 +132,28 @@ public class MessageDialog extends Abstr
 
        @Override
        protected void onError(AjaxRequestTarget target) {
-               // TODO Auto-generated method stub
-
+               target.add(feedback);
        }
 
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
-               // TODO Auto-generated method stub
-
+               PrivateMessage p = getModelObject();
+               p.setInserted(new Date());
+               if (p.isBookedRoom()) {
+                       Room r = p.getRoom();
+                       r.setName(p.getSubject());
+                       r.setComment("");
+                       r.setNumberOfPartizipants(100L);
+                       r.setAppointment(true);
+                       r.setAllowUserQuestions(true);
+                       r.setAllowFontStyles(true);
+                       getBean(RoomDao.class).update(r, getUserId());
+               } else {
+                       p.setRoom(null);
+               }
+               if (p.getTo().getUser_id() == null) {
+                       getBean(UsersDao.class).update(p.getTo(), getUserId());
+               }
+               getBean(PrivateMessagesDao.class).update(p, getUserId());
        }
 }

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=1497652&r1=1497651&r2=1497652&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 Jun 28 06:20:36 2013
@@ -57,6 +57,7 @@ import ro.fortsoft.wicket.dashboard.web.
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 //TODO not released yet import 
com.googlecode.wicket.jquery.ui.plugins.fixedheadertable.FixedHeaderTableBehavior;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 
 public class MessagesContactsPanel extends UserPanel {
        private static final long serialVersionUID = 8098087441571734957L;
@@ -71,7 +72,7 @@ public class MessagesContactsPanel exten
        private final WebMarkupContainer inbox = new 
WebMarkupContainer("inbox");
        private final WebMarkupContainer sent = new WebMarkupContainer("sent");
        private final WebMarkupContainer trash = new 
WebMarkupContainer("trash");
-       private final MessageDialog newMessage = new 
MessageDialog("newMessage", new CompoundPropertyModel<PrivateMessage>(new 
PrivateMessage()));
+       private final MessageDialog newMessage;
        
        private void setDefaultFolderClass() {
                inbox.add(AttributeAppender.replace("class", "email inbox 
clickable"));
@@ -111,6 +112,16 @@ public class MessagesContactsPanel exten
        public MessagesContactsPanel(String id) {
                super(id);
                foldersModel = 
Model.ofList(getBean(PrivateMessageFolderDao.class).get(0, Integer.MAX_VALUE));
+               newMessage = new MessageDialog("newMessage", new 
CompoundPropertyModel<PrivateMessage>(new PrivateMessage())) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClose(AjaxRequestTarget target, 
DialogButton button) {
+                               if (button.equals(send)) {
+                                       target.add(container);
+                               }
+                       }
+               };
                
                final AddFolderDialog addFolder = new 
AddFolderDialog("addFolder") {
                        private static final long serialVersionUID = 1L;

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java?rev=1497652&r1=1497651&r2=1497652&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java
 Fri Jun 28 06:20:36 2013
@@ -27,7 +27,10 @@ import org.apache.openmeetings.data.user
 import org.apache.openmeetings.persistence.beans.user.Address;
 import org.apache.openmeetings.persistence.beans.user.User;
 import org.apache.openmeetings.persistence.beans.user.User.Type;
+import 
org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
 import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.validation.IValidationError;
+import org.apache.wicket.validation.Validatable;
 
 import com.googlecode.wicket.jquery.core.renderer.ITextRenderer;
 import com.googlecode.wicket.jquery.ui.form.autocomplete.AutoCompleteTextField;
@@ -42,11 +45,46 @@ public class UserAutoCompleteTextField e
                        if (value != null && 
value.equals(UserAutoCompleteTextField.this.getModelValue()))  {
                                return 
UserAutoCompleteTextField.this.getModelObject();
                        } else {
-                               //TODO validate input !!!!!!!!!!!!!!!!!
-                               User u = new User();
-                               u.setType(Type.contact);
-                               u.setAdresses(new Address());
-                               u.getAdresses().setEmail(value);
+                               //TODO extract to function
+                               User u = null;
+                               //FIXME refactor this
+                               String email = null;
+                               String fName = null;
+                               String lName = null;
+                               int idx = value.indexOf('<');
+                               if (idx > -1) {
+                                       int idx1 = value.indexOf('>', idx);
+                                       if (idx1 > -1) {
+                                               email = value.substring(idx + 
1, idx1);
+                                               
+                                               String name = 
value.substring(0, idx).replace("\"", "");
+                                               int idx2 = name.indexOf(' ');
+                                               if (idx2 > -1) {
+                                                       fName = 
name.substring(0, idx2);
+                                                       lName = 
name.substring(idx2 + 1);
+                                               } else {
+                                                       fName = "";
+                                                       lName = name;
+                                               }
+                                                
+                                       }
+                               } else {
+                                       email = value;
+                               }
+                               Validatable<String> valEmail = new 
Validatable<String>(email);
+                               
RfcCompliantEmailAddressValidator.getInstance().validate(valEmail);
+                               if (valEmail.isValid()) {
+                                       u = new User();
+                                       u.setType(Type.contact);
+                                       u.setFirstname(fName);
+                                       u.setLastname(lName);
+                                       u.setAdresses(new Address());
+                                       u.getAdresses().setEmail(value);
+                               } else {
+                                       for (IValidationError err : 
valEmail.getErrors()) {
+                                               
UserAutoCompleteTextField.this.error(err);
+                                       }
+                               }
                                return u;
                        }
                }


Reply via email to