');if(this.progress.message){$('.throber',this.progress.element).after(''+this.progress.message+'
');}$(this.element).after(this.progress.element);}};/***表单重定向完成的处理程序。*/Drupal.ajax.prototype.success=函数(响应,状态){//删除进度元素。if(this.progress.element){$(this.progress.element).remove();}if(this.progress.object){this.progress.object.stopMonitoring();}$(this.element).removeClass('进程禁用').removeAttr('禁用');Drupal.冻结高度();for(响应中的var i){if(response.hasOwnProperty(i)&&response[i]['命令]&&this.commands[response[i][命令]]){this.commands[响应[i][命令]](this,响应[i],状态);}}//如果在beforeSerialize()中分离了行为,请重新附加这些行为。这个//attachBehaviors()在处理响应时调用了新内容//命令是不够的,因为整个表单中的行为需要//需要重新连接。if(本表格){var settings=this.settings | | Drupal.settings;Drupal.attachBehaviors(this.form,settings);}Drupal.unfreezeHeight();//删除所有特定于响应的设置,以便它们不会在下次使用//打错电话了。this.settings=空;};/***构建一个效果对象,告诉我们如何在添加新HTML时应用效果。*/Drupal.ajax.prototype.getEffect=功能(响应){var类型=response.effect | this.effect;var速度=response.speed | this.speed;var效应={};if(类型==“无”){effect.showEffect=“show”;effect.hideEffect=“隐藏”;effect.showSpeed=“”;}else if(type==“淡出”){effect.showEffect='fadeIn';effect.hideEffect=“淡出”;effect.showSpeed=速度;}其他{effect.showEffect=type+'切换';effect.hideEffect=类型+“切换”;effect.showSpeed=速度;}回报效应;};/***表单重定向错误的处理程序。*/Drupal.ajax.prototype.error=函数(xmlhttprequest,uri,customMessage){Drupal.displayAjaxError(Drupal.ajaxError(xmlhttprequest,uri,customMessage));//删除进度元素。if(this.progress.element){$(this.progress.element).remove();}if(this.progress.object){this.progress.object.stopMonitoring();}//撤消隐藏。$(this.wrapper).show();//重新启用元素。$(this.element).removeClass('进程禁用').removeAttr('禁用');//如果在beforeSerialize()中分离了行为,则重新附加这些行为。if(本表格){var settings=this.settings | | Drupal.settings;Drupal.attachBehaviors(this.form,settings);}};/***提供服务器可以请求客户端执行的一系列命令。*/Drupal.ajax.prototype.commands={/***命令将新内容插入DOM。*/插入:功能(ajax、响应、状态){//从响应中获取信息。如果不存在,则默认为//我们的预设。var-wrapper=response.selector$(response.selector):$(ajax.wrapper);var方法=response.method | | ajax.method;var effect=ajax.getEffect(响应);//我们不知道response.data包含什么:它可能是一个文本字符串//没有HTML,所以不要正确依赖jQuery进行iterpreting//$(response.data)作为新的HTML而不是CSS选择器。此外,如果//response.data包含顶级文本节点,它们会丢失//$(response.data)或$('').replaceWith(response.data)。var new_content_wrapped=$('').html(response.data);var new_content=new_content_wrapped.contents();//由于遗留的原因,效果处理代码假定new_content//由单个顶级元素组成。此外,它还没有//充分测试attachBehaviors()是否可以成功调用//包含顶级文本节点的上下文对象。然而,到//让开发人员完全控制页面中出现的HTML//允许在没有DIV元素的地方插入Ajax内容//允许(例如,在TABLE、TR和SPAN父项中),我们检查新的//内容满足单个顶级元素的要求,并且//只有在不使用上面创建的容器DIV时才使用它。有关更多信息//信息,请参阅http://drupal.org/node/736066。if(new_content.length!=1|| new_content.get(0).nodeType!=1) {new_content=新内容包装;}//如果从包装器中删除内容,请首先分离行为。开关(方法){案例“html”:case“replaceWith”:case“replaceAll”:case“空”:案例“删除”:var settings=响应设置||ajax.settings||Drupal.settings;Drupal.deachBehaviors(包装器、设置);}//将新内容添加到页面。包装器[方法](new_content);//如果我们使用任何效果,请立即隐藏新内容。if(effect.showEffect!='show'){new_content.hide();}//确定要使用的效果以及将收到的内容//效果,然后显示新内容。if($('.ajax-new-content',new_content).length>0){$('.ajax-new-content',new_content).hide();new_content.show();$('.ajax-new-content',new_content)[effect.showEffect](effect.showSpeed);}else if(effect.showEffect!=“show”){new_content[effect.showEffect](effect.showSpeed);}//如果成功,将所有JavaScript行为附加到新内容//添加到页面中,这个if语句允许ajax['wrapper']//可选。if(new_content.parents('html').length>0){//如果可用,从返回的JSON应用任何设置。var settings=响应设置||ajax.settings||Drupal.settings;Drupal.attachBehaviors(new_content,settings);}},/***命令从页面中删除块。*/删除:功能(ajax、响应、状态){var settings=响应设置||ajax.settings||Drupal.settings;detachBehaviors($(response.selector),settings);$(response.selector).remove();},/***标记块更改的命令。*/更改:功能(ajax、响应、状态){if(!$(response.selector).hasClass('ajax-changed')){$(response.selector).addClass('jax-changed');if(回复.星号){$(response.selector).find(respones.asterisk).append('*');}}},/***命令以提供警报。*/警报:功能(ajax、响应、状态){警报(response.text,response.title);},/***提供jQuery css()函数的命令。*/css:功能(ajax、响应、状态){$(response.selector).css(respond.argument);},/***命令设置将用于此响应中其他命令的设置。*/设置:功能(ajax、响应、状态){if(response.merge){$.extend(true、Drupal.settings、response.settings);}其他{ajax.settings=响应设置;}},/***使用jQuery的数据API附加数据的命令。*/数据:功能(ajax、响应、状态){$(响应选择器).data(响应名称,响应值);},/***命令应用jQuery方法。*/调用:函数(ajax、响应、状态){var$element=$(response.selector);$element[response.method].apply($element,response.arguments);},/***命令重新排列表格。*/restipe:函数(ajax、响应、状态){//:偶数和:奇数颠倒,因为jQuery从0和//我们从1开始计数,所以我们不同步。//匹配父元素的直接子元素以允许嵌套。$('>tbody>tr:visible,>tr:可见',$(response.selector)).removeClass(“偶数加法”).filter(':even').addClass('add').end().filter(“:odd”).addClass(“even”);},/***命令添加css。**如果可用作浏览器,则使用专有的addImport方法*支持方法忽略动态添加的@import语句*样式表。*/add_css:函数(ajax、响应、状态){//以正常方式添加样式。$(“head”).prepend(response.data);//如果可用,请使用addImport方法在样式中添加导入。var match,importMatch=/^@import url\(“(.*)”\)$/igm;if(document.styleSheets[0].addImport&&importMatch.test(response.data)){importMatch.lastIndex=0;while(match=importMatch.exec(response.data)){document.styleSheets[0].addImport(匹配[1]);}}},/***用于更新窗体的生成ID的命令。*/updateBuildId:函数(ajax、响应、状态){$('输入[名称=“form_build_id”][值=“'+response['old']+'”]').val(response['new']);}};})(jQuery);