Author: erinnp
Date: Fri Mar 29 18:38:16 2013
New Revision: 1462591

URL: http://svn.apache.org/r1462591
Log:
Move default gadget size and view to rave.RegionWidget properties


Modified:
    rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/rave_js.tag
    
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_core.js
    
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_opensocial.js
    
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_widget.js
    
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_wookie.js
    
rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_ui.js
    rave/trunk/rave-portal-resources/src/test/javascript/rave_core_spec.js
    rave/trunk/rave-portal-resources/src/test/javascript/rave_widget_spec.js

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/rave_js.tag
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/rave_js.tag?rev=1462591&r1=1462590&r2=1462591&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/rave_js.tag 
(original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/rave_js.tag 
Fri Mar 29 18:38:16 2013
@@ -58,7 +58,7 @@
     <%-- set the javascript debug mode so js code has access to it --%>
     rave.setJavaScriptDebugMode(<c:out value="${jsDebugMode}"/>);
     <%-- set the default widget height so js code has access to it --%>
-    rave.setDefaultGadgetSize(undefined, <c:out 
value="${portalSettings['defaultWidgetHeight'].value}"/>);
+    rave.RegionWidget.defaultHeight = <c:out 
value="${portalSettings['defaultWidgetHeight'].value}"/>;
     <%-- set the current page viewer --%>
     <sec:authorize access="isAuthenticated()">
     <sec:authentication property="principal.username" scope="request" 
var="username"/>

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_core.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_core.js?rev=1462591&r1=1462590&r2=1462591&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_core.js
 (original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_core.js
 Fri Mar 29 18:38:16 2013
@@ -152,18 +152,6 @@ rave = (function () {
         return openAjaxHub;
     }
 
-    /*
-     //TODO: should this be a thing? I think no. what's up css.
-     width, height value in pixels
-     */
-    exports.setDefaultGadgetSize = function (width, height) {
-        _.invoke(providers, 'setDefaultGadgetSize', width, height);
-    }
-
-    exports.setDefaultGadgetView = function (view) {
-        _.invoke(providers, 'setDefaultGadgetView', view);
-    }
-
     exports.registerOnInitHandler = function (handler) {
         if (!_.isFunction(handler)) {
             throw new Error('Init event handler must be a function');

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_opensocial.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_opensocial.js?rev=1462591&r1=1462590&r2=1462591&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_opensocial.js
 (original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_opensocial.js
 Fri Mar 29 18:38:16 2013
@@ -22,8 +22,7 @@ rave.registerProvider(
     (function () {
         var exports = {};
 
-        var container,
-            defaultView = 'default';
+        var container;
 
         exports.init = function () {
             var containerConfig = {};
@@ -116,8 +115,8 @@ rave.registerProvider(
                             "securityToken": data.securityToken,
                             "metadata": opt_gadgetInfo
                         },
-                        height = gadget.metadata.modulePrefs.height || 500,
-                        width = gadget.metadata.modulePrefs.width || 525;
+                        height = gadget.metadata.modulePrefs.height || 
rave.RegionWidget.defaultHeight,
+                        width = gadget.metadata.modulePrefs.width || 
rave.RegionWidget.defaultWidth;
 
                     preloadMetadata(gadget);
 
@@ -159,19 +158,23 @@ rave.registerProvider(
          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 || 
defaultView;
+            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;
+            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;
+            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);
         }
@@ -222,19 +225,6 @@ rave.registerProvider(
             }
         }
 
-        exports.setDefaultGadgetSize = function (width, height) {
-            if (_.isNumber(width)) {
-                osapi.container.GadgetSite.DEFAULT_WIDTH_ = width;
-            }
-            if (_.isNumber(height)) {
-                osapi.container.GadgetSite.DEFAULT_HEIGHT_ = height;
-            }
-        }
-
-        exports.setDefaultGadgetView = function (view) {
-            defaultView = view;
-        }
-
         exports.getContainer = function() {
             return container;
         }

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_widget.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_widget.js?rev=1462591&r1=1462590&r2=1462591&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_widget.js
 (original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_widget.js
 Fri Mar 29 18:38:16 2013
@@ -38,39 +38,49 @@ rave.RegionWidget = (function () {
 
         this._provider = rave.getProvider(provider);
 
-        if(!this._provider) {
-            throw new Error('Cannot render widget '+definition.widgetUrl+ '. ' 
+
-                'Provider '+provider+' is not registered.');
+        if (!this._provider) {
+            throw new Error('Cannot render widget ' + definition.widgetUrl + 
'. ' +
+                'Provider ' + provider + ' is not registered.');
         }
 
         this._provider.initWidget(this);
     }
 
+    Widget.defaultView = 'default';
+    Widget.defaultWidth = 320;
+    Widget.defaultHeight = 200;
+
     Widget.extend = function (mixin) {
         _.extend(this.prototype, mixin);
     }
 
-    /*
-     el: valid dom element to which the widget will be injected
-     OR valid view name that has been registered via rave.registerView
-     opts: rendering options
-     */
     Widget.prototype.render = function (el, opts) {
-        if (this.error) {
-            this._view = rave.renderView('errorWidget', el, this);
-            return;
+        //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;
 
@@ -117,7 +127,7 @@ rave.RegionWidget = (function () {
         });
     }
 
-    Widget.prototype.savePreference = function(name, val) {
+    Widget.prototype.savePreference = function (name, val) {
         this.userPrefs[name] = val;
         rave.api.rest.saveWidgetPreference({regionWidgetId: 
this.regionWidgetId, prefName: name, prefValue: val});
     }

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_wookie.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_wookie.js?rev=1462591&r1=1462590&r2=1462591&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_wookie.js
 (original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/core/rave_wookie.js
 Fri Mar 29 18:38:16 2013
@@ -22,11 +22,6 @@ rave.registerProvider(
     (function () {
         var exports = {}
 
-        //set default widget size to the same as opensocial spec
-        var defaultHeight = 200,
-            defaultWidth = 320,
-            defaultView = 'default';
-
         exports.init = function(){};
         exports.initWidget = function(widget){}
         exports.renderWidget = function(widget, el, opts){
@@ -42,8 +37,8 @@ rave.registerProvider(
                         //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 || defaultHeight,
-                            width:  widget.width || defaultWidth
+                            height: widget.height || 
rave.RegionWidget.defaultHeight,
+                            width:  widget.width || 
rave.RegionWidget.defaultWidth
                         },
                         uri: widget.widgetUrl
                     }
@@ -59,19 +54,6 @@ rave.registerProvider(
             //TODO...
         }
 
-        exports.setDefaultGadgetSize = function(width, height){
-            if(_.isNumber(width)){
-                defaultWidth = width;
-            }
-            if(_.isNumber(height)){
-                defaultHeight = height;
-            }
-        }
-
-        exports.setDefaultGadgetView = function(view){
-            defaultView = view;
-        }
-
         return exports;
     })()
 )
\ No newline at end of file

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_ui.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_ui.js?rev=1462591&r1=1462590&r2=1462591&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_ui.js
 (original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_ui.js
 Fri Mar 29 18:38:16 2013
@@ -211,8 +211,6 @@ _.extend(rave.ui, (function () {
     }
 
     function renderWidgets() {
-        rave.setDefaultGadgetView('home');
-
         if (_.isEmpty(rave.getWidgets())) {
             displayEmptyPageMessage();
         }
@@ -561,6 +559,13 @@ _.extend(rave.ui, (function () {
     }
 
     function registerHomeView() {
+
+        rave.RegionWidget.extend({
+            renderError: function(el, errors) {
+                el.innerHTML = 
rave.getClientMessage("opensocial.render_error") + "<br /><br />" + errors;
+            }
+        });
+
         var HomeView = function (widget) {
             this.widget = widget;
 
@@ -707,16 +712,6 @@ _.extend(rave.ui, (function () {
         }
 
         rave.registerView('home', HomeView);
-
-
-        rave.registerView('errorWidget', {
-            render: function (el, widget) {
-                el.innerHTML = 
rave.getClientMessage("opensocial.render_error") + "<br /><br />" + 
widget.error.message;
-                return this;
-            },
-            destroy: function () {
-            }
-        });
     }
 
     function registerCanvasView() {

Modified: rave/trunk/rave-portal-resources/src/test/javascript/rave_core_spec.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/test/javascript/rave_core_spec.js?rev=1462591&r1=1462590&r2=1462591&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/test/javascript/rave_core_spec.js 
(original)
+++ rave/trunk/rave-portal-resources/src/test/javascript/rave_core_spec.js Fri 
Mar 29 18:38:16 2013
@@ -356,22 +356,6 @@ describe('rave', function () {
         });
     });
 
-    describe('setDefaultGadgetSize', function () {
-        it('invokes function on registered providers', function () {
-            rave.registerProvider(providerName, provider);
-            rave.setDefaultGadgetSize(100, 200);
-            expect(provider.setDefaultGadgetSize).toHaveBeenCalledWith(100, 
200);
-        });
-    });
-
-    describe('setDefaultGadgetView', function () {
-        it('invokes function on registered providers', function () {
-            rave.registerProvider(providerName, provider);
-            rave.setDefaultGadgetView('asdf');
-            expect(provider.setDefaultGadgetView).toHaveBeenCalledWith('asdf');
-        });
-    });
-
     describe('registerOnInitHandler', function () {
         it('throws an error if handler is not a function', function () {
             expect(function () {

Modified: 
rave/trunk/rave-portal-resources/src/test/javascript/rave_widget_spec.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/test/javascript/rave_widget_spec.js?rev=1462591&r1=1462590&r2=1462591&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/test/javascript/rave_widget_spec.js 
(original)
+++ rave/trunk/rave-portal-resources/src/test/javascript/rave_widget_spec.js 
Fri Mar 29 18:38:16 2013
@@ -48,12 +48,13 @@ describe('rave.RegionWidget', function (
             render: function () {
             },
             getWidgetSite: function () {
+                return document.createElement('div');
             },
             destroy: function () {
             }
         }
         _.each(viewObject, function (fn, key) {
-            spyOn(viewObject, key);
+            spyOn(viewObject, key).andCallThrough();
         });
 
         validWidget = {
@@ -155,11 +156,20 @@ describe('rave.RegionWidget', function (
         })
 
         describe('render', function () {
-            it('renders the errorWidget if the definition has errrors', 
function () {
-                var el = {};
-                errorRegionWidget.render(el);
-                expect(rave.renderView).toHaveBeenCalledWith('errorWidget', 
el, errorRegionWidget);
-                expect(provider.renderWidget).not.toHaveBeenCalled();
+            it('throws an error if you do not provide a valid el to render 
into', function(){
+                function doRenderWithNoArgs(){
+                    regionWidget.render();
+                }
+                function doRenderWithOptsOnly(){
+                    regionWidget.render({view: 'myView'});
+                }
+                function doRenderWithNonDomObject(){
+                    regionWidget.render({}, {view: 'myView'});
+                }
+
+                expect(doRenderWithNoArgs).toThrow();
+                expect(doRenderWithOptsOnly).toThrow();
+                expect(doRenderWithNonDomObject).toThrow();
             });
 
             it('retrieves a registered view if el is a string', function () {
@@ -171,12 +181,26 @@ describe('rave.RegionWidget', function (
             });
 
             it("invokes the provider's renderWidget function", function () {
-                var el = {dom: 'element'};
+                var el =  document.createElement('div');
                 var opts = {opts: true}
                 regionWidget.render(el, opts);
 
                 
expect(provider.renderWidget).toHaveBeenCalledWith(regionWidget, el, opts);
             });
+
+            it("defaults to the widget's current el if the widget has been 
rendered already", function(){
+                var el =  document.createElement('div');
+                var opts = {opts: true}
+
+                expect(function(){
+                    regionWidget.render();
+                }).toThrow();
+
+                regionWidget.render(el, opts);
+                
expect(provider.renderWidget).toHaveBeenCalledWith(regionWidget, el, opts);
+                regionWidget.render(opts);
+                
expect(provider.renderWidget).toHaveBeenCalledWith(regionWidget, el, opts);
+            });
         });
 
         describe('hide', function () {


Reply via email to