You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ga...@apache.org on 2009/03/03 16:44:04 UTC
svn commit: r749634 [2/2] - in
/roller/branches/roller_mediablogging/apps/weblogger:
src/java/org/apache/roller/weblogger/business/
src/java/org/apache/roller/weblogger/pojos/
src/java/org/apache/roller/weblogger/ui/struts2/editor/
src/java/org/apache/...
Modified: roller/branches/roller_mediablogging/apps/weblogger/test/java/org/apache/roller/weblogger/business/MediaFileTest.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/test/java/org/apache/roller/weblogger/business/MediaFileTest.java?rev=749634&r1=749633&r2=749634&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/test/java/org/apache/roller/weblogger/business/MediaFileTest.java (original)
+++ roller/branches/roller_mediablogging/apps/weblogger/test/java/org/apache/roller/weblogger/business/MediaFileTest.java Tue Mar 3 15:44:03 2009
@@ -22,6 +22,8 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
@@ -33,13 +35,18 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.TestUtils;
+import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.ant.StartDerbyTask;
import org.apache.roller.weblogger.ant.StopDerbyTask;
import org.apache.roller.weblogger.pojos.MediaFile;
import org.apache.roller.weblogger.pojos.MediaFileDirectory;
+import org.apache.roller.weblogger.pojos.MediaFileFilter;
import org.apache.roller.weblogger.pojos.MediaFileTag;
+import org.apache.roller.weblogger.pojos.MediaFileType;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.pojos.MediaFileFilter.MediaFileOrder;
+import org.apache.roller.weblogger.pojos.MediaFileFilter.SizeFilterType;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.SQLExec;
import org.junit.After;
@@ -97,21 +104,21 @@
public static void startDatabase() throws Exception {
StartDerbyTask startTask = new StartDerbyTask();
- startTask.setDatabase("C:/Ganesh/edu/Project/sources/roller-svn/apps/weblogger/build/tests/derby-system/roller");
+ startTask.setDatabase("C:/Ganesh/edu/Project/sources/media-blogging-branch/apps/weblogger/build/tests/derby-system/roller");
startTask.setPort("3219");
startTask.execute();
}
public static void initDatabaseShort() throws Exception {
Properties props = new Properties();
- props.load(new FileInputStream("C:/Ganesh/edu/Project/sources/roller-svn/apps/weblogger/build.properties"));
+ props.load(new FileInputStream("C:/Ganesh/edu/Project/sources/media-blogging-branch/apps/weblogger/build.properties"));
SQLExec sqlTask1 = new SQLExec();
sqlTask1.setDriver(props.getProperty("test.db.driver"));
sqlTask1.setUrl(props.getProperty("test.db.url"));
sqlTask1.setUserid(props.getProperty("test.db.username"));
sqlTask1.setPassword(props.getProperty("test.db.password"));
- sqlTask1.setSrc(new File("C:/Ganesh/edu/Project/sources/roller-svn/apps/weblogger/src/sql/media_file_delete_data.sql"));
+ sqlTask1.setSrc(new File("C:/Ganesh/edu/Project/sources/media-blogging-branch/apps/weblogger/src/sql/media_file_delete_data.sql"));
SQLExec.OnError onError1 = new SQLExec.OnError();
onError1.setValue("continue");
sqlTask1.setOnerror(onError1);
@@ -123,14 +130,14 @@
public static void initDatabase() throws Exception {
Properties props = new Properties();
- props.load(new FileInputStream("C:/Ganesh/edu/Project/sources/roller-svn/apps/weblogger/build.properties"));
+ props.load(new FileInputStream("C:/Ganesh/edu/Project/sources/media-blogging-branch/apps/weblogger/build.properties"));
SQLExec sqlTask1 = new SQLExec();
sqlTask1.setDriver(props.getProperty("test.db.driver"));
sqlTask1.setUrl(props.getProperty("test.db.url"));
sqlTask1.setUserid(props.getProperty("test.db.username"));
sqlTask1.setPassword(props.getProperty("test.db.password"));
- sqlTask1.setSrc(new File("C:/Ganesh/edu/Project/sources/roller-svn/apps/weblogger/build/webapp/WEB-INF/classes/dbscripts/droptables.sql"));
+ sqlTask1.setSrc(new File("C:/Ganesh/edu/Project/sources/media-blogging-branch/apps/weblogger/build/webapp/WEB-INF/classes/dbscripts/droptables.sql"));
SQLExec.OnError onError1 = new SQLExec.OnError();
onError1.setValue("continue");
sqlTask1.setOnerror(onError1);
@@ -143,7 +150,7 @@
sqlTask2.setUrl(props.getProperty("test.db.url"));
sqlTask2.setUserid(props.getProperty("test.db.username"));
sqlTask2.setPassword(props.getProperty("test.db.password"));
- sqlTask2.setSrc(new File("C:/Ganesh/edu/Project/sources/roller-svn/apps/weblogger/build/webapp/WEB-INF/classes/dbscripts/derby/createdb.sql"));
+ sqlTask2.setSrc(new File("C:/Ganesh/edu/Project/sources/media-blogging-branch/apps/weblogger/build/webapp/WEB-INF/classes/dbscripts/derby/createdb.sql"));
SQLExec.OnError onError2 = new SQLExec.OnError();
onError2.setValue("continue");
sqlTask2.setOnerror(onError2);
@@ -177,6 +184,105 @@
}
+ /**
+ * Test directory creation
+ */
+ @Test
+ public void testCreateMediaFileDirectoryByPath() throws Exception {
+ User testUser = null;
+ Weblog testWeblog = null;
+
+ // TODO: Setup code, to be moved to setUp method.
+ System.out.println("Before setting up weblogger");
+ // setup weblogger
+ try {
+ testUser = TestUtils.setupUser("mediaFileTestUser8");
+ testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog8", testUser);
+ TestUtils.endSession(true);
+ } catch (Exception ex) {
+ log.error(ex);
+ throw new Exception("Test setup failed", ex);
+ }
+
+ /**
+ * Real test starts here.
+ */
+ MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+ MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d", testWeblog);
+ mfMgr.createMediaFileDirectory(rootDirectory);
+ assertNotNull(rootDirectory.getId() != null);
+ TestUtils.endSession(true);
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+
+ try {
+ mfMgr.createMediaFileDirectoryByPath(testWeblog, "");
+ assertTrue(false);
+ }
+ catch (WebloggerException e) {
+ assertTrue(true);
+ }
+
+ try {
+ mfMgr.createMediaFileDirectoryByPath(testWeblog, "/");
+ assertTrue(false);
+ }
+ catch (WebloggerException e) {
+ assertTrue(true);
+ }
+
+ MediaFileDirectory newDirectory1 = mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test1");
+ MediaFileDirectory newDirectory2 = mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test2/");
+ TestUtils.endSession(true);
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+
+ MediaFileDirectory newDirectory1ById = mfMgr.getMediaFileDirectory(newDirectory1.getId());
+ assertEquals(newDirectory1, newDirectory1ById);
+
+ MediaFileDirectory newDirectory2ById = mfMgr.getMediaFileDirectory(newDirectory2.getId());
+ assertEquals("test2", newDirectory2ById.getName());
+
+ try {
+ mfMgr.createMediaFileDirectoryByPath(testWeblog, "test1");
+ assertTrue(false);
+ }
+ catch (WebloggerException e) {
+ assertTrue(true);
+ }
+
+ try {
+ mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test1/test2/test3");
+ assertTrue(false);
+ }
+ catch (WebloggerException e) {
+ assertTrue(true);
+ }
+
+ MediaFileDirectory newDirectory3 = mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test1/test2");
+ TestUtils.endSession(true);
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+ MediaFileDirectory newDirectory3ById = mfMgr.getMediaFileDirectory(newDirectory3.getId());
+ assertEquals(newDirectory3, newDirectory3ById);
+
+ MediaFileDirectory newDirectory4 = mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test1/test2/test3");
+ TestUtils.endSession(true);
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+ MediaFileDirectory newDirectory4ById = mfMgr.getMediaFileDirectory(newDirectory4.getId());
+ assertEquals(newDirectory4, newDirectory4ById);
+
+ try {
+ mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test1/test2/test3");
+ assertTrue(false);
+ }
+ catch (WebloggerException e) {
+ assertTrue(true);
+ }
+ }
/**
* Test directory creation
@@ -189,7 +295,6 @@
// TODO: Setup code, to be moved to setUp method.
System.out.println("Before setting up weblogger");
// setup weblogger
- TestUtils.setupWeblogger();
try {
testUser = TestUtils.setupUser("mediaFileTestUser");
testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog", testUser);
@@ -321,7 +426,7 @@
assertNotNull(mediaFile1.getTags());
assertEquals(2, mediaFile1.getTags().size());
- mfMgr.removeMediaFile(mediaFile1);
+ mfMgr.removeMediaFile(testWeblog, mediaFile1);
TestUtils.endSession(true);
MediaFile mediaFile2 = mfMgr.getMediaFile(id);
@@ -381,6 +486,322 @@
}
/**
+ * Test searching media file.
+ */
+ public void testSearchMediaFile() throws Exception {
+
+ User testUser = null;
+ Weblog testWeblog = null;
+ testUser = TestUtils.setupUser("mediaFileTestUser7");
+ testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog7", testUser);
+
+ MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();
+
+ MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d", testWeblog);
+ mfMgr.createMediaFileDirectory(rootDirectory);
+
+ TestUtils.endSession(true);
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+ rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());
+
+ MediaFile mediaFile = new MediaFile();
+ mediaFile.setName("test_work.jpg");
+ mediaFile.setDescription("This is a test image");
+ mediaFile.setCopyrightText("test copyright text");
+ mediaFile.setSharedForGallery(true);
+ mediaFile.setLength(2000);
+ mediaFile.setDirectory(rootDirectory);
+ mediaFile.setInputStream(getClass().getResourceAsStream("/test.jpg"));
+ mediaFile.setContentType("image/jpeg");
+
+ MediaFileTag tag1 = new MediaFileTag("work", mediaFile);
+ Set<MediaFileTag> tags = new HashSet<MediaFileTag>();
+ tags.add(tag1);
+ mediaFile.setTags(tags);
+
+ mfMgr.createMediaFile(testWeblog, mediaFile);
+ TestUtils.endSession(true);
+ assertNotNull(mediaFile.getId());
+ assertNotNull(mediaFile.getId().length() > 0);
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+ MediaFile mediaFile1 = new MediaFile();
+ mediaFile1 = new MediaFile();
+ mediaFile1.setName("test_home.jpg");
+ mediaFile1.setDescription("This is a test image");
+ mediaFile1.setCopyrightText("test copyright text");
+ mediaFile1.setSharedForGallery(true);
+ mediaFile1.setLength(3000);
+ mediaFile1.setDirectory(rootDirectory);
+ mediaFile1.setInputStream(getClass().getResourceAsStream("/test.jpg"));
+ mediaFile1.setContentType("image/jpeg");
+
+ MediaFileTag tag2 = new MediaFileTag("home", mediaFile1);
+ tags = new HashSet<MediaFileTag>();
+ tags.add(tag2);
+ mediaFile1.setTags(tags);
+
+ mfMgr.createMediaFile(testWeblog, mediaFile1);
+ TestUtils.endSession(true);
+ assertNotNull(mediaFile1.getId());
+ assertNotNull(mediaFile1.getId().length() > 0);
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+ MediaFile mediaFile2 = new MediaFile();
+ mediaFile2 = new MediaFile();
+ mediaFile2.setName("test_pers.jpg");
+ mediaFile2.setDescription("This is a personal test image");
+ mediaFile2.setCopyrightText("test pers copyright text");
+ mediaFile2.setSharedForGallery(true);
+ mediaFile2.setLength(4000);
+ mediaFile2.setDirectory(rootDirectory);
+ mediaFile2.setInputStream(getClass().getResourceAsStream("/test.jpg"));
+ mediaFile2.setContentType("image/jpeg");
+
+ MediaFileTag tag3 = new MediaFileTag("home", mediaFile2);
+ tags = new HashSet<MediaFileTag>();
+ tags.add(tag3);
+ mediaFile2.setTags(tags);
+
+ mfMgr.createMediaFile(testWeblog, mediaFile2);
+ TestUtils.endSession(true);
+ assertNotNull(mediaFile2.getId());
+ assertNotNull(mediaFile2.getId().length() > 0);
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+
+ List<MediaFile> searchResults;
+
+ MediaFileFilter filter1 = new MediaFileFilter();
+ filter1.setName("mytest.jpg");
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter1);
+ assertTrue(searchResults.isEmpty());
+
+ MediaFileFilter filter2 = new MediaFileFilter();
+ filter2.setName("test_home.jpg");
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter2);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(mediaFile1.getId(), ((MediaFile)searchResults.get(0)).getId());
+ assertNotNull(((MediaFile)searchResults.get(0)).getDirectory());
+ assertEquals("/", ((MediaFile)searchResults.get(0)).getDirectory().getPath());
+
+ MediaFileFilter filter3 = new MediaFileFilter();
+ filter3.setName("test_work.jpg");
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter3);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(mediaFile.getId(), ((MediaFile)searchResults.get(0)).getId());
+
+ MediaFileFilter filter4 = new MediaFileFilter();
+ filter4.setTags(Arrays.asList("work"));
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter4);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(1, searchResults.size());
+ assertEquals("test_work.jpg", ((MediaFile)searchResults.get(0)).getName());
+
+ MediaFileFilter filter5 = new MediaFileFilter();
+ filter5.setTags(Arrays.asList("home"));
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter5);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(2, searchResults.size());
+
+ MediaFileFilter filter6 = new MediaFileFilter();
+ filter6.setSize(3000);
+ filter6.setSizeFilterType(MediaFileFilter.SizeFilterType.LT);
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter6);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(1, searchResults.size());
+ assertEquals("test_work.jpg", ((MediaFile)searchResults.get(0)).getName());
+
+ MediaFileFilter filter7 = new MediaFileFilter();
+ filter7.setSize(3000);
+ filter7.setSizeFilterType(MediaFileFilter.SizeFilterType.EQ);
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter7);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(1, searchResults.size());
+ assertEquals("test_home.jpg", ((MediaFile)searchResults.get(0)).getName());
+
+ MediaFileFilter filter8 = new MediaFileFilter();
+ filter8.setSize(3000);
+ filter8.setSizeFilterType(MediaFileFilter.SizeFilterType.GT);
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter8);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(1, searchResults.size());
+ assertEquals("test_pers.jpg", ((MediaFile)searchResults.get(0)).getName());
+
+ MediaFileFilter filter9 = new MediaFileFilter();
+ filter9.setSize(3000);
+ filter9.setSizeFilterType(MediaFileFilter.SizeFilterType.LTE);
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter9);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(2, searchResults.size());
+
+ MediaFileFilter filter10 = new MediaFileFilter();
+ filter10.setSize(3000);
+ filter10.setSizeFilterType(MediaFileFilter.SizeFilterType.GTE);
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter10);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(2, searchResults.size());
+
+ MediaFileFilter filter11 = new MediaFileFilter();
+ filter11.setType(MediaFileType.IMAGE);
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter11);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(3, searchResults.size());
+
+ MediaFileFilter filter12 = new MediaFileFilter();
+ filter12.setType(MediaFileType.IMAGE);
+ filter12.setTags(Arrays.asList("home"));
+ searchResults = mfMgr.searchMediaFiles(testWeblog, filter12);
+ assertFalse(searchResults.isEmpty());
+ assertEquals(2, searchResults.size());
+ }
+
+ /**
+ * Test searching media file with paging logic.
+ */
+ public void testSearchMediaFilePaging() throws Exception {
+ User testUser = null;
+ Weblog testWeblog = null;
+ testUser = TestUtils.setupUser("mediaFileTestUser9");
+ testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog9", testUser);
+
+ MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();
+
+ MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d", testWeblog);
+ mfMgr.createMediaFileDirectory(rootDirectory);
+
+ TestUtils.endSession(true);
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+ rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());
+
+ for (int i = 0; i < 15; i ++) {
+ MediaFile mediaFile = new MediaFile();
+ mediaFile.setName("test_file<index>.jpg".replace("<index>", i + ""));
+ mediaFile.setDescription("This is a test image");
+ mediaFile.setCopyrightText("test copyright text");
+ mediaFile.setSharedForGallery(true);
+ mediaFile.setLength(2000);
+ mediaFile.setDirectory(rootDirectory);
+ mediaFile.setInputStream(getClass().getResourceAsStream("/test.jpg"));
+ mediaFile.setContentType("image/jpeg");
+ mfMgr.createMediaFile(testWeblog, mediaFile);
+ assertNotNull(mediaFile.getId());
+ assertNotNull(mediaFile.getId().length() > 0);
+ }
+ TestUtils.endSession(true);
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+
+ MediaFileFilter filter1 = new MediaFileFilter();
+ filter1.setSize(1000);
+ filter1.setSizeFilterType(SizeFilterType.GT);
+ List<MediaFile> searchResults1 = mfMgr.searchMediaFiles(testWeblog, filter1);
+ assertFalse(searchResults1.isEmpty());
+ assertEquals(15, searchResults1.size());
+
+ MediaFileFilter filter2 = new MediaFileFilter();
+ filter2.setSize(1000);
+ filter2.setSizeFilterType(SizeFilterType.GT);
+ filter2.setStartIndex(5);
+ filter2.setLength(3);
+ List<MediaFile> searchResults2 = mfMgr.searchMediaFiles(testWeblog, filter2);
+ assertFalse(searchResults2.isEmpty());
+ assertEquals(3, searchResults2.size());
+ assertEquals("test_file5.jpg", searchResults2.get(0).getName());
+
+ MediaFileFilter filter3 = new MediaFileFilter();
+ filter3.setSize(1000);
+ filter3.setSizeFilterType(SizeFilterType.GT);
+ filter3.setStartIndex(13);
+ filter3.setLength(6);
+ List<MediaFile> searchResults3 = mfMgr.searchMediaFiles(testWeblog, filter3);
+ assertFalse(searchResults3.isEmpty());
+ assertEquals(2, searchResults3.size());
+ assertEquals("test_file13.jpg", searchResults3.get(0).getName());
+
+ MediaFileFilter filter4 = new MediaFileFilter();
+ filter4.setSize(1000);
+ filter4.setSizeFilterType(SizeFilterType.GT);
+ filter4.setStartIndex(14);
+ filter4.setLength(1);
+ List<MediaFile> searchResults4 = mfMgr.searchMediaFiles(testWeblog, filter4);
+ assertFalse(searchResults4.isEmpty());
+ assertEquals(1, searchResults4.size());
+ assertEquals("test_file14.jpg", searchResults4.get(0).getName());
+ }
+
+ /**
+ * Test searching media file with paging logic.
+ */
+ public void testSearchMediaFileOrderBy() throws Exception {
+ User testUser = null;
+ Weblog testWeblog = null;
+ testUser = TestUtils.setupUser("mediaFileTestUser10");
+ testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog10", testUser);
+
+ MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();
+
+ MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d", testWeblog);
+ mfMgr.createMediaFileDirectory(rootDirectory);
+
+ TestUtils.endSession(true);
+
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+ rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());
+ String[] contentTypes = {"image/gif", "image/jpeg", "image/bmp"};
+ for (int i = 0; i < 3; i ++) {
+ MediaFile mediaFile = new MediaFile();
+ mediaFile.setName("test_file<index>.jpg".replace("<index>", i + ""));
+ mediaFile.setDescription("This is a test image");
+ mediaFile.setCopyrightText("test copyright text");
+ mediaFile.setSharedForGallery(true);
+ mediaFile.setLength(2000);
+ mediaFile.setDirectory(rootDirectory);
+ mediaFile.setInputStream(getClass().getResourceAsStream("/test.jpg"));
+ mediaFile.setContentType(contentTypes[i]);
+ mfMgr.createMediaFile(testWeblog, mediaFile);
+ assertNotNull(mediaFile.getId());
+ assertNotNull(mediaFile.getId().length() > 0);
+ }
+ TestUtils.endSession(true);
+ testWeblog = TestUtils.getManagedWebsite(testWeblog);
+
+ MediaFileFilter filter1 = new MediaFileFilter();
+ filter1.setSize(1000);
+ filter1.setSizeFilterType(SizeFilterType.GT);
+ filter1.setOrder(MediaFileOrder.NAME);
+ List<MediaFile> searchResults1 = mfMgr.searchMediaFiles(testWeblog, filter1);
+ assertFalse(searchResults1.isEmpty());
+ assertEquals(3, searchResults1.size());
+ assertEquals("test_file0.jpg", searchResults1.get(0).getName());
+ assertEquals("test_file1.jpg", searchResults1.get(1).getName());
+ assertEquals("test_file2.jpg", searchResults1.get(2).getName());
+
+ MediaFileFilter filter2 = new MediaFileFilter();
+ filter2.setSize(1000);
+ filter2.setSizeFilterType(SizeFilterType.GT);
+ filter2.setOrder(MediaFileOrder.TYPE);
+ List<MediaFile> searchResults2 = mfMgr.searchMediaFiles(testWeblog, filter2);
+ assertFalse(searchResults2.isEmpty());
+ assertEquals(3, searchResults2.size());
+ assertEquals("test_file2.jpg", searchResults2.get(0).getName());
+ assertEquals("test_file1.jpg", searchResults2.get(1).getName());
+ assertEquals("test_file0.jpg", searchResults2.get(2).getName());
+
+ MediaFileFilter filter3 = new MediaFileFilter();
+ filter3.setSize(1000);
+ filter3.setSizeFilterType(SizeFilterType.GT);
+ filter3.setOrder(MediaFileOrder.DATE_UPLOADED);
+ List<MediaFile> searchResults3 = mfMgr.searchMediaFiles(testWeblog, filter3);
+ assertFalse(searchResults3.isEmpty());
+ assertEquals(3, searchResults3.size());
+ assertEquals("test_file0.jpg", searchResults3.get(0).getName());
+ assertEquals("test_file1.jpg", searchResults3.get(1).getName());
+ assertEquals("test_file2.jpg", searchResults3.get(2).getName());
+ }
+
+ /**
* Test media file update
*/
public void testUpdateMediaFile() throws Exception {
Modified: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties?rev=749634&r1=749633&r2=749634&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties (original)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties Tue Mar 3 15:44:03 2009
@@ -947,12 +947,36 @@
# ----------------------------------------------------------- Media file management
mediaFile.add.title=Add new media file
+mediaFile.edit.title=Edit new 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.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
Modified: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/classes/struts.xml
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/classes/struts.xml?rev=749634&r1=749633&r2=749634&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/classes/struts.xml (original)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/classes/struts.xml Tue Mar 3 15:44:03 2009
@@ -222,6 +222,31 @@
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">.MediaFileEdit</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="tabular!*" method="{1}"
Modified: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAdd.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAdd.jsp?rev=749634&r1=749633&r2=749634&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAdd.jsp (original)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAdd.jsp Tue Mar 3 15:44:03 2009
@@ -18,32 +18,33 @@
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
<p class="subtitle">
- Add Media Files
+ <s:text name="mediaFile.add.title" />
+
</p>
<s:form id="entry" action="mediaFileAdd!save" onsubmit="editorCleanup()" method="POST" enctype="multipart/form-data">
<s:hidden name="weblog" />
-
+
<%-- ================================================================== --%>
<%-- Title, category, dates and other metadata --%>
-
- <table class="entryEditTable" cellpadding="0" cellspacing="0" width="100%">
-
+
+ <table class="entryEditTable" cellpadding="0" cellspacing="0" width="100%">
+
<tr>
<td class="entryEditFormLabel">
<label for="title">File Location</label>
</td>
<td>
- <s:file name="uploadedFile" size="30" /><br />
+ <s:file name="uploadedFile" size="30" onchange="this.form['bean.name'].value=this.value" /><br />
</td>
</tr>
-
+
<tr>
<td class="entryEditFormLabel">
<label for="status">Name</label>
</td>
<td>
- <s:textfield name="bean.name" size="50" maxlength="255" tabindex="1" />
+ <s:textfield name="bean.name" size="50" maxlength="255" />
</td>
</tr>
@@ -52,7 +53,7 @@
<label for="status">A short Description of file</label>
</td>
<td>
- <s:textarea name="bean.description" cols="50" rows="5" tabindex="3"/>
+ <s:textarea name="bean.description" cols="50" rows="5" />
</td>
</tr>
@@ -61,7 +62,7 @@
<label for="status">Copyright Statement (optional)</label>
</td>
<td>
- <s:textarea name="bean.copyrightText" cols="50" rows="3" tabindex="4"/>
+ <s:textarea name="bean.copyrightText" cols="50" rows="3" />
</td>
</tr>
@@ -70,7 +71,7 @@
<label for="status">Tags (separated by spaces)</label>
</td>
<td>
- <s:textfield name="bean.tags" size="50" maxlength="255" tabindex="5" />
+ <s:textfield name="bean.tags" size="50" maxlength="255" />
</td>
</tr>
@@ -88,42 +89,42 @@
<label for="status">Include in Gallery?</label>
</td>
<td>
- <input type="checkbox" name="checkbox" checked />
+ <s:checkbox name="bean.sharedForGallery" />
</td>
</tr>
-
-
-
-
-
-
+
+
+
+
+
+
</table>
-
-
+
+
<%-- ================================================================== --%>
<%-- Weblog edit or preview --%>
-
-
-
-
-
-
+
+
+
+
+
+
<%-- ================================================================== --%>
<%-- plugin chooser --%>
-
-
-
+
+
+
<%-- ================================================================== --%>
<%-- advanced settings --%>
-
-
+
+
<%-- ================================================================== --%>
<%-- the button box --%>
-
+
<br>
<div class="control">
<input type="submit" value="Upload" name="upload" />
</div>
-
+
</s:form>
Modified: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp?rev=749634&r1=749633&r2=749634&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp (original)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp Tue Mar 3 15:44:03 2009
@@ -33,13 +33,12 @@
<s:url id="mediaFileURL" value="/roller-ui/rendering/media-resources/%{bean.id}">
</s:url>
-<s:a href="%{mediaFileURL}">
<s:if test="contentTypeImage">
<div style="margin-bottom:10px;"><img border="0" src='<s:property value="%{mediaFileURL}" />' width="150px" alt="image"/></div>
</s:if>
-<s:else>
+
+<s:a href="%{mediaFileURL}">
<s:property value="%{mediaFileURL}" />
-</s:else>
</s:a>
<div style="margin-top:20px;text-decoration:underline">
@@ -56,31 +55,31 @@
-
-
-
-
-
+
+
+
+
+
<%-- ================================================================== --%>
<%-- Weblog edit or preview --%>
-
-
-
-
-
-
+
+
+
+
+
+
<%-- ================================================================== --%>
<%-- plugin chooser --%>
-
-
-
+
+
+
<%-- ================================================================== --%>
<%-- advanced settings --%>
-
-
+
+
<%-- ================================================================== --%>
<%-- the button box --%>
-
+
</s:form>
Added: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileEdit.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileEdit.jsp?rev=749634&view=auto
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileEdit.jsp (added)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileEdit.jsp Tue Mar 3 15:44:03 2009
@@ -0,0 +1,121 @@
+<%--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. The ASF licenses this file to You
+ under the Apache License, Version 2.0 (the "License"); you may not
+ use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. For additional information regarding
+ copyright in this work, please see the NOTICE file in the top level
+ directory of this distribution.
+--%>
+<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+
+<p class="subtitle">
+ <s:text name="mediaFile.edit.title" />
+</p>
+
+<s:form id="entry" action="mediaFileEdit!save" onsubmit="editorCleanup()" method="POST">
+ <s:hidden name="weblog" />
+ <s:hidden name="mediaFileId" />
+
+ <%-- ================================================================== --%>
+ <%-- Title, category, dates and other metadata --%>
+
+ <table class="entryEditTable" cellpadding="0" cellspacing="0" width="100%">
+
+ <tr>
+ <td class="entryEditFormLabel">
+ <label for="status">Name</label>
+ </td>
+ <td>
+ <s:textfield name="bean.name" size="50" maxlength="255" tabindex="1" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="entryEditFormLabel">
+ <label for="status">A short Description of file</label>
+ </td>
+ <td>
+ <s:textarea name="bean.description" cols="50" rows="5" tabindex="3"/>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="entryEditFormLabel">
+ <label for="status">Copyright Statement (optional)</label>
+ </td>
+ <td>
+ <s:textarea name="bean.copyrightText" cols="50" rows="3" tabindex="4"/>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="entryEditFormLabel">
+ <label for="status">Tags (separated by spaces)</label>
+ </td>
+ <td>
+ <s:textfield name="bean.tags" size="50" maxlength="255" tabindex="5" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="entryEditFormLabel">
+ <label for="status">Place file under</label>
+ </td>
+ <td>
+ <s:select name="bean.directoryId" list="allDirectories" listKey="id" listValue="path" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="entryEditFormLabel">
+ <label for="status">Include in Gallery?</label>
+ </td>
+ <td>
+ <s:checkbox name="bean.sharedForGallery" />
+ </td>
+ </tr>
+
+
+
+
+
+
+ </table>
+
+
+ <%-- ================================================================== --%>
+ <%-- Weblog edit or preview --%>
+
+
+
+
+
+
+ <%-- ================================================================== --%>
+ <%-- plugin chooser --%>
+
+
+
+
+ <%-- ================================================================== --%>
+ <%-- advanced settings --%>
+
+
+ <%-- ================================================================== --%>
+ <%-- the button box --%>
+
+ <br>
+ <div class="control">
+ <input type="submit" value="Submit" name="submit" />
+ </div>
+
+</s:form>
Added: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileHierarchicalView.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileHierarchicalView.jsp?rev=749634&view=auto
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileHierarchicalView.jsp (added)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileHierarchicalView.jsp Tue Mar 3 15:44:03 2009
@@ -0,0 +1,214 @@
+<%--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. The ASF licenses this file to You
+ under the Apache License, Version 2.0 (the "License"); you may not
+ use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. For additional information regarding
+ copyright in this work, please see the NOTICE file in the top level
+ directory of this distribution.
+--%>
+<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+
+<style type = "text/css">
+ .indented {
+ margin-left:5%;
+ /*padding: 5% 5% 5% 5%;*/
+ color: #000;
+ width : 95%;}
+</style>
+
+<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.6.0/build/fonts/fonts-min.css" />
+<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.6.0/build/treeview/assets/skins/sam/treeview.css" />
+<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/yahoo-dom-event/yahoo-dom-event.js"></script>
+<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/treeview/treeview-min.js"></script>
+
+
+<!--begin custom header content for this example-->
+<!--bring in the folder-style CSS for the TreeView Control-->
+<link rel="stylesheet" type="text/css" href="http://developer.yahoo.com/yui/examples/treeview/assets/css/folders/tree.css">
+
+<!-- Some custom style for the expand/contract section-->
+<style>
+#expandcontractdiv {border:1px dotted #dedede; background-color:#EBE4F2; margin:0 0 .5em 0; padding:0.4em;}
+#treeDiv1 { background: #fff; padding:1em; margin-top:1em; }
+</style>
+
+<script src="http://yui.yahooapis.com/2.2.2/build/yahoo/yahoo-min.js" type="text/javascript"></script>
+<script src="http://yui.yahooapis.com/2.2.2/build/connection/connection-min.js" type="text/javascript"></script>
+
+<p class="subtitle">
+ View Uploaded Files
+</p>
+
+<s:url id="mediaFileTabularViewURL" action="mediaFileView">
+ <s:param name="weblog" value="%{actionWeblog.handle}" />
+</s:url>
+
+<p><s:a href="%{mediaFileTabularViewURL}">Tabular</s:a> | <span style="font-weight:bold">Hierarchical</span></p>
+
+<div id="treeDiv1"></div>
+
+<script type="text/javascript">
+
+hierarchicalViewImpl = function() {
+
+ var tree, currentIconMode;
+
+ function changeIconMode() {
+ var newVal = parseInt(this.value);
+ if (newVal != currentIconMode) {
+ currentIconMode = newVal;
+ }
+ buildTree();
+ }
+
+ function loadNodeData(node, fnLoadComplete) {
+
+ //We'll load node data based on what we get back when we
+ //use Connection Manager topass the text label of the
+ //expanding node to the Yahoo!
+ //Search "related suggestions" API. Here, we're at the
+ //first part of the request -- we'll make the request to the
+ //server. In our success handler, we'll build our new children
+ //and then return fnLoadComplete back to the tree.
+
+ //Get the node's label and urlencode it; this is the word/s
+ //on which we'll search for related words:
+ //alert(node.label);
+ //alert(node.data.key);
+ var nodeLabel = encodeURI(node.label);
+ var nodeKey = node.data.key;
+
+ //prepare URL for XHR request:
+ var sUrl = 'mediaFileView!fetchDirectoryContentLight.rol?selectedDirectoryId=media-directory-id&weblog=<s:property value="actionWeblog.handle" />'.replace("media-directory-id", nodeKey);
+
+
+
+
+ //prepare our callback object
+ var callback = {
+
+ //if our XHR call is successful, we want to make use
+ //of the returned data and create child nodes.
+ success: function(oResponse) {
+ YAHOO.log("XHR transaction was successful.", "info", "example");
+ //YAHOO.log(oResponse.responseText);
+ var oResults = eval("(" + oResponse.responseText + ")");
+ if((oResults.Result) && (oResults.Result.length)) {
+ //Result is an array if more than one result, string otherwise
+ if(YAHOO.lang.isArray(oResults.Result)) {
+ for (var i=0, j=oResults.Result.length; i<j; i++) {
+ var tempNode = new YAHOO.widget.TextNode(oResults.Result[i], node, false);
+ if (oResults.Result[i].type == 'file') {
+ tempNode.isLeaf = true;
+ }
+ }
+ } else {
+ //there is only one result; comes as string:
+ var tempNode = new YAHOO.widget.TextNode(oResults.Result, node, false)
+ }
+ }
+
+ //When we're done creating child nodes, we execute the node's
+ //loadComplete callback method which comes in via the argument
+ //in the response object (we could also access it at node.loadComplete,
+ //if necessary):
+ oResponse.argument.fnLoadComplete();
+ },
+
+ //if our XHR call is not successful, we want to
+ //fire the TreeView callback and let the Tree
+ //proceed with its business.
+ failure: function(oResponse) {
+ YAHOO.log("Failed to process XHR transaction.", "info", "example");
+ oResponse.argument.fnLoadComplete();
+ },
+
+ //our handlers for the XHR response will need the same
+ //argument information we got to loadNodeData, so
+ //we'll pass those along:
+ argument: {
+ "node": node,
+ "fnLoadComplete": fnLoadComplete
+ },
+
+ //timeout -- if more than 7 seconds go by, we'll abort
+ //the transaction and assume there are no children:
+ timeout: 7000
+ };
+
+ //With our callback object ready, it's now time to
+ //make our XHR call using Connection Manager's
+ //asyncRequest method:
+ YAHOO.util.Connect.asyncRequest('POST', sUrl, callback);
+ }
+
+ function buildTree() {
+ //create a new tree:
+ tree = new YAHOO.widget.TreeView("treeDiv1");
+
+ //turn dynamic loading on for entire tree:
+ tree.setDynamicLoad(loadNodeData, currentIconMode);
+
+ //get root node for tree:
+ var root = tree.getRoot();
+
+ //add child nodes for tree; our top level nodes are
+ var aDirectories = [
+ <s:iterator id="directory" value="childDirectories" status="dirStatus">
+{label:"<s:property value="#directory.name" />",key:"<s:property value="#directory.id" />"}<s:if test="!#dirStatus.last">,</s:if>
+ </s:iterator>
+ ];
+
+ for (var i=0, j=aDirectories.length; i<j; i++) {
+ var tempNode = new YAHOO.widget.TextNode(aDirectories[i], root, false);
+ }
+
+ var aFiles = [
+ <s:iterator id="mediaFile" value="childFiles" status="fileStatus">
+{label:"<s:property value="#mediaFile.name" />",key:"<s:property value="#mediaFile.id" />"}<s:if test="!#fileStatus.last">,</s:if>
+ </s:iterator>
+ ];
+
+ for (var i=0, j=aFiles.length; i<j; i++) {
+ var tempNode = new YAHOO.widget.TextNode(aFiles[i], root, false);
+ // Use the isLeaf property to force the leaf node presentation for a given node.
+ // This disables dynamic loading for the node.
+ tempNode.isLeaf = true;
+ }
+
+ //render tree with these toplevel nodes; all descendants of these nodes
+ //will be generated as needed by the dynamic loader.
+ tree.draw();
+ }
+
+
+ return {
+ init: function() {
+ YAHOO.util.Event.on(["mode0", "mode1"], "click", changeIconMode);
+ var el = document.getElementById("mode1");
+ if (el && el.checked) {
+ currentIconMode = parseInt(el.value);
+ } else {
+ currentIconMode = 0;
+ }
+
+ buildTree();
+ }
+
+ }
+} ();
+
+//once the DOM has loaded, we can go ahead and set up our tree:
+YAHOO.util.Event.onDOMReady(hierarchicalViewImpl.init, hierarchicalViewImpl,true)
+
+</script>
+
Added: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSearch.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSearch.jsp?rev=749634&view=auto
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSearch.jsp (added)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSearch.jsp Tue Mar 3 15:44:03 2009
@@ -0,0 +1,195 @@
+<%--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. The ASF licenses this file to You
+ under the Apache License, Version 2.0 (the "License"); you may not
+ use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. For additional information regarding
+ copyright in this work, please see the NOTICE file in the top level
+ directory of this distribution.
+--%>
+<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+<%-- JavaScript for media file search page--%>
+<script type="text/javascript">
+<!--
+
+function onDelete(id)
+{
+ document.mediaFileSearchForm.mediaFileId.value=id;
+ document.mediaFileSearchForm.action='<s:url action="mediaFileSearch!delete" />';
+ document.mediaFileSearchForm.submit();
+}
+
+function onIncludeInGallery(id)
+{
+ document.mediaFileSearchForm.mediaFileId.value=id;
+ document.mediaFileSearchForm.action='<s:url action="mediaFileSearch!includeInGallery" />';
+ document.mediaFileSearchForm.submit();
+}
+
+
+function onDeleteSelected()
+{
+ if ( confirm("<s:text name='mediaFile.delete.confirm' />") ) {
+ document.mediaFileSearchForm.action='<s:url action="mediaFileSearch!deleteSelected" />';
+ document.mediaFileSearchForm.submit();
+ }
+}
+
+function onMoveSelected()
+{
+ if ( confirm("<s:text name='mediaFile.move.confirm' />") ) {
+ document.mediaFileSearchForm.action='<s:url action="mediaFileSearch!moveSelected" />';
+ document.mediaFileSearchForm.submit();
+ }
+}
+function onCreateDirectory()
+{
+ document.mediaFileSearchForm.action='<s:url action="mediaFileSearch!createDirByPath" />';
+ document.mediaFileSearchForm.submit();
+}
+function onNext()
+{
+ document.mediaFileSearchForm["bean.pageNum"].value = parseInt(document.mediaFileSearchForm["bean.pageNum"].value) + 1;
+ document.mediaFileSearchForm.submit();
+}
+function onPrevious()
+{
+ document.mediaFileSearchForm["bean.pageNum"].value = parseInt(document.mediaFileSearchForm["bean.pageNum"].value) - 1;
+ document.mediaFileSearchForm.submit();
+}
+-->
+</script>
+
+<p class="subtitle">
+ Search uploaded files
+</p>
+
+ <s:form id="mediaFileSearchForm" name="mediaFileSearchForm" action="mediaFileSearch!search" onsubmit="editorCleanup()">
+ <s:hidden name="weblog" />
+ <input type="hidden" name="mediaFileId" value="" />
+ <table class="mediaFileSearchTable" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td>
+ <label for="name">Name</label>
+ </td>
+ <td>
+ <s:textfield name="bean.name" size="40" maxlength="255" />
+ </td>
+ <td>
+ <label for="type">File Type</label>
+ </td>
+ <td>
+ <s:select name="bean.type" list="fileTypes" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <label for="size">Size</label>
+ </td>
+ <td>
+ <s:select name="bean.sizeFilterType" list="sizeFilterTypes" listKey="key" listValue="value" />
+ <s:textfield name="bean.size" size="10" maxlength="15" />
+ <s:select name="bean.sizeUnit" list="sizeUnits" listKey="key" listValue="value" />
+ </td>
+ <td>
+ <label for="tags">Tags</label>
+ </td>
+ <td>
+ <s:textfield name="bean.tags" size="20 " maxlength="50" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <input type="submit" name="search" value="Search" />
+ </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ </tr>
+ </table>
+
+ <div class="control">
+ <span style="padding-left:20px">Sort by:</span>
+ <s:select name="bean.sortOption" list="sortOptions" listKey="key" listValue="value" />
+ <s:if test="!pager.justOnePage">
+ <span style="padding-left:300px">
+ <s:if test="pager.hasPrevious()"><a href="#" onclick="onPrevious()"><Previous</a></s:if>
+ <s:if test="pager.hasNext()"><a href="#" onclick="onNext()">Next></a></s:if>
+ <span>
+ </s:if>
+ </div>
+
+ <s:hidden name="bean.pageNum" />
+
+ <%-- ================================================================== --%>
+ <%-- Title, category, dates and other metadata --%>
+
+ <ul style="margin-top:10px">
+
+ <s:iterator id="mediaFile" value="pager.items">
+ <li class="mediaFileSearchResult">
+ <img border="0" src='<s:url value="/roller-ui/rendering/media-resources/%{#mediaFile.id}" />' width="120px" alt="mediaFolder.png"/><br/>
+ <input type="checkbox" name="selectedMediaFiles" value="<s:property value="#mediaFile.id"/>" style="float:left;clear:left"/>
+ <label><s:property value="#mediaFile.name" /></label>
+ <label><s:property value="#mediaFile.path" /></label>
+ <a href='<s:url action="mediaFileEdit"><s:param name="mediaFileId" value="%{#mediaFile.id}" /><s:param name="weblog" value="%{actionWeblog.handle}" /></s:url>'>Edit</a>
+ <a href="#" onclick="onDelete('<s:property value="#mediaFile.id" />')">Delete</a>
+ <a href="#" onclick="onIncludeInGallery('<s:property value="#mediaFile.id" />')">Include in gallery</a>
+ </li>
+ </s:iterator>
+ </ul>
+
+
+<br/>
+<div style="width: 100%; clear:both; padding-top:2em">
+<label>New Directory:</label>
+<input type="text" name="newDirectoryPath" size="30" />
+<input type="button" value="Create" onclick="onCreateDirectory()" />
+</div>
+
+</div>
+
+
+
+
+
+ <%-- ================================================================== --%>
+ <%-- Weblog edit or preview --%>
+
+
+
+
+
+
+ <%-- ================================================================== --%>
+ <%-- plugin chooser --%>
+
+
+
+
+ <%-- ================================================================== --%>
+ <%-- advanced settings --%>
+
+
+ <%-- ================================================================== --%>
+ <%-- the button box --%>
+
+ <br/>
+ <div class="control">
+ <input type="button" style="padding-left:20px" value="Delete Selected" onclick="onDeleteSelected()" />
+ <input type="button" style="padding-left:20px" value="Move Selected" onclick="onMoveSelected()" />
+ <span style="padding-left:20px">
+ <s:select name="selectedDirectory" list="allDirectories" listKey="id" listValue="path" />
+ </span>
+ </div>
+ </s:form>
+
+
Modified: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp?rev=749634&r1=749633&r2=749634&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp (original)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileSidebar.jsp Tue Mar 3 15:44:03 2009
@@ -20,32 +20,27 @@
<div class="sidebarFade">
<div class="menu-tr">
<div class="menu-tl">
-
<div class="sidebarInner">
-
<b>Actions:</b>
- <hr size="1" noshade="noshade" />
- <s:url id="mediaFileAddURL" action="mediaFileAdd">
- <s:param name="weblog" value="%{actionWeblog.handle}" />
- </s:url>
- <s:a href="%{mediaFileAddURL}">Add Media file</s:a>
-
- <hr size="1" noshade="noshade" />
-
- <s:url id="viewUploads" action="tabular">
- <s:param name="weblog" value="%{actionWeblog.handle}" />
- </s:url>
- <s:a href="${viewUploads}">View Uploaded files</s:a>
-
- <hr size="1" noshade="noshade" />
- <a href="#">Search uploaded files</a>
-
- <hr size="1" noshade="noshade" />
-
+ <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>
+ <s:url id="mediaFileViewURL" action="mediaFileView">
+ <s:param name="weblog" value="%{actionWeblog.handle}" />
+ </s:url>
+ <hr size="1" noshade="noshade" />
+ <s:a href="%{mediaFileAddURL}">Add Media file</s:a>
+ <hr size="1" noshade="noshade" />
+ <s:a href="%{mediaFileViewURL}">View Uploaded files</s:a>
+ <hr size="1" noshade="noshade" />
+ <s:a href="%{mediaFileSearchURL}">Search uploaded files</s:a>
+ <hr size="1" noshade="noshade" />
<br />
<br />
</div>
-
</div>
</div>
</div>
Added: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp?rev=749634&view=auto
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp (added)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileView.jsp Tue Mar 3 15:44:03 2009
@@ -0,0 +1,168 @@
+<%--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. The ASF licenses this file to You
+ under the Apache License, Version 2.0 (the "License"); you may not
+ use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. For additional information regarding
+ copyright in this work, please see the NOTICE file in the top level
+ directory of this distribution.
+--%>
+<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+
+<script type="text/javascript">
+<!--
+function onDelete(id)
+{
+ document.mediaFileViewForm.mediaFileId.value=id;
+ document.mediaFileViewForm.action='<s:url action="mediaFileView!delete" />';
+ document.mediaFileViewForm.submit();
+}
+
+function onIncludeInGallery(id)
+{
+ document.mediaFileViewForm.mediaFileId.value=id;
+ document.mediaFileViewForm.action='<s:url action="mediaFileView!includeInGallery" />';
+ document.mediaFileViewForm.submit();
+}
+
+function onSelectDirectory(id) {
+ document.mediaFileViewForm.directoryId.value = id;
+ document.mediaFileViewForm.submit();
+}
+
+function onCreateDirectory()
+{
+ document.mediaFileViewForm.action='<s:url action="mediaFileView!createNewDirectory" />';
+ document.mediaFileViewForm.submit();
+}
+
+function onDeleteSelected()
+{
+ if ( confirm("<s:text name='mediaFile.delete.confirm' />") ) {
+ document.mediaFileViewForm.action='<s:url action="mediaFileView!deleteSelected" />';
+ document.mediaFileViewForm.submit();
+ }
+}
+
+function onMoveSelected()
+{
+ if ( confirm("<s:text name='mediaFile.move.confirm' />") ) {
+ document.mediaFileViewForm.action='<s:url action="mediaFileView!moveSelected" />';
+ document.mediaFileViewForm.submit();
+ }
+}
+-->
+</script>
+
+<p class="subtitle">
+ View Uploaded Files
+</p>
+<p class="subtitle">
+Path: /
+<s:iterator id="directory" value="currentDirectoryHierarchy">
+ <s:url id="getDirectoryByPathUrl" action="mediaFileView">
+ <s:param name="directoryPath" value="#directory.key" />
+ <s:param name="weblog" value="%{actionWeblog.handle}" />
+ </s:url>
+ <s:a href="%{getDirectoryByPathUrl}"><s:property value="#directory.value" /></s:a> /
+</s:iterator>
+</p>
+
+<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">Tabular</span> | <s:a href="%{mediaFileHierarchicalViewURL}">Hierarchical</s:a></p>
+ <div class="control">
+ <span style="padding-left:20px">Sort by:</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="" />
+
+ <%-- ================================================================== --%>
+ <%-- Title, category, dates and other metadata --%>
+
+ <div style="margin-top:10px">
+ <ul>
+
+ <s:iterator id="directory" value="childDirectories">
+ <li>
+ <img border="0" src='<s:url value="/images/folder.png"/>' style="cursor:pointer;width:120px;height:100px" alt="mediaFolder.png" onclick="onSelectDirectory('<s:property value="#directory.id"/>')"/>
+ <label><s:property value="#directory.name" /></label>
+ </li>
+ </s:iterator>
+
+ <s:iterator id="mediaFile" value="childFiles">
+ <li>
+ <s:if test="#mediaFile.imageFile">
+ <s:url id="mediaFileURL" value="/roller-ui/rendering/media-resources/%{#mediaFile.id}"></s:url>
+ </s:if>
+ <s:else>
+ <s:url id="mediaFileURL" value="/images/page.png"></s:url>
+ </s:else>
+ <img border="0" src='<s:property value="%{mediaFileURL}" />' width="120px" />
+ <label><s:property value="#mediaFile.name" /></label>
+ <input type="checkbox" name="selectedMediaFiles" value="<s:property value="#mediaFile.id"/>" style="float:left;clear:left"/>
+ <a href='<s:url action="mediaFileEdit"><s:param name="mediaFileId" value="%{#mediaFile.id}" /><s:param name="weblog" value="%{actionWeblog.handle}" /></s:url>'>Edit</a>
+ <a href="#" onclick="onDelete('<s:property value="#mediaFile.id" />')">Delete</a>
+ <a href="#" onclick="onIncludeInGallery('<s:property value="#mediaFile.id" />')">Include in gallery</a>
+ </li>
+ </s:iterator>
+
+</ul>
+</div>
+
+<div style="margin-left:320px">
+New Directory:
+<input type="text" name="newDirectoryName" size="30" />
+<input type="button" value="Create" onclick="onCreateDirectory()" />
+</div>
+
+
+
+
+ <%-- ================================================================== --%>
+ <%-- Weblog edit or preview --%>
+
+
+
+
+
+
+ <%-- ================================================================== --%>
+ <%-- plugin chooser --%>
+
+
+
+
+ <%-- ================================================================== --%>
+ <%-- advanced settings --%>
+
+
+ <%-- ================================================================== --%>
+ <%-- the button box --%>
+
+ <br/>
+ <div class="control">
+ <input type="button" style="padding-left:20px" value="Delete Selected" onclick="onDeleteSelected()" />
+ <input type="button" style="padding-left:20px" value="Move Selected" onclick="onMoveSelected()" />
+ <span style="padding-left:20px">
+ <s:select name="selectedDirectory" list="allDirectories" listKey="id" listValue="path" />
+ </span>
+ </div>
+
+ </s:form>
+
+
Added: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileViewLight.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileViewLight.jsp?rev=749634&view=auto
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileViewLight.jsp (added)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/jsps/editor/MediaFileViewLight.jsp Tue Mar 3 15:44:03 2009
@@ -0,0 +1,12 @@
+<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+{
+"Result":
+[
+ <s:iterator id="directory" value="childDirectories" status="dirStatus">
+{"label":"<s:property value="#directory.name" />","key":"<s:property value="#directory.id" />","type":"dir"}<s:if test="(!#dirStatus.last) || (#dirStatus.last && childFiles.size() > 0)">,</s:if>
+ </s:iterator>
+ <s:iterator id="mediaFile" value="childFiles" status="fileStatus">
+{"label":"<s:property value="#mediaFile.name" />","key":"<s:property value="#mediaFile.id" />","type":"file"}<s:if test="!#fileStatus.last">,</s:if>
+ </s:iterator>
+]
+}
Modified: roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/tiles.xml
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/tiles.xml?rev=749634&r1=749633&r2=749634&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/tiles.xml (original)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/WEB-INF/tiles.xml Tue Mar 3 15:44:03 2009
@@ -209,14 +209,42 @@
<put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
</definition>
- <definition name=".MediaFileAddSuccess" extends=".tiles-tabbedpage" >
+ <definition name=".MediaFileEdit" extends=".tiles-tabbedpage" >
+ <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+ <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileEdit.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=".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=".TabularView" extends=".tiles-tabbedpage" >
+ <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" />
Modified: roller/branches/roller_mediablogging/apps/weblogger/web/roller-ui/styles/roller.css
URL: http://svn.apache.org/viewvc/roller/branches/roller_mediablogging/apps/weblogger/web/roller-ui/styles/roller.css?rev=749634&r1=749633&r2=749634&view=diff
==============================================================================
--- roller/branches/roller_mediablogging/apps/weblogger/web/roller-ui/styles/roller.css (original)
+++ roller/branches/roller_mediablogging/apps/weblogger/web/roller-ui/styles/roller.css Tue Mar 3 15:44:03 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 {