Okay, sorry for the delay, took me a little time to put this together

Here is the container html

<!DOCTYPE html>
<html>
<head>
        <style>
                .gadget {
                        width: 500;
                        height: 500;
                        border: 1px solid silver;
                }
        </style>
        <script type="text/javascript"
src="../../../gadgets/js/container:open-views:opensearch:rpc:xmlutil:pubsub
-2.js?c=1&debug=1&container=default"></script>
        <script type="text/javascript">
                var container, gadgetUrl =
"http://localhost/cwfo/gadgets/HelloWorld.xml";;
                
                function addGadget() {
                        console.log("preloading gadget:" + gadgetUrl);
                        container.preloadGadget(gadgetUrl, addGadgetHandler);
                }
                
                function addGadgetHandler(resp) {
                        var gSpec = resp[gadgetUrl];
                        if (typeof gSpec !== 'undefined') {
                                var parent = window.location.origin;
                                var container = 
document.getElementById("gadgetContainer");
                                iFrame = "<iframe class='gadget' src='" + 
gSpec.iframeUrls["default"]
+ "#parent=" + parent + "&rpctoken=1234" + "'>";
                                container.innerHTML = iFrame;
                                console.log("inside add gadget handler");
                        } else {
                                alert("unable to add gadget");
                        }
                }
                
                function msgHandler(msg) {
                        console.log(msg);
                }
                
                var urlBase = location.href.substr(0, 
location.href.indexOf('/cwfo'));
                var contextRoot = urlBase.substr(urlBase.indexOf(location.host) 
+
location.host.length);
                
                var testConfig = {};
                testConfig[osapi.container.ServiceConfig.API_PATH] = 
contextRoot +
'/rpc';
                testConfig[osapi.container.ContainerConfig.RENDER_DEBUG] = '1';
                testConfig[osapi.container.ContainerConfig.GET_CONTAINER_TOKEN] 
=
function(callback) {
                        gadgets.log('Updating container security token.');
                        callback('john.doe:john.doe:appid:cont:url:0:default', 
0);
                };
                container = new osapi.container.Container(testConfig);
                container.rpcRegister("initial_gadget_message", msgHandler);
        </script>
</head>
<body>
        <div>
                <button onclick="addGadget()">Click To Add</button>
                <div id="gadgetContainer"></div>
        </div>
</body>
</html>


I am using version 2.5 update 1
-- 
Wade Girard | Principal Software Engineer

Calabrio, Inc. | 400 1st Avenue N, Ste 300 | Minneapolis, MN 55401
Phone: 763.795.7798




On 2/12/14, 3:24 PM, "Ryan Baxter" <[email protected]> wrote:

>Wade can you provide a sample container html file so I can try it
>locally?  What version of Shindig are you using?
>
>On Wed, Feb 12, 2014 at 3:50 PM, Wade Girard <[email protected]>
>wrote:
>> Hi Ryan,
>>         Thank you for your suggestions. I changed the gadget to this
>> <Module>
>>   <ModulePrefs title="Hello World">
>>     <Require feature="rpc" />
>>   </ModulePrefs>
>>   <UserPref name="myName" display_name="Name" default_value="Wade" />
>>   <Content type="html">
>>         <![CDATA[
>>         <script type="text/javascript">
>>                 function init() {
>>                         gadgets.rpc.call(null,
>>'initial_gadget_message', null, 'Hello there!
>> Pre-onload message sent successfully.');
>>                 }
>>                 gadgets.util.registerOnLoadHandler(init);
>>         </script>
>>         <div id="widgetNode">Hello World</div>
>>         ]]>
>>   </Content>
>> </Module>
>>
>>
>> And Removed the code that did the gadgets.rpc.register and
>> gadgets.rpc.setupReceiver and added the code to the container. Here is
>> what it looks like (added the full config, in case I am missing
>>something
>> there)
>>
>> var testConfig = {};
>>                 
>>testConfig[osapi.container.ServiceConfig.API_PATH] =
>> 'http://localhost/rpc';
>>                 
>>testConfig[osapi.container.ContainerConfig.RENDER_DEBUG] = '1';
>>                 
>>testConfig[osapi.container.ContainerConfig.GET_CONTAINER_TOKEN] =
>> function(callback) {
>>                                 gadgets.log('Updating container
>>security token.');
>>                 
>>callback('john.doe:john.doe:appid:cont:url:0:default', 10);
>>                         };
>> this._container = new osapi.container.Container(testConfig);
>>                 
>>this._container.rpcRegister("initial_gadget_message",
>> _setTitleHandler));
>>
>>
>>
>> Unfortunately I am still getting the same message in the firebug console
>> No relay set (used as window.postMessage targetOrigin), cannot send
>> cross-domain message
>>
>>
>> Thanks for all your help.
>> --
>> Wade Girard | Principal Software Engineer
>>
>> Calabrio, Inc. | 400 1st Avenue N, Ste 300 | Minneapolis, MN 55401
>> Phone: 763.795.7798
>>
>>
>>
>>
>> On 2/12/14, 2:31 PM, "Ryan Baxter" <[email protected]> wrote:
>>
>>>Hi Wade,
>>>
>>>A couple of comments.
>>>
>>>1.)  In your gadget you probably want to wrap gadgets.rpc.call in a
>>>function passed to gadgets.util.registerOnLoadHandler to make sure the
>>>gadget is completely initialized before making that rpc call.
>>>2.)  In your container I would suggest you use the container feature.
>>>It takes care of some of the nasty stuff with regards to registering
>>>RPC callback functions.  All you then have to do is call
>>>container.rpcRegister('initial_gadget_message', _messageHandler)
>>>
>>>On Wed, Feb 12, 2014 at 2:16 PM, Wade Girard <[email protected]>
>>>wrote:
>>>> I am trying to implement a container running under Shindig.
>>>>
>>>> I am having difficulty getting the rpc (Gadget->Contianer)
>>>>communication working.
>>>>
>>>> Here is my simple gadget:
>>>>
>>>> <Module>
>>>>
>>>>   <ModulePrefs title="Hello World">
>>>>
>>>>     <Require feature="rpc" />
>>>>
>>>>   </ModulePrefs>
>>>>
>>>>   <UserPref name="myName" display_name="Name" default_value="Wade" />
>>>>
>>>>   <Content type="html">
>>>>
>>>> <![CDATA[
>>>>
>>>> <script type="text/javascript">
>>>>
>>>> gadgets.rpc.call(null, 'initial_gadget_message', null, 'Hello there!
>>>>Pre-onload message sent successfully.');
>>>>
>>>> </script>
>>>>
>>>> <div id="widgetNode">Hello World</div>
>>>>
>>>> ]]>
>>>>
>>>>   </Content>
>>>>
>>>> </Module>
>>>>
>>>> Here is what I have done on the server (adapted)
>>>>
>>>> var id = "gadget_" + (this._static.id++);
>>>>
>>>> gadgets.rpc.register("initial_gadget_message", _messageHandler));
>>>>
>>>> var parent = window.location.origin; // also tried
>>>>window.location.href
>>>>
>>>> iFrameNode.src = obj.iFrameUrls["default"] + "#parent=" parent +
>>>>"&rpctoken=12345";
>>>>
>>>> iFrameNode.id = id;
>>>>
>>>> gadgets.rpc.setupReceiver(id);
>>>>
>>>> The container is at port 80, the gadget is at port 8080, on the same
>>>>server (localhost)
>>>> The gadget loads in the container, but most of the time produces this
>>>>message, sometimes, vary rarely, it will not produce the message.
>>>>
>>>> No relay set (used as window.postMessage targetOrigin), cannot send
>>>>cross-domain message
>>>>
>>>> Any help is appreciated, thanks
>>>> --
>>>> Wade Girard | Principal Software Engineer
>>>> Calabrio, Inc. | 400 1st Avenue N, Ste 300 | Minneapolis, MN 55401
>>>> Phone: 763.795.7798
>>

Reply via email to