Spade

Mini Shell

Directory:~$ /proc/self/root/home/lmsyaran/www/joomla5/plugins/fabrik_list/update_col/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ //proc/self/root/home/lmsyaran/www/joomla5/plugins/fabrik_list/update_col/update_col.js

/**
 * List Update Column
 *
 * @copyright: Copyright (C) 2005-2016  Media A-Team, Inc. - All rights
reserved.
 * @license:   GNU/GPL http://www.gnu.org/copyleft/gpl.html
 */

/**
 * Simple store for element js objects
 * Need to be able to trigger onSave on things like date elements to get
correct format
 */
define(['jquery', 'fab/list-plugin'], function (jQuery,
FbListPlugin) {
	var UpdateColSelect = new Class({

		initialize: function () {
			this.updates = {};
		},

		/**
		 * As we are piggybacking on top of the advanced search code addFilter is
called when the
		 * ajax request returns.
		 */
		addFilter: function (pluginType, filter) {
			if (!this.updates[pluginType]) {
				this.updates[pluginType] = [];
			}
			this.updates[pluginType].push(filter);
		},

		/**
		 * Ensure that date elements set themselves to the correct date format
		 */
		onSumbit: function () {
			if (this.updates.date) {
				this.updates.date.each(function (f) {
					f.onSubmit();
				});
			}
		}
	});

	var FbListUpdate_col = new Class({
		Extends : FbListPlugin,
		initialize: function (options) {
			this.parent(options);
			if (!this.options.prompt && this.options.userSelect) {
				var k = 'filter_update_col' + this.options.ref +
'_' + this.options.renderOrder;
				Fabrik[k] = new UpdateColSelect();
				this.makeUpdateColWindow();
			}
		},

		buttonAction: function () {
			if (this.options.prompt) {
				var value = window.prompt(this.options.promptMsg, '');

				if (value !== null) {
					var listForm = document.id('listform_' + this.options.ref);

					// Grab all the update settings and put them in a hidden field for
					// later extraction within the update_col php code.
					var i = new Element('input', {'type':
'hidden', 'value': value,
						'name': 'fabrik_update_col'});
					i.inject(listForm, 'bottom');
					this.list.submit('list.doPlugin');
				}
			}
			else if (this.options.userSelect) {
				this.win.open();
			} else {
				this.list.submit('list.doPlugin');
			}
		},

		makeUpdateColWindow: function () {
			var tds, tr_clone, i, self = this;
			self.windowopts = {
				'id': 'update_col_win_' + self.options.ref +
'_' + self.options.renderOrder,
				title: Joomla.JText._('PLG_LIST_UPDATE_COL_UPDATE'),
				loadMethod: 'html',
				content: self.options.form,
				width: 400,
				destroy: false,
				height: 300,
				onOpen: function () {
					this.fitToContent(false);
				},
				onContentLoaded: function (win) {
					var form = document.id('update_col' + self.options.ref +
'_' + self.options.renderOrder);

					// Add a row
					form.addEvent('click:relay(a.add)', function (e, target) {
						e.preventDefault();
						var tr;
						var thead = target.getParent('thead');
						if (thead) {
							tr = form.getElements('tbody tr').getLast();
						} else {
							tr = target.getParent('tr');
						}
						if (tr.getStyle('display') === 'none') {
							tds = tr.getElements('td');
							tds[0].getElement('select').selectedIndex = 0;
							tds[1].empty();
							tr.show();
						} else {
							tr_clone = tr.clone();
							tds = tr_clone.getElements('td');
							tds[0].getElement('select').selectedIndex = 0;
							tds[1].empty();
							tr_clone.inject(tr, 'after');
						}

					});

					// Delete a row
					form.addEvent('click:relay(a.delete)', function (e, target)
{
						e.preventDefault();
						var trs = form.getElements('tbody tr');
						if (trs.length === 1) {
							trs.getLast().hide();
						} else {
							target.getParent('tr').destroy();
						}
					});

					// Select an element plugin and load it
					form.addEvent('change:relay(select.key)', function (e,
target) {
						var els =
target.getParent('tbody').getElements('.update_col_elements');
						for (i = 0; i < els.length; i++) {
							if (els[i] === target) {
								continue;
							}
							if (els[i].selectedIndex === target.selectedIndex) {
								// @TODO language
								window.alert('This element has already been selected!');
								return;
							}
						}
						var opt = target.options[target.selectedIndex];
						var row = target.getParent('tr');
						Fabrik.loader.start(row);
						var update = row.getElement('td.update_col_value');
						var v = target.get('value');
						var plugin = opt.get('data-plugin');
						var id = opt.get('data-id');
						var counter = 0;

						// Piggy backing on the list advanced search code to get an element
and its js
						var url =
'index.php?option=com_fabrik&task=list.elementFilter&format=raw';

						// It looks odd - but to get the element js code to load in correct
we need to set the context
						// to a visualization
						new Request.HTML({'url': url,
							'update': update,
							'data': {
								'element': v,
								'id': self.options.listid,
								'elid': id,
								'plugin': plugin,
								'counter': counter,
								'listref':  self.options.ref,
								'context': 'visualization',
								'parentView': 'update_col' + self.options.ref +
'_' + self.options.renderOrder,
								'fabrikIngoreDefaultFilterVal': 1
							},
							'onComplete': function () {
								Fabrik.loader.stop(row);
								self.win.fitToContent(false);
							}
						}).send();
					});

					// Submit the update
					form.getElement('input[type=button]').addEvent('click',
function (e) {
						e.stop();
						var i;
						Fabrik['filter_update_col'  + self.options.ref +
'_' + self.options.renderOrder].onSumbit();

						var listForm = document.id('listform_' + self.options.ref);

						// Grab all the update settings and put them in a hidden field for
						// later extraction within the update_col php code.
						i = new Element('input', {'type':
'hidden', 'value': form.toQueryString(),
							'name': 'fabrik_update_col'});
						i.inject(listForm, 'bottom');
						self.list.submit('list.doPlugin');

					});
				}
			};
			self.win = Fabrik.getWindow(self.windowopts);
			self.win.close();
		}
	});

	return FbListUpdate_col;
});