From f96347928e460494c0f90de3a43262cbc0c0c799 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Wed, 13 Apr 2016 09:39:55 +0200 Subject: [PATCH] Add jQuery-enabled tabs in personal page; add Team and Node objects (requires django-mptt) --- SciPost_v1/settings.py | 1 + scipost/models.py | 40 +++++++ scipost/static/scipost/SciPost.css | 23 +++++ scipost/templates/scipost/personal_page.html | 103 ++++++++++++++----- 4 files changed, 140 insertions(+), 27 deletions(-) diff --git a/SciPost_v1/settings.py b/SciPost_v1/settings.py index 663a26490..2cd8bb171 100644 --- a/SciPost_v1/settings.py +++ b/SciPost_v1/settings.py @@ -60,6 +60,7 @@ INSTALLED_APPS = ( 'django_mathjax', 'captcha', 'crispy_forms', + 'mptt', 'commentaries', 'comments', 'journals', diff --git a/scipost/models.py b/scipost/models.py index fe9ffb812..eda478fd7 100644 --- a/scipost/models.py +++ b/scipost/models.py @@ -6,6 +6,8 @@ from django.template import Template, Context from django_countries.fields import CountryField +from mptt.models import MPTTModel, TreeForeignKey + from .models import * SCIPOST_DISCIPLINES = ( @@ -252,3 +254,41 @@ class AuthorshipClaim(models.Model): # nr_significance_ratings = models.IntegerField(default=0) # significance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) + + +######### +# Teams # +######### + +class Team(models.Model): + """ + Team of Contributors, to enable private collaborations. + """ + leader = models.ForeignKey(Contributor) + members = models.ManyToManyField (Contributor, blank=True, related_name='team_members') + name = models.CharField(max_length=20) + + def __str__(self): + return name + ' (led by ' + leader.user.first_name + ' ' + leader.user.last_name + ')' + + +######### +# Lists # +######### + +class Node(MPTTModel): + """ + Node of a list (tree of submissions, commentaries, thesislinks). + Requires django-mptt. + """ + owner = models.ForeignKey(Team) + name = models.CharField(max_length=100) + private = models.BooleanField(default=True) + parent = TreeForeignKey('self', blank=True, null=True, related_name='children', db_index=True) + description = models.TextField(blank=True, null=True) + submissions = models.ManyToManyField('submissions.Submission', blank=True, related_name='node_submissions') + commentaries = models.ManyToManyField('commentaries.Commentary', blank=True, related_name='node_commentaries') + thesislinks = models.ManyToManyField('theses.ThesisLink', blank=True, related_name='node_thesislinks') + annotation = models.TextField(blank=True, null=True) + + diff --git a/scipost/static/scipost/SciPost.css b/scipost/static/scipost/SciPost.css index 570c43d1d..650ee5342 100644 --- a/scipost/static/scipost/SciPost.css +++ b/scipost/static/scipost/SciPost.css @@ -49,6 +49,29 @@ hr.hr12 { box-shadow: inset 0 12px 12px -12px rgba(0, 0, 0, 0.5); } +ul.personalTabMenu { + background-color: #dddddd; + display: inline-block; + padding: 0px; +} +ul.personalTabMenu li { + display: inline-block; + margin: 0px; + padding: 10px; +} +ul.personalTabMenu li a { + padding: 5px; +} +ul.personalTabMenu li a.active { + background-color: #eeeeee; + border: 1px solid black; + padding: 5px; +} +ul.personalTabMenu li a.inactive { + background-color: #dddddd; + border: none; +} + .commentcategorychoices { list-style-type: none; } diff --git a/scipost/templates/scipost/personal_page.html b/scipost/templates/scipost/personal_page.html index 770d7163a..a5a3ecf9c 100644 --- a/scipost/templates/scipost/personal_page.html +++ b/scipost/templates/scipost/personal_page.html @@ -8,21 +8,58 @@ <script> $(document).ready(function(){ - $("#mysubmissionsbutton").click(function(){ - $("#mysubmissionslist").toggle(); - }); - $("#mycommentariesbutton").click(function(){ - $("#mycommentarieslist").toggle(); - }); - $("#mythesesbutton").click(function(){ - $("#mytheseslist").toggle(); - }); - $("#mycommentsbutton").click(function(){ - $("#mycommentslist").toggle(); - }); - $("#myauthorrepliesbutton").click(function(){ - $("#myauthorreplieslist").toggle(); - }); + $(".TabSection").hide(); + $(".TabItem").attr("class", "TabItem inactive"); + $("#AccountTab").attr("class", "TabItem active"); + $("#Account").show(); + $("#AccountTab").click(function(){ + $(".TabItem").attr("class", "TabItem inactive"); + $("#AccountTab").attr("class", "TabItem active"); + $(".TabSection").hide(); + $("#Account").show(); + }); + $("#EdActionTab").click(function(){ + $(".TabItem").attr("class", "TabItem inactive"); + $("#EdActionTab").attr("class", "TabItem active"); + $(".TabSection").hide(); + $("#EdActions").show(); + }); + $("#RefereeingTab").click(function(){ + $(".TabItem").attr("class", "TabItem inactive"); + $("#RefereeingTab").attr("class", "TabItem active"); + $(".TabSection").hide(); + $("#Refereeing").show(); + }); + $("#SubmissionsTab").click(function(){ + $(".TabItem").attr("class", "TabItem inactive"); + $("#SubmissionsTab").attr("class", "TabItem active"); + $(".TabSection").hide(); + $("#Submissions").show(); + }); + $("#CommentariesTab").click(function(){ + $(".TabItem").attr("class", "TabItem inactive"); + $("#CommentariesTab").attr("class", "TabItem active"); + $(".TabSection").hide(); + $("#Commentaries").show(); + }); + $("#ThesesTab").click(function(){ + $(".TabItem").attr("class", "TabItem inactive"); + $("#ThesesTab").attr("class", "TabItem active"); + $(".TabSection").hide(); + $("#Theses").show(); + }); + $("#CommentsTab").click(function(){ + $(".TabItem").attr("class", "TabItem inactive"); + $("#CommentsTab").attr("class", "TabItem active"); + $(".TabSection").hide(); + $("#Comments").show(); + }); + $("#AuthorRepliesTab").click(function(){ + $(".TabItem").attr("class", "TabItem inactive"); + $("#AuthorRepliesTab").attr("class", "TabItem active"); + $(".TabSection").hide(); + $("#AuthorReplies").show(); + }); }); </script> @@ -44,6 +81,19 @@ <h1>Welcome to your SciPost Personal Page, {{ user.username }} </h1> </div> + <ul class="personalTabMenu"> + <li><a class="TabItem" id="AccountTab">Account</a></li> + <li><a class="TabItem" id="EdActionTab">Editorial Actions</a></li> + <li><a class="TabItem" id="RefereeingTab">Refereeing</a></li> + <li><a class="TabItem" id="SubmissionsTab">Submissions</a></li> + <li><a class="TabItem" id="CommentariesTab">Commentaries</a></li> + <li><a class="TabItem" id="ThesesTab">Theses</a></li> + <li><a class="TabItem" id="CommentsTab">Comments</a></li> + <li><a class="TabItem" id="AuthorRepliesTab">Author Replies</a></li> + </ul> +</section> + +<section class="TabSection" id="Account"> <hr class="hr12"> <div class="flex-greybox"> <h1>Your Account</h1> @@ -79,8 +129,9 @@ </div> </section> + {% if request.user|is_in_group:'SciPost Administrators' or request.user|is_in_group:'Editorial College' or request.user|is_in_group:'Vetting Editors' %} -<section> +<section class="TabSection" id="EdActions"> <hr class="hr12"> <div class="flex-greybox"> <h1>Pending Editorial Actions</h1> @@ -148,8 +199,9 @@ </section> {% endif %} + {% if perms.scipost.can_referee %} -<section> +<section class="TabSection" id="Refereeing"> <hr class="hr12"> <div class="flex-greybox"> <h1>Refereeing Tasks</h1> @@ -171,11 +223,10 @@ </section> {% endif %} -<section> +<section class="TabSection" id="Submissions"> <hr class="hr12"> <div class="flex-greybox"> <h1>Submissions</h1> - <button id="mysubmissionsbutton">View/hide your submissions</button> <ul> {% if nr_submission_authorships_to_claim > 0 %} <li><a href="{% url 'scipost:claim_authorships' %}">Potential authorships to claim (auto-detected: {{ nr_submission_authorships_to_claim}})</a></li> @@ -195,11 +246,11 @@ </div> </section> -<section> + +<section class="TabSection" id="Commentaries"> <hr class="hr12"> <div class="flex-greybox"> <h1>Commentaries</h1> - <button id="mycommentariesbutton">View/hide commentaries on your papers</button> <ul> {% if nr_commentary_authorships_to_claim > 0 %} <li><a href="{% url 'scipost:claim_authorships' %}">Potential authorships to claim (auto-detected: {{ nr_commentary_authorships_to_claim}})</a></li> @@ -219,11 +270,11 @@ </div> </section> -<section> + +<section class="TabSection" id="Theses"> <hr class="hr12"> <div class="flex-greybox"> <h1>Theses</h1> - <button id="mythesesbutton">View/hide your theses</button> <ul> {% if nr_thesis_authorships_to_claim > 0 %} <li><a href="{% url 'scipost:claim_authorships' %}">Potential authorships to claim (auto-detected: {{ nr_thesis_authorships_to_claim}})</a></li> @@ -244,11 +295,10 @@ </section> {% if own_comments %} -<section> +<section class="TabSection" id="Comments"> <hr class="hr12"> <div class="flex-greybox"> <h1>Your Comments</h1> - <button id="mycommentsbutton">View/hide your comments</button> </div> <div id="mycommentslist"> <ul> @@ -261,11 +311,10 @@ {% endif %} {% if own_authorreplies %} -<section> +<section class="TabSection" id="AuthorReplies"> <hr class="hr12"> <div class="flex-greybox"> <h1>Your Author Replies</h1> - <button id="myauthorrepliesbutton">View/hide your author replies</button> </div> <div id="myauthorreplieslist"> <ul> -- GitLab