Mercurial > hg > LGDataverses
changeset 14:be7787c36e58 default tip
new: nofity LGSercies for deleted files
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Mon, 02 Nov 2015 16:41:23 +0100 |
parents | d3374217e19e |
children | |
files | src/main/java/config.properties src/main/java/de/mpiwg/gazetteer/servlet/GetDatafile.java src/main/java/de/mpiwg/gazetteer/servlet/SaveResource.java src/main/java/de/mpiwg/gazetteer/utils/HTTPUtils.java src/main/java/de/mpiwg/gazetteer/utils/LGDatasetPage.java src/main/java/edu/harvard/iq/dataverse/DatasetPage.java src/main/webapp/dataset.xhtml src/main/webapp/dataset_orig.xhtml |
diffstat | 8 files changed, 2181 insertions(+), 42 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/config.properties Wed Sep 30 13:55:57 2015 +0200 +++ b/src/main/java/config.properties Mon Nov 02 16:41:23 2015 +0100 @@ -1,8 +1,11 @@ #Local #LGMap=http://localhost:1080/localgazetteers-dev/LGMap +#LGServices=http://localhost:8080/LGServices # Production one: #LGMap=http://localgazetteers.mpiwg-berlin.mpg.de/LGMap +#LGServices=http://localgazetteers.mpiwg-berlin.mpg.de/LGServices # Development one: LGMap=http://localgazetteers-test.mpiwg-berlin.mpg.de/LGMap +LGServices=http://localgazetteers-test.mpiwg-berlin.mpg.de/LGServices \ No newline at end of file
--- a/src/main/java/de/mpiwg/gazetteer/servlet/GetDatafile.java Wed Sep 30 13:55:57 2015 +0200 +++ b/src/main/java/de/mpiwg/gazetteer/servlet/GetDatafile.java Mon Nov 02 16:41:23 2015 +0100 @@ -105,7 +105,7 @@ String str; while ((str = in.readLine()) != null) { // TODO file may not be from LGServices which are not in the right format we can parse here - + dataString += str.replace("\t", ","); dataString += "\n"; }
--- a/src/main/java/de/mpiwg/gazetteer/servlet/SaveResource.java Wed Sep 30 13:55:57 2015 +0200 +++ b/src/main/java/de/mpiwg/gazetteer/servlet/SaveResource.java Mon Nov 02 16:41:23 2015 +0100 @@ -35,6 +35,7 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.lang.StringUtils; +import org.primefaces.json.JSONArray; import org.primefaces.json.JSONException; import org.primefaces.json.JSONObject; import org.primefaces.model.UploadedFile; @@ -94,6 +95,9 @@ protected JSONObject saveFile(UpFile upFile) { + + JSONObject jsonSavedResult= new JSONObject(); + //String datasetGlobalId = "doi:10.5072/FK2/1EWLIR"; String datasetGlobalId = params.get("datasetGlobalId"); dataset = datasetService.findByGlobalId(datasetGlobalId); @@ -107,18 +111,27 @@ InputStream fileStream = new ByteArrayInputStream(fileContent.getBytes(StandardCharsets.UTF_8)); dFileList = ingestService.createDataFiles(workingVersion, fileStream, fileName, contentType); + } catch (IOException ioex) { logger.warning("Failed to process and/or save the file " + upFile.getFileName() + "; " + ioex.getMessage()); - + + try { + jsonSavedResult.put("status", "error"); + jsonSavedResult.put("message", "Failed to process and/or save the file " + upFile.getFileName() + "; " + ioex.getMessage()); + } catch (JSONException e) { + + e.printStackTrace(); + } + return jsonSavedResult; } - + // get file list in the dataset first (before add file), in order to compare with the list after saving, to get saved fileId + List<DataFile> beforeAdding = dataset.getFiles(); - ingestService.addFiles(workingVersion, dFileList); - - JSONObject jsonSavedResult= new JSONObject(); - + ingestService.addFiles(workingVersion, dFileList); + + // Use the API to save the dataset: Command<Dataset> cmd; try { @@ -164,10 +177,14 @@ // queue the data ingest jobs for asynchronous execution: ingestService.startIngestJobs(dataset, (AuthenticatedUser) this.authUser); - - // returning fields, got after saving to dataset, returning info for the saved file. - // indicating the file has been published, since the saving is asynchronous execution, cannot get new file id here? - + // saved fileId is not obvious + List<DataFile> afterAdding = dataset.getFiles(); // get file list after ingestService.addFiles() + List<DataFile> diffList = this.getAddedDataFile(afterAdding, beforeAdding); + + + // try to return fields, got after saving to dataset, returning info for the saved file. + // indicating the file has been uploaded + try { jsonSavedResult.put("status", "ok"); jsonSavedResult.put("message", "Dataset Saved!"); @@ -177,7 +194,12 @@ System.out.println(dataset.getDisplayName()); fileMetadata.put("datasetTitle", dataset.getDisplayName()); - + + // compare beforeAdding and afterAdding list, but it's not efficient to do that. + if (diffList != null) { + fileMetadata.put("fileId", diffList.get(0).getId()); + } + jsonSavedResult.put("fileMetadata", fileMetadata); @@ -188,6 +210,20 @@ return jsonSavedResult; } + + + + + private List<DataFile> getAddedDataFile(List<DataFile> a, + List<DataFile> b) { + + List<DataFile> diff = new ArrayList<DataFile>(a); + diff.removeAll(b); + + return diff; + } + + private void loadParameters(HttpServletRequest request) { params.put("user", request.getParameter("user"));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/gazetteer/utils/HTTPUtils.java Mon Nov 02 16:41:23 2015 +0100 @@ -0,0 +1,114 @@ +package de.mpiwg.gazetteer.utils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; + +public class HTTPUtils { + + final static TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { + @Override + public void checkClientTrusted( final X509Certificate[] chain, final String authType ) { + } + @Override + public void checkServerTrusted( final X509Certificate[] chain, final String authType ) { + } + @Override + public X509Certificate[] getAcceptedIssuers() { + return null; + } + } }; + + + + + public static HttpStringResponse getStringResponse(String url) throws IOException, KeyManagementException, NoSuchAlgorithmException{ + if(url.startsWith("https") || url.startsWith("HTTPS")) + return getHttpSSLStringResponse(url); + return getHttpStringResponse(url); + } + + private static HttpStringResponse getHttpSSLStringResponse(String link) throws IOException, KeyManagementException, NoSuchAlgorithmException{ + + // Install the all-trusting trust manager + final SSLContext sslContext = SSLContext.getInstance( "SSL" ); + sslContext.init( null, trustAllCerts, new java.security.SecureRandom() ); + // Create an ssl socket factory with our all-trusting manager + final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); + + URL url = new URL(link); + HttpURLConnection httpConn = (HttpURLConnection)url.openConnection(); + + ( (HttpsURLConnection) httpConn ).setSSLSocketFactory( sslSocketFactory ); + + + BufferedReader in = null; + if (httpConn.getResponseCode() >= 400) { + in = new BufferedReader( + new InputStreamReader( + httpConn.getErrorStream())); + } else { + in = new BufferedReader( + new InputStreamReader( + httpConn.getInputStream())); + } + + String inputLine; + StringBuilder sb = new StringBuilder(); + while ((inputLine = in.readLine()) != null) + sb.append(inputLine + "\n"); + in.close(); + + return new HttpStringResponse(httpConn.getResponseCode(), sb.toString()); + } + + private static HttpStringResponse getHttpStringResponse(String link) throws IOException{ + + //System.out.println(url); + + URL url = new URL(link); + HttpURLConnection httpConn = (HttpURLConnection)url.openConnection(); + + BufferedReader in = null; + if (httpConn.getResponseCode() >= 400) { + in = new BufferedReader( + new InputStreamReader( + httpConn.getErrorStream())); + } else { + in = new BufferedReader( + new InputStreamReader( + httpConn.getInputStream())); + } + + + String inputLine; + StringBuilder sb = new StringBuilder(); + while ((inputLine = in.readLine()) != null) + sb.append(inputLine + "\n"); + in.close(); + + return new HttpStringResponse(httpConn.getResponseCode(), sb.toString()); + } + + public static class HttpStringResponse{ + public int code; + public String content; + public HttpStringResponse(int code, String content){ + this.code = code; + this.content = content; + } + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/gazetteer/utils/LGDatasetPage.java Mon Nov 02 16:41:23 2015 +0100 @@ -0,0 +1,85 @@ +package de.mpiwg.gazetteer.utils; + + +import java.io.IOException; +import java.net.URLEncoder; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.util.logging.Logger; + +import javax.ejb.EJB; +import javax.faces.context.FacesContext; +import javax.inject.Named; + +import org.apache.commons.lang.StringUtils; +import org.primefaces.json.JSONException; +import org.primefaces.json.JSONObject; + +import de.mpiwg.gazetteer.utils.HTTPUtils.HttpStringResponse; +import edu.harvard.iq.dataverse.DatasetServiceBean; +import edu.harvard.iq.dataverse.FileMetadata; + +@Named("LGDatasetPage") +public class LGDatasetPage{ + + private static final Logger logger = Logger.getLogger(LGDatasetPage.class.getCanonicalName()); + + @EJB + DatasetServiceBean datasetService; + + + // synchronize dataset to LGServices + public String syncDatasetToLGServices(String datasetId, String persistentId) { + logger.info("syncDatasetToLGServices. datasetId: " + datasetId); + + // notify LGServices the deleted file + // this is not efficient + // sync the dataset at once, need to go through all files in the dataset + + HttpStringResponse response = null; + try { + //String LGServicesPath = "http://localhost:8080/LGServices"; + String LGServicesPath = PropertiesUtils.getPropValue("LGServices"); // get property in config.properties file + + String query = LGServicesPath + "/updateFileStatus?datasetId="+datasetId+"&datasetPersistentId="+persistentId; // get all dataverse alias from LGDataverse + + response = HTTPUtils.getStringResponse(query); + JSONObject data = new JSONObject(response.content); + String status = data.getString("status"); + //logger.info("status: " + status); + if (!StringUtils.equals(status, "OK")) { + logger.warning("error when updateFileStatus in LGServices."); + } + + } catch (KeyManagementException | NoSuchAlgorithmException + | IOException | JSONException e) { + + e.printStackTrace(); + } + + return ""; + } + + + // out link to LGMap + public String viewLGMapOutputLink(FileMetadata fm) { + System.out.println("viewLGMapOutputLink"); + + Long fileId = fm.getDataFile().getId(); + + try { + // get LGMap url from the config.properties file + String LGMapPath = PropertiesUtils.getPropValue("LGMap"); // get property in config.properties file + String retVal = LGMapPath + "/map.php?mode=1&name="+URLEncoder.encode(fm.getLabel(), "UTF-8")+"&fileId="+fileId; + //logger.info("open LGMap at " + retVal); + + FacesContext.getCurrentInstance().getExternalContext().redirect(retVal); + } catch (IOException ex) { + logger.warning("Failed to issue a redirect to file download url."); + } + + return ""; + } + + +}
--- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java Wed Sep 30 13:55:57 2015 +0200 +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java Mon Nov 02 16:41:23 2015 +0100 @@ -1190,29 +1190,7 @@ return ""; } - // zoe added - // out link to LGMap - public String viewLGMapOutputLink(FileMetadata fm) { - System.out.println("viewLGMapOutputLink"); - - Long fileId = fm.getDataFile().getId(); - - try { - // get LGMap url from the config.properties file - String LGMapPath = PropertiesUtils.getPropValue("LGMap"); // get property in config.properties file - String retVal = LGMapPath + "/map.php?mode=1&name="+URLEncoder.encode(fm.getLabel(), "UTF-8")+"&fileId="+fileId; - - logger.info("open LGMap at " + retVal); - - FacesContext.getCurrentInstance().getExternalContext().redirect(retVal); - } catch (IOException ex) { - logger.info("Failed to issue a redirect to file download url."); - } - - return ""; - } - - // zoe end + public String exploreOutputLink(FileMetadata fm, String type){ createSilentGuestbookEntry(fm, type); @@ -1732,6 +1710,7 @@ return restrictedFileCount; } + private List<FileMetadata> filesToBeDeleted = new ArrayList(); public void deleteFiles() { @@ -1775,7 +1754,9 @@ JsfHelper.addFlashMessage(successMessage); } } - + + + public String save() { // Validate Set<ConstraintViolation> constraintViolations = workingVersion.validate(); @@ -2634,9 +2615,9 @@ public String getDataExploreURLComplete(Long fileid) { String TwoRavensUrl = settingsService.getValueForKey(SettingsServiceBean.Key.TwoRavensUrl); - //String TwoRavensDefaultLocal = "/dataexplore/gui.html?dfId="; + String TwoRavensDefaultLocal = "/dataexplore/gui.html?dfId="; // zoe modified - String TwoRavensDefaultLocal = "http://localhost:1080/dataexplore/gui.html?dfId="; + //String TwoRavensDefaultLocal = "http://localhost:1080/dataexplore/gui.html?dfId="; // end
--- a/src/main/webapp/dataset.xhtml Wed Sep 30 13:55:57 2015 +0200 +++ b/src/main/webapp/dataset.xhtml Mon Nov 02 16:41:23 2015 +0100 @@ -510,7 +510,7 @@ <div class="btn-group" jsf:rendered="#{(!(empty DatasetPage.workingVersion.fileMetadatas) and DatasetPage.workingVersion.fileMetadatas.size() > 1)}"> <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> <span class="glyphicon glyphicon-download-alt"/> #{bundle.download} <span class="caret"></span> - </button> + </button> <ul class="dropdown-menu multi-level pull-right text-left" role="menu"> <li class="disabled"> <h:outputLink value="#"> @@ -534,11 +534,22 @@ </ul> </div> </ui:remove> + + <!-- sync dataset to LGServices --> + <p:commandLink rendered="#{dataverseSession.user.authenticated and permissionsWrapper.canIssueUpdateDatasetCommand(DatasetPage.dataset)}" + type="button" styleClass="btn btn-default" title="Sync (it could take some time)" + action="#{LGDatasetPage.syncDatasetToLGServices(DatasetPage.dataset.getId(), DatasetPage.persistentId)}"> + <f:setPropertyActionListener target="#{DatasetPage.selectedTabIndex}" value="0" /> + <span class="glyphicon glyphicon-share"/> <span class="ladda-label">Notify LGServices the deleted files</span> + </p:commandLink> + <!-- sync end --> + <p:commandLink rendered="#{dataverseSession.user.authenticated and permissionsWrapper.canIssueUpdateDatasetCommand(DatasetPage.dataset)}" type="button" styleClass="btn btn-default" title="#{bundle['file.uploadOrEdit']}" actionListener="#{DatasetPage.edit('FILE')}" update="@form,:messagePanel" oncomplete="javascript:post_edit_files();" disabled="#{DatasetPage.locked}"> <f:setPropertyActionListener target="#{DatasetPage.selectedTabIndex}" value="0" /> <span class="glyphicon #{DatasetPage.locked ? 'glyphicon-ban-circle' : 'glyphicon-plus'}"/> #{bundle['file.uploadOrEdit']} </p:commandLink> + </div> <div jsf:id="restrictDeletePanel" class="button-block margin-bottom text-right" jsf:rendered="#{(DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE') and !empty DatasetPage.dataset.latestVersion.fileMetadatas}"> @@ -729,17 +740,17 @@ </span> </ui:fragment> - + <!-- Local Gazetteers Map --> <h:commandLink rendered="#{!(empty fileMetadata.dataFile.id) and DatasetPage.canDownloadFile(fileMetadata) and !DatasetPage.downloadPopupRequired}" type="button" styleClass="btn btn-default #{fileMetadata.dataFile.ingestInProgress ? 'disabled' : ''}" disabled="#{fileMetadata.dataFile.ingestInProgress ? 'disabled' : ''}" - action="#{DatasetPage.viewLGMapOutputLink(fileMetadata)}" target="_blank"> + action="#{LGDatasetPage.viewLGMapOutputLink(fileMetadata)}" target="_blank"> <span class="glyphicon glyphicon-equalizer"/> <span class="ladda-label">#{bundle.viewLGMap}</span> </h:commandLink> - + <!-- Local Gazetteers Map end --> <!-- TwoRavens explore option --> <h:commandLink rendered="#{!(empty fileMetadata.dataFile.id) and (fileMetadata.dataFile.tabularData or fileMetadata.dataFile.ingestInProgress)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/dataset_orig.xhtml Mon Nov 02 16:41:23 2015 +0100 @@ -0,0 +1,1909 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:h="http://java.sun.com/jsf/html" + xmlns:f="http://java.sun.com/jsf/core" + xmlns:ui="http://java.sun.com/jsf/facelets" + xmlns:p="http://primefaces.org/ui" + xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" + xmlns:jsf="http://xmlns.jcp.org/jsf" + xmlns:pt="http://java.sun.com/jsf/passthrough" + xmlns:cc="http://java.sun.com/jsf/composite" + xmlns:o="http://omnifaces.org/ui" + xmlns:iqbs="http://xmlns.jcp.org/jsf/composite/iqbs"> + + <h:head> + </h:head> + + <h:body> + <h:outputScript library="js" name="lg-map.js" /> + + <ui:composition template="/dataverse_template.xhtml"> + <ui:param name="pageTitle" value="#{DatasetPage.editMode == 'CREATE' ? bundle['dataset.pageTitle'] : DatasetPage.workingVersion.title} - #{DatasetPage.dataset.owner.name} #{bundle.dataverse}"/> + <ui:param name="dataverse" value="#{DatasetPage.dataset.owner}"/> + <ui:param name="dataset" value="#{DatasetPage.dataset}"/> + <ui:param name="version" value="#{DatasetPage.workingVersion}"/> + <ui:param name="showMessagePanel" value="#{true}"/> + <ui:define name="body"> + <f:metadata> + <f:viewParam name="id" value="#{DatasetPage.dataset.id}"/> + <f:viewParam name="ownerId" value="#{DatasetPage.ownerId}"/> + <f:viewParam name="version" value="#{DatasetPage.version}"/> + <f:viewParam name="versionId" value="#{DatasetPage.versionId}"/> + <f:viewParam name="persistentId" value="#{DatasetPage.persistentId}"/> + <f:viewAction action="#{DatasetPage.init}" /> + <f:viewAction action="#{dataverseHeaderFragment.initBreadcrumbs(DatasetPage.dataset)}"/> + </f:metadata> + <h:form id="datasetForm"> + <!-- Header / Button Panel --> + <!-- View editMode --> + <div id="topDatasetBlock" jsf:rendered="#{empty DatasetPage.editMode}"> + <div id="actionButtonBlock" class="button-block clearfix"> + <!-- Edit/Publish Button Group --> + <!-- Edit Button --> + <div class="btn-group pull-right" jsf:rendered="#{dataverseSession.user.authenticated + and permissionsWrapper.canIssueUpdateDatasetCommand(DatasetPage.dataset) + and !DatasetPage.dataset.latestVersion.deaccessioned}"> + <button type="button" id="editDataSet" class="btn btn-default dropdown-toggle #{DatasetPage.locked ? 'disabled' : ''}" data-toggle="dropdown"> + <span class="glyphicon glyphicon-pencil"/> #{bundle['dataset.editBtn']} <span class="caret"></span> + </button> + <ul class="dropdown-menu pull-right text-left" role="menu"> + <li> + <p:commandLink id="editFiles" actionListener="#{DatasetPage.edit('FILE')}" update="@form,:messagePanel" oncomplete="javascript:post_edit_files()"> + <f:setPropertyActionListener target="#{DatasetPage.selectedTabIndex}" value="0" /> + <h:outputText value="#{bundle['dataset.editBtn.itemLabel.upload']}" /> + </p:commandLink> + </li> + <li> + <p:commandLink id="editMetadata" actionListener="#{DatasetPage.edit('METADATA')}" update="@form,:datasetForm,:messagePanel" oncomplete="javascript:post_edit_metadata()"> + <f:setPropertyActionListener target="#{DatasetPage.selectedTabIndex}" value="0" /> + <h:outputText value="#{bundle['dataset.editBtn.itemLabel.metadata']}" /> + </p:commandLink> + </li> + <li> + <p:commandLink id="editTerms" actionListener="#{DatasetPage.edit('LICENSE')}" update="@form,:datasetForm,:messagePanel" oncomplete="javascript:post_edit_terms()"> + <f:setPropertyActionListener target="#{DatasetPage.selectedTabIndex}" value="0" /> + <h:outputText value="#{bundle['dataset.editBtn.itemLabel.terms']}" /> + </p:commandLink> + </li> + <ui:fragment rendered="#{permissionsWrapper.canManagePermissions(DatasetPage.dataset)}"> + <li class="dropdown-submenu"> + <a tabindex="-1" href="#">#{bundle['dataset.editBtn.itemLabel.permissions']}</a> + <ul class="dropdown-menu"> + <li> + <h:link id="managePermissions" styleClass="ui-commandlink ui-widget" outcome="permissions-manage"> + <h:outputText value="Dataset" /> + <f:param name="id" value="#{DatasetPage.dataset.id}" /> + </h:link> + </li> + <li> + <h:link id="manageFilePermissions" styleClass="ui-commandlink ui-widget" outcome="permissions-manage-files"> + <h:outputText value="File" /> + <f:param name="id" value="#{DatasetPage.dataset.id}" /> + </h:link> + </li> + </ul> + </li> + </ui:fragment> + <ui:fragment rendered="#{!DatasetPage.dataset.released and DatasetPage.dataset.latestVersion.versionState=='DRAFT' and permissionsWrapper.canIssueDeleteDatasetCommand(DatasetPage.dataset)}"> + <li class="divider"></li> + <li> + <p:commandLink id="deleteDataset" onclick="deleteConfirmation.show()"> + <h:outputText value="#{bundle['dataset.editBtn.itemLabel.deleteDataset']}" /> + </p:commandLink> + </li> + </ui:fragment> + <ui:fragment rendered="#{DatasetPage.dataset.released and DatasetPage.dataset.latestVersion.versionState=='DRAFT' and permissionsWrapper.canIssueDeleteDatasetCommand(DatasetPage.dataset)}"> + <li class="divider"></li> + <li> + <p:commandLink id="deleteVersion" onclick="deleteVersionConfirmation.show()"> + <h:outputText value="#{bundle['dataset.editBtn.itemLabel.deleteDraft']}" /> + </p:commandLink> + </li> + </ui:fragment> + <ui:fragment rendered="#{DatasetPage.dataset.released and !empty(DatasetPage.releasedVersionTabList) and permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset)}"> + <li class="divider"></li> + <li> + <p:commandLink id="deaccessionDatasetLink" onclick="deaccessionBlock.show()"> + <h:outputText value="#{bundle['dataset.editBtn.itemLabel.deaccession']}" /> + </p:commandLink> + </li> + </ui:fragment> + </ul> + </div> + <!-- END: Edit Button --> + + <!-- Publish/Submit for Review/Return to Author Button Group --> + <div class="btn-group pull-right" role="group" jsf:rendered="#{DatasetPage.workingVersion == DatasetPage.dataset.latestVersion + and permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset) + or (DatasetPage.dataset.latestVersion.versionState=='DRAFT' + and permissionsWrapper.canIssueUpdateDatasetCommand(DatasetPage.dataset) + and !permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset))}"> + <!-- Publish Buttons --> + <p:commandLink type="button" styleClass="btn btn-default #{DatasetPage.locked ? 'disabled' : ''}" onclick="publishConfirm.show()" + rendered="#{!DatasetPage.dataset.released + and DatasetPage.dataset.latestVersion.versionState=='DRAFT' and DatasetPage.dataset.owner.released + and permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset)}"> + <span class="glyphicon glyphicon-globe"/> #{bundle['dataset.publish.btn']} + </p:commandLink> + + <p:commandLink type="button" styleClass="btn btn-default #{DatasetPage.locked ? 'disabled' : ''}" onclick="releaseDraft.show()" + rendered="#{DatasetPage.dataset.released and DatasetPage.dataset.latestVersion.versionState=='DRAFT' and DatasetPage.dataset.owner.released + and permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset)}"> + <span class="glyphicon glyphicon-globe"/> #{bundle['dataset.publish.btn']} + </p:commandLink> + + <p:commandLink type="button" styleClass="btn btn-default #{DatasetPage.locked ? 'disabled' : ''}" onclick="mayNotRelease.show()" + rendered="#{DatasetPage.dataset.latestVersion.versionState=='DRAFT' and !DatasetPage.dataset.owner.released + and permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset) + and !permissionServiceBean.on(DatasetPage.dataset.owner).has('PublishDataverse')}"> + <span class="glyphicon glyphicon-globe"/> #{bundle['dataset.publish.btn']} + </p:commandLink> + + <p:commandLink type="button" styleClass="btn btn-default #{DatasetPage.locked ? 'disabled' : ''}" onclick="publishParent.show()" + rendered="#{DatasetPage.dataset.latestVersion.versionState=='DRAFT' and !DatasetPage.dataset.owner.released + and permissionServiceBean.on(DatasetPage.dataset.owner).has('PublishDataverse') + and (DatasetPage.dataset.owner.owner == null or (DatasetPage.dataset.owner.owner != null and DatasetPage.dataset.owner.owner.released)) + and permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset)}"> + <span class="glyphicon glyphicon-globe"/> #{bundle['dataset.publish.btn']} + </p:commandLink> + + <p:commandLink type="button" styleClass="btn btn-default #{DatasetPage.locked ? 'disabled' : ''}" + rendered="#{DatasetPage.dataset.latestVersion.versionState=='DRAFT' and !DatasetPage.dataset.owner.released + and permissionServiceBean.on(DatasetPage.dataset.owner).has('PublishDataverse') + and (DatasetPage.dataset.owner.owner != null and !DatasetPage.dataset.owner.owner.released) + and permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset)}" + onclick="maynotPublishParent.show()"> + <span class="glyphicon glyphicon-globe"/> #{bundle['dataset.publish.btn']} + </p:commandLink> + <!-- END: Publish Buttons --> + + <!-- Return to Author Button --> + <p:commandLink type="button" styleClass="btn btn-default #{DatasetPage.locked ? 'disabled' : ''}" onclick="sendBackToContributor.show()" + rendered="#{DatasetPage.dataset.latestVersion.versionState=='DRAFT' and DatasetPage.dataset.latestVersion.inReview + and permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset)}"> + #{bundle['dataset.rejectBtn']} + </p:commandLink> + <!-- END: Return to Author Button --> + + <!-- Submit for Review Button --> + <button type="button" class="btn btn-default #{DatasetPage.dataset.latestVersion.inReview ? 'disabled' : ''}" onclick="inreview.show()" + jsf:rendered="#{DatasetPage.workingVersion == DatasetPage.dataset.latestVersion + and DatasetPage.dataset.latestVersion.versionState=='DRAFT' + and permissionsWrapper.canIssueUpdateDatasetCommand(DatasetPage.dataset) + and !permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset)}"> + <span class="glyphicon glyphicon-globe"/> #{DatasetPage.dataset.latestVersion.inReview ? bundle['dataset.disabledSubmittedBtn'] : bundle['dataset.submitBtn']} + </button> + <!-- End: Submit for Review Button --> + </div> + <!-- END: Publish/Submit for Review/Return to Author Button Group --> + <!-- END: Edit/Publish Button Group --> + <!-- Email/Link/Share Button Group --> + <div class="btn-group pull-right" id="datasetButtonBar" role="group"> + <p:commandLink class="btn btn-default bootstrap-button-tooltip" title="#{bundle['dataset.email.datasetContactBtn']}" + update=":contactDialog" oncomplete="contactForm.show()" actionListener="#{sendFeedbackDialog.initUserInput}"> + <f:setPropertyActionListener target="#{sendFeedbackDialog.userMessage}" value=""/> + <f:setPropertyActionListener target="#{sendFeedbackDialog.userEmail}" value=""/> + <f:setPropertyActionListener target="#{sendFeedbackDialog.messageSubject}" value=""/> + <f:setPropertyActionListener target="#{sendFeedbackDialog.recipient}" value="#{DatasetPage.dataset}"/> + <span class="glyphicon glyphicon-envelope no-text"/> + </p:commandLink> + <p:commandLink styleClass="btn btn-default bootstrap-button-tooltip" rendered="#{dataverseSession.user.superuser and !DatasetPage.workingVersion.deaccessioned}" + title="#{bundle['dataset.email.datasetLinkBtn.tip']}" + action="#{DatasetPage.updateLinkableDataverses()}" + oncomplete="PF('linkDatasetForm').show();bind_bsui_components();" + update="linkDatasetForm"> + <span class="glyphicon glyphicon-link no-text"/> + </p:commandLink> + <p:commandLink styleClass="btn btn-default bootstrap-button-tooltip" + title="#{bundle['dataset.share.datasetShare']}" + oncomplete="shareDialog.show();sharrre();"> + <span class="glyphicon glyphicon-share no-text"/> + </p:commandLink> + </div> + <p:dialog id="shareDialog" header="#{bundle['dataset.share.datasetShare']}" widgetVar="shareDialog" modal="true"> + <p class="help-block"><span class="glyphicon glyphicon-info-sign"/> #{bundle['dataset.share.datasetShare.tip']}</p> + + <div id="sharrre-widget" data-url="#{systemConfig.dataverseSiteUrl}/dataset.xhtml?persistentId=#{dataset.globalId}" data-text="#{bundle['dataset.share.datasetShare.shareText']}"></div> + + <div class="button-block"> + <button type="button" onclick="shareDialog.hide()" class="btn btn-default" value="#{bundle.close}"> + #{bundle.close} + </button> + </div> + </p:dialog> + <!-- END: Email/Link/Share Button Group --> + + <!-- View Dataset Versions Button --> + <div class="btn-group pull-left" jsf:rendered="#{DatasetPage.releasedVersionTabList.size() > 1 or (DatasetPage.releasedVersionTabList.size() == 1 and DatasetPage.dataset.latestVersion.draft and permissionServiceBean.on(DatasetPage.dataset).has('ViewUnpublishedDataset'))}"> + <button type="button" id="editDataSet" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> + View Dataset Versions <span class="caret"></span> + </button> + <ul class="dropdown-menu" role="menu"> + <ui:repeat value="#{DatasetPage.versionTabList}" var="versionLinks"> + <li class="#{DatasetPage.workingVersion == versionLinks ? 'disabled' : ''}"> + <h:outputLink styleClass="ui-commandlink ui-widget" value="/dataset.xhtml?persistentId=#{versionLinks.dataset.globalId}&version=#{versionLinks.versionState}" + rendered="#{!(DatasetPage.workingVersion == versionLinks) and !(versionLinks.released or versionLinks.deaccessioned)}"> + <h:outputText value="#{versionLinks.versionState}" styleClass="#{DatasetPage.workingVersion == versionLinks ? 'highlightBold' : ''}" /></h:outputLink> + <h:outputText styleClass="ui-commandlink ui-widget ui-state-disabled #{DatasetPage.workingVersion == versionLinks ? 'highlightBold' : ''}" value="#{versionLinks.versionState}" + rendered="#{(DatasetPage.workingVersion == versionLinks) and !(versionLinks.released or versionLinks.deaccessioned)}"/> + <h:outputLink styleClass="ui-commandlink ui-widget" value="/dataset.xhtml?persistentId=#{versionLinks.dataset.globalId}&version=#{versionLinks.versionNumber}.#{versionLinks.minorVersionNumber}" + rendered="#{!(DatasetPage.workingVersion == versionLinks) and (versionLinks.released or versionLinks.deaccessioned)}"> + <h:outputText value="#{versionLinks.versionNumber}.#{versionLinks.minorVersionNumber}" styleClass="#{DatasetPage.workingVersion == versionLinks ? 'highlightBold' : ''}" /></h:outputLink> + <h:outputText styleClass="ui-commandlink ui-widget ui-state-disabled #{DatasetPage.workingVersion == versionLinks ? 'highlightBold' : ''}" value="#{versionLinks.versionNumber}.#{versionLinks.minorVersionNumber}" + rendered="#{(DatasetPage.workingVersion == versionLinks) and !(versionLinks.draft)}"/> + </li> + </ui:repeat> + </ul> + </div> + <!-- END: Dataset Versions Button --> + + <!-- Metrics --> + <div id="metrics-block" class="pull-left" jsf:rendered="#{!DatasetPage.workingVersion.deaccessioned}"> + <div class="pull-left text-center" id="metrics-label"> + <span class="metrics-label-text small"><span class="glyphicon glyphicon-stats"/> #{bundle['metrics.title']}</span> + </div> + <div class="pull-left"> + <div id="metrics-content" class="tab-content"> + <div id="metrics-views" class="metrics-views tab-pane fade small text-center"> + #{bundle['metrics.views']} <em>#{bundle['metrics.comingsoon']}</em> + </div> + <div id="metrics-downloads" class="metrics-downloads tab-pane fade small text-center"> + <h:outputFormat value="{0} #{bundle['metrics.downloads']}"> + <f:param value="#{guestbookResponseServiceBean.getCountGuestbookResponsesByDatasetId(DatasetPage.dataset.id)}"/> + </h:outputFormat> + </div> + <div id="metrics-citations" class="metrics-citations tab-pane fade small text-center"> + #{bundle['metrics.citations']} <em>#{bundle['metrics.comingsoon']}</em> + </div> + <div id="metrics-shares" class="metrics-shares tab-pane fade small text-center"> + #{bundle['metrics.shares']} <em>#{bundle['metrics.comingsoon']}</em> + </div> + </div> + <div id="metrics-tabs"> + <div class="metrics-hover pull-left"> + <a href="#metrics-views" class="metrics-views" data-toggle="tab"> </a> + </div> + <div class="metrics-hover pull-left"> + <a href="#metrics-downloads" class="metrics-downloads first" data-toggle="tab"> </a> + </div> + <div class="metrics-hover pull-left"> + <a href="#metrics-citations" class="metrics-citations" data-toggle="tab"> </a> + </div> + <div class="metrics-hover pull-left"> + <a href="#metrics-shares" class="metrics-shares" data-toggle="tab"> </a> + </div> + </div> + </div> + </div> + <!-- END: Metrics --> + </div> + <div id="datasetVersionBlock" class="container-fluid"> + <div id="title-block" class="row" jsf:rendered="#{!empty DatasetPage.datasetVersionUI.title.value}"> + <span id="title">#{DatasetPage.datasetVersionUI.title.value}</span> + <h:outputText value="#{bundle['dataset.versionUI.draft']}" styleClass="label label-primary" rendered="#{DatasetPage.workingVersion.draft}"/> + <h:outputText value="#{bundle['dataset.versionUI.unpublished']}" styleClass="label label-warning" rendered="#{!DatasetPage.dataset.released}"/> + <h:outputText value="#{bundle['dataset.versionUI.deaccessioned']}" styleClass="label label-danger" rendered="#{DatasetPage.workingVersion.deaccessioned}"/> + </div> + <div id="citation-block" class="row #{DatasetPage.workingVersion.deaccessioned ? 'bg-danger' : 'bg-citation'}" jsf:rendered="#{!empty DatasetPage.displayCitation}"> + <div id="citation" class="#{DatasetPage.workingVersion.deaccessioned ? 'col-md-12' : 'col-md-9'}"> + <h:outputText value="#{DatasetPage.displayCitation}" escape="false"/> + <span class="glyphicon glyphicon-question-sign text-primary" jsf:rendered="#{!DatasetPage.dataset.released}" data-toggle="tooltip" data-trigger="hover" data-placement="top" data-original-title="#{bundle['dataset.cite.title.released']}"/> + <span class="glyphicon glyphicon-question-sign text-primary" jsf:rendered="#{DatasetPage.dataset.released and DatasetPage.workingVersion.draft}" data-toggle="tooltip" data-trigger="hover" data-placement="top" data-original-title="#{bundle['dataset.cite.title.draft']}"/> + <span class="glyphicon glyphicon-question-sign text-primary" jsf:rendered="#{DatasetPage.workingVersion.deaccessioned}" data-toggle="tooltip" data-trigger="hover" data-placement="top" data-original-title="#{bundle['dataset.cite.title.deassessioned']}"/> + <div id="whycite" class="text-muted small" jsf:rendered="#{!DatasetPage.workingVersion.deaccessioned}">#{bundle['dataset.cite.whyCite.tip']} <a href="http://best-practices.dataverse.org/data-citation/" target="_blank">#{bundle['dataset.cite.whyCite']}</a></div> + </div> + <div id="citation-download" class="col-md-3 text-right" jsf:rendered="#{!DatasetPage.workingVersion.deaccessioned}"> + <div class="dropdown"> + <button type="button" id="downloadCitation" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> + <span class="glyphicon glyphicon-list"/> #{bundle['dataset.cite.downloadBtn']} <span class="caret"></span> + </button> + <ul class="dropdown-menu pull-right text-left" role="menu"> + <li> + <a jsf:id="endNoteLink" jsf:action="#{DatasetPage.downloadDatasetCitationXML()}" > + #{bundle['dataset.cite.downloadBtn.xml']} + </a> + </li> + <li> + <a jsf:id="risLink" jsf:actionListener="#{DatasetPage.downloadDatasetCitationRIS()}"> + #{bundle['dataset.cite.downloadBtn.ris']} + </a> + </li> + </ul> + </div> + </div> + </div> + <div id="deaccession-reason-block" class="row bg-danger" jsf:rendered="#{DatasetPage.workingVersion.deaccessioned}"> + <h5 class="margin-top-half">#{bundle['dataset.deaccession.reason']}</h5> + <p>#{DatasetPage.workingVersion.versionNote}</p> + <ui:fragment rendered="#{!empty DatasetPage.workingVersion.archiveNote}"> + <p>#{bundle['dataset.beAccessedAt']} <a href="#{DatasetPage.workingVersion.archiveNote}" target="_blank">#{DatasetPage.workingVersion.archiveNote}</a></p> + </ui:fragment> + </div> + <div id="metadata-panel" class="row panel panel-default" + jsf:rendered="#{!DatasetPage.workingVersion.deaccessioned and + (!empty DatasetPage.datasetVersionUI.descriptionDisplay + or !empty DatasetPage.datasetVersionUI.keywordDisplay + or !empty DatasetPage.datasetVersionUI.subject.value + or !empty DatasetPage.datasetVersionUI.relPublicationCitation + or !empty DatasetPage.datasetVersionUI.notes.value)}"> + <div class="panel-body"> + <div id="description" class="form-group" jsf:rendered="#{!empty DatasetPage.datasetVersionUI.descriptionDisplay}"> + <label class="col-sm-3 control-label"> + <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{DatasetPage.datasetVersionUI.description.datasetFieldType.description}">#{bundle['dataset.descriptionDisplay.title']}</span> + </label> + <div class="col-sm-9 no-padding-left-right"><h:outputText value="#{DatasetPage.datasetVersionUI.descriptionDisplay}" escape="false"/></div> + </div> + <div id="subject" class="form-group" jsf:rendered="#{!empty DatasetPage.datasetVersionUI.subject.value}"> + <label class="col-sm-3 control-label"> + <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{DatasetPage.datasetVersionUI.subject.datasetFieldType.description}">#{DatasetPage.datasetVersionUI.subject.datasetFieldType.title}</span> + </label> + <div class="col-sm-9 no-padding-left-right">#{DatasetPage.datasetVersionUI.subject.displayValue}</div> + </div> + <div id="keywords" class="form-group" jsf:rendered="#{!empty DatasetPage.datasetVersionUI.keywordDisplay}"> + <label class="col-sm-3 control-label"> + <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{DatasetPage.datasetVersionUI.keyword.datasetFieldType.description}">#{bundle['dataset.keywordDisplay.title']}</span> + </label> + <div class="col-sm-9 no-padding-left-right">#{DatasetPage.datasetVersionUI.keywordDisplay}</div> + </div> + <div id="publication" class="form-group" jsf:rendered="#{!empty DatasetPage.datasetVersionUI.relPublicationCitation}"> + <label class="col-sm-3 control-label"> + <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{DatasetPage.datasetVersionUI.datasetRelPublications.get(0).description}">#{DatasetPage.datasetVersionUI.datasetRelPublications.get(0).title}</span> + </label> + <div class="col-sm-9 no-padding-left-right"> + <h:outputText value="#{DatasetPage.datasetVersionUI.relPublicationCitation}" escape="false"/> + <a href="#{DatasetPage.datasetVersionUI.relPublicationUrl}" title="#{DatasetPage.datasetVersionUI.relPublicationUrl}" target="_blank">#{DatasetPage.datasetVersionUI.relPublicationId}</a> + </div> + </div> + <div id="note" class="form-group" jsf:rendered="#{!empty DatasetPage.datasetVersionUI.notes.value}"> + <label class="col-sm-3 control-label"> + <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{DatasetPage.datasetVersionUI.notes.datasetFieldType.description}">#{DatasetPage.datasetVersionUI.notes.datasetFieldType.title}</span> + </label> + <div class="col-sm-9 no-padding-left-right"> + <o:importFunctions type="edu.harvard.iq.dataverse.util.MarkupChecker" /> + <h:outputText value="#{MarkupChecker:sanitizeBasicHTML(DatasetPage.datasetVersionUI.notes.value)}" escape="false"/> + </div> + </div> + </div> + </div> + </div> + </div> + <!-- END View editMode --> + + <!-- Create/Edit editMode --> + <ui:fragment rendered="#{DatasetPage.editMode == 'METADATA' or DatasetPage.editMode == 'CREATE'}"> + <div class="form-group"> + <label for="select_HostDataverse" class="col-sm-2 control-label"> + <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{bundle['dataverse.host.title']}"> + #{bundle.hostDataverse} + </span> + </label> + <div class="col-sm-10"> + <h:outputText styleClass="highlightBold" value="#{DatasetPage.dataset.owner.name} #{bundle.dataverse}"/> + <h:inputHidden value="#{DatasetPage.ownerId}" id="select_HostDataverse" /> + <ui:remove><!-- removed for beta --> + <p:selectOneMenu id="select_HostDataverse" value="#{DatasetPage.ownerId}" filter="true" filterMatchMode="startsWith" effect="none"> + <f:selectItems value="#{dataverseServiceBean.findAll()}" var="dv" itemLabel="#{dv.name}" itemValue="#{dv.id}"/> + </p:selectOneMenu> + </ui:remove> + </div> + </div> + <div class="form-group" jsf:rendered="#{!empty DatasetPage.dataverseTemplates and DatasetPage.editMode == 'CREATE'}"> + <label for="select_DatasetTemplate" class="col-sm-2 control-label"> + <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{bundle['dataset.manageTemplates.tab.action.btn.view.dialog.datasetTemplate.title']}"> + #{bundle['dataset.manageTemplates.tab.action.btn.view.dialog.datasetTemplate']} + </span> + </label> + <div class="col-sm-10"> + <p:selectOneMenu value="#{DatasetPage.selectedTemplate}" onchange="updateTemplate()" + converter="templateConverter" id="select_DatasetTemplate" styleClass="form-control" + valueChangeListener="#{DatasetPage.updateSelectedTemplate}"> + <f:selectItem itemLabel="#{bundle['dataset.noTemplate.label']}" itemValue="#{null}" /> + <f:selectItems value="#{DatasetPage.dataverseTemplates}" + var="template" itemLabel="#{template.name}" itemValue="#{template}"/> + </p:selectOneMenu> + <p:commandButton value="Direct" id="updateTemplate" + style="display:none" + update="@form" + action="#{DatasetPage.handleChangeButton}"> + </p:commandButton> + </div> + </div> + <div class="form-group"> + <div class="col-sm-12"> + <span class="glyphicon glyphicon-asterisk text-danger"/> <h:outputText value="#{bundle['dataset.asterisk.tip']}"/> + </div> + </div> + </ui:fragment> + <ui:fragment rendered="#{DatasetPage.editMode == 'CREATE'}"> + <ui:include src="metadataFragment.xhtml"> + <ui:param name="datasetPage" value="true"/> + <ui:param name="editMode" value="#{!empty DatasetPage.editMode ? DatasetPage.editMode : ''}"/> + <ui:param name="metadataBlocks" value="#{!empty DatasetPage.editMode ? DatasetPage.datasetVersionUI.metadataBlocksForEdit.entrySet().toArray(): DatasetPage.datasetVersionUI.metadataBlocksForView.entrySet().toArray()}"/> + <ui:param name="publicationDate" value="#{DatasetPage.dataset.publicationDateFormattedYYYYMMDD}"/> + <ui:param name="globalId" value="#{DatasetPage.dataset.globalId}"/> + </ui:include> + </ui:fragment> + <!-- END Create/Edit editMode --> + + <!-- Edit editMode --> + <div class="button-block form-top" jsf:rendered="#{DatasetPage.editMode == 'METADATA' or DatasetPage.editMode == 'LICENSE'}"> + <p:commandButton id="saveTop" value="#{bundle.saveChanges}" onclick="checkNewlyRestricted();" /> + <p:commandButton id="cancelTop" value="#{bundle.cancel}" action="#{DatasetPage.cancel}" process="@this" update="@form" oncomplete="javascript:post_cancel_edit_files_or_metadata()"> + <f:setPropertyActionListener target="#{DatasetPage.selectedTabIndex}" value="#{DatasetPage.editMode == 'METADATA' ? 1 : DatasetPage.selectedTabIndex}"/> + </p:commandButton> + </div> + <!-- END Header / Button Panel --> + <!-- View/Tabs infoMode --> + <!-- Tabs --> + <div id="contentTabs" jsf:rendered="#{DatasetPage.editMode != 'INFO'}"> + <ui:fragment> <!-- rendered="#{empty DatasetPage.editMode}" --> + <p:commandButton id="refreshButton" widgetVar="refreshButton" actionListener="#{DatasetPage.refresh}" update="@all" style="display:none"/><!-- :datasetForm:tabView:filesTable,:messagePanel --> + <script type="text/javascript"> + function updateFilesTable(facesmessage) { + //flash['successMsg'] = facesmessage.text; -- not working as expected - ? L.A. + $('button[id$="refreshButton"]').trigger('click'); + } + </script> + <p:socket channel="/ingest#{dataset.id}" onMessage="updateFilesTable" autoConnect="true"> + <p:ajax event="message" update="@all" /> + </p:socket> + </ui:fragment> + <p:tabView id="tabView" widgetVar="content" activeIndex="#{DatasetPage.selectedTabIndex}"> + <p:tab id="dataFilesTab" title="#{bundle.files}" rendered="#{!DatasetPage.workingVersion.deaccessioned and + (empty DatasetPage.editMode or DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE')}" > + <!-- Upload --> + <ui:fragment rendered="#{DatasetPage.showFileUploadFileComponent()}"> + <script> + function uploadWidgetDropMsg() { + var fileUpload = $('div[id$="fileUpload"] div.ui-fileupload-content'); + if ($(fileUpload).children('#dragdropMsg').length) { + // do nothing + } + else { + $(fileUpload).prepend('<div id="dragdropMsg">#{bundle['file.fromDropbox.description']}</div>'); + } + } + function uploadWidgetDropRemoveMsg() { + $('div[id$="fileUpload"] div.ui-fileupload-content div.dropMsg').remove(); + } + $(document).ready(function () { + uploadWidgetDropMsg(); + }); + </script> + <p class="help-block"> + <span class="glyphicon glyphicon-info-sign"/> + <h:outputFormat value=" #{bundle['file.selectToAdd.tip']}" escape="false"> + <f:param value="#{systemConfig.guidesBaseUrl}"/> + <f:param value="#{systemConfig.version}"/> + </h:outputFormat> + </p> + + <p:fileUpload id="fileUpload" styleClass="margin-bottom" dragDropSupport="true" auto="true" multiple="true" rendered="#{DatasetPage.showFileUploadFileComponent()}" + fileUploadListener="#{DatasetPage.handleFileUpload}" process="filesTable" update="filesTable,uploadMessage" label="#{bundle['file.selectToAddBtn']}" + oncomplete="javascript:bind_bsui_components();uploadWidgetDropMsg();" onstart="javascript:uploadWidgetDropRemoveMsg();" + sizeLimit="#{DatasetPage.getMaxFileUploadSizeInBytes()}" invalidSizeMessage="File exceeds our limits. Please contact support. " /> + <!-- Dropbox Upload --> + <div id="dropboxUploadBlock" class="panel panel-default margin-bottom" jsf:rendered="#{!empty DatasetPage.dropBoxKey}"> + <div class="panel-body"> + <h:inputText id="dropBoxSelectionInput" style="display:none" value="#{DatasetPage.dropBoxSelection}"/> + <p:commandButton id="dropBoxButton" actionListener="#{DatasetPage.handleDropBoxUpload}" update="@all" style="display:none"/> + <p:commandButton value="#{bundle['file.fromDropbox']}" onclick="openDropboxChooser();" icon="dropin-btn-status"/> + <p class="help-block">#{bundle['file.fromDropbox.tip']}</p> + </div> + </div> + <p:message for="fileUpload" id="uploadMessage" display="text"/> + </ui:fragment> + + <!-- Files Table --> + <p:dataTable id="filesTable" value="#{empty DatasetPage.editMode ? DatasetPage.workingVersion.fileMetadatasSorted : DatasetPage.dataset.latestVersion.fileMetadatas}" + rowIndexVar="rowNum" rowKey="#{fileMetadata.dataFile.fileSystemName}" + selection="#{DatasetPage.selectedFiles}" var="fileMetadata" widgetVar="filesTable" + emptyMessage="#{bundle['file.notFound.tip']}"> + <f:facet name="header"> + <h:inputHidden id="showAccessPopup" value="#{DatasetPage.showAccessPopup}"/> + <!-- Button Panels --> + <div jsf:id="zipDownloadPanel" class="button-block margin-bottom text-right" + jsf:rendered="#{!(DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE') + and (permissionsWrapper.canIssueUpdateDatasetCommand(DatasetPage.dataset) + or (!(empty DatasetPage.workingVersion.fileMetadatas) and DatasetPage.workingVersion.fileMetadatas.size() > 1))}"> + <ui:remove> + <div class="btn-group" jsf:rendered="#{(!(empty DatasetPage.workingVersion.fileMetadatas) and DatasetPage.workingVersion.fileMetadatas.size() > 1)}"> + <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> + <span class="glyphicon glyphicon-download-alt"/> #{bundle.download} <span class="caret"></span> + </button> + <ul class="dropdown-menu multi-level pull-right text-left" role="menu"> + <li class="disabled"> + <h:outputLink value="#"> + <h:outputText value="All Files From This Dataset"/> + </h:outputLink> + </li> + <ui:fragment> + <li> + <h:commandLink rendered="#{!(DatasetPage.downloadPopupRequired) }" + value="#{bundle.selectedFiles}" + actionListener="#{DatasetPage.startMultipleFileDownload()}"> + </h:commandLink> + <!-- guest book or terms of use, etc. enabled - open "download popup" first: --> + <p:commandLink rendered="#{DatasetPage.downloadPopupRequired }" + action="#{DatasetPage.initGuestbookMultipleResponse()}" + value="#{bundle.selectedFiles}" + update="@form" oncomplete="downloadPopup.show();handleResizeDialog('downloadPopup');"> + </p:commandLink> + </li> + </ui:fragment> + </ul> + </div> + </ui:remove> + <p:commandLink rendered="#{dataverseSession.user.authenticated and permissionsWrapper.canIssueUpdateDatasetCommand(DatasetPage.dataset)}" + type="button" styleClass="btn btn-default" title="#{bundle['file.uploadOrEdit']}" actionListener="#{DatasetPage.edit('FILE')}" update="@form,:messagePanel" oncomplete="javascript:post_edit_files();" disabled="#{DatasetPage.locked}"> + <f:setPropertyActionListener target="#{DatasetPage.selectedTabIndex}" value="0" /> + <span class="glyphicon #{DatasetPage.locked ? 'glyphicon-ban-circle' : 'glyphicon-plus'}"/> #{bundle['file.uploadOrEdit']} + </p:commandLink> + </div> + <div jsf:id="restrictDeletePanel" class="button-block margin-bottom text-right" + jsf:rendered="#{(DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE') and !empty DatasetPage.dataset.latestVersion.fileMetadatas}"> + <div class="btn-group"> + <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> + <span class="glyphicon glyphicon-lock"/> #{bundle['file.restrict']} <span class="caret"></span> + </button> + <ul class="dropdown-menu multi-level pull-right text-left" role="menu"> + <li> + <p:commandLink update="filesTable,:messagePanel" oncomplete="toggle_dropdown();" actionListener="#{DatasetPage.restrictFiles(true)}"> + <h:outputText value="#{bundle['file.restrict']}"/> + </p:commandLink> + </li> + <li> + <p:commandLink update="filesTable,:messagePanel" oncomplete="toggle_dropdown();" actionListener="#{DatasetPage.restrictFiles(false)}"> + <h:outputText value="#{bundle['file.unrestrict']}"/> + </p:commandLink> + </li> + </ul> + </div> + <p:commandLink type="button" styleClass="btn btn-default" title="#{bundle['file.delete']}" onclick="checkFilesSelected();"> + <span class="glyphicon glyphicon-remove"/> #{bundle['file.delete']} + </p:commandLink> + </div> + </f:facet> + <p:column selectionMode="multiple" class="col-select-width text-center" rendered="#{!empty DatasetPage.editMode}" /> + <p:column class="col-file-thumb text-center"> + <div class="thumbnail-block"> + <!-- Thumbnail Preview --> + <span class="file-thumbnail-preview-img" jsf:rendered="#{!empty fileMetadata.dataFile.id and dataFileServiceBean.isThumbnailAvailable(fileMetadata.dataFile, dataverseSession.user)}" + data-container="body" data-toggle="popover" data-placement="top" data-trigger="hover" data-html="true" data-content="<img src="/api/access/datafile/#{fileMetadata.dataFile.id}?imageThumb=400" alt=" #{bundle['file.preview']} #{fileMetadata.label}" />"> + <p:graphicImage value="/api/access/datafile/#{fileMetadata.dataFile.id}?imageThumb=true"/> + </span> + + <!-- Default Icon --> + <span class="icon-#{dataFileServiceBean.getFileClass(fileMetadata.dataFile)} file-thumbnail-icon text-muted" jsf:rendered="#{(!empty fileMetadata.dataFile.id and !dataFileServiceBean.isThumbnailAvailable(fileMetadata.dataFile, dataverseSession.user)) or (empty fileMetadata.dataFile.id and !dataFileServiceBean.isTemporaryPreviewAvailable(fileMetadata.dataFile.fileSystemName, fileMetadata.dataFile.contentType))}"/> + + <ui:fragment rendered="#{empty fileMetadata.dataFile.id and !empty fileMetadata.dataFile.fileSystemName and dataFileServiceBean.isTemporaryPreviewAvailable(fileMetadata.dataFile.fileSystemName, fileMetadata.dataFile.contentType)}"> + <p:graphicImage value="/api/access/tempPreview/#{fileMetadata.dataFile.fileSystemName}?mimetype=#{fileMetadata.dataFile.contentType}"/> + <h:outputText id="imgPreview" value="Preview" styleClass="bg-info text-info text-center show"/> + </ui:fragment> + + <!-- Dataset Thumbnail --> + <span id="datasetThumbnail" class="bg-info text-info text-center small show" + jsf:rendered="#{DatasetPage.editMode == 'FILE' and DatasetPage.isDesignatedDatasetThumbnail(fileMetadata)}" + data-toggle="tooltip" data-placement="bottom" title="#{bundle['file.selectedThumbnail.tip']}"> + #{bundle['file.selectedThumbnail']} + </span> + + <!-- Restricted File Icon --> + <div class="file-icon-restricted-block" jsf:rendered="#{fileMetadata.restricted and ((empty fileMetadata.dataFile.id) or !(DatasetPage.canDownloadFile(fileMetadata)) )}"> + <span class="glyphicon glyphicon-lock text-danger"/> + </div> + <div class="file-icon-restricted-block" jsf:rendered="#{!(empty fileMetadata.dataFile.id) and fileMetadata.restricted and DatasetPage.canDownloadFile(fileMetadata) }"> + <span class="icon-unlock text-success"/> + </div> + </div> + <!-- WorldMap Preview --> + <ui:fragment rendered="#{DatasetPage.hasMapLayerMetadata(fileMetadata)}"> + <div class="modal fade" id="map-modal-#{fileMetadata.id}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="myModalLabel"><span style="color:#c75b1d;">Preview Map:</span> #{fileMetadata.label}</h4> + </div> + <div class="modal-body"> + <iframe id="id_iframe_map" height="300" width="100%" src="#{ DatasetPage.getMapLayerMetadata(fileMetadata.dataFile).getEmbedMapLink() }"></iframe> + </div> + <div class="modal-footer"> + <a href="#{ DatasetPage.getMapLayerMetadata(fileMetadata.dataFile).getLayerLink() }" target="_blank"><img src="https://worldmap.harvard.edu/static/theme/img/WorldMap-Logo_26px.png" alt="WorldMap logo" style="border:none;float:left;" xclass="text-left" /></a> + <a href="#{ DatasetPage.getMapLayerMetadata(fileMetadata.dataFile).getLayerLink() }" class="btn btn-primary btn-xs" target="_blank"><span style="color:#fff;"> #{bundle['file.metaData.viewOnWorldMap']}</span></a> + <button type="button" class="btn btn-default btn-xs" data-dismiss="modal">Close</button> + <div style="clear:both;"></div> + </div> + </div> + </div> + </div> + <a data-target="#map-modal-#{fileMetadata.id}" data-toggle="modal"><small>Preview</small></a> + </ui:fragment> + </p:column> + <p:column class="col-file-metadata"> + <h:outputText id="fileNameOutput" value="#{fileMetadata.label}" style="display:block;font-weight:bold;" rendered="#{!(DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE')}"/> + + <ui:fragment rendered="#{DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE'}"> + <label class="control-label" for="fileName" style="margin-right:1em;margin-bottom:.5em;"> + #{bundle['file.fileName']} + </label> + <p:inputText id="fileName" value="#{fileMetadata.label}" style="width:60%; margin-bottom:.5em;"/> + <p:message for="fileName"/> + </ui:fragment> + + <!-- TYPE + SIZE + DATE + MD5 --> + <div class="text-muted small"> + <h:outputText id="fileTypeOutputRegular" value="#{fileMetadata.dataFile.friendlyType}" rendered="#{!(fileMetadata.dataFile.tabularData)}"/> + <h:outputText id="fileTypeOutputTabular" value="#{bundle['file.type.tabularData']}" rendered="#{fileMetadata.dataFile.tabularData}"/> + <h:outputText id="fileSize" value=" - #{fileMetadata.dataFile.friendlySize}" rendered="#{!(DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE')}"/> + + <h:outputText id="fileCreatePublishDate" value=" - #{DatasetPage.getFileDateToDisplay(fileMetadata)}" rendered="#{!(empty fileMetadata.id)}"/> + + <h:outputFormat id="fileDownloadCount" value=" - {0} #{bundle['metrics.downloads']}" rendered="#{!(DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE')}"> + <f:param value="#{guestbookResponseServiceBean.getCountGuestbookResponsesByDataFileId(fileMetadata.dataFile.id)}"/> + </h:outputFormat> + + <div class="mD5-block"> + <h:outputText id="fileMD5" value="#{fileMetadata.dataFile.tabularData ? bundle['file.MD5.origal'] : bundle['file.MD5']}: #{fileMetadata.dataFile.md5};" rendered="#{!(empty fileMetadata.dataFile.md5) and ((DatasetPage.editMode != 'FILE' and DatasetPage.editMode != 'CREATE') or !DatasetPage.isDuplicate(fileMetadata))}"/> + <h:outputText id="duplicateFileMD5" styleClass="text-danger" value="#{fileMetadata.dataFile.tabularData ? bundle['file.MD5.origal']: bundle['file.MD5']}: #{fileMetadata.dataFile.md5}" rendered="#{!(empty fileMetadata.dataFile.md5) and ((DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE') and DatasetPage.isDuplicate(fileMetadata))}"/> + <ui:fragment rendered="#{DatasetPage.isDuplicate(fileMetadata) and (DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE') and (empty fileMetadata.id)}"> + <div style="display:inline-block;" class="ui-message ui-message-error ui-widget ui-corner-all fileDuplicateWarning"><span class="ui-message-error-detail">#{bundle['file.MD5.exists.tip']}</span></div> + </ui:fragment> + </div> + </div> + <!-- UNF + Variables, Obsersvations --> + <div class="text-muted small" jsf:rendered="#{fileMetadata.dataFile.tabularData}"> + <h:outputText id="fileNumVars" value="#{fileMetadata.dataFile.dataTable.varQuantity} #{bundle['file.metaData.dataFile.dataTab.variables']} " rendered="#{fileMetadata.dataFile.tabularData}"/> + <h:outputText id="fileNumObs" value="#{fileMetadata.dataFile.dataTable.caseQuantity} #{bundle['file.metaData.dataFile.dataTab.observations']} #{!empty fileMetadata.dataFile.unf ? ' - ' : ''}" rendered="#{fileMetadata.dataFile.tabularData}"/> + <h:outputText id="fileUNF" value="#{fileMetadata.dataFile.unf}" rendered="#{!empty fileMetadata.dataFile.unf}"/> + </div> + + <div class="fileDescription" jsf:rendered="#{(DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE') or !(empty fileMetadata.description)}"> + <h:outputText id="fileDescNonEmpty" styleClass="small" value="#{fileMetadata.description}" rendered="#{!(DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE') and !(empty fileMetadata.description)}"/> + <ui:fragment rendered="#{DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE'}"> + <label class="control-label" for="fileDescription" style="margin-right:1em; margin-top:.5em; vertical-align:top;"> + #{bundle.description} + </label> + <p:inputTextarea id="fileDescription" immediate="true" rows="2" cols="40" value="#{fileMetadata.description}" style="width:60%; margin-top:.5em;"/> + <p:watermark for="fileDescription" value="#{bundle['file.addDescription']}"/> + <p:message for="fileDescription"/> + </ui:fragment> + </div> + + <div class="file-tags-block #{DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE' ? 'margin-top-half' : ''}" jsf:rendered="#{!(empty fileMetadata.categories) or !(empty fileMetadata.dataFile.tags) or (DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE')}"> + <ui:fragment rendered="#{!(empty fileMetadata.categories)}"> + <ui:repeat value="#{fileMetadata.categories}" var="cat"> + <h:outputText value="#{cat.name}" styleClass="label label-default"/> + </ui:repeat> + </ui:fragment> + <ui:fragment rendered="#{!(empty fileMetadata.dataFile.tags)}"> + <ui:repeat value="#{fileMetadata.dataFile.tags}" var="tag"> + <h:outputText value="#{tag.typeLabel}" styleClass="label label-info"/> + </ui:repeat> + </ui:fragment> + </div> + </p:column> + + <p:column class="col-file-action text-right" rendered="#{(DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE')}"> + <div class="button-block"> + <p:commandLink id="fileCategoriesButton" + type="button" styleClass="btn btn-default btn-sm" + actionListener="#{DatasetPage.setFileMetadataSelectedForTagsPopup(fileMetadata)}" + update=":datasetForm:fileTagsPopup" + oncomplete="fileTagsPopup.show();bind_bsui_components();"> + <span class="glyphicon glyphicon-tag"/> #{bundle['file.editTags']} + </p:commandLink> + + <p:commandLink id="fileSetThumbnailBtn" + rendered="#{!empty fileMetadata.dataFile.id and fileMetadata.dataFile.image}" + type="button" styleClass="btn btn-default" + actionListener="#{DatasetPage.setFileMetadataSelectedForThumbnailPopup(fileMetadata)}" + update=":datasetForm:fileSetThumbnail" + oncomplete="fileSetThumbnail.show()"> + <span class="glyphicon glyphicon-file"/> #{bundle['file.setThumbnail']} + </p:commandLink> + + <p:commandLink id="advancedIngestOptionsButton" + rendered="#{((empty fileMetadata.dataFile.id) and dataFileServiceBean.isSpssPorFile(fileMetadata.dataFile)) + or ((empty fileMetadata.dataFile.id) and dataFileServiceBean.isSpssSavFile(fileMetadata.dataFile))}" + type="button" styleClass="btn btn-default" + actionListener="#{DatasetPage.setFileMetadataSelectedForIngestOptionsPopup(fileMetadata)}" + update=":datasetForm:fileAdvancedOptions" + oncomplete="fileAdvancedOptions.show()"> + <span class="glyphicon glyphicon-cog"/> #{bundle['file.advancedIngestOptions']} + </p:commandLink> + </div> + </p:column> + + <p:column class="col-file-action text-right" rendered="#{!(DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE')}"> + <!-- Ingest in progress... --> + <div id="txtInprogess" class="bg-info text-info text-center margin-bottom-half" jsf:rendered="#{fileMetadata.dataFile.ingestInProgress}"> + #{bundle['file.ingestInproGress']} + </div> + + <div class="button-block"> + <!-- Ingest Problem --> + <ui:fragment rendered="#{fileMetadata.dataFile.ingestProblem}"> + <span class="ingest-warning" data-toggle="popover" data-container="body" data-trigger="hover" data-placement="left" data-html="true" data-title="<span class='text-danger h5'>#{bundle['file.ingestFailed']}</span>" data-content="<span class='text-danger'>#{fileMetadata.dataFile.ingestReportMessage}</span>"> + <span class="glyphicon glyphicon-warning-sign text-danger"/> + </span> + </ui:fragment> + + + <!-- Local Gazetteers Map --> + <h:commandLink rendered="#{!(empty fileMetadata.dataFile.id) + and DatasetPage.canDownloadFile(fileMetadata) and !DatasetPage.downloadPopupRequired}" + type="button" styleClass="btn btn-default #{fileMetadata.dataFile.ingestInProgress ? 'disabled' : ''}" + disabled="#{fileMetadata.dataFile.ingestInProgress ? 'disabled' : ''}" + action="#{DatasetPage.viewLGMapOutputLink(fileMetadata)}" target="_blank"> + + <span class="glyphicon glyphicon-equalizer"/> <span class="ladda-label">#{bundle.viewLGMap}</span> + </h:commandLink> + <!-- Local Gazetteers Map end --> + + <!-- TwoRavens explore option --> + <h:commandLink rendered="#{!(empty fileMetadata.dataFile.id) and (fileMetadata.dataFile.tabularData or fileMetadata.dataFile.ingestInProgress) + and DatasetPage.canDownloadFile(fileMetadata) and !DatasetPage.downloadPopupRequired}" + type="button" styleClass="btn btn-default #{fileMetadata.dataFile.ingestInProgress ? 'disabled' : ''}" + disabled="#{fileMetadata.dataFile.ingestInProgress ? 'disabled' : ''}" + actionListener="#{DatasetPage.exploreOutputLink(fileMetadata, 'explore')}" target="_blank"> + <span class="glyphicon glyphicon-equalizer"/> <span class="ladda-label">#{bundle.explore}</span> + </h:commandLink> + <p:commandLink rendered="#{!(empty fileMetadata.dataFile.id) and (fileMetadata.dataFile.tabularData or fileMetadata.dataFile.ingestInProgress) + and DatasetPage.canDownloadFile(fileMetadata) and DatasetPage.downloadPopupRequired}" + type="button" styleClass="btn btn-default" + action="#{DatasetPage.initGuestbookResponse(fileMetadata, 'explore')}" + update="@form" + oncomplete="downloadPopup.show();handleResizeDialog('downloadPopup');"> + <span class="glyphicon glyphicon-equalizer"/> #{bundle.explore} + </p:commandLink> + + <!-- WorldMap Explore | Map Data button group --> + <div class="btn-group" role="group" jsf:rendered="#{DatasetPage.canUserSeeExploreWorldMapButton(fileMetadata) or DatasetPage.canUserSeeMapDataButton(fileMetadata) or DatasetPage.canSeeMapButtonReminderToPublish(fileMetadata)}"> + <!-- WorldMap Explore --> + <h:outputLink pt:role="button" rendered="#{DatasetPage.canUserSeeExploreWorldMapButton(fileMetadata)}" + type="button" styleClass="btn btn-default #{fileMetadata.dataFile.ingestInProgress ? 'disabled' : ''}" disabled="#{fileMetadata.dataFile.ingestInProgress ? 'disabled' : ''}" title="Explore" value="#{ DatasetPage.getMapLayerMetadata(fileMetadata.dataFile).getLayerLink() }" target="_blank"> + <span class="glyphicon glyphicon-map-marker"/> <span class="ladda-label">#{bundle['file.mapData.viewMap']}</span> + </h:outputLink> + <!-- WorldMap Map Data --> + <h:outputLink pt:role="button" rendered="#{DatasetPage.canUserSeeMapDataButton(fileMetadata)}" + type="button" styleClass="btn btn-default" value="#{fileMetadata.dataFile.getMapItURL(dataverseSession.user.id)}" role="button"> + <span class="glyphicon glyphicon-map-marker" /> #{bundle['file.mapData']} + </h:outputLink> + <!-- Unpublished Map Data --> + <ui:fragment rendered="#{DatasetPage.canSeeMapButtonReminderToPublish(fileMetadata)}"> + <button type="button" class="btn btn-default" onclick="mapData_popup.show()"> + <span class="glyphicon glyphicon-map-marker" /> #{bundle['file.mapData']} + </button> + </ui:fragment> + </div> + + + <!-- non-tabular data file: --> + <!-- no guest book/terms of use/etc. - straight to the download API url: --> + <p:commandLink rendered="#{ DatasetPage.canDownloadFile(fileMetadata) and !(fileMetadata.dataFile.tabularData) and !(DatasetPage.downloadPopupRequired) }" + type="button" styleClass="btn btn-default" + actionListener="#{DatasetPage.startFileDownload(fileMetadata, '')}"> + <span class="glyphicon glyphicon-download-alt"/> #{bundle.download} + </p:commandLink> + <!-- guest book or terms of use, etc. enabled - open "download popup" first: --> + <p:commandLink rendered="#{ DatasetPage.canDownloadFile(fileMetadata) and !(fileMetadata.dataFile.tabularData) and DatasetPage.downloadPopupRequired }" + type="button" styleClass="btn btn-default" + action="#{DatasetPage.initGuestbookResponse(fileMetadata)}" + update="@form" oncomplete="downloadPopup.show();handleResizeDialog('downloadPopup');"> + <span class="glyphicon glyphicon-download-alt"/> #{bundle.download} + </p:commandLink> + + <!-- Download Dropdown --> + <div class="btn-group" jsf:rendered="#{ DatasetPage.canDownloadFile(fileMetadata) and fileMetadata.dataFile.tabularData }"> + <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> + <span class="glyphicon glyphicon-download-alt"/> #{bundle.download} <span class="caret"/> + </button> + <ul class="dropdown-menu multi-level pull-right text-left" role="menu"> + <ui:remove> + <li> + <p:commandLink styleClass="highlightBold" rendered="#{!(DatasetPage.downloadPopupRequired)}" + actionListener="#{DatasetPage.startFileDownload(fileMetadata, 'bundle')}"> + #{bundle['file.downloadBtn.format.all']} + </p:commandLink> + <p:commandLink styleClass="highlightBold" rendered="#{DatasetPage.downloadPopupRequired}" + action="#{DatasetPage.initGuestbookResponse(fileMetadata, 'bundle')}" + update="@form" + oncomplete="downloadPopup.show();handleResizeDialog('downloadPopup');"> + #{bundle['file.downloadBtn.format.all']} + </p:commandLink> + </li> + </ui:remove> + <li role="presentation" class="divider"></li> + <li> + <p:commandLink rendered="#{!(DatasetPage.downloadPopupRequired)}" + actionListener="#{DatasetPage.startFileDownload(fileMetadata, 'original')}"> + <h:outputFormat value="#{bundle['file.downloadBtn.format.original']}"> + <f:param value="#{fileMetadata.dataFile.originalFormatLabel}"/> + </h:outputFormat> + </p:commandLink> + <p:commandLink rendered="#{DatasetPage.downloadPopupRequired}" + action="#{DatasetPage.initGuestbookResponse(fileMetadata, 'original')}" + update="@form" + oncomplete="downloadPopup.show();handleResizeDialog('downloadPopup');"> + <h:outputFormat value="#{bundle['file.downloadBtn.format.original']}"> + <f:param value="#{fileMetadata.dataFile.originalFormatLabel}"/> + </h:outputFormat> + </p:commandLink> + </li> + <li> + <p:commandLink rendered="#{!(DatasetPage.downloadPopupRequired)}" + actionListener="#{DatasetPage.startFileDownload(fileMetadata, 'tab')}"> + #{bundle['file.downloadBtn.format.tab']} + </p:commandLink> + <p:commandLink rendered="#{DatasetPage.downloadPopupRequired}" + action="#{DatasetPage.initGuestbookResponse(fileMetadata, 'tab')}" + update="@form" + oncomplete="downloadPopup.show();handleResizeDialog('downloadPopup');"> + #{bundle['file.downloadBtn.format.tab']} + </p:commandLink> + </li> + <ui:fragment rendered="#{!(fileMetadata.dataFile.originalFormatLabel == 'RData')}"> + <li> + <p:commandLink rendered="#{!(DatasetPage.downloadPopupRequired)}" + actionListener="#{DatasetPage.startFileDownload(fileMetadata, 'RData')}"> + #{bundle['file.downloadBtn.format.rdata']} + </p:commandLink> + <p:commandLink rendered="#{DatasetPage.downloadPopupRequired}" + action="#{DatasetPage.initGuestbookResponse(fileMetadata, 'RData')}" + update="@form" + oncomplete="downloadPopup.show();handleResizeDialog('downloadPopup');"> + #{bundle['file.downloadBtn.format.rdata']} + </p:commandLink> + </li> + </ui:fragment> + <li> + <p:commandLink rendered="#{!(DatasetPage.downloadPopupRequired)}" + actionListener="#{DatasetPage.startFileDownload(fileMetadata, 'var')}"> + #{bundle['file.downloadBtn.format.var']} + </p:commandLink> + <p:commandLink rendered="#{DatasetPage.downloadPopupRequired}" + action="#{DatasetPage.initGuestbookResponse(fileMetadata, 'var')}" + update="@form" + oncomplete="downloadPopup.show();handleResizeDialog('downloadPopup');"> + #{bundle['file.downloadBtn.format.var']} + </p:commandLink> + </li> + <li> + <p:commandLink id="fileDowloadDataSubsetButton" rendered="#{!(DatasetPage.downloadPopupRequired)}" + actionListener="#{DatasetPage.setFileMetadataSelected(fileMetadata, 'create')}" + update=":datasetForm:downloadDataSubsetPopup" + oncomplete="downloadDataSubsetPopup.show()" + value="Data Subset" + disabled="#{empty fileMetadata.dataFile.id}"/> + <p:commandLink id="fileDowloadDataSubsetButtonPopupReq" rendered="#{(DatasetPage.downloadPopupRequired)}" + actionListener="#{DatasetPage.setFileMetadataSelected(fileMetadata, 'init')}" + update="@form" + oncomplete="downloadPopup.show()" + value="Data Subset" + disabled="#{empty fileMetadata.dataFile.id}"/> + </li> + <li class="dropdown-submenu"> + <a tabindex="-1" href="javascript:void(0);">#{bundle['file.downloadBtn.format.citation']}</a> + <ul class="dropdown-menu"> + <li> + <h:commandLink id="risLinkFile" actionListener="#{DatasetPage.downloadDatafileCitationRIS(fileMetadata)}"> + <h:outputText value="#{bundle['dataset.cite.downloadBtn.ris']}" /> + </h:commandLink> + </li> + <li> + <h:commandLink id="endNoteLinkFile" action="#{DatasetPage.downloadDatafileCitationXML(fileMetadata)}"> + <h:outputText value="#{bundle['dataset.cite.downloadBtn.xml']}" /> + </h:commandLink> + </li> + </ul> + </li> + </ul> + </div> + <!-- Request Access --> + <p:commandLink type="button" styleClass="btn btn-default" rendered="#{dataverseSession.user.authenticated and DatasetPage.dataset.fileAccessRequest and !(DatasetPage.canDownloadFile(fileMetadata))}" + + actionListener="#{DatasetPage.requestAccess(fileMetadata.dataFile)}" + update="filesTable" + disabled="#{fileMetadata.dataFile.fileAccessRequesters.contains(dataverseSession.user)}"> + <span class="glyphicon glyphicon-bullhorn"/> #{fileMetadata.dataFile.fileAccessRequesters.contains(dataverseSession.user) ? bundle['file.accessRequested'] : bundle['file.requestAccess']} + </p:commandLink> + <p:commandLink type="button" styleClass="btn btn-default" rendered="#{!dataverseSession.user.authenticated and DatasetPage.dataset.fileAccessRequest and !(DatasetPage.canDownloadFile(fileMetadata))}" + onclick="accessSignUpLogIn_popup.show()"> + <span class="glyphicon glyphicon-bullhorn"/> #{fileMetadata.dataFile.fileAccessRequesters.contains(dataverseSession.user) ? bundle['file.accessRequested'] : bundle['file.requestAccess']} + </p:commandLink> + </div> + <!-- END: button-block --> + </p:column> + </p:dataTable> + </p:tab> + + <p:tab id="metadataMapTab" title="#{bundle['file.dataFilesTab.metadata.header']}" + rendered="#{!DatasetPage.workingVersion.deaccessioned and (empty DatasetPage.editMode or DatasetPage.editMode == 'METADATA')}"> + <div class="text-right margin-bottom" + jsf:rendered="#{dataverseSession.user.authenticated and empty DatasetPage.editMode + and permissionsWrapper.canIssueUpdateDatasetCommand(DatasetPage.dataset)}"> + <p:commandLink type="button" styleClass="btn btn-default" actionListener="#{DatasetPage.edit('METADATA')}" update="@form,:messagePanel" oncomplete="javascript:post_edit_metadata()" disabled="#{DatasetPage.locked}"> + <f:setPropertyActionListener target="#{DatasetPage.selectedTabIndex}" value="0" /> + <span class="glyphicon glyphicon-pencil"/> #{bundle['file.dataFilesTab.metadata.addBtn']} + </p:commandLink> + </div> + + <ui:include src="metadataFragment.xhtml"> + <ui:param name="datasetPage" value="true"/> + <ui:param name="editMode" value="#{!empty DatasetPage.editMode ? DatasetPage.editMode : ''}"/> + <ui:param name="metadataBlocks" value="#{!empty DatasetPage.editMode ? DatasetPage.datasetVersionUI.metadataBlocksForEdit.entrySet().toArray(): DatasetPage.datasetVersionUI.metadataBlocksForView.entrySet().toArray()}"/> + <ui:param name="publicationDate" value="#{DatasetPage.dataset.publicationDate != null ? DatasetPage.dataset.publicationDateFormattedYYYYMMDD : ''}"/> + <ui:param name="globalId" value="#{DatasetPage.dataset.globalId}"/> + </ui:include> + </p:tab> + + <p:tab id="termsTab" title="#{bundle['file.dataFilesTab.terms.header']}" + rendered="#{!DatasetPage.workingVersion.deaccessioned and (empty DatasetPage.editMode or DatasetPage.editMode == 'LICENSE')}"> + <ui:include src="dataset-license-terms.xhtml"></ui:include> + </p:tab> + <p:tab id="versionsTab" title="#{bundle['file.dataFilesTab.versions']}" rendered="#{empty DatasetPage.editMode}"> + <ui:include src="dataset-versions.xhtml"></ui:include> + </p:tab> + </p:tabView> + </div> + <!-- END View/Tabs infoMode --> + + <!-- Create Metadata Tip --> + <div class="alert alert-info margin-top" jsf:rendered="#{DatasetPage.editMode == 'CREATE'}"> + #{bundle['file.metadataTip']} + </div> + + <!-- Create/Save Dataset Button Panel --> + <div class="button-block" jsf:rendered="#{!empty DatasetPage.editMode}"> + <p:commandButton tabindex="1000" id="save" value="#{DatasetPage.editMode == 'CREATE' ? bundle['file.addBtn'] : bundle.saveChanges}" onclick="checkNewlyRestricted();" /> + <p:commandButton tabindex="1000" id="cancel" value="#{bundle.cancel}" action="#{DatasetPage.cancel}" process="@this" update="@form" rendered="#{DatasetPage.editMode != 'CREATE'}" oncomplete="javascript:post_cancel_edit_files_or_metadata()"> + <f:setPropertyActionListener target="#{DatasetPage.selectedTabIndex}" value="#{DatasetPage.editMode == 'METADATA' ? 1 : DatasetPage.selectedTabIndex}"/> + </p:commandButton> + <p:button id="cancelCreate" value="#{bundle.cancel}" outcome="/dataverse.xhtml?alias=#{DatasetPage.dataset.owner.alias}" rendered="#{DatasetPage.editMode == 'CREATE'}" /> + <p:commandButton value="Direct" id="datasetSave" + style="display:none" + update=":datasetForm,:messagePanel" + oncomplete="javascript:bind_bsui_components();$(document).scrollTop(0);" + action="#{DatasetPage.save}" /> + + </div> + <!-- END: Create/Save Dataset Button Panel --> + + <!-- Popups --> + <p:dialog styleClass="smallPopUp" header="#{bundle['file.deleteDialog.header']}" widgetVar="deleteConfirmation" modal="true"> + <p class="text-danger"><span class="glyphicon glyphicon-warning-sign"/> #{bundle['file.deleteDialog.tip']}</p> + <div class="button-block"> + <p:commandButton value="#{bundle.continue}" onclick="deleteConfirmation.hide()" action="#{DatasetPage.deleteDataset()}" /> + <p:commandButton value="#{bundle.cancel}" onclick="deleteConfirmation.hide()" type="button" /> + </div> + </p:dialog> + <p:dialog styleClass="smallPopUp" header="#{bundle['file.deleteDraftDialog.header']}" widgetVar="deleteVersionConfirmation" modal="true"> + <p class="text-danger"><span class="glyphicon glyphicon-warning-sign"/> #{bundle['file.deleteDraftDialog.tip']}</p> + <div class="button-block"> + <p:commandButton value="#{bundle.continue}" onclick="deleteVersionConfirmation.hide()" action="#{DatasetPage.deleteDatasetVersion()}" /> + <p:commandButton value="#{bundle.cancel}" onclick="deleteVersionConfirmation.hide()" type="button" /> + </div> + </p:dialog> + <p:dialog styleClass="smallPopUp" header="#{bundle['file.deleteFileDialog.header']}" widgetVar="deleteFileConfirmation" modal="true"> + <p class="text-danger"><span class="glyphicon glyphicon-warning-sign"/> #{bundle['file.deleteFileDialog.tip']}</p> + <ui:fragment rendered="#{DatasetPage.dataset.released}"> + <p class="text-danger"><span class="glyphicon glyphicon-warning-sign"/> #{bundle['file.deleteFileDialog.failed.tip']}</p> + </ui:fragment> + <div class="button-block"> + <p:commandButton value="#{bundle.continue}" onclick="deleteFileConfirmation.hide()" oncomplete="window.scrollTo(0, 0);" + update=":#{p:component('filesTable')},:messagePanel" action="#{DatasetPage.deleteFiles()}" /> + <p:commandButton value="#{bundle.cancel}" onclick="deleteFileConfirmation.hide()" type="button" /> + </div> + </p:dialog> + <p:dialog id="deaccessionBlock" header="#{bundle['dataset.editBtn.itemLabel.deaccession']}" widgetVar="deaccessionBlock" modal="true"> + <p class="text-danger"><span class="glyphicon glyphicon-warning-sign"/> #{bundle['file.deaccessionDialog.tip']}</p> + <div class="form-group" jsf:rendered="#{DatasetPage.releasedVersionTabList.size() > 1}"> + <label for="versionDeaccessionTable">#{bundle['file.deaccessionDialog.reason.question1']} <span class="glyphicon glyphicon-asterisk text-danger" title="#{bundle.requiredField}"/></label> + <p:dataTable id="versionDeaccessionTable" value="#{DatasetPage.releasedVersionTabList}" var="versionTab" widgetVar="versionDeaccessionTable" + rowIndexVar="rowNum" selection="#{DatasetPage.selectedDeaccessionVersions}" rowKey="#{versionTab}"> + <p:column selectionMode="multiple" class="col-select-width text-center"/> + <p:column> + <h:outputText value="#{bundle['file.deaccessionDialog.version']} #{versionTab.versionNumber}.#{versionTab.minorVersionNumber}, #{versionTab.versionDate}" /> + </p:column> + </p:dataTable> + </div> + <div class="form-group"> + <label for="reasonOptions">#{bundle['file.deaccessionDialog.reason.question2']} <span class="glyphicon glyphicon-asterisk text-danger" title="#{bundle.requiredField}"/></label> + <h:selectOneMenu id="reasonOptions" styleClass="form-control" value="#{DatasetPage.deaccessionReasonRadio}"> + <f:selectItem itemLabel="#{bundle.select}" itemValue="0" noSelectionOption="true" /> + <f:selectItem itemLabel="#{bundle['file.deaccessionDialog.reason.selectItem.identifiable']}" itemValue="1" /> + <f:selectItem itemLabel="#{bundle['file.deaccessionDialog.reason.selectItem.beRetracted']}" itemValue="2" /> + <f:selectItem itemLabel="#{bundle['file.deaccessionDialog.reason.selectItem.beTransferred']}" itemValue="3" /> + <f:selectItem itemLabel="#{bundle['file.deaccessionDialog.reason.selectItem.IRB']}" itemValue="4" /> + <f:selectItem itemLabel="#{bundle['file.deaccessionDialog.reason.selectItem.legalIssue']}" itemValue="5" /> + <f:selectItem itemLabel="#{bundle['file.deaccessionDialog.reason.selectItem.notValid']}" itemValue="6" /> + <f:selectItem itemLabel="#{bundle['file.deaccessionDialog.reason.selectItem.other']}" itemValue="7" /> + </h:selectOneMenu> + </div> + <div class="form-group"> + <label for="reasonForDeaccession"> + #{bundle['file.deaccessionDialog.enterInfo']} + </label> + <p:inputTextarea id="reasonForDeaccession" styleClass="form-control" immediate="true" rows="2" cols="40" + onkeyup="updateHiddenReason(this);" value="#{DatasetPage.deaccessionReasonText}" widgetVar="reasonForDeaccession"/> + <p:message for="reasonForDeaccession"/> + </div> + <div class="form-group"> + <label for="forwardURLForDeaccession"> + #{bundle['file.deaccessionDialog.leaveURL']} + </label> + <p:inputText id="forwardURLForDeaccession" styleClass="form-control" value="#{DatasetPage.deaccessionForwardURLFor}" widgetVar="forwardURLForDeaccession"/> + <p:watermark for="forwardURLForDeaccession" value="#{bundle['file.deaccessionDialog.leaveURL.watermark']}" id="watermark" /> + </div> + <div class="button-block"> + <p:commandLink type="button" styleClass="btn btn-default" value="#{bundle.deaccession}" rendered="#{DatasetPage.releasedVersionTabList.size() > 1}" + onclick="testDeaccessionVersionSelection(true);"/> + <p:commandLink type="button" styleClass="btn btn-default" value="#{bundle.deaccession}" rendered="#{DatasetPage.releasedVersionTabList.size() == 1}" + onclick="testDeaccessionVersionSelection(false);"/> + <p:commandLink type="button" styleClass="btn btn-default" value="#{bundle.cancel}" onclick="deaccessionBlock.hide()"/> + </div> + </p:dialog> + <p:dialog id="deaccessionConfirmation" header="Deaccession Dataset" widgetVar="deaccessionConfirmation" modal="true"> + <p class="text-danger"><span class="glyphicon glyphicon-warning-sign"/> #{bundle['file.deaccessionDialog.deaccession.tip']}</p> + <div class="button-block"> + <h:commandButton styleClass="btn btn-default" value="#{bundle.yes}" onclick="deaccessionConfirmation.hide(); + deaccessionBlock.hide()" action="#{DatasetPage.deaccessionVersions}" /> + <button type="button" class="btn btn-default" value="No" onclick="deaccessionConfirmation.hide()">#{bundle.no}</button> + </div> + </p:dialog> + <p:dialog id="deaccessionAllConfirmation" header="#{bundle['dataset.editBtn.itemLabel.deaccession']}" widgetVar="deaccessionAllConfirmation" modal="true"> + <p class="text-danger"><span class="glyphicon glyphicon-warning-sign"/> #{bundle['file.deaccessionDialog.deaccessionDataset.tip']}</p> + <div class="button-block"> + <h:commandButton styleClass="btn btn-default" value="Yes" onclick="deaccessionAllConfirmation.hide(); + deaccessionBlock.hide()" action="#{DatasetPage.deaccessionVersions}" /> + <button type="button" class="btn btn-default" value="No" onclick="deaccessionAllConfirmation.hide()">#{bundle.no}</button> + </div> + </p:dialog> + <p:confirmDialog id="selectDeaccessionVersion" message="#{bundle['file.deaccessionDialog.dialog.selectVersion.tip']}" header="#{bundle['file.deaccessionDialog.dialog.selectVersion.header']}" widgetVar="selectDeaccessionVersion"> </p:confirmDialog> + <p:confirmDialog id="selectDeaccessionReason" message="#{bundle['file.deaccessionDialog.dialog.reason.tip']}" header="#{bundle['file.deaccessionDialog.dialog.reason.header']}" widgetVar="selectDeaccessionReason"> </p:confirmDialog> + <p:confirmDialog id="enterForwardUrl" message="#{bundle['file.deaccessionDialog.dialog.url.tip']}" header="#{bundle['file.deaccessionDialog.dialog.url.header']}" widgetVar="enterForwardUrl"> </p:confirmDialog> + <p:confirmDialog id="enterOtherReason" message="#{bundle['file.deaccessionDialog.dialog.textForReason.tip']}" header="#{bundle['file.deaccessionDialog.dialog.textForReason.header']}" widgetVar="enterOtherReason"> </p:confirmDialog> + <p:confirmDialog id="reasonTooManyCharacters" message="#{bundle['file.deaccessionDialog.dialog.limitChar.tip']}" header="#{bundle['file.deaccessionDialog.dialog.limitChar.header']}" widgetVar="reasonTooManyCharacters"> </p:confirmDialog> + <p:inputText id="hiddenReasonInput" style="display:none" widgetVar="hiddenReasonInput"/> + <p:dialog id="compareTwo" header="#{bundle['file.viewDiffDialog.header']}" widgetVar="compareTwo" modal="true"> + <p class="help-block"><span class="glyphicon glyphicon-warning-sign text-danger"/> <span class="text-danger">#{bundle['file.viewDiffDialog.dialog.warning']}</span></p> + <div class="button-block"> + <p:commandButton value="#{bundle.close}" onclick="compareTwo.hide()" type="button" /> + </div> + </p:dialog> + <p:dialog id="detailsBlocks" styleClass="largePopUp" header="#{bundle['file.viewDiffDialog.header']}" widgetVar="detailsBlocks" modal="true"> + <div id="title" class="margin-bottom-half">#{DatasetPage.datasetVersionDifference.newVersion.title}</div> + <div id="version-details-block" class=" clearfix margin-bottom-half"> + <div class="pull-left"> +   + </div> + <div class="pull-left"> + #{bundle['file.viewDiffDialog.version']}: #{DatasetPage.datasetVersionDifference.originalVersion.semanticVersion}<br/> + #{bundle['file.viewDiffDialog.lastUpdated']}: #{DatasetPage.datasetVersionDifference.originalVersion.lastUpdateTime} + </div> + <div class="pull-left"> + #{bundle['file.viewDiffDialog.version']}: #{DatasetPage.datasetVersionDifference.newVersion.semanticVersion}<br/> + #{bundle['file.viewDiffDialog.lastUpdated']}: #{DatasetPage.datasetVersionDifference.newVersion.lastUpdateTime} + </div> + </div> + <ui:fragment rendered="#{!empty(DatasetPage.datasetVersionDifference.detailDataByBlock)}"> + <ui:repeat value="#{DatasetPage.datasetVersionDifference.detailDataByBlock}" var="block"> + <div class="panel panel-default"> + <div class="panel-heading text-info"> + <h:outputText value="#{block.get(0)[0].datasetFieldType.metadataBlock.displayName}" /> + </div> + <p:dataTable id="byBlockInner" styleClass="dvnDifferanceTable" var="dsfArray" value="#{block}"> + <p:column styleClass="versionValue"> + <h:outputText value="#{dsfArray[0].datasetFieldType.title}" /> + </p:column> + <p:column styleClass="versionDetails"> + <h:outputText rendered="#{dsfArray[0].datasetFieldType.primitive and !(dsfArray[0].isEmpty())}" value="#{dsfArray[0].displayValue}" /> + <h:outputText rendered="#{!dsfArray[0].datasetFieldType.primitive and !(dsfArray[0].isEmpty())}" value="#{dsfArray[0].compoundDisplayValue}" /> + </p:column> + <p:column styleClass="versionDetails" > + <h:outputText rendered="#{dsfArray[1].datasetFieldType.primitive and !(dsfArray[1].isEmpty())}" value="#{dsfArray[1].displayValue}" /> + <h:outputText rendered="#{!dsfArray[1].datasetFieldType.primitive and !(dsfArray[1].isEmpty())}" value="#{dsfArray[1].compoundDisplayValue}" /> + </p:column> + </p:dataTable> + </div> + </ui:repeat> + </ui:fragment> + <div class="panel panel-default" jsf:rendered="#{!empty(DatasetPage.datasetVersionDifference.fileNote)}"> + <div class="panel-heading text-info" rendered="#{!empty(DatasetPage.datasetVersionDifference.datasetFilesDiffList)}"> + <h:outputText id="outputText" value="#{bundle.files}"/> + </div> + <p:dataTable id="diffFilesDataTable" styleClass="dvnDifferanceTable" value="#{DatasetPage.datasetVersionDifference.datasetFilesDiffList}" var="fileDiff"> + <p:column styleClass="versionValue"> + <h:outputText value="#{bundle['file.viewDiffDialog.fileID']} #{fileDiff.fileId}"/> + </p:column> + <p:column styleClass="versionDetails" rendered="#{! fileDiff.file1Empty}"> + <h:outputText value="#{bundle['file.viewDiffDialog.fileName']}: #{fileDiff.fileName1}" styleClass="diffDetailBlock" rendered="#{fileDiff.fileName1 != null}"/> + <h:outputText value="#{bundle['file.viewDiffDialog.fileType']}: #{fileDiff.fileType1}" styleClass="diffDetailBlock" rendered="#{fileDiff.fileType1 != null}"/> + <h:outputText value="#{bundle['file.viewDiffDialog.fileSize']}: #{fileDiff.fileSize1}" styleClass="diffDetailBlock" rendered="#{fileDiff.fileSize1 != null}"/> + <h:outputText value="#{bundle['file.viewDiffDialog.category']}: #{fileDiff.fileCat1}" styleClass="diffDetailBlock" rendered="#{fileDiff.fileCat1 != null}"/> + <h:outputText value="#{bundle['file.viewDiffDialog.description']}: #{fileDiff.fileDesc1}" styleClass="diffDetailBlock" rendered="#{fileDiff.fileDesc1 != null}"/> + </p:column> + <p:column styleClass="versionDetails" rendered="#{fileDiff.file1Empty}"> +   + </p:column> + <p:column styleClass="versionDetails" rendered="#{! fileDiff.file2Empty}"> + <h:outputText value="#{bundle['file.viewDiffDialog.fileName']}: #{fileDiff.fileName2}" styleClass="diffDetailBlock" rendered="#{fileDiff.fileName2 != null}"/> + <h:outputText value="#{bundle['file.viewDiffDialog.fileType']}: #{fileDiff.fileType2}" styleClass="diffDetailBlock" rendered="#{fileDiff.fileType2 != null}"/> + <h:outputText value="#{bundle['file.viewDiffDialog.fileSize']}: #{fileDiff.fileSize2}" styleClass="diffDetailBlock" rendered="#{fileDiff.fileSize2 != null}"/> + <h:outputText value="#{bundle['file.viewDiffDialog.category']}: #{fileDiff.fileCat2}" styleClass="diffDetailBlock" rendered="#{fileDiff.fileCat2 != null}"/> + <h:outputText value="#{bundle['file.viewDiffDialog.description']}: #{fileDiff.fileDesc2}" styleClass="diffDetailBlock" rendered="#{fileDiff.fileDesc2 != null}"/> + </p:column> + <p:column styleClass="versionDetails" rendered="#{fileDiff.file2Empty}"> +   + </p:column> + </p:dataTable> + </div> + <div class="button-block margin-bottom"> + <p:commandButton value="#{bundle.done}" onclick="detailsBlocks.hide()" type="button" /> + </div> + </p:dialog> + + <p:dialog id="fileAdvancedOptions" styleClass="dialog-submenu smallPopUp" header="#{bundle['file.advancedIngestOptions']}" widgetVar="fileAdvancedOptions" modal="true"> + <div class="form-horizontal"> + <!-- select text encoding, for SPSS-SAV (and, and possibly, other) (this option is only available during ingest) data files; not implemented yet --> + <div class="form-group" jsf:rendered="#{!(empty DatasetPage.fileMetadataSelectedForIngestOptionsPopup) and (empty DatasetPage.fileMetadataSelectedForIngestOptionsPopup.id) and dataFileServiceBean.isSpssSavFile(DatasetPage.fileMetadataSelectedForIngestOptionsPopup.dataFile)}"> + <label for="spssSavEncodingLanguage" class="col-sm-4 control-label"> + #{bundle['file.spss-savEncoding']} + </label> + <div class="col-sm-8"> + <p class="help-block"><span class="glyphicon glyphicon-info-sign"/> #{bundle['file.spss-savEncoding.title']}</p> + <p class="form-control-static"><h:outputText id="selectedEncoding" value="#{bundle['file.spss-savEncoding.current']} #{DatasetPage.ingestLanguageEncoding}"/></p> + <p:tieredMenu id="spssSavEncodingLanguage" styleClass="form-control"> + <p:submenu label="Select Language Encoding..."> + <p:submenu label="West European"> + <p:menuitem value="Western (ISO-8859-1)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-1')}"> + </p:menuitem> + <p:menuitem value="Western (ISO-8859-15)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-15')}"> + </p:menuitem> + <p:menuitem value="Western (Windows-1252)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('windows-1252')}"> + </p:menuitem> + <p:menuitem value="Western (MacRoman)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('macintosh')}"> + </p:menuitem> + <p:menuitem value="Western (IBM-850)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('ibm850')}"> + </p:menuitem> + <p:menuitem value="Celtic (ISO-8859-14)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-14')}"> + </p:menuitem> + <p:menuitem value="Greek (ISO-8859-7)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-7')}"> + </p:menuitem> + <p:menuitem value="Greek (Windows-1253)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('windows-1253')}"> + </p:menuitem> + <p:menuitem value="Greek (MacGreek)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('x-mac-greek')}"> + </p:menuitem> + <p:menuitem value="Icelandic (MacIcelandic)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('x-mac-icelandic')}"> + </p:menuitem> + <p:menuitem value="Nordic (ISO-8859-10)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-10')}"> + </p:menuitem> + <p:menuitem value="South European (ISO-8859-3)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-3')}"> + </p:menuitem> + </p:submenu> + <p:submenu label="East European"> + <p:menuitem value="Baltic (ISO-8859-4)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-4')}"> + </p:menuitem> + <p:menuitem value="Baltic (ISO-8859-13)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-13')}"> + </p:menuitem> + <p:menuitem value="Baltic (Windows-1257)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('windows-1257')}"> + </p:menuitem> + <p:menuitem value="Cyrillic (ISO-8859-5)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-5')}"> + </p:menuitem> + <p:menuitem value="Cyrillic (ISO-IR-111)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-ir-111')}"> + </p:menuitem> + <p:menuitem value="Cyrillic (Windows-1251)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('windows-1251')}"> + </p:menuitem> + <p:menuitem value="Cyrillic (MacCyrillic)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('x-mac-cyrillic')}"> + </p:menuitem> + <p:menuitem value="Cyrillic/Ukrainian (MacUkrainian)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('x-mac-ukrainian')}"> + </p:menuitem> + <p:menuitem value="Cyrillic (KOI8-R)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('koi8-r')}"> + </p:menuitem> + <p:menuitem value="Cyrillic/Ukrainian (KOI8-U)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('koi8-u')}"> + </p:menuitem> + <p:menuitem value="Croatian (MacCroatian)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('x-mac-croatian')}"> + </p:menuitem> + <p:menuitem value="Romanian (MacRomanian)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('x-mac-romanian')}"> + </p:menuitem> + <p:menuitem value="Romanian (ISO-8859-16)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-16')}"> + </p:menuitem> + <p:menuitem value="Central European (ISO-8859-2)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-8859-2')}"> + </p:menuitem> + <p:menuitem value="Central European (Windows-1250)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('windows-1250')}"> + </p:menuitem> + <p:menuitem value="Central European (MacCE)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('x-mac-ce')}"> + </p:menuitem> + <p:menuitem value="Cyrillic (IBM-855)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('ibm855')}"> + </p:menuitem> + </p:submenu> + <p:submenu label="East Asian"> + <p:menuitem value="Japanese (ISO-2022-JP)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-2022-jp')}"> + </p:menuitem> + <p:menuitem value="Japanese (Shift_JIS)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('shift_jis')}"> + </p:menuitem> + <p:menuitem value="Japanese (EUC-JP)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('euc-jp')}"> + </p:menuitem> + <p:menuitem value="Chinese Traditional (Big5)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('big5')}"> + </p:menuitem> + <p:menuitem value="Chinese Traditional (Big5-HKSCS)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('big5-hkscs')}"> + </p:menuitem> + <p:menuitem value="Chinese Traditional (EUC-TW)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('x-euc-tw')}"> + </p:menuitem> + <p:menuitem value="Chinese Simplified (GB2312)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('gb2312')}"> + </p:menuitem> + <p:menuitem value="Chinese Simplified (HZ)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('hz-gb-2312')}"> + </p:menuitem> + <p:menuitem value="Chinese Simplified (GBK)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('gbk')}"> + </p:menuitem> + <p:menuitem value="Chinese Simplified (ISO-2022-CN)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-2022-cn')}"> + </p:menuitem> + <p:menuitem value="Korean (EUC-KR)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('euc-kr')}"> + </p:menuitem> + <p:menuitem value="Korean (JOHAB)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('x-johab')}"> + </p:menuitem> + <p:menuitem value="Korean (ISO-2022-KR)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('iso-2022-kr')}"> + </p:menuitem> + </p:submenu> + <p:submenu label="Unicode"> + <p:menuitem value="Unicode (UTF-8)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('utf-8')}"> + </p:menuitem> + <p:menuitem value="Unicode (UTF-16LE)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('utf-16le')}"> + </p:menuitem> + <p:menuitem value="Unicode (UTF-16BE)" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('utf-16be')}"> + </p:menuitem> + </p:submenu> + <p:separator /> + <p:menuitem value="US-ASCII" update="selectedEncoding" + actionListener="#{DatasetPage.setIngestEncoding('US-ASCII')}"> + </p:menuitem> + </p:submenu> + </p:tieredMenu> + <p:message for="spssSavEncodingLanguage" display="text" /> + <!-- REPLACE THESE WITH YOUR DYNAMIC FORM COMPONENTS AND ERROR MSG AND PUT THEM INTO THE PANELGRID ABOVE + <p:inputText id="spssSavEncodingLanguage" styleClass="form-control"/> + <p:message for="spssSavEncodingLanguage" display="text" /> --> + </div> + </div> + + <!-- ODUM-style extra variable labels for SPSS-POR files (this option is only available during ingest) --> + <div class="form-group" jsf:rendered="#{!(empty DatasetPage.fileMetadataSelectedForIngestOptionsPopup) and (empty DatasetPage.fileMetadataSelectedForIngestOptionsPopup.id) and dataFileServiceBean.isSpssPorFile(DatasetPage.fileMetadataSelectedForIngestOptionsPopup.dataFile)}"> + <label for="labelsFileUpload" class="col-sm-4 control-label"> + #{bundle['file.spss-porExtraLabels']} + </label> + <div class="col-sm-8"> + <p class="help-block"><span class="glyphicon glyphicon-info-sign"/> #{bundle['file.spss-porExtraLabels.title']}</p> + <p:growl id="messageForLabelsFileUpload" showDetail="true" /> + <p:fileUpload id="labelsFileUpload" label="#{bundle['file.spss-porExtraLabels.selectToAddBtn']}" update="messageForLabelsFileUpload" mode="advanced" auto="true" fileUploadListener="#{DatasetPage.handleLabelsFileUpload}"/> + </div> + </div> + </div> + <div class="button-block"> + <p:commandButton id="fileAdvancedOptionsSaveButton" value="#{bundle.saveChanges}" oncomplete="fileAdvancedOptions.hide()" update=":datasetForm:tabView:filesTable,:messagePanel" actionListener="#{DatasetPage.saveAdvancedOptions()}"/> + <p:commandButton id="fileAdvancedOptionsCancelButton" value="#{bundle.cancel}" onclick="fileAdvancedOptions.hide()" actionListener="#{DatasetPage.clearFileMetadataSelectedForIngestOptionsPopup()}"/> + </div> + </p:dialog> + + <p:dialog id="fileSetThumbnail" styleClass="smallPopUp" header="#{bundle['file.setThumbnail.header']}" widgetVar="fileSetThumbnail" modal="true"> + <div class="form-horizontal"> + <div class="form-group"> + <label for="datasetThumbnailImage" class="col-sm-4 control-label"> + #{bundle['file.datasetThumbnail']} + </label> + <div class="col-sm-8"> + <p class="help-block">#{bundle['file.datasetThumbnail.tip']}</p> + <p:selectBooleanCheckbox id="datasetThumbnailImage" + itemLabel="#{bundle['file.useThisIamge']}" value="#{DatasetPage.useAsDatasetThumbnail}"/> + <p:message for="datasetThumbnailImage" display="text" /> + </div> + </div> + </div> + <div class="button-block"> + <p:commandButton id="fileSetThumbnailSaveBtn" value="#{bundle.saveChanges}" oncomplete="fileSetThumbnail.hide()" update=":datasetForm:tabView:filesTable,:messagePanel" actionListener="#{DatasetPage.saveAsDesignatedThumbnail()}"/> + <p:commandButton id="fileSetThumbnailCancelBtn" value="#{bundle.cancel}" onclick="fileSetThumbnail.hide()" actionListener="#{DatasetPage.clearFileMetadataSelectedForThumbnailPopup()}"/> + </div> + </p:dialog> + + <p:dialog id="fileTagsPopup" styleClass="smallPopUp" header="#{bundle['file.editTags']}" widgetVar="fileTagsPopup" modal="true"> + <p class="help-block"><span class="glyphicon glyphicon-info-sign"/> #{bundle['file.editTagsDialog.tip']}</p> + <div class="form-horizontal" jsf:rendered="#{!(empty DatasetPage.fileMetadataSelectedForTagsPopup)}"> + <div class="form-group"> + <label for="fileTagsMenu" class="col-sm-3 control-label"> + #{bundle['file.editTagsDialog.select']} + </label> + <div class="col-sm-8"> + <p:selectCheckboxMenu id="fileTagsMenu" styleClass="form-control" + value="#{DatasetPage.fileMetadataSelectedForTagsPopup.categoriesByName}" label="#{bundle.select}"> + <f:selectItems value="#{DatasetPage.fileMetadataSelectedForTagsPopup.datasetVersion.dataset.categoriesByName}"/> + </p:selectCheckboxMenu> + <p:message for="fileTagsMenu" display="text" /> + </div> + </div> + <div class="form-group"> + <label for="fileTagAddNew" class="col-sm-3 control-label"> + #{bundle['file.editTagsDialog.add']} + </label> + <div class="col-sm-8"> + <p:inputText id="fileTagAddNew" styleClass="form-control" + type="text" value="#{DatasetPage.newCategoryName}" + placeholder="#{bundle['file.editTagsDialog.newName']}" + onkeypress="if (event.keyCode == 13) { + return false; + }" /> + <p:message for="fileTagAddNew" display="text" /> + </div> + </div> + <div class="form-group" jsf:rendered="#{DatasetPage.fileMetadataSelectedForTagsPopup.dataFile.tabularData}"> + <label for="tabularDataTags" class="col-sm-3 control-label"> + <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{bundle['file.tabularDataTags.title']}"> + #{bundle['file.tabularDataTags']} + </span> + </label> + <div class="col-sm-8"> + <p class="help-block">#{bundle['file.tabularDataTags.tip']}</p> + <p:selectCheckboxMenu id="tabularDataTags" styleClass="form-control" + value="#{DatasetPage.selectedTags}" label="#{bundle.select}" + filter="false"> + <f:selectItems value="#{DatasetPage.tabFileTags}" /> + </p:selectCheckboxMenu> + <p:message for="tabularDataTags" display="text" /> + </div> + </div> + </div> + <div class="button-block"> + <p:commandButton id="fileTagsPopupSaveButton" value="#{bundle.saveChanges}" oncomplete="fileTagsPopup.hide()" update=":datasetForm:tabView:filesTable" actionListener="#{DatasetPage.saveFileTagsAndCategories()}"/> + <p:commandButton id="fileTagsPopupCancelButton" value="#{bundle.cancel}" onclick="fileTagsPopup.hide()" actionListener="#{DatasetPage.clearFileMetadataSelectedForTagsPopup()}"/> + </div> + </p:dialog> + + <!-- Request Access Sign Up/Log In Button --> + <p:dialog header="#{bundle['file.requestAccess']}" widgetVar="accessSignUpLogIn_popup" modal="true"> + <p class="help-block"> + <span class="glyphicon glyphicon-info-sign"/>  + <h:outputFormat value="#{dataverseHeaderFragment.signupAllowed ? bundle['file.requestAccess.dialog.msg.signup'] : bundle['file.requestAccess.dialog.msg']}" escape="false"> + <f:param value="#{dataverseHeaderFragment.loginRedirectPage}"/> + </h:outputFormat> + </p> + <div class="button-block"> + <p:commandButton value="#{bundle.close}" onclick="accessSignUpLogIn_popup.hide()"/> + </div> + </p:dialog> + <!-- END: Request Access Sign Up/Log In Button --> + + <p:dialog id="downloadPopup" styleClass="largePopUp" header="#{bundle['file.downloadDialog.header']}" widgetVar="downloadPopup" modal="true"> + <o:importFunctions type="edu.harvard.iq.dataverse.util.MarkupChecker" /> + <p class="help-block"> + <span class="glyphicon glyphicon-info-sign"/> #{bundle['file.downloadDialog.tip']} + </p> + <p:fragment id="guestbookMessages"> + <div class="container messagePanel"> + <iqbs:messages collapsible="true" /> + </div> + </p:fragment> + + <div class="form-horizontal"> + <div class="form-group" jsf:rendered="#{DatasetPage.workingVersion.license != 'CC0' and !empty DatasetPage.workingVersion.termsOfUse}"> + <label class="col-sm-3 control-label" for="guestbook_tou"> + #{bundle['file.dataFilesTab.terms.list.termsOfUse.termsOfUse']} + </label> + <div class="col-sm-6"> + <div class="panel panel-default"> + <div class="panel-body read-terms"> + <h:outputText value="#{MarkupChecker:sanitizeBasicHTML(DatasetPage.workingVersion.termsOfUse)}" escape="false" /> + </div> + </div> + </div> + </div> + <div class="form-group" jsf:rendered="#{!empty DatasetPage.workingVersion.termsOfAccess}"> + <label class="col-sm-3 control-label" for="guestbook_toa"> + #{bundle['file.dataFilesTab.terms.list.termsOfAccess.termsOfsAccess']} + </label> + <div class="col-sm-6"> + <div class="panel panel-default"> + <div class="panel-body read-terms"> + <h:outputText value="#{MarkupChecker:sanitizeBasicHTML(DatasetPage.workingVersion.termsOfAccess)}" escape="false" /> + </div> + </div> + </div> + </div> + <ui:fragment rendered="#{DatasetPage.dataset.guestbook != null and DatasetPage.dataset.guestbook.enabled and DatasetPage.downloadPopupRequired}" id="guestbookUIFragment"> + <p:fragment> + <div class="form-group"> + <label class="col-sm-3 control-label" for="guestbookuser_nameText"> + #{bundle.name} + <span class="glyphicon glyphicon-asterisk text-danger" jsf:rendered="#{DatasetPage.dataset.guestbook.nameRequired}" /> + </label> + <div class="col-sm-6"> + <p:inputText id="guestbookuser_nameText" required="#{param['DO_GB_VALIDATION'] and DatasetPage.dataset.guestbook.nameRequired}" + styleClass="form-control" value="#{DatasetPage.guestbookResponse.name}" + requiredMessage="#{bundle['requiredField']}"/> + </div> + <p:message id="nameMessages" for="guestbookuser_nameText" display="text"/> + </div> + </p:fragment> + <div class="form-group"> + <label class="col-sm-3 control-label" for="guestbookuser_email"> + #{bundle.email} + <span class="glyphicon glyphicon-asterisk text-danger" jsf:rendered="#{DatasetPage.dataset.guestbook.emailRequired}" /> + </label> + <div class="col-sm-6"> + <h:inputText id="guestbookuser_email" required="#{param['DO_GB_VALIDATION'] and DatasetPage.dataset.guestbook.emailRequired}" + styleClass="form-control" value="#{DatasetPage.guestbookResponse.email}" + requiredMessage="#{bundle['requiredField']}"/> + + </div> + <p:message id="emailMessages" for="guestbookuser_email" display="text"/> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label" for="guestbookuser_institution"> + #{bundle.institution} + <span class="glyphicon glyphicon-asterisk text-danger" jsf:rendered="#{DatasetPage.dataset.guestbook.institutionRequired}" /> + </label> + <div class="col-sm-6"> + <h:inputText id="guestbookuser_institution" required="#{param['DO_GB_VALIDATION'] and DatasetPage.dataset.guestbook.institutionRequired}" + styleClass="form-control" value="#{DatasetPage.guestbookResponse.institution}" + requiredMessage="#{bundle['requiredField']}"/> + </div> + <p:message id="institutionMessages" for="guestbookuser_institution" display="text"/> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label" for="guestbookuser_position"> + #{bundle.position} + <span class="glyphicon glyphicon-asterisk text-danger" jsf:rendered="#{DatasetPage.dataset.guestbook.positionRequired}" /> + </label> + <div class="col-sm-6"> + <h:inputText id="guestbookuser_position" required="#{param['DO_GB_VALIDATION'] and DatasetPage.dataset.guestbook.positionRequired}" + styleClass="form-control" value="#{DatasetPage.guestbookResponse.position}" + requiredMessage="#{bundle['requiredField']}"/> + </div> + <p:message id="positionMessages" for="guestbookuser_position" display="text"/> + </div> + <div class="form-group" jsf:rendered="#{!empty DatasetPage.dataset.guestbook.customQuestions}"> + <label class="col-sm-3 control-label" for="guestbookuser_questions"> + #{bundle['dataset.guestbookResponse.guestbook.additionalQuestions']} + </label> + <div class="col-sm-6"> + <ui:repeat value="#{DatasetPage.guestbookResponse.customQuestionResponses}" var="customQuestionResponse"> + <div class="text-left"> + <label class="control-label"> + <h:outputText value="#{customQuestionResponse.customQuestion.questionString}"/> + <span class="glyphicon glyphicon-asterisk text-danger" jsf:rendered="#{customQuestionResponse.customQuestion.required}" /> + </label> + <h:inputText id="customQuestionResponse" + styleClass="form-control" value="#{customQuestionResponse.response}" + required="#{param['DO_GB_VALIDATION'] and customQuestionResponse.customQuestion.required}" + rendered="#{customQuestionResponse.customQuestion.questionType=='text'}" + requiredMessage="#{bundle['requiredField']}"/> + <p:message id="cqMessages" for="customQuestionResponse" display="text"/> + <p:selectOneMenu id="customQuestionResponseSelect" + styleClass="form-control" value="#{customQuestionResponse.response}" + required="#{param['DO_GB_VALIDATION'] and customQuestionResponse.customQuestion.required}" + rendered="#{customQuestionResponse.customQuestion.questionType=='options'}" + requiredMessage="#{bundle['requiredField']}"> + <f:selectItem itemLabel="#{bundle.select}" itemValue="" noSelectionOption="true" /> + <f:selectItems value="#{customQuestionResponse.responseSelectItems}" /> + </p:selectOneMenu> + </div> + <p:message id="cqSelectMessages" for="customQuestionResponseSelect" display="text"/> + </ui:repeat> + </div> + </div> + </ui:fragment> + </div> + <div class="button-block"> + <p:commandLink type="button" styleClass="btn btn-default" value="#{bundle.acceptTerms}" + rendered="#{DatasetPage.downloadType=='download' or DatasetPage.downloadType==''}" + actionListener="#{DatasetPage.saveGuestbookResponse('download')}" + update="@([id$=Messages])" oncomplete="if (args === undefined) downloadPopup.hide();"> + <f:param name="DO_GB_VALIDATION" value="true"/> + </p:commandLink> + <p:commandLink type="button" styleClass="btn btn-default" value="#{bundle.acceptTerms}" + rendered="#{DatasetPage.downloadType=='multiple'}" + actionListener="#{DatasetPage.saveGuestbookResponse('multiple')}" + update="@([id$=Messages])" oncomplete="if (args === undefined) downloadPopup.hide();"> + <f:param name="DO_GB_VALIDATION" value="true"/> + </p:commandLink> + <p:commandLink type="button" styleClass="btn btn-default" value="#{bundle.acceptTerms}" + rendered="#{DatasetPage.downloadType=='subset'}" + actionListener="#{DatasetPage.saveGuestbookResponse('subset')}" + update="@([id$=Messages])" oncomplete="if (args === undefined) downloadPopup.hide(); downloadDataSubsetPopup.show()"> + <f:param name="DO_GB_VALIDATION" value="true"/> + </p:commandLink> + <p:commandLink type="button" styleClass="btn btn-default" value="#{bundle.acceptTerms}" + rendered="#{DatasetPage.downloadType=='explore'}" + actionListener="#{DatasetPage.saveGuestbookResponse('explore')}" + update="@([id$=Messages]) " oncomplete="if (args === undefined) downloadPopup.hide();"> + <f:param name="DO_GB_VALIDATION" value="true"/> + </p:commandLink> + <ui:remove> + <p:commandButton value="#{bundle.submit}" oncomplete="downloadPopup.hide()" rendered="#{DatasetPage.downloadType=='download'}" + actionListener="#{DatasetPage.saveGuestbookResponse('download')}" /> + <p:commandButton value="#{bundle.submit}" oncomplete="downloadPopup.hide()" rendered="#{DatasetPage.downloadType=='multiple'}" + actionListener="#{DatasetPage.saveGuestbookResponse('multiple')}" /> + <p:commandButton value="#{bundle.submit}" oncomplete="downloadPopup.hide();downloadDataSubsetPopup.show()" + update="downloadDataSubsetPopup" actionListener="#{DatasetPage.saveGuestbookResponse('subset')}" rendered="#{DatasetPage.downloadType=='subset'}" /> + + <p:commandButton value="#{bundle.submit}" oncomplete="downloadPopup.hide()" + actionListener="#{DatasetPage.saveGuestbookResponse('explore')}" rendered="#{DatasetPage.downloadType=='explore'}" /> + </ui:remove> + <p:commandButton type="button" styleClass="btn btn-default" value="#{bundle.cancel}" onclick="downloadPopup.hide()" /> + </div> + </p:dialog> + + <p:dialog id="downloadDataSubsetPopup" styleClass="smallPopUp" header="Download Data Subset" widgetVar="downloadDataSubsetPopup" + rendered="#{empty DatasetPage.editMode}" modal="true"> + <div class="form-inline clearfix" jsf:rendered="#{!(empty DatasetPage.fileMetadataSelected)}"> + <ui:include src="/subset/gui_subset.xhtml"/> + </div> + </p:dialog> + + <p:dialog header="#{bundle['file.mapData.unpublished.header']}" widgetVar="mapData_popup" modal="true"> + <p class="help-block"> + <span class="text-danger"><span class="glyphicon glyphicon-warning-sign"/> #{bundle['file.mapData.unpublished.message']}</span> + </p> + <div class="button-block"> + <button type="button" class="btn btn-default" onclick="mapData_popup.hide()"> + #{bundle.close} + </button> + </div> + </p:dialog> + + <p:dialog id="linkDatasetForm" header="#{bundle['dataset.link']}" widgetVar="linkDatasetForm" modal="true"> + <ui:fragment rendered="#{DatasetPage.dataversesForLinking.size() > 0}"> + <ui:fragment rendered="#{DatasetPage.dataversesForLinking.size() == 1}"> + <p class="help-block">#{bundle['dataverse.link.no.choice']}</p> + </ui:fragment> + <ui:fragment rendered="#{DatasetPage.dataversesForLinking.size() > 1}"> + <p class="help-block">#{bundle['dataverse.link.dataset.choose']}</p> + </ui:fragment> + <div class="form-horizontal"> + <div class="form-group"> + <label class="col-sm-4 control-label"> + <h:outputFormat value="#{bundle['dataverse.link.yourDataverses']}"> + <f:param value="#{DatasetPage.dataversesForLinking.size()}"/> + </h:outputFormat> + </label> + <div class="col-sm-7"> + <h:selectOneMenu styleClass="form-control" value="#{DatasetPage.linkingDataverseId}" + rendered="#{DatasetPage.dataversesForLinking.size() > 1}"> + <f:selectItems value="#{DatasetPage.linkingDVSelectItems}" /> + </h:selectOneMenu> + <ui:fragment rendered="#{DatasetPage.dataversesForLinking.size() == 1}"> + <p class="form-control-static">#{DatasetPage.linkingDataverse.displayName}</p> + </ui:fragment> + </div> + </div> + </div> + </ui:fragment> + <ui:fragment rendered="#{DatasetPage.dataversesForLinking.size() == 0}"> + <ui:fragment rendered="#{DatasetPage.noDVsAtAll }"> + <p>#{bundle['dataverse.link.no.linkable']}</p> + </ui:fragment> + <ui:fragment rendered="#{ DatasetPage.noDVsRemaining }"> + <p>#{bundle['dataverse.link.no.linkable.remaining']}</p> + </ui:fragment> + </ui:fragment> + <div class="button-block"> + <p:commandLink type="button" styleClass="btn btn-default" value="#{bundle['dataset.link.save']}" + action="#{DatasetPage.saveLinkedDataset}" + rendered="#{DatasetPage.dataversesForLinking.size() > 1}" /> + <p:commandLink type="button" styleClass="btn btn-default" onclick="linkDatasetForm.hide()" + value="#{bundle['dataset.link.save']}" actionListener="#{DatasetPage.saveLinkedDataset()}" + rendered="#{DatasetPage.dataversesForLinking.size() == 1}" /> + <button type="button" class="btn btn-default" onclick="linkDatasetForm.hide()"> + #{bundle.cancel} + </button> + </div> + </p:dialog> + + <p:dialog id="accessPopup" header="File Restrictions" widgetVar="accessPopup" + rendered="#{DatasetPage.editMode == 'FILE' or DatasetPage.editMode == 'CREATE'}" modal="true"> + <ui:fragment> + <div class="form-horizontal"> + <div class="form-group"> + <label for="metadata_TermsAccess" class="col-sm-3 control-label"> + <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{bundle['file.dataFilesTab.terms.list.termsOfAccess.termsOfsAccess.title']}"> + #{bundle['file.dataFilesTab.terms.list.termsOfAccess.termsOfsAccess']} + </span> + </label> + <div class="col-sm-9"> + <p:inputTextarea value="#{DatasetPage.workingVersion.termsOfAccess}" rows="5" styleClass="form-control" /> + </div> + </div> + <div class="form-group"> + <label for="metadata_RequestAccess" class="col-sm-3 control-label"> + <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{bundle['file.dataFilesTab.terms.list.termsOfAccess.requestAccess.title']}"> + #{bundle['file.dataFilesTab.terms.list.termsOfAccess.requestAccess']} + </span> + </label> + <div class="col-sm-9"> + <p:selectBooleanCheckbox id="requestAccess" itemLabel="#{bundle['file.dataFilesTab.terms.list.termsOfAccess.requestAccess.enableBtn']}" value="#{DatasetPage.workingVersion.fileAccessRequest}"/> + </div> + </div> + </div> + <div class="button-block"> + <p:commandButton value="#{bundle.continue}" onclick="accessPopup.hide()" update=":datasetForm,:messagePanel" action="#{DatasetPage.save()}" /> + <p:commandButton value="#{bundle.cancel}" onclick="accessPopup.hide()" type="button" /> + </div> + </ui:fragment> + </p:dialog> + + <p:dialog id="inreview" header="#{bundle['dataset.submitBtn']}" widgetVar="inreview" modal="true"> + <p class="text-danger"> + <span class="glyphicon glyphicon-warning-sign"/> #{bundle['dataset.submitMessage']} + </p> + <div class="button-block"> + <p:commandButton value="#{bundle.continue}" onclick="inreview.hide()" action="#{DatasetPage.submitDataset}" /> + <p:commandButton value="#{bundle.cancel}" onclick="inreview.hide()" type="button" /> + </div> + </p:dialog> + + <!-- Publish/Submit for Review Dialogs --> + <p:dialog header="#{bundle['dataset.publish.header']}" widgetVar="publishConfirm" modal="true"> + <ui:fragment rendered="#{DatasetPage.dataset.globalIdCreateTime == null}"> + <p class="text-danger"> + <span class="glyphicon glyphicon-warning-sign"/> #{bundle['dataset.unregistered.tip']} + </p> + </ui:fragment> + <p class="text-danger"> + <span class="glyphicon glyphicon-warning-sign"/> #{bundle['dataset.publish.tip']} + </p> + <div class="button-block"> + <p:commandButton value="#{bundle.continue}" onclick="publishConfirm.hide()" action="#{DatasetPage.releaseDataset}" /> + <p:commandButton value="#{bundle.cancel}" onclick="publishConfirm.hide()" type="button" /> + </div> + </p:dialog> + + <p:dialog header="#{bundle['dataset.publish.header']}" widgetVar="publishParent" modal="true"> + <ui:fragment rendered="#{DatasetPage.dataset.globalIdCreateTime == null}"> + <p class="text-danger"> + <span class="glyphicon glyphicon-warning-sign"/> #{bundle['dataset.unregistered.tip']} + </p> + </ui:fragment> + <p class="text-danger"> + <span class="glyphicon glyphicon-warning-sign"/> + <h:outputFormat value="#{bundle['dataset.mayNotPublish.both']}" escape="false"> + <f:param value="#{DatasetPage.dataset.owner.alias}"/> + <f:param value="#{DatasetPage.dataset.owner.displayName}"/> + </h:outputFormat> + </p> + <p class="help-block"> + <span class="glyphicon glyphicon-info-sign"/> #{bundle['dataset.publishBoth.tip']} + </p> + <div class="button-block"> + <p:commandButton value="#{bundle['dataset.mayNotBePublished.both.button']}" onclick="publishParent.hide()" action="#{DatasetPage.releaseParentDVAndDataset}" /> + <p:commandButton value="#{bundle.cancel}" onclick="publishParent.hide()" type="button" /> + </div> + </p:dialog> + + <p:dialog header="#{bundle['dataset.publish.header']}" widgetVar="releaseDraft" modal="true"> + <p class="text-danger"> + <span class="glyphicon glyphicon-warning-sign"/> #{bundle['dataset.republish.tip']} + </p> + <ui:fragment rendered="#{DatasetPage.dataset.latestVersion.minorUpdate}"> + <p class="help-block"> + <span class="glyphicon glyphicon-info-sign"/> #{bundle['dataset.selectVersionNumber']} + </p> + <p:selectOneRadio id="options" value="#{DatasetPage.releaseRadio}"> + <f:selectItem itemLabel="#{bundle['dataset.minorRelease']} (#{DatasetPage.datasetNextMinorVersion})" itemValue="1" /> + <f:selectItem itemLabel="#{bundle['dataset.majorRelease']} (#{DatasetPage.datasetNextMajorVersion})" itemValue="2" /> + </p:selectOneRadio> + </ui:fragment> + <p> + <h:outputFormat value="#{bundle['dataset.majorRelease.tip']}" rendered="#{!DatasetPage.dataset.latestVersion.minorUpdate}"> + <f:param value="#{DatasetPage.datasetNextMajorVersion}"/> + </h:outputFormat> + </p> + <div class="button-block"> + <p:commandButton value="#{bundle.continue}" onclick="releaseDraft.hide()" rendered="#{DatasetPage.dataset.latestVersion.minorUpdate}" action="#{DatasetPage.releaseDraft}" /> + <p:commandButton value="#{bundle.continue}" onclick="releaseDraft.hide()" rendered="#{!DatasetPage.dataset.latestVersion.minorUpdate}" action="#{DatasetPage.releaseMajor}" /> + <p:commandButton value="#{bundle.cancel}" onclick="releaseDraft.hide()" type="button" /> + </div> + </p:dialog> + + <p:dialog header="#{bundle['dataset.mayNotBePublished']}" widgetVar="mayNotRelease" modal="true"> + <p class="text-danger"> + <span class="glyphicon glyphicon-warning-sign"/> + <h:outputFormat value="#{bundle['dataset.mayNotPublish.administrator']}" escape="false"> + <f:param value="#{DatasetPage.dataset.owner.alias}"/> + <f:param value="#{DatasetPage.dataset.owner.displayName}"/> + </h:outputFormat> + </p> + <div class="button-block"> + <p:commandButton value="#{bundle.close}" onclick="mayNotRelease.hide()" type="button" /> + </div> + </p:dialog> + + <p:dialog header="#{bundle['dataset.mayNotBePublished']}" widgetVar="maynotPublishParent" modal="true"> + <p class="text-danger"> + <span class="glyphicon glyphicon-warning-sign"/> + <h:outputFormat value="#{bundle['dataset.mayNotPublish.twoGenerations']}" escape="false"> + <f:param value="#{DatasetPage.dataset.owner.alias}"/> + <f:param value="#{DatasetPage.dataset.owner.displayName}"/> + <f:param value="#{DatasetPage.dataset.owner.owner.alias}"/> + <f:param value="#{DatasetPage.dataset.owner.owner.displayName}"/> + </h:outputFormat> + </p> + <div class="button-block"> + <p:commandButton value="#{bundle.close}" onclick="maynotPublishParent.hide()" type="button" /> + </div> + </p:dialog> + + <p:dialog header="#{bundle['dataset.rejectBtn']}" widgetVar="sendBackToContributor" modal="true"> + <p class="text-danger"> + <span class="glyphicon glyphicon-warning-sign"/> #{bundle['dataset.rejectMessage']} + </p> + <div class="button-block"> + <p:commandButton value="#{bundle.continue}" onclick="sendBackToContributor.hide()" action="#{DatasetPage.sendBackToContributor}" /> + <p:commandButton value="#{bundle.cancel}" onclick="sendBackToContributor.hide()" type="button" /> + </div> + </p:dialog> + <!-- END: Publish/Submit for Review Dialogs --> + </h:form> + <script type="text/javascript" src="/resources/js/dropins.js" id="dropboxjs" data-app-key="#{DatasetPage.dropBoxKey}"/> + <script type="text/javascript"> + + function openDialog() { + details.show(); + } + function openCompareTwo() { + compareTwo.show(); + } + function testCheckBoxes() { + var count = versionsTable.getSelectedRowsCount(); + if (count !== 2) { + compareTwo.show(); + } else { + $('button[id$="compareVersions"]').trigger('click'); + } + } + + function updateTemplate() { + $('button[id$="updateTemplate"]').trigger('click'); + } + + function registerDataset() { + $('button[id$="registerDataset"]').trigger('click'); + } + + function checkFilesSelected() { + var count = filesTable.getSelectedRowsCount(); + if (count > 0) { + deleteFileConfirmation.show(); + } + } + + function checkNewlyRestricted() { + if ($('input[id$="showAccessPopup"]').val() == 'true') { + accessPopup.show(); + } + else { + $('button[id$="datasetSave"]').trigger('click'); + } + } + + function updateHiddenReason(textArea) { + $('input[id$="hiddenReasonInput"]').val(textArea.value); + } + + function testDeaccessionVersionSelection(testVersion) { + var deaccessionText = $('input[id$="hiddenReasonInput"]').val(); + var urlEntry = $('input[id$="forwardURLForDeaccession"]').val(); + ; + var valid = true; + if (testVersion === true) { + var count = versionDeaccessionTable.getSelectedRowsCount(); + } + + if (validateURL(urlEntry) === false) { + valid = false; + enterForwardUrl.show(); + } + if (valid === true) { + if ($("select[id$='reasonOptions'] option:selected").val() === '7') { + if (deaccessionText === '') { + valid = false; + enterOtherReason.show(); + } + } + } + if (deaccessionText.length >= 1001) { + valid = false; + reasonTooManyCharacters.show(); + } + if (valid === true) { + if ($("select[id$='reasonOptions'] option:selected").val() === '0') { + valid = false; + selectDeaccessionReason.show(); + } + } + if (valid === true) { + if (testVersion === false) { + deaccessionAllConfirmation.show(); + } else { + if (count === 0) { + selectDeaccessionVersion.show(); + } else { + deaccessionConfirmation.show(); + } + } + } + } + + function validateURL(textval) { + if (textval === '') { + return true; + } + var urlregex = new RegExp("^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$"); + return urlregex.test(textval); + } + + function openDropboxChooser() { + options = { + // Required. Called when a user selects an item in the Chooser. + success: function (files) { + // Pass the JSON-ized output of the Chooser to the backing bean, + // via a hidden input field: + $('input[id$="dropBoxSelectionInput"]').val(JSON.stringify(files)); + //alert(JSON.stringify(files)); + // Trigger the upload processing method in the backing + // bean, via an invisible commandButton: + $('button[id$="dropBoxButton"]').trigger('click'); + + }, + linkType: "direct", + multiselect: true, + }; + Dropbox.choose(options); + } + </script> + </ui:define> + </ui:composition> + </h:body> +</html>