Update of /var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository In directory james.mmbase.org:/tmp/cvs-serv20797/webapp/editors/repository
Modified Files: asset.jsp assetupload.jsp Added Files: assetsearch.jsp Log Message: CMSC-1089 change Assets display in two ways. list and thumbnails. upload image/attachment See also: http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository See also: http://www.mmbase.org/jira/browse/CMSC-1089 assetsearch.jsp is new Index: asset.jsp =================================================================== RCS file: /var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/asset.jsp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -b -r1.5 -r1.6 --- asset.jsp 4 Nov 2008 09:14:43 -0000 1.5 +++ asset.jsp 7 Nov 2008 02:54:48 -0000 1.6 @@ -4,58 +4,31 @@ %><%@ page import="com.finalist.cmsc.security.*" %><mm:content type="text/html" encoding="UTF-8" expires="0"> - <mm:cloud jspvar="cloud" rank="basic user" loginpage="../login.jsp"> - <html:html xhtml="true"> - <mm:import externid="parentchannel" jspvar="parentchannel" vartype="Integer" from="parameters" required="true"/> - <mm:import jspvar="returnurl" id="returnurl">/editors/repository/Asset.do?type=asset&parentchannel=<mm:write +<mm:cloud jspvar="cloud" rank="basic user" loginpage="../login.jsp"> +<mm:import externid="parentchannel" jspvar="parentchannel" vartype="Integer" from="parameters" required="true"/> +<mm:import jspvar="returnurl" id="returnurl">/editors/repository/Asset.do?type=asset&parentchannel=<mm:write referid="parentchannel"/>&direction=down</mm:import> - <cmscedit:head title="images.title"> - <script type="text/javascript"> +<div class="editor"> +<div class="body"> - function showEditItems(id){ - document.getElementById('asset-info-'+id).style.display = 'block'; - document.getElementById('asset-info-'+id).style.display = 2001; - } - function hideEditItems(id){ - document.getElementById('asset-info-'+id).style.display = 'none'; - document.getElementById('asset-info-'+id).style.display = 2000; - } - function changeMode(){ - var assetsMode = document.getElementsByTagName("option"); - for(i = 0; i < assetsMode.length; i++){ - if(assetsMode[i].selected & assetsMode[i].id=="a_list"){ - document.location.href = 'Asset.do?type=asset&parentchannel=<mm:write referid="parentchannel"/>&direction=down'; - }else if(assetsMode[i].selected & assetsMode[i].id=="a_thumbnail"){ - document.location.href = 'Asset.do?type=asset&parentchannel=<mm:write referid="parentchannel"/>&direction=down&show=0'; - } - } - } - </script> - </cmscedit:head> - - - - - <div class="editor"> - <div class="body"> - <!-- check to see if we have workflow, this is done by looking if the editors for the workflow are on the HD --> - <c:set var="hasWorkflow" value="false"/> - <mm:haspage page="/editors/workflow"> +<!-- check to see if we have workflow, this is done by looking if the editors for the workflow are on the HD --> +<c:set var="hasWorkflow" value="false"/> +<mm:haspage page="/editors/workflow"> <c:set var="hasWorkflow" value="true"/> - </mm:haspage> +</mm:haspage> - <mm:node number="$parentchannel" jspvar="parentchannelnode"> - <% UserRole role = RepositoryUtil.getRole(cloud, parentchannelnode, false); %> - <p> +<mm:node number="$parentchannel" jspvar="parentchannelnode"> +<% UserRole role = RepositoryUtil.getRole(cloud, parentchannelnode, false); %> +<p> <fmt:message key="asset.channel"> <fmt:param><mm:field name="path"/></fmt:param> </fmt:message> - </p> - <%@ include file="assetupload.jsp" %> - <% if (role != null && SecurityUtil.isWriter(role)) { %> - <ul class="shortcuts"> +</p> +<%@ include file="assetupload.jsp" %> +<% if (role != null && SecurityUtil.isWriter(role)) { %> +<ul class="shortcuts"> <li class="new" style="text-decoration: none;"><fmt:message key="asset.new"/> <form name="initForm" action="../AssetInitAction.do" method="post" style="display:inline;text-decoration:none"> <input type="hidden" name="action" value="create"/> @@ -64,7 +37,7 @@ <input type="hidden" name="order" value="${orderby}" /> <input type="hidden" name="direction" value="${direction}"/> <input type="hidden" name="offset" value="${param.offset}"/> - <select name="assettype"> + <select name="assettype" id="atype" onchange="document.getElementById('assetType').value=this.value"> <c:forEach var="type" items="${typesList}"> <option value="${type.value}">${type.label}</option> </c:forEach> @@ -72,108 +45,138 @@ <input type="submit" name="submitButton" value="<fmt:message key="asset.create" />" class="button"/> </form> </li> - </ul> - <% } %> - </div> +</ul> +<% } %> +</div> - <div class="ruler_green"> +<div class="ruler_green"> <div><fmt:message key="asset.asset"/></div> - </div> - - <div> - <select name="assesMode" onchange="javascript:changeMode()"> - <c:if test="${empty show}"> - <option id="a_list" selected="selected">list</option> - <option id = "a_thumbnail" >thumbnail</option> - </c:if> - <c:if test="${!empty show}"> - <option id="a_list">list</option> - <option id = "a_thumbnail" selected="selected" >thumbnail</option> - </c:if> - </select> - </div> - <c:if test="${empty show}"> - <div class="body" > - <mm:import externid="elements" from="request" required="true"/> - <mm:import externid="elementCount" from="request" vartype="Integer">0</mm:import> - <mm:import externid="resultsPerPage" from="request" vartype="Integer">25</mm:import> - <c:set var="listSize" value="${elementCount}"/> - <c:set var="offset" value="${param.offset}"/> - <c:set var="extraparams" value="&direction=${param.direction}&parentchannel=${param.parentchannel}"/> - <c:set var="orderby" value="${param.orderby}" scope="page" /> - <c:set var="type" value="asset" scope="page" /> - <%@ include file="../pages.jsp" %> - - <form action="assetMassDelete.do" name="assetForm"> - <input type="hidden" name="offset" value="${param.offset}"/> - <input type="hidden" name="orderby" value="${orderby}" /> - <input type="hidden" name="direction" value="${direction}"/> - <input type="hidden" name="channelnumber" value="<mm:write referid="parentchannel" />"/> - <% if (role != null && SecurityUtil.isWriter(role)) { %> - <c:if test="${fn:length(elements) >1}"> - <input type="submit" class="button" value="<fmt:message key="asset.delete.massdelete" />"/> - </c:if> - <% } %> - <table> - <thead> +</div> +<div class="body"> +<mm:import externid="elements" from="request" required="true"/> +<mm:import externid="elementCount" from="request" vartype="Integer">0</mm:import> +<mm:import externid="resultsPerPage" from="request" vartype="Integer">25</mm:import> +<c:set var="listSize" value="${elementCount}"/> +<c:set var="offset" value="${param.offset}"/> +<c:set var="extraparams" value="&direction=${param.direction}&parentchannel=${param.parentchannel}"/> +<c:set var="orderby" value="${param.orderby}" scope="page" /> +<c:set var="type" value="asset" scope="page" /> +<%@ include file="../pages.jsp" %> + +<form action="AssetMassDelete.do" name="assetForm"> +<input type="hidden" name="offset" value="${param.offset}"/> +<input type="hidden" name="orderby" value="${orderby}" /> +<input type="hidden" name="direction" value="${direction}"/> +<input type="hidden" name="channelnumber" value="<mm:write referid="parentchannel" />"/> +<% if (role != null && SecurityUtil.isWriter(role)) { %> +<c:if test="${fn:length(elements) >1}"> +<input type="submit" class="button" value="<fmt:message key="asset.delete.massdelete" />"/> +</c:if> +<% } %> +<table> +<thead> <tr> <th><% if (role != null && SecurityUtil.isWriter(role)) { %> <c:if test="${fn:length(elements) >1}"> - <input type="checkbox" name="selectall" onclick="selectAll(this.checked, 'assetForm', 'chk_');" value="on"/></c:if> <% } %></th> + <input type="checkbox" name="selectall" onclick="selectAll(this.checked, 'assetForm', 'chk_');" value="on"/> + </c:if> + <% } %> + </th> <th><a href="javascript:sortBy('Asset', 'otype','<mm:write referid="parentchannel" />')" class="headerlink"> <fmt:message key="asset.typecolumn"/></a></th> <th><a href="javascript:sortBy('Asset', 'title','<mm:write referid="parentchannel" />')" class="headerlink"> <fmt:message key="asset.titlecolumn"/></a></th> <th><a href="javascript:sortBy('Asset', 'creator','<mm:write referid="parentchannel" />')" class="headerlink"> - <fmt:message key="asset.authorcolumn"/></a> </th> + <fmt:message key="asset.authorcolumn"/></a></th> <th><a href="javascript:sortBy('Asset', 'lastmodifieddate','<mm:write referid="parentchannel" />')" class="headerlink"> <fmt:message key="asset.lastmodifiedcolumn"/></a></th> <th><a href="javascript:sortBy('Asset', 'number','<mm:write referid="parentchannel" />')" class="headerlink"> <fmt:message key="asset.numbercolumn"/></a></th> - <th> </th> + <th></th> </tr> - </thead> +</thead> <script src="../repository/asset.js" language="JavaScript" type="text/javascript"></script> - <tbody class="hover"> - <mm:listnodes referid="elements" jspvar="node"> - <mm:field name="number" write="false" id="number" vartype="String"/> - <mm:field name="number" write="false" id="relnumber"/> +<tbody class="hover"> +<mm:listnodes referid="elements" jspvar="node"> +<mm:field name="number" write="false" id="number" vartype="String"/> +<mm:field name="number" write="false" id="relnumber"/> - <mm:url page="../WizardInitAction.do" id="url" write="false"> +<mm:url page="../WizardInitAction.do" id="url" write="false"> <mm:param name="objectnumber" value="$number"/> <mm:param name="returnurl" value="$returnurl"/> - </mm:url> - <tr <mm:even inverse="true">class="swap"</mm:even> href="<mm:write referid="url"/>"> +</mm:url> +<tr <mm:even inverse="true">class="swap"</mm:even> href="<mm:write referid="url"/>"> <td style="white-space: nowrap;"> <% if (role != null && SecurityUtil.isWriter(role)) { %> <c:if test="${fn:length(elements) >1}"> <input type="checkbox" name="chk_<mm:field name="number" />" value="<mm:field name="number" />" onClick="document.forms['contentForm'].elements.selectall.checked=false;"/> </c:if> <% } %> - <%@ include file="icons.jspf"%> - </td> - <td onMouseDown="objClick(this);"> - <mm:nodeinfo type="guitype"/></td> - <td onMouseDown="objClick(this);"> + <a href="javascript:callEditWizard('<mm:field name="number" />');" + title="<fmt:message key="asset.edit" />"><img src="../gfx/icons/edit.png" width="16" height="16" + title="<fmt:message key="asset.edit" />" + alt="<fmt:message key="asset.edit" />"/></a> + <a href="<cmsc:contenturl number="${number}"/>" target="_blank"><img src="../gfx/icons/preview.png" + alt="<fmt:message key="asset.preview.title" />" + title="<fmt:message key="asset.preview.title" />"/></a> + <a href="javascript:showInfo('<mm:nodeinfo type="guitype"/>', '<mm:field name="number" />');"> + <img src="../gfx/icons/info.png" title="<fmt:message key="asset.info"/>" alt="<fmt:message key="asset.info"/>"/></a> + <mm:haspage page="/editors/versioning"> + <c:url value="/editors/versioning/ShowVersions.do" var="showVersions"> + <c:param name="nodenumber"><mm:field name="number"/></c:param> + </c:url> + <a href="#" onclick="openPopupWindow('versioning', 750, 550, '${showVersions}')"><img + src="../gfx/icons/versioning.png" title="<fmt:message key="asset.icon.versioning.title" />" + alt="<fmt:message key="asset.icon.versioning.title" />"/></a> + </mm:haspage> + <% if (role != null && SecurityUtil.isWriter(role)) { %> + <a href="javascript:unpublish('<mm:write referid="parentchannel" />','<mm:field name="number" />');" + title="<fmt:message key="asset.delete" />"><img src="../gfx/icons/delete.png" width="16" height="16" + title="<fmt:message key="asset.delete" />" + alt="<fmt:message key="asset.delete" />"/></a> + <% } %> + + <cmsc:hasfeature name="savedformmodule"> + <c:set var="typeval"> + <mm:nodeinfo type="type"/> + </c:set> + <c:if test="${typeval == 'responseform'}"> + <mm:url page="/editors/savedform/ShowSavedForm.do" id="showSavedForms" write="false"> + <mm:param name="nodenumber"><mm:field name="number"/></mm:param> + <mm:param name="initreturnurl" value="${returnurl}"/> + </mm:url> + <a href="<mm:write referid="showSavedForms"/>"><img src="../gfx/icons/application_form_magnify.png" + title="<fmt:message key="asset.icon.savedform.title" />" + alt="<fmt:message key="asset.icon.savedform.title" />"/></a> + </c:if> + </cmsc:hasfeature> +</td> +<td onMouseDown="objClick(this);"> + <mm:nodeinfo type="guitype"/> +</td> +<td onMouseDown="objClick(this);"> <mm:field id="title" write="false" name="title"/> <c:if test="${fn:length(title) > 50}"> <c:set var="title">${fn:substring(title,0,49)}...</c:set> - </c:if>${title}</td> - <td onMouseDown="objClick(this);" style="white-space: nowrap;"> + </c:if> + ${title} +</td> +<td onMouseDown="objClick(this);" style="white-space: nowrap;"> <mm:field name="lastmodifier" id="lastmodifier" write="false"/> <mm:listnodes type="user" constraints="username = '${lastmodifier}'"> <c:set var="lastmodifierFull"><mm:field name="firstname"/> <mm:field name="prefix"/> <mm:field name="surname"/></c:set> <c:if test="${lastmodifierFull != ''}"><c:set var="lastmodifier" value="${lastmodifierFull}"/></c:if> </mm:listnodes> - ${lastmodifier}</td> - <td style="white-space: nowrap;"><mm:field name="lastmodifieddate"><cmsc:dateformat + ${lastmodifier} +</td> +<td style="white-space: nowrap;"><mm:field name="lastmodifieddate"><cmsc:dateformat displaytime="true"/></mm:field></td> - <td><mm:field name="number"/></td> - </td> - <c:if test="${hasWorkflow}"> +<td><mm:field name="number"/></td> +</td> +<c:if test="${hasWorkflow}"> <td width="10" onMouseDown="objClick(this);"> <c:set var="status" value="waiting"/> <mm:relatednodes type="workflowitem" constraints="type='asset'"> @@ -188,85 +191,20 @@ alt="<fmt:message key="asset.status" />: <fmt:message key="asset.status.${status}" />" title="<fmt:message key="asset.status" />: <fmt:message key="asset.status.${status}" />"/> </td> - </c:if> - </tr> - </mm:listnodes> - </tbody> - </table> - <% if (role != null && SecurityUtil.isWriter(role)) { %> - <c:if test="${fn:length(elements) >1}"> - <input type="submit" class="button" value="<fmt:message key="asset.delete.massdelete" />"/> - </c:if> - <% } %> - </form> - <%@ include file="../pages.jsp" %> - </div> - </c:if> - - - - <c:if test="${!empty show}"> - <div class="body"> - <mm:import externid="elements" from="request" required="true"/> - <mm:import externid="elementCount" from="request" vartype="Integer">0</mm:import> - <mm:import externid="resultsPerPage" from="request" vartype="Integer">25</mm:import> - <c:set var="listSize" value="${elementCount}"/> - <c:set var="offset" value="${param.offset}"/> - <c:set var="orderby" value="${param.orderby}" scope="page" /> - <c:set var="type" value="asset" scope="page" /> - <c:set var="extraparams" value="&direction=${param.direction}&parentchannel=${param.parentchannel}&show=0"/> - <%@ include file="../pages.jsp" %> - <form> - <input type="hidden" name="offset" value="${param.offset}"/> - <input type="hidden" name="orderby" value="${orderby}" /> - <input type="hidden" name="direction" value="${direction}"/> - - <div width="100%;float:left;"> - <mm:listnodes referid="elements"> - <div style="width:150px; height:150px;float:left;text-align:center;" onMouseOut="javascript:hideEditItems(<mm:field name='number'/>)" onMouseOver="showEditItems(<mm:field name='number'/>)" > - <div class="asset-info" id="asset-info-<mm:field name='number'/>" style="display: none; position: absolute; border-style: ridge;" > - <%@ include file="icons.jspf" %> - </div> - <div style="width:100%;height:100px;text-align:center;padding:10px;vertical-align:middle;"> - <a href="javascript:showInfo(<mm:field name="number" />)"> - <c:set var="type" ><mm:nodeinfo type="guitype"/></c:set> - <c:if test="${type eq 'Image'}"> - <img src="<mm:image template="s(120x100)"/>" alt=""/> - </c:if> - <c:if test="${type eq 'Attachment'}"> - <img src="../gfx/alert_green_left.gif" alt=""/>change - </c:if> - <c:if test="${type eq 'URL'}"> - need to add - </c:if> - - </a> - </div> - <div style="width:130px;text-align:center;margin:0px 10px 0px 10px;overflow-x:hidden;"> - <c:set var="type" ><mm:nodeinfo type="guitype"/></c:set> - <c:if test="${type eq 'Image'}"> - <mm:field name="title"/><br/><mm:field name="itype"/> - </c:if> - <c:if test="${type eq 'Attachment'}"> - need to change - </c:if> - <c:if test="${type eq 'URL'}"> - need to add - </c:if> - </div> - </div> - </mm:listnodes> - <div style="clear:both;"></div> - <div> - </form> - <%@ include file="../pages.jsp" %> - </div> - </c:if> - </mm:node> - </div> - - - - </html:html> - </mm:cloud> +</c:if> +</tr> +</mm:listnodes> +</tbody> +</table> +<% if (role != null && SecurityUtil.isWriter(role)) { %> +<c:if test="${fn:length(elements) >1}"> +<input type="submit" class="button" value="<fmt:message key="asset.delete.massdelete" />"/> +</c:if> +<% } %> +</form> +<%@ include file="../pages.jsp" %> +</div> +</div> +</mm:node> +</mm:cloud> </mm:content> \ No newline at end of file Index: assetupload.jsp =================================================================== RCS file: /var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/assetupload.jsp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -b -r1.2 -r1.3 --- assetupload.jsp 3 Nov 2008 02:37:39 -0000 1.2 +++ assetupload.jsp 7 Nov 2008 02:54:48 -0000 1.3 @@ -2,51 +2,45 @@ <script src="../repository/search.js" type="text/javascript"></script> <script type="text/javascript"> function upload() { - var f=document.forms[0]; - f.submit(); + if(document.getElementById("atype").options[document.getElementById("atype").options.selectedIndex].value=="urls"){ + document.getElementByName("uploadButton").disable=true; + alert("Only attachments and images can be uploaded!"); + } setTimeout('sayWait();',0); - } function sayWait() { document.getElementById("busy").style.visibility="visible"; - document.getElementById("notbusy").style.visibility="hidden"; + //document.getElementById("notbusy").style.visibility="hidden"; } - </script> +</script> -<form action="" enctype="multipart/form-data" method="post"><input - type="hidden" name="uploadAction" value="${param.uploadAction}" /> +<html:form action="/editors/repository/AssetUploadAction.do" enctype="multipart/form-data" method="post"> +<input type="hidden" id="assetType" name="assetType" value="attachments"/> +<input type="hidden" id="parentchannel" name="parentchannel" value="${parentchannel}"/> <table border="0"> <tr> <td><fmt:message key="asset.upload.explanation" /></td> </tr> <tr> - <td><input type="file" name="zipfile" /></td> + <td><html:file property="file" /></td> </tr> <tr> - <td><input type="button" name="uploadButton" onclick="upload();" - value="<fmt:message key="assets.upload.submit" />" /></td> + <td><html:submit property="uploadButton" onclick="upload();"> + <fmt:message key='assets.upload.submit' /></html:submit></td> </tr> </table> -</form> +</html:form> <div id="busy"><fmt:message key="uploading.message.wait" /><br /> </div> <% // retrieve list op node id's from either the recent upload // or from the request url to enable a return url - // TODO move this to a struts action there are some issue with HttpUpload // in combination with struts which have to be investigated first - - String assetType = "attachments"; - //assetType = get value from the submitted form as the asset type - //if(assetType == null){ - //assetType = "attachments"; - //} String uploadedNodes = ""; int numberOfUploadedNodes = -1; if ("post".equalsIgnoreCase(request.getMethod())) { - NodeManager manager = cloud.getNodeManager(assetType); - List<Integer> nodes = BulkUploadUtil.uploadAndStore(manager, request); + List<Integer> nodes = (ArrayList<Integer>)(request.getAttribute("uploadedAssets")); uploadedNodes = BulkUploadUtil.convertToCommaSeparated(nodes); numberOfUploadedNodes = nodes.size(); } else { _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs