Fix client side validation (#5088)
* Add data-request-validate to core save buttons * Check if client side validation is desired before running it Fixes #5076.
This commit is contained in:
parent
0c46209725
commit
655c8011b9
|
|
@ -11,6 +11,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
|
|||
|
|
@ -19,14 +19,16 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating')) ?>"
|
||||
class="btn btn-primary">
|
||||
<?= e(trans('backend::lang.form.create')) ?>
|
||||
</button>
|
||||
<button
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating')) ?>"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
@ -28,6 +29,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
|
|||
|
|
@ -19,14 +19,16 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating')) ?>"
|
||||
class="btn btn-primary">
|
||||
<?= e(trans('backend::lang.form.create')) ?>
|
||||
</button>
|
||||
<button
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating')) ?>"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
@ -28,6 +29,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating')) ?>"
|
||||
class="btn btn-primary">
|
||||
|
|
@ -28,6 +29,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating')) ?>"
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
@ -32,6 +33,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
@ -33,6 +34,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('cms::lang.theme.saving')) ?>"
|
||||
|
|
@ -28,6 +29,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('cms::lang.theme.saving')) ?>"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ if(window.jQuery.request!==undefined){throw new Error('The OctoberCMS framework
|
|||
+function($){"use strict";var Request=function(element,handler,options){var $el=this.$el=$(element);this.options=options||{};if(handler===undefined){throw new Error('The request handler name is not specified.')}
|
||||
if(!handler.match(/^(?:\w+\:{2})?on*/)){throw new Error('Invalid handler name. The correct handler name format is: "onEvent".')}
|
||||
var $form=options.form?$(options.form):$el.closest('form'),$triggerEl=!!$form.length?$form:$el,context={handler:handler,options:options}
|
||||
if(typeof document.createElement('input').reportValidity=='function'&&$form&&$form[0]&&!$form[0].checkValidity()){$form[0].reportValidity();return false;}
|
||||
if((options.validate!==undefined)&&typeof document.createElement('input').reportValidity=='function'&&$form&&$form[0]&&!$form[0].checkValidity()){$form[0].reportValidity();return false;}
|
||||
$el.trigger('ajaxSetup',[context])
|
||||
var _event=jQuery.Event('oc.beforeRequest')
|
||||
$triggerEl.trigger(_event,context)
|
||||
|
|
@ -103,7 +103,7 @@ return result.join('&')}
|
|||
var old=$.fn.request
|
||||
$.fn.request=function(handler,option){var args=arguments
|
||||
var $this=$(this).first()
|
||||
var data={evalBeforeUpdate:$this.data('request-before-update'),evalSuccess:$this.data('request-success'),evalError:$this.data('request-error'),evalComplete:$this.data('request-complete'),ajaxGlobal:$this.data('request-ajax-global'),confirm:$this.data('request-confirm'),redirect:$this.data('request-redirect'),loading:$this.data('request-loading'),flash:$this.data('request-flash'),files:$this.data('request-files'),form:$this.data('request-form'),url:$this.data('request-url'),update:paramToObj('data-request-update',$this.data('request-update')),data:paramToObj('data-request-data',$this.data('request-data'))}
|
||||
var data={evalBeforeUpdate:$this.data('request-before-update'),evalSuccess:$this.data('request-success'),evalError:$this.data('request-error'),evalComplete:$this.data('request-complete'),ajaxGlobal:$this.data('request-ajax-global'),confirm:$this.data('request-confirm'),redirect:$this.data('request-redirect'),loading:$this.data('request-loading'),flash:$this.data('request-flash'),files:$this.data('request-files'),validate:$this.data('request-validate'),form:$this.data('request-form'),url:$this.data('request-url'),update:paramToObj('data-request-update',$this.data('request-update')),data:paramToObj('data-request-data',$this.data('request-data'))}
|
||||
if(!handler)handler=$this.data('request')
|
||||
var options=$.extend(true,{},Request.DEFAULTS,data,typeof option=='object'&&option)
|
||||
return new Request($this,handler,options)}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ if(window.jQuery.request!==undefined){throw new Error('The OctoberCMS framework
|
|||
+function($){"use strict";var Request=function(element,handler,options){var $el=this.$el=$(element);this.options=options||{};if(handler===undefined){throw new Error('The request handler name is not specified.')}
|
||||
if(!handler.match(/^(?:\w+\:{2})?on*/)){throw new Error('Invalid handler name. The correct handler name format is: "onEvent".')}
|
||||
var $form=options.form?$(options.form):$el.closest('form'),$triggerEl=!!$form.length?$form:$el,context={handler:handler,options:options}
|
||||
if(typeof document.createElement('input').reportValidity=='function'&&$form&&$form[0]&&!$form[0].checkValidity()){$form[0].reportValidity();return false;}
|
||||
if((options.validate!==undefined)&&typeof document.createElement('input').reportValidity=='function'&&$form&&$form[0]&&!$form[0].checkValidity()){$form[0].reportValidity();return false;}
|
||||
$el.trigger('ajaxSetup',[context])
|
||||
var _event=jQuery.Event('oc.beforeRequest')
|
||||
$triggerEl.trigger(_event,context)
|
||||
|
|
@ -103,7 +103,7 @@ return result.join('&')}
|
|||
var old=$.fn.request
|
||||
$.fn.request=function(handler,option){var args=arguments
|
||||
var $this=$(this).first()
|
||||
var data={evalBeforeUpdate:$this.data('request-before-update'),evalSuccess:$this.data('request-success'),evalError:$this.data('request-error'),evalComplete:$this.data('request-complete'),ajaxGlobal:$this.data('request-ajax-global'),confirm:$this.data('request-confirm'),redirect:$this.data('request-redirect'),loading:$this.data('request-loading'),flash:$this.data('request-flash'),files:$this.data('request-files'),form:$this.data('request-form'),url:$this.data('request-url'),update:paramToObj('data-request-update',$this.data('request-update')),data:paramToObj('data-request-data',$this.data('request-data'))}
|
||||
var data={evalBeforeUpdate:$this.data('request-before-update'),evalSuccess:$this.data('request-success'),evalError:$this.data('request-error'),evalComplete:$this.data('request-complete'),ajaxGlobal:$this.data('request-ajax-global'),confirm:$this.data('request-confirm'),redirect:$this.data('request-redirect'),loading:$this.data('request-loading'),flash:$this.data('request-flash'),files:$this.data('request-files'),validate:$this.data('request-validate'),form:$this.data('request-form'),url:$this.data('request-url'),update:paramToObj('data-request-update',$this.data('request-update')),data:paramToObj('data-request-data',$this.data('request-data'))}
|
||||
if(!handler)handler=$this.data('request')
|
||||
var options=$.extend(true,{},Request.DEFAULTS,data,typeof option=='object'&&option)
|
||||
return new Request($this,handler,options)}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ if (window.jQuery.request !== undefined) {
|
|||
/*
|
||||
* Validate the form client-side
|
||||
*/
|
||||
if (typeof document.createElement('input').reportValidity == 'function' && $form && $form[0] && !$form[0].checkValidity()) {
|
||||
if ((options.validate !== undefined) && typeof document.createElement('input').reportValidity == 'function' && $form && $form[0] && !$form[0].checkValidity()) {
|
||||
$form[0].reportValidity();
|
||||
return false;
|
||||
}
|
||||
|
|
@ -446,6 +446,7 @@ if (window.jQuery.request !== undefined) {
|
|||
loading: $this.data('request-loading'),
|
||||
flash: $this.data('request-flash'),
|
||||
files: $this.data('request-files'),
|
||||
validate: $this.data('request-validate'),
|
||||
form: $this.data('request-form'),
|
||||
url: $this.data('request-url'),
|
||||
update: paramToObj('data-request-update', $this.data('request-update')),
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.creating_layout')) ?>"
|
||||
class="btn btn-primary">
|
||||
|
|
@ -26,6 +27,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.creating_layout')) ?>"
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.saving_layout')) ?>"
|
||||
|
|
@ -38,6 +39,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.saving_layout')) ?>"
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.creating_partial')) ?>"
|
||||
class="btn btn-primary">
|
||||
|
|
@ -26,6 +27,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.creating_partial')) ?>"
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.saving_layout')) ?>"
|
||||
|
|
@ -38,6 +39,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.saving_layout')) ?>"
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.creating')) ?>"
|
||||
class="btn btn-primary">
|
||||
|
|
@ -26,6 +27,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.creating')) ?>"
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.saving')) ?>"
|
||||
|
|
@ -38,6 +39,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('system::lang.mail_templates.saving')) ?>"
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
@ -20,6 +21,7 @@
|
|||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
|
|
|
|||
Loading…
Reference in New Issue