diff --git a/config/alfresco/templates/client/doclist_preview_panel.ftl b/config/alfresco/templates/client/doclist_preview_panel.ftl index 266eef2522..5ef812137d 100644 --- a/config/alfresco/templates/client/doclist_preview_panel.ftl +++ b/config/alfresco/templates/client/doclist_preview_panel.ftl @@ -28,7 +28,7 @@ <#if node.isLocked > Edit Details <#else> - Edit Details + Edit Details diff --git a/config/alfresco/templates/client/myspaces_preview_panel.ftl b/config/alfresco/templates/client/myspaces_preview_panel.ftl index b27eecaa29..2088e520f4 100644 --- a/config/alfresco/templates/client/myspaces_preview_panel.ftl +++ b/config/alfresco/templates/client/myspaces_preview_panel.ftl @@ -43,7 +43,7 @@ <#if node.isLocked > Edit Details <#else> - Edit Details + Edit Details diff --git a/config/alfresco/templates/webscripts/org/alfresco/portlets/doclist.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/portlets/doclist.get.html.ftl index 3b13dbdda7..b4546f84f8 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/portlets/doclist.get.html.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/portlets/doclist.get.html.ftl @@ -50,7 +50,7 @@ PDF Documents Recently Modified - Refresh + Refresh diff --git a/config/alfresco/templates/webscripts/org/alfresco/portlets/doclistpanel.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/portlets/doclistpanel.get.html.ftl index 80096ef73d..1cf8cf530a 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/portlets/doclistpanel.get.html.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/portlets/doclistpanel.get.html.ftl @@ -16,7 +16,7 @@ (filter=3 && d.mimetype="application/pdf") || (filter=4 && (dateCompare(d.properties["cm:modified"],date,weekms) == 1 || dateCompare(d.properties["cm:created"], date, weekms) == 1))> <#assign count=count+1> -
+
diff --git a/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces.get.html.ftl index fc130a3e8e..6f922c47e1 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces.get.html.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/portlets/myspaces.get.html.ftl @@ -2,7 +2,7 @@ - + @@ -86,7 +86,7 @@ My Items Recently Modified - Refresh + Refresh diff --git a/config/alfresco/templates/webscripts/org/alfresco/portlets/myspacespanel.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/portlets/myspacespanel.get.html.ftl index 40ad7f3971..1d313e22bf 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/portlets/myspacespanel.get.html.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/portlets/myspacespanel.get.html.ftl @@ -9,7 +9,7 @@ (args.f="3" && (d.properties.creator == user || d.properties.modifier == user)) || (args.f="4" && (dateCompare(d.properties["cm:modified"],date,weekms) == 1 || dateCompare(d.properties["cm:created"], date, weekms) == 1)))> <#assign count=count+1> -
+
<#if d.isDocument> diff --git a/source/web/jsp/close.jsp b/source/web/jsp/close.jsp index 07d1cff4a9..58a54bd651 100644 --- a/source/web/jsp/close.jsp +++ b/source/web/jsp/close.jsp @@ -1 +1,7 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/web/scripts/ajax/common.js b/source/web/scripts/ajax/common.js index 30e285b349..ea40e0c607 100644 --- a/source/web/scripts/ajax/common.js +++ b/source/web/scripts/ajax/common.js @@ -506,3 +506,39 @@ function uploadCompleteHelper(id, args) upload.path.replace(/.*[\/\\]([^\/\\]+)/, "$1"), args.error != "${UPLOAD_ERROR}" ? args.error : null); } + +var openWindowCallbackFn = null; + +function openWindowCallback(url, callback) +{ + // Store the callback function for later + openWindowCallbackFn = callback; + // Register our "well known" callback function + window.alfrescoCallback = openWindowOnCallback; + // Use a named window so that only one dialog is active at a time + window.open(url, 'alfrescoDialog', 'width=1024,height=768'); +} + +function openWindowOnCallback(fromTimeout) +{ + if (typeof(fromTimeout)=='undefined') + { + window.setTimeout("openWindowOnCallback(true)", 10); + } + else + { + // Clear out the global callback function + window.alfrescoCallback = null; + // Try the callback function + try + { + openWindowCallbackFn(); + } + catch (e) + { + } + openWindowCallbackFn = null; + } +} + + diff --git a/source/web/scripts/ajax/doclist.js b/source/web/scripts/ajax/doclist.js index b424c73120..1ee1b00a1e 100644 --- a/source/web/scripts/ajax/doclist.js +++ b/source/web/scripts/ajax/doclist.js @@ -10,6 +10,7 @@ var MyDocs = { Filter: null, Home: null, Query: null, + FxAll: null, start: function() { @@ -56,10 +57,18 @@ var MyDocs = { // hide the ajax wait panel and show the main doc panel $('docPanel').setStyle('visibility', 'visible'); $('docPanelOverlayAjax').setStyle('visibility', 'hidden'); + + if (MyDocs.postInit) + { + MyDocs.postInit(); + MyDocs.postInit = null; + } }, parseDocPanels: function() { + MyDocs.FxAll = []; + var docs = $$('#docPanel .docRow'); var items = $$('#docPanel .docItem'); var infos = $$('#docPanel .docInfo'); @@ -115,6 +124,14 @@ var MyDocs = { } }); + // Store all the effects so we can globally stop them later + MyDocs.FxAll.push(fxItem); + MyDocs.FxAll.push(fxDetail); + MyDocs.FxAll.push(fxInfo); + MyDocs.FxAll.push(fxIcon); + MyDocs.FxAll.push(fxResource); + MyDocs.FxAll.push(fxImage); + docs.each(function(doc, i) { var item = items[i], @@ -230,6 +247,9 @@ var MyDocs = { animResource = {}, resourceHeight = resource.getStyle('height').toInt(); + // make sure item title is highlighted + doc.addClass('docItemSelected'); + if (!doc.isOpen) { if (!resource.isLoaded) @@ -449,28 +469,6 @@ var MyDocs = { }); }, - /** - * Update the view filter - */ - filter: function(filter) - { - if (this.popupPanel != null) return; - - $$('.docfilterLink').each(function(filterLink, i) - { - if (i == filter) - { - filterLink.addClass("docfilterLinkSelected"); - } - else - { - filterLink.removeClass("docfilterLinkSelected"); - } - }); - MyDocs.Filter = filter; - MyDocs.start(); - }, - /** * Delete a document item */ @@ -478,7 +476,7 @@ var MyDocs = { { if (confirm("Are you sure you want to delete: " + name)) { - $("docPanelOverlay").setStyle('opacity', MyDocs.OVERLAY_OPACITY); + MyDocs.applyModal(); // ajax call to delete item YAHOO.util.Connect.asyncRequest( @@ -489,18 +487,18 @@ var MyDocs = { { if (response.responseText.indexOf("OK:") == 0) { - MyDocs.start(); + MyDocs.refreshList(); } else { alert("Error during delete of item: " + response.responseText); - $("docPanelOverlay").setStyle('opacity', 0); + MyDocs.removeModal(); } }, failure: function(response) { alert("Error during delete of item: " + response.responseText); - $("docPanelOverlay").setStyle('opacity', 0); + MyDocs.removeModal(); } }, "noderef=" + noderef @@ -513,7 +511,7 @@ var MyDocs = { */ checkoutItem: function(name, noderef) { - $("docPanelOverlay").setStyle('opacity', MyDocs.OVERLAY_OPACITY); + MyDocs.applyModal(); // ajax call to delete item YAHOO.util.Connect.asyncRequest( @@ -524,18 +522,18 @@ var MyDocs = { { if (response.responseText.indexOf("OK:") == 0) { - MyDocs.start(); + MyDocs.refreshList(); } else { alert("Error during check out of item: " + response.responseText); - $("docPanelOverlay").setStyle('opacity', 0); + MyDocs.removeModal(); } }, failure: function(response) { alert("Error during check out of item: " + response.responseText); - $("docPanelOverlay").setStyle('opacity', 0); + MyDocs.removeModal(); } }, "noderef=" + noderef @@ -547,7 +545,7 @@ var MyDocs = { */ checkinItem: function(name, noderef) { - $("docPanelOverlay").setStyle('opacity', MyDocs.OVERLAY_OPACITY); + MyDocs.applyModal(); // ajax call to delete item YAHOO.util.Connect.asyncRequest( @@ -558,18 +556,18 @@ var MyDocs = { { if (response.responseText.indexOf("OK:") == 0) { - MyDocs.start(); + MyDocs.refreshList(); } else { alert("Error during check in of item: " + response.responseText); - $("docPanelOverlay").setStyle('opacity', 0); + MyDocs.removeModal(); } }, failure: function(response) { alert("Error during check in of item: " + response.responseText); - $("docPanelOverlay").setStyle('opacity', 0); + MyDocs.removeModal(); } }, "noderef=" + noderef @@ -643,7 +641,7 @@ var MyDocs = { { if (error == null) { - MyDocs.start(); + MyDocs.refreshList(); } else { @@ -669,8 +667,104 @@ var MyDocs = { { this.fxOverlay.start(0); } - } + }, + /** + * Update the view filter + */ + filter: function(filter) + { + if (this.popupPanel != null) return; + + $$('.docfilterLink').each(function(filterLink, i) + { + if (i == filter) + { + filterLink.addClass("docfilterLinkSelected"); + } + else + { + filterLink.removeClass("docfilterLinkSelected"); + } + }); + MyDocs.Filter = filter; + MyDocs.refreshList(true); + }, + + /** + * Refresh the main data list contents within the docPanel container + */ + refreshList: function(reopenActive) + { + // do we want to remember which panel was open? + if (reopenActive) + { + // do we have an open panel? + var openPanel = $E('#docPanel .docItemSelected'); + var openPanelId = null; + if (openPanel != null) + { + openPanelId = openPanel.id; + // Re-open the panel if the id still exists + MyDocs.postInit = function() + { + if ($(openPanelId)) + { + $(openPanelId).fireEvent("click"); + + // scroll the open panel into view + var fxScroll = new Fx.Scroll($('docPanel'), + { + duration: MyDocs.ANIM_LENGTH, + transition: Fx.Transitions.linear + }); + fxScroll.toElement($(openPanelId)); + } + } + } + } + + // empty the main panel div and restart by reloading the panel contents + var docPanel = $('docPanel'); + docPanel.setStyle('visibility', 'hidden'); + // show the ajax wait panel + $('docPanelOverlayAjax').setStyle('visibility', 'visible'); + + // Stop all the animation effects + MyDocs.FxAll.each(function(fx, i) + { + fx.stop(); + }); + + docPanel.empty(); + docPanel.removeEvents('mouseleave'); + MyDocs.start(); + }, + + /** + * Apply a semi-transparent modal overlay skin to the main panel area + */ + applyModal: function() + { + $("docPanelOverlay").setStyle('opacity', MyDocs.OVERLAY_OPACITY); + }, + + /** + * Remove the modal overlay skin from the main panel area + */ + removeModal: function() + { + $("docPanelOverlay").setStyle('opacity', 0); + }, + + /** + * Called when the Edit Details dialog returns + */ + editDetailsCallback: function() + { + // Refresh the inner panel + MyDocs.refreshList(true); + } }; window.addEvent('load', MyDocs.start); \ No newline at end of file diff --git a/source/web/scripts/ajax/myspaces.js b/source/web/scripts/ajax/myspaces.js index 9ec833e1a8..9e08637f07 100644 --- a/source/web/scripts/ajax/myspaces.js +++ b/source/web/scripts/ajax/myspaces.js @@ -13,6 +13,7 @@ var MySpaces = { ServiceContext: null, popupPanel: null, ScriptUrlEncoder: null, + FxAll: null, start: function() { @@ -77,6 +78,12 @@ var MySpaces = { // hide the ajax wait panel and show the main spaces panel $('spacePanelOverlayAjax').setStyle('visibility', 'hidden'); $('spacePanel').setStyle('visibility', 'visible'); + + if (MySpaces.postInit) + { + MySpaces.postInit(); + MySpaces.postInit = null; + } }, /** @@ -85,6 +92,8 @@ var MySpaces = { */ parseSpacePanels: function() { + MySpaces.FxAll = []; + var spaces = $$('#spacePanel .spaceRow'); var items = $$('#spacePanel .spaceItem'); var infos = $$('#spacePanel .spaceInfo'); @@ -94,9 +103,13 @@ var MySpaces = { var imgs64 = $$('#spacePanel .spaceIconImage64'); var resources = $$('#spacePanel .spaceResource'); var fxItem = new Fx.Elements(items, {wait: false, duration: MySpaces.ANIM_LENGTH, transition: Fx.Transitions.linear}); + MySpaces.FxAll.push(fxItem); var fxDetail = new Fx.Elements(details, {wait: false, duration: MySpaces.ANIM_LENGTH, transition: Fx.Transitions.linear}); + MySpaces.FxAll.push(fxDetail); var fxInfo = new Fx.Elements(infos, {wait: false, duration: MySpaces.ANIM_LENGTH, transition: Fx.Transitions.linear}); + MySpaces.FxAll.push(fxInfo); var fxIcon = new Fx.Elements(icons, {wait: false, duration: MySpaces.ANIM_LENGTH, transition: Fx.Transitions.linear}); + MySpaces.FxAll.push(fxIcon); var fxResource = new Fx.Elements(resources, { wait: false, @@ -126,6 +139,7 @@ var MySpaces = { }); } }); + MySpaces.FxAll.push(fxResource); var fxImage = new Fx.Elements(imgs, { wait: false, @@ -139,7 +153,8 @@ var MySpaces = { }); } }); - + MySpaces.FxAll.push(fxImage); + spaces.each(function(space, i) { var item = items[i], @@ -255,6 +270,9 @@ var MySpaces = { animResource = {}, resourceHeight = resource.getStyle('height').toInt(); + // make sure item title is highlighted + space.addClass('spaceItemSelected'); + if (!space.isOpen) { if (!resource.isLoaded) @@ -295,12 +313,12 @@ var MySpaces = { // open up this space's resources // flag this space as open space.isOpen = true; - + // slide and fade in the resources panel animResource[i] = { 'height': [resourceHeight, resource.defHeight + MySpaces.RESOURCE_PANEL_HEIGHT], 'opacity': [resource.getStyle('opacity'), 1]}; - + // close other open space and toggle this one if it's already open spaces.each(function(otherSpace, j) { @@ -836,19 +854,54 @@ var MySpaces = { } }); MySpaces.Filter = filter; - MySpaces.refreshList(); + MySpaces.refreshList(true); }, /** * Refresh the main data list contents within the spacePanel container */ - refreshList: function() + refreshList: function(reopenActive) { + // do we want to remember which panel was open? + if (reopenActive) + { + // do we have an open panel? + var openPanel = $E('#spacePanel .spaceItemSelected'); + var openPanelId = null; + if (openPanel != null) + { + openPanelId = openPanel.id; + // Re-open the panel if the id still exists + MySpaces.postInit = function() + { + if ($(openPanelId)) + { + $(openPanelId).fireEvent("click"); + + // scroll the open panel into view + var fxScroll = new Fx.Scroll($('spacePanel'), + { + duration: MySpaces.ANIM_LENGTH, + transition: Fx.Transitions.linear + }); + fxScroll.toElement($(openPanelId)); + } + } + } + } + // empty the main panel div and restart by reloading the panel contents var spacePanel = $('spacePanel'); spacePanel.setStyle('visibility', 'hidden'); // show the ajax wait panel $('spacePanelOverlayAjax').setStyle('visibility', 'visible'); + + // Stop all the animation effects + MySpaces.FxAll.each(function(fx, i) + { + fx.stop(); + }); + spacePanel.empty(); spacePanel.removeEvents('mouseleave'); MySpaces.start(); @@ -870,6 +923,15 @@ var MySpaces = { $("spacePanelOverlay").setStyle('opacity', 0); }, + /** + * Called when the Edit Details dialog returns + */ + editDetailsCallback: function() + { + // The edit details dialog window has closed + MySpaces.refreshList(true); + }, + /** * Display a message bubble of helpful info to the user. Calling this function in quick * succession will cause previous message to be lost as the new ones are displayed.