src/pyams_content/skin/resources/js/pyams_content.js
changeset 67 aaf228e67189
parent 35 7cdbe0f6e5c2
child 70 ba26f4023bc2
--- a/src/pyams_content/skin/resources/js/pyams_content.js	Fri Jan 20 15:39:58 2017 +0100
+++ b/src/pyams_content/skin/resources/js/pyams_content.js	Fri Jan 20 15:40:59 2017 +0100
@@ -87,21 +87,46 @@
 		 */
 		links: {
 
+			init: function() {
+
+				function initElements(data, status) {
+					var plugin = select.data('select2');
+					plugin.results.empty();
+					plugin.opts.populateResults.call(plugin, plugin.results, data, {term: ''});
+				}
+
+				var select = $(this);
+				MyAMS.ajax.post('get-links.json', {
+					keyFieldName: 'id',
+					valueFieldName: 'text'
+				}, initElements);
+			},
+
 			refresh: function(options) {
 				if (typeof(options) === 'string') {
 					options = JSON.parse(options);
 				}
-				var select = $('select[name="form.widgets.links:list"]');
+				var select = $('input[name="form.widgets.link"], select[name="form.widgets.links:list"]');
 				var plugin = select.data('select2');
-				$('<option></option>').attr('value', options.new_link.id)
-									  .attr('selected', 'selected')
-									  .text(options.new_link.text)
-									  .appendTo(select);
-				var data = select.select2('data');
-				data.push(options.new_link);
-				select.select2('data', data);
-				plugin.results.empty();
-				plugin.opts.populateResults.call(plugin, plugin.results, options.links, {term: ''});
+				if (select.attr('type') === 'select') {
+					$('<option></option>').attr('value', options.new_link.id)
+										  .attr('selected', 'selected')
+										  .text(options.new_link.text)
+										  .appendTo(select);
+				}
+				var data;
+				if (select.prop('multiple')) {
+					data = select.select2('data');
+					data.push(options.new_link);
+					select.select2('data', data);
+					plugin.results.empty();
+					plugin.opts.populateResults.call(plugin, plugin.results, options.links, {term: ''});
+				} else {
+					select.select2('data', [options.new_link]);
+					plugin.results.empty();
+					plugin.opts.populateResults.call(plugin, plugin.results, options.links, {term: ''});
+					select.val(options.new_link.id);
+				}
 			},
 
 			refreshContainer: function(changes) {
@@ -184,6 +209,22 @@
 
 
 		/**
+		 * Image map management
+		 */
+		imgmap: {
+
+			init: function() {
+				var element = $(this);
+				MyAMS.ajax.check($.fn.canvasAreaDraw,
+								 '/--static--/pyams_content/js/jquery-canvasAreaDraw' + MyAMS.devext + '.js',
+								 function() {
+									element.canvasAreaDraw({imageUrl: element.data('ams-image-url')});
+								 });
+			}
+		},
+
+
+		/**
 		 * Paragraphs management
 		 */
 		paragraphs: {