Compare commits

...

5 Commits

Author SHA1 Message Date
Mojib Wali
d17b83b67f v1.7.0 2021-03-01 18:47:36 +01:00
rekt-hard
2b60954fe4 modification: add theming variables (#152) 2021-03-01 18:33:47 +01:00
Mojib Wali
ee94d72b65 global: required changes for feb release (#155)
* disabled search and landingpage override
* search query modified
* routes: injecting routes to override
2021-03-01 16:10:28 +01:00
Christoph Ladurner
5d39ad5fdd Merge pull request #154 from rekt-hard/bugfix_record-name-access
bugfix(*): fix record creators name access
2021-02-23 09:48:24 +01:00
David Eckhard
07e205f04c bugfix(*): fix record creators name access
access name via creator.person_or_org.name.
2021-02-10 10:01:39 +01:00
24 changed files with 254 additions and 159 deletions

View File

@@ -8,4 +8,3 @@
$navbar_background_image: unset;
$navbar_background_color: #ffffff;

View File

@@ -94,7 +94,7 @@ const Creator = ({creator}) => {
return (
<div className="creator">
<Identifiers creator={creator}/>
<span className="text-muted">{creator.name}</span>
<span className="text-muted">{creator.person_or_org.name}</span>
</div>
);
};

View File

@@ -13,68 +13,68 @@
#login-tug-logo {
& g {
fill: #e4154b;
fill: @tugrazRed;
}
}
#login-tug-logo:hover {
& g {
fill: #231f20;
fill: @tugrazBlack;
}
}
.accounts-link {
margin: 5%;
color: #fff;
border: 1px solid #fff;
color: @primaryLink;
border: 1px solid @primaryLink;
background-color: transparent;
}
.accounts-link :hover {
font-size: smaller !important;
color: white;
background-color: #000000 !important;
color: @primaryLink;
background-color: @primaryLinkHoverBackground !important;
}
.tu-button-style button {
cursor: pointer;
border: 1px solid #fff;
border: 1px solid @primaryButton;
background-color: transparent;
height: 29px;
color: #fff;
color: @primaryButton;
font-family: "Source Sans Pro";
font-weight: 300;
font-size: 16px;
}
.tu-button-style button:hover {
cursor: pointer;
color: white;
background-color: #000000 !important;
color: @primaryButton;
background-color: @primaryButtonHoverBackground !important;
}
.form-accounts {
margin: 15%;
text-align: left !important;
& i {
color: #fff !important;
color: @primaryFormAccounts !important;
}
& label {
display: flex !important;
font-weight: 300 !important;
color: white !important;
color: @primaryFormAccounts !important;
}
& input {
border: 0px none !important;
padding: 0px !important;
border-bottom: 1px solid white !important;
border-bottom: 1px solid @primaryFormAccounts !important;
background-color: transparent !important;
color: white !important;
color: @primaryFormAccounts !important;
border-radius: 0 !important;
width: 100% !important;
}
& input::placeholder {
opacity: 1 !important;
color: silver !important;
color: @formAccountsInputPlaceholder !important;
}
& th {
display: block;
@@ -85,7 +85,7 @@
}
.field > input::selection {
background: #50a2ce;
background: @fieldInputSelectionBackground;
}
.accounts-header {
@@ -96,7 +96,7 @@
login and sign-up pages form background color
*/
.sign-form {
background-color: #245b78 !important;
background-color: @signInBackground !important;
padding: 0 !important;
height: 100%;
}
@@ -104,10 +104,10 @@ login and sign-up pages form background color
.tug-button-login {
display: flex;
align-items: center;
fill: #e4154b;
fill: @tugrazRed;
}
.tug-button-login :hover {
fill: #000000;
fill: @primaryButtonHoverBackground;
}
.login-page-button {
margin: 5%;
@@ -118,20 +118,20 @@ login and sign-up pages form background color
cursor: pointer;
}
& a:hover {
background-color: #000;
color: #fff !important;
background-color: @primaryLinkHoverBackground;
color: @primaryLink !important;
text-decoration: none;
}
}
.login-page-button-white {
color: #fff !important;
color: @primaryButton !important;
font-family: "Source Sans Pro";
font-size: initial;
}
.login-page-button-black {
color: #000 !important;
color: @primaryButtonInverted !important;
font-family: "Source Sans Pro";
font-size: initial;
}

View File

@@ -7,7 +7,7 @@
*/
#footer {
color: #5E5E5E;
color: @footerGrey;
/*background-image: url("/static/images/footer.jpg");*/
-webkit-background-size: 100% 100%;
@@ -22,18 +22,18 @@
background-attachment: fixed;
&.footer-bottom {
background-color: #f2f2f2;
background-color: @footerBottomBackground;
padding-top: 15px;
padding-bottom: 15px;
font-size: 16px;
a {
text-decoration: none;
color: #5E5E5E;
color: @footerGrey;
&:hover, &:focus {
color: #ffffff;
background-color: #000000;
color: @primaryLink;
background-color: @primaryLinkHoverBackground;
}
}
}

View File

@@ -22,12 +22,12 @@ h2 {
}
.record-version {
color: #777777;
background-color: #f2f2f2 !important;
color: @greyDark;
background-color: @recordVersionBackground !important;
}
.random-records-frontpage article {
border-bottom: 1px solid rgba(34,36,38,.15);
border-bottom: 1px solid @randomRecordsFrontpageArticle;
margin-bottom: 1rem;
padding-bottom: 1rem;
}

View File

@@ -10,7 +10,7 @@
width: 18px;
height: 18px;
vertical-align: top;
fill: #e4154b;
fill: @tugrazRed;
}
/*****logo section******/
@@ -18,18 +18,18 @@
vertical-align: middle;
white-space: nowrap;
& a {
fill: #e4154b;
fill: @tugrazRed;
}
}
.affiliation-logo :hover {
text-decoration: none;
fill: #000000;
color: #000000;
fill: @primaryLinkHoverBackground;
color: @primaryLinkHoverBackground;
}
.affiliation {
background-color: white;
background-color: @primaryLink;
display: table;
margin: 0 auto 80px;
max-width: 1060px;
@@ -78,12 +78,12 @@ a {
.short-menu-right {
display: table-cell;
width: 50%;
color: #000000;
color: @primaryLinkInverted;
}
.short-menu-right :hover {
background-color: #000000;
color: #ffffff;
background-color: @primaryLinkHoverBackground;
color: @primaryLink;
}
.short-menu-right-button {
@@ -104,15 +104,15 @@ a {
& a {
padding: 5px;
background-color: transparent;
color: #000;
color: @primaryLinkInverted;
text-decoration: none;
}
}
.short-menu-left-lang:hover {
& a {
background-color: #000;
color: #fff;
background-color: @primaryLinkHoverBackground;
color: @primaryLink;
text-decoration: none;
}
}
@@ -126,7 +126,7 @@ a {
& svg {
& g {
stroke-linejoin: round;
stroke: #000;
stroke: @primaryLinkInverted;
stroke-miterlimit: 10;
stroke-width: 2;
fill: none;
@@ -137,11 +137,11 @@ a {
.search-icon-header:hover {
& a {
background-color: #000;
background-color: @primaryLinkHoverBackground;
text-decoration: none;
& svg {
& g {
stroke: #fff;
stroke: @primaryLink;
}
}
}
@@ -150,7 +150,7 @@ a {
.short-menu-left-search {
display: inline-block;
margin: 12px 9px 6px 0;
color: #000000;
color: @primaryLinkInverted;
}
.short-menu-right-main-menu {
@@ -181,8 +181,8 @@ svg:not(:root) {
}
.main-menu-entry a:hover {
background-color: #000;
color: #fff;
background-color: @primaryLinkHoverBackground;
color: @primaryLink;
text-decoration: none;
}
@@ -191,7 +191,7 @@ svg:not(:root) {
}
.main-menu-underline-line {
border: 2px solid #e0e1e2 !important;
border: 2px solid @greyLight !important;
border-radius: 0;
}
@@ -200,13 +200,13 @@ svg:not(:root) {
}
.affiliation-text a:hover {
background-color: #000000;
color: #ffffff;
background-color: @primaryLinkHoverBackground;
color: @primaryLink;
text-decoration: none;
}
.main-menu {
border-bottom: 1px solid #000;
border-bottom: 1px solid @primaryLinkInverted;
box-sizing: border-box;
height: 39px;
margin-top: -1px;

View File

@@ -1,5 +1,5 @@
.ui.inverted.header{
color:#000;
color: @primaryLinkInverted;
}
.login-page-button {
@@ -10,14 +10,14 @@
cursor: pointer;
}
& a:hover {
background-color: #000;
color: #fff !important;
background-color: @primaryLinkHoverBackground;
color: @primaryLink !important;
text-decoration: none;
}
}
.text-color{
color: #000;
color: @primaryLinkInverted;
}
@media (max-width: 767px) {

View File

@@ -14,5 +14,5 @@
}
.text-muted {
color: #777;
color: @greyDark;
}

View File

@@ -12,7 +12,7 @@
* to #ffffff
***/
.section-content-light-bg {
background-color: #ffffff;
background-color: @primaryBackground;
}
/***
@@ -21,7 +21,7 @@
* to #000000
***/
.section-title {
color: #000000;
color: @primaryText;
}
@@ -32,7 +32,7 @@
***/
.cover-page {
//text-align: center;
background-color: #ffffff;
background-color: @primaryBackground;
}
@@ -42,7 +42,7 @@
* To #000000
***/
.panel-free-title {
color: #000000;
color: @primaryText;
}
@@ -75,16 +75,16 @@ pre {
***/
/*.ui.button,*/
.ui.search.button {
background-color:#e4154b;
background-color: @tugrazRed;
}
.ui.button:hover,
.ui.search.button:hover {
background-color:#000000;
background-color: @primaryButtonHoverBackground;
}
.ui.button:hover {
color:#fff;
color: @primaryButton;
}
/***
@@ -123,3 +123,33 @@ pre {
.ui.label {
font-weight: 400;
}
.ui.label.access-right {
float: right;
color: @accessRight;
background-color: white;
&.open {
color: @accessRightOpen;
background-color: white;
}
&.restricted {
color: @accessRightRestricted;
background-color: white;
}
&.embargoed {
color: @accessRightEmbargoed;
background-color: white;
}
&.closed {
color: @accessRightClosed;
background-color: white;
}
}

View File

@@ -5,11 +5,6 @@
* it under the terms of the MIT License; see LICENSE file for more details.
*/
.access-right {
color: #e9711c;
float: right;
}
.title .dropdown {
display: none;
}
@@ -21,6 +16,6 @@
.label.label-keyword {
font-size: 0.71428571rem;
font-weight: 400;
background-color: #E8E8E8;
background-color: @labelKeywordBackground;
border: unset;
}

View File

@@ -14,7 +14,7 @@
}
.creator:not(:last-child):after {
color: #777;
color: @greyDark;
content: ';';
}
@@ -26,20 +26,3 @@
.identifiers {
display: inline;
}
.ui.access-right {
color: #FFFFFF;
&.open {
color: @accessRightOpen;
}
&.restricted {
color: @accessRightRestricted;
}
&.embargoed {
color: @accessRightEmbargoed;
}
&.closed {
color: @accessRightClosed;
}
}

View File

@@ -12,11 +12,56 @@
***/
//@import "../invenio_app_rdm/variables.less";
//@navbar_background_image: unset;
//@navbar_background_color: #ffffff;
// badge colors, accessibility
@accessRight : #e9711c;
@accessRightOpen : #e9711c;
@accessRightRestricted: #fbbd08;
@accessRightEmbargoed : #db2828;
@accessRightClosed : #db2828;
// primary colors TU Graz
@tugrazBlack: #231f20;
@tugrazRed : #e4154b;
// accent colors
@greyDark : #777;
@greyLight : #E0E1E2;
@labelKeywordBackground: #E8E8E8;
// link and button colors
@primaryLinkInverted : #000;
@primaryLinkBackgroundInverted: #fff;
@primaryLink : #fff;
@primaryLinkHoverBackground : #000;
@primaryButton : #fff;
@primaryButtonHoverBackground : #000;
@primaryButtonInverted : #000f;
// general
@primaryBackground: #fff;
@primaryText : #000;
//account (signin, signup) specific
@primaryFormAccounts : #fff;
@formAccountsInputPlaceholder : silver;
@fieldInputSelectionBackground: #50a2ce;
@signInBackground : #245b78;
// footer specific
@footerGrey : #5E5E5E;
@footerBottomBackground: #f2f2f2;
// record specific
@recordVersionBackground : #f2f2f2;
@randomRecordsFrontpageArticle: rgba(34, 36, 38, .15);

View File

@@ -91,13 +91,36 @@ DEPOSITS_HEADER_TEMPLATE = "invenio_theme_tugraz/header.html"
# See https://invenio-rdm-records.readthedocs.io/en/latest/configuration.html
# Uncomment below to override records landingpage.
# from invenio_rdm_records.config import RECORDS_UI_ENDPOINTS
RECORDS_UI_ENDPOINTS["recid"].update(
template="invenio_theme_tugraz/record_landing_page.html"
)
# RECORDS_UI_ENDPOINTS["recid"].update(
# template="invenio_theme_tugraz/record_landing_page.html"
# )
"""override the default record landing page"""
# Invenio-search-ui
# =============
# See https://invenio-search-ui.readthedocs.io/en/latest/configuration.html
SEARCH_UI_SEARCH_TEMPLATE = "invenio_theme_tugraz/search.html"
"""override the default search page"""
# SEARCH_UI_SEARCH_TEMPLATE = "invenio_theme_tugraz/search.html"
# """override the default search page"""
TUG_ROUTES = {
"index": "/",
"comingsoon": "/comingsoon",
}
# Invenio-app-rdm
# =============
# See https://invenio-app-rdm.readthedocs.io/en/latest/configuration.html
# """override the default search page"""
# Keep this in sync
APP_RDM_ROUTES = {
"index": "/notvalid/notvalid/notvalid",
"help_search": "/help/search",
"record_search": "/search2",
"record_detail": "/records/<pid_value>",
"record_export": "/records/<pid_value>/export/<export_format>",
"record_file_preview": "/records/<pid_value>/preview/<path:filename>",
"record_file_download": "/records/<pid_value>/files/<path:filename>",
"deposit_search": "/uploads",
"deposit_create": "/uploads/new",
"deposit_edit": "/uploads/<pid_value>",
}

View File

@@ -22,4 +22,4 @@ class FrontpageRecordsSearch(RecordsSearch):
"""Default index and filter for frontpage search."""
index = "rdmrecords-records"
default_filter = Q("query_string", query=("access.access_right:open"))
default_filter = Q("query_string", query=("access.record:public"))

View File

@@ -0,0 +1,7 @@
{%- extends config.INVENIO_THEME_TUGRAZ_BASE_TEMPLATE %}
{%- block page_body %}
<div class="ui container">
<h1 style="text-align: center;">comingsoon</h1>
</div>
{%- endblock %}

View File

@@ -30,15 +30,15 @@
<h2>{{_ ("Repository")}}</h2>
<p class="bodytext">
<a href="{{ url_for('invenio_app_rdm.coming_soon') }}">
<a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}">
{{_ ("Impressum")}}<i class="angle right icon"></i>
</a>
<br>
<a href="{{ url_for('invenio_app_rdm.coming_soon') }}">
<a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}">
{{_ ("Data protection")}}<i class="angle right icon"></i>
</a>
<br>
<a href="{{ url_for('invenio_app_rdm.coming_soon') }}">
<a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}">
{{_ ("Feedback")}}<i class="angle right icon"></i>
</a>
</p>

View File

@@ -45,7 +45,7 @@
<!--TODO: remove this once above is uncommented-->
<div class="two wide column main-menu-entry">
<a href="{{url_for('invenio_app_rdm.deposits_user')}}">{{_ ("Uploads")}}</a>
<a href="{{url_for('invenio_app_rdm_records.deposit_search')}}">{{_ ("Uploads")}}</a>
</div>
</div>

View File

@@ -41,7 +41,7 @@
{%- for r in records %}
{%- set creation_date = r._created|from_isodatetime -%}
{%- set record_url = url_for('invenio_records_ui.recid', pid_value=r['id']) %}
{%- set record_url = url_for('invenio_app_rdm_records.record_detail', pid_value=r.id) %}
<article>
<!--TODO:
@@ -94,7 +94,8 @@
</div>
</div>
<div class="right floated column">
<!--Disabled on feb-relase - enable when stable-->
<!-- <div class="right floated column">
<span class="access-right">
<i class="icon lock open"></i>
{{ r.access.access_right | make_dict_like('access_right') | vocabulary_title('access_right') }}
@@ -103,7 +104,7 @@
{%- endfor %}
</span>
</div>
</div> -->
</div>
</div>
</article>

View File

@@ -15,7 +15,7 @@
<a href="{{creators.identifiers.orcid|pid_url('orcid')}}" target="_blank" ><img class="inline-orcid" src="{{ url_for('static', filename='extra/orcid.png')}}" /></a>
{%- endif %}
<span class="text-muted" {% if creators.affiliations %} {% for affiliation in creators.affiliations %} data-toggle="tooltip" title="{{affiliation.name}}" {%- endfor %} {% endif %}>{{creators.name}}</span>
<span class="text-muted" {% if creators.affiliations %} {% for affiliation in creators.affiliations %} data-toggle="tooltip" title="{{affiliation.name}}" {%- endfor %} {% endif %}>{{creators.person_or_org.name}}</span>
{% if not loop.last %}; {% endif %}
{%- endfor %}

View File

@@ -56,7 +56,7 @@
</div>
<div class="right floated column">
<span class="access-right">
<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 %}

View File

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

View File

@@ -12,9 +12,15 @@ from typing import Dict
from elasticsearch_dsl.utils import AttrDict
from flask import Blueprint, render_template
from flask_menu import current_menu
from .search import FrontpageRecordsSearch
def ui_blueprint(app):
"""Blueprint for the routes and resources provided by Invenio-theme-tugraz."""
routes = app.config.get("TUG_ROUTES")
blueprint = Blueprint(
"invenio_theme_tugraz",
__name__,
@@ -22,15 +28,8 @@ blueprint = Blueprint(
static_folder="static",
)
@blueprint.route("/")
def index():
"""Render frontpage view."""
return render_template(
"invenio_theme_tugraz/index.html",
records=FrontpageRecordsSearch()[:5].sort("-created").execute(),
)
blueprint.add_url_rule(routes["index"], view_func=index)
blueprint.add_url_rule(routes["comingsoon"], view_func=comingsoon)
@blueprint.app_template_filter("make_dict_like")
def make_dict_like(value: str, key: str) -> Dict[str, str]:
@@ -40,8 +39,21 @@ def make_dict_like(value: str, key: str) -> Dict[str, str]:
"""
return {key: value}
@blueprint.app_template_filter("cast_to_dict")
def cast_to_dict(attr_dict):
"""Return the dict structure of AttrDict variable."""
return AttrDict.to_dict(attr_dict)
return blueprint
def index():
"""Frontpage."""
return render_template(
"invenio_theme_tugraz/index.html",
records=FrontpageRecordsSearch()[:5].sort("-created").execute())
def comingsoon():
"""Frontpage."""
return render_template("invenio_theme_tugraz/comingsoon.html")

View File

@@ -90,7 +90,7 @@ setup(
"invenio_theme_tugraz = invenio_theme_tugraz:InvenioThemeTugraz",
],
"invenio_base.blueprints": [
"invenio_theme_tugraz = invenio_theme_tugraz.views:blueprint",
"invenio_theme_tugraz = invenio_theme_tugraz.views:ui_blueprint",
],
"invenio_i18n.translations": [
"messages = invenio_theme_tugraz",

View File

@@ -1,33 +1,33 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020 mojib wali.
#
# 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.
# # -*- coding: utf-8 -*-
# #
# # Copyright (C) 2020 mojib wali.
# #
# # 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.
"""Test views."""
# """Test views."""
from elasticsearch_dsl.utils import AttrDict
# from elasticsearch_dsl.utils import AttrDict
from invenio_theme_tugraz.views import cast_to_dict, make_dict_like
# from invenio_theme_tugraz.views import cast_to_dict, make_dict_like
def test_make_dict_like():
"""Test make_dict_like."""
access = {
"access_right" : "open"
}
dicts = make_dict_like("open", "access_right")
assert access == dicts
# def test_make_dict_like():
# """Test make_dict_like."""
# access = {
# "access_right" : "open"
# }
# dicts = make_dict_like("open", "access_right")
# assert access == dicts
def test_cast_to_dict():
"""Test cast_to_dict."""
resource_type = {
"subtype" : "publication-datamanagementplan",
"type" : "publication"
}
expected = {'subtype': 'publication-datamanagementplan', 'type': 'publication'}
attr = cast_to_dict(AttrDict(resource_type))
assert expected == attr
# def test_cast_to_dict():
# """Test cast_to_dict."""
# resource_type = {
# "subtype" : "publication-datamanagementplan",
# "type" : "publication"
# }
# expected = {'subtype': 'publication-datamanagementplan', 'type': 'publication'}
# attr = cast_to_dict(AttrDict(resource_type))
# assert expected == attr