2015-06-08 14:04:39 +00:00
/ * *
2017-05-19 22:12:53 +00:00
* DO NOT EDIT THIS FILE .
* See the following change record for more information ,
2017-05-23 14:30:14 +00:00
* https : //www.drupal.org/node/2815083
2017-05-19 22:12:53 +00:00
* @ preserve
* * /
2020-01-30 09:08:38 +00:00
2020-06-02 23:10:25 +00:00
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _unsupportedIterableToArray ( arr ) || _nonIterableSpread ( ) ; }
2020-01-30 09:08:38 +00:00
2020-06-02 23:10:25 +00:00
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
2020-01-30 09:08:38 +00:00
2020-06-02 23:10:25 +00:00
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
2020-01-30 09:08:38 +00:00
2020-06-02 23:10:25 +00:00
function _iterableToArray ( iter ) { if ( typeof Symbol !== "undefined" && Symbol . iterator in Object ( iter ) ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) return _arrayLikeToArray ( arr ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) { arr2 [ i ] = arr [ i ] ; } return arr2 ; }
2015-06-08 14:04:39 +00:00
2013-09-21 23:39:42 +00:00
( function ( $ , window , Drupal , drupalSettings ) {
2014-01-27 21:41:32 +00:00
Drupal . behaviors . AJAX = {
2017-05-19 22:12:53 +00:00
attach : function attach ( context , settings ) {
2014-01-27 21:41:32 +00:00
function loadAjaxBehavior ( base ) {
2017-12-03 16:16:29 +00:00
var elementSettings = settings . ajax [ base ] ;
2020-01-30 09:08:38 +00:00
2017-12-03 16:16:29 +00:00
if ( typeof elementSettings . selector === 'undefined' ) {
2020-01-30 09:08:38 +00:00
elementSettings . selector = "#" . concat ( base ) ;
2014-01-27 21:41:32 +00:00
}
2020-01-30 09:08:38 +00:00
2017-12-03 16:16:29 +00:00
$ ( elementSettings . selector ) . once ( 'drupal-ajax' ) . each ( function ( ) {
elementSettings . element = this ;
elementSettings . base = base ;
Drupal . ajax ( elementSettings ) ;
2014-01-27 21:41:32 +00:00
} ) ;
2009-08-17 07:12:16 +00:00
}
2018-01-03 23:25:46 +00:00
Object . keys ( settings . ajax || { } ) . forEach ( function ( base ) {
return loadAjaxBehavior ( base ) ;
} ) ;
2017-10-16 22:15:27 +00:00
Drupal . ajax . bindAjaxLinks ( document . body ) ;
2015-03-23 10:29:17 +00:00
$ ( '.use-ajax-submit' ) . once ( 'ajax' ) . each ( function ( ) {
2017-12-03 16:16:29 +00:00
var elementSettings = { } ;
elementSettings . url = $ ( this . form ) . attr ( 'action' ) ;
elementSettings . setClick = true ;
elementSettings . event = 'click' ;
2020-01-30 09:08:38 +00:00
elementSettings . progress = {
type : 'throbber'
} ;
2017-12-03 16:16:29 +00:00
elementSettings . base = $ ( this ) . attr ( 'id' ) ;
elementSettings . element = this ;
Drupal . ajax ( elementSettings ) ;
2014-01-27 21:41:32 +00:00
} ) ;
2016-02-22 02:20:13 +00:00
} ,
2017-05-19 22:12:53 +00:00
detach : function detach ( context , settings , trigger ) {
2016-02-22 02:20:13 +00:00
if ( trigger === 'unload' ) {
Drupal . ajax . expired ( ) . forEach ( function ( instance ) {
Drupal . ajax . instances [ instance . instanceIndex ] = null ;
} ) ;
}
2010-09-22 21:01:39 +00:00
}
2009-08-17 07:12:16 +00:00
} ;
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
Drupal . AjaxError = function ( xmlhttp , uri , customMessage ) {
2020-01-30 09:08:38 +00:00
var statusCode ;
var statusText ;
var responseText ;
2014-01-27 21:41:32 +00:00
if ( xmlhttp . status ) {
2020-01-30 09:08:38 +00:00
statusCode = "\n" . concat ( Drupal . t ( 'An AJAX HTTP error occurred.' ) , "\n" ) . concat ( Drupal . t ( 'HTTP Result Code: !status' , {
'!status' : xmlhttp . status
} ) ) ;
2017-05-19 22:12:53 +00:00
} else {
2020-01-30 09:08:38 +00:00
statusCode = "\n" . concat ( Drupal . t ( 'An AJAX HTTP request terminated abnormally.' ) ) ;
2014-01-27 21:41:32 +00:00
}
2020-01-30 09:08:38 +00:00
statusCode += "\n" . concat ( Drupal . t ( 'Debugging information follows.' ) ) ;
var pathText = "\n" . concat ( Drupal . t ( 'Path: !uri' , {
'!uri' : uri
} ) ) ;
2014-01-27 21:41:32 +00:00
statusText = '' ;
2017-05-19 22:12:53 +00:00
2014-01-27 21:41:32 +00:00
try {
2020-01-30 09:08:38 +00:00
statusText = "\n" . concat ( Drupal . t ( 'StatusText: !statusText' , {
2018-08-09 15:49:18 +00:00
'!statusText' : $ . trim ( xmlhttp . statusText )
2020-01-30 09:08:38 +00:00
} ) ) ;
2017-05-19 22:12:53 +00:00
} catch ( e ) { }
2014-01-27 21:41:32 +00:00
responseText = '' ;
2017-05-19 22:12:53 +00:00
2014-01-27 21:41:32 +00:00
try {
2020-01-30 09:08:38 +00:00
responseText = "\n" . concat ( Drupal . t ( 'ResponseText: !responseText' , {
2018-08-09 15:49:18 +00:00
'!responseText' : $ . trim ( xmlhttp . responseText )
2020-01-30 09:08:38 +00:00
} ) ) ;
2017-05-19 22:12:53 +00:00
} catch ( e ) { }
2014-01-27 21:41:32 +00:00
2015-10-13 22:37:56 +00:00
responseText = responseText . replace ( /<("[^"]*"|'[^']*'|[^'">])*>/gi , '' ) ;
responseText = responseText . replace ( /[\n]+\s+/g , '\n' ) ;
2020-01-30 09:08:38 +00:00
var readyStateText = xmlhttp . status === 0 ? "\n" . concat ( Drupal . t ( 'ReadyState: !readyState' , {
2018-08-09 15:49:18 +00:00
'!readyState' : xmlhttp . readyState
2020-01-30 09:08:38 +00:00
} ) ) : '' ;
customMessage = customMessage ? "\n" . concat ( Drupal . t ( 'CustomMessage: !customMessage' , {
2018-08-09 15:49:18 +00:00
'!customMessage' : customMessage
2020-01-30 09:08:38 +00:00
} ) ) : '' ;
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
this . message = statusCode + pathText + statusText + customMessage + responseText + readyStateText ;
2014-01-27 21:41:32 +00:00
this . name = 'AjaxError' ;
2009-08-17 07:12:16 +00:00
} ;
2014-01-27 21:41:32 +00:00
Drupal . AjaxError . prototype = new Error ( ) ;
Drupal . AjaxError . prototype . constructor = Drupal . AjaxError ;
2010-11-20 08:26:21 +00:00
2015-05-20 11:02:57 +00:00
Drupal . ajax = function ( settings ) {
if ( arguments . length !== 1 ) {
throw new Error ( 'Drupal.ajax() function must be called with one configuration object only' ) ;
}
2017-05-19 22:12:53 +00:00
2015-05-20 11:02:57 +00:00
var base = settings . base || false ;
var element = settings . element || false ;
delete settings . base ;
delete settings . element ;
if ( ! settings . progress && ! element ) {
settings . progress = false ;
}
var ajax = new Drupal . Ajax ( base , element , settings ) ;
ajax . instanceIndex = Drupal . ajax . instances . length ;
Drupal . ajax . instances . push ( ajax ) ;
return ajax ;
} ;
Drupal . ajax . instances = [ ] ;
2016-02-22 02:20:13 +00:00
Drupal . ajax . expired = function ( ) {
return Drupal . ajax . instances . filter ( function ( instance ) {
return instance && instance . element !== false && ! document . body . contains ( instance . element ) ;
} ) ;
} ;
2017-10-16 22:15:27 +00:00
Drupal . ajax . bindAjaxLinks = function ( element ) {
$ ( element ) . find ( '.use-ajax' ) . once ( 'ajax' ) . each ( function ( i , ajaxLink ) {
var $linkElement = $ ( ajaxLink ) ;
var elementSettings = {
2020-01-30 09:08:38 +00:00
progress : {
type : 'throbber'
} ,
2017-10-16 22:15:27 +00:00
dialogType : $linkElement . data ( 'dialog-type' ) ,
dialog : $linkElement . data ( 'dialog-options' ) ,
dialogRenderer : $linkElement . data ( 'dialog-renderer' ) ,
base : $linkElement . attr ( 'id' ) ,
element : ajaxLink
} ;
var href = $linkElement . attr ( 'href' ) ;
if ( href ) {
elementSettings . url = href ;
elementSettings . event = 'click' ;
}
2020-01-30 09:08:38 +00:00
2017-10-16 22:15:27 +00:00
Drupal . ajax ( elementSettings ) ;
} ) ;
} ;
2017-12-03 16:16:29 +00:00
Drupal . Ajax = function ( base , element , elementSettings ) {
2014-01-27 21:41:32 +00:00
var defaults = {
2015-05-20 11:02:57 +00:00
event : element ? 'mousedown' : null ,
2014-01-27 21:41:32 +00:00
keypress : true ,
2020-01-30 09:08:38 +00:00
selector : base ? "#" . concat ( base ) : null ,
2014-01-27 21:41:32 +00:00
effect : 'none' ,
speed : 'none' ,
method : 'replaceWith' ,
progress : {
type : 'throbber' ,
message : Drupal . t ( 'Please wait...' )
} ,
submit : {
2015-08-07 14:08:23 +00:00
js : true
2014-01-27 21:41:32 +00:00
}
} ;
2017-12-03 16:16:29 +00:00
$ . extend ( this , defaults , elementSettings ) ;
2014-01-27 21:41:32 +00:00
this . commands = new Drupal . AjaxCommands ( ) ;
2015-05-20 11:02:57 +00:00
this . instanceIndex = false ;
2014-01-27 21:41:32 +00:00
if ( this . wrapper ) {
2020-01-30 09:08:38 +00:00
this . wrapper = "#" . concat ( this . wrapper ) ;
2009-11-03 05:34:37 +00:00
}
2014-01-27 21:41:32 +00:00
this . element = element ;
2017-12-03 16:16:29 +00:00
this . element _settings = elementSettings ;
this . elementSettings = elementSettings ;
2009-08-17 07:12:16 +00:00
2015-05-20 11:02:57 +00:00
if ( this . element && this . element . form ) {
2014-01-27 21:41:32 +00:00
this . $form = $ ( this . element . form ) ;
2009-08-17 07:12:16 +00:00
}
2014-01-27 21:41:32 +00:00
if ( ! this . url ) {
2015-05-20 11:02:57 +00:00
var $element = $ ( this . element ) ;
2020-01-30 09:08:38 +00:00
2015-05-20 11:02:57 +00:00
if ( $element . is ( 'a' ) ) {
this . url = $element . attr ( 'href' ) ;
2017-05-19 22:12:53 +00:00
} else if ( this . element && element . form ) {
2014-01-27 21:41:32 +00:00
this . url = this . $form . attr ( 'action' ) ;
}
2009-08-17 07:12:16 +00:00
}
2014-01-27 21:41:32 +00:00
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
var originalUrl = this . url ;
2018-05-14 20:38:10 +00:00
this . url = this . url . replace ( /\/nojs(\/|$|\?|#)/ , '/ajax$1' ) ;
2017-05-19 22:12:53 +00:00
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
if ( drupalSettings . ajaxTrustedUrl [ originalUrl ] ) {
drupalSettings . ajaxTrustedUrl [ this . url ] = true ;
}
2014-01-27 21:41:32 +00:00
var ajax = this ;
ajax . options = {
url : ajax . url ,
data : ajax . submit ,
2017-12-03 16:16:29 +00:00
beforeSerialize : function beforeSerialize ( elementSettings , options ) {
return ajax . beforeSerialize ( elementSettings , options ) ;
2014-01-27 21:41:32 +00:00
} ,
2017-12-03 16:16:29 +00:00
beforeSubmit : function beforeSubmit ( formValues , elementSettings , options ) {
2014-01-27 21:41:32 +00:00
ajax . ajaxing = true ;
2017-12-03 16:16:29 +00:00
return ajax . beforeSubmit ( formValues , elementSettings , options ) ;
2014-01-27 21:41:32 +00:00
} ,
2017-05-19 22:12:53 +00:00
beforeSend : function beforeSend ( xmlhttprequest , options ) {
2014-01-27 21:41:32 +00:00
ajax . ajaxing = true ;
return ajax . beforeSend ( xmlhttprequest , options ) ;
} ,
2017-05-19 22:12:53 +00:00
success : function success ( response , status , xmlhttprequest ) {
2014-01-27 21:41:32 +00:00
if ( typeof response === 'string' ) {
response = $ . parseJSON ( response ) ;
}
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
if ( response !== null && ! drupalSettings . ajaxTrustedUrl [ ajax . url ] ) {
if ( xmlhttprequest . getResponseHeader ( 'X-Drupal-Ajax-Token' ) !== '1' ) {
2015-10-13 22:37:56 +00:00
var customMessage = Drupal . t ( 'The response failed verification so will not be processed.' ) ;
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
return ajax . error ( xmlhttprequest , ajax . url , customMessage ) ;
}
}
2014-01-27 21:41:32 +00:00
return ajax . success ( response , status ) ;
} ,
2017-05-19 22:12:53 +00:00
complete : function complete ( xmlhttprequest , status ) {
2014-01-27 21:41:32 +00:00
ajax . ajaxing = false ;
2020-01-30 09:08:38 +00:00
2014-01-27 21:41:32 +00:00
if ( status === 'error' || status === 'parsererror' ) {
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
return ajax . error ( xmlhttprequest , ajax . url ) ;
2014-01-27 21:41:32 +00:00
}
} ,
dataType : 'json' ,
2020-09-16 11:21:15 +00:00
jsonp : false ,
2014-01-27 21:41:32 +00:00
type : 'POST'
} ;
2017-12-03 16:16:29 +00:00
if ( elementSettings . dialog ) {
ajax . options . data . dialogOptions = elementSettings . dialog ;
2014-01-27 21:41:32 +00:00
}
2015-05-14 01:12:54 +00:00
if ( ajax . options . url . indexOf ( '?' ) === - 1 ) {
ajax . options . url += '?' ;
2017-05-19 22:12:53 +00:00
} else {
2015-05-14 01:12:54 +00:00
ajax . options . url += '&' ;
}
2017-07-14 18:32:12 +00:00
2020-01-30 09:08:38 +00:00
var wrapper = "drupal_" . concat ( elementSettings . dialogType || 'ajax' ) ;
2017-12-03 16:16:29 +00:00
if ( elementSettings . dialogRenderer ) {
2020-01-30 09:08:38 +00:00
wrapper += "." . concat ( elementSettings . dialogRenderer ) ;
2017-07-14 18:32:12 +00:00
}
2015-05-14 01:12:54 +00:00
2020-01-30 09:08:38 +00:00
ajax . options . url += "" . concat ( Drupal . ajax . WRAPPER _FORMAT , "=" ) . concat ( wrapper ) ;
2017-12-03 16:16:29 +00:00
$ ( ajax . element ) . on ( elementSettings . event , function ( event ) {
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
if ( ! drupalSettings . ajaxTrustedUrl [ ajax . url ] && ! Drupal . url . isLocal ( ajax . url ) ) {
2018-08-09 15:49:18 +00:00
throw new Error ( Drupal . t ( 'The callback URL is not local and not trusted: !url' , {
'!url' : ajax . url
} ) ) ;
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
}
2020-01-30 09:08:38 +00:00
2014-01-27 21:41:32 +00:00
return ajax . eventResponse ( this , event ) ;
} ) ;
2017-12-03 16:16:29 +00:00
if ( elementSettings . keypress ) {
2014-01-27 21:41:32 +00:00
$ ( ajax . element ) . on ( 'keypress' , function ( event ) {
return ajax . keypressResponse ( this , event ) ;
} ) ;
2009-08-17 07:12:16 +00:00
}
2017-12-03 16:16:29 +00:00
if ( elementSettings . prevent ) {
$ ( ajax . element ) . on ( elementSettings . prevent , false ) ;
2009-08-17 07:12:16 +00:00
}
2014-01-27 21:41:32 +00:00
} ;
2009-08-17 07:12:16 +00:00
2015-05-14 01:12:54 +00:00
Drupal . ajax . WRAPPER _FORMAT = '_wrapper_format' ;
2015-06-22 13:16:58 +00:00
Drupal . Ajax . AJAX _REQUEST _PARAMETER = '_drupal_ajax' ;
2015-05-20 11:02:57 +00:00
Drupal . Ajax . prototype . execute = function ( ) {
if ( this . ajaxing ) {
return ;
}
try {
this . beforeSerialize ( this . element , this . options ) ;
2015-12-21 17:49:42 +00:00
return $ . ajax ( this . options ) ;
2017-05-19 22:12:53 +00:00
} catch ( e ) {
2015-05-20 11:02:57 +00:00
this . ajaxing = false ;
2020-01-30 09:08:38 +00:00
window . alert ( "An error occurred while attempting to process " . concat ( this . options . url , ": " ) . concat ( e . message ) ) ;
2015-12-21 17:49:42 +00:00
return $ . Deferred ( ) . reject ( ) ;
2015-05-20 11:02:57 +00:00
}
} ;
Drupal . Ajax . prototype . keypressResponse = function ( element , event ) {
2014-01-27 21:41:32 +00:00
var ajax = this ;
2017-05-19 22:12:53 +00:00
if ( event . which === 13 || event . which === 32 && element . type !== 'text' && element . type !== 'textarea' && element . type !== 'tel' && element . type !== 'number' ) {
2014-01-27 21:41:32 +00:00
event . preventDefault ( ) ;
event . stopPropagation ( ) ;
2017-12-03 16:16:29 +00:00
$ ( element ) . trigger ( ajax . elementSettings . event ) ;
2014-01-27 21:41:32 +00:00
}
} ;
2009-08-17 07:12:16 +00:00
2015-05-20 11:02:57 +00:00
Drupal . Ajax . prototype . eventResponse = function ( element , event ) {
2014-01-27 21:41:32 +00:00
event . preventDefault ( ) ;
event . stopPropagation ( ) ;
var ajax = this ;
if ( ajax . ajaxing ) {
return ;
}
try {
if ( ajax . $form ) {
if ( ajax . setClick ) {
element . form . clk = element ;
}
ajax . $form . ajaxSubmit ( ajax . options ) ;
2017-05-19 22:12:53 +00:00
} else {
2014-01-27 21:41:32 +00:00
ajax . beforeSerialize ( ajax . element , ajax . options ) ;
$ . ajax ( ajax . options ) ;
2009-08-17 07:12:16 +00:00
}
2017-05-19 22:12:53 +00:00
} catch ( e ) {
2014-01-27 21:41:32 +00:00
ajax . ajaxing = false ;
2020-01-30 09:08:38 +00:00
window . alert ( "An error occurred while attempting to process " . concat ( ajax . options . url , ": " ) . concat ( e . message ) ) ;
2014-01-27 21:41:32 +00:00
}
} ;
2009-08-17 07:12:16 +00:00
2015-05-20 11:02:57 +00:00
Drupal . Ajax . prototype . beforeSerialize = function ( element , options ) {
2019-02-07 16:45:01 +00:00
if ( this . $form && document . body . contains ( this . $form . get ( 0 ) ) ) {
2014-01-27 21:41:32 +00:00
var settings = this . settings || drupalSettings ;
Drupal . detachBehaviors ( this . $form . get ( 0 ) , settings , 'serialize' ) ;
}
2009-08-17 07:12:16 +00:00
2015-06-22 13:16:58 +00:00
options . data [ Drupal . Ajax . AJAX _REQUEST _PARAMETER ] = 1 ;
2014-01-27 21:41:32 +00:00
var pageState = drupalSettings . ajaxPageState ;
options . data [ 'ajax_page_state[theme]' ] = pageState . theme ;
options . data [ 'ajax_page_state[theme_token]' ] = pageState . theme _token ;
2015-01-21 15:21:06 +00:00
options . data [ 'ajax_page_state[libraries]' ] = pageState . libraries ;
2014-01-27 21:41:32 +00:00
} ;
2013-03-17 16:04:07 +00:00
2017-12-03 16:16:29 +00:00
Drupal . Ajax . prototype . beforeSubmit = function ( formValues , element , options ) { } ;
2009-12-12 23:36:28 +00:00
2015-05-20 11:02:57 +00:00
Drupal . Ajax . prototype . beforeSend = function ( xmlhttprequest , options ) {
2014-01-27 21:41:32 +00:00
if ( this . $form ) {
options . extraData = options . extraData || { } ;
options . extraData . ajax _iframe _upload = '1' ;
2020-01-28 13:12:54 +00:00
var v = $ . fieldValue ( this . element ) ;
2020-01-30 09:08:38 +00:00
2014-01-27 21:41:32 +00:00
if ( v !== null ) {
options . extraData [ this . element . name ] = v ;
}
2010-01-12 06:31:22 +00:00
}
2014-01-27 21:41:32 +00:00
2015-03-14 04:02:53 +00:00
$ ( this . element ) . prop ( 'disabled' , true ) ;
2014-01-27 21:41:32 +00:00
2015-05-20 11:02:57 +00:00
if ( ! this . progress || ! this . progress . type ) {
return ;
2010-01-12 06:31:22 +00:00
}
2015-05-20 11:02:57 +00:00
2020-01-30 09:08:38 +00:00
var progressIndicatorMethod = "setProgressIndicator" . concat ( this . progress . type . slice ( 0 , 1 ) . toUpperCase ( ) ) . concat ( this . progress . type . slice ( 1 ) . toLowerCase ( ) ) ;
2015-05-20 11:02:57 +00:00
if ( progressIndicatorMethod in this && typeof this [ progressIndicatorMethod ] === 'function' ) {
this [ progressIndicatorMethod ] . call ( this ) ;
2014-01-27 21:41:32 +00:00
}
2015-05-20 11:02:57 +00:00
} ;
2018-06-15 16:11:46 +00:00
Drupal . theme . ajaxProgressThrobber = function ( message ) {
var messageMarkup = typeof message === 'string' ? Drupal . theme ( 'ajaxProgressMessage' , message ) : '' ;
var throbber = '<div class="throbber"> </div>' ;
2020-01-30 09:08:38 +00:00
return "<div class=\"ajax-progress ajax-progress-throbber\">" . concat ( throbber ) . concat ( messageMarkup , "</div>" ) ;
2018-06-15 16:11:46 +00:00
} ;
Drupal . theme . ajaxProgressIndicatorFullscreen = function ( ) {
return '<div class="ajax-progress ajax-progress-fullscreen"> </div>' ;
} ;
Drupal . theme . ajaxProgressMessage = function ( message ) {
2020-01-30 09:08:38 +00:00
return "<div class=\"message\">" . concat ( message , "</div>" ) ;
2018-06-15 16:11:46 +00:00
} ;
2019-09-20 23:22:03 +00:00
Drupal . theme . ajaxProgressBar = function ( $element ) {
return $ ( '<div class="ajax-progress ajax-progress-bar"></div>' ) . append ( $element ) ;
} ;
2015-05-20 11:02:57 +00:00
Drupal . Ajax . prototype . setProgressIndicatorBar = function ( ) {
2020-01-30 09:08:38 +00:00
var progressBar = new Drupal . ProgressBar ( "ajax-progress-" . concat ( this . element . id ) , $ . noop , this . progress . method , $ . noop ) ;
2015-05-20 11:02:57 +00:00
if ( this . progress . message ) {
progressBar . setProgress ( - 1 , this . progress . message ) ;
}
2020-01-30 09:08:38 +00:00
2015-05-20 11:02:57 +00:00
if ( this . progress . url ) {
progressBar . startMonitoring ( this . progress . url , this . progress . interval || 1500 ) ;
2014-08-04 10:51:12 +00:00
}
2020-01-30 09:08:38 +00:00
2019-09-20 23:22:03 +00:00
this . progress . element = $ ( Drupal . theme ( 'ajaxProgressBar' , progressBar . element ) ) ;
2015-05-20 11:02:57 +00:00
this . progress . object = progressBar ;
$ ( this . element ) . after ( this . progress . element ) ;
} ;
Drupal . Ajax . prototype . setProgressIndicatorThrobber = function ( ) {
2018-06-15 16:11:46 +00:00
this . progress . element = $ ( Drupal . theme ( 'ajaxProgressThrobber' , this . progress . message ) ) ;
2015-05-20 11:02:57 +00:00
$ ( this . element ) . after ( this . progress . element ) ;
} ;
Drupal . Ajax . prototype . setProgressIndicatorFullscreen = function ( ) {
2018-06-15 16:11:46 +00:00
this . progress . element = $ ( Drupal . theme ( 'ajaxProgressIndicatorFullscreen' ) ) ;
2019-07-23 12:02:26 +00:00
$ ( 'body' ) . append ( this . progress . element ) ;
2014-01-27 21:41:32 +00:00
} ;
2009-08-17 07:12:16 +00:00
2015-05-20 11:02:57 +00:00
Drupal . Ajax . prototype . success = function ( response , status ) {
2018-01-03 23:25:46 +00:00
var _this = this ;
2014-01-27 21:41:32 +00:00
if ( this . progress . element ) {
$ ( this . progress . element ) . remove ( ) ;
}
2020-01-30 09:08:38 +00:00
2014-01-27 21:41:32 +00:00
if ( this . progress . object ) {
this . progress . object . stopMonitoring ( ) ;
}
2020-01-28 13:12:54 +00:00
2020-01-30 09:08:38 +00:00
$ ( this . element ) . prop ( 'disabled' , false ) ;
2015-11-12 16:06:34 +00:00
var elementParents = $ ( this . element ) . parents ( '[data-drupal-selector]' ) . addBack ( ) . toArray ( ) ;
var focusChanged = false ;
2018-01-03 23:25:46 +00:00
Object . keys ( response || { } ) . forEach ( function ( i ) {
if ( response [ i ] . command && _this . commands [ response [ i ] . command ] ) {
_this . commands [ response [ i ] . command ] ( _this , response [ i ] , status ) ;
2020-01-30 09:08:38 +00:00
2015-11-12 16:06:34 +00:00
if ( response [ i ] . command === 'invoke' && response [ i ] . method === 'focus' ) {
focusChanged = true ;
}
}
2018-01-03 23:25:46 +00:00
} ) ;
2015-11-12 16:06:34 +00:00
if ( ! focusChanged && this . element && ! $ ( this . element ) . data ( 'disable-refocus' ) ) {
var target = false ;
Issue #1848940 by milanpavic, dawehner, nod_, helenasue, DuaelFr, Lendude, AjitS, sdstyles, runeasgar, tim.plunkett: When enabling or disabling a View, don't move the cursor to the top of the page
2018-05-09 11:29:14 +00:00
for ( var n = elementParents . length - 1 ; ! target && n >= 0 ; n -- ) {
2020-01-30 09:08:38 +00:00
target = document . querySelector ( "[data-drupal-selector=\"" . concat ( elementParents [ n ] . getAttribute ( 'data-drupal-selector' ) , "\"]" ) ) ;
2015-11-12 16:06:34 +00:00
}
if ( target ) {
$ ( target ) . trigger ( 'focus' ) ;
2014-01-27 21:41:32 +00:00
}
}
2019-02-07 16:45:01 +00:00
if ( this . $form && document . body . contains ( this . $form . get ( 0 ) ) ) {
2014-01-27 21:41:32 +00:00
var settings = this . settings || drupalSettings ;
Drupal . attachBehaviors ( this . $form . get ( 0 ) , settings ) ;
}
this . settings = null ;
} ;
2009-08-17 07:12:16 +00:00
2015-05-20 11:02:57 +00:00
Drupal . Ajax . prototype . getEffect = function ( response ) {
2014-01-27 21:41:32 +00:00
var type = response . effect || this . effect ;
var speed = response . speed || this . speed ;
2020-01-28 13:12:54 +00:00
var effect = { } ;
2020-01-30 09:08:38 +00:00
2014-01-27 21:41:32 +00:00
if ( type === 'none' ) {
effect . showEffect = 'show' ;
effect . hideEffect = 'hide' ;
effect . showSpeed = '' ;
2017-05-19 22:12:53 +00:00
} else if ( type === 'fade' ) {
2014-01-27 21:41:32 +00:00
effect . showEffect = 'fadeIn' ;
effect . hideEffect = 'fadeOut' ;
effect . showSpeed = speed ;
2017-05-19 22:12:53 +00:00
} else {
2020-01-30 09:08:38 +00:00
effect . showEffect = "" . concat ( type , "Toggle" ) ;
effect . hideEffect = "" . concat ( type , "Toggle" ) ;
2014-01-27 21:41:32 +00:00
effect . showSpeed = speed ;
}
return effect ;
} ;
2010-11-29 03:00:50 +00:00
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
Drupal . Ajax . prototype . error = function ( xmlhttprequest , uri , customMessage ) {
2014-01-27 21:41:32 +00:00
if ( this . progress . element ) {
$ ( this . progress . element ) . remove ( ) ;
}
2020-01-30 09:08:38 +00:00
2014-01-27 21:41:32 +00:00
if ( this . progress . object ) {
this . progress . object . stopMonitoring ( ) ;
}
2017-05-19 22:12:53 +00:00
2014-01-27 21:41:32 +00:00
$ ( this . wrapper ) . show ( ) ;
2015-03-14 04:02:53 +00:00
$ ( this . element ) . prop ( 'disabled' , false ) ;
2017-05-19 22:12:53 +00:00
2019-02-07 16:45:01 +00:00
if ( this . $form && document . body . contains ( this . $form . get ( 0 ) ) ) {
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
var settings = this . settings || drupalSettings ;
2014-01-27 21:41:32 +00:00
Drupal . attachBehaviors ( this . $form . get ( 0 ) , settings ) ;
}
2020-01-30 09:08:38 +00:00
Issue #2554219 by nod_, larowlan, tim.plunkett, regilero, droplet, japerry, samuel.mortenson, Pere Orga, effulgentsia, benjy, Gábor Hojtsy, greggles, Wim Leers, David_Rothstein, pwolanin, neclimdul, EclipseGc, znerol: Port Cross-site Scripting - Ajax system fixes from SA-CORE-2015-003 to Drupal 8
2015-08-26 22:02:58 +00:00
throw new Drupal . AjaxError ( xmlhttprequest , uri , customMessage ) ;
2014-01-27 21:41:32 +00:00
} ;
2012-07-07 20:52:10 +00:00
Issue #736066 by droplet, drpal, vaplas, dmsmidt, effulgentsia, nod_, tic2000, tim.plunkett, lauriii, casey, morsok, idebr, alexpott, yched, tedbow, GuyPaddock, drintios, edurenye, dtamajon, adinac, VinayLondhe, ajalan065, hrmoller, ericduran, piyuesh23, andreyks, roborew, Wim Leers, lokapujya, samuel.mortenson, Dries, DuaelFr, OnkelTem, manu manu, khiminrm, Greg Boggs, SKAUGHT, itsekhmistro, fubhy, SpadXIII, s.messaris, zviryatko: ajax.js insert command sometimes wraps content in a div, potentially producing invalid HTML and other bugs
2018-07-04 18:59:57 +00:00
Drupal . theme . ajaxWrapperNewContent = function ( $newContent , ajax , response ) {
return ( response . effect || ajax . effect ) !== 'none' && $newContent . filter ( function ( i ) {
return ! ( $newContent [ i ] . nodeName === '#comment' || $newContent [ i ] . nodeName === '#text' && /^(\s|\n|\r)*$/ . test ( $newContent [ i ] . textContent ) ) ;
} ) . length > 1 ? Drupal . theme ( 'ajaxWrapperMultipleRootElements' , $newContent ) : $newContent ;
} ;
Drupal . theme . ajaxWrapperMultipleRootElements = function ( $elements ) {
return $ ( '<div></div>' ) . append ( $elements ) ;
} ;
2014-01-27 21:41:32 +00:00
Drupal . AjaxCommands = function ( ) { } ;
2020-01-30 09:08:38 +00:00
2014-01-27 21:41:32 +00:00
Drupal . AjaxCommands . prototype = {
Issue #736066 by droplet, drpal, vaplas, dmsmidt, effulgentsia, nod_, tic2000, tim.plunkett, lauriii, casey, morsok, idebr, alexpott, yched, tedbow, GuyPaddock, drintios, edurenye, dtamajon, adinac, VinayLondhe, ajalan065, hrmoller, ericduran, piyuesh23, andreyks, roborew, Wim Leers, lokapujya, samuel.mortenson, Dries, DuaelFr, OnkelTem, manu manu, khiminrm, Greg Boggs, SKAUGHT, itsekhmistro, fubhy, SpadXIII, s.messaris, zviryatko: ajax.js insert command sometimes wraps content in a div, potentially producing invalid HTML and other bugs
2018-07-04 18:59:57 +00:00
insert : function insert ( ajax , response ) {
2016-02-25 06:10:27 +00:00
var $wrapper = response . selector ? $ ( response . selector ) : $ ( ajax . wrapper ) ;
2014-01-27 21:41:32 +00:00
var method = response . method || ajax . method ;
var effect = ajax . getEffect ( response ) ;
Issue #736066 by droplet, drpal, vaplas, dmsmidt, effulgentsia, nod_, tic2000, tim.plunkett, lauriii, casey, morsok, idebr, alexpott, yched, tedbow, GuyPaddock, drintios, edurenye, dtamajon, adinac, VinayLondhe, ajalan065, hrmoller, ericduran, piyuesh23, andreyks, roborew, Wim Leers, lokapujya, samuel.mortenson, Dries, DuaelFr, OnkelTem, manu manu, khiminrm, Greg Boggs, SKAUGHT, itsekhmistro, fubhy, SpadXIII, s.messaris, zviryatko: ajax.js insert command sometimes wraps content in a div, potentially producing invalid HTML and other bugs
2018-07-04 18:59:57 +00:00
var settings = response . settings || ajax . settings || drupalSettings ;
var $newContent = $ ( $ . parseHTML ( response . data , document , true ) ) ;
$newContent = Drupal . theme ( 'ajaxWrapperNewContent' , $newContent , ajax , response ) ;
2014-01-27 21:41:32 +00:00
switch ( method ) {
case 'html' :
case 'replaceWith' :
case 'replaceAll' :
case 'empty' :
case 'remove' :
2016-02-25 06:10:27 +00:00
Drupal . detachBehaviors ( $wrapper . get ( 0 ) , settings ) ;
Issue #736066 by droplet, drpal, vaplas, dmsmidt, effulgentsia, nod_, tic2000, tim.plunkett, lauriii, casey, morsok, idebr, alexpott, yched, tedbow, GuyPaddock, drintios, edurenye, dtamajon, adinac, VinayLondhe, ajalan065, hrmoller, ericduran, piyuesh23, andreyks, roborew, Wim Leers, lokapujya, samuel.mortenson, Dries, DuaelFr, OnkelTem, manu manu, khiminrm, Greg Boggs, SKAUGHT, itsekhmistro, fubhy, SpadXIII, s.messaris, zviryatko: ajax.js insert command sometimes wraps content in a div, potentially producing invalid HTML and other bugs
2018-07-04 18:59:57 +00:00
break ;
2020-01-30 09:08:38 +00:00
Issue #736066 by droplet, drpal, vaplas, dmsmidt, effulgentsia, nod_, tic2000, tim.plunkett, lauriii, casey, morsok, idebr, alexpott, yched, tedbow, GuyPaddock, drintios, edurenye, dtamajon, adinac, VinayLondhe, ajalan065, hrmoller, ericduran, piyuesh23, andreyks, roborew, Wim Leers, lokapujya, samuel.mortenson, Dries, DuaelFr, OnkelTem, manu manu, khiminrm, Greg Boggs, SKAUGHT, itsekhmistro, fubhy, SpadXIII, s.messaris, zviryatko: ajax.js insert command sometimes wraps content in a div, potentially producing invalid HTML and other bugs
2018-07-04 18:59:57 +00:00
default :
break ;
2014-01-27 21:41:32 +00:00
}
2017-12-03 16:16:29 +00:00
$wrapper [ method ] ( $newContent ) ;
2014-01-27 21:41:32 +00:00
if ( effect . showEffect !== 'show' ) {
2017-12-03 16:16:29 +00:00
$newContent . hide ( ) ;
2014-01-27 21:41:32 +00:00
}
Issue #736066 by droplet, drpal, vaplas, dmsmidt, effulgentsia, nod_, tic2000, tim.plunkett, lauriii, casey, morsok, idebr, alexpott, yched, tedbow, GuyPaddock, drintios, edurenye, dtamajon, adinac, VinayLondhe, ajalan065, hrmoller, ericduran, piyuesh23, andreyks, roborew, Wim Leers, lokapujya, samuel.mortenson, Dries, DuaelFr, OnkelTem, manu manu, khiminrm, Greg Boggs, SKAUGHT, itsekhmistro, fubhy, SpadXIII, s.messaris, zviryatko: ajax.js insert command sometimes wraps content in a div, potentially producing invalid HTML and other bugs
2018-07-04 18:59:57 +00:00
var $ajaxNewContent = $newContent . find ( '.ajax-new-content' ) ;
2020-01-30 09:08:38 +00:00
Issue #736066 by droplet, drpal, vaplas, dmsmidt, effulgentsia, nod_, tic2000, tim.plunkett, lauriii, casey, morsok, idebr, alexpott, yched, tedbow, GuyPaddock, drintios, edurenye, dtamajon, adinac, VinayLondhe, ajalan065, hrmoller, ericduran, piyuesh23, andreyks, roborew, Wim Leers, lokapujya, samuel.mortenson, Dries, DuaelFr, OnkelTem, manu manu, khiminrm, Greg Boggs, SKAUGHT, itsekhmistro, fubhy, SpadXIII, s.messaris, zviryatko: ajax.js insert command sometimes wraps content in a div, potentially producing invalid HTML and other bugs
2018-07-04 18:59:57 +00:00
if ( $ajaxNewContent . length ) {
$ajaxNewContent . hide ( ) ;
2017-12-03 16:16:29 +00:00
$newContent . show ( ) ;
Issue #736066 by droplet, drpal, vaplas, dmsmidt, effulgentsia, nod_, tic2000, tim.plunkett, lauriii, casey, morsok, idebr, alexpott, yched, tedbow, GuyPaddock, drintios, edurenye, dtamajon, adinac, VinayLondhe, ajalan065, hrmoller, ericduran, piyuesh23, andreyks, roborew, Wim Leers, lokapujya, samuel.mortenson, Dries, DuaelFr, OnkelTem, manu manu, khiminrm, Greg Boggs, SKAUGHT, itsekhmistro, fubhy, SpadXIII, s.messaris, zviryatko: ajax.js insert command sometimes wraps content in a div, potentially producing invalid HTML and other bugs
2018-07-04 18:59:57 +00:00
$ajaxNewContent [ effect . showEffect ] ( effect . showSpeed ) ;
2017-05-19 22:12:53 +00:00
} else if ( effect . showEffect !== 'show' ) {
2017-12-03 16:16:29 +00:00
$newContent [ effect . showEffect ] ( effect . showSpeed ) ;
2014-01-27 21:41:32 +00:00
}
Issue #736066 by droplet, drpal, vaplas, dmsmidt, effulgentsia, nod_, tic2000, tim.plunkett, lauriii, casey, morsok, idebr, alexpott, yched, tedbow, GuyPaddock, drintios, edurenye, dtamajon, adinac, VinayLondhe, ajalan065, hrmoller, ericduran, piyuesh23, andreyks, roborew, Wim Leers, lokapujya, samuel.mortenson, Dries, DuaelFr, OnkelTem, manu manu, khiminrm, Greg Boggs, SKAUGHT, itsekhmistro, fubhy, SpadXIII, s.messaris, zviryatko: ajax.js insert command sometimes wraps content in a div, potentially producing invalid HTML and other bugs
2018-07-04 18:59:57 +00:00
if ( $newContent . parents ( 'html' ) . length ) {
$newContent . each ( function ( index , element ) {
if ( element . nodeType === Node . ELEMENT _NODE ) {
Drupal . attachBehaviors ( element , settings ) ;
}
} ) ;
2014-01-27 21:41:32 +00:00
}
} ,
2017-05-19 22:12:53 +00:00
remove : function remove ( ajax , response , status ) {
2014-01-27 21:41:32 +00:00
var settings = response . settings || ajax . settings || drupalSettings ;
$ ( response . selector ) . each ( function ( ) {
Drupal . detachBehaviors ( this , settings ) ;
2017-05-19 22:12:53 +00:00
} ) . remove ( ) ;
2014-01-27 21:41:32 +00:00
} ,
2017-05-19 22:12:53 +00:00
changed : function changed ( ajax , response , status ) {
2016-02-25 06:10:27 +00:00
var $element = $ ( response . selector ) ;
2020-01-30 09:08:38 +00:00
2016-02-25 06:10:27 +00:00
if ( ! $element . hasClass ( 'ajax-changed' ) ) {
$element . addClass ( 'ajax-changed' ) ;
2020-01-30 09:08:38 +00:00
2014-01-27 21:41:32 +00:00
if ( response . asterisk ) {
2020-01-30 09:08:38 +00:00
$element . find ( response . asterisk ) . append ( " <abbr class=\"ajax-changed\" title=\"" . concat ( Drupal . t ( 'Changed' ) , "\">*</abbr> " ) ) ;
2014-01-27 21:41:32 +00:00
}
}
} ,
2017-05-19 22:12:53 +00:00
alert : function alert ( ajax , response , status ) {
2020-09-09 09:10:54 +00:00
window . alert ( response . text ) ;
2014-01-27 21:41:32 +00:00
} ,
2019-02-05 22:20:19 +00:00
announce : function announce ( ajax , response ) {
if ( response . priority ) {
Drupal . announce ( response . text , response . priority ) ;
} else {
Drupal . announce ( response . text ) ;
}
} ,
2017-05-19 22:12:53 +00:00
redirect : function redirect ( ajax , response , status ) {
2014-01-27 21:41:32 +00:00
window . location = response . url ;
} ,
2017-05-19 22:12:53 +00:00
css : function css ( ajax , response , status ) {
2014-01-27 21:41:32 +00:00
$ ( response . selector ) . css ( response . argument ) ;
} ,
2017-05-19 22:12:53 +00:00
settings : function settings ( ajax , response , status ) {
2016-02-22 02:20:13 +00:00
var ajaxSettings = drupalSettings . ajax ;
2016-05-11 21:00:34 +00:00
if ( ajaxSettings ) {
Drupal . ajax . expired ( ) . forEach ( function ( instance ) {
if ( instance . selector ) {
var selector = instance . selector . replace ( '#' , '' ) ;
2020-01-30 09:08:38 +00:00
2016-05-11 21:00:34 +00:00
if ( selector in ajaxSettings ) {
delete ajaxSettings [ selector ] ;
}
2016-02-22 02:20:13 +00:00
}
2016-05-11 21:00:34 +00:00
} ) ;
}
2016-02-22 02:20:13 +00:00
2014-01-27 21:41:32 +00:00
if ( response . merge ) {
$ . extend ( true , drupalSettings , response . settings ) ;
2017-05-19 22:12:53 +00:00
} else {
2014-01-27 21:41:32 +00:00
ajax . settings = response . settings ;
}
} ,
2017-05-19 22:12:53 +00:00
data : function data ( ajax , response , status ) {
2014-01-27 21:41:32 +00:00
$ ( response . selector ) . data ( response . name , response . value ) ;
} ,
2017-05-19 22:12:53 +00:00
invoke : function invoke ( ajax , response , status ) {
2014-01-27 21:41:32 +00:00
var $element = $ ( response . selector ) ;
2017-07-06 06:21:40 +00:00
$element [ response . method ] . apply ( $element , _toConsumableArray ( response . args ) ) ;
2014-01-27 21:41:32 +00:00
} ,
2017-05-19 22:12:53 +00:00
restripe : function restripe ( ajax , response , status ) {
$ ( response . selector ) . find ( '> tbody > tr:visible, > tr:visible' ) . removeClass ( 'odd even' ) . filter ( ':even' ) . addClass ( 'odd' ) . end ( ) . filter ( ':odd' ) . addClass ( 'even' ) ;
2014-01-27 21:41:32 +00:00
} ,
2017-05-19 22:12:53 +00:00
update _build _id : function update _build _id ( ajax , response , status ) {
2020-01-30 09:08:38 +00:00
$ ( "input[name=\"form_build_id\"][value=\"" . concat ( response . old , "\"]" ) ) . val ( response . new ) ;
Issue #2242749 by znerol, torotil, rszrama, larowlan, dawehner, penyaskito, tim.plunkett, sun, Damien Tournoud, David_Rothstein, effulgentsia: Fixed Port Form API security fix SA-CORE-2014-002 to Drupal 8.
2014-10-12 10:00:04 +00:00
} ,
2017-05-19 22:12:53 +00:00
add _css : function add _css ( ajax , response , status ) {
2014-01-27 21:41:32 +00:00
$ ( 'head' ) . prepend ( response . data ) ;
2019-10-10 09:38:23 +00:00
} ,
message : function message ( ajax , response ) {
var messages = new Drupal . Message ( document . querySelector ( response . messageWrapperQuerySelector ) ) ;
2020-01-30 09:08:38 +00:00
2019-10-10 09:38:23 +00:00
if ( response . clearPrevious ) {
messages . clear ( ) ;
}
2020-01-30 09:08:38 +00:00
2019-10-10 09:38:23 +00:00
messages . add ( response . message , response . messageOptions ) ;
2014-01-27 21:41:32 +00:00
}
} ;
2017-05-19 22:12:53 +00:00
} ) ( jQuery , window , Drupal , drupalSettings ) ;