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,7 +370,7 @@ a.add-row {
370 } 370 }
371 371
372 .resource_list > .disabled a { 372 .resource_list > .disabled a {
373 - color: #777; 373 + color: #BDBDBD;
374 } 374 }
375 375
376 .resource_list > .list-group-item:hover { 376 .resource_list > .list-group-item:hover {
topics/models.py
@@ -77,3 +77,19 @@ class Resource(KnowsChild): @@ -77,3 +77,19 @@ class Resource(KnowsChild):
77 @always_as_child 77 @always_as_child
78 def access_link(self): 78 def access_link(self):
79 pass 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 \ No newline at end of file 96 \ No newline at end of file
topics/templates/resources/list.html 0 → 100644
@@ -0,0 +1,108 @@ @@ -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 \ No newline at end of file 109 \ No newline at end of file
topics/templates/topics/list.html
@@ -59,7 +59,7 @@ @@ -59,7 +59,7 @@
59 </div> 59 </div>
60 {% endif %} 60 {% endif %}
61 61
62 - {% include 'webpages/list.html' with topic=topic %} 62 + {% include 'resources/list.html' with topic=topic %}
63 </div> 63 </div>
64 </div> 64 </div>
65 {% endif %} 65 {% endif %}
webpage/models.py
@@ -19,3 +19,9 @@ class Webpage(Resource): @@ -19,3 +19,9 @@ class Webpage(Resource):
19 return 'webpages:window_view' 19 return 'webpages:window_view'
20 20
21 return 'webpages:view' 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,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 \ No newline at end of file 0 \ No newline at end of file