var themeOptions = { admin_url: null, create: function(data) { var default_data = { admin_url: null }; data = $.extend(default_data, data); this.admin_url = data.admin_url; // this.initTab(); this.initSave(); this.initSettingsTab(); }, initSave: function() { $("#theme-settings-save-btn").on('click', function() { var page_id = $('.tab-nav li.active > a').attr('data-page'); if (!page_id) return false; // if (page_id == 'rooms') { roomsManage.saveData(); } else if (page_id == 'reviews') { reviewsManage.saveData() } else if (page_id == 'settings') { themeOptions.settingsTabSave(); } else if (page_id == 'gallery') { galleryManage.saveData(); } return false; }); }, initTab: function() { $(document).delegate('.tab-nav > li > a', 'click', function() { var $this = $(this); themeOptions.showTab($this); return false; }); // if (location.hash && location.hash.length > 1) { this.showTab('#' + location.hash.substr(2)); } }, showTab: function($this) { if (typeof $this == 'string') { $this = $('.tab-nav a[href=' + $this + ']'); } this_link = $this.attr('href'); $this.parent().parent().children().removeClass('active'); $this.parent().addClass('active'); // if ($this.attr('data-page')) { this.page_id = $this.attr('data-page'); } // $(this_link).parent().find('.tab-content.active').removeClass('active'); $(this_link).addClass('active'); // location.hash = '!' + this_link.substr(1); return true; }, // SETTINGS TAB initSettingsTab: function() { // var form_data = this.serializeFormDataToJSON('#tab-settings-form'); // console.log(form_data); $("#settings-logo-file").on('change', function() { themeOptions.apiUploadImage('settings-logo-file', function(upload_data) { $("#settings-logo-file-value").val(upload_data.fileUrl); }); }); }, settingsTabSave: function() { var export_data = this.serializeFormDataToJSON('#tab-settings-form'), xhr_url = this.admin_url + 'admin-ajax.php?action=hotel_save_settings_data'; $.ajax({ type: 'POST', url: xhr_url, data: { saveData: encodeURIComponent(export_data) } }).done(function() { themeOptions.settingsTabSaved(); }); }, settingsTabSaved: function() { $('.hotel-theme h2 span').show().delay(500).animate({ 'opacity': 0, }, 500, function() { $(this).hide().css('opacity', 1); }); }, settingsTabReplay: function(replay_data) { for (key in replay_data) { var value = replay_data[key]; //if we have array we are trying to display it in proper way if(typeof value == "object"){ var name = key+'[]'; for(key2 in value) { $("#tab-settings-form [name='"+name+"']").eq(key2).val(value[key2]); } } var $this = $("#tab-settings-form [name='" + key + "']"); if (!$this.length) { continue; } if ($this.get(0).tagName == 'SELECT') { $this.attr('data-selected', value); } else { $this.val(value); } } $("#tab-settings-form [data-selected]").dataSelected(); }, serializeFormDataToJSON: function(selector) { var form_data = {}; $(selector + " [name]").each(function() { var $this = $(this), this_name = $this.attr('name'), this_value = $this.val(); //handle array save if (this_name.indexOf('[]') !== -1) { this_name = this_name.replace('[]', ''); if (typeof form_data[this_name] == 'undefined') { form_data[this_name] = [this_value]; } else { form_data[this_name].push(this_value); } } else { form_data[this_name] = this_value; } }); return JSON.stringify(form_data); }, // UPLOAD IMAGE apiUploadImage: function(selector, _func) { var client = new XMLHttpRequest(), file = document.getElementById(selector), formData = new FormData(), xhr_url = themeOptions.admin_url + 'admin-ajax.php?action=hotel_upload_image'; if (!file) { return false; } // formData.append("upload", file.files[0]); client.open("post", xhr_url, true); client.send(formData); // client.onreadystatechange = function() { var response = null; try { response = JSON.parse(client.response) } catch (e) { } if (!response) return false; // if (client.readyState == 4 && client.status == 200) { if (response.status && response.value) { _func(response.value); } } }; } };