Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
// Get color with added transparency
function getColorOpacity( color, opacity ) {
if ( typeof color === "undefined" || color.length === 0 || color == 'inherit' ) {
return "";
}
if ( typeof colorCalculator === "undefined" ) {
window.colorCalculator = new Colors();
}
colorCalculator.setColor( color );
var rgb = colorCalculator.colors.RND.rgb;
var alpha = colorCalculator.colors.alpha;
return 'rgba(' + rgb['r'] + ', ' + rgb['g'] + ', ' + rgb['b'] + ', ' + (alpha*opacity).toFixed(2) + ')';
}
function Theme( slug ) {
this.slug = slug,
this.reinforce = jQuery('#_gform_setting_reinforce_styles').is(':checked') ? ' !important;' : ';';
this.css = "",
// Second selector is the standard since GF v2.5.15. Remove the first selector in some time.
this.$el = jQuery('#' + this.slug + ', #gform-settings-section-' + this.slug),
this.presets = {
/* Dual Ternary operator:
Get Custom font if available.
Remove /Native from string if native font
Add quotes if GFonts
*/
font_pri: (this.$el.find('.font_pri').val() == 'custom/Native')
? this.$el.find('.font_pri_custom').val()
: (this.$el.find('.font_pri').val().indexOf("/Native") < 0)
? '"' + this.$el.find('.font_pri').val() + '"'
: this.$el.find('.font_pri').val().split("/Native")[0],
font_sec: (this.$el.find('.font_sec').val() == 'custom/Native')? this.$el.find('.font_sec_custom').val() : (this.$el.find('.font_sec').val().indexOf("/Native") < 0)? '"' + this.$el.find('.font_sec').val() + '"' : this.$el.find('.font_sec').val().split("/Native")[0],
},
this.getStyles = function( selector, styles ) {
if ( styles.length > 0 ) {
return selector.replace(/theme_slug/g, this.slug) + "{" + styles + "}\n";
}
// Else
return "";
},
this.getCss = function() {
for (const selector in this.cssSet) {
if (this.cssSet.hasOwnProperty(selector)) {
const fields = this.cssSet[selector];
this.css += this.getStyles ( selector, this.getDeclaractionBlock( fields ) );
}
}
this.css += this.getChoiceStyles();
// Add Button Shade
// var shade_name = this.$el.find('.adv_shadow_box_wrapper input:checked').val();
// this.css += this.getButtonShade( shade_name );
return this.css;
},
this.getCss = function() {
for (const selector in this.cssSet) {
if (this.cssSet.hasOwnProperty(selector)) {
const fields = this.cssSet[selector];
this.css += this.getStyles ( selector, this.getDeclaractionBlock( fields ) );
}
}
var css = this.getDeclaractionBlock( this.cssVars );
if ( css !== "" ) {
this.css += "."+this.slug+"_wrapper{"+css+"}";
}
// this.css += this.getChoiceStyles();
// Add Button Shade
// var shade_name = this.$el.find('.adv_shadow_box_wrapper input:checked').val();
// this.css += this.getButtonShade( shade_name );
return this.css;
},
/**
*
* @param {string} settingName CSS classname for the setting field
* @param {string} property Name of the CSS property to create rule with
* @param {string} suffix Unit for the value, or value itself in case of a checkbox
*
* @returns {string} CSS delaration
*/
this.getDeclaration = function( property, settingName ) {
var $settingEl = "";
var value = "";
var calc = "";
var preset_key = "";
// TODO: Retire
if ( settingName.indexOf("static-") === 0 ) {
value = settingName.split("static-")[1];
}
// TODO: Could be more efficient
if ( settingName.indexOf("var-") === 0 ) {
var varName = settingName.split("var-")[1];
if ( this.getDeclaractionBlock( this.cssVars ).indexOf(varName + ":") > -1 ) {
value = "var("+varName+", inherit)";
}
}
else if ( settingName.indexOf("calc-") === 0 ) {
calc = settingName.split("calc-")[1];
if ( calc == "placeholder") {
value = this.$el.find('#' + this.slug + "_placeholder_color" ).val();
if ( value == "" ) {
// Calculate based on the field color
value = getColorOpacity(this.$el.find('#' + this.slug + "_font_color" ).val(), .3);
}
} else if ( calc == "choice_style_color_muted") {
value = getMutedColor( this.$el.find('#' + this.slug + "_choice_style_color" ).val() );
}
}
else if ( settingName.indexOf('preset-') === 0 ) {
preset_key = settingName.split('preset-')[1]; // Ex preset value: "preset-font_pri"
value = this.presets[preset_key];
}
else {
$settingEl = this.$el.find('#' + this.slug + "_" + settingName );
// In case of a radio
if ($settingEl.length == 0) {
$settingEl = jQuery("[name=_gform_setting_" + this.slug + "_" + settingName + "]:checked");
}
if ($settingEl.length == 0 && settingName.indexOf("preset-") === -1 && settingName.indexOf("static-") === -1 ) {
console.log("Setting " + settingName + " not found;");
return '';
}
// if checkbox is selected
if ( $settingEl.attr('type') == "checkbox" ) {
if ( $settingEl.is(':checked') == false ) {
return "";
} else {
// if checked
return "\n" + property + this.reinforce;
}
// if not a checkbox, get value from the field
} else {
value = $settingEl.val();
}
}
// Check if the returned value is a preset
if ( value.indexOf('preset-') === 0 ) {
preset_key = value.split('preset-')[1]; // Ex preset value: "preset-font_pri"
value = this.presets[preset_key];
}
if ( value != '') {
// Depricated
if ( property == "background-image" ) {
value = "url('" +value+ "')";
}
var bg_type = this.$el.find( ".background:checked" ).val();
if ( property == "--gfsp--bg-img" && bg_type == "image" ) {
value = "url('" +value+ "')";
}
if ( property == "--gfsp--bg-color" && ! ( bg_type == "image" || bg_type == "color" ) ) {
value = "";
}
return "\n" + property + ":" + value + this.reinforce;
}
// Default
return '';
},
this.getDeclaractionBlock = function( fields ) {
var block = "";
for (const prop in fields) {
if (fields.hasOwnProperty(prop)) {
const settingName = fields[prop];
block += this.getDeclaration( prop, settingName );
}
}
return block;
},
this.cssVars = {
"--gfsp--bg-color": "bg_color",
"--gfsp--bg-img": "bg_image",
"--gfsp--bg-size": "bg_size",
"--gfsp--wr-padding": "wr_padding",
"--gfsp--field-font-size": "font_size",
"--gfsp--placeholder-color": "calc-placeholder",
/* Base */
"--gfsp--font": "preset-font_pri",
"--gfsp--base-color": "label_font_color",
"--gfsp--base-font-size": "base_font_size",
"--gfsp--label-font-color": "label_color",
"--gfsp--label-font-size": "label_font_size",
"--gfsp--label-font-weight": "label_font_weight",
"--gfsp--label-font-style: italic": "label_font_italic",
"--gfsp--label-text-decoration: underline": "label_font_underline",
"--gfsp--label-bg-color": "label_bg_color",
"--gfsp--label-align": "label_text_align",
"--gfsp--label-padding": "label_padding",
"--gfsp--label-margin-bottom": "label_margin_bottom",
"--gfsp--field-margin-bottom": "field_margin_bottom",
"--gfsp--field-icon-color": "field_icon_color",
"--gfsp--o-bg-color": "o_custom_bg",
"--gfsp--o-bg-text-color": "o_custom_bg_text",
"--gfsp--field-v-padding": "field_v_padding",
"--gfsp--field-border-width": "field_border_width",
"--gfsp--warning-color": "validation_color",
"--gfsp--warning-bg-color": "validation_bg_color",
"--gfsp--desc-font": "desc_font",
"--gfsp--desc-font-size": "desc_font_size",
"--gfsp--desc-color": "desc_color",
"--gfsp--desc-align": "desc_text_align",
"--gfsp--desc-padding": "desc_padding",
"--gfsp--desc-margin-bottom": "desc_margin_bottom",
"--gfsp--desc-bg-color": "desc_bg_color",
"--gfsp--desc-font-weight": "desc_font_weight",
"--gfsp--desc-font-style: italic": "desc_font_italic",
"--gfsp--desc-text-decoration: underline": "desc_font_underline",
};
this.cssSet = {
'.gf_stylespro.theme_slug .gfield':{
"--gfsp-choice-style-color" : "choice_style_color",
"--gfsp-choice-style-color-muted" : "calc-choice_style_color_muted",
},
'.gf_stylespro.theme_slug input,\
.gf_stylespro.theme_slug select,\
.gf_stylespro.theme_slug textarea,\
.gf_stylespro.theme_slug .ginput_total,\
.gf_stylespro.theme_slug .ginput_product_price,\
.gf_stylespro.theme_slug .ginput_shipping_price,\
.theme_slug .gfsp_icon,\
.gf_stylespro.theme_slug input[type=checkbox]:not(old) + label,\
.gf_stylespro.theme_slug input[type=radio ]:not(old) + label,\
.gf_stylespro.theme_slug .ginput_container' : {
'font-family' : 'preset-font_sec',
'color' : 'font_color',
'font-size' : 'font_size',
'font-weight' : 'field_font_weight',
'font-style: italic' : 'font_italic',
'text-decoration: underline': 'font_underline',
},
".theme_slug_wrapper .gf_stylespro" : {
'font-family' : 'var---gfsp--font',
'color' : 'var---gfsp--base-color',
},
".theme_slug_wrapper .gf_stylespro .gfield_label" : {
'font-family' : 'var---gfsp--font',
'color' : 'var---gfsp--label-font-color',
},
'.theme_slug_wrapper.gform_wrapper input:not([type="radio"]):not([type="checkbox"]):not([type=button]):not([type=submit]),\
.theme_slug_wrapper.gform_wrapper select,\
.theme_slug_wrapper.gform_wrapper textarea,\
.theme_slug_wrapper.gform_wrapper input[type="text"],\
.theme_slug_wrapper.gform_wrapper input[type="tel"],\
.theme_slug_wrapper.gform_wrapper input[type="email"],\
.theme_slug_wrapper.gform_wrapper input[type="url"],\
.theme_slug_wrapper.gform_wrapper input[type="password"],\
.theme_slug_wrapper.gform_wrapper input[type="search"],\
.theme_slug_wrapper.gform_wrapper input[type="number"],\
.theme_slug_wrapper.gform_wrapper .chosen-choices': {
'background-color' : 'field_bg_color',
'font-weight' : 'field_font_weight',
'text-align' : 'field_text_align',
'border-radius' : 'field_border_radius',
'border-style' : 'field_border_style',
'border-color' : 'field_border_color',
},
'.theme_slug .gfsp_icon': {
'padding-top' : 'field_v_padding',
'padding-bottom' : 'field_v_padding',
'border-width' : 'field_border_width',
'border-color' : 'field_border_color',
},
'.theme_slug_wrapper.gform_wrapper input:not([type="radio"]):not([type="checkbox"]):not([type=button]):not([type=submit]):focus,\
.theme_slug_wrapper.gform_wrapper select:focus,\
.theme_slug_wrapper.gform_wrapper textarea:focus,\
.theme_slug_wrapper.gform_wrapper input[type="text"]:focus,\
.theme_slug_wrapper.gform_wrapper input[type="tel"]:focus,\
.theme_slug_wrapper.gform_wrapper input[type="email"]:focus,\
.theme_slug_wrapper.gform_wrapper input[type="url"]:focus,\
.theme_slug_wrapper.gform_wrapper input[type="password"]:focus,\
.theme_slug_wrapper.gform_wrapper input[type="search"]:focus,\
.theme_slug_wrapper.gform_wrapper input[type="number"]:focus': {
'background-color' : 'field_focus_bg_color',
'border-color' : 'field_focus_border_color',
},
'.gf_stylespro_wrapper .gf_stylespro.theme_slug .button': {
'background-color' : 'btn_bg_color',
'color ' : 'var---gfsp--base-color',
'color' : 'btn_color',
'font-family' : 'btn_font',
'font-size' : 'btn_font_size',
'font-weight' : 'btn_font_weight',
'padding' : 'btn_padding',
'border-width' : 'btn_border_width',
'border-radius' : 'btn_border_radius',
'border-style' : 'btn_border_style',
'border-color' : 'btn_border_color',
},
'.theme_slug .button:hover,\
.theme_slug input[type=button]:hover,\
.theme_slug input[type=submit]:hover' :{
'color' : 'btn_hover_color',
'border-color' : 'btn_hover_border_color',
'background-color' : 'btn_hover_bg_color',
},
'.gf_stylespro_wrapper .gf_stylespro.theme_slug .gform_next_button,\
.gf_stylespro_wrapper .gf_stylespro.theme_slug input[type=submit]': {
'color' : 'btn_sbt_color',
'border-color' : 'btn_sbt_border_color',
'background-color' : 'btn_sbt_bg_color',
},
'.theme_slug .gform_next_button:hover,\
.theme_slug input[type=button].gform_next_button:hover,\
.theme_slug input[type=submit]:hover': {
'color' : 'btn_sbt_hover_color',
'border-color' : 'btn_sbt_hover_border_color',
'background-color' : 'btn_sbt_hover_bg_color',
},
}
this.getChoiceStyles = function() {
var choice_style_color = this.$el.find('#' + this.slug + "_choice_style_color" ).val();
if ( ! choice_style_color ) {
return "";
}
// Choice Styles
var choice_style_color_muted = getMutedColor(choice_style_color);
var choiceStyleDeclaration = `.theme_slug .gfsp_toggle input[type]:not(old):checked + label:after,
.theme_slug .gfsp_ios input[type]:not(old):checked + label:before,
.theme_slug .gfsp_flip input[type]:not(old) + label:after{
background-color:choiceColor
}
.theme_slug .gfsp_toggle input[type]:not(old):checked + label:before { background-color: choiceMuted }
.theme_slug .gfsp_draw input[type]:not(old) + label:after { color:choiceColor }
.theme_slug .gfsp_dot input[type]:not(old) + label:before {
box-shadow: 0 0 0px 10px inset, 0 0 0px 15px choiceColor inset;
border-color:choiceColor;
}
.theme_slug .gfsp_dot input[type]:not(old):checked + label:before {
box-shadow: 0 0 0px 4px inset, 0 0 0px 15px choiceColor inset;
border-color:choiceColor;
}`;
// Remove empty spaces
choiceStyleDeclaration = choiceStyleDeclaration.replace(/ /g, "");
choiceStyleDeclaration = choiceStyleDeclaration.replace(/theme_slug/g, this.slug);
choiceStyleDeclaration = choiceStyleDeclaration.replace(/choiceColor/g, choice_style_color);
choiceStyleDeclaration = choiceStyleDeclaration.replace(/choiceMuted/g, choice_style_color_muted);
return choiceStyleDeclaration;
}
this.saveCss = function() {
this.$el.find("#" + this.slug + "_theme_css").val( this.getCss() );
}
}
/* Hide all theme and Show @param: theme */
function toggleTheme ( theme ) {
jQuery('.thm').slideUp();
var $theme_container = jQuery('.' + theme );
$theme_container.slideDown();
// Trigger change to calculate font-weights
$theme_container.find('.font_pri, .font_sec').trigger('change');
if ( has_gfsp_preview ) {
jQuery('.thm').off('.gfspPreview');
$theme_container.on('input.gfspPreview colorChange.gfspPreview', 'input, select', function() {
if (previewTimeout)
clearTimeout(previewTimeout);
previewTimeout = setTimeout(() => {
updatePreview( theme );
}, 300);
});
}
}
function updatePreview(theme) {
window.previewTheme = new Theme( theme );
window.previewTheme.getCss();
var pri_font = previewTheme.$el.find('.font_pri').val();
if ( pri_font.indexOf("/Native") < 0 ) {
pri_font = pri_font.split("/Native")[0];
} else {
pri_font = false;
}
var sec_font = previewTheme.$el.find('.font_sec').val();
if ( sec_font.indexOf("/Native") < 0 ) {
sec_font = sec_font.split("/Native")[0];
} else {
sec_font = false;
}
var css = "";
updateGFontWeights();
if ( pri_font ) {
var pri_wght_val = previewTheme.$el.find('#'+theme+'_label_gfont_wght').val();
var pri_wght = pri_wght_val === "" ? "" : ":" + pri_wght_val
css += "@import url('//fonts.googleapis.com/css?family="+pri_font+pri_wght+"');";
}
if ( sec_font ) {
var sec_wght_val = previewTheme.$el.find('#'+theme+'_gfont_wght').val();
var sec_wght = sec_wght_val === "" ? "" : ":" + sec_wght_val
css += "@import url('//fonts.googleapis.com/css?family="+sec_font+sec_wght+"');";
}
css += previewTheme.css;
updatePreviewCss( theme, css );
}
function updatePreviewCss( theme, css ) {
// Create element if it doesn't exist in the preview frame
if ( ! ( window.previewFrame && theme in window.previewFrame ) ) {
if ( previewFrame.oldCss.length > 0 ) {
window.previewFrame.oldCss.before('');
} else {
// If no inline settings are found, embed after the main stylesheet
jQuery('#preview_frame').contents().find('link#gforms_stylespro_css-css, style[id^=gforms_stylespro_]').last().after('');
}
window.previewFrame[theme] = jQuery('#preview_frame').contents().find('#gforms_stylespro_css_'+theme+'-inline-css');
} else {
window.previewFrame[theme].html( css );
}
if ( theme === "sp_inherit" ) {
var frame_window = window.frames["preview_frame"].window;
frame_window.gf_stylespro_icon_default = false;
if (typeof frame_window.setGfspIconHeights == 'function') {
frame_window.setGfspIconHeights()
}
}
}
function closePreview() {
jQuery('.thm').off('.gfspPreview');
jQuery('body').removeClass('has_gfsp_preview');
jQuery('.preview_frame_wrapper').remove();
// Clear URL Param
const url = new URL(location);
url.searchParams.delete('gfsp_preview_url');
history.replaceState(null, null, url)
}
/* Show and hide background options */
function toggleBgOption(theme, bg_type) {
jQuery('#gform_setting_' + theme + '_bg_color, #gform_setting_' + theme + '_bg_image, #gform_setting_' + theme + '_bg_size').hide();
if (bg_type == 'color' || bg_type == 'image') {
jQuery('#gform_setting_' + theme + '_bg_color').slideDown();
}
if (bg_type == 'image') {
jQuery('#gform_setting_' + theme + '_bg_image, #gform_setting_' + theme + '_bg_size').slideDown();
}
}
// Media uploader
var gk_media_init = function(selector, button_selector) {
var clicked_button = false;
jQuery(selector).each(function (i, input) {
var button = jQuery(input).closest("div").find(button_selector);
button.click(function (event) {
event.preventDefault();
var selected_img;
clicked_button = jQuery(this);
// check for media manager instance
if(wp.media.frames.gk_frame) {
wp.media.frames.gk_frame.open();
return;
}
// configuration of the media manager new instance
wp.media.frames.gk_frame = wp.media({
title: 'Select image',
multiple: false,
library: {
type: 'image'
},
button: {
text: 'Use selected image'
}
});
// Function used for the image selection and media manager closing
var gk_media_set_image = function() {
var selection = wp.media.frames.gk_frame.state().get('selection');
// no selection
if (!selection) {
return;
}
// iterate through selected elements
selection.each(function(attachment) {
var url = attachment.attributes.url;
clicked_button.closest("div").find(selector).val(url).trigger('input.gfspPreview');
});
};
// closing event for media manger
wp.media.frames.gk_frame.on('close', gk_media_set_image);
// image selection event
wp.media.frames.gk_frame.on('select', gk_media_set_image);
// showing media manager
wp.media.frames.gk_frame.open();
});
});
};
function maybeShowFontOptions( e ) {
var el = jQuery(e.target);
var thm = el.closest('.thm').attr('id');
var maybe_label = el.hasClass('label_font') ? "_label" : "" ;
var font = e.target.value.split("/");
var $theme_options = el.closest('fieldset');
if ( font[0] === "" ) {
font_custom = $theme_options.find('div[id*="'+thm+maybe_label+'_font_custom"]').fadeOut();
font_custom = $theme_options.find('div[id*="'+thm+maybe_label+'_font_load_cb"]').fadeOut();
}
else if ( font.length > 1 && font[1] == "Native" ) {
if ( font[0] == "custom" ) {
// Custom Font. Show only Custon Font option
font_custom = $theme_options.find('div[id*="'+thm+maybe_label+'_font_custom"]').fadeIn();
font_custom = $theme_options.find('div[id*="'+thm+maybe_label+'_font_load_cb"]').fadeOut();
} else {
// Native Font. Hide both options
font_custom = $theme_options.find('div[id*="'+thm+maybe_label+'_font_custom"]').fadeOut();
font_custom = $theme_options.find('div[id*="'+thm+maybe_label+'_font_load_cb"]').fadeOut();
}
}
else {
// Google Font. Show only Dont Load G Font option
font_custom = $theme_options.find('div[id*="'+thm+maybe_label+'_font_custom"]').fadeOut();
font_custom = $theme_options.find('div[id*="'+thm+maybe_label+'_font_load_cb"]').fadeIn();
}
}
/**
*
* @param {string} settingName CSS classname for the setting field
* @param {string} property Name of the CSS property to create rule with
* @param {string} suffix Unit for the value, or value itself in case of a checkbox
*
* @returns {string} CSS delaration
*/
function getDeclaration(settingName, property, suffix='' ) {
$settingEl = $el.find('.' + settingName );
if ($settingEl.length == 0) {
console.log("Setting " + settingName + " not found;");
return '';
}
// if checkbox is selected
if ( $settingEl.attr('type') == "checkbox" ) {
if ( $settingEl.is(':checked') == false ) {
return "";
} else {
// if checked
return property + ":" + suffix + reinforce;
}
// if not a checkbox, get value from the field
} else {
value = $settingEl.val();
}
if ( value != '') {
return property + ":" + value + suffix + reinforce;
}
// Default
return '';
}
function getMutedColor ( color ) {
if ( typeof color !== "undefined" && color.length == 0) {
return "";
}
if ( typeof colorCalculator === "undefined" ) {
window.colorCalculator = new Colors();
}
colorCalculator.setColor( color );
var hsl = colorCalculator.colors.RND.hsl;
var newHsl = "";
if ( colorCalculator.colors.RND.hsl.l < 5 ) {
newHsl = "hsl("+ hsl.h + "," + (hsl.s * 0.5) + "," + ((hsl.l + 5) * 5) + ")";
}
else if ( colorCalculator.colors.RND.hsl.l < 10 ) {
newHsl = "hsl("+ hsl.h + "," + (hsl.s * 0.5) + "," + ((hsl.l) * 4) + ")";
}
else if ( colorCalculator.colors.RND.hsl.l < 20 ) {
newHsl = "hsl("+ hsl.h + "," + (hsl.s * 0.5) + "," + ((hsl.l) * 2.5) + ")";
}
else if (colorCalculator.colors.RND.hsl.l > 70) {
newHsl = "hsl("+ hsl.h + "," + (hsl.s * 0.5) + "," + (hsl.l * .85) + ")";
} else {
newHsl = "hsl("+ hsl.h + "," + (hsl.s * 0.5) + "," + (hsl.l * 1.3) + ")";
}
colorCalculator.setColor(newHsl);
var newColor = colorCalculator.colors.RND.rgb;
return "rgb("+ newColor.r + "," + newColor.g + "," + newColor.b + ")";
}
saveExpandedFields = function() {
var theme_id = jQuery(".toggle_theme").val();
var expanded_adv = jQuery("fieldset#"+theme_id+" .gform-settings-field.expanded");
var expanded_adv_arr = [];
expanded_adv.each( function() {
var adv_id = this.id.split("gform_setting_"+theme_id+"_")[1]
expanded_adv_arr.push(adv_id);
});
localStorage.setItem("spAdvFieldsExpand", expanded_adv_arr)
}
function markGFontsOptions(el, weights) {
jQuery(el).find("option").each((i, e) => {
if ( weights.includes(jQuery(e).val()) ) {
jQuery(e).addClass("gfont_weight");
} else {
jQuery(e).removeClass("gfont_weight");
}
});
}
function updateGFontWeights() {
var $theme = jQuery(".thm:visible"),
theme_slug = $theme.attr("id");
weights_pri = [],
weights_sec = [];
var $g_weight_field_pri = $theme.find('#'+theme_slug+'_label_gfont_wght'),
$g_weight_field_sec = $theme.find('#'+theme_slug+'_gfont_wght');
var g_weights_pri = $g_weight_field_pri.data("gfont-weights") || [],
g_weights_sec = $g_weight_field_sec.data("gfont-weights") || [];
$theme.find("select.adv_font_weight").each( (i, item) => {
var this_weight = jQuery(item).val(),
is_for_field = jQuery(item).is(".btn_font_weight, .field_font_weight"),
font_preset = is_for_field ? "preset-font_sec" : "preset-font_pri",
$the_font = jQuery(item).closest(".adv_fields").find(".adv_font select");
font_preset = $the_font.val() || font_preset;
if ( font_preset === "preset-font_pri" ) {
markGFontsOptions(item, g_weights_pri)
weights_pri.push(this_weight)
}
else {
markGFontsOptions(item, g_weights_sec)
weights_sec.push(this_weight)
}
});
// Filter
weights_pri = weights_pri.sort().filter( (item) => g_weights_pri.includes(item) );
weights_sec = weights_sec.sort().filter( (item) => g_weights_sec.includes(item) );
// Sort
weights_pri = weights_pri.sort().filter( (item, pos, ary) => !pos || item != ary[pos - 1] );
weights_sec = weights_sec.sort().filter( (item, pos, ary) => !pos || item != ary[pos - 1] );
$g_weight_field_pri.val( weights_pri.join() ).trigger('change');
$g_weight_field_sec.val( weights_sec.join() ).trigger('change');
}
jQuery(document).ready(function() {
window.previewTimeout = null;
window.has_gfsp_preview = jQuery("body").hasClass("has_gfsp_preview");
// Resets Additonal Script values in case they've been changed
jQuery('.additional_scripts').each( function() {
jQuery(this).val( jQuery(this).data('value') );
});
// Changes Font names in select box labels
jQuery('.font_pri').on('change', function(){
var txt = jQuery(this).find(':selected').text();
var thm = jQuery(this).closest('.thm');
thm.find(".adv_font option[value='preset-font_pri']").text(txt + " (Label)");
if (txt == "Custom font") {
thm.find('.font_pri_custom').trigger('change');
}
if ( this.value.indexOf("/Native") === -1 ) {
var target_field_id = thm.attr('id') + '_label_gfont_wght';
addFontWeight( txt, target_field_id );
}
});
jQuery('.font_pri_custom').on('change', function(){
var txt = jQuery(this).val();
var thm = jQuery(this).closest('.thm');
thm.find(".adv_font option[value='preset-font_pri']").text(txt + " (Label)");
});
// Same as above. Duplication is simpler
jQuery('.font_sec').on('change', function(){
var txt = jQuery(this).find(':selected').text();
var thm = jQuery(this).closest('.thm');
thm.find(".adv_font option[value='preset-font_sec']").text(txt + " (Field)");
if (txt == "Custom font") {
thm.find('.font_sec_custom').trigger('change');
}
if ( this.value.indexOf("/Native") === -1 ) {
var target_field_id = thm.attr('id') + '_gfont_wght';
addFontWeight( txt, target_field_id );
}
});
jQuery('.font_sec_custom').on('change', function(){
var txt = jQuery(this).val();
var thm = jQuery(this).closest('.thm');
thm.find(".adv_font option[value='preset-font_sec']").text(txt + " (Field)");
});
jQuery('.adv_font_weight, .adv_font').on('change', updateGFontWeights);
// Bind font options to font select boxes
// immediately trigger after
jQuery('.font, .label_font').on('change init', maybeShowFontOptions.bind(this) )
.trigger('init');
/* Generate CSS from settings and submit form */
jQuery('#gform-settings').submit(function(e) {
// Add px unit to values which are left with numbers only
jQuery(".auto_px").each(function() {
var vl = jQuery(this).val();
var vl_ar = vl.split(" ");
vl_ar.forEach( (val, ind) => {
if ( val == parseInt(val) )
vl_ar[ind] = val + "px";
}
);
jQuery(this).val( vl_ar.join(" ") );
});
jQuery('.thm').each(function () {
var theme_name = jQuery(this).attr('id');
theme_name = theme_name.split("gform-settings-section-").pop();
var this_theme = new Theme( theme_name );
// Clear BG color in case it is not selected
var bg = jQuery('#gform_setting_' + theme_name + '_background :checked').val();
if ( bg == "none" || bg === "default" ) {
jQuery('#' + theme_name + '_bg_color').val("");
}
jQuery(this).find("input, select").each( function() {
if ( this.value === "" ) {
jQuery(this).attr('disabled', 'disabled');
}
})
this_theme.saveCss();
});
jQuery('.no_submit').attr('disabled', 'disabled');
saveExpandedFields();
});
/* Initiate color picker */
myColorPicker = jQuery(".color").colorPicker({
opacity: true,
convertCallback: function(colors, type) {
rgb = colors.RND.rgb;
placeholder_color = 'rgba(' + rgb['r'] + ', ' + rgb['g'] + ', ' + rgb['b'] + ', ' + (colors.alpha*0.47).toFixed(2) + ')';
},
renderCallback: function($elm, toggled) {
if (typeof placeholder_color !== undefined && placeholder_color != '' && placeholder_color != null) {
$elm.attr('data-ph-color', placeholder_color);
$elm.trigger("colorChange")
}
window.lastColorPicker = $elm;
}
});
/* Calculate placeholder colors and save to the field's data-ph-color */
jQuery(".font_color").each( function() {
rgb = jQuery(this).colorPicker().colorPicker.color.colors.RND.rgb;
alpha = jQuery(this).colorPicker().colorPicker.color.colors.alpha;
placeholder_color = 'rgba(' + rgb['r'] + ', ' + rgb['g'] + ', ' + rgb['b'] + ', ' + (alpha*0.47).toFixed(2) + ')';
jQuery(this).attr('data-ph-color', placeholder_color);
});
/* Apply Media Uploader to upload background image fields */
gk_media_init('.bg_image', '.media-button');
/* Set background options per saved or default settings */
jQuery('.background:checked').each ( function() {
toggleBgOption(jQuery( this ).data('theme'), jQuery( this ).val())
});
/* Empty Fields Styles */
jQuery("input, select").each( function() {
if (jQuery(this).val() == '')
jQuery(this).css('opacity', '.7');
});
jQuery("input, select").on('blur', function() {
if (jQuery(this).val() == '')
jQuery(this).css('opacity', '.7');
});
jQuery("input, select").on('focus', function() {
jQuery(this).css('opacity', '1');
});
// Expand last expanded fields as set in localStorage
var theme_id = jQuery(".toggle_theme").val();
var expanded_adv = localStorage.getItem("spAdvFieldsExpand")
if ( expanded_adv ) {
var adv_expanded_arr = expanded_adv.split(",");
jQuery.each(adv_expanded_arr, function(i, adv_field) {
jQuery("#gform_setting_"+theme_id+"_"+adv_field).addClass("expanded");
})
}
// Hide Gravity Flow setting if Gravity Flow is not available
$gflow_field_wrapper = jQuery('#gform_setting_gravity_flow_form_style');
if ( $gflow_field_wrapper.find('select').hasClass('hide_field') ) {
$gflow_field_wrapper.css('display','none')
}
// Display Themes
jQuery(".thm").css('display', 'none');
toggleTheme( jQuery('#theme').val() );
jQuery('body').addClass('loading_completed');
changeThemeToHash();
maybeRefreshPage();
}); // Document ready ends
jQuery(document).ready(function() {
if ( !has_gfsp_preview ) {
return;
}
jQuery('#preview_frame').on('load', function() {
var $frame = jQuery(this);
$frame.contents().find('html').append('');
var $oldCssAll = $frame.contents().find('style[id^=gforms_stylespro_theme]');
$oldCssAll.each( function() {
// Leave Custom CSS here
if ( jQuery(this).html().indexOf("/* Custom CSS */") > -1 ) {
jQuery(this).html( jQuery(this).html().substring(jQuery(this).html().indexOf("/* Custom CSS */")) )
} else {
jQuery(this).html("");
}
} );
window.previewFrame = {
oldCss: $oldCssAll.last(),
}
var themesOnPage = [];
$frame.contents().find("form.gf_stylespro").each( function() {
var ind = Array.from(this.classList).indexOf("gf_stylespro") + 1;
var thm = this.classList.item(ind);
updatePreview(thm);
themesOnPage.push(thm)
});
if ( themesOnPage.length === 1 ) {
var thm = themesOnPage[0];
jQuery( "#theme" ).has( "option[value="+thm+"]" ).val( thm ).trigger('change');
}
if ( themesOnPage.length === 0 ) {
var plainGf = $frame.contents().find(".gform_wrapper").first();
tb_warning_show()
if ( plainGf.length ) {
var plainGfId = plainGf.attr("id").split("_")[2];
jQuery(".goto_form_settings_gfsp").attr("href", jQuery(".goto_form_settings_gfsp").attr("href") + "&id=" + plainGfId);
jQuery(".has_form").removeClass("hidden")
}
}
});
setTimeout(() => {
jQuery(".gforms_note_success").slideUp()
}, 7000);
}); // Preview Document ready ends
// Get font weight
function addFontWeight( fontFamily, target_field_id ) {
var requestData = {
action: 'gfspget_font_weight',
font_family: fontFamily,
};
jQuery.ajax(
{
url: ajaxurl,
type: 'GET',
dataType: 'json',
data: requestData,
success: function ( response ) {
var $target_field = jQuery( "#"+target_field_id );
$target_field.data("gfont-weights", response.data.variants);
updateGFontWeights();
},
error: function ( response ) {
console.error( reponse )
}
}
);
}
/* Theme Handlers */
// Import Theme
function importTheme( fieldsObj ) {
var $theme = jQuery(".thm:visible");
var theme_name = $theme.attr('id').split('_')[1];
jQuery.each( fieldsObj, function( id, value ) {
var id = id.replace("slug", theme_name);
var $field = jQuery("#" + id)
if ($field.attr('type') == 'radio' || $field.attr('type') == 'checkbox') {
$field.prop( "checked", true ).trigger('change');
}
else {
$field.val( value )
.trigger('blur')
.css('opacity', '1');
}
});
// Set color fields BG
$theme.find('.color').each( function() {
var value = this.value;
var colorInstance = jQuery(this).colorPicker().colorPicker.color;
var colors = colorInstance.colors;
colors.HEX = value; // first set the value in the color model
jQuery(this).
css({
'background-color': '#' + colors.HEX,
'color' : colors.rgbaMixBGMixCustom.luminance > 0.22 ? '#222' : '#ddd'
})
.blur();
} );
}
// Get all data
jQuery(document).on('change', '#theme_upload_field', function(event) {
var reader = new FileReader();
reader.onload = function(event) {
var jsonObj = JSON.parse(event.target.result);
importTheme( jsonObj );
}
reader.readAsText(event.target.files[0]);
alert("Import completed");
jQuery("#TB_closeWindowButton").click();
});
window.gfStylesproThemes = (function() {
function downloadObjectAsJson(exportObj, exportName){
var dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(exportObj));
var downloadAnchorNode = document.createElement('a');
downloadAnchorNode.setAttribute("href", dataStr);
downloadAnchorNode.setAttribute("download", exportName + ".json");
document.body.appendChild(downloadAnchorNode); // required for firefox
downloadAnchorNode.click();
downloadAnchorNode.remove();
}
function exportTheme() {
var $theme = jQuery(".thm:visible");
var theme_name = $theme.attr('id').split('_')[1];
var fieldsObj = {};
$theme.find("input[type=text], input:checked, select").each( function() {
var val = jQuery(this).val();
var id = jQuery(this).attr('id');
if ( val != '' ) {
id = id.replace(theme_name, "slug");
fieldsObj[id] = val;
}
});
if ( ! jQuery.isEmptyObject(fieldsObj) ) {
downloadObjectAsJson(fieldsObj, "gf_stylespro_export_theme_" + theme_name);
}
}
var presetsModal = function() {
tb_show('Styles Pro: Import and Export Theme Settings', '#TB_inline?height=500&width=600&inlineId=plugin_settings_import_export_modal', '');
}
var addVariationModal = function() {
tb_show('Styles Pro: Theme Variations', '#TB_inline?height=500&width=600&inlineId=add_gf_stylespro_new_variation_modal', '');
}
// Reset theme options
var resetTheme = function() {
var currentTheme = jQuery('#theme option:selected').text();
var sure = confirm( "Are you sure you want to reset all changes for "+ currentTheme +" theme?" );
if ( ! sure ) {
return;
}
var $thm = jQuery(".thm:visible");
$thm.find("input[type=text]").each( function () {
var val = jQuery(this).data('default') || "";
jQuery(this).val( val );
if ( jQuery(this).is(".color, .font_color") ) {
jQuery(this).css("background-color", val)
}
});
$thm.find("select").each( function () {
var val = jQuery(this).data('default') || "";
jQuery(this).val( val )
jQuery(this).trigger('change');
});
$thm.find('input[type="checkbox"]').each( function () {
if ( jQuery(this).prop('checked') == true ) {
jQuery(this).trigger('click')
}
});
$thm.find('.background').each( function () {
if (jQuery(this).val() == 'default' ) {
jQuery(this).trigger('click');
}
});
$thm.find("[type=radio][value='']").attr('checked', 'checked').trigger('change');
$thm.find('.adv_field_options_wrapper').find('input, select').trigger('blur')
// Fix for Color Picker
if (typeof lastColorPicker !== 'undefined') {
jQuery(lastColorPicker).trigger('change');
}
}
var addVariation = function() {
var variationsVal = jQuery("#theme_variations").val() || "{}";
var variationsObj = JSON.parse( variationsVal );
var name = jQuery("#new_variation_name").val();
var base = jQuery("#new_variation_base").val();
if (!name)
return;
var slug = String( slugify(name) );
if ( variationsObj.hasOwnProperty(slug) ) {
alert("Already exists. Please choose another name");
}
else {
variationsObj[slug] = {
value: slug,
label: name,
base: base
};
var newObj = Object.assign({}, variationsObj);
jQuery("#theme_variations").val( JSON.stringify(newObj) );
addRefreshHash();
jQuery("#gform-settings-save").click();
}
}
var removeVariation = function() {
var slug = String( jQuery("#remove_variation").val() );
var theme_name = jQuery("#remove_variation").text().trim();
var themesObj = JSON.parse( jQuery("#theme_variations").val() );
if ( ! ( slug in themesObj ) ) {
alert("Please select a variation to be removed.");
return;
}
var sure = confirm( `WARNING: This action is irreversible.\n` +
`Are you sure you want to delete theme variation "` + theme_name + `"?`);
if ( sure ) {
delete themesObj[slug];
jQuery("#theme_variations").val( JSON.stringify(themesObj) );
addRefreshHash();
jQuery("#gform-settings-save").click();
}
}
/* Hide all theme and Show @param: showTheme */
var toggleTheme = function(showTheme) {
jQuery('.thm').slideUp();
jQuery('.theme_' + showTheme).slideDown();
}
/* Show and hide background options */
var toggleBgOption = function(theme, bg_type) {
jQuery('#gaddon-setting-row-' + theme + '_bg_color, #gaddon-setting-row-' + theme + '_bg_image').hide();
if (bg_type == 'color') {
jQuery('#gaddon-setting-row-' + theme + '_bg_color').slideDown();
}
if (bg_type == 'image') {
jQuery('#gaddon-setting-row-' + theme + '_bg_image').slideDown();
}
}
var preColorOptionChange = function ( pre_color_field ) {
var $pre_color_field = jQuery(pre_color_field);
var pre_color_val = $pre_color_field.val();
var $color = $pre_color_field.siblings('.color_presets');
var default_preset = $color.attr('default_preset');
var pre_color_class = pre_color_val ? pre_color_val : default_preset
$pre_color_field.removeClass('color_bg_preset-color_pri color_bg_preset-color_sec color_bg_preset-color_cnt color_bg_custom');
$pre_color_field.addClass('color_bg_' + pre_color_class);
if (pre_color_val != 'custom') {
$pre_color_field.parent().addClass('pre_color_show');
$color.val( pre_color_val );
} else {
$pre_color_field.parent().removeClass('pre_color_show');
var $temp_color = $color.siblings(".color");
$color.val( $temp_color.val() ).trigger('change');
setTimeout(() => {
$temp_color.trigger('focus');
}, 50);
}
}
// Publicly accessible functions
return {
presetsModal: presetsModal,
addVariationModal: addVariationModal,
exportTheme: exportTheme,
resetTheme: resetTheme,
addVariation: addVariation,
removeVariation: removeVariation,
toggleTheme: toggleTheme,
toggleBgOption: toggleBgOption,
preColorOptionChange: preColorOptionChange,
}
})();
/**
* ----------------
* Helper Functions
* ----------------
*/
/**
* https://andrew.stwrt.ca/posts/js-slugify/
*/
function slugify(string) {
return string
.toString()
.trim()
.toLowerCase()
.replace(/\s+/g, "-")
.replace(/[^\w\-]+/g, "")
.replace(/\-\-+/g, "-")
.replace(/^-+/, "")
.replace(/-+$/, "");
}
function changeThemeToHash() {
var $themes = jQuery("#theme");
var hash = window.location.hash.split("#")[1];
$themes.find("option").each( function() {
if ( jQuery(this).val() == hash ) {
jQuery($themes).val(hash).trigger('change');
history.replaceState(null, null, ' ');
return false;
}
} );
}
function addRefreshHash() {
var url_ob = new URL(document.URL);
url_ob.hash = '#refresh';
// new url
var new_url = url_ob.href;
document.location.href = new_url;
}
function maybeRefreshPage() {
var hash = document.location.hash.split("#")[1];
if ( hash == "refresh" ) {
jQuery('body').removeClass('loading_completed');
window.location.href = document.location.href.split("#")[0];
}
}