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 () {