1507 var target = null; |
1509 var target = null; |
1508 if (submit_options && submit_options.initSubmitTarget) { |
1510 if (submit_options && submit_options.initSubmitTarget) { |
1509 ams.executeFunctionByName(submit_options.initSubmitTarget, form); |
1511 ams.executeFunctionByName(submit_options.initSubmitTarget, form); |
1510 } else { |
1512 } else { |
1511 if (data.amsFormInitSubmitTarget) { |
1513 if (data.amsFormInitSubmitTarget) { |
1512 target = $(buttonTarget || data.amsFormSubmitTarget || '#content'); |
1514 target = $(button_target || data.amsFormSubmitTarget || '#content'); |
1513 ams.executeFunctionByName(data.amsFormInitSubmit || 'MyAMS.form.initSubmit', form, target); |
1515 ams.executeFunctionByName(data.amsFormInitSubmit || 'MyAMS.form.initSubmit', form, target); |
1514 } else if (!data.amsFormHideSubmitFooter) { |
1516 } else if (!data.amsFormHideSubmitFooter) { |
1515 ams.executeFunctionByName(data.amsFormInitSubmit || 'MyAMS.form.initSubmitFooter', form); |
1517 ams.executeFunctionByName(data.amsFormInitSubmit || 'MyAMS.form.initSubmitFooter', form); |
1516 } |
1518 } |
1517 } |
1519 } |
1520 if (submit_options) { |
1522 if (submit_options) { |
1521 form_data = $.extend({}, form_data, submit_options.form_data); |
1523 form_data = $.extend({}, form_data, submit_options.form_data); |
1522 } |
1524 } |
1523 |
1525 |
1524 // Check progress handler |
1526 // Check progress handler |
|
1527 var hasUpload; |
1525 if (progress_handler) { |
1528 if (progress_handler) { |
1526 form_data.progress_id = ams.generateUUID(); |
1529 form_data.progress_id = ams.generateUUID(); |
1527 } else { |
1530 } else { |
1528 // Check progress meter via Apache progress module |
1531 // Check progress meter via Apache progress module |
1529 var hasUpload = typeof(options.uuid) !== 'undefined'; |
1532 hasUpload = typeof(options.uuid) !== 'undefined'; |
1530 if (hasUpload) { |
1533 if (hasUpload) { |
1531 if (url.indexOf('X-Progress-ID') < 0) { |
1534 if (url.indexOf('X-Progress-ID') < 0) { |
1532 url += "?X-Progress-ID=" + options.uuid; |
1535 url += "?X-Progress-ID=" + options.uuid; |
1533 } |
1536 } |
1534 delete options.uuid; |
1537 delete options.uuid; |
1552 }, |
1555 }, |
1553 error: function(request, status, error, form) { |
1556 error: function(request, status, error, form) { |
1554 if (target) { |
1557 if (target) { |
1555 ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target); |
1558 ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target); |
1556 } |
1559 } |
1557 if (form.is(':visible')) { |
1560 ams.form.resetAfterSubmit(form); |
1558 var button = form.data('ams-submit-button'); |
|
1559 if (button) { |
|
1560 button.button('reset'); |
|
1561 } |
|
1562 ams.form.finalizeSubmitFooter.call(form); |
|
1563 } |
|
1564 form.data('submitted', false); |
|
1565 form.removeData('ams-submit-button'); |
|
1566 }, |
1561 }, |
1567 iframe: hasUpload |
1562 iframe: hasUpload |
1568 }; |
1563 }; |
1569 |
1564 |
1570 // Initialize IFrame for custom download target |
1565 // Initialize IFrame for custom download target |
1593 callback = ams.getFunctionByName(data.amsFormSubmitCallback) || ams.form._submitCallback; |
1588 callback = ams.getFunctionByName(data.amsFormSubmitCallback) || ams.form._submitCallback; |
1594 } |
1589 } |
1595 try { |
1590 try { |
1596 callback.call(form, result, status, request, form); |
1591 callback.call(form, result, status, request, form); |
1597 } finally { |
1592 } finally { |
1598 if (form.is(':visible') && button) { |
1593 ams.form.resetAfterSubmit(form); |
1599 button.button('reset'); |
|
1600 } |
|
1601 form.data('submitted', false); |
|
1602 form.removeData('ams-submit-button'); |
|
1603 ams.form.resetChanged(form); |
1594 ams.form.resetChanged(form); |
1604 } |
1595 } |
1605 } |
1596 } |
1606 } |
1597 } |
1607 }); |
1598 }); |
1609 defaults = $.extend({}, defaults, { |
1600 defaults = $.extend({}, defaults, { |
1610 error: function(request, status, error, form) { |
1601 error: function(request, status, error, form) { |
1611 if (target) { |
1602 if (target) { |
1612 ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target); |
1603 ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target); |
1613 } |
1604 } |
1614 if (form.is(':visible')) { |
1605 ams.form.resetAfterSubmit(form); |
1615 var button = form.data('ams-submit-button'); |
|
1616 if (button) { |
|
1617 button.button('reset'); |
|
1618 } |
|
1619 ams.form.finalizeSubmitFooter.call(form); |
|
1620 } |
|
1621 form.data('submitted', false); |
|
1622 form.removeData('ams-submit-button'); |
|
1623 }, |
1606 }, |
1624 success: function(result, status, request, form) { |
1607 success: function(result, status, request, form) { |
1625 var callback; |
1608 var callback; |
1626 var button = form.data('ams-submit-button'); |
1609 var button = form.data('ams-submit-button'); |
1627 if (button) { |
1610 if (button) { |
1631 callback = ams.getFunctionByName(data.amsFormSubmitCallback) || ams.form._submitCallback; |
1614 callback = ams.getFunctionByName(data.amsFormSubmitCallback) || ams.form._submitCallback; |
1632 } |
1615 } |
1633 try { |
1616 try { |
1634 callback.call(form, result, status, request, form); |
1617 callback.call(form, result, status, request, form); |
1635 } finally { |
1618 } finally { |
1636 if (form.is(':visible') && button) { |
1619 ams.form.resetAfterSubmit(form); |
1637 button.button('reset'); |
|
1638 } |
|
1639 form.data('submitted', false); |
|
1640 form.removeData('ams-submit-button'); |
|
1641 ams.form.resetChanged(form); |
1620 ams.form.resetChanged(form); |
1642 } |
1621 } |
1643 }, |
1622 }, |
1644 iframe: hasUpload |
1623 iframe: hasUpload |
1645 }); |
1624 }); |
1655 $(form).ajaxSubmit(settings); |
1634 $(form).ajaxSubmit(settings); |
1656 |
1635 |
1657 // If external download target is specified, reset form submit button and footer |
1636 // If external download target is specified, reset form submit button and footer |
1658 if (download_target) { |
1637 if (download_target) { |
1659 var modal = $(form).parents('.modal-dialog'); |
1638 var modal = $(form).parents('.modal-dialog'); |
1660 var keep_modal = modal.exists() && button && button.data('ams-keep-modal'); |
1639 var keep_modal = modal.exists() && button.exists() && button.data('ams-keep-modal'); |
1661 if (keep_modal !== true) { |
1640 if (modal.exists() && (keep_modal !== true)) { |
1662 ams.dialog.close(form); |
1641 ams.dialog.close(form); |
1663 } else { |
1642 } else { |
1664 setTimeout(function() { |
1643 setTimeout(function() { |
1665 ams.form.finalizeSubmitFooter.call(form); |
1644 ams.form.resetAfterSubmit(form, button); |
1666 if (button) { |
|
1667 button.button('reset'); |
|
1668 } |
|
1669 form.data('submitted', false); |
|
1670 form.removeData('ams-submit-button'); |
|
1671 ams.form.resetChanged(form); |
1645 ams.form.resetChanged(form); |
1672 }, button.data('ams-form-reset-timeout') || 2000); |
1646 }, button.data('ams-form-reset-timeout') || 2000); |
1673 } |
1647 } |
1674 } |
1648 } |
1675 } |
1649 } |
1713 $(target).html('<div class="row margin-20"><div class="text-center">' + spin + '</div></div>'); |
1687 $(target).html('<div class="row margin-20"><div class="text-center">' + spin + '</div></div>'); |
1714 $(target).parents('.hidden').removeClass('hidden'); |
1688 $(target).parents('.hidden').removeClass('hidden'); |
1715 }, |
1689 }, |
1716 |
1690 |
1717 /** |
1691 /** |
|
1692 * Reset form status after submit |
|
1693 * |
|
1694 * @param form: the submitted form |
|
1695 */ |
|
1696 resetAfterSubmit: function(form) { |
|
1697 if (form.is(':visible')) { |
|
1698 var button = form.data('ams-submit-button'); |
|
1699 if (button) { |
|
1700 button.button('reset'); |
|
1701 } |
|
1702 ams.form.finalizeSubmitFooter.call(form); |
|
1703 } |
|
1704 form.data('submitted', false); |
|
1705 form.removeData('ams-submit-button'); |
|
1706 }, |
|
1707 |
|
1708 /** |
1718 * Finalize AJAX submit call |
1709 * Finalize AJAX submit call |
1719 * |
1710 * |
1720 * @param target: the form submit container target |
1711 * @param target: the form submit container target |
1721 */ |
1712 */ |
1722 finalizeSubmitOnError: function(target) { |
1713 finalizeSubmitOnError: function(target) { |
4453 ams.form.setFocus(container); |
4448 ams.form.setFocus(container); |
4454 } |
4449 } |
4455 if (options && options.afterLoadCallback) { |
4450 if (options && options.afterLoadCallback) { |
4456 ams.executeFunctionByName(options.afterLoadCallback, this); |
4451 ams.executeFunctionByName(options.afterLoadCallback, this); |
4457 } |
4452 } |
|
4453 ams.stats.logPageview(); |
4458 } |
4454 } |
4459 }, |
4455 }, |
4460 error: function(request, options, error) { |
4456 error: function(request, options, error) { |
4461 container.html('<h3 class="error"><i class="fa fa-warning txt-color-orangeDark"></i> ' + |
4457 container.html('<h3 class="error"><i class="fa fa-warning txt-color-orangeDark"></i> ' + |
4462 ams.i18n.ERROR + error + '</h3>' + |
4458 ams.i18n.ERROR + error + '</h3>' + |
4780 } |
4787 } |
4781 } |
4788 } |
4782 }); |
4789 }); |
4783 $(document).on('click', 'a[target="_blank"]', function(e) { |
4790 $(document).on('click', 'a[target="_blank"]', function(e) { |
4784 e.preventDefault(); |
4791 e.preventDefault(); |
4785 window.open($(e.currentTarget).attr('href')); |
4792 var target = $(e.currentTarget); |
|
4793 window.open(target.attr('href')); |
|
4794 ams.stats.logEvent(target.data('ams-stats-category') || 'Navigation', |
|
4795 target.data('ams-stats-action') || 'External', |
|
4796 target.data('ams-stats-label') || target.attr('href')); |
4786 }); |
4797 }); |
4787 $(document).on('click', 'a[target="_top"]', function(e) { |
4798 $(document).on('click', 'a[target="_top"]', function(e) { |
4788 e.preventDefault(); |
4799 e.preventDefault(); |
4789 ams.form.confirmChangedForm(function() { |
4800 ams.form.confirmChangedForm(function() { |
4790 window.location = $(e.currentTarget).attr('href'); |
4801 window.location = $(e.currentTarget).attr('href'); |