Commit 836fe36ed76daa5c74c19d3739dc7e7fa12f9b2f

Authored by Zambom
1 parent 4002c470

Updating webpage links

amadeus/static/css/themes/green.css
... ... @@ -370,7 +370,7 @@ a.add-row {
370 370 }
371 371  
372 372 .resource_list > .disabled a {
373   - color: #777;
  373 + color: #BDBDBD;
374 374 }
375 375  
376 376 .resource_list > .list-group-item:hover {
... ...
topics/models.py
... ... @@ -77,3 +77,19 @@ class Resource(KnowsChild):
77 77 @always_as_child
78 78 def access_link(self):
79 79 pass
  80 +
  81 + """
  82 + Method to get the appropriated update link
  83 + Must override in the child models
  84 + """
  85 + @always_as_child
  86 + def update_link(self):
  87 + pass
  88 +
  89 + """
  90 + Method to get the appropriated delete link
  91 + Must override in the child models
  92 + """
  93 + @always_as_child
  94 + def delete_link(self):
  95 + pass
80 96 \ No newline at end of file
... ...
topics/templates/resources/list.html 0 → 100644
... ... @@ -0,0 +1,108 @@
  1 +{% load static i18n pagination permissions_tags %}
  2 +{% load django_bootstrap_breadcrumbs %}
  3 +
  4 +{% subject_permissions request.user topic.subject as has_subject_permissions %}
  5 +
  6 +<div id="resource_{{ topic.slug }}" class="list-group resource_list">
  7 + {% for resource in topic.resource_topic.all %}
  8 + {% if resource.visible or has_subject_permissions %}
  9 + <div class="list-group-item {% if not resource.visible %}disabled{% endif %}">
  10 + <input type="hidden" class="id_inp" name="id" value="{{ resource.id }}" />
  11 + <input type="hidden" class="order_inp" name="order" value="{{ resource.order }}" />
  12 + <input type="hidden" class="url_order" value="{% url 'topics:update_resource_order' %}" />
  13 +
  14 + <h4 class="pull-left list-group-item-heading">
  15 + <a href="{% url resource.access_link resource.slug %}" class="resource_link" {% if resource.show_window %}target="_blank"{% endif %}>
  16 + {{ resource }}
  17 + </a>
  18 + </h4>
  19 +
  20 + {% if has_subject_permissions %}
  21 + <div class="pull-right category-card-items">
  22 + <a><i class="fa fa-arrows" aria-hidden="true"></i></a>
  23 + <span class="btn-group pull-right">
  24 + <button class="btn btn-sm btn_menu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  25 + <i class="fa fa-ellipsis-v" aria-hidden="true"></i>
  26 + </button>
  27 + <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="moreResources">
  28 + <li><a href="{% url resource.update_link topic.slug resource.slug %}" class="edit"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>{% trans 'Edit' %}</a></li>
  29 + <li><a href="javascript:delete_resource('{% url resource.delete_link resource.slug %}')" class="delete"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>{% trans 'Remove' %}</a></li>
  30 + </ul>
  31 + </span>
  32 + </div>
  33 + {% endif %}
  34 + <br clear="all" />
  35 + {% autoescape off %}
  36 + {{ resource.brief_description }}
  37 + {% endautoescape %}
  38 + </div>
  39 + {% endif %}
  40 + {% endfor %}
  41 +</div>
  42 +<script type="text/javascript">
  43 + function delete_resource(url) {
  44 + $('.modal').remove();
  45 +
  46 + $.get(url, function (modal) {
  47 + $("#resource_{{ topic.slug }}").parent().after(modal);
  48 +
  49 + $('.modal').modal('show');
  50 + });
  51 + }
  52 +
  53 + $(".list-group-item").unbind().on('click', function (e) {
  54 + var arrow = $(this).find('i.fa-arrows').is(e.target),
  55 + menu = $(this).find('i.fa-ellipsis-v').is(e.target),
  56 + btn = $(this).find('button.btn_menu').is(e.target),
  57 + del = $(this).find('a.delete').is(e.target),
  58 + upd = $(this).find('a.edit').is(e.target);
  59 +
  60 + if (!arrow && !menu && !del && !upd && !btn) {
  61 + var link = $(this).find('.resource_link').attr('href'),
  62 + target = $(this).find('.resource_link').attr('target');
  63 +
  64 + if (typeof(target) != 'undefined') {
  65 + window.open(link, target);
  66 + } else {
  67 + window.location = link;
  68 + }
  69 + }
  70 + });
  71 +
  72 + $("#resource_{{ topic.slug }}").sortable({
  73 + delay: 100,
  74 + distance: 5,
  75 + handle: 'i.fa-arrows',
  76 + update: function( event, ui ) {
  77 + var cont = 1;
  78 + var data = [];
  79 +
  80 + $("#resource_{{ topic.slug }}").find('.order_inp').each(function () {
  81 + $(this).val(cont++);
  82 +
  83 + data.push({
  84 + 'resource_id': $(this).parent().find('.id_inp').val(),
  85 + 'resource_order': $(this).val()
  86 + });
  87 + });
  88 +
  89 + data = JSON.stringify(data);
  90 +
  91 + sendUpdateResource(data);
  92 + },
  93 + });
  94 +
  95 + function sendUpdateResource(data) {
  96 + $.ajax({
  97 + url: $("#resource_{{ topic.slug }}").find('.url_order').val(),
  98 + dataType: 'json',
  99 + data: {'data': data},
  100 + success: function(response) {
  101 + console.log(response);
  102 + },
  103 + error: function(response) {
  104 + console.log(response);
  105 + }
  106 + });
  107 + }
  108 +</script>
0 109 \ No newline at end of file
... ...
topics/templates/topics/list.html
... ... @@ -59,7 +59,7 @@
59 59 </div>
60 60 {% endif %}
61 61  
62   - {% include 'webpages/list.html' with topic=topic %}
  62 + {% include 'resources/list.html' with topic=topic %}
63 63 </div>
64 64 </div>
65 65 {% endif %}
... ...
webpage/models.py
... ... @@ -19,3 +19,9 @@ class Webpage(Resource):
19 19 return 'webpages:window_view'
20 20  
21 21 return 'webpages:view'
  22 +
  23 + def update_link(self):
  24 + return 'webpages:update'
  25 +
  26 + def delete_link(self):
  27 + return 'webpages:delete'
... ...
webpage/templates/webpages/list.html
... ... @@ -1,108 +0,0 @@
1   -{% load static i18n pagination permissions_tags %}
2   -{% load django_bootstrap_breadcrumbs %}
3   -
4   -{% subject_permissions request.user topic.subject as has_subject_permissions %}
5   -
6   -<div id="resource_{{ topic.slug }}" class="list-group resource_list">
7   - {% for resource in topic.resource_topic.all %}
8   - {% if resource.visible or has_subject_permissions %}
9   - <div class="list-group-item {% if not resource.visible %}disabled{% endif %}">
10   - <input type="hidden" class="id_inp" name="id" value="{{ resource.id }}" />
11   - <input type="hidden" class="order_inp" name="order" value="{{ resource.order }}" />
12   - <input type="hidden" class="url_order" value="{% url 'topics:update_resource_order' %}" />
13   -
14   - <h4 class="pull-left list-group-item-heading">
15   - <a href="{% url resource.access_link resource.slug %}" class="resource_link" {% if resource.show_window %}target="_blank"{% endif %}>
16   - {{ resource }}
17   - </a>
18   - </h4>
19   -
20   - {% if has_subject_permissions %}
21   - <div class="pull-right category-card-items">
22   - <a><i class="fa fa-arrows" aria-hidden="true"></i></a>
23   - <span class="btn-group pull-right">
24   - <button class="btn btn-sm btn_menu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
25   - <i class="fa fa-ellipsis-v" aria-hidden="true"></i>
26   - </button>
27   - <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="moreResources">
28   - <li><a href="{% url 'webpages:update' topic.slug resource.slug %}" class="edit"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>{% trans 'Edit' %}</a></li>
29   - <li><a href="javascript:delete_resource('{% url 'webpages:delete' resource.slug %}')" class="delete"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>{% trans 'Remove' %}</a></li>
30   - </ul>
31   - </span>
32   - </div>
33   - {% endif %}
34   - <br clear="all" />
35   - {% autoescape off %}
36   - {{ resource.brief_description }}
37   - {% endautoescape %}
38   - </div>
39   - {% endif %}
40   - {% endfor %}
41   -</div>
42   -<script type="text/javascript">
43   - function delete_resource(url) {
44   - $('.modal').remove();
45   -
46   - $.get(url, function (modal) {
47   - $("#resource_{{ topic.slug }}").parent().after(modal);
48   -
49   - $('.modal').modal('show');
50   - });
51   - }
52   -
53   - $(".list-group-item").unbind().on('click', function (e) {
54   - var arrow = $(this).find('i.fa-arrows').is(e.target),
55   - menu = $(this).find('i.fa-ellipsis-v').is(e.target),
56   - btn = $(this).find('button.btn_menu').is(e.target),
57   - del = $(this).find('a.delete').is(e.target),
58   - upd = $(this).find('a.edit').is(e.target);
59   -
60   - if (!arrow && !menu && !del && !upd && !btn) {
61   - var link = $(this).find('.resource_link').attr('href'),
62   - target = $(this).find('.resource_link').attr('target');
63   -
64   - if (typeof(target) != 'undefined') {
65   - window.open(link, target);
66   - } else {
67   - window.location = link;
68   - }
69   - }
70   - });
71   -
72   - $("#resource_{{ topic.slug }}").sortable({
73   - delay: 100,
74   - distance: 5,
75   - handle: 'i.fa-arrows',
76   - update: function( event, ui ) {
77   - var cont = 1;
78   - var data = [];
79   -
80   - $("#resource_{{ topic.slug }}").find('.order_inp').each(function () {
81   - $(this).val(cont++);
82   -
83   - data.push({
84   - 'resource_id': $(this).parent().find('.id_inp').val(),
85   - 'resource_order': $(this).val()
86   - });
87   - });
88   -
89   - data = JSON.stringify(data);
90   -
91   - sendUpdateResource(data);
92   - },
93   - });
94   -
95   - function sendUpdateResource(data) {
96   - $.ajax({
97   - url: $("#resource_{{ topic.slug }}").find('.url_order').val(),
98   - dataType: 'json',
99   - data: {'data': data},
100   - success: function(response) {
101   - console.log(response);
102   - },
103   - error: function(response) {
104   - console.log(response);
105   - }
106   - });
107   - }
108   -</script>
109 0 \ No newline at end of file