2020-10-23 06:51:46 +00:00
|
|
|
{% extends "materialize/base.html.j2" %}
|
|
|
|
{% from '_variables.html.j2' import colors %}
|
2020-02-24 08:18:49 +00:00
|
|
|
|
2020-10-23 06:51:46 +00:00
|
|
|
{% block html_attribs %} lang="en"{% endblock html_attribs %}
|
2020-08-25 09:49:43 +00:00
|
|
|
|
2020-10-23 06:51:46 +00:00
|
|
|
{% block head %}
|
|
|
|
{{ super() }}
|
|
|
|
<link href="{{ url_for('static', filename='images/nopaque_-_favicon.png') }}" rel="icon">
|
|
|
|
{% endblock head %}
|
2020-08-24 12:21:16 +00:00
|
|
|
|
2020-10-23 06:51:46 +00:00
|
|
|
{% block metas %}
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
{{ super() }}
|
|
|
|
{% endblock metas %}
|
2020-08-24 12:21:16 +00:00
|
|
|
|
2020-10-23 06:51:46 +00:00
|
|
|
{% block title %}{% if request.path != url_for('main.index') and title is defined %}{{title}} | {% endif %}nopaque{% endblock title %}
|
2020-08-25 09:49:43 +00:00
|
|
|
|
2020-10-23 06:51:46 +00:00
|
|
|
{% block styles %}
|
|
|
|
{{ super() }}
|
|
|
|
{% if current_user.is_authenticated %}
|
|
|
|
<link href="{{ url_for('static', filename='css/materialize.fix.sidenav-fixed.css') }}" media="screen,projection" rel="stylesheet">
|
2020-08-26 14:14:36 +00:00
|
|
|
{% endif %}
|
2020-10-23 06:51:46 +00:00
|
|
|
<link href="{{ url_for('static', filename='css/materialize.fix.sticky-footer.css') }}" media="screen,projection" rel="stylesheet">
|
|
|
|
<link href="{{ url_for('static', filename='css/nopaque.css') }}" media="screen,projection" rel="stylesheet">
|
|
|
|
<style>
|
|
|
|
.primary-color {background-color: {{ colors.primary }} !important;}
|
|
|
|
.primary-color-text {color: {{ colors.primary }} !important;}
|
|
|
|
.secondary-color {background-color: {{ colors.secondary }} !important;}
|
|
|
|
.secondary-color-text {color: {{ colors.secondary }} !important;}
|
|
|
|
|
|
|
|
.corpus-analysis-color {background-color: {{ colors.corpus_analysis }} !important;}
|
|
|
|
.corpus-analysis-color-text {color: {{ colors.corpus_analysis }} !important;}
|
|
|
|
.corpus-analysis-color.darken {background-color: {{ colors.corpus_analysis_darken }} !important;}
|
|
|
|
.corpus-analysis-color-text.text-darken {color: {{ colors.corpus_analysis_darken }} !important;}
|
|
|
|
.corpus-analysis-color.lighten {background-color: {{ colors.corpus_analysis_lighten }} !important;}
|
|
|
|
.corpus-analysis-color-text.text-lighten {color: {{ colors.corpus_analysis_lighten }} !important;}
|
|
|
|
|
|
|
|
.file-setup-color {background-color: {{ colors.file_setup }} !important;}
|
|
|
|
.file-setup-color-text {color: {{ colors.file_setup }} !important;}
|
|
|
|
.file-setup-color.darken {background-color: {{ colors.file_setup_darken }} !important;}
|
|
|
|
.file-setup-color-text.text-darken {color: {{ colors.file_setup_darken }} !important;}
|
|
|
|
.file-setup-color.lighten {background-color: {{ colors.file_setup_lighten }} !important;}
|
|
|
|
.file-setup-color-text.text-lighten {color: {{ colors.file_setup_lighten }} !important;}
|
|
|
|
|
|
|
|
.ocr-color {background-color: {{ colors.ocr }} !important;}
|
|
|
|
.ocr-color-text {color: {{ colors.ocr }} !important;}
|
|
|
|
.ocr-color.darken {background-color: {{ colors.ocr_darken }} !important;}
|
|
|
|
.ocr-color-text.text-darken {color: {{ colors.ocr_darken }} !important;}
|
|
|
|
.ocr-color.lighten {background-color: {{ colors.ocr_lighten }} !important;}
|
|
|
|
.ocr-color-text.text-lighten {color: {{ colors.ocr_lighten }} !important;}
|
|
|
|
|
|
|
|
.nlp-color {background-color: {{ colors.nlp }} !important;}
|
|
|
|
.nlp-color-text {color: {{ colors.nlp }} !important;}
|
|
|
|
.nlp-color.darken {background-color: {{ colors.nlp_darken }} !important;}
|
|
|
|
.nlp-color-text.text-darken {color: {{ colors.nlp_darken }} !important;}
|
|
|
|
.nlp-color.lighten {background-color: {{ colors.nlp_lighten }} !important;}
|
|
|
|
.nlp-color-text.text-lighten {color: {{ colors.nlp_lighten }} !important;}
|
|
|
|
|
|
|
|
.pagination li.active {background-color: {{ colors.primary }};}
|
|
|
|
.table-of-contents a.active {border-color: {{ colors.primary }};}
|
|
|
|
.tabs .tab a {color: inherit; /* Custom Text Color */}
|
|
|
|
.tabs .tab a:hover {color: {{ colors.primary }}; /* Custom Color On Hover */}
|
|
|
|
.tabs .tab a.active, .tabs .tab a:focus.active {
|
|
|
|
color: {{ colors.primary }}; /* Custom Text Color While Active */
|
|
|
|
background-color: {{ colors.primary }}28; /* Custom Background Color While Active */
|
|
|
|
}
|
|
|
|
.tabs .indicator {background-color: {{ colors.primary }}; /* Custom Color Of Indicator */}
|
|
|
|
</style>
|
|
|
|
{% endblock styles %}
|
|
|
|
|
|
|
|
{% block navbar %}
|
|
|
|
<header>
|
|
|
|
<div class="navbar-fixed">
|
|
|
|
<nav class="nav-extended">
|
|
|
|
<div class="nav-wrapper primary-color">
|
2020-02-11 15:07:31 +00:00
|
|
|
{% if current_user.is_authenticated %}
|
2020-10-23 06:51:46 +00:00
|
|
|
<a href="#" data-target="sidenav" class="sidenav-trigger"><i class="material-icons">menu</i></a>
|
2020-02-18 14:31:10 +00:00
|
|
|
{% endif %}
|
2020-10-23 06:51:46 +00:00
|
|
|
<a href="{{ url_for('main.index') }}" class="brand-logo hide-on-med-and-down" style="height: 100%; overflow: hidden;"><img src="{{ url_for('static', filename='images/nopaque_-_logo_name_slogan.svg') }}" style="height: 128px; margin-top: -32px;"></a>
|
|
|
|
<a href="{{ url_for('main.index') }}" class="brand-logo hide-on-large-only" style="height: 100%; overflow: hidden;"><img src="{{ url_for('static', filename='images/nopaque_-_logo.svg') }}" style="height: 128px; margin-top: -32px;"></a>
|
|
|
|
<ul class="right hide-on-med-and-down">
|
|
|
|
<li{% if request.path == url_for('main.news') %} class="active"{% endif %}><a href="{{ url_for('main.news') }}"><i class="material-icons left">notifications</i>News</a></li>
|
|
|
|
{% if current_user.is_anonymous %}
|
|
|
|
<li{% if request.path == url_for('auth.register') %} class="active"{% endif %}><a href="{{ url_for('auth.register') }}"><i class="material-icons left">assignment</i>Register</a></li>
|
|
|
|
<li{% if request.path == url_for('auth.login') %} class="active"{% endif %}><a href="{{ url_for('auth.login') }}"><i class="material-icons left">login</i>Log in</a></li>
|
|
|
|
{% else %}
|
|
|
|
<li{% if request.path == url_for('main.dashboard', _anchor='corpora') %} class="active"{% endif %}><a href="{{ url_for('main.dashboard', _anchor='corpora') }}"><i class="material-icons left">book</i>My Corpora</a></li>
|
|
|
|
<li{% if request.path == url_for('main.dashboard', _anchor='jobs') %} class="active"{% endif %}><a href="{{ url_for('main.dashboard', _anchor='jobs') }}"><i class="material-icons left">work</i>My Jobs</a></li>
|
|
|
|
<li><a class="dropdown-trigger no-autoinit" data-target="nav-more-dropdown" href="#!" id="nav-more-dropdown-trigger"><i class="material-icons">more_vert</i></a></li>
|
|
|
|
{% endif %}
|
|
|
|
</ul>
|
2020-02-07 14:21:59 +00:00
|
|
|
</div>
|
2020-10-23 06:51:46 +00:00
|
|
|
<div class="nav-content secondary-color">
|
|
|
|
{% block nav_content %}{% endblock nav_content %}
|
2020-02-07 14:21:59 +00:00
|
|
|
</div>
|
2020-10-23 06:51:46 +00:00
|
|
|
</nav>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
{% if current_user.is_authenticated %}
|
|
|
|
<ul class="dropdown-content" id="nav-more-dropdown">
|
|
|
|
<li><a href="{{ url_for('profile.settings') }}"><i class="material-icons left">settings</i>Settings</a></li>
|
|
|
|
<li class="divider" tabindex="-1"></li>
|
|
|
|
<li><a href="{{ url_for('auth.logout') }}">Log out</a></li>
|
|
|
|
</ul>
|
|
|
|
{% endif %}
|
|
|
|
</header>
|
|
|
|
{% endblock navbar %}
|
|
|
|
|
|
|
|
{% block sidenav %}
|
|
|
|
<ul class="sidenav sidenav-fixed{% if not current_user.is_authenticated %} hide{% endif %}" id="sidenav">
|
|
|
|
{% if current_user.is_authenticated %}
|
|
|
|
<li>
|
|
|
|
<div class="user-view">
|
|
|
|
<div class="background primary-color"></div>
|
|
|
|
<span class="white-text name">{{ current_user.username }}</span>
|
|
|
|
<span class="white-text email">{{ current_user.email }}</span>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
<li><a href="#"><i class="material-icons">linear_scale</i>Workflow</a></li>
|
|
|
|
<li><a href="{{ url_for('main.dashboard') }}"><i class="material-icons">dashboard</i>Dashboard</a></li>
|
|
|
|
<li><a href="{{ url_for('main.dashboard', _anchor='corpora') }}" style="padding-left: 47px;"><i class="material-icons">book</i>My Corpora</a></li>
|
|
|
|
<li><a href="{{ url_for('main.dashboard', _anchor='jobs') }}" style="padding-left: 47px;"><i class="material-icons">work</i>My Jobs</a></li>
|
|
|
|
<li><div class="divider"></div></li>
|
|
|
|
<li><a class="subheader">Processes & Services</a></li>
|
|
|
|
<li style="background-color: {{ colors.file_setup }}; border-left: 10px solid {{ colors.file_setup_darken }};"><a href="{{ url_for('services.service', service='file-setup') }}"><i class="material-icons">burst_mode</i>File setup</a></li>
|
|
|
|
<li style="background-color: {{ colors.ocr }}; border-left: 10px solid {{ colors.ocr_darken }}; margin-top: 5px;"><a href="{{ url_for('services.service', service='ocr') }}"><i class="material-icons">find_in_page</i>OCR</a></li>
|
|
|
|
<li style="background-color: {{ colors.nlp }}; border-left: 10px solid {{ colors.nlp_darken }}; margin-top: 5px;"><a href="{{ url_for('services.service', service='nlp') }}"><i class="material-icons">format_textdirection_l_to_r</i>NLP</a></li>
|
|
|
|
<li style="background-color: {{ colors.corpus_analysis }}; border-left: 10px solid {{ colors.corpus_analysis_darken }}; margin-top: 5px;"><a href="{{ url_for('services.service', service='corpus_analysis') }}"><i class="material-icons">search</i>Corpus analysis</a></li>
|
|
|
|
<li class="hide-on-large-only"><div class="divider"></div></li>
|
|
|
|
<li class="hide-on-large-only"><a href="{{ url_for('profile.settings') }}"><i class="material-icons">settings</i>Settings</a></li>
|
|
|
|
<li class="hide-on-large-only"><a href="{{ url_for('auth.logout') }}">Log out</a></li>
|
|
|
|
{% else %}
|
|
|
|
<li class="hide-on-large-only"><a href="{{ url_for('auth.register') }}"><i class="material-icons">assignment</i>Register</a></li>
|
|
|
|
<li class="hide-on-large-only"><a href="{{ url_for('auth.login') }}"><i class="material-icons">login</i>Log in</a></li>
|
|
|
|
{% endif %}
|
|
|
|
{% if current_user.is_administrator() %}
|
|
|
|
<li><div class="divider"></div></li>
|
|
|
|
<li><a class="subheader">Administration</a></li>
|
|
|
|
<li><a href="{{ url_for('admin.index') }}"><i class="material-icons">build</i>Administration tools</a></li>
|
|
|
|
{% endif %}
|
|
|
|
</ul>
|
|
|
|
{% endblock sidenav %}
|
|
|
|
|
|
|
|
{% block content %}
|
|
|
|
<main>
|
|
|
|
{% block page_content %}{% endblock page_content %}
|
|
|
|
</main>
|
|
|
|
|
|
|
|
<footer class="page-footer secondary-color">
|
|
|
|
<div class="container">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col s6 m3">
|
|
|
|
<a href="https://www.dfg.de/">
|
|
|
|
<img class="responsive-img" src="{{ url_for('static', filename='images/logo_-_dfg.gif') }}">
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<div class="col s6 m3 offset-m1 center-align">
|
|
|
|
<a href="https://www.uni-bielefeld.de/sfb1288/">
|
|
|
|
<img class="responsive-img" src="{{ url_for('static', filename='images/logo_-_sfb_1288.png') }}">
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<div class="col s12 m3 offset-m1">
|
|
|
|
<h5 class="white-text">Legal Notice</h5>
|
|
|
|
<ul>
|
|
|
|
<li><a class="grey-text text-lighten-3" href="https://www.uni-bielefeld.de/(en)/impressum/">Legal Notice</a></li>
|
|
|
|
<li><a class="grey-text text-lighten-3" href="{{ url_for('main.privacy_policy') }}">Privacy statement (GDPR)</a></li>
|
|
|
|
<li><a class="grey-text text-lighten-3" href="{{ url_for('main.terms_of_use') }}">Terms of use</a></li>
|
|
|
|
<li></li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="footer-copyright primary-color">
|
|
|
|
<div class="container">
|
|
|
|
<div class="row" style="margin-bottom: 0;">
|
|
|
|
<div class="col s12 m3">
|
|
|
|
<span>© 2020 Bielefeld University</span>
|
|
|
|
</div>
|
|
|
|
<div class="col s12 m9 right-align">
|
|
|
|
<a class="btn-small blue waves-effect waves-light" href="{{ url_for('main.about_and_faq') }}"><i class="left material-icons">info_outline</i>About and faq</a>
|
|
|
|
{% if config.CONTACT_EMAIL_ADRESS %}
|
|
|
|
<a class="btn-small pink waves-effect waves-light" href="mailto:{{ config.CONTACT_EMAIL_ADRESS }}?subject=[nopaque] Contact"><i class="left material-icons">rate_review</i>Contact</a>
|
|
|
|
<a class="btn-small green waves-effect waves-light" href="mailto:{{ config.CONTACT_EMAIL_ADRESS }}?subject=[nopaque] Feedback"><i class="left material-icons">feedback</i>Feedback</a>
|
|
|
|
{% endif %}
|
|
|
|
<a class="btn-small orange waves-effect waves-light" href="https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque"><i class="left material-icons">code</i>GitLab</a>
|
2019-07-05 12:47:35 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2020-10-23 06:51:46 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</footer>
|
|
|
|
{% endblock content %}
|
|
|
|
|
|
|
|
{% block scripts %}
|
|
|
|
{{ super() }}
|
|
|
|
<script src="{{ url_for('static', filename='js/darkreader.js') }}"></script>
|
|
|
|
<script src="{{ url_for('static', filename='js/jsonpatch.min.js') }}"></script>
|
|
|
|
<script src="{{ url_for('static', filename='js/list.min.js') }}"></script>
|
|
|
|
<script src="{{ url_for('static', filename='js/socket.io.slim.js') }}"></script>
|
|
|
|
<script src="{{ url_for('static', filename='js/nopaque.js') }}"></script>
|
|
|
|
<script>
|
|
|
|
{% if current_user.setting_dark_mode %}
|
|
|
|
DarkReader.enable({brightness: 150, contrast: 100, sepia: 0});
|
|
|
|
{% endif %}
|
|
|
|
// Disable all option elements with no value
|
|
|
|
for (let optionElement of document.querySelectorAll('option[value=""]')) {
|
|
|
|
optionElement.disabled = true;
|
|
|
|
}
|
|
|
|
M.AutoInit();
|
|
|
|
M.CharacterCounter.init(document.querySelectorAll('input[data-length][type="email"], input[data-length][type="password"], input[data-length][type="text"], textarea[data-length]'));
|
|
|
|
M.Dropdown.init(document.querySelectorAll('#nav-more-dropdown-trigger'), {alignment: 'right', constrainWidth: false, coverTrigger: false});
|
|
|
|
nopaque.Forms.init();
|
|
|
|
{% if current_user.is_authenticated %}
|
|
|
|
nopaque.socket.emit('user_data_stream_init');
|
|
|
|
{% endif %}
|
|
|
|
for (let flashedMessage of {{ get_flashed_messages(with_categories=True)|tojson }}) {
|
|
|
|
nopaque.flash(flashedMessage[1], flashedMessage[0]);
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
{% endblock scripts %}
|