Progress on Media File pages; almost done!
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
index a7927b0..1efcd8a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
@@ -167,11 +167,15 @@
continue;
}
- if ( incomingProp != null && propertyDef.getType().equals("boolean") ) {
+ if ( propertyDef.getType().equals("boolean") ) {
try {
- Boolean.parseBoolean(incomingProp);
- updProp.setValue(incomingProp);
+ if (incomingProp == null) {
+ updProp.setValue("false");
+ } else {
+ boolean value = Boolean.parseBoolean(incomingProp);
+ updProp.setValue(Boolean.toString(value));
+ }
log.debug("Set boolean " + propName + " = " + incomingProp);
} catch ( Exception nfe ) {
String propDesc = bundle.getString( propertyDef.getKey() );
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
index f6045d4..810648e 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
@@ -64,8 +64,7 @@
public void myPrepare() {
refreshAllDirectories();
try {
- MediaFileManager mgr = WebloggerFactory.getWeblogger()
- .getMediaFileManager();
+ MediaFileManager mgr = WebloggerFactory.getWeblogger().getMediaFileManager();
if (!StringUtils.isEmpty(bean.getDirectoryId())) {
setDirectory(mgr.getMediaFileDirectory(bean.getDirectoryId()));
}
@@ -79,10 +78,8 @@
* Validates media file metadata to be updated.
*/
public void myValidate() {
- MediaFile fileWithSameName = getDirectory().getMediaFile(
- getBean().getName());
- if (fileWithSameName != null
- && !fileWithSameName.getId().equals(getMediaFileId())) {
+ MediaFile fileWithSameName = getDirectory().getMediaFile(getBean().getName());
+ if (fileWithSameName != null && !fileWithSameName.getId().equals(getMediaFileId())) {
addError("MediaFile.error.duplicateName", getBean().getName());
}
}
@@ -94,8 +91,7 @@
*/
@SkipValidation
public String execute() {
- MediaFileManager manager = WebloggerFactory.getWeblogger()
- .getMediaFileManager();
+ MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
try {
MediaFile mediaFile = manager.getMediaFile(getMediaFileId());
this.bean.copyFrom(mediaFile);
@@ -119,8 +115,7 @@
public String save() {
myValidate();
if (!hasActionErrors()) {
- MediaFileManager manager = WebloggerFactory.getWeblogger()
- .getMediaFileManager();
+ MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
try {
MediaFile mediaFile = manager.getMediaFile(getMediaFileId());
bean.copyTo(mediaFile);
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp
deleted file mode 100644
index 665a095..0000000
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp
+++ /dev/null
@@ -1,181 +0,0 @@
-<%--
- 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" %>
-<%@ page import="org.apache.roller.weblogger.config.WebloggerConfig" %>
-
-<s:if test="bean.isImage">
- <div class="mediaFileThumbnail">
- <a href='<s:property value="bean.permalink" />' target="_blank">
- <img align="right" alt="thumbnail" src='<s:property value="bean.thumbnailURL" />'
- title='<s:text name="mediaFileEdit.clickToView" />' />
- </a>
- </div>
-</s:if>
-
-<p class="subtitle">
- <s:text name="mediaFileEdit.subtitle">
- <s:param value="bean.name" />
- </s:text>
-</p>
-
-<p class="pagetip">
- <s:text name="mediaFileEdit.pagetip" />
-</p>
-
-<s:form id="entry" action="mediaFileEdit!save" method="POST" enctype="multipart/form-data">
- <s:hidden name="salt" />
- <s:hidden name="weblog" />
- <s:hidden name="mediaFileId" id="mediaFileId" />
- <s:hidden name="bean.permalink" />
-
- <%-- ================================================================== --%>
- <%-- Title, category, dates and other metadata --%>
-
- <table class="entryEditTable" cellpadding="0" cellspacing="0" width="100%">
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="status"><s:text name="generic.name" /></label>
- </td>
- <td>
- <s:textfield name="bean.name" size="35" maxlength="100" tabindex="1" />
- </td>
- </tr>
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="fileInfo"><s:text name="mediaFileEdit.fileInfo" /></label>
- </td>
- <td>
- <s:text name="mediaFileEdit.fileTypeSize">
- <s:param value="bean.contentType" />
- <s:param value="bean.length" />
- </s:text>
- <s:if test="bean.isImage">
- <s:text name="mediaFileEdit.fileDimensions">
- <s:param value="bean.width" />
- <s:param value="bean.height" />
- </s:text>
- </s:if>
- </td>
- </tr>
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="status"><s:text name="mediaFileEdit.permalink"/></label>
- </td>
- <td>
- <s:url var="linkIconURL" value="/images/link.png"></s:url>
-
- <a href='<s:property value="bean.permalink" />' target="_blank"
- title='<s:text name="mediaFileEdit.linkTitle" />'>
- <img border="0" src='<s:property value="%{linkIconURL}" />' style="padding:2px 2px;" alt="link"/>
- </a>
-
- <input type="text" id="clip_text" size="50" style="width:90%"
- value='<s:property value="bean.permalink" />' readonly/>
-
- </td>
- </tr>
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="status"><s:text name="generic.description" /></label>
- </td>
- <td>
- <s:textarea name="bean.description" cols="50" rows="2" tabindex="2" style="width:70%" />
- </td>
- </tr>
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="tags"><s:text name="mediaFileEdit.tags" /></label>
- </td>
- <td>
- <s:textfield name="bean.tagsAsString" size="30" maxlength="100" tabindex="3" style="width:70%"/>
- </td>
- </tr>
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="copyright"><s:text name="mediaFileEdit.copyright" /></label>
- </td>
- <td>
- <s:textfield name="bean.copyrightText" size="30" maxlength="100" tabindex="4" style="width:70%"/>
- </td>
- </tr>
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="directoryId"><s:text name="mediaFileEdit.directory" /></label>
- </td>
- <td>
- <s:select name="bean.directoryId" list="allDirectories"
- listKey="id" listValue="name" tabindex="5" />
- </td>
- </tr>
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="status"><s:text name="mediaFileEdit.includeGallery" /></label>
- </td>
- <td>
- <s:checkbox name="bean.sharedForGallery" tabindex="6" />
- <s:text name="mediaFileEdit.includeGalleryHelp" />
- </td>
- </tr>
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="title"><s:text name="mediaFileEdit.updateFileContents" /></label>
- </td>
- <td>
- <div id="fileControldiv" class="miscControl">
- <s:file id="fileControl" name="uploadedFile" size="30" />
- <br />
- </div>
- </td>
- </tr>
-
- <!-- original path from base URL of ctx/resources/ -->
- <s:if test="getBooleanProp('mediafile.originalPathEdit.enabled')">
- <tr>
- <td class="originalPathLabel">
- <label for="originalPath"><s:text name="mediaFileEdit.originalPath" /></label>
- </td>
- <td>
- <div id="originalPathdiv" class="miscControl">
- <s:textfield name="bean.originalPath" id="originalPath" size="30" maxlength="100" tabindex="3" />
- <br />
- </div>
- </td>
- </tr>
- </s:if>
-
- </table>
-
- <div class="control">
- <input type="submit" tabindex="7"
- value="<s:text name="generic.save" />" name="submit" />
- <input type="button" tabindex="8"
- value="<s:text name="generic.cancel" />" onClick="javascript:window.parent.onEditCancelled();" />
- </div>
-
-</s:form>
-
-
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileSidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileSidebar.jsp
index 9de1166..4d1df58 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileSidebar.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileSidebar.jsp
@@ -22,112 +22,69 @@
<div class="menu-tl">
<div class="sidebarInner">
- <br />
- <b><s:text name="mediaFileSidebar.actions" /></b>
- <br />
- <br />
+ <h3><s:text name="mediaFileSidebar.actions"/></h3>
- <span class="glyphicon glyphicon-folder-open"></span>
- <s:url var="mediaFileAddURL" action="mediaFileAdd">
- <s:param name="weblog" value="%{actionWeblog.handle}" />
- <s:param name="directoryName" value="%{directoryName}" />
- </s:url>
- <a href='<s:property escapeHtml="false" value="%{mediaFileAddURL}" />'
- <s:if test="actionName.equals('mediaFileAdd')"> style='font-weight:bold;'</s:if> >
- <s:text name="mediaFileSidebar.add" />
- </a>
-
- <s:if test="!pager">
-
- <%-- Only show Create New Directory control when NOT showing search results --%>
- <br /><br />
- <div>
- <span class="glyphicon glyphicon-picture"></span>
- <s:text name="mediaFileView.addDirectory" /><br />
- <div style="padding-left:2em; padding-top:1em">
- <s:text name="mediaFileView.directoryName" />
- <input type="text" id="newDirectoryName" name="newDirectoryName" size="10" maxlength="25" />
- <input type="button" id="newDirectoryButton" class="btn btn-primary"
- value='<s:text name="mediaFileView.create" />' onclick="onCreateDirectory()" />
- </div>
+ <div style="clear:right">
+ <span class="glyphicon glyphicon-folder-open"></span>
+ <s:url var="mediaFileAddURL" action="mediaFileAdd">
+ <s:param name="weblog" value="%{actionWeblog.handle}"/>
+ <s:param name="directoryName" value="%{directoryName}"/>
+ </s:url>
+ <a href='<s:property escapeHtml="false" value="%{mediaFileAddURL}" />'
+ <s:if test="actionName.equals('mediaFileAdd')"> style='font-weight:bold;'</s:if> >
+ <s:text name="mediaFileSidebar.add"/>
+ </a>
</div>
- </s:if>
- <br />
- <hr size="1" noshade="noshade" />
- <br />
+ <s:if test="!pager">
+ <%-- Only show Create New Directory control when NOT showing search results --%>
+ <div style="clear:right; margin-top: 1em">
+ <span class="glyphicon glyphicon-picture"></span>
+ <s:text name="mediaFileView.addDirectory"/><br/>
+ <div style="padding-left:2em; padding-top:1em">
+ <s:text name="mediaFileView.directoryName"/>
+ <input type="text" id="newDirectoryName" name="newDirectoryName" size="10" maxlength="25"/>
+ <input type="button" id="newDirectoryButton" class="btn btn-primary"
+ value='<s:text name="mediaFileView.create" />' onclick="onCreateDirectory()"/>
+ </div>
+ </div>
+ </s:if>
- <b><s:text name="mediaFileView.search" /></b>
- <br />
- <br />
+ <hr size="1" noshade="noshade"/>
+
+ <h3><s:text name="mediaFileView.search"/></h3>
<s:form id="mediaFileSearchForm" name="mediaFileSearchForm"
- action="mediaFileView!search" theme="bootstrap" cssClass="form-horizontal">
- <s:hidden name="salt" />
- <s:hidden name="weblog" />
+ action="mediaFileView!search" theme="bootstrap" cssClass="form-vertical">
+ <s:hidden name="salt"/>
+ <s:hidden name="weblog"/>
+ <input type="hidden" name="mediaFileId" value=""/>
- <input type="hidden" name="mediaFileId" value="" />
- <table class="mediaFileSearchTable" cellpadding="0" cellspacing="3" width="100%">
+ <s:textfield id="beanName" name="bean.name" size="20" maxlength="255"
+ label="%{getText('generic.name')}"/>
- <tr>
- <td>
- <label for="name"><s:text name="generic.name" /></label>
- </td>
- <td>
- <s:textfield id="beanName" name="bean.name" size="20" maxlength="255" />
- </td>
- </tr>
+ <s:select id="beanType" name="bean.type"
+ list="fileTypes" listKey="key" listValue="value"
+ label="%{getText('mediaFileView.type')}"/>
- <tr>
- <td>
- <label for="type"><s:text name="mediaFileView.type" /></label>
- </td>
- <td>
- <s:select id="beanType" name="bean.type"
- list="fileTypes" listKey="key" listValue="value" />
- </td>
- </tr>
+ <s:select name="bean.sizeFilterType" id="sizeFilterTypeCombo"
+ list="sizeFilterTypes" listKey="key" listValue="value"
+ label="%{getText('mediaFileView.size')}"/>
- <tr>
- <td>
- <label for="size"><s:text name="mediaFileView.size" /></label>
- </td>
- <td width="80%">
- <s:select name="bean.sizeFilterType" id="sizeFilterTypeCombo"
- list="sizeFilterTypes" listKey="key" listValue="value" />
- <s:textfield id="beanSize" name="bean.size"
- size="3" maxlength="10" />
- <s:select name="bean.sizeUnit"
- list="sizeUnits" listKey="key" listValue="value" />
- </td>
- </tr>
+ <s:textfield id="beanSize" name="bean.size" size="3" maxlength="10" />
- <tr>
- <td width="10%">
- <label for="tags"><s:text name="mediaFileView.tags" /></label>
- </td>
- <td>
- <s:textfield id="beanTags" name="bean.tags"
- size="20" maxlength="50" />
- </td>
- </tr>
+ <s:select name="bean.sizeUnit" list="sizeUnits" listKey="key" listValue="value" />
- <tr>
- <td>
- <s:submit id="searchButton" cssClass="btn btn-primary"
- value="%{getText('mediaFileView.search')}" cssStyle="margin:5px 0px;"/>
- </td>
- <td>
- <s:if test="pager">
- <input id="resetButton" style="margin:5px 0px;" type="button" cssClass="btn"
- name="reset" value='<s:text name="mediaFileView.reset" />' />
- </s:if>
-
- </td>
- <td> </td>
- <td> </td>
- </tr>
- </table>
+ <s:textfield id="beanTags" name="bean.tags" size="20" maxlength="50"
+ label="%{getText('mediaFileView.tags')}"/>
+
+ <s:submit id="searchButton" cssClass="btn btn-primary"
+ value="%{getText('mediaFileView.search')}" cssStyle="margin:5px 0;"/>
+
+ <s:if test="pager">
+ <input id="resetButton" style="margin:5px 0;" type="button" class="btn"
+ name="reset" value='<s:text name="mediaFileView.reset" />'/>
+ </s:if>
</s:form>
@@ -137,51 +94,53 @@
</div>
-
<script>
-function onCreateDirectory() {
- document.mediaFileViewForm.newDirectoryName.value = $("#newDirectoryName").get(0).value;
- document.mediaFileViewForm.action='<s:url action="mediaFileView!createNewDirectory" />';
- document.mediaFileViewForm.submit();
-}
+ function onCreateDirectory() {
+ document.mediaFileViewForm.newDirectoryName.value = $("#newDirectoryName").get(0).value;
+ document.mediaFileViewForm.action = '<s:url action="mediaFileView!createNewDirectory" />';
+ document.mediaFileViewForm.submit();
+ }
-$("#newDirectoryButton").ready(function () {
- $("#newDirectoryName").bind("keyup", maintainDirectoryButtonState);
- $("#newDirectoryButton").attr("disabled", true);
-});
-
-function maintainDirectoryButtonState(e) {
- if ( jQuery.trim($("#newDirectoryName").get(0).value).length == 0) {
+ $("#newDirectoryButton").ready(function () {
+ $("#newDirectoryName").bind("keyup", maintainDirectoryButtonState);
$("#newDirectoryButton").attr("disabled", true);
- } else {
- $("#newDirectoryButton").attr("disabled", false);
- }
-}
-
-$("#searchButton").ready(function () {
-
- maintainSearchButtonState();
- $("input").bind("keyup", maintainSearchButtonState);
- $("select").bind("change", maintainSearchButtonState);
-
- $("#resetButton").bind("click", function() {
- <s:url var="mediaFileViewURL" action="mediaFileView">
- <s:param name="weblog" value="%{actionWeblog.handle}" />
- </s:url>
- window.location = '<s:property value="%{mediaFileViewURL}" />';
});
-});
-function maintainSearchButtonState(e) {
- if ( jQuery.trim($("#beanName").get(0).value).length == 0
- && jQuery.trim($("#beanTags").get(0).value).length == 0
- && (jQuery.trim($("#beanSize").get(0).value).length == 0 || $("#beanSize").get(0).value == 0)
- && ($("#beanType").get(0).value.length == 0 || $("#beanType").get(0).value == "mediaFileView.any")) {
- $("#searchButton").attr("disabled", true);
- } else {
- $("#searchButton").attr("disabled", false);
+ function maintainDirectoryButtonState(e) {
+ if (jQuery.trim($("#newDirectoryName").get(0).value).length === 0) {
+ $("#newDirectoryButton").attr("disabled", true);
+ } else {
+ $("#newDirectoryButton").attr("disabled", false);
+ }
}
-}
+
+ $("#searchButton").ready(function () {
+
+ maintainSearchButtonState();
+ $("input").bind("keyup", maintainSearchButtonState);
+ $("select").bind("change", maintainSearchButtonState);
+
+ $("#resetButton").bind("click", function () {
+ <s:url var="mediaFileViewURL" action="mediaFileView">
+ <s:param name="weblog" value="%{actionWeblog.handle}" />
+ </s:url>
+ window.location = '<s:property value="%{mediaFileViewURL}" />';
+ });
+ });
+
+ function maintainSearchButtonState(e) {
+ var beanSize = $("#beanSize").get(0).value;
+ var beanType = $("#beanType").get(0).value;
+
+ if (jQuery.trim($("#beanName").get(0).value).length === 0
+ && jQuery.trim($("#beanTags").get(0).value).length === 0
+ && (jQuery.trim(beanSize).length === 0 || beanSize === 0)
+ && (beanType.length === 0 || beanType === "mediaFileView.any")) {
+ $("#searchButton").attr("disabled", true);
+ } else {
+ $("#searchButton").attr("disabled", false);
+ }
+ }
</script>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
index 491a18d..c30f863 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
@@ -17,81 +17,6 @@
--%>
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-
-<script>
- toggleState = 'Off'
-
- function onSelectDirectory(id) {
- window.location = "<s:url action="mediaFileView" />?directoryId=" + id + "&weblog=" + '<s:property value="actionWeblog.handle" />';
- }
-
- function onToggle() {
- if (toggleState == 'Off') {
- toggleState = 'On';
- toggleFunction(true, 'selectedMediaFiles');
- $("#deleteButton").attr('disabled',false)
- $("#moveButton").attr('disabled',false)
- $("#moveTargetMenu").attr('disabled',false)
- } else {
- toggleState = 'Off';
- toggleFunction(false, 'selectedMediaFiles');
- $("#deleteButton").attr('disabled',true)
- $("#moveButton").attr('disabled',true)
- $("#moveTargetMenu").attr('disabled',true)
- }
- }
-
- function onDeleteSelected() {
- if ( confirm("<s:text name='mediaFile.delete.confirm' />") ) {
- document.mediaFileViewForm.action='<s:url action="mediaFileView!deleteSelected" />';
- document.mediaFileViewForm.submit();
- }
- }
-
- function onDeleteFolder() {
- if (confirm("<s:text name='mediaFile.deleteFolder.confirm' />")) {
- document.bookmarks.action='<s:url action="mediaFileView!deleteFolder" />';
- document.bookmarks.submit();
- }
- }
-
- function onMoveSelected() {
- if ( confirm("<s:text name='mediaFile.move.confirm' />") ) {
- document.mediaFileViewForm.action='<s:url action="mediaFileView!moveSelected" />';
- document.mediaFileViewForm.submit();
- }
- }
-
- function onView() {
- document.mediaFileViewForm.action = "<s:url action='mediaFileView!view' />";
- document.mediaFileViewForm.submit();
- }
-
- <%-- code to toggle buttons on/off as media file/directory selections change --%>
-
- $(document).ready(function() {
- $("#deleteButton").attr('disabled',true)
- $("#moveButton").attr('disabled',true)
- $("#moveTargetMenu").attr('disabled',true)
-
- $("input[type=checkbox]").change(function() {
- var count = 0;
- $("input[type=checkbox]").each(function(index, element) {
- if (element.checked) count++;
- });
- if (count == 0) {
- $("#deleteButton").attr('disabled',true)
- $("#moveButton").attr('disabled',true)
- $("#moveTargetMenu").attr('disabled',true)
- } else {
- $("#deleteButton").attr('disabled',false)
- $("#moveButton").attr('disabled',false)
- $("#moveTargetMenu").attr('disabled',false)
- }
- });
- });
-</script>
-
<s:form id="createPostForm" action='entryAddWithMediaFile'>
<s:hidden name="salt" />
<input type="hidden" name="weblog" value='<s:property value="actionWeblog.handle" />' />
@@ -111,7 +36,6 @@
<s:param value="weblog" />
</s:text>
</p>
- </p>
<p class="pagetip">
<s:text name="mediaFileView.rootPageTip" />
</p>
@@ -170,9 +94,6 @@
</s:if>
</ul>
- </p>
- <br />
-
</s:elseif>
<s:else>
@@ -254,19 +175,20 @@
<img border="0" src='<s:property value="%{#mediaFile.thumbnailURL}" />'
width='<s:property value="#mediaFile.thumbnailWidth"/>'
height='<s:property value="#mediaFile.thumbnailHeight"/>'
- title='<s:property value="#mediaFile.name" />' />
+ title='<s:property value="#mediaFile.name" />'
+ onclick="onClickEdit('<s:property value="#mediaFile.id"/>')" />
</s:if>
<s:else>
- <s:url var="mediaFileURL" value="/images/page.png"></s:url>
+ <s:url var="mediaFileURL" value="/images/page.png" />
<img border="0" src='<s:property value="%{mediaFileURL}" />'
- style="padding:40px 50px;" alt="logo" />
+ style="padding:40px 50px;" alt="logo"
+ onclick="onClickEdit('<s:property value="#mediaFile.id"/>')" />
</s:else>
</div>
- <div class="mediaObjectInfo"
- onmouseover='setupMenuButton("<s:property value='#mediaFile.id' />")'>
+ <div class="mediaObjectInfo" >
<input type="checkbox"
name="selectedMediaFiles"
@@ -315,8 +237,7 @@
</div>
- <div class="mediaObjectInfo"
- onmouseover='setupMenuButton("<s:property value='#mediaFile.id' />")'>
+ <div class="mediaObjectInfo">
<input type="checkbox"
name="selectedMediaFiles"
@@ -380,32 +301,137 @@
</s:if>
-<%-- ***************************************************************** --%>
+<%-- ================================================================================================ --%>
-<div id="mediafile_edit_lightbox" title="<s:text name='mediaFileEdit.popupTitle'/>" style="display:none">
- <iframe id="mediaFileEditor"
- style="visibility:inherit"
- height="100%"
- width="100%"
- frameborder="no"
- scrolling="auto">
- </iframe>
-</div>
+<%-- view image modal --%>
+
+<div id="mediafile_edit_lightbox" class="modal fade" tabindex="-1" role="dialog">
+
+ <div class="modal-dialog modal-lg">
+
+ <div class="modal-content">
+
+ <div class="modal-header">
+
+ </div> <%-- modal header --%>
+
+ <div class="modal-body">
+
+ <s:if test="bean.isImage">
+ <div class="mediaFileThumbnail">
+ <a href='<s:property value="bean.permalink" />' target="_blank">
+ <img align="right" alt="thumbnail" src='<s:property value="bean.thumbnailURL" />'
+ title='<s:text name="mediaFileEdit.clickToView" />'/>
+ </a>
+ </div>
+ </s:if>
+
+ <p class="subtitle">
+ <s:text name="mediaFileEdit.subtitle">
+ <s:param value="bean.name"/>
+ </s:text>
+ </p>
+
+ <p class="pagetip">
+ <s:text name="mediaFileEdit.pagetip"/>
+ </p>
+
+ <s:form id="entry" action="mediaFileEdit!save" method="POST" enctype="multipart/form-data"
+ theme="bootd=strap" class="form-vertical">
+
+ <s:hidden name="salt"/>
+ <s:hidden name="weblog"/>
+ <s:hidden name="mediaFileId" id="mediaFileId"/>
+ <s:hidden name="bean.permalink"/>
+
+ <%-- ================================================================== --%>
+ <%-- Title, category, dates and other metadata --%>
+
+ <s:textfield name="bean.name" size="35" maxlength="100" tabindex="1"
+ label="%{getText('generic.name')}"/>
+
+ <label for="fileInfo"><s:text name="mediaFileEdit.fileInfo"/></label>
+ <s:text name="mediaFileEdit.fileTypeSize">
+ <s:param value="bean.contentType"/>
+ <s:param value="bean.length"/>
+ </s:text>
+ <s:if test="bean.isImage">
+ <s:text name="mediaFileEdit.fileDimensions">
+ <s:param value="bean.width"/>
+ <s:param value="bean.height"/>
+ </s:text>
+ </s:if>
+
+ <s:url var="linkIconURL" value="/images/link.png" />
+
+ <a href='<s:property value="bean.permalink" />' target="_blank"
+ title='<s:text name="mediaFileEdit.linkTitle" />'>
+ <img border="0" src='<s:property value="%{linkIconURL}" />' style="padding:2px 2px;" alt="link"/>
+ </a>
+
+ <input type="text" id="clip_text" size="50" style="width:90%"
+ value='<s:property value="bean.permalink" />' readonly/>
+
+
+ <s:textarea name="bean.description" cols="50" rows="2" tabindex="2" style="width:70%"
+ label="%{getText('generic.description')}"/>
+
+ <s:textfield name="bean.tagsAsString" size="30" maxlength="100" tabindex="3" style="width:70%"
+ label="%{getText('mediaFileEdit.tags')}"/>
+
+ <s:textfield name="bean.copyrightText" size="30" maxlength="100" tabindex="4" style="width:70%"
+ label="%{getText('mediaFileEdit.copyright')}"/>
+
+ <s:select name="bean.directoryId" list="allDirectories"
+ listKey="id" listValue="name" tabindex="5" label="%{getText('')}"/>
+
+ <s:checkbox name="bean.sharedForGallery" tabindex="6" label="%{getText('')}"/>
+ <s:text name="mediaFileEdit.includeGalleryHelp"/>
+
+ <div id="fileControldiv" class="miscControl">
+ <s:file id="fileControl" name="uploadedFile" size="30" label="%{getText('')}"/>
+ </div>
+
+ <!-- original path from base URL of ctx/resources/ -->
+ <s:if test="getBooleanProp('mediafile.originalPathEdit.enabled')">
+ <div id="originalPathdiv" class="miscControl">
+ <s:textfield name="bean.originalPath" id="originalPath" size="30"
+ maxlength="100" tabindex="3"/>
+ </div>
+ </s:if>
+
+ <div class="control">
+ <input type="submit" tabindex="7"
+ value="<s:text name="generic.save" />" name="submit"/>
+ <input type="button" tabindex="8"
+ value="<s:text name="generic.cancel" />" onClick="window.parent.onEditCancelled();"/>
+ </div>
+
+ </s:form>
+
+ </div> <%-- modal body --%>
+
+ <div class="modal-footer">
+
+ </div> <%-- modal footer --%>
+
+ </div> <%-- modal content --%>
+
+ </div> <%-- modal dialog --%>
+
+</div> <%-- modal --%>
+
<script>
+ toggleState = 'Off'
+
function onClickEdit(mediaFileId) {
<s:url var="mediaFileEditURL" action="mediaFileEdit">
<s:param name="weblog" value="%{actionWeblog.handle}" />
</s:url>
- $("#mediaFileEditor").attr('src',
- '<s:property value="%{mediaFileEditURL}" />' + '&mediaFileId=' + mediaFileId);
- $(function() {
- $("#mediafile_edit_lightbox").dialog({
- modal : true,
- width : 600,
- height : 630
- });
- });
+ $("#mediaFileEditor").attr('src', '<s:property value="%{mediaFileEditURL}" />' + '&mediaFileId=' + mediaFileId);
+
+ $('#mediafile_edit_lightbox').modal({show: true});
}
function onEditSuccess() {
@@ -417,8 +443,77 @@
$("#mediafile_edit_lightbox").dialog("close");
$("#mediaFileEditor").attr('src','about:blank');
}
-</script>
-<br/>
-<br/>
-<br/>
\ No newline at end of file
+
+ function onSelectDirectory(id) {
+ window.location = "<s:url action="mediaFileView" />?directoryId="
+ + id + "&weblog=" + '<s:property value="actionWeblog.handle" />';
+ }
+
+ function onToggle() {
+ if (toggleState === 'Off') {
+ toggleState = 'On';
+ toggleFunction(true, 'selectedMediaFiles');
+ $("#deleteButton").attr('disabled',false);
+ $("#moveButton").attr('disabled',false);
+ $("#moveTargetMenu").attr('disabled',false);
+ } else {
+ toggleState = 'Off';
+ toggleFunction(false, 'selectedMediaFiles');
+ $("#deleteButton").attr('disabled',true);
+ $("#moveButton").attr('disabled',true);
+ $("#moveTargetMenu").attr('disabled',true)
+ }
+ }
+
+ function onDeleteSelected() {
+ if ( confirm("<s:text name='mediaFile.delete.confirm' />") ) {
+ document.mediaFileViewForm.action='<s:url action="mediaFileView!deleteSelected" />';
+ document.mediaFileViewForm.submit();
+ }
+ }
+
+ function onDeleteFolder() {
+ if (confirm("<s:text name='mediaFile.deleteFolder.confirm' />")) {
+ document.bookmarks.action='<s:url action="mediaFileView!deleteFolder" />';
+ document.bookmarks.submit();
+ }
+ }
+
+ function onMoveSelected() {
+ if ( confirm("<s:text name='mediaFile.move.confirm' />") ) {
+ document.mediaFileViewForm.action='<s:url action="mediaFileView!moveSelected" />';
+ document.mediaFileViewForm.submit();
+ }
+ }
+
+ function onView() {
+ document.mediaFileViewForm.action = "<s:url action='mediaFileView!view' />";
+ document.mediaFileViewForm.submit();
+ }
+
+ <%-- code to toggle buttons on/off as media file/directory selections change --%>
+
+ $(document).ready(function() {
+ $("#deleteButton").attr('disabled',true);
+ $("#moveButton").attr('disabled',true);
+ $("#moveTargetMenu").attr('disabled',true);
+
+ $("input[type=checkbox]").change(function() {
+ var count = 0;
+ $("input[type=checkbox]").each(function(index, element) {
+ if (element.checked) count++;
+ });
+ if (count === 0) {
+ $("#deleteButton").attr('disabled',true);
+ $("#moveButton").attr('disabled',true);
+ $("#moveTargetMenu").attr('disabled',true)
+ } else {
+ $("#deleteButton").attr('disabled',false);
+ $("#moveButton").attr('disabled',false);
+ $("#moveTargetMenu").attr('disabled',false)
+ }
+ });
+ });
+
+</script>
\ No newline at end of file
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
index 4af4c2e..7c832e0 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
@@ -18,7 +18,7 @@
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
<nav class="navbar navbar-default navbar-static-top navbar-inverse">
- <div class="container">
+ <div class="container-fluid">
<div id="navbar" class="navbar-collapse collapse">
<div class="navbar-header">
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp
index 6b46c64..fc599f4 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp
@@ -31,7 +31,7 @@
<tiles:insertAttribute name="banner" />
</div>
- <div id="wrapper" class="container">
+ <div id="wrapper" class="container-fluid">
<div id="leftcontent_wrap">
<div id="leftcontent">
</div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp
index dfb5bcd..01abda9 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp
@@ -31,7 +31,7 @@
<tiles:insertAttribute name="banner" />
</div>
- <div id="wrapper" class="container">
+ <div id="wrapper" class="container-fluid">
<div id="leftcontent_wrap">
<div id="leftcontent">
</div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp
index e9d503f..08cd90b 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp
@@ -32,7 +32,7 @@
<tiles:insertAttribute name="banner"/>
<tiles:insertAttribute name="bannerStatus"/>
-<div class="container">
+<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
index 939bbef..ec41074 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
@@ -33,7 +33,7 @@
<tiles:insertAttribute name="bannerStatus"/>
-<div class="container">
+<div class="container-fluid">
<div class="row">
@@ -60,7 +60,7 @@
</div>
<footer class="footer">
- <div class="container">
+ <div class="container-fluid">
<tiles:insertAttribute name="footer"/>
</div>
</footer>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp
index 1455f3d..a8703ed 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp
@@ -27,7 +27,7 @@
<body>
- <div id="wrapper" class="container">
+ <div id="wrapper" class="container-fluid">
<div id="leftcontent_wrap">
<div id="leftcontent">
</div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp
index 4b7197b..9a1100e 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp
@@ -30,7 +30,7 @@
<tiles:insertAttribute name="bannerStatus"/>
-<div class="container">
+<div class="container-fluid">
<div class="row">
<div class="col-md-12 roller-column-left">
@@ -46,7 +46,7 @@
</div>
<footer class="footer">
- <div class="container">
+ <div class="container-fluid">
<tiles:insertAttribute name="footer"/>
</div>
</footer>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp
index cd11777..0076aaf 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp
@@ -32,7 +32,7 @@
<tiles:insertAttribute name="banner"/>
<tiles:insertAttribute name="bannerStatus"/>
-<div class="container">
+<div class="container-fluid">
<div class="row">
<div class="col-md-2"></div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp
index 9ac335b..2354139 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp
@@ -33,7 +33,7 @@
<tilesx:useAttribute name="sidebar" id="sidebar" classname="java.lang.String"/>
-<div class="container">
+<div class="container-fluid">
<div class="row">
@@ -72,7 +72,7 @@
</div>
<footer class="footer">
- <div class="container">
+ <div class="container-fluid">
<tiles:insertAttribute name="footer"/>
</div>
</footer>
diff --git a/app/src/main/webapp/WEB-INF/tiles.xml b/app/src/main/webapp/WEB-INF/tiles.xml
index 4f38a19..80dc017 100644
--- a/app/src/main/webapp/WEB-INF/tiles.xml
+++ b/app/src/main/webapp/WEB-INF/tiles.xml
@@ -222,11 +222,6 @@
<put-attribute name="styles" value="/WEB-INF/jsps/tiles/empty.jsp" />
</definition>
- <definition name=".MediaFileEdit" extends=".tiles-popuppage" >
- <put-attribute name="head" value="/WEB-INF/jsps/tiles/head.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.jsp" />
<put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileAddExternalInclude.jsp" />