mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 04:12:45 +00:00 
			
		
		
		
	Update templates
This commit is contained in:
		
							
								
								
									
										60
									
								
								app/templates/_base/dropdowns.html.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								app/templates/_base/dropdowns.html.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
{% if current_user.is_authenticated %}
 | 
			
		||||
<ul class="dropdown-content" id="navbar-data-processing-and-analysis-dropdown-content">
 | 
			
		||||
  <li {% if request.path == url_for('services.file_setup_pipeline') %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('services.file_setup_pipeline') }}">
 | 
			
		||||
      <i class="nopaque-icons service-icons service-color-text text-darken" data-service="file-setup-pipeline"></i>
 | 
			
		||||
      File Setup Pipeline
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li {% if request.path == url_for('services.tesseract_ocr_pipeline') %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('services.tesseract_ocr_pipeline') }}">
 | 
			
		||||
      <i class="nopaque-icons service-icons service-color-text text-darken" data-service="tesseract-ocr-pipeline"></i>
 | 
			
		||||
      Tesseract OCR Pipeline
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
  {% if config.NOPAQUE_TRANSKRIBUS_ENABLED %}
 | 
			
		||||
  <li {% if request.path == url_for('services.transkribus_htr_pipeline') %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('services.transkribus_htr_pipeline') }}">
 | 
			
		||||
      <i class="nopaque-icons service-icons service-color-text text-darken" data-service="transkribus-htr-pipeline"></i>
 | 
			
		||||
      Transkribus HTR Pipeline
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
  {% endif %}
 | 
			
		||||
  <li {% if request.path == url_for('services.spacy_nlp_pipeline') %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('services.spacy_nlp_pipeline') }}">
 | 
			
		||||
      <i class="nopaque-icons service-icons service-color-text text-darken" data-service="spacy-nlp-pipeline"></i>
 | 
			
		||||
      SpaCy NLP Pipeline
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li class="divider" tabindex="-1"></li>
 | 
			
		||||
  <li {% if request.path == url_for('services.corpus_analysis') %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('services.corpus_analysis') }}">
 | 
			
		||||
      <i class="nopaque-icons service-icons service-color-text text-darken" data-service="corpus-analysis"></i>
 | 
			
		||||
      Corpus Analyis
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
</ul>
 | 
			
		||||
{% endif %}
 | 
			
		||||
 | 
			
		||||
{% if current_user.is_authenticated %}
 | 
			
		||||
<ul class="dropdown-content" id="navbar-account-dropdown-content">
 | 
			
		||||
  <li {% if request.path == url_for('users.user', user_id=current_user.id) %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('users.user', user_id=current_user.id) }}">
 | 
			
		||||
      <i class="material-icons">person</i>
 | 
			
		||||
      Your profile
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li {% if request.path == url_for('settings.settings') %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('settings.settings') }}">
 | 
			
		||||
      <i class="material-icons">settings</i>
 | 
			
		||||
      Settings
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li>
 | 
			
		||||
    <a href="{{ url_for('auth.logout') }}">
 | 
			
		||||
      <i class="material-icons">logout</i>
 | 
			
		||||
      Log out
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
</ul>
 | 
			
		||||
{% endif %}
 | 
			
		||||
							
								
								
									
										45
									
								
								app/templates/_base/footer.html.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								app/templates/_base/footer.html.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
<div class="container">
 | 
			
		||||
  <div class="row">
 | 
			
		||||
    <div class="col s12 l3">
 | 
			
		||||
      <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>
 | 
			
		||||
      </ul>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="col s12 l3">
 | 
			
		||||
      <h5 class="white-text">More Resources</h5>
 | 
			
		||||
      <ul>
 | 
			
		||||
        <li><a class="grey-text text-lighten-3" href="{{ url_for('main.faq') }}">Frequently asked questions</a></li>
 | 
			
		||||
        <li><a class="grey-text text-lighten-3" href="mailto:{{ config.NOPAQUE_SERVICE_DESK }}">Report an issue</a></li>
 | 
			
		||||
        <li><a class="grey-text text-lighten-3" href="https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque">GitLab (source code)</a></li>
 | 
			
		||||
      </ul>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="col s12 l4">
 | 
			
		||||
      <h5 class="white-text">Who made this?</h5>
 | 
			
		||||
      <p class="grey-text text-lighten-4">
 | 
			
		||||
        This software is developed by the SFB 1288 INF project at Bielefeld University.
 | 
			
		||||
        Thanks to all the people who made nopaque possible.
 | 
			
		||||
        <span class="red-text">♥</span>
 | 
			
		||||
      </p>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="col s12 l2">
 | 
			
		||||
      <br class="hide-on-med-and-down">
 | 
			
		||||
      <br class="hide-on-med-and-down">
 | 
			
		||||
      <a href="https://www.dfg.de/">
 | 
			
		||||
        <img class="responsive-img" src="{{ url_for('static', filename='images/logo_-_dfg.gif') }}">
 | 
			
		||||
      </a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="footer-copyright">
 | 
			
		||||
  <div class="container">
 | 
			
		||||
    © 2024 Bielefeld University
 | 
			
		||||
    <a class="grey-text text-lighten-4 right" href="https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque/-/releases/{{ config.NOPAQUE_VERSION }}">Version {{ config.NOPAQUE_VERSION }}</a>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
							
								
								
									
										1
									
								
								app/templates/_base/icons.html.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								app/templates/_base/icons.html.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
<link href="{{ url_for('static', filename='images/nopaque_-_favicon.png') }}" rel="icon">
 | 
			
		||||
							
								
								
									
										2
									
								
								app/templates/_base/metas.html.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								app/templates/_base/metas.html.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
<meta charset="UTF-8">
 | 
			
		||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
			
		||||
							
								
								
									
										34
									
								
								app/templates/_base/modals.html.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								app/templates/_base/modals.html.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
{% if current_user.is_authenticated and not current_user.terms_of_use_accepted %}
 | 
			
		||||
<div id="terms-of-use-modal" class="modal modal-fixed-footer">
 | 
			
		||||
  <div class="modal-content">
 | 
			
		||||
    <div class="container">
 | 
			
		||||
      <div class="row">
 | 
			
		||||
        <div class="col s12">
 | 
			
		||||
          <h1 id="title">Terms of use</h1>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="col s12">
 | 
			
		||||
          <div class="switch">
 | 
			
		||||
            <label>
 | 
			
		||||
              DE
 | 
			
		||||
              <input type="checkbox" id="terms-of-use-modal-switch">
 | 
			
		||||
              <span class="lever"></span>
 | 
			
		||||
              EN
 | 
			
		||||
            </label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <br>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="terms-of-use-modal-content hide">
 | 
			
		||||
          {% include "main/terms_of_use_en.html.j2" %}
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="terms-of-use-modal-content">
 | 
			
		||||
          {% include "main/terms_of_use_de.html.j2" %}
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
  <div class="modal-footer">
 | 
			
		||||
    <span style="margin-right:20px;">I have taken note of the new GTC and agree to their validity in the context of my further use.</span>
 | 
			
		||||
    <a href="#!" class="modal-close waves-effect waves-green btn">Yes</a>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
{% endif %}
 | 
			
		||||
							
								
								
									
										105
									
								
								app/templates/_base/navbar.html.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								app/templates/_base/navbar.html.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
			
		||||
<div class="navbar-fixed">
 | 
			
		||||
  <nav>
 | 
			
		||||
    <div class="nav-wrapper">
 | 
			
		||||
      {# menu icon #}
 | 
			
		||||
      {# small/medium devices #}
 | 
			
		||||
      <a href="#!" class="sidenav-trigger" data-target="sidenav">
 | 
			
		||||
        <i class="material-icons">menu</i>
 | 
			
		||||
      </a>
 | 
			
		||||
 | 
			
		||||
      {% if current_user.is_authenticated %}
 | 
			
		||||
      {# nopaque logo #}
 | 
			
		||||
      {# large devices #}
 | 
			
		||||
      <a href="{{ url_for('main.index') }}" class="brand-logo hide-on-med-and-down h-100">
 | 
			
		||||
        <img src="{{ url_for('static', filename='images/nopaque_-_logo.png') }}" alt="" class="mx-3 py-3 h-100">
 | 
			
		||||
      </a>
 | 
			
		||||
 | 
			
		||||
      {# left aligned navigation items #}
 | 
			
		||||
      {# large devices #}
 | 
			
		||||
      <ul class="hide-on-med-and-down" style="margin-left: calc(57px + 1.5rem);">
 | 
			
		||||
        {# dashboard #}
 | 
			
		||||
        <li {% if request.path == url_for('main.dashboard') %}class="active"{% endif %}>
 | 
			
		||||
          <a href="{{ url_for('main.dashboard') }}">
 | 
			
		||||
            <i class="material-icons left">dashboard</i>
 | 
			
		||||
            Dashboard
 | 
			
		||||
          </a>
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
        {# data processing & analysis #}
 | 
			
		||||
        <li>
 | 
			
		||||
          <a href="#!" class="dropdown-trigger no-autoinit" data-target="navbar-data-processing-and-analysis-dropdown-content" id="navbar-data-processing-and-analysis-dropdown-trigger">
 | 
			
		||||
            <i class="material-icons left">miscellaneous_services</i>
 | 
			
		||||
            Data Processing & Analysis
 | 
			
		||||
          </a>
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
        {# contributions #}
 | 
			
		||||
        <li {% if request.path == url_for('contributions.index') %}class="active"{% endif %}>
 | 
			
		||||
          <a href="{{ url_for('contributions.index') }}">
 | 
			
		||||
            <i class="material-icons left">new_label</i>
 | 
			
		||||
            Contributions
 | 
			
		||||
          </a>
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
        {# social #}
 | 
			
		||||
        <li {% if request.path == url_for('main.social') %}class="active"{% endif %}>
 | 
			
		||||
          <a href="{{ url_for('main.social') }}">
 | 
			
		||||
            <i class="material-icons left">groups</i>
 | 
			
		||||
            Social
 | 
			
		||||
          </a>
 | 
			
		||||
        </li>
 | 
			
		||||
      </ul>
 | 
			
		||||
      {% else %}
 | 
			
		||||
      {# nopaque logo+wordmark+slogan #}
 | 
			
		||||
      {# large devices #}
 | 
			
		||||
      <a href="{{ url_for('main.index') }}" class="brand-logo hide-on-med-and-down h-100">
 | 
			
		||||
        <img src="{{ url_for('static', filename='images/nopaque_-_logo+wordmark+slogan.png') }}" alt="" class="mx-3 py-3 h-100">
 | 
			
		||||
      </a>
 | 
			
		||||
      {% endif %}
 | 
			
		||||
 | 
			
		||||
      {# nopaque logo+wordmark #}
 | 
			
		||||
      {# small/medium devices #}
 | 
			
		||||
      <a href="{{ url_for('main.index') }}" class="brand-logo center hide-on-large-only h-100">
 | 
			
		||||
        <img src="{{ url_for('static', filename='images/nopaque_-_logo+wordmark.png') }}" alt="" class="py-3 h-100">
 | 
			
		||||
      </a>
 | 
			
		||||
 | 
			
		||||
      {# right aligned navigation items #}
 | 
			
		||||
      {# large devices #}
 | 
			
		||||
      <ul class="right hide-on-med-and-down h-100">
 | 
			
		||||
        {# manual #}
 | 
			
		||||
        <li class="tooltipped {% if request.path == url_for('main.manual') %}active{% endif %}" data-position="bottom" data-tooltip="Manual">
 | 
			
		||||
          <a href="{{ url_for('main.manual') }}">
 | 
			
		||||
            <i class="material-icons">help_outline</i>
 | 
			
		||||
          </a>
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
        {# news #}
 | 
			
		||||
        <li class="tooltipped {% if request.path == url_for('main.news') %}active{% endif %}" data-position="bottom" data-tooltip="News">
 | 
			
		||||
          <a href="{{ url_for('main.news') }}">
 | 
			
		||||
            <i class="material-icons">newspaper</i>
 | 
			
		||||
          </a>
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
        {% if current_user.is_authenticated %}
 | 
			
		||||
        {# avatar #}
 | 
			
		||||
        <li class="h-100">
 | 
			
		||||
          <a href="#!" class="dropdown-trigger no-autoinit h-100" data-target="navbar-account-dropdown-content" id="navbar-account-dropdown-trigger">
 | 
			
		||||
            <span class="mr-3">{{ current_user.username }}</span>
 | 
			
		||||
            <img src="{{ url_for('users.user_avatar', user_id=current_user.id) }}" alt="" class="circle py-3 h-100 right">
 | 
			
		||||
          </a>
 | 
			
		||||
        </li>
 | 
			
		||||
        {% else %}
 | 
			
		||||
        {# log in #}
 | 
			
		||||
        <li {% if request.path == url_for('auth.login') %}class="active"{% endif %}>
 | 
			
		||||
          <a href="{{ url_for('auth.login') }}">Log in</a>
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
        {# register #}
 | 
			
		||||
        <li {% if request.path == url_for('auth.register') %}class="active"{% endif %}>
 | 
			
		||||
          <a href="{{ url_for('auth.register') }}" class="btn waves-effect waves-light primary-color lighten">Register</a>
 | 
			
		||||
        </li>
 | 
			
		||||
        {% endif %}
 | 
			
		||||
      </ul>
 | 
			
		||||
    </div>
 | 
			
		||||
  </nav>
 | 
			
		||||
</div>
 | 
			
		||||
							
								
								
									
										113
									
								
								app/templates/_base/scripts.html.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								app/templates/_base/scripts.html.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,113 @@
 | 
			
		||||
<script src="{{ url_for('static', filename='external/materialize/js/materialize.min.js') }}"></script>
 | 
			
		||||
<script src="{{ url_for('static', filename='external/JSON-Patch/js/fast-json-patch.min.js') }}"></script>
 | 
			
		||||
<script src="{{ url_for('static', filename='external/list.js/js/list.min.js') }}"></script>
 | 
			
		||||
<script src="{{ url_for('static', filename='external/pako/js/pako_inflate.min.js') }}"></script>
 | 
			
		||||
<script src="{{ url_for('static', filename='external/plotly.js/js/plotly.min.js') }}"></script>
 | 
			
		||||
<script src="{{ url_for('static', filename='external/socket.io/js/socket.io.min.js') }}"></script>
 | 
			
		||||
{% assets
 | 
			
		||||
    filters='rjsmin',
 | 
			
		||||
    output='gen/nopaque.%(version)s.js',
 | 
			
		||||
    'js/index.js',
 | 
			
		||||
    'js/app.js',
 | 
			
		||||
    'js/utils.js',
 | 
			
		||||
 | 
			
		||||
    'js/forms/index.js',
 | 
			
		||||
    'js/forms/base-form.js',
 | 
			
		||||
    'js/forms/create-contribution-form.js',
 | 
			
		||||
    'js/forms/create-corpus-file-form.js',
 | 
			
		||||
    'js/forms/create-job-form.js',
 | 
			
		||||
 | 
			
		||||
    'js/resource-displays/index.js',
 | 
			
		||||
    'js/resource-displays/resource-display.js',
 | 
			
		||||
    'js/resource-displays/corpus-display.js',
 | 
			
		||||
    'js/resource-displays/job-display.js',
 | 
			
		||||
 | 
			
		||||
    'js/resource-lists/index.js',
 | 
			
		||||
    'js/resource-lists/resource-list.js',
 | 
			
		||||
    'js/resource-lists/admin-user-list.js',
 | 
			
		||||
    'js/resource-lists/corpus-file-list.js',
 | 
			
		||||
    'js/resource-lists/corpus-follower-list.js',
 | 
			
		||||
    'js/resource-lists/corpus-list.js',
 | 
			
		||||
    'js/resource-lists/corpus-text-info-list.js',
 | 
			
		||||
    'js/resource-lists/corpus-token-list.js',
 | 
			
		||||
    'js/resource-lists/detailed-public-corpus-list.js',
 | 
			
		||||
    'js/resource-lists/job-input-list.js',
 | 
			
		||||
    'js/resource-lists/job-list.js',
 | 
			
		||||
    'js/resource-lists/job-result-list.js',
 | 
			
		||||
    'js/resource-lists/public-corpus-list.js',
 | 
			
		||||
    'js/resource-lists/public-user-list.js',
 | 
			
		||||
    'js/resource-lists/spacy-nlp-pipeline-model-list.js',
 | 
			
		||||
    'js/resource-lists/tesseract-ocr-pipeline-model-list.js',
 | 
			
		||||
 | 
			
		||||
    'js/requests/index.js',
 | 
			
		||||
    'js/requests/admin.js',
 | 
			
		||||
    'js/requests/contributions.js',
 | 
			
		||||
    'js/requests/corpora.js',
 | 
			
		||||
    'js/requests/jobs.js',
 | 
			
		||||
    'js/requests/users.js',
 | 
			
		||||
 | 
			
		||||
    'js/corpus-analysis/index.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/index.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/constants.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/errors.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/status.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/api/index.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/api/client.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/models/index.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/models/resource.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/models/attributes.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/models/subcorpora.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/models/corpora.js',
 | 
			
		||||
    'js/corpus-analysis/cqi/client.js',
 | 
			
		||||
    'js/corpus-analysis/query-builder/index.js',
 | 
			
		||||
    'js/corpus-analysis/query-builder/element-references.js',
 | 
			
		||||
    'js/corpus-analysis/query-builder/query-builder.js',
 | 
			
		||||
    'js/corpus-analysis/query-builder/structural-attribute-builder-functions.js',
 | 
			
		||||
    'js/corpus-analysis/query-builder/token-attribute-builder-functions.js',
 | 
			
		||||
    'js/corpus-analysis/app.js',
 | 
			
		||||
    'js/corpus-analysis/concordance-extension.js',
 | 
			
		||||
    'js/corpus-analysis/reader-extension.js',
 | 
			
		||||
    'js/corpus-analysis/static-visualization-extension.js'
 | 
			
		||||
-%}
 | 
			
		||||
<script src="{{ ASSET_URL }}"></script>
 | 
			
		||||
{% endassets -%}
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
    // TODO: Implement an app.run method and use this for all of the following
 | 
			
		||||
    const app = new nopaque.App();
 | 
			
		||||
    app.init();
 | 
			
		||||
 | 
			
		||||
    {% if current_user.is_authenticated -%}
 | 
			
		||||
    // TODO: Set this as a property of the app object
 | 
			
		||||
    const currentUserId = {{ current_user.hashid|tojson }};
 | 
			
		||||
 | 
			
		||||
    // Subscribe to the current user's data events
 | 
			
		||||
    app.subscribeUser(currentUserId)
 | 
			
		||||
    .catch((error) => {throw JSON.stringify(error);});
 | 
			
		||||
 | 
			
		||||
    // Get the current user's data
 | 
			
		||||
    app.getUser(currentUserId, true, true)
 | 
			
		||||
    .catch((error) => {throw JSON.stringify(error);});
 | 
			
		||||
 | 
			
		||||
    {% if not current_user.terms_of_use_accepted -%}
 | 
			
		||||
    M.Modal.getInstance(document.querySelector('#terms-of-use-modal')).open();
 | 
			
		||||
    {% endif -%}
 | 
			
		||||
    {% endif -%}
 | 
			
		||||
 | 
			
		||||
    // Display flashed messages
 | 
			
		||||
    for (let [category, message] of {{ get_flashed_messages(with_categories=True)|tojson }}) {
 | 
			
		||||
    app.flash(message, message);
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
    let languageModalSwitch = document.querySelector('#terms-of-use-modal-switch');
 | 
			
		||||
    let termsOfUseModalContent = document.querySelectorAll('.terms-of-use-modal-content');
 | 
			
		||||
    if (languageModalSwitch) {
 | 
			
		||||
    languageModalSwitch.addEventListener('change', function() {
 | 
			
		||||
        termsOfUseModalContent.forEach(content => {
 | 
			
		||||
        content.classList.toggle('hide');
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										123
									
								
								app/templates/_base/sidenav.html.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								app/templates/_base/sidenav.html.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,123 @@
 | 
			
		||||
<ul class="sidenav" id="sidenav">
 | 
			
		||||
  {% if current_user.is_authenticated %}
 | 
			
		||||
  {# user view #}
 | 
			
		||||
  <li>
 | 
			
		||||
    <div class="user-view">
 | 
			
		||||
      <div class="background primary-color"></div>
 | 
			
		||||
      <a><img class="circle" src="{{ url_for('users.user_avatar', user_id=current_user.id) }}" alt=""></a>
 | 
			
		||||
      <a><span class="white-text name">{{ current_user.username }}</span></a>
 | 
			
		||||
      <a><span class="white-text email">{{ current_user.email }}</span></a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </li>
 | 
			
		||||
  {% endif %}
 | 
			
		||||
 | 
			
		||||
  {% if current_user.is_authenticated %}
 | 
			
		||||
  {# dashboard #}
 | 
			
		||||
  <li {% if request.path == url_for('main.dashboard') %}class="active"{% endif %}>
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('main.dashboard') }}"><i class="material-icons">dashboard</i>Dashboard</a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {# contributions #}
 | 
			
		||||
  <li {% if request.path == url_for('contributions.index') %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('contributions.index') }}">
 | 
			
		||||
      <i class="material-icons left">new_label</i>
 | 
			
		||||
      Contributions
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {# social #}
 | 
			
		||||
  <li {% if request.path == url_for('main.social') %}class="active"{% endif %}>
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('main.social') }}"><i class="material-icons">groups</i>Social</a>
 | 
			
		||||
  </li>
 | 
			
		||||
  {% endif %}
 | 
			
		||||
 | 
			
		||||
  {# news #}
 | 
			
		||||
  <li {% if request.path == url_for('main.news') %}class="active"{% endif %}>
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('main.news') }}"><i class="material-icons">newspaper</i>News</a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {# manual #}
 | 
			
		||||
  <li {% if request.path == url_for('main.manual') %}class="active"{% endif %}>
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('main.manual') }}"><i class="material-icons">help_outline</i>Manual</a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {% if current_user.is_authenticated %}
 | 
			
		||||
  {# data processing & analysis section #}
 | 
			
		||||
  <li><div class="divider"></div></li>
 | 
			
		||||
  <li><a class="subheader">Data Processing & Analysis</a></li>
 | 
			
		||||
 | 
			
		||||
  {# file setup pipeline #}
 | 
			
		||||
  <li class="service-color service-color-border border-darken" data-service="file-setup-pipeline" style="border-left: 10px solid;">
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('services.file_setup_pipeline') }}"><i class="nopaque-icons service-icons" data-service="file-setup-pipeline"></i>File setup</a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {# tesseract ocr pipeline #}
 | 
			
		||||
  <li class="service-color service-color-border border-darken mt-1" data-service="tesseract-ocr-pipeline" style="border-left: 10px solid;">
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('services.tesseract_ocr_pipeline') }}"><i class="nopaque-icons service-icons" data-service="tesseract-ocr-pipeline"></i>OCR</a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {% if config.NOPAQUE_TRANSKRIBUS_ENABLED %}
 | 
			
		||||
  {# transkribus htr pipeline #}
 | 
			
		||||
  <li class="service-color service-color-border border-darken mt-1" data-service="transkribus-htr-pipeline" style="border-left: 10px solid;">
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('services.transkribus_htr_pipeline') }}"><i class="nopaque-icons service-icons" data-service="transkribus-htr-pipeline"></i>HTR</a>
 | 
			
		||||
  </li>
 | 
			
		||||
  {% endif %}
 | 
			
		||||
 | 
			
		||||
  {# spacy nlp pipeline #}
 | 
			
		||||
  <li class="service-color service-color-border border-darken mt-1" data-service="spacy-nlp-pipeline" style="border-left: 10px solid;">
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('services.spacy_nlp_pipeline') }}"><i class="nopaque-icons service-icons" data-service="spacy-nlp-pipeline"></i>NLP</a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {# corpus analysis #}
 | 
			
		||||
  <li class="service-color service-color-border border-darken mt-1" data-service="corpus-analysis" style="border-left: 10px solid;">
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('services.corpus_analysis') }}"><i class="nopaque-icons service-icons" data-service="corpus-analysis"></i>Corpus Analysis</a>
 | 
			
		||||
  </li>
 | 
			
		||||
  {% endif %}
 | 
			
		||||
 | 
			
		||||
  {# account section #}
 | 
			
		||||
  <li><div class="divider"></div></li>
 | 
			
		||||
  <li><a class="subheader">Account</a></li>
 | 
			
		||||
 | 
			
		||||
  {% if current_user.is_authenticated %}
 | 
			
		||||
  {# my profile #}
 | 
			
		||||
  <li {% if request.path == url_for('users.user', user_id=current_user.id) %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('users.user', user_id=current_user.id) }}"><i class="material-icons">person</i>My Profile</a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {# settings #}
 | 
			
		||||
  <li {% if request.path == url_for('settings.settings') %}class="active"{% endif %}>
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('settings.settings') }}"><i class="material-icons">settings</i>Settings</a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {# log out #}
 | 
			
		||||
  <li>
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('auth.logout') }}"><i class="material-icons">logout</i>Log out</a>
 | 
			
		||||
  </li>
 | 
			
		||||
  {% else %}
 | 
			
		||||
  {# log in #}
 | 
			
		||||
  <li {% if request.path == url_for('auth.login') %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('auth.login') }}">Log in</a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {# register #}
 | 
			
		||||
  <li {% if request.path == url_for('auth.register') %}class="active"{% endif %}>
 | 
			
		||||
    <a href="{{ url_for('auth.register') }}" class="btn waves-effect waves-light">Register</a>
 | 
			
		||||
  </li>
 | 
			
		||||
  {% endif %}
 | 
			
		||||
 | 
			
		||||
  {% if current_user.is_authenticated and current_user.can('ADMINISTRATE') %}
 | 
			
		||||
  {# administration section #}
 | 
			
		||||
  <li><div class="divider"></div></li>
 | 
			
		||||
  <li><a class="subheader">Administration</a></li>
 | 
			
		||||
 | 
			
		||||
  {# corpora #}
 | 
			
		||||
  <li>
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('admin.corpora') }}"><i class="nopaque-icons">I</i>Corpora</a>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  {# users #}
 | 
			
		||||
  <li>
 | 
			
		||||
    <a class="waves-effect" href="{{ url_for('admin.users') }}"><i class="material-icons">manage_accounts</i>Users</a>
 | 
			
		||||
  </li>
 | 
			
		||||
  {% endif %}
 | 
			
		||||
</ul>
 | 
			
		||||
							
								
								
									
										23
									
								
								app/templates/_base/stylesheets.html.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								app/templates/_base/stylesheets.html.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
<link href="{{ url_for('static', filename='external/material-design-icons/css/material-icons.css') }}" rel="stylesheet">
 | 
			
		||||
{% assets
 | 
			
		||||
    output='gen/nopaque.%(version)s.css',
 | 
			
		||||
    'css/materialize.css',
 | 
			
		||||
    'css/materialize.override.css',
 | 
			
		||||
    'css/nopaque-icons.css',
 | 
			
		||||
    'css/theme-colors.css',
 | 
			
		||||
    'css/corpus-status-colors.css',
 | 
			
		||||
    'css/corpus-status-text.css',
 | 
			
		||||
    'css/height.css',
 | 
			
		||||
    'css/job-status-colors.css',
 | 
			
		||||
    'css/job-status-text.css',
 | 
			
		||||
    'css/service-colors.css',
 | 
			
		||||
    'css/pagination.css',
 | 
			
		||||
    'css/service-icons.css',
 | 
			
		||||
    'css/s-attr-colors.css',
 | 
			
		||||
    'css/spacing.css',
 | 
			
		||||
    'css/status-spinner.css',
 | 
			
		||||
    'css/utils.css',
 | 
			
		||||
    'css/width.css'
 | 
			
		||||
%}
 | 
			
		||||
<link href="{{ ASSET_URL }}" rel="stylesheet">
 | 
			
		||||
{% endassets %}
 | 
			
		||||
		Reference in New Issue
	
	Block a user