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:
Luke Towers 2020-05-25 12:53:48 -06:00 committed by GitHub
parent 0c46209725
commit 655c8011b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 40 additions and 7 deletions

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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)}

View File

@ -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)}

View File

@ -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')),

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"

View File

@ -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')) ?>"