Skip to content
Snippets Groups Projects
Commit c7c1bc41 authored by Chris Hallberg's avatar Chris Hallberg
Browse files

Full documentation of lightbox.js code.

parent 490cc5c7
No related merge requests found
...@@ -130,10 +130,9 @@ function displayLightboxError(message) { ...@@ -130,10 +130,9 @@ function displayLightboxError(message) {
$('.icon-spinner').remove(); $('.icon-spinner').remove();
} }
/******************************/ /***********************************/
/* ====== GET LIGHTBOX ====== */ /* ====== LIGHTBOX REQUESTS ====== */
/******************************/ /***********************************/
/** /**
* This function creates an XHR request to the URL * This function creates an XHR request to the URL
* and handles the response according to the callbackStack. * and handles the response according to the callbackStack.
...@@ -190,10 +189,12 @@ function getLightbox(controller, action, get, post, callback, pop) { ...@@ -190,10 +189,12 @@ function getLightbox(controller, action, get, post, callback, pop) {
return getLightboxByUrl(url, post, callback, pop); return getLightboxByUrl(url, post, callback, pop);
} }
/****************************/ /**********************************/
/* ====== AJAX MAGIC ====== */ /* ====== FORM SUBMISSIONS ====== */
/****************************/ /**********************************/
// Submit a form via AJAX and show the result /**
* Call this function after a form is submitted
*/
function ajaxSubmit($form, callback) { function ajaxSubmit($form, callback) {
// Default callback is to close // Default callback is to close
if(!callback) { if(!callback) {
...@@ -257,7 +258,10 @@ function ajaxSubmit($form, callback) { ...@@ -257,7 +258,10 @@ function ajaxSubmit($form, callback) {
} }
$(this).find('.modal-body').html(vufindString.loading + "..."); $(this).find('.modal-body').html(vufindString.loading + "...");
} }
// AJAX action specifically for logging in (encrypted) /**
* Action specific form submissions
*/
// Logging in
function ajaxLogin(form) { function ajaxLogin(form) {
$.ajax({ $.ajax({
url: path + '/AJAX/JSON?method=getSalt', url: path + '/AJAX/JSON?method=getSalt',
...@@ -348,7 +352,7 @@ function ajaxLogin(form) { ...@@ -348,7 +352,7 @@ function ajaxLogin(form) {
} }
}); });
} }
// AJAX action specifically for the cart and its many submit buttons // Cart submission
function cartSubmit($form) { function cartSubmit($form) {
var submit = $form.find('input[type="submit"][clicked=true]').attr('name'); var submit = $form.find('input[type="submit"][clicked=true]').attr('name');
switch(submit) { switch(submit) {
...@@ -387,7 +391,11 @@ function cartSubmit($form) { ...@@ -387,7 +391,11 @@ function cartSubmit($form) {
/***********************/ /***********************/
/* ====== SETUP ====== */ /* ====== 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) { function registerModalEvents(modal) {
// New list // New list
$('#make-list').click(function() { $('#make-list').click(function() {
...@@ -412,13 +420,18 @@ function registerModalEvents(modal) { ...@@ -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) { function registerModalForms(modal) {
// Default
$(modal).find('form').submit(function(){ $(modal).find('form').submit(function(){
ajaxSubmit($(this), closeLightbox); ajaxSubmit($(this), closeLightbox);
return false; return false;
}); });
// Action specific
$(modal).find('form[name="cartForm"]').unbind('submit').submit(function(){ $(modal).find('form[name="cartForm"]').unbind('submit').submit(function(){
cartSubmit($(this)); cartSubmit($(this));
return false; return false;
...@@ -432,55 +445,54 @@ function registerModalForms(modal) { ...@@ -432,55 +445,54 @@ function registerModalForms(modal) {
return false; 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() { $(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 // Cart lightbox
$('#cartItems').click(function() { $('#cartItems').click(function() {
return getLightbox('Cart','Cart'); return getLightbox('Cart','Cart');
}); });
// Help links
$('.help-link').click(function() {
var split = this.href.split('=');
return getLightbox('Help','Home',{topic:split[1]});
});
// Hierarchy links // Hierarchy links
$('.hierarchyTreeLink a').click(function() { $('.hierarchyTreeLink a').click(function() {
var id = $(this).parent().parent().parent().find(".hiddenId")[0].value; var id = $(this).parent().parent().parent().find(".hiddenId")[0].value;
var hierarchyID = $(this).parent().find(".hiddenHierarchyId")[0].value; var hierarchyID = $(this).parent().find(".hiddenHierarchyId")[0].value;
return getLightbox('Record','AjaxTab',{id:id},{hierarchy:hierarchyID,tab:'HierarchyTree'}); 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 // Login link
$('#loginOptions a').click(function() { $('#loginOptions a').click(function() {
return getLightbox('MyResearch','Login',{},{'loggingin':true}); return getLightbox('MyResearch','Login',{},{'loggingin':true});
}); });
// Login link // Place a Hold
$('.logoutOptions a').click(function() { $('.placehold').click(function() {
return getLightbox('MyResearch','Logout',{},{}, function() { return getLightboxByUrl($(this).attr('href'));
closeLightbox();
alert('!');
}, false);
}); });
// 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 // Tag lightbox
$('#tagRecord').click(function() { $('#tagRecord').click(function() {
var id = $('.hiddenId')[0].value; var id = $('.hiddenId')[0].value;
var parts = this.href.split('/'); 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 title
$('.modal-link,.help-link').click(function() { $('.modal-link,.help-link').click(function() {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment