diff --git a/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/RDMDepositForm.js b/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/RDMDepositForm.js deleted file mode 100644 index f79cb81..0000000 --- a/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/RDMDepositForm.js +++ /dev/null @@ -1,528 +0,0 @@ -// This file is part of InvenioRDM -// Copyright (C) 2020 CERN. -// Copyright (C) 2020 Northwestern University. -// Copyright (C) 2021 Graz University of Technology. -// -// Invenio App RDM is free software; you can redistribute it and/or modify it -// under the terms of the MIT License; see LICENSE file for more details. - -import _get from "lodash/get"; -import React, { Component, createRef, Fragment } from "react"; -import { - AccessRightField, - CreatibutorsField, - DatesField, - DeleteButton, - DepositFormApp, - DepositFormTitle, - DescriptionsField, - FileUploader, - FormFeedback, - IdentifiersField, - LanguagesField, - LicenseField, - PIDField, - PreviewButton, - PublicationDateField, - PublishButton, - PublisherField, - RelatedWorksField, - ResourceTypeField, - SaveButton, - TitlesField, - VersionField, -} from "react-invenio-deposit"; -import { AccordionField } from "react-invenio-forms"; -import { Card, Container, Divider, Grid, Ref, Sticky } from "semantic-ui-react"; - -export class RDMDepositForm extends Component { - constructor(props) { - super(props); - this.config = props.config || {}; - // TODO: retrieve from backend - this.config["canHaveMetadataOnlyRecords"] = true; - - // TODO: Make ALL vocabulary be generated by backend. - // Currently, some vocabulary is generated by backend and some is - // generated by frontend here. Iteration is faster and abstractions can be - // discovered by generating vocabulary here. Once happy with vocabularies, - // then we can generate it in the backend. - this.vocabularies = { - metadata: { - ...this.config.vocabularies, - - titles: { - ...this.config.vocabularies.titles, - }, - - descriptions: { - type: [ - { text: "Abstract", value: "abstract" }, - { text: "Methods", value: "methods" }, - { text: "Series Information", value: "seriesinformation" }, - { text: "Table of Contents", value: "tableofcontents" }, - { text: "Technical Info", value: "technicalinfo" }, - { text: "Other", value: "other" }, - ], - }, - - creators: { - type: [ - { text: "Person", value: "personal" }, - { text: "Organization", value: "organizational" }, - ], - role: [ - { text: "Editor", value: "editor" }, - { text: "Data Curator", value: "datacurator" }, - { text: "Data Manager", value: "datamanager" }, - { text: "Project Manager", value: "projectmanager" }, - ], - }, - - contributors: { - type: [ - { text: "Person", value: "personal" }, - { text: "Organization", value: "organizational" }, - ], - role: [ - { text: "Editor", value: "editor" }, - { text: "Data Curator", value: "datacurator" }, - { text: "Data Manager", value: "datamanager" }, - { text: "Project Manager", value: "projectmanager" }, - ], - }, - - dates: { - type: [ - { text: "Accepted", value: "accepted" }, - { text: "Available", value: "available" }, - { text: "Copyrighted", value: "copyrighted" }, - { text: "Collected", value: "collected" }, - { text: "Created", value: "created" }, - { text: "Issued", value: "issued" }, - { text: "Submitted", value: "submitted" }, - { text: "Updated", value: "updated" }, - { text: "Valid", value: "valid" }, - { text: "Withdrawn", value: "withdrawn" }, - { text: "Other", value: "other" }, - ], - }, - - // TODO: Replace with an API backend - funding: { - funder: [ - { - name: "National Institutes of Health (US)", - identifier: "funder1", - scheme: "funderScheme1", - }, - { - name: "European Commission (EU)", - identifier: "funder2", - scheme: "funderScheme2", - }, - ], - award: [ - { - title: "CANCER &AIDS DRUGS--PRECLIN PHARMACOL/TOXICOLOGY", - number: "N01CM037835-016", - identifier: "awardA", - scheme: "awardSchemeA", - parentScheme: "funderScheme1", - parentIdentifier: "funder1", - }, - { - title: - "Beyond the Standard Model at the LHC and with Atom Interferometers.", - number: "228169", - identifier: "awardB1", - scheme: "awardSchemeB", - parentScheme: "funderScheme2", - parentIdentifier: "funder2", - }, - { - title: "ENvironmental COnditions in GLAucoma Patients", - number: "747441", - identifier: "awardB2", - scheme: "awardSchemeB", - parentScheme: "funderScheme2", - parentIdentifier: "funder2", - }, - ], - }, - - identifiers: { - resource_type: this.config.vocabularies.resource_type, - scheme: [ - { text: "ARK", value: "ark" }, - { text: "ARXIV", value: "arxiv" }, - { text: "BIBCODE", value: "bibcode" }, - { text: "DOI", value: "doi" }, - { text: "EAN13", value: "ean13" }, - { text: "EISSN", value: "eissn" }, - { text: "HANDLE", value: "handle" }, - { text: "IGSN", value: "igsn" }, - { text: "ISBN", value: "isbn" }, - { text: "ISSN", value: "issn" }, - { text: "ISTC", value: "istc" }, - { text: "LISSN", value: "lissn" }, - { text: "LSID", value: "lsid" }, - { text: "PMID", value: "pmid" }, - { text: "PURL", value: "purl" }, - { text: "UPC", value: "upc" }, - { text: "URL", value: "url" }, - { text: "URN", value: "urn" }, - { text: "W3ID", value: "w3id" }, - ], - relations: [ - { text: "Is cited by", value: "iscitedby" }, - { text: "Cites", value: "cites" }, - { text: "Is supplement to", value: "issupplementto" }, - { text: "Is supplemented by", value: "issupplementedby" }, - { text: "Is continued by", value: "iscontinuedby" }, - { text: "Continues", value: "continues" }, - { text: "Is described by", value: "isdescribedby" }, - { text: "Describes", value: "describes" }, - { text: "Has metadata", value: "hasmetadata" }, - { text: "Is metadata for", value: "ismetadatafor" }, - { text: "Has version", value: "hasversion" }, - { text: "Is version of", value: "isversionof" }, - { text: "Is new version of", value: "isnewversionof" }, - { text: "Is previous version of", value: "ispreviousversionof" }, - { text: "Is part of", value: "ispartof" }, - { text: "Has part", value: "haspart" }, - { text: "Is referenced by", value: "isreferencedby" }, - { text: "References", value: "references" }, - { text: "Is documented by", value: "isdocumentedby" }, - { text: "Documents", value: "documents" }, - { text: "Is compiled by", value: "iscompiledby" }, - { text: "Compiles", value: "compiles" }, - { text: "Is variant form of", value: "isvariantformof" }, - { text: "Is original form of", value: "isoriginalformof" }, - { text: "Is identical to", value: "isidenticalto" }, - { text: "Is reviewed by", value: "isreviewedby" }, - { text: "Reviews", value: "reviews" }, - { text: "Is derived from", value: "isderivedfrom" }, - { text: "Is source of", value: "issourceof" }, - { text: "Is required by", value: "isrequiredby" }, - { text: "Requires", value: "requires" }, - { text: "Is obsoleted by", value: "isobsoletedby" }, - { text: "Obsoletes", value: "obsoletes" }, - ], - }, - subjects: { - options: [ - { - text: "Deep Learning", - value: { - subject: "Deep Learning", - scheme: "user", - identifier: "U1", - }, - }, - { - text: "MeSH: Cognitive Neuroscience", - value: { - subject: "Cognitive Neuroscience", - scheme: "mesh", - identifier: "D000066494", - }, - }, - { - text: "FAST: Glucagonoma", - value: { - subject: "Glucagonoma", - scheme: "fast", - identifier: "943672", - }, - }, - ], - limitToOptions: [ - { text: "All", value: "all" }, - { text: "MeSH", value: "mesh" }, - { text: "FAST", value: "fast" }, - ], - }, - }, - }; - - // check if files are present - this.noFiles = false; - if ( - !Array.isArray(this.props.files.entries) || - (!this.props.files.entries.length && this.props.record.is_published) - ) { - this.noFiles = true; - } - } - - formFeedbackRef = createRef(); - sidebarRef = createRef(); - - accordionStyle = { - header: { className: "inverted brand", style: { cursor: "pointer" } }, - }; - - render() { - return ( - - - - - - - - - {this.noFiles && this.props.record.is_published && ( -

- The record has no files. -

- )} - -
- - - {this.config.pids.map((pid) => ( - - - - - ))} - - - - - - - ({ - title: result.title_l10n, - description: result.description_l10n, - id: result.id, - link: result.props.url, - })} - /> -
-
- - - - {/**TODO: uncomment to use Subjects*/} - {/* - */} - - lang !== null)} // needed because dumped empty record from backend gives [null] - serializeSuggestions={(suggestions) => - suggestions.map((item) => ({ - text: item.title_l10n, - value: item.id, - key: item.id, - })) - } - /> - - - -
-
- {/**TODO: uncomment to use FundingField*/} - {/* - - - -
-
*/} - - - - - - - -
-
-
- - - - - -
- - -
- -
-
- - - - - - - - -
-
-
-
-
-
-
- ); - } -} diff --git a/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/index.js b/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/index.js deleted file mode 100644 index 869d72b..0000000 --- a/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/index.js +++ /dev/null @@ -1,23 +0,0 @@ -// This file is part of InvenioRDM -// Copyright (C) 2020 CERN. -// Copyright (C) 2020 Northwestern University. -// -// Invenio App RDM is free software; you can redistribute it and/or modify it -// under the terms of the MIT License; see LICENSE file for more details. - -import React from "react"; -import ReactDOM from "react-dom"; -import "semantic-ui-css/semantic.min.css"; - -import { getInputFromDOM } from "react-invenio-deposit"; -import { RDMDepositForm } from "./RDMDepositForm"; - -ReactDOM.render( - , - document.getElementById("deposit-form") -); diff --git a/invenio_theme_tugraz/config.py b/invenio_theme_tugraz/config.py index 82b3810..638b5bc 100644 --- a/invenio_theme_tugraz/config.py +++ b/invenio_theme_tugraz/config.py @@ -9,7 +9,6 @@ """invenio module for TUGRAZ theme.""" from flask_babelex import gettext as _ -from invenio_app_rdm.config import RECORDS_UI_ENDPOINTS INVENIO_THEME_TUGRAZ_DEFAULT_VALUE = _("TU Graz Repository") """Default value for the application.""" diff --git a/invenio_theme_tugraz/deposits.py b/invenio_theme_tugraz/deposits.py deleted file mode 100644 index a3971c8..0000000 --- a/invenio_theme_tugraz/deposits.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2019-2021 CERN. -# Copyright (C) 2019-2021 Northwestern University. -# Copyright (C) 2021 TU Wien. -# Copyright (C) 2021 Graz University of Technology. -# -# Invenio_theme_tugraz is free software; you can redistribute it and/or modify it -# under the terms of the MIT License; see LICENSE file for more details. -# https://github.com/inveniosoftware/invenio-app-rdm/blob/master/invenio_app_rdm/records_ui/views/deposits.py -"""Routes for record-related pages provided by Invenio-App-RDM.""" - - -from flask import render_template -from flask_login import login_required -from invenio_app_rdm.records_ui.views.decorators import ( - pass_draft, - pass_draft_files, - pass_is_preview, - pass_record_files, - pass_record_or_draft, -) -from invenio_app_rdm.records_ui.views.deposits import ( - get_form_config, - get_search_url, - new_record, -) -from invenio_rdm_records.resources.serializers import UIJSONSerializer - - -@login_required -def deposit_create(): - """Create a new deposit.""" - return render_template( - "invenio_theme_tugraz/deposit/deposit.html", - forms_config=get_form_config(createUrl=("/api/records")), - searchbar_config=dict(searchUrl=get_search_url()), - record=new_record(), - files=dict( - default_preview=None, entries=[], links={} - ), - ) - - -@login_required -@pass_draft -@pass_draft_files -def deposit_edit(draft=None, draft_files=None, pid_value=None): - """Edit an existing deposit.""" - serializer = UIJSONSerializer() - record = serializer.serialize_object_to_dict(draft.to_dict()) - - return render_template( - "invenio_theme_tugraz/deposit/deposit.html", - forms_config=get_form_config(apiUrl=f"/api/records/{pid_value}/draft"), - record=record, - files=draft_files.to_dict(), - searchbar_config=dict(searchUrl=get_search_url()), - permissions=draft.has_permissions_to(['new_version']) - ) - - -@pass_is_preview -@pass_record_or_draft -@pass_record_files -def record_detail(record=None, files=None, pid_value=None, is_preview=False): - """Record detail page (aka landing page).""" - files_dict = None if files is None else files.to_dict() - - return render_template( - "invenio_theme_tugraz/landingpage/detail.html", - record=UIJSONSerializer().serialize_object_to_dict(record.to_dict()), - pid=pid_value, - files=files_dict, - permissions=record.has_permissions_to(['edit', 'new_version', 'manage', - 'update_draft', 'read_files']), - is_preview=is_preview, - ) diff --git a/invenio_theme_tugraz/ext.py b/invenio_theme_tugraz/ext.py index 221146f..7db9382 100644 --- a/invenio_theme_tugraz/ext.py +++ b/invenio_theme_tugraz/ext.py @@ -9,7 +9,6 @@ """invenio module for TUGRAZ theme.""" from . import config -from .deposits import deposit_create, deposit_edit, record_detail from .views import index @@ -26,9 +25,6 @@ class InvenioThemeTugraz(object): # add index route rule # https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.add_url_rule app.add_url_rule("/", "index", index) - app.add_url_rule("/records/", "record_detail", record_detail) - app.add_url_rule("/uploads/new", "deposit_create", deposit_create) - app.add_url_rule("/uploads/", "deposit_edit", deposit_edit) self.init_config(app) app.extensions["invenio-theme-tugraz"] = self diff --git a/invenio_theme_tugraz/templates/invenio_theme_tugraz/deposit/deposit.html b/invenio_theme_tugraz/templates/invenio_theme_tugraz/deposit/deposit.html deleted file mode 100644 index 00831d4..0000000 --- a/invenio_theme_tugraz/templates/invenio_theme_tugraz/deposit/deposit.html +++ /dev/null @@ -1,37 +0,0 @@ -{# - Copyright (C) 2020 CERN. - Copyright (C) 2020 Northwestern University. - Copyright (C) 2021 Graz University of Technology. - - Invenio App RDM is free software; you can redistribute it and/or modify it - under the terms of the MIT License; see LICENSE file for more details. - #} - {%- if not record.is_published and record.versions.index and record.versions.index > 1%} - {%- set title = _("New version") %} - {%- elif not record.is_published %} - {%- set title = _("New upload") %} - {% else %} - {%- set title = _("Edit upload") %} - {%- endif %} - {%- extends config.BASE_TEMPLATE %} - - {%- block page_body %} - {%- if record %} - - {%- endif %} - {%- if files %} - - {%- endif %} - {%- if forms_config %} - - {%- endif %} - {%- if permissions %} - - {%- endif %} -
- {%- endblock page_body %} - - {%- block javascript %} - {{ super() }} - {{ webpack['invenio-theme-tugraz-rdm-deposit.js'] }} - {%- endblock %} diff --git a/invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html b/invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html index ffc6bba..69324a0 100644 --- a/invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html +++ b/invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html @@ -108,22 +108,9 @@ - - - {%- endfor %} {% if records %} diff --git a/invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html b/invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html deleted file mode 100644 index d1e8106..0000000 --- a/invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html +++ /dev/null @@ -1,205 +0,0 @@ -{# - Copyright (C) 2020-2021 CERN. - Copyright (C) 2020-2021 Northwestern University. - Copyright (C) 2021 TU Wien. - Copyright (C) 2021 Graz University of Technology. - - Invenio RDM Records is free software; you can redistribute it and/or modify - it under the terms of the MIT License; see LICENSE file for more details. -#} - -{%- extends config.BASE_TEMPLATE %} - -{%- from "invenio_app_rdm/records/macros/files.html" import file_list_box, preview_file_box %} -{%- from "invenio_app_rdm/records/macros/detail.html" import show_detail %} - -{%- set title = record.metadata.title -%} -{%- set metadata = record.metadata %} - -{%- block page_body %} -
- {% if is_preview %} -
-
-
-
-
-
- Preview -
-

- {% if record.is_published %} - You are previewing changes that have not yet been published. - {% endif %} - - {% if not record.is_published and record.versions.index == 1 %} - You are previewing a new record that has not yet been published. - {% endif %} - - {% if not record.is_published and record.versions.index > 1 %} - You are previewing a new record version that has not yet been published. - {% endif %} -

-
-
-
-
-
- {% endif %} - {% if permissions is defined and permissions.can_edit and not is_preview %} -
-
-
-
-
- {% endif %} - {% if (not record.versions.is_latest and not is_preview) or (is_preview and not record.versions.is_latest_draft) %} -
-
-
-
-
-

- {% trans link_start=('')|safe, link_end=''|safe %} - There is a {{ link_start }}newer version{{ link_end }} of the record available. - {% endtrans %} -

-
-
-
-
-
- {% endif %} -
- - -
-
-
-
- {% if record.access.record == 'restricted' %} -
- {{ record.ui.access_status.title_l10n }} {{ record.ui.access_status.description_l10n }} - {% if record.access.embargo.reason %} -

Reason: {{ record.access.embargo.reason }}

- {% endif %} -
- {% endif %} - {%- block record_body -%} - {%- block record_header -%} -
-
-
- {{ record.ui.publication_date_l10n_long }} - | Version {{ record.ui.version }} -
-
- {{ record.ui.resource_type.title_l10n }} - - {% if record.ui.access_status.icon %}{% endif %} - {{ record.ui.access_status.title_l10n }} - -
-
-
- {%- endblock record_header -%} - {%- block record_title -%} -

{{ metadata.title }}

-

{%- include "invenio_app_rdm/records/details/creators.html" %}

- {%- endblock record_title -%} - {%- block record_content -%} -

{%- include "invenio_app_rdm/records/details/contributors.html" %}

-

{%- include "invenio_app_rdm/records/details/doi.html" %}

- {%- include "invenio_app_rdm/records/details/subjects.html" %} -
- {%- include "invenio_app_rdm/records/details/description.html" %} -
-
- {%- include "invenio_app_rdm/records/details/licenses.html" %} -
- {%- endblock record_content -%} - - {# files #} - {%- block record_files -%} - {%- if record.files.enabled -%} - {%- if permissions.can_read_files -%} - {# record has files AND user can see files #} - {%- set files = files|order_entries %} - {%- if files|has_previewable_files -%} - {%-set preview_file = files|select_preview_file(default_preview=record.files.default_preview) %} - {{ preview_file_box(preview_file, pid, is_preview, record) }} - {%- endif -%} - {{ file_list_box(files, pid, is_preview, record) }} - {% else %} - {# record has files BUT user cannot see files #} -
-
-
- {{ _("Files") }} - -
-
-
- {{ record.ui.access_status.title_l10n }} -

{{ record.ui.access_status.description_l10n }}

- {% if record.access.embargo.reason %} -

{{_("Reason")}}: {{record.access.embargo.reason}}

- {% endif%} -
-
-
-
- {%- endif %} - {%- endif %} - {%- endblock record_files -%} - - {%- block record_details -%} - {# More details #} -
- {%- include "invenio_app_rdm/records/details/details.html" %} -
- {%- endblock record_details -%} - {%- block record_footer -%} -
-
-
-

Upload information

-
-
- - Created: {{ record.ui.created_date_l10n_long }} | Modified: {{ record.ui.updated_date_l10n_long }} - -
-
-
- {%- endblock record_footer -%} - {%- block jump -%} - - {%- endblock jump -%} - {%- endblock record_body %} -
-
- {% block record_sidebar %} - {%- include "invenio_app_rdm/records/details/side_bar.html" %} - {% endblock record_sidebar %} -
-
-
-
- -{%- endblock page_body %} - -{%- block javascript %} -{{ super() }} -{{ webpack['invenio-app-rdm-landing-page.js'] }} -{# Communities management -- TODO include again when communities are ready #} -{# {{ webpack['invenio-communities-records.js'] }} #} -{{ webpack['previewer_theme.js'] }} -{%- endblock javascript %} diff --git a/invenio_theme_tugraz/webpack.py b/invenio_theme_tugraz/webpack.py index 070f241..a0be4cc 100644 --- a/invenio_theme_tugraz/webpack.py +++ b/invenio_theme_tugraz/webpack.py @@ -17,25 +17,9 @@ theme = WebpackThemeBundle( entry={ "invenio-theme-tugraz-theme": "./less/invenio_theme_tugraz/theme.less", "invenio-theme-tugraz-js": "./js/invenio_theme_tugraz/theme.js", - # overrides RDM deposit form - 'invenio-theme-tugraz-rdm-deposit': './js/invenio_theme_tugraz/deposit/index.js', }, dependencies={ # add any additional npm dependencies here... - # Keep these dep: in sync with releases - "@babel/runtime": "^7.9.0", - 'formik': '^2.1.4', - 'luxon': '^1.23.0', - 'path': '^0.12.7', - 'prop-types': '^15.7.2', - 'react-dnd': '^11.1.3', - 'react-dnd-html5-backend': '^11.1.3', - 'react-invenio-deposit': '^0.14.0', - 'react-invenio-forms': '^0.7.0', - 'react-dropzone': "^11.0.3", - 'yup': '^0.27.0', - '@ckeditor/ckeditor5-build-classic': '^16.0.0', - '@ckeditor/ckeditor5-react': '^2.1.0', }, ) },