diff --git a/journals/managers.py b/journals/managers.py index d8c9725ad0d477ba9b993bbbfb3a43b68d7d6784..ca106578a5a8f02eba9fa2e271d7bac68209473d 100644 --- a/journals/managers.py +++ b/journals/managers.py @@ -60,3 +60,6 @@ class PublicationQuerySet(models.QuerySet): return self.filter( models.Q(in_issue__in_volume__in_journal__name=journal_name) | models.Q(in_journal__name=journal_name)) + + def most_cited(self, n_returns=5): + return self.order_by('-number_of_citations')[:n_returns] diff --git a/journals/migrations/0028_publication_number_of_citations.py b/journals/migrations/0028_publication_number_of_citations.py new file mode 100644 index 0000000000000000000000000000000000000000..eec72e54eac0b4871f08305b6bf058d48cf855d1 --- /dev/null +++ b/journals/migrations/0028_publication_number_of_citations.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2018-05-15 19:43 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0027_auto_20180414_2053'), + ] + + operations = [ + migrations.AddField( + model_name='publication', + name='number_of_citations', + field=models.PositiveIntegerField(default=0), + preserve_default=False, + ), + ] diff --git a/journals/models.py b/journals/models.py index e5468f362bca0bd53a6edc5c57ae1b7b15036e75..8f5979ee973c179db96b328a1c403f48bab551b8 100644 --- a/journals/models.py +++ b/journals/models.py @@ -397,6 +397,7 @@ class Publication(models.Model): BiBTeX_entry = models.TextField(blank=True) doideposit_needs_updating = models.BooleanField(default=False) citedby = JSONField(default={}, blank=True, null=True) + number_of_citations = models.PositiveIntegerField() # Date fields submission_date = models.DateField(verbose_name='submission date') diff --git a/journals/templates/journals/SciPostPhys_about.html b/journals/templates/journals/SciPostPhys_about.html index 94775192415a3f30c04fd6ecfd2258b9c2d74a70..34e6086608bfe7b5e4de513c35bb499767507164 100644 --- a/journals/templates/journals/SciPostPhys_about.html +++ b/journals/templates/journals/SciPostPhys_about.html @@ -69,4 +69,46 @@ </div> </div> + + + <div class="row"> + <div class="col-12"> + <ul class="nav nav-tabs" id="myTab" role="tablist"> + <li class="nav-item"> + <a class="nav-link active" id="most-cited-tab" data-toggle="tab" href="#most-cited" role="tab" aria-controls="most-cited" aria-selected="true">Most cited</a> + </li> + <li class="nav-item"> + <a class="nav-link" id="latest-tab" data-toggle="tab" href="#latest" role="tab" aria-controls="latest" aria-selected="true">Latest articles</a> + </li> + </ul> + <div class="tab-content" id="journals-about"> + <div class="tab-pane fade show active pt-4" id="most-cited" role="tabpanel" aria-labelledby="most-cited-tab"> + <ul class="list-unstyled mt-2"> + {% for publication in most_cited %} + <li> + <div class="card card-grey card-publication"> + {% include 'journals/_publication_card_content.html' with publication=publication include_citation_rate=1 %} + </div> + </li> + {% empty %} + <li><em>No match found for your search query.</em></li> + {% endfor %} + </ul> + </div> + <div class="tab-pane fade show pt-4" id="latest" role="tabpanel" aria-labelledby="latest-tab"> + <ul class="list-unstyled mt-2"> + {% for publication in latest_publications %} + <li> + <div class="card card-grey card-publication"> + {% include 'journals/_publication_card_content.html' with publication=publication %} + </div> + </li> + {% empty %} + <li><em>No match found for your search query.</em></li> + {% endfor %} + </ul> + </div> + </div> + </div> + </div> {% endblock %} diff --git a/journals/templates/journals/_publication_card_content.html b/journals/templates/journals/_publication_card_content.html index 787b9f96264af1c3ecad0c2c9a36fa123422304b..a8cc5982f32f0760140d644d4343a09319dab07d 100644 --- a/journals/templates/journals/_publication_card_content.html +++ b/journals/templates/journals/_publication_card_content.html @@ -2,18 +2,27 @@ <h3 class="py-0"><a href="{{publication.get_absolute_url}}">{{ publication.title }}</a></h3> </div> <div class="card-body publication-{{publication.id}}"> - <p class="card-text mb-2">{{ publication.author_list }}</p> - <p class="card-text text-muted"> - {{ publication.citation }} · - <span class="font-weight-light"> - published {{ publication.publication_date|date:'j F Y' }} - {% if publication.cc_license != 'CC BY 4.0' %} - · licensed under {{publication.get_cc_license_display}} + <div class="row justify-content-between mb-0"> + <div class="col"> + <p class="card-text mb-2">{{ publication.author_list }}</p> + <p class="card-text text-muted"> + {{ publication.citation }} · + <span class="font-weight-light"> + published {{ publication.publication_date|date:'j F Y' }} + {% if publication.cc_license != 'CC BY 4.0' %} + · licensed under {{publication.get_cc_license_display}} + {% endif %} + </span> + <span class="mx-1">|</span> + <a href="javascript:;" data-toggle="toggle" data-target=".card-body.publication-{{publication.id}} .abstract">Toggle abstract</a> + · <a href="{{publication.get_absolute_url}}/pdf" target="_blank">pdf</a> + </p> + <p class="abstract mb-0 mt-2 py-2" style="display:none;">{{ publication.abstract }}</p> + </div> + <div class="col"> + {% if include_citation_rate %} + <h3><span class="badge badge-primary">Cited {{ publication.number_of_citations }} times</span></h3> {% endif %} - </span> - <span class="mx-1">|</span> - <a href="javascript:;" data-toggle="toggle" data-target=".card-body.publication-{{publication.id}} .abstract">Toggle abstract</a> - · <a href="{{publication.get_absolute_url}}/pdf" target="_blank">pdf</a> - </p> - <p class="abstract mb-0 mt-2 py-2" style="display:none;">{{ publication.abstract }}</p> + </div> + </div> </div> diff --git a/journals/views.py b/journals/views.py index 0963cb3f978dbba1022b624c3fb8ca531569d5d1..489a09b219333994bd2e23a2e53969cbad1ae767 100644 --- a/journals/views.py +++ b/journals/views.py @@ -167,7 +167,11 @@ def info_for_authors(request, doi_label): def about(request, doi_label): journal = get_object_or_404(Journal, doi_label=doi_label) - context = {'journal': journal} + context = { + 'journal': journal, + 'most_cited': Publication.objects.for_journal(journal.name).published().most_cited(5), + 'latest_publications': Publication.objects.for_journal(journal.name)[:5] + } return render(request, 'journals/%s_about.html' % doi_label, context) @@ -783,6 +787,7 @@ def harvest_citedby_links(request, doi_label): # Update Publication object publication.citedby = citations + publication.number_of_citations = len(citations) publication.latest_citedby_update = timezone.now() publication.save() context = { diff --git a/scipost/static/scipost/assets/css/_nav.scss b/scipost/static/scipost/assets/css/_nav.scss index d33cb87ddac8b2f23a73f83970814fe8d1764fca..bedc3a8d368ec63881ecca6b4d93ecf11b669a7f 100644 --- a/scipost/static/scipost/assets/css/_nav.scss +++ b/scipost/static/scipost/assets/css/_nav.scss @@ -76,3 +76,12 @@ nav.main-nav { text-align: center; padding: 3rem; } + + +.nav-tabs .nav-link { + border-radius: 0; + + &.active { + border-top: 3px solid $scipost-darkblue; + } +}