Taking brackets out of the callback.

The Yahoo API doesn't accept quotes in the callback (e.g. foo['bar']).  Since the callback registry is an object and all identifiers are prefixed with "c" now, we can use dot notation.
This commit is contained in:
tschaub
2012-03-21 09:18:23 -06:00
parent 127abf8782
commit 609e5f7f09
2 changed files with 12 additions and 9 deletions

View File

@@ -56,10 +56,11 @@ OpenLayers.Protocol.Script = OpenLayers.Class(OpenLayers.Protocol, {
/**
* APIProperty: callbackTemplate
* {String} Template for creating a unique callback function name
* for the registry. Should include ${id}.
* Default is "OpenLayers.Protocol.Script.registry['${id}']".
* for the registry. Should include ${id}. The ${id} variable will be
* replaced with a string identifier prefixed with a "c" (e.g. c1, c2).
* Default is "OpenLayers.Protocol.Script.registry.${id}".
*/
callbackTemplate: "OpenLayers.Protocol.Script.registry['${id}']",
callbackTemplate: "OpenLayers.Protocol.Script.registry.${id}",
/**
* APIProperty: callbackKey

View File

@@ -135,7 +135,7 @@
}
function test_createRequest(t) {
t.plan(5);
t.plan(6);
var protocol = new OpenLayers.Protocol.Script({
callbackKey: 'cb_key',
callbackPrefix: 'cb_prefix:'
@@ -153,15 +153,17 @@
var params = OpenLayers.Util.getParameters(script.src);
t.eq(params.k, "bar_param", "custom query string param");
t.eq(params.cb_key, "cb_prefix:OpenLayers.Protocol.Script.registry['bar']", "callback with prefix");
t.eq(params.cb_key, "cb_prefix:OpenLayers.Protocol.Script.registry.bar", "callback with prefix");
t.eq(script.id, 'OpenLayers_Protocol_Script_bar',
'created script has a correct id');
protocol.callbackTemplate = "OpenLayers.Protocol.Script.registry.${id}";
script = protocol.createRequest('http://bar_url/', {'k': 'bar_param'}, 'bar_callback');
t.eq(script.src, 'http://bar_url/?k=bar_param&cb_key=cb_prefix%3AOpenLayers.Protocol.Script.registry.bar',
'created script has a correct url with different template');
protocol.callbackTemplate = "customCallback(${id})";
script = protocol.createRequest('http://bar_url/', {'k': 'bar_param2'}, 'bar_callback');
params = OpenLayers.Util.getParameters(script.src);
t.eq(params.k, "bar_param2", "custom query string param");
t.eq(params.cb_key, "cb_prefix:customCallback(bar)", "custom callback with prefix");
OpenLayers.Protocol.Script.register = _register;