From 476baed64ad62648be2fb81b8053ef04579953ec Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Fri, 24 May 2019 16:54:46 +0200 Subject: [PATCH] Move conflicts javascript to static file --- scipost/static/scipost/update-conflict.js | 51 ++++++++++++++++++ .../partials/submissions/admin/conflicts.html | 53 ++----------------- 2 files changed, 56 insertions(+), 48 deletions(-) create mode 100644 scipost/static/scipost/update-conflict.js diff --git a/scipost/static/scipost/update-conflict.js b/scipost/static/scipost/update-conflict.js new file mode 100644 index 000000000..4e1b5671e --- /dev/null +++ b/scipost/static/scipost/update-conflict.js @@ -0,0 +1,51 @@ + function csrfSafeMethod(method) { + // these HTTP methods do not require CSRF protection + return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); + } + function getCookie(name) { + var cookieValue = null; + if (document.cookie && document.cookie !== '') { + var cookies = document.cookie.split(';'); + for (var i = 0; i < cookies.length; i++) { + var cookie = jQuery.trim(cookies[i]); + // Does this cookie string begin with the name we want? + if (cookie.substring(0, name.length + 1) === (name + '=')) { + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); + break; + } + } + } + return cookieValue; + } + var csrftoken = getCookie('csrftoken'); + + function update_conflict(conflict_id, status, url) { + $.ajax({ + "method": "POST", + "url": url, + "data": { + 'status': status, + 'csrftoken': getCookie('csrftoken'), + }, + "beforeSend": function(xhr, settings) { + if (!csrfSafeMethod(settings.type) && !this.crossDomain) { + xhr.setRequestHeader("X-CSRFToken", csrftoken); + } + }, + }).done(function( data ) { + if ( data['status'] == 'verified' ) { + $("#conflict-" + data['id'] + " .status").html('<i class="fa-li fa fa-check-circle text-success" aria-hidden="true"></i> Verified by Admin'); + } else if ( data['status'] == 'deprecated' ) { + $("#conflict-" + data['id'] ).fadeTo("fast", 0.3).find('.status').html('<i class="fa-li fa fa-times-circle text-danger" aria-hidden="true"></i> <em>Deleted</em>'); + } + }); + } + + $(document).ready(function () { + $('.update-conflict-button').on('click', function() { + id = $(this).data('conflict-id'); + status = $(this).data('status'); + url = $(this).data('urllink'); + update_conflict(id, status, url); + }); + }); diff --git a/submissions/templates/partials/submissions/admin/conflicts.html b/submissions/templates/partials/submissions/admin/conflicts.html index 638cf8c92..51281f037 100644 --- a/submissions/templates/partials/submissions/admin/conflicts.html +++ b/submissions/templates/partials/submissions/admin/conflicts.html @@ -1,3 +1,5 @@ +{% load static %} + {% if conflicts %} {{ conflicts|length }} (potential) conflict{{ conflicts|length|pluralize }} found: <ul class="fa-ul mt-2"> @@ -7,10 +9,9 @@ {% if conflict.status == 'unverified' %} <i class="fa-li fa fa-question-circle text-warning" aria-hidden="true"></i> Please - <button type="button" class="btn btn-link p-0" onclick="update_conflict({{ conflict.id }}, 'verified')">verify</button> + <button type="button" class="btn btn-link p-0 update-conflict-button" data-conflict-id="{{ conflict.id }}" data-status="verified" data-urllink="{% url 'api:conflictofinterest-verify_conflict' conflict.id %}">confirm</button> or - <button type="button" class="btn btn-link p-0 text-danger" onclick="update_conflict({{ conflict.id }}, 'delete')">delete</button> - + <button type="button" class="btn btn-link p-0 text-danger update-conflict-button" data-conflict-id="{{ conflict.id }}" data-status="delete" data-urllink="{% url 'api:conflictofinterest-verify_conflict' conflict.id %}">delete</button> this conflict. {% elif conflict.status == 'verified' %} <i class="fa-li fa fa-check-circle text-success" aria-hidden="true"></i> @@ -40,49 +41,5 @@ {% block footer_script %} - <script type="text/javascript" nonce="{{ request.csp_nonce }}"> - function csrfSafeMethod(method) { - // these HTTP methods do not require CSRF protection - return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); - } - function getCookie(name) { - var cookieValue = null; - if (document.cookie && document.cookie !== '') { - var cookies = document.cookie.split(';'); - for (var i = 0; i < cookies.length; i++) { - var cookie = jQuery.trim(cookies[i]); - // Does this cookie string begin with the name we want? - if (cookie.substring(0, name.length + 1) === (name + '=')) { - cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); - break; - } - } - } - return cookieValue; - } - var csrftoken = getCookie('csrftoken'); - - function update_conflict(conflict_id, status) { - $.ajax({ - "method": "POST", - "url": "{% url 'api:conflictofinterest-verify_conflict' 0 %}".replace("0", conflict_id), - "data": { - 'status': status, - 'csrftoken': getCookie('csrftoken'), - }, - "beforeSend": function(xhr, settings) { - if (!csrfSafeMethod(settings.type) && !this.crossDomain) { - xhr.setRequestHeader("X-CSRFToken", csrftoken); - } - }, - }).done(function( data ) { - if ( data['status'] == 'verified' ) { - $("#conflict-" + data['id'] + " .status").html('<i class="fa-li fa fa-check-circle text-success" aria-hidden="true"></i> Verified by Admin'); - } else if ( data['status'] == 'deprecated' ) { - $("#conflict-" + data['id'] ).fadeTo("fast", 0.3).find('.status').html('<i class="fa-li fa fa-times-circle text-danger" aria-hidden="true"></i> <em>Deleted</em>'); - } - }); - } - - </script> + <script src="{% static 'scipost/update-conflict.js' %}"></script> {% endblock %} -- GitLab