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>
+                                &nbsp;
+                            </td>
+                            <td>&nbsp;</td>
+                            <td>&nbsp;</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">


Reply via email to