You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2009/06/07 19:47:42 UTC

svn commit: r782416 - in /roller/trunk: ./ apps/weblogger/src/java/META-INF/ apps/weblogger/src/java/org/apache/roller/weblogger/business/ apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/ apps/weblogger/src/java/org/apache/roller/weblo...

Author: snoopdave
Date: Sun Jun  7 17:47:40 2009
New Revision: 782416

URL: http://svn.apache.org/viewvc?rev=782416&view=rev
Log:
Merging media blogging work into trunk.

This applies to ROL-1765, but there is a little more work to do (see bug comments)
https://issues.apache.org/jira/browse/ROL-1765

NOTE: table names were changed as part of the merge, all new tables now have "roller_" prefix.

Added:
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileContentManager.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileContentManager.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileContentManagerImpl.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileContentManagerImpl.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/MediaFileManager.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/business/MediaFileManager.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/MediaFileManagerImpl.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/business/MediaFileManagerImpl.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/FileContent.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/FileContent.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.orm.xml
      - copied, changed from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.orm.xml
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileComparator.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileComparator.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml
      - copied, changed from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectoryComparator.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectoryComparator.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileFilter.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileFilter.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml
      - copied, changed from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileType.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileType.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/MediaFilesPager.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/MediaFilesPager.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/MediaResourceServlet.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/MediaResourceServlet.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAddWithMediaFile.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAddWithMediaFile.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd-validation.xml
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd-validation.xml
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBean.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBean.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit-validation.xml
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit-validation.xml
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageDim.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageDim.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileSearch.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileSearch.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileSearchBean.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/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
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/pagers/MediaFilePager.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/pagers/MediaFilePager.java
    roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/business/CoreMediaFileServicesTestSuite.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/test/java/org/apache/roller/weblogger/business/CoreMediaFileServicesTestSuite.java
    roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/business/FileContentManagerTest.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/test/java/org/apache/roller/weblogger/business/FileContentManagerTest.java
    roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/business/MediaFileTest.java
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/test/java/org/apache/roller/weblogger/business/MediaFileTest.java
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAdd.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAdd.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAddExternalInclude.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAddExternalInclude.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAddSuccessInclude.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAddSuccessInclude.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileEdit.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileEdit.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileEditSuccess.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileEditSuccess.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileHierarchicalView.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileHierarchicalView.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileImageDimension.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileImageDimension.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSearch.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSearch.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileViewLight.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileViewLight.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/tiles/tiles-popuppage.jsp
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/tiles/tiles-popuppage.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/velocity/templates/feeds/weblog-files-atom.vm
      - copied unchanged from r782269, roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/velocity/templates/feeds/weblog-files-atom.vm
Modified:
    roller/trunk/   (props changed)
    roller/trunk/apps/weblogger/src/java/META-INF/persistence.xml
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/MultiWeblogURLStrategy.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/URLStrategy.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/Weblogger.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerImpl.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerModule.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/OAuthAccessorRecord.orm.xml
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/OAuthConsumerRecord.orm.xml
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/FeedModel.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/URLModel.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml
    roller/trunk/apps/weblogger/src/sql/400-to-500-migration.vm   (contents, props changed)
    roller/trunk/apps/weblogger/src/sql/createdb.vm
    roller/trunk/apps/weblogger/src/sql/droptables.sql
    roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/ant/StartDerbyTask.java
    roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
    roller/trunk/apps/weblogger/web/WEB-INF/classes/struts.xml
    roller/trunk/apps/weblogger/web/WEB-INF/tiles.xml
    roller/trunk/apps/weblogger/web/WEB-INF/velocity/feeds.vm
    roller/trunk/apps/weblogger/web/WEB-INF/web.xml
    roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/editor-text.jsp
    roller/trunk/apps/weblogger/web/roller-ui/styles/roller.css

Propchange: roller/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sun Jun  7 17:47:40 2009
@@ -3,3 +3,4 @@
 tomcat
 classes.eclipse
 build
+.settings

Propchange: roller/trunk/
------------------------------------------------------------------------------
    svn:mergeinfo = /roller/branches/roller_mediablogging:713070-782269

Modified: roller/trunk/apps/weblogger/src/java/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/META-INF/persistence.xml?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/META-INF/persistence.xml (original)
+++ roller/trunk/apps/weblogger/src/java/META-INF/persistence.xml Sun Jun  7 17:47:40 2009
@@ -30,6 +30,9 @@
         <mapping-file>org/apache/roller/weblogger/pojos/UserAttribute.orm.xml           </mapping-file>
         <mapping-file>org/apache/roller/weblogger/pojos/OAuthConsumerRecord.orm.xml     </mapping-file>
         <mapping-file>org/apache/roller/weblogger/pojos/OAuthAccessorRecord.orm.xml     </mapping-file>
+        <mapping-file>org/apache/roller/weblogger/pojos/MediaFile.orm.xml                      </mapping-file>	
+        <mapping-file>org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml                   </mapping-file>	
+        <mapping-file>org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml             </mapping-file>	
     </persistence-unit> 
     
 </persistence>

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/MultiWeblogURLStrategy.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/MultiWeblogURLStrategy.java?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/MultiWeblogURLStrategy.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/MultiWeblogURLStrategy.java Sun Jun  7 17:47:40 2009
@@ -96,6 +96,32 @@
     
     
     /**
+     * Get url for a single weblog media file on a given weblog.
+     */
+    public String getMediaFileURL(
+            String fileAnchor,
+            boolean absolute) {
+        
+        if(fileAnchor == null) {
+            return null;
+        }
+        
+        StringBuffer url = new StringBuffer();
+        
+        if(absolute) {
+            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
+        } else {
+            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
+        }
+        
+        url.append("/roller-ui/rendering/media-resources/").append(URLUtilities.encode(fileAnchor));
+        
+        return url.toString();
+    }
+
+    
+    
+    /**
      * Get url for a single weblog entry comments on a given weblog.
      */
     public String getWeblogCommentsURL(Weblog weblog,

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/URLStrategy.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/URLStrategy.java?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/URLStrategy.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/URLStrategy.java Sun Jun  7 17:47:40 2009
@@ -150,6 +150,12 @@
     
     
     /**
+     * Get url for a single mediafile on a given weblog.
+     */
+    public String getMediaFileURL(String entryAnchor,
+                                                 boolean absolute);
+
+    /**
      * Get url for a collection of entries on a given weblog.
      */
     public String getWeblogCollectionURL(Weblog weblog,

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/Weblogger.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/Weblogger.java?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/Weblogger.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/Weblogger.java Sun Jun  7 17:47:40 2009
@@ -139,13 +139,21 @@
      */
     public PluginManager getPluginManager();
     
+    /**
+     * Get MediaFileManager associated with this Weblogger instance.
+     */
+    public MediaFileManager getMediaFileManager();
     
     /**
+     * Get FileContentManager associated with this Weblogger instance.
+     */
+    public FileContentManager getFileContentManager();
+
+    /**
      * Get the URLStrategy used to build all urls in the system.
      */
     public URLStrategy getUrlStrategy();
     
-    
     /**
      * Flush object states.
      */

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerImpl.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerImpl.java?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerImpl.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerImpl.java Sun Jun  7 17:47:40 2009
@@ -51,6 +51,8 @@
     private final BookmarkManager      bookmarkManager;
     private final FileManager          fileManager;
     private final IndexManager         indexManager;
+    private final MediaFileManager     mediaFileManager;
+    private final FileContentManager   fileContentManager;
     private final PingQueueManager     pingQueueManager;
     private final PingTargetManager    pingTargetManager;
     private final PluginManager        pluginManager;
@@ -79,6 +81,8 @@
         BookmarkManager      bookmarkManager,
         FileManager          fileManager,
         IndexManager         indexManager,
+        MediaFileManager     mediaFileManager,
+        FileContentManager   fileContentManager,
         PingQueueManager     pingQueueManager,
         PingTargetManager    pingTargetManager,
         PluginManager        pluginManager,
@@ -97,6 +101,8 @@
         this.bookmarkManager     = bookmarkManager;
         this.fileManager         = fileManager;
         this.indexManager        = indexManager;
+        this.mediaFileManager    = mediaFileManager;
+        this.fileContentManager  = fileContentManager;
         this.pingQueueManager    = pingQueueManager;
         this.pingTargetManager   = pingTargetManager;
         this.pluginManager       = pluginManager;
@@ -197,6 +203,25 @@
     /**
      * 
      * 
+     * @see org.apache.roller.weblogger.modelWebloggerr#getMediaFileManager()
+     */
+    public MediaFileManager getMediaFileManager() {
+        return mediaFileManager;
+    }
+    
+    /**
+     * 
+     * 
+     * @see org.apache.roller.weblogger.modelWebloggerr#getFileContentManager()
+     */
+    public FileContentManager getFileContentManager() {
+        return fileContentManager;
+    }
+    
+    
+    /**
+     * 
+     * 
      * @see org.apache.roller.weblogger.modelWebloggerr#getWeblogEntryManager()
      */
     public WeblogEntryManager getWeblogEntryManager() {
@@ -300,6 +325,8 @@
             autoPingManager.release();
             bookmarkManager.release();
             fileManager.release();
+            mediaFileManager.release();
+            fileContentManager.release();
             pingTargetManager.release();
             pingQueueManager.release();
             pluginManager.release();

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java Sun Jun  7 17:47:40 2009
@@ -21,8 +21,10 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.business.BookmarkManager;
+import org.apache.roller.weblogger.business.FileContentManager;
 import org.apache.roller.weblogger.business.FileManager;
 import org.apache.roller.weblogger.business.OAuthManager;
+import org.apache.roller.weblogger.business.MediaFileManager;
 import org.apache.roller.weblogger.business.PropertiesManager;
 import org.apache.roller.weblogger.business.URLStrategy;
 import org.apache.roller.weblogger.business.WebloggerImpl;
@@ -64,6 +66,8 @@
         BookmarkManager      bookmarkManager,
         FileManager          fileManager,
         IndexManager         indexManager,
+        MediaFileManager     mediaFileManager,
+        FileContentManager   fileContentManager,
         PingQueueManager     pingQueueManager,
         PingTargetManager    pingTargetManager,
         PluginManager        pluginManager,
@@ -83,6 +87,8 @@
             bookmarkManager,
             fileManager,
             indexManager,
+            mediaFileManager,
+            fileContentManager,
             pingQueueManager,
             pingTargetManager,
             pluginManager,

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerModule.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerModule.java?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerModule.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerModule.java Sun Jun  7 17:47:40 2009
@@ -23,8 +23,12 @@
 import net.oauth.OAuthValidator;
 import net.oauth.SimpleOAuthValidator;
 import org.apache.roller.weblogger.business.BookmarkManager;
+import org.apache.roller.weblogger.business.FileContentManager;
+import org.apache.roller.weblogger.business.FileContentManagerImpl;
 import org.apache.roller.weblogger.business.FileManager;
 import org.apache.roller.weblogger.business.FileManagerImpl;
+import org.apache.roller.weblogger.business.MediaFileManager;
+import org.apache.roller.weblogger.business.MediaFileManagerImpl;
 import org.apache.roller.weblogger.business.MultiWeblogURLStrategy;
 import org.apache.roller.weblogger.business.OAuthManager;
 import org.apache.roller.weblogger.business.PropertiesManager;
@@ -76,6 +80,8 @@
                 
         binder.bind(ReferrerQueueManager.class).to(ReferrerQueueManagerImpl.class); 
         binder.bind(FileManager.class).to(         FileManagerImpl.class);   
+        binder.bind(MediaFileManager.class).to(    MediaFileManagerImpl.class);
+        binder.bind(FileContentManager.class).to(  FileContentManagerImpl.class);
         binder.bind(IndexManager.class).to(        IndexManagerImpl.class);
         binder.bind(PluginManager.class).to(       PluginManagerImpl.class);    
         binder.bind(ThemeManager.class).to(        ThemeManagerImpl.class);

Copied: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.orm.xml (from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.orm.xml)
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.orm.xml?p2=roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.orm.xml&p1=roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.orm.xml&r1=782269&r2=782416&rev=782416&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.orm.xml (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFile.orm.xml Sun Jun  7 17:47:40 2009
@@ -11,7 +11,7 @@
     <package>org.apache.roller.weblogger.pojos</package>
     <entity metadata-complete="true" name="MediaFile"
             class="org.apache.roller.weblogger.pojos.MediaFile">
-        <table name="media_file"/>
+        <table name="roller_mediafile"/>
         <attributes>
             <id name="id">
                 <column name="id"/>

Copied: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml (from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml)
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml?p2=roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml&p1=roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml&r1=782269&r2=782416&rev=782416&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml Sun Jun  7 17:47:40 2009
@@ -11,7 +11,7 @@
     <package>org.apache.roller.weblogger.pojos</package>
     <entity metadata-complete="true" name="MediaFileDirectory"
             class="org.apache.roller.weblogger.pojos.MediaFileDirectory">
-        <table name="media_file_directory"/>
+        <table name="roller_mediafiledir"/>
         <named-query name="MediaFileDirectory.getByWeblog">
             <query>SELECT d FROM MediaFileDirectory d WHERE d.weblog = ?1</query>
         </named-query>

Copied: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml (from r782269, roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml)
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml?p2=roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml&p1=roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml&r1=782269&r2=782416&rev=782416&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml Sun Jun  7 17:47:40 2009
@@ -11,7 +11,7 @@
     <package>org.apache.roller.weblogger.pojos</package>
     <entity metadata-complete="true" name="MediaFileTag"
             class="org.apache.roller.weblogger.pojos.MediaFileTag">
-        <table name="media_file_tag"/>
+        <table name="roller_mediafiletag"/>
         <named-query name="MediaFileTag.getByMediaFile">
             <query>SELECT w FROM MediaFileTag w WHERE w.mediaFile = ?1</query>
         </named-query>
@@ -23,7 +23,7 @@
                 <column name="name" insertable="true" updatable="true" unique="false" nullable="false"/>
             </basic>
             <many-to-one name="mediaFile" target-entity="org.apache.roller.weblogger.pojos.MediaFile">
-                <join-column name="media_file_id" insertable="true" updatable="true" nullable="false"/>
+                <join-column name="mediafile_id" insertable="true" updatable="true" nullable="false"/>
             </many-to-one>
         </attributes>
     </entity>

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/OAuthAccessorRecord.orm.xml
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/OAuthAccessorRecord.orm.xml?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/OAuthAccessorRecord.orm.xml (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/OAuthAccessorRecord.orm.xml Sun Jun  7 17:47:40 2009
@@ -11,7 +11,7 @@
     <package>org.apache.roller.weblogger.pojos</package>
     <entity metadata-complete="true" name="OAuthAccessorRecord"
             class="org.apache.roller.weblogger.pojos.OAuthAccessorRecord">
-        <table name="rol_oauthaccessor"/>
+        <table name="roller_oauthaccessor"/>
         <named-query name="OAuthAccessorRecord.getByKey">
             <query>SELECT p FROM OAuthAccessorRecord p WHERE p.consumerKey = ?1</query>
         </named-query>

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/OAuthConsumerRecord.orm.xml
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/OAuthConsumerRecord.orm.xml?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/OAuthConsumerRecord.orm.xml (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/OAuthConsumerRecord.orm.xml Sun Jun  7 17:47:40 2009
@@ -11,7 +11,7 @@
     <package>org.apache.roller.weblogger.pojos</package>
     <entity metadata-complete="true" name="OAuthConsumerRecord"
             class="org.apache.roller.weblogger.pojos.OAuthConsumerRecord">
-        <table name="rol_oauthconsumer"/>
+        <table name="roller_oauthconsumer"/>
         <named-query name="OAuthConsumerRecord.getByConsumerKey">
             <query>SELECT p FROM OAuthConsumerRecord p WHERE p.consumerKey = ?1</query>
         </named-query>

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/FeedModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/FeedModel.java?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/FeedModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/FeedModel.java Sun Jun  7 17:47:40 2009
@@ -30,6 +30,7 @@
 import org.apache.roller.weblogger.pojos.Weblog;
 import org.apache.roller.weblogger.pojos.wrapper.WeblogWrapper;
 import org.apache.roller.weblogger.ui.rendering.pagers.CommentsPager;
+import org.apache.roller.weblogger.ui.rendering.pagers.MediaFilesPager;
 import org.apache.roller.weblogger.ui.rendering.pagers.Pager;
 import org.apache.roller.weblogger.ui.rendering.pagers.WeblogEntriesListPager;
 import org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest;
@@ -134,6 +135,14 @@
     }    
         
     /**
+     * Gets most recently uploaded media files limited by: weblog specified 
+     * in request and the weblog.entryDisplayCount.
+     */
+    public Pager getMediaFilesPager() {
+        return new FeedFilesPager(feedRequest);
+    }    
+        
+    /**
      * Returns the list of tags specified in the request /?tags=foo+bar
      * @return
      */
@@ -205,4 +214,36 @@
             return createURL(super.getUrl(), new HashMap());
         }
     }      
+
+    public class FeedFilesPager extends MediaFilesPager {
+        
+        private WeblogFeedRequest feedRequest;
+        
+        public FeedFilesPager(WeblogFeedRequest feedRequest) {            
+            super(urlStrategy, urlStrategy.getWeblogFeedURL(feedRequest.getWeblog(), 
+                    feedRequest.getLocale(), feedRequest.getType(),
+                    feedRequest.getFormat(), null, null,
+                    null, false, true), feedRequest.getWeblog(), -1, feedRequest.getPage(), 10);
+            this.feedRequest = feedRequest;
+        }
+        
+        protected String createURL(String url, Map params) {
+            List tags = feedRequest.getTags();
+            if(tags != null && tags.size() > 0) {
+                params.put("tags", URLUtilities.getEncodedTagsString(tags));
+            }
+            String category = feedRequest.getWeblogCategoryName();
+            if(category != null && category.trim().length() > 0) {
+                params.put("cat", URLUtilities.encode(category));
+            }  
+            if(feedRequest.isExcerpts()) {
+                params.put("excerpts", "true");
+            }   
+            return super.createURL(url, params);
+        }
+        
+        public String getUrl() {
+            return createURL(super.getUrl(), new HashMap());
+        }
+    }      
 }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/URLModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/URLModel.java?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/URLModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/URLModel.java Sun Jun  7 17:47:40 2009
@@ -321,6 +321,10 @@
         public CommentFeedURLS getComments() {
             return new CommentFeedURLS();
         }
+
+        public MediaFileFeedURLS getMediaFiles() {
+            return new MediaFileFeedURLS();
+        }
     }
     
     public class EntryFeedURLS {
@@ -374,4 +378,23 @@
         
     }
     
+    public class MediaFileFeedURLS {
+        
+        public String getRss() {
+            return urlStrategy.getWeblogFeedURL(weblog, locale, "files", "rss", null, null, null, false, true);
+        }
+        
+        public String rss(String catPath, boolean excerpts) {
+            return urlStrategy.getWeblogFeedURL(weblog, locale, "files", "rss", catPath, null, null, excerpts, true);
+        }
+        
+        public String getAtom() {
+            return urlStrategy.getWeblogFeedURL(weblog, locale, "files", "atom", null, null, null, false, true);
+        }
+        
+        public String atom(String catPath, boolean excerpts) {
+            return urlStrategy.getWeblogFeedURL(weblog, locale, "files", "atom", catPath, null, null, excerpts, true);
+        }
+        
+    }
 }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml Sun Jun  7 17:47:40 2009
@@ -53,11 +53,17 @@
                    weblogPerms="post"
                    subactions="bookmarkAdd,bookmarkEdit,folderAdd,folderEdit,bookmarksImport" />
         
-        <menu-item action="resources"  
-                   name="tabbedmenu.website.files" 
+        <menu-item action="resources"
+                   name="tabbedmenu.website.files"
                    globalPerms="login"
                    perms="post"/>
-        
+
+        <menu-item action="mediaFileAdd"
+                   name="tabbedmenu.weblog.mediaFiles"
+                   globalPerms="login"
+                   perms="post"
+                   subactions="mediaFileView,mediaFileHierarchicalView,mediaFileSearch" />
+
         <menu-item action="referrers"     
                    name="tabbedmenu.weblog.referers" 
                    globalPerms="login"

Modified: roller/trunk/apps/weblogger/src/sql/400-to-500-migration.vm
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/sql/400-to-500-migration.vm?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/sql/400-to-500-migration.vm (original)
+++ roller/trunk/apps/weblogger/src/sql/400-to-500-migration.vm Sun Jun  7 17:47:40 2009
@@ -4,6 +4,9 @@
 DON'T RUN THIS, IT'S NOT A DATABASE CREATION SCRIPT!!!
 **#
 
+
+-- NEW PERMISSIONS SYSTEM
+
 -- We are replacing roller_user_permissions with this new table
 -- actions:    comma separated list of actions permitted by permission
 -- objectid:   for now this will always store weblogid
@@ -58,6 +61,9 @@
     time = time,
     creator = (select u.username from rolleruser as u where u.id = w.userid);
 
+
+-- USER ATTRIBUTE
+
 create table  roller_userattribute(
     id        varchar(48) not null primary key,
     username  varchar(255) not null,
@@ -68,24 +74,73 @@
 create index ua_attrname_idx  on roller_userattribute( attrname$!db.INDEXSIZE );
 create index ua_attrvalue_idx on roller_userattribute( attrvalue$!db.INDEXSIZE );
 
+
+-- OAUTH SUPPORT
+
 -- each record is an OAuth consumer key and secret, can be tied to just one user
-create table rol_oauthconsumer (
-    consumerkey varchar(48) not null primary key,
+create table roller_oauthconsumer (
+    consumerkey    varchar(48) not null primary key,
     consumersecret varchar(48) not null,
-    username varchar(48)
+    username       varchar(48)
 );
-create index oc_username_idx  on rol_oauthconsumer( username$!db.INDEXSIZE );
-create index oc_consumerkey_idx  on rol_oauthconsumer( consumerkey$!db.INDEXSIZE );
+create index oc_username_idx  on roller_oauthconsumer( username$!db.INDEXSIZE );
+create index oc_consumerkey_idx  on roller_oauthconsumer( consumerkey$!db.INDEXSIZE );
 
 -- each record is an OAuth accessor, always tied to just one user
-create table rol_oauthaccessor (
-    consumerkey varchar(48) not null primary key,
+create table roller_oauthaccessor (
+    consumerkey  varchar(48) not null primary key,
     requesttoken varchar(48),
-    accesstoken varchar(48),
-    tokensecret varchar(48),
-    created $db.TIMESTAMP_SQL_TYPE not null,
-    updated $db.TIMESTAMP_SQL_TYPE not null,
-    username varchar(48),
-    authorized $db.BOOLEAN_SQL_TYPE_FALSE
+    accesstoken  varchar(48),
+    tokensecret  varchar(48),
+    created      $db.TIMESTAMP_SQL_TYPE not null,
+    updated      $db.TIMESTAMP_SQL_TYPE not null,
+    username     varchar(48),
+    authorized   $db.BOOLEAN_SQL_TYPE_FALSE
+);
+
+
+-- MEDIA BLOGGING
+
+create table roller_mediafile (
+    id              varchar(48) not null primary key,
+    name            varchar(255) not null,
+    description     varchar(255),
+    content_type    varchar(50)  not null,
+    copyright_text  varchar(1023),
+    directory_id    varchar(48),
+    size_in_bytes   integer,
+    date_uploaded   $db.TIMESTAMP_SQL_TYPE not null,
+    last_updated    $db.TIMESTAMP_SQL_TYPE,
+    anchor          varchar(255),
+    creator         varchar(255),
+    is_public       $db.BOOLEAN_SQL_TYPE_FALSE not null
 );
-create index oa_consumerkey_idx  on rol_oauthaccessor( consumerkey$!db.INDEXSIZE );
+
+create table roller_mediafiletag (
+    id              varchar(48) not null primary key,
+    mediafile_id    varchar(48) not null,
+    name            varchar(30) not null
+);
+
+create table roller_mediafiledir (
+    id               varchar(48) not null primary key,
+    name             varchar(255) not null,
+    description      varchar(255),
+    websiteid        varchar(48) not null,
+    parentid         varchar(48),
+    path             varchar(255)
+);
+
+-- media files
+alter table roller_mediafile add constraint roller_mediafiledir_id_fk
+    foreign key (directory_id) references roller_mediafiledir(id) $!db.ADDL_FK_PARAMS ;
+
+alter table roller_mediafiletag add constraint roller_mediafile_id_tag_fk
+    foreign key (mediafile_id) references roller_mediafile(id) $!db.ADDL_FK_PARAMS ;
+
+alter table roller_mediafiledir add constraint mf_websiteid_fk
+    foreign key ( websiteid ) references website( id ) $!db.ADDL_FK_PARAMS ;
+
+alter table roller_mediafiledir add constraint mf_parentid_fk
+    foreign key ( parentid ) references roller_mediafiledir( id )  $!db.ADDL_FK_PARAMS ;
+

Propchange: roller/trunk/apps/weblogger/src/sql/400-to-500-migration.vm
            ('svn:mergeinfo' removed)

Modified: roller/trunk/apps/weblogger/src/sql/createdb.vm
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/sql/createdb.vm?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/sql/createdb.vm (original)
+++ roller/trunk/apps/weblogger/src/sql/createdb.vm Sun Jun  7 17:47:40 2009
@@ -435,27 +435,27 @@
 create index ea_entryid_idx on entryattribute( entryid );
 alter table entryattribute add constraint ea_name_uq unique ( entryid, name$!db.INDEXSIZE );
 
+
+-- OAUTH SUPPORT
+
 -- each record is an OAuth consumer key and secret, can be tied to just one user
-create table rol_oauthconsumer (
-    consumerkey varchar(48) not null primary key,
+create table roller_oauthconsumer (
+    consumerkey    varchar(48) not null primary key,
     consumersecret varchar(48) not null,
-    username varchar(48)
+    username       varchar(48)
 );
-create index oc_username_idx  on rol_oauthconsumer( username$!db.INDEXSIZE );
-create index oc_consumerkey_idx  on rol_oauthconsumer( consumerkey$!db.INDEXSIZE );
 
 -- each record is an OAuth accessor, always tied to just one user
-create table rol_oauthaccessor (
-    consumerkey varchar(48) not null primary key,
+create table roller_oauthaccessor (
+    consumerkey  varchar(48) not null primary key,
     requesttoken varchar(48),
-    accesstoken varchar(48),
-    tokensecret varchar(48),
-    created $db.TIMESTAMP_SQL_TYPE not null,
-    updated $db.TIMESTAMP_SQL_TYPE not null,
-    username varchar(48),
-    authorized $db.BOOLEAN_SQL_TYPE_FALSE
+    accesstoken  varchar(48),
+    tokensecret  varchar(48),
+    created      $db.TIMESTAMP_SQL_TYPE not null,
+    updated      $db.TIMESTAMP_SQL_TYPE not null,
+    username     varchar(48),
+    authorized   $db.BOOLEAN_SQL_TYPE_FALSE
 );
-create index oa_consumerkey_idx  on rol_oauthaccessor( consumerkey$!db.INDEXSIZE );
 
 create table rag_properties (
     name     varchar(255) not null primary key,
@@ -463,6 +463,8 @@
 );
 
 
+-- PLANET FEED AGGREGATOR
+
 create table rag_planet (
     id              varchar(48) not null primary key,
     handle          varchar(32) not null,
@@ -527,6 +529,39 @@
 insert into rag_group (id, planet_id, handle, title) values ('zzz_all_group_zzz', 'zzz_default_planet_zzz', 'all', 'Default Group');
 
 
+-- MEDIA BLOGGING
+
+create table roller_mediafile (
+    id              varchar(48) not null primary key,
+    name            varchar(255) not null,
+    description     varchar(255),
+    content_type    varchar(50)  not null,
+    copyright_text  varchar(1023),
+    directory_id    varchar(48),
+    size_in_bytes   integer,
+    date_uploaded   $db.TIMESTAMP_SQL_TYPE not null,
+    last_updated    $db.TIMESTAMP_SQL_TYPE,
+    anchor          varchar(255),
+    creator         varchar(255),
+    is_public       $db.BOOLEAN_SQL_TYPE_FALSE not null
+);
+
+create table roller_mediafiletag (
+    id              varchar(48) not null primary key,
+    mediafile_id    varchar(48) not null,
+    name            varchar(30) not null
+);
+
+create table roller_mediafiledir (
+    id               varchar(48) not null primary key,
+    name             varchar(255) not null,
+    description      varchar(255),
+    websiteid        varchar(48) not null,
+    parentid         varchar(48),
+    path             varchar(255)
+);
+
+
 -- *****************************************************
 -- Now add the foreign key relationships
 
@@ -571,6 +606,19 @@
 alter table bookmark add constraint bm_folderid_fk
     foreign key ( folderid ) references folder( id ) $!db.ADDL_FK_PARAMS ;
 
+-- media files
+alter table media_file add constraint media_file_directory_id_fk
+    foreign key (directory_id) references media_file_directory(id) $!db.ADDL_FK_PARAMS ;
+
+alter table media_file_tag add constraint media_file_id_tag_fk
+    foreign key (media_file_id) references media_file(id) $!db.ADDL_FK_PARAMS ;
+
+alter table media_file_directory add constraint mf_websiteid_fk
+    foreign key ( websiteid ) references website( id ) $!db.ADDL_FK_PARAMS ;
+
+alter table media_file_directory add constraint mf_parentid_fk
+    foreign key ( parentid ) references media_file_directory( id )  $!db.ADDL_FK_PARAMS ;
+
 -- newsfeed
 
 alter table newsfeed add constraint nf_websiteid_fk
@@ -600,15 +648,23 @@
 -- alter table webpage add constraint webpage_websiteid_fk foreign key ( websiteid ) references website( id );
 
 
+-- media blogging indexes
 
+alter table roller_mediafile add constraint roller_mediafiledir_id_fk
+    foreign key (directory_id) references roller_mediafiledir(id) $!db.ADDL_FK_PARAMS ;
 
+alter table roller_mediafiletag add constraint roller_mediafile_id_tag_fk
+    foreign key (mediafile_id) references roller_mediafile(id) $!db.ADDL_FK_PARAMS ;
 
+alter table roller_mediafiledir add constraint mf_websiteid_fk
+    foreign key ( websiteid ) references website( id ) $!db.ADDL_FK_PARAMS ;
 
+alter table roller_mediafiledir add constraint mf_parentid_fk
+    foreign key ( parentid ) references roller_mediafiledir( id )  $!db.ADDL_FK_PARAMS ;
 
 
+-- oauth indexes
 
-
-
-
-
+create index oc_username_idx  on roller_oauthconsumer( username$!db.INDEXSIZE );
+create index oc_consumerkey_idx  on roller_oauthconsumer( consumerkey$!db.INDEXSIZE );
 

Modified: roller/trunk/apps/weblogger/src/sql/droptables.sql
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/sql/droptables.sql?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/sql/droptables.sql (original)
+++ roller/trunk/apps/weblogger/src/sql/droptables.sql Sun Jun  7 17:47:40 2009
@@ -39,6 +39,11 @@
 drop table bookmark;
 drop table folder;
 drop table folderassoc;
+drop table roller_userattribute;
+drop table media_file_tag;
+drop table media_file;
+drop table media_file_directory;
+
 
 -- core services tables
 drop table roller_hitcounts;

Modified: roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/ant/StartDerbyTask.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/ant/StartDerbyTask.java?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/ant/StartDerbyTask.java (original)
+++ roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/ant/StartDerbyTask.java Sun Jun  7 17:47:40 2009
@@ -32,7 +32,7 @@
     
     public void execute() throws BuildException {
         try {
-            System.out.println("Stopping Derby");
+            System.out.println("Starting Derby");
             System.setProperty("derby.system.home", database);
             System.setProperty("derby.drda.portNumber", port);
             System.setProperty("derby.drda.host", "localhost");

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=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties (original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties Sun Jun  7 17:47:40 2009
@@ -952,6 +952,40 @@
 maintenance.message.flushed=Successfully flushed the page cache of your \
 Roller weblog
 
+# ----------------------------------------------------------- Media file management
+mediaFile.add.title=Add new media file
+mediaFile.edit.title=Edit media file
+mediaFile.search.title=Search media files
+mediaFile.delete.confirm=Delete selected media files?
+mediaFile.move.confirm=Move selected media files?
+mediaFile.view.title=View uploaded files
+mediaFile.directoryCreate.success=New directory succesfully created.
+
+
+mediaFile.includeInGallery.success = Media file(s) successfully included in gallery.
+mediaFile.delete.success = Media file(s) successfully deleted.
+mediaFile.move.success = Media file(s) successfully moved.
+
+mediaFile.update.success = Media file successfully updated.
+
+
+
+# errors from validation
+MediaFile.error.nameNull=Name is a required field
+MediaFile.error.nameSize=Name cannot be more than 255 characters
+MediaFile.error.descriptionSize=Description cannot be more than 255 characters
+MediaFile.error.copyrightTextSize=Copyright text cannot be more than 1023 characters
+MediaFile.error.duplicateName=The file name {0} is already in use, you will need to choose another
+MediaFile.error.search.empty=Please enter one or more criteria for search.
+MediaFile.error.search.noResults=No results found.
+mediaFile.error.search.dirPathEmpty=Directory path is empty.
+mediaFile.error.search.dirPathInvalid=Directory path is invalid.
+mediaFile.error.view.dirNameEmpty=Directory name is empty.
+mediaFile.error.view.dirNameInvalid=Directory name is invalid.
+mediaFile.error.noneSelectedForMove=Please select one or more files to be moved.
+mediaFile.error.noneSelectedForDelete=Please select one or more files to be deleted.
+
+
 # ----------------------------------------------------------- Member permissions
 
 memberPermissions.title=Weblog Member Permissions
@@ -1449,6 +1483,9 @@
 tabbedmenu.weblog.import=Import
 tabbedmenu.weblog.flushCache=Flush Cache
 
+tabbedmenu.weblog.mediaFiles=Media Files
+tabbedmenu.weblog.tabularView=Media Files
+
 tabbedmenu.admin=Server Admin
 tabbedmenu.admin.config=Configuration
 tabbedmenu.admin.userAdmin=User Admin

Modified: roller/trunk/apps/weblogger/web/WEB-INF/classes/struts.xml
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/classes/struts.xml?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/classes/struts.xml (original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/classes/struts.xml Sun Jun  7 17:47:40 2009
@@ -228,6 +228,55 @@
             <result name="success" type="chain">entryEdit</result>
         </action>
         
+        <action name="entryAddWithMediaFile!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.EntryAddWithMediaFile">
+            <result name="success" type="chain">entryAdd</result>
+        </action>
+        
+
+        <action name="mediaFileAdd!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileAdd">
+            <result name="input" type="tiles">.MediaFileAdd</result>
+            <result name="success" type="tiles">.MediaFileAddSuccess</result>
+            <result name="error" type="tiles">.MediaFileAdd</result>
+        </action>
+
+        <action name="mediaFileEdit!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileEdit">
+            <result name="input" type="tiles">.MediaFileEdit</result>
+            <result name="success" type="tiles">.MediaFileEditSuccess</result>
+        </action>
+
+        <action name="mediaFileAddExternalInclude!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileEdit">
+            <result name="input" type="tiles">.MediaFileAddExternalInclude</result>
+            <result name="success" type="tiles">.MediaFileAddExternalInclude</result>
+            <result name="error" type="tiles">.MediaFileAddExternalInclude</result>
+        </action>
+
+	<action name="mediaFileView!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileView">
+            <result name="success" type="tiles">.MediaFileView</result>
+            <result name="success.json" type="dispatcher">/WEB-INF/jsps/editor/MediaFileViewLight.jsp</result>
+        </action>
+
+	<action name="mediaFileHierarchicalView!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileView">
+            <result name="success" type="tiles">.MediaFileHierarchicalView</result>
+        </action>
+
+	<action name="mediaFileSearch!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileSearch">
+            <result name="input" type="tiles">.MediaFileSearch</result>
+            <result name="error" type="tiles">.MediaFileSearch</result>
+            <result name="success" type="tiles">.MediaFileSearch</result>
+        </action>
+		
+	<action name="mediaFileImageDim!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileImageDim">
+            <result name="success" type="tiles">.MediaFileImageDimension</result>
+        </action>
+
         <action name="entryEdit!*" method="{1}"
                 class="org.apache.roller.weblogger.ui.struts2.editor.EntryEdit">
             <result name="input" type="tiles">.EntryEdit</result>
@@ -413,7 +462,30 @@
         </action>
         -->
     </package>
+
+
+    <!-- Weblogger Authoring UI - overlay pages-->
     
+    <package name="weblogger-authoring-overlay" namespace="/roller-ui/authoring/overlay" extends="weblogger-authoring">
+
+        <action name="mediaFileAdd!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileAdd">
+            <param name="overlayMode">true</param>
+            <result name="input" type="tiles">.MediaFileAddInclude</result>
+            <result name="success" type="tiles">.MediaFileAddSuccessInclude</result>
+            <result name="error" type="tiles">.MediaFileAddInclude</result>
+        </action>
+
+	<action name="mediaFileSearch!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileSearch">
+            <param name="overlayMode">true</param>
+            <result name="input" type="tiles">.MediaFileSearchInclude</result>
+            <result name="error" type="tiles">.MediaFileSearchInclude</result>
+            <result name="success" type="tiles">.MediaFileSearchInclude</result>
+        </action>
+
+    </package>
+
     <!-- MOBILE BEGIN
 
     <package name="mobile-authoring" namespace="/roller-ui/mobile" extends="weblogger">

Modified: roller/trunk/apps/weblogger/web/WEB-INF/tiles.xml
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/tiles.xml?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/tiles.xml (original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/tiles.xml Sun Jun  7 17:47:40 2009
@@ -68,6 +68,18 @@
         <put-attribute name="footer"       value="/WEB-INF/jsps/tiles/footer.jsp" />
     </definition>
     
+	<definition name=".tiles-popuppage" template="/WEB-INF/jsps/tiles/tiles-popuppage.jsp">
+        <put-attribute name="banner"       value="/WEB-INF/jsps/tiles/empty.jsp" />
+        <put-attribute name="messages"     value="/WEB-INF/jsps/tiles/messages.jsp" />
+		<put-attribute name="styles"       value="/WEB-INF/jsps/tiles/empty.jsp" />
+        <put-attribute name="content"      value="${content}" />
+       
+    </definition>
+	<definition name=".tiles-popuppage-only-content" template="/WEB-INF/jsps/tiles/tiles-popuppage.jsp">
+       
+        <put-attribute name="content"      value="${content}" />
+       
+    </definition>
     
     <!-- error pages -->
     <definition name=".denied" extends=".tiles-errorpage" >
@@ -209,6 +221,84 @@
         <put-attribute name="sidebar" value="/WEB-INF/jsps/editor/EntrySidebar.jsp" />
         <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
     </definition>
+
+    <definition name=".MediaFileAdd" extends=".tiles-tabbedpage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileAdd.jsp" />
+        <put-attribute name="sidebar" value="/WEB-INF/jsps/editor/MediaFileSidebar.jsp" />
+        <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
+    </definition>
+
+    <definition name=".MediaFileEdit" extends=".tiles-popuppage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileEdit.jsp" />
+    </definition>
+
+    <definition name=".MediaFileAddExternalInclude" extends=".tiles-popuppage-only-content" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileAddExternalInclude.jsp" />
+    </definition>
+    
+    <definition name=".MediaFileImageDimension" extends=".tiles-popuppage-only-content" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileImageDimension.jsp" />
+    </definition>
+    
+
+	<definition name=".MediaFileSearchInclude" extends=".tiles-popuppage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileSearch.jsp" />
+    </definition>
+
+    <definition name=".MediaFileAddInclude" extends=".tiles-popuppage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileAdd.jsp" />
+    </definition>
+
+    <definition name=".MediaFileAddSuccessInclude" extends=".tiles-popuppage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileAddSuccessInclude.jsp" />
+    </definition>
+    
+    <definition name=".MediaFileEditSuccess" extends=".tiles-popuppage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileEditSuccess.jsp" />
+    </definition>
+
+    <definition name=".MediaFileView" extends=".tiles-tabbedpage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileView.jsp" />
+        <put-attribute name="sidebar" value="/WEB-INF/jsps/editor/MediaFileSidebar.jsp" />
+        <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
+    </definition>
+
+    <definition name=".MediaFileHierarchicalView" extends=".tiles-tabbedpage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileHierarchicalView.jsp" />
+        <put-attribute name="sidebar" value="/WEB-INF/jsps/editor/MediaFileSidebar.jsp" />
+        <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
+    </definition>
+
+    <definition name=".MediaFileAddSuccess" extends=".tiles-tabbedpage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp" />
+        <put-attribute name="sidebar" value="/WEB-INF/jsps/editor/MediaFileSidebar.jsp" />
+        <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
+    </definition>
+
+    <definition name=".MediaFileSearch" extends=".tiles-tabbedpage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileSearch.jsp" />
+        <put-attribute name="sidebar" value="/WEB-INF/jsps/editor/MediaFileSidebar.jsp" />
+        <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
+    </definition>
+
+    <definition name=".TabularView" extends=".tiles-tabbedpage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" value="/WEB-INF/jsps/editor/TabularView.jsp" />
+        <put-attribute name="sidebar" value="/WEB-INF/jsps/editor/MediaFileSidebar.jsp" />
+        <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
+    </definition>
     
     <definition name=".EntryEdit" extends=".tiles-tabbedpage" >
         <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />

Modified: roller/trunk/apps/weblogger/web/WEB-INF/velocity/feeds.vm
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/velocity/feeds.vm?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/velocity/feeds.vm (original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/velocity/feeds.vm Sun Jun  7 17:47:40 2009
@@ -23,6 +23,7 @@
       #showEntriesRSS20()
       #showCommentsAtom10()
       #showCommentsRSS20()
+      #showFilesAtom10()
 *#
 
 #macro(showEntriesAtom10 $entries)
@@ -112,6 +113,26 @@
     #end
 #end
 
+#macro(showFilesAtom10 $mediaFiles)
+#foreach($file in $mediaFiles)
+    <entry>
+        <id>$file.permalink</id>
+        <title type="html">$utils.escapeXML($file.name)</title>
+        <author><name>$file.creator.screenName</name></author>
+        <link rel="alternate" type="text/html" href="$file.permalink"/>
+        <published>$utils.formatIso8601Date($file.dateUploaded)</published>
+        <updated>$utils.formatIso8601Date($file.lastUpdated)</updated> 
+#foreach($tag in $file.tags)
+        <category term="$utils.escapeXML($tag.name)" scheme="http://roller.apache.org/ns/tags/" />
+#end        
+#if( $utils.isNotEmpty($file.description))
+        <summary type="html">$utils.escapeXML($file.description)</summary>
+#end
+        <link rel="enclosure" type="$file.contentType" href="$utils.escapeXML($file.permalink)"/>
+    </entry>
+#end
+#end
+
 #macro(showFeedHistory $pager)
 <link rel="first" type="application/atom+xml" href="$utils.escapeXML($pager.url)" />
 #if($pager.hasMoreItems())

Modified: roller/trunk/apps/weblogger/web/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/web.xml?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/web.xml (original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/web.xml Sun Jun  7 17:47:40 2009
@@ -220,6 +220,12 @@
     </servlet>
 
     <servlet>
+        <servlet-name>MediaResourceServlet</servlet-name>
+        <servlet-class>org.apache.roller.weblogger.ui.rendering.servlets.MediaResourceServlet</servlet-class>
+        <load-on-startup>5</load-on-startup>
+    </servlet>
+
+    <servlet>
         <servlet-name>SearchServlet</servlet-name>
         <servlet-class>org.apache.roller.weblogger.ui.rendering.servlets.SearchServlet</servlet-class>
         <load-on-startup>5</load-on-startup>
@@ -381,6 +387,11 @@
     </servlet-mapping>
 
     <servlet-mapping>
+        <servlet-name>MediaResourceServlet</servlet-name>
+        <url-pattern>/roller-ui/rendering/media-resources/*</url-pattern>
+    </servlet-mapping>
+    
+    <servlet-mapping>
         <servlet-name>CommentServlet</servlet-name>
         <url-pattern>/roller-ui/rendering/comment/*</url-pattern>
     </servlet-mapping>

Modified: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/editor-text.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/editor-text.jsp?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/editor-text.jsp (original)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/editor-text.jsp Sun Jun  7 17:47:40 2009
@@ -17,6 +17,171 @@
 --%>
 <%-- This page is designed to be included in edit-weblog.jsp --%>
 <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+<script type="text/javascript" src="<s:url value='/roller-ui/scripts/yui/yahoo-dom-event.js'/>"></script>
+<script type="text/javascript" src="<s:url value='/roller-ui/scripts/yui/container-min.js'/>"></script>
+
+<style>
+a:link, a:visited, a:hover, a:active     { text-decoration:underline; }
+body        {
+                margin:0;
+                padding:0;
+                text-align:left;
+            }
+h1          {
+                font-size:20px;
+                font-weight:bold;
+            }
+.yui-overlay {
+                position:fixed;
+                background: #ffffff;
+                z-index: 112;
+                color:#000000;
+                border: 4px solid #525252;
+                text-align:left;
+                top: 50%;
+                left: 50%;
+        }
+</style>
+<script type="text/javascript">
+
+YAHOO.example = function() {
+        var $D = YAHOO.util.Dom;
+        var $E = YAHOO.util.Event;
+            return {
+                init : function() {
+                var overlay_img = new YAHOO.widget.Overlay("overlay_img", { fixedcenter:true,
+                                                                            visible:false,
+                                                                            width:"577px",height:"530px"
+                                                                          });
+                overlay_img.render();
+                var overlay = document.createElement('div');
+                overlay.id = 'overlay';
+                // Assign 100% height and width
+                overlay.style.width = '100%';
+                overlay.style.height = '100%';
+
+                document.getElementsByTagName('body')[0].appendChild(overlay);
+                overlay.style.display = 'none';
+              }
+        };
+
+}();
+
+YAHOO.util.Event.addListener(window, "load", YAHOO.example.init);
+
+function onClose(textForInsertion)
+{
+        document.getElementById('overlay').style.display = 'none';
+        document.getElementById('overlay_img').style.visibility = 'hidden';
+        if (textForInsertion && textForInsertion.length > 0) {
+            insertAtCursor(document.getElementById('EntryText'), textForInsertion);
+        }
+}
+
+function insertAtCursor(textAreaElement, valueForInsertion) {
+    if (document.selection) {
+         textAreaElement.focus();
+         var range = document.selection.createRange();
+         range.text = valueForInsertion;
+    }
+    else if (textAreaElement.selectionStart || textAreaElement.selectionStart == '0') {
+
+        var preText;
+        var postText;
+        if (textAreaElement.selectionStart == 0) {
+            preText = '';
+            postText = '';
+        }
+        else {
+            preText = textAreaElement.value.substring(0, textAreaElement.selectionStart);
+            postText = textAreaElement.value.substring(textAreaElement.selectionEnd, textAreaElement.value.length);
+        }
+        textAreaElement.value =  preText + valueForInsertion + postText;
+        textAreaElement.selectionStart = preText.length + valueForInsertion.length;
+        textAreaElement.selectionEnd = textAreaElement.selectionStart;
+        textAreaElement.focus();
+    } else {
+        textAreaElement.value += valueForInsertion;
+        textAreaElement.focus();
+    }
+}
+
+
+function onClickAdd(){
+        var browser=navigator.appName;
+        document.getElementById("overlay_img").style.visibility = "visible";
+        document.getElementById('overlay').style.display = 'block';
+        document.getElementById("overlay_img").style.width = "650px";
+        document.getElementById("overlay_img").style.height = "550px";
+        document.getElementById("overlay_img").style.top = "40px";
+
+
+                var frame = document.createElement('iframe');
+                frame.setAttribute("id","myframe");
+                frame.setAttribute("frameborder","no");
+                frame.setAttribute("scrolling","auto");
+
+                frame.setAttribute('src','<s:url action="mediaFileAdd" namespace="overlay"><s:param name="weblog"    value="%{actionWeblog.handle}" /></s:url>' );
+                frame.style.width="100%";
+                frame.style.height="100%";
+                if (browser=="Microsoft Internet Explorer")
+                {
+                document.getElementById("overlay_img").style.top= "40px";
+                document.getElementById("overlay_img").style.left= "170px";
+                }
+                document.getElementById("overlay_img").innerHTML = '<div ><a href="#" class="container-close" onclick="onClose()"></a></div>';
+                document.getElementById("overlay_img").appendChild(frame);
+}
+
+function onClickAddFromUpload(){
+        var browser=navigator.appName;
+        document.getElementById("overlay_img").style.visibility = "visible";
+        document.getElementById('overlay').style.display = 'block';
+        document.getElementById("overlay_img").style.width = "650px";
+        document.getElementById("overlay_img").style.height = "500px";
+        document.getElementById("overlay_img").style.top = "40px";
+                var frame = document.createElement('iframe');
+                frame.setAttribute("id","myframe");
+                frame.setAttribute("frameborder","no");
+                frame.setAttribute("scrolling","auto");
+                frame.setAttribute('src','<s:url action="mediaFileSearch" namespace="overlay"><s:param name="weblog" value="%{actionWeblog.handle}" /></s:url>' );
+                frame.style.width="100%";
+                frame.style.height="100%";
+                if (browser=="Microsoft Internet Explorer")
+                {
+                document.getElementById("overlay_img").style.top= "40px";
+                document.getElementById("overlay_img").style.left= "170px";
+                }
+
+                document.getElementById("overlay_img").innerHTML = '<div ><a href="#" class="container-close" onclick="onClose()"></a></div>';
+                document.getElementById("overlay_img").appendChild(frame);
+}
+
+function onClickAddExternal(){
+        var browser=navigator.appName;
+        document.getElementById("overlay_img").style.visibility = "visible";
+        document.getElementById('overlay').style.display = 'block';
+        document.getElementById("overlay_img").style.width = "515px";
+        document.getElementById("overlay_img").style.height = "400px";
+        document.getElementById("overlay_img").style.top = "100px";
+
+                var frame = document.createElement('iframe');
+                frame.setAttribute("id","myframe");
+                frame.setAttribute("frameborder","no");
+                frame.setAttribute("scrolling","auto");
+                frame.setAttribute('src','<s:url action="mediaFileAddExternalInclude"><s:param name="weblog" value="%{actionWeblog.handle}" /></s:url>' );
+                frame.style.width="100%";
+                frame.style.height="100%";
+                if (browser=="Microsoft Internet Explorer")
+                {
+                document.getElementById("overlay_img").style.top= "40px";
+                document.getElementById("overlay_img").style.left= "170px";
+                }
+                document.getElementById("overlay_img").innerHTML = '<div ><a href="#" class="container-close" onclick="onClose()"></a></div>';
+                document.getElementById("overlay_img").appendChild(frame);
+}
+
+</script>
 
 <script type="text/javascript">
 <!--
@@ -40,10 +205,19 @@
 // -->
 </script>
 
+<div id="overlay_img" style="visibility:hidden"> </div>
+
 <%-- ===================================================================== --%>
-<p class="toplabel"><s:text name="weblogEdit.content" /></p>
+<p class="toplabel">
+    <span style="float:left;"><s:text name="weblogEdit.content" /></span>
+    <span style="font-weight:normal;float:right;">
+        <a href="#" onClick="onClickAdd();";>Add media </a>&nbsp;
+            <a href="#" onClick="onClickAddFromUpload();">Attach uploaded file</a>&nbsp;
+            <a href="#" onClick="onClickAddExternal();">Add media from URL</a>
+    </span>
+</p>
 
-<s:textarea name="bean.text" cols="75" rows="25" cssStyle="width: 100%" tabindex="5"/>
+<s:textarea id="EntryText" name="bean.text" cols="75" rows="25" cssStyle="width: 100%" tabindex="5"/>
 <script type="text/javascript">
     <!--
     if (getCookie("editorSize1") != null) {

Modified: roller/trunk/apps/weblogger/web/roller-ui/styles/roller.css
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/styles/roller.css?rev=782416&r1=782415&r2=782416&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/styles/roller.css (original)
+++ roller/trunk/apps/weblogger/web/roller-ui/styles/roller.css Sun Jun  7 17:47:40 2009
@@ -672,6 +672,12 @@
     font-weight: bold;
 }
 
+/* media file pages */
+.mediaFileSearchResult {
+   float: left;
+   margin: 10px 10px 10px 10px;
+}
+
 /* weblog entry form page */
 
 span.entryEditSidebarLink {
@@ -749,3 +755,75 @@
   margin-left: auto;
   margin-right: auto;
 }
+
+/* ----------------------------------------------------------------------
+Media File styles 
+---------------------------------------------------------------------- */
+/*** for overlay ***/
+.yui-overlay span, #close {
+		float: left;
+	}
+	
+	#close { float: right; }
+	
+	#overlay {
+		position: fixed;
+		z-index:100;
+		top: 0px;
+		left: 0px;
+		height:100%;
+		width:100%;
+		display: none;
+		background-color:#000;
+		filter:alpha(opacity=25);
+		-moz-opacity: 0.25;
+		opacity: 0.25;	
+	}
+	
+	.container-close {
+		position:absolute;
+		top:2px;
+		right:4px;
+		z-index:6;
+		height:12px;
+		width:12px;
+		margin:0px;
+		padding:0px;
+		background:url('http://yui.yahooapis.com/2.6.0/build/container/assets/close12_1.gif') no-repeat;
+		cursor:pointer	
+	}
+
+	.align-images {
+		display:inline;
+		float:left;
+		margin:5px;
+		list-style-type:none;
+		width:140px;
+	}
+
+	.dir-image {
+    	cursor:pointer;
+		width:25px;
+		height:25px;
+		padding:40px 45px;
+	}
+
+	/*** For context menu ***/
+
+	#menu h1 {
+		line-height:120%;
+		margin:15px 0px;
+	}
+	#ewecontextmenu {
+		background-color:#CECECE;
+		border:1px solid #808080;
+		line-height:1.5;
+	}
+
+	#ewecontextmenu li a {
+		text-decoration:none;
+		color: #000000;
+	}
+
+	#ewecontextmenu .yuimenuitem-selected{background-color:#36404C;}
+	#ewecontextmenu .yuimenuitem-selected a {color:#ffffff;}