var e107 = e107 || {'settings': {}, 'behaviors': {}}; (function ($) { /** * Initializes click event on '.e-modal' elements. * * @type {{attach: e107.behaviors.eModalAdmin.attach}} */ e107.behaviors.eModalAdmin = { attach: function (context, settings) { $(context).find('.e-modal').once('e-modal-admin').each(function () { var $that = $(this); $that.on('click', function () { var $this = $(this); if($this.attr('data-cache') === 'false') { $('#uiModal').on('shown.bs.modal', function () { $(this).removeData('bs.modal'); }); } var url = $this.attr('href'); var caption = $this.attr('data-modal-caption'); var height = ($(window).height() * 0.7) - 120; var target = $this.attr('data-modal-target'); if(caption === undefined) { caption = ''; } if(target === undefined) { target = '#uiModal'; } if($this.attr('data-modal-close') === 'false') { $(target+' .modal-footer button[data-dismiss="modal"]').hide(); } $(target+' .modal-body').html('
'); $(target+' .modal-caption').html(caption + ' '); $(target+'.modal').modal('show'); $("#e-modal-iframe").on("load", function () { $('#e-modal-loading').hide(); if($this.attr('data-modal-submit')) { var buttonObj = $('#e-modal-iframe').contents().find('#etrigger-submit'); var buttonCaption = buttonObj.html(); // copy submit button caption from iframe form. if(!buttonCaption && buttonObj.val()) { buttonCaption = buttonObj.val(); // copy when it's an = maxlength ) { $('#'+ countID + ' span').text('0'); } else*/ { $('#'+ countID).show(); $('#'+ countID + ' span').text(maxlength - currentLength); } }); $('.e-count').focusout(function() { var countID = $(this).attr('id') + '-char-count'; $('#'+ countID).hide(); }) $('#e-modal-submit').click(function () { $('#e-modal-iframe').contents().find('#etrigger-submit').trigger('click'); var type = $(this).data('loading-icon'); var orig = $(this).text(); var caption = ""; caption += "" + orig + ""; $(this).html(caption); $('#e-modal-iframe').on('load', function(){ var buttonFound = $('#e-modal-iframe').contents().find('#etrigger-submit'); if(buttonFound.length === 0) // disable resubmitting if not button found after submit. { $('#e-modal-submit').fadeOut(1000); } $('#e-modal-submit').text(orig); // remove spinner. }); }); $('[data-dismiss="modal"]').click(function(){ // hide button for next modal popup usage. $('#e-modal-submit').hide(1000); }); $('form').h5Validate( { errorClass: 'has-error' } ); // allow older browsers to use html5 validation. // Change hash when a tab changes $('.nav-tabs a').on('shown', function (event) { var hash = event.target.href.toString().split('#')[1], form = $(event.target).parents('form')[0]; window.location.hash = '/' + hash; if(form) { $(form).attr('action', $(form).attr('action').split('#')[0] + '#/' + hash); } }); // tabs hash if(/^#\/\w+/.test(window.location.hash)) { var hash = window.location.hash.substr(2); if(hash.match('^tab')){ $('.nav-tabs a[href=#' + hash + ']').tab('show'); } } $('.e-typeahead').each( function(){ var id = $(this).attr("id"); var name = '#' + id.replace('-usersearch', ''); var newval = $(this).attr("data-value"); $(this).typeahead({ source: $(this).attr("data-source"), updater: function(text, type){ if(type === 'value') { $(name).val(text); } return text; } }); }); /* Switch to Tab containing invalid form field. */ $('input[type=submit],button[type=submit]').on('click', function() { var id = $(this).closest('form').attr('id'); var found = false; $('#'+id).find('input:invalid,select:invalid,textarea:invalid').each(function(index, node) { var tab = $('#'+node.id).closest('.tab-pane').attr('id'); if(tab && (found === false)) { $('a[href="#'+tab+'"]').tab('show'); found = true; // alert(node.id+' : '+tab + ' '.index); } // var label = $('label[for=' + node.id + ']'); }); return true; }); // run tips on title attribute. $(".e-tip").each(function() { var tip = $(this).attr('title'); if(!tip) { return; } var pos = $(this).attr('data-placement'); if(!pos) { pos = 'top'; } $(this).tooltip({opacity:1.0,fade:true, placement: pos}); // $(this).css( 'cursor', 'pointer' ) }); $("#uiModal").draggable({ handle: ".modal-header" }); $('div.e-container').editable({ selector: '.e-editable', params: function(params) { params.token = $(this).attr('data-token'); return params; }, display: function (value, sourceData) { // HTML entities decoding... fix for: // @see https://github.com/e107inc/e107/issues/2351 $.each(sourceData, function (index, element) { element.text = $("
").html(element.text).text(); sourceData[index] = element; }); // Display checklist as comma-separated values. var html = []; var checked = $.fn.editableutils.itemsByValue(value, sourceData); if(checked.length) { $.each(checked, function (i, v) { html.push($.fn.editableutils.escape(v.text)); }); $(this).html(html.join(', ')); } else { $(this).text(value); } } }); // $('.e-editable').editable(); // Fix for boostrap modal cache. // $('.modal').on('hidden',function(){ // $(this).removeData('.modal'); // $('#uiModal .modal-label').text('Loading'); // $('#uiModal .modal-body').html('default_body'); // }); $('body').on('hidden', '.modal', function () { $(this).removeData('modal'); $('#uiModal .modal-label').text('Loading...'); $('#uiModal .modal-body').html(' '); }); $('a[data-toggle="modal"]').on('click', function() { var link = $(this).attr('href'); var caption = $(this).attr('data-modal-caption'); var height = ($(window).height() * 0.9) - 50; $('#uiModal .modal-caption').text(caption); $('.modal').height(height); // $('#uiModal .modal-label').text('Loading...'); // $('#uiModal .modal-body').html(link); // alert(caption); } ); $('button[data-loading-text],a[data-loading-text]').on('click', function() { var caption = $(this).attr('data-loading-text'); $(this).removeClass('btn-success'); $(this).removeClass('btn-primary'); $(this).html(caption); if($(this).attr('data-disable') == 'true') { $(this).attr('disabled', 'disabled'); } return true; } ); $('input[data-loading-text]').on('click', function() { var caption = $(this).attr('data-loading-text'); $(this).val(caption); $(this).removeClass('btn-success'); $(this).removeClass('btn-primary'); //$(this).attr('disabled', 'disabled').val(caption); return true; } ); $('a[data-toggle-sidebar], .e-toggle-sidebar').on('click', function(e) { e.preventDefault(); if ($(".is-table-row").hasClass("admin-left-panel-collapsed")) { $(".is-table-row").toggleClass("admin-left-panel-collapsed"); } else { $(".is-table-row").toggleClass("admin-left-panel-collapsed"); } var tmp = $(".is-table-row").hasClass("admin-left-panel-collapsed"); if(tmp === true) { var toggleStatus = 'closed'; } else { var toggleStatus = 'open'; } document.cookie = 'e107_adminLeftPanel = ' + toggleStatus +'; path=/; expires = 1; samesite=strict'; }); /* InfoPanel Comment approval and deletion */ $(document).on("click", "button[data-comment-action]", function(){ var url = $(this).attr("data-target"); var action = $(this).attr('data-comment-action'); var id = $(this).attr("data-comment-id"); var next = $('#comment-'+ id).nextAll('.hide').attr("id"); $.ajax({ type: 'POST', url: url + '?ajax_used=1&mode='+action, data: { itemid: id }, success: function(data) { var a = $.parseJSON(data); // alert(data); if(!a.error) { $('#comment-'+ id).hide(800, function () { $('#'+next).show('slow'); $('#'+next).removeClass('hide'); }); } } }); return false; }); var progresspump = null; $('.e-progress-cancel').on('click', function(e) { clearInterval(progresspump); var target = $(this).attr('data-progress-target'); $("#"+target).closest('.progress').removeClass("active"); progresspump = null; alert('stopped'); }); $('.e-progress').on('click', function(e) { // alert('Process Started'); var target = $(this).attr('data-progress-target'); var script = $(this).attr('data-progress'); var show = $(this).attr('data-progress-show'); var hide = $(this).attr('data-progress-hide'); var mode = $(this).attr('data-progress-mode'); var interval = $(this).attr('data-progress-interval'); if(interval === undefined) { interval = 1000; } $("#"+target).css('width','1%'); // so we know it's running. progresspump = setInterval(function(){ $.get(script, { mode: mode }).done( function(data){ // alert(data); $("#"+target).css('width', data+'%'); // update the progress bar width */ $("#"+target).html(data+'%'); // display the numeric value */ data = parseInt(data); if(data > 99.999) { clearInterval(progresspump); $("#"+target).closest('.progress').removeClass("active"); if(hide !== 'undefined') { $('#'+hide).hide(); } if(show !== 'undefined') { $('#'+show).show('slow'); } $("#"+target).html("Done"); } }); }, interval); }); /* $('a[data-toggle="modal"]').on('click', function() { $(this).removeData('modal'); $('#uiModal .modal-header').text($(this).attr('title')); var link = $(this).attr('href'); alert(link); $('#uiModal .modal-body').html( 'table' ); //return false; return this; $('#uiModal .modal-body').load(link, function(response, status, xhr) { if (status === 'error') { //console.log('got here'); $('#uiModal .modal-body').html('

Oh boy

Sorry, but there was an error:' + xhr.status + ' ' + xhr.statusText+ '

'); } return false; return this; } ) }); */ $('.e-noclick').click(function(e) { e.stopPropagation(); }); // BC Compatible $("select.tbox").each(function() { var multi = $(this).attr('multiple'); var tagName = $(this).attr('name'); if(multi === undefined) { // $(this).selectpicker(); // causes HTML5 validation alert to be hidden. return; } else { $(this).multiselect({ buttonClass: 'btn btn-default', buttonText: function(options) { if (options.length == 0) { return '(Optional) '; // send empty value to server so value is saved. } else if (options.length > 5) { return options.length + ' selected '; } else { var selected = ''; options.each(function() { selected += $(this).text() + ', '; }); return selected.substr(0, selected.length -2) + ' '; } }, }); } /* optionLabel: function(element) { return $(element).html() + '(' + $(element).val() + ')'; }*/ }); // $(".e-spinner").spinner(); //FIXME breaks tooltips etc. $(document).on("click", ".e-alert", function(){ var message = $(this).html(); alert(message); $("#uiAlert").val(message); $("#uiAlert").alert(); $("#uiAlert").fadeIn('slow'); window.setTimeout(function() { $("#uiAlert").alert('close'); }, 4000); }); $(".e-radio-multi").each(function() { // $(this).nextAll(".field-help").hide(); // $(this).nextAll(":input").tipsy({title: 'hello'}); }); // $(".e-tags").tag(); // Decorate $(".adminlist tr:even").addClass("even"); $(".adminlist tr:odd").addClass("odd"); $(".adminlist tr:first").addClass("first"); $(".adminlist tr:last").addClass("last"); // Admin Prefs Navigation $(".plugin-navigation a").click(function () { $(".plugin-navigation a").each(function(index) { var ot = $(this).attr("href"); if (ot.split('#')[1]) { $(ot).hide().removeClass('e-hideme'); } $(this).closest("li").removeClass("active"); $(this).switchClass( "link-active", "link", 0 ); }); var id = $(this).attr("href"), hash = id.split('#')[1], form = $('.admin-menu')[0]; // FIXME - a better way to detect the page form $(this).switchClass( "link", "link-active", 30 ); $(this).closest("li").addClass("active"); // 'remember' the active navigation pane if(hash) { $(id).removeClass('e-hideme').show({ effect: "slide" }); window.location.hash = 'nav-' + hash; if(form) { // $(form).attr('action', $(form).attr('action').split('#')[0] + '#nav-' + hash); // breaks menu-manager nav. } return false; } }); // plugin navigation hash if(/^#nav-+/.test(window.location.hash)) { $("a[href='" + window.location.hash.replace('nav-', '') + "']").click(); } // backend /* $(".e-password").pwdMeter({ minLength: 6, displayGeneratePassword: true, generatePassText: "Generate", randomPassLength: 12 });*/ // Sorting var fixHelper = function(e, ui) { ui.closest("tr").switchClass( "odd", "highlight-odd e-sort", 0 ); ui.closest("tr").switchClass( "even", "highlight-even e-sort", 0 ); ui.children().each(function() { $(this).width($(this).width()); // $(this).closest("tr").switchClass( "odd", "highlight-odd", 0 ); // $(this).closest("tr").switchClass( "even", "highlight-even", 0 ); }); return ui; }; $("#e-sort").sortable({ helper: fixHelper, cursor: "move", opacity: 0.9, handle: ".e-sort", distance: 20, containment: "parent", stop: function(e,ui) { var allItems = $(this).sortable("toArray"); var newSortValue = allItems.indexOf( $(ui.item).attr("id") ); // alert($(ui.item).attr("id") + " was moved to index " + newSortValue); $(".highlight-even").switchClass( "highlight-even", "even", 600 ); $(".highlight-odd").switchClass( "highlight-odd", "odd", 600 ); $("tr.e-sort").removeClass( "e-sort"); }, update: function(event, ui) { var allItems = $(this).sortable("toArray"); // console.log(allItems); var neworder = allItems.indexOf( $(ui.item).attr("id") ); var linkid = $(ui.item).attr("id"); // $("td").removeClass("e-moving","slow"); var script = $(".sort-trigger:first").attr("data-target"); $.ajax({ type: "POST", url: script, data: { all: allItems, linkid: linkid, neworder: neworder } // data: { linkid: linkid, neworder: neworder } }).done(function( msg ) { // alert("Posted: "+allItems+" Updated: "+ msg ); }); } }); // }).disableSelection(); // causes issue with admin->users drop-down selection. // Check ALl Button $("#e-check-all").click(function(){ $('input[type="checkbox"]').attr("checked", "checked"); }); // Uncheck all button. $("#e-uncheck-all").click(function(){ $('input[type="checkbox"]').removeAttr("checked"); }); // Check-All checkbox toggle $("input.toggle-all").click(function(evt) { var selector = 'input[type="checkbox"].checkbox'; if($(this).val().indexOf('jstarget:') === 0) { selector = 'input[type="checkbox"][name^="' + $(this).val().split(/jstarget\:/)[1] + '"]'; } if($(this).is(":checked")){ //$(selector).attr("checked", "checked"); $(selector).prop('checked', true); } else{ $(selector).prop('checked',false); // $(selector).removeAttr("checked"); } }); $("ul.col-selection input[type='checkbox']").click(function(evt){ if(this.checked) { $(this).closest("label").addClass( "active", 0 ); // $(this).closest("tr.even").switchClass( "even", "highlight-even", 50 ); } else { $(this).closest("label").removeClass( "active", 0 ); } }); // highlight checked row $(".adminlist input[type='checkbox']").click(function(evt){ if(this.checked) { $(this).closest("tr.odd").switchClass( "odd", "highlight-odd", 50 ); $(this).closest("tr.even").switchClass( "even", "highlight-even", 50 ); } else { $(this).closest("tr.highlight-odd").switchClass( "highlight-odd", "odd", 300 ); $(this).closest("tr.highlight-even").switchClass( "highlight-even", "even", 300 ); } }); // Basic Delete Confirmation /* $('input.delete,button.delete,a[data-confirm]').click(function(){ answer = confirm($(this).attr("data-confirm")); return answer; // answer is a boolean }); */ $(".e-confirm").click(function(){ answer = confirm($(this).attr("title")); return answer; // answer is a boolean }); // see boot.php for main processing. (works only in admin) $(".e-sef-generate").click(function(){ src = $(this).attr("data-src"); target = $(this).attr("data-target"); toconvert = $('#'+src).val(); script = window.location; confirmation = $(this).attr("data-sef-generate-confirm"); targetLength = $('#'+target).val().length ; if(confirmation !== undefined && targetLength > 0) { answer = confirm(confirmation); if(answer === false) { return; } } $.ajax({ type: "POST", url: script, data: { source: toconvert, mode: 'sef' } }).done(function( data ) { var a = $.parseJSON(data); // alert(a.converted); if(a.converted) { $('#'+target).val(a.converted); // $('#uiAlert').notify({ // type: 'success', // message: { text: 'Completed' }, // fadeOut: { enabled: true, delay: 2000 } // }).show(); } }); }); $('body').on('slid.bs.carousel', '.carousel', function(){ var label = $(this).find('.carousel-item.active').attr('data-label'); var id = $(this).attr('id') + '-index'; // admin-ui-carousel-index etc. if(label !== undefined) { $('#'+id).text(label); } else { var currentIndex = $(this).find('.active').index(); var text = (currentIndex + 1); $('#'+id).text(text); } // this takes commented content for each carousel slide and enables it, one slide at a time as we scroll. $(this).find('.item').each(function(index, node) { var content = $(this).contents(); var item = content[0]; if(item.nodeType === 8) // commented code @see e_media::browserCarousel() using '