Compare commits

...

31 Commits

Author SHA1 Message Date
Mojib Wali
58c1af28ab v3.0.0 2021-04-30 16:11:45 +02:00
mb-wali
a762615741 global: migrate to v3 2021-04-30 16:11:02 +02:00
Mojib Wali
e141afa602 v2.1.2 2021-04-30 13:52:25 +02:00
mb-wali
2b3d6bce7b dep: restrict config-tugraz to v2 release 2021-04-30 13:51:46 +02:00
Mojib Wali
abca369212 v2.1.1 2021-04-30 10:01:38 +02:00
mb-wali
5eaca4b8a3 footer: adds link to search guide 2021-04-29 15:18:26 +02:00
Mojib Wali
714305d646 global: copyrights 2021-04-26 09:21:50 +02:00
Mojib Wali
e8a8ee88b7 v2.1.0 2021-04-21 16:07:57 +02:00
mb-wali
7f5dae65ac ui: adds blueprint routes for footer links 2021-04-21 13:05:34 +02:00
Mojib Wali
8b606007cd v2.0.9 2021-04-15 09:32:22 +02:00
mb-wali
32e785cb28 bugfix: created field using old metadata field 2021-04-15 08:33:28 +02:00
rekt-hard
765c43c283 fix: blur link on click, clickable login with TUG button
closes #184 #183
2021-04-14 14:02:56 +02:00
Mojib Wali
bfe2c45b09 v2.0.8 2021-04-12 14:26:23 +02:00
Mojib Wali
d511a3d9c7 fileupload: max storage revert to default 2021-04-12 14:25:58 +02:00
rekt-hard
83fe44db8e feature: footer links 2021-04-12 14:25:39 +02:00
Mojib Wali
41bfcf0cee v2.0.7 2021-04-09 14:01:17 +02:00
Mojib Wali
bc1c9bcc9c depositform: increase the fileupload 2021-04-09 13:56:17 +02:00
Mojib Wali
ae21366bfa v2.0.6 2021-04-08 09:14:27 +02:00
Mojib Wali
9e92934451 bugfixes: configs & translations
* bugfixes: modified config vars
* refactor: text of instance message
* translations: adds new trans
* translation: refactor some german translation
* footer: adds handbook link
2021-04-08 09:13:58 +02:00
david
0df53c42fa style: translation and minor documentation 2021-04-07 10:39:57 +02:00
david
88d7125acf fix: rename, set and use env variable 2021-04-07 10:39:57 +02:00
David Eckhard
8425d410f2 feature: add test instance notification 2021-04-07 10:39:57 +02:00
Mojib Wali
c4f80c42a1 v2.0.5 2021-04-01 10:43:40 +02:00
Unix
4698c797b2 bugfix: adds datacite host url 2021-04-01 10:43:13 +02:00
Unix
0e5f08768d bugfix: password should b unicode
else: request Error UnicodeEncodeError
2021-04-01 10:43:13 +02:00
Mojib Wali
e4d38632a9 v2.0.4 2021-03-31 17:07:16 +02:00
Unix
4fa0e2851f doimint: removes link to doi.org 2021-03-31 17:02:40 +02:00
Mojib Wali
2c10cc885d v2.0.3 2021-03-31 15:08:32 +02:00
Mojib Wali
f993fda3f6 bugfix: space requires before next query 2021-03-31 15:07:48 +02:00
Mojib Wali
ecacf0ba59 v2.0.2 2021-03-31 09:51:54 +02:00
Unix
592d59e54d depositform: disable field languages 2021-03-31 08:53:44 +02:00
42 changed files with 549 additions and 1917 deletions

View File

@@ -1,6 +1,6 @@
MIT License MIT License
Copyright (C) 2020 mojib wali. Copyright (C) 2020 Graz University of Technology.
Permission is hereby granted, free of charge, to any person obtaining a copy of Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in this software and associated documentation files (the "Software"), to deal in

View File

@@ -33,7 +33,8 @@ recursive-include invenio_theme_tugraz *.scss
recursive-include invenio_theme_tugraz *.svg recursive-include invenio_theme_tugraz *.svg
recursive-include invenio_theme_tugraz *.less recursive-include invenio_theme_tugraz *.less
recursive-include invenio_theme_tugraz *.ico recursive-include invenio_theme_tugraz *.ico
recursive-include invenio_theme_tugraz *.pdf
recursive-include tests *.py recursive-include tests *.py
recursive-include invenio_theme_tugraz *.jpg recursive-include invenio_theme_tugraz *.jpg
recursive-include invenio_theme_tugraz *.gitkeep recursive-include invenio_theme_tugraz *.gitkeep
recursive-include .github/workflows *.yml recursive-include .github/workflows *.yml

View File

@@ -45,8 +45,8 @@ master_doc = "index"
# General information about the project. # General information about the project.
project = u"invenio-theme-tugraz" project = u"invenio-theme-tugraz"
copyright = u"2020, mojib wali" copyright = u"2020, Graz University of Technology"
author = u"mojib wali" author = u"Graz University of Technology"
# The version info for the project you're documenting, acts as replacement for # The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the # |version| and |release|, also used in various other places throughout the
@@ -251,7 +251,7 @@ latex_documents = [
master_doc, master_doc,
"invenio-theme-tugraz.tex", "invenio-theme-tugraz.tex",
u"invenio-theme-tugraz Documentation", u"invenio-theme-tugraz Documentation",
u"mojib wali", u"Graz University of Technology",
"manual", "manual",
), ),
] ]

View File

@@ -1,207 +0,0 @@
import React, { Component } from "react";
import {
Button,
Card,
Icon,
Label,
Loader,
Dimmer,
Message,
} from "semantic-ui-react";
import { FieldArray } from "formik";
import { FetchDoi, MapDatacite } from "datacite-rest";
export class DoiMint extends Component {
constructor(props) {
super(props);
this.record = props.record || {};
this.configs = props.config || {};
this.metadata = this.record.metadata;
this.is_doi = false;
this.id_doi = "";
// check for existing identifiers
if (
typeof this.metadata.identifiers != "undefined" &&
this.metadata.identifiers != null &&
this.metadata.identifiers.length != null &&
this.metadata.identifiers.length > 0 &&
this.metadata.identifiers[0] != null
) {
for(var identifier of this.metadata.identifiers){
if (identifier.scheme == "doi"){
this.is_doi = true;
this.id_doi = identifier.identifier;
}
}
}
// add metadata to the state
this.state = {
identifiers: [],
showLoader: false,
doi_id: "",
errorMsg: "",
isError: false,
};
}
render() {
// this should fetch a new doi
var pushDoi = (form) => {
// activate the loader
this.setState({
showLoader: true,
});
// get the prefix from backend
const prefix = this.configs.datacite_prefix;
const suffix = this.configs.datacite_suffix;
if (prefix !== null && suffix !== null) {
// get mapped DOI
const mapped = MapDatacite(this.metadata, this.record.id, prefix, suffix);
const _fetchdoi = new FetchDoi("/getdoi");
// Create a new DOI
_fetchdoi
.create(mapped)
.then((data) => {
// if there is an error
if (data.data.errors) {
this.setState({
showLoader: false,
isError: true,
errorMsg: data.data.errors[0].title,
});
}
// new doi is fetched
else {
// add new identifier
const _identifiers = [
{
identifier: data.data.data.data.id,
scheme: "doi",
},
];
// submit the value to the form
this.setState({ identifiers: _identifiers });
form.setFieldValue(
"metadata.identifiers",
this.state.identifiers
);
this.is_doi = true;
// deactivate the loader
this.setState({
showLoader: false,
doi_id: this.state.identifiers[0].identifier,
});
}
})
.catch((error) => {
console.log("error", error);
});
} else {
this.setState({
showLoader: false,
isError: true,
errorMsg: "Not configured!",
});
}
};
// get a link of dio
var doiLink = (doiId) => {
window.open(`https://doi.org/${doiId}`, "_blank");
};
return (
<Card className="actions">
<Card.Content>
<Card.Header>
<Icon name="certificate" />
Datacite DOI
</Card.Header>
<Card.Description>
<span style={{ color: "#B6B6B6" }}>
Record must be a <b>published</b> record to mint a DOI.
</span>
</Card.Description>
{this.state.isError && (
<Message negative>
<Message.Header>{this.state.errorMsg}</Message.Header>
<p>Please contact Repository supporters!</p>
</Message>
)}
{/* when the Component is rendered */}
{!this.is_doi && (
<FieldArray name="metadata.identifiers">
{(fieldArrayProps) => {
const { form } = fieldArrayProps;
return (
<div
style={{
marginTop: "10px",
textAlign: "center",
}}
>
<Button
compact
className="save-button"
disabled={!this.record.is_published}
as={"label"}
color="green"
size="large"
onClick={() => pushDoi(form)}
>
<Icon name="certificate" />
Get DOI Now!
</Button>
{this.state.showLoader && (
<Dimmer active inverted>
<Loader inverted>Loading...</Loader>
</Dimmer>
)}
</div>
);
}}
</FieldArray>
)}
{this.is_doi && (
<div
style={{
textAlign: "center",
marginTop: "10px",
}}
>
{this.state.doi_id && (
<Message positive>
<Message.Header>A DOI is registered!</Message.Header>
<p>Please save the deposit. </p>
</Message>
)}
<Label
style={{
cursor: "pointer",
}}
size="large"
as="a"
color="blue"
onClick={() => doiLink(this.state.doi_id || this.id_doi)}
>
<strong>DOI: </strong>
<Label.Detail>{this.state.doi_id || this.id_doi}</Label.Detail>
</Label>
</div>
)}
</Card.Content>
</Card>
);
}
}

View File

@@ -1,47 +0,0 @@
// This file is part of React-Invenio-Deposit
// Copyright (C) 2020 CERN.
// Copyright (C) 2020 Northwestern University.
// Copyright (C) 2021 Graz University of Technology.
//
// React-Invenio-Deposit 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, { Component } from 'react';
import PropTypes from 'prop-types';
import { FieldLabel, TextField } from 'react-invenio-forms';
export class PublisherField extends Component {
render() {
const { fieldPath, label, labelIcon, placeholder, required } = this.props;
return (
<TextField
fieldPath={fieldPath}
helpText={
'The publisher is used to formulate the citation, if you are plannig to mint a new DOI this publisher will be cited.'
}
label={
<FieldLabel htmlFor={fieldPath} icon={labelIcon} label={label} />
}
placeholder={placeholder}
required={required}
/>
);
}
}
PublisherField.propTypes = {
fieldPath: PropTypes.string.isRequired,
label: PropTypes.string,
labelIcon: PropTypes.string,
placeholder: PropTypes.string,
required: PropTypes.bool,
};
PublisherField.defaultProps = {
fieldPath: 'metadata.publisher',
label: 'Publisher',
labelIcon: 'building outline',
placeholder: 'Enter publisher name',
};

View File

@@ -1,520 +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 } from "react";
import {
Button,
Card,
Container,
Grid,
Icon,
Ref,
Sticky,
} from "semantic-ui-react";
import {
AccessRightField,
ComingSoonField,
CreatibutorsField,
DatesField,
DepositFormApp,
FormFeedback,
DeleteButton,
DepositFormTitle,
DescriptionsField,
FileUploader,
FundingField,
IdentifiersField,
LanguagesField,
PublishButton,
PublicationDateField,
ResourceTypeField,
SaveButton,
SubjectsField,
TitlesField,
RelatedWorksField,
VersionField,
LicenseField,
} from "react-invenio-deposit";
import { AccordionField } from "react-invenio-forms";
import { DoiMint } from "./DoiMint";
import { PublisherField } from "./PublisherField";
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",
},
],
},
related_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 (
<DepositFormApp
config={this.config}
record={this.props.record}
files={this.props.files}
permissions={this.props.permissions}
>
<FormFeedback fieldPath="message" />
<Container style={{ marginTop: "10px" }}>
<DepositFormTitle />
<Grid>
<Grid.Row>
<Grid.Column width={11}>
<AccordionField
fieldPath=""
active={true}
label={"Files"}
ui={this.accordionStyle}
>
{this.noFiles && this.props.record.is_published && (
<p
style={{
textAlign: "center",
opacity: "0.5",
cursor: "default !important",
}}
>
<em>The record has no files.</em>
</p>
)}
<FileUploader
isDraftRecord={!this.props.record.is_published}
quota={{
maxFiles: 100,
maxStorage: 10 ** 10,
}}
/>
</AccordionField>
{/**TODO: uncomment to use IdentifiersField*/}
{/* <AccordionField
fieldPath=""
active={true}
label={"Files"}
ui={this.accordionStyle}
>
<IdentifiersField />
<ComingSoonField
fieldPath="metadata.identifiers"
label="Identifier(s)"
labelIcon="barcode"
/>
<br />
</AccordionField> */}
<AccordionField
fieldPath=""
active={true}
label={"Basic Information"}
ui={this.accordionStyle}
>
<ResourceTypeField
options={this.vocabularies.metadata.resource_type}
required
/>
<TitlesField
options={this.vocabularies.metadata.titles}
required
/>
<PublicationDateField required />
<CreatibutorsField
label={"Creators"}
labelIcon={"user"}
fieldPath={"metadata.creators"}
roleOptions={this.vocabularies.metadata.creators.role}
schema="creators"
required
/>
<DescriptionsField
options={this.vocabularies.metadata.descriptions}
editorConfig={{
removePlugins: [
"Image",
"ImageCaption",
"ImageStyle",
"ImageToolbar",
"ImageUpload",
"MediaEmbed",
"Table",
"TableToolbar",
"TableProperties",
"TableCellProperties",
],
}}
/>
<LicenseField
fieldPath="metadata.rights"
searchConfig={{
searchApi: {
axios: {
headers: {
Accept: "application/vnd.inveniordm.v1+json",
},
url: "/api/vocabularies/licenses",
withCredentials: false,
},
},
initialQueryState: {
filters: [["tags", "recommended"]],
},
}}
serializeLicenses={(result) => ({
title: result.title_l10n,
description: result.description_l10n,
id: result.id,
link: result.props.url,
})}
/>
<br />
</AccordionField>
<AccordionField
fieldPath=""
active={true}
label={"Recommended Information"}
ui={this.accordionStyle}
>
<CreatibutorsField
addButtonLabel={"Add contributor"}
label={"Contributors"}
labelIcon={"user plus"}
fieldPath={"metadata.contributors"}
roleOptions={this.vocabularies.metadata.contributors.role}
schema="contributors"
modal={{
addLabel: "Add contributor",
editLabel: "Edit contributor",
}}
/>
{/**TODO: uncomment to use Subjects*/}
{/* <SubjectsField
initialOptions={_get(
this.props.record,
"metadata.subjects",
null
)}
limitToOptions={
this.vocabularies.metadata.subjects.limitToOptions
}
/>
<ComingSoonField
fieldPath="metadata.subjects"
label="Subjects"
labelIcon="tag"
/> */}
<LanguagesField
initialOptions={_get(
this.props.record,
"ui.languages",
[]
).filter((lang) => 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,
}))
}
/>
<DatesField options={this.vocabularies.metadata.dates} />
<VersionField />
<PublisherField required />
<br />
</AccordionField>
{/**TODO: uncomment to use FundingField*/}
{/* <AccordionField
fieldPath=""
active={true}
label={"Funding"}
ui={this.accordionStyle}
>
<FundingField options={this.vocabularies.metadata.funding} />
<ComingSoonField
fieldPath="metadata.funding"
label="Awards"
labelIcon="money bill alternate outline"
/>
<br />
</AccordionField> */}
<AccordionField
fieldPath=""
active={true}
label={"Related works"}
ui={this.accordionStyle}
>
<RelatedWorksField
options={this.vocabularies.metadata.related_identifiers}
/>
<br />
</AccordionField>
</Grid.Column>
<Ref innerRef={this.sidebarRef}>
<Grid.Column width={5} className="deposit-sidebar">
<Sticky context={this.sidebarRef} offset={20}>
<Card className="actions">
<Card.Content>
<SaveButton fluid className="save-button" />
<PublishButton fluid />
</Card.Content>
</Card>
<Card className="actions">
<Card.Content>
<DeleteButton
fluid
// TODO: make is_published part of the API response
// so we don't have to do this
isPublished={this.props.record.is_published}
/>
</Card.Content>
</Card>
<AccessRightField
label={"Protection"}
labelIcon={"shield"}
/>
{this.config.data_cite && (
<DoiMint
record={this.props.record}
config={this.config.data_cite}
/>
)}
</Sticky>
</Grid.Column>
</Ref>
</Grid.Row>
</Grid>
</Container>
</DepositFormApp>
);
}
}

View File

@@ -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(
<RDMDepositForm
record={getInputFromDOM("deposits-record")}
files={getInputFromDOM("deposits-record-files")}
config={getInputFromDOM("deposits-config")}
permissions={getInputFromDOM("deposits-record-permissions")}
/>,
document.getElementById("deposit-form")
);

View File

@@ -1,324 +0,0 @@
/*
* Copyright (C) 2020 CERN.
* Copyright (C) 2020 Northwestern University.
* Copyright (C) 2020 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.
*
* origin: invenio_app_rdm/search/components.js
*/
import React, { useState } from "react";
import { Card, Item, Input, Label, Button, Grid, Checkbox, List, } from "semantic-ui-react";
import { BucketAggregation, Toggle } from "react-searchkit";
import _ from "lodash";
import _truncate from "lodash/truncate";
import Overridable from "react-overridable";
import { SearchBar } from "@js/invenio_search_ui/components";
export const RDMRecordResultsListItem = ({ result, index }) => {
const description = _.get(result, "metadata.description", "No description");
const version = _.get(result, "metadata.version", "");
const creators = _.get(result, "metadata.creators", []);
const title = _.get(result, "metadata.title", "No title");
const subjects = _.get(result, "metadata.subjects", null);
const rights = _.get(result, "metadata.rights", null)
const publicationDate = _.get(result, "ui.publication_date_l10n_long", "No publication date found");
const createdDate = _.get(result, "ui.created_date_l10n_long", "No creation date found.");
const resourceType = _.get(result, "ui.resource_type", "No resource type");
const access = _.get(result, "ui.access_right.title", "No access rights");
const accessRightCategory = _.get(result, "ui.access_right.category", "closed");
const accessRightIcon = _.get(result, "ui.access_right.icon", "closed");
const accessRight = {type: access, category: accessRightCategory, icon: accessRightIcon, rights};
const href = `/records/${result.id}`;
return (
<Item key={index}>
<Item.Content>
<div className="badges">
<Label className="record-version">
{publicationDate} {version ? `(${version})` : null}
</Label>
<Label className="teal">
{resourceType}
</Label>
</div>
<Item.Header href={href}>{title}</Item.Header>
<Creators creators={creators}/>
<Item.Description href={href}>
{_truncate(description.replace(/(<([^>]+)>)/ig, ''), { length: 350 })}
</Item.Description>
<Footer subjects={subjects} createdDate={createdDate} accessRight={accessRight}/>
</Item.Content>
</Item>
);
};
const Creators = ({creators}) => {
const creatorTags = creators.map((creator, index) => {
return <Creator key={index} creator={creator}/>;
});
return (
<div className="creators">
{creatorTags}
</div>
);
};
const Identifiers = ({creator}) => {
return (
<div className="identifiers">
{_.isObject(creator.identifiers) && creator.identifiers.hasOwnProperty("orcid") &&
<Orcid creator={creator}/>
}
</div>
);
};
const Orcid = ({creator}) => {
const href = `https://orcid.org/${creator.identifiers.orcid}`
return (
<a href={href} target="_blank">
<img className="inline-orcid" src="/static/extra/orcid.png"/>
</a>
);
};
const Creator = ({creator}) => {
return (
<div className="creator">
<Identifiers creator={creator}/>
<span className="text-muted">{creator.person_or_org.name}</span>
</div>
);
};
const Footer = ({subjects, createdDate, accessRight}) => {
return (
<Item.Extra>
<div className="left floated column">
{subjects && subjects.map((subject, index) => (
<Label key={index} size="tiny">
{subject.subject}
</Label>
))}
{createdDate && (
<div>
<small>
Uploaded on <span>{createdDate}</span>
</small>
</div>
)}
</div>
<div className="right floated column">
<span className={`ui access-right ${accessRight.category}`}>
<i className={`icon ${accessRight.icon}`}></i>
{accessRight.type} {accessRight.rights && accessRight.rights.map((right, index) => (
<a key={index} href={right.uri}>({right.identifier})</a>
))}
</span>
</div>
</Item.Extra>
);
};
/**
* ATTENTION:
* The following classes are only here because it is not easily possible to
* import it from the original module.
* If there is in the future a possibility to import following classes from
* invenio_app_rdm then this should be done!
*/
export const RDMRecordResultsGridItem = ({ result, index }) => {
const description = _.get(result, "metadata.description", "No description");
return (
<Card fluid key={index} href={`/records/${result.pid}`}>
<Card.Content>
<Card.Header>{result.metadata.title}</Card.Header>
<Card.Description>
{_truncate(description, { length: 200 })}
</Card.Description>
</Card.Content>
</Card>
);
};
export const RDMRecordSearchBarContainer = () => {
return (
<Overridable id={"SearchApp.searchbar"}>
<SearchBar />
</Overridable>
);
};
export const RDMRecordSearchBarElement = ({
placeholder: passedPlaceholder,
queryString,
onInputChange,
executeSearch,
}) => {
const placeholder = passedPlaceholder || "Search";
const onBtnSearchClick = () => {
executeSearch();
};
const onKeyPress = (event) => {
if (event.key === "Enter") {
executeSearch();
}
};
return (
<Input
action={{
icon: "search",
onClick: onBtnSearchClick,
className: "search",
}}
placeholder={placeholder}
onChange={(event, { value }) => {
onInputChange(value);
}}
value={queryString}
onKeyPress={onKeyPress}
/>
);
};
export const RDMRecordFacetsValues = ({
bucket,
isSelected,
onFilterClicked,
getChildAggCmps,
}) => {
const childAggCmps = getChildAggCmps(bucket);
const [isActive, setisActive] = useState(false);
const hasChildren = childAggCmps && childAggCmps.props.buckets.length > 0;
return (
<List.Item key={bucket.key}>
<div
className={`title ${hasChildren ? "" : "facet-subtitle"} ${
isActive ? "active" : ""
}`}
>
<List.Content floated="right">
<Label circular>{bucket.doc_count}</Label>
</List.Content>
{hasChildren ? (
<i
className={`angle ${isActive ? "down" : "right"} icon`}
onClick={() => setisActive(!isActive)}
></i>
) : null}
<Checkbox
label={bucket.label}
value={bucket.key}
onClick={() => onFilterClicked(bucket.key)}
checked={isSelected}
/>
</div>
<div className={`content facet-content ${isActive ? "active" : ""}`}>
{childAggCmps}
</div>
</List.Item>
);
};
const SearchHelpLinks = () => {
return (
<Overridable id={"RdmSearch.SearchHelpLinks"}>
<Grid className="padded-small">
<Grid.Row className="no-padded">
<Grid.Column>
<Card className="borderless-facet">
<Card.Content>
<a>Advanced search</a>
</Card.Content>
</Card>
</Grid.Column>
</Grid.Row>
<Grid.Row className="no-padded">
<Grid.Column>
<Card className="borderless-facet">
<Card.Content>
<a>Search guide</a>
</Card.Content>
</Card>
</Grid.Column>
</Grid.Row>
</Grid>
</Overridable>
);
};
export const RDMRecordFacets = ({ aggs, currentResultsState }) => {
return (
<>
<Toggle
title="Versions"
label="View all versions"
filterValue={["all_versions", "true"]}
/>
{aggs.map((agg) => {
return (
<div key={agg.title} className="ui accordion">
<BucketAggregation title={agg.title} agg={agg} />
</div>
);
})}
<SearchHelpLinks />
</>
);
};
export const RDMBucketAggregationElement = ({ title, containerCmp }) => {
return (
<Card className="borderless-facet">
<Card.Content>
<Card.Header>{title}</Card.Header>
</Card.Content>
<Card.Content>{containerCmp}</Card.Content>
</Card>
);
};
export const RDMToggleComponent = ({
updateQueryFilters,
userSelectionFilters,
filterValue,
label,
title,
isChecked,
}) => {
const _isChecked = (userSelectionFilters) => {
const isFilterActive =
userSelectionFilters.filter((filter) => filter[0] === filterValue[0])
.length > 0;
return isFilterActive;
};
const onToggleClicked = () => {
updateQueryFilters(filterValue);
};
var isChecked = _isChecked(userSelectionFilters);
return (
<Card className="borderless-facet">
<Card.Content>
<Card.Header>{title}</Card.Header>
</Card.Content>
<Card.Content>
<Checkbox
toggle
label={label}
onClick={onToggleClicked}
checked={isChecked}
/>
</Card.Content>
</Card>
);
};

View File

@@ -1,30 +0,0 @@
/*
* Copyright (C) 2020 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.
*/
import { defaultComponents, createSearchAppInit } from "@js/invenio_search_ui";
import {
RDMRecordResultsListItem,
RDMBucketAggregationElement,
RDMRecordFacets,
RDMRecordFacetsValues,
RDMRecordResultsGridItem,
RDMRecordSearchBarContainer,
RDMRecordSearchBarElement,
RDMToggleComponent,
} from "./components";
const initSearchApp = createSearchAppInit({
"ResultsList.item": RDMRecordResultsListItem,
"BucketAggregation.element": RDMBucketAggregationElement,
"BucketAggregationValues.element": RDMRecordFacetsValues,
"ResultsGrid.item": RDMRecordResultsGridItem,
"SearchApp.facets": RDMRecordFacets,
"SearchApp.searchbarContainer": RDMRecordSearchBarContainer,
"SearchBar.element": RDMRecordSearchBarElement,
"SearchFilters.ToggleComponent": RDMToggleComponent,
});

View File

@@ -1,6 +1,12 @@
import $ from 'jquery'; import $ from 'jquery';
import 'semantic-ui-css';
// called on document ready
$(function() { $(function() {
importZammadScript();
});
function importZammadScript() {
let scriptNode = document.createElement("hidden"); //needed for zammad script let scriptNode = document.createElement("hidden"); //needed for zammad script
scriptNode.id = "zammad_form_script"; scriptNode.id = "zammad_form_script";
scriptNode.src = "https://ub-support.tugraz.at/assets/form/form.js"; scriptNode.src = "https://ub-support.tugraz.at/assets/form/form.js";
@@ -15,7 +21,15 @@ $(function() {
modal: true modal: true
}); });
}); });
}); }
// used for sticky test instance notification
$('.ui.sticky.test-instance')
.sticky({
context: 'body'
})
;
export function toggleVisibility(id) { export function toggleVisibility(id) {
var element = document.getElementById(id); var element = document.getElementById(id);

View File

@@ -25,14 +25,24 @@
padding-top: 15px; padding-top: 15px;
padding-bottom: 15px; padding-bottom: 15px;
font-size: 16px; font-size: 16px;
a { a {
text-decoration: none; text-decoration: none;
color: @footerGrey; color: @footerGrey;
&:hover, &:focus { // :focus-visible activates on keyboard only
&:hover, &:focus:focus-visible {
color: @primaryLink; color: @primaryLink;
background-color: @primaryLinkHoverBackground; background-color: @primaryLinkHoverBackground;
i.icon.download {
color: @tugrazRed;
}
}
// remove blue focus outline if clicked with mouse
&:focus:not(:focus-visible) {
outline-style: none;
} }
} }
} }

View File

@@ -247,3 +247,10 @@ svg:not(:root) {
span.home-inline{ span.home-inline{
white-space: nowrap; white-space: nowrap;
} }
.test-instance{
text-align: center;
background-color: @notificationBackground;
border: solid @notificationBorder 1px;
z-index: 100000;
}

View File

@@ -31,4 +31,5 @@
color: inherit; color: inherit;
text-decoration: none; text-decoration: none;
transition: background-color 0.15s ease 0s, color 0.15s ease 0s; transition: background-color 0.15s ease 0s, color 0.15s ease 0s;
outline: none;
} }

View File

@@ -51,7 +51,7 @@
//account (signin, signup) specific // account (signin, signup) specific
@primaryFormAccounts : #fff; @primaryFormAccounts : #fff;
@formAccountsInputPlaceholder : silver; @formAccountsInputPlaceholder : silver;
@fieldInputSelectionBackground: #50a2ce; @fieldInputSelectionBackground: #50a2ce;
@@ -67,3 +67,7 @@
// input // input
@outlineColor: #85B7D9; @outlineColor: #85B7D9;
// notification
@notificationBackground: #fffaf3;
@notificationBorder: #e2d5c2;

View File

@@ -17,7 +17,9 @@ INVENIO_THEME_TUGRAZ_DEFAULT_VALUE = _("TU Graz Repository")
INVENIO_THEME_TUGRAZ_BASE_TEMPLATE = "invenio_theme_tugraz/base.html" INVENIO_THEME_TUGRAZ_BASE_TEMPLATE = "invenio_theme_tugraz/base.html"
"""TU Graz Default base template""" """TU Graz Default base template"""
INVENIO_THEME_TUGRAZ_ACCOUNT_BASE = "invenio_theme_tugraz/accounts/accounts_base.html" INVENIO_THEME_TUGRAZ_ACCOUNT_BASE = (
"invenio_theme_tugraz/accounts/accounts_base.html"
)
"""TU Graz Default account base template""" """TU Graz Default account base template"""
INVENIO_THEME_TUGRAZ_ICON = "images/icon_use.png" INVENIO_THEME_TUGRAZ_ICON = "images/icon_use.png"
@@ -26,9 +28,16 @@ INVENIO_THEME_TUGRAZ_ICON = "images/icon_use.png"
INVENIO_THEME_TUGRAZ_LOGIN_IMG = "images/login_logo.png" INVENIO_THEME_TUGRAZ_LOGIN_IMG = "images/login_logo.png"
"""TU Logo for forms""" """TU Logo for forms"""
INVENIO_THEME_TUGRAZ_CONTACT_FORM = False THEME_TUGRAZ_CONTACT_FORM = False
"""Enable/Disable Contact form.""" """Enable/Disable Contact form."""
THEME_TUGRAZ_PRODUCTION = False
"""Production environment.
Can also be set as an environment variable in a .env file. Then the name
has to be 'INVENIO_THEME_TUGRAZ_PRODUCTION'.
"""
# Invenio-theme # Invenio-theme
# ============ # ============
# See https://invenio-theme.readthedocs.io/en/latest/configuration.html # See https://invenio-theme.readthedocs.io/en/latest/configuration.html
@@ -67,7 +76,9 @@ THEME_SITENAME = _("Repository")
SECURITY_LOGIN_USER_TEMPLATE = "invenio_theme_tugraz/accounts/login_user.html" SECURITY_LOGIN_USER_TEMPLATE = "invenio_theme_tugraz/accounts/login_user.html"
"""Login template""" """Login template"""
SECURITY_REGISTER_USER_TEMPLATE = "invenio_theme_tugraz/accounts/register_user.html" SECURITY_REGISTER_USER_TEMPLATE = (
"invenio_theme_tugraz/accounts/register_user.html"
)
"""Sigup template""" """Sigup template"""
# Invenio-I18N # Invenio-I18N
@@ -108,14 +119,8 @@ DEPOSITS_HEADER_TEMPLATE = "invenio_theme_tugraz/header.html"
TUG_ROUTES = { TUG_ROUTES = {
"index": "/", "index": "/",
"comingsoon": "/comingsoon", "comingsoon": "/comingsoon",
"deposit_create": "/uploads/new", "guide": "/guide",
"deposit_edit": "/uploads/<pid_value>", "terms": "/terms",
"getdoi": "/getdoi", "gdpr": "/gdpr",
"record_detail": "/records/<pid_value>", "record_detail": "/records/<pid_value>",
} }
# Datacite
# INVENIO_DATACITE_URL = ""
# INVENIO_DATACITE_UNAME = ""
# INVENIO_DATACITE_PASS = "password"
# INVENIO_DATACITE_PREFIX = ""

View File

@@ -9,7 +9,7 @@
"""invenio module for TUGRAZ theme.""" """invenio module for TUGRAZ theme."""
from . import config from . import config
from .views import deposit_create, deposit_edit, index, record_detail from .views import index, record_detail
class InvenioThemeTugraz(object): class InvenioThemeTugraz(object):
@@ -25,8 +25,6 @@ class InvenioThemeTugraz(object):
# add index route rule # add index route rule
# https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.add_url_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("/", "index", index)
app.add_url_rule("/uploads/new", "deposit_create", deposit_create)
app.add_url_rule("/uploads/<pid_value>", "deposit_edit", deposit_edit)
app.add_url_rule("/records/<pid_value>", "record_detail", record_detail) app.add_url_rule("/records/<pid_value>", "record_detail", record_detail)
self.init_config(app) self.init_config(app)
app.extensions["invenio-theme-tugraz"] = self app.extensions["invenio-theme-tugraz"] = self
@@ -34,5 +32,5 @@ class InvenioThemeTugraz(object):
def init_config(self, app): def init_config(self, app):
"""Initialize configuration.""" """Initialize configuration."""
for k in dir(config): for k in dir(config):
if k.startswith("INVENIO_THEME_TUGRAZ_"): if k.startswith("INVENIO_THEME_TUGRAZ_") or k.startswith("THEME_TUGRAZ_"):
app.config.setdefault(k, getattr(config, k)) app.config.setdefault(k, getattr(config, k))

View File

@@ -23,4 +23,4 @@ class FrontpageRecordsSearch(RecordsSearch):
index = "rdmrecords-records" index = "rdmrecords-records"
default_filter = Q( default_filter = Q(
"query_string", query=( "query_string", query=(
"access.record:public" "AND versions.is_latest:true")) "access.record:public " "AND versions.is_latest:true"))

View File

@@ -56,6 +56,12 @@
{%- endblock head %} {%- endblock head %}
</head> </head>
<body ng-csp {% if body_css_classes %} class="{{ body_css_classes|join(' ') }}"{% endif %}{% if g.ln %} lang="{{ g.ln.split('_', 1)[0]|safe }}"{% if rtl_direction %} {{ rtl_direction|safe }}{% endif %}{% endif %} itemscope itemtype="http://schema.org/WebPage" data-spy="scroll" data-target=".scrollspy-target"> <body ng-csp {% if body_css_classes %} class="{{ body_css_classes|join(' ') }}"{% endif %}{% if g.ln %} lang="{{ g.ln.split('_', 1)[0]|safe }}"{% if rtl_direction %} {{ rtl_direction|safe }}{% endif %}{% endif %} itemscope itemtype="http://schema.org/WebPage" data-spy="scroll" data-target=".scrollspy-target">
{% if not config.THEME_TUGRAZ_PRODUCTION %}
<div class="ui sticky test-instance">
<h4>{{_ ("Test Instance") }}</h4>
<p>{{_ ("This is the test instance of the TU Graz Repository.") }}</p>
</div>
{% endif %}
{%- block body %} {%- block body %}
{%- block browserupgrade %} {%- block browserupgrade %}
<!--[if lt IE 8]> <!--[if lt IE 8]>

View File

@@ -25,12 +25,10 @@
<div class="ui divider"></div> <div class="ui divider"></div>
<!--Log in with SSO--> <!--Log in with SSO-->
{%- if config.INVENIO_CONFIG_TUGRAZ_SHIBBOLETH %} {%- if config.INVENIO_CONFIG_TUGRAZ_SHIBBOLETH %}
<div class="login-page-button ui fluid large button"> <a href="{{ url_for('sso_saml.sso', idp='idp') }}" class="login-page-button ui fluid large button">
<a href="{{ url_for('sso_saml.sso', idp='idp') }}" class="inverted tiny image label"> {% trans type='TUGRAZ' %} Log in with {{ type }}{% endtrans %}
{% trans type='TUGRAZ' %} Log in with {{ type }}{% endtrans %} <img src="{{ url_for('static', filename=config.INVENIO_THEME_TUGRAZ_ICON)}}" height="20px" />
<img src="{{ url_for('static', filename=config.INVENIO_THEME_TUGRAZ_ICON)}}" height="20px" /> </a>
</a>
</div>
<div class="spacer-long"></div> <div class="spacer-long"></div>
<div class="ui inverted horizontal divider"><span class="text-color">{{_ ("Or")}}</span></div> <div class="ui inverted horizontal divider"><span class="text-color">{{_ ("Or")}}</span></div>
{%- endif %} {%- endif %}
@@ -74,4 +72,4 @@
</div> </div>
</div> </div>
</div> </div>
{% endblock page_body %} {% endblock page_body %}

View File

@@ -1,7 +1,5 @@
{# {#
Copyright (C) 2020 TUGRAZ Copyright (C) 2020 Graz University of Technology.
Copyright (C) 2020 mojib wali
Copyright (C) 2020 Nikita Lvov
invenio-theme-tugraz is free software; you can redistribute it and/or 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 modify it under the terms of the MIT License; see LICENSE file for more
@@ -46,11 +44,10 @@
<!--Sigup with SSO--> <!--Sigup with SSO-->
{%- if config.INVENIO_CONFIG_TUGRAZ_SHIBBOLETH %} {%- if config.INVENIO_CONFIG_TUGRAZ_SHIBBOLETH %}
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="login-page-button ui fluid large button"> <a href="{{ url_for('sso_saml.sso', idp='idp') }}" class="login-page-button ui fluid large button">
<a href="{{ url_for('sso_saml.sso', idp='idp') }}" class="inverted tiny image label"> <span style="font-size: 18px;">{{ _('Sign up with TUGRAZ ') }}</span>
<span style="font-size: 18px;">{{ _('Sign up with TUGRAZ ') }}</span> <img src="{{ url_for('static', filename=config.INVENIO_THEME_TUGRAZ_ICON)}}" height="20px" />
<img src="{{ url_for('static', filename=config.INVENIO_THEME_TUGRAZ_ICON)}}" height="20px" /> </a>
</a>
</div> </div>
<div class="ui inverted horizontal divider"><span class="text-color">{{_ ("Or")}}</span></div> <div class="ui inverted horizontal divider"><span class="text-color">{{_ ("Or")}}</span></div>
{%- endif %} {%- endif %}
@@ -91,4 +88,4 @@
</div> </div>
{% endblock page_body %} {% endblock page_body %}

View File

@@ -1,31 +0,0 @@
{#
Copyright (C) 2020 CERN.
Copyright (C) 2020 Northwestern University.
Copyright (C) 2021 Graz University of Technology.
Invenio-them-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.
#}
{%- extends config.BASE_TEMPLATE %}
{%- block page_body %}
{%- if record %}
<input id="deposits-record" type="hidden" name="deposits-record" value='{{record | tojson }}'></input>
{%- endif %}
{%- if files %}
<input id="deposits-record-files" type="hidden" name="deposits-record-files" value='{{files | tojson }}'></input>
{%- endif %}
{%- if forms_config %}
<input type="hidden" name="deposits-config" value='{{forms_config | tojson }}'></input>
{%- endif %}
{%- if permissions %}
<input id="deposits-record-permissions" type="hidden" name="deposits-record-permissions" value='{{permissions | tojson }}'></input>
{%- endif %}
<div id="deposit-form"></div>
{%- endblock page_body %}
{%- block javascript %}
{{ super() }}
{{ webpack['invenio-theme-tugraz-rdm-deposit.js'] }}
{%- endblock %}

View File

@@ -1,41 +0,0 @@
{#
Copyright (C) 2020 CERN.
Copyright (C) 2020 Northwestern University.
Copyright (C) 2020 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.
origin: invenio-rdm-records/doi.html
#}
{%- set id_doi = record.identifiers | doi_identifier %}
<div>
<div class="get-badge"
data-toggle="tooltip"
data-placement="bottom"
style="cursor: pointer;"
title="Get the DOI badge!">
<img id="record-doi-badge"
data-target="[data-modal='{{ id_doi }}']"
src="{{ url_for('invenio_formatter_badges.badge', title='DOI', value=id_doi, ext='svg') }}"
alt="{{ id_doi }}">
</div>
<div id="doi-modal" class="ui modal fade badge-modal" data-modal="{{ id_doi }}">
<h2 class="header">
{{_ ("RDM DOI Badge")}}
</h2>
<div class="content">
<h4><small>{{_ ("DOI")}}</small></h4>
<h4><pre>{{ id_doi }}</pre></h4>
{% from "semantic-ui/invenio_formatter/macros/badges.html" import badges_formats_list %}
{{ badges_formats_list(url_for('invenio_formatter_badges.badge', title='DOI', value=id_doi, ext='svg',
_external=True, _scheme='https'), id_doi | pid_url(scheme='doi')) }}
</div>
</div>
</div>

View File

@@ -1,9 +1,9 @@
{# {#
Copyright (C) 2020-2021 Graz University of Technology. Copyright (C) 2020-2021 Graz University of Technology.
invenio-theme-tugraz is free software; you can redistribute it and/or 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 modify it under the terms of the MIT License; see LICENSE file for more
details. details.
#} #}
{%- block css %} {%- block css %}
@@ -12,7 +12,7 @@
{%- endblock %} {%- endblock %}
{%- block javascript %} {%- block javascript %}
{{ webpack['invenio-theme-tugraz-js.js'] }} {{ webpack['invenio-theme-tugraz-js.js'] }}
{%- endblock javascript %} {%- endblock javascript %}
<div class="spacer"></div> <div class="spacer"></div>
@@ -21,78 +21,96 @@
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
<div class="doubling four column row"> <div class="doubling four column row">
<div class="column"> <div class="column">
<h2>{{_ ("Repository")}}</h2> <h2>{{_ ("Repository")}}</h2>
<p class="bodytext"> <p class="bodytext">
<a href="https://tu-graz-library.github.io/docs-repository" title="Repository documentation" target="_blank"> <a href="https://tu-graz-library.github.io/docs-repository" title="Repository documentation"
{{_ ("Documentation")}} <i class="external alternate icon"></i> target="_blank">
</a> {{_ ("Documentation")}} <i class="external alternate icon"></i>
<br> </a>
<!-- <a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}"> <br>
<a href="{{ url_for('invenio_theme_tugraz.guide') }}"
title="Quick guide" target="_blank">
{{_ ("Reference Guide")}} <i class="download icon"></i>
</a>
<br>
<a href="{{ url_for('invenio_app_rdm.help_search') }}"
title="Search guide">
{{_ ("Search Guide")}}<i class="angle right icon"></i>
</a>
<br>
<a href="{{ url_for('invenio_theme_tugraz.gdpr') }}"
title="General Data Protection Rights" target="_blank">
{{_ ("Data Protection")}} <i class="download icon"></i>
</a>
<br>
<a href="{{ url_for('invenio_theme_tugraz.terms') }}"
title="Terms and Conditions" target="_blank">
{{_ ("Terms and Conditions")}} <i class="download icon"></i>
</a>
<br>
<!-- <a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}">
{{_ ("Impressum")}}<i class="angle right icon"></i> {{_ ("Impressum")}}<i class="angle right icon"></i>
</a> </a>
<br> <br>
<a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}"> <a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}">
{{_ ("Data protection")}}<i class="angle right icon"></i> {{_ ("Feedback")}}<i class="angle right icon"></i>
</a> </a> -->
<br> </p>
<a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}">
{{_ ("Feedback")}}<i class="angle right icon"></i> </div>
</a> -->
</p>
</div>
<div class="column"> <div class="column">
<h2>{{_ ("Features")}}</h2>
<h4>{{_ ("Scalability")}}</h4> <h2>{{_ ("Features")}}</h2>
<h4>{{_ ("Institutional integration")}}</h4>
<h4>{{_ ("Next Generation Repository")}} <h4>{{_ ("Scalability")}}</h4>
</h4>
<h4>{{_ ("Repository Profiles")}}</h4> <h4>{{_ ("Institutional integration")}}</h4>
<h4>{{_ ("Resilient")}}</h4> <h4>{{_ ("Next Generation Repository")}}
</h4>
</div> <h4>{{_ ("Repository Profiles")}}</h4>
<h4>{{_ ("Resilient")}}</h4>
</div>
<div class="column"> <div class="column">
<h2>{{_ ("Connected Services")}}</h2>
<p class="bodytext">
<a href="https://pure.tugraz.at" title="PURE" target="_blank"> <h2>{{_ ("Connected Services")}}</h2>
{{_ ("PURE")}} <i class="external alternate icon"></i></a><br> <p class="bodytext">
<a href="http://campusonline.tugraz.at" title="CAMPUS online" target="_blank"> <a href="https://pure.tugraz.at" title="PURE" target="_blank">
{{_ ("CampusOnline")}} <i class="external alternate icon"></i></a><br> {{_ ("PURE")}} <i class="external alternate icon"></i></a><br>
<a href="http://campusonline.tugraz.at" title="CAMPUS online" target="_blank">
{{_ ("CampusOnline")}} <i class="external alternate icon"></i></a><br>
<a href="https://rdm.tugraz.at" title="Research Data Management" target="_blank"> <a href="https://rdm.tugraz.at" title="Research Data Management" target="_blank">
{{_ ("Research Data Management")}} <i class="external alternate icon"></i></a><br> {{_ ("Research Data Management")}} <i class="external alternate icon"></i></a><br>
</p> </p>
</div>
<div class="column">
<h2>{{_ ("Accessibility")}}</h2>
<p class="bodytext">{{_ ("Tipp:")}}<br> {{_ ("Use Ctrl + and Crtl -")}}<br> {{_ ("to change the font size.")}}</p>
</div>
</div> </div>
<div class="column">
<h2>{{_ ("Accessibility")}}</h2>
<p class="bodytext">{{_ ("Tipp:")}}<br> {{_ ("Use Ctrl + and Crtl -")}}<br> {{_ ("to change the font size.")}}
</p>
</div>
</div>
</div> </div>
</div> </div>

View File

@@ -6,9 +6,14 @@
details. details.
#} #}
{% if not config.THEME_TUGRAZ_PRODUCTION %}
<div class="ui sticky test-instance">
<h4>{{_ ("Test Instance") }}</h4>
<p>{{_ ("This is the test instance of the TU Graz Repository.") }}</p>
</div>
{% endif %}
<header> <header>
{%- block navbar %} {%- block navbar %}
<nav> <nav>
{%- block navbar_header %} {%- block navbar_header %}
@@ -35,17 +40,11 @@
</span> </span>
</a> </a>
</div> </div>
<!--TODO: uncomment this once translation is on place--> {%- for item in current_menu.submenu('main').children|sort(attribute='order') if item.visible recursive %}
<!-- {%- for item in current_menu.submenu('main').children|sort(attribute='order') if item.visible recursive %}
<div class="two wide column main-menu-entry"> <div class="two wide column main-menu-entry">
<a href="{{ item.url }}">{{ item.text|safe }}</a> <a href="{{ item.url }}" class="no-decoration">{{ item.text|safe }}</a>
</div>
{%- endfor %} -->
<!--TODO: remove this once above is uncommented-->
<div class="two wide column main-menu-entry">
<a href="{{url_for('invenio_app_rdm_records.deposit_search')}}" class="no-decoration">{{_ ("Uploads")}}</a>
</div> </div>
{%- endfor %}
</div> </div>
<div id="margin-divider" class="ui divider main-menu-underline-line"> <div id="margin-divider" class="ui divider main-menu-underline-line">

View File

@@ -49,7 +49,7 @@
{% endif %} {% endif %}
{%- for r in records %} {%- for r in records %}
{%- set creation_date = r._created|from_isodatetime -%} {%- set creation_date = r.created|from_isodatetime -%}
{%- set record_url = url_for('invenio_app_rdm_records.record_detail', pid_value=r.id) %} {%- set record_url = url_for('invenio_app_rdm_records.record_detail', pid_value=r.id) %}
<article> <article>
@@ -134,7 +134,7 @@
<!--contact us--> <!--contact us-->
<div class="ui segment" style="padding-bottom: 10px;"> <div class="ui segment" style="padding-bottom: 10px;">
<h4>{{_ ("Need help?")}}</h4> <h4>{{_ ("Need help?")}}</h4>
{%- if config.INVENIO_THEME_TUGRAZ_CONTACT_FORM %} {%- if config.THEME_TUGRAZ_CONTACT_FORM %}
<div style="padding-bottom: 10px;"> <div style="padding-bottom: 10px;">
<a id="feedback-form" class="fluid ui button"> <a id="feedback-form" class="fluid ui button">
{{_ ("Contact us")}} {{_ ("Contact us")}}

View File

@@ -1,153 +1,205 @@
{# {#
Copyright (C) 2020-2021 CERN. Copyright (C) 2020-2021 CERN.
Copyright (C) 2020 Northwestern University. Copyright (C) 2020-2021 Northwestern University.
Copyright (C) 2021 TU Wien. Copyright (C) 2021 TU Wien.
Copyright (C) 2021 Graz University of Technology. 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 %} 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.
#}
{%- from "invenio_app_rdm/records/macros/files.html" import file_list_box, preview_file_box %} {%- extends config.BASE_TEMPLATE %}
{%- from "invenio_app_rdm/records/macros/detail.html" import show_detail %}
{%- from "invenio_app_rdm/records/macros/files.html" import file_list_box, preview_file_box %}
{%- set title = record.metadata.title -%} {%- from "invenio_app_rdm/records/macros/detail.html" import show_detail %}
{%- set metadata = record.metadata %}
{%- set title = record.metadata.title -%}
{%- block page_body %} {%- set metadata = record.metadata %}
<div class="banners">
{% if permissions is defined and permissions.can_edit %} {%- block page_body %}
<div class="ui warning flashed top-attached manage message"> <div class="banners">
<div class="ui container"> {% if is_preview %}
<div id="recordManagement" data-record='{{ record | tojson }}' data-permissions='{{ permissions | tojson }}'></div> <div class="ui info flashed top-attached manage message">
</div> <div class="ui container">
</div> <div class="ui relaxed grid">
{% endif %} <div class="column">
{% if not record.versions.is_latest %} <div class="row">
<div class="ui warning flashed top-attached manage message"> <div class="header">
<div class="ui container"> <i class="eye icon"></i> Preview
<div class="ui relaxed grid">
<div class="column">
<div class="row">
<p>
{% trans link_start=('<a href="' + record.links.latest_html + '"><b>')|safe, link_end='</b></a>'|safe %}
There is a {{ link_start }}newer version{{ link_end }} of the record available.
{% endtrans %}
</p>
</div> </div>
<p>
{% 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 %}
</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{% endif %}
</div> </div>
{% endif %}
{% if permissions is defined and permissions.can_edit and not is_preview %}
<div class="ui container"> <div class="ui warning flashed top-attached manage message">
<div class="ui relaxed grid"> <div class="ui container">
<div class="two column row top-padded"> <div id="recordManagement" data-record='{{ record | tojson }}' data-permissions='{{ permissions | tojson }}'></div>
<div class="eleven wide column"> </div>
{%- block record_body -%} </div>
{%- block record_header -%} {% endif %}
<div class="ui grid middle aligned"> {% if (not record.versions.is_latest and not is_preview) or (is_preview and not record.versions.is_latest_draft) %}
<div class="two column row"> <div class="ui warning flashed top-attached manage message">
<div class="left floated left aligned column"> <div class="ui container">
<span class="ui" title="Publication date">{{ record.ui.publication_date_l10n_long }}</span> <div class="ui relaxed grid">
<span class="label text-muted"> | Version {{ record.ui.version }}</span> <div class="column">
</div> <div class="row">
<div class="right floated right aligned column"> <p>
<span class="ui label small grey">{{ record.ui.resource_type }}</span> {% trans link_start=('<a href="' + record.links.latest_html + '"><b>')|safe, link_end='</b></a>'|safe %}
<!--TODO: Re-enable in next releases--> There is a {{ link_start }}newer version{{ link_end }} of the record available.
<!-- <span class="ui label small access-right {{ 'unlock' }}"> {% endtrans %}
<i class="icon {{ 'unlock' }}"></i>{{ _("Open Access") }}</span> --> </p>
</div>
</div>
</div> </div>
{%- endblock record_header -%} </div>
{%- block record_title -%} </div>
<h1>{{ metadata.title }}</h1> </div>
<p>{%- include "invenio_app_rdm/records/details/creators.html" %}</p> </div>
{%- endblock record_title -%} {% endif %}
{%- block record_content -%} </div>
<p>{%- include "invenio_app_rdm/records/details/contributors.html" %}</p>
{%- include "invenio_app_rdm/records/details/subjects.html" %} <div class="ui container">
<div class="top-padded"> <div class="ui relaxed grid">
{%- include "invenio_app_rdm/records/details/description.html" %} <div class="two column row top-padded">
</div> <div class="eleven wide column">
<div class="top-padded"> {% if record.access.record == 'restricted' %}
{%- include "invenio_app_rdm/records/details/licenses.html" %} <div class="ui {{ record.ui.access_status.message_class }} message">
</div> <strong><i class="{{ record.ui.access_status.icon }} icon"></i>{{ record.ui.access_status.title_l10n }}</strong> {{ record.ui.access_status.description_l10n }}
{%- endblock record_content -%} {% if record.access.embargo.reason %}
{# files #} <p>Reason: {{ record.access.embargo.reason }}</p>
{%- block record_files -%}
{%- if files is not none -%}
{%- if files.enabled and record|can_list_files %}
{%- set default_preview = files.default_preview %}
{%- set files = files|order_entries %}
{%- if files|has_previewable_files -%}
{%- set default_preview_file = files|select_preview_file(default_preview=default_preview) %}
{{ preview_file_box(default_preview_file, pid) }}
{%- endif -%}
{{ file_list_box(files, pid) }}
{% endif %} {% endif %}
{%- else -%}
{# TODO: come up with a proper display #}
<div>Sorry, the files are restricted!</div>
{%- endif -%}
{%- endblock record_files -%}
{%- block record_details -%}
{# More details #}
<div class="top-padded">
{%- include "invenio_app_rdm/records/details/details.html" %}
</div> </div>
{%- endblock record_details -%} {% endif %}
{%- block record_footer -%} {%- block record_body -%}
<div class="ui grid"> {%- block record_header -%}
<div class="two column row top-bottom-padded font-small"> <div class="ui grid middle aligned">
<div class="four wide column"> <div class="two column row">
<p><b>Upload information</b></p> <div class="left floated left aligned column">
</div> <span class="ui" title="Publication date">{{ record.ui.publication_date_l10n_long }}</span>
<div class="twelve wide column"> <span class="label text-muted"> | Version {{ record.ui.version }}</span>
<span class="label text-muted"> </div>
<b>Created:</b> {{ record.ui.created_date_l10n_long }} | <b>Modified:</b> {{ record.ui.updated_date_l10n_long }} <div class="right floated right aligned column">
</span> <span class="ui label small grey">{{ record.ui.resource_type }}</span>
<span class="ui label small access-status {{ record.ui.access_status.id }}" data-tooltip="{{ record.ui.access_status.description_l10n }}" data-inverted="">
{% if record.ui.access_status.icon %}<i class="icon {{ record.ui.access_status.icon }}"></i>{% endif %}
{{ record.ui.access_status.title_l10n }}
</span>
</div>
</div>
</div>
{%- endblock record_header -%}
{%- block record_title -%}
<h1>{{ metadata.title }}</h1>
<p>{%- include "invenio_app_rdm/records/details/creators.html" %}</p>
{%- endblock record_title -%}
{%- block record_content -%}
<p>{%- include "invenio_app_rdm/records/details/contributors.html" %}</p>
<p>{%- include "invenio_app_rdm/records/details/doi.html" %}</p>
{%- include "invenio_app_rdm/records/details/subjects.html" %}
<div class="top-padded">
{%- include "invenio_app_rdm/records/details/description.html" %}
</div>
<div class="top-padded">
{%- include "invenio_app_rdm/records/details/licenses.html" %}
</div>
{%- 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 #}
<div class="panel-spacing">
<div class="ui accordion panel {{ record.ui.access_status.id }}" id="preview" href="#collapsablePreview">
<div class="active title panel-heading {{ record.ui.access_status.id }}">
{{ _("Files") }}
<i class="angle down icon"></i>
</div>
<div id="collapsablePreview" class="active content">
<div class="ui {{ record.ui.access_status.message_class }} message file-box-message">
<i class="ui {{ record.ui.access_status.icon }} icon"></i><b>{{ record.ui.access_status.title_l10n }}</b>
<p>{{ record.ui.access_status.description_l10n }}</p>
{% if record.access.embargo.reason %}
<p>{{_("Reason")}}: {{record.access.embargo.reason}}</p>
{% endif%}
</div>
</div>
</div> </div>
</div> </div>
</div> {%- endif %}
{%- endblock record_footer -%} {%- endif %}
<!-- {%- block jump -%} {%- endblock record_files -%}
<div class="ui grid">
<div class="centered row" id="jump-btn"> {%- block record_details -%}
<a style="cursor: pointer;"> {# More details #}
<span class="ui button"> <div class="top-padded">
<i class="arrow alternate circle up outline icon"></i>Jump up</span> {%- include "invenio_app_rdm/records/details/details.html" %}
</a> </div>
{%- endblock record_details -%}
{%- block record_footer -%}
<div class="ui grid">
<div class="two column row top-bottom-padded font-small">
<div class="four wide column">
<p><b>Upload information</b></p>
</div>
<div class="twelve wide column">
<span class="label text-muted">
<b>Created:</b> {{ record.ui.created_date_l10n_long }} | <b>Modified:</b> {{ record.ui.updated_date_l10n_long }}
</span>
</div> </div>
</div> </div>
{%- endblock jump -%} -->
{%- endblock record_body %}
</div> </div>
<div class="five wide column"> {%- endblock record_footer -%}
{% block record_sidebar %} {%- block jump -%}
{%- include "invenio_app_rdm/records/details/side_bar.html" %} <div class="ui grid">
<div style="text-align: center;"> <div class="centered row" id="jump-btn">
{%- include "invenio_theme_tugraz/landingpage/doi.html" %} <a style="cursor: pointer;">
</div> <span class="ui button">
{% endblock record_sidebar %} <i class="arrow alternate circle up outline icon"></i>Jump up</span>
</a>
</div>
</div> </div>
{%- endblock jump -%}
{%- endblock record_body %}
</div>
<div class="five wide column">
{% block record_sidebar %}
{%- include "invenio_app_rdm/records/details/side_bar.html" %}
{% endblock record_sidebar %}
</div> </div>
</div> </div>
</div> </div>
</div>
{%- endblock page_body %}
{%- endblock page_body %}
{%- block javascript %}
{{ super() }} {%- block javascript %}
{{ webpack['invenio-app-rdm-landing-page.js'] }} {{ super() }}
{# Communities management -- TODO include again when communities are ready #} {{ webpack['invenio-app-rdm-landing-page.js'] }}
{# {{ webpack['invenio-communities-records.js'] }} #} {# Communities management -- TODO include again when communities are ready #}
{{ webpack['previewer_theme.js'] }} {# {{ webpack['invenio-communities-records.js'] }} #}
{%- endblock javascript %} {{ webpack['previewer_theme.js'] }}
{%- endblock javascript %}

View File

@@ -1,43 +0,0 @@
{#
Copyright (C) 2020 CERN.
Copyright (C) 2020 Northwestern University.
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.
#}
{% if metadata.identifiers %}
{% for identifier in metadata.identifiers %}
{% if identifier.scheme == 'doi' %}
{%- set id_doi = identifier.identifier %}
<dd>
{% if id_doi %}
<span class="get-badge" data-toggle="tooltip" data-placement="bottom" style="cursor: pointer;"
title="Get the DOI badge!">
<img id="record-doi-badge" data-target="[data-modal='{{ id_doi }}']"
src="{{ url_for('invenio_formatter_badges.badge', title='DOI', value=id_doi, ext='svg') }}" alt="{{ id_doi }}">
</img>
</span>
<div id="doi-modal" class="ui modal fade badge-modal" data-modal="{{ id_doi }}">
<div class="header">RDM DOI Badge</div>
<div class="content">
<h4>
<small>DOI</small>
</h4>
<h4>
<pre>{{ id_doi }}</pre>
</h4>
{% from "semantic-ui/invenio_formatter/macros/badges.html" import badges_formats_list %}
{{ badges_formats_list(url_for('invenio_formatter_badges.badge', title='DOI', value=id_doi, ext='svg', _external=True, _scheme='https'), id_doi|pid_url(scheme='doi')) }}
</div>
</div>
{% else %}
{{ _("No minted DOI") }}
{% endif %}
</dd>
{% endif %}
{% endfor %}
{% endif %}

View File

@@ -1,107 +0,0 @@
{#
Copyright (C) 2020 CERN.
Copyright (C) 2020 Northwestern University.
Copyright (C) 2020 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.
origin: invenio-rdm-records/record_landing_page.html
#}
{%- extends config.BASE_TEMPLATE %}
{%- block css %}
{{ super() }}
{%- endblock css %}
{%- from "invenio_app_rdm/landing_page/macros/files.html" import file_list_box, preview_file_box %}
{%- from "invenio_app_rdm/landing_page/macros/detail.html" import show_detail %}
{%- set record = record|dereference_record|serialize_ui %}
{%- set metadata = record.metadata %}
{%- block page_body %}
<div class="ui container">
<div class="ui padded relaxed grid">
<div class="two column row">
<div class="ten wide column">
{%- block record_body %}
<div class="badges">
<span class="ui label record-version" title="{{_('Publication date')}}">
{{ record.metadata.publication_date }} {{ '(' ~ record.metadata.version ~ ')' if record.metadata.version }}
</span>
<!--Resource type badge-->
<span class="ui label teal" title="{{_('Resource type')}}">
{{record.ui.resource_type }}
</span>
</div>
<h1 style="margin-top: -6px">{{ record.metadata.title }}</h1>
<p>{%- include "invenio_app_rdm/landing_page/details/creators.html" %}</p>
<p>{%- include "invenio_app_rdm/landing_page/details/contributors.html" %}</p>
<div class="ui grid" style="margin-bottom: 10px;">
<div class="two column row">
<div class="left floated column">
{%- for s in record.metadata.subjects %}
<div class="ui tiny label">{{s.subject}}</div>
{%- endfor %}
<div style="margin-top: 5px;">
<b>Created:</b> {{ record.ui.created_date_l10n_long }} | <b>Modified:</b> {{ record.ui.updated_date_l10n_long }}
</div>
</div>
<div class="right floated column">
<span class="ui label access-right">
<i class="icon lock open"></i>
{{ record.access.access_right | make_dict_like('access_right') | vocabulary_title('access_right') }}
{%- for right in record.metadata.rights %}
<a target="_blank" href="{{right.url}}">{{ '(' ~ right.identifier ~ ')' }}</a>
{%- endfor %}
</span>
</div>
</div>
</div>
{%- include "invenio_app_rdm/landing_page/details/description.html" %}
{# files #}
{%- if record.files and record | can_list_files %}
{%- set files = record.files | make_files_preview_compatible %}
{%- set default_preview_file = files | select_preview_file(default_preview=record.files.default_preview) %}
{{ preview_file_box(default_preview_file, pid) }}
{{ file_list_box(files, pid) }}
{% endif %}
{%- endblock record_body %}
</div>
<div class="six wide column">
<div id="recordManagement"
class="ui container"
data-recid='{{ record["id"] | tojson }}'>
</div>
{% block sidebar %}
{%- include "invenio_app_rdm/landing_page/details/side_bar.html" %}
{% endblock sidebar %}
</div>
</div>
</div>
</div>
{%- endblock page_body %}
{%- block javascript %}
{{ super() }}
{{ webpack['invenio-app-rdm-records.js'] }}
{# Communities management #}
{{ webpack['invenio-communities-records.js'] }}
{{ webpack['previewer_theme.js'] }}
{{ webpack['invenio-app-rdm-record-management.js'] }}
{%- endblock javascript %}

View File

@@ -1,82 +0,0 @@
{#
Copyright (C) 2020 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.
#}
{%- extends config.BASE_TEMPLATE %}
{%- block javascript %}
{{ super() }}
{{ webpack['invenio-theme-tugraz-search-app.js'] }}
{%- endblock %}
{%- block page_body %}
<div data-invenio-search-config='{
"aggs": [
{
"aggName": "access_right",
"field": "access_right",
"title": "Access Right"
},
{
"aggName": "resource_type",
"field": "resource_type.type",
"title": "Resource Type",
"childAgg": {
"aggName": "subtype",
"field": "resource_type.subtype",
"title": "Resource Type"
}
}
],
"appId": "rdm-search",
"initialQueryState": {
"hiddenParams": null,
"size": 10
},
"layoutOptions": {
"gridView": false,
"listView": true
},
"paginationOptions": {
"defaultValue": 10,
"resultsPerPage": [
{
"text": "10",
"value": 10
},
{
"text": "20",
"value": 20
},
{
"text": "50",
"value": 50
}
]
},
"searchApi": {
"axios": {
"headers": {
"Accept": "application/vnd.inveniordm.v1+json"
},
"url": "/api/records",
"withCredentials": true
}
},
"sortOrderDisabled": true,
"sortOptions": [
{
"sortBy": "bestmatch",
"text": "Best match"
},
{
"sortBy": "newest",
"text": "Newest"
}
]
}'></div>
{%- endblock page_body %}

View File

@@ -1,5 +1,5 @@
# German translations for invenio-theme-tugraz. # German translations for invenio-theme-tugraz.
# Copyright (C) 2020 mojib wali # Copyright (C) 2020-2021 Graz University of Technology
# This file is distributed under the same license as the # This file is distributed under the same license as the
# invenio-theme-tugraz project. # invenio-theme-tugraz project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020. # FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: invenio-theme-tugraz 1.0.4\n" "Project-Id-Version: invenio-theme-tugraz 1.0.4\n"
"Report-Msgid-Bugs-To: mojib.wali@tugraz.at\n" "Report-Msgid-Bugs-To: mojib.wali@tugraz.at\n"
"POT-Creation-Date: 2021-03-19 10:53+0100\n" "POT-Creation-Date: 2021-04-26 09:08+0200\n"
"PO-Revision-Date: 2020-10-06 10:27+0200\n" "PO-Revision-Date: 2020-10-06 10:27+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de\n" "Language: de\n"
@@ -19,16 +19,16 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.9.0\n" "Generated-By: Babel 2.9.0\n"
#: invenio_theme_tugraz/config.py:14 invenio_theme_tugraz/config.py:54 #: invenio_theme_tugraz/config.py:14 invenio_theme_tugraz/config.py:63
msgid "TU Graz Repository" msgid "TU Graz Repository"
msgstr "TU Graz Repository" msgstr "TU Graz Repository"
#: invenio_theme_tugraz/config.py:57 #: invenio_theme_tugraz/config.py:66
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:30 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:30
msgid "Repository" msgid "Repository"
msgstr "Repository" msgstr "Repository"
#: invenio_theme_tugraz/config.py:80 #: invenio_theme_tugraz/config.py:91
msgid "German" msgid "German"
msgstr "Deutsche" msgstr "Deutsche"
@@ -46,8 +46,8 @@ msgid ""
"your research is stored safely for the future in TU Graz library for as " "your research is stored safely for the future in TU Graz library for as "
"long as TU Graz library exists." "long as TU Graz library exists."
msgstr "" msgstr ""
"Ihre Forschung wird für die Zukunft sicher in der Bibliothek der TU Graz " "Ihre Forschung ist in der Bibliothek der TU Graz für die Zukunft "
"gespeichert als solange die Bibliothek TU Graz existiert." "gespeichert,solange die Bibliothek der TU Graz existiert."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:4 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:4
msgid "Trusted" msgid "Trusted"
@@ -58,8 +58,8 @@ msgid ""
"built and operated by CERN and OpenAIRE to ensure that everyone can join " "built and operated by CERN and OpenAIRE to ensure that everyone can join "
"in Open Science." "in Open Science."
msgstr "" msgstr ""
"Gebaut und betrieben von CERN und OpenAIRE; um sicherzugehen, dass jedeR " "Aufgebaut und betrieben von CERN und OpenAIRE, um sicherzustellen, dass "
"Zugang zu Open Science hat" "jeder an Open Science teilnehmen kann."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:5 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:5
msgid "Citeable" msgid "Citeable"
@@ -70,8 +70,8 @@ msgid ""
"every upload is assigned a Digital Object Identifier (DOI), to make them " "every upload is assigned a Digital Object Identifier (DOI), to make them "
"citable and trackable." "citable and trackable."
msgstr "" msgstr ""
"Jeder Upload erhält eine DOI um sicherzustellen,dass er zitierbar und " "Jeder Upload wird mit einem Digital Object Identifier (DOI) versehen,um "
"auffindbar ist" "ihn zitierfähig und nachverfolgbar zu"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:6 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:6
msgid "No waiting time" msgid "No waiting time"
@@ -95,7 +95,7 @@ msgid ""
" via our restricted access mode." " via our restricted access mode."
msgstr "" msgstr ""
"Teilen Sie z.B. anonymisierte klinische Studiendaten nur mit " "Teilen Sie z.B. anonymisierte klinische Studiendaten nur mit "
"medizinischem Fachpersonalüber unseren eingeschränkten Zugriffsmodus." "medizinischem Fachpersonal über unseren eingeschränkten Zugriffsmodus."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:8 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:8
msgid "Versioning" msgid "Versioning"
@@ -103,7 +103,7 @@ msgstr "Versionierung"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:8 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:8
msgid "Easily update your dataset with our versioning feature." msgid "Easily update your dataset with our versioning feature."
msgstr "Einfaches Updaten ihrer Datensätze mit unserere Versionierung." msgstr "Einfaches Updaten ihrer Datensätze mit unserer Versionierung."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:9 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/benefits.html:9
msgid "Usage statisics" msgid "Usage statisics"
@@ -113,79 +113,101 @@ msgstr "Nutzungsstatistiken"
msgid "All uploads display standards compliant usage statistics" msgid "All uploads display standards compliant usage statistics"
msgstr "Alle Uploads entsprechen den Standards der Nutzungsstatistiken." msgstr "Alle Uploads entsprechen den Standards der Nutzungsstatistiken."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:33 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:34
msgid "Documentation"
msgstr "Dokumentation"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:39
msgid "Reference Guide"
msgstr "Handbuch"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:44
msgid "Data Protection"
msgstr "Datenschutzerklärung"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:49
msgid "Terms and Conditions"
msgstr "Nutzungsbedingungen"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:53
msgid "Impressum" msgid "Impressum"
msgstr "Imprint" msgstr "Imprint"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:37 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:57
msgid "Data protection"
msgstr "Datenschutzerklärung"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:41
msgid "Feedback" msgid "Feedback"
msgstr "Feedback" msgstr "Feedback"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:50 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:66
msgid "Features" msgid "Features"
msgstr "Features" msgstr "Features"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:52 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:68
msgid "Scalability" msgid "Scalability"
msgstr "Skalierbarkeit" msgstr "Skalierbarkeit"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:54 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:70
msgid "Institutional integration" msgid "Institutional integration"
msgstr "Institutionelle Einbindung" msgstr "Institutionelle Einbindung"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:56 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:72
msgid "Next Generation Repository" msgid "Next Generation Repository"
msgstr "Repositorium der nächsten Generation" msgstr "Repositorium der nächsten Generation"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:59 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:75
msgid "Repository Profiles" msgid "Repository Profiles"
msgstr "Repositorienprofile" msgstr "Repositorienprofile"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:61 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:77
msgid "Resilient" msgid "Resilient"
msgstr "Resilient, widerstandsfähig" msgstr "Resilient, widerstandsfähig"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:68 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:84
msgid "Connected Services" msgid "Connected Services"
msgstr "Verbundene Services " msgstr "Verbundene Services "
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:72 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:88
msgid "PURE" msgid "PURE"
msgstr "PURE" msgstr "PURE"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:75 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:91
msgid "CampusOnline" msgid "CampusOnline"
msgstr "CampusOnline" msgstr "CampusOnline"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:78 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:94
msgid "Research Data Management" msgid "Research Data Management"
msgstr "Forschungsdatenmanagement" msgstr "Forschungsdatenmanagement"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:85 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:101
msgid "Accessibility" msgid "Accessibility"
msgstr "Barrierefreiheit" msgstr "Barrierefreiheit"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:86 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:102
msgid "Tipp:" msgid "Tipp:"
msgstr "" msgstr "Tipp"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:86 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:102
msgid "Use Ctrl + and Crtl -" msgid "Use Ctrl + and Crtl -"
msgstr "Verwenden Sie Strg+ und Strg-" msgstr "Verwenden Sie Strg+ und Strg-"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:86 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:102
msgid "to change the font size." msgid "to change the font size."
msgstr "Um die Schriftgröße zu ändern." msgstr "Um die Schriftgröße zu ändern."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:34 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/accounts_base.html:61
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:11
msgid "Test Instance"
msgstr "Testumgebung"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/accounts_base.html:62
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:12
msgid "This is the test instance of the TU Graz Repository."
msgstr "Dies ist die Testumgebung des TU Graz Repositorys."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:39
msgid "Home" msgid "Home"
msgstr "Startseite" msgstr "Startseite"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:47 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:52
msgid "Uploads" msgid "Uploads"
msgstr "Hochladen" msgstr "Hochladen"
@@ -233,11 +255,11 @@ msgstr "Kontaktiere uns"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:145 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:145
msgid "prioritizes all Recent uploads." msgid "prioritizes all Recent uploads."
msgstr "Reiht die neuesten Uploads vor." msgstr "reiht die neuesten Uploads vor."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:148 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:148
msgid "We can help with:" msgid "We can help with:"
msgstr "Wir können helfen bei:" msgstr "Dabei können wir helfen:"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:153 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:153
msgid "Uploading your research data, software, preprints, etc." msgid "Uploading your research data, software, preprints, etc."
@@ -245,7 +267,7 @@ msgstr "Hochladen Ihrer Forschungsdaten, Software, Preprints usw."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:154 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:154
msgid "One-on-one with" msgid "One-on-one with"
msgstr "Eins-zu-eins mit" msgstr "One-on-one mit"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:154 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:154
msgid "supporters." msgid "supporters."
@@ -253,7 +275,7 @@ msgstr "Unterstützern"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:155 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:155
msgid "Quota increases beyond our default policy." msgid "Quota increases beyond our default policy."
msgstr "Erhöhung Ihres Kontingents über das vertraglich Zugesicherte hinaus." msgstr "Quota Erhöhungen über unsere Standard Policy hinaus."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:156 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/index.html:156
msgid "Scripts for automated uploading of larger datasets." msgid "Scripts for automated uploading of larger datasets."
@@ -285,8 +307,8 @@ msgid "TECHNOLOGY"
msgstr "LEIDENSCHAFT" msgstr "LEIDENSCHAFT"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/header_login.html:8 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/header_login.html:8
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:61 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:59
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:81 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:80
msgid "Sign up" msgid "Sign up"
msgstr "Registrierung" msgstr "Registrierung"
@@ -302,26 +324,26 @@ msgstr "Ausloggen"
msgid "Log in to Repository" msgid "Log in to Repository"
msgstr "Anmelden" msgstr "Anmelden"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:30 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:29
#, python-format #, python-format
msgid " Log in with %(type)s" msgid " Log in with %(type)s"
msgstr "Einloggen mit" msgstr "Einloggen mit"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:35 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:33
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:55 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:54
msgid "Or" msgid "Or"
msgstr "Oder" msgstr "Oder"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:47 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:45
msgid "Log In" msgid "Log In"
msgstr "Einloggen" msgstr "Einloggen"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:60 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:58
#, python-format #, python-format
msgid "New to %(sitename)s?" msgid "New to %(sitename)s?"
msgstr "Neu im %(sitename)s?" msgstr "Neu im %(sitename)s?"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:70 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:68
msgid "Forgot password?" msgid "Forgot password?"
msgstr "Passwort vergessen" msgstr "Passwort vergessen"
@@ -363,7 +385,7 @@ msgid ""
"the Graz University of Technology." "the Graz University of Technology."
msgstr "Gebaut basierend auf Expertise derTU Graz im Bereich Data Management" msgstr "Gebaut basierend auf Expertise derTU Graz im Bereich Data Management"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:51 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:50
msgid "Sign up with TUGRAZ " msgid "Sign up with TUGRAZ "
msgstr "Mit Ihrem TUGonline-Account einloggen" msgstr "Mit Ihrem TUGonline-Account einloggen"
@@ -375,7 +397,18 @@ msgstr "RDM DOI Abzeichen"
msgid "DOI" msgid "DOI"
msgstr "DOI" msgstr "DOI"
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html:44 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html:35
#, python-format
msgid ""
"\n"
" There is a %(link_start)snewer version%(link_end)s of the "
"record available.\n"
" "
msgstr ""
"Es ist eine %(link_start)sneuere Version%(link_end)s des Eintrags "
"verfügbar."
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html:64
msgid "Open Access" msgid "Open Access"
msgstr "" msgstr ""
@@ -392,3 +425,6 @@ msgstr ""
#~ " " #~ " "
#~ msgstr "Hochgeladen am %(date)s\n" #~ msgstr "Hochgeladen am %(date)s\n"
#~ msgid "Handbook"
#~ msgstr "Handbuch"

View File

@@ -1,5 +1,5 @@
# Translations template for invenio-theme-tugraz. # Translations template for invenio-theme-tugraz.
# Copyright (C) 2021 mojib wali # Copyright (C) 2021 Graz University of Technology
# This file is distributed under the same license as the # This file is distributed under the same license as the
# invenio-theme-tugraz project. # invenio-theme-tugraz project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021. # FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
@@ -7,9 +7,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: invenio-theme-tugraz 1.9.3\n" "Project-Id-Version: invenio-theme-tugraz 2.1.0\n"
"Report-Msgid-Bugs-To: mojib.wali@tugraz.at\n" "Report-Msgid-Bugs-To: mojib.wali@tugraz.at\n"
"POT-Creation-Date: 2021-03-19 10:53+0100\n" "POT-Creation-Date: 2021-04-26 09:08+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,16 +18,16 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.9.0\n" "Generated-By: Babel 2.9.0\n"
#: invenio_theme_tugraz/config.py:14 invenio_theme_tugraz/config.py:54 #: invenio_theme_tugraz/config.py:14 invenio_theme_tugraz/config.py:63
msgid "TU Graz Repository" msgid "TU Graz Repository"
msgstr "" msgstr ""
#: invenio_theme_tugraz/config.py:57 #: invenio_theme_tugraz/config.py:66
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:30 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:30
msgid "Repository" msgid "Repository"
msgstr "" msgstr ""
#: invenio_theme_tugraz/config.py:80 #: invenio_theme_tugraz/config.py:91
msgid "German" msgid "German"
msgstr "" msgstr ""
@@ -102,79 +102,101 @@ msgstr ""
msgid "All uploads display standards compliant usage statistics" msgid "All uploads display standards compliant usage statistics"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:33 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:34
msgid "Documentation"
msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:39
msgid "Reference Guide"
msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:44
msgid "Data Protection"
msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:49
msgid "Terms and Conditions"
msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:53
msgid "Impressum" msgid "Impressum"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:37 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:57
msgid "Data protection"
msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:41
msgid "Feedback" msgid "Feedback"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:50 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:66
msgid "Features" msgid "Features"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:52 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:68
msgid "Scalability" msgid "Scalability"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:54 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:70
msgid "Institutional integration" msgid "Institutional integration"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:56 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:72
msgid "Next Generation Repository" msgid "Next Generation Repository"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:59 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:75
msgid "Repository Profiles" msgid "Repository Profiles"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:61 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:77
msgid "Resilient" msgid "Resilient"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:68 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:84
msgid "Connected Services" msgid "Connected Services"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:72 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:88
msgid "PURE" msgid "PURE"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:75 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:91
msgid "CampusOnline" msgid "CampusOnline"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:78 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:94
msgid "Research Data Management" msgid "Research Data Management"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:85 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:101
msgid "Accessibility" msgid "Accessibility"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:86 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:102
msgid "Tipp:" msgid "Tipp:"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:86 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:102
msgid "Use Ctrl + and Crtl -" msgid "Use Ctrl + and Crtl -"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:86 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/footer.html:102
msgid "to change the font size." msgid "to change the font size."
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:34 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/accounts_base.html:61
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:11
msgid "Test Instance"
msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/accounts_base.html:62
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:12
msgid "This is the test instance of the TU Graz Repository."
msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:39
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:47 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/header.html:52
msgid "Uploads" msgid "Uploads"
msgstr "" msgstr ""
@@ -273,8 +295,8 @@ msgid "TECHNOLOGY"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/header_login.html:8 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/header_login.html:8
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:61 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:59
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:81 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:80
msgid "Sign up" msgid "Sign up"
msgstr "" msgstr ""
@@ -290,26 +312,26 @@ msgstr ""
msgid "Log in to Repository" msgid "Log in to Repository"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:30 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:29
#, python-format #, python-format
msgid " Log in with %(type)s" msgid " Log in with %(type)s"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:35 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:33
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:55 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:54
msgid "Or" msgid "Or"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:47 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:45
msgid "Log In" msgid "Log In"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:60 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:58
#, python-format #, python-format
msgid "New to %(sitename)s?" msgid "New to %(sitename)s?"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:70 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/login_user.html:68
msgid "Forgot password?" msgid "Forgot password?"
msgstr "" msgstr ""
@@ -347,7 +369,7 @@ msgid ""
"the Graz University of Technology." "the Graz University of Technology."
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:51 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/accounts/register_user.html:50
msgid "Sign up with TUGRAZ " msgid "Sign up with TUGRAZ "
msgstr "" msgstr ""
@@ -359,7 +381,16 @@ msgstr ""
msgid "DOI" msgid "DOI"
msgstr "" msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html:44 #: invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html:35
#, python-format
msgid ""
"\n"
" There is a %(link_start)snewer version%(link_end)s of the "
"record available.\n"
" "
msgstr ""
#: invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html:64
msgid "Open Access" msgid "Open Access"
msgstr "" msgstr ""

View File

@@ -12,4 +12,4 @@ This file is imported by ``invenio_theme_tugraz.__init__``,
and parsed by ``setup.py``. and parsed by ``setup.py``.
""" """
__version__ = "2.0.1" __version__ = "3.0.0"

View File

@@ -14,24 +14,16 @@ from typing import Dict
import requests import requests
from elasticsearch_dsl.utils import AttrDict from elasticsearch_dsl.utils import AttrDict
from flask import Blueprint, current_app, g, render_template, request from flask import Blueprint, current_app, g, redirect, render_template, request, url_for
from flask_babelex import get_locale
from flask_login import login_required from flask_login import login_required
from flask_menu import current_menu from flask_menu import current_menu
from invenio_app_rdm.records_ui.views.decorators import ( from invenio_app_rdm.records_ui.views.decorators import (
pass_draft, pass_is_preview,
pass_record,
pass_record_files, pass_record_files,
service, 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.proxies import current_rdm_records
from invenio_rdm_records.resources.config import RDMDraftFilesResourceConfig
from invenio_rdm_records.resources.serializers import UIJSONSerializer from invenio_rdm_records.resources.serializers import UIJSONSerializer
from invenio_rdm_records.services import RDMDraftFilesService
from .search import FrontpageRecordsSearch from .search import FrontpageRecordsSearch
@@ -49,9 +41,10 @@ def ui_blueprint(app):
blueprint.add_url_rule(routes["index"], view_func=index) blueprint.add_url_rule(routes["index"], view_func=index)
blueprint.add_url_rule(routes["comingsoon"], view_func=comingsoon) blueprint.add_url_rule(routes["comingsoon"], view_func=comingsoon)
blueprint.add_url_rule(routes["deposit_create"], view_func=deposit_create) blueprint.add_url_rule(routes["guide"], view_func=guide)
blueprint.add_url_rule(routes["terms"], view_func=terms)
blueprint.add_url_rule(routes["gdpr"], view_func=gdpr)
blueprint.add_url_rule(routes["record_detail"], view_func=record_detail) blueprint.add_url_rule(routes["record_detail"], view_func=record_detail)
blueprint.add_url_rule(routes["getdoi"], view_func=retrieve_doi, methods=["POST"])
@blueprint.app_template_filter("make_dict_like") @blueprint.app_template_filter("make_dict_like")
def make_dict_like(value: str, key: str) -> Dict[str, str]: def make_dict_like(value: str, key: str) -> Dict[str, str]:
@@ -82,101 +75,43 @@ def comingsoon():
return render_template("invenio_theme_tugraz/comingsoon.html") return render_template("invenio_theme_tugraz/comingsoon.html")
def get_datacite_details(): def guide():
"""Application credentials for DOI.""" """TUGraz_Repository_Guide."""
prefix = environ.get("INVENIO_DATACITE_PREFIX") locale = get_locale()
suffix = environ.get("INVENIO_DATACITE_SUFFIX") return redirect(url_for('static',
filename=f'documents/TUGraz_Repository_Guide_01_{locale}.pdf',
details = { _external=True))
"datacite_prefix": prefix,
"datacite_suffix": suffix,
}
return details
@login_required def terms():
def retrieve_doi(): """Terms_And_Conditions."""
"""Retrieve DOI from datacite API.""" locale = get_locale()
doi_metadata = request.get_json() return redirect(url_for('static',
filename=f'documents/TUGraz_Repository_Terms_And_Conditions_{locale}.pdf',
url = environ.get("INVENIO_DATACITE_URL") _external=True))
username = environ.get("INVENIO_DATACITE_UNAME")
password = environ.get("INVENIO_DATACITE_PASS")
doi_response = requests.post(
url,
auth=(username, password),
json=doi_metadata,
)
response_data = {"code": doi_response.status_code}
try:
doi_response.raise_for_status()
response_data["data"] = doi_response.json()
except requests.exceptions.RequestException:
response_data["errors"] = doi_response.json()["errors"]
return response_data, response_data["code"]
# def gdpr():
# TODO: change this override behaviour once """General_Data_Protection_Rights."""
# PR is merged: locale = get_locale()
# https://github.com/inveniosoftware/invenio-app-rdm/pull/638 return redirect(url_for('static',
# filename=f'documents/TUGraz_Repository_General_Data_Protection_Rights_{locale}.pdf',
_external=True))
@login_required @pass_is_preview
def deposit_create(): @pass_record_or_draft
"""Create a new deposit."""
forms_config = get_form_config(createUrl=("/api/records"))
forms_config["data_cite"] = get_datacite_details()
return render_template(
"invenio_theme_tugraz/deposit/deposit.html",
forms_config=forms_config,
searchbar_config=dict(searchUrl=get_search_url()),
record=new_record(),
files=dict(default_preview=None, enabled=True, entries=[], links={}),
)
@login_required
@pass_draft
def deposit_edit(draft=None, pid_value=None):
"""Edit an existing deposit."""
files_list = current_rdm_records.draft_files_service.list_files(
id_=pid_value,
identity=g.identity,
links_config=RDMDraftFilesResourceConfig.links_config,
)
serializer = UIJSONSerializer()
record = serializer.serialize_object_to_dict(draft.to_dict())
forms_config = get_form_config(apiUrl=f"/api/records/{pid_value}/draft")
forms_config["data_cite"] = get_datacite_details()
return render_template(
"invenio_theme_tugraz/deposit/deposit.html",
forms_config=forms_config,
record=record,
files=files_list.to_dict(),
searchbar_config=dict(searchUrl=get_search_url()),
permissions=draft.has_permissions_to(['new_version'])
)
@pass_record
@pass_record_files @pass_record_files
def record_detail(record=None, files=None, pid_value=None): def record_detail(record=None, files=None, pid_value=None, is_preview=False):
"""Record detail page (aka landing page).""" """Record detail page (aka landing page)."""
files_dict = None if files is None else files.to_dict() files_dict = None if files is None else files.to_dict()
return render_template( return render_template(
"invenio_theme_tugraz/landingpage/detail.html", "invenio_theme_tugraz/landingpage/detail.html",
record=UIJSONSerializer().serialize_object_to_dict(record.to_dict()), record=UIJSONSerializer().serialize_object_to_dict(record.to_dict()),
pid=pid_value, pid=pid_value,
files=files_dict, files=files_dict,
permissions=record.has_permissions_to(['edit', 'new_version']), permissions=record.has_permissions_to(['edit', 'new_version', 'manage',
'update_draft', 'read_files']),
is_preview=is_preview,
) )

View File

@@ -17,31 +17,10 @@ theme = WebpackThemeBundle(
entry={ entry={
"invenio-theme-tugraz-theme": "./less/invenio_theme_tugraz/theme.less", "invenio-theme-tugraz-theme": "./less/invenio_theme_tugraz/theme.less",
"invenio-theme-tugraz-js": "./js/invenio_theme_tugraz/theme.js", "invenio-theme-tugraz-js": "./js/invenio_theme_tugraz/theme.js",
"invenio-theme-tugraz-search-app": "./js/invenio_theme_tugraz/search/index.js", # "invenio-theme-tugraz-search-app": "./js/invenio_theme_tugraz/search/index.js",
# overrides RDM deposit form
'invenio-theme-tugraz-rdm-deposit': './js/invenio_theme_tugraz/deposit/index.js',
}, },
dependencies={ dependencies={
# Add your dependencies
# required for RDM deposit form
# keep in sync
"@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.12.0',
'react-invenio-forms': '^0.6.3',
'react-dropzone': "^11.0.3",
'yup': '^0.27.0',
'@ckeditor/ckeditor5-build-classic': '^16.0.0',
'@ckeditor/ckeditor5-react': '^2.1.0',
# datacite - rest api plugin
'datacite-rest': '^0.1.7',
}, },
) )
}, },

View File

@@ -24,7 +24,7 @@ add_ignore = D401
directory = invenio_theme_tugraz/translations/ directory = invenio_theme_tugraz/translations/
[extract_messages] [extract_messages]
copyright_holder = mojib wali copyright_holder = Graz University of Technology
msgid_bugs_address = mojib.wali@tugraz.at msgid_bugs_address = mojib.wali@tugraz.at
mapping-file = babel.ini mapping-file = babel.ini
output-file = invenio_theme_tugraz/translations/messages.pot output-file = invenio_theme_tugraz/translations/messages.pot

View File

@@ -56,11 +56,7 @@ install_requires = [
"Flask-WebpackExt>=1.0.0", "Flask-WebpackExt>=1.0.0",
"invenio-assets>=1.2.0", "invenio-assets>=1.2.0",
"invenio-i18n>=1.2.0", "invenio-i18n>=1.2.0",
"elasticsearch_dsl>=7.2.1", "invenio_config_tugraz>=0.5.8",
"invenio_search>=1.4.0,<2.0.0",
"invenio_config_tugraz>=0.5.1",
# keep this package updated.
"invenio_app_rdm==2.0.1",
] ]
packages = find_packages() packages = find_packages()
@@ -79,7 +75,7 @@ setup(
long_description=readme + "\n\n" + history, long_description=readme + "\n\n" + history,
keywords="invenio, theme, invenioRDM, TU-Graz, Graz University of Technology, statistics", keywords="invenio, theme, invenioRDM, TU-Graz, Graz University of Technology, statistics",
license="MIT", license="MIT",
author="mojib wali", author="Graz University of Technology",
author_email="mojib.wali@tugraz.at", author_email="mojib.wali@tugraz.at",
url="https://github.com/tu-graz-library/invenio-theme-tugraz", url="https://github.com/tu-graz-library/invenio-theme-tugraz",
packages=packages, packages=packages,