Commit 0f8c0b1e authored by toaster's avatar toaster
Browse files

modify display based on auth, swap driver patches

git-svn-id: https://subversion.umiacs.umd.edu/ace/trunk@25 f1b3a171-7291-4a19-a512-95ad0ad9394a
parent 3b9cac93
......@@ -171,14 +171,18 @@ public class SwapIterator implements Iterator<FileBean> {
private String[] extractPathList( SwapFile file ) throws InterruptedException {
int substrLength = rootFile.getFullPath().length();
if (rootFile.getFullPath().equals("/"))
substrLength = 0;
// build directory path
List<String> dirPathList = new ArrayList<String>();
String currFile = file.getFullPath();
while ( !currFile.equals(rootFile.getFullPath()) ) {
// LOG.trace("Adding dir to path: " + currFile.substring(substrLength));
LOG.trace("Adding dir to path: " + currFile.substring(substrLength) + " subsr " + substrLength + " root " + rootFile.getFullPath() + " full " + currFile);
dirPathList.add(currFile.substring(substrLength));
currFile = currFile.substring(0, currFile.lastIndexOf('/'));
if (Strings.isEmpty(currFile))
currFile = "/";
}
return dirPathList.toArray(new String[dirPathList.size()]);
......@@ -210,9 +214,13 @@ public class SwapIterator implements Iterator<FileBean> {
try {
while ( !finished ) {
loadLoack.lockInterruptibly();
SwapFile file;
SwapFile file = null;
try {
file = loadNext();
}
catch (Exception e)
{
LOG.error("Uncaught listing exception ",e);
} finally {
loadLoack.unlock();
}
......
package edu.umiacs.ace.util;
import javax.servlet.jsp.JspException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.tagext.TagSupport;
/**
*
* @author toaster
*/
public class AuthTagHandler extends TagSupport {
private String role;
@Override
public int doStartTag() throws JspException {
HttpServletRequest req = (HttpServletRequest) pageContext.getRequest();
if ( req.isUserInRole(role) ) {
return EVAL_BODY_INCLUDE;
} else {
return SKIP_BODY;
}
}
public void setRole( String role ) {
this.role = role;
}
}
......@@ -28,7 +28,7 @@
* Maryland Institute for Advanced Computer Study.
*/
// $Id$
package edu.umiacs.ace.monitor.access;
package edu.umiacs.ace.util;
import java.text.Format;
import java.text.SimpleDateFormat;
......
......@@ -28,7 +28,7 @@
* Maryland Institute for Advanced Computer Study.
*/
// $Id$
package edu.umiacs.ace.monitor.access;
package edu.umiacs.ace.util;
import java.text.DecimalFormat;
import javax.servlet.jsp.tagext.*;
......
......@@ -83,7 +83,7 @@
</tag>
<tag>
<name>FileSize</name>
<tag-class>edu.umiacs.ace.monitor.access.FileSizeHandler</tag-class>
<tag-class>edu.umiacs.ace.util.FileSizeHandler</tag-class>
<body-content>empty</body-content>
<attribute>
<name>value</name>
......@@ -99,7 +99,7 @@
</tag>
<tag>
<name>DateAdd</name>
<tag-class>edu.umiacs.ace.monitor.access.DateAdd</tag-class>
<tag-class>edu.umiacs.ace.util.DateAdd</tag-class>
<body-content>empty</body-content>
<attribute>
<name>date</name>
......@@ -120,4 +120,15 @@
<type>java.lang.String</type>
</attribute>
</tag>
<tag>
<name>Auth</name>
<tag-class>edu.umiacs.ace.util.AuthTagHandler</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>role</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
</attribute>
</tag>
</taglib>
......@@ -586,6 +586,18 @@
<role-name>Modify Partner Sites</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<display-name>Compare</display-name>
<web-resource-collection>
<web-resource-name>Compare</web-resource-name>
<description/>
<url-pattern>/Compare</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>Compare</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Audit Manager</realm-name>
......
......@@ -11,11 +11,11 @@ on Libraries node in Projects view can be used to add the JSTL 1.1 library.
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="/WEB-INF/tlds/monitor" prefix="m"%>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Browse Collection</title>
......@@ -27,8 +27,8 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
margin-left: 10px;
white-space: nowrap;
}
#scrollDirectory {
height: 400px;
padding-left: 10px;
......@@ -60,13 +60,13 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
#reptable {
margin-top: 30px;
width: 100%;
}
img {
border: 0 0 0 0;
}
.statusM {
color: #ff0000;
}
......@@ -78,39 +78,39 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
}
.badreplica {
}
</style>
</head>
<body>
<jsp:include page="header.jsp" />
<div id="scrollContainer">
<div id="scrollDirectory">
<c:forEach var="dir" items="${directoryTree.roots}">
<m:tree var="dn" node="${dir}">
<m:dirbegin>
<c:choose>
<c:when test="${dn.directory}">
<a href="Browse?item=${dn.id}"><img src="images/folder.jpg" >&nbsp;<span class="status${dn.status}">${dn.name}</span></a><BR>
<div class="directory">
</c:when>
<c:otherwise>
<a href="Browse?item=${dn.id}"><img src="images/file.jpg">&nbsp;<span class="status${dn.status}">${dn.name}</span></a><br>
</c:otherwise>
</c:choose>
</m:dirbegin>
<m:dirend>
<c:if test="${dn.directory}">
</div>
</c:if>
</m:dirend>
</m:tree>
</c:forEach>
<div class="directory">
</c:when>
<c:otherwise>
<a href="Browse?item=${dn.id}"><img src="images/file.jpg">&nbsp;<span class="status${dn.status}">${dn.name}</span></a><br>
</c:otherwise>
</c:choose>
</m:dirbegin>
<m:dirend>
<c:if test="${dn.directory}">
</div>
</c:if>
</m:dirend>
</m:tree>
</c:forEach>
</div>
</div>
<div id="description">
......@@ -119,74 +119,89 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<table>
<tr><td>Last Checked</td><td>${selectedFile.root.lastVisited}</td></tr>
<tr><td>Last Seen Intact</td><td>${selectedFile.root.lastSeen}</td></tr>
<tr><td>Path</td><td>${selectedFile.root.path}<td></tr>
<tr><td>Size</td><td><m:FileSize value="${selectedFile.root.size}" /><td></tr>
<tr><td>Path</td><td>${selectedFile.root.path}</td></tr>
<tr><td>Size</td><td><m:FileSize value="${selectedFile.root.size}" /></td></tr>
<tr><td>State</td><td>
<c:choose>
<c:when test="${selectedFile.root.state eq 'A'}">
<img src="images/file-ok.jpg">
</c:when>
<c:when test="${selectedFile.root.state eq 'C'}">
Corrupt
</c:when>
<c:when test="${selectedFile.root.state eq 'T'}">
Token Missing
</c:when>
<c:when test="${selectedFile.root.state eq 'M'}">
File Missing
</c:when>
<c:when test="${selectedFile.root.state eq 'P'}">
Remote File Missing
</c:when>
<c:when test="${selectedFile.root.state eq 'D'}">
Remote File Corrupt
</c:when>
</c:choose>
</td></tr>
<c:if test="${!selectedFile.root.directory}">
</c:when>
<c:when test="${selectedFile.root.state eq 'C'}">
Corrupt
</c:when>
<c:when test="${selectedFile.root.state eq 'T'}">
Token Missing
</c:when>
<c:when test="${selectedFile.root.state eq 'M'}">
File Missing
</c:when>
<c:when test="${selectedFile.root.state eq 'P'}">
Remote File Missing
</c:when>
<c:when test="${selectedFile.root.state eq 'D'}">
Remote File Corrupt
</c:when>
</c:choose>
</td></tr>
<c:if test="${!selectedFile.root.directory}">
<tr><td>Last Change</td><td>${selectedFile.root.stateChange}</td></tr>
<tr><td>${selectedFile.root.parentCollection.digestAlgorithm} Digest</td><td style="font-size: 10px;">${selectedFile.root.fileDigest}</td></tr>
</c:if>
</table>
<c:if test="${!selectedFile.root.directory}">
<a href="EventLog?logpath=${selectedFile.root.path}&amp;clear=1">View Log</a>&nbsp;&nbsp;&nbsp;&nbsp;
<c:if test="${selectedFile.root.token.id != null}">
<a href="DownloadToken?tokenid=${selectedFile.root.token.id}">View Token</a>&nbsp;&nbsp;&nbsp;&nbsp;
</c:if>
<c:if test="${selectedFile.root.parentCollection.proxyData}">
<a href="Path/${selectedFile.root.parentCollection.name}${selectedFile.root.path}">Download Item</a>&nbsp;&nbsp;&nbsp;&nbsp;
</c:if>
<a href="ShowDuplicates?itemid=${selectedFile.root.id}">View Duplicates</a>&nbsp;&nbsp;&nbsp;&nbsp;
<m:Auth role="Log">
<a href="EventLog?logpath=${selectedFile.root.path}&amp;clear=1">View Log</a>&nbsp;&nbsp;&nbsp;&nbsp;
</m:Auth>
<m:Auth role="Download Token">
<c:if test="${selectedFile.root.token.id != null}">
<a href="DownloadToken?tokenid=${selectedFile.root.token.id}">View Token</a>&nbsp;&nbsp;&nbsp;&nbsp;
</c:if>
</m:Auth>
<m:Auth role="Download Item">
<c:if test="${selectedFile.root.parentCollection.proxyData}">
<a href="Path/${selectedFile.root.parentCollection.name}${selectedFile.root.path}">Download Item</a>&nbsp;&nbsp;&nbsp;&nbsp;
</c:if>
</m:Auth>
<m:Auth role="Show Duplicates">
<a href="ShowDuplicates?itemid=${selectedFile.root.id}">View Duplicates</a>&nbsp;&nbsp;&nbsp;&nbsp;
</m:Auth>
</c:if>
<c:if test="${!auditing}">
<a href="RemoveItem?itemid=${selectedFile.root.id}">Remove</a>&nbsp;&nbsp;&nbsp;&nbsp;
<c:if test="${selectedFile.root.directory}">
<a href="StartSync?type=file&amp;collectionid=${selectedFile.root.parentCollection.id}&amp;itemid=${selectedFile.root.id}">Audit Files</a>&nbsp;&nbsp;&nbsp;&nbsp;
</c:if>
<m:Auth role="Remove Item">
<a href="RemoveItem?itemid=${selectedFile.root.id}">Remove</a>&nbsp;&nbsp;&nbsp;&nbsp;
</m:Auth>
<m:Auth role="Audit">
<c:if test="${selectedFile.root.directory}">
<a href="StartSync?type=file&amp;collectionid=${selectedFile.root.parentCollection.id}&amp;itemid=${selectedFile.root.id}">Audit Files</a>&nbsp;&nbsp;&nbsp;&nbsp;
</c:if>
</m:Auth>
</c:if>
<c:if test="${selectedFile.root.directory}">
<a href="Summary?collectionid=${selectedFile.root.parentCollection.id}&amp;itemid=${selectedFile.root.id}&amp;output=digest">Download Digests</a>&nbsp;&nbsp;&nbsp;&nbsp;
<a href="Summary?collectionid=${selectedFile.root.parentCollection.id}&amp;itemid=${selectedFile.root.id}&amp;output=checkm">Checkm Manifest</a>&nbsp;&nbsp;&nbsp;&nbsp;
<m:Auth role="Summary">
<c:if test="${selectedFile.root.directory}">
<a href="Summary?collectionid=${selectedFile.root.parentCollection.id}&amp;itemid=${selectedFile.root.id}&amp;output=digest">Download&nbsp;Digests</a>&nbsp;&nbsp;&nbsp;&nbsp;
<a href="Summary?collectionid=${selectedFile.root.parentCollection.id}&amp;itemid=${selectedFile.root.id}&amp;output=checkm">Checkm&nbsp;Manifest</a>&nbsp;&nbsp;&nbsp;&nbsp;
<c:if test="${selectedFile.root.parentCollection.proxyData}">
<a href="Summary?collectionid=${selectedFile.root.parentCollection.id}&amp;itemid=${selectedFile.root.id}&amp;output=wget">Web&nbsp;Crawler&nbsp;URL&nbsp;List</a>
</c:if>
<c:if test="${selectedFile.root.parentCollection.proxyData}">
<a href="Summary?collectionid=${selectedFile.root.parentCollection.id}&amp;itemid=${selectedFile.root.id}&amp;output=wget">Web Crawler URL List</a>
<!--
<br><br>
<FORM METHOD=POST ENCTYPE="multipart/form-data" ACTION="Compare">
<input type="hidden" name="collectionid" value="${workingCollection.collection.id}">
<input type="hidden" name="itemid" value="${selectedFile.root.id}">
Filter supplied file: <input type="text" NAME="filter" size="30" value="${selectedFile.root.path}"><br>
Manifest file to compare: <INPUT TYPE=FILE NAME="upfile"><BR><br>
<INPUT TYPE=SUBMIT VALUE="Submit">
</FORM>
-->
</c:if>
<!--
<br><br>
<FORM METHOD=POST ENCTYPE="multipart/form-data" ACTION="Compare">
<input type="hidden" name="collectionid" value="${workingCollection.collection.id}">
<input type="hidden" name="itemid" value="${selectedFile.root.id}">
Filter supplied file: <input type="text" NAME="filter" size="30" value="${selectedFile.root.path}"><br>
Manifest file to compare: <INPUT TYPE=FILE NAME="upfile"><BR><br>
<INPUT TYPE=SUBMIT VALUE="Submit">
</FORM>
-->
</c:if>
</m:Auth>
</c:if>
</div>
<jsp:include page="footer.jsp" />
</body>
</html>
<%@page pageEncoding="UTF-8"%>
<%--
The taglib directive below imports the JSTL library. If you uncomment it,
you must also add the JSTL library to the project. The Add Library... action
on Libraries node in Projects view can be used to add the JSTL 1.1 library.
--%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
......@@ -61,14 +57,14 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<h3>Collection Differences</h3>
<pre>${results.message}</pre>
<h4>Files in original collection, but not in supplied</h4>
<h4>Files monitored here, but not in supplied/remote</h4>
<ul>
<c:forEach items="${results.unseenTargetFiles}" var="item" >
<li> ${item} </li>
</c:forEach>
</ul>
<h4>Files in supplied file, but not original collection</h4>
<h4>Files in supplied/remote, but not monitored here</h4>
<ul>
<c:forEach items="${results.unseenSuppliedFiles}" var="item" >
<li> ${item} </li>
......@@ -80,8 +76,8 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<ul>
<li>Hash: ${item.digest}</li>
<ul>
<li>Supplied: ${item.destinationName}</li>
<li>Collection: ${item.sourceName}</li>
<li>Remote or Supplied: ${item.destinationName}</li>
<li>Local File: ${item.sourceName}</li>
</ul>
</ul>
</c:forEach>
......@@ -91,8 +87,8 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<ul>
<li>Name: ${item.name}</li>
<ul>
<li>Collection: ${item.targetDigest}</li>
<li>Supplied: ${item.sourceDigest}</li>
<li>Remote or Supplied: ${item.targetDigest}</li>
<li>Local File: ${item.sourceDigest}</li>
</ul>
</ul>
......
......@@ -7,6 +7,7 @@ on Libraries node in Projects view can be used to add the JSTL 1.1 library.
--%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="/WEB-INF/tlds/monitor" prefix="um"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
......@@ -16,20 +17,29 @@ on Libraries node in Projects view can be used to add the JSTL 1.1 library.
<tr>
<td align="center">
<div class="menucell">
<a href="Status">Status</a><BR>
<um:Auth role="Status">
<a href="Status">Status</a>
</um:Auth>
<BR>
</div>
</td>
<td align="center">
<div class="menucell">
<a href="EventLog?clear=1">Event Log</a>
<um:Auth role="Log">
<a href="EventLog?clear=1">Event Log</a>
</um:Auth>
<BR>
</div>
</td>
<td align="center">
<div class="menucell">
<c:if test="${authmanagement}">
<a href="Users">Accounts</a><BR>
</c:if>
<um:Auth role="Users">
<c:if test="${authmanagement}">
<a href="Users">Accounts</a>
</c:if>
</um:Auth>
<BR>
</div>
</td>
......
......@@ -202,11 +202,13 @@
myp.innerHTML='${counttotal} / <c:choose><c:when test="${sizetotal > 0}"><d:FileSize value="${sizetotal}" /></c:when><c:otherwise>0 B</c:otherwise></c:choose>';
</script>
<tr><td colspan="5"><br/><a href="ManageCollection">Add Collection</a> &nbsp;&nbsp;&nbsp&nbsp;&nbsp;
<c:choose>
<c:when test="${pause.paused}"><a href="Pause?pause=0">Enable Automated Auditing</a></c:when>
<c:otherwise><a href="Pause?pause=1">Pause Automated Auditing</a></c:otherwise>
</c:choose>
<tr><td colspan="5"><br/><d:Auth role="Collection Modify"><a href="ManageCollection">Add Collection</a></d:Auth> &nbsp;&nbsp;&nbsp&nbsp;&nbsp;
<d:Auth role="Audit">
<c:choose>
<c:when test="${pause.paused}"><a href="Pause?pause=0">Enable Automated Auditing</a></c:when>
<c:otherwise><a href="Pause?pause=1">Pause Automated Auditing</a></c:otherwise>
</c:choose>
</d:Auth>
</td></tr>
<tr><td colspan="5"><br /><img src="images/running.jpg" alt="running"/> - Audit in progress&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/stopped.jpg" alt="stopped"/> - Audit idle</td></tr>
<tr><td colspan="5">* - Total files and status not updated until after first sync.</td></tr>
......
......@@ -129,51 +129,64 @@
</table>
<table id="dettable">
<tr>
<c:if test="${!workingCollection.tokenAuditRunning && workingCollection.collection.storage != null}">
<c:choose>
<c:when test="${workingCollection.fileAuditRunning}">
<td><a href="StopSync?type=file&amp;collectionid=${workingCollection.collection.id}" title="Stop File Audit" ><img src="images/stop.jpg" alt="Stop File Audit" ></a></td>
</c:when>
<c:otherwise>
<td><a href="StartSync?type=file&amp;collectionid=${workingCollection.collection.id}" title="Start File Audit"><img src="images/file-audit-start.jpg" alt="Start File Audit" ></a></td>
</c:otherwise>
</c:choose>
</c:if>
<c:if test="${!workingCollection.fileAuditRunning}">
<c:choose>
<c:when test="${workingCollection.tokenAuditRunning}">
<td><a href="StopSync?type=token&amp;collectionid=${workingCollection.collection.id}" title="Stop Token Audit" ><img src="images/stop.jpg" alt="Stop Token Audit" ></a></td>
</c:when>
<c:otherwise>
<td><a href="StartSync?type=token&amp;collectionid=${workingCollection.collection.id}" title="Start Token Audit"><img src="images/token-audit-start.jpg" alt="Token File Audit" ></a></td>
</c:otherwise>
</c:choose>
</c:if>
<um:Auth role="Audit">
<c:if test="${!workingCollection.tokenAuditRunning && workingCollection.collection.storage != null}">
<c:choose>
<c:when test="${workingCollection.fileAuditRunning}">
<td><a href="StopSync?type=file&amp;collectionid=${workingCollection.collection.id}" title="Stop File Audit" ><img src="images/stop.jpg" alt="Stop File Audit" ></a></td>
</c:when>
<c:otherwise>
<td><a href="StartSync?type=file&amp;collectionid=${workingCollection.collection.id}" title="Start File Audit"><img src="images/file-audit-start.jpg" alt="Start File Audit" ></a></td>
</c:otherwise>
</c:choose>
</c:if>
<c:if test="${!workingCollection.fileAuditRunning}">
<c:choose>
<c:when test="${workingCollection.tokenAuditRunning}">
<td><a href="StopSync?type=token&amp;collectionid=${workingCollection.collection.id}" title="Stop Token Audit" ><img src="images/stop.jpg" alt="Stop Token Audit" /></a></td>
</c:when>
<c:otherwise>
<td><a href="StartSync?type=token&amp;collectionid=${workingCollection.collection.id}" title="Start Token Audit"><img src="images/token-audit-start.jpg" alt="Token File Audit" ></a></td>
</c:otherwise>
</c:choose>
</c:if>
</um:Auth>
<!--<td><a href="#" onclick="javascript:showBrowse(${workingCollection.collection.id}); return false;">Browse</a>-->
<td><a href="Browse?collection=${workingCollection.collection.id}" title="Browse"><img src="images/browse.jpg" alt="Browse"></a>
<td><a href="EventLog?collection=${workingCollection.collection.id}&amp;clear=1&amp;toggletype=sync"><img title="Event Log" src="images/log.jpg" alt="View Log"></a></td>
<td><a href="Report?collectionid=${workingCollection.collection.id}" title="Report"><img src="images/report.jpg" alt="Report"></a></td>
<um:Auth role="Browse"><td><a href="Browse?collection=${workingCollection.collection.id}" title="Browse"><img src="images/browse.jpg" alt="Browse"></a></td></um:Auth>
<um:Auth role="Log"><td><a href="EventLog?collection=${workingCollection.collection.id}&amp;clear=1&amp;toggletype=sync"><img title="Event Log" src="images/log.jpg" alt="View Log"></a></td></um:Auth>
<um:Auth role="Report"><td><a href="Report?collectionid=${workingCollection.collection.id}" title="Report"><img src="images/report.jpg" alt="Report"></a></td></um:Auth>
<td>
<fieldset id="dropmenu2" style="display: none; z-index: 2; position: absolute; background-color: #FFFFFF; width: 150px;">
<legend><span onclick="toggleVisibility('dropmenu1'); toggleVisibility('dropmenu2');">close</span></legend>
<c:if test="${!(workingCollection.fileAuditRunning || workingCollection.tokenAuditRunning)}">
<a href="ManageCollection?collectionid=${workingCollection.collection.id}" title="Configure connection settings for this collection" >Collection Settings</a><br>
<a href="collectionremove.jsp" title="Delete Collection">Remove Collection</a><br>
<a href="ManageFilters?collectionid=${workingCollection.collection.id}">Modify Filters</a><BR>
<a href="ReportConfiguration?collectionid=${workingCollection.collection.id}">Modify Reporting</a><br>
</c:if>
<a href="Summary?collectionid=${workingCollection.collection.id}&amp;output=digest" title="Download a list of all digests in this collection">Download Digests</a><br>
<a href="Summary?collectionid=${workingCollection.collection.id}&amp;output=checkm" title="Download a checkm manifest of all items in this collection">Download checkm list</a><br>
<c:if test="${workingCollection.collection.proxyData}">
<a href="Summary?collectionid=${workingCollection.collection.id}&amp;output=wget" title="Down wget-compatible list of files in this collection">Download wget file list</a><br>
<um:Auth role="Collection Modify">
<a href="ManageCollection?collectionid=${workingCollection.collection.id}" title="Configure connection settings for this collection" >Collection Settings</a><br>
<a href="collectionremove.jsp" title="Delete Collection">Remove Collection</a><br>
<a href="ManageFilters?collectionid=${workingCollection.collection.id}">Modify Filters</a><BR>
</um:Auth>
<um:Auth role="Modify Activity Reporting">
<a href="ReportConfiguration?collectionid=${workingCollection.collection.id}">Modify Reporting</a><br>
</um:Auth>
</c:if>
<a href="compare_form.jsp">Compare Collection</a><br>
<a href="ReportDuplicates?collectionid=${workingCollection.collection.id}">Show Duplicate Files</a>
<a href="ViewSummary?collectionid=${workingCollection.collection.id}&amp;limit=50" title="View all activity reports">Activity Reports</a>
<um:Auth role="Summary">
<a href="Summary?collectionid=${workingCollection.collection.id}&amp;output=digest" title="Download a list of all digests in this collection">Download Digests</a><br>
<a href="Summary?collectionid=${workingCollection.collection.id}&amp;output=checkm" title="Download a checkm manifest of all items in this collection">Download checkm list</a><br>
<c:if test="${workingCollection.collection.proxyData}">
<a href="Summary?collectionid=${workingCollection.collection.id}&amp;output=wget" title="Down wget-compatible list of files in this collection">Download wget file list</a><br>
</c:if>
</um:Auth>
<um:Auth role="Compare">
<a href="compare_form.jsp">Compare Collection</a><br>
</um:Auth>
<um:Auth role="Show Duplicates">
<a href="ReportDuplicates?collectionid=${workingCollection.collection.id}">Show Duplicate Files</a>
</um:Auth>
<um:Auth role="View Audit Summaries">
<a href="ViewSummary?collectionid=${workingCollection.collection.id}&amp;limit=50" title="View all activity reports">Activity Reports</a>
</um:Auth>
</fieldset>
<div id="dropmenu1" style="display: block;" onclick="toggleVisibility('dropmenu1'); toggleVisibility('dropmenu2'); ">more...</div>
......
......@@ -31,6 +31,7 @@ input {
}
.menuheader {
float: right;
}
.menuheader table {
......@@ -71,7 +72,7 @@ width: 100%;