From 5b6e8894435b4acd17ffc116d690a595eab4f76e Mon Sep 17 00:00:00 2001
From: Inga Kirschnick <inga.kirschnick@uni-bielefeld.de>
Date: Tue, 7 Feb 2023 16:06:09 +0100
Subject: [PATCH] New public corpus route

---
 app/corpora/routes.py                       |  9 +++
 app/templates/corpora/corpus.html.j2        | 51 ------------
 app/templates/corpora/public_corpus.html.j2 | 86 +++++++++++++++++++++
 3 files changed, 95 insertions(+), 51 deletions(-)
 create mode 100644 app/templates/corpora/public_corpus.html.j2

diff --git a/app/corpora/routes.py b/app/corpora/routes.py
index 4c1ebd29..63af1b07 100644
--- a/app/corpora/routes.py
+++ b/app/corpora/routes.py
@@ -332,3 +332,12 @@ def remove_permission(corpus_id, user_id, permission):
     a.remove_permission(permission)
     db.session.commit()
     return 'ok'
+
+@bp.route('/public/<hashid:corpus_id>')
+def public_corpus(corpus_id):
+    corpus = Corpus.query.get_or_404(corpus_id)
+    return render_template(
+        'corpora/public_corpus.html.j2',
+        corpus=corpus,
+        title=corpus.title
+    )
diff --git a/app/templates/corpora/corpus.html.j2 b/app/templates/corpora/corpus.html.j2
index 0f7b0bf4..c29da972 100644
--- a/app/templates/corpora/corpus.html.j2
+++ b/app/templates/corpora/corpus.html.j2
@@ -120,56 +120,5 @@
 {{ super() }}
 <script>
   let corpusDisplay = new CorpusDisplay(document.querySelector('#corpus-display'));
-  let corpusFollowingRequest = document.querySelector('#follow-corpus-request');
-  
-  {# let followingUserList = new UserList(document.querySelector('.user-list'));
-  followingUserList.add({{ following_users|tojson }}); #}
-  
-  corpusFollowingRequest.addEventListener('click', function() {
-    corpusFollowingRequest.innerHTML = '<i class="material-icons left">add</i>Unfollow Corpus';
-    if ("{{ current_user.is_following_corpus(corpus) }}" === "False") {
-      corpusFollowingRequest.lastChild.textContent = 'Unfollow Corpus';
-      return new Promise((resolve, reject) => {
-        fetch(`/corpora/{{ corpus.hashid }}/follow`, {method: 'POST', headers: {Accept: 'application/json'}})
-          .then(
-            (response) => {
-              if (response.status === 403) {app.flash('Forbidden', 'error'); reject(response);}
-              if (response.status === 404) {app.flash('Not Found', 'error'); reject(response);}
-              if (response.status === 409) {app.flash('Conflict', 'error'); reject(response);}
-              app.flash(`You follow "{{ corpus.title }}" now`, 'corpus');
-              window.location.href = '{{ url_for("corpora.corpus", corpus_id=corpus.id) }}'
-              resolve(response);
-            },
-            (response) => {
-              app.flash('Something went wrong', 'error');
-              reject(response);
-            }
-          );
-      });
-      
-    } else {
-      corpusFollowingRequest.innerHTML = '<i class="material-icons left">add</i>Unfollow Corpus';
-      return new Promise((resolve, reject) => {
-        fetch(`/corpora/{{ corpus.hashid }}/unfollow`, {method: 'POST', headers: {Accept: 'application/json'}})
-          .then(
-            (response) => {
-              if (response.status === 403) {app.flash('Forbidden', 'error'); reject(response);}
-              if (response.status === 404) {app.flash('Not Found', 'error'); reject(response);}
-              if (response.status === 409) {app.flash('Conflict', 'error'); reject(response);}
-              app.flash(`You are not following "{{ corpus.title }}" anymore`, 'corpus');
-              resolve(response);
-              window.location.href = '{{ url_for("corpora.corpus", corpus_id=corpus.id) }}'
-            },
-            (response) => {
-              app.flash('Something went wrong', 'error');
-              reject(response);
-            }
-          );
-      });
-      
-    }
-  });
-
-  
 </script>
 {% endblock scripts %}
diff --git a/app/templates/corpora/public_corpus.html.j2 b/app/templates/corpora/public_corpus.html.j2
new file mode 100644
index 00000000..f9cb4bc9
--- /dev/null
+++ b/app/templates/corpora/public_corpus.html.j2
@@ -0,0 +1,86 @@
+{% extends "base.html.j2" %}
+{% import "materialize/wtf.html.j2" as wtf %}
+
+{% block main_attribs %} class="service-scheme" data-service="corpus-analysis"{% endblock main_attribs %}
+
+{% block page_content %}
+<div class="container">
+  <div class="row">
+    <div class="col s12">
+      <h1>{{ title }} </h1>
+      <div class="card service-color-border border-darken" data-service="corpus-analysis" style="border-top: 10px solid">
+        <div class="card-content">
+          <div class="row">
+            <div class="col s12">
+              <p><b>Description:</b> {{ corpus.description }}</p>
+              <br>
+              <p></p>
+            </div>
+            <div class="col s6">
+              <p><b>Creation date:</b> {{ corpus.creation_date }}</p>
+            </div>
+            <div class="col s6">
+              <p><b>Number of tokens used:</b> {{ corpus.num_tokens }}</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+{% endblock page_content %}
+
+{% block scripts %}
+{{ super() }}
+<script>
+  let corpusFollowingRequest = document.querySelector('#follow-corpus-request');
+  
+  {# let followingUserList = new UserList(document.querySelector('.user-list'));
+  followingUserList.add({{ following_users|tojson }}); #}
+  
+  corpusFollowingRequest.addEventListener('click', function() {
+    corpusFollowingRequest.innerHTML = '<i class="material-icons left">add</i>Unfollow Corpus';
+    if ("{{ current_user.is_following_corpus(corpus) }}" === "False") {
+      corpusFollowingRequest.lastChild.textContent = 'Unfollow Corpus';
+      return new Promise((resolve, reject) => {
+        fetch(`/corpora/{{ corpus.hashid }}/follow`, {method: 'POST', headers: {Accept: 'application/json'}})
+          .then(
+            (response) => {
+              if (response.status === 403) {app.flash('Forbidden', 'error'); reject(response);}
+              if (response.status === 404) {app.flash('Not Found', 'error'); reject(response);}
+              if (response.status === 409) {app.flash('Conflict', 'error'); reject(response);}
+              app.flash(`You follow "{{ corpus.title }}" now`, 'corpus');
+              window.location.href = '{{ url_for("corpora.corpus", corpus_id=corpus.id) }}'
+              resolve(response);
+            },
+            (response) => {
+              app.flash('Something went wrong', 'error');
+              reject(response);
+            }
+          );
+      });
+      
+    } else {
+      corpusFollowingRequest.innerHTML = '<i class="material-icons left">add</i>Unfollow Corpus';
+      return new Promise((resolve, reject) => {
+        fetch(`/corpora/{{ corpus.hashid }}/unfollow`, {method: 'POST', headers: {Accept: 'application/json'}})
+          .then(
+            (response) => {
+              if (response.status === 403) {app.flash('Forbidden', 'error'); reject(response);}
+              if (response.status === 404) {app.flash('Not Found', 'error'); reject(response);}
+              if (response.status === 409) {app.flash('Conflict', 'error'); reject(response);}
+              app.flash(`You are not following "{{ corpus.title }}" anymore`, 'corpus');
+              resolve(response);
+              window.location.href = '{{ url_for("corpora.corpus", corpus_id=corpus.id) }}'
+            },
+            (response) => {
+              app.flash('Something went wrong', 'error');
+              reject(response);
+            }
+          );
+      });
+      
+    }
+  });
+</script>
+{% endblock scripts %}
-- 
GitLab