From 916f42f8e5bd6c2656d1ac2b61994d6d36fef96d Mon Sep 17 00:00:00 2001
From: Chris Hallberg <crhallberg@gmail.com>
Date: Mon, 14 Mar 2016 12:19:57 -0400
Subject: [PATCH] Lightbox.js line endings.

---
 themes/bootstrap3/js/lightbox.js | 594 +++++++++++++++----------------
 1 file changed, 297 insertions(+), 297 deletions(-)

diff --git a/themes/bootstrap3/js/lightbox.js b/themes/bootstrap3/js/lightbox.js
index 516984a823a..7d341194410 100644
--- a/themes/bootstrap3/js/lightbox.js
+++ b/themes/bootstrap3/js/lightbox.js
@@ -1,304 +1,304 @@
-/*global $, document, Event, VuFind, window */
-VuFind.lightbox = (function() {
-  // State
-  var _originalUrl = false;
-  var _currentUrl = false;
-  var refreshOnClose = false;
-  // Elements
-  var _modal, _modalBody, _clickedButton = null;
-  // Utilities
-  var _html = function(html) {
-    _modalBody.html(html);
-    _modal.modal('handleUpdate');
-  };
-  // Public: Present an alert
-  var showAlert = function(message, type) {
-    if ('undefined' == typeof type) {
-      type = 'info';
-    }
-    _html('<div class="alert alert-'+type+'">'+message+'</div>\
-    <button class="btn btn-default" data-dismiss="modal">' + VuFind.translate('close') + '</button>');
-    _modal.modal('show');
-  };
-  var flashMessage = function(message, type) {
-    _modalBody.find('.alert,.fa.fa-spinner').remove();
-    _modalBody.find('h2:first-child')
-      .after('<div class="alert alert-'+type+'">'+message+'</div>');
-  };
-
-  /**
-   * Update content
-   * 
-   * Form data options:
-   *
-   * data-lightbox-ignore = do not submit this form in lightbox
-   */
-  var _update = function(html) {
-    if (!html.match) return;
-    // Isolate successes
-    var htmlDiv = $('<div>'+html+'</div>');
-    var alerts = htmlDiv.find('.alert-success');
-    if (alerts.length > 0) {
-      showAlert(alerts[0].innerHTML, 'success');
-      return;
-    }
-    // Deframe HTML
-    if (html.match('<!DOCTYPE html>')) {
-      html = htmlDiv.find('.main > .container').html();
-    }
-    // Fill HTML
-    _html(html);
-    _modal.modal('show');
-    // Attach capturing events
-    _modalBody.find('a').click(_constrainLink);
-    // Handle submit buttons attached to a form as well as those in a form. Store 
-    // information about which button was clicked here as checking focused button 
-    // doesn't work on all browsers and platforms.
-    _modalBody.find('[type=submit]').click(_storeClickedStatus);
-    
-    var forms = _modalBody.find('form:not([data-lightbox-ignore])');
-    for (var i=0;i<forms.length;i++) {
-      $(forms[i]).on('submit', _formSubmit);
-    }
-    // Select all checkboxes
-    $('#modal').find('.checkbox-select-all').change(function() {
-      $(this).closest('.modal-body').find('.checkbox-select-item').prop('checked', this.checked);
-    });
-    $('#modal').find('.checkbox-select-item').change(function() {
-      $(this).closest('.modal-body').find('.checkbox-select-all').prop('checked', false);
-    });
-  };
-
-  var _storeClickedStatus = function() {
-    _clickedButton = this;
-  };    
-  
-  var _xhr = false;
-  // Public: Handle AJAX in the Lightbox
-  var ajax = function(obj) {
-    if (_xhr !== false) return;
-    if (_originalUrl === false) {
-      _originalUrl = obj.url;
-    }
-    // Add lightbox GET parameter
-    if (!obj.url.match(/layout=lightbox/)) {
-      var parts = obj.url.split('#');
-      obj.url = parts[0].indexOf('?') < 0
-        ? parts[0]+'?'
-        : parts[0]+'&';
-      obj.url += 'layout=lightbox&lbreferer='+encodeURIComponent(_currentUrl);
-      obj.url += parts.length < 2 ? '' : '#'+parts[1];
-    }
-    _xhr = $.ajax(obj);
-    _xhr.always(function() { _xhr = false; })
-      .done(function(html, status, jq_xhr) {
-        if (jq_xhr.status == 205) {
-          _refreshPage();
-          return;
-        }
-        if ( // Close the lightbox after deliberate login
-          obj.method                           // is a form
-          && !html.match(/alert alert-danger/) // skip failed logins
-          && (obj.url.match(/MyResearch/)      // that matches login/create account
-          || obj.url.match(/catalogLogin/))    // catalog login for holds
-        ) {
-          if (_originalUrl.match(/UserLogin/) || obj.url.match(/catalogLogin/)) {
-            var event = new CustomEvent('VuFind.lightbox.login', {
-              detail: {
-                originalUrl: _originalUrl,
-                formUrl: obj.url
-              },
-              bubbles: true,
-              cancelable: true
-            });
-            if (document.dispatchEvent(event)) {
-              _refreshPage();
-            }
-            return false;
-          } else {
-            VuFind.lightbox.refreshOnClose = true;
-          }
-        }
-        _update(html);
-      })
-      .fail(function() {
-        showAlert(VuFind.translate('error_occurred'), 'danger');  
-      });
-    return _xhr;
-  };
-  var reload = function() {
-    ajax({url:_currentUrl || _originalUrl});
-  };
-
-  /**
-   * Modal link data options
-   *
+/*global $, document, Event, VuFind, window */
+VuFind.lightbox = (function() {
+  // State
+  var _originalUrl = false;
+  var _currentUrl = false;
+  var refreshOnClose = false;
+  // Elements
+  var _modal, _modalBody, _clickedButton = null;
+  // Utilities
+  var _html = function(html) {
+    _modalBody.html(html);
+    _modal.modal('handleUpdate');
+  };
+  // Public: Present an alert
+  var showAlert = function(message, type) {
+    if ('undefined' == typeof type) {
+      type = 'info';
+    }
+    _html('<div class="alert alert-'+type+'">'+message+'</div>\
+    <button class="btn btn-default" data-dismiss="modal">' + VuFind.translate('close') + '</button>');
+    _modal.modal('show');
+  };
+  var flashMessage = function(message, type) {
+    _modalBody.find('.alert,.fa.fa-spinner').remove();
+    _modalBody.find('h2:first-child')
+      .after('<div class="alert alert-'+type+'">'+message+'</div>');
+  };
+
+  /**
+   * Update content
+   *
+   * Form data options:
+   *
+   * data-lightbox-ignore = do not submit this form in lightbox
+   */
+  var _update = function(html) {
+    if (!html.match) return;
+    // Isolate successes
+    var htmlDiv = $('<div>'+html+'</div>');
+    var alerts = htmlDiv.find('.alert-success');
+    if (alerts.length > 0) {
+      showAlert(alerts[0].innerHTML, 'success');
+      return;
+    }
+    // Deframe HTML
+    if (html.match('<!DOCTYPE html>')) {
+      html = htmlDiv.find('.main > .container').html();
+    }
+    // Fill HTML
+    _html(html);
+    _modal.modal('show');
+    // Attach capturing events
+    _modalBody.find('a').click(_constrainLink);
+    // Handle submit buttons attached to a form as well as those in a form. Store
+    // information about which button was clicked here as checking focused button
+    // doesn't work on all browsers and platforms.
+    _modalBody.find('[type=submit]').click(_storeClickedStatus);
+
+    var forms = _modalBody.find('form:not([data-lightbox-ignore])');
+    for (var i=0;i<forms.length;i++) {
+      $(forms[i]).on('submit', _formSubmit);
+    }
+    // Select all checkboxes
+    $('#modal').find('.checkbox-select-all').change(function() {
+      $(this).closest('.modal-body').find('.checkbox-select-item').prop('checked', this.checked);
+    });
+    $('#modal').find('.checkbox-select-item').change(function() {
+      $(this).closest('.modal-body').find('.checkbox-select-all').prop('checked', false);
+    });
+  };
+
+  var _storeClickedStatus = function() {
+    _clickedButton = this;
+  };
+
+  var _xhr = false;
+  // Public: Handle AJAX in the Lightbox
+  var ajax = function(obj) {
+    if (_xhr !== false) return;
+    if (_originalUrl === false) {
+      _originalUrl = obj.url;
+    }
+    // Add lightbox GET parameter
+    if (!obj.url.match(/layout=lightbox/)) {
+      var parts = obj.url.split('#');
+      obj.url = parts[0].indexOf('?') < 0
+        ? parts[0]+'?'
+        : parts[0]+'&';
+      obj.url += 'layout=lightbox&lbreferer='+encodeURIComponent(_currentUrl);
+      obj.url += parts.length < 2 ? '' : '#'+parts[1];
+    }
+    _xhr = $.ajax(obj);
+    _xhr.always(function() { _xhr = false; })
+      .done(function(html, status, jq_xhr) {
+        if (jq_xhr.status == 205) {
+          _refreshPage();
+          return;
+        }
+        if ( // Close the lightbox after deliberate login
+          obj.method                           // is a form
+          && !html.match(/alert alert-danger/) // skip failed logins
+          && (obj.url.match(/MyResearch/)      // that matches login/create account
+          || obj.url.match(/catalogLogin/))    // catalog login for holds
+        ) {
+          if (_originalUrl.match(/UserLogin/) || obj.url.match(/catalogLogin/)) {
+            var event = new CustomEvent('VuFind.lightbox.login', {
+              detail: {
+                originalUrl: _originalUrl,
+                formUrl: obj.url
+              },
+              bubbles: true,
+              cancelable: true
+            });
+            if (document.dispatchEvent(event)) {
+              _refreshPage();
+            }
+            return false;
+          } else {
+            VuFind.lightbox.refreshOnClose = true;
+          }
+        }
+        _update(html);
+      })
+      .fail(function() {
+        showAlert(VuFind.translate('error_occurred'), 'danger');
+      });
+    return _xhr;
+  };
+  var reload = function() {
+    ajax({url:_currentUrl || _originalUrl});
+  };
+
+  /**
+   * Modal link data options
+   *
    * data-lightbox-href = go to this url instead
    * data-lightbox-ignore = do not open this link in lightbox
-   * data-lightbox-post = post data
-   */
-  var _constrainLink = function(event) {
-    if (typeof this.dataset.lightboxIgnore != 'undefined') {
-      return true;
-    }
-    if (this.href.length > 1) {
+   * data-lightbox-post = post data
+   */
+  var _constrainLink = function(event) {
+    if (typeof this.dataset.lightboxIgnore != 'undefined') {
+      return true;
+    }
+    if (this.href.length > 1) {
       event.preventDefault();
       var obj = {url: this.dataset.lightboxHref || this.href};
       if("string" === typeof this.dataset.lightboxPost) {
         obj.type = 'POST';
         obj.data = this.dataset.lightboxPost;
-      }
-      ajax(obj);
-      _currentUrl = this.href;
-      VuFind.modal('show');
-      return false;
-    }
-  };
-
-  /**
-   * Handle form submission.
-   * 
-   * Form data options:
-   *
-   * data-lightbox-onsubmit = on submit, run named function
-   * data-lightbox-onclose  = on close, run named function
-   * 
-   * Submit button data options:
-   * 
-   * data-lightbox-ignore = do not handle clicking this button in lightbox
-   */
-  var _formSubmit = function(event) {
-    // Gather data
-    var form = event.target;
-    var dataset = form.dataset;
-    var data = $(form).serializeArray();
-    data.push({'name':'layout', 'value':'lightbox'}); // Return in lightbox, please
-    // Add submit button information
-    var submit = $(_clickedButton);
-    _clickedButton = null;
-    if (submit.length > 0) {
-      if (typeof submit.data('lightbox-ignore') !== 'undefined') {
-        return true;  
-      }
-      // Prevent multiple submission of submit button in lightbox
-      if (submit.closest(_modal).length > 0) {
-        submit.attr('disabled', 'disabled');
-      }
-      var name = submit.attr('name') ? submit.attr('name') : 'submit';
-      data.push({'name':name, 'value':submit.attr('value') || 1});
-    }
-    // Special handlers
-    if ('undefined' !== typeof dataset) {
-      // On submit behavior
-      if ('string' === typeof dataset.lightboxOnsubmit) {
-        var ret = _evalCallback(dataset.lightboxOnsubmit, event, data);
-        // return true or false to send that to the form
-        // return null or anything else to continue to the ajax
-        if (ret === false || ret === true) {
-          return ret;
-        }
-      }
-      // onclose behavior
-      if ('string' === typeof dataset.lightboxOnclose) {
-        document.addEventListener('VuFind.lightbox.closed', function(event) {
-          _evalCallback(dataset.lightboxOnclose, event);  
-        }, false);
-      }
-    }
-    // Loading
-    _modalBody.prepend('<i class="fa fa-spinner fa-spin pull-right"></i>');
-    // Get Lightbox content
-    ajax({
-      url: form.action || _currentUrl,
-      method: form.method || 'GET',
-      data: data
-    });
-
-    VuFind.modal('show');
-    return false;
-  };
-
-  /**
-   * Evaluate a callback 
-   */
-  var _evalCallback = function(callback, event, data) {
-    if ('function' === typeof window[callback]) {
-      return window[callback](event, data);
-    } else {
-      return eval('(function(event, data) {' + callback + '}())'); // inline code  
-    }
-  };
-  
-  /**
-   * Reload the page without causing trouble with POST parameters while keeping hash
-   */
-  var _refreshPage = function() {
-    var parts = window.location.href.split('#');
-    if (typeof parts[1] === 'undefined') {
-      window.location.href = window.location.href;  
-    } else {
-      var href = parts[0];
-      // Force reload with a timestamp
-      href += href.indexOf('?') == -1 ? '?_=' : '&_=';
-      href += new Date().getTime() + '#' + parts[1];
-      window.location.href = href;
-    }
-  };
-  
-  // Public: Attach listeners to the page
-  var bind = function(target) {
-    if ('undefined' === typeof target) {
-      target = document;
-    }
-    $(target).find('a[data-lightbox]')
-      .unbind('click', _constrainLink)
-      .on('click', _constrainLink);
-    $(target).find('form[data-lightbox]')
-      .unbind('submit', _formSubmit)
-      .on('submit', _formSubmit);
-    
-    // Handle submit buttons attached to a form as well as those in a form. Store 
-    // information about which button was clicked here as checking focused button 
-    // doesn't work on all browsers and platforms.
-    $('form[data-lightbox] [type=submit]').click(_storeClickedStatus);
-  };
-
-  // Reveal
-  return {
-    // Properties
-    refreshOnClose: refreshOnClose,
-
-    // Methods
-    ajax: ajax,
-    alert: showAlert,
-    bind: bind,
-    flashMessage: flashMessage,
-    reload: reload,
-    reset:  function() {
-      _html(VuFind.translate('loading') + '...');
-      _originalUrl = false;
-      _currentUrl = false;
-    },
-
-    // Ready
-    ready: function() {
-      _modal = $('#modal');
-      _modalBody = _modal.find('.modal-body');
-      _modal.on('hide.bs.modal', function() {
-        if (VuFind.lightbox.refreshOnClose) {
-          _refreshPage();
-        }
-        document.dispatchEvent(new Event('VuFind.lightbox.closing'));
-      });
-      _modal.on('hidden.bs.modal', function() {
-        document.dispatchEvent(new Event('VuFind.lightbox.closed'));
-        VuFind.lightbox.reset();
-      });
-
-      VuFind.modal = function(cmd) { _modal.modal(cmd); };
-      bind();
-    }
-  };
-})();
-
-$(document).ready(VuFind.lightbox.ready);
+      }
+      ajax(obj);
+      _currentUrl = this.href;
+      VuFind.modal('show');
+      return false;
+    }
+  };
+
+  /**
+   * Handle form submission.
+   *
+   * Form data options:
+   *
+   * data-lightbox-onsubmit = on submit, run named function
+   * data-lightbox-onclose  = on close, run named function
+   *
+   * Submit button data options:
+   *
+   * data-lightbox-ignore = do not handle clicking this button in lightbox
+   */
+  var _formSubmit = function(event) {
+    // Gather data
+    var form = event.target;
+    var dataset = form.dataset;
+    var data = $(form).serializeArray();
+    data.push({'name':'layout', 'value':'lightbox'}); // Return in lightbox, please
+    // Add submit button information
+    var submit = $(_clickedButton);
+    _clickedButton = null;
+    if (submit.length > 0) {
+      if (typeof submit.data('lightbox-ignore') !== 'undefined') {
+        return true;
+      }
+      // Prevent multiple submission of submit button in lightbox
+      if (submit.closest(_modal).length > 0) {
+        submit.attr('disabled', 'disabled');
+      }
+      var name = submit.attr('name') ? submit.attr('name') : 'submit';
+      data.push({'name':name, 'value':submit.attr('value') || 1});
+    }
+    // Special handlers
+    if ('undefined' !== typeof dataset) {
+      // On submit behavior
+      if ('string' === typeof dataset.lightboxOnsubmit) {
+        var ret = _evalCallback(dataset.lightboxOnsubmit, event, data);
+        // return true or false to send that to the form
+        // return null or anything else to continue to the ajax
+        if (ret === false || ret === true) {
+          return ret;
+        }
+      }
+      // onclose behavior
+      if ('string' === typeof dataset.lightboxOnclose) {
+        document.addEventListener('VuFind.lightbox.closed', function(event) {
+          _evalCallback(dataset.lightboxOnclose, event);
+        }, false);
+      }
+    }
+    // Loading
+    _modalBody.prepend('<i class="fa fa-spinner fa-spin pull-right"></i>');
+    // Get Lightbox content
+    ajax({
+      url: form.action || _currentUrl,
+      method: form.method || 'GET',
+      data: data
+    });
+
+    VuFind.modal('show');
+    return false;
+  };
+
+  /**
+   * Evaluate a callback
+   */
+  var _evalCallback = function(callback, event, data) {
+    if ('function' === typeof window[callback]) {
+      return window[callback](event, data);
+    } else {
+      return eval('(function(event, data) {' + callback + '}())'); // inline code
+    }
+  };
+
+  /**
+   * Reload the page without causing trouble with POST parameters while keeping hash
+   */
+  var _refreshPage = function() {
+    var parts = window.location.href.split('#');
+    if (typeof parts[1] === 'undefined') {
+      window.location.href = window.location.href;
+    } else {
+      var href = parts[0];
+      // Force reload with a timestamp
+      href += href.indexOf('?') == -1 ? '?_=' : '&_=';
+      href += new Date().getTime() + '#' + parts[1];
+      window.location.href = href;
+    }
+  };
+
+  // Public: Attach listeners to the page
+  var bind = function(target) {
+    if ('undefined' === typeof target) {
+      target = document;
+    }
+    $(target).find('a[data-lightbox]')
+      .unbind('click', _constrainLink)
+      .on('click', _constrainLink);
+    $(target).find('form[data-lightbox]')
+      .unbind('submit', _formSubmit)
+      .on('submit', _formSubmit);
+
+    // Handle submit buttons attached to a form as well as those in a form. Store
+    // information about which button was clicked here as checking focused button
+    // doesn't work on all browsers and platforms.
+    $('form[data-lightbox] [type=submit]').click(_storeClickedStatus);
+  };
+
+  // Reveal
+  return {
+    // Properties
+    refreshOnClose: refreshOnClose,
+
+    // Methods
+    ajax: ajax,
+    alert: showAlert,
+    bind: bind,
+    flashMessage: flashMessage,
+    reload: reload,
+    reset:  function() {
+      _html(VuFind.translate('loading') + '...');
+      _originalUrl = false;
+      _currentUrl = false;
+    },
+
+    // Ready
+    ready: function() {
+      _modal = $('#modal');
+      _modalBody = _modal.find('.modal-body');
+      _modal.on('hide.bs.modal', function() {
+        if (VuFind.lightbox.refreshOnClose) {
+          _refreshPage();
+        }
+        document.dispatchEvent(new Event('VuFind.lightbox.closing'));
+      });
+      _modal.on('hidden.bs.modal', function() {
+        document.dispatchEvent(new Event('VuFind.lightbox.closed'));
+        VuFind.lightbox.reset();
+      });
+
+      VuFind.modal = function(cmd) { _modal.modal(cmd); };
+      bind();
+    }
+  };
+})();
+
+$(document).ready(VuFind.lightbox.ready);
-- 
GitLab