/* global $ */ var e107 = e107 || {'settings': {}, 'behaviors': {}}; (function ($) { // In case the page was opened with a hash, prevent jumping to it. // http://stackoverflow.com/questions/3659072/how-to-disable-anchor-jump-when-loading-a-page if(window.location.hash) { $('html, body').stop().animate({scrollTop: 0}); } /** * Behavior to initialize Smooth Scrolling on document, if URL has a fragment. * TODO: create theme option on the admin panel to: * - enable/disable smooth scrolling * - change animation duration * - set top-offset if theme has a fixed top navigation bar * * @type {{attach: Function}} */ e107.behaviors.initializeSmoothScrolling = { attach: function (context, settings) { if(window.location.hash && e107.callbacks.isValidSelector(window.location.hash)) { $(context).find('body').one('initialize-smooth-scrolling').each(function () { if($(window.location.hash).length !== 0) { $('html, body').stop().animate({ scrollTop: $(window.location.hash).offset().top }, 2000); return false; } }); } } }; /** * Initializes click event on '.e-modal' elements. * * @type {{attach: e107.behaviors.eModalFront.attach}} */ e107.behaviors.eModalFront = { attach: function (context, settings) { $(context).find('.e-modal').one('e-modal-front').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 backdrop = $this.attr('data-modal-backdrop'); var keyboard = $this.attr('data-modal-keyboard'); var height = ($(window).height() * 0.7) - 120; var modalOptions = {show: true}; if(backdrop !== undefined) { modalOptions['backdrop'] = backdrop; } if(keyboard !== undefined) { modalOptions['keyboard'] = keyboard; } if(caption === undefined) { caption = ''; } if($this.attr('data-modal-height') !== undefined) { height = $(this).attr('data-modal-height'); } $('#uiModal .modal-body').html('
'); $('#uiModal .modal-caption').html(caption + ' '); $('#uiModal.modal').modal(modalOptions); $("#e-modal-iframe").on("load", function () { $('#e-modal-loading').hide(); }); return false; }); }); } }; })(jQuery); $(document).ready(function() { if (typeof tooltip === "function") { $(":input").tooltip(); } /* $(":input,label,.e-tip").each(function() { var field = $(this).nextAll(".field-help"); if(field.length == 0) { $(this).tooltip({placement: 'right',fade: true}); // Normal 'title' attribute return; } field.hide(); $(this).tooltip({ title: function() { return field.html(); // field-help when HTML is required. }, fade: true, live: true, html: true, placement: 'right' }); }); */ // var color = $(".divider").parents().css("background-color"); // $(".e-tip").tipsy({gravity: 'sw',fade: true, live: true}); $(document).on("click", ".e-comment-submit", function(){ var url = $(this).attr("data-target"); var sort = $(this).attr("data-sort"); var pid = parseInt($(this).attr("data-pid")); var formid = (pid != '0') ? "#e-comment-form-reply" : "#e-comment-form"; var data = $('form'+formid).serializeArray() ; var total = parseInt($("#e-comment-total").text()); var container = '#' + $(this).attr("data-container"); var input = '#' + $(this).attr("data-input"); //TODO replace _POST['comment'] with $(input).val() so we can rename 'comment' in the form to something unique. $.ajax({ type: 'POST', url: url + '?ajax_used=1&mode=submit', data: data, success: function(data) { // alert(data); // console.log(data); var a = $.parseJSON(data); $(input).val(''); if(pid != 0) { $('#comment-'+pid).after(a.html).hide().slideDown(800); } else if(sort == 'desc') { $(container).prepend(a.html).hide().slideDown(800); // FIXME - works in jquery 1.7, not 1.8 } else { $(container).append(a.html).hide().slideDown(800); // FIXME - works in jquery 1.7, not 1.8 alert('Thank you for commenting'); // possibly needed as the submission may go unoticed by the user } if(!a.error) { $("#e-comment-total").text(total + 1); if(pid != '0') { $(formid).hide(); } } else { alert(a.msg); } return false; } }); return false; }); $(document).on("click", ".e-comment-reply", function(){ var url = $(this).attr("data-target"); var table = $(this).attr("data-type"); var sp = $(this).attr('id').split("-"); var id = "#comment-" + sp[3]; var present = $('#e-comment-form-reply'); // console.log(present); if($('.e-comment-edit-save').length !== 0 || $('#e-comment-form-reply').length !== 0 ) //prevent creating save button twice. { return false; } $.ajax({ type: 'POST', url: url + '?ajax_used=1&mode=reply', data: { itemid: sp[3], table: table }, success: function(data) { // alert(url); var a = $.parseJSON(data); if(!a.error) { // alert(a.html); $(id).after(a.html).hide().slideDown(800); } } }); return false; }); $(document).on("click", ".e-comment-edit", function(){ var url = $(this).attr("data-target"); var sp = $(this).attr('id').split("-"); var id = "#comment-" + sp[3] + "-edit"; if($('.e-comment-edit-save').length != 0) //prevent creating save button twice. { return false; } $(id).attr('contentEditable',true); $(id).after("
"); $('div.e-comment-edit-save').hide().fadeIn(800); $(id).addClass("e-comment-edit-active"); $(id).focus(); return false; }); $(document).on("click", "input.e-comment-edit-save", function(){ var url = $(this).attr("data-target"); var sp = $(this).attr('id').split("-"); var id = "#comment-" + sp[4] + "-edit"; var comment = $(id).text(); $(id).attr('contentEditable',false); $.ajax({ url: url + '?ajax_used=1&mode=edit', type: 'POST', data: { comment: comment, itemid: sp[4] }, success:function (data) { var a = $.parseJSON(data); if(!a.error) { $("div.e-comment-edit-save") .hide() .addClass("alert alert-success e-comment-edit-success") .html(a.msg) .fadeIn('slow') .delay(1500) .fadeOut(2000); } else { $("div.e-comment-edit-save") .addClass("alert alert-danger e-comment-edit-error") .html(a.msg) .fadeIn('slow') .delay(1500) .fadeOut('slow'); } $(id).removeClass("e-comment-edit-active"); setTimeout(function() { $('div.e-comment-edit-save').remove(); }, 2000); // .delay(1000); // alert(data); return; } }); }); $(document).on("click", ".e-comment-delete", function(){ var url = $(this).attr("data-target"); var table = $(this).attr("data-type"); var itemid = $(this).attr("data-itemid"); var sp = $(this).attr('id').split("-"); var id = "#comment-" + sp[3]; var total = parseInt($("#e-comment-total").text()); $.ajax({ type: 'POST', url: url + '?ajax_used=1&mode=delete', data: { id: sp[3], itemid: itemid, table: table }, success: function(data) { var a = $.parseJSON(data); if(!a.error) { $(id).hide('slow'); $("#e-comment-total").text(total - 1); } } }); return false; }); $(document).on("click", ".e-comment-approve", function() { var url = $(this).attr("data-target"); var sp = $(this).attr('id').split("-"); var id = "#comment-status-" + sp[3]; $.ajax({ type: 'POST', url: url + '?ajax_used=1&mode=approve', data: { itemid: sp[3] }, success: function(data) { var a = $.parseJSON(data); if(!a.error) { //TODO modify status of html on page $(id).text(a.html) .fadeIn('slow') .addClass('e-comment-edit-success'); //TODO another class? $('#e-comment-approve-'+sp[3]).hide('slow'); } else { alert(a.msg); } } }); return false; }); $(document).on("click", ".e-rate-thumb", function(){ var src = $(this).attr("href"); var thumb = $(this); var tmp = src.split('#'); var id = tmp[1]; var src = tmp[0]; $.ajax({ type: "POST", url: src, data: { ajax_used: 1, mode: 'thumb' }, dataType: "html", success: function(html) { if(html === '') { return false; } var tmp = html.split('|'); up= tmp[0]; down = tmp[1]; $('#'+id +'-up').text(up); $('#'+id +'-down').text(down); thumb.attr('title','Thanks for voting'); // alert('Thanks for liking'); } }); return false; }); /* Switch to Tab containing invalid form field. */ $('input[type=submit],button[type=submit]').on('click', function() { var id = $(this).closest('form').attr('id'), found = false; $('#'+ id).find(':invalid').each(function (index, node) { var tab = $('#'+node.id).closest('.tab-pane').attr('id'); // console.log(node.id); if(tab && (found === false)) { $('a[href="#'+tab+'"]').tab('show'); found = true; } }); return true; }); });