var galleryManage = { gallery_data: {}, gallery_data_id: 1, create: function(replay_data) { this.initEvents(); if (replay_data && replay_data.length) { this.replayData(replay_data); } }, initEvents: function() { $("#gallery-list-btn").on('click', function() { galleryManage.addGallery(); return false }); $("#gallery-list").delegate('.input-upload-file', 'change', function() { var gallery_id = $(this).closest('.e').attr('data-gallery-id'); galleryManage.uploadImage(gallery_id); }).delegate('.remove-link', 'click', function() { var gallery_id = $(this).closest('.e').attr('data-gallery-id'); galleryManage.deleteGallery(gallery_id); return false; }); }, // Add / Remove addGallery: function() { var gallery_id = this.galleryDataAdd(); this.addGalleryView(gallery_id); }, addGalleryView: function(gallery_id) { var gallery_data = this.galleryDataGet(gallery_id); var html = Mustache.render(document.getElementById('template-gallery-e').innerHTML, { gallery_data: gallery_data, }); $("#gallery-list").append(html); // $("#gallery-list > .e:last select").dataSelected(); this.controllerGallery(); }, deleteGallery: function(gallery_id) { $("#gallery-e-" + gallery_id).remove(); this.galleryDataRemove(gallery_id); }, controllerGallery: function() { }, // Upload Image uploadImage: function(gallery_id) { var client = new XMLHttpRequest(), file = document.getElementById('gallery-e-' + gallery_id + '-upload-image'), formData = new FormData(), xhr_url = themeOptions.admin_url + 'admin-ajax.php?action=hotel_upload_gallery_image'; // 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) { galleryManage.uploadImageAfter(gallery_id, response.value); } } }; }, uploadImageAfter: function(gallery_id, upload_data) { this.galleryDataUpdate(gallery_id, { imageData: { url: upload_data.orginal.fileUrl, width: 0, height: 0 }, thumbData: { url: upload_data.thumb.fileUrl, width: 0, height: 0 } }); // $("#gallery-e-" + gallery_id).css({ 'background-image': 'url(' + upload_data.orginal.fileUrl + ')' }); }, // Gallery Data galleryDataAdd: function(gallery_data) { var gallery_id = this.gallery_data_id; var gallery_data_default = { id: gallery_id, position: 0, imageData: null, thumbData: null }; gallery_data = $.extend(gallery_data_default, gallery_data); // this.gallery_data[gallery_id] = gallery_data; // this.gallery_data_id++; return gallery_id; }, galleryDataRemove: function(gallery_id) { if (!this.gallery_data[gallery_id]) return false; delete this.gallery_data[gallery_id]; return true; }, galleryDataUpdate: function(gallery_id, update_data) { if (!this.gallery_data[gallery_id]) return false; this.gallery_data[gallery_id] = $.extend(this.gallery_data[gallery_id], update_data); return gallery_id; }, galleryDataGet: function(gallery_id) { if (!this.gallery_data[gallery_id]) return false; return this.gallery_data[gallery_id]; }, // Export / Replay exportData: function() { var gallery_data = []; for (i in this.gallery_data) { gallery_data.push(this.gallery_data[i]); } return JSON.stringify(gallery_data); }, saveData: function() { var xhr_url = themeOptions.admin_url + 'admin-ajax.php?action=hotel_save_gallery_data'; var export_data = this.exportData(); $.ajax({ type: 'POST', url: xhr_url, data: { saveData: encodeURIComponent(export_data) } }).done(function() { $('.hotel-theme h2 span').show().delay(500).animate({ 'opacity': 0, }, 500, function() { $(this).hide().css('opacity', 1); }); }); }, replayData: function(gallery_list) { for (i in gallery_list) { if (gallery_list[i]['id']) { delete gallery_list[i]['id']; } var e = gallery_list[i], gallery_id = this.galleryDataAdd(e); this.addGalleryView(gallery_id); } } };