// these vars will be set by the calling page var hasConfig = false; var wUrl = null; var appRegId = null; var pnCode = null; var insertWidgetScriptUrl = null; var channel = null; var baseTrackerUrl = null; var galleryCdnUrl = null; // these vars are local var head = document.getElementsByTagName('head').item(0); var appId = null; var owner = null; var viewer = null; var firstView = false; var prefs = gadgets.views.getParams(); if(prefs["mode"]=="edit"){ firstView = true; } var resizeOpenSocialGadget = function(height){ if(gadgets.window){ gadgets.window.adjustHeight(height); } }; function init() { var dataRequest = opensocial.newDataRequest(); dataRequest.add(dataRequest.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER), 'owner'); dataRequest.add(dataRequest.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), 'viewer'); dataRequest.add(dataRequest.newFetchPersonAppDataRequest(opensocial.DataRequest.PersonId.OWNER, 'appId'), 'appId'); dataRequest.send(loadData); } function loadData(response) { var ownerData = response.get('owner'); if (response.hadError() || ownerData.hadError()) { return; } owner = ownerData.getData(); var viewerData = response.get('viewer'); if (viewerData.hadError()) { return; } viewer = viewerData.getData(); var appData = response.get('appId'); if (response.hadError() || appData.hadError()) { return; } var allAppData = appData.getData(); if (allAppData[owner.getId()]) { appId = allAppData[owner.getId()]['appId']; } if ((!appId || appId == 'false') && (viewer.getId() == owner.getId())) { doInstall(); } else { loadMain(); } } function doInstall() { var installScript = document.createElement('script'); installScript.setAttribute('src', wUrl + '/OpenSocialInstall.js?regId=' + appRegId + '&pn=' + pnCode + '&ownerId=' + escape(owner.getId()) + '&callback=handleInstall'); head.appendChild(installScript); } function handleInstall(response) { if (response.appId) { appId = response.appId; var req = opensocial.newDataRequest(); req.add(req.newUpdatePersonAppDataRequest(opensocial.DataRequest.PersonId.VIEWER, 'appId', appId)); req.send(); firstView = true; } if (appId == null) { return; } loadMain(); } function loadMain() { var insertWidgetScript = document.createElement('script'); insertWidgetScript.setAttribute('src', insertWidgetScriptUrl); insertWidgetScript.setAttribute('id', 'widgetbox_insertwidget_script'); insertWidgetScript.type = 'text/javascript'; head.appendChild(insertWidgetScript); var iframe = document.getElementById('snapp-iframe'); iframe.setAttribute('src', wUrl + '/integration/socialapp_subscription.jsp?osHelperChannel=' + channel + '&appInstId=' + appId + '&ownerId=' + escape(owner.getId())); if (!window.WIDGETBOX) { if (!window.WIDGETBOXINITLISTENERS) window.WIDGETBOXINITLISTENERS = new Array(); window.WIDGETBOXINITLISTENERS.push(loadHandler); } else { loadHandler(); } } function loadHandler() { WIDGETBOX.load('opensocial.snapp', libReadyCallback); } function libReadyCallback() { WIDGETBOX.subscriber.WbxSnapp.appInstId = appId; WIDGETBOX.subscriber.WbxSnapp.ownerId = owner.getId(); WIDGETBOX.subscriber.WbxSnapp.isOwner = (viewer.getId() == owner.getId()); WIDGETBOX.subscriber.WbxSnapp.hasConfig = hasConfig; WIDGETBOX.subscriber.WbxSnapp.openSocialView = "canvas"; WIDGETBOX.subscriber.WbxSnapp.resizeOpenSocialGadget = resizeOpenSocialGadget; var supported_views = gadgets.views.getSupportedViews(); WIDGETBOX.subscriber.WbxSnapp.supportsPreview = (supported_views["preview"])?true:false; if (firstView || prefs["edit"]=='true') { if(firstView) WIDGETBOX.subscriber.WbxSnapp.addCookieSwf(runtimeCdnUrl, appId); if(hasConfig){ WIDGETBOX.subscriber.WbxSnapp.showSettings(); } else { WIDGETBOX.subscriber.WbxSnapp.hideSettings(); } } else { WIDGETBOX.subscriber.WbxSnapp.hideSettings(); } } function navigateToAddPage(){ if(WIDGETBOX.subscriber.WbxSnapp.supportsPreview){ gadgets.views.requestNavigateTo(supported_views["preview"]); } }