File "settings.js"

Full path: /home/webcknlt/admissiontell.com/wp-content/plugins/mango-buttons/admin/js/settings.js
File size: 4.73 B (4.73 KB bytes)
MIME-type: text/plain
Charset: utf-8

Download   Open   Edit   Advanced Editor &nnbsp; Back

jQuery(document).ready(function($){
		
	function ViewModel() {
		var self = this;
		
		self.syncingDataWithServer = ko.observable(true);
		self.savingSettings = ko.observable(false);
		self.subscribing = ko.observable(false);
		self.deletingPlugin = ko.observable(false);
		
		self.settings = {
			email: ko.observable(),
			subscribed: ko.observable(),
			icon_color: ko.observable(),
			extended_language_support: ko.observable()
		}
		self.settings.cache = {
			email: ko.observable(),
			icon_color: ko.observable(),
			extended_language_support: ko.observable()
		}
		
		self.settings.cacheCurrentSettings = function(){
			
			self.settings.cache.email(self.settings.email());
			self.settings.cache.icon_color(self.settings.icon_color());
			self.settings.cache.extended_language_support(self.settings.extended_language_support());
			
		}
		
		self.settings.dirty = ko.computed(function(){
			
			if(self.settings.icon_color() != self.settings.cache.icon_color() ||
				self.settings.extended_language_support() != self.settings.cache.extended_language_support()
			){
				return true;
			}
			else{
				return false;
			}
			
		});
		
		self.settings.dirty.subscribe(function(newValue){
			if(newValue){
				self.dismissNotification();
			}
		});
		
		
		self.notification = ko.observable(false);
		self.pushNotification = function(text, type){
			self.notification({
				text: text,
				status: type
			});
		}
		self.dismissNotification = function(){
			self.notification(false);
		}
		
		self.destroyPluginData = function(){
			
			$.ajax({
				type: "POST",
				url: ajaxurl,
				data: {
					action: 'mb_admin_ajax',
					endpoint: 'destroy_plugin_data',
					mb_admin_nonce: MB_GLOBALS.MB_ADMIN_NONCE
				},
				success: function(response){
					
					//navigate up a directory - not sure exactly how well this works but we have to do something...
					document.location.href="/";
					
				},
				dataType: 'json'
			});
			
		}
		
		self.saveSettings = function(callback){
			if(self.savingSettings()){
				return;
			}
			
			self.savingSettings(true);
			
			$.ajax({
				type: "POST",
				url: ajaxurl,
				data: {
					action: 'mb_admin_ajax',
					endpoint: 'update_mb_settings',
					mb_admin_nonce: MB_GLOBALS.MB_ADMIN_NONCE,
					settings: {
						email: self.settings.email(),
						icon_color: self.settings.icon_color(),
						extended_language_support: self.settings.extended_language_support(),
						subscribed: self.settings.subscribed()
					}
				},
				success: function(response){

					self.settings.cacheCurrentSettings();
					
					self.savingSettings(false);
					
					if(typeof callback == 'function'){
						callback();
					}
				},
				dataType: 'json'
			});
		}
		
		self.subscribe = function(){
			//Get value current saved in email field
			$email_address = self.settings.email();
			
			if(self.subscribing()){
				return;
			}
			
			self.subscribing(true);
			
			//POST subscirbe form to mailchimp servers and handle response by updating page
			$.ajax({
				type: "POST",
				url: "//philbaylog.us6.list-manage.com/subscribe/post-json?u=e551001469dd03b8e20452a24&id=6071c4038b&c=?",
				data: {
					EMAIL: $email_address,
					FNAME: mb_settings.fname,
					WEBSITE: mb_settings.website
				},
				success: function(response){
					
					if(response.result == 'success'){
						
						//save subscribed status & current email address (if changed) to mango buttons
						self.settings.subscribed(true);
						
						self.saveSettings(function(){
							$('.mb-subscribe').css('textAlign', 'center');
							$('.mb-subscribe form').hide();
							$('.mb-subscribe-text').text('Thanks for subscribing! Confirm your email to receive your discount code.');
							self.subscribing(false);
						});
						
					}
					else{
						self.pushNotification('Couldn\'t subscribe at this time', 'failure');
					}
					
				},
				dataType: 'json'
			});
		}
		
		self.syncData = function(){
			self.syncingDataWithServer(true);
			
			//get settings straight from php localization
			
			self.settings.email(mb_settings.email);
			self.settings.icon_color(mb_settings.icon_color);
			self.settings.extended_language_support(mb_settings.extended_language_support);
			
			self.settings.subscribed(mb_settings.subscribed && mb_settings.subscribed !== "false");
			
			
			self.settings.cacheCurrentSettings();
			
			self.syncingDataWithServer(false);
			
			
			if(!self.settings.subscribed()){
				setTimeout(function(){
					$('.mb-subscribe').slideDown(500);
					$('#mb-settings').css('paddingTop', 1);//not sure why but this fixes the drop down "jumping" the header
				}, 350);
			}
		}
		
		self.init = function(){
			
		}
		
	}
	
	//initialize the view model
	viewModel = new ViewModel();
	ko.applyBindings(viewModel, $('#mb-settings')[0]);
	
	viewModel.init();
	
	viewModel.syncData();
	
});