diff --git a/doc/sphinx-guides/source/user/account.rst b/doc/sphinx-guides/source/user/account.rst index cd08fe3dbbc..f8b3469cff8 100755 --- a/doc/sphinx-guides/source/user/account.rst +++ b/doc/sphinx-guides/source/user/account.rst @@ -143,11 +143,11 @@ You can also convert your Dataverse account to use authentication provided by Gi My Data ------- -The My Data section of your account page displays a listing of all the dataverses, datasets, and files you have either created, uploaded or that you have a role assigned on. If you see unexpected dataverses or datasets in your My Data page, it might be because someone has assigned your account a role on those dataverses or datasets. For example, some institutions automatically assign the "File Downloader" role on their datasets to all accounts using their institutional login. +The My Data section of your account page displays a listing of all the dataverses, datasets, and files you have either created, uploaded or that you have a role assigned on. You are able to filter through all the dataverses, datasets, and files listed on your My Data page using the filter box. You may also use the facets on the left side to only view a specific Publication Status or Role. +.. note:: If you see unexpected dataverses or datasets in your My Data page, it might be because someone has assigned your account a role on those dataverses or datasets. For example, some institutions automatically assign the "File Downloader" role on their datasets to all accounts using their institutional login. -You are able to filter through all the dataverses, datasets, and files listed on your My Data page using the filter box. You may also use the facets on the left side to only view a specific Publication Status or Role. - +You can use the Add Data button to create a new dataverse or dataset. By default, the new dataverse or dataset will be created in the root dataverse, but from the create form you can use the Host Dataverse dropdown menu to choose a different dataverse, for which you have the proper access privileges. However, you will not be able to change this selection after you create your dataverse or dataset. Notifications ------------- diff --git a/doc/sphinx-guides/source/user/dataset-management.rst b/doc/sphinx-guides/source/user/dataset-management.rst index 5edcd29c083..0722fcedb26 100755 --- a/doc/sphinx-guides/source/user/dataset-management.rst +++ b/doc/sphinx-guides/source/user/dataset-management.rst @@ -41,8 +41,8 @@ Each of these metadata exports contains the metadata of the most recently publis Adding a New Dataset ==================== -#. Navigate to the dataverse in which you want to add a dataset. -#. Click on the "Add Data" button and select "New Dataset" in the dropdown menu. +#. Navigate to the dataverse in which you want to add a dataset. +#. Click on the "Add Data" button and select "New Dataset" in the dropdown menu. **Note:** If you are on the root dataverse, your My Data page or click the "Add Data" link in the navbar, the dataset you create will be hosted in the root dataverse. You can change this by selecting another dataverse you have proper permissions to create datasets in, from the Host Dataverse dropdown in the create dataset form. This option to choose will not be available after you create the dataset. #. To quickly get started, enter at minimum all the required fields with an asterisk (e.g., the Dataset Title, Author, Description, Contact Email and Subject) to get a Data Citation with a DOI. #. Scroll down to the "Files" section and click on "Select Files to Add" to add all the relevant files to your Dataset. @@ -51,7 +51,7 @@ Adding a New Dataset description and tags (via the "Edit Tag" button) for each file. Additionally, an MD5 checksum will be added for each file. If you upload a tabular file a :ref:`Universal Numerical Fingerprint (UNF) ` will be added to this file. #. Click the "Save Dataset" button when you are done. Your unpublished dataset is now created. -Note: You can add additional metadata once you have completed the initial dataset creation by going to Edit Dataset > Metadata. +Note: You can add additional metadata once you have completed the initial dataset creation by going to clicking the Edit button and selecting Metadata from the dropdown menu. Supported HTML Fields --------------------- @@ -209,8 +209,6 @@ These folder names are subject to strict validation rules. Only the following ch .. note:: If you upload multiple .zip files to one dataset, any subdirectories that are identical across multiple .zips will be merged together when the user downloads the full dataset. - - Other File Types ---------------- @@ -276,6 +274,7 @@ Dataset terms can be viewed and edited from the Terms tab of the dataset page, o CC0 Public Domain Dedication ---------------------------- + By default, all new datasets created through Dataverse's web UI are given a `Creative Commons CC0 Public Domain Dedication `_. The `Creative Commons `_ organization defines a number of `licenses `_ that allow copyright holders to release their intellectual property more openly, with fewer legal restrictions than standard copyright enforces. Each Creative Commons license typically specifies simple terms for how the IP must be used, reused, shared, and attributed. In addition to these licenses, Creative Commons also provides public domain tools that make it easy to dedicate IP to the public domain. @@ -540,4 +539,3 @@ If you deaccession the most recently published version of the dataset but not al .. _Make Data Count: https://makedatacount.org .. _Crossref: https://crossref.org - diff --git a/doc/sphinx-guides/source/user/dataverse-management.rst b/doc/sphinx-guides/source/user/dataverse-management.rst index 046917673ef..2a8c5dba31f 100755 --- a/doc/sphinx-guides/source/user/dataverse-management.rst +++ b/doc/sphinx-guides/source/user/dataverse-management.rst @@ -5,40 +5,40 @@ A dataverse is a container for datasets (research data, code, documentation, and |image1| -Once a user creates a dataverse they, by default, become the -administrator of that dataverse. The dataverse administrator has access -to manage the settings described in this guide. +Once a user creates a dataverse they, by default, become the administrator of that dataverse. The dataverse administrator has access to manage the settings described in this guide. .. contents:: |toctitle| :local: -Create a Dataverse (Within the "Root" Dataverse) -=================================================== +Create a New Dataverse +======================= -Creating a dataverse is easy but first you must be a registered user (see :doc:`/user/account`). +Creating a dataverse is easy but first you must be a registered user (see :doc:`/user/account`). Once you are logged in, click on the "Add Data" button, or "Add Data" navbar link and in the dropdown menu select "New Dataverse". -#. Once you are logged in click on the "Add Data" button and in the dropdown menu select "New Dataverse". -#. Once on the "New Dataverse" page fill in the following fields: - * **Name**: Enter the name of your dataverse. +#. **Fill in the following fields on the "New Dataverse" page** (required fields in the form are denoted by a red asterisk, next to the label): + * **Host Dataverse**: Select a dataverse you would like to create the new dataverse in, by default the root dataverse is selected if you click the Add Data button from the root dataverse, your My Data pg, the Add Data link in the navbar, or the Add a dataset button on the custom homepage (if configured), but you can select any dataverse for which you the proper permissions to create dataverses. + * **Dataverse Name**: Enter the name of your dataverse. + * **Affiliation**: Add any affiliation that can be associated with this particular dataverse (e.g., project name, institute name, department name, journal name, etc). This is automatically filled out if you have added an affiliation for your user account. * **Identifier**: This is an abbreviation, usually lower-case, that becomes part of the URL for the new dataverse. Special characters (~,\`, !, @, #, $, %, ^, &, and \*) and spaces are not allowed. **Note**: if you change this field in the future, the URL for your Dataverse will change (http//.../'identifier'), which will break older links to the page. + * **Category**: Select a category that best describes the type of dataverse this will be. For example, if this is a dataverse for an individual researcher's datasets, select *Researcher*. If this is a dataverse for an institution, select *Organization or Institution*. * **Email**: This is the email address that will be used as the contact for this particular dataverse. You can have more than one contact email address for your dataverse. - * **Affiliation**: Add any Affiliation that can be associated with this particular dataverse (e.g., project name, institute name, department name, journal name, etc). This is automatically filled out if you have added an affiliation for your user account. * **Description**: Provide a description of this dataverse. This will display on the landing page of your dataverse and in the search result list. The description field supports certain HTML tags, if you'd like to format your text (, ,
,
, , ,
,
,
, ,
,

-

, , , ,
  • ,
      ,

      ,

      , , , , , , 
        ). - * **Category**: Select a category that best describes the type of dataverse this will be. For example, if this is a dataverse for an individual researcher's datasets, select *Researcher*. If this is a dataverse for an institution, select *Organization or Institution*. - * **Choose the sets of Metadata Fields for datasets in this dataverse**: By default the metadata elements will be from the host dataverse that this new dataverse is created in. Dataverse offers metadata standards for multiple domains. To learn more about the metadata standards in Dataverse please check out the :doc:`/user/appendix`. - * **Select facets for this dataverse**: Choose which metadata fields will be used as facets on your dataverse. These facets will allow users browsing or searching your dataverse to filter its contents according to the fields you’ve selected. For example, if you select “Subject” as a facet, users will be able to filter your dataverse’s contents by subject area. By default, the facets that will appear on your dataverse landing page will be from the host dataverse that this new dataverse was created in, but you can add or remove facets from this default. -#. Selected metadata elements are also used to pick which metadata fields you would like to use for creating templates for your datasets. Metadata fields can be hidden, or selected as required or optional. Once you have selected all the fields you would like to use, you can create your template(s) after you finish creating your dataverse. -#. Click "Create Dataverse" button and you're done! - -\*Required fields are denoted by a red asterisk. - -Edit Dataverse -================= - -To edit your dataverse, navigate to your dataverse's landing page and select the "Edit Dataverse" button, -where you will be presented with the following editing options: - -- :ref:`General Information `: edit name, identifier, category, contact email, affiliation, description, Metadata Elements, and facets for your dataverse +#. **Choose the sets of Metadata Fields for datasets in this dataverse**: + * By default the metadata elements will be from the host dataverse that this new dataverse is created in. + * Dataverse offers metadata standards for multiple domains. To learn more about the metadata standards in Dataverse please check out the :doc:`/user/appendix`. + * Metadata fields can be hidden, or selected as required or optional. + * Selected metadata elements are also used to pick which metadata fields you would like to use for creating :ref:`Dataset Templates `: after you finish creating your dataverse. +#. **Choose which metadata fields will be used as browse/search facets on your dataverse**: + * These facets will allow users browsing or searching your dataverse to filter its contents according to the fields you have selected. For example, if you select “Subject” as a facet, users will be able to filter your dataverse’s contents by subject area. + * By default, the facets that will appear on your dataverse landing page will be from the host dataverse that this new dataverse was created in, but you can add or remove facets from this default. +#. **Click the "Create Dataverse" button** and you're done! + +Edit Dataverse +================ + +To edit your dataverse, navigate to your dataverse's landing page and select the "Edit Dataverse" button, where you will be presented with the following editing options: + +- :ref:`General Information `: edit name, affiliation, identifier, category, contact email, description, metadata fields, and browse/search facets for your dataverse - :ref:`Theme `: upload a logo for your dataverse, add a link to your department or personal website, add a custom footer image, and select colors for your dataverse in order to brand it - :ref:`Widgets `: get code to add to your website to have your dataverse display on it - :ref:`Permissions `: give Dataverse users permissions to your dataverse, i.e.-can edit datasets, and see which users already have which permissions for your dataverse @@ -89,7 +89,6 @@ Dataverse Listing Widget The Dataverse Listing Widget provides a listing of all your dataverses and datasets for users to browse, sort, filter and search. When someone clicks on a dataverse or dataset in the widget, it displays the content in the widget on your website. They can download data files directly from the datasets within the widget. If a file is restricted, they will be directed to your dataverse to log in, instead of logging in through the widget on your website. - Adding Widgets to an OpenScholar Website ****************************************** #. Log in to your OpenScholar website @@ -125,6 +124,7 @@ Please note that even on a newly created dataverse, you may see user and groups Setting Access Configurations ******************************* + Under the Permissions tab, you can click the "Edit Access" button to open a box where you can add to your dataverse and what permissions are granted to those who add to your dataverse. |image4| @@ -137,6 +137,7 @@ Both of these settings can be changed at any time. Assigning Roles to Users and Groups ************************************* + Under the Users/Groups tab, you can add, edit, or remove the roles granted to users and groups on your dataverse. A role is a set of permissions granted to a user or group when they're using your dataverse. For example, giving your research assistant the "Contributor" role would give her the following self-explanatory permissions on your dataverse and all datasets within your dataverse: "ViewUnpublishedDataset", "DownloadFile", "EditDataset", and "DeleteDatasetDraft". She would, however, lack the "PublishDataset" permission, and thus would be unable to publish datasets on your dataverse. If you wanted to give her that permission, you would give her a role with that permission, like the Curator role. Users and groups can hold multiple roles at the same time if needed. Roles can be removed at any time. All roles and their associated permissions are listed under the "Roles" tab of the same page. |image5| @@ -151,6 +152,7 @@ Note: If you need to assign a role to ALL Dataverse user accounts, you can assig Dataset Templates ------------------- + Templates are useful when you have several datasets that have the same information in multiple metadata fields that you would prefer not to have to keep manually typing in, or if you want to use a custom set of Terms of Use and Access for multiple datasets in a dataverse. In Dataverse 4.0, templates are created at the dataverse level, can be deleted (so it does not show for future datasets), set to default (not required), or can be copied so you do not have to start over when creating a new template with similar metadata from another template. When a template is deleted, it does not impact the datasets that have used the template already. How do you create a template? @@ -169,6 +171,7 @@ How do you create a template? Dataset Guestbooks ----------------------------- + Guestbooks allow you to collect data about who is downloading the files from your datasets. You can decide to collect account information (username, given name & last name, affiliation, etc.) as well as create custom questions (e.g., What do you plan to use this data for?). You are also able to download the data collected from the enabled guestbooks as Excel files to store and use outside of Dataverse. How do you create a guestbook? @@ -179,16 +182,12 @@ How do you create a guestbook? #. Name the guestbook, determine the account information that you would like to be required (all account information fields show when someone downloads a file), and then add Custom Questions (can be required or not required). #. Hit the Create Dataset Guestbook button once you have finished. -What can you do with a guestbook? -After creating a guestbook, you will notice there are several options for a guestbook and appear in the list of guestbooks. +What can you do with a guestbook? After creating a guestbook, you will notice there are several options for a guestbook and appear in the list of guestbooks. - If you want to use a guestbook you have created, you will first need to click the button in the Action column that says Enable. Once a guestbook has been enabled, you can go to the License + Terms for a dataset and select a guestbook for it. - - There are also options to view, copy, edit, or delete a guestbook. - - Once someone has downloaded a file in a dataset where a guestbook has been assigned, an option to download collected data will appear. - .. _featured-dataverses: Featured Dataverses @@ -228,7 +227,6 @@ Once your dataverse is ready to go public, go to your dataverse page, click on t hand side of the page. A pop-up will appear to confirm that you are ready to actually Publish, since once a dataverse is made public, it can no longer be unpublished. - .. |image1| image:: ./img/Dataverse-Diagram.png .. |image2| image:: ./img/dvperms1.png :class: img-responsive @@ -240,6 +238,3 @@ is made public, it can no longer be unpublished. :class: img-responsive .. |image6| image:: ./img/dv5.png :class: img-responsive - - - diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index 704a499d469..22b38878b4a 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -88,6 +88,7 @@ import javax.faces.model.SelectItem; import java.util.logging.Level; import edu.harvard.iq.dataverse.datasetutility.WorldMapPermissionHelper; +import edu.harvard.iq.dataverse.engine.command.DataverseRequest; import edu.harvard.iq.dataverse.engine.command.exception.IllegalCommandException; import edu.harvard.iq.dataverse.engine.command.impl.AbstractSubmitToArchiveCommand; import edu.harvard.iq.dataverse.engine.command.impl.CreateNewDatasetCommand; @@ -129,6 +130,7 @@ import edu.harvard.iq.dataverse.search.SearchUtil; import edu.harvard.iq.dataverse.search.SolrClientService; import java.util.Comparator; +import java.util.EnumSet; import java.util.TimeZone; import javax.servlet.http.HttpServletRequest; import org.apache.solr.client.solrj.SolrClient; @@ -237,6 +239,7 @@ public enum DisplayMode { ProvPopupFragmentBean provPopupFragmentBean; @Inject MakeDataCountLoggingServiceBean mdcLogService; + @Inject DataverseHeaderFragment dataverseHeaderFragment; private Dataset dataset = new Dataset(); private EditMode editMode; @@ -1459,7 +1462,7 @@ public Long getOwnerId() { public void setOwnerId(Long ownerId) { this.ownerId = ownerId; } - + public Long getVersionId() { return versionId; } @@ -1750,6 +1753,19 @@ public String initCitation() { return init(false); } + public void updateOwnerDataverse() { + if (dataset.getOwner() != null && dataset.getOwner().getId() != null) { + ownerId = dataset.getOwner().getId(); + logger.info("New host dataverse id: "+ownerId); + // discard the dataset already created: + dataset = new Dataset(); + // initiate from scratch: (isolate the creation of a new dataset in its own method?) + init(true); + // rebuild the bred crumbs display: + dataverseHeaderFragment.initBreadcrumbs(dataset); + } + } + private String init(boolean initFull) { //System.out.println("_YE_OLDE_QUERY_COUNTER_"); // for debug purposes @@ -1923,7 +1939,7 @@ private String init(boolean initFull) { } else if (!permissionService.on(dataset.getOwner()).has(Permission.AddDataset)) { return permissionsWrapper.notAuthorized(); } - + dataverseTemplates.addAll(dataverseService.find(ownerId).getTemplates()); if (!dataverseService.find(ownerId).isTemplateRoot()) { dataverseTemplates.addAll(dataverseService.find(ownerId).getParentTemplates()); @@ -2965,7 +2981,6 @@ public void setSelectedDataverseMenu(UIInput selectedDataverseMenu) { this.selectedLinkingDataverseMenu = selectedDataverseMenu; } - private Boolean saveLink(Dataverse dataverse){ boolean retVal = true; if (readOnly) { @@ -2998,6 +3013,14 @@ public List completeLinkingDataverse(String query) { return null; } } + + public List completeHostDataverseMenuList(String query) { + if (session.getUser().isAuthenticated()) { + return dataverseService.filterDataversesForHosting(query, dvRequestService.getDataverseRequest()); + } else { + return null; + } + } List previouslyRestrictedFiles = null; @@ -3272,12 +3295,16 @@ public void validateForwardURL(FacesContext context, UIComponent toValidate, Obj } - public String save() { - //Before dataset saved, write cached prov freeform to version - if(systemConfig.isProvCollectionEnabled()) { + public String save() { + //Before dataset saved, write cached prov freeform to version + if (systemConfig.isProvCollectionEnabled()) { provPopupFragmentBean.saveStageProvFreeformToLatestVersion(); } - + + // Before validating, ensure that the dataset has an owner: + if (dataset.getOwner() == null || dataset.getOwner().getId() == null) { + dataset.setOwner(ownerId != null ? dataverseService.find(ownerId) : null); + } // Validate Set constraintViolations = workingVersion.validate(); if (!constraintViolations.isEmpty()) { @@ -3290,7 +3317,7 @@ public String save() { Map deleteStorageLocations = null; try { - if (editMode == EditMode.CREATE) { + if (editMode == EditMode.CREATE) { if ( selectedTemplate != null ) { if ( isSessionUserAuthenticated() ) { cmd = new CreateNewDatasetCommand(dataset, dvRequestService.getDataverseRequest(), false, selectedTemplate); diff --git a/src/main/java/edu/harvard/iq/dataverse/DataversePage.java b/src/main/java/edu/harvard/iq/dataverse/DataversePage.java index 7f8a12c8753..eca97e52402 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DataversePage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DataversePage.java @@ -108,6 +108,7 @@ public enum LinkMode { @EJB DataverseLinkingServiceBean linkingService; @Inject PermissionsWrapper permissionsWrapper; + @Inject DataverseHeaderFragment dataverseHeaderFragment; private Dataverse dataverse = new Dataverse(); private EditMode editMode; @@ -267,6 +268,18 @@ public void setOwnerId(Long ownerId) { this.ownerId = ownerId; } + public void updateOwnerDataverse() { + if (dataverse.getOwner() != null && dataverse.getOwner().getId() != null) { + ownerId = dataverse.getOwner().getId(); + logger.info("New host dataverse id: " + ownerId); + // discard the dataverse already created: + dataverse = new Dataverse(); + // initialize a new new dataverse: + init(); + dataverseHeaderFragment.initBreadcrumbs(dataverse); + } + } + public String init() { //System.out.println("_YE_OLDE_QUERY_COUNTER_"); // for debug purposes @@ -611,7 +624,9 @@ public String save() { Boolean create; if (dataverse.getId() == null) { if (session.getUser().isAuthenticated()) { - dataverse.setOwner(ownerId != null ? dataverseService.find(ownerId) : null); + if (dataverse.getOwner() == null || dataverse.getOwner().getId() == null) { + dataverse.setOwner(ownerId != null ? dataverseService.find(ownerId) : null); + } create = Boolean.TRUE; cmd = new CreateDataverseCommand(dataverse, dvRequestService.getDataverseRequest(), facets.getTarget(), listDFTIL); } else { @@ -1159,4 +1174,12 @@ public String getSearchFieldSubtree() { public void setSearchFieldSubtree(String searchFieldSubtree) { this.searchFieldSubtree = searchFieldSubtree; } + + public List completeHostDataverseMenuList(String query) { + if (session.getUser().isAuthenticated()) { + return dataverseService.filterDataversesForHosting(query, dvRequestService.getDataverseRequest()); + } else { + return null; + } + } } diff --git a/src/main/java/edu/harvard/iq/dataverse/DataverseServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DataverseServiceBean.java index 8dc85cb2d28..c92748e553d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DataverseServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DataverseServiceBean.java @@ -474,9 +474,7 @@ public List filterDataversesForLinking(String query, DataverseRequest List dataverseList = new ArrayList<>(); - List results = em.createNamedQuery("Dataverse.filterByName", Dataverse.class) - .setParameter("name", "%" + query.toLowerCase() + "%") - .getResultList(); + List results = filterDataversesByNamePattern(query); List alreadyLinkeddv_ids = em.createNativeQuery("SELECT linkingdataverse_id FROM datasetlinkingdataverse WHERE dataset_id = " + dataset.getId()).getResultList(); List remove = new ArrayList<>(); @@ -498,6 +496,84 @@ public List filterDataversesForLinking(String query, DataverseRequest return dataverseList; } + public List filterDataversesForHosting(String pattern, DataverseRequest req) { + + // Find the dataverses matching the search parameters: + + List searchResults = filterDataversesByNamePattern(pattern); + + logger.fine("search query found " + searchResults.size() + " results"); + + // Filter the results and drop the dataverses where the user is not allowed to + // add datasets: + + if (req.getAuthenticatedUser().isSuperuser()) { + logger.fine("will skip permission check..."); + return searchResults; + } + + List finalResults = new ArrayList<>(); + + for (Dataverse res : searchResults) { + if (this.permissionService.requestOn(req, res).has(Permission.AddDataset)) { + finalResults.add(res); + } + } + + logger.fine("returning " + finalResults.size() + " final results"); + + return finalResults; + } + + + /* + This method takes a search parameter and expands it into a list of + Dataverses with matching names. + The search is performed on the name with the trailing word "dataverse" + stripped (if present). This way the search on "data" (or on "da" pr + "dat") does NOT return almost every dataverse in the database - since + most of them have names that end in "... Dataverse". + The query isn't pretty, but it works, and it's still EJB QL (and NOT a + native query). + */ + public List filterDataversesByNamePattern(String pattern) { + + pattern = pattern.toLowerCase(); + + String pattern1 = pattern + "%"; + String pattern2 = "% " + pattern + "%"; + + // Adjust the queries for very short, 1 and 2-character patterns: + if (pattern.length() == 1) { + pattern1 = pattern; + pattern2 = pattern + " %"; + } + /*if (pattern.length() == 2) { + pattern2 = pattern + "%"; + }*/ + + + String qstr = "select dv from Dataverse dv " + + "where (LOWER(dv.name) LIKE '%dataverse' and ((SUBSTRING(LOWER(dv.name),0,(LENGTH(dv.name)-9)) LIKE '" + pattern1 + "') " + + " or (SUBSTRING(LOWER(dv.name),0,(LENGTH(dv.name)-9)) LIKE '" + pattern2 + "'))) " + + "or (LOWER(dv.name) NOT LIKE '%dataverse' and ((LOWER(dv.name) LIKE '" + pattern1 + "') " + + " or (LOWER(dv.name) LIKE '" + pattern2 + "'))) " + + "order by dv.alias"; + + List testResults = null; + + try { + testResults = em.createQuery(qstr, Dataverse.class) + //.setParameter("pattern1", "pattern1") + //.setParameter("pattern2", "pattern2") + .getResultList(); + } catch (Exception ex) { + testResults = null; + } + + return testResults; + } + /** * Used to identify and properly display Harvested objects on the dataverse page. * @@ -789,4 +865,5 @@ public String addRoleAssignmentsToChildren(Dataverse owner, ArrayList ro logger.info(result); return (result); } + } diff --git a/src/main/java/propertyFiles/Bundle.properties b/src/main/java/propertyFiles/Bundle.properties index 636a90287a0..38e03b719e6 100755 --- a/src/main/java/propertyFiles/Bundle.properties +++ b/src/main/java/propertyFiles/Bundle.properties @@ -676,9 +676,12 @@ notification.email.apiTokenGenerated=Hello {0} {1},\n\nAPI Token has been genera notification.email.apiTokenGenerated.subject=API Token was generated # dataverse.xhtml -dataverse.title=The project, department, university, professor, or journal this dataverse will contain data for. +dataverse.name=Dataverse Name +dataverse.name.title=The project, department, university, professor, or journal this dataverse will contain data for. dataverse.enterName=Enter name... dataverse.host.title=The dataverse which contains this data. +dataverse.host.tip=Changing the host dataverse will clear any fields you may have entered data into. +dataverse.host.autocomplete.nomatches=No matches dataverse.identifier.title=Short name used for the URL of this dataverse. dataverse.affiliation.title=The organization with which this dataverse is affiliated. dataverse.category=Category @@ -1382,6 +1385,7 @@ dataset.versionDifferences.changed=Changed dataset.versionDifferences.from=From dataset.versionDifferences.to=To file.viewDiffDialog.restricted=Restricted +dataset.host.tip=Changing the host dataverse will clear any fields you may have entered data into. dataset.template.tip=Changing the template will clear any fields you may have entered data into. dataset.noTemplate.label=None dataset.noSelectedFiles.header=Select File(s) diff --git a/src/main/webapp/contactFormFragment.xhtml b/src/main/webapp/contactFormFragment.xhtml index 04300983572..8a5725981d7 100644 --- a/src/main/webapp/contactFormFragment.xhtml +++ b/src/main/webapp/contactFormFragment.xhtml @@ -28,17 +28,17 @@
        - +
        - +
        - +
        @@ -47,7 +47,7 @@
        - +
        diff --git a/src/main/webapp/dataset-citation.xhtml b/src/main/webapp/dataset-citation.xhtml index 84dcf4d6849..7d3c582448a 100644 --- a/src/main/webapp/dataset-citation.xhtml +++ b/src/main/webapp/dataset-citation.xhtml @@ -7,7 +7,7 @@ xmlns:o="http://omnifaces.org/ui" xmlns:jsf="http://xmlns.jcp.org/jsf"> -
        +
        diff --git a/src/main/webapp/dataset.xhtml b/src/main/webapp/dataset.xhtml index 7e893dd3dc3..70d7a71dc4e 100644 --- a/src/main/webapp/dataset.xhtml +++ b/src/main/webapp/dataset.xhtml @@ -76,455 +76,503 @@ - - + + -
        -
        -
        - - - -
        -
        - - - - - - - - -
        -
        - - - - - - #{bundle['dataset.publish.btn']} - - - #{bundle['dataset.publish.btn']} - - - - #{bundle['dataset.publish.btn']} - - - #{bundle['dataset.publish.btn']} - - - #{bundle['dataset.publish.btn']} - - - - - - - - - - - - - - - - #{bundle['link']} - - - - -
        + +
        + + + + + + #{bundle['dataset.publish.btn']} + + + #{bundle['dataset.publish.btn']} + + + + #{bundle['dataset.publish.btn']} + + + #{bundle['dataset.publish.btn']} + + + #{bundle['dataset.publish.btn']} + + + + + + + + + + + + + + + + #{bundle['link']} - - -
      • - - #{bundle['dataset.editBtn.itemLabel.permissions']} - - - - -
      • - -
        - - - - - - #{bundle['contact.contact']} - - - #{bundle['share']} - -
        - -
        -
        -
        -
        - #{DatasetPage.datasetVersionUI.title.value} - -
        -
        - #{DatasetPage.datasetVersionUI.title.value} -
        - - - - - - - + +
      • + + + +
      • + +
      • +
      • + + + +
      • +
        + +
      • +
      • + + + +
      • +
        + +
      • +
      • + + + +
      • +
        + + + + +
        + + + + + + + + +
        +
        + + + +
        +
        +
        -
        - - - - - - - -
        -
        #{bundle['dataset.deaccession.reason']}
        -

        #{DatasetPage.workingVersion.versionNote}

        - -

        #{bundle['dataset.beAccessedAt']} #{DatasetPage.workingVersion.archiveNote}

        -
        -
        - -
        -
        - #{bundle['metrics.dataset.title']} - -
        -
        - -
        - - - - -
        - -
        - - - - +
        +
        +
        +
        + #{DatasetPage.datasetVersionUI.title.value} +
        - -
        - - - - +
        + #{DatasetPage.datasetVersionUI.title.value} +
        + + + + + + + +
        - -
        - - - - - - +
        +
        + + + + + + + + +
        +
        +
        + #{bundle['metrics.dataset.title']} + +
        +
        + +
        + + + + +
        + +
        + + + + +
        + +
        + + + + +
        + +
        + + + + + + +
        +
        +
        +
        -
        - -
        - -
        - +
        +
        -
        - + +
        -