var buttonizer = { settings: { wpButtonSaveKey: 'buttonizer_buttons', wpCategorySaveKey: 'buttonizer_page_categories', windowNumber: 0, hasChanges: false, clickedButton: false }, setTimouts: { a: function() { return setTimeout(function() { }, 0) }, b: function() { return setTimeout(function() { }, 0) }, }, init: function() { buttonizer.overwriteFavIcon(); buttonizer.faInit(); buttonizer.initButtons(); // WP color picker jQuery('#button_unpushed').wpColorPicker(); jQuery('#button_pushed').wpColorPicker(); jQuery('#icon_color').wpColorPicker(); jQuery(".savebutton").each(function() { jQuery(this).click(buttonizer.saveAnimation); }); jQuery("input, textarea, select").change(function() { buttonizer.settings.hasChanges = true; }); var iconImage = jQuery.wpMediaUploader({ target : '.smartcat-uploader', // The class wrapping the textbox uploaderTitle : 'Select or upload image', // The title of the media upload popup uploaderButton : 'Set image', // the text of the button in the media upload popup multiple : false, // Allow the user to select multiple images buttonText : ' Upload image', // The text of the upload button buttonClass : '.smartcat-upload', // the class of the upload button previewSize : '32px', // The preview image size modal : false, // is the upload button within a bootstrap modal ? buttonStyle : { // style the button }, }); setTimeout(function() { // Init preview button jQuery('.button-preview').css({ 'background-color': jQuery("#button_unpushed").val() }); jQuery(".button-preview").hover(function() { jQuery(this).css({ 'background-color': jQuery("#button_pushed").val() }); }, function() { jQuery(this).css({ 'background-color': jQuery("#button_unpushed").val() }); }); }, 500); // Remove the spam from other plugins setTimeout(function() { var foundOurContent = false; if(jQuery(".buttonizerWarning").length > 0) { foundOurContent = true; var buttonizerData = jQuery(".buttonizerWarning").html(); var buttonizerStyle = jQuery(".buttonizerWarning").attr('class'); } jQuery("#wordpress-plugin-message-spam").remove(); if(foundOurContent) { jQuery(".nav-tab-wrapper").after('
'+ buttonizerData +'
'); } }, 1000); jQuery(".icon-or-image").each(function() { var type = jQuery(this).data("type"); var currentContainer = jQuery(this); jQuery(this).find(".placeholder-choose a").click(function() { if(type == 'image') { type = 'icon'; currentContainer.find(".image-placeholder").hide(); currentContainer.find(".icon-placeholder").show(); currentContainer.find("input").val(""); }else { type = 'image'; currentContainer.find(".image-placeholder").show(); currentContainer.find(".icon-placeholder").hide(); } }); }); // Hash if(document.location.hash != "") { var tabKey = document.location.hash; buttonizer.tabNavigate(tabKey.replace("#tab_", "")); } jQuery(".buttonizer-click-to-pro").each(function() { jQuery(this).click(function(e) { e.preventDefault(); buttonizer.proInfoWindow(); }); }); buttonizer.loadPageCategorie(); }, proInfoWindow: function() { buttonizer.createWindow({ title: 'You like Buttonizer?', text: '

Are you ready to try Buttonizer PRO?

What do you get?

'+ '
Show on opening hours
' + '
Show buttons on specific pages: Use page rules
' + '
Unlimited page rules
' + '
Add custom image or button-icon
' + '
Exit intend (very soon :))
' + '
Show on scroll
' + '
Show on timeout
' + '
' + '

Do you these features?

', closeText: 'Upgrade', callback: function() { document.location.href = 'admin.php?page=Buttonizer-pricing'; } }); }, overwriteFavIcon: function() { (function() { var link = document.querySelector("link[rel*='icon']") || document.createElement('link'); link.type = 'image/x-icon'; link.rel = 'shortcut icon'; link.href = faviconUrl; document.getElementsByTagName('head')[0].appendChild(link); })(); }, tabNavigate: function(key) { jQuery(".vertical-tabs .tab-container").each(function() { if(jQuery(this).attr('id') == "tab_container_" + key) { jQuery(this).show(); }else{ jQuery(this).hide(); } }); jQuery(".vertical-tabs .tabs a").each(function() { if(jQuery(this).attr('id') == "tab_container_" + key) { jQuery(this).addClass('nav-tab-active'); }else{ jQuery(this).removeClass('nav-tab-active'); } }); // jQuery("type[name=_wp_http_referer]").val(); }, loadPageCategorie: function() { jQuery(".page-categorie-styling").each(function() { var maxLoaded = 10; var isLoaded = 10; var table = jQuery(this); jQuery(this).addClass("initialized") table.find("tr").each(function() { jQuery(this).click(function(e) { if(jQuery(e.target).attr("type") != "checkbox") { jQuery(this).find("input").click(); } }); }); jQuery(".categories-load-more[data-id="+ jQuery(this).attr("data-id") +"]").click(function() { maxLoaded += 10; isLoaded = 0; table.find("tr").each(function() { isLoaded++; if(isLoaded <= maxLoaded) { jQuery(this).show(); }else{ return; } }); if(jQuery(".page-categorie-styling[data-id="+ jQuery(this).attr("data-id") +"] tr").length < maxLoaded) { jQuery(this).hide(); } }); }); }, saveAnimation: function() { jQuery(".savebutton").each(function() { jQuery(this).html(' Saving'); }); buttonizer.settings.clickedButton = true; jQuery('form#buttonizer').submit(); }, /* * Buttons */ initButtons: function() { jQuery(".button-row").each(function() { var rowObj = jQuery(this); var rowId = jQuery(this).attr("button-id") var buttonTitle = rowObj.find(".row-info span .row-title"); var buttonEdit = rowObj.find(".row-info .pencil-edit"); var buttonTitleField = rowObj.find(".button_title"); var doubleClick = setTimeout(function() {}, 100); var isCategory = rowObj.hasClass('is_category'); var clicked = 0; buttonEdit.click(function(e) { e.preventDefault(); buttonTitle.dblclick(); }); buttonTitle.html(buttonTitleField.val()); rowObj.find(".row-info").click(function(e) { if( jQuery(e.target).hasClass('fa-desktop') || jQuery(e.target).hasClass('fa-mobile') || jQuery(e.target).hasClass('fa-pencil') || jQuery(e.target).hasClass('mobiledesktop') ) { return; } clicked = 0; clearInterval(doubleClick); doubleClick = setTimeout(function() { if(clicked == 0) { if(rowObj.hasClass("opened")) { rowObj.removeClass("opened"); }else{ rowObj.addClass("opened"); } } clicked = 0; }, 100); }); buttonTitle.dblclick(function() { buttonizer.updateTitle(buttonTitle, buttonTitleField, false); clicked++; }); rowObj.find(".button_showonphone").change(function(e) { var isSelected = jQuery(this).is(":checked"); if(!isSelected) { jQuery("#btn_row_" + rowId + " .row-info .mobile-button").addClass("selected"); }else { jQuery("#btn_row_" + rowId + " .row-info .mobile-button").removeClass("selected"); } }); rowObj.find('.button_title').change(function() { newTitle = jQuery(this).val(); if(buttonizer.checkTitleDuplicate(newTitle, rowId)) { buttonizer.updateTitle(buttonTitle, buttonTitleField, true, newTitle); return; } buttonTitle.html(newTitle); }); rowObj.find(".button_showondesktop").change(function(e) { var isSelected = jQuery(this).is(":checked"); if(!isSelected) { jQuery("#btn_row_" + rowId + " .row-info .desktop-button").addClass("selected"); }else { jQuery("#btn_row_" + rowId + " .row-info .desktop-button").removeClass("selected"); } }); jQuery("#button_"+ rowId +"_icon").change(function(e) { console.log("test"); rowObj.find(".button-icon").attr('class', "fa "+ jQuery(this).val() +" button-icon"); }); if(isCategory) { var checked = false; rowObj.find(".select-all").click(function() { if(!checked) { checked = true; rowObj.find(".page-categorie-styling input[type=checkbox]").attr("checked", "checked"); }else{ checked = false; rowObj.find(".page-categorie-styling input[type=checkbox]").removeAttr("checked"); } }); } }); }, updateTitle: function(buttonTitle, buttonTitleField, isDuplicate, text) { if(!text) { var text = ''; } if(!isDuplicate) { var newTitle = prompt("You can change the title of the button.\n\nNote: The visitor won't see this text - for internal use only:", buttonTitleField.val()); }else{ var newTitle = prompt("You can change the title of the button.\n\nNote: The visitor won't see this text - for internal use only:\n\nWARNING: This name is already in use. Please change the name of the button. Duplicates are not allowed due Google Analytics event names.", text); } if(!newTitle || newTitle == "") { if(isDuplicate) { buttonTitleField.val(buttonTitle.html()); } return; } if(buttonizer.checkTitleDuplicate(newTitle)) { buttonizer.updateTitle(buttonTitle, buttonTitleField, true, newTitle); return; } buttonTitle.html(newTitle); buttonTitleField.val(newTitle); }, checkTitleDuplicate: function(text, allowRowId) { isDuplicate = false; if(!allowRowId) { var allowRowId = -1; } jQuery(".button-row").each(function() { if(jQuery(this).find('.button_title').val() == text && jQuery(this).attr("button-id") != allowRowId) { isDuplicate = true; } }); return isDuplicate; }, removeRow: function(id) { var buttonName = jQuery("#btn_row_" +id + " .row-info span .row-title").html(); var wasCategory = jQuery("#btn_row_" + id).hasClass('is_category'); if(confirm("Are you sure you want to remove the row with the text: '"+ buttonName +"'?\n\nThis is not recoverable.")) { jQuery("#btn_row_" +id).remove(); if(jQuery(".button-row").length > 1) { jQuery(".buttonizer-no-buttons").hide(); }else{ jQuery(".buttonizer-no-buttons").show(); } } }, toggleMobile: function(id) { var isSelected = jQuery("#button_"+ id +"_show_on_phone").is(":checked"); if(!isSelected) { jQuery("#btn_row_" + id + " .row-info .mobile-button").removeClass("selected"); jQuery("#button_"+ id +"_show_on_phone").click(); }else { jQuery("#btn_row_" + id + " .row-info .mobile-button").addClass("selected"); jQuery("#button_"+ id +"_show_on_phone").click(); } }, toggleDesktop: function(id) { var isSelected = jQuery("#button_"+ id +"_show_on_desktop").is(":checked"); if(!isSelected) { jQuery("#btn_row_" + id + " .row-info .desktop-button").removeClass("selected"); jQuery("#button_"+ id +"_show_on_desktop").click(); }else { jQuery("#btn_row_" + id + " .row-info .desktop-button").addClass("selected"); jQuery("#button_"+ id +"_show_on_desktop").click(); } }, addRow: function() { if(jQuery("#new-button").hasClass('disabled')) { return; } jQuery(".buttonizer-no-buttons").hide(); var isCategory = jQuery(".button-row[button-id=-1]").hasClass("is_category"); jQuery("#new-button").attr('disabled', 'disabled').addClass('disabled'); var defaultRow = jQuery(".button-row[button-id=-1]").html(); var numberOfButtons = jQuery(".button-row").length - (isCategory ? 1 : 0); numberOfButtons = Math.floor(Date.now() / 1000); numberOfButtons = numberOfButtons + "-" + Math.floor((Math.random() * 999) + 100); numberOfButtons = numberOfButtons.replace('-', ''); var newData = defaultRow.replace('/-1/g', numberOfButtons); newData = newData.replace('-1', numberOfButtons); jQuery("#button-rows, #page-categories").append('
' + newData + '
'); clearInterval(buttonizer.setTimouts.a); clearInterval(buttonizer.setTimouts.b); buttonizer.setTimouts.a = setTimeout(function() { jQuery(".button-row *").unbind("click"); jQuery(".button-row").removeClass("opened"); jQuery(".fontawesome-searcher-clicker").remove(); jQuery("#btn_row_"+ numberOfButtons +" .button_title").val("New button " + numberOfButtons); if(isCategory) { jQuery("#btn_row_"+ numberOfButtons +" input").each(function() { jQuery(this).attr("name", buttonizer.settings.wpCategorySaveKey + "[category_"+ numberOfButtons +"][]"); }); jQuery("#btn_row_"+ numberOfButtons + " select").attr("name", buttonizer.settings.wpCategorySaveKey + "[category_"+ numberOfButtons +"_type]"); } }, 100); buttonizer.setTimouts.b = setTimeout(function() { buttonizer.initButtons(); if(!isCategory) { buttonizer.updateRowInputNames(numberOfButtons); jQuery("#btn_row_"+ numberOfButtons).addClass('opened'); jQuery("#btn_row_"+ numberOfButtons + " input.button_title").focus(); }else{ console.log("Initialize new page category"); jQuery("#btn_row_"+ numberOfButtons + " #categoryIsUsed").val(numberOfButtons); jQuery("#btn_row_"+ numberOfButtons + " #categoryIsUsed").attr("name", buttonizer.settings.wpCategorySaveKey + '[categorieOrder][]'); jQuery("#btn_row_"+ numberOfButtons + " .delete-button").attr("href", "javascript:buttonizer.removeRow("+ numberOfButtons +")"); jQuery("#btn_row_"+ numberOfButtons + " .button_title").attr("name", buttonizer.settings.wpCategorySaveKey + "[category_"+ numberOfButtons +"_title]").val('New page category ' + (jQuery(".button-row").length - 1)); jQuery("#btn_row_"+ numberOfButtons + " .row-title").html("New page category " + (jQuery(".button-row").length - 1)); } buttonizer.faInit(); buttonizer.loadPageCategorie(); jQuery("#new-button").removeAttr('disabled').removeClass('disabled'); }, 400); }, updateRowInputNames: function(buttonId) { // Textfield jQuery("#btn_row_"+ buttonId + " .button_textfield") .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_text]") .attr("id", "button_"+ buttonId +"_text").val(""); // Iconfield jQuery("#btn_row_"+ buttonId + " .button_iconfield").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_icon]"); // Button title jQuery("#btn_row_"+ buttonId + " .button_title").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_title]"); // Button show on page category jQuery("#btn_row_"+ buttonId + " #button_category").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_on_pages]"); // Show on phone jQuery("#btn_row_"+ buttonId + " .button_showonphone") .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_on_phone]") .attr("id", "button_"+ buttonId +"_show_on_phone"); jQuery("label[for='button_"+ -1 +"_show_on_phone']").attr("for", "button_"+ buttonId +"_show_on_phone"); // Show on desktop jQuery("#btn_row_"+ buttonId + " .button_showondesktop") .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_on_desktop]") .attr("id", "button_"+ buttonId +"_show_on_desktop"); jQuery("label[for='button_"+ -1 +"_show_on_desktop']").attr("for", "button_"+ buttonId +"_show_on_desktop"); // Url jQuery("#btn_row_"+ buttonId + " .button_isurl") .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_url]") .attr("id", "button_"+ buttonId +"_url"); jQuery("label[for='button_"+ -1 +"_url']").attr("for", "button_"+ buttonId +"_url"); // Is phone buttonId jQuery("#btn_row_"+ buttonId + " .button_isphonenumber") .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_is_phonenumber]") .attr("id", "button_"+ buttonId +"_is_phonenumber"); jQuery("label[for='button_"+ -1 +"_is_phonenumber']").attr("for", "button_"+ buttonId +"_is_phonenumber"); // New tab jQuery("#btn_row_"+ buttonId + " .button_isnewtab") .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_url_newtab]") .attr("id", "button_"+ buttonId +"_url_newtab"); jQuery("label[for='button_"+ -1 +"_url_newtab']").attr("for", "button_"+ buttonId +"_url_newtab"); // Show only on opening hours jQuery("#btn_row_"+ buttonId + " .button_showwhenopened") .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_when_opened]") .attr("id", "button_"+ buttonId +"_show_when_opened"); jQuery("label[for='button_"+ -1 +"_show_when_opened']").attr("for", "button_"+ buttonId +"_show_when_opened"); // Show only on opening hours jQuery("#btn_row_"+ buttonId + " .button_hidelabel") .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_hide_label]") .attr("id", "button_"+ buttonId +"_hide_label"); jQuery("label[for='button_"+ -1 +"_hide_label']").attr("for", "button_"+ buttonId +"_hide_label"); /* * Link fixes */ // Delete button link jQuery("#btn_row_"+ buttonId + " .delete-button").attr("href", "javascript:buttonizer.removeRow("+ buttonId +")"); // Show on mobile button link jQuery("#btn_row_"+ buttonId + " .mobiledesktop.mobile-button").attr("href", "javascript:buttonizer.toggleMobile("+ buttonId +")"); // Show on desktop button link jQuery("#btn_row_"+ buttonId + " .mobiledesktop.desktop-button").attr("href", "javascript:buttonizer.toggleDesktop("+ buttonId +")"); }, createWindow: function(data) { this.settings.windowNumber++; var currentWindow = this.settings.windowNumber; if(!data.title) { data.title = ''; } if(!data.text) { data.text = '

This dialog has not text.

Weird, isn\'t it?

'; } if(!data.closeText) { data.closeText = 'Close'; } if(!data.callback) { data.callback = function() {}; } var windowStyle = '
'; windowStyle += '

'+ data.title +'

'; windowStyle += '
'; windowStyle += data.text; windowStyle += '
'; windowStyle += ''; windowStyle += '
'; jQuery("body").append(windowStyle); jQuery("#buttonizer-window-"+ currentWindow + " .fs-close, #buttonizer-window-"+ currentWindow + " button").click(function(e) { e.preventDefault(); jQuery("#buttonizer-window-"+ currentWindow).fadeOut(); if(!jQuery(this).hasClass("fs-close")) { data.callback(); } }) }, /* * Font awesome searcher */ faSettings: { objects: 0, currentSelect: {}, currentObject: {}, isGenerated: false, isOpened: false }, faInit: function() { buttonizer.faSettings.isOpened = false; if(buttonizer.faSettings.isGenerated == false) { buttonizer.faSettings.isGenerated = true; fontAwesome = jQuery.map(fontAwesome, function(value, index) { return [index]; }); } jQuery("body").click(function(e){ if(!jQuery(e.target).closest('.fontawesome-searcher').length && !jQuery(e.target).closest('.fontawesome-searcher-clicker').length){ jQuery(".fontawesome-searcher").hide(); buttonizer.faSettings.isOpened = false; } }); var typeTimeOut = setTimeout(function() { buttonizer.faSearchWord(''); }, 300); var adminBody = jQuery("#wpbody"); jQuery(".fontawesome-searcher .fontawesome-searcher-searchbar input").keyup(function() { clearInterval(typeTimeOut); typeTimeOut = setTimeout(function() { buttonizer.faSearchWord(jQuery(".fontawesome-searcher .fontawesome-searcher-searchbar input").val()); }, 300); }); jQuery("select.fa-chooser").each(function() { buttonizer.faSettings.objects++; var obj = jQuery(this); obj.hide(); obj.parent().append("Icon: "+ obj.val() +"   "); var newObject = jQuery("#fa-chooser_" + buttonizer.faSettings.objects); newObject.click(function(e) { if(buttonizer.faSettings.isOpened == false || buttonizer.faSettings.currentSelect != obj) { jQuery(".fontawesome-searcher .fontawesome-searcher-searchbar input").focus(); buttonizer.faSettings.isOpened = true; // Update process jQuery(".fontawesome-searcher").css({ "top": newObject.offset().top - 20 + newObject.height(), "left": newObject.offset().left - adminBody.offset().left, "width": newObject.width() }).show(); buttonizer.faSettings.currentSelect = obj; buttonizer.faSettings.currentObject = newObject; }else{ buttonizer.faSettings.isOpened = false; jQuery(".fontawesome-searcher").hide(); } e.preventDefault(); }); }); }, faSearchWord: function(word) { var foundMatches = []; for(var i = 0; i < fontAwesome.length; i++) { if(fontAwesome[i].indexOf(word) !== -1) { foundMatches.push(fontAwesome[i]); } }; if(foundMatches.length == 0) { jQuery(".fontawesome-searcher .no-matches-found").show(); jQuery(".fontawesome-searcher .fontawesome-searcher-icons").hide(); }else{ jQuery(".fontawesome-searcher .no-matches-found").hide(); jQuery(".fontawesome-searcher .fontawesome-searcher-icons").show(); var text = ''; for(var b = 0; b < foundMatches.length; b++) { if(b % 4 == 0) { text += ""; } text += ''; }; text += ''; jQuery(".fontawesome-searcher .fontawesome-searcher-icons").html(text); } }, faChooseIcon: function(icon) { buttonizer.faSettings.currentSelect.val(icon).change(); buttonizer.faSettings.currentObject.html("Icon: "+ icon +"   "); jQuery("#" + buttonizer.faSettings.currentObject.attr("id")).click(); } } document.addEventListener('DOMContentLoaded', buttonizer.init, false); window.onbeforeunload = function(){ if(buttonizer.settings.hasChanges && !buttonizer.settings.clickedButton) { return 'You have unsaved data. Are you sure you want to leave?'; } };