435 lines
12 KiB
JavaScript
435 lines
12 KiB
JavaScript
var WpfcCDN = {
|
|
values: {"name" : "", "cdnurl" : "", "originurl" : "", "file_types" : "", "keywords" : "", "excludekeywords" : ""},
|
|
id : "",
|
|
nonce: "",
|
|
template_url : "",
|
|
content : "",
|
|
interval : false,
|
|
init: function(obj){
|
|
this.set_params(obj);
|
|
this.open_wizard();
|
|
},
|
|
check_conditions: function(action, current_page_number){
|
|
var self = this;
|
|
|
|
if(action == "next"){
|
|
if(current_page_number == 2){
|
|
self.check_url_exist();
|
|
}else{
|
|
return true;
|
|
}
|
|
}
|
|
},
|
|
set_params: function(obj){
|
|
this.id = obj.id;
|
|
this.nonce = obj.nonce;
|
|
this.template_url = obj.template_main_url + "/" + this.id + ".php";
|
|
|
|
if(obj.values){
|
|
this.values = obj.values;
|
|
}
|
|
},
|
|
open_wizard: function(){
|
|
var self = this;
|
|
if(jQuery("#wpfc-modal-" + self.id).length == 0){
|
|
self.load_template(function(){
|
|
self.fill_integration_fields();
|
|
self.set_buttons_action();
|
|
self.click_event_add_new_keyword_button();
|
|
self.add_new_keyword_keypress();
|
|
|
|
if(self.id == "other" || self.id == "cloudflare"){
|
|
self.show_page("next");
|
|
self.hide_button("back");
|
|
|
|
}
|
|
|
|
});
|
|
}
|
|
},
|
|
insert_keywords: function(modal, classname, keywords){
|
|
var self = this;
|
|
|
|
if(keywords){
|
|
jQuery.each(keywords.split(","), function( index, value ) {
|
|
jQuery('<li class="' + classname + '"><a class="keyword-label">' + value + '</a></li>').insertBefore(modal.find(".wpfc-add-new-keyword").closest("." + classname)).click(function(){
|
|
jQuery(this).remove();
|
|
});
|
|
});
|
|
}
|
|
},
|
|
fill_integration_fields: function(){
|
|
var self = this;
|
|
var modal;
|
|
|
|
jQuery(self.values).each(function(i, e){
|
|
modal = jQuery("#wpfc-wizard-" + e.id);
|
|
|
|
modal.find("input#cdn-url").val(e.cdnurl);
|
|
modal.find("select#cdn-url").val(e.cdnurl);
|
|
modal.find("#origin-url").val(e.originurl);
|
|
|
|
self.insert_keywords(modal, "keyword-item", e.keywords);
|
|
self.insert_keywords(modal, "keyword-item-exclude", e.excludekeywords);
|
|
|
|
if(e.file_types){
|
|
modal.find(".wpfc-checkbox-list input[type='checkbox']").attr("checked", false);
|
|
|
|
jQuery.each(e.file_types.split(","), function( index, value ) {
|
|
modal.find("#file-type-" + value).attr("checked", true);
|
|
});
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
add_new_keyword_keypress: function(){
|
|
jQuery(".wpfc-textbox-con .fixed-search input").keypress(function(e){
|
|
if(e.keyCode == 13){
|
|
var keyword = jQuery(e.target).val();
|
|
var keyword_type_class = jQuery(e.target).closest("li[class*='keyword-item']").attr("class");
|
|
|
|
jQuery(".wpfc-textbox-con").hide();
|
|
jQuery(e.target).val("");
|
|
jQuery('<li class="' + keyword_type_class + '"><a class="keyword-label">' + keyword + '</a></li>').insertBefore(jQuery(e.target).closest("." + keyword_type_class)).click(function(){
|
|
jQuery(this).remove();
|
|
});
|
|
}
|
|
});
|
|
},
|
|
click_event_add_new_keyword_button: function(){
|
|
jQuery(".wpfc-add-new-keyword").click(function(){
|
|
jQuery(this).next(".wpfc-textbox-con").show();
|
|
jQuery(this).next(".wpfc-textbox-con").find(".fixed-search input").focus();
|
|
});
|
|
},
|
|
set_buttons_action: function(){
|
|
var self = this;
|
|
var action = "";
|
|
var current_page, next_page, current_page_number;
|
|
var modal = jQuery("#wpfc-modal-" + self.id);
|
|
|
|
self.buttons();
|
|
|
|
modal.find("button.wpfc-dialog-buttons").click(function(e){
|
|
action = modal.find(e.currentTarget).attr("action");
|
|
current_page_number = modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible").attr("wpfc-cdn-page");
|
|
|
|
if(action == "next"){
|
|
if(self.check_conditions("next", current_page_number)){
|
|
self.show_page("next");
|
|
}
|
|
}else if(action == "back"){
|
|
self.show_page("back");
|
|
}else if(action == "finish"){
|
|
self.save_integration();
|
|
}else if(action == "close"){
|
|
Wpfc_Dialog.remove();
|
|
}else if(action == "remove"){
|
|
self.remove_integration();
|
|
}else if(action == "pause"){
|
|
self.pause_integration();
|
|
}else if(action == "start"){
|
|
self.start_integration();
|
|
}
|
|
});
|
|
},
|
|
start_integration: function(){
|
|
var self = this;
|
|
var modal = jQuery("#wpfc-modal-" + self.id);
|
|
|
|
self.disable_button("start");
|
|
|
|
jQuery.ajax({
|
|
type: 'POST',
|
|
dataType: "json",
|
|
url: ajaxurl,
|
|
data : {"action": "wpfc_start_cdn_integration", "id" : self.id, "nonce" : self.nonce},
|
|
success: function(res){
|
|
self.show_button("pause");
|
|
self.enable_button("pause");
|
|
self.hide_button("start");
|
|
|
|
jQuery("div[wpfc-cdn-name='" + self.id + "']").find("div.meta").removeClass("pause");
|
|
|
|
},
|
|
error: function(e) {
|
|
self.enable_button("start");
|
|
alert("unknown error");
|
|
}
|
|
});
|
|
|
|
},
|
|
pause_integration: function(){
|
|
var self = this;
|
|
var modal = jQuery("#wpfc-modal-" + self.id);
|
|
|
|
self.disable_button("pause");
|
|
|
|
jQuery.ajax({
|
|
type: 'POST',
|
|
dataType: "json",
|
|
url: ajaxurl,
|
|
data : {"action": "wpfc_pause_cdn_integration", "id" : self.id, "nonce" : self.nonce},
|
|
success: function(res){
|
|
self.show_button("start");
|
|
self.enable_button("start");
|
|
self.hide_button("pause");
|
|
|
|
jQuery("div[wpfc-cdn-name='" + self.id + "']").find("div.meta").addClass("pause");
|
|
|
|
},
|
|
error: function(e) {
|
|
self.enable_button("pause");
|
|
alert("unknown error");
|
|
}
|
|
});
|
|
|
|
|
|
},
|
|
remove_integration: function(){
|
|
var self = this;
|
|
var modal = jQuery("#wpfc-modal-" + self.id);
|
|
|
|
self.disable_button("remove");
|
|
|
|
jQuery.ajax({
|
|
type: 'POST',
|
|
dataType: "json",
|
|
url: ajaxurl,
|
|
data : {"action": "wpfc_remove_cdn_integration", "id" : self.id, "nonce" : self.nonce},
|
|
success: function(res){
|
|
self.values = jQuery.grep(self.values, function (e, i) {
|
|
if(e.id == self.id){
|
|
return false;
|
|
}
|
|
return true;
|
|
});
|
|
|
|
|
|
self.enable_button("remove");
|
|
jQuery("div.tab7 div[wpfc-cdn-name='" + self.id + "']").find("div.meta").removeClass("isConnected");
|
|
Wpfc_Dialog.remove();
|
|
console.log(res);
|
|
},
|
|
error: function(e) {
|
|
self.enable_button("remove");
|
|
alert("unknown error");
|
|
}
|
|
});
|
|
},
|
|
save_integration: function(){
|
|
var self = this;
|
|
var modal = jQuery("#wpfc-modal-" + self.id);
|
|
|
|
self.buttons();
|
|
self.values = {};
|
|
self.values.id = self.id;
|
|
|
|
self.disable_button("finish");
|
|
|
|
if(modal.find("input#cdn-url").length == 1){
|
|
self.values.cdnurl = modal.find("input#cdn-url").val();
|
|
}else if(modal.find("select#cdn-url").length == 1){
|
|
self.values.cdnurl = modal.find("select#cdn-url").val();
|
|
}
|
|
|
|
|
|
self.values.originurl = modal.find("input#origin-url").val();
|
|
self.values.file_types = modal.find(".wpfc-checkbox-list input[type='checkbox']:checked").map(function(){return this.value;}).get().join(",");
|
|
self.values.keywords = modal.find(".keyword-item-list li.keyword-item a.keyword-label").map(function(){return this.text;}).get().join(",");
|
|
self.values.excludekeywords = modal.find(".keyword-item-list li.keyword-item-exclude a.keyword-label").map(function(){return this.text;}).get().join(",");
|
|
|
|
|
|
jQuery.ajax({
|
|
type: 'POST',
|
|
dataType: "json",
|
|
url: ajaxurl,
|
|
data : {"action": "wpfc_save_cdn_integration", "nonce" : self.nonce, "values" : self.values, "file_types" : self.values.file_types, "keywords" : self.values.keywords, "excludekeywords" : self.values.excludekeywords},
|
|
success: function(res){
|
|
jQuery("div[wpfc-cdn-name='" + self.id + "']").find("div.meta").addClass("isConnected");
|
|
|
|
self.enable_button("finish");
|
|
|
|
self.show_page("next");
|
|
console.log(res);
|
|
},
|
|
error: function(e) {
|
|
self.enable_button("finish");
|
|
alert("unknown error");
|
|
}
|
|
});
|
|
|
|
|
|
|
|
},
|
|
enable_button: function(button_type){
|
|
clearInterval(this.interval);
|
|
|
|
let self = this;
|
|
let modal = jQuery("#wpfc-modal-" + self.id);
|
|
let button = modal.find(".wpfc-dialog-buttons[action='" + button_type + "']");
|
|
|
|
button.attr("disabled", false);
|
|
button.text(button.text().replace(/\.+$/, ""));
|
|
},
|
|
disable_button: function(button_type){
|
|
let self = this;
|
|
let modal = jQuery("#wpfc-modal-" + self.id);
|
|
let button = modal.find(".wpfc-dialog-buttons[action='" + button_type + "']");
|
|
let text = button.text();
|
|
let dot = 0;
|
|
|
|
button.attr("disabled", true);
|
|
|
|
button.text(text + ".");
|
|
|
|
self.interval = setInterval(function(){
|
|
text = button.text();
|
|
dot = text.match(/\./g);
|
|
|
|
console.log(dot);
|
|
console.log(button);
|
|
|
|
if(dot){
|
|
if(dot.length < 3){
|
|
button.text(text + ".");
|
|
}else{
|
|
button.text(text.replace(/\.+$/, ""));
|
|
}
|
|
}else{
|
|
button.text(text + ".");
|
|
}
|
|
}, 300);
|
|
},
|
|
check_url_exist: function(){
|
|
var self = this;
|
|
var modal = jQuery("#wpfc-modal-" + self.id);
|
|
var cdn_url = modal.find("#cdn-url").val();
|
|
var origin_url = modal.find("#origin-url").val();
|
|
|
|
if(!cdn_url || !origin_url){
|
|
if(!cdn_url){
|
|
modal.find("#cdn-url").css("background-color", "red");
|
|
}else{
|
|
modal.find("#cdn-url").css("background-color", "white");
|
|
}
|
|
|
|
if(!origin_url){
|
|
modal.find("#origin-url").css("background-color", "red");
|
|
}else{
|
|
modal.find("#origin-url").css("background-color", "white");
|
|
}
|
|
|
|
return;
|
|
}else{
|
|
modal.find("#cdn-url").css("background-color", "white");
|
|
modal.find("#origin-url").css("background-color", "white");
|
|
}
|
|
|
|
modal.find("#cdn-url-loading").show();
|
|
modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible #cdn-url").nextAll("label").html("");
|
|
jQuery.ajax({
|
|
type: 'GET',
|
|
dataType: "json",
|
|
url: ajaxurl,
|
|
data : {"action": "wpfc_check_url", "url" : cdn_url, "origin_url" : origin_url, "type" : WpfcCDN.id, "nonce" : self.nonce},
|
|
success: function(res){
|
|
modal.find("#cdn-url-loading").hide();
|
|
if(res.success){
|
|
self.show_page("next");
|
|
modal.find("#cdn-url").css("background-color", "white");
|
|
modal.find("#origin-url").css("background-color", "white");
|
|
}else{
|
|
if(WpfcCDN.id == "cloudflare"){
|
|
modal.find("label.wiz-error-msg").html(res.error_message);
|
|
}else{
|
|
modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible #cdn-url").nextAll("label").html(res.error_message);
|
|
}
|
|
}
|
|
},
|
|
error: function(e) {
|
|
modal.find("#cdn-url-loading").hide();
|
|
alert("unknown error");
|
|
}
|
|
});
|
|
},
|
|
show_page: function(type){
|
|
var current_page = jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible");
|
|
current_page.hide();
|
|
|
|
if(type == "next"){
|
|
current_page.next().show();
|
|
}else if(type == "back"){
|
|
current_page.prev().show();
|
|
}
|
|
this.buttons();
|
|
},
|
|
buttons: function(){
|
|
var self = this;
|
|
var current_page, next_pages;
|
|
|
|
current_page = jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible");
|
|
next_pages = current_page.nextAll(".wiz-cont");
|
|
|
|
jQuery(".wpfc-dialog-buttons[action]").hide();
|
|
|
|
jQuery(self.values).each(function(i, e){
|
|
if(e.id == self.id){
|
|
self.show_button("remove");
|
|
|
|
if(typeof e.status != "undefined" && e.status == "pause"){
|
|
self.show_button("start");
|
|
}else{
|
|
self.show_button("pause");
|
|
}
|
|
}
|
|
});
|
|
|
|
if(next_pages.length){
|
|
if(next_pages.length > 1){
|
|
self.show_button("next");
|
|
}else if(next_pages.length == 1){
|
|
self.show_button("finish");
|
|
}
|
|
|
|
if(jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible").attr("wpfc-cdn-page") > 1){
|
|
if(current_page.attr("wpfc-cdn-page") == 2){
|
|
if(self.id == "maxcdn"){
|
|
self.show_button("back");
|
|
}
|
|
}else{
|
|
self.show_button("back");
|
|
}
|
|
}
|
|
}else{
|
|
self.show_button("close");
|
|
}
|
|
|
|
},
|
|
show_button: function(type){
|
|
jQuery("#wpfc-modal-" + this.id + " .wpfc-dialog-buttons[action='" + type + "']").show();
|
|
},
|
|
hide_button: function(type){
|
|
jQuery("#wpfc-modal-" + this.id + " .wpfc-dialog-buttons[action='" + type + "']").hide();
|
|
},
|
|
load_template: function(callbak){
|
|
var self = this;
|
|
|
|
jQuery.ajax({
|
|
type: 'POST',
|
|
dataType: "json",
|
|
url: ajaxurl,
|
|
data : {"action": "wpfc_cdn_template", "id": self.id},
|
|
success: function(res){
|
|
jQuery("body").append(res.content);
|
|
Wpfc_Dialog.dialog("wpfc-modal-" + self.id);
|
|
callbak();
|
|
jQuery("#revert-loader-toolbar").hide();
|
|
},
|
|
error: function(e) {
|
|
alert("CDN Template Error");
|
|
}
|
|
});
|
|
}
|
|
}; |