/**
* Theme Name: BlogCentral
* Theme URI: http://4bzthemes.com/theme/blogcentral/
* Author: 4bzthemes
* Author URI: http://4bzthemes.com
* File Description: javascript admin file included on the theme options, post edit, and user profile pages.
*
* @since BlogCentral 1.0.0
*
* @package BlogCentral
* @subpackage admin.js
------------------------------------------------------------------------
Table of Contents
1. Utility Functions
2. Theme Options Page Functions
3. Media Uploader Functions
4. Event Handlers
-------------------------------------------------------------------------*/
/**
* 1. Utility Functions
*-----------------------------------------------------------------------*/
/**
* Split an id by '-'
*
* @since 1.0.0
* @param string id. Required. Id to be parsed.
* @return Array. The id parsed into parts.
*/
function blogcentral_parse_id( id ) {
return id.split( "-" );
}
/**
* Get the index of an element by parsing its id.
*
* @since 1.0.0
*
* @param string id. Required. Id to be parsed.
* @param int offset. Required. Array offset.
* @return Int. The index.
*/
function blogcentral_get_index( id, offset ) {
var split = blogcentral_parse_id( id );
return parseInt( split[split.length-offset] );
}
/**
* Get the prefix of an element's id.
*
* Used when there's a group of elements with the same base id, differing only in its prefix.
*
* @since 1.0.0
*
* @param string id. Id to be parsed.
* @return string. The id's prefix.
*/
function blogcentral_get_name( id ) {
var split = blogcentral_parse_id( id );
return split[0];
}
( function( $ ) {
"use strict";
/**
* 2. Theme Options Page Functions
*-----------------------------------------------------------------------*/
/**
* Handle selection to hide and show a container
* The target and the container to hide and show must be siblings.
*
* Works for select and checkboxes.
*
* @since 1.0.0
*
* @param object event. Object passed to handler by jquery.
*/
function blogcentral_hide_show( event ) {
var parent = $( event.target ).parent(),
display = $( '.hideshow', parent ).css( 'display' );
if ( $( event.target ).attr( 'checked' ) ) {
display = 'table-row';
} else {
display = 'none';
}
$( '> .hideshow', parent ).css( 'display', display );
}
/**
* Handle click of the x button to close a box
*
* @since 1.0.0
*
* @param object event. Object passed to handler by jquery.
*/
function blogcentral_close_box( event ) {
var target = $( event.target ),
parent = target.parent();
parent.remove();
}
/**
* Handle font selection.
*
* @since 1.0.0
*
* @param object event. Object passed to handler by jquery.
*/
function blogcentral_font_options( event ) {
var target = $( event.target ),
val = target.val(),
id = target.attr( 'id' ),
i = blogcentral_get_name( id ),
parent = target.parent(),
font_class = target.find( ":selected" ).attr( 'class' ),
type = '',
paramsJson = '',
url = target.data( 'blogcentral-font-url' );
if ( 'no_font' === val ) {
$( '#' + i + '-font-variant-cont' ).text( '' );
$( '#' + i + '-font-subsets-cont' ).text( '' );
return;
}
if ( 'system_fonts' === font_class ) {
type = 'system';
} else {
if ( 'google_fonts' === font_class ) {
type = 'google';
}
}
$( 'input[type=hidden]', parent ).val( type );
$( '#' + i + '-font-variant-cont' ).text( '' );
$( '#' + i + '-font-subsets-cont' ).text( '' );
paramsJson = {
'font': val,
'name': i,
'type': font_class
};
// Make the ajax call to retrieve the font options for the font selected.
$.ajax( {
url: url,
type: "POST",
timeout: 5000,
dataType: "json",
error: function( xhr ) {
alert( 'error in ajax '+ xhr.status + ' ' + xhr.statusText );
},
data: paramsJson,
beforeSend: function() {
$( '.loader', parent ).show();
},
complete: function(){
$( '.loader', parent ).hide();
},
success: function( data ) {
/*
* data should hold the variants and subsets fragment that should be appended to
* the fonts container.
*/
$( '#' + i + '-font-variant-cont' ).append( data.variants );
$( '#' + i + '-font-subsets-cont' ).append( data.subsets );
}
} ); // End of ajax call.
}
/**
* Show component layout specific options.
*
* @since 1.0.0
* @param object event. Object passed to handler by jquery.
*/
function blogcentral_show_sub_options( event ) {
var target = $( event.target ),
val = target.val(),
name = target.data( 'blogcentral-name' ),
html = '',
img_file = '';
$( '.' + name + '-layout-sub-layout' ).css( 'display', 'none' );
$( '.' + name + '-layout-sub-' + val, $( this ).closest( 'td' ) ).css( 'display', 'block' );
}
/**
* Handle border selection
*
* @since 1.0.0
* @param object event. Object passed to handler by jquery.
*/
function blogcentral_show_border( event ) {
var target = $( event.target ),
parent = target.parent(),
val = target.val(),
border = $( '.border-ex', parent );
border
.text( '' )
.removeClass( 'div1 div2 div3' );
if ( 'default' !== val && '0' !== val ) {
border
.text( val )
.addClass( val );
}
}
/**
* Add markup to the slides-wrap container for a new slide
*
* @since 1.0.0
*
* @param object event. Object passed to handler by jquery.
* @return false.
*/
function blogcentral_add_slide( event ) {
var target = $( event.target ),
name = target.attr( 'data-name' ),
parent = $( ".slides-wrap", $( this ).closest( 'td' ) ),
html = '
';
html += ' ' + ' ';
html += '
';
parent.append( html );
$( '.sortable' ).sortable();
return false;
}
/**
* Handle slide template selection.
*
* @since 1.0.0
* @param object event. Object passed to handler by jquery.
*/
function blogcentral_get_template( event ) {
var target = $( event.target ),
val = target.val(),
parent = target.parent(),
url = blogcentral_object.admin_template_ajax,
paramsJson = '';
// Send the selected template.
paramsJson = { 'template': val };
// Make the ajax call to retrieve the template code for the template selected.
$.ajax( {
url: url,
type: "POST",
timeout: 5000,
dataType: "json",
error: function( xhr ) {
alert( 'error in ajax ' + xhr.status + ' ' + xhr.statusText );
},
data: paramsJson,
beforeSend: function() {
$( '.loader', parent ).show();
},
complete: function(){
$( '.loader', parent ).hide();
},
success: function( data ) {
// Insert the template code into the textarea.
$( '.slide-html', parent ).val( data.template );
}
} );
}
/**
* Handle click to show the font awesome icons box to choose an icon.
*
* @since 1.0.0
*
* @param object event. Object passed to handler by jquery.
*/
function blogcentral_display_icons_box( event ) {
var i, item,
html = '
' + blogcentral_object.close + ' X
',
target = $( event.target ),
parent = target.parent(),
fa = blogcentral_object.fa_items;
for ( i = 0; i < fa.length; ++i ) {
item = fa[i];
html += '';
}
html += '
';
$( '.blogcentral-icon-chooser', parent ).remove();
parent.append( html );
$( '.blogcentral-icon-chooser .fa' ).on( 'click', blogcentral_add_icon_field );
}
/**
* Handle selection of a font awesome icon.
* Inserts the icon into the corresponding text field.
*
* @since 1.0.0
*
* @param object event. Object passed to handler by jquery.
*/
function blogcentral_add_icon_field( event ) {
var target = $( event.target ),
parent = target.parent().parent(),
val = target.attr( 'value' );
$( '.blogcentral-icon-field', parent ).val( val );
}
/**
* 3. Media Uploader Functions
*-----------------------------------------------------------------------*/
// Global variables used in the media uploader functions.
var blogcentral_custom_uploader, blogcentral_index;
/**
* Handle media file(s) selection in the media uploader, specifically images
*
* @since 1.0.0
*
* @param object event. Object passed to handler by jquery.
*/
function blogcentral_update_file_url( event ) {
var image = '',
width = '',
height = '',
alt = '',
imgs_html = '',
selection = blogcentral_custom_uploader.state().get( 'selection' );
// Map image(s) selections.
selection.map( function( attachment ) {
attachment = attachment.toJSON();
var id = attachment.id,
i;
if ( 'image' === attachment.type ) {
image = attachment.url;
width = attachment.width;
height = attachment.height;
alt = attachment.alt;
return;
}
});
$( '#' + blogcentral_index + '-width' ).val( width );
$( '#' + blogcentral_index + '-height' ).val( height );
$( '#' + blogcentral_index + '-alt' ).val( alt );
$( '#' + blogcentral_index ).val( image );
}
/**
* Handle the display of the WP Media Uploader
*
* Add handler for selection of files in the uploader.
*
* @since 1.0.0
*
* @param object event. Object passed to handler by jquery.
*/
function blogcentral_display_media_uploader( event ) {
var id = $( event.target ).data( 'blogcentral-textbox' );
blogcentral_index = id;
event.preventDefault();
// If the uploader object has already been created, reopen the dialog.
if ( blogcentral_custom_uploader ) {
blogcentral_custom_uploader.open();
return;
}
// Extend the wp.media object.
blogcentral_custom_uploader = wp.media.frames.file_frame = wp.media({
title: blogcentral_object.choose_image,
button: {
text: blogcentral_object.choose_image
},
multiple: true
});
// Handle the file selection.
blogcentral_custom_uploader.on( 'select', blogcentral_update_file_url );
// Open the uploader dialog.
blogcentral_custom_uploader.open();
}
/**
* Build the component wrapper options from the user inputs
*
* @since 1.1.0
*
* @param string shortcode. Required. The name of the shortcode that is being built.
* @return string. The wrapper options fragment of the shortcode.
*/
function blogcentral_build_wrapper_options( shortcode ) {
if ( ! shortcode ) {
return;
}
var shortcode_frag = '',
tag = '',
// The regular expression used to delete all "'" from the values, so not to close attributes prematurely.
regexp = /'/g;
tag = $( "[name='blogcentral[" + shortcode + "][title_text]']" ).val();
if ( tag ) {
shortcode_frag += " title_text='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][title_border]']" ).val();
if ( 'undefined' !== typeof tag && "0" !== tag ) {
shortcode_frag += " title_border='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][tagline_text]']" ).val();
if ( tag ) {
shortcode_frag += " tagline_text='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][tagline_border]']" ).val();
if ( 'undefined' !== typeof tag && "0" !== tag ) {
shortcode_frag += " tagline_border='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][wrap_class]']" ).val();
if ( tag ) {
shortcode_frag += " wrap_class='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][title_class]']" ).val();
if( tag ) {
shortcode_frag += " title_class='" + tag.replace( regexp, '' ) + "'";
}
return shortcode_frag;
}
/**
* Build the main options from the user inputs that most shortcodes share
*
* @since 1.0.0
*
* @param string shortcode. Required. The name of the shortcode that is being built.
* @return string. The main options fragment of the shortcode.
*/
function blogcentral_build_main_options( shortcode ) {
var shortcode_frag = '',
tag = '',
// The regular expression to delete all "'" from the values, so not to close attributes prematurely.
regexp = /'/g;
tag = $( 'input[name="blogcentral[' + shortcode + '][layout]"]:checked' ).val();
if ( tag ) {
shortcode_frag += " layout='" + tag + "'";
}
tag = $( '[name="blogcentral[' + shortcode + '][alternate]"]' ).attr( 'checked' );
if ( tag ) {
shortcode_frag += " alternate='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][cols]']" ).val();
if ( tag ) {
shortcode_frag += " cols='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][border]']" ).val();
if ( tag ) {
shortcode_frag += " border='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][masonry]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " masonry='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][alternate_color]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " alternate_color='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][limit]']" ).val();
if ( tag ) {
shortcode_frag += " limit='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "input[name='blogcentral[" + shortcode + "][post_meta_layout]']:checked" ).val();
if ( tag ) {
shortcode_frag += " post_meta_layout='" + tag + "'";
}
return shortcode_frag;
}
/**
* Build the posts specific options from the user inputs
*
* @since 1.0.0
*
* @param string shortcode. Required. The name of the shortcode that is being built.
* @return string. The posts specific options fragment of the shortcode.
*/
function blogcentral_build_posts_specific_opts( shortcode ) {
if ( ! shortcode ) {
return;
}
var shortcode_frag = '',
tag = '',
// The regular expression used to delete all "'" from the values, so not to close attributes prematurely.
regexp = /'/g;
tag = $( "[name='blogcentral[" + shortcode + "][gallery_slideshow]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " gallery_slideshow='" + tag + "'";
}
tag = $( "input[name='blogcentral[" + shortcode + "][quote_layout]']:checked" ).val();
if ( tag ) {
shortcode_frag += " quote_layout='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][show_title]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_title='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][show_content]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_content='" + tag + "'";
}
tag = $("[name='blogcentral[" + shortcode + "][show_author]']").attr( "checked" );
if ( tag )
shortcode_frag += " show_author='" + tag + "'";
tag = $( "[name='blogcentral[" + shortcode + "][show_date]']" ).attr( "checked" );
if ( tag )
shortcode_frag += " show_date='" + tag + "'";
tag = $( "[name='blogcentral[" + shortcode + "][show_categories]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_categories='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][show_tags]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_tags='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][show_stats]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_stats='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][show_social]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_social='" + tag + "'";
}
tag = $( "input[name='blogcentral[" + shortcode + "][share_title]']" ).val();
if ( tag ) {
shortcode_frag += " share_title='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][display_format_icon]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " display_format_icon='" + tag + "'";
}
return shortcode_frag;
}
/**
* Build the contact info specific options from the user inputs
*
* @since 1.1.0
*
* @param string shortcode. Required. The name of the shortcode that is being built.
* @return string. The contact info specific options fragment of the shortcode.
*/
function blogcentral_build_contact_info_specific_opts( shortcode ) {
if ( ! shortcode ) {
return;
}
var shortcode_frag = '',
tag = '',
// The regular expression used to delete all "'" from the values, so not to close attributes prematurely.
regexp = /'/g;
tag = $( "[name='blogcentral[" + shortcode + "][contact_info_layout]']:checked" ).val();
if ( tag ) {
shortcode_frag += " contact_info_layout='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][user_id]']" ).val();
if ( tag ) {
shortcode_frag += " user_id='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][show_address]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_address='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][show_phone]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_phone='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][show_email]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_email='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][show_url]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_url='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][show_social]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_social='" + tag + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][share_title]']" ).val();
if ( tag ) {
shortcode_frag += " share_title='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "input[name='blogcentral[" + shortcode + "][social_share_layout]']:checked" ).val();
if ( tag ) {
shortcode_frag += " social_share_layout='" + tag + "'";
}
return shortcode_frag;
}
/**
* Build the contact info general options from the user inputs
*
* @since 1.0.0
*
* @param string shortcode. Required. The name of the shortcode that is being built.
* @return string. The contact info general options fragment of the shortcode.
*/
function blogcentral_build_contact_info_general( shortcode ) {
if ( ! shortcode ) {
return;
}
var shortcode_frag = '',
tag = '',
// The regular expression used to delete all "'" from the values, so not to close attributes prematurely.
regexp = /'/g;
tag = $( "[name='blogcentral[" + shortcode + "][contact_address]']" ).val();
if ( tag ) {
shortcode_frag += " contact_address='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][address_icon]']" ).val();
if ( tag ) {
shortcode_frag += " address_icon='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][contact_phone]']" ).val();
if ( tag ) {
shortcode_frag += " contact_phone='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][phone_icon]']" ).val();
if ( tag ) {
shortcode_frag += " phone_icon='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][contact_url]']" ).val();
if ( tag ) {
shortcode_frag += " contact_url='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][url_icon]']" ).val();
if ( tag ) {
shortcode_frag += " url_icon='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][contact_email]']" ).val();
if ( tag ) {
shortcode_frag += " contact_email='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][email_icon]']" ).val();
if ( tag ) {
shortcode_frag += " email_icon='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][contact_facebook]']" ).val();
if ( tag ) {
shortcode_frag += " contact_facebook='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][facebook_icon]']" ).val();
if ( tag ) {
shortcode_frag += " facebook_icon='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][contact_twitter]']" ).val();
if ( tag ) {
shortcode_frag += " contact_twitter='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][twitter_icon]']" ).val();
if ( tag ) {
shortcode_frag += " twitter_icon='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][contact_google]']" ).val();
if ( tag ) {
shortcode_frag += " contact_google='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][google_icon]']" ).val();
if ( tag ) {
shortcode_frag += " google_icon='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][contact_linkedin]']" ).val();
if ( tag ) {
shortcode_frag += " contact_linkedin='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][linkedin_icon]']" ).val();
if ( tag ) {
shortcode_frag += " linkedin_icon='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][contact_tumblr]']" ).val();
if ( tag ) {
shortcode_frag += " contact_tumblr='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][tumblr_icon]']" ).val();
if ( tag ) {
shortcode_frag += " tumblr_icon='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][contact_instagram]']" ).val();
if ( tag ) {
shortcode_frag += " contact_instagram='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][instagram_icon]']" ).val();
if ( tag ) {
shortcode_frag += " instagram_icon='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][contact_pinterest]']" ).val();
if ( tag ) {
shortcode_frag += " contact_pinterest='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[" + shortcode + "][pinterest_icon]']" ).val();
if ( tag ) {
shortcode_frag += " pinterest_icon='" + tag.replace( regexp, '' ) + "'";
}
return shortcode_frag;
}
/**
* Build the contact form specific options from the user inputs
*
* @since 1.1.0
*
* @return string. The contact form specific options fragment of the shortcode.
*/
function blogcentral_build_contact_form_specific_opts() {
var shortcode_frag = '',
tag = '',
// The regular expression used to delete all "'" from the values, so not to close attributes prematurely.
regexp = /'/g;
tag = $( "[name='blogcentral[contact_form][layout]']:checked" ).val();
if ( tag ) {
shortcode_frag += " contact_form_layout='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[contact_form][show_contact]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_contact='" + tag + "'";
}
tag = $( "[name='blogcentral[contact_form][show_map]']" ).attr( "checked" );
if ( tag ) {
shortcode_frag += " show_map='" + tag + "'";
}
tag = $( "[name='blogcentral[contact_form][google_app_id]']" ).val();
if ( tag ) {
shortcode_frag += " google_app_id='" + tag.replace( regexp, '' ) + "'";
}
tag = $( "[name='blogcentral[contact_form][contact_form]']" ).val();
if ( tag ) {
var regexp2 = /\[/g;
// Replace '[' and ']' with '(' and ')' respectively, so not to cause any problems with the shortcode syntax.
shortcode_frag += " contact_form='" + tag
.replace( regexp, '' )
.replace( regexp2, '(' )
.replace( /\]/g, ')' ) + "'";
}
return shortcode_frag;
}
/**
* Build the slideshow specific options from the user inputs
*
* @since 1.0.0
*
* @return string. The slideshow specific options fragment of the shortcode.
*/
function blogcentral_build_slideshow_specific_opts() {
var shortcode_frag = '',
tag = '',
// The regular expression used to delete all "'" from the values, so not to close attributes prematurely.
regexp = /'/g,
val = '',
sep = '';
tag = $( '[name="blogcentral[slideshow][slideshow_layout]"]:checked' ).val();
if ( tag ) {
shortcode_frag += " slideshow_layout='" + tag + "'";
}
tag = $( '[name="blogcentral[slideshow][animation]"]' ).val();
if ( tag ) {
shortcode_frag += " animation='" + tag + "'";
}
tag = $( '[name="blogcentral[slideshow][sync]"]' ).val();
if ( tag ) {
shortcode_frag += " sync='" + tag.replace( regexp, '' ) + "'";
}
tag = $( '[name="blogcentral[slideshow][asNavFor]"]' ).val();
if ( tag ) {
shortcode_frag += " asNavFor='" + tag.replace( regexp, '' ) + "'";
}
tag = $( '[name="blogcentral[slideshow][easing]"]' ).val();
if ( tag ) {
shortcode_frag += " easing='" + tag.replace( regexp, '' ) + "'";
}
tag = $( '[name="blogcentral[slideshow][useCSS]"]:checked' ).val();
if ( tag ) {
shortcode_frag += " useCSS='" + tag + "'";
}
tag = new Array();
// Construct the slides. Separate them with '=>'.
$( '[name="blogcentral[slideshow][slides][]"]' ).each( function( i ) {
val += sep + $( this ).val().replace( regexp, '' );
sep = '=>';
});
if ( tag ) {
shortcode_frag += " slides='" + val + "'";
}
return shortcode_frag;
}
/**
* Start of functions to override the functions provided by 4bzCore plugin to construct the string for the
* different shortcodes.
*/
if ( typeof fourbzcore != "undefined") {
/**
* Build the contact info shortcode from the user inputs
*
* @since 1.1.0
*
* @return string. The constructed contact info shortcode.
*/
fourbzcore.fourbzcore_build_contact_info = function() {
var shortcode_frag = "[4bzcore_contact_info";
shortcode_frag += blogcentral_build_wrapper_options( 'contact_info' );
shortcode_frag += blogcentral_build_contact_info_specific_opts( 'contact_info' );
shortcode_frag += blogcentral_build_contact_info_general( 'contact_info' );
shortcode_frag += ']';
return shortcode_frag;
}
/**
* Build the contact form shortcode from the user inputs
*
* @since 1.0.0
*
* @return string. The constructed contact form shortcode.
*/
fourbzcore.fourbzcore_build_contact_form = function() {
var shortcode_frag = "[4bzcore_contact_form";
shortcode_frag += blogcentral_build_wrapper_options( 'contact_form' );
shortcode_frag += blogcentral_build_contact_form_specific_opts();
shortcode_frag += blogcentral_build_contact_info_specific_opts( 'contact_form' );
shortcode_frag += blogcentral_build_contact_info_general( 'contact_form' );
shortcode_frag += ']';
return shortcode_frag;
}
/**
* Build the progressbars shortcode from the user inputs
*
* @since 1.1.0
*
* @return string. The constructed progressbars shortcode.
*/
fourbzcore.fourbzcore_build_progressbars = function() {
var shortcode_frag = "[4bzcore_progressbars",
tag = '',
// The regular expression used to delete all "'" from the values, so not to close attributes prematurely.
regexp = /'/g;
shortcode_frag += blogcentral_build_wrapper_options( 'progressbars' );
tag = $( "[name='blogcentral[progressbars][cols]']" ).val();
if ( tag ) {
shortcode_frag += " cols='" + tag + "'";
}
tag = {};
// Get each skill and add to tag array.
$( '.add-skill-name').each(
function( i ) {
var index = $( this ).data( 'skill-index' ),
name = $( this ).val().replace( regexp, '' ),
value = $( '[name="blogcentral[progressbars][items][' + index + '][value]"]' ).val().replace( regexp, '' );
tag[name] = value;
} );
regexp = /\[/g;
/*
* Convert the tag array into a json string, replacing the brackets with parentheses, so not to cause
* any problems with the brackets in the shortcode string.
*/
if ( tag ) {
shortcode_frag += " items='" + JSON.stringify( tag )
.replace( regexp, '(' )
.replace( /\]/g, ')' ) +
"'";
}
shortcode_frag += ']';
return shortcode_frag;
}
/**
* Build the slideshow shortcode from the user inputs
*
* @since 1.1.0
*
* @return string. The constructed slideshow shortcode.
*/
fourbzcore.fourbzcore_build_slideshow = function() {
var shortcode_frag = "[4bzcore_slideshow";
shortcode_frag += blogcentral_build_wrapper_options( 'slideshow' );
shortcode_frag += blogcentral_build_slideshow_specific_opts();
shortcode_frag += ']';
return shortcode_frag;
}
/**
* Build the facebook comments shortcode from the user inputs
*
* @since 1.1.0
*
* @return string. The constructed facebook comments shortcode.
*/
fourbzcore.fourbzcore_build_facebook_comments = function() {
var shortcode_frag = "[4bzcore_facebook_comments",
tag = '';
shortcode_frag += blogcentral_build_wrapper_options( 'facebook_comments' );
tag = $( '[name="blogcentral[facebook_comments][limit]"]' ).val();
if ( tag ) {
shortcode_frag += " limit='" + tag + "'";
}
shortcode_frag += ']';
return shortcode_frag;
}
/**
* Build the post-based shortcode from the user inputs
*
* @since 1.1.0
*
* @param string shortcode. Required. The name of the shortcode that is being built.
* @return string. The constructed post-based shortcode.
*/
fourbzcore.fourbzcore_build_posts = function( shortcode ) {
if ( ! shortcode ) {
return;
}
var shortcode_frag = "[4bzcore_" + shortcode;
shortcode_frag += blogcentral_build_wrapper_options( shortcode );
shortcode_frag += blogcentral_build_main_options( shortcode );
shortcode_frag += blogcentral_build_posts_specific_opts( shortcode);
shortcode_frag += ']';
return shortcode_frag;
}
/**
* Build the flickr photos shortcode from the user inputs
*
* @since 1.1.0
*
* @return string. The constructed flickr photos shortcode.
*/
fourbzcore.fourbzcore_build_flickr_photos = function () {
var shortcode_frag = "[4bzcore_flickr_photos",
tag = '';
shortcode_frag += blogcentral_build_wrapper_options( 'flickr_photos' );
tag = $( '[name="blogcentral[flickr_photos][limit]"]' ).val();
if ( tag ) {
shortcode_frag += " limit='" + tag + "'";
}
tag = $( '[name="blogcentral[flickr_photos][user_id]"]' ).val();
if ( tag ) {
shortcode_frag += " user_id='" + tag + "'";
}
shortcode_frag += ']';
return shortcode_frag;
}
/**
* Build the author bio shortcode from the user inputs
*
* @since 1.0.0
*
* @return string. The constructed author bio shortcode.
*/
fourbzcore.fourbzcore_build_author_bio = function () {
var shortcode_frag = "[4bzcore_author_bio",
tag = '';
shortcode_frag += blogcentral_build_wrapper_options( 'author_bio' );
shortcode_frag += ']';
return shortcode_frag;
}
/**
* Build the image text shortcode from the user inputs
*
* @since 1.0.0
*
* @return string. The constructed image text shortcode.
*/
fourbzcore.fourbzcore_build_image_text = function () {
var shortcode_frag = "[4bzcore_image_text",
tag = '';
shortcode_frag += blogcentral_build_wrapper_options( 'image_text' );
tag = $( '[name="blogcentral[image_text][layout]"]' ).val();
if ( tag ) {
shortcode_frag += " layout='" + tag + "'";
}
tag = $( '[name="blogcentral[image_text][image_url]"]' ).val();
if ( tag ) {
shortcode_frag += " image_url='" + tag + "'";
}
tag = $( '[name="blogcentral[image_text][image_url_width]"]' ).val();
if ( tag ) {
shortcode_frag += " image_url_width='" + tag + "'";
}
tag = $( '[name="blogcentral[image_text][image_url_height]"]' ).val();
if ( tag ) {
shortcode_frag += " image_url_height='" + tag + "'";
}
tag = $( '[name="blogcentral[image_text][image_url_alt]"]' ).val();
if ( tag ) {
shortcode_frag += " image_url_alt='" + tag + "'";
}
tag = $( '[name="blogcentral[image_text][content]"]' ).val();
if ( tag ) {
shortcode_frag += " content='" + tag + "'";
}
shortcode_frag += ']';
return shortcode_frag;
}
}
/**
* 4. Event Handlers
*-----------------------------------------------------------------------*/
$( document ).on( 'ready', function() {
// Sortable
$( '.sortable' ).sortable();
// Tabs
$( '.tabs-layout1' ).tabs( { show: { effect: "fadeIn", duration:100 }} );
$( '.tabs-layout2' ).tabs( { show: { effect: "fadeIn", duration:100 }} );
/**
* WP Color Picker
*-----------------------------------------------------------------------*/
// For theme options page.
$( '.blogcentral-color-field' ).wpColorPicker();
/**
* General Theme Options
*-----------------------------------------------------------------------*/
$( 'body' ).on( 'click', '.layout-show', blogcentral_show_sub_options );
$( 'body' ).on( 'change', '.header-border-select', blogcentral_show_border );
$( 'body' ).on( 'click', '.blogcentral-add-slide', blogcentral_add_slide );
$( 'body' ).on( 'change', '.template-select', blogcentral_get_template );
$( '.font-select' ).change( blogcentral_font_options );
$( 'body' ).on( 'click', '.displaymaster', blogcentral_hide_show );
$( 'body' ).on( 'focus', '.blogcentral-icon-field', blogcentral_display_icons_box );
$( 'body' ).on( 'click', '.closer', blogcentral_close_box );
$( 'body' ).on( 'click', '.icon-image-btn', blogcentral_display_media_uploader );
});
})( jQuery );