Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java Sat Aug 20 02:52:45 2016 @@ -22,6 +22,7 @@ import static org.apache.openmeetings.we import static org.apache.openmeetings.web.app.WebSession.getUserId; import java.util.Date; +import java.util.UUID; import org.apache.openmeetings.db.dao.file.FileExplorerItemDao; import org.apache.openmeetings.db.dao.record.RecordingDao; @@ -35,43 +36,49 @@ import org.apache.openmeetings.web.commo 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.ajax.attributes.CallbackParameter; +import org.apache.wicket.core.request.handler.IPartialPageRequestHandler; 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.core.ajax.IJQueryAjaxAware; +import com.googlecode.wicket.jquery.core.ajax.JQueryAjaxBehavior; import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable; +import com.googlecode.wicket.jquery.ui.interaction.droppable.DroppableBehavior; 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); + private final IModel<FileItem> selected = 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"); + final FileItemTree tree; - public FileTreePanel(String id) { + public FileTreePanel(String id, Long roomId) { super(id); - defineTrees(); - selectedFile.getObject().setId(Long.MIN_VALUE); + OmTreeProvider tp = new OmTreeProvider(roomId); + setSelected(tp.getRoot(), null); + add(tree = new FileItemTree("tree", this, tp)); + } + + @Override + protected void onInitialize() { + super.onInitialize(); 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 + createFolder(target, getModelObject()); } }; add(addFolder); @@ -86,6 +93,37 @@ public abstract class FileTreePanel exte } @Override + public JQueryBehavior newWidgetBehavior(String selector) { + return new DroppableBehavior(selector, this) { + private static final long serialVersionUID = 1L; + + @Override + protected JQueryAjaxBehavior newOnDropAjaxBehavior(IJQueryAjaxAware source) { + return new OnDropAjaxBehavior(source) { + private static final long serialVersionUID = 1L; + + @Override + public CharSequence getCallbackFunctionBody(CallbackParameter... parameters) { + String dialogId = UUID.randomUUID().toString(); + + String statement = "var $drop = $(this);"; + statement += "$('body').append('<div id=" + dialogId + ">" + getString("713") + "</div>');"; + statement += "$( '#" + dialogId + + "' ).dialog({ title: '" + getString("80") + "', dialogClass: 'no-close', buttons: ["; + statement += " { text: '" + getString("54") + "', click: function() { $drop.append(ui.draggable); $(this).dialog('close'); " + super.getCallbackFunctionBody(parameters) + " } },"; + statement += " { text: '" + getString("25") + "', click: function() { $( this ).dialog('close'); } } "; + statement += "],"; + statement += "close: function(event, ui) { $(this).dialog('destroy').remove(); }"; + statement += "});"; + + return statement; + } + }; + } + }; + } + + @Override public void onDrop(AjaxRequestTarget target, Component component) { Object o = component.getDefaultModelObject(); if (o instanceof FileItem) { @@ -94,6 +132,7 @@ public abstract class FileTreePanel exte } }; add(trashToolbar); + trashToolbar.add(getUpload("upload")); trashToolbar.add(new WebMarkupContainer("create").add(new AjaxEventBehavior("click") { private static final long serialVersionUID = 1L; @@ -107,33 +146,41 @@ public abstract class FileTreePanel exte @Override protected void onEvent(AjaxRequestTarget target) { - target.add(trees); //FIXME add correct refresh + update(target); } })); trashToolbar.add(new ConfirmableAjaxBorder("trash", getString("80"), getString("713")) { private static final long serialVersionUID = 1L; @Override + protected void onEvent(AjaxRequestTarget target) { + FileItem f = selected.getObject(); + if (f != null && f.getId() != null) { + super.onEvent(target); + } + } + + @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { - delete(selectedFile.getObject(), target); + delete(selected.getObject(), target); } }); - add(trees.add(treesView).setOutputMarkupId(true)); + add(trees.add(tree).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; - - @Override - protected void onPostProcessTarget(AjaxRequestTarget target) { - updateSizes(); - } - }); add(errorsDialog); } - void delete(FileItem f, AjaxRequestTarget target) { + protected String getContainment() { + return ".file.item.drop.area"; + } + + protected Component getUpload(String id) { + return new WebMarkupContainer(id).setVisible(false); + } + + void delete(FileItem f, IPartialPageRequestHandler handler) { long id = f.getId(); if (id > 0) { if (f instanceof Recording) { @@ -142,36 +189,66 @@ public abstract class FileTreePanel exte getBean(FileExplorerItemDao.class).delete((FileExplorerItem)f); } } - target.add(trees); //FIXME add correct refresh + update(handler); } - public void createRecordingFolder(String name) { - Recording f = new Recording(); + protected abstract void update(AjaxRequestTarget target, FileItem f); + + protected void createFolder(AjaxRequestTarget target, String name) { + FileItem p = selected.getObject(); + boolean isRecording = p instanceof Recording; + if (Type.Folder != p.getType()) { + + } + FileItem f = isRecording ? new Recording() : new FileExplorerItem(); f.setName(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.setParentId(parentId); - } + f.setType(Type.Folder); f.setOwnerId(p.getOwnerId()); - f.setGroupId(p.getGroupId()); - getBean(RecordingDao.class).update(f); + f.setParentId(Type.Folder == p.getType() ? p.getId() : null); + if (isRecording) { + Recording r = (Recording)f; + r.setGroupId(((Recording)p).getGroupId()); + getBean(RecordingDao.class).update(r); + } else { + f.setRoomId(p.getRoomId()); + getBean(FileExplorerItemDao.class).update((FileExplorerItem)f); + } + update(target); } + + public abstract void updateSizes(); - public abstract void defineTrees(); - - public abstract void update(AjaxRequestTarget target, FileItem f); + public FileItem getSelected() { + return selected.getObject(); + } - public abstract void createFolder(String name); + public void update(IPartialPageRequestHandler handler) { + updateSizes(); + handler.add(sizes, trees); + } - public abstract void updateSizes(); + void updateNode(AjaxRequestTarget target, FileItem fi) { + if (fi != null && target != null) { + if (Type.Folder == fi.getType()) { + tree.updateBranch(fi, target); + } else { + tree.updateNode(fi, target); + } + } + } + + public void setSelected(FileItem fi, AjaxRequestTarget target) { + FileItem _prev = selected.getObject(); + updateNode(target, _prev); + selected.setObject(fi); + updateNode(target, fi); + } @Override protected void onDetach() { - selectedFile.detach(); + selected.detach(); homeSize.detach(); publicSize.detach(); super.onDetach();
Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java Sat Aug 20 02:52:45 2016 @@ -66,12 +66,12 @@ public class FolderPanel extends Panel { if (o instanceof FileItem) { FileItem p = (FileItem)drop.getDefaultModelObject(); FileItem f = (FileItem)o; - long pid = p.getId(); + Long pid = p.getId(); //FIXME parent should not be moved to child !!!!!!! - if (pid == f.getId()) { + if (pid != null && pid.equals(f.getId())) { return; } - f.setParentId(pid > 0 ? pid : null); + f.setParentId(pid); f.setOwnerId(p.getOwnerId()); f.setRoomId(p.getRoomId()); if (f instanceof Recording) { @@ -81,14 +81,16 @@ public class FolderPanel extends Panel { } else { getBean(FileExplorerItemDao.class).update((FileExplorerItem)f); } + treePanel.updateNode(target, p); + treePanel.updateNode(target, f); } - target.add(treePanel.trees); //FIXME add correct refresh + target.add(treePanel.trees); } } : new WebMarkupContainer("drop"); - if (r.getId() < 1) { + if (r.getId() == null) { drag = new WebMarkupContainer("drag"); } else { - Draggable<? extends FileItem> d = new Draggable<FileItem>("drag", Model.of(r)) { + drag = new Draggable<FileItem>("drag", Model.of(r)) { private static final long serialVersionUID = 1L; @Override @@ -96,13 +98,12 @@ public class FolderPanel extends Panel { super.onConfigure(behavior); behavior.setOption("revert", "treeRevert"); behavior.setOption("cursor", Options.asString("move")); + behavior.setOption("helper", "'clone'"); } - }; - d.setContainment(".file.tree"); - d.add(AttributeAppender.append("class", r instanceof Recording ? "recorditem" : "fileitem")); - drag = d; + }.setContainment(treePanel.getContainment()); + drag.add(AttributeAppender.append("class", r instanceof Recording ? "recorditem" : "fileitem")); } - drag.add(r.getId() < 1 ? new Label("name", r.getName()) : new AjaxEditableLabel<String>("name", Model.of(model.getObject().getName())) { + drag.add(r.getId() == null ? new Label("name", r.getName()) : new AjaxEditableLabel<String>("name", Model.of(model.getObject().getName())) { private static final long serialVersionUID = 1L; @Override Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html Sat Aug 20 02:52:45 2016 @@ -38,7 +38,7 @@ Wicket.Event.subscribe('/ajax/call/complete', hideBusyIndicator); }); </script> - <div id="topControls"> + <div wicket:id="topControls" 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 @@ -46,10 +46,10 @@ id="reportBug"><a target="_blank" href="https://issues.apache.org/jira/browse/OPENMEETINGS"><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" class="ui-widget-header"><span><wicket:message key="1554"/></span></div> <div wicket:id="menu"></div> </div> + <div wicket:id="dev" id="devMenu"/> <div wicket:id="contents"><div wicket:id="child"></div></div> <div wicket:id="chatPanel"></div> <div wicket:id="aboutDialog"></div> Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java Sat Aug 20 02:52:45 2016 @@ -75,7 +75,6 @@ import org.apache.wicket.protocol.ws.api import org.apache.wicket.protocol.ws.api.message.ClosedMessage; import org.apache.wicket.protocol.ws.api.message.ConnectedMessage; import org.apache.wicket.request.IRequestParameters; -import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.util.time.Duration; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; @@ -89,7 +88,9 @@ public class MainPage extends BaseInited private static final long serialVersionUID = 1L; private static final Logger log = Red5LoggerFactory.getLogger(MainPage.class, webAppRootKey); private final static String PARAM_USER_ID = "userId"; + private Client client; private final MenuPanel menu; + private final WebMarkupContainer topControls = new WebMarkupContainer("topControls"); private final WebMarkupContainer topLinks = new WebMarkupContainer("topLinks"); private final MarkupContainer contents; private final AbstractAjaxTimerBehavior areaBehavior; @@ -99,13 +100,15 @@ public class MainPage extends BaseInited private final UserInfoDialog userInfo; private final InviteUserToRoomDialog inviteUser; - public MainPage(PageParameters pp) { + public MainPage() { super(); + client = new Client(); getHeader().setVisible(false); + add(topControls.setOutputMarkupPlaceholderTag(true).setMarkupId("topControls")); menu = new MenuPanel("menu", getMainMenu()); contents = new WebMarkupContainer("contents"); add(contents.add(new WebMarkupContainer(CHILD_ID)).setOutputMarkupId(true).setMarkupId("contents")); - add(menu.setVisible(false), topLinks.setVisible(false).setOutputMarkupPlaceholderTag(true).setMarkupId("topLinks")); + topControls.add(menu.setVisible(false), topLinks.setVisible(false).setOutputMarkupPlaceholderTag(true).setMarkupId("topLinks")); topLinks.add(new AjaxLink<Void>("messages") { private static final long serialVersionUID = 1L; @@ -142,11 +145,11 @@ public class MainPage extends BaseInited }); add(about); if (getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) { - add(dev = new DebugBar("dev")); - dev.setOutputMarkupId(true); + add(dev = new DebugBar("dev")); + dev.setOutputMarkupId(true); } else { dev = null; - add(new EmptyPanel("dev").setVisible(false)); + add(new EmptyPanel("dev").setVisible(false)); } add(chat = new ChatPanel("chatPanel")); @@ -321,6 +324,10 @@ public class MainPage extends BaseInited return topLinks; } + public WebMarkupContainer getTopControls() { + return topControls; + } + public ChatPanel getChat() { return chat; } @@ -329,4 +336,8 @@ public class MainPage extends BaseInited protected boolean isMainPage() { return true; } + + public Client getClient() { + return client; + } } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java Sat Aug 20 02:52:45 2016 @@ -33,32 +33,21 @@ public class KickMessageDialog extends A public KickMessageDialog(String id) { super(id, ""); - add(new Label("message", Application.getString(606))); } @Override protected void onInitialize() { super.onInitialize(); - add(new JQueryBehavior(JQueryWidget.getSelector(this), "dialog") { - private static final long serialVersionUID = 1L; - - @Override - protected String $() { - return this.$(Options.asString("open")); - } - }); + add(new Label("message", getString("606"))); }; @Override public void onConfigure(JQueryBehavior behavior) { super.onConfigure(behavior); + behavior.setOption("autoOpen", true); behavior.setOption("closeOnEscape", false); - behavior.setOption("dialogClass", Options.asString("no-close")); - behavior.setOption("resizable", false); - } - - public String getOnClickJavaScript() { - return "$('#" + getButtons().get(0).getMarkupId() +"').click(function(e){$('#" + getMarkupId() +"').close(); })"; + behavior.setOption("dialogClass", Options.asString("no-close")); + behavior.setOption("resizable", false); } @Override Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java Sat Aug 20 02:52:45 2016 @@ -58,7 +58,7 @@ public class ResetPasswordDialog extends public ResetPasswordDialog(String id, final User user) { super(id, Application.getString(325)); this.user = user; - add(form = new Form<String>("form"){ + add(form = new Form<String>("form") { private static final long serialVersionUID = 1L; private TextField<String> login; private PasswordTextField confirmPassword; @@ -76,14 +76,14 @@ public class ResetPasswordDialog extends confirmPassword.setLabel(Model.of(Application.getString(329))); confirmPassword.setRequired(true).add(minimumLength(getMinPasswdLength(cfgDao))); - add(new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected + add(new AjaxButton("submit") { // FAKE button so "submit-on-enter" works as expected private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { ResetPasswordDialog.this.onSubmit(target); } - + @Override protected void onError(AjaxRequestTarget target, Form<?> form) { ResetPasswordDialog.this.onError(target); @@ -99,18 +99,19 @@ public class ResetPasswordDialog extends } super.onValidate(); } - + }); - confirmReset = new MessageDialog("confirmReset", Application.getString(325), Application.getString(332), DialogButtons.OK, DialogIcon.INFO){ + confirmReset = new MessageDialog("confirmReset", Application.getString(325), Application.getString(332), + DialogButtons.OK, DialogIcon.INFO) { private static final long serialVersionUID = 1L; @Override public void onConfigure(JQueryBehavior behavior) { super.onConfigure(behavior); - behavior.setOption("dialogClass", Options.asString("no-close")); + behavior.setOption("dialogClass", Options.asString("no-close")); behavior.setOption("closeOnEscape", false); } - + @Override public void onClose(IPartialPageRequestHandler handler, DialogButton button) { setResponsePage(Application.get().getSignInPageClass()); @@ -118,11 +119,12 @@ public class ResetPasswordDialog extends }; add(confirmReset); } - + @Override public void onConfigure(JQueryBehavior behavior) { super.onConfigure(behavior); - behavior.setOption("dialogClass", Options.asString("no-close")); + behavior.setOption("autoOpen", true); + behavior.setOption("dialogClass", Options.asString("no-close")); behavior.setOption("closeOnEscape", false); } @@ -130,7 +132,7 @@ public class ResetPasswordDialog extends protected List<DialogButton> getButtons() { return Arrays.asList(resetBtn); } - + @Override public DialogButton getSubmitButton() { return resetBtn; @@ -154,26 +156,13 @@ public class ResetPasswordDialog extends error(e.getMessage()); } } - + @Override public void onClose(IPartialPageRequestHandler handler, DialogButton button) { - if (resetBtn.equals(button)){ + if (resetBtn.equals(button)) { confirmReset.open(handler); } else { setResponsePage(Application.get().getSignInPageClass()); } } - - @Override - protected void onInitialize() { - super.onInitialize(); - add(new JQueryBehavior(JQueryWidget.getSelector(this), "dialog") { - private static final long serialVersionUID = 1L; - - @Override - protected String $() { - return this.$(Options.asString("open")); - } - }); - } } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java Sat Aug 20 02:52:45 2016 @@ -62,7 +62,6 @@ import org.apache.wicket.ajax.AjaxReques import org.apache.wicket.ajax.json.JSONException; import org.apache.wicket.ajax.json.JSONObject; import org.apache.wicket.markup.head.IHeaderResponse; -import org.apache.wicket.markup.head.OnDomReadyHeaderItem; import org.apache.wicket.request.IRequestParameters; import org.apache.wicket.request.cycle.RequestCycle; import org.apache.wicket.request.flow.RedirectToUrlException; @@ -150,7 +149,6 @@ public class SignInPage extends BaseInit @Override public void renderHead(IHeaderResponse response) { super.renderHead(response); - response.render(OnDomReadyHeaderItem.forScript(m.getOnClickJavaScript())); } @Override Copied: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java (from r1756980, openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java) URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java?p2=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java&p1=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java&r1=1756980&r2=1756981&rev=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java Sat Aug 20 02:52:45 2016 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.openmeetings.web.util; +package org.apache.openmeetings.web.user.record; import static org.apache.openmeetings.util.OmFileHelper.getRecording; @@ -37,12 +37,12 @@ public class AviRecordingResourceReferen } @Override - String getFileName(Recording r) { + protected String getFileName(Recording r) { return r.getAlternateDownload(); } @Override - File getFile(Recording r) { + protected File getFile(Recording r) { return getRecording(r.getAlternateDownload()); } } Copied: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java (from r1756980, openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java) URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java?p2=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java&p1=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java&r1=1756980&r2=1756981&rev=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java Sat Aug 20 02:52:45 2016 @@ -16,8 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.openmeetings.web.util; +package org.apache.openmeetings.web.user.record; +import static org.apache.openmeetings.util.OmFileHelper.FLV_MIME_TYPE; import static org.apache.openmeetings.util.OmFileHelper.getRecording; import java.io.File; @@ -33,16 +34,16 @@ public class FlvRecordingResourceReferen @Override public String getMimeType() { - return "video/flv"; + return FLV_MIME_TYPE; } @Override - String getFileName(Recording r) { + protected String getFileName(Recording r) { return r.getHash(); } @Override - File getFile(Recording r) { + protected File getFile(Recording r) { return getRecording(r.getHash()); } } Copied: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java (from r1756980, openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java) URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java?p2=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java&p1=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java&r1=1756980&r2=1756981&rev=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java Sat Aug 20 02:52:45 2016 @@ -16,8 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.openmeetings.web.util; +package org.apache.openmeetings.web.user.record; +import static org.apache.openmeetings.util.OmFileHelper.JPG_MIME_TYPE; import static org.apache.openmeetings.util.OmFileHelper.getRecording; import java.io.File; @@ -33,16 +34,16 @@ public class JpgRecordingResourceReferen @Override public String getMimeType() { - return "image/jpeg"; + return JPG_MIME_TYPE; } @Override - String getFileName(Recording r) { + protected String getFileName(Recording r) { return r.getPreviewImage(); } @Override - File getFile(Recording r) { + protected File getFile(Recording r) { return getRecording(r.getPreviewImage()); } } Copied: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java (from r1756980, openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java) URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java?p2=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java&p1=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java&r1=1756980&r2=1756981&rev=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java Sat Aug 20 02:52:45 2016 @@ -16,11 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.openmeetings.web.util; +package org.apache.openmeetings.web.user.record; -import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION; import static org.apache.openmeetings.util.OmFileHelper.MP4_MIME_TYPE; -import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording; import java.io.File; @@ -39,12 +37,12 @@ public class Mp4RecordingResourceReferen } @Override - String getFileName(Recording r) { - return r.getHash() + MP4_EXTENSION; + protected String getFileName(Recording r) { + return r.getFile().getName(); } @Override - File getFile(Recording r) { - return getMp4Recording(r.getHash()); + protected File getFile(Recording r) { + return r.getFile(); } } Copied: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java (from r1756980, openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java) URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java?p2=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java&p1=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java&r1=1756980&r2=1756981&rev=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java Sat Aug 20 02:52:45 2016 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.openmeetings.web.util; +package org.apache.openmeetings.web.user.record; import static org.apache.openmeetings.util.OmFileHelper.OGG_EXTENSION; import static org.apache.openmeetings.util.OmFileHelper.getOggRecording; @@ -38,12 +38,12 @@ public class OggRecordingResourceReferen } @Override - String getFileName(Recording r) { + protected String getFileName(Recording r) { return r.getHash() + OGG_EXTENSION; } @Override - File getFile(Recording r) { + protected File getFile(Recording r) { return getOggRecording(r.getHash()); } } Copied: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java (from r1756980, openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java) URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java?p2=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java&p1=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java&r1=1756980&r2=1756981&rev=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java Sat Aug 20 02:52:45 2016 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.openmeetings.web.util; +package org.apache.openmeetings.web.user.record; import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.web.app.Application.getBean; @@ -25,11 +25,6 @@ import static org.apache.openmeetings.we import static org.apache.openmeetings.web.app.WebSession.getUserId; import static org.red5.logging.Red5LoggerFactory.getLogger; -import java.io.File; -import java.io.IOException; - -import javax.servlet.http.HttpServletResponse; - import org.apache.openmeetings.db.dao.record.RecordingDao; import org.apache.openmeetings.db.dao.user.GroupUserDao; import org.apache.openmeetings.db.dao.user.UserDao; @@ -37,15 +32,13 @@ import org.apache.openmeetings.db.entity import org.apache.openmeetings.db.entity.record.Recording; import org.apache.openmeetings.db.entity.user.User; import org.apache.openmeetings.web.app.WebSession; +import org.apache.openmeetings.web.util.FileItemResourceReference; import org.apache.wicket.request.mapper.parameter.PageParameters; -import org.apache.wicket.request.resource.IResource; import org.apache.wicket.request.resource.IResource.Attributes; -import org.apache.wicket.resource.FileSystemResource; -import org.apache.wicket.resource.FileSystemResourceReference; import org.apache.wicket.util.string.StringValue; import org.slf4j.Logger; -public abstract class RecordingResourceReference extends FileSystemResourceReference { +public abstract class RecordingResourceReference extends FileItemResourceReference<Recording> { private static final long serialVersionUID = 1L; private static final Logger log = getLogger(RecordingResourceReference.class, webAppRootKey); @@ -54,35 +47,33 @@ public abstract class RecordingResourceR } @Override - public IResource getResource() { - return new FileSystemResource() { - private static final long serialVersionUID = 1L; - private File file; - - @Override - protected String getMimeType() throws IOException { - return RecordingResourceReference.this.getMimeType(); - } - - @Override - protected ResourceResponse newResourceResponse(Attributes attributes) { - Recording r = getRecording(attributes); - if (r != null) { - file = getFile(r); - return createResourceResponse(file.toPath()); - } else { - log.debug("No recording was found"); - ResourceResponse rr = new ResourceResponse(); - rr.setError(HttpServletResponse.SC_NOT_FOUND); - return rr; - } - } - }; + public String getMimeType(Recording r) { + return getMimeType(); } - abstract String getMimeType(); - abstract String getFileName(Recording r); - abstract File getFile(Recording r); + public abstract String getMimeType(); + + @Override + protected Recording getFileItem(Attributes attributes) { + PageParameters params = attributes.getParameters(); + StringValue _id = params.get("id"); + Long id = null; + try { + id = _id.toOptionalLong(); + } catch (Exception e) { + //no-op expected + } + WebSession ws = WebSession.get(); + if (id != null && ws.isSignedIn()) { + return getRecording(id); + } else { + ws.invalidate(); + if (ws.signIn(_id.toString(), true)) { + return getRecording(getRecordingId()); + } + } + return null; + } private static Recording getRecording(Long id) { log.debug("Recording with id {} is requested", id); @@ -111,26 +102,5 @@ public abstract class RecordingResourceR } } return null; - } - - private static Recording getRecording(Attributes attributes) { - PageParameters params = attributes.getParameters(); - StringValue _id = params.get("id"); - Long id = null; - try { - id = _id.toOptionalLong(); - } catch (Exception e) { - //no-op expected - } - WebSession ws = WebSession.get(); - if (id != null && ws.isSignedIn()) { - return getRecording(id); - } else { - ws.invalidate(); - if (ws.signIn(_id.toString(), true)) { - return getRecording(getRecordingId()); - } - } - return null; } } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java Sat Aug 20 02:52:45 2016 @@ -23,17 +23,11 @@ import static org.apache.openmeetings.we import static org.apache.openmeetings.web.app.WebSession.getUserId; import org.apache.openmeetings.db.dao.record.RecordingDao; -import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.dto.record.RecordingContainerData; import org.apache.openmeetings.db.entity.file.FileItem; import org.apache.openmeetings.db.entity.record.Recording; -import org.apache.openmeetings.db.entity.user.Group; -import org.apache.openmeetings.db.entity.user.GroupUser; import org.apache.openmeetings.web.common.UserPanel; -import org.apache.openmeetings.web.common.tree.FileItemTree; import org.apache.openmeetings.web.common.tree.FileTreePanel; -import org.apache.openmeetings.web.common.tree.MyRecordingTreeProvider; -import org.apache.openmeetings.web.common.tree.PublicRecordingTreeProvider; import org.apache.wicket.ajax.AjaxRequestTarget; public class RecordingsPanel extends UserPanel { @@ -43,21 +37,10 @@ public class RecordingsPanel extends Use public RecordingsPanel(String id) { super(id); - add(new FileTreePanel("tree") { + add(new FileTreePanel("tree", null) { private static final long serialVersionUID = 1L; @Override - public void defineTrees() { - selectedFile.setObject(new Recording()); - treesView.add(selected = new FileItemTree<Recording>(treesView.newChildId(), this, new MyRecordingTreeProvider())); - treesView.add(new FileItemTree<Recording>(treesView.newChildId(), this, new PublicRecordingTreeProvider(null, null))); - for (GroupUser ou : getBean(UserDao.class).get(getUserId()).getGroupUsers()) { - Group o = ou.getGroup(); - treesView.add(new FileItemTree<Recording>(treesView.newChildId(), this, new PublicRecordingTreeProvider(o.getId(), o.getName()))); - } - } - - @Override public void updateSizes() { RecordingContainerData sizeData = getBean(RecordingDao.class).getContainerData(getUserId()); if (sizeData != null) { @@ -67,15 +50,10 @@ public class RecordingsPanel extends Use } @Override - public void update(AjaxRequestTarget target, FileItem f) { + protected void update(AjaxRequestTarget target, FileItem f) { video.update(target, (Recording)f); info.update(target, (Recording)f); } - - @Override - public void createFolder(String name) { - createRecordingFolder(name); - } }); add(video, info); } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java Sat Aug 20 02:52:45 2016 @@ -18,14 +18,14 @@ */ package org.apache.openmeetings.web.user.record; +import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_AVI; +import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV; import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4; -import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION; -import static org.apache.openmeetings.util.OmFileHelper.getRecording; import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData; -import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists; import static org.apache.openmeetings.web.app.Application.getBean; import static org.apache.openmeetings.web.app.WebSession.getUserId; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -144,7 +144,7 @@ public class VideoInfo extends Panel { } } reConvert.setEnabled(reConvEnabled); - boolean exists = isRecordingExists(r.getAlternateDownload()) || isRecordingExists(r.getHash()); + boolean exists = r.exists() || r.exists(EXTENSION_AVI); downloadBtn.setEnabled(exists); share.setEnabled(exists); if (target != null) { @@ -177,14 +177,14 @@ public class VideoInfo extends Panel { @Override public boolean isEnabled() { Recording r = rm.getObject(); - return r != null && isRecordingExists(r.getHash() + MP4_EXTENSION); + return r != null && r.exists(EXTENSION_MP4); } @Override public void onClick(AjaxRequestTarget target) { - String filename = rm.getObject().getHash() + MP4_EXTENSION; - download.setFileName(filename); - download.setResourceStream(new FileResourceStream(getRecording(filename))); + File f = rm.getObject().getFile(EXTENSION_MP4); + download.setFileName(f.getName()); + download.setResourceStream(new FileResourceStream(f)); download.initiate(target); } }); @@ -195,14 +195,14 @@ public class VideoInfo extends Panel { @Override public boolean isEnabled() { Recording r = rm.getObject(); - return r != null && isRecordingExists(r.getAlternateDownload()); + return r != null && r.exists(EXTENSION_AVI); } @Override public void onClick(AjaxRequestTarget target) { - Recording r = rm.getObject(); - download.setFileName(r.getAlternateDownload()); - download.setResourceStream(new FileResourceStream(getRecording(r.getAlternateDownload()))); + File f = rm.getObject().getFile(EXTENSION_AVI); + download.setFileName(f.getName()); + download.setResourceStream(new FileResourceStream(f)); download.initiate(target); } }); @@ -212,15 +212,15 @@ public class VideoInfo extends Panel { @Override public boolean isEnabled() { - Recording r = rm.getObject(); - return r != null && isRecordingExists(r.getHash()); + Recording r = VideoInfo.this.rm.getObject(); + return r != null && r.exists(EXTENSION_FLV); } @Override public void onClick(AjaxRequestTarget target) { - Recording r = rm.getObject(); - download.setFileName(r.getHash()); - download.setResourceStream(new FileResourceStream(getRecording(r.getHash()))); + File f = rm.getObject().getFile(EXTENSION_FLV); + download.setFileName(f.getName()); + download.setResourceStream(new FileResourceStream(f)); download.initiate(target); } }); Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java Sat Aug 20 02:52:45 2016 @@ -18,12 +18,9 @@ */ package org.apache.openmeetings.web.user.record; -import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording; import static org.apache.openmeetings.util.OmFileHelper.MP4_MIME_TYPE; import org.apache.openmeetings.db.entity.record.Recording; -import org.apache.openmeetings.web.util.Mp4RecordingResourceReference; -import org.apache.openmeetings.web.util.OggRecordingResourceReference; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.media.Source; @@ -61,7 +58,7 @@ public class VideoPlayer extends Panel { } public VideoPlayer update(AjaxRequestTarget target, Recording r) { - boolean videoExists = r != null && getMp4Recording(r.getHash()).exists(); + boolean videoExists = r != null && r.exists(); if (videoExists) { PageParameters pp = new PageParameters().add("id", r.getId()); mp4.setPageParameters(pp); Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java Sat Aug 20 02:52:45 2016 @@ -25,13 +25,14 @@ import org.apache.wicket.markup.head.IHe import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.request.resource.CssResourceReference; import org.apache.wicket.request.resource.JavaScriptResourceReference; +import org.apache.wicket.request.resource.ResourceReference; public class BootstrapFileUploadBehavior extends Behavior { private static final long serialVersionUID = 1L; - private final static JavaScriptResourceReference BOOTSTRAP_FILEUPLOAD_JS_REFERENCE - = new JavaScriptResourceReference(BootstrapFileUploadBehavior.class, "bootstrap-fileupload.js"); - private final static CssResourceReference BOOTSTRAP_FILEUPLOAD_CSS_REFERENCE - = new CssResourceReference(BootstrapFileUploadBehavior.class, "bootstrap-fileupload.css"); + private final static ResourceReference BOOTSTRAP_FILEINPUT_JS_REFERENCE + = new JavaScriptResourceReference(BootstrapFileUploadBehavior.class, "fileinput.js"); + private final static ResourceReference BOOTSTRAP_FILEINPUT_CSS_REFERENCE + = new CssResourceReference(BootstrapFileUploadBehavior.class, "fileinput.css"); public final static BootstrapFileUploadBehavior INSTANCE = new BootstrapFileUploadBehavior(); private BootstrapFileUploadBehavior() { @@ -40,7 +41,7 @@ public class BootstrapFileUploadBehavior @Override public void renderHead(Component component, IHeaderResponse response) { super.renderHead(component, response); - response.render(JavaScriptHeaderItem.forReference(BOOTSTRAP_FILEUPLOAD_JS_REFERENCE)); - response.render(CssHeaderItem.forReference(BOOTSTRAP_FILEUPLOAD_CSS_REFERENCE)); + response.render(JavaScriptHeaderItem.forReference(BOOTSTRAP_FILEINPUT_JS_REFERENCE)); + response.render(CssHeaderItem.forReference(BOOTSTRAP_FILEINPUT_CSS_REFERENCE)); } } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CallbackFunctionHelper.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CallbackFunctionHelper.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CallbackFunctionHelper.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CallbackFunctionHelper.java Sat Aug 20 02:52:45 2016 @@ -26,14 +26,13 @@ public class CallbackFunctionHelper { StringBuilder sb = new StringBuilder(); sb.append("function ").append(name).append("("); boolean first = true; - for (CallbackParameter curExtraParameter : extraParameters) - { - if (curExtraParameter.getFunctionParameterName() != null) - { - if (!first) - sb.append(','); - else + for (CallbackParameter curExtraParameter : extraParameters) { + if (curExtraParameter.getFunctionParameterName() != null) { + if (first) { first = false; + } else { + sb.append(','); + } sb.append(curExtraParameter.getFunctionParameterName()); } } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Sat Aug 20 02:52:45 2016 @@ -243,9 +243,7 @@ <bean id="generatePDF" class="org.apache.openmeetings.core.documents.GeneratePDF" /> <bean id="smsHandler" class="org.apache.openmeetings.core.mail.SMSHandler" /> <bean id="importInitvalues" class="org.apache.openmeetings.installation.ImportInitvalues" /> - <bean id="libraryWmlLoader" class="org.apache.openmeetings.core.documents.LibraryWmlLoader" /> <bean id="generateSWF" class="org.apache.openmeetings.core.converter.GenerateSWF" /> - <bean id="fileUtils" class="org.apache.openmeetings.core.data.file.FileUtils" /> <bean id="ldapLoginManagement" class="org.apache.openmeetings.core.ldap.LdapLoginManagement" /> <bean id="timezoneUtil" class="org.apache.openmeetings.db.util.TimezoneUtil" /> <bean id="whiteboardManagement" class="org.apache.openmeetings.core.data.whiteboard.WhiteboardManager" /> Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/activities.css URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/activities.css?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/activities.css (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/activities.css Sat Aug 20 02:52:45 2016 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -#activitiesPanel { +#activities { position: fixed; z-index: 2000; bottom: 0px; @@ -24,15 +24,24 @@ width: 600px; height: 20px; } -#activitiesPanel .control.block .ui-icon { +#activities .control.block .ui-icon { text-align: center; } -#activitiesPanel .control.block .label { +#activities .control.block .label { display: inline-block; padding-left: 20px; } -#activitiesPanel .area { - height: 310px; +#activities .area { + height: 319px; overflow-y: auto; +} +.activity.item { + position: relative; padding: 5px; -} \ No newline at end of file + margin-bottom: 3px +} +.activity.item .ui-icon { + border-width: 1px; + border-style: solid; + margin-left: 2px; +} Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/room.css URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/room.css?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/room.css (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/room.css Sat Aug 20 02:52:45 2016 @@ -19,11 +19,27 @@ .room.container { width: 100%; } -.room.menu.exit { - padding-left: 20px; +.ui-icon.room.menu.exit { background-image: url(images/exit_button.png); background-repeat: no-repeat; - background-position: 5px 5px; + background-size: 16px 16px; + margin-left: 5px; +} +.ui-icon.status-user { + background-image: url(images/status-user.png); +} +.ui-icon.status-wb { + background-image: url(images/status-wb.png); +} +.ui-icon.status-mod { + background-image: url(images/status-mod.png); +} +.room.menu .ui-menu .ui-menu-item { + padding-left: 5px; + padding-right: 0; +} +.room.menu .top.room.menu.exit { + padding-left: 0; } .room.menu.right { position: absolute; @@ -40,40 +56,67 @@ .room.menu.right .room.name { font-weight: bold; } -.room.menu.right .room.recording { +.room.menu.right .room.name.screen { color: red; } +.room.menu.right .room.demo { +} .room.menu.right .icon { width: 30px; height: 30px; background-repeat: no-repeat; background-position: 5px 5px; float: right; + padding: 0; } .room.menu.right .icon.share { background-image: url(images/monitor_go.png); } -.room.menu.right .icon.ask { - background-image: url(images/user_add.png); -} .room.sidebar.left { min-width: 200px; - width: 20%; + width: 315px; float: left; } .room.wb.area { - width: 80%; float: left; } +.room.wb.area.ui-state-hover { + border: 0; +} +.room.wb.area.ui-state-hover .wb { + visibility: hidden; + height: 1px !important; +} +.room.wb.area .wb-drop-area { + display: none; +} +.room.wb.area.ui-state-hover .wb-drop-area { + background-image: url(images/drop.png); + display: block; + background-repeat: no-repeat; + height: inherit; + background-position: center; +} +.room.sidebar.left .ui-tabs .ui-tabs-panel { + padding: 0; +} +.room.sidebar.left .user.header { + height: 45px; + padding-left: 5px; +} +.room.sidebar.left .user.header .ui-icon { + margin-top: 5px; + margin-left: 5px; + width: 32px; + height: 32px; +} .room.sidebar.left .user.list { - border-right: 1px solid #dddddd; - height: 100%; overflow-y: auto; } .room.sidebar.left .user.list .user { height: 40px; padding-left: 5px; - padding-top: 5px; + padding-top: 5px; } .room.sidebar.left .user.list .user .user.name { line-height: 18px; @@ -84,15 +127,100 @@ position: relative; height: 18px; padding: 0; + visibility: hidden; +} +.room.sidebar.left .user.list .user:hover .user.actions { + visibility: visible; +} +.room.sidebar.left .user.list .user .user.actions .ui-icon { + margin-right: 2px; + margin-top: 0; } -.private-chat.om-icon { +.room.sidebar.left .user.list .user .ui-icon { + background-size: 16px; +} +.audio-activity.ui-icon { + opacity: 0.2; + background-image: url(images/speaking.png); +} +.typing-activity.ui-icon { + display: none; + width: 30px; + background-image: url(images/typing.gif); +} +.typing-activity.ui-icon.typing { + display: inline-block; +} +.private-chat.ui-icon { background-image: url(images/page_edit.png); } +.audio-activity.ui-icon.speaking, .ui-icon.granted { + opacity: 1; +} +.right.moderator.ui-icon, .room.menu.right .icon.ask { + background-image: url(images/user_add.png); +} +.right.moderator.ui-icon.granted { + background-image: url(images/user_delete.png); +} +.right.ui-icon { + opacity: 0.2; +} +.right.wb.ui-icon { + background-image: url(images/pencil_add.png); +} +.right.wb.ui-icon.granted { + background-image: url(images/pencil_delete.png); +} +.right.screen-share.ui-icon { + background-image: url(images/monitor_add.png); +} +.right.screen-share.ui-icon.granted { + background-image: url(images/monitor_delete.png); +} +.right.remote-control.ui-icon { + background-image: url(images/mouse_add.png); +} +.right.remote-control.ui-icon.granted { + background-image: url(images/mouse_delete.png); +} +.right.audio.ui-icon { + opacity: 1; + background-image: url(images/microphone_add.png); +} +.right.audio.ui-icon.granted { + opacity: 0.2; + background-image: url(images/microphone_delete.png); +} +.right.camera.ui-icon { + opacity: 1; + background-image: url(images/webcam_add.png); +} +.right.camera.ui-icon.granted { + opacity: 0.2; + background-image: url(images/webcam_delete.png); +} +.global-mute.ui-icon { + opacity: 0.2; + background-image: url(images/sound.png); +} +.exclsv-audio.ui-icon { + opacity: 0.2; + background-image: url(images/microphone_exclusive.png); +} +.kick.ui-icon { + background-image: url(images/cancel_icon.png); + background-size: 16px; +} +.restart.ui-icon { + background-image: url(images/arrow_refresh_small.png); +} .room.sidebar.left .tabs, .room.sidebar.left .tabs #utab, .room.sidebar.left .tabs #ftab { padding: 0; } .room.sidebar.left .user.list .user.current { font-weight: bold; + background: #00FF00; } .ui-dialog.video, .ui-dialog.video .ui-dialog-titlebar, .ui-dialog.video .video.ui-dialog-content { padding: 0; @@ -102,10 +230,17 @@ max-height: 100px; overflow-y: auto; } -.activity.item { - position: relative; -} -.activity.item .ui-dialog-titlebar-close { - width: 20px; - height: 20px; +.sip .button-row { + text-align: center; + margin: 5px; +} +.sip .button-row input.sip-number { + width: 130px; +} +.sip .button-row #sip-dialer-btn-erase { + margin-left: 5px; +} +.sip .button-row #sip-dialer-btn-erase .ui-button-text { + padding: .1em .7em; + font-weight: bolder; } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css Sat Aug 20 02:52:45 2016 @@ -335,18 +335,15 @@ html, body { background: url(images/folder_add.png); } .recording.om-icon { - padding-left: 18px; background-image: url(images/film.png); } -.broken-recording.om-icon { - padding-left: 18px; +.broken.recording.om-icon { background-image: url(images/film_error.png); } -.processing-recording.om-icon { - padding-left: 18px; +.processing.recording.om-icon { background-image: url(images/film_processing.png); } -.file.om-icon { +.file.om-icon, .recording.om-icon { padding-left: 18px; } .my.file.om-icon { @@ -356,16 +353,28 @@ html, body { background-image: url(images/world_link.png); } .image.file.om-icon { - background-image: url(images/photo.png); + background-image: url(images/picture.png); +} +.broken.image.file.om-icon { + background-image: url(images/picture_error.png); } .chart.file.om-icon { background-image: url(images/chart_pie.png); } +.broken.chart.file.om-icon { + background-image: url(images/chart_pie_error.png); +} .wml.file.om-icon { - background-image: url(images/map.png); + background-image: url(images/layout.png); +} +.broken.wml.file.om-icon { + background-image: url(images/layout_error.png); } .doc.file.om-icon { - background-image: url(images/report.png); + background-image: url(images/page.png); +} +.broken.doc.file.om-icon { + background-image: url(images/page_error.png); } .invite.om-icon { background-image: url(images/connect.png); Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/js/openmeetings_functions.js URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/js/openmeetings_functions.js?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/js/openmeetings_functions.js (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/js/openmeetings_functions.js Sat Aug 20 02:52:45 2016 @@ -56,9 +56,9 @@ function getTimeZoneOffsetMinutes() { break; } } - return std_time_offset; + return std_time_offset; } function getTimeZoneOffset() { - document.getElementById("lzapp").getTimeZoneOffsetCallback(getTimeZoneOffsetMinutes()/60); + document.getElementById("lzapp").getTimeZoneOffsetCallback(getTimeZoneOffsetMinutes()/60); } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java Sat Aug 20 02:52:45 2016 @@ -25,20 +25,16 @@ import org.apache.openmeetings.test.Abst import org.junit.Test; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; public class TestFileParser extends AbstractJUnitDefaults { private static final Logger log = Red5LoggerFactory.getLogger(TestFileParser.class, webAppRootKey); - @Autowired - private LibraryWmlLoader libraryWmlLoader; - @Test public void testLoadWmlFile(){ try { - libraryWmlLoader.loadWmlFile("filename1"); + LibraryWmlLoader.loadWmlFile("filename1"); } catch (Exception err) { Modified: openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java Sat Aug 20 02:52:45 2016 @@ -43,7 +43,6 @@ import javax.ws.rs.core.MediaType; import org.apache.cxf.feature.Features; import org.apache.cxf.jaxrs.ext.multipart.Multipart; import org.apache.openmeetings.core.data.file.FileProcessor; -import org.apache.openmeetings.core.data.file.FileUtils; import org.apache.openmeetings.core.documents.LoadLibraryPresentation; import org.apache.openmeetings.db.dao.file.FileExplorerItemDao; import org.apache.openmeetings.db.dao.server.SessiondataDao; @@ -85,8 +84,6 @@ public class FileWebService { @Autowired private FileExplorerItemDao fileDao; @Autowired - private FileUtils fileUtils; - @Autowired private FileProcessor fileProcessor; /** @@ -255,21 +252,12 @@ public class FileWebService { } } - private long getSize(List<FileExplorerItem> list) { - long size = 0; - for (FileExplorerItem f : list) { - log.debug("FileExplorerItem fList " + f.getName()); - size += fileUtils.getSizeOfDirectoryAndSubs(f); - } - return size; - } - /** * Get a File Explorer Object by a given Room * * @param sid * The SID of the User. This SID must be marked as logged in - * @param id + * @param roomId * Room Id * @return - File Explorer Object by a given Room * @throws ServiceException @@ -291,11 +279,11 @@ public class FileWebService { // Home File List List<FileExplorerItem> fList = fileDao.getByOwner(userId); - fileExplorerObject.setUser(fList, getSize(fList)); + fileExplorerObject.setUser(fList, fileDao.getSize(fList)); // Public File List List<FileExplorerItem> rList = fileDao.getByRoom(roomId); - fileExplorerObject.setRoom(rList, getSize(rList)); + fileExplorerObject.setRoom(rList, fileDao.getSize(rList)); return fileExplorerObject; } else { Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java (original) +++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java Sat Aug 20 02:52:45 2016 @@ -304,13 +304,13 @@ public class Recording extends FileItem File f = null; if (getId() != null && !isDeleted()) { if (ext == null || EXTENSION_MP4.equals(ext)) { - f = getRecording(String.format("%s.%s.%s", recordingFileName, EXTENSION_FLV, EXTENSION_AVI)); + f = getRecording(String.format("%s%s.%s.%s", recordingFileName, id, EXTENSION_FLV, EXTENSION_MP4)); } else if (EXTENSION_FLV.equals(ext)) { - f = getRecording(String.format("%s.%s", recordingFileName, EXTENSION_FLV)); + f = getRecording(String.format("%s%s.%s", recordingFileName, id, EXTENSION_FLV)); } else if (EXTENSION_AVI.equals(ext)) { - f = getRecording(String.format("%s.%s", recordingFileName, EXTENSION_AVI)); + f = getRecording(String.format("%s%s.%s", recordingFileName, id, EXTENSION_AVI)); } else if (EXTENSION_OGG.equals(ext)) { - f = getRecording(String.format("%s.%s.%s", recordingFileName, EXTENSION_FLV, EXTENSION_AVI)); + f = getRecording(String.format("%s%s.%s.%s", recordingFileName, id, EXTENSION_FLV, EXTENSION_OGG)); } } return f; Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css (original) +++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css Sat Aug 20 02:52:45 2016 @@ -643,6 +643,9 @@ form .input { .table .column { display: inline-block; margin-bottom: 5px; + min-height: initial; + float: none; + margin-right: 0; } .table .column.label { width: 20%; Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java (original) +++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java Sat Aug 20 02:52:45 2016 @@ -304,13 +304,13 @@ public class Recording extends FileItem File f = null; if (getId() != null && !isDeleted()) { if (ext == null || EXTENSION_MP4.equals(ext)) { - f = getRecording(String.format("%s.%s.%s", recordingFileName, EXTENSION_FLV, EXTENSION_AVI)); + f = getRecording(String.format("%s%s.%s.%s", recordingFileName, id, EXTENSION_FLV, EXTENSION_MP4)); } else if (EXTENSION_FLV.equals(ext)) { - f = getRecording(String.format("%s.%s", recordingFileName, EXTENSION_FLV)); + f = getRecording(String.format("%s%s.%s", recordingFileName, id, EXTENSION_FLV)); } else if (EXTENSION_AVI.equals(ext)) { - f = getRecording(String.format("%s.%s", recordingFileName, EXTENSION_AVI)); + f = getRecording(String.format("%s%s.%s", recordingFileName, id, EXTENSION_AVI)); } else if (EXTENSION_OGG.equals(ext)) { - f = getRecording(String.format("%s.%s.%s", recordingFileName, EXTENSION_FLV, EXTENSION_AVI)); + f = getRecording(String.format("%s%s.%s.%s", recordingFileName, id, EXTENSION_FLV, EXTENSION_OGG)); } } return f; Modified: openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css?rev=1756981&r1=1756980&r2=1756981&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css Sat Aug 20 02:52:45 2016 @@ -643,6 +643,9 @@ form .input { .table .column { display: inline-block; margin-bottom: 5px; + min-height: initial; + float: none; + margin-right: 0; } .table .column.label { width: 20%;
