16 settings.link_list = PyAMS_content.TinyMCE.getLinksList; |
16 settings.link_list = PyAMS_content.TinyMCE.getLinksList; |
17 return settings; |
17 return settings; |
18 }, |
18 }, |
19 |
19 |
20 getImagesList: function(callback) { |
20 getImagesList: function(callback) { |
21 return MyAMS.ajax.post('get-images-list.json', {}, callback); |
21 var form = $(document.activeElement).parents('form'); |
|
22 if (form.exists()) { |
|
23 var base = form.attr('data-ams-form-handler') || form.attr('action'); |
|
24 var target = base.substr(0, base.lastIndexOf('/') + 1); |
|
25 return MyAMS.ajax.post(target + 'get-images-list.json', {}, callback); |
|
26 } |
22 }, |
27 }, |
23 |
28 |
24 getLinksList: function(callback) { |
29 getLinksList: function(callback) { |
25 return MyAMS.ajax.post('get-links-list.json', {}, callback); |
30 var form = $(document.activeElement).parents('form'); |
|
31 if (form.exists()) { |
|
32 var base = form.attr('data-ams-form-handler') || form.attr('action'); |
|
33 var target = base.substr(0, base.lastIndexOf('/')+1); |
|
34 return MyAMS.ajax.post(target + 'get-links-list.json', {}, callback); |
|
35 } |
26 } |
36 } |
27 }, |
37 }, |
28 |
38 |
29 /** |
39 /** |
30 * User profile management |
40 * User profile management |
47 }); |
57 }); |
48 } |
58 } |
49 }, |
59 }, |
50 |
60 |
51 /** |
61 /** |
52 * External files management |
|
53 */ |
|
54 extfiles: { |
|
55 |
|
56 refresh: function(options) { |
|
57 if (typeof(options) === 'string') { |
|
58 options = JSON.parse(options); |
|
59 } |
|
60 var select = $('select[name="form.widgets.files:list"]'); |
|
61 var plugin = select.data('select2'); |
|
62 $('<option></option>').attr('value', options.new_file.id) |
|
63 .attr('selected', 'selected') |
|
64 .text(options.new_file.text) |
|
65 .appendTo(select); |
|
66 var data = select.select2('data'); |
|
67 data.push(options.new_file); |
|
68 select.select2('data', data); |
|
69 plugin.results.empty(); |
|
70 plugin.opts.populateResults.call(plugin, plugin.results, options.files, {term: ''}); |
|
71 }, |
|
72 |
|
73 refreshContainer: function(changes) { |
|
74 var para = $('tr[data-ams-element-name="' + changes.object_name + '"]'); |
|
75 var counter = $('span.count', $('div.action.extfiles', para)); |
|
76 if (changes.nb_files > 0) { |
|
77 counter.text('(' + changes.nb_files + ')'); |
|
78 } else { |
|
79 counter.text(''); |
|
80 } |
|
81 } |
|
82 }, |
|
83 |
|
84 |
|
85 /** |
|
86 * Links management |
|
87 */ |
|
88 links: { |
|
89 |
|
90 init: function() { |
|
91 |
|
92 function initElements(data, status) { |
|
93 var plugin = select.data('select2'); |
|
94 plugin.results.empty(); |
|
95 plugin.opts.populateResults.call(plugin, plugin.results, data, {term: ''}); |
|
96 } |
|
97 |
|
98 var select = $(this); |
|
99 MyAMS.ajax.post('get-links.json', { |
|
100 keyFieldName: 'id', |
|
101 valueFieldName: 'text' |
|
102 }, initElements); |
|
103 }, |
|
104 |
|
105 refresh: function(options) { |
|
106 if (typeof(options) === 'string') { |
|
107 options = JSON.parse(options); |
|
108 } |
|
109 var select = $('input[name="form.widgets.link"], select[name="form.widgets.links:list"]'); |
|
110 var plugin = select.data('select2'); |
|
111 if (select.attr('type') === 'select') { |
|
112 $('<option></option>').attr('value', options.new_link.id) |
|
113 .attr('selected', 'selected') |
|
114 .text(options.new_link.text) |
|
115 .appendTo(select); |
|
116 } |
|
117 var data; |
|
118 if (select.prop('multiple')) { |
|
119 data = select.select2('data'); |
|
120 data.push(options.new_link); |
|
121 select.select2('data', data); |
|
122 plugin.results.empty(); |
|
123 plugin.opts.populateResults.call(plugin, plugin.results, options.links, {term: ''}); |
|
124 } else { |
|
125 select.select2('data', [options.new_link]); |
|
126 plugin.results.empty(); |
|
127 plugin.opts.populateResults.call(plugin, plugin.results, options.links, {term: ''}); |
|
128 select.val(options.new_link.id); |
|
129 } |
|
130 }, |
|
131 |
|
132 refreshContainer: function(changes) { |
|
133 var para = $('tr[data-ams-element-name="' + changes.object_name + '"]'); |
|
134 var counter = $('span.count', $('div.action.links', para)); |
|
135 if (changes.nb_links > 0) { |
|
136 counter.text('(' + changes.nb_links + ')'); |
|
137 } else { |
|
138 counter.text(''); |
|
139 } |
|
140 } |
|
141 }, |
|
142 |
|
143 |
|
144 /** |
|
145 * Galleries management |
62 * Galleries management |
146 */ |
63 */ |
147 galleries: { |
64 galleries: { |
|
65 |
|
66 switchImageVisibility: function(element) { |
|
67 return function() { |
|
68 var source = $(this); |
|
69 var image = source.parents('.image'); |
|
70 var gallery = image.parents('.gallery'); |
|
71 MyAMS.ajax.post(gallery.data('ams-location') + '/set-image-visibility.json', |
|
72 {object_name: image.data('ams-element-name')}, |
|
73 function(result, status) { |
|
74 if (result.visible) { |
|
75 $('i', source).attr('class', 'fa fa-fw fa-eye'); |
|
76 } else { |
|
77 $('i', source).attr('class', 'fa fa-fw fa-eye-slash text-danger'); |
|
78 } |
|
79 }); |
|
80 }; |
|
81 }, |
148 |
82 |
149 refresh: function(options) { |
83 refresh: function(options) { |
150 if (typeof(options) === 'string') { |
84 if (typeof(options) === 'string') { |
151 options = JSON.parse(options); |
85 options = JSON.parse(options); |
152 } |
86 } |
262 }, |
196 }, |
263 |
197 |
264 refreshParagraph: function(changes) { |
198 refreshParagraph: function(changes) { |
265 var container = $('table[id="paragraphs_list"]'); |
199 var container = $('table[id="paragraphs_list"]'); |
266 var para = $('tr[data-ams-element-name="' + changes.object_name + '"]', container); |
200 var para = $('tr[data-ams-element-name="' + changes.object_name + '"]', container); |
267 if (changes.visible) { |
201 $('span.title', para).html(changes.title || ' - - - - - - - -'); |
268 $('i', $('td.switcher', para)).removeClass('fa-eye-slash text-danger') |
|
269 .addClass('fa-eye'); |
|
270 } else { |
|
271 $('i', $('td.switcher', para)).removeClass('fa-eye') |
|
272 .addClass('fa-eye-slash text-danger'); |
|
273 } |
|
274 $('span.title', para).text(changes.title || '--'); |
|
275 }, |
202 }, |
276 |
203 |
277 switchEditor: function(element) { |
204 switchEditor: function(element) { |
278 var source = $(this); |
205 var source = $(this); |
279 var switcher = $('i', source); |
206 var switcher = $('i', source); |
344 } |
271 } |
345 }, |
272 }, |
346 |
273 |
347 |
274 |
348 /** |
275 /** |
|
276 * Associations management |
|
277 */ |
|
278 associations: { |
|
279 |
|
280 afterUpdateCallback: function(options) { |
|
281 // Reload widget |
|
282 var widget = $('#' + options.parent).parent('.ams-widget'); |
|
283 widget.replaceWith($(options.table)); |
|
284 widget = $('#' + options.parent).parent('.ams-widget'); |
|
285 MyAMS.initContent(widget); |
|
286 // Check fieldset state |
|
287 var legend = widget.siblings('legend'); |
|
288 if (legend.parents('fieldset:first').hasClass('switched')) { |
|
289 legend.click(); |
|
290 } |
|
291 }, |
|
292 |
|
293 switchVisibility: function (element) { |
|
294 return function () { |
|
295 var source = $(this); |
|
296 var association = source.parents('tr'); |
|
297 var container = association.parents('table'); |
|
298 MyAMS.ajax.post(container.data('ams-location') + '/set-association-visibility.json', |
|
299 {object_name: association.data('ams-element-name')}, |
|
300 function (result, status) { |
|
301 if (result.visible) { |
|
302 $('i', source).attr('class', 'fa fa-fw fa-eye'); |
|
303 } else { |
|
304 $('i', source).attr('class', 'fa fa-fw fa-eye-slash text-danger'); |
|
305 } |
|
306 }); |
|
307 }; |
|
308 } |
|
309 }, |
|
310 |
|
311 |
|
312 /** |
|
313 * Illustration management |
|
314 */ |
|
315 illustration: { |
|
316 |
|
317 afterUpdateCallback: function(options) { |
|
318 var parent = $('#' + options.parent); |
|
319 parent.replaceWith($(options.form)); |
|
320 parent = $('#' + options.parent); |
|
321 MyAMS.initContent(parent); |
|
322 } |
|
323 }, |
|
324 |
|
325 |
|
326 /** |
349 * Themes management |
327 * Themes management |
350 */ |
328 */ |
351 themes: { |
329 themes: { |
352 |
330 |
353 initExtracts: function(element) { |
331 initExtracts: function(element) { |
473 $(globals.document).on('PyAMS_content.changed_item', function(event, settings) { |
451 $(globals.document).on('PyAMS_content.changed_item', function(event, settings) { |
474 switch (settings.object_type) { |
452 switch (settings.object_type) { |
475 case 'paragraph': |
453 case 'paragraph': |
476 PyAMS_content.paragraphs.refreshParagraph(settings); |
454 PyAMS_content.paragraphs.refreshParagraph(settings); |
477 break; |
455 break; |
478 case 'extfiles_container': |
|
479 PyAMS_content.extfiles.refreshContainer(settings); |
|
480 break; |
|
481 case 'links_container': |
|
482 PyAMS_content.links.refreshContainer(settings); |
|
483 break; |
|
484 case 'galleries_container': |
|
485 PyAMS_content.galleries.refreshContainer(settings); |
|
486 break; |
|
487 case 'review_comments': |
456 case 'review_comments': |
488 PyAMS_content.review.updateComments(); |
457 PyAMS_content.review.updateComments(); |
489 break; |
458 break; |
490 } |
459 } |
491 }); |
460 }); |