1 | /*! |
---|
2 | * Ext JS Library 3.4.0 |
---|
3 | * Copyright(c) 2006-2011 Sencha Inc. |
---|
4 | * licensing@sencha.com |
---|
5 | * http://www.sencha.com/license |
---|
6 | */ |
---|
7 | /** |
---|
8 | * @class Ext.Updater |
---|
9 | * @extends Ext.util.Observable |
---|
10 | * Provides AJAX-style update capabilities for Element objects. Updater can be used to {@link #update} |
---|
11 | * an {@link Ext.Element} once, or you can use {@link #startAutoRefresh} to set up an auto-updating |
---|
12 | * {@link Ext.Element Element} on a specific interval.<br><br> |
---|
13 | * Usage:<br> |
---|
14 | * <pre><code> |
---|
15 | * var el = Ext.get("foo"); // Get Ext.Element object |
---|
16 | * var mgr = el.getUpdater(); |
---|
17 | * mgr.update({ |
---|
18 | url: "http://myserver.com/index.php", |
---|
19 | params: { |
---|
20 | param1: "foo", |
---|
21 | param2: "bar" |
---|
22 | } |
---|
23 | * }); |
---|
24 | * ... |
---|
25 | * mgr.formUpdate("myFormId", "http://myserver.com/index.php"); |
---|
26 | * <br> |
---|
27 | * // or directly (returns the same Updater instance) |
---|
28 | * var mgr = new Ext.Updater("myElementId"); |
---|
29 | * mgr.startAutoRefresh(60, "http://myserver.com/index.php"); |
---|
30 | * mgr.on("update", myFcnNeedsToKnow); |
---|
31 | * <br> |
---|
32 | * // short handed call directly from the element object |
---|
33 | * Ext.get("foo").load({ |
---|
34 | url: "bar.php", |
---|
35 | scripts: true, |
---|
36 | params: "param1=foo&param2=bar", |
---|
37 | text: "Loading Foo..." |
---|
38 | * }); |
---|
39 | * </code></pre> |
---|
40 | * @constructor |
---|
41 | * Create new Updater directly. |
---|
42 | * @param {Mixed} el The element to update |
---|
43 | * @param {Boolean} forceNew (optional) By default the constructor checks to see if the passed element already |
---|
44 | * has an Updater and if it does it returns the same instance. This will skip that check (useful for extending this class). |
---|
45 | */ |
---|
46 | Ext.UpdateManager = Ext.Updater = Ext.extend(Ext.util.Observable, |
---|
47 | function() { |
---|
48 | var BEFOREUPDATE = "beforeupdate", |
---|
49 | UPDATE = "update", |
---|
50 | FAILURE = "failure"; |
---|
51 | |
---|
52 | // private |
---|
53 | function processSuccess(response){ |
---|
54 | var me = this; |
---|
55 | me.transaction = null; |
---|
56 | if (response.argument.form && response.argument.reset) { |
---|
57 | try { // put in try/catch since some older FF releases had problems with this |
---|
58 | response.argument.form.reset(); |
---|
59 | } catch(e){} |
---|
60 | } |
---|
61 | if (me.loadScripts) { |
---|
62 | me.renderer.render(me.el, response, me, |
---|
63 | updateComplete.createDelegate(me, [response])); |
---|
64 | } else { |
---|
65 | me.renderer.render(me.el, response, me); |
---|
66 | updateComplete.call(me, response); |
---|
67 | } |
---|
68 | } |
---|
69 | |
---|
70 | // private |
---|
71 | function updateComplete(response, type, success){ |
---|
72 | this.fireEvent(type || UPDATE, this.el, response); |
---|
73 | if(Ext.isFunction(response.argument.callback)){ |
---|
74 | response.argument.callback.call(response.argument.scope, this.el, Ext.isEmpty(success) ? true : false, response, response.argument.options); |
---|
75 | } |
---|
76 | } |
---|
77 | |
---|
78 | // private |
---|
79 | function processFailure(response){ |
---|
80 | updateComplete.call(this, response, FAILURE, !!(this.transaction = null)); |
---|
81 | } |
---|
82 | |
---|
83 | return { |
---|
84 | constructor: function(el, forceNew){ |
---|
85 | var me = this; |
---|
86 | el = Ext.get(el); |
---|
87 | if(!forceNew && el.updateManager){ |
---|
88 | return el.updateManager; |
---|
89 | } |
---|
90 | /** |
---|
91 | * The Element object |
---|
92 | * @type Ext.Element |
---|
93 | */ |
---|
94 | me.el = el; |
---|
95 | /** |
---|
96 | * Cached url to use for refreshes. Overwritten every time update() is called unless "discardUrl" param is set to true. |
---|
97 | * @type String |
---|
98 | */ |
---|
99 | me.defaultUrl = null; |
---|
100 | |
---|
101 | me.addEvents( |
---|
102 | /** |
---|
103 | * @event beforeupdate |
---|
104 | * Fired before an update is made, return false from your handler and the update is cancelled. |
---|
105 | * @param {Ext.Element} el |
---|
106 | * @param {String/Object/Function} url |
---|
107 | * @param {String/Object} params |
---|
108 | */ |
---|
109 | BEFOREUPDATE, |
---|
110 | /** |
---|
111 | * @event update |
---|
112 | * Fired after successful update is made. |
---|
113 | * @param {Ext.Element} el |
---|
114 | * @param {Object} oResponseObject The response Object |
---|
115 | */ |
---|
116 | UPDATE, |
---|
117 | /** |
---|
118 | * @event failure |
---|
119 | * Fired on update failure. |
---|
120 | * @param {Ext.Element} el |
---|
121 | * @param {Object} oResponseObject The response Object |
---|
122 | */ |
---|
123 | FAILURE |
---|
124 | ); |
---|
125 | |
---|
126 | Ext.apply(me, Ext.Updater.defaults); |
---|
127 | /** |
---|
128 | * Blank page URL to use with SSL file uploads (defaults to {@link Ext.Updater.defaults#sslBlankUrl}). |
---|
129 | * @property sslBlankUrl |
---|
130 | * @type String |
---|
131 | */ |
---|
132 | /** |
---|
133 | * Whether to append unique parameter on get request to disable caching (defaults to {@link Ext.Updater.defaults#disableCaching}). |
---|
134 | * @property disableCaching |
---|
135 | * @type Boolean |
---|
136 | */ |
---|
137 | /** |
---|
138 | * Text for loading indicator (defaults to {@link Ext.Updater.defaults#indicatorText}). |
---|
139 | * @property indicatorText |
---|
140 | * @type String |
---|
141 | */ |
---|
142 | /** |
---|
143 | * Whether to show indicatorText when loading (defaults to {@link Ext.Updater.defaults#showLoadIndicator}). |
---|
144 | * @property showLoadIndicator |
---|
145 | * @type String |
---|
146 | */ |
---|
147 | /** |
---|
148 | * Timeout for requests or form posts in seconds (defaults to {@link Ext.Updater.defaults#timeout}). |
---|
149 | * @property timeout |
---|
150 | * @type Number |
---|
151 | */ |
---|
152 | /** |
---|
153 | * True to process scripts in the output (defaults to {@link Ext.Updater.defaults#loadScripts}). |
---|
154 | * @property loadScripts |
---|
155 | * @type Boolean |
---|
156 | */ |
---|
157 | |
---|
158 | /** |
---|
159 | * Transaction object of the current executing transaction, or null if there is no active transaction. |
---|
160 | */ |
---|
161 | me.transaction = null; |
---|
162 | /** |
---|
163 | * Delegate for refresh() prebound to "this", use myUpdater.refreshDelegate.createCallback(arg1, arg2) to bind arguments |
---|
164 | * @type Function |
---|
165 | */ |
---|
166 | me.refreshDelegate = me.refresh.createDelegate(me); |
---|
167 | /** |
---|
168 | * Delegate for update() prebound to "this", use myUpdater.updateDelegate.createCallback(arg1, arg2) to bind arguments |
---|
169 | * @type Function |
---|
170 | */ |
---|
171 | me.updateDelegate = me.update.createDelegate(me); |
---|
172 | /** |
---|
173 | * Delegate for formUpdate() prebound to "this", use myUpdater.formUpdateDelegate.createCallback(arg1, arg2) to bind arguments |
---|
174 | * @type Function |
---|
175 | */ |
---|
176 | me.formUpdateDelegate = (me.formUpdate || function(){}).createDelegate(me); |
---|
177 | |
---|
178 | /** |
---|
179 | * The renderer for this Updater (defaults to {@link Ext.Updater.BasicRenderer}). |
---|
180 | */ |
---|
181 | me.renderer = me.renderer || me.getDefaultRenderer(); |
---|
182 | |
---|
183 | Ext.Updater.superclass.constructor.call(me); |
---|
184 | }, |
---|
185 | |
---|
186 | /** |
---|
187 | * Sets the content renderer for this Updater. See {@link Ext.Updater.BasicRenderer#render} for more details. |
---|
188 | * @param {Object} renderer The object implementing the render() method |
---|
189 | */ |
---|
190 | setRenderer : function(renderer){ |
---|
191 | this.renderer = renderer; |
---|
192 | }, |
---|
193 | |
---|
194 | /** |
---|
195 | * Returns the current content renderer for this Updater. See {@link Ext.Updater.BasicRenderer#render} for more details. |
---|
196 | * @return {Object} |
---|
197 | */ |
---|
198 | getRenderer : function(){ |
---|
199 | return this.renderer; |
---|
200 | }, |
---|
201 | |
---|
202 | /** |
---|
203 | * This is an overrideable method which returns a reference to a default |
---|
204 | * renderer class if none is specified when creating the Ext.Updater. |
---|
205 | * Defaults to {@link Ext.Updater.BasicRenderer} |
---|
206 | */ |
---|
207 | getDefaultRenderer: function() { |
---|
208 | return new Ext.Updater.BasicRenderer(); |
---|
209 | }, |
---|
210 | |
---|
211 | /** |
---|
212 | * Sets the default URL used for updates. |
---|
213 | * @param {String/Function} defaultUrl The url or a function to call to get the url |
---|
214 | */ |
---|
215 | setDefaultUrl : function(defaultUrl){ |
---|
216 | this.defaultUrl = defaultUrl; |
---|
217 | }, |
---|
218 | |
---|
219 | /** |
---|
220 | * Get the Element this Updater is bound to |
---|
221 | * @return {Ext.Element} The element |
---|
222 | */ |
---|
223 | getEl : function(){ |
---|
224 | return this.el; |
---|
225 | }, |
---|
226 | |
---|
227 | /** |
---|
228 | * Performs an <b>asynchronous</b> request, updating this element with the response. |
---|
229 | * If params are specified it uses POST, otherwise it uses GET.<br><br> |
---|
230 | * <b>Note:</b> Due to the asynchronous nature of remote server requests, the Element |
---|
231 | * will not have been fully updated when the function returns. To post-process the returned |
---|
232 | * data, use the callback option, or an <b><code>update</code></b> event handler. |
---|
233 | * @param {Object} options A config object containing any of the following options:<ul> |
---|
234 | * <li>url : <b>String/Function</b><p class="sub-desc">The URL to request or a function which |
---|
235 | * <i>returns</i> the URL (defaults to the value of {@link Ext.Ajax#url} if not specified).</p></li> |
---|
236 | * <li>method : <b>String</b><p class="sub-desc">The HTTP method to |
---|
237 | * use. Defaults to POST if the <code>params</code> argument is present, otherwise GET.</p></li> |
---|
238 | * <li>params : <b>String/Object/Function</b><p class="sub-desc">The |
---|
239 | * parameters to pass to the server (defaults to none). These may be specified as a url-encoded |
---|
240 | * string, or as an object containing properties which represent parameters, |
---|
241 | * or as a function, which returns such an object.</p></li> |
---|
242 | * <li>scripts : <b>Boolean</b><p class="sub-desc">If <code>true</code> |
---|
243 | * any <script> tags embedded in the response text will be extracted |
---|
244 | * and executed (defaults to {@link Ext.Updater.defaults#loadScripts}). If this option is specified, |
---|
245 | * the callback will be called <i>after</i> the execution of the scripts.</p></li> |
---|
246 | * <li>callback : <b>Function</b><p class="sub-desc">A function to |
---|
247 | * be called when the response from the server arrives. The following |
---|
248 | * parameters are passed:<ul> |
---|
249 | * <li><b>el</b> : Ext.Element<p class="sub-desc">The Element being updated.</p></li> |
---|
250 | * <li><b>success</b> : Boolean<p class="sub-desc">True for success, false for failure.</p></li> |
---|
251 | * <li><b>response</b> : XMLHttpRequest<p class="sub-desc">The XMLHttpRequest which processed the update.</p></li> |
---|
252 | * <li><b>options</b> : Object<p class="sub-desc">The config object passed to the update call.</p></li></ul> |
---|
253 | * </p></li> |
---|
254 | * <li>scope : <b>Object</b><p class="sub-desc">The scope in which |
---|
255 | * to execute the callback (The callback's <code>this</code> reference.) If the |
---|
256 | * <code>params</code> argument is a function, this scope is used for that function also.</p></li> |
---|
257 | * <li>discardUrl : <b>Boolean</b><p class="sub-desc">By default, the URL of this request becomes |
---|
258 | * the default URL for this Updater object, and will be subsequently used in {@link #refresh} |
---|
259 | * calls. To bypass this behavior, pass <code>discardUrl:true</code> (defaults to false).</p></li> |
---|
260 | * <li>timeout : <b>Number</b><p class="sub-desc">The number of seconds to wait for a response before |
---|
261 | * timing out (defaults to {@link Ext.Updater.defaults#timeout}).</p></li> |
---|
262 | * <li>text : <b>String</b><p class="sub-desc">The text to use as the innerHTML of the |
---|
263 | * {@link Ext.Updater.defaults#indicatorText} div (defaults to 'Loading...'). To replace the entire div, not |
---|
264 | * just the text, override {@link Ext.Updater.defaults#indicatorText} directly.</p></li> |
---|
265 | * <li>nocache : <b>Boolean</b><p class="sub-desc">Only needed for GET |
---|
266 | * requests, this option causes an extra, auto-generated parameter to be appended to the request |
---|
267 | * to defeat caching (defaults to {@link Ext.Updater.defaults#disableCaching}).</p></li></ul> |
---|
268 | * <p> |
---|
269 | * For example: |
---|
270 | <pre><code> |
---|
271 | um.update({ |
---|
272 | url: "your-url.php", |
---|
273 | params: {param1: "foo", param2: "bar"}, // or a URL encoded string |
---|
274 | callback: yourFunction, |
---|
275 | scope: yourObject, //(optional scope) |
---|
276 | discardUrl: true, |
---|
277 | nocache: true, |
---|
278 | text: "Loading...", |
---|
279 | timeout: 60, |
---|
280 | scripts: false // Save time by avoiding RegExp execution. |
---|
281 | }); |
---|
282 | </code></pre> |
---|
283 | */ |
---|
284 | update : function(url, params, callback, discardUrl){ |
---|
285 | var me = this, |
---|
286 | cfg, |
---|
287 | callerScope; |
---|
288 | |
---|
289 | if(me.fireEvent(BEFOREUPDATE, me.el, url, params) !== false){ |
---|
290 | if(Ext.isObject(url)){ // must be config object |
---|
291 | cfg = url; |
---|
292 | url = cfg.url; |
---|
293 | params = params || cfg.params; |
---|
294 | callback = callback || cfg.callback; |
---|
295 | discardUrl = discardUrl || cfg.discardUrl; |
---|
296 | callerScope = cfg.scope; |
---|
297 | if(!Ext.isEmpty(cfg.nocache)){me.disableCaching = cfg.nocache;}; |
---|
298 | if(!Ext.isEmpty(cfg.text)){me.indicatorText = '<div class="loading-indicator">'+cfg.text+"</div>";}; |
---|
299 | if(!Ext.isEmpty(cfg.scripts)){me.loadScripts = cfg.scripts;}; |
---|
300 | if(!Ext.isEmpty(cfg.timeout)){me.timeout = cfg.timeout;}; |
---|
301 | } |
---|
302 | me.showLoading(); |
---|
303 | |
---|
304 | if(!discardUrl){ |
---|
305 | me.defaultUrl = url; |
---|
306 | } |
---|
307 | if(Ext.isFunction(url)){ |
---|
308 | url = url.call(me); |
---|
309 | } |
---|
310 | |
---|
311 | var o = Ext.apply({}, { |
---|
312 | url : url, |
---|
313 | params: (Ext.isFunction(params) && callerScope) ? params.createDelegate(callerScope) : params, |
---|
314 | success: processSuccess, |
---|
315 | failure: processFailure, |
---|
316 | scope: me, |
---|
317 | callback: undefined, |
---|
318 | timeout: (me.timeout*1000), |
---|
319 | disableCaching: me.disableCaching, |
---|
320 | argument: { |
---|
321 | "options": cfg, |
---|
322 | "url": url, |
---|
323 | "form": null, |
---|
324 | "callback": callback, |
---|
325 | "scope": callerScope || window, |
---|
326 | "params": params |
---|
327 | } |
---|
328 | }, cfg); |
---|
329 | |
---|
330 | me.transaction = Ext.Ajax.request(o); |
---|
331 | } |
---|
332 | }, |
---|
333 | |
---|
334 | /** |
---|
335 | * <p>Performs an asynchronous form post, updating this element with the response. If the form has the attribute |
---|
336 | * enctype="<a href="http://www.faqs.org/rfcs/rfc2388.html">multipart/form-data</a>", it assumes it's a file upload. |
---|
337 | * Uses this.sslBlankUrl for SSL file uploads to prevent IE security warning.</p> |
---|
338 | * <p>File uploads are not performed using normal "Ajax" techniques, that is they are <b>not</b> |
---|
339 | * performed using XMLHttpRequests. Instead the form is submitted in the standard manner with the |
---|
340 | * DOM <code><form></code> element temporarily modified to have its |
---|
341 | * <a href="http://www.w3.org/TR/REC-html40/present/frames.html#adef-target">target</a> set to refer |
---|
342 | * to a dynamically generated, hidden <code><iframe></code> which is inserted into the document |
---|
343 | * but removed after the return data has been gathered.</p> |
---|
344 | * <p>Be aware that file upload packets, sent with the content type <a href="http://www.faqs.org/rfcs/rfc2388.html">multipart/form-data</a> |
---|
345 | * and some server technologies (notably JEE) may require some custom processing in order to |
---|
346 | * retrieve parameter names and parameter values from the packet content.</p> |
---|
347 | * @param {String/HTMLElement} form The form Id or form element |
---|
348 | * @param {String} url (optional) The url to pass the form to. If omitted the action attribute on the form will be used. |
---|
349 | * @param {Boolean} reset (optional) Whether to try to reset the form after the update |
---|
350 | * @param {Function} callback (optional) Callback when transaction is complete. The following |
---|
351 | * parameters are passed:<ul> |
---|
352 | * <li><b>el</b> : Ext.Element<p class="sub-desc">The Element being updated.</p></li> |
---|
353 | * <li><b>success</b> : Boolean<p class="sub-desc">True for success, false for failure.</p></li> |
---|
354 | * <li><b>response</b> : XMLHttpRequest<p class="sub-desc">The XMLHttpRequest which processed the update.</p></li></ul> |
---|
355 | */ |
---|
356 | formUpdate : function(form, url, reset, callback){ |
---|
357 | var me = this; |
---|
358 | if(me.fireEvent(BEFOREUPDATE, me.el, form, url) !== false){ |
---|
359 | if(Ext.isFunction(url)){ |
---|
360 | url = url.call(me); |
---|
361 | } |
---|
362 | form = Ext.getDom(form); |
---|
363 | me.transaction = Ext.Ajax.request({ |
---|
364 | form: form, |
---|
365 | url:url, |
---|
366 | success: processSuccess, |
---|
367 | failure: processFailure, |
---|
368 | scope: me, |
---|
369 | timeout: (me.timeout*1000), |
---|
370 | argument: { |
---|
371 | "url": url, |
---|
372 | "form": form, |
---|
373 | "callback": callback, |
---|
374 | "reset": reset |
---|
375 | } |
---|
376 | }); |
---|
377 | me.showLoading.defer(1, me); |
---|
378 | } |
---|
379 | }, |
---|
380 | |
---|
381 | /** |
---|
382 | * Set this element to auto refresh. Can be canceled by calling {@link #stopAutoRefresh}. |
---|
383 | * @param {Number} interval How often to update (in seconds). |
---|
384 | * @param {String/Object/Function} url (optional) The url for this request, a config object in the same format |
---|
385 | * supported by {@link #load}, or a function to call to get the url (defaults to the last used url). Note that while |
---|
386 | * the url used in a load call can be reused by this method, other load config options will not be reused and must be |
---|
387 | * sepcified as part of a config object passed as this paramter if needed. |
---|
388 | * @param {String/Object} params (optional) The parameters to pass as either a url encoded string |
---|
389 | * "¶m1=1¶m2=2" or as an object {param1: 1, param2: 2} |
---|
390 | * @param {Function} callback (optional) Callback when transaction is complete - called with signature (oElement, bSuccess) |
---|
391 | * @param {Boolean} refreshNow (optional) Whether to execute the refresh now, or wait the interval |
---|
392 | */ |
---|
393 | startAutoRefresh : function(interval, url, params, callback, refreshNow){ |
---|
394 | var me = this; |
---|
395 | if(refreshNow){ |
---|
396 | me.update(url || me.defaultUrl, params, callback, true); |
---|
397 | } |
---|
398 | if(me.autoRefreshProcId){ |
---|
399 | clearInterval(me.autoRefreshProcId); |
---|
400 | } |
---|
401 | me.autoRefreshProcId = setInterval(me.update.createDelegate(me, [url || me.defaultUrl, params, callback, true]), interval * 1000); |
---|
402 | }, |
---|
403 | |
---|
404 | /** |
---|
405 | * Stop auto refresh on this element. |
---|
406 | */ |
---|
407 | stopAutoRefresh : function(){ |
---|
408 | if(this.autoRefreshProcId){ |
---|
409 | clearInterval(this.autoRefreshProcId); |
---|
410 | delete this.autoRefreshProcId; |
---|
411 | } |
---|
412 | }, |
---|
413 | |
---|
414 | /** |
---|
415 | * Returns true if the Updater is currently set to auto refresh its content (see {@link #startAutoRefresh}), otherwise false. |
---|
416 | */ |
---|
417 | isAutoRefreshing : function(){ |
---|
418 | return !!this.autoRefreshProcId; |
---|
419 | }, |
---|
420 | |
---|
421 | /** |
---|
422 | * Display the element's "loading" state. By default, the element is updated with {@link #indicatorText}. This |
---|
423 | * method may be overridden to perform a custom action while this Updater is actively updating its contents. |
---|
424 | */ |
---|
425 | showLoading : function(){ |
---|
426 | if(this.showLoadIndicator){ |
---|
427 | this.el.dom.innerHTML = this.indicatorText; |
---|
428 | } |
---|
429 | }, |
---|
430 | |
---|
431 | /** |
---|
432 | * Aborts the currently executing transaction, if any. |
---|
433 | */ |
---|
434 | abort : function(){ |
---|
435 | if(this.transaction){ |
---|
436 | Ext.Ajax.abort(this.transaction); |
---|
437 | } |
---|
438 | }, |
---|
439 | |
---|
440 | /** |
---|
441 | * Returns true if an update is in progress, otherwise false. |
---|
442 | * @return {Boolean} |
---|
443 | */ |
---|
444 | isUpdating : function(){ |
---|
445 | return this.transaction ? Ext.Ajax.isLoading(this.transaction) : false; |
---|
446 | }, |
---|
447 | |
---|
448 | /** |
---|
449 | * Refresh the element with the last used url or defaultUrl. If there is no url, it returns immediately |
---|
450 | * @param {Function} callback (optional) Callback when transaction is complete - called with signature (oElement, bSuccess) |
---|
451 | */ |
---|
452 | refresh : function(callback){ |
---|
453 | if(this.defaultUrl){ |
---|
454 | this.update(this.defaultUrl, null, callback, true); |
---|
455 | } |
---|
456 | } |
---|
457 | }; |
---|
458 | }()); |
---|
459 | |
---|
460 | /** |
---|
461 | * @class Ext.Updater.defaults |
---|
462 | * The defaults collection enables customizing the default properties of Updater |
---|
463 | */ |
---|
464 | Ext.Updater.defaults = { |
---|
465 | /** |
---|
466 | * Timeout for requests or form posts in seconds (defaults to 30 seconds). |
---|
467 | * @type Number |
---|
468 | */ |
---|
469 | timeout : 30, |
---|
470 | /** |
---|
471 | * True to append a unique parameter to GET requests to disable caching (defaults to false). |
---|
472 | * @type Boolean |
---|
473 | */ |
---|
474 | disableCaching : false, |
---|
475 | /** |
---|
476 | * Whether or not to show {@link #indicatorText} during loading (defaults to true). |
---|
477 | * @type Boolean |
---|
478 | */ |
---|
479 | showLoadIndicator : true, |
---|
480 | /** |
---|
481 | * Text for loading indicator (defaults to '<div class="loading-indicator">Loading...</div>'). |
---|
482 | * @type String |
---|
483 | */ |
---|
484 | indicatorText : '<div class="loading-indicator">Loading...</div>', |
---|
485 | /** |
---|
486 | * True to process scripts by default (defaults to false). |
---|
487 | * @type Boolean |
---|
488 | */ |
---|
489 | loadScripts : false, |
---|
490 | /** |
---|
491 | * Blank page URL to use with SSL file uploads (defaults to {@link Ext#SSL_SECURE_URL} if set, or "javascript:false"). |
---|
492 | * @type String |
---|
493 | */ |
---|
494 | sslBlankUrl : Ext.SSL_SECURE_URL |
---|
495 | }; |
---|
496 | |
---|
497 | |
---|
498 | /** |
---|
499 | * Static convenience method. <b>This method is deprecated in favor of el.load({url:'foo.php', ...})</b>. |
---|
500 | * Usage: |
---|
501 | * <pre><code>Ext.Updater.updateElement("my-div", "stuff.php");</code></pre> |
---|
502 | * @param {Mixed} el The element to update |
---|
503 | * @param {String} url The url |
---|
504 | * @param {String/Object} params (optional) Url encoded param string or an object of name/value pairs |
---|
505 | * @param {Object} options (optional) A config object with any of the Updater properties you want to set - for |
---|
506 | * example: {disableCaching:true, indicatorText: "Loading data..."} |
---|
507 | * @static |
---|
508 | * @deprecated |
---|
509 | * @member Ext.Updater |
---|
510 | */ |
---|
511 | Ext.Updater.updateElement = function(el, url, params, options){ |
---|
512 | var um = Ext.get(el).getUpdater(); |
---|
513 | Ext.apply(um, options); |
---|
514 | um.update(url, params, options ? options.callback : null); |
---|
515 | }; |
---|
516 | |
---|
517 | /** |
---|
518 | * @class Ext.Updater.BasicRenderer |
---|
519 | * <p>This class is a base class implementing a simple render method which updates an element using results from an Ajax request.</p> |
---|
520 | * <p>The BasicRenderer updates the element's innerHTML with the responseText. To perform a custom render (i.e. XML or JSON processing), |
---|
521 | * create an object with a conforming {@link #render} method and pass it to setRenderer on the Updater.</p> |
---|
522 | */ |
---|
523 | Ext.Updater.BasicRenderer = function(){}; |
---|
524 | |
---|
525 | Ext.Updater.BasicRenderer.prototype = { |
---|
526 | /** |
---|
527 | * This method is called when an Ajax response is received, and an Element needs updating. |
---|
528 | * @param {Ext.Element} el The element being rendered |
---|
529 | * @param {Object} xhr The XMLHttpRequest object |
---|
530 | * @param {Updater} updateManager The calling update manager |
---|
531 | * @param {Function} callback A callback that will need to be called if loadScripts is true on the Updater |
---|
532 | */ |
---|
533 | render : function(el, response, updateManager, callback){ |
---|
534 | el.update(response.responseText, updateManager.loadScripts, callback); |
---|
535 | } |
---|
536 | }; |
---|