Modified: 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_opensocial.js
URL: 
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_opensocial.js?rev=1490040&r1=1490039&r2=1490040&view=diff
==============================================================================
--- 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_opensocial.js
 (original)
+++ 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_opensocial.js
 Wed Jun  5 21:47:52 2013
@@ -17,227 +17,222 @@
  * under the License.
  */
 
-rave.registerProvider(
-    'opensocial',
-    (function () {
-        var exports = {};
-
-        var container;
-
-        exports.init = function () {
-            var containerConfig = {};
-            containerConfig[osapi.container.ServiceConfig.API_PATH] = "/rpc";
-            //TODO: if we want to support js debug mode in core, figure it out.
-            //containerConfig[osapi.container.ContainerConfig.RENDER_DEBUG] = 
rave.getJavaScriptDebugMode();
-            container = new osapi.container.Container(containerConfig);
+define(['underscore', './rave_openAjaxHub', './rave_log', 'opensocial'], 
function(_, getManagedHub, log){
+    var exports = {};
 
-            gadgets.pubsub2router.init({
-                hub: rave.getManagedHub()
-            });
-
-            rpcRegister();
-            implementViews();
-        }
-
-        function rpcRegister() {
-            container.rpcRegister('requestNavigateTo', requestNavigateTo);
-            container.rpcRegister('set_pref', setPref);
-            container.rpcRegister('set_title', setTitle);
-            container.rpcRegister('hideWidget', hideWidget);
-            container.rpcRegister('showWidget', showWidget);
-        }
-
-        function requestNavigateTo(args, viewName, opt_params, opt_ownerId) {
-            var widget = args.gs._widget,
-                viewSurface = viewName.split('.')[0],
-                renderInto = rave.getView(viewSurface) ? viewSurface : 
widget._el;
-
-            widget.render(renderInto, {view: viewName, view_params: 
opt_params, ownerId: opt_ownerId});
-        }
-
-        function setPref(args, editToken, prefName, prefValue) {
-            var widget = args.gs._widget;
-            widget.savePreference(prefName, prefValue);
-        }
+    var container;
 
-        /*
-         TODO: these rely on a gadget's view implementing a method
-         */
-        function setTitle(args) {
-            var widget = args.gs._widget;
-            if (widget._view && widget._view.setTitle) {
-                var title = _.isArray(args.a) ? args.a[0] : args.a;
-                widget._view.setTitle(title);
-            }
-        }
-
-        function hideWidget(args, viewName, opt_params, opt_ownerId) {
-            var widget = args.gs._widget;
-            if (widget._view && widget._view.collapse) {
-                widget._view.collapse();
-            }
-        }
+    function init () {
+        var containerConfig = {};
+        containerConfig[osapi.container.ServiceConfig.API_PATH] = "/rpc";
+        //TODO: if we want to support js debug mode in core, figure it out.
+        //containerConfig[osapi.container.ContainerConfig.RENDER_DEBUG] = 
rave.getJavaScriptDebugMode();
+        container = new osapi.container.Container(containerConfig);
+
+        gadgets.pubsub2router.init({
+            hub: getManagedHub()
+        });
+
+        rpcRegister();
+        implementViews();
+    }
+
+    function rpcRegister() {
+        container.rpcRegister('requestNavigateTo', requestNavigateTo);
+        container.rpcRegister('set_pref', setPref);
+        container.rpcRegister('set_title', setTitle);
+        container.rpcRegister('hideWidget', hideWidget);
+        container.rpcRegister('showWidget', showWidget);
+    }
+
+    function requestNavigateTo(args, viewName, opt_params, opt_ownerId) {
+        var widget = args.gs._widget;
+
+        widget.navigate({view: viewName, view_params: opt_params, ownerId: 
opt_ownerId});
+    }
+
+    function setPref(args, editToken, prefName, prefValue) {
+        var widget = args.gs._widget;
+        widget.savePreference(prefName, prefValue);
+    }
+
+    /*
+     TODO: these rely on a gadget's view implementing a method
+     */
+    function setTitle(args) {
+        var widget = args.gs._widget;
+        if (widget._view && widget._view.setTitle) {
+            var title = _.isArray(args.a) ? args.a[0] : args.a;
+            widget._view.setTitle(title);
+        }
+    }
+
+    function hideWidget(args, viewName, opt_params, opt_ownerId) {
+        var widget = args.gs._widget;
+        if (widget._view && widget._view.collapse) {
+            widget._view.collapse();
+        }
+    }
+
+    function showWidget(args, viewName, opt_params, opt_ownerId) {
+        var widget = args.gs._widget;
+        if (widget._view && widget._view.expand) {
+            widget._view.expand();
+        }
+    }
+
+    function implementViews() {
+        container.views.createElementForGadget = function (metadata, rel, 
opt_view, opt_viewTarget, opt_coordinates, parentSite, opt_callback) {
+            if (opt_viewTarget) {
+                var el;
+
+                var prefs = (metadata && metadata.views && 
metadata.views[opt_view])
+                var view = rave.renderView(opt_viewTarget, prefs);
+                if (view.getWidgetSite) {
+                    el = view.getWidgetSite();
+                    el.setAttribute('data-rave-view', view._uid);
+                }
 
-        function showWidget(args, viewName, opt_params, opt_ownerId) {
-            var widget = args.gs._widget;
-            if (widget._view && widget._view.expand) {
-                widget._view.expand();
+                return el;
             }
-        }
+        };
 
-        function implementViews() {
-            container.views.createElementForGadget = function (metadata, rel, 
opt_view, opt_viewTarget, opt_coordinates, parentSite, opt_callback) {
-                if (opt_viewTarget) {
-                    var el = document.createElement('div');
+        container.views.createElementForEmbeddedExperience = function (rel, 
opt_gadgetInfo, opt_viewTarget, opt_coordinates, parentSite, opt_callback) {
+            var widgetUrl = opt_gadgetInfo.url;
 
-                    var prefs = (metadata && metadata.views && 
metadata.views[opt_view])
-                    var view = rave.renderView(opt_viewTarget, prefs);
-                    if(view.inject){
-                        view.inject(el);
-                    }
-                    if (view.getWidgetSite) {
-                        el = view.getWidgetSite();
-                        el.setAttribute('data-rave-view', view._uid);
-                    }
+            rave.api.rest.getSecurityToken({
+                "url": widgetUrl,
+                //TODO: need to remove reference to rave.ui once we understand 
need for current pageid
+                //violates core dependency
+                "pageid": rave.ui.getCurrentPageId(),
+                "successCallback": renderEE
+            });
 
-                    return el;
+            function renderEE(data) {
+                if (data.error) {
+                    return log(data.error.message)
                 }
-            };
+                var gadget = {
+                        "widgetUrl": widgetUrl,
+                        "securityToken": data.securityToken,
+                        "metadata": opt_gadgetInfo
+                    },
+                    height = gadget.metadata.modulePrefs.height || 
rave.RegionWidget.defaultHeight,
+                    width = gadget.metadata.modulePrefs.width || 
rave.RegionWidget.defaultWidth;
 
-            container.views.createElementForEmbeddedExperience = function 
(rel, opt_gadgetInfo, opt_viewTarget, opt_coordinates, parentSite, 
opt_callback) {
-                var widgetUrl = opt_gadgetInfo.url;
+                preloadMetadata(gadget);
 
-                rave.api.rest.getSecurityToken({
-                    "url": widgetUrl,
-                    //TODO: need to remove reference to rave.ui once we 
understand need for current pageid
-                    //violates core dependency
-                    "pageid": rave.ui.getCurrentPageId(),
-                    "successCallback": renderEE
-                });
-
-                function renderEE(data) {
-                    if (data.error) {
-                        return rave.log(data.error.message)
-                    }
-                    var gadget = {
-                            "widgetUrl": widgetUrl,
-                            "securityToken": data.securityToken,
-                            "metadata": opt_gadgetInfo
-                        },
-                        height = gadget.metadata.modulePrefs.height || 
rave.RegionWidget.defaultHeight,
-                        width = gadget.metadata.modulePrefs.width || 
rave.RegionWidget.defaultWidth;
-
-                    preloadMetadata(gadget);
-
-                    if (opt_viewTarget) {
-                        var view = rave.renderView(opt_viewTarget, 
{"preferredHeight": height, preferredWidth: width});
-                        var el = view.getWidgetSite();
-                        el.setAttribute('data-rave-view', view._uid);
-                        opt_callback(el);
-                    }
-                }
-            };
-
-            container.views.createElementForUrl = function (rel, 
opt_viewTarget, opt_coordinates, parentSite, opt_callback) {
                 if (opt_viewTarget) {
-                    var view = rave.renderView(opt_viewTarget);
+                    var view = rave.renderView(opt_viewTarget, 
{"preferredHeight": height, preferredWidth: width});
                     var el = view.getWidgetSite();
                     el.setAttribute('data-rave-view', view._uid);
                     opt_callback(el);
                 }
-            };
-
-            container.views.destroyElement = function (site) {
-                var el = site.el_;
-                container.closeGadget(site);
-                var _uid = el.getAttribute('data-rave-view');
-                rave.destroyView(_uid);
-            };
-        }
-
-        exports.initWidget = function (widget) {
-            widget.error = getMetadataErrors(widget.metadata);
-            if (!widget.error) {
-                preloadMetadata(widget);
             }
-        }
-
-        /*
-         Opts -
-         full spectrum of allowed render options!
-         */
-        exports.renderWidget = function (widget, el, opts) {
-            if (widget.error) {
-                widget.renderError(el, widget.error.message);
-                return;
-            }
-            opts = opts || {};
-            var site = container.newGadgetSite(el);
-            site._widget = widget;
-            widget._site = site;
-
-            var renderParams = {};
-            renderParams[osapi.container.RenderParam.VIEW] = opts.view || 
rave.RegionWidget.defaultView;
-            renderParams[osapi.container.RenderParam.ALLOW_DEFAULT_VIEW ] = 
opts.allowDefaultView;
-            renderParams[osapi.container.RenderParam.DEBUG ] = opts.debug;
-            renderParams[osapi.container.RenderParam.HEIGHT ] = opts.height || 
rave.RegionWidget.defaultHeight;
-            renderParams[osapi.container.RenderParam.NO_CACHE ] = opts.noCache;
-            renderParams[osapi.container.RenderParam.TEST_MODE] = 
opts.testMode;
-            renderParams[osapi.container.RenderParam.WIDTH ] = opts.width || 
rave.RegionWidget.defaultWidth;
-            renderParams[osapi.container.RenderParam.USER_PREFS] = 
getCompleteUserPrefSet(widget.userPrefs, widget.metadata.userPrefs);
-            container.navigateGadget(site, widget.widgetUrl, opts.view_params, 
renderParams, opts.callback);
-        }
-
-        /**
-         * Combines the default user pref list from the metadata with those 
set by the user
-         * @param setPrefs preferences already set by the user
-         * @param metadataPrefs list of all available metadata objects
-         */
-        function getCompleteUserPrefSet(setPrefs, metadataPrefs) {
-            var combined = {};
-            _.each(metadataPrefs, function (metaPref) {
-                var userPref = setPrefs[metaPref.name];
-                combined[metaPref.name] = _.isUndefined(userPref) ? 
metaPref.defaultValue : userPref;
-            });
-            return combined;
-        }
+        };
 
-        function preloadMetadata(gadget) {
-            //Put our gadget metadata into the form that the common container 
is expecting
-            var commonContainerMetadataWrapper = {};
-            commonContainerMetadataWrapper[gadget.widgetUrl] = gadget.metadata;
+        container.views.createElementForUrl = function (rel, opt_viewTarget, 
opt_coordinates, parentSite, opt_callback) {
+            if (opt_viewTarget) {
+                var view = rave.renderView(opt_viewTarget);
+                var el = view.getWidgetSite();
+                el.setAttribute('data-rave-view', view._uid);
+                opt_callback(el);
+            }
+        };
+
+        container.views.destroyElement = function (site) {
+            var el = site.el_;
+            container.closeGadget(site);
+            var _uid = el.getAttribute('data-rave-view');
+            rave.destroyView(_uid);
+        };
+    }
+
+    exports.initWidget = function (widget) {
+        widget.error = getMetadataErrors(widget.metadata);
+        if (!widget.error) {
+            preloadMetadata(widget);
+        }
+    }
+
+    /*
+     Opts -
+     full spectrum of allowed render options!
+     */
+    exports.renderWidget = function (widget, opts) {
+        if (widget.error) {
+            widget.renderError(widget.error.message);
+            return;
+        }
+        opts = opts || {};
+        if(!widget._site) {
+            widget._site = container.newGadgetSite(widget._el);
+            widget._site._widget = widget;
+        }
+
+        var renderParams = {};
+        renderParams[osapi.container.RenderParam.VIEW] = opts.view || 
rave.RegionWidget.defaultView;
+        renderParams[osapi.container.RenderParam.ALLOW_DEFAULT_VIEW ] = 
opts.allowDefaultView;
+        renderParams[osapi.container.RenderParam.DEBUG ] = opts.debug;
+        renderParams[osapi.container.RenderParam.HEIGHT ] = opts.height || 
rave.RegionWidget.defaultHeight;
+        renderParams[osapi.container.RenderParam.NO_CACHE ] = opts.noCache;
+        renderParams[osapi.container.RenderParam.TEST_MODE] = opts.testMode;
+        renderParams[osapi.container.RenderParam.WIDTH ] = opts.width || 
rave.RegionWidget.defaultWidth;
+        renderParams[osapi.container.RenderParam.USER_PREFS] = 
getCompleteUserPrefSet(widget.userPrefs, widget.metadata.userPrefs);
+        container.navigateGadget(widget._site, widget.widgetUrl, 
opts.view_params, renderParams, opts.callback);
+    }
+
+    exports.unrenderWidget = function(widget){
+        if (widget._site) {
+            container.closeGadget(widget._site);
+        }
+    }
+
+    /**
+     * Combines the default user pref list from the metadata with those set by 
the user
+     * @param setPrefs preferences already set by the user
+     * @param metadataPrefs list of all available metadata objects
+     */
+    function getCompleteUserPrefSet(setPrefs, metadataPrefs) {
+        var combined = {};
+        _.each(metadataPrefs, function (metaPref) {
+            var userPref = setPrefs[metaPref.name];
+            combined[metaPref.name] = _.isUndefined(userPref) ? 
metaPref.defaultValue : userPref;
+        });
+        return combined;
+    }
+
+    function preloadMetadata(gadget) {
+        //Put our gadget metadata into the form that the common container is 
expecting
+        var commonContainerMetadataWrapper = {};
+        commonContainerMetadataWrapper[gadget.widgetUrl] = gadget.metadata;
+
+        //Put our gadget security token data into the form that the common 
container is expecting
+        var commonContainerTokenData = {};
+        commonContainerTokenData[osapi.container.TokenResponse.TOKEN] = 
gadget.securityToken;
+        
commonContainerTokenData[osapi.container.MetadataResponse.RESPONSE_TIME_MS] = 
new Date().getTime();
+        var commonContainerTokenWrapper = {};
+        commonContainerTokenWrapper[gadget.widgetUrl] = 
commonContainerTokenData;
+
+        //Setup the preloadConfig data with all our preload data
+        var preloadConfig = {};
+        preloadConfig[osapi.container.ContainerConfig.PRELOAD_METADATAS] = 
commonContainerMetadataWrapper;
+        preloadConfig[osapi.container.ContainerConfig.PRELOAD_TOKENS] = 
commonContainerTokenWrapper;
+        preloadConfig[osapi.container.ContainerConfig.PRELOAD_REF_TIME] = null;
+
+        //Preload our data into the common container
+        container.preloadCaches(preloadConfig);
+    }
+
+    function getMetadataErrors(metadata) {
+        return metadata.error;
+    }
+
+    exports.getContainer = function () {
+        return container;
+    }
 
-            //Put our gadget security token data into the form that the common 
container is expecting
-            var commonContainerTokenData = {};
-            commonContainerTokenData[osapi.container.TokenResponse.TOKEN] = 
gadget.securityToken;
-            
commonContainerTokenData[osapi.container.MetadataResponse.RESPONSE_TIME_MS] = 
new Date().getTime();
-            var commonContainerTokenWrapper = {};
-            commonContainerTokenWrapper[gadget.widgetUrl] = 
commonContainerTokenData;
-
-            //Setup the preloadConfig data with all our preload data
-            var preloadConfig = {};
-            preloadConfig[osapi.container.ContainerConfig.PRELOAD_METADATAS] = 
commonContainerMetadataWrapper;
-            preloadConfig[osapi.container.ContainerConfig.PRELOAD_TOKENS] = 
commonContainerTokenWrapper;
-            preloadConfig[osapi.container.ContainerConfig.PRELOAD_REF_TIME] = 
null;
-
-            //Preload our data into the common container
-            container.preloadCaches(preloadConfig);
-        }
-
-        function getMetadataErrors(metadata) {
-            return metadata.error;
-        }
-
-        exports.closeWidget = function (widget) {
-            if (widget._site) {
-                container.closeGadget(widget._site);
-            }
-        }
-
-        exports.getContainer = function () {
-            return container;
-        }
+    init();
 
-        return exports;
-    })()
-)
\ No newline at end of file
+    return exports;
+});
\ No newline at end of file

Added: 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_providers.js
URL: 
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_providers.js?rev=1490040&view=auto
==============================================================================
--- 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_providers.js
 (added)
+++ 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_providers.js
 Wed Jun  5 21:47:52 2013
@@ -0,0 +1,11 @@
+define(['./rave_opensocial', './rave_wookie'], function(opensocial, wookie){
+
+    /*
+    Overlay to add or change supported providers. Register provider names in 
LOWER CASE for consistency.
+     */
+    return {
+        'opensocial': opensocial,
+        'w3c': wookie
+    }
+
+})
\ No newline at end of file

Modified: 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_widget.js
URL: 
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_widget.js?rev=1490040&r1=1490039&r2=1490040&view=diff
==============================================================================
--- 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_widget.js
 (original)
+++ 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_widget.js
 Wed Jun  5 21:47:52 2013
@@ -16,27 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+define(['underscore',  './eventemitter', './rave_api', './rave_providers'], 
function (_, EventEmitter, api, providers) {
 
-var rave = rave || {};
-
-/*
- Rave RegionWidget Interface
-
- Dependencies:
- rave.ui
- rave.api
- */
-
-rave.RegionWidget = (function () {
-    /*
-     rave widget constructor
-     */
     var Widget = function (definition) {
         var provider = definition.type;
 
         _.extend(this, definition);
 
-        this._provider = rave.getProvider(provider);
+        this._provider = providers[provider.toLowerCase()];
+        this._el = document.createElement('div');
+        this._surface = Widget.defaultView;
 
         if (!this._provider) {
             throw new Error('Cannot render widget ' + definition.widgetUrl + 
'. ' +
@@ -46,112 +35,141 @@ rave.RegionWidget = (function () {
         this._provider.initWidget(this);
     }
 
+    /*
+     Static properties
+     */
     Widget.defaultView = 'default';
     Widget.defaultWidth = 320;
     Widget.defaultHeight = 200;
 
-    Widget.extend = function (mixin) {
-        _.extend(this.prototype, mixin);
-    }
-
-    Widget.prototype.render = function (el, opts) {
-        //if we receive only one argument, and the first arg is not a string 
or dom element, assume it is an opts object
-        //and el should default to the widgets current render element
-        if (!opts && !(_.isString(el) || (el instanceof HTMLElement))) {
-            opts = el;
-            el = this._el;
-        }
-        //if el is a string, go to rave's view system
-        if (_.isString(el)) {
-            //TODO: potential memory leak - rendering a widget into new views 
does not force cleanup of current view
-            var view = rave.renderView(el, this);
-            el = view.getWidgetSite();
-            this._view = view;
-        }
-        //at this point el must be a valid dom element. if not, throw an error
-        if (!(el instanceof HTMLElement)) {
-            throw new Error('Cannot render widget. You must provide an el to 
render the view into');
-        }
-        this._el = el;
-        this._provider.renderWidget(this, el, opts);
-        return this;
-    }
-
-    Widget.prototype.renderError = function (el, errors) {
-        el.innerHTML = 'Error rendering widget.' + "<br /><br />" + errors;
-    }
-
-    Widget.prototype.hide = function () {
-        this.collapsed = true;
-
-        rave.api.rest.saveWidgetCollapsedState({
-            regionWidgetId: this.id,
-            collapsed: this.collapsed
-        });
-    }
-
-    Widget.prototype.show = function () {
-        this.collapsed = false;
-
-        rave.api.rest.saveWidgetCollapsedState({
-            regionWidgetId: this.id,
-            collapsed: this.collapsed
-        });
-    }
-
-    Widget.prototype.close = function (opts) {
-        this._provider.closeWidget(this, opts);
-        if (this._view) {
-            rave.destroyView(this._view);
-        }
-
-        rave.api.rpc.removeWidget({
-            regionWidgetId: this.id
-        });
-    }
-
-    Widget.prototype.moveToPage = function (toPageId, cb) {
-        rave.api.rpc.moveWidgetToPage({
-            toPageId: toPageId,
-            regionWidgetId: this.id,
-            successCallback: cb
-        });
-    }
-
-    Widget.prototype.moveToRegion = function (fromRegionId, toRegionId, 
toIndex) {
-        rave.api.rpc.moveWidgetToRegion({
-            regionWidgetId: this.id,
-            fromRegionId: fromRegionId,
-            toRegionId: toRegionId,
-            toIndex: toIndex
-        });
-    }
+    /*
+     Set up widget as an event emitter
+     */
+    _.extend(Widget.prototype, EventEmitter.prototype);
 
-    Widget.prototype.getPrefs = function () {
+    /*
+     Convenience function for adding functionality to Widget prototype with 
events
+     */
+    Widget.extend = function (key, fn) {
         var self = this;
-        var combined = [];
-        //TODO: I think this is opensocial specific - need to investigate 
wookie and possibly delegate to providers
-        _.each(self.metadata.userPrefs, function (data) {
-            var value = self.userPrefs[data.name];
-            data = _.clone(data);
-            data.value = value || data.defaultValue;
-            data.displayName = data.displayName || data.name;
-            combined.push(data);
-        });
-        return _.isEmpty(combined)?undefined:combined;
-    }
-
-    Widget.prototype.setPrefs = function (name, val) {
-        if (_.isObject(name)) {
-            var updatedPrefs = name;
-            this.userPrefs = _.object(_.pluck(updatedPrefs,'name'), 
_.pluck(updatedPrefs, 'value'));
-            rave.api.rest.saveWidgetPreferences({regionWidgetId: this.id, 
userPrefs: this.userPrefs});
-        } else {
-            this.userPrefs[name] = val;
-            rave.api.rest.saveWidgetPreference({regionWidgetId: this.id, 
prefName: name, prefValue: val});
+        if (_.isObject(key)) {
+            return _.each(key, function (f, k) {
+                self.extend(k, f);
+            });
+        }
+        this.prototype[key] = function () {
+            var args = _.toArray(arguments);
+            fn.apply(this, args);
+            this.emitEvent(key, args);
+        }
+    }
+
+    Widget.extend({
+
+        'render': function (el) {
+            if (el) {
+                el.appendChild(this._el);
+            }
+
+            this._provider.renderWidget(this, this._opts);
+            return this;
+        },
+
+        'navigate': function (opts) {
+            opts = opts || {};
+
+            var viewSurface = opts.view || Widget.defaultView;
+            viewSurface = viewSurface.split('.')[0];
+
+            this._opts = opts;
+            this._surface = viewSurface;
+            this.render();
+        },
+
+        'unrender': function () {
+            this._provider.unrenderWidget(this);
+            return this;
+        },
+
+        'renderError': function (errors) {
+            this._el.innerHTML = 'Error rendering widget.' + "<br /><br />" + 
errors;
+        },
+
+        'hide': function () {
+            this.collapsed = true;
+
+            api.rest.saveWidgetCollapsedState({
+                regionWidgetId: this.id,
+                collapsed: this.collapsed
+            });
+        },
+
+        'show': function () {
+            this.collapsed = false;
+
+            api.rest.saveWidgetCollapsedState({
+                regionWidgetId: this.id,
+                collapsed: this.collapsed
+            });
+        },
+
+        'close': function (opts) {
+            this.unrender();
+
+            api.rpc.removeWidget({
+                regionWidgetId: this.id
+            });
+        },
+
+        'moveToPage': function (toPageId, cb) {
+            api.rpc.moveWidgetToPage({
+                toPageId: toPageId,
+                regionWidgetId: this.id,
+                successCallback: cb
+            });
+        },
+
+        'moveToRegion': function (fromRegionId, toRegionId, toIndex) {
+            api.rpc.moveWidgetToRegion({
+                regionWidgetId: this.id,
+                fromRegionId: fromRegionId,
+                toRegionId: toRegionId,
+                toIndex: toIndex
+            });
+        },
+
+        'getPrefs': function () {
+            var self = this;
+            var combined = [];
+            //TODO: I think this is opensocial specific - need to investigate 
wookie and possibly delegate to providers
+            _.each(self.metadata.userPrefs, function (data) {
+                var value = self.userPrefs[data.name];
+                data = _.clone(data);
+                data.value = value || data.defaultValue;
+                data.displayName = data.displayName || data.name;
+                combined.push(data);
+            });
+            return _.isEmpty(combined) ? undefined : combined;
+        },
+
+        'setPrefs': function (name, val) {
+            if (_.isObject(name)) {
+                var updatedPrefs = name;
+                this.userPrefs = _.object(_.pluck(updatedPrefs, 'name'), 
_.pluck(updatedPrefs, 'value'));
+                api.rest.saveWidgetPreferences({regionWidgetId: this.id, 
userPrefs: this.userPrefs});
+            } else {
+                this.userPrefs[name] = val;
+                api.rest.saveWidgetPreference({regionWidgetId: this.id, 
prefName: name, prefValue: val});
+            }
         }
-    }
+    })
+
 
     return Widget;
+});
+/*
+ Rave RegionWidget Interface
 
-})();
\ No newline at end of file
+ Dependencies:
+ api
+ */
\ No newline at end of file

Modified: 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_wookie.js
URL: 
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_wookie.js?rev=1490040&r1=1490039&r2=1490040&view=diff
==============================================================================
--- 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_wookie.js
 (original)
+++ 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/core/rave_wookie.js
 Wed Jun  5 21:47:52 2013
@@ -17,43 +17,49 @@
  * under the License.
  */
 
-rave.registerProvider(
-    'wookie',
-    (function () {
-        var exports = {}
-
-        exports.init = function(){};
-        exports.initWidget = function(widget){}
-        exports.renderWidget = function(widget, el, opts){
-            new OpenAjax.hub.IframeContainer(rave.getManagedHub() , 
""+widget.regionWidgetId,
-                {
-                    Container: {
-                        onSecurityAlert: onClientSecurityAlert,
-                        onConnect:       onClientConnect,
-                        onDisconnect:    onClientDisconnect
+define(['underscore', './rave_openAjaxHub'], function (_, getManagedHub) {
+    var exports = {}
+
+    function init() {
+    };
+    exports.initWidget = function (widget) {
+    }
+    exports.renderWidget = function (widget, el, opts) {
+        new OpenAjax.hub.IframeContainer(getManagedHub(), "" + 
widget.regionWidgetId,
+            {
+                Container: {
+                    onSecurityAlert: onClientSecurityAlert,
+                    onConnect: onClientConnect,
+                    onDisconnect: onClientDisconnect
+                },
+                IframeContainer: {
+                    parent: el,
+                    //TODO: I dropped a bunch of the attrs here - seems like 
it should all be css
+                    //unless it is being defined by the gadget spec
+                    iframeAttrs: {
+                        height: widget.height || 
rave.RegionWidget.defaultHeight,
+                        width: widget.width || rave.RegionWidget.defaultWidth
                     },
-                    IframeContainer: {
-                        parent:      el,
-                        //TODO: I dropped a bunch of the attrs here - seems 
like it should all be css
-                        //unless it is being defined by the gadget spec
-                        iframeAttrs: {
-                            height: widget.height || 
rave.RegionWidget.defaultHeight,
-                            width:  widget.width || 
rave.RegionWidget.defaultWidth
-                        },
-                        uri: widget.widgetUrl
-                    }
+                    uri: widget.widgetUrl
                 }
-            );
-        }
+            }
+        );
+    }
+
+    function onClientSecurityAlert(source, alertType) {  /* Handle client-side 
security alerts */
+    }
+
+    function onClientConnect(container) {        /* Called when client 
connects */
+    }
+
+    function onClientDisconnect(container) {     /* Called when client 
disconnects */
+    }
+
+    exports.closeWidget = function (widget) {
+        //TODO...
+    }
+
+    init()
 
-        function onClientSecurityAlert(source, alertType) {  /* Handle 
client-side security alerts */  }
-        function onClientConnect(container) {        /* Called when client 
connects */   }
-        function onClientDisconnect(container) {     /* Called when client 
disconnects */ }
-
-        exports.closeWidget = function(widget){
-            //TODO...
-        }
-
-        return exports;
-    })()
-)
\ No newline at end of file
+    return exports;
+});
\ No newline at end of file

Added: 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/profile/main.js
URL: 
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/profile/main.js?rev=1490040&view=auto
==============================================================================
--- 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/profile/main.js
 (added)
+++ 
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/profile/main.js
 Wed Jun  5 21:47:52 2013
@@ -0,0 +1 @@
+console.log('profile');
\ No newline at end of file


Reply via email to