HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/PvdBoogaard/indoorski.nl/backup/oude-site/cms/javascript/admin.modules.js
$(function(){
	$.fn.hoverClassToggle = function(className) {
		return this.hover(function() {
			$(this).addClass(className);
		}, function() {
			$(this).removeClass(className);
		});
	};

	$.fn.flashTableRow = function (flashcol, returncol, callback) {
		return $('td', this).animate({ backgroundColor: flashcol ? flashcol : '#99FF66' }).animate({ backgroundColor: returncol ? returncol : '#F9F9F9' }, undefined, undefined, callback);
	};

	$('tr.Module').hoverClassToggle('ModuleOver');
})

function AdminModule (_data) {
	var self = this;

	this.id = 0;
	this.codename = '';
	this.modulename = '';
	this.iscontentmodule = false;
	this.iswebsitemodule = false;

	this.busy = false;

	this.setBusy = function () {
		self.busy = true;
		self.changeStatusImage(AdminModule.LoadingImage);
		self.updateLinksDisplay();
	};

	this.unSetBusy = function () {
		self.busy = false;
		self.changeStatusImage(self.id > 0 ? AdminModule.ActiveImage : AdminModule.InactiveImage);
		self.updateLinksDisplay();
	};

	this.isActive = function () {
		return self.id > 0;
	};

	this.updateLinksDisplay = function () {
		var busy = self.busy;
		var active = self.isActive();

		if (busy) {
			$('#moduleActionLinks_'+ self.codename).hide();
		} else {
			$('#moduleActionLinks_'+ self.codename).show();
		}
	};

	this.changeStatusImage = function (url) {
		$('#moduleStatusImage_'+ self.codename).attr('src', url);
	};

	this.toggle = function () {
		if (self.isActive()) {
			return self.deactivate();
		} else {
			return self.activate();
		}
	};

	this.activate = function () {
		if (self.busy || self.isActive()) { return false; }

		self.setBusy();

		$.getJSON('remote.php', {
			section: 'modules',
			action: 'ActivateModule',
			codename: self.codename
		}, self.activateCallback);

		return true;
	};

	/**
	 * Function to be called when server response to module activation is received.
	 */
	this.activateCallback = function (data, result) {
		if (data.row) {
			$('tr#Module_' + self.codename).replaceWith(data.row);
		}

		var success = false;
		if (result == 'success' && data && data.success == true) {
			success = true;
			self.id = data.id;
			$('#MainMessage').successMessage({$lang.SelectedModuleSuccessfullyActivated|iwp_FilterJavascriptString});
		} else {
			$('#MainMessage').errorMessage(data.error +'<ul><li>'+ data.messages.join('</li><li>') +'</li></ul>');
		}

		if (adminModules.bulkActionCount) {
			if (success) {
				adminModules.bulkActionSuccess++;
			} else {
				adminModules.bulkActionFail++;
			}

			if (!--adminModules.bulkActionCount) {
				adminModules.bulkActionComplete();
			}
		}

		self.unSetBusy();
	};

	/**
	 * Deactivates this module. Returns FALSE if the module is already deactivated or if the module is busy. Returns TRUE if a request to the server to activate this module was successfully sent.
	 */
	this.deactivate = function () {
		if (self.busy || !self.isActive()) { return false; }

		self.setBusy();

		$.getJSON('remote.php', {
			section: 'modules',
			action: 'DeactivateModule',
			codename: self.codename
		}, self.deactivateCallback);

		return true;
	};

	/**
	 * Function to be called when server response to module deactivation is received.
	 */
	this.deactivateCallback = function (data, result) {
		if (data.row) {
			$('tr#Module_' + self.codename).replaceWith(data.row);
		}

		var success = false;
		if (result == 'success' && data && data.success == true) {
			success = true;
			self.id = 0;
			$('#MainMessage').successMessage({$lang.SelectedModuleSuccessfullyDeactivated|iwp_FilterJavascriptString});
		} else {
			$('#MainMessage').errorMessage(data.error +'<ul><li>'+ data.messages.join('</li><li>') +'</li></ul>');
		}

		if (adminModules.bulkActionCount) {
			if (success) {
				adminModules.bulkActionSuccess++;
			} else {
				adminModules.bulkActionFail++;
			}

			if (!--adminModules.bulkActionCount) {
				adminModules.bulkActionComplete();
			}
		}

		self.unSetBusy();
	};

	if (_data !== undefined) {
		jQuery.extend(this, _data);
	}
}

AdminModule.ActiveImage = 'images/tick.gif';
AdminModule.InactiveImage = 'images/cross.gif';
AdminModule.LoadingImage = 'images/load.gif';

AdminModule.LangActivating = '{$lang.ActivatingModulePleaseWait}';
AdminModule.LangDeactivating = '{$lang.DeactivatingModulePleaseWait}';

function AdminModules (_data)
{
	var self = this;

	this.modules = [];

	/**
	 * Handles the completion of a bulk action
	 */
	this.bulkActionComplete = function () {
		var lang = 'Lang';

		if (self.bulkActionSuccess && self.bulkActionFail) {
			lang += 'Some';
		} else if (self.bulkActionSuccess) {
			lang += 'Selected';
		} else {
			lang += 'No';
		}

		lang += 'Modules';

		switch (self.bulkActionCode) {
			case 'activate':
				lang += 'Activated';
			break;

			case 'deactivate':
				lang += 'Deactivated';
			break;
		}

		$('#MainMessage').successMessage(AdminModules[lang]);
	};

	/**
	 * Handles a bulk action request from the control panel page
	 */
	this.bulkAction = function (action) {
		var action = String(action).toLowerCase();

		self.bulkActionCode = action;
		self.bulkActionSuccess = 0;
		self.bulkActionFail = 0;

		var form = $('#ModuleForm');
		var boxes = form.find('.bulkBox');

		boxes.each(function(i){
			var box = $(boxes[i]);
			if (!box.attr('checked')) { return; }

			var moduleName = box.val();
			var moduleIndex = self.findByCodename(moduleName);

			if (moduleIndex >= 0) {
				var module = self.modules[moduleIndex];
			}

			switch (action) {
				case 'activate':
					var immediateResult = module.activate();
				break;

				case 'deactivate':
					var immediateResult = module.deactivate();
				break;
			}

			if (immediateResult) {
				self.bulkActionCount++;
			}
		});
	};

	this.bulkActionCode = '';
	this.bulkActionSuccess = 0;
	this.bulkActionFail = 0;
	this.bulkActionCount = 0;

	/**
	 * Toggle a module's active status at the given array index.
	 */
	this.toggle = function (index) {
		var module = self.modules[index];
		if (!module) { return false; }
		if (module.isActive()) {
			return module.deactivate();
		} else {
			return module.activate();
		}
	};

	/**
	 * Activate a module at the given array index.
	 */
	this.activate = function (index) {
		var module = self.modules[index];
		if (!module) { return false; }
		return module.activate();
	};

	/**
	 * Deactivate a module at the given array index.
	 */
	this.deactivate = function (index) {
		var module = self.modules[index];
		if (!module) { return false; }
		return module.deactivate();
	};

	/**
	 * Generic find function called by other find functions.
	 */
	this.findByProperty = function (propertyName, value) {
		for (var i = self.modules.length; i--;) {
			if (self.modules[i][propertyName] == value) {
				return i;
			}
		}
		return -1;
	};

	/**
	 * Searches for and returns the array index of a module by it's codename.
	 */
	this.findByCodename = function (codename) {
		return self.findByProperty('codename', codename);
	};

	/**
	 * Searches for and returns the array index of a module by it's id. Searching for id 0 may return any inactive module, searching by codename is recommended instead if you are not sure the module is active.
	 */
	this.findById = function (id) {
		return self.findByProperty('id', id);
	};

	/**
	 * Converts a provided array of generic objects into AdminModule objects
	 */
	this.prepareModuleData = function (_data) {
		self.modules = [];
		for (var i = _data.length; i--;) {
			self.modules[i] = new AdminModule(_data[i]);
		}
	};

	this.notActive = function () {
		alert(AdminModules.LangThisModuleIsNotActivated);
	};

	this.noConfigure = function () {
		alert(AdminModules.LangThisModuleHasNoConfig);
	};

	this.noConfigurePermission = function () {
		alert(AdminModules.LangNoPermissionToConfigureModule);
	};

	this.noActivatePermission = function () {
		alert(AdminModules.LangNoPermissionToActivateModule);
	};

	if (_data !== undefined) {
		this.prepareModuleData(_data);
	}
}

AdminModules.LangThisModuleHasNoConfig = {$lang.ThisModuleHasNoConfig|iwp_FilterJavascriptString};
AdminModules.LangThisModuleIsNotActivated = {$lang.ThisModuleIsNotActivated|iwp_FilterJavascriptString};
AdminModules.LangNoPermissionToConfigureModule = {$lang.NoPermissionToConfigureModule|iwp_FilterJavascriptString};
AdminModules.LangNoPermissionToActivateModule = {$lang.NoPermissionToActivateModule|iwp_FilterJavascriptString};
AdminModules.LangSelectedModulesSuccessfullyActivated = {$lang.SelectedModulesSuccessfullyActivated|iwp_FilterJavascriptString};
AdminModules.LangSelectedModulesSuccessfullyDeactivated = {$lang.SelectedModulesSuccessfullyDeactivated|iwp_FilterJavascriptString};

AdminModules.LangSelectedModulesActivated = {$lang.SelectedModulesActivated|iwp_FilterJavascriptString};
AdminModules.LangSelectedModulesDeactivated = {$lang.SelectedModulesDeactivated|iwp_FilterJavascriptString};
AdminModules.LangSomeModulesActivated = {$lang.SomeModulesActivated|iwp_FilterJavascriptString};
AdminModules.LangSomeModulesDeactivated = {$lang.SomeModulesDeactivated|iwp_FilterJavascriptString};
AdminModules.LangNoModulesActivated = {$lang.NoModulesActivated|iwp_FilterJavascriptString};
AdminModules.LangNoModulesDeactivated = {$lang.NoModulesDeactivated|iwp_FilterJavascriptString};

AdminModules.ClearRowCallback = function () {
	//	flashing the table row using jQuery.animate will leave a background-color style on the table rows, clear it so the mouse-over effect still works
	$(this).css('background-color', '');
}