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 2014/09/11 05:14:09 UTC
svn commit: r1624188 - in /openmeetings/trunk/singlewebapp/openmeetings-web:
./ src/main/java/org/apache/openmeetings/web/app/
src/main/java/org/apache/openmeetings/web/common/menu/
src/main/java/org/apache/openmeetings/web/common/tree/ src/main/java/o...
Author: solomax
Date: Thu Sep 11 03:14:08 2014
New Revision: 1624188
URL: http://svn.apache.org/r1624188
Log:
[OPENMEETINGS-1030] Recordings/Files section is rewritten to use wicket-jqueryui, drag&drop works better
Modified:
openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml Thu Sep 11 03:14:08 2014
@@ -32,7 +32,6 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<wicket-dashboard.version>0.11.0+wicket-7</wicket-dashboard.version>
- <dnd.version>0.6.0</dnd.version>
<commons-io.version>2.4</commons-io.version>
<commons-fileupload.version>1.3</commons-fileupload.version>
<mysql.version>5.1.30</mysql.version>
@@ -392,11 +391,6 @@
<version>${wicket.version}</version>
</dependency>
<dependency>
- <groupId>com.github.svenmeier.wicket-dnd</groupId>
- <artifactId>wicket-dnd</artifactId>
- <version>${dnd.version}</version>
- </dependency>
- <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java Thu Sep 11 03:14:08 2014
@@ -290,7 +290,7 @@ public class WebSession extends Abstract
String s = getBean(FieldLanguagesValuesDao.class).getString(id, getLanguage());
s = s == null ? "[Missing]" :
(STRINGS_WITH_APP.contains(id) ? s.replaceAll("\\$APP_NAME", getBean(ConfigurationDao.class).getAppName()) : s);
- return s;// + (Application.get().getDebugSettings().isDevelopmentUtilitiesEnabled() ? " [" + id + "]" : "");
+ return s + (Application.get().getDebugSettings().isDevelopmentUtilitiesEnabled() ? " [" + id + "]" : "");
}
public void setLanguage(long languageId) {
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java Thu Sep 11 03:14:08 2014
@@ -69,26 +69,27 @@ public class MenuPanel extends BasePanel
if (!Strings.isEmpty(gl.getDesc())) {
link.add(AttributeAppender.append("title", gl.getDesc()));
}
- item.add(new WebMarkupContainer("childItems")
- .add(new ListView<MenuItem>("childItem", gl.getChildren()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(ListItem<MenuItem> item) {
- final MenuItem m = item.getModelObject();
- item.add(new AjaxLink<Void>("link") {
- private static final long serialVersionUID = 1L;
- {
- add(new Label("name", m.getName()));
- add(new Label("description", m.getDesc()));
- }
-
- public void onClick(AjaxRequestTarget target) {
- m.onClick(getMainPage(), target);
- }
- });
- }
- }.setReuseItems(true)).setVisible(null != gl.getChildren()));
+ item.setVisible(gl.isActive());
+ item.add(new WebMarkupContainer("childItems").add(new ListView<MenuItem>("childItem", gl.getChildren()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(ListItem<MenuItem> item) {
+ final MenuItem m = item.getModelObject();
+ item.setVisible(m.isActive());
+ item.add(new AjaxLink<Void>("link") {
+ private static final long serialVersionUID = 1L;
+ {
+ add(new Label("name", m.getName()));
+ add(new Label("description", m.getDesc()));
+ }
+
+ public void onClick(AjaxRequestTarget target) {
+ m.onClick(getMainPage(), target);
+ }
+ });
+ }
+ }.setReuseItems(true)).setVisible(null != gl.getChildren()));
}
}.setReuseItems(true));
add(new MenuFunctionsBehavior(menuContainer.getMarkupId(), id));
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java Thu Sep 11 03:14:08 2014
@@ -35,8 +35,8 @@ public class FileItemPanel extends Folde
private static final long serialVersionUID = 1L;
private final WebMarkupContainer errors = new WebMarkupContainer("errors");
- public FileItemPanel(String id, final IModel<? extends FileItem> model, final ConvertingErrorsDialog errorsDialog) {
- super(id, model);
+ public FileItemPanel(String id, final IModel<? extends FileItem> model, final FileTreePanel fileTreePanel) {
+ super(id, model, fileTreePanel);
if (model.getObject() instanceof FlvRecording) {
FlvRecording r = (FlvRecording)model.getObject();
long errorCount = getBean(FlvRecordingLogDao.class).countErrors(r.getId());
@@ -46,13 +46,13 @@ public class FileItemPanel extends Folde
@Override
protected void onEvent(AjaxRequestTarget target) {
- errorsDialog.setDefaultModel(model);
- errorsDialog.open(target);
+ fileTreePanel.errorsDialog.setDefaultModel(model);
+ fileTreePanel.errorsDialog.open(target);
}
}).setVisible(visible);
} else {
errors.setVisible(false);
}
- item.add(errors);
+ drag.add(errors);
}
}
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java Thu Sep 11 03:14:08 2014
@@ -20,11 +20,7 @@ package org.apache.openmeetings.web.comm
import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
-import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
-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.FlvRecording;
@@ -38,13 +34,6 @@ import org.apache.wicket.markup.repeater
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
-import wicketdnd.DragSource;
-import wicketdnd.DropTarget;
-import wicketdnd.Location;
-import wicketdnd.Operation;
-import wicketdnd.Reject;
-import wicketdnd.Transfer;
-
public class FileItemTree<T extends FileItem> extends DefaultNestedTree<T> {
private static final long serialVersionUID = 1L;
private final FileTreePanel treePanel;
@@ -64,46 +53,7 @@ public class FileItemTree<T extends File
@Override
protected Component newLabelComponent(String id, final IModel<T> lm) {
FileItem r = lm.getObject();
- Component result = Type.Folder == r.getType() || r.getId() < 1 ? new FolderPanel(id, lm) : new FileItemPanel(id, lm, treePanel.errorsDialog);
- if (r.getId() > 0) {
- result.add(new DragSource(Operation.MOVE) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onBeforeDrop(Component drag, Transfer transfer) throws Reject {
- transfer.setData(lm.getObject());
- };
-
- @Override
- public void onAfterDrop(AjaxRequestTarget target, wicketdnd.Transfer transfer) {
- transfer.setData(null);
- }
- }.drag("div"));
- }
- if (r.getId() < 0 || Type.Folder == r.getType()) {
- result.add(new DropTarget(Operation.MOVE) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onDrop(AjaxRequestTarget target, Transfer transfer, Location location) throws Reject {
- FileItem p = lm.getObject();
- long pid = p.getId();
- T f = transfer.getData();
- f.setParentItemId(pid > 0 ? pid : null); //FIXME need to disable drop to self
- f.setOwnerId(p.getOwnerId());
- f.setRoomId(p.getRoomId());
- if (f instanceof FlvRecording) {
- FlvRecording r = (FlvRecording)f;
- r.setOrganization_id(((FlvRecording)p).getOrganization_id());
- getBean(FlvRecordingDao.class).update(r);
- } else {
- getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
- }
- target.add(treePanel.trees); //FIXME add correct refresh
- }
- }.dropCenter("div"));
- }
- return result;
+ return Type.Folder == r.getType() || r.getId() < 1 ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm, treePanel);
}
@Override
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html Thu Sep 11 03:14:08 2014
@@ -20,14 +20,23 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
+ <script type="text/javascript">
+ function treeRevert(dropped) {
+ $('#tree-anchor').get(0).scrollIntoView();
+ this.parent().parent().get(0).scrollIntoView();
+ return !dropped;
+ }
+ </script>
<div class="file tree">
- <div class="icons clear">
+ <div class="icons clear trash-toolbar" wicket:id="trash-toolbar">
<span wicket:id="create" class="folder-create om-icon align-left clickable" wicket:ommessage="title:703"></span>
<span wicket:id="refresh" class="refresh om-icon align-left clickable" wicket:ommessage="title:704"></span>
- <span wicket:id="trash" class="trash om-icon align-right clickable" wicket:ommessage="title:705"><span style="display: block;" wicket:id="drop-center"> </span></span>
+ <span wicket:id="trash" class="trash om-icon align-right clickable"></span>
+ <span style="padding-left: 20px;" wicket:ommessage="title:705"><wicket:ommessage key="1224"/></span>
<div class="clear"></div>
</div>
<div wicket:id="tree-container" class="trees">
+ <div id="tree-anchor" style="height: 2px; width: 2px;"></div>
<div wicket:id="tree"></div>
</div>
<div class="sizes" wicket:id="sizes">
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java Thu Sep 11 03:14:08 2014
@@ -32,6 +32,7 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.AddFolderDialog;
import org.apache.openmeetings.web.common.ConfirmableAjaxLink;
+import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
@@ -44,11 +45,9 @@ import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.time.Duration;
-import wicketdnd.DropTarget;
-import wicketdnd.Location;
-import wicketdnd.Operation;
-import wicketdnd.Reject;
-import wicketdnd.Transfer;
+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;
@@ -75,7 +74,26 @@ public abstract class FileTreePanel exte
}
};
add(addFolder);
- add(new WebMarkupContainer("create").add(new AjaxEventBehavior("onclick") {
+ 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("onclick") {
private static final long serialVersionUID = 1L;
@Override
@@ -83,7 +101,7 @@ public abstract class FileTreePanel exte
addFolder.open(target);
}
}));
- add(new WebMarkupContainer("refresh").add(new AjaxEventBehavior("onclick") {
+ trashToolbar.add(new WebMarkupContainer("refresh").add(new AjaxEventBehavior("onclick") {
private static final long serialVersionUID = 1L;
@Override
@@ -91,24 +109,14 @@ public abstract class FileTreePanel exte
target.add(trees); //FIXME add correct refresh
}
}));
- ConfirmableAjaxLink trash = new ConfirmableAjaxLink("trash", 713) {
+ trashToolbar.add(new ConfirmableAjaxLink("trash", 713) {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
delete(selectedFile.getObject(), target);
}
- };
- trash.add(new WebMarkupContainer("drop-center").setOutputMarkupId(true)).add(new DropTarget(Operation.MOVE) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onDrop(AjaxRequestTarget target, Transfer transfer, Location location) throws Reject {
- FileItem f = transfer.getData();
- delete(f, target);
- }
- }.dropCenter("span"));
- add(trash/*.add(new WindowsTheme())*/); //TODO check theme here
+ });
add(trees.add(treesView).setOutputMarkupId(true));
updateSizes();
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html Thu Sep 11 03:14:08 2014
@@ -20,6 +20,6 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
- <div wicket:id="item" class="file item"><wicket:child /><span wicket:id="name" class="name"></span></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>
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java Thu Sep 11 03:14:08 2014
@@ -26,7 +26,10 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.file.FileItem;
import org.apache.openmeetings.db.entity.file.FileItem.Type;
import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
@@ -34,17 +37,72 @@ import org.apache.wicket.markup.html.pan
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
-import wicketdnd.theme.WindowsTheme;
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.interaction.draggable.Draggable;
+import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
public class FolderPanel extends Panel {
private static final long serialVersionUID = 1L;
- protected final WebMarkupContainer item = new WebMarkupContainer("item");
+ protected final MarkupContainer drop;
+ protected final MarkupContainer drag;
- public FolderPanel(String id, final IModel<? extends FileItem> model) {
+ public FolderPanel(String id, final IModel<? extends FileItem> model, final FileTreePanel treePanel) {
super(id, model);
FileItem r = model.getObject();
- add(new WindowsTheme());
- item.add(Type.Folder == r.getType() ? new AjaxEditableLabel<String>("name", Model.of(model.getObject().getFileName())) {
+ 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(getDefaultModelObject() instanceof FlvRecording ? ".recorditem" : ".fileitem"));
+ }
+
+ @Override
+ public void onDrop(AjaxRequestTarget target, Component component) {
+ Object o = component.getDefaultModelObject();
+ 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.getId()) {
+ return;
+ }
+ f.setParentItemId(pid > 0 ? pid : null);
+ f.setOwnerId(p.getOwnerId());
+ f.setRoomId(p.getRoomId());
+ if (f instanceof FlvRecording) {
+ FlvRecording r = (FlvRecording)f;
+ r.setOrganization_id(((FlvRecording)p).getOrganization_id());
+ getBean(FlvRecordingDao.class).update(r);
+ } else {
+ getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
+ }
+ }
+ target.add(treePanel.trees); //FIXME add correct refresh
+ }
+ } : new WebMarkupContainer("drop");
+ if (r.getId() < 1) {
+ drag = new WebMarkupContainer("drag");
+ } else {
+ Draggable<? extends FileItem> d = new Draggable<FileItem>("drag", Model.of(r)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onConfigure(JQueryBehavior behavior) {
+ super.onConfigure(behavior);
+ behavior.setOption("revert", "treeRevert");
+ behavior.setOption("cursor", Options.asString("move"));
+ }
+ };
+ d.setContainment(".file.tree, .icons");
+ d.add(AttributeAppender.append("class", r instanceof FlvRecording ? "recorditem" : "fileitem"));
+ drag = d;
+ }
+ drag.add(r.getId() < 1 || r.getType() != Type.Folder ? new Label("name", r.getFileName()) : new AjaxEditableLabel<String>("name", Model.of(model.getObject().getFileName())) {
private static final long serialVersionUID = 1L;
@Override
@@ -68,7 +126,7 @@ public class FolderPanel extends Panel {
public void onEdit(AjaxRequestTarget target) {
super.onEdit(target);
}
- } : new Label("name", r.getFileName()));
- add(item.setOutputMarkupId(true));
+ });
+ add(drop.add(drag).setOutputMarkupId(true));
}
}
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java Thu Sep 11 03:14:08 2014
@@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.Iterator;
import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
import org.apache.openmeetings.db.entity.record.FlvRecording;
import org.apache.openmeetings.web.app.WebSession;
@@ -34,6 +35,7 @@ public class MyRecordingTreeProvider ext
public Iterator<? extends FlvRecording> getRoots() {
FlvRecording r = new FlvRecording();
r.setId(0L);
+ r.setType(Type.Folder);
r.setFileName(WebSession.getString(860));
r.setOwnerId(getUserId());
return Arrays.asList(r).iterator();
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java Thu Sep 11 03:14:08 2014
@@ -24,6 +24,7 @@ import java.util.Arrays;
import java.util.Iterator;
import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
import org.apache.openmeetings.db.entity.record.FlvRecording;
import org.apache.openmeetings.web.app.WebSession;
@@ -42,6 +43,7 @@ public class PublicRecordingTreeProvider
r.setId(orgId == null ? -1 : -orgId);
r.setOrganization_id(orgId);
r.setOwnerId(null);
+ r.setType(Type.Folder);
String pub = WebSession.getString(861);
r.setFileName(orgId == null ? pub : String.format("%s (%s)", pub, name));
return Arrays.asList(r).iterator();
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java Thu Sep 11 03:14:08 2014
@@ -76,7 +76,7 @@ public class MainPage extends BaseInited
private final WebMarkupContainer topLinks = new WebMarkupContainer("topLinks");
private final MarkupContainer contents;
private final AbstractAjaxTimerBehavior areaBehavior;
- private DebugBar dev = null;
+ private final Component dev;
public MainPage(PageParameters pp) {
super();
@@ -121,10 +121,9 @@ public class MainPage extends BaseInited
});
add(about);
if (getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) {
- add(dev = new DebugBar("dev"));
- dev.setOutputMarkupId(true);
+ add((dev = new DebugBar("dev")).setOutputMarkupId(true));
} else {
- add(new EmptyPanel("dev").setVisible(false));
+ add((dev = new EmptyPanel("dev")).setVisible(false));
}
topLinks.add(new ExternalLink("bug", "https://issues.apache.org/jira/browse/OPENMEETINGS"));//FIXME hardcoded
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html Thu Sep 11 03:14:08 2014
@@ -41,5 +41,6 @@
<div class="wb" wicket:id="whiteboard"></div>
</div>
<div wicket:id="invite"></div>
+ <div wicket:id="createPoll"></div>
</wicket:panel>
</html>
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Thu Sep 11 03:14:08 2014
@@ -97,7 +97,7 @@ public class RoomPanel extends BasePanel
private long roomId;
private Client c;
private final StartSharingEventBehavior startSharing;
- private AbstractDefaultAjaxBehavior aab = new AbstractDefaultAjaxBehavior() {
+ private final AbstractDefaultAjaxBehavior aab = new AbstractDefaultAjaxBehavior() {
private static final long serialVersionUID = 1L;
@Override
@@ -116,6 +116,15 @@ public class RoomPanel extends BasePanel
}
};
private final InvitationDialog invite;
+ private final CreatePollDialog createPoll;
+ private final MenuPanel menuPanel;
+ private final RoomMenuItem shareItem;
+ private final RoomMenuItem applyModer;
+ private final RoomMenuItem applyWB;
+ private final RoomMenuItem applyAV;
+ private final RoomMenuItem pollVote;
+ private final RoomMenuItem pollResult;
+ private final RoomMenuItem sipDialer;
public RoomPanel(String id, long _roomId) {
this(id, getBean(RoomDao.class).get(_roomId));
@@ -124,8 +133,27 @@ public class RoomPanel extends BasePanel
public RoomPanel(String id, Room r) {
super(id);
this.roomId = r.getId();
- invite = new InvitationDialog("invite", roomId);
- add(new MenuPanel("roomMenu", getMenu()).setVisible(!r.getHideTopBar()));
+ shareItem = new RoomMenuItem(WebSession.getString(239), WebSession.getString(1480)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(MainPage page, AjaxRequestTarget target) {
+ startSharing.respond(target);
+ }
+ };
+ applyModer = new RoomMenuItem(WebSession.getString(784), WebSession.getString(1481));
+ applyModer.setActive(false);
+ applyWB = new RoomMenuItem(WebSession.getString(785), WebSession.getString(1492));
+ applyWB.setActive(false);
+ applyAV = new RoomMenuItem(WebSession.getString(786), WebSession.getString(1482));
+ applyAV.setActive(false);
+ pollVote = new RoomMenuItem(WebSession.getString(42), WebSession.getString(1485));
+ pollVote.setActive(false);
+ pollResult = new RoomMenuItem(WebSession.getString(37), WebSession.getString(1484));
+ pollResult.setActive(false);
+ sipDialer = new RoomMenuItem(WebSession.getString(1447), WebSession.getString(1488));
+ sipDialer.setActive(false);
+ add((menuPanel = new MenuPanel("roomMenu", getMenu())).setVisible(!r.getHideTopBar()));
WebMarkupContainer wb = new WebMarkupContainer("whiteboard");
add(wb.setOutputMarkupId(true));
add(new WhiteboardBehavior("1", wb.getMarkupId(), null, null, null));
@@ -201,7 +229,8 @@ public class RoomPanel extends BasePanel
startSharing.respond(target);
}
}).add(new AttributeAppender("title", WebSession.getString(1480)))); //FIXME add/remove
- add(invite);
+ add(invite = new InvitationDialog("invite", roomId));
+ add(createPoll = new CreatePollDialog("createPoll", roomId));
}
private JSONArray getStringLabels(long... ids) {
@@ -287,9 +316,8 @@ public class RoomPanel extends BasePanel
}
private List<MenuItem> getMenu() {
- //TODO hide/show
List<MenuItem> menu = new ArrayList<MenuItem>();
- menu.add(new RoomMenuItem(WebSession.getString(308), WebSession.getString(309), "room menu exit") {
+ RoomMenuItem exit = new RoomMenuItem(WebSession.getString(308), WebSession.getString(309), "room menu exit") {
private static final long serialVersionUID = 1L;
@Override
@@ -305,7 +333,10 @@ public class RoomPanel extends BasePanel
throw new RedirectToUrlException(url);
}
}
- });
+ };
+ User u = getBean(UserDao.class).get(getUserId());
+ exit.setActive(u.getType() != User.Type.external && u.getType() != User.Type.contact);
+ menu.add(exit);//TODO check this
MenuItem files = new RoomMenuItem(WebSession.getString(245));
List<RoomMenuItem> fileItems = new ArrayList<RoomMenuItem>();
fileItems.add(new RoomMenuItem(WebSession.getString(15), WebSession.getString(1479)));
@@ -323,21 +354,21 @@ public class RoomPanel extends BasePanel
invite.open(target);
}
});
- actionItems.add(new RoomMenuItem(WebSession.getString(239), WebSession.getString(1480)) {
+ actionItems.add(shareItem); //FIXME enable/disable
+ actionItems.add(applyModer); //FIXME enable/disable
+ actionItems.add(applyWB); //FIXME enable/disable
+ actionItems.add(applyAV); //FIXME enable/disable
+ actionItems.add(new RoomMenuItem(WebSession.getString(24), WebSession.getString(1483)) {
private static final long serialVersionUID = 1L;
@Override
public void onClick(MainPage page, AjaxRequestTarget target) {
- startSharing.respond(target);
+ createPoll.open(target);
}
});
- actionItems.add(new RoomMenuItem(WebSession.getString(784), WebSession.getString(1481)));
- actionItems.add(new RoomMenuItem(WebSession.getString(785), WebSession.getString(1492)));
- actionItems.add(new RoomMenuItem(WebSession.getString(786), WebSession.getString(1482)));
- actionItems.add(new RoomMenuItem(WebSession.getString(24), WebSession.getString(1483)));
- actionItems.add(new RoomMenuItem(WebSession.getString(37), WebSession.getString(1484)));
- actionItems.add(new RoomMenuItem(WebSession.getString(42), WebSession.getString(1485)));
- actionItems.add(new RoomMenuItem(WebSession.getString(1447), WebSession.getString(1488)));
+ actionItems.add(pollResult); //FIXME enable/disable
+ actionItems.add(pollVote); //FIXME enable/disable
+ actionItems.add(sipDialer);
actionItems.add(new RoomMenuItem(WebSession.getString(1126), WebSession.getString(1490)));
actions.setChildren(actionItems);
menu.add(actions);
@@ -408,6 +439,7 @@ public class RoomPanel extends BasePanel
public Iterator<? extends FileExplorerItem> getRoots() {
FileExplorerItem f = new FileExplorerItem();
f.setRoomId(roomId);
+ f.setType(Type.Folder);
if (roomId == null) {
f.setId(0L);
f.setOwnerId(getUserId());
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java Thu Sep 11 03:14:08 2014
@@ -85,9 +85,11 @@ public class VideoInfo extends Panel {
FlvRecording r = _r == null ? new FlvRecording() : _r;
rm.setObject(r);
try {
- Room room = getBean(RoomDao.class).get(r.getRoomId());
- if (room != null) {
- roomName.setObject(room.getName());
+ if (r.getRoomId() != null) {
+ Room room = getBean(RoomDao.class).get(r.getRoomId());
+ if (room != null) {
+ roomName.setObject(room.getName());
+ }
}
} catch (Exception e) {
//no-op
Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css Thu Sep 11 03:14:08 2014
@@ -296,6 +296,14 @@ html, body {
overflow-x: hidden;
overflow-y: auto;
}
+.trash-toolbar {
+ font-weight: bold;
+ line-height: 20px;
+ color: transparent;
+}
+.trash-toolbar-hover {
+ color: inherit;
+}
.file.tree .files .sizes table, .file.tree .files .info table {
width: 100%;
}
@@ -404,6 +412,7 @@ html, body {
.file.item {
position: relative;
display: inline-block;
+ min-width: 150px;
}
.file.item .name {
color: black;