Nigel Banks
11 years ago
3 changed files with 91 additions and 61 deletions
@ -1,54 +0,0 @@
|
||||
/** |
||||
* @file |
||||
* Adds some spinny goodness user-feedback after the user clicks Ingest. |
||||
*/ |
||||
|
||||
(function ($) { |
||||
function islandora_start_ingest_feedback() { |
||||
$('#islandora-ingest-form').after('<div id="islandora_is_working"><div>' + |
||||
Drupal.t('Please be patient while the the page loads.') + |
||||
'</div></div>'); |
||||
|
||||
var opts = { |
||||
lines: 10,
|
||||
length: 20, |
||||
width: 10,
|
||||
radius: 30, |
||||
corners: 1, |
||||
rotate: 0,
|
||||
direction: 1, |
||||
color: '#000', |
||||
speed: 1,
|
||||
trail: 60, |
||||
shadow: false, |
||||
hwaccel: false, |
||||
className: 'spinner', |
||||
zIndex: 2e9,
|
||||
top: 'auto',
|
||||
left: 'auto'
|
||||
}; |
||||
var target = document.getElementById('islandora_is_working'); |
||||
var spinner = new Spinner(opts).spin(target); |
||||
// Don't want to do this in Safari, can't submit after form errors.
|
||||
if (!(navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1)) { |
||||
$('#edit-next').hide(); |
||||
$('#edit-prev').hide(); |
||||
} |
||||
} |
||||
|
||||
Drupal.behaviors.islandoraIngestingObject = { |
||||
attach: function(context, settings) { |
||||
// Safari is having issues with stalling JS execution that was preventing this from running.
|
||||
if (navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) { |
||||
$('#edit-next').one('mousedown', function() { |
||||
islandora_start_ingest_feedback() |
||||
}); |
||||
} |
||||
else { |
||||
$('#islandora-ingest-form').one('submit', function() { |
||||
islandora_start_ingest_feedback() |
||||
}); |
||||
} |
||||
} |
||||
}; |
||||
})(jQuery); |
@ -0,0 +1,54 @@
|
||||
/** |
||||
* @file |
||||
* Triggers the display of a spinning icon when the form is submitted. |
||||
*/ |
||||
(function ($) { |
||||
|
||||
Drupal.behaviors.spinner = { |
||||
attach: function(context, settings) { |
||||
// Store what triggered the submit.
|
||||
$('form').once('submit-resolver', function() { |
||||
$(this).click(function(event) { |
||||
$(this).data('clicked', $(event.target)); |
||||
}); |
||||
$(this).keypress(function(event) { |
||||
// On enter the first submit button is assumed as is most often the
|
||||
// case and this is part of the HTML 5 specification, although some
|
||||
// Browsers may choose the button with the lowest tab-index.
|
||||
if (event.which == 13) { |
||||
$(this).data('clicked', $(':submit', this).first()); |
||||
} |
||||
}); |
||||
}); |
||||
for (var base in settings.spinner) { |
||||
var id = '#' + base; |
||||
$(id, context).once('spinner', function () { |
||||
var spinner = new Spinner(settings.spinner[base].opts); |
||||
$(id).parents('form').one('submit', function(event) { |
||||
if ($(this).data('clicked').is(id)) { |
||||
event.preventDefault(); |
||||
// Add Message.
|
||||
var message = $('<div/>').text(settings.spinner[base].message); |
||||
$(id).after(message); |
||||
// Activate Spinner
|
||||
spinner.spin(this); |
||||
// Submit the form after a set timeout, this handles problems with
|
||||
// safari, in that safari submit's immediately..
|
||||
$(':submit').attr('disabled', 'disabled'); |
||||
setTimeout(function() { |
||||
// Allow for the button to be clicked, then click it then
|
||||
// prevent the default behavoir.
|
||||
$(id).removeAttr('disabled') |
||||
.click() |
||||
.click(function(event) { |
||||
event.preventDefault(); |
||||
}); |
||||
}, 500); |
||||
} |
||||
return true; |
||||
}); |
||||
}); |
||||
} |
||||
} |
||||
}; |
||||
})(jQuery); |
Loading…
Reference in new issue