src/pyams_content/skin/resources/js/pyams_content.js
changeset 0 7c0001cacf8e
child 19 25e455568b00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/skin/resources/js/pyams_content.js	Thu Oct 08 13:37:29 2015 +0200
@@ -0,0 +1,164 @@
+(function($) {
+
+	PyAMS_content = {
+
+		/**
+		 * TinyMCE editor configuration
+		 */
+		TinyMCE: {
+
+			initEditor: function(settings) {
+				settings.image_list = PyAMS_content.TinyMCE.getImagesList;
+				settings.link_list = PyAMS_content.TinyMCE.getLinksList;
+				return settings;
+			},
+
+			getImagesList: function(callback) {
+				return MyAMS.ajax.post('get-images-list.json', {}, callback);
+			},
+
+			getLinksList: function(callback) {
+				return MyAMS.ajax.post('get-links-list.json', {}, callback);
+			}
+		},
+
+		/**
+		 * External files management
+		 */
+		extfiles: {
+
+			refresh: function(options) {
+				if (typeof(options) == 'string')
+					options = JSON.parse(options);
+				var select = $('select[name="form.widgets.files:list"]');
+				var plugin = select.data('select2');
+				$('<option></option>').attr('value', options.new_file.id)
+									  .attr('selected', 'selected')
+									  .text(options.new_file.text)
+									  .appendTo(select);
+				var data = select.select2('data');
+				data.push(options.new_file);
+				select.select2('data', data);
+				plugin.results.empty();
+				plugin.opts.populateResults.call(plugin, plugin.results, options.files, {term: ''});
+			}
+		},
+
+
+		/**
+		 * Links management
+		 */
+		links: {
+
+			refresh: function(options) {
+				if (typeof(options) == 'string')
+					options = JSON.parse(options);
+				var select = $('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: ''});
+			}
+		},
+
+
+		/**
+		 * Galleries management
+		 */
+		galleries: {
+
+			refresh: function(options) {
+				if (typeof(options) == 'string')
+					options = JSON.parse(options);
+				var select = $('select[name="form.widgets.galleries:list"]');
+				var plugin = select.data('select2');
+				$('<option></option>').attr('value', options.new_gallery.id)
+									  .attr('selected', 'selected')
+									  .text(options.new_gallery.text)
+									  .appendTo(select);
+				var data = select.select2('data');
+				data.push(options.new_gallery);
+				select.select2('data', data);
+				plugin.results.empty();
+				plugin.opts.populateResults.call(plugin, plugin.results, options.galleries, {term: ''});
+			},
+
+			setOrder: function(event, ui) {
+				if (ui && ui.item.hasClass('already-dropped'))
+					return;
+				var gallery = ui.item.parents('.gallery');
+				var ids = $('.image', gallery).listattr('data-ams-element-name');
+				MyAMS.ajax.post(gallery.data('ams-location') + '/set-images-order.json',
+								{images: JSON.stringify(ids)});
+			},
+
+			removeFile: function(element) {
+				return function() {
+					var link = $(this);
+					MyAMS.skin.bigBox({
+						title: MyAMS.i18n.WARNING,
+						content: '<i class="text-danger fa fa-2x fa-bell shake animated"></i>&nbsp; ' + MyAMS.i18n.DELETE_WARNING,
+						buttons: MyAMS.i18n.BTN_OK_CANCEL
+					}, function(button) {
+						if (button == MyAMS.i18n.BTN_OK) {
+							var gallery = link.parents('.gallery');
+							var location = gallery.data('ams-location');
+							var image = link.parents('.image');
+							var object_name = image.data('ams-element-name');
+							MyAMS.ajax.post(location + '/delete-element.json', {'object_name': object_name}, function(result, status) {
+								image.remove();
+							});
+						}
+					});
+				}
+			}
+		},
+
+
+		/**
+		 * Themes management
+		 */
+		themes: {
+
+			initExtracts: function(element) {
+				var thesaurus = $('select[name="form.widgets.thesaurus_name:list"]', element);
+				var thesaurus_name = thesaurus.val();
+				var extract = $('select[name="form.widgets.extract_name:list"]', element);
+				var extract_name = extract.val();
+				if (thesaurus_name) {
+					MyAMS.jsonrpc.post('getExtracts', {thesaurus_name: thesaurus_name}, {url: '/api/thesaurus/json'}, function(data) {
+						extract.empty();
+						$(data.result).each(function() {
+							$('<option></option>').attr('value', this.id)
+												  .attr('selected', this.id == extract_name)
+												  .text(this.text)
+												  .appendTo(extract);
+						});
+					});
+				}
+				extract.attr('data-ams-events-handlers', '{"select2-open": "PyAMS_content.themes.getExtracts"}');
+			},
+
+			getExtracts: function(event) {
+				var select = $(event.currentTarget);
+				var form = select.parents('form');
+				var thesaurus_name = $('select[name="form.widgets.thesaurus_name:list"]', form).val();
+				if (thesaurus_name) {
+					MyAMS.jsonrpc.post('getExtracts', {thesaurus_name: thesaurus_name}, {url: '/api/thesaurus/json'}, function(data) {
+						var extract = $('select[name="form.widgets.extract_name:list"]', form);
+						var plugin = extract.data('select2');
+						plugin.results.empty();
+						plugin.opts.populateResults.call(plugin, plugin.results, data.result, {term: ''});
+					});
+				}
+			}
+		}
+	}
+
+})(jQuery);