Author: snoopdave Date: Sun Sep 20 17:34:48 2009 New Revision: 817058 URL: http://svn.apache.org/viewvc?rev=817058&view=rev Log: Merged the media file view and search pages into one page with a search form in the sidebar, just like our existing entries page.
https://issues.apache.org/jira/browse/ROL-1830 Also did a lot of I18N work and made some small UI improvements in layout, labels, etc. Removed: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileSearch.java roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSearch.jsp Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileSearchBean.java roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileSearchBean.java URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileSearchBean.java?rev=817058&r1=817057&r2=817058&view=diff ============================================================================== --- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileSearchBean.java (original) +++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileSearchBean.java Sun Sep 20 17:34:48 2009 @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.ResourceBundle; import org.apache.commons.lang.StringUtils; import org.apache.roller.weblogger.pojos.MediaFileFilter; import org.apache.roller.weblogger.pojos.MediaFileType; @@ -30,22 +31,32 @@ * Bean for holding media file search criteria. */ public class MediaFileSearchBean { + private transient ResourceBundle bundle = + ResourceBundle.getBundle("ApplicationResources"); public static int PAGE_SIZE = 10; + // Media file name as search criteria String name; + // Media file type as search criteria String type; + // Type of size filter as search criteria - int sizeFilterType; + String sizeFilterType; + // Size of file as search criteria long size; + // Size unit - int sizeUnit; + String sizeUnit; + // Tags as search criteria String tags; + // Page number of results int pageNum = 0; + // Sort option for search results int sortOption; @@ -61,18 +72,26 @@ return type; } + public String getTypeLabel() { + return this.bundle.getString(type); + } + public void setType(String type) { this.type = type; } - public int getSizeFilterType() { + public String getSizeFilterType() { return sizeFilterType; } - public void setSizeFilterType(int sizeFilterType) { + public void setSizeFilterType(String sizeFilterType) { this.sizeFilterType = sizeFilterType; } + public String getSizeFilterTypeLabel() { + return this.bundle.getString(sizeFilterType); + } + public long getSize() { return size; } @@ -81,11 +100,15 @@ this.size = size; } - public int getSizeUnit() { + public String getSizeUnit() { return sizeUnit; } - public void setSizeUnit(int sizeUnit) { + public String getSizeUnitLabel() { + return this.bundle.getString(sizeUnit); + } + + public void setSizeUnit(String sizeUnit) { this.sizeUnit = sizeUnit; } @@ -122,52 +145,39 @@ if (!StringUtils.isEmpty(this.type)) { MediaFileType filterType = null; - if ("Audio".equals(this.type)) { + if ("mediaFileView.audio".equals(this.type)) { filterType = MediaFileType.AUDIO; - } else if ("Video".equals(this.type)) { + } else if ("mediaFileView.video".equals(this.type)) { filterType = MediaFileType.VIDEO; - } else if ("Image".equals(this.type)) { + } else if ("mediaFileView.image".equals(this.type)) { filterType = MediaFileType.IMAGE; - } else if ("Others".equals(this.type)) { + } else if ("mediaFileView.others".equals(this.type)) { filterType = MediaFileType.OTHERS; - } + } dataHolder.setType(filterType); } if (this.size > 0) { - SizeFilterType type; - switch (this.sizeFilterType) { - case 0: - type = SizeFilterType.GT; - break; - case 1: - type = SizeFilterType.GTE; - break; - case 2: - type = SizeFilterType.EQ; - break; - case 3: - type = SizeFilterType.LTE; - break; - case 4: - type = SizeFilterType.LT; - break; - default: - type = null; + SizeFilterType sftype = SizeFilterType.EQ; + if ("mediaFileView.gt".equals(this.sizeFilterType)) { + sftype = SizeFilterType.GT; + } else if ("mediaFileView.ge".equals(this.sizeFilterType)) { + sftype = SizeFilterType.GTE; + } else if ("mediaFileView.eq".equals(this.sizeFilterType)) { + sftype = SizeFilterType.EQ; + } else if ("mediaFileView.le".equals(this.sizeFilterType)) { + sftype = SizeFilterType.LTE; + } else if ("mediaFileView.lt".equals(this.sizeFilterType)) { + sftype = SizeFilterType.LT; } - dataHolder.setSizeFilterType(type); + dataHolder.setSizeFilterType(sftype); - long filterSize; - switch (this.sizeUnit) { - case 1: - filterSize = this.size * 1024; - break; - case 2: + long filterSize = this.size ; + if ("mediaFileView.kb".equals(this.sizeUnit)) { + filterSize = this.size * 1024; + } else if ("mediaFileView.mb".equals(this.sizeUnit)) { filterSize = this.size * 1024 * 1024; - break; - default: - filterSize = this.size; } dataHolder.setSize(filterSize); } @@ -181,10 +191,9 @@ } dataHolder.setStartIndex(pageNum * PAGE_SIZE); - /** - * Set length to fetch to one more than what is required. - * This would help us determine whether there are more pages - */ + + // set length to fetch to one more than what is required. + // this would help us determine whether there are more pages dataHolder.setLength(PAGE_SIZE + 1); MediaFileOrder order; Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java?rev=817058&r1=817057&r2=817058&view=diff ============================================================================== --- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java (original) +++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java Sun Sep 20 17:34:48 2009 @@ -35,6 +35,8 @@ import org.apache.roller.weblogger.pojos.MediaFileDirectoryComparator; import org.apache.roller.weblogger.pojos.MediaFileComparator.MediaFileComparatorType; import org.apache.roller.weblogger.pojos.MediaFileDirectoryComparator.DirectoryComparatorType; +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.struts2.interceptor.validation.SkipValidation; @@ -45,28 +47,69 @@ public class MediaFileView extends MediaFileBase { private static Log log = LogFactory.getLog(MediaFileView.class); - // Drop-down values for sorting media files. - private static final List<KeyValueObject> SORT_OPTIONS; - static { - SORT_OPTIONS = Arrays.asList( - new KeyValueObject("", ""), - new KeyValueObject("name", "Name"), - new KeyValueObject("date_uploaded", "Date Uploaded"), - new KeyValueObject("type", "Type")); - } private String directoryId; private String directoryPath; private String sortBy; private String newDirectoryName; - private List<MediaFile> childFiles; - private MediaFileDirectory currentDirectory; + + private List<MediaFile> childFiles; + private MediaFileDirectory currentDirectory; private List<MediaFileDirectory> childDirectories; + + + // Search criteria - drop-down for file type + private static List<KeyValueObject> FILE_TYPES = null; + + // Search criteria - drop-down for size filter + private static List<KeyValueObject> SIZE_FILTER_TYPES = null; + + // Search criteria - drop-down for size unit + private static List<KeyValueObject> SIZE_UNITS = null; + + // Sort options for search results. + private static List<KeyValueObject> SORT_OPTIONS = null; + + // Pager for displaying search results. + private MediaFilePager pager; + + // Path of new directory to be created. + private String newDirectoryPath; + + private MediaFileSearchBean bean = new MediaFileSearchBean(); + public MediaFileView() { this.actionName = "mediaFileView"; this.desiredMenu = "editor"; this.pageTitle = "mediaFileView.title"; + + if (SIZE_FILTER_TYPES == null) { + + SIZE_FILTER_TYPES = Arrays.asList( + new KeyValueObject("mediaFileView.gt", getText("mediaFileView.gt")), + new KeyValueObject("mediaFileView.ge", getText("mediaFileView.ge")), + new KeyValueObject("mediaFileView.eq", getText("mediaFileView.eq")), + new KeyValueObject("mediaFileView.le", getText("mediaFileView.le")), + new KeyValueObject("mediaFileView.lt", getText("mediaFileView.lt"))); + + FILE_TYPES = Arrays.asList( + new KeyValueObject("mediaFileView.any", getText("mediaFileView.any")), + new KeyValueObject("mediaFileView.others", getText("mediaFileView.others")), + new KeyValueObject("mediaFileView.image", getText("mediaFileView.image")), + new KeyValueObject("mediaFileView.video", getText("mediaFileView.video")), + new KeyValueObject("mediaFileView.audio", getText("mediaFileView.audio"))); + + SIZE_UNITS = Arrays.asList( + new KeyValueObject("mediaFileView.bytes", getText("mediaFileView.bytes")), + new KeyValueObject("mediaFileView.kb", getText("mediaFileView.kb")), + new KeyValueObject("mediaFileView.mb", getText("mediaFileView.mb"))); + + SORT_OPTIONS = Arrays.asList( + new KeyValueObject("mediaFileView.name", getText("mediaFileView.name")), + new KeyValueObject("mediaFileView.date", getText("mediaFileView.date")), + new KeyValueObject("mediaFileView.type", getText("mediaFileView.type"))); + } } /** @@ -177,6 +220,42 @@ } /** + * Save a media file. + * + * @return String The result of the action. + */ + public String search() { + + boolean valSuccess = myValidate(); + + if (valSuccess) { + MediaFileFilter filter = new MediaFileFilter(); + bean.copyTo(filter); + MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager(); + try { + List<MediaFile> rawResults = manager.searchMediaFiles(getActionWeblog(), filter); + boolean hasMore = false; + List<MediaFile> results = new ArrayList<MediaFile>(); + results.addAll(rawResults); + if (results.size() > MediaFileSearchBean.PAGE_SIZE) { + results.remove(results.size() - 1); + hasMore = true; + } + + this.pager = new MediaFilePager(bean.getPageNum(), results, hasMore); + + } catch (Exception e) { + log.error("Error applying search criteria", e); + // TODO: i18n + addError("Error applying search criteria"); + } + + } + + return SUCCESS; + } + + /** * Returns the hierarchy of the current directory. This is useful in * displaying path information as breadcrumb. */ @@ -232,9 +311,6 @@ return execute(); } - public void myValidate() { - } - public String getDirectoryId() { return directoryId; } @@ -291,7 +367,54 @@ this.sortBy = sortBy; } + /** + * Validates search input + */ + public boolean myValidate() { + if (StringUtils.isEmpty(bean.getName()) && StringUtils.isEmpty(bean.getTags()) && StringUtils.isEmpty(bean.getType()) && bean.getSize() == 0) { + addError("MediaFile.error.search.empty"); + return false; + } + return true; + } + + public MediaFileSearchBean getBean() { + return bean; + } + + public void setBean(MediaFileSearchBean b) { + this.bean = b; + } + + public List<KeyValueObject> getFileTypes() { + return FILE_TYPES; + } + + public List<KeyValueObject> getSizeFilterTypes() { + return SIZE_FILTER_TYPES; + } + + public List<KeyValueObject> getSizeUnits() { + return SIZE_UNITS; + } + public List<KeyValueObject> getSortOptions() { return SORT_OPTIONS; } + + public MediaFilePager getPager() { + return pager; + } + + public void setPager(MediaFilePager pager) { + this.pager = pager; + } + + public String getNewDirectoryPath() { + return newDirectoryPath; + } + + public void setNewDirectoryPath(String newDirectoryPath) { + this.newDirectoryPath = newDirectoryPath; + } } Modified: roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties?rev=817058&r1=817057&r2=817058&view=diff ============================================================================== --- roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties (original) +++ roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties Sun Sep 20 17:34:48 2009 @@ -977,7 +977,7 @@ mediaFileEdit.directory=Place file under mediaFileEdit.includeGallery=Include in Gallery? mediaFileEdit.save=Save -mediaFileEdit.save=Cancel +mediaFileEdit.cancel=Cancel # -- Media File View @@ -1004,6 +1004,44 @@ mediaFileView.createPost=Create Post mediaFileView.includeInGallery=Include in Gallery +mediaFileView.gt=> +mediaFileView.ge=>\= +mediaFileView.eq=\= +mediaFileView.le=<\= +mediaFileView.lt=< +mediaFileView.any=Any +mediaFileView.image=Image +mediaFileView.video=Video +mediaFileView.audio=Audio +mediaFileView.others=Others +mediaFileView.kb=KB +mediaFileView.mb=MB +mediaFileView.bytes=Bytes +mediaFileView.name=Name +mediaFileView.date=Date +mediaFileView.type=Type +mediaFileView.size=Size +mediaFileView.tags=Tags +mediaFileView.addMediaFile=Add Media File +mediaFileView.actions=Actions +mediaFileView.newDirName=New Directory Name + +mediaFileView.searchTitle=Search Results +mediaFileView.matchingResults=Found <b>{0}</b> matching results. +mediaFileView.noResults=No matching results found. Try widening your search. +mediaFileView.searchInfo=You searched for all media files matching the following criteria: +mediaFileView.filesNamed=Files named like <b>{0}</b> +mediaFileView.filesOfSize=Files of <b>size {0} {1} {2}</b> +mediaFileView.filesOfType=Files of type <b>{0}</b> +mediaFileView.filesTagged=Files with tags <b>{0}</b> + +mediaFileView.noFiles=No files in this directory. + +mediaFileView.path=Path: +mediaFileView.search=Search +mediaFileView.reset=Reset + + #--- Media File Sidebar mediaFileSidebar.actions=Actions Modified: roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp?rev=817058&r1=817057&r2=817058&view=diff ============================================================================== --- roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp (original) +++ roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp Sun Sep 20 17:34:48 2009 @@ -23,42 +23,122 @@ <div class="sidebarInner"> <b><s:text name="mediaFileSidebar.actions" /></b> - - <s:url id="mediaFileAddURL" action="mediaFileAdd"> - <s:param name="weblog" value="%{actionWeblog.handle}" /> - </s:url> - - <s:url id="mediaFileSearchURL" action="mediaFileSearch"> - <s:param name="weblog" value="%{actionWeblog.handle}" /> - </s:url> + <br /> + <br /> - <s:url id="mediaFileViewURL" action="mediaFileView"> + <s:url id="mediaFileAddURL" action="mediaFileAdd"> <s:param name="weblog" value="%{actionWeblog.handle}" /> </s:url> - - <hr size="1" noshade="noshade" /> - - <a href='<s:property value="%{mediaFileViewURL}" />' - <s:if test="actionName.equals('mediaFileView')">style='font-weight:bold;'</s:if> > - <s:text name="mediaFileSidebar.view" /></a> - - <hr size="1" noshade="noshade" /> - <a href='<s:property value="%{mediaFileAddURL}" />' <s:if test="actionName.equals('mediaFileAdd')">style='font-weight:bold;'</s:if> > <s:text name="mediaFileSidebar.add" /></a> <hr size="1" noshade="noshade" /> - - <a href='<s:property value="%{mediaFileSearchURL}" />' - <s:if test="actionName.equals('mediaFileSearch')">style='font-weight:bold;'</s:if> > - <s:text name="mediaFileSidebar.search" /></a> - - <hr size="1" noshade="noshade" /> <br /> <br /> + + <s:form id="mediaFileSearchForm" name="mediaFileSearchForm" + action="mediaFileView!search" onsubmit="editorCleanup()"> + <s:hidden name="weblog" /> + + <input type="hidden" name="mediaFileId" value="" /> + <table class="mediaFileSearchTable" cellpadding="0" cellspacing="3" width="100%"> + + <tr> + <td> + <label for="name"><s:text name="mediaFileView.name" /></label> + </td> + <td> + <s:textfield id="beanName" name="bean.name" size="20" maxlength="255" /> + </td> + </tr> + + <tr> + <td> + <label for="type"><s:text name="mediaFileView.type" /></label> + </td> + <td> + <s:select id="beanType" name="bean.type" + list="fileTypes" listKey="key" listValue="value" /> + </td> + </tr> + + <tr> + <td> + <label for="size"><s:text name="mediaFileView.size" /></label> + </td> + <td width="80%"> + <s:select name="bean.sizeFilterType" + list="sizeFilterTypes" listKey="key" listValue="value" /> + <s:textfield id="beanSize" name="bean.size" + size="3" maxlength="10" /> + <s:select name="bean.sizeUnit" + list="sizeUnits" listKey="key" listValue="value" /> + </td> + </tr> + + <tr> + <td width="10%"> + <label for="tags"><s:text name="mediaFileView.tags" /></label> + </td> + <td> + <s:textfield id="beanTags" name="bean.tags" + size="20" maxlength="50" /> + </td> + </tr> + + <tr> + <td> + <input id="searchButton" style="margin:5px 0px;" type="submit" + name="search" value='<s:text name="mediaFileView.search" />' /> + </td> + <td> + <s:if test="pager"> + <input id="resetButton" style="margin:5px 0px;" type="button" + name="reset" value='<s:text name="mediaFileView.reset" />' /> + </s:if> + + </td> + <td> </td> + <td> </td> + </tr> + </table> + + </s:form> + </div> </div> </div> </div> + + + +<script type="text/javascript"> + +function maintainSearchButtonState(e) { + if ( jQuery.trim($("#beanName").get(0).value).length == 0 + && jQuery.trim($("#beanTags").get(0).value).length == 0 + && (jQuery.trim($("#beanSize").get(0).value).length == 0 || $("#beanSize").get(0).value == 0) + && ($("#beanType").get(0).value.length == 0 || $("#beanType").get(0).value == "mediaFileView.any")) { + $("#searchButton").attr("disabled", true); + } else { + $("#searchButton").attr("disabled", false); + } +} + +$("#searchButton").ready(function () { + + maintainSearchButtonState(); + $("input").bind("keyup", maintainSearchButtonState); + $("select").bind("change", maintainSearchButtonState); + + $("#resetButton").bind("click", function() { + <s:url id="mediaFileViewURL" action="mediaFileView"> + <s:param name="weblog" value="%{actionWeblog.handle}" /> + </s:url> + window.location = "<s:property value="%{mediaFileViewURL}" />"; + }); +}); + +</script> Modified: roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp?rev=817058&r1=817057&r2=817058&view=diff ============================================================================== --- roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp (original) +++ roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp Sun Sep 20 17:34:48 2009 @@ -24,6 +24,8 @@ <script type="text/javascript" src="<s:url value='/roller-ui/scripts/yui/container_core-min.js'/>"></script> <script type="text/javascript" src="<s:url value='/roller-ui/scripts/yui/menu-min.js'/>"></script> +<script type="text/javascript" src="<s:url value="/roller-ui/scripts/jquery-1.3.1.min.js" />"></script> + <style> body { @@ -58,6 +60,9 @@ .highlight { border: 1px solid #aaa; } + #myMenu { + margin-left: 0; + } </style> @@ -266,7 +271,6 @@ <s:if test='currentDirectory.path.equals("/")'> - <%-- show title and page help tip for Root level --%> <p class="subtitle"> <s:text name="mediaFileView.subtitle" > <s:param value="weblog" /> @@ -278,11 +282,68 @@ </p> </s:if> + +<s:elseif test='pager'> + + <p class="subtitle"> + <s:text name="mediaFileView.searchTitle" /> + </p> + <p class="pagetip"> + + <%-- display summary of the search results and terms --%> + + <s:if test="pager.items.size() > 0"> + <s:text name="mediaFileView.matchingResults"> + <s:param value="pager.items.size()" /> + </s:text> + </s:if> + <s:else> + <s:text name="mediaFileView.noResults" /> + </s:else> + <s:text name="mediaFileView.searchInfo" /> + + <ul> + <s:if test="!bean.name.isEmpty()"> + <li> + <s:text name="mediaFileView.filesNamed"> + <s:param value="bean.name" /> + </s:text> + </li> + </s:if> + <s:if test="bean.size > 0"> + <li> + <s:text name="mediaFileView.filesOfSize"> + <s:param value='bean.sizeFilterTypeLabel' /> + <s:param value='bean.size' /> + <s:param value='bean.sizeUnitLabel' /> + </s:text> + </li> + </s:if> + <s:if test="!bean.type.isEmpty()"> + <li> + <s:text name="mediaFileView.filesOfType"> + <s:param value='bean.typeLabel' /> + </s:text> + </li> + </s:if> + <s:if test="!bean.tags.isEmpty()"> + <li> + <s:text name="mediaFileView.filesTagged"> + <s:param value="bean.tags" /> + </s:text> + </li> + </s:if> + </ul> + + </p> + <br /> + +</s:elseif> + <s:else> - <%-- show title and page help tip for sub-directory levels --%> <p class="subtitle"> - Path: / + <s:text name="mediaFileView.path"/> / <s:iterator id="directory" value="currentDirectoryHierarchy"> <s:url id="getDirectoryByPathUrl" action="mediaFileView"> <s:param name="directoryPath" value="#directory.key" /> @@ -298,148 +359,226 @@ </s:else> +<s:if test="childFiles || childDirectories || (pager && pager.items.size() > 0)"> + <s:form id="mediaFileViewForm" name="mediaFileViewForm" action="mediaFileView" onsubmit="editorCleanup()"> + + <%-- <s:url id="mediaFileHierarchicalViewURL" action="mediaFileHierarchicalView"> <s:param name="weblog" value="%{actionWeblog.handle}" /> </s:url> <p><span style="font-weight:bold"><s:text name="mediaFileView.tabular" /></span> | <s:a href="%{mediaFileHierarchicalViewURL}"><s:text name="mediaFileView.hierarchy" /></s:a></p> + --%> + <div class="control"> <span style="padding-left:20px"><s:text name="mediaFileView.sortby" /></span> <s:select name="sortBy" list="sortOptions" listKey="key" listValue="value" onchange="document.mediaFileViewForm.submit();" /> - </span> -</div> - -<s:hidden name="weblog" /> -<s:hidden name="directoryId" /> -<input type="hidden" name="mediaFileId" value="" /> + </span> + </div> + <s:hidden name="weblog" /> + <s:hidden name="directoryId" /> + <input type="hidden" name="mediaFileId" value="" /> -<%-- ********************************************************************* --%> + <%-- ***************************************************************** --%> -<%-- Media file folder contents --%> + <%-- Media file folder contents --%> -<script type="text/javascript"> -function highlight(el, flag) { - if (flag) { - YAHOO.util.Dom.addClass(el, "highlight"); - } else { - YAHOO.util.Dom.removeClass(el, "highlight"); + <script type="text/javascript"> + function highlight(el, flag) { + if (flag) { + YAHOO.util.Dom.addClass(el, "highlight"); + } else { + YAHOO.util.Dom.removeClass(el, "highlight"); + } } -} -</script> + </script> -<div width="720px" height="500px"> - <ul id = "myMenu"> + <div width="720px" height="500px"> + <ul id = "myMenu"> - <%-- ------------------------------------------------------------- --%> + <s:if test="!pager"> - <%-- List media directories first --%> + <%-- NOT SEARCH RESULTS --%> - <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"> - <label><s:property value="#directory.name" /></label> - </div> - </li> - </s:iterator> + <s:if test="childDirectories.size() == 0 && childFiles.size() ==0"> + <p style="text-align: center"><s:text name="mediaFileView.noFiles"/></p> + </s:if> + <%-- --------------------------------------------------------- --%> - <%-- ------------------------------------------------------------- --%> + <%-- List media directories first --%> - <%-- List media files next --%> + <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"> + <label><s:property value="#directory.name" /></label> + </div> + </li> + </s:iterator> + + <%-- --------------------------------------------------------- --%> - <s:iterator id="mediaFile" value="childFiles"> + <%-- List media files next --%> - <li class="align-images" - onmouseover="highlight(this, true)" onmouseout="highlight(this, false)"> + <s:iterator id="mediaFile" value="childFiles"> - <div class="mediaObject" - onclick="onClickEdit('<s:property value="#mediaFile.id"/>')" > - - <s:if test="#mediaFile.imageFile"> - <s:url id="mediaFileURL" - value="/%{#mediaFile.weblog.handle}/mediaresource/%{#mediaFile.id}?t=true"></s:url> - <img border="0" src='<s:property value="%{mediaFileURL}" />' - width='<s:property value="#mediaFile.thumbnailWidth"/>' - height='<s:property value="#mediaFile.thumbnailHeight"/>' /> - </s:if> - - <s:else> - <s:url id="mediaFileURL" value="/images/page.png"></s:url> - <img border="0" src='<s:property value="%{mediaFileURL}" />' - style="padding:40px 50px;" /> - </s:else> - - </div> - - <div class="mediaObjectInfo"> - - <label> - <a class="contextMenu" href="#"> - <img border="0" - src='<s:url value="/images/control_play.png"/>' alt="[v]" /> - </a> - <str:truncateNicely upper="50"> - <s:property value="#mediaFile.name" /> - </str:truncateNicely> - <input type="checkbox" style="float:right" - name="selectedMediaFiles" - value="<s:property value="#mediaFile.id"/>"/> - <inut type="hidden" id="mediafileidentity" - value="<s:property value='#mediaFile.id'/>"> - </label> + <li class="align-images" + onmouseover="highlight(this, true)" onmouseout="highlight(this, false)"> + <div class="mediaObject" + onclick="onClickEdit('<s:property value="#mediaFile.id"/>')" > - </div> + <s:if test="#mediaFile.imageFile"> + <s:url id="mediaFileURL" + value="/%{#mediaFile.weblog.handle}/mediaresource/%{#mediaFile.id}?t=true"></s:url> + <img border="0" src='<s:property value="%{mediaFileURL}" />' + width='<s:property value="#mediaFile.thumbnailWidth"/>' + height='<s:property value="#mediaFile.thumbnailHeight"/>' /> + </s:if> - </li> - </s:iterator> + <s:else> + <s:url id="mediaFileURL" value="/images/page.png"></s:url> + <img border="0" src='<s:property value="%{mediaFileURL}" />' + style="padding:40px 50px;" /> + </s:else> - </ul> -</div> + </div> + <div class="mediaObjectInfo"> -<%-- ********************************************************************* --%> + <label> + <a class="contextMenu" href="#"> + <img border="0" + src='<s:url value="/images/control_play.png"/>' alt="[v]" /> + </a> + <str:truncateNicely upper="50"> + <s:property value="#mediaFile.name" /> + </str:truncateNicely> + <input type="checkbox" style="float:right" + name="selectedMediaFiles" + value="<s:property value="#mediaFile.id"/>"/> + <inut type="hidden" id="mediafileidentity" + value="<s:property value='#mediaFile.id'/>"> + </label> -<%-- Create new folder --%> -<div style="margin-left:320px;clear:left;"> - New Directory Name: - <input style="margin-top:5px;margin-bottom:5px;" type="text" - name="newDirectoryName" size="30" /> - <input type="button" value='<s:text name="mediaFileView.create" />' onclick="onCreateDirectory()" /> -</div> -<div id="overlay_img" style="visibility:hidden"> -</div> + </div> + </li> -<%-- ********************************************************************* --%> + </s:iterator> -<%-- Create new folder --%> -<br/> -<div class="control"> - <input type="button" style="padding-left:20px" - value='<s:text name="mediaFileView.deleteSelected" />' onclick="onDeleteSelected()" /> - <input type="button" style="padding-left:20px" - value=<s:text name="mediaFileView.moveSelected" /> onclick="onMoveSelected()" /> - <span style="padding-left:20px"> - <s:select name="selectedDirectory" list="allDirectories" listKey="id" listValue="path" /> - </span> -</div> + </s:if> + + <s:else> + + <%-- SEARCH RESULTS --%> + + <s:iterator id="mediaFile" value="pager.items"> + + <li class="align-images" + onmouseover="highlight(this, true)" onmouseout="highlight(this, false)"> + + <div class="mediaObject" + onclick="onClickEdit('<s:property value="#mediaFile.id"/>')" > + + <s:if test="#mediaFile.imageFile"> + <s:url id="mediaFileURL" + value="/%{#mediaFile.weblog.handle}/mediaresource/%{#mediaFile.id}?t=true"></s:url> + <img border="0" src='<s:property value="%{mediaFileURL}" />' + width='<s:property value="#mediaFile.thumbnailWidth"/>' + height='<s:property value="#mediaFile.thumbnailHeight"/>' /> + </s:if> + + <s:else> + <s:url id="mediaFileURL" value="/images/page.png"></s:url> + <img border="0" src='<s:property value="%{mediaFileURL}" />' + style="padding:40px 50px;" /> + </s:else> + + </div> + + <div class="mediaObjectInfo"> + + <label> + <a class="contextMenu" href="#"> + <img border="0" + src='<s:url value="/images/control_play.png"/>' alt="[v]" /> + </a> + <str:truncateNicely upper="50"> + <s:property value="#mediaFile.name" /> + </str:truncateNicely> + <input type="checkbox" style="float:right" + name="selectedMediaFiles" + value="<s:property value="#mediaFile.id"/>"/> + <inut type="hidden" id="mediafileidentity" + value="<s:property value='#mediaFile.id'/>"> + </label> + + + </div> + + </li + + </s:iterator> + + </s:else> + + </ul> + </div> + + + <%-- ***************************************************************** --%> + + <div style="clear:left;"></div> + + <div id="overlay_img" style="visibility:hidden"> + </div> + + + <%-- ***************************************************************** --%> + + <%-- Delete and move controls --%> + + <br/> + <div class="control"> + <input type="button" style="padding-left:20px" + value='<s:text name="mediaFileView.deleteSelected" />' onclick="onDeleteSelected()" /> + <input type="button" style="padding-left:20px" + value=<s:text name="mediaFileView.moveSelected" /> onclick="onMoveSelected()" /> + <span style="padding-left:20px"> + <s:select name="selectedDirectory" list="allDirectories" listKey="id" listValue="path" /> + </span> + </div> </s:form> + <br/> + <br/> + <br/> + + <%-- Create new direcrtory --%> + + <div> + <s:text name="mediaFileView.newDirName" /> + <input style="margin-top:5px;margin-bottom:5px;" type="text" + name="newDirectoryName" size="30" /> + <input type="button" value='<s:text name="mediaFileView.create" />' onclick="onCreateDirectory()" /> + </div> + +</s:if> <%-- <div id="mediafile_edit_lightbox" style="visibility:hidden">
