1
0
mirror of https://github.com/e107inc/e107.git synced 2025-01-17 12:48:24 +01:00
php-e107/e107_web/js/core/front.jquery.js

472 lines
11 KiB
JavaScript

/* 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('<div><iframe id="e-modal-iframe" width="100%" height="' + height + 'px" frameborder="0" scrolling="auto" style="display:block;" allowtransparency="true" allowfullscreen src="' + url + '"></iframe></div>');
$('#uiModal .modal-caption').html(caption + ' <i id="e-modal-loading" class="fa fa-spin fa-spinner"></i>');
$('#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 class='e-comment-edit-save'><input data-target='"+url+"' id='e-comment-edit-save-"+sp[3]+"' class='button btn btn-success e-comment-edit-save' type='button' value='Save' /></div>");
$('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;
});
});