You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by gm...@apache.org on 2014/05/26 19:50:40 UTC
svn commit: r1597616 - in /roller/trunk/app/src/main:
java/org/apache/roller/weblogger/ui/struts2/editor/ resources/
webapp/WEB-INF/jsps/editor/ webapp/theme/scripts/
Author: gmazza
Date: Mon May 26 17:50:40 2014
New Revision: 1597616
URL: http://svn.apache.org/r1597616
Log:
ROL-2005 Media File folders are now top-level only; added Select All/None button to allow for selecting/unselecting all files in a folder at once.
Modified:
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java
roller/trunk/app/src/main/resources/ApplicationResources.properties
roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
roller/trunk/app/src/main/webapp/theme/scripts/roller.js
Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java?rev=1597616&r1=1597615&r2=1597616&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java Mon May 26 17:50:40 2014
@@ -38,6 +38,7 @@ import org.apache.roller.weblogger.pojos
import org.apache.roller.weblogger.pojos.MediaFileFilter;
import org.apache.roller.weblogger.ui.struts2.pagers.MediaFilePager;
import org.apache.roller.weblogger.ui.struts2.util.KeyValueObject;
+import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
@@ -76,6 +77,9 @@ public class MediaFileView extends Media
// Path of new directory to be created.
private String newDirectoryPath;
+ // a new directory the user wishes to view
+ private String viewDirectoryId = null;
+
private MediaFileSearchBean bean = new MediaFileSearchBean();
@@ -120,7 +124,7 @@ public class MediaFileView extends Media
}
/**
- * Create a new directory by name under current directory
+ * Create a new directory by name. All folders placed at the root.
*/
public String createNewDirectory() {
boolean dirCreated = false;
@@ -132,7 +136,7 @@ public class MediaFileView extends Media
try {
log.debug("Creating new directory - " + this.newDirectoryName);
MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
- MediaFileDirectory parentDirectory = manager.getMediaFileDirectory(this.directoryId);
+ MediaFileDirectory parentDirectory = manager.getMediaFileRootDirectory(getActionWeblog());
manager.createMediaFileDirectory(parentDirectory, this.newDirectoryName);
// flush changes
WebloggerFactory.getWeblogger().flush();
@@ -223,6 +227,22 @@ public class MediaFileView extends Media
}
/**
+ * View the contents of another Media folder.
+ */
+ public String view() {
+ try {
+ MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
+ if (!StringUtils.isEmpty(viewDirectoryId)) {
+ setDirectoryId(viewDirectoryId);
+ setCurrentDirectory(manager.getMediaFileDirectory(viewDirectoryId));
+ }
+ } catch (WebloggerException ex) {
+ log.error("Error looking up directory", ex);
+ }
+ return execute();
+ }
+
+ /**
* Save a media file.
*
* @return String The result of the action.
@@ -297,6 +317,43 @@ public class MediaFileView extends Media
}
/**
+ * Delete folder
+ */
+ public String deleteFolder() {
+
+ try {
+ MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
+ if (directoryId != null) {
+ log.debug("Deleting media file folder - " + directoryId + " (" + directoryPath + ")");
+ MediaFileDirectory mediaFileDir = manager.getMediaFileDirectory(directoryId);
+ mediaFileDir.getParent().removeChildDirectory(mediaFileDir);
+ manager.removeMediaFileDirectory(mediaFileDir);
+ refreshAllDirectories();
+ WebloggerFactory.getWeblogger().getWeblogManager().saveWeblog(this.getActionWeblog());
+
+ // flush changes
+ WebloggerFactory.getWeblogger().flush();
+ WebloggerFactory.getWeblogger().release();
+ addMessage("mediaFile.deleteFolder.success");
+
+ // notify caches
+ CacheManager.invalidate(getActionWeblog());
+
+ // re-route to default folder
+ mediaFileDir = manager.getMediaFileRootDirectory(getActionWeblog());
+ setDirectoryId(mediaFileDir.getId());
+ setDirectoryPath(mediaFileDir.getPath());
+ } else {
+ log.error("(System error) No directory ID provided for media file folder delete.");
+ }
+ } catch (WebloggerException ex) {
+ log.error("Error deleting folder", ex);
+ }
+ return execute();
+ }
+
+
+ /**
* Include selected media file in gallery
*
*/
@@ -420,4 +477,13 @@ public class MediaFileView extends Media
public void setNewDirectoryPath(String newDirectoryPath) {
this.newDirectoryPath = newDirectoryPath;
}
+
+ public String getViewDirectoryId() {
+ return viewDirectoryId;
+ }
+
+ public void setViewDirectoryId(String viewDirectoryId) {
+ this.viewDirectoryId = viewDirectoryId;
+ }
+
}
Modified: roller/trunk/app/src/main/resources/ApplicationResources.properties
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/ApplicationResources.properties?rev=1597616&r1=1597615&r2=1597616&view=diff
==============================================================================
--- roller/trunk/app/src/main/resources/ApplicationResources.properties (original)
+++ roller/trunk/app/src/main/resources/ApplicationResources.properties Mon May 26 17:50:40 2014
@@ -96,7 +96,7 @@ bookmarksForm.priority=Priority
bookmarksForm.edit=Edit
bookmarksForm.edit.tip=Click to modify this bookmark
bookmarksForm.folder.edit.tip=Click to edit folder
-bookmarksForm.move=Move Selected To\:
+bookmarksForm.move=Move selected to:
bookmarksForm.move.confirm=Move selected bookmarks?
bookmarksForm.name=Name
bookmarksForm.path=Folder
@@ -995,7 +995,7 @@ mediaFileAdd.name=Name
mediaFileAdd.description=Description
mediaFileAdd.tags=Tags (space separated)
mediaFileAdd.copyright=Copyright statement
-mediaFileAdd.directory=Directory
+mediaFileAdd.directory=Folder
mediaFileAdd.includeGallery=Include in Gallery?
mediaFileAdd.upload=Upload
mediaFileAdd.multipleNames=(Multiple names)
@@ -1045,7 +1045,7 @@ mediaFileEdit.name=Name
mediaFileEdit.description=Description
mediaFileEdit.tags=Tags (space separated)
mediaFileEdit.copyright=Copyright statement
-mediaFileEdit.directory=Directory
+mediaFileEdit.directory=Folder
mediaFileEdit.save=Save
mediaFileEdit.cancel=Cancel
mediaFileEdit.fileInfo=File info
@@ -1067,23 +1067,26 @@ mediaFileEdit.includesEnclosure=This web
# -- Media File View
mediaFileView.title=Media Files
-mediaFileView.subtitle=Media Files in weblog {0}
+mediaFileView.subtitle=Media Files in weblog <span>{0}</span>
mediaFileView.rootPageTip=\
This page shows the media files that you have uploaded as well as files \
-copied in when you chose to customize a theme. You can use directories \
+copied in when you chose to customize a theme. You can use folders \
to organize your files, and you do not have to worry about "breaking \
URLs" when you move or rename files.
mediaFileView.dirPageTip=\
-This is a media-file directory. You can return to the main directory \
+This is a media file folder. You can return to the default folder \
by clicking the ''root'' link above.
+mediaFileView.viewFolder=Switch to Folder
+
mediaFileView.tabular=Tabular
mediaFileView.hierarchical=Hierarchical
mediaFileView.sortby=Sort by:
mediaFileView.deleteSelected=Delete selected
-mediaFileView.moveSelected=Move selected
-
+mediaFileView.moveSelected=Move selected to:
+mediaFileView.toggleSelected=Select all/none
+mediaFileView.deleteFolder=Delete folder
mediaFileView.delete=Delete
mediaFileView.createPost=Create Post
mediaFileView.includeInGallery=Include in Gallery
@@ -1109,7 +1112,7 @@ mediaFileView.tags=Tags
mediaFileView.addMediaFile=Add Media File
mediaFileView.actions=Actions
-mediaFileView.addDirectory=Add New Directory
+mediaFileView.addDirectory=Add New Folder
mediaFileView.directoryName=Name:
mediaFileView.create=Create
mediaFileView.search=Search Media Files
@@ -1123,7 +1126,7 @@ mediaFileView.filesOfSize=Files of <b>si
mediaFileView.filesOfType=Files of type <b>{0}</b>
mediaFileView.filesTagged=Files with tags <b>{0}</b>
-mediaFileView.noFiles=No files in this directory.
+mediaFileView.noFiles=No files in this folder.
mediaFileView.path=Path:
mediaFileView.reset=Reset
@@ -1138,12 +1141,14 @@ mediaFileSidebar.search=Search Uploaded
mediaFile.search.title=Search media files
-mediaFile.delete.confirm=Delete selected media files and/or directories?
+mediaFile.delete.confirm=Delete selected media files?
mediaFile.move.confirm=Move selected media files?
mediaFile.directoryCreate.success=New directory successfully created.
mediaFile.includeInGallery.success=Media file(s) successfully included in gallery.
mediaFile.includeInGallery.error=Error including media file {0} in gallery.
mediaFile.delete.success=Media file(s) successfully deleted.
+mediaFile.deleteFolder.success=Media folder successfully deleted.
+mediaFile.deleteFolder.confirm=Delete entire folder including all its media files?
mediaFile.delete.error=Error deleting media file {0}.
mediaFile.delete.errors=Error deleting media files.
mediaFile.move.success=Media file(s) successfully moved.
Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp?rev=1597616&r1=1597615&r2=1597616&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp Mon May 26 17:50:40 2014
@@ -77,7 +77,6 @@ function onMove()
<s:hidden name="folderId" />
<s:if test="!allFolders.isEmpty">
-
<%-- View button --%>
<s:submit type="button" action="bookmarks!view" key="bookmarksForm.viewFolder" />
@@ -85,7 +84,6 @@ function onMove()
<s:select name="viewFolderId" list="allFolders" listKey="id" listValue="name" />
<br /><br />
-
</s:if>
<table class="rollertable">
Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp?rev=1597616&r1=1597615&r2=1597616&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp Mon May 26 17:50:40 2014
@@ -68,11 +68,28 @@
<script type="text/javascript">
+ toggleState = 'Off'
function onSelectDirectory(id) {
window.location = "<s:url action="mediaFileView" />?directoryId=" + id + "&weblog=" + '<s:property value="actionWeblog.handle" />';
}
+ function onToggle() {
+ if (toggleState == 'Off') {
+ toggleState = 'On';
+ toggleFunction(true, 'selectedMediaFiles');
+ $("#deleteButton").attr('disabled',false)
+ $("#moveButton").attr('disabled',false)
+ $("#moveTargetMenu").attr('disabled',false)
+ } else {
+ toggleState = 'Off';
+ toggleFunction(false, 'selectedMediaFiles');
+ $("#deleteButton").attr('disabled',true)
+ $("#moveButton").attr('disabled',true)
+ $("#moveTargetMenu").attr('disabled',true)
+ }
+ }
+
function onDeleteSelected() {
if ( confirm("<s:text name='mediaFile.delete.confirm' />") ) {
document.mediaFileViewForm.action='<s:url action="mediaFileView!deleteSelected" />';
@@ -80,6 +97,13 @@
}
}
+ function onDeleteFolder() {
+ if (confirm("<s:text name='mediaFile.deleteFolder.confirm' />")) {
+ document.bookmarks.action='<s:url action="mediaFileView!deleteFolder" />';
+ document.bookmarks.submit();
+ }
+ }
+
function onMoveSelected() {
if ( confirm("<s:text name='mediaFile.move.confirm' />") ) {
document.mediaFileViewForm.action='<s:url action="mediaFileView!moveSelected" />';
@@ -295,8 +319,7 @@
<input type="hidden" name="mediaFileId" value="" />
<div class="control">
-
- <span style="padding-left:20px">
+ <span style="padding-left:7px">
<s:text name="mediaFileView.sortby" />
<s:select id="sortByMenu" name="sortBy" list="sortOptions" listKey="key"
listValue="value"
@@ -304,18 +327,17 @@
</span>
<span style="float:right">
- <input id="deleteButton" type="button" style="padding-right:20px"
- value='<s:text name="mediaFileView.deleteSelected" />' onclick="onDeleteSelected()" />
+ <s:if test="!allDirectories.isEmpty">
+ <%-- View button --%>
+ <s:submit type="button" action="mediaFileView!view" key="mediaFileView.viewFolder" />
- <input id="moveButton" type="button" style="padding-left:20px"
- value=<s:text name="mediaFileView.moveSelected" /> onclick="onMoveSelected()" />
+ <%-- Folder to View combo-box --%>
+ <s:select name="viewDirectoryId" list="allDirectories" listKey="id" listValue="path" />
- <s:select id="moveTargetMenu" name="selectedDirectory" list="allDirectories" listKey="id" listValue="path" />
+ </s:if>
</span>
-
</div>
-
<%-- ***************************************************************** --%>
<%-- Media file folder contents --%>
@@ -339,32 +361,11 @@
<%-- NOT SEARCH RESULTS --%>
- <s:if test="childDirectories.size() == 0 && childFiles.size() ==0">
+ <s:if test="childFiles.size() ==0">
<p style="text-align: center"><s:text name="mediaFileView.noFiles"/></p>
</s:if>
- <%-- List media directories first --%>
-
- <s:iterator id="directory" value="childDirectories">
- <li class="align-images"
- onmouseover="highlight(this, true)" onmouseout="highlight(this, false)">
- <div class="mediaObject">
- <img border="0" src='<s:url value="/images/folder.png"/>'
- class="dir-image" alt="mediaFolder.png"
- onclick="onSelectDirectory('<s:property value="#directory.id"/>')"/>
- </div>
- <div class="mediaObjectInfo">
- <input type="checkbox"
- name="selectedMediaFileDirectories"
- value="<s:property value="#directory.id"/>"/>
- <inut type="hidden" id="mediadiridentity"
- value="<s:property value='#directory.id'/>">
- <s:property value="#directory.name" />
- </div>
- </li>
- </s:iterator>
-
- <%-- List media files next --%>
+ <%-- List media files --%>
<s:iterator id="mediaFile" value="childFiles">
@@ -475,6 +476,30 @@
<div style="clear:left;"></div>
+ <s:if test="(!pager && childFiles.size() > 0) || (pager && pager.items.size() > 0) || (currentDirectory.name != 'root' && !pager)">
+ <div class="control">
+
+ <span style="padding-left:7px">
+ <s:if test="(!pager && childFiles.size() > 0) || (pager && pager.items.size() > 0)">
+ <input id="toggleButton" type="button"
+ value='<s:text name="mediaFileView.toggleSelected" />' onclick="onToggle()" />
+
+ <input id="deleteButton" type="button"
+ value='<s:text name="mediaFileView.deleteSelected" />' onclick="onDeleteSelected()" />
+
+ <input id="moveButton" type="button"
+ value='<s:text name="mediaFileView.moveSelected" />' onclick="onMoveSelected()" />
+
+ <s:select id="moveTargetMenu" name="selectedDirectory" list="allDirectories" listKey="id" listValue="path" />
+ </s:if>
+
+ <s:if test="currentDirectory.name != 'root' && !pager">
+ <s:submit value="%{getText('mediaFileView.deleteFolder')}" action="mediaFileView!deleteFolder" onclick="onDeleteFolder();return false;"/>
+ </s:if>
+ </span>
+ </div>
+ </s:if>
+
</s:form>
</s:if>
Modified: roller/trunk/app/src/main/webapp/theme/scripts/roller.js
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/theme/scripts/roller.js?rev=1597616&r1=1597615&r2=1597616&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/theme/scripts/roller.js (original)
+++ roller/trunk/app/src/main/webapp/theme/scripts/roller.js Mon May 26 17:50:40 2014
@@ -196,11 +196,7 @@ function toggleFunction(toggle,name) {;
var inputs = document.getElementsByName(name);
for(var i = 0; i < inputs.length ; i++) {
if(inputs[i].type == 'checkbox' && inputs[i].disabled == false) {
- if (inputs[i].checked == true){
- inputs[i].checked = !inputs[i].checked;
- } else{
- inputs[i].checked = toggle;
- }
+ inputs[i].checked = toggle;
}
}
};
\ No newline at end of file