/** * * ----------------------------------------------------------- * * Codestar Framework * A Simple and Lightweight WordPress Option Framework * * ----------------------------------------------------------- * */ ; (function ($, window, document, undefined) { 'use strict'; // // Constants // var DARKIFY = DARKIFY || {}; DARKIFY.funcs = {}; DARKIFY.vars = { onloaded: false, $body: $('body'), $window: $(window), $document: $(document), $form_warning: null, is_confirm: false, form_modified: false, code_themes: [], is_rtl: $('body').hasClass('rtl'), }; // // Helper Functions // DARKIFY.helper = { // // Generate UID // uid: function (prefix) { return (prefix || '') + Math.random().toString(36).substr(2, 9); }, // Quote regular expression characters // preg_quote: function (str) { return (str + '').replace(/(\[|\])/g, "\\$1"); }, // // Reneme input names // name_nested_replace: function ($selector, field_id) { var checks = []; var regex = new RegExp(DARKIFY.helper.preg_quote(field_id + '[\\d+]'), 'g'); $selector.find(':radio').each(function () { if (this.checked || this.orginal_checked) { this.orginal_checked = true; } }); $selector.each(function (index) { $(this).find(':input').each(function () { this.name = this.name.replace(regex, field_id + '[' + index + ']'); if (this.orginal_checked) { this.checked = true; } }); }); }, // // Debounce // debounce: function (callback, threshold, immediate) { var timeout; return function () { var context = this, args = arguments; var later = function () { timeout = null; if (!immediate) { callback.apply(context, args); } }; var callNow = (immediate && !timeout); clearTimeout(timeout); timeout = setTimeout(later, threshold); if (callNow) { callback.apply(context, args); } }; }, }; // // Custom clone for textarea and select clone() bug // $.fn.darkify_clone = function () { var base = $.fn.clone.apply(this, arguments), clone = this.find('select').add(this.filter('select')), cloned = base.find('select').add(base.filter('select')); for (var i = 0; i < clone.length; ++i) { for (var j = 0; j < clone[i].options.length; ++j) { if (clone[i].options[j].selected === true) { cloned[i].options[j].selected = true; } } } this.find(':radio').each(function () { this.orginal_checked = this.checked; }); return base; }; // // Expand All Options // $.fn.darkify_expand_all = function () { return this.each(function () { $(this).on('click', function (e) { e.preventDefault(); $('.darkify-wrapper').toggleClass('darkify-show-all'); $('.darkify-section').darkify_reload_script(); $(this).find('.fa').toggleClass('fa-indent').toggleClass('fa-outdent'); }); }); }; // // Options Navigation // $.fn.darkify_nav_options = function () { return this.each(function () { var $nav = $(this), $window = $(window), $wpwrap = $('#wpwrap'), $links = $nav.find('a'), $last; $window.on('hashchange darkify.hashchange', function () { var hash = window.location.hash.replace('#tab=', ''); var slug = hash ? hash : $links.first().attr('href').replace('#tab=', ''); var $link = $('[data-tab-id="' + slug + '"]'); if ($link.length) { $link.closest('.darkify-tab-item').addClass('darkify-tab-expanded').siblings().removeClass('darkify-tab-expanded'); if ($link.next().is('ul')) { $link = $link.next().find('li').first().find('a'); slug = $link.data('tab-id'); } $links.removeClass('darkify-active'); $link.addClass('darkify-active'); if ($last) { $last.addClass('hidden'); } var $section = $('[data-section-id="' + slug + '"]'); $section.removeClass('hidden'); $section.darkify_reload_script(); $('.darkify-section-id').val($section.index() + 1); $last = $section; if ($wpwrap.hasClass('wp-responsive-open')) { $('html, body').animate({ scrollTop: ($section.offset().top - 50) }, 200); $wpwrap.removeClass('wp-responsive-open'); } } }).trigger('darkify.hashchange'); }); }; // // Metabox Tabs // $.fn.darkify_nav_metabox = function () { return this.each(function () { var $nav = $(this), $links = $nav.find('a'), $sections = $nav.parent().find('.darkify-section'), $last; $links.each(function (index) { $(this).on('click', function (e) { e.preventDefault(); var $link = $(this); $links.removeClass('darkify-active'); $link.addClass('darkify-active'); if ($last !== undefined) { $last.addClass('hidden'); } var $section = $sections.eq(index); $section.removeClass('hidden'); $section.darkify_reload_script(); $last = $section; }); }); $links.first().trigger('click'); }); }; // // Metabox Page Templates Listener // $.fn.darkify_page_templates = function () { if (this.length) { $(document).on('change', '.editor-page-attributes__template select, #page_template, .edit-post-post-status + div select', function () { var maybe_value = $(this).val() || 'default'; $('.darkify-page-templates').removeClass('darkify-metabox-show').addClass('darkify-metabox-hide'); $('.darkify-page-' + maybe_value.toLowerCase().replace(/[^a-zA-Z0-9]+/g, '-')).removeClass('darkify-metabox-hide').addClass('darkify-metabox-show'); }); } }; // // Metabox Post Formats Listener // $.fn.darkify_post_formats = function () { if (this.length) { $(document).on('change', '.editor-post-format select, #formatdiv input[name="post_format"]', function () { var maybe_value = $(this).val() || 'default'; // Fallback for classic editor version maybe_value = (maybe_value === '0') ? 'default' : maybe_value; $('.darkify-post-formats').removeClass('darkify-metabox-show').addClass('darkify-metabox-hide'); $('.darkify-post-format-' + maybe_value).removeClass('darkify-metabox-hide').addClass('darkify-metabox-show'); }); } }; // // Search // $.fn.darkify_search = function () { return this.each(function () { var $this = $(this), $input = $this.find('input'); $input.on('change keyup', function () { var value = $(this).val(), $wrapper = $('.darkify-wrapper'), $section = $wrapper.find('.darkify-section'), $fields = $section.find('> .darkify-field:not(.darkify-depend-on)'), $titles = $fields.find('> .darkify-title, .darkify-search-tags'); if (value.length > 3) { $fields.addClass('darkify-metabox-hide'); $wrapper.addClass('darkify-search-all'); $titles.each(function () { var $title = $(this); if ($title.text().match(new RegExp('.*?' + value + '.*?', 'i'))) { var $field = $title.closest('.darkify-field'); $field.removeClass('darkify-metabox-hide'); $field.parent().darkify_reload_script(); } }); } else { $fields.removeClass('darkify-metabox-hide'); $wrapper.removeClass('darkify-search-all'); } }); }); }; // // Sticky Header // $.fn.darkify_sticky = function () { return this.each(function () { var $this = $(this), $window = $(window), $inner = $this.find('.darkify-header-inner'), padding = parseInt($inner.css('padding-left')) + parseInt($inner.css('padding-right')), offset = 32, scrollTop = 0, lastTop = 0, ticking = false, stickyUpdate = function () { var offsetTop = $this.offset().top, stickyTop = Math.max(offset, offsetTop - scrollTop), winWidth = $window.innerWidth(); if (stickyTop <= offset && winWidth > 782) { $inner.css({ width: $this.outerWidth() - padding }); $this.css({ height: $this.outerHeight() }).addClass('darkify-sticky'); } else { $inner.removeAttr('style'); $this.removeAttr('style').removeClass('darkify-sticky'); } }, requestTick = function () { if (!ticking) { requestAnimationFrame(function () { stickyUpdate(); ticking = false; }); } ticking = true; }, onSticky = function () { scrollTop = $window.scrollTop(); requestTick(); }; $window.on('scroll resize', onSticky); onSticky(); }); }; // // Dependency System // $.fn.darkify_dependency = function () { return this.each(function () { var $this = $(this), $fields = $this.children('[data-controller]'); if ($fields.length) { var normal_ruleset = $.darkify_deps.createRuleset(), global_ruleset = $.darkify_deps.createRuleset(), normal_depends = [], global_depends = []; $fields.each(function () { var $field = $(this), controllers = $field.data('controller').split('|'), conditions = $field.data('condition').split('|'), values = $field.data('value').toString().split('|'), is_global = $field.data('depend-global') ? true : false, ruleset = (is_global) ? global_ruleset : normal_ruleset; $.each(controllers, function (index, depend_id) { var value = values[index] || '', condition = conditions[index] || conditions[0]; ruleset = ruleset.createRule('[data-depend-id="' + depend_id + '"]', condition, value); ruleset.include($field); if (is_global) { global_depends.push(depend_id); } else { normal_depends.push(depend_id); } }); }); if (normal_depends.length) { $.darkify_deps.enable($this, normal_ruleset, normal_depends); } if (global_depends.length) { $.darkify_deps.enable(DARKIFY.vars.$body, global_ruleset, global_depends); } } }); }; // // Field: accordion // $.fn.darkify_field_accordion = function () { return this.each(function () { var $titles = $(this).find('.darkify-accordion-title'); $titles.on('click', function () { var $title = $(this), $icon = $title.find('.darkify-accordion-icon'), $content = $title.next(); if ($icon.hasClass('fa-angle-right')) { $icon.removeClass('fa-angle-right').addClass('fa-angle-down'); } else { $icon.removeClass('fa-angle-down').addClass('fa-angle-right'); } if (!$content.data('opened')) { $content.darkify_reload_script(); $content.data('opened', true); } $content.toggleClass('darkify-accordion-open'); }); }); }; // // Field: backup // $.fn.darkify_field_backup = function () { return this.each(function () { if (window.wp.customize === undefined) { return; } var base = this, $this = $(this), $body = $('body'), $import = $this.find('.darkify-import'), $reset = $this.find('.darkify-reset'); base.notificationOverlay = function () { if (wp.customize.notifications && wp.customize.OverlayNotification) { // clear if there is any saved data. if (!wp.customize.state('saved').get()) { wp.customize.state('changesetStatus').set('trash'); wp.customize.each(function (setting) { setting._dirty = false; }); wp.customize.state('saved').set(true); } // then show a notification overlay wp.customize.notifications.add(new wp.customize.OverlayNotification('darkify_field_backup_notification', { type: 'default', message: ' ', loading: true })); } }; $reset.on('click', function (e) { e.preventDefault(); if (DARKIFY.vars.is_confirm) { base.notificationOverlay(); window.wp.ajax.post('darkify-reset', { unique: $reset.data('unique'), nonce: $reset.data('nonce') }) .done(function (response) { window.location.reload(true); }) .fail(function (response) { alert(response.error); wp.customize.notifications.remove('darkify_field_backup_notification'); }); } }); $import.on('click', function (e) { e.preventDefault(); if (DARKIFY.vars.is_confirm) { base.notificationOverlay(); window.wp.ajax.post('darkify-import', { unique: $import.data('unique'), nonce: $import.data('nonce'), data: $this.find('.darkify-import-data').val() }).done(function (response) { window.location.reload(true); }).fail(function (response) { alert(response.error); wp.customize.notifications.remove('darkify_field_backup_notification'); }); } }); }); }; // // Field: background // $.fn.darkify_field_background = function () { return this.each(function () { $(this).find('.darkify--background-image').darkify_reload_script(); }); }; // // Field: code_editor // $.fn.darkify_field_code_editor = function () { return this.each(function () { if (typeof CodeMirror !== 'function') { return; } var $this = $(this), $textarea = $this.find('textarea'), $inited = $this.find('.CodeMirror'), data_editor = $textarea.data('editor'); if ($inited.length) { $inited.remove(); } var interval = setInterval(function () { if ($this.is(':visible')) { var code_editor = CodeMirror.fromTextArea($textarea[0], data_editor); // load code-mirror theme css. if (data_editor.theme !== 'default' && DARKIFY.vars.code_themes.indexOf(data_editor.theme) === -1) { var $cssLink = $(''); $('#darkify-codemirror-css').after($cssLink); $cssLink.attr({ rel: 'stylesheet', id: 'darkify-codemirror-' + data_editor.theme + '-css', href: data_editor.cdnURL + '/css/' + data_editor.theme + '.min.css', type: 'text/css', media: 'all' }); DARKIFY.vars.code_themes.push(data_editor.theme); } CodeMirror.modeURL = data_editor.cdnURL + '/js/%N.min.js'; CodeMirror.autoLoadMode(code_editor, data_editor.mode); code_editor.on('change', function (editor, event) { $textarea.val(code_editor.getValue()).trigger('change'); }); clearInterval(interval); } }); }); }; // // Field: date // $.fn.darkify_field_date = function () { return this.each(function () { var $this = $(this), $inputs = $this.find('input'), settings = $this.find('.darkify-date-settings').data('settings'), wrapper = '
'; var defaults = { showAnim: '', beforeShow: function (input, inst) { $(inst.dpDiv).addClass('darkify-datepicker-wrapper'); }, onClose: function (input, inst) { $(inst.dpDiv).removeClass('darkify-datepicker-wrapper'); }, }; settings = $.extend({}, settings, defaults); if ($inputs.length === 2) { settings = $.extend({}, settings, { onSelect: function (selectedDate) { var $this = $(this), $from = $inputs.first(), option = ($inputs.first().attr('id') === $(this).attr('id')) ? 'minDate' : 'maxDate', date = $.datepicker.parseDate(settings.dateFormat, selectedDate); $inputs.not(this).datepicker('option', option, date); } }); } $inputs.each(function () { var $input = $(this); if ($input.hasClass('hasDatepicker')) { $input.removeAttr('id').removeClass('hasDatepicker'); } $input.datepicker(settings); }); }); }; // // Field: datetime // $.fn.darkify_field_datetime = function () { return this.each(function () { var $this = $(this), $inputs = $this.find('input'), settings = $this.find('.darkify-datetime-settings').data('settings'); settings = $.extend({}, settings, { onReady: function (selectedDates, dateStr, instance) { $(instance.calendarContainer).addClass('darkify-flatpickr'); }, }); if ($inputs.length === 2) { settings = $.extend({}, settings, { onChange: function (selectedDates, dateStr, instance) { if ($(instance.element).data('type') === 'from') { $inputs.last().get(0)._flatpickr.set('minDate', selectedDates[0]); } else { $inputs.first().get(0)._flatpickr.set('maxDate', selectedDates[0]); } }, }); } $inputs.each(function () { $(this).flatpickr(settings); }); }); }; // // Field: fieldset // $.fn.darkify_field_fieldset = function () { return this.each(function () { $(this).find('.darkify-fieldset-content').darkify_reload_script(); }); }; // // Field: gallery // $.fn.darkify_field_gallery = function () { return this.each(function () { var $this = $(this), $edit = $this.find('.darkify-edit-gallery'), $clear = $this.find('.darkify-clear-gallery'), $list = $this.find('ul'), $input = $this.find('input'), $img = $this.find('img'), wp_media_frame; $this.on('click', '.darkify-button, .darkify-edit-gallery', function (e) { var $el = $(this), ids = $input.val(), what = ($el.hasClass('darkify-edit-gallery')) ? 'edit' : 'add', state = (what === 'add' && !ids.length) ? 'gallery' : 'gallery-edit'; e.preventDefault(); if (typeof window.wp === 'undefined' || !window.wp.media || !window.wp.media.gallery) { return; } // Open media with state if (state === 'gallery') { wp_media_frame = window.wp.media({ library: { type: 'image' }, frame: 'post', state: 'gallery', multiple: true }); wp_media_frame.open(); } else { wp_media_frame = window.wp.media.gallery.edit('[gallery ids="' + ids + '"]'); if (what === 'add') { wp_media_frame.setState('gallery-library'); } } // Media Update wp_media_frame.on('update', function (selection) { $list.empty(); var selectedIds = selection.models.map(function (attachment) { var item = attachment.toJSON(); var thumb = (item.sizes && item.sizes.thumbnail && item.sizes.thumbnail.url) ? item.sizes.thumbnail.url : item.url; $list.append('
  • '); return item.id; }); $input.val(selectedIds.join(',')).trigger('change'); $clear.removeClass('hidden'); $edit.removeClass('hidden'); }); }); $clear.on('click', function (e) { e.preventDefault(); $list.empty(); $input.val('').trigger('change'); $clear.addClass('hidden'); $edit.addClass('hidden'); }); }); }; // // Field: group // $.fn.darkify_field_group = function () { return this.each(function () { var $this = $(this), $fieldset = $this.children('.darkify-fieldset'), $group = $fieldset.length ? $fieldset : $this, $wrapper = $group.children('.darkify-cloneable-wrapper'), $hidden = $group.children('.darkify-cloneable-hidden'), $max = $group.children('.darkify-cloneable-max'), $min = $group.children('.darkify-cloneable-min'), title_by = $wrapper.data('title-by'), title_prefix = $wrapper.data('title-by-prefix'), field_id = $wrapper.data('field-id'), is_number = Boolean(Number($wrapper.data('title-number'))), max = parseInt($wrapper.data('max')), min = parseInt($wrapper.data('min')); // clear accordion arrows if multi-instance if ($wrapper.hasClass('ui-accordion')) { $wrapper.find('.ui-accordion-header-icon').remove(); } var update_title_numbers = function ($selector) { $selector.find('.darkify-cloneable-title-number').each(function (index) { $(this).html(($(this).closest('.darkify-cloneable-item').index() + 1) + '.'); }); }; $wrapper.accordion({ header: '> .darkify-cloneable-item > .darkify-cloneable-title', collapsible: true, active: false, animate: false, heightStyle: 'content', icons: { 'header': 'darkify-cloneable-header-icon fas fa-angle-right', 'activeHeader': 'darkify-cloneable-header-icon fas fa-angle-down' }, activate: function (event, ui) { var $panel = ui.newPanel; var $header = ui.newHeader; if ($panel.length && !$panel.data('opened')) { var $title = $header.find('.darkify-cloneable-value'); var inputs = []; $.each(title_by, function (key, title_key) { inputs.push($panel.find('[data-depend-id="' + title_key + '"]')); }); $.each(inputs, function (key, $input) { $input.on('change keyup darkify.keyup', function () { var titles = []; $.each(inputs, function (key, $input) { var input_value = $input.val(); if (input_value) { titles.push(input_value); } }); if (titles.length) { $title.text(titles.join(title_prefix)); } }).trigger('darkify.keyup'); }); $panel.darkify_reload_script(); $panel.data('opened', true); $panel.data('retry', false); } else if ($panel.data('retry')) { $panel.darkify_reload_script_retry(); $panel.data('retry', false); } } }); $wrapper.sortable({ axis: 'y', handle: '.darkify-cloneable-title,.darkify-cloneable-sort', helper: 'original', cursor: 'move', placeholder: 'widget-placeholder', start: function (event, ui) { $wrapper.accordion({ active: false }); $wrapper.sortable('refreshPositions'); ui.item.children('.darkify-cloneable-content').data('retry', true); }, update: function (event, ui) { DARKIFY.helper.name_nested_replace($wrapper.children('.darkify-cloneable-item'), field_id); $wrapper.darkify_customizer_refresh(); if (is_number) { update_title_numbers($wrapper); } }, }); $group.children('.darkify-cloneable-add').on('click', function (e) { e.preventDefault(); var count = $wrapper.children('.darkify-cloneable-item').length; $min.hide(); if (max && (count + 1) > max) { $max.show(); return; } var $cloned_item = $hidden.darkify_clone(true); $cloned_item.removeClass('darkify-cloneable-hidden'); $cloned_item.find(':input[name!="_pseudo"]').each(function () { this.name = this.name.replace('___', '').replace(field_id + '[0]', field_id + '[' + count + ']'); }); $wrapper.append($cloned_item); $wrapper.accordion('refresh'); $wrapper.accordion({ active: count }); $wrapper.darkify_customizer_refresh(); $wrapper.darkify_customizer_listen({ closest: true }); if (is_number) { update_title_numbers($wrapper); } }); var event_clone = function (e) { e.preventDefault(); var count = $wrapper.children('.darkify-cloneable-item').length; $min.hide(); if (max && (count + 1) > max) { $max.show(); return; } var $this = $(this), $parent = $this.parent().parent(), $cloned_helper = $parent.children('.darkify-cloneable-helper').darkify_clone(true), $cloned_title = $parent.children('.darkify-cloneable-title').darkify_clone(), $cloned_content = $parent.children('.darkify-cloneable-content').darkify_clone(), $cloned_item = $('
    '); $cloned_item.append($cloned_helper); $cloned_item.append($cloned_title); $cloned_item.append($cloned_content); $wrapper.children().eq($parent.index()).after($cloned_item); DARKIFY.helper.name_nested_replace($wrapper.children('.darkify-cloneable-item'), field_id); $wrapper.accordion('refresh'); $wrapper.darkify_customizer_refresh(); $wrapper.darkify_customizer_listen({ closest: true }); if (is_number) { update_title_numbers($wrapper); } }; $wrapper.children('.darkify-cloneable-item').children('.darkify-cloneable-helper').on('click', '.darkify-cloneable-clone', event_clone); $group.children('.darkify-cloneable-hidden').children('.darkify-cloneable-helper').on('click', '.darkify-cloneable-clone', event_clone); var event_remove = function (e) { e.preventDefault(); var count = $wrapper.children('.darkify-cloneable-item').length; $max.hide(); $min.hide(); if (min && (count - 1) < min) { $min.show(); return; } $(this).closest('.darkify-cloneable-item').remove(); DARKIFY.helper.name_nested_replace($wrapper.children('.darkify-cloneable-item'), field_id); $wrapper.darkify_customizer_refresh(); if (is_number) { update_title_numbers($wrapper); } }; $wrapper.children('.darkify-cloneable-item').children('.darkify-cloneable-helper').on('click', '.darkify-cloneable-remove', event_remove); $group.children('.darkify-cloneable-hidden').children('.darkify-cloneable-helper').on('click', '.darkify-cloneable-remove', event_remove); }); }; // // Field: icon // $.fn.darkify_field_icon = function () { return this.each(function () { var $this = $(this); $this.on('click', '.darkify-icon-add', function (e) { e.preventDefault(); var $button = $(this); var $modal = $('#darkify-modal-icon'); $modal.removeClass('hidden'); DARKIFY.vars.$icon_target = $this; if (!DARKIFY.vars.icon_modal_loaded) { $modal.find('.darkify-modal-loading').show(); window.wp.ajax.post('darkify-get-icons', { nonce: $button.data('nonce') }).done(function (response) { $modal.find('.darkify-modal-loading').hide(); DARKIFY.vars.icon_modal_loaded = true; var $load = $modal.find('.darkify-modal-load').html(response.content); $load.on('click', 'i', function (e) { e.preventDefault(); var icon = $(this).attr('title'); DARKIFY.vars.$icon_target.find('.darkify-icon-preview i').removeAttr('class').addClass(icon); DARKIFY.vars.$icon_target.find('.darkify-icon-preview').removeClass('hidden'); DARKIFY.vars.$icon_target.find('.darkify-icon-remove').removeClass('hidden'); DARKIFY.vars.$icon_target.find('input').val(icon).trigger('change'); $modal.addClass('hidden'); }); $modal.on('change keyup', '.darkify-icon-search', function () { var value = $(this).val(), $icons = $load.find('i'); $icons.each(function () { var $elem = $(this); if ($elem.attr('title').search(new RegExp(value, 'i')) < 0) { $elem.hide(); } else { $elem.show(); } }); }); $modal.on('click', '.darkify-modal-close, .darkify-modal-overlay', function () { $modal.addClass('hidden'); }); }).fail(function (response) { $modal.find('.darkify-modal-loading').hide(); $modal.find('.darkify-modal-load').html(response.error); $modal.on('click', function () { $modal.addClass('hidden'); }); }); } }); $this.on('click', '.darkify-icon-remove', function (e) { e.preventDefault(); $this.find('.darkify-icon-preview').addClass('hidden'); $this.find('input').val('').trigger('change'); $(this).addClass('hidden'); }); }); }; // // Field: map // $.fn.darkify_field_map = function () { return this.each(function () { if (typeof L === 'undefined') { return; } var $this = $(this), $map = $this.find('.darkify--map-osm'), $search_input = $this.find('.darkify--map-search input'), $latitude = $this.find('.darkify--latitude'), $longitude = $this.find('.darkify--longitude'), $zoom = $this.find('.darkify--zoom'), map_data = $map.data('map'); var mapInit = L.map($map.get(0), map_data); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(mapInit); var mapMarker = L.marker(map_data.center, { draggable: true }).addTo(mapInit); var update_latlng = function (data) { $latitude.val(data.lat); $longitude.val(data.lng); $zoom.val(mapInit.getZoom()); }; mapInit.on('click', function (data) { mapMarker.setLatLng(data.latlng); update_latlng(data.latlng); }); mapInit.on('zoom', function () { update_latlng(mapMarker.getLatLng()); }); mapMarker.on('drag', function () { update_latlng(mapMarker.getLatLng()); }); if (!$search_input.length) { $search_input = $('[data-depend-id="' + $this.find('.darkify--address-field').data('address-field') + '"]'); } var cache = {}; $search_input.autocomplete({ source: function (request, response) { var term = request.term; if (term in cache) { response(cache[term]); return; } $.get('https://nominatim.openstreetmap.org/search', { format: 'json', q: term, }, function (results) { var data; if (results.length) { data = results.map(function (item) { return { value: item.display_name, label: item.display_name, lat: item.lat, lon: item.lon }; }, 'json'); } else { data = [{ value: 'no-data', label: 'No Results.' }]; } cache[term] = data; response(data); }); }, select: function (event, ui) { if (ui.item.value === 'no-data') { return false; } var latLng = L.latLng(ui.item.lat, ui.item.lon); mapInit.panTo(latLng); mapMarker.setLatLng(latLng); update_latlng(latLng); }, create: function (event, ui) { $(this).autocomplete('widget').addClass('darkify-map-ui-autocomplate'); } }); var input_update_latlng = function () { var latLng = L.latLng($latitude.val(), $longitude.val()); mapInit.panTo(latLng); mapMarker.setLatLng(latLng); }; $latitude.on('change', input_update_latlng); $longitude.on('change', input_update_latlng); }); }; // // Field: link // $.fn.darkify_field_link = function () { return this.each(function () { var $this = $(this), $link = $this.find('.darkify--link'), $add = $this.find('.darkify--add'), $edit = $this.find('.darkify--edit'), $remove = $this.find('.darkify--remove'), $result = $this.find('.darkify--result'), uniqid = DARKIFY.helper.uid('darkify-wplink-textarea-'); $add.on('click', function (e) { e.preventDefault(); window.wpLink.open(uniqid); }); $edit.on('click', function (e) { e.preventDefault(); $add.trigger('click'); $('#wp-link-url').val($this.find('.darkify--url').val()); $('#wp-link-text').val($this.find('.darkify--text').val()); $('#wp-link-target').prop('checked', ($this.find('.darkify--target').val() === '_blank')); }); $remove.on('click', function (e) { e.preventDefault(); $this.find('.darkify--url').val('').trigger('change'); $this.find('.darkify--text').val(''); $this.find('.darkify--target').val(''); $add.removeClass('hidden'); $edit.addClass('hidden'); $remove.addClass('hidden'); $result.parent().addClass('hidden'); }); $link.attr('id', uniqid).on('change', function () { var atts = window.wpLink.getAttrs(), href = atts.href, text = $('#wp-link-text').val(), target = (atts.target) ? atts.target : ''; $this.find('.darkify--url').val(href).trigger('change'); $this.find('.darkify--text').val(text); $this.find('.darkify--target').val(target); $result.html('{url:"' + href + '", text:"' + text + '", target:"' + target + '"}'); $add.addClass('hidden'); $edit.removeClass('hidden'); $remove.removeClass('hidden'); $result.parent().removeClass('hidden'); }); }); }; // // Field: media // $.fn.darkify_field_media = function () { return this.each(function () { var $this = $(this), $upload_button = $this.find('.darkify--button'), $remove_button = $this.find('.darkify--remove'), $library = $upload_button.data('library') && $upload_button.data('library').split(',') || '', $auto_attributes = ($this.hasClass('darkify-assign-field-background')) ? $this.closest('.darkify-field-background').find('.darkify--auto-attributes') : false, wp_media_frame; $upload_button.on('click', function (e) { e.preventDefault(); if (typeof window.wp === 'undefined' || !window.wp.media || !window.wp.media.gallery) { return; } if (wp_media_frame) { wp_media_frame.open(); return; } wp_media_frame = window.wp.media({ library: { type: $library } }); wp_media_frame.on('select', function () { var thumbnail; var attributes = wp_media_frame.state().get('selection').first().attributes; var preview_size = $upload_button.data('preview-size') || 'thumbnail'; if ($library.length && $library.indexOf(attributes.subtype) === -1 && $library.indexOf(attributes.type) === -1) { return; } $this.find('.darkify--id').val(attributes.id); $this.find('.darkify--width').val(attributes.width); $this.find('.darkify--height').val(attributes.height); $this.find('.darkify--alt').val(attributes.alt); $this.find('.darkify--title').val(attributes.title); $this.find('.darkify--description').val(attributes.description); if (typeof attributes.sizes !== 'undefined' && typeof attributes.sizes.thumbnail !== 'undefined' && preview_size === 'thumbnail') { thumbnail = attributes.sizes.thumbnail.url; } else if (typeof attributes.sizes !== 'undefined' && typeof attributes.sizes.full !== 'undefined') { thumbnail = attributes.sizes.full.url; } else if (attributes.type === 'image') { thumbnail = attributes.url; } else { thumbnail = attributes.icon; } if ($auto_attributes) { $auto_attributes.removeClass('darkify--attributes-hidden'); } $remove_button.removeClass('hidden'); $this.find('.darkify--preview').removeClass('hidden'); $this.find('.darkify--src').attr('src', thumbnail); $this.find('.darkify--thumbnail').val(thumbnail); $this.find('.darkify--url').val(attributes.url).trigger('change'); }); wp_media_frame.open(); }); $remove_button.on('click', function (e) { e.preventDefault(); if ($auto_attributes) { $auto_attributes.addClass('darkify--attributes-hidden'); } $remove_button.addClass('hidden'); $this.find('input').val(''); $this.find('.darkify--preview').addClass('hidden'); $this.find('.darkify--url').trigger('change'); }); }); }; // // Field: repeater // $.fn.darkify_field_repeater = function () { return this.each(function () { var $this = $(this), $fieldset = $this.children('.darkify-fieldset'), $repeater = $fieldset.length ? $fieldset : $this, $wrapper = $repeater.children('.darkify-repeater-wrapper'), $hidden = $repeater.children('.darkify-repeater-hidden'), $max = $repeater.children('.darkify-repeater-max'), $min = $repeater.children('.darkify-repeater-min'), field_id = $wrapper.data('field-id'), max = parseInt($wrapper.data('max')), min = parseInt($wrapper.data('min')); $wrapper.children('.darkify-repeater-item').children('.darkify-repeater-content').darkify_reload_script(); $wrapper.sortable({ axis: 'y', handle: '.darkify-repeater-sort', helper: 'original', cursor: 'move', placeholder: 'widget-placeholder', update: function (event, ui) { DARKIFY.helper.name_nested_replace($wrapper.children('.darkify-repeater-item'), field_id); $wrapper.darkify_customizer_refresh(); ui.item.darkify_reload_script_retry(); } }); $repeater.children('.darkify-repeater-add').on('click', function (e) { e.preventDefault(); var count = $wrapper.children('.darkify-repeater-item').length; $min.hide(); if (max && (count + 1) > max) { $max.show(); return; } var $cloned_item = $hidden.darkify_clone(true); $cloned_item.removeClass('darkify-repeater-hidden'); $cloned_item.find(':input[name!="_pseudo"]').each(function () { this.name = this.name.replace('___', '').replace(field_id + '[0]', field_id + '[' + count + ']'); }); $wrapper.append($cloned_item); $cloned_item.children('.darkify-repeater-content').darkify_reload_script(); $wrapper.darkify_customizer_refresh(); $wrapper.darkify_customizer_listen({ closest: true }); }); var event_clone = function (e) { e.preventDefault(); var count = $wrapper.children('.darkify-repeater-item').length; $min.hide(); if (max && (count + 1) > max) { $max.show(); return; } var $this = $(this), $parent = $this.parent().parent().parent(), $cloned_content = $parent.children('.darkify-repeater-content').darkify_clone(), $cloned_helper = $parent.children('.darkify-repeater-helper').darkify_clone(true), $cloned_item = $('
    '); $cloned_item.append($cloned_content); $cloned_item.append($cloned_helper); $wrapper.children().eq($parent.index()).after($cloned_item); $cloned_item.children('.darkify-repeater-content').darkify_reload_script(); DARKIFY.helper.name_nested_replace($wrapper.children('.darkify-repeater-item'), field_id); $wrapper.darkify_customizer_refresh(); $wrapper.darkify_customizer_listen({ closest: true }); }; $wrapper.children('.darkify-repeater-item').children('.darkify-repeater-helper').on('click', '.darkify-repeater-clone', event_clone); $repeater.children('.darkify-repeater-hidden').children('.darkify-repeater-helper').on('click', '.darkify-repeater-clone', event_clone); var event_remove = function (e) { e.preventDefault(); var count = $wrapper.children('.darkify-repeater-item').length; $max.hide(); $min.hide(); if (min && (count - 1) < min) { $min.show(); return; } $(this).closest('.darkify-repeater-item').remove(); DARKIFY.helper.name_nested_replace($wrapper.children('.darkify-repeater-item'), field_id); $wrapper.darkify_customizer_refresh(); }; $wrapper.children('.darkify-repeater-item').children('.darkify-repeater-helper').on('click', '.darkify-repeater-remove', event_remove); $repeater.children('.darkify-repeater-hidden').children('.darkify-repeater-helper').on('click', '.darkify-repeater-remove', event_remove); }); }; // // Field: slider // $.fn.darkify_field_slider = function () { return this.each(function () { var $this = $(this), $input = $this.find('input'), $slider = $this.find('.darkify-slider-ui'), data = $input.data(), value = $input.val() || 0; if ($slider.hasClass('ui-slider')) { $slider.empty(); } $slider.slider({ range: 'min', value: value, min: data.min || 0, max: data.max || 100, step: data.step || 1, slide: function (e, o) { $input.val(o.value).trigger('change'); } }); $input.on('keyup', function () { $slider.slider('value', $input.val()); }); }); }; // // Field: sortable // $.fn.darkify_field_sortable = function () { return this.each(function () { var $sortable = $(this).find('.darkify-sortable'); $sortable.sortable({ axis: 'y', helper: 'original', cursor: 'move', placeholder: 'widget-placeholder', update: function (event, ui) { $sortable.darkify_customizer_refresh(); } }); $sortable.find('.darkify-sortable-content').darkify_reload_script(); }); }; // // Field: sorter // $.fn.darkify_field_sorter = function () { return this.each(function () { var $this = $(this), $enabled = $this.find('.darkify-enabled'), $has_disabled = $this.find('.darkify-disabled'), $disabled = ($has_disabled.length) ? $has_disabled : false; $enabled.sortable({ connectWith: $disabled, placeholder: 'ui-sortable-placeholder', update: function (event, ui) { var $el = ui.item.find('input'); if (ui.item.parent().hasClass('darkify-enabled')) { $el.attr('name', $el.attr('name').replace('disabled', 'enabled')); } else { $el.attr('name', $el.attr('name').replace('enabled', 'disabled')); } $this.darkify_customizer_refresh(); } }); if ($disabled) { $disabled.sortable({ connectWith: $enabled, placeholder: 'ui-sortable-placeholder', update: function (event, ui) { $this.darkify_customizer_refresh(); } }); } }); }; // // Field: spinner // $.fn.darkify_field_spinner = function () { return this.each(function () { var $this = $(this), $input = $this.find('input'), $inited = $this.find('.ui-button'), data = $input.data(); if ($inited.length) { $inited.remove(); } $input.spinner({ min: data.min || 0, max: data.max || 100, step: data.step || 1, create: function (event, ui) { if (data.unit) { $input.after('' + data.unit + ''); } }, spin: function (event, ui) { $input.val(ui.value).trigger('change'); } }); }); }; // // Field: switcher // $.fn.darkify_field_switcher = function () { return this.each(function () { var $switcher = $(this).find('.darkify--switcher'); $switcher.on('click', function () { var value = 0; var $input = $switcher.find('input'); if ($switcher.hasClass('darkify--active')) { $switcher.removeClass('darkify--active'); } else { value = 1; $switcher.addClass('darkify--active'); } $input.val(value).trigger('change'); }); }); }; // // Field: tabbed // $.fn.darkify_field_tabbed = function () { return this.each(function () { var $this = $(this), $links = $this.find('.darkify-tabbed-nav a'), $contents = $this.find('.darkify-tabbed-content'); $contents.eq(0).darkify_reload_script(); $links.on('click', function (e) { e.preventDefault(); var $link = $(this), index = $link.index(), $content = $contents.eq(index); $link.addClass('darkify-tabbed-active').siblings().removeClass('darkify-tabbed-active'); $content.darkify_reload_script(); $content.removeClass('hidden').siblings().addClass('hidden'); }); }); }; // // Field: typography // $.fn.darkify_field_typography = function () { return this.each(function () { var base = this; var $this = $(this); var loaded_fonts = []; var webfonts = darkify_typography_json.webfonts; var googlestyles = darkify_typography_json.googlestyles; var defaultstyles = darkify_typography_json.defaultstyles; // // // Sanitize google font subset base.sanitize_subset = function (subset) { subset = subset.replace('-ext', ' Extended'); subset = subset.charAt(0).toUpperCase() + subset.slice(1); return subset; }; // // // Sanitize google font styles (weight and style) base.sanitize_style = function (style) { return googlestyles[style] ? googlestyles[style] : style; }; // // // Load google font base.load_google_font = function (font_family, weight, style) { if (font_family && typeof WebFont === 'object') { weight = weight ? weight.replace('normal', '') : ''; style = style ? style.replace('normal', '') : ''; if (weight || style) { font_family = font_family + ':' + weight + style; } if (loaded_fonts.indexOf(font_family) === -1) { WebFont.load({ google: { families: [font_family] } }); } loaded_fonts.push(font_family); } }; // // // Append select options base.append_select_options = function ($select, options, condition, type, is_multi) { $select.find('option').not(':first').remove(); var opts = ''; $.each(options, function (key, value) { var selected; var name = value; // is_multi if (is_multi) { selected = (condition && condition.indexOf(value) !== -1) ? ' selected' : ''; } else { selected = (condition && condition === value) ? ' selected' : ''; } if (type === 'subset') { name = base.sanitize_subset(value); } else if (type === 'style') { name = base.sanitize_style(value); } opts += ''; }); $select.append(opts).trigger('darkify.change').trigger('chosen:updated'); }; base.init = function () { // // // Constants var selected_styles = []; var $typography = $this.find('.darkify--typography'); var $type = $this.find('.darkify--type'); var $styles = $this.find('.darkify--block-font-style'); var unit = $typography.data('unit'); var line_height_unit = $typography.data('line-height-unit'); var exclude_fonts = $typography.data('exclude') ? $typography.data('exclude').split(',') : []; // // // Chosen init if ($this.find('.darkify--chosen').length) { var $chosen_selects = $this.find('select'); $chosen_selects.each(function () { var $chosen_select = $(this), $chosen_inited = $chosen_select.parent().find('.chosen-container'); if ($chosen_inited.length) { $chosen_inited.remove(); } $chosen_select.chosen({ allow_single_deselect: true, disable_search_threshold: 15, width: '100%' }); }); } // // // Font family select var $font_family_select = $this.find('.darkify--font-family'); var first_font_family = $font_family_select.val(); // Clear default font family select options $font_family_select.find('option').not(':first-child').remove(); var opts = ''; $.each(webfonts, function (type, group) { // Check for exclude fonts if (exclude_fonts && exclude_fonts.indexOf(type) !== -1) { return; } opts += ''; $.each(group.fonts, function (key, value) { // use key if value is object value = (typeof value === 'object') ? key : value; var selected = (value === first_font_family) ? ' selected' : ''; opts += ''; }); opts += ''; }); // Append google font select options $font_family_select.append(opts).trigger('chosen:updated'); // // // Font style select var $font_style_block = $this.find('.darkify--block-font-style'); if ($font_style_block.length) { var $font_style_select = $this.find('.darkify--font-style-select'); var first_style_value = $font_style_select.val() ? $font_style_select.val().replace(/normal/g, '') : ''; // // Font Style on on change listener $font_style_select.on('change darkify.change', function (event) { var style_value = $font_style_select.val(); // set a default value if (!style_value && selected_styles && selected_styles.indexOf('normal') === -1) { style_value = selected_styles[0]; } // set font weight, for eg. replacing 800italic to 800 var font_normal = (style_value && style_value !== 'italic' && style_value === 'normal') ? 'normal' : ''; var font_weight = (style_value && style_value !== 'italic' && style_value !== 'normal') ? style_value.replace('italic', '') : font_normal; var font_style = (style_value && style_value.substr(-6) === 'italic') ? 'italic' : ''; $this.find('.darkify--font-weight').val(font_weight); $this.find('.darkify--font-style').val(font_style); }); // // // Extra font style select var $extra_font_style_block = $this.find('.darkify--block-extra-styles'); if ($extra_font_style_block.length) { var $extra_font_style_select = $this.find('.darkify--extra-styles'); var first_extra_style_value = $extra_font_style_select.val(); } } // // // Subsets select var $subset_block = $this.find('.darkify--block-subset'); if ($subset_block.length) { var $subset_select = $this.find('.darkify--subset'); var first_subset_select_value = $subset_select.val(); var subset_multi_select = $subset_select.data('multiple') || false; } // // // Backup font family var $backup_font_family_block = $this.find('.darkify--block-backup-font-family'); // // // Font Family on Change Listener $font_family_select.on('change darkify.change', function (event) { // Hide subsets on change if ($subset_block.length) { $subset_block.addClass('hidden'); } // Hide extra font style on change if ($extra_font_style_block.length) { $extra_font_style_block.addClass('hidden'); } // Hide backup font family on change if ($backup_font_family_block.length) { $backup_font_family_block.addClass('hidden'); } var $selected = $font_family_select.find(':selected'); var value = $selected.val(); var type = $selected.data('type'); if (type && value) { // Show backup fonts if font type google or custom if ((type === 'google' || type === 'custom') && $backup_font_family_block.length) { $backup_font_family_block.removeClass('hidden'); } // Appending font style select options if ($font_style_block.length) { // set styles for multi and normal style selectors var styles = defaultstyles; // Custom or gogle font styles if (type === 'google' && webfonts[type].fonts[value][0]) { styles = webfonts[type].fonts[value][0]; } else if (type === 'custom' && webfonts[type].fonts[value]) { styles = webfonts[type].fonts[value]; } selected_styles = styles; // Set selected style value for avoid load errors var set_auto_style = (styles.indexOf('normal') !== -1) ? 'normal' : styles[0]; var set_style_value = (first_style_value && styles.indexOf(first_style_value) !== -1) ? first_style_value : set_auto_style; // Append style select options base.append_select_options($font_style_select, styles, set_style_value, 'style'); // Clear first value first_style_value = false; // Show style select after appended $font_style_block.removeClass('hidden'); // Appending extra font style select options if (type === 'google' && $extra_font_style_block.length && styles.length > 1) { // Append extra-style select options base.append_select_options($extra_font_style_select, styles, first_extra_style_value, 'style', true); // Clear first value first_extra_style_value = false; // Show style select after appended $extra_font_style_block.removeClass('hidden'); } } // Appending google fonts subsets select options if (type === 'google' && $subset_block.length && webfonts[type].fonts[value][1]) { var subsets = webfonts[type].fonts[value][1]; var set_auto_subset = (subsets.length < 2 && subsets[0] !== 'latin') ? subsets[0] : ''; var set_subset_value = (first_subset_select_value && subsets.indexOf(first_subset_select_value) !== -1) ? first_subset_select_value : set_auto_subset; // check for multiple subset select set_subset_value = (subset_multi_select && first_subset_select_value) ? first_subset_select_value : set_subset_value; base.append_select_options($subset_select, subsets, set_subset_value, 'subset', subset_multi_select); first_subset_select_value = false; $subset_block.removeClass('hidden'); } } else { // Clear Styles $styles.find(':input').val(''); // Clear subsets options if type and value empty if ($subset_block.length) { $subset_select.find('option').not(':first-child').remove(); $subset_select.trigger('chosen:updated'); } // Clear font styles options if type and value empty if ($font_style_block.length) { $font_style_select.find('option').not(':first-child').remove(); $font_style_select.trigger('chosen:updated'); } } // Update font type input value $type.val(type); }).trigger('darkify.change'); // // // Preview var $preview_block = $this.find('.darkify--block-preview'); if ($preview_block.length) { var $preview = $this.find('.darkify--preview'); // Set preview styles on change $this.on('change', DARKIFY.helper.debounce(function (event) { $preview_block.removeClass('hidden'); var font_family = $font_family_select.val(), font_weight = $this.find('.darkify--font-weight').val(), font_style = $this.find('.darkify--font-style').val(), font_size = $this.find('.darkify--font-size').val(), font_variant = $this.find('.darkify--font-variant').val(), line_height = $this.find('.darkify--line-height').val(), text_align = $this.find('.darkify--text-align').val(), text_transform = $this.find('.darkify--text-transform').val(), text_decoration = $this.find('.darkify--text-decoration').val(), text_color = $this.find('.darkify--color').val(), word_spacing = $this.find('.darkify--word-spacing').val(), letter_spacing = $this.find('.darkify--letter-spacing').val(), custom_style = $this.find('.darkify--custom-style').val(), type = $this.find('.darkify--type').val(); if (type === 'google') { base.load_google_font(font_family, font_weight, font_style); } var properties = {}; if (font_family) { properties.fontFamily = font_family; } if (font_weight) { properties.fontWeight = font_weight; } if (font_style) { properties.fontStyle = font_style; } if (font_variant) { properties.fontVariant = font_variant; } if (font_size) { properties.fontSize = font_size + unit; } if (line_height) { properties.lineHeight = line_height + line_height_unit; } if (letter_spacing) { properties.letterSpacing = letter_spacing + unit; } if (word_spacing) { properties.wordSpacing = word_spacing + unit; } if (text_align) { properties.textAlign = text_align; } if (text_transform) { properties.textTransform = text_transform; } if (text_decoration) { properties.textDecoration = text_decoration; } if (text_color) { properties.color = text_color; } $preview.removeAttr('style'); // Customs style attribute if (custom_style) { $preview.attr('style', custom_style); } $preview.css(properties); }, 100)); // Preview black and white backgrounds trigger $preview_block.on('click', function () { $preview.toggleClass('darkify--black-background'); var $toggle = $preview_block.find('.darkify--toggle'); if ($toggle.hasClass('fa-toggle-off')) { $toggle.removeClass('fa-toggle-off').addClass('fa-toggle-on'); } else { $toggle.removeClass('fa-toggle-on').addClass('fa-toggle-off'); } }); if (!$preview_block.hasClass('hidden')) { $this.trigger('change'); } } }; base.init(); }); }; // // Field: upload // $.fn.darkify_field_upload = function () { return this.each(function () { var $this = $(this), $input = $this.find('input'), $upload_button = $this.find('.darkify--button'), $remove_button = $this.find('.darkify--remove'), $preview_wrap = $this.find('.darkify--preview'), $preview_src = $this.find('.darkify--src'), $library = $upload_button.data('library') && $upload_button.data('library').split(',') || '', wp_media_frame; $upload_button.on('click', function (e) { e.preventDefault(); if (typeof window.wp === 'undefined' || !window.wp.media || !window.wp.media.gallery) { return; } if (wp_media_frame) { wp_media_frame.open(); return; } wp_media_frame = window.wp.media({ library: { type: $library }, }); wp_media_frame.on('select', function () { var src; var attributes = wp_media_frame.state().get('selection').first().attributes; if ($library.length && $library.indexOf(attributes.subtype) === -1 && $library.indexOf(attributes.type) === -1) { return; } $input.val(attributes.url).trigger('change'); }); wp_media_frame.open(); }); $remove_button.on('click', function (e) { e.preventDefault(); $input.val('').trigger('change'); }); $input.on('change', function (e) { var $value = $input.val(); if ($value) { $remove_button.removeClass('hidden'); } else { $remove_button.addClass('hidden'); } if ($preview_wrap.length) { if ($.inArray($value.split('.').pop().toLowerCase(), ['jpg', 'jpeg', 'gif', 'png', 'svg', 'webp']) !== -1) { $preview_wrap.removeClass('hidden'); $preview_src.attr('src', $value); } else { $preview_wrap.addClass('hidden'); } } }); }); }; // // Field: wp_editor // $.fn.darkify_field_wp_editor = function () { return this.each(function () { if (typeof window.wp.editor === 'undefined' || typeof window.tinyMCEPreInit === 'undefined' || typeof window.tinyMCEPreInit.mceInit.darkify_wp_editor === 'undefined') { return; } var $this = $(this), $editor = $this.find('.darkify-wp-editor'), $textarea = $this.find('textarea'); // If there is wp-editor remove it for avoid dupliated wp-editor conflicts. var $has_wp_editor = $this.find('.wp-editor-wrap').length || $this.find('.mce-container').length; if ($has_wp_editor) { $editor.empty(); $editor.append($textarea); $textarea.css('display', ''); } // Generate a unique id var uid = DARKIFY.helper.uid('darkify-editor-'); $textarea.attr('id', uid); // Get default editor settings var default_editor_settings = { tinymce: window.tinyMCEPreInit.mceInit.darkify_wp_editor, quicktags: window.tinyMCEPreInit.qtInit.darkify_wp_editor }; // Get default editor settings var field_editor_settings = $editor.data('editor-settings'); // Callback for old wp editor var wpEditor = wp.oldEditor ? wp.oldEditor : wp.editor; if (wpEditor && wpEditor.hasOwnProperty('autop')) { wp.editor.autop = wpEditor.autop; wp.editor.removep = wpEditor.removep; wp.editor.initialize = wpEditor.initialize; } // Add on change event handle var editor_on_change = function (editor) { editor.on('change keyup', function () { var value = (field_editor_settings.wpautop) ? editor.getContent() : wp.editor.removep(editor.getContent()); $textarea.val(value).trigger('change'); }); }; // Extend editor selector and on change event handler default_editor_settings.tinymce = $.extend({}, default_editor_settings.tinymce, { selector: '#' + uid, setup: editor_on_change }); // Override editor tinymce settings if (field_editor_settings.tinymce === false) { default_editor_settings.tinymce = false; $editor.addClass('darkify-no-tinymce'); } // Override editor quicktags settings if (field_editor_settings.quicktags === false) { default_editor_settings.quicktags = false; $editor.addClass('darkify-no-quicktags'); } // Wait until :visible var interval = setInterval(function () { if ($this.is(':visible')) { window.wp.editor.initialize(uid, default_editor_settings); clearInterval(interval); } }); // Add Media buttons if (field_editor_settings.media_buttons && window.darkify_media_buttons) { var $editor_buttons = $editor.find('.wp-media-buttons'); if ($editor_buttons.length) { $editor_buttons.find('.darkify-shortcode-button').data('editor-id', uid); } else { var $media_buttons = $(window.darkify_media_buttons); $media_buttons.find('.darkify-shortcode-button').data('editor-id', uid); $editor.prepend($media_buttons); } } }); }; // // Confirm // $.fn.darkify_confirm = function () { return this.each(function () { $(this).on('click', function (e) { var confirm_text = $(this).data('confirm') || window.darkify_vars.i18n.confirm; var confirm_answer = confirm(confirm_text); if (confirm_answer) { DARKIFY.vars.is_confirm = true; DARKIFY.vars.form_modified = false; } else { e.preventDefault(); return false; } }); }); }; $.fn.serializeObject = function () { var obj = {}; $.each(this.serializeArray(), function (i, o) { var n = o.name, v = o.value; obj[n] = obj[n] === undefined ? v : $.isArray(obj[n]) ? obj[n].concat(v) : [obj[n], v]; }); return obj; }; function darkify_ajax_action() { jQuery.ajax({ url: darkify_vars.ajaxurl, type: "POST", data: { action: "set_options", nonce: darkify_vars.nonce, }, }); } // // Options Save // $.fn.darkify_save = function () { return this.each(function () { var $this = $(this), $buttons = $('.darkify-save'), $panel = $('.darkify-options'), flooding = false, timeout; $this.on('click', function (e) { if (!flooding) { var $text = $this.data('save'), $value = $this.val(); $buttons.attr('value', $text); if ($this.hasClass('darkify-save-ajax')) { e.preventDefault(); $panel.addClass('darkify-saving'); $buttons.prop('disabled', true); darkify_ajax_action(); window.wp.ajax.post('darkify_' + $panel.data('unique') + '_ajax_save', { data: $('#darkify-form').serializeJSONDARKIFY() }) .done(function (response) { // clear errors $('.darkify-error').remove(); if (Object.keys(response.errors).length) { var error_icon = '!'; $.each(response.errors, function (key, error_message) { var $field = $('[data-depend-id="' + key + '"]'), $link = $('a[href="#tab=' + $field.closest('.darkify-section').data('section-id') + '"]'), $tab = $link.closest('.darkify-tab-item'); $field.closest('.darkify-fieldset').append('

    ' + error_message + '

    '); if (!$link.find('.darkify-error').length) { $link.append(error_icon); } if (!$tab.find('.darkify-arrow .darkify-error').length) { $tab.find('.darkify-arrow').append(error_icon); } }); } $panel.removeClass('darkify-saving'); $buttons.prop('disabled', false).attr('value', $value); flooding = false; DARKIFY.vars.form_modified = false; DARKIFY.vars.$form_warning.hide(); clearTimeout(timeout); var $result_success = $('.darkify-form-success'); $result_success.empty().append(response.notice).fadeIn('fast', function () { timeout = setTimeout(function () { $result_success.fadeOut('fast'); }, 1000); }); }) .fail(function (response) { alert(response.error); }); } else { DARKIFY.vars.form_modified = false; } } flooding = true; }); }); }; // // Option Framework // $.fn.darkify_options = function () { return this.each(function () { var $this = $(this), $content = $this.find('.darkify-content'), $form_success = $this.find('.darkify-form-success'), $form_warning = $this.find('.darkify-form-warning'), $save_button = $this.find('.darkify-header .darkify-save'); DARKIFY.vars.$form_warning = $form_warning; // Shows a message white leaving theme options without saving if ($form_warning.length) { window.onbeforeunload = function () { return (DARKIFY.vars.form_modified) ? true : undefined; }; $content.on('change keypress', ':input', function () { if (!DARKIFY.vars.form_modified) { $form_success.hide(); $form_warning.fadeIn('fast'); DARKIFY.vars.form_modified = true; } }); } if ($form_success.hasClass('darkify-form-show')) { setTimeout(function () { $form_success.fadeOut('fast'); }, 1000); } $(document).keydown(function (event) { if ((event.ctrlKey || event.metaKey) && event.which === 83) { $save_button.trigger('click'); event.preventDefault(); return false; } }); }); }; // // Taxonomy Framework // $.fn.darkify_taxonomy = function () { return this.each(function () { var $this = $(this), $form = $this.parents('form'); if ($form.attr('id') === 'addtag') { var $submit = $form.find('#submit'), $cloned = $this.children('.darkify-field').darkify_clone(); $submit.on('click', function () { if (!$form.find('.form-required').hasClass('form-invalid')) { $this.data('inited', false); $this.empty(); $this.html($cloned); $cloned = $cloned.darkify_clone(); $this.darkify_reload_script(); } }); } }); }; // // Shortcode Framework // $.fn.darkify_shortcode = function () { var base = this; base.shortcode_parse = function (serialize, key) { var shortcode = ''; $.each(serialize, function (shortcode_key, shortcode_values) { key = (key) ? key : shortcode_key; shortcode += '[' + key; $.each(shortcode_values, function (shortcode_tag, shortcode_value) { if (shortcode_tag === 'content') { shortcode += ']'; shortcode += shortcode_value; shortcode += '[/' + key + ''; } else { shortcode += base.shortcode_tags(shortcode_tag, shortcode_value); } }); shortcode += ']'; }); return shortcode; }; base.shortcode_tags = function (shortcode_tag, shortcode_value) { var shortcode = ''; if (shortcode_value !== '') { if (typeof shortcode_value === 'object' && !$.isArray(shortcode_value)) { $.each(shortcode_value, function (sub_shortcode_tag, sub_shortcode_value) { // sanitize spesific key/value switch (sub_shortcode_tag) { case 'background-image': sub_shortcode_value = (sub_shortcode_value.url) ? sub_shortcode_value.url : ''; break; } if (sub_shortcode_value !== '') { shortcode += ' ' + sub_shortcode_tag + '="' + sub_shortcode_value.toString() + '"'; } }); } else { shortcode += ' ' + shortcode_tag + '="' + shortcode_value.toString() + '"'; } } return shortcode; }; base.insertAtChars = function (_this, currentValue) { var obj = (typeof _this[0].name !== 'undefined') ? _this[0] : _this; if (obj.value.length && typeof obj.selectionStart !== 'undefined') { obj.focus(); return obj.value.substring(0, obj.selectionStart) + currentValue + obj.value.substring(obj.selectionEnd, obj.value.length); } else { obj.focus(); return currentValue; } }; base.send_to_editor = function (html, editor_id) { var tinymce_editor; if (typeof tinymce !== 'undefined') { tinymce_editor = tinymce.get(editor_id); } if (tinymce_editor && !tinymce_editor.isHidden()) { tinymce_editor.execCommand('mceInsertContent', false, html); } else { var $editor = $('#' + editor_id); $editor.val(base.insertAtChars($editor, html)).trigger('change'); } }; return this.each(function () { var $modal = $(this), $load = $modal.find('.darkify-modal-load'), $content = $modal.find('.darkify-modal-content'), $insert = $modal.find('.darkify-modal-insert'), $loading = $modal.find('.darkify-modal-loading'), $select = $modal.find('select'), modal_id = $modal.data('modal-id'), nonce = $modal.data('nonce'), editor_id, target_id, gutenberg_id, sc_key, sc_name, sc_view, sc_group, $cloned, $button; $(document).on('click', '.darkify-shortcode-button[data-modal-id="' + modal_id + '"]', function (e) { e.preventDefault(); $button = $(this); editor_id = $button.data('editor-id') || false; target_id = $button.data('target-id') || false; gutenberg_id = $button.data('gutenberg-id') || false; $modal.removeClass('hidden'); // single usage trigger first shortcode if ($modal.hasClass('darkify-shortcode-single') && sc_name === undefined) { $select.trigger('change'); } }); $select.on('change', function () { var $option = $(this); var $selected = $option.find(':selected'); sc_key = $option.val(); sc_name = $selected.data('shortcode'); sc_view = $selected.data('view') || 'normal'; sc_group = $selected.data('group') || sc_name; $load.empty(); if (sc_key) { $loading.show(); window.wp.ajax.post('darkify-get-shortcode-' + modal_id, { shortcode_key: sc_key, nonce: nonce }) .done(function (response) { $loading.hide(); var $appended = $(response.content).appendTo($load); $insert.parent().removeClass('hidden'); $cloned = $appended.find('.darkify--repeat-shortcode').darkify_clone(); $appended.darkify_reload_script(); $appended.find('.darkify-fields').darkify_reload_script(); }); } else { $insert.parent().addClass('hidden'); } }); $insert.on('click', function (e) { e.preventDefault(); if ($insert.prop('disabled') || $insert.attr('disabled')) { return; } var shortcode = ''; var serialize = $modal.find('.darkify-field:not(.darkify-depend-on)').find(':input:not(.ignore)').serializeObjectDARKIFY(); switch (sc_view) { case 'contents': var contentsObj = (sc_name) ? serialize[sc_name] : serialize; $.each(contentsObj, function (sc_key, sc_value) { var sc_tag = (sc_name) ? sc_name : sc_key; shortcode += '[' + sc_tag + ']' + sc_value + '[/' + sc_tag + ']'; }); break; case 'group': shortcode += '[' + sc_name; $.each(serialize[sc_name], function (sc_key, sc_value) { shortcode += base.shortcode_tags(sc_key, sc_value); }); shortcode += ']'; shortcode += base.shortcode_parse(serialize[sc_group], sc_group); shortcode += '[/' + sc_name + ']'; break; case 'repeater': shortcode += base.shortcode_parse(serialize[sc_group], sc_group); break; default: shortcode += base.shortcode_parse(serialize); break; } shortcode = (shortcode === '') ? '[' + sc_name + ']' : shortcode; if (gutenberg_id) { var content = window.darkify_gutenberg_props.attributes.hasOwnProperty('shortcode') ? window.darkify_gutenberg_props.attributes.shortcode : ''; window.darkify_gutenberg_props.setAttributes({ shortcode: content + shortcode }); } else if (editor_id) { base.send_to_editor(shortcode, editor_id); } else { var $textarea = (target_id) ? $(target_id) : $button.parent().find('textarea'); $textarea.val(base.insertAtChars($textarea, shortcode)).trigger('change'); } $modal.addClass('hidden'); }); $modal.on('click', '.darkify--repeat-button', function (e) { e.preventDefault(); var $repeatable = $modal.find('.darkify--repeatable'); var $new_clone = $cloned.darkify_clone(); var $remove_btn = $new_clone.find('.darkify-repeat-remove'); var $appended = $new_clone.appendTo($repeatable); $new_clone.find('.darkify-fields').darkify_reload_script(); DARKIFY.helper.name_nested_replace($modal.find('.darkify--repeat-shortcode'), sc_group); $remove_btn.on('click', function () { $new_clone.remove(); DARKIFY.helper.name_nested_replace($modal.find('.darkify--repeat-shortcode'), sc_group); }); }); $modal.on('click', '.darkify-modal-close, .darkify-modal-overlay', function () { $modal.addClass('hidden'); }); }); }; // // WP Color Picker // if (typeof Color === 'function') { Color.prototype.toString = function () { if (this._alpha < 1) { return this.toCSS('rgba', this._alpha).replace(/\s+/g, ''); } var hex = parseInt(this._color, 10).toString(16); if (this.error) { return ''; } if (hex.length < 6) { for (var i = 6 - hex.length - 1; i >= 0; i--) { hex = '0' + hex; } } return '#' + hex; }; } DARKIFY.funcs.parse_color = function (color) { var value = color.replace(/\s+/g, ''), trans = (value.indexOf('rgba') !== -1) ? parseFloat(value.replace(/^.*,(.+)\)/, '$1') * 100) : 100, rgba = (trans < 100) ? true : false; return { value: value, transparent: trans, rgba: rgba }; }; $.fn.darkify_color = function () { return this.each(function () { var $input = $(this), picker_color = DARKIFY.funcs.parse_color($input.val()), palette_color = window.darkify_vars.color_palette.length ? window.darkify_vars.color_palette : true, $container; // Destroy and Reinit if ($input.hasClass('wp-color-picker')) { $input.closest('.wp-picker-container').after($input).remove(); } $input.wpColorPicker({ palettes: palette_color, change: function (event, ui) { var ui_color_value = ui.color.toString(); $container.removeClass('darkify--transparent-active'); $container.find('.darkify--transparent-offset').css('background-color', ui_color_value); $input.val(ui_color_value).trigger('change'); }, create: function () { $container = $input.closest('.wp-picker-container'); var a8cIris = $input.data('a8cIris'), $transparent_wrap = $('
    ' + '
    ' + '
    ' + '
    ' + '
    transparent
    ' + '
    ').appendTo($container.find('.wp-picker-holder')), $transparent_slider = $transparent_wrap.find('.darkify--transparent-slider'), $transparent_text = $transparent_wrap.find('.darkify--transparent-text'), $transparent_offset = $transparent_wrap.find('.darkify--transparent-offset'), $transparent_button = $transparent_wrap.find('.darkify--transparent-button'); if ($input.val() === 'transparent') { $container.addClass('darkify--transparent-active'); } $transparent_button.on('click', function () { if ($input.val() !== 'transparent') { $input.val('transparent').trigger('change').removeClass('iris-error'); $container.addClass('darkify--transparent-active'); } else { $input.val(a8cIris._color.toString()).trigger('change'); $container.removeClass('darkify--transparent-active'); } }); $transparent_slider.slider({ value: picker_color.transparent, step: 1, min: 0, max: 100, slide: function (event, ui) { var slide_value = parseFloat(ui.value / 100); a8cIris._color._alpha = slide_value; $input.wpColorPicker('color', a8cIris._color.toString()); $transparent_text.text((slide_value === 1 || slide_value === 0 ? '' : slide_value)); }, create: function () { var slide_value = parseFloat(picker_color.transparent / 100), text_value = slide_value < 1 ? slide_value : ''; $transparent_text.text(text_value); $transparent_offset.css('background-color', picker_color.value); $container.on('click', '.wp-picker-clear', function () { a8cIris._color._alpha = 1; $transparent_text.text(''); $transparent_slider.slider('option', 'value', 100); $container.removeClass('darkify--transparent-active'); $input.trigger('change'); }); $container.on('click', '.wp-picker-default', function () { var default_color = DARKIFY.funcs.parse_color($input.data('default-color')), default_value = parseFloat(default_color.transparent / 100), default_text = default_value < 1 ? default_value : ''; a8cIris._color._alpha = default_value; $transparent_text.text(default_text); $transparent_slider.slider('option', 'value', default_color.transparent); if (default_color.value === 'transparent') { $input.removeClass('iris-error'); $container.addClass('darkify--transparent-active'); } }); } }); } }); }); }; // // ChosenJS // $.fn.darkify_chosen = function () { return this.each(function () { var $this = $(this), $inited = $this.parent().find('.chosen-container'), is_sortable = $this.hasClass('darkify-chosen-sortable') || false, is_ajax = $this.hasClass('darkify-chosen-ajax') || false, is_multiple = $this.attr('multiple') || false, set_width = is_multiple ? '100%' : 'auto', set_options = $.extend({ allow_single_deselect: true, disable_search_threshold: 10, width: set_width, no_results_text: window.darkify_vars.i18n.no_results_text, }, $this.data('chosen-settings')); if ($inited.length) { $inited.remove(); } // Chosen ajax if (is_ajax) { var set_ajax_options = $.extend({ data: { type: 'post', nonce: '', }, allow_single_deselect: true, disable_search_threshold: -1, width: '100%', min_length: 3, type_delay: 500, typing_text: window.darkify_vars.i18n.typing_text, searching_text: window.darkify_vars.i18n.searching_text, no_results_text: window.darkify_vars.i18n.no_results_text, }, $this.data('chosen-settings')); $this.DARKIFYAjaxChosen(set_ajax_options); } else { $this.chosen(set_options); } // Chosen keep options order if (is_multiple) { var $hidden_select = $this.parent().find('.darkify-hide-select'); var $hidden_value = $hidden_select.val() || []; $this.on('change', function (obj, result) { if (result && result.selected) { $hidden_select.append(''); } else if (result && result.deselected) { $hidden_select.find('option[value="' + result.deselected + '"]').remove(); } // Force customize refresh if (window.wp.customize !== undefined && $hidden_select.children().length === 0 && $hidden_select.data('customize-setting-link')) { window.wp.customize.control($hidden_select.data('customize-setting-link')).setting.set(''); } $hidden_select.trigger('change'); }); // Chosen order abstract $this.DARKIFYChosenOrder($hidden_value, true); } // Chosen sortable if (is_sortable) { var $chosen_container = $this.parent().find('.chosen-container'); var $chosen_choices = $chosen_container.find('.chosen-choices'); $chosen_choices.bind('mousedown', function (event) { if ($(event.target).is('span')) { event.stopPropagation(); } }); $chosen_choices.sortable({ items: 'li:not(.search-field)', helper: 'orginal', cursor: 'move', placeholder: 'search-choice-placeholder', start: function (e, ui) { ui.placeholder.width(ui.item.innerWidth()); ui.placeholder.height(ui.item.innerHeight()); }, update: function (e, ui) { var select_options = ''; var chosen_object = $this.data('chosen'); var $prev_select = $this.parent().find('.darkify-hide-select'); $chosen_choices.find('.search-choice-close').each(function () { var option_array_index = $(this).data('option-array-index'); $.each(chosen_object.results_data, function (index, data) { if (data.array_index === option_array_index) { select_options += ''; } }); }); $prev_select.children().remove(); $prev_select.append(select_options); $prev_select.trigger('change'); } }); } }); }; // // Helper Checkbox Checker // $.fn.darkify_checkbox = function () { return this.each(function () { var $this = $(this), $input = $this.find('.darkify--input'), $checkbox = $this.find('.darkify--checkbox'); $checkbox.on('click', function () { $input.val(Number($checkbox.prop('checked'))).trigger('change'); }); }); }; // // Helper Check/Uncheck All // $.fn.darkify_checkbox_all = function () { return this.each(function () { var $this = $(this); $this.on('click', function () { var $inputs = $this.closest('.darkify-field-checkbox').find(':input'), uncheck = false; $inputs.each(function () { if (!$(this).prop('checked')) { uncheck = true; } }); if (uncheck) { $inputs.prop('checked', 'checked'); $inputs.attr('checked', 'checked'); } else { $inputs.prop('checked', ''); $inputs.removeAttr('checked'); } $inputs.first().trigger('change'); }); }); }; // // Siblings // $.fn.darkify_siblings = function () { return this.each(function () { var $this = $(this), $siblings = $this.find('.darkify--sibling:not(.darkify-pro-only)'), multiple = $this.data('multiple') || false; $this.find('.darkify--sibling.darkify-pro-only').find('input').prop('disable', true) $siblings.on('click', function () { var $sibling = $(this); if (multiple) { if ($sibling.hasClass('darkify--active')) { $sibling.removeClass('darkify--active'); $sibling.find('input').prop('checked', false).trigger('change'); } else { $sibling.addClass('darkify--active'); $sibling.find('input').prop('checked', true).trigger('change'); } } else { $this.find('input').prop('checked', false); $sibling.find('input').prop('checked', true).trigger('change'); $sibling.addClass('darkify--active').siblings().removeClass('darkify--active'); } }); }); }; // // Help Tooltip // $.fn.darkify_help = function () { return this.each(function () { var $this = $(this), $tooltip, offset_left; $this.on({ mouseenter: function () { $tooltip = $('
    ').html($this.find('.darkify-help-text').html()).appendTo('body'); offset_left = (DARKIFY.vars.is_rtl) ? ($this.offset().left + 24) : ($this.offset().left - $tooltip.outerWidth()); $tooltip.css({ top: $this.offset().top - (($tooltip.outerHeight() / 2) - 14), left: offset_left, }); }, mouseleave: function () { if ($tooltip !== undefined) { $tooltip.remove(); } } }); }); }; // // Customize Refresh // $.fn.darkify_customizer_refresh = function () { return this.each(function () { var $this = $(this), $complex = $this.closest('.darkify-customize-complex'); if ($complex.length) { var unique_id = $complex.data('unique-id'); if (unique_id === undefined) { return; } var $input = $complex.find(':input'), option_id = $complex.data('option-id'), obj = $input.serializeObjectDARKIFY(), data = (!$.isEmptyObject(obj) && obj[unique_id] && obj[unique_id][option_id]) ? obj[unique_id][option_id] : '', control = window.wp.customize.control(unique_id + '[' + option_id + ']'); // clear the value to force refresh. control.setting._value = null; control.setting.set(data); } else { $this.find(':input').first().trigger('change'); } $(document).trigger('darkify-customizer-refresh', $this); }); }; // // Customize Listen Form Elements // $.fn.darkify_customizer_listen = function (options) { var settings = $.extend({ closest: false, }, options); return this.each(function () { if (window.wp.customize === undefined) { return; } var $this = (settings.closest) ? $(this).closest('.darkify-customize-complex') : $(this), $input = $this.find(':input'), unique_id = $this.data('unique-id'), option_id = $this.data('option-id'); if (unique_id === undefined) { return; } $input.on('change keyup darkify.change', function () { var obj = $this.find(':input').serializeObjectDARKIFY(); var val = (!$.isEmptyObject(obj) && obj[unique_id] && obj[unique_id][option_id]) ? obj[unique_id][option_id] : ''; window.wp.customize.control(unique_id + '[' + option_id + ']').setting.set(val); }); }); }; // // Customizer Listener for Reload JS // $(document).on('expanded', '.control-section', function () { var $this = $(this); if ($this.hasClass('open') && !$this.data('inited')) { var $fields = $this.find('.darkify-customize-field'); var $complex = $this.find('.darkify-customize-complex'); if ($fields.length) { $this.darkify_dependency(); $fields.darkify_reload_script({ dependency: false }); $complex.darkify_customizer_listen(); } $this.data('inited', true); } }); // // Window on resize // DARKIFY.vars.$window.on('resize darkify.resize', DARKIFY.helper.debounce(function (event) { var window_width = navigator.userAgent.indexOf('AppleWebKit/') > -1 ? DARKIFY.vars.$window.width() : window.innerWidth; if (window_width <= 782 && !DARKIFY.vars.onloaded) { $('.darkify-section').darkify_reload_script(); DARKIFY.vars.onloaded = true; } }, 200)).trigger('darkify.resize'); // // Widgets Framework // $.fn.darkify_widgets = function () { return this.each(function () { $(document).on('widget-added widget-updated', function (event, $widget) { var $fields = $widget.find('.darkify-fields'); if ($fields.length) { $fields.darkify_reload_script(); } }); $(document).on('click', '.widget-top', function (event) { var $fields = $(this).parent().find('.darkify-fields'); if ($fields.length) { $fields.darkify_reload_script(); } }); $('.widgets-sortables, .control-section-sidebar').on('sortstop', function (event, ui) { ui.item.find('.darkify-fields').darkify_reload_script_retry(); }); }); }; // // Nav Menu Options Framework // $.fn.darkify_nav_menu = function () { return this.each(function () { var $navmenu = $(this); $navmenu.on('click', 'a.item-edit', function () { $(this).closest('li.menu-item').find('.darkify-fields').darkify_reload_script(); }); $navmenu.on('sortstop', function (event, ui) { ui.item.find('.darkify-fields').darkify_reload_script_retry(); }); }); }; // // Retry Plugins // $.fn.darkify_reload_script_retry = function () { return this.each(function () { var $this = $(this); if ($this.data('inited')) { $this.children('.darkify-field-wp_editor').darkify_field_wp_editor(); } }); }; // // Reload Plugins // $.fn.darkify_reload_script = function (options) { var settings = $.extend({ dependency: true, }, options); return this.each(function () { var $this = $(this); // Avoid for conflicts if (!$this.data('inited')) { // Field plugins $this.children('.darkify-field-accordion').darkify_field_accordion(); $this.children('.darkify-field-backup').darkify_field_backup(); $this.children('.darkify-field-background').darkify_field_background(); $this.children('.darkify-field-code_editor').darkify_field_code_editor(); $this.children('.darkify-field-date').darkify_field_date(); $this.children('.darkify-field-datetime').darkify_field_datetime(); $this.children('.darkify-field-fieldset').darkify_field_fieldset(); $this.children('.darkify-field-gallery').darkify_field_gallery(); $this.children('.darkify-field-group').darkify_field_group(); $this.children('.darkify-field-icon').darkify_field_icon(); $this.children('.darkify-field-link').darkify_field_link(); $this.children('.darkify-field-media').darkify_field_media(); $this.children('.darkify-field-map').darkify_field_map(); $this.children('.darkify-field-repeater').darkify_field_repeater(); $this.children('.darkify-field-slider').darkify_field_slider(); $this.children('.darkify-field-sortable').darkify_field_sortable(); $this.children('.darkify-field-sorter').darkify_field_sorter(); $this.children('.darkify-field-spinner').darkify_field_spinner(); $this.children('.darkify-field-switcher').darkify_field_switcher(); $this.children('.darkify-field-tabbed').darkify_field_tabbed(); $this.children('.darkify-field-typography').darkify_field_typography(); $this.children('.darkify-field-upload').darkify_field_upload(); $this.children('.darkify-field-wp_editor').darkify_field_wp_editor(); // Field colors $this.children('.darkify-field-border').find('.darkify-color').darkify_color(); $this.children('.darkify-field-background').find('.darkify-color').darkify_color(); $this.children('.darkify-field-color').find('.darkify-color').darkify_color(); $this.children('.darkify-field-color_group').find('.darkify-color').darkify_color(); $this.children('.darkify-field-link_color').find('.darkify-color').darkify_color(); $this.children('.darkify-field-typography').find('.darkify-color').darkify_color(); // Field chosenjs $this.children('.darkify-field-select').find('.darkify-chosen').darkify_chosen(); // Field Checkbox $this.children('.darkify-field-checkbox').find('.darkify-checkbox').darkify_checkbox(); $this.children('.darkify-field-checkbox').find('.darkify-checkbox-all').darkify_checkbox_all(); // Field Siblings $this.children('.darkify-field-button_set').find('.darkify-siblings').darkify_siblings(); $this.children('.darkify-field-image_select').find('.darkify-siblings').darkify_siblings(); $this.children('.darkify-field-layout_preset').find('.darkify-siblings').darkify_siblings(); $this.children('.darkify-field-palette').find('.darkify-siblings').darkify_siblings(); // Help Tooptip $this.children('.darkify-field').find('.darkify-help').darkify_help(); if (settings.dependency) { $this.darkify_dependency(); } $this.data('inited', true); $(document).trigger('darkify-reload-script', $this); } }); }; // // Document ready and run scripts // $(document).ready(function () { $('.darkify-save').darkify_save(); $('.darkify-options').darkify_options(); $('.darkify-sticky-header').darkify_sticky(); $('.darkify-nav-options').darkify_nav_options(); $('.darkify-nav-metabox').darkify_nav_metabox(); $('.darkify-taxonomy').darkify_taxonomy(); $('.darkify-page-templates').darkify_page_templates(); $('.darkify-post-formats').darkify_post_formats(); $('.darkify-shortcode').darkify_shortcode(); $('.darkify-search').darkify_search(); $('.darkify-confirm').darkify_confirm(); $('.darkify-expand-all').darkify_expand_all(); $('.darkify-onload').darkify_reload_script(); $('#widgets-editor').darkify_widgets(); $('#widgets-right').darkify_widgets(); $('#menu-to-edit').darkify_nav_menu(); }); })(jQuery, window, document); (function ($) { "use strict"; $(document).on("click", "#switcher_shortcode_copy", function (e) { e.preventDefault(); /* Get the text field */ $(this).siblings("#switcher_shortcode").select(); /* Select the text field */ document.execCommand("copy"); $(".switcher_shortcode_after_copy").animate( { opacity: 1, bottom: 25, }, 300 ); setTimeout(function () { jQuery(".switcher_shortcode_after_copy").animate( { opacity: 0, }, 200 ); jQuery(".switcher_shortcode_after_copy").animate( { bottom: 0, }, 0 ); }, 2000); }); // Disable Fields // $("select option:contains((Pro))").attr('disabled', true).css('opacity', '1') // Disable and style the switcher element $(".switcher_pro_only .darkify--switcher") .attr("disabled", "disabled") .addClass("only_pro_switcher") .css({ background: "#B0BCC4" }); // Apply common styling to elements with the 'only_pro_switcher' class $(".only_pro_switcher").css({ "pointer-events": "none", color: "#8796A1", position: "relative", }); // Pro only tag. $('.darkffy-pagination-type li:nth-child(n+2) input').attr('disabled', true) $("label:contains((Pro))").css({ 'pointer-events': 'none', 'opacity': '0.8', 'user-select': 'none' }) $("label:contains((Pro)) input").attr('disabled', true).css('opacity', '1') $("select option:contains((Pro))").attr('disabled', true).css('opacity', '1') })(jQuery);