From c7c1bc41a55623bd95f1657e1119116650ed6a35 Mon Sep 17 00:00:00 2001 From: Chris Hallberg <crhallberg@gmail.com> Date: Wed, 11 Dec 2013 16:18:36 -0500 Subject: [PATCH] Full documentation of lightbox.js code. --- themes/bootstrap/js/lightbox.js | 96 ++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 42 deletions(-) diff --git a/themes/bootstrap/js/lightbox.js b/themes/bootstrap/js/lightbox.js index 7736f813d06..9d30579be54 100644 --- a/themes/bootstrap/js/lightbox.js +++ b/themes/bootstrap/js/lightbox.js @@ -130,10 +130,9 @@ function displayLightboxError(message) { $('.icon-spinner').remove(); } -/******************************/ -/* ====== GET LIGHTBOX ====== */ -/******************************/ - +/***********************************/ +/* ====== LIGHTBOX REQUESTS ====== */ +/***********************************/ /** * This function creates an XHR request to the URL * and handles the response according to the callbackStack. @@ -190,10 +189,12 @@ function getLightbox(controller, action, get, post, callback, pop) { return getLightboxByUrl(url, post, callback, pop); } -/****************************/ -/* ====== AJAX MAGIC ====== */ -/****************************/ -// Submit a form via AJAX and show the result +/**********************************/ +/* ====== FORM SUBMISSIONS ====== */ +/**********************************/ +/** + * Call this function after a form is submitted + */ function ajaxSubmit($form, callback) { // Default callback is to close if(!callback) { @@ -257,7 +258,10 @@ function ajaxSubmit($form, callback) { } $(this).find('.modal-body').html(vufindString.loading + "..."); } -// AJAX action specifically for logging in (encrypted) +/** + * Action specific form submissions + */ +// Logging in function ajaxLogin(form) { $.ajax({ url: path + '/AJAX/JSON?method=getSalt', @@ -348,7 +352,7 @@ function ajaxLogin(form) { } }); } -// AJAX action specifically for the cart and its many submit buttons +// Cart submission function cartSubmit($form) { var submit = $form.find('input[type="submit"][clicked=true]').attr('name'); switch(submit) { @@ -387,7 +391,11 @@ function cartSubmit($form) { /***********************/ /* ====== SETUP ====== */ /***********************/ -// Checkbox actions and link hijacking +/** + * The jQueries add functionality to content in the lightbox. + * + * It is called every time the lightbox is finished loading. + */ function registerModalEvents(modal) { // New list $('#make-list').click(function() { @@ -412,13 +420,18 @@ function registerModalEvents(modal) { } }); } -// Prevent forms from submitting in the lightbox -// Go through AJAX instead +/** + * Prevents default submission, reroutes through ajaxSubmit + * + * Called everytime the lightbox is loaded. + */ function registerModalForms(modal) { + // Default $(modal).find('form').submit(function(){ ajaxSubmit($(this), closeLightbox); return false; }); + // Action specific $(modal).find('form[name="cartForm"]').unbind('submit').submit(function(){ cartSubmit($(this)); return false; @@ -432,55 +445,54 @@ function registerModalForms(modal) { return false; }); } -// Default lightbox behaviour -// Tell links to open lightboxes +/** + * This is where you add click events to open the lightbox. + * We do it here so that non-JS users still have a good time. + */ $(document).ready(function() { - // Hijack modal forms - $('#modal').on('show', function() { - registerModalForms(this); - registerModalEvents(this); - }); - // Reset Content - $('#modal').on('hidden', function() { - closeLightboxActions(); - }); - /* --- MODAL LINK EVENTS --- */ - // Save record links - $('.save-record').click(function() { - var parts = this.href.split('/'); - return getLightbox(parts[parts.length-3],'Save',{id:$(this).attr('id')}); - }); // Cart lightbox $('#cartItems').click(function() { return getLightbox('Cart','Cart'); }); + // Help links + $('.help-link').click(function() { + var split = this.href.split('='); + return getLightbox('Help','Home',{topic:split[1]}); + }); // Hierarchy links $('.hierarchyTreeLink a').click(function() { var id = $(this).parent().parent().parent().find(".hiddenId")[0].value; var hierarchyID = $(this).parent().find(".hiddenHierarchyId")[0].value; return getLightbox('Record','AjaxTab',{id:id},{hierarchy:hierarchyID,tab:'HierarchyTree'}); }); - // Help links - $('.help-link').click(function() { - var split = this.href.split('='); - return getLightbox('Help','Home',{topic:split[1]}); - }); // Login link $('#loginOptions a').click(function() { return getLightbox('MyResearch','Login',{},{'loggingin':true}); }); - // Login link - $('.logoutOptions a').click(function() { - return getLightbox('MyResearch','Logout',{},{}, function() { - closeLightbox(); - alert('!'); - }, false); + // Place a Hold + $('.placehold').click(function() { + return getLightboxByUrl($(this).attr('href')); }); + // Save record links + $('.save-record').click(function() { + var parts = this.href.split('/'); + return getLightbox(parts[parts.length-3],'Save',{id:$(this).attr('id')}); + }); // Tag lightbox $('#tagRecord').click(function() { var id = $('.hiddenId')[0].value; var parts = this.href.split('/'); - return getLightbox(parts[parts.length-3], 'AddTag', {id:id}); + return getLightbox(parts[parts.length-3],'AddTag',{id:id}); + }); + /* --- LIGHTBOX BEHAVIOUR --- */ + // Hijack modal forms + $('#modal').on('show', function() { + registerModalForms(this); + registerModalEvents(this); + }); + // Reset Content + $('#modal').on('hidden', function() { + closeLightboxActions(); }); // Modal title $('.modal-link,.help-link').click(function() { -- GitLab