You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2015/11/06 07:18:49 UTC
svn commit: r1712911 [10/16] - in /openmeetings/branches/3.1.x:
openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/
openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/
openmeetings-core/src/main/java/org/ap...
Added: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1712911&view=auto
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java (added)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java Fri Nov 6 06:18:44 2015
@@ -0,0 +1,178 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.common.tree;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.Date;
+
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.AddFolderDialog;
+import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
+
+public abstract class FileTreePanel extends Panel {
+ private static final long serialVersionUID = 1L;
+ final WebMarkupContainer trees = new WebMarkupContainer("tree-container");
+ private final WebMarkupContainer sizes = new WebMarkupContainer("sizes");
+ protected final IModel<FileItem> selectedFile = new CompoundPropertyModel<FileItem>((FileItem)null);
+ protected final IModel<String> homeSize = Model.of((String)null);
+ protected final IModel<String> publicSize = Model.of((String)null);
+ final ConvertingErrorsDialog errorsDialog = new ConvertingErrorsDialog("errors", Model.of((Recording)null));
+ protected FileItemTree<? extends FileItem> selected;
+ protected RepeatingView treesView = new RepeatingView("tree");
+
+ public FileTreePanel(String id) {
+ super(id);
+ defineTrees();
+ selectedFile.getObject().setId(Long.MIN_VALUE);
+ final AddFolderDialog addFolder = new AddFolderDialog("addFolder", Application.getString(712)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ createFolder(getModelObject());
+ target.add(trees); //FIXME add correct refresh
+ }
+ };
+ add(addFolder);
+ Droppable<FileItem> trashToolbar = new Droppable<FileItem>("trash-toolbar") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onConfigure(JQueryBehavior behavior) {
+ super.onConfigure(behavior);
+ behavior.setOption("hoverClass", Options.asString("ui-state-hover trash-toolbar-hover"));
+ behavior.setOption("accept", Options.asString(".recorditem, .fileitem"));
+ }
+
+ @Override
+ public void onDrop(AjaxRequestTarget target, Component component) {
+ Object o = component.getDefaultModelObject();
+ if (o instanceof FileItem) {
+ delete((FileItem)o, target);
+ }
+ }
+ };
+ add(trashToolbar);
+ trashToolbar.add(new WebMarkupContainer("create").add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ addFolder.open(target);
+ }
+ }));
+ trashToolbar.add(new WebMarkupContainer("refresh").add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ target.add(trees); //FIXME add correct refresh
+ }
+ }));
+ trashToolbar.add(new ConfirmableAjaxBorder("trash", getString("80"), getString("713")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ delete(selectedFile.getObject(), target);
+ }
+ });
+
+ add(trees.add(treesView).setOutputMarkupId(true));
+ updateSizes();
+ add(sizes.add(new Label("homeSize", homeSize), new Label("publicSize", publicSize)).setOutputMarkupId(true));
+ sizes.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(30)) {
+ private static final long serialVersionUID = 1L;
+
+ protected void onPostProcessTarget(AjaxRequestTarget target) {
+ updateSizes();
+ }
+ });
+ add(errorsDialog);
+ }
+
+ void delete(FileItem f, AjaxRequestTarget target) {
+ long id = f.getId();
+ if (id > 0) {
+ if (f instanceof Recording) {
+ getBean(RecordingDao.class).delete((Recording)f);
+ } else {
+ getBean(FileExplorerItemDao.class).delete((FileExplorerItem)f);
+ }
+ }
+ target.add(trees); //FIXME add correct refresh
+ }
+
+ public void createRecordingFolder(String name) {
+ Recording f = new Recording();
+ f.setFileName(name);
+ f.setInsertedBy(getUserId());
+ f.setInserted(new Date());
+ f.setType(Type.Folder);;
+ Recording p = (Recording)selectedFile.getObject();
+ long parentId = p.getId();
+ if (Type.Folder == p.getType()) {
+ f.setParentItemId(parentId);
+ }
+ f.setOwnerId(p.getOwnerId());
+ f.setOrganization_id(p.getOrganization_id());
+ getBean(RecordingDao.class).update(f);
+ }
+
+ public abstract void defineTrees();
+
+ public abstract void update(AjaxRequestTarget target, FileItem f);
+
+ public abstract void createFolder(String name);
+
+ public abstract void updateSizes();
+
+ @Override
+ protected void onDetach() {
+ selectedFile.detach();
+ homeSize.detach();
+ publicSize.detach();
+ super.onDetach();
+ }
+}
Copied: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html (from r1712825, openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingPanel.html)
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html?p2=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html&p1=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingPanel.html&r1=1712825&r2=1712911&rev=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingPanel.html (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html Fri Nov 6 06:18:44 2015
@@ -20,6 +20,6 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
- <div wicket:id="drop" class="recording item"><div wicket:id="drag"><wicket:child /><span wicket:id="name" class="name"></span></div></div>
+ <div wicket:id="drop" class="file item"><div wicket:id="drag"><wicket:child /><span wicket:id="name" class="name"></span></div></div>
</wicket:panel>
</html>
Copied: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java (from r1712825, openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingPanel.java)
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java?p2=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java&p1=openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingPanel.java&r1=1712825&r2=1712911&rev=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingPanel.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java Fri Nov 6 06:18:44 2015
@@ -16,12 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.openmeetings.web.user.record;
+package org.apache.openmeetings.web.common.tree;
import static org.apache.openmeetings.web.app.Application.getBean;
-import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
-import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.record.Recording;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -38,48 +42,53 @@ import com.googlecode.wicket.jquery.core
import com.googlecode.wicket.jquery.ui.interaction.draggable.Draggable;
import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
-public class RecordingPanel extends Panel {
+public class FolderPanel extends Panel {
private static final long serialVersionUID = 1L;
protected final MarkupContainer drop;
protected final MarkupContainer drag;
- public RecordingPanel(String id, final IModel<FlvRecording> model, final RecordingsPanel treePanel) {
+ public FolderPanel(String id, final IModel<? extends FileItem> model, final FileTreePanel treePanel) {
super(id, model);
- FlvRecording r = model.getObject();
- drop = r.isFolder() ? new Droppable<FlvRecording>("drop", model) {
+ FileItem r = model.getObject();
+ drop = r.getType() == Type.Folder ? new Droppable<FileItem>("drop", Model.of(r)) {
private static final long serialVersionUID = 1L;
@Override
public void onConfigure(JQueryBehavior behavior) {
super.onConfigure(behavior);
behavior.setOption("hoverClass", Options.asString("ui-state-hover"));
- behavior.setOption("accept", Options.asString(".recorditem"));
+ behavior.setOption("accept", Options.asString(getDefaultModelObject() instanceof Recording ? ".recorditem" : ".fileitem"));
}
@Override
public void onDrop(AjaxRequestTarget target, Component component) {
Object o = component.getDefaultModelObject();
- if (o instanceof FlvRecording) {
- FlvRecording p = (FlvRecording)drop.getDefaultModelObject();
- FlvRecording f = (FlvRecording)o;
- long pid = p.getFlvRecordingId();
+ if (o instanceof FileItem) {
+ FileItem p = (FileItem)drop.getDefaultModelObject();
+ FileItem f = (FileItem)o;
+ long pid = p.getId();
//FIXME parent should not be moved to child !!!!!!!
- if (pid == f.getFlvRecordingId()) {
+ if (pid == f.getId()) {
return;
}
- f.setParentFileExplorerItemId(pid > 0 ? pid : null);
+ f.setParentItemId(pid > 0 ? pid : null);
f.setOwnerId(p.getOwnerId());
- f.setRoom_id(p.getRoom_id());
- f.setOrganization_id((p).getOrganization_id());
- getBean(FlvRecordingDao.class).update(f);
+ f.setRoomId(p.getRoomId());
+ if (f instanceof Recording) {
+ Recording r = (Recording)f;
+ r.setOrganization_id(((Recording)p).getOrganization_id());
+ getBean(RecordingDao.class).update(r);
+ } else {
+ getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
+ }
}
target.add(treePanel.trees); //FIXME add correct refresh
}
} : new WebMarkupContainer("drop");
- if (r.getFlvRecordingId() < 1) {
+ if (r.getId() < 1) {
drag = new WebMarkupContainer("drag");
} else {
- Draggable<FlvRecording> d = new Draggable<FlvRecording>("drag", model) {
+ Draggable<? extends FileItem> d = new Draggable<FileItem>("drag", Model.of(r)) {
private static final long serialVersionUID = 1L;
@Override
@@ -90,10 +99,10 @@ public class RecordingPanel extends Pane
}
};
d.setContainment(".file.tree");
- d.add(AttributeAppender.append("class", "recorditem"));
+ d.add(AttributeAppender.append("class", r instanceof Recording ? "recorditem" : "fileitem"));
drag = d;
}
- drag.add(r.getFlvRecordingId() < 1 ? new Label("name", r.getFileName()) : new AjaxEditableLabel<String>("name", Model.of(model.getObject().getFileName())) {
+ drag.add(r.getId() < 1 ? new Label("name", r.getFileName()) : new AjaxEditableLabel<String>("name", Model.of(model.getObject().getFileName())) {
private static final long serialVersionUID = 1L;
@Override
@@ -104,9 +113,13 @@ public class RecordingPanel extends Pane
@Override
protected void onSubmit(AjaxRequestTarget target) {
super.onSubmit(target);
- FlvRecording fi = model.getObject();
+ FileItem fi = model.getObject();
fi.setFileName(getEditor().getModelObject());
- getBean(FlvRecordingDao.class).update(fi);
+ if (fi instanceof Recording) {
+ getBean(RecordingDao.class).update((Recording)fi);
+ } else {
+ getBean(FileExplorerItemDao.class).update((FileExplorerItem)fi);
+ }
}
@Override
Added: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java?rev=1712911&view=auto
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java (added)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java Fri Nov 6 06:18:44 2015
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.common.tree;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.web.app.Application;
+
+public class MyRecordingTreeProvider extends RecordingTreeProvider {
+ private static final long serialVersionUID = 1L;
+
+ public Iterator<? extends Recording> getRoots() {
+ Recording r = new Recording();
+ r.setId(0L);
+ r.setType(Type.Folder);
+ r.setFileName(Application.getString(860));
+ r.setOwnerId(getUserId());
+ return Arrays.asList(r).iterator();
+ }
+
+ public Iterator<? extends Recording> getChildren(Recording node) {
+ if (node.getId() == 0) {
+ return getBean(RecordingDao.class).getRootByOwner(getUserId()).iterator();
+ } else {
+ return super.getChildren(node);
+ }
+ }
+}
Added: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java?rev=1712911&view=auto
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java (added)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java Fri Nov 6 06:18:44 2015
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.common.tree;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.web.app.Application;
+
+public class PublicRecordingTreeProvider extends RecordingTreeProvider {
+ private static final long serialVersionUID = 1L;
+ private final Long groupId;
+ private final String name;
+
+ public PublicRecordingTreeProvider(Long groupId, String name) {
+ this.groupId = groupId;
+ this.name = name;
+ }
+
+ public Iterator<? extends Recording> getRoots() {
+ Recording r = new Recording();
+ r.setId(groupId == null ? -1 : -groupId);
+ r.setOrganization_id(groupId);
+ r.setOwnerId(null);
+ r.setType(Type.Folder);
+ String pub = Application.getString(861);
+ r.setFileName(groupId == null ? pub : String.format("%s (%s)", pub, name));
+ return Arrays.asList(r).iterator();
+ }
+
+ public Iterator<? extends Recording> getChildren(Recording node) {
+ if (node.getId() < 0) {
+ return getBean(RecordingDao.class).getRootByPublic(groupId).iterator();
+ } else {
+ return super.getChildren(node);
+ }
+ }
+}
Added: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/RecordingTreeProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/RecordingTreeProvider.java?rev=1712911&view=auto
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/RecordingTreeProvider.java (added)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/RecordingTreeProvider.java Fri Nov 6 06:18:44 2015
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.common.tree;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.Iterator;
+
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+public abstract class RecordingTreeProvider implements ITreeProvider<Recording> {
+ private static final long serialVersionUID = 1L;
+
+ public void detach() {
+ // TODO LDM should be used
+ }
+
+ public boolean hasChildren(Recording node) {
+ return node.getId() <= 0 || Type.Folder == node.getType();
+ }
+
+ public Iterator<? extends Recording> getChildren(Recording node) {
+ return getBean(RecordingDao.class).getByParent(node.getId()).iterator();
+ }
+
+ public IModel<Recording> model(Recording object) {
+ // TODO LDM should be used
+ return Model.of(object);
+ }
+
+}
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java Fri Nov 6 06:18:44 2015
@@ -26,7 +26,7 @@ import org.apache.wicket.ajax.AjaxReques
import org.apache.wicket.request.IRequestParameters;
public abstract class BaseNotInitedPage extends BasePage {
- private static final long serialVersionUID = 5716753033219700254L;
+ private static final long serialVersionUID = 1L;
private static final InstallationConfig installCfg = new InstallationConfig();
@Override
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html Fri Nov 6 06:18:44 2015
@@ -25,9 +25,11 @@
<link rel="shortcut icon" href="public/favicon.ico" type="image/x-icon"/>
<title wicket:id="pageTitle">[title]</title>
<link media="screen" type="text/css" rel="stylesheet" href="css/theme.css"/>
+ <link media="screen" type="text/css" rel="stylesheet" href="css/chat.css"/>
<link media="screen" type="text/css" rel="stylesheet" href="css/forms.css"/>
<link media="screen" type="text/css" rel="stylesheet" href="css/calendar.css"/>
<link media="screen" type="text/css" rel="stylesheet" href="css/admin.css"/>
+ <link media="screen" type="text/css" rel="stylesheet" href="css/room.css"/>
</head>
<body>
<div wicket:id="header"></div>
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java Fri Nov 6 06:18:44 2015
@@ -41,6 +41,7 @@ import org.wicketstuff.urlfragment.Async
public abstract class BasePage extends AsyncUrlFragmentAwarePage {
private static final long serialVersionUID = 1L;
private final Map<String, String> options;
+ private final HeaderPanel header;
public abstract boolean isRtl();
protected abstract String getLanguageCode();
@@ -58,7 +59,7 @@ public abstract class BasePage extends A
.add(new AttributeModifier("lang", code))
.add(new AttributeModifier("dir", isRtl() ? "rtl" : "ltr")));
add(new Label("pageTitle", appName));
- add(new HeaderPanel("header", appName));
+ add(header = new HeaderPanel("header", appName));
}
protected OmUrlFragment getUrlFragment(IRequestParameters params) {
@@ -71,6 +72,10 @@ public abstract class BasePage extends A
return null;
}
+ public HeaderPanel getHeader() {
+ return header;
+ }
+
@Override
protected Map<String, String> getOptions() {
return options;
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html Fri Nov 6 06:18:44 2015
@@ -19,39 +19,41 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
- <wicket:head>
- <script type="text/javascript">
- function showBusyIndicator() {
- $('#busy_indicator').show();
- }
- function hideBusyIndicator() {
- $('#busy_indicator').hide();
- }
- </script>
- </wicket:head>
- <wicket:extend>
- <script type="text/javascript">
- $(function() {
- Wicket.Event.subscribe('/ajax/call/failure', hideBusyIndicator);
- Wicket.Event.subscribe('/ajax/call/before', showBusyIndicator);
- Wicket.Event.subscribe('/ajax/call/success', hideBusyIndicator);
- Wicket.Event.subscribe('/ajax/call/complete', hideBusyIndicator);
- });
- </script>
- <div id="topControls">
- <div id="topLinks"><span
- id="contactsAndMessages"><a wicket:id="messages"><wicket:message key="1188"/></a></span><span
- id="profile"><a wicket:id="profile"><wicket:message key="5"/></a></span><span
- id="logout"><a wicket:id="logout" href="#"><wicket:message key="310"/></a></span><span
- id="reportBug"><a target="_blank" wicket:id="bug"><wicket:message key="284"/></a></span><span><a
- wicket:id="about"><wicket:message key="1549"/></a></span>
- </div>
- <div wicket:id="dev" id="devMenu"/>
- <div id="busy_indicator"><wicket:message key="1554"/></div>
- <div wicket:id="menu"></div>
+<wicket:head>
+ <link media="screen" type="text/css" rel="stylesheet" href="css/jquery.ui.menubar.css"/>
+ <script type="text/javascript" src="js/jquery.ui.menubar.js"></script>
+ <script type="text/javascript">
+ function showBusyIndicator() {
+ $('#busy_indicator').show();
+ }
+ function hideBusyIndicator() {
+ $('#busy_indicator').hide();
+ }
+ </script>
+</wicket:head>
+<wicket:extend>
+ <script type="text/javascript">
+ $(function() {
+ Wicket.Event.subscribe('/ajax/call/failure', hideBusyIndicator);
+ Wicket.Event.subscribe('/ajax/call/before', showBusyIndicator);
+ Wicket.Event.subscribe('/ajax/call/success', hideBusyIndicator);
+ Wicket.Event.subscribe('/ajax/call/complete', hideBusyIndicator);
+ });
+ </script>
+ <div id="topControls">
+ <div wicket:id="topLinks"><span
+ id="contactsAndMessages"><a wicket:id="messages"><wicket:message key="1188"/></a></span><span
+ id="profile"><a wicket:id="profile"><wicket:message key="5"/></a></span><span
+ id="logout"><a wicket:id="logout" href="#"><wicket:message key="310"/></a></span><span
+ id="reportBug"><a target="_blank" wicket:id="bug"><wicket:message key="284"/></a></span><span><a
+ wicket:id="about"><wicket:message key="1549"/></a></span>
</div>
- <div wicket:id="contents"><div wicket:id="child"></div></div>
- <div wicket:id="chatPanel"></div>
- <div wicket:id="aboutDialog"></div>
- </wicket:extend>
+ <div wicket:id="dev" id="devMenu"/>
+ <div id="busy_indicator" class="ui-widget-header"><span><wicket:message key="1554"/></span></div>
+ <div wicket:id="menu"></div>
+ </div>
+ <div wicket:id="contents"><div wicket:id="child"></div></div>
+ <div wicket:id="chatPanel"></div>
+ <div wicket:id="aboutDialog"></div>
+</wicket:extend>
</html>
\ No newline at end of file
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java Fri Nov 6 06:18:44 2015
@@ -29,7 +29,7 @@ import static org.apache.openmeetings.we
import static org.apache.openmeetings.web.util.OmUrlFragment.getPanel;
import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebClient;
+import org.apache.openmeetings.web.app.Client;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
@@ -62,7 +62,7 @@ import org.wicketstuff.urlfragment.UrlFr
@AuthorizeInstantiation({"Admin", "Dashboard", "Room"})
public class MainPage extends BaseInitedPage {
- private static final long serialVersionUID = 6421960759218157999L;
+ private static final long serialVersionUID = 1L;
private static final Logger log = Red5LoggerFactory.getLogger(MainPage.class, webAppRootKey);
private final MenuPanel menu;
private final MarkupContainer contents;
@@ -127,13 +127,13 @@ public class MainPage extends BaseInited
@Override
protected void onConnect(ConnectedMessage message) {
super.onConnect(message);
- addOnlineUser(new WebClient(WebSession.get().getId(), message.getKey(), getUserId()));
+ addOnlineUser(new Client(WebSession.get().getId(), message.getKey(), getUserId()));
log.debug("WebSocketBehavior::onConnect");
}
@Override
protected void onClose(ClosedMessage message) {
- WebClient client = getClientByKeys(getUserId(), WebSession.get().getId());
+ Client client = getClientByKeys(getUserId(), WebSession.get().getId());
removeOnlineUser(client);
super.onClose(message);
log.debug("WebSocketBehavior::onClose");
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/RecordingPage.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/RecordingPage.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/RecordingPage.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/RecordingPage.java Fri Nov 6 06:18:44 2015
@@ -21,8 +21,8 @@ package org.apache.openmeetings.web.page
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getRecordingId;
-import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
-import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.entity.record.Recording;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.user.record.VideoInfo;
import org.apache.openmeetings.web.user.record.VideoPlayer;
@@ -35,11 +35,11 @@ public class RecordingPage extends BaseI
public RecordingPage(PageParameters p) {
String hash = p.get("hash").toString();
- FlvRecording r = null;
+ Recording r = null;
if (WebSession.get().signIn(hash)) {
Long recId = getRecordingId();
if (recId != null) {
- r = getBean(FlvRecordingDao.class).get(recId);
+ r = getBean(RecordingDao.class).get(recId);
}
}
add(new VideoInfo("info", r).setVisible(r != null), new VideoPlayer("player", r).setVisible(r != null));
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java Fri Nov 6 06:18:44 2015
@@ -245,7 +245,7 @@ public class ForgetPasswordDialog extend
userDao.update(us, -1L);
String reset_link = appLink + "?hash=" + us.getResethash();
- String email = us.getAdresses().getEmail();
+ String email = us.getAddress().getEmail();
String template = ResetPasswordTemplate.getEmail(reset_link);
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java Fri Nov 6 06:18:44 2015
@@ -197,7 +197,7 @@ public class RegisterDialog extends Abst
try {
getBean(IUserManager.class).registerUserInit(UserDao.getDefaultRights(), login, password, lastName
, firstName, email, null /* age/birthday */, "" /* street */
- , "" /* additionalname */, "" /* fax */, "" /* zip */, state.getState_id()
+ , "" /* additionalname */, "" /* fax */, "" /* zip */, state.getId()
, "" /* town */, lang, true /* sendWelcomeMessage */
, Arrays.asList(getBean(ConfigurationDao.class).getConfValue(CONFIG_DEFAULT_GROUP_ID, Long.class, null)),
"" /* phone */, false, sendConfirmation, TimeZone.getTimeZone(tzModel.getObject()),
@@ -255,7 +255,7 @@ public class RegisterDialog extends Abst
langField.setRequired(true).setLabel(Model.of(Application.getString(111)));
add(tzDropDown.setRequired(true).setLabel(Model.of(Application.getString(1143))));
add(stateField = new DropDownChoice<State>("state", new PropertyModel<State>(RegisterDialog.this, "state"),
- getBean(StateDao.class).getStates(), new ChoiceRenderer<State>("name", "state_id")));
+ getBean(StateDao.class).get(), new ChoiceRenderer<State>("name", "state_id")));
stateField.setRequired(true).setLabel(Model.of(Application.getString(120)));
add(new AjaxButton("submit") { // FAKE button so "submit-on-enter" works as expected
private static final long serialVersionUID = 1L;
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java Fri Nov 6 06:18:44 2015
@@ -155,7 +155,7 @@ public class ResetPasswordDialog extends
@Override
protected void onSubmit(AjaxRequestTarget target) {
try {
- getBean(UserDao.class).update(user, password.getConvertedInput(), user.getUser_id());
+ getBean(UserDao.class).update(user, password.getConvertedInput(), user.getId());
} catch (Exception e) {
error(e.getMessage());
}
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java Fri Nov 6 06:18:44 2015
@@ -172,11 +172,11 @@ public class SignInDialog extends Abstra
}
OmAuthenticationStrategy strategy = getAuthenticationStrategy();
WebSession ws = WebSession.get();
- Type type = domain.getLdapConfigId() > 0 ? Type.ldap : Type.user;
- if (ws.signIn(login, password, type, domain.getLdapConfigId())) {
+ Type type = domain.getId() > 0 ? Type.ldap : Type.user;
+ if (ws.signIn(login, password, type, domain.getId())) {
setResponsePage(Application.get().getHomePage());
if (rememberMe) {
- strategy.save(login, password, type, domain.getLdapConfigId());
+ strategy.save(login, password, type, domain.getId());
} else {
strategy.remove();
}
@@ -185,7 +185,7 @@ public class SignInDialog extends Abstra
if (ws.getLoginError() != null) {
ErrorValue eValue = getBean(ErrorDao.class).get(-1 * ws.getLoginError());
if (eValue != null) {
- error(Application.getString(eValue.getFieldvalues_id()));
+ error(Application.getString(eValue.getLabelId()));
target.add(feedback);
}
}
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/InvitationDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/InvitationDialog.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/InvitationDialog.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/InvitationDialog.java Fri Nov 6 06:18:44 2015
@@ -142,7 +142,7 @@ public class InvitationDialog extends Ab
@Override
protected Object getId(Organisation choice) {
- return choice.getOrganisation_id();
+ return choice.getId();
}
});
@@ -182,7 +182,7 @@ public class InvitationDialog extends Ab
groups.setModelObject(new ArrayList<Organisation>());
groups.setEnabled(false);
tzId.setObject(u.getTimeZoneId());
- lang = u.getLanguage_id();
+ lang = u.getLanguageId();
url.setModelObject(null);
inviteeType.setObject(InviteeType.user);
form.setModelObject(i);
@@ -242,7 +242,7 @@ public class InvitationDialog extends Ab
}
} else {
for (Organisation g : groups.getModelObject()) {
- for (Organisation_Users ou : getBean(OrganisationUserDao.class).get(g.getOrganisation_id(), 0, Integer.MAX_VALUE)) {
+ for (Organisation_Users ou : getBean(OrganisationUserDao.class).get(g.getId(), 0, Integer.MAX_VALUE)) {
Invitation i = create(ou.getUser());
try {
getBean(InvitationManager.class).sendInvitionLink(i, MessageType.Create, subject.getObject(), message.getObject(), false);
@@ -280,7 +280,7 @@ public class InvitationDialog extends Ab
i.setInvitee(u);
if (Type.contact == u.getType()) {
//TODO not sure it is right
- u.setLanguage_id(lang);
+ u.setLanguageId(lang);
}
return getBean(InvitationDao.class).update(i);
}
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java Fri Nov 6 06:18:44 2015
@@ -42,7 +42,7 @@ public class RoomBroadcaster {
sa.new MessageSender(sa.getRoomScope("" + roomId), method, obj) {
public boolean filter(IConnection conn) {
Client rcl = sessionMgr.getClientByStreamId(conn.getClient().getId(), null);
- return rcl.getIsScreenClient()
+ return rcl.isScreenClient()
|| rcl.getRoom_id() == null || !rcl.getRoom_id().equals(roomId) || userDao.get(rcl.getUser_id()) == null;
}
}.start();
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Fri Nov 6 06:18:44 2015
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.room
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.getRoomUsers;
import static org.apache.openmeetings.web.app.WebSession.getLanguage;
import static org.apache.openmeetings.web.app.WebSession.getSid;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -31,6 +32,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.openmeetings.core.session.SessionManager;
import org.apache.openmeetings.db.dao.room.InvitationDao;
import org.apache.openmeetings.db.dao.room.PollDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
@@ -39,7 +41,6 @@ import org.apache.openmeetings.db.dao.se
import org.apache.openmeetings.db.dao.server.SessiondataDao;
import org.apache.openmeetings.db.entity.room.Client;
import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.openmeetings.core.session.SessionManager;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.room.poll.CreatePollDialog;
@@ -149,7 +150,7 @@ public class RoomPanel extends BasePanel
} else if (!secureHash.isEmpty()) {
roomId = getBean(SOAPLoginDao.class).get(secureHash.toString()).getRoom_id();
} else if (!invitationHash.isEmpty()) {
- roomId = getBean(InvitationDao.class).getInvitationByHashCode(invitationHash.toString(), true).getRoom().getRooms_id();
+ roomId = getBean(InvitationDao.class).getInvitationByHashCode(invitationHash.toString(), true).getRoom().getId();
}
} catch (Exception e) {
//no-op
@@ -231,6 +232,15 @@ public class RoomPanel extends BasePanel
}
}
+ public static boolean isModerator(long userId, long roomId) {
+ for (org.apache.openmeetings.web.app.Client c : getRoomUsers(roomId)) {
+ if (c.getUserId() == userId && c.hasRight(org.apache.openmeetings.web.app.Client.Right.moderator)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private ResourceReference newResourceReference() {
return new JavaScriptResourceReference(RoomPanel.class, "swf-functions.js");
}
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java Fri Nov 6 06:18:44 2015
@@ -26,7 +26,7 @@ import java.util.List;
import org.apache.openmeetings.db.dao.room.PollDao;
import org.apache.openmeetings.db.entity.room.RoomPoll;
-import org.apache.openmeetings.db.entity.room.RoomPollAnswers;
+import org.apache.openmeetings.db.entity.room.RoomPollAnswer;
import org.apache.openmeetings.web.app.Application;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
@@ -212,11 +212,11 @@ public class PollResultsDialog extends A
private Integer[] getValues(RoomPoll p) {
Integer[] values = initValues(p != null && p.getPollType().getIsNumericAnswer() ? 10 : 2);
if (p != null && p.getPollType().getIsNumericAnswer()) {
- for (RoomPollAnswers a : p.getRoomPollAnswerList()) {
+ for (RoomPollAnswer a : p.getRoomPollAnswerList()) {
values[a.getPointList() - 1] ++;
}
} else if (p != null) {
- for (RoomPollAnswers a : p.getRoomPollAnswerList()) {
+ for (RoomPollAnswer a : p.getRoomPollAnswerList()) {
values[a.getAnswer() ? 0 : 1] ++;
}
}
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java Fri Nov 6 06:18:44 2015
@@ -27,7 +27,7 @@ import java.util.List;
import org.apache.openmeetings.db.dao.room.PollDao;
import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.room.RoomPollAnswers;
+import org.apache.openmeetings.db.entity.room.RoomPollAnswer;
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.web.app.Application;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -50,7 +50,7 @@ import com.googlecode.wicket.kendo.ui.pa
* @author solomax
*
*/
-public class VoteDialog extends AbstractFormDialog<RoomPollAnswers> {
+public class VoteDialog extends AbstractFormDialog<RoomPollAnswer> {
private static final long serialVersionUID = 1L;
private final static List<Integer> answers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); //TODO max vote should be added
private final long roomId;
@@ -63,15 +63,15 @@ public class VoteDialog extends Abstract
public VoteDialog(String id, long roomId) {
super(id, Application.getString(18));
this.roomId = roomId;
- add(form = new PollAnswerForm("form", new CompoundPropertyModel<RoomPollAnswers>(new RoomPollAnswers())));
+ add(form = new PollAnswerForm("form", new CompoundPropertyModel<RoomPollAnswer>(new RoomPollAnswer())));
}
static String getName(User u) {
- return u == null ? "" : getUserId() == u.getUser_id() ? Application.getString(1411) : u.getFirstname() + " " + u.getLastname();
+ return u == null ? "" : getUserId() == u.getId() ? Application.getString(1411) : u.getFirstname() + " " + u.getLastname();
}
public void updateModel(AjaxRequestTarget target) {
- RoomPollAnswers a = new RoomPollAnswers();
+ RoomPollAnswer a = new RoomPollAnswer();
a.setRoomPoll(getBean(PollDao.class).getPoll(roomId));
User u = getBean(UserDao.class).get(getUserId());
a.setVotedUser(u);
@@ -117,7 +117,7 @@ public class VoteDialog extends Abstract
*/
@Override
protected void onSubmit(AjaxRequestTarget target) {
- RoomPollAnswers a = form.getModelObject();
+ RoomPollAnswer a = form.getModelObject();
a.setVoteDate(new Date());
a.getRoomPoll().getRoomPollAnswerList().add(a);
getBean(PollDao.class).updatePoll(a.getRoomPoll());
@@ -128,12 +128,12 @@ public class VoteDialog extends Abstract
user.detach();
super.onDetach();
}
- private class PollAnswerForm extends Form<RoomPollAnswers> {
+ private class PollAnswerForm extends Form<RoomPollAnswer> {
private static final long serialVersionUID = 1L;
private final WebMarkupContainer typeBool = new WebMarkupContainer("typeBool");
private final WebMarkupContainer typeInt = new WebMarkupContainer("typeInt");
- PollAnswerForm(String id, IModel<RoomPollAnswers> model) {
+ PollAnswerForm(String id, IModel<RoomPollAnswer> model) {
super(id, model);
add(feedback);
add(new Label("user", user));
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java Fri Nov 6 06:18:44 2015
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.user
import static org.apache.openmeetings.util.Version.getBuildDate;
import static org.apache.openmeetings.util.Version.getRevision;
import static org.apache.openmeetings.util.Version.getVersion;
+import static org.apache.openmeetings.web.app.Application.getBean;
import java.util.ArrayList;
import java.util.List;
@@ -34,15 +35,12 @@ import com.googlecode.wicket.jquery.ui.w
import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
public class AboutDialog extends AbstractDialog<String> {
- private static final long serialVersionUID = 1400355222295594321L;
+ private static final long serialVersionUID = 1L;
public AboutDialog(String id) {
super(id, Application.getString(1549));
- add(new Label("name", Application.getBean(ConfigurationDao.class).getConfValue(
- "application.name"
- , String.class
- , ConfigurationDao.DEFAULT_APP_NAME)));
+ add(new Label("name", getBean(ConfigurationDao.class).getAppName()));
add(new Label("version", getVersion()));
add(new Label("revision", getRevision()));
add(new Label("buildDate", getBuildDate()));
@@ -53,6 +51,7 @@ public class AboutDialog extends Abstrac
return new ArrayList<DialogButton>();
}
- public void onClose(IPartialPageRequestHandler arg0, DialogButton arg1) {
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton arg1) {
}
}
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html Fri Nov 6 06:18:44 2015
@@ -19,47 +19,27 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
- <wicket:head>
- <script type="text/javascript">
- function toggleChat() {
- var chat = $('#chat');
- $('#chat #controlBlock #control')
- .removeClass('ui-icon-carat-1-' + (chat.height() < 24 ? 'n' : 's'))
- .addClass('ui-icon-carat-1-' + (chat.height() < 24 ? 's' : 'n'));
- chat.animate({ height: chat.height() < 24 ? "320px" : "20px" }, 1000);
- }
- function addChatMessageInternal(m) {
- if (m && m.type == "chat") {
- var msg = $('<div><span class="from">' + m.msg.from + '</span><span class="date">'
- + m.msg.sent + '</span>' + m.msg.message + '</div>');
- $('#messageArea').append(msg);
- msg[0].scrollIntoView();
- }
- }
- function addChatMessage(m) {
- if (m && m.type == "chat") {
- addChatMessageInternal(m)
- $('#messageArea').emoticonize();
- }
- }
- Wicket.Event.subscribe("/websocket/message", function(jqEvent, msg) {
- addChatMessage(jQuery.parseJSON(msg));
- });
- </script>
- </wicket:head>
- <wicket:panel>
- <div id="chat" class="ui-state-default">
- <div id="controlBlock" onclick="toggleChat();" class="ui-state-active clickable"><span id="control" class="ui-icon ui-icon-carat-1-n sort-icon"></span><span><wicket:message key="244"/></span></div>
- <div wicket:id="messages"></div>
- <form wicket:id="sendForm">
- <div wicket:id="toolbarContainer"></div>
- <table style="width: 100%">
- <tr>
- <td><div id="chatMessage" wicket:id="chatMessage"></div></td>
- <td style="width: 50px"><div wicket:id="send"><wicket:message key="220"/></div></td>
- </tr>
- </table>
- </form>
+<wicket:panel>
+ <div id="chat" class="ui-state-default">
+ <div onclick="toggleChat();" class="control block clickable ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:message key="244"/></div></div>
+ <div id="chatTabs">
+ <ul>
+ <li><a href="#chatTab-all"><wicket:message key="1494"/></a></li>
+ </ul>
+ <div id="chatTab-all" class="messageArea"></div>
</div>
- </wicket:panel>
+ <form wicket:id="sendForm">
+ <div wicket:id="toolbarContainer"></div>
+ <table style="width: 100%">
+ <tr>
+ <td><div id="chatMessage" wicket:id="chatMessage"></div></td>
+ <td style="width: 50px">
+ <div wicket:id="send"><wicket:message key="220"/></div>
+ <input type="hidden" wicket:id="activeTab" id="activeChatTab"/>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+</wicket:panel>
</html>
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java Fri Nov 6 06:18:44 2015
@@ -21,29 +21,52 @@ package org.apache.openmeetings.web.user
import static org.apache.commons.lang3.StringEscapeUtils.unescapeXml;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.getRoomUsers;
+import static org.apache.openmeetings.web.app.Application.getUserRooms;
+import static org.apache.openmeetings.web.app.Application.isUserInRoom;
import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.room.RoomPanel.isModerator;
+import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
+import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
import java.util.Date;
+import java.util.List;
import org.apache.openmeetings.db.dao.basic.ChatDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.basic.ChatMessage;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.Client;
+import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.BasePanel;
import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.json.JSONArray;
import org.apache.wicket.ajax.json.JSONException;
import org.apache.wicket.ajax.json.JSONObject;
import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
-import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.HiddenField;
import org.apache.wicket.model.Model;
import org.apache.wicket.protocol.ws.WebSocketSettings;
import org.apache.wicket.protocol.ws.api.IWebSocketConnection;
import org.apache.wicket.protocol.ws.api.registry.IWebSocketConnectionRegistry;
+import org.apache.wicket.protocol.ws.api.registry.PageIdKey;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
@@ -54,41 +77,97 @@ import com.googlecode.wicket.jquery.ui.p
@AuthorizeInstantiation({"Dashboard", "Room"})
public class ChatPanel extends BasePanel {
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 static final long serialVersionUID = 1L;
+ private static final String ID_TAB_PREFIX = "chatTab-";
+ private static final String ID_USER_PREFIX = ID_TAB_PREFIX + "u";
+ public static final String ID_ROOM_PREFIX = ID_TAB_PREFIX + "r";
+ private static final String ID_ALL = ID_TAB_PREFIX + "all";
+ private static final String PARAM_MSG_ID = "msgid";
+ private static final String PARAM_ROOM_ID = "roomid";
+ private final AbstractDefaultAjaxBehavior acceptMessage = new AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ try {
+ long msgId = getRequest().getRequestParameters().getParameterValue(PARAM_MSG_ID).toLong();
+ long roomId = getRequest().getRequestParameters().getParameterValue(PARAM_ROOM_ID).toLong();
+ ChatDao dao = getBean(ChatDao.class);
+ ChatMessage m = dao.get(msgId);
+ if (m.isNeedModeration() && isModerator(getUserId(), roomId)) {
+ m.setNeedModeration(false);
+ dao.update(m);
+ sendRoom(m, getMessage(Arrays.asList(m)).put("mode", "accept").toString());
+ } else {
+ log.error("It seems like we are being hacked!!!!");
+ }
+ } catch (Exception e) {
+ log.error("Unexpected exception while accepting chat message", e);
+ }
+ }
+ };
- private JSONObject getMessage(ChatMessage m) throws JSONException {
- String msg = m.getMessage();
- msg = msg == null ? msg : " " + msg.replaceAll(" ", " ") + " ";
- return new JSONObject()
- .put("type", "chat")
- .put("msg", new JSONObject()
+ private static JSONObject setScope(JSONObject o, ChatMessage m, long curUserId) {
+ String scope, scopeName;
+ if (m.getToUser() != null) {
+ User u = curUserId == m.getToUser().getId() ? m.getFromUser() : m.getToUser();
+ scope = ID_USER_PREFIX + u.getId();
+ scopeName = String.format("%s %s", u.getFirstname(), u.getLastname());
+ } else if (m.getToRoom() != null) {
+ scope = ID_ROOM_PREFIX + m.getToRoom().getId();
+ scopeName = String.format("%s %s", Application.getString(406), m.getToRoom().getId());
+ o.put("needModeration", m.isNeedModeration());
+ } else {
+ scope = ID_ALL;
+ scopeName = Application.getString(1494);
+ }
+ return o.put("scope", scope).put("scopeName", scopeName);
+ }
+
+ public static JSONObject getMessage(List<ChatMessage> list) throws JSONException {
+ return getMessage(getUserId(), list);
+ }
+
+ private static JSONObject getMessage(long curUserId, List<ChatMessage> list) throws JSONException {
+ JSONArray arr = new JSONArray();
+ for (ChatMessage m : list) {
+ String smsg = m.getMessage();
+ smsg = smsg == null ? smsg : " " + smsg.replaceAll(" ", " ") + " ";
+ arr.put(setScope(new JSONObject(), m, curUserId)
.put("id", m.getId())
- .put("message", msg)
+ .put("message", smsg)
.put("from", m.getFromUser().getFirstname() + " " + m.getFromUser().getLastname())
- .put("sent", getDateFormat().format(m.getSent()))
- );
+ .put("sent", getDateFormat().format(m.getSent())));
+ }
+ return new JSONObject()
+ .put("type", "chat")
+ .put("msg", arr);
}
public ChatPanel(String id) {
super(id);
- setOutputMarkupId(true);
+ setOutputMarkupPlaceholderTag(true);
setMarkupId(id);
- add(new Behavior() {
- private static final long serialVersionUID = -2205036360048419129L;
+ add(acceptMessage, new Behavior() {
+ private static final long serialVersionUID = 1L;
@Override
public void renderHead(Component component, IHeaderResponse response) {
ChatDao dao = getBean(ChatDao.class);
try {
- StringBuilder sb = new StringBuilder();
//FIXME limited count should be loaded with "earlier" link
- for (ChatMessage m : dao.get(0, 30)) {
- sb.append("addChatMessageInternal(").append(getMessage(m).toString()).append(");");
+ List<ChatMessage> list = new ArrayList<ChatMessage>(dao.getGlobal(0, 30));
+ for(Long roomId : getUserRooms(getUserId())) {
+ Room r = getBean(RoomDao.class).get(roomId);
+ list.addAll(dao.getRoom(roomId, 0, 30, !r.isChatModerated() || isModerator(getUserId(), roomId)));
}
- if (sb.length() > 0) {
- sb.append("$('#").append(MESSAGE_AREA_ID).append("').emoticonize();");
+ Calendar c = WebSession.getCalendar();
+ c.add(Calendar.HOUR_OF_DAY, -1);
+ list.addAll(dao.getUserRecent(getUserId(), c.getTime(), 0, 30));
+ if (list.size() > 0) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("addChatMessage(").append(getMessage(list).toString()).append(");");
response.render(OnDomReadyHeaderItem.forScript(sb.toString()));
}
} catch (JSONException e) {
@@ -97,12 +176,58 @@ public class ChatPanel extends BasePanel
super.renderHead(component, response);
}
});
- add(new EmoticonsBehavior("#" + MESSAGE_AREA_ID));
- add(new WebMarkupContainer("messages").setMarkupId(MESSAGE_AREA_ID));
- ChatToolbar toolbar = new ChatToolbar("toolbarContainer");
- final WysiwygEditor chatMessage = new WysiwygEditor("chatMessage", Model.of(""), toolbar);
- add(new Form<Void>("sendForm").add(
- toolbar
+ add(new EmoticonsBehavior(".messageArea"));
+ add(new ChatForm("sendForm"));
+ }
+
+ public void roomEnter(Room r, AjaxRequestTarget target) {
+ if (r.isChatHidden()) {
+ target.add(setVisible(false));
+ return;
+ }
+ StringBuilder sb = new StringBuilder();
+ sb.append("$(function() {");
+ sb.append(String.format("addChatTab('%1$s%2$d', '%3$s %2$d');", ID_ROOM_PREFIX, r.getId(), Application.getString(406)));
+ sb.append(r.isChatOpened() ? "openChat();" : "closeChat();");
+ List<ChatMessage> list = getBean(ChatDao.class).getRoom(r.getId(), 0, 30, !r.isChatModerated() || isModerator(getUserId(), r.getId()));
+ if (list.size() > 0) {
+ sb.append("addChatMessage(").append(getMessage(list).toString()).append(");");
+ }
+ sb.append("});");
+ target.appendJavaScript(sb);
+ }
+
+ @Override
+ public void renderHead(IHeaderResponse response) {
+ super.renderHead(response);
+ response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(ChatPanel.class, "chat.js"))));
+ response.render(CssHeaderItem.forUrl("css/chat.css"));
+ response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("acceptMessage", acceptMessage, explicit(PARAM_ROOM_ID), explicit(PARAM_MSG_ID)), "acceptMessage")));
+ }
+
+ private void sendRoom(ChatMessage m, String msg) {
+ IWebSocketConnectionRegistry reg = WebSocketSettings.Holder.get(Application.get()).getConnectionRegistry();
+ for (Client c : getRoomUsers(m.getToRoom().getId())) {
+ try {
+ if (!m.isNeedModeration() || (m.isNeedModeration() && c.hasRight(Client.Right.moderator))) {
+ reg.getConnection(Application.get(), c.getSessionId(), new PageIdKey(c.getPageId())).sendMessage(msg);
+ }
+ } catch (Exception e) {
+ log.error("Error while sending message to room", e);
+ }
+ }
+ }
+
+ private class ChatForm extends Form<Void> {
+ private static final long serialVersionUID = 1L;
+ private final ChatToolbar toolbar = new ChatToolbar("toolbarContainer");
+ private final WysiwygEditor chatMessage = new WysiwygEditor("chatMessage", Model.of(""), toolbar);
+ private final HiddenField<String> activeTab = new HiddenField<String>("activeTab", Model.of(""));
+
+ ChatForm(String id) {
+ super(id);
+ add(toolbar
+ , activeTab
, chatMessage.setOutputMarkupId(true)
, new AjaxButton("send") {
private static final long serialVersionUID = 1L;
@@ -114,18 +239,63 @@ public class ChatPanel extends BasePanel
m.setMessage(unescapeXml(chatMessage.getDefaultModelObjectAsString()));
m.setSent(new Date());
m.setFromUser(getBean(UserDao.class).get(getUserId()));
+ try {
+ String scope = activeTab.getModelObject();
+ if (scope != null) {
+ if (ID_ALL.equals(scope)) {
+ //we done
+ } else if (scope.startsWith(ID_ROOM_PREFIX)) {
+ Room r = getBean(RoomDao.class).get(Long.parseLong(scope.substring(ID_ROOM_PREFIX.length())));
+ if (isUserInRoom(r.getId(), getUserId())) {
+ m.setToRoom(r);
+ } else {
+ log.error("It seems like we are being hacked!!!!");
+ return;
+ }
+ m.setNeedModeration(r.isChatModerated() && !isModerator(m.getFromUser().getId(), r.getId()));
+ } else if (scope.startsWith(ID_USER_PREFIX)) {
+ User u = getBean(UserDao.class).get(Long.parseLong(scope.substring(ID_USER_PREFIX.length())));
+ m.setToUser(u);
+ }
+ }
+ } catch (Exception e) {
+ //no-op
+ }
dao.update(m);
- IWebSocketConnectionRegistry reg = WebSocketSettings.Holder.get(getApplication()).getConnectionRegistry();
- for (IWebSocketConnection c : reg.getConnections(getApplication())) {
- try {
- c.sendMessage(getMessage(m).toString());
- } catch(Exception e) {
- log.error("Error while sending message", e);
+ String msg = getMessage(Arrays.asList(m)).toString();
+ if (m.getToRoom() != null) {
+ sendRoom(m, msg);
+ } else if (m.getToUser() != null) {
+ IWebSocketConnectionRegistry reg = WebSocketSettings.Holder.get(Application.get()).getConnectionRegistry();
+ for (Client c : Application.getClients(getUserId())) {
+ try {
+ reg.getConnection(Application.get(), c.getSessionId(), new PageIdKey(c.getPageId())).sendMessage(msg);
+ } catch (Exception e) {
+ log.error("Error while sending message to room", e);
+ }
+ }
+ msg = getMessage(m.getToUser().getId(), Arrays.asList(m)).toString();
+ for (Client c : Application.getClients(m.getToUser().getId())) {
+ try {
+ reg.getConnection(Application.get(), c.getSessionId(), new PageIdKey(c.getPageId())).sendMessage(msg);
+ } catch (Exception e) {
+ log.error("Error while sending message to room", e);
+ }
+ }
+ } else {
+ IWebSocketConnectionRegistry reg = WebSocketSettings.Holder.get(getApplication()).getConnectionRegistry();
+ for (IWebSocketConnection c : reg.getConnections(getApplication())) {
+ try {
+ c.sendMessage(msg);
+ } catch(Exception e) {
+ log.error("Error while sending message", e);
+ }
}
}
chatMessage.setDefaultModelObject("");
target.add(chatMessage);
};
- }));
+ });
+ }
}
}
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html Fri Nov 6 06:18:44 2015
@@ -37,7 +37,7 @@
</tr>
<tr>
<td><wicket:message key="565" /></td>
- <td><select wicket:id="remind" ></select></td>
+ <td><select wicket:id="reminder" ></select></td>
</tr>
<tr>
<td colspan="2"><input type="checkbox" wicket:id="createRoom" /><label wicket:for="createRoom"><wicket:message key="1509" /></label></td>
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java Fri Nov 6 06:18:44 2015
@@ -20,11 +20,9 @@ package org.apache.openmeetings.web.user
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getLanguage;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
import static org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
-import static org.apache.openmeetings.web.util.RoomTypeDropDown.getRoomTypes;
import java.util.ArrayList;
import java.util.Arrays;
@@ -35,14 +33,12 @@ import java.util.List;
import java.util.Set;
import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.calendar.Appointment;
-import org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps;
+import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
import org.apache.openmeetings.db.entity.calendar.MeetingMember;
import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.db.entity.room.RoomType;
import org.apache.openmeetings.db.entity.user.Organisation_Users;
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.util.FormatHelper;
@@ -60,6 +56,7 @@ import org.apache.wicket.markup.html.bas
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.TextField;
@@ -130,18 +127,19 @@ public class AppointmentDialog extends A
confirmDelete = new MessageDialog("confirmDelete", Application.getString(814), Application.getString(833), DialogButtons.OK_CANCEL, DialogIcon.WARN){
private static final long serialVersionUID = 1L;
- public void onClose(IPartialPageRequestHandler target, DialogButton button) {
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
if (button != null && button.match(AbstractDialog.OK)){
- deleteAppointment(target);
+ deleteAppointment(handler);
}
}
};
add(confirmDelete);
}
- protected void deleteAppointment(IPartialPageRequestHandler target) {
+ protected void deleteAppointment(IPartialPageRequestHandler handler) {
getBean(AppointmentDao.class).delete(getModelObject(), getUserId());
- calendarPanel.refresh(target);
+ calendarPanel.refresh(handler);
}
@Override
@@ -160,16 +158,16 @@ public class AppointmentDialog extends A
}
@Override
- protected void onOpen(IPartialPageRequestHandler target) {
- target.add(this.form);
+ protected void onOpen(IPartialPageRequestHandler handler) {
+ handler.add(this.form);
}
@Override
- public void onClose(IPartialPageRequestHandler target, DialogButton button) {
+ public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
if (delete.equals(button)) {
- confirmDelete.open(target);
+ confirmDelete.open(handler);
} else if (enterRoom.equals(button)) {
- RoomEnterBehavior.roomEnter((MainPage)getPage(), target, getModelObject().getRoom().getRooms_id());
+ RoomEnterBehavior.roomEnter((MainPage)getPage(), handler, getModelObject().getRoom().getId());
}
}
@@ -184,25 +182,25 @@ public class AppointmentDialog extends A
final List<MeetingMember> attendees = a.getMeetingMembers() == null ? new ArrayList<MeetingMember>() : a.getMeetingMembers();
Set<Long> currentIds = new HashSet<Long>();
for (User u : attendeesModel.getObject()) {
- if (u.getUser_id() != null) {
- currentIds.add(u.getUser_id());
+ if (u.getId() != null) {
+ currentIds.add(u.getId());
}
}
//remove users
for (Iterator<MeetingMember> i = attendees.iterator(); i.hasNext();) {
MeetingMember m = i.next();
- if (!currentIds.contains(m.getUser().getUser_id())) {
+ if (!currentIds.contains(m.getUser().getId())) {
i.remove();
}
}
Set<Long> originalIds = new HashSet<Long>();
for (MeetingMember m : attendees) {
- originalIds.add(m.getUser().getUser_id());
+ originalIds.add(m.getUser().getId());
}
//add users
for (User u : attendeesModel.getObject()) {
- if (u.getUser_id() == null || !originalIds.contains(u.getUser_id())) {
+ if (u.getId() == null || !originalIds.contains(u.getId())) {
MeetingMember mm = new MeetingMember();
mm.setUser(u);
mm.setDeleted(false);
@@ -221,7 +219,7 @@ public class AppointmentDialog extends A
}
public static boolean isOwner(Appointment object) {
- return object.getOwner() != null && getUserId() == object.getOwner().getUser_id();
+ return object.getOwner() != null && getUserId() == object.getOwner().getId();
}
@Override
@@ -237,32 +235,30 @@ public class AppointmentDialog extends A
private final DateTimePicker end = new OmDateTimePicker("end", Model.of(LocalDateTime.now()));
private final PasswordTextField pwd = new PasswordTextField("password");
private final Label owner = new Label("aowner", Model.of(""));
- private final DropDownChoice<RoomType> roomType = new RoomTypeDropDown("room.roomtype");
+ private final DropDownChoice<Room.Type> roomType = new RoomTypeDropDown("room.type");
private final DropDownChoice<Room> room = new DropDownChoice<Room>(
"room"
, getRoomList()
- , new ChoiceRenderer<Room>("name", "rooms_id"));
+ , new ChoiceRenderer<Room>("name", "id"));
@Override
protected void onModelChanged() {
super.onModelChanged();
Appointment a = getModelObject();
- List<AppointmentReminderTyps> remindTypes = getRemindTypes();
- if (a.getRemind() == null && !remindTypes.isEmpty()) {
- a.setRemind(remindTypes.get(0));
+ if (a.getReminder() == null) {
+ a.setReminder(Reminder.none);
}
- List<RoomType> roomTypes = getRoomTypes();
if (a.getRoom() == null) {
Room r = new Room();
r.setAppointment(true);
a.setRoom(r);
}
- if (a.getRoom().getRoomtype() == null && !roomTypes.isEmpty()) {
- a.getRoom().setRoomtype(roomTypes.get(0));
+ if (a.getRoom().getType() == null) {
+ a.getRoom().setType(Room.Type.conference);
}
- createRoom = Boolean.TRUE.equals(a.getRoom().getAppointment());
+ createRoom = a.getRoom().isAppointment();
roomType.setEnabled(createRoom);
room.setEnabled(!createRoom);
if (a.getId() == null) {
@@ -304,21 +300,30 @@ public class AppointmentDialog extends A
pwd.setOutputMarkupId(true);
add(pwd);
- List<AppointmentReminderTyps> remindTypes = getRemindTypes();
- add(new DropDownChoice<AppointmentReminderTyps>(
- "remind"
- , remindTypes
- , new ChoiceRenderer<AppointmentReminderTyps>() {
+ add(new DropDownChoice<Reminder>(
+ "reminder"
+ , Arrays.asList(Reminder.values())
+ , new IChoiceRenderer<Reminder>() {
private static final long serialVersionUID = 1L;
@Override
- public Object getDisplayValue(AppointmentReminderTyps object) {
- return getString("" + object.getFieldvalues_id());
+ public Object getDisplayValue(Reminder art) {
+ return getString("appointment.reminder." + art.name());
}
@Override
- public String getIdValue(AppointmentReminderTyps object, int index) {
- return "" + object.getTypId();
+ public String getIdValue(Reminder art, int index) {
+ return art.name();
+ }
+
+ @Override
+ public Reminder getObject(String id, IModel<? extends List<? extends Reminder>> choices) {
+ for (Reminder art : choices.getObject()) {
+ if (art.name().equals(id)) {
+ return art;
+ }
+ }
+ return null;
}
}));
@@ -349,19 +354,15 @@ public class AppointmentDialog extends A
add(owner);
}
- private List<AppointmentReminderTyps> getRemindTypes() {
- return getBean(AppointmentReminderTypDao.class).getAppointmentReminderTypList(getLanguage());
- }
-
private List<Room> getRoomList() {
//FIXME need to be reviewed
List<Room> result = new ArrayList<Room>();
RoomDao dao = getBean(RoomDao.class);
result.addAll(dao.getPublicRooms());
for (Organisation_Users ou : getBean(UserDao.class).get(getUserId()).getOrganisation_users()) {
- result.addAll(dao.getOrganisationRooms(ou.getOrganisation().getOrganisation_id()));
+ result.addAll(dao.getOrganisationRooms(ou.getOrganisation().getId()));
}
- if (getModelObject().getRoom() != null && getModelObject().getRoom().getAppointment()) { //FIXME review
+ if (getModelObject().getRoom() != null && getModelObject().getRoom().isAppointment()) { //FIXME review
result.add(getModelObject().getRoom());
}
return result;
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java Fri Nov 6 06:18:44 2015
@@ -42,7 +42,7 @@ public class AppointmentModel extends Ca
@Override
protected List<? extends CalendarEvent> load() {
List<CalendarEvent> list = new ArrayList<CalendarEvent>();
- for (Appointment a : getBean(AppointmentDao.class).getAppointmentsByRange(getUserId(), getDate(getStart()), getDate(getEnd()))) {
+ for (Appointment a : getBean(AppointmentDao.class).getInRange(getUserId(), getDate(getStart()), getDate(getEnd()))) {
list.add(new OmCalendarEvent(a));
}
return list;
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java?rev=1712911&r1=1712910&r2=1712911&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java Fri Nov 6 06:18:44 2015
@@ -29,9 +29,9 @@ import java.util.Date;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.UserPanel;
@@ -84,10 +84,6 @@ public class CalendarPanel extends UserP
return getBean(AppointmentDao.class);
}
- private AppointmentReminderTypDao getAppointmentReminderTypDao() {
- return getBean(AppointmentReminderTypDao.class);
- }
-
public void refresh(IPartialPageRequestHandler target) {
calendar.refresh(target);
}
@@ -265,7 +261,7 @@ public class CalendarPanel extends UserP
private Appointment getDefault() {
Appointment a = new Appointment();
- a.setRemind(getAppointmentReminderTypDao().get(3L)); //TODO: Make configurable
+ a.setReminder(Reminder.email); //TODO: Make configurable
a.setOwner(getBean(UserDao.class).get(getUserId()));
a.setTitle(Application.getString(1444));
log.debug(" -- getDefault -- Current model " + a);