EVOLUTION-MANAGER
Edit File: smof.js
/** * SMOF js * * contains the core functionalities to be used * inside SMOF */ jQuery.noConflict(); /** Fire up jQuery - let's dance! */ jQuery(document).ready(function($){ var $ofContainer = $('#of_container'); //(un)fold options in a checkbox-group jQuery('.fld').click(function() { var $fold='.f_'+this.id; $($fold).slideToggle('normal', "swing"); }); //Color picker $('.of-color').wpColorPicker(); //hides warning if js is enabled $('#js-warning').hide(); //Tabify Options $('.group').hide(); // Get the URL parameter for tab function getURLParameter(name) { return decodeURI( (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,''])[1] ); } // If the $_GET param of tab is set, use that for the tab that should be open if (getURLParameter('tab') != "") { $.cookie('of_current_opt', '#'+getURLParameter('tab'), { expires: 7, path: '/' }); } // Display last current tab if ($.cookie("of_current_opt") === null) { $('.group:first').fadeIn('fast'); $('#of-nav li:first').addClass('current'); } else { var hooks = $('#hooks').html(); hooks = jQuery.parseJSON(hooks); $.each(hooks, function(key, value) { if ($.cookie("of_current_opt") == '#of-option-'+ value) { $('.group#of-option-' + value).fadeIn(); $('#of-nav li.' + value).addClass('current'); } }); } //Current Menu Class $('#of-nav li a').click(function(evt){ // event.preventDefault(); $('#of-nav li').removeClass('current'); $(this).parent().addClass('current'); var clicked_group = $(this).attr('href'); $.cookie('of_current_opt', clicked_group, { expires: 7, path: '/' }); $('.group').hide(); $(clicked_group).fadeIn('fast'); return false; }); //Masked Inputs (images as radio buttons) $('.of-radio-img-img').click(function(){ $(this).parent().parent().find('.of-radio-img-img').removeClass('of-radio-img-selected'); $(this).addClass('of-radio-img-selected'); }); $('.of-radio-img-label').hide(); $('.of-radio-img-img').show(); $('.of-radio-img-radio').hide(); //Masked Inputs (background images as radio buttons) $('.of-radio-tile-img').click(function(){ $(this).parent().parent().find('.of-radio-tile-img').removeClass('of-radio-tile-selected'); $(this).addClass('of-radio-tile-selected'); }); $('.of-radio-tile-label').hide(); $('.of-radio-tile-img').show(); $('.of-radio-tile-radio').hide(); /** Aquagraphite Slider MOD */ //Hide (Collapse) the toggle containers on load $(".slide_body").hide(); //Switch the "Open" and "Close" state per click then slide up/down (depending on open/close state) $ofContainer.on('click', '.slide_edit_button', function () { /* //display as an accordion $(".slide_header").removeClass("active"); $(".slide_body").slideUp("fast"); */ //toggle for each $(this).parent().toggleClass("active").next().slideToggle("fast"); return false; //Prevent the browser jump to the link anchor }); // Update slide title upon typing function update_slider_title(e) { var element = e; if ( this.timer ) { clearTimeout( element.timer ); } this.timer = setTimeout( function() { $(element).parent().prev().find('strong').text( element.value ); }, 100); return true; } $ofContainer.on('keyup', '.of-slider-title', function () { update_slider_title(this); }); //Remove individual slide $ofContainer.on('click', '.slide_delete_button', function () { // event.preventDefault(); var agree = confirm("Are you sure you wish to delete this slide?"); if (agree) { var $trash = $(this).parents('li'); //$trash.slideUp('slow', function(){ $trash.remove(); }); //chrome + confirm bug made slideUp not working... $trash.animate({ opacity: 0.25, height: 0, }, 500, function() { $(this).remove(); }); return false; //Prevent the browser jump to the link anchor } else { return false; } }); //Add new slide $ofContainer.on('click', '.slide_add_button', function () { var slidesContainer = $(this).prev(); var sliderId = slidesContainer.attr('id'); var numArr = $('#'+sliderId +' li').find('.order').map(function() { var str = this.id; str = str.replace(/\D/g,''); str = parseFloat(str); return str; }).get(); var maxNum = Math.max.apply(Math, numArr); if (maxNum < 1 ) { maxNum = 0}; var newNum = maxNum + 1; var newSlide = '<li class="temphide"><div class="slide_header"><strong>Slide ' + newNum + '</strong><input type="hidden" class="slide of-input order" name="' + sliderId + '[' + newNum + '][order]" id="' + sliderId + '_slide_order-' + newNum + '" value="' + newNum + '"><a class="slide_edit_button" href="#">Edit</a></div><div class="slide_body" style="display: none; "><label>Title</label><input class="slide of-input of-slider-title" name="' + sliderId + '[' + newNum + '][title]" id="' + sliderId + '_' + newNum + '_slide_title" value=""><label>Image URL</label><input class="upload slide of-input" name="' + sliderId + '[' + newNum + '][url]" id="' + sliderId + '_' + newNum + '_slide_url" value=""><div class="upload_button_div"><span class="button media_upload_button" id="' + sliderId + '_' + newNum + '">Upload</span><span class="button remove-image hide" id="reset_' + sliderId + '_' + newNum + '" title="' + sliderId + '_' + newNum + '">Remove</span></div><div class="screenshot"></div><label>Link URL (optional)</label><input class="slide of-input" name="' + sliderId + '[' + newNum + '][link]" id="' + sliderId + '_' + newNum + '_slide_link" value=""><label>Description (optional)</label><textarea class="slide of-input" name="' + sliderId + '[' + newNum + '][description]" id="' + sliderId + '_' + newNum + '_slide_description" cols="8" rows="8"></textarea><a class="slide_delete_button" href="#">Delete</a><div class="clear"></div></div></li>'; slidesContainer.append(newSlide); var nSlide = slidesContainer.find('.temphide'); nSlide.fadeIn('fast', function() { $(this).removeClass('temphide'); }); optionsframework_file_bindings(); // re-initialise upload image.. return false; //prevent jumps, as always.. }); //Sort slides jQuery('.slider').find('ul').each( function() { var id = jQuery(this).attr('id'); $('#'+ id).sortable({ placeholder: "placeholder", opacity: 0.6, handle: ".slide_header", cancel: "a" }); }); /** Sorter (Layout Manager) */ jQuery('.sorter').each( function() { var id = jQuery(this).attr('id'); $('#'+ id).find('ul').sortable({ items: 'li', placeholder: "placeholder", connectWith: '.sortlist_' + id, opacity: 0.6, update: function() { $(this).find('.position').each( function() { var listID = $(this).parent().attr('id'); var parentID = $(this).parent().parent().attr('id'); parentID = parentID.replace(id + '_', '') var optionID = $(this).parent().parent().parent().attr('id'); $(this).prop("name", optionID + '[' + parentID + '][' + listID + ']'); }); } }); }); /** Ajax Backup & Restore MOD */ //backup button $ofContainer.on('click', '#of_backup_button', function () { var answer = confirm("Click OK to backup your current saved options.") if (answer){ var clickedObject = $(this); var clickedID = $(this).attr('id'); var nonce = $('#security').val(); var data = { action: 'of_ajax_post_action', type: 'backup_options', security: nonce }; $.post(ajaxurl, data, function(response) { //check nonce if(response==-1){ //failed var fail_popup = $('#of-popup-fail'); fail_popup.fadeIn(); window.setTimeout(function(){ fail_popup.fadeOut(); }, 2000); } else { var success_popup = $('#of-popup-save'); success_popup.fadeIn(); window.setTimeout(function(){ location.reload(); }, 1000); } }); } return false; }); //restore button $ofContainer.on('click', '#of_restore_button', function () { var answer = confirm("'Warning: All of your current options will be replaced with the data from your last backup! Proceed?") if (answer){ var clickedObject = $(this); var clickedID = $(this).attr('id'); var nonce = $('#security').val(); var data = { action: 'of_ajax_post_action', type: 'restore_options', security: nonce }; $.post(ajaxurl, data, function(response) { //check nonce if(response==-1){ //failed var fail_popup = $('#of-popup-fail'); fail_popup.fadeIn(); window.setTimeout(function(){ fail_popup.fadeOut(); }, 2000); } else { var success_popup = $('#of-popup-save'); success_popup.fadeIn(); window.setTimeout(function(){ location.reload(); }, 1000); } }); } return false; }); // Delete backup button. $ofContainer.on('click', '#of_delete_backup_button', function () { var answer = confirm("'Warning: Your options backup will be deleted! Proceed?") if (answer){ var nonce = $('#security').val(); var data = { action: 'of_ajax_post_action', type: 'delete_backup_options', security: nonce }; $.post(ajaxurl, data, function(response) { //check nonce if(response==-1){ //failed var fail_popup = $('#of-popup-fail'); fail_popup.fadeIn(); window.setTimeout(function(){ fail_popup.fadeOut(); }, 2000); } else { var success_popup = $('#of-popup-save'); success_popup.fadeIn(); window.setTimeout(function(){ location.reload(); }, 1000); } }); } return false; }); /** Ajax Transfer (Import/Export) Option */ $ofContainer.on('click', '#of_import_button', function () { var answer = confirm("Click OK to import options.") if (answer){ var clickedObject = $(this); var clickedID = $(this).attr('id'); var nonce = $('#security').val(); var import_data = $('#export_data').val(); var data = { action: 'of_ajax_post_action', type: 'import_options', security: nonce, data: import_data }; $.post(ajaxurl, data, function(response) { var fail_popup = $('#of-popup-fail'); var success_popup = $('#of-popup-save'); //check nonce if(response==-1){ //failed fail_popup.fadeIn(); window.setTimeout(function(){ fail_popup.fadeOut(); }, 2000); } else { success_popup.fadeIn(); window.setTimeout(function(){ location.reload(); }, 1000); } }); } return false; }); /** AJAX Save Options */ $ofContainer.on('click', '#of_save', function () { var nonce = $('#security').val(); $('.ajax-loading-img').fadeIn(); //get serialized data from all our option fields var serializedReturn = $('#of_form :input[name][name!="security"][name!="of_reset"]').serialize(); $('#of_form :input[type=checkbox]').each(function() { if (!this.checked) { serializedReturn += '&'+this.name+'=0'; } }); var data = { type: 'save', action: 'of_ajax_post_action', security: nonce, data: serializedReturn }; $.post(ajaxurl, data, function(response) { var success = $('#of-popup-save'); var fail = $('#of-popup-fail'); var loading = $('.ajax-loading-img'); loading.fadeOut(); if (response==1) { success.fadeIn(); } else { fail.fadeIn(); } window.setTimeout(function(){ success.fadeOut(); fail.fadeOut(); }, 2000); }); return false; }); /* AJAX Options Reset */ $('#of_reset').click(function() { //confirm reset var answer = confirm("Click OK to reset. All settings will be lost and replaced with default settings!"); //ajax reset if (answer){ var nonce = $('#security').val(); $('.ajax-reset-loading-img').fadeIn(); var data = { type: 'reset', action: 'of_ajax_post_action', security: nonce, }; $.post(ajaxurl, data, function(response) { var success = $('#of-popup-reset'); var fail = $('#of-popup-fail'); var loading = $('.ajax-reset-loading-img'); loading.fadeOut(); if (response==1) { success.fadeIn(); window.setTimeout(function(){ location.reload(); }, 1000); } else { fail.fadeIn(); window.setTimeout(function(){ fail.fadeOut(); }, 2000); } }); } return false; }); /** Tipsy @since v1.3 */ if (jQuery().tipsy) { $('.tooltip, .typography-size, .typography-height, .typography-face, .typography-style, .of-typography-color').tipsy({ fade: true, gravity: 's', opacity: 0.7, }); } /** * JQuery UI Slider function * Dependencies : jquery, jquery-ui-slider * Feature added by : Smartik - http://smartik.ws/ * Date : 03.17.2013 */ jQuery('.smof_sliderui').each(function() { var obj = jQuery(this); var sId = "#" + obj.data('id'); var val = parseInt(obj.data('val')); var min = parseInt(obj.data('min')); var max = parseInt(obj.data('max')); var step = parseInt(obj.data('step')); //slider init obj.slider({ value: val, min: min, max: max, step: step, range: "min", slide: function( event, ui ) { jQuery(sId).val( ui.value ); } }); }); /** * Switch * Dependencies : jquery * Feature added by : Smartik - http://smartik.ws/ * Date : 03.17.2013 */ jQuery(".cb-enable").click(function(){ var parent = $(this).parents('.switch-options'); jQuery('.cb-disable',parent).removeClass('selected'); jQuery(this).addClass('selected'); jQuery('.main_checkbox',parent).attr('checked', true); //fold/unfold related options var obj = jQuery(this); var $fold='.f_'+obj.data('id'); jQuery($fold).slideDown('normal', "swing"); }); jQuery(".cb-disable").click(function(){ var parent = $(this).parents('.switch-options'); jQuery('.cb-enable',parent).removeClass('selected'); jQuery(this).addClass('selected'); jQuery('.main_checkbox',parent).attr('checked', false); //fold/unfold related options var obj = jQuery(this); var $fold='.f_'+obj.data('id'); jQuery($fold).slideUp('normal', "swing"); }); //disable text select(for modern chrome, safari and firefox is done via CSS) // if (($.browser.msie && $.browser.version < 10) || $.browser.opera) { // $('.cb-enable span, .cb-disable span').find().attr('unselectable', 'on'); // } /** * Google Fonts * Dependencies : google.com, jquery * Feature added by : Smartik - http://smartik.ws/ * Date : 03.17.2013 */ function GoogleFontSelect( slctr, mainID ){ var _selected = $(slctr).val(); //get current value - selected and saved var _linkclass = 'style_link_'+ mainID; var _previewer = mainID +'_ggf_previewer'; if( _selected ){ //if var exists and isset $('.'+ _previewer ).fadeIn(); //Check if selected is not equal with "Select a font" and execute the script. if ( _selected !== 'none' && _selected !== 'Select a font' ) { //remove other elements crested in <head> $( '.'+ _linkclass ).remove(); //replace spaces with "+" sign var the_font = _selected.replace(/\s+/g, '+'); //add reference to google font family $('head').append('<link href="http://fonts.googleapis.com/css?family='+ the_font +'" rel="stylesheet" type="text/css" class="'+ _linkclass +'">'); //show in the preview box the font $('.'+ _previewer ).css('font-family', _selected +', sans-serif' ); }else{ //if selected is not a font remove style "font-family" at preview box $('.'+ _previewer ).css('font-family', '' ); $('.'+ _previewer ).fadeOut(); } } } //init for each element jQuery( '.google_font_select' ).each(function(){ var mainID = jQuery(this).attr('id'); GoogleFontSelect( this, mainID ); }); //init when value is changed jQuery( '.google_font_select' ).change(function(){ var mainID = jQuery(this).attr('id'); GoogleFontSelect( this, mainID ); }); /** * Media Uploader * Dependencies : jquery, wp media uploader * Feature added by : Smartik - http://smartik.ws/ * Date : 05.28.2013 */ function optionsframework_add_file(event, selector) { var upload = $(".uploaded-file"), frame; var $el = $(this); event.preventDefault(); // If the media frame already exists, reopen it. if ( frame ) { frame.open(); return; } // Create the media frame. frame = wp.media({ // Set the title of the modal. title: $el.data('choose'), // Customize the submit button. button: { // Set the text of the button. text: $el.data('update'), // Tell the button not to close the modal, since we're // going to refresh the page when the image is selected. close: false } }); // When an image is selected, run a callback. frame.on( 'select', function() { // Grab the selected attachment. var attachment = frame.state().get('selection').first(); frame.close(); selector.find('.upload').val(attachment.attributes.url); if ( attachment.attributes.type == 'image' ) { selector.find('.screenshot').empty().hide().append('<img class="of-option-image" src="' + attachment.attributes.url + '">').slideDown('fast'); } selector.find('.media_upload_button').unbind(); selector.find('.remove-image').show().removeClass('hide');//show "Remove" button selector.find('.of-background-properties').slideDown(); optionsframework_file_bindings(); }); // Finally, open the modal. frame.open(); } function optionsframework_remove_file(selector) { selector.find('.remove-image').hide().addClass('hide');//hide "Remove" button selector.find('.upload').val(''); selector.find('.of-background-properties').hide(); selector.find('.screenshot').slideUp(); selector.find('.remove-file').unbind(); // We don't display the upload button if .upload-notice is present // This means the user doesn't have the WordPress 3.5 Media Library Support if ( $('.section-upload .upload-notice').length > 0 ) { $('.media_upload_button').remove(); } optionsframework_file_bindings(); } function optionsframework_file_bindings() { $('.remove-image, .remove-file').on('click', function() { optionsframework_remove_file( $(this).parents('.section-upload, .section-media, .slide_body') ); }); $('.media_upload_button').unbind('click').click( function( event ) { optionsframework_add_file(event, $(this).parents('.section-upload, .section-media, .slide_body')); }); } optionsframework_file_bindings(); }); //end doc ready