You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by er...@apache.org on 2013/07/15 00:55:08 UTC
svn commit: r1503074 [3/5] - in /rave/trunk: ./
rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/
rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/
rave-components/rave-web/src/test/java/org/apache/rave/...
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=1503074&r1=1503073&r2=1503074&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 Sun Jul 14 22:55:06 2013
@@ -17,26 +17,24 @@
* under the License.
*/
-rave.registerProvider(
- 'opensocial',
- (function () {
+define(['underscore', 'core/rave_view_manager', 'core/rave_api', 'core/rave_openajax_hub', 'core/rave_log', 'core/rave_state_manager', 'osapi'],
+ function (_, viewManager, api, managedHub, log, stateManager) {
var exports = {};
var container;
- exports.init = function () {
- var containerConfig = {};
- containerConfig[osapi.container.ServiceConfig.API_PATH] = "/rpc";
- containerConfig[osapi.container.ContainerConfig.RENDER_DEBUG] = rave.getJavaScriptDebugMode();
- container = new osapi.container.Container(containerConfig);
+ var containerConfig = {};
+ containerConfig[osapi.container.ServiceConfig.API_PATH] = "/rpc";
+ containerConfig[osapi.container.ContainerConfig.RENDER_DEBUG] = stateManager.getDebugMode();
+ container = new osapi.container.Container(containerConfig);
+
+ gadgets.pubsub2router.init({
+ hub: managedHub
+ });
- gadgets.pubsub2router.init({
- hub:rave.getManagedHub()
- });
+ rpcRegister();
+ implementViews();
- rpcRegister();
- implementViews();
- }
function rpcRegister() {
container.rpcRegister('requestNavigateTo', requestNavigateTo);
@@ -46,49 +44,11 @@ rave.registerProvider(
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);
- }
-
- /*
- 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 prefs = (metadata && metadata.views && metadata.views[opt_view])
- var view = rave.renderView(opt_viewTarget, prefs);
+ var view = viewManager.renderView(opt_viewTarget, prefs);
var el = view.getWidgetSite();
el.setAttribute('data-rave-view', view._uid);
return el;
@@ -98,30 +58,28 @@ rave.registerProvider(
container.views.createElementForEmbeddedExperience = function (rel, opt_gadgetInfo, opt_viewTarget, opt_coordinates, parentSite, opt_callback) {
var widgetUrl = opt_gadgetInfo.url;
- rave.api.rest.getSecurityToken({
+ 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(),
+ "pageid": stateManager.getPage().id,
"successCallback": renderEE
});
function renderEE(data) {
if (data.error) {
- return rave.log(data.error.message)
+ 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;
+ height = gadget.metadata.modulePrefs.height || stateManager.getDefaultHeight(),
+ width = gadget.metadata.modulePrefs.width || stateManager.getDefaultWidth();
preloadMetadata(gadget);
if (opt_viewTarget) {
- var view = rave.renderView(opt_viewTarget, {"preferredHeight": height, preferredWidth: width});
+ var view = viewManager.renderView(opt_viewTarget, {"preferredHeight": height, preferredWidth: width});
var el = view.getWidgetSite();
el.setAttribute('data-rave-view', view._uid);
opt_callback(el);
@@ -131,7 +89,7 @@ rave.registerProvider(
container.views.createElementForUrl = function (rel, opt_viewTarget, opt_coordinates, parentSite, opt_callback) {
if (opt_viewTarget) {
- var view = rave.renderView(opt_viewTarget);
+ var view = viewManager.renderView(opt_viewTarget);
var el = view.getWidgetSite();
el.setAttribute('data-rave-view', view._uid);
opt_callback(el);
@@ -142,10 +100,48 @@ rave.registerProvider(
var el = site.el_;
container.closeGadget(site);
var _uid = el.getAttribute('data-rave-view');
- rave.destroyView(_uid);
+ viewManager.destroyView(_uid);
};
}
+ function requestNavigateTo(args, viewName, opt_params, opt_ownerId) {
+ var widget = args.gs._widget,
+ viewSurface = viewName.split('.')[0],
+ renderInto = viewManager.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);
+ }
+
+ /*
+ 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();
+ }
+ }
+
exports.initWidget = function (widget) {
widget.error = getMetadataErrors(widget.metadata);
if (!widget.error) {
@@ -158,7 +154,7 @@ rave.registerProvider(
full spectrum of allowed render options!
*/
exports.renderWidget = function (widget, el, opts) {
- if(widget.error) {
+ if (widget.error) {
widget.renderError(el, widget.error.message);
return;
}
@@ -168,13 +164,13 @@ rave.registerProvider(
widget._site = site;
var renderParams = {};
- renderParams[osapi.container.RenderParam.VIEW] = opts.view || rave.RegionWidget.defaultView;
+ renderParams[osapi.container.RenderParam.VIEW] = opts.view || stateManager.getDefaultView();
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.HEIGHT ] = opts.height || stateManager.getDefaultHeight();
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.WIDTH ] = opts.width || stateManager.getDefaultWidth();
renderParams[osapi.container.RenderParam.USER_PREFS] = getCompleteUserPrefSet(widget.userPrefs, widget.metadata.userPrefs);
container.navigateGadget(site, widget.widgetUrl, opts.view_params, renderParams, opts.callback);
}
@@ -225,10 +221,9 @@ rave.registerProvider(
}
}
- exports.getContainer = function() {
+ exports.getContainer = function () {
return container;
}
return exports;
- })()
-)
\ No newline at end of file
+ })
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=1503074&r1=1503073&r2=1503074&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 Sun Jul 14 22:55:06 2013
@@ -17,127 +17,118 @@
* under the License.
*/
-rave = rave || {};
+define(['underscore', 'core/rave_api', 'core/rave_view_manager', 'core/rave_providers'],
+ function (_, api, viewManager, providers) {
-/*
- Rave RegionWidget Interface
+ function getProvider(name) {
+ return providers[name.toLowerCase()];
+ }
- Dependencies:
- rave.ui
- rave.api
- */
+ /*
+ rave widget constructor
+ */
+ var Widget = function (definition) {
+ var provider = definition.type;
+
+ _.extend(this, definition);
+
+ this._provider = getProvider(provider);
+
+ if (!this._provider) {
+ throw new Error('Cannot render widget ' + definition.widgetUrl + '. ' +
+ 'Provider ' + provider + ' is not registered.');
+ }
+
+ this._provider.initWidget(this);
+ }
+
+ 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 = viewManager.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;
+
+ api.rest.saveWidgetCollapsedState({
+ regionWidgetId: this.regionWidgetId,
+ collapsed: this.collapsed
+ });
+ }
+
+ Widget.prototype.show = function () {
+ this.collapsed = false;
+
+ api.rest.saveWidgetCollapsedState({
+ regionWidgetId: this.regionWidgetId,
+ collapsed: this.collapsed
+ });
+ }
+
+ Widget.prototype.close = function (opts) {
+ this._provider.closeWidget(this, opts);
+ if (this._view) {
+ viewManager.destroyView(this._view);
+ }
+
+ api.rpc.removeWidget({
+ regionWidgetId: this.regionWidgetId
+ });
+ }
-rave.RegionWidget = (function () {
- /*
- rave widget constructor
- */
- var Widget = function (definition) {
- var provider = definition.type;
-
- _.extend(this, definition);
-
- this._provider = rave.getProvider(provider);
-
- 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);
- }
-
- 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.regionWidgetId,
- collapsed: this.collapsed
- });
- }
-
- Widget.prototype.show = function () {
- this.collapsed = false;
-
- rave.api.rest.saveWidgetCollapsedState({
- regionWidgetId: this.regionWidgetId,
- 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.regionWidgetId
- });
- }
-
- Widget.prototype.moveToPage = function (toPageId, cb) {
- rave.api.rpc.moveWidgetToPage({
- toPageId: toPageId,
- regionWidgetId: this.regionWidgetId,
- successCallback: cb
- });
- }
-
- Widget.prototype.moveToRegion = function (fromRegionId, toRegionId, toIndex) {
- rave.api.rpc.moveWidgetToRegion({
- regionWidgetId: this.regionWidgetId,
- fromRegionId: fromRegionId,
- toRegionId: toRegionId,
- toIndex: toIndex
- });
- }
-
- Widget.prototype.savePreference = function (name, val) {
- this.userPrefs[name] = val;
- rave.api.rest.saveWidgetPreference({regionWidgetId: this.regionWidgetId, prefName: name, prefValue: val});
- }
-
- Widget.prototype.savePreferences = function (updatedPrefs) {
- this.userPrefs = updatedPrefs;
- rave.api.rest.saveWidgetPreferences({regionWidgetId: this.regionWidgetId, userPrefs: updatedPrefs});
- }
+ Widget.prototype.moveToPage = function (toPageId, cb) {
+ api.rpc.moveWidgetToPage({
+ toPageId: toPageId,
+ regionWidgetId: this.regionWidgetId,
+ successCallback: cb
+ });
+ }
+
+ Widget.prototype.moveToRegion = function (fromRegionId, toRegionId, toIndex) {
+ api.rpc.moveWidgetToRegion({
+ regionWidgetId: this.regionWidgetId,
+ fromRegionId: fromRegionId,
+ toRegionId: toRegionId,
+ toIndex: toIndex
+ });
+ }
+ Widget.prototype.savePreference = function (name, val) {
+ this.userPrefs[name] = val;
+ api.rest.saveWidgetPreference({regionWidgetId: this.regionWidgetId, prefName: name, prefValue: val});
+ }
+
+ Widget.prototype.savePreferences = function (updatedPrefs) {
+ this.userPrefs = updatedPrefs;
+ api.rest.saveWidgetPreferences({regionWidgetId: this.regionWidgetId, userPrefs: updatedPrefs});
+ }
- return Widget;
-})();
\ No newline at end of file
+ return Widget;
+ })
\ No newline at end of file
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=1503074&r1=1503073&r2=1503074&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 Sun Jul 14 22:55:06 2013
@@ -17,12 +17,9 @@
* under the License.
*/
-rave.registerProvider(
- 'W3C',
- (function () {
+define(['core/rave_openajax_hub', 'core/rave_state_manager'], function(managedHub, stateManager){
var exports = {}
- exports.init = function(){};
exports.initWidget = function(widget){}
exports.renderWidget = function(widget, el, opts){
var widgetBodyElement = document.getElementById(["widget-", widget.regionWidgetId, "-body"].join(""));
@@ -30,7 +27,7 @@ rave.registerProvider(
window.document.getElementById(widget.regionWidgetId).style.visibility="visible";
};
- new OpenAjax.hub.IframeContainer(rave.getManagedHub() , ""+widget.regionWidgetId,
+ new OpenAjax.hub.IframeContainer(managedHub , ""+widget.regionWidgetId,
{
Container: {
onSecurityAlert: onClientSecurityAlert,
@@ -39,11 +36,9 @@ rave.registerProvider(
},
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,
+ height: widget.height || stateManager.getDefaultHeight(),
+ width: widget.width || stateManager.getDefaultWidth(),
frameborder: 0
},
uri: widget.widgetUrl,
@@ -62,5 +57,4 @@ rave.registerProvider(
}
return exports;
- })()
-)
\ No newline at end of file
+})
\ No newline at end of file
Modified: rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_admin.js
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_admin.js?rev=1503074&r1=1503073&r2=1503074&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_admin.js (original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_admin.js Sun Jul 14 22:55:06 2013
@@ -17,51 +17,42 @@
* under the License.
*/
-var rave = rave || {};
-rave.admin = rave.admin || (function() {
+define(["jquery"], function ($) {
- var adminUi = (function() {
+ function datatableClick() {
+ $('.datatable tr').bind('click', function () {
+ var link = $(this).attr('data-detaillink');
+ if (link != undefined && link != '') {
+ window.location = link;
+ }
+ });
+ }
- function datatableClick() {
- $('.datatable tr').bind('click', function() {
- var link = $(this).attr('data-detaillink');
- if (link != undefined && link != '') {
- window.location = link;
- }
- });
- }
-
- //Resize bootstrap modal & adjust margins to size of image.
- function resizeImageModal(){
- $('#thumbnailModal, #screenshotModal').on('shown', function () {
- if(!$(this).hasClass("sized")){
- var imageWidth = $(this).find("img").width(),
- imageHeight = $(this).find("img").height(),
- footerHeight = $(this).find(".modal-footer").outerHeight(),
- headerHeight = $(this).find(".modal-header").outerHeight(),
- totalHeight = imageHeight + footerHeight + headerHeight;
-
- $(this).css({
- width: imageWidth + "px",
- 'margin-top': "-" + Math.round(totalHeight/2) + "px",
- 'margin-left': "-" + Math.round(imageWidth/2) + "px"
- }).addClass("sized");
- }
- });
- }
-
- function init() {
- datatableClick();
- resizeImageModal();
- }
-
- return {
- init:init
- }
- })();
+ //Resize bootstrap modal & adjust margins to size of image.
+ function resizeImageModal() {
+ $('#thumbnailModal, #screenshotModal').on('shown', function () {
+ if (!$(this).hasClass("sized")) {
+ var imageWidth = $(this).find("img").width(),
+ imageHeight = $(this).find("img").height(),
+ footerHeight = $(this).find(".modal-footer").outerHeight(),
+ headerHeight = $(this).find(".modal-header").outerHeight(),
+ totalHeight = imageHeight + footerHeight + headerHeight;
+
+ $(this).css({
+ width: imageWidth + "px",
+ 'margin-top': "-" + Math.round(totalHeight / 2) + "px",
+ 'margin-left': "-" + Math.round(imageWidth / 2) + "px"
+ }).addClass("sized");
+ }
+ });
+ }
- return {
- initAdminUi : adminUi.init
+ function init() {
+ datatableClick();
+ resizeImageModal();
}
-})();
+ return {
+ init: init
+ }
+})
\ No newline at end of file
Modified: rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_backbone.js
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_backbone.js?rev=1503074&r1=1503073&r2=1503074&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_backbone.js (original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_backbone.js Sun Jul 14 22:55:06 2013
@@ -16,62 +16,69 @@
* specific language governing permissions and limitations
* under the License.
*/
-var rave = rave || {};
-
-/*
-Extend backbone's standard model and collection with some
- */
-rave.Model = Backbone.Model.extend({
- get: function(attr){
- //tweak model get so that array / object members are passed by value instead of reference
- //needed for managing deep objects
- return _.clone(this.attributes[attr]);
- },
+define(["underscore", "backbone"], function(_, Backbone){
/*
- Overridable function that models can implement for serializing themselves for view rendering,
- since often a handlebars template needs explicit keys or booleans that don't make sense
- in a normal json representation of the model. By default will just return toJSON().
+ Extend backbone's standard model and collection with some
*/
- toViewModel: function () {
- return this.toJSON();
- }
-});
-
-rave.Collection = Backbone.Collection.extend({
- toViewModel: function () {
- return this.map(function (model) {
- return model.toViewModel();
- });
- }
-})
+ var Model = Backbone.Model.extend({
+ get: function(attr){
+ //tweak model get so that array / object members are passed by value instead of reference
+ //needed for managing deep objects
+ return _.clone(this.attributes[attr]);
+ },
+
+ /*
+ Overridable function that models can implement for serializing themselves for view rendering,
+ since often a handlebars template needs explicit keys or booleans that don't make sense
+ in a normal json representation of the model. By default will just return toJSON().
+ */
+ toViewModel: function () {
+ return this.toJSON();
+ }
+ });
+
+ var Collection = Backbone.Collection.extend({
+ toViewModel: function () {
+ return this.map(function (model) {
+ return model.toViewModel();
+ });
+ }
+ })
-/*
- rave.View is an extension of Backbone's view with some scaffolding put in place. The expectation is that a view
- will be declared with a hash of models (models or collections) that will be merged and fed to the view at render
- time. By default on any change to the models the view will be re-rendered. Also provides an implementation of
- render that probably will not need to be overrridden.
- */
-rave.View = Backbone.View.extend({
- initialize: function () {
- var self = this;
- _.bindAll(this);
-
- _.each(this.models, function (model) {
- model.on('change', self.render);
- model.on('reset', self.render);
- });
- },
- render: function () {
- var template = this.template;
-
- var viewData = {};
- _.each(this.models, function (model, key) {
- viewData[key] = model.toViewModel();
- });
-
- this.$el.html(template(viewData));
- return this;
+ /*
+ rave.View is an extension of Backbone's view with some scaffolding put in place. The expectation is that a view
+ will be declared with a hash of models (models or collections) that will be merged and fed to the view at render
+ time. By default on any change to the models the view will be re-rendered. Also provides an implementation of
+ render that probably will not need to be overrridden.
+ */
+ var View = Backbone.View.extend({
+ initialize: function () {
+ var self = this;
+ _.bindAll(this);
+
+ _.each(this.models, function (model) {
+ model.on('change', self.render);
+ model.on('reset', self.render);
+ });
+ },
+ render: function () {
+ var template = this.template;
+
+ var viewData = {};
+ _.each(this.models, function (model, key) {
+ viewData[key] = model.toViewModel();
+ });
+
+ this.$el.html(template(viewData));
+ return this;
+ }
+ });
+
+ return{
+ Model:Model,
+ Collection:Collection,
+ View:View
}
-});
\ No newline at end of file
+})
\ No newline at end of file
Modified: rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_forms.js
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_forms.js?rev=1503074&r1=1503073&r2=1503074&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_forms.js (original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_forms.js Sun Jul 14 22:55:06 2013
@@ -17,9 +17,7 @@
* under the License.
*/
-var rave = rave || {};
-rave.forms = rave.forms || (function() {
-
+define(["jquery", "portal/rave_portal", "jqueryValidate"], function($, ravePortal){
function validateNewAccountForm() {
$("#newAccountForm").validate({
rules: {
@@ -43,7 +41,7 @@ rave.forms = rave.forms || (function() {
},
messages: {
confirmPassword: {
- equalTo: rave.getClientMessage("form.password.invalid_match")
+ equalTo: ravePortal.getClientMessage("form.password.invalid_match")
}
}
});
@@ -64,23 +62,23 @@ rave.forms = rave.forms || (function() {
},
messages: {
passwordConfirm: {
- equalTo: rave.getClientMessage("form.password.invalid_match")
+ equalTo: ravePortal.getClientMessage("form.password.invalid_match")
}
}
});
}
-
+
function validateEditAccountForm() {
$("#editAccountForm").validate({
rules: {
- email : {
- required: true,
- email: true
- }
- }
+ email : {
+ required: true,
+ email: true
+ }
+ }
});
}
-
+
function validatePageForm() {
$("#pageForm").validate({
rules: {
@@ -93,8 +91,8 @@ rave.forms = rave.forms || (function() {
return {
validateNewAccountForm : validateNewAccountForm,
- validateUserProfileForm: validateUserProfileForm,
- validateEditAccountForm: validateEditAccountForm,
+ validateUserProfileForm: validateUserProfileForm,
+ validateEditAccountForm: validateEditAccountForm,
validatePageForm: validatePageForm
};
-})();
+})
\ No newline at end of file
Modified: rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_layout.js
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_layout.js?rev=1503074&r1=1503073&r2=1503074&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_layout.js (original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_layout.js Sun Jul 14 22:55:06 2013
@@ -17,597 +17,365 @@
* under the License.
*/
-var rave = rave || {};
-rave.layout = rave.layout || (function () {
- var MOVE_PAGE_DEFAULT_POSITION_IDX = -1;
- var $moveWidgetDialog;
- var showImportExportUI = false;
- var $movePageDialog = $("#movePageDialog");
- var $pageFormTabbed = $("#pageFormTabbed");
- var $pageFormImport = $("#pageFormImport");
- var $omdlFile = $("#omdlFile");
- var $pageForm = $("#pageForm");
- var $tab_title_input = $("#tab_title"),
- $tab_id = $("#tab_id"),
- $page_layout_input = $("#pageLayout");
-
- // page menu related functions
- var pageMenu = (function () {
- var $addPageButton = $("#addPageButton");
- var $menuItemEdit = $("#pageMenuEdit");
- var $menuItemDelete = $("#pageMenuDelete");
- var $menuItemMove = $("#pageMenuMove");
- var $menuItemShare = $("#pageMenuShare");
- var $menuItemRevokeShare = $("#pageMenuRevokeShare");
- var $MenuItemExport = $("#pageMenuExport");
+define(["jquery", "rave", "portal/rave_portal", "portal/rave_models", "bootstrap", "jqueryValidate"],
+ function ($, rave, ravePortal, raveModels) {
+ var MOVE_PAGE_DEFAULT_POSITION_IDX = -1;
+ var $moveWidgetDialog;
+ var showImportExportUI = false;
+ var $movePageDialog = $("#movePageDialog");
+ var $pageFormTabbed = $("#pageFormTabbed");
+ var $pageFormImport = $("#pageFormImport");
+ var $omdlFile = $("#omdlFile");
+ var $pageForm = $("#pageForm");
+ var $tab_title_input = $("#tab_title"),
+ $tab_id = $("#tab_id"),
+ $page_layout_input = $("#pageLayout");
+
+ // page menu related functions
+ var pageMenu = (function () {
+ var $addPageButton = $("#addPageButton");
+ var $menuItemEdit = $("#pageMenuEdit");
+ var $menuItemDelete = $("#pageMenuDelete");
+ var $menuItemMove = $("#pageMenuMove");
+ var $menuItemShare = $("#pageMenuShare");
+ var $menuItemRevokeShare = $("#pageMenuRevokeShare");
+ var $MenuItemExport = $("#pageMenuExport");
+
+ /**
+ * Initializes the private pageMenu closure
+ * - binds click event handler to menu button
+ * - binds menu item click event handlers
+ * - binds body click event handler to close the menu
+ */
+ function init(showImportExport) {
+ showImportExportUI = showImportExport;
+ // initialize the page form validator overriding the
+ // styles to wire in bootstrap styles
+ $pageForm.validate({
+ errorElement: 'span',
+ errorClass: 'help-inline',
+ highlight: function (element, errorClass) {
+ $(element).parent().parent().addClass('error');
+ },
+ unhighlight: function (element, errorClass) {
+ $(element).parent().parent().removeClass('error');
+ }
+ });
+ $pageFormTabbed.validate({
+ errorElement: 'span',
+ errorClass: 'help-inline',
+ highlight: function (element, errorClass) {
+ $(element).parent().parent().addClass('error');
+ },
+ unhighlight: function (element, errorClass) {
+ $(element).parent().parent().removeClass('error');
+ }
+ });
+ $pageFormImport.validate({
+ errorElement: 'span',
+ errorClass: 'help-inline',
+ highlight: function (element, errorClass) {
+ $(element).parent().parent().addClass('error');
+ },
+ unhighlight: function (element, errorClass) {
+ $(element).parent().parent().removeClass('error');
+ }
+ });
- /**
- * Initializes the private pageMenu closure
- * - binds click event handler to menu button
- * - binds menu item click event handlers
- * - binds body click event handler to close the menu
- */
- function init(showImportExport) {
- showImportExportUI = showImportExport;
- // initialize the page form validator overriding the
- // styles to wire in bootstrap styles
- $pageForm.validate({
- errorElement: 'span',
- errorClass: 'help-inline',
- highlight: function (element, errorClass) {
- $(element).parent().parent().addClass('error');
- },
- unhighlight: function (element, errorClass) {
- $(element).parent().parent().removeClass('error');
- }
- });
- $pageFormTabbed.validate({
- errorElement: 'span',
- errorClass: 'help-inline',
- highlight: function (element, errorClass) {
- $(element).parent().parent().addClass('error');
- },
- unhighlight: function (element, errorClass) {
- $(element).parent().parent().removeClass('error');
- }
- });
- $pageFormImport.validate({
- errorElement: 'span',
- errorClass: 'help-inline',
- highlight: function (element, errorClass) {
- $(element).parent().parent().addClass('error');
- },
- unhighlight: function (element, errorClass) {
- $(element).parent().parent().removeClass('error');
- }
- });
-
-
- // initialize the close button in the page menu dialog
- $("#pageMenuCloseButton").click(rave.layout.closePageDialog);
- $("#pageMenuCloseButtonTab").click(rave.layout.closePageDialogTabbed);
- if (showImportExport) {
- $("#pageMenuExport").removeClass('hidden');
- }
- // setup the edit page menu item
- $addPageButton.bind('click', function (event) {
+ // initialize the close button in the page menu dialog
+ $("#pageMenuCloseButton").click(closePageDialog);
+ $("#pageMenuCloseButtonTab").click(closePageDialogTabbed);
if (showImportExport) {
- var $pageMenuUpdateButtonTabbed = $("#pageMenuUpdateButtonTab");
- $pageMenuUpdateButtonTabbed.html(rave.getClientMessage("common.add"));
- $("#page-tabs").tabs();
- $pageMenuUpdateButtonTabbed.click(rave.layout.addOrImportPage);
- $('#pageMenuDialogTabbed').on('shown', function () {
- $("#tab_title").first().focus();
- });
- $("#pageMenuDialogTabbed").modal('show');
- } else {
- $("#pageMenuDialogHeader").html(rave.getClientMessage("page.add"));
- var $pageMenuUpdateButton = $("#pageMenuUpdateButton");
- $("#pageLayoutGroup").show();
- $pageMenuUpdateButton.html(rave.getClientMessage("common.add"));
- // unbind the previous click event since we are sharing the
- // dialog between separate add/edit page actions
- $pageMenuUpdateButton.unbind('click');
- $pageMenuUpdateButton.click(rave.layout.addPage);
- $('#pageMenuDialog').on('shown', function () {
- $("#tab_title").first().focus();
- });
- $("#pageMenuDialog").modal('show');
+ $("#pageMenuExport").removeClass('hidden');
}
- });
- // setup the edit page menu item
- $menuItemEdit.bind('click', function (event) {
- rave.api.rpc.getPagePrefs({pageId: getCurrentPageId(),
- successCallback: function (result) {
- $tab_title_input.val(result.result.name);
- $tab_id.val(result.result.id);
- $page_layout_input.val(result.result.pageLayout.code);
- $("#pageMenuDialogHeader").html(rave.getClientMessage("page.update"));
+ // setup the edit page menu item
+ $addPageButton.bind('click', function (event) {
+ if (showImportExport) {
+ var $pageMenuUpdateButtonTabbed = $("#pageMenuUpdateButtonTab");
+ $pageMenuUpdateButtonTabbed.html(ravePortal.getClientMessage("common.add"));
+ $("#page-tabs").tabs();
+ $pageMenuUpdateButtonTabbed.click(addOrImportPage);
+ $('#pageMenuDialogTabbed').on('shown', function () {
+ $("#tab_title").first().focus();
+ });
+ $("#pageMenuDialogTabbed").modal('show');
+ } else {
+ $("#pageMenuDialogHeader").html(ravePortal.getClientMessage("page.add"));
var $pageMenuUpdateButton = $("#pageMenuUpdateButton");
$("#pageLayoutGroup").show();
- $pageMenuUpdateButton.html(rave.getClientMessage("common.save"));
+ $pageMenuUpdateButton.html(ravePortal.getClientMessage("common.add"));
// unbind the previous click event since we are sharing the
// dialog between separate add/edit page actions
$pageMenuUpdateButton.unbind('click');
- $pageMenuUpdateButton.click(rave.layout.updatePage);
+ $pageMenuUpdateButton.click(addPage);
$('#pageMenuDialog').on('shown', function () {
$("#tab_title").first().focus();
});
$("#pageMenuDialog").modal('show');
}
});
- });
- // setup the delete page menu item if it is not disabled
- if (!$menuItemDelete.hasClass("menu-item-disabled")) {
- $menuItemDelete.bind('click', function (event) {
- // send the rpc request to delete the page
- rave.api.rest.deletePage({pageId: getCurrentPageId(), successCallback: rave.viewPage});
+ // setup the edit page menu item
+ $menuItemEdit.bind('click', function (event) {
+ rave.api.rpc.getPagePrefs({pageId: getCurrentPageId(),
+ successCallback: function (result) {
+ $tab_title_input.val(result.result.name);
+ $tab_id.val(result.result.id);
+ $page_layout_input.val(result.result.pageLayout.code);
+ $("#pageMenuDialogHeader").html(ravePortal.getClientMessage("page.update"));
+ var $pageMenuUpdateButton = $("#pageMenuUpdateButton");
+ $("#pageLayoutGroup").show();
+ $pageMenuUpdateButton.html(ravePortal.getClientMessage("common.save"));
+ // unbind the previous click event since we are sharing the
+ // dialog between separate add/edit page actions
+ $pageMenuUpdateButton.unbind('click');
+ $pageMenuUpdateButton.click(updatePage);
+ $('#pageMenuDialog').on('shown', function () {
+ $("#tab_title").first().focus();
+ });
+ $("#pageMenuDialog").modal('show');
+ }
+ });
});
- }
- // setup the move page menu item if it is not disabled
- if (!$menuItemMove.hasClass("menu-item-disabled")) {
- $menuItemMove.bind('click', function (event) {
- $movePageDialog.modal('show');
- });
- }
+ // setup the delete page menu item if it is not disabled
+ if (!$menuItemDelete.hasClass("menu-item-disabled")) {
+ $menuItemDelete.bind('click', function (event) {
+ // send the rpc request to delete the page
+ rave.api.rest.deletePage({pageId: getCurrentPageId(), successCallback: ravePortal.viewPage});
+ });
+ }
- // setup the export page menu item if it is not disabled
- if (!$MenuItemExport.hasClass("hidden")) {
- $MenuItemExport.bind('click', function (event) {
- window.open(rave.getContext() + "api/rest/" + "page/" + getCurrentPageId() + "/omdl");
- });
- }
+ // setup the move page menu item if it is not disabled
+ if (!$menuItemMove.hasClass("menu-item-disabled")) {
+ $menuItemMove.bind('click', function (event) {
+ $movePageDialog.modal('show');
+ });
+ }
- // setup the revoke share page menu item
- if (!$menuItemRevokeShare.hasClass("menu-item-disabled")) {
- $menuItemRevokeShare.bind('click', function (event) {
- rave.models.currentPage.removeForSelf();
- });
- }
- }
+ // setup the export page menu item if it is not disabled
+ if (!$MenuItemExport.hasClass("hidden")) {
+ $MenuItemExport.bind('click', function (event) {
+ window.open(rave.getContext() + "api/rest/" + "page/" + getCurrentPageId() + "/omdl");
+ });
+ }
- return {
- init: init
- }
- })();
+ // setup the revoke share page menu item
+ if (!$menuItemRevokeShare.hasClass("menu-item-disabled")) {
+ $menuItemRevokeShare.bind('click', function (event) {
+ raveModels.currentPage.removeForSelf();
+ });
+ }
+ }
- // functions associated with the user search for sharing pages
+ return {
+ init: init
+ }
+ })();
- // widget menu related functions
- var widgetMenu = (function () {
- var $menu;
- var $menuItemMove;
- var $menuItemDelete;
- var $menuItemMaximize;
- var $menuItemAbout;
- var $menuItemComment;
- var $menuItemRate;
+ // functions associated with the user search for sharing pages
- /**
- * Hides the widget menu for a specific widget
- * @param widgetId the id of the widget to hide the menu for
- */
- function hideMenu(widgetId) {
- $("#widget-" + widgetId + "-menu").hide();
- $(".iframe-overlay").remove();
- }
- /**
- * Hides all widget menus
- */
- function hideAllMenus() {
- $(".widget-menu").hide();
- $(".iframe-overlay").remove();
- }
/**
- * Shows the widget menu for a specific widget
- * @param widgetId the id of the widget to show the menu for
+ * Submits the RPC call to move the widget to a new page
*/
- function showMenu(widgetId) {
- $("#widget-" + widgetId + "-menu").show();
+ function moveWidgetToPage(regionWidgetId) {
+ var toPageId = $("#moveToPageId").val();
+ var args = { toPageId: toPageId,
+ regionWidgetId: regionWidgetId,
+ successCallback: function () {
+ ravePortal.viewPage(toPageId);
+ }
+ };
+ // send the rpc request to move the widget to new page
+ rave.api.rpc.moveWidgetToPage(args);
}
/**
- * Initializes a single widgets private widgetMenu closure
- * - binds click event handler to menu button
- * - binds menu item click event handlers
- * - binds body click event handler to close the menu
+ * Submits the RPC call to add a new page if form validation passes
*/
- function bindWidgetMenu(widgetId) {
- // setup the move to page menu item
- $menuItemMove = $("#widget-" + widgetId + "-menu-move-item");
- if (!$menuItemMove.hasClass("menu-item-disabled")) {
- $menuItemMove.bind('click', function (event) {
- var regionWidgetId = rave.getObjectIdFromDomId(this.id);
- // Clear the dropdown box; needing to do this may be a bug?
- $('.dropdown').removeClass('open');
- // Open the modal
- $("#moveWidgetModal").data('regionWidgetId', regionWidgetId);
- $("#moveWidgetModal").modal('show');
-
- // prevent the menu button click event from bubbling up to parent
- // DOM object event handlers such as the page tab click event
- event.stopPropagation();
- });
- }
-
- // setup the delete widget menu item
- $menuItemDelete = $("#widget-" + widgetId + "-menu-delete-item");
- if (!$menuItemDelete.hasClass("menu-item-disabled")) {
- $menuItemDelete.bind('click', function (event) {
- var regionWidgetId = rave.getObjectIdFromDomId(this.id);
-
- // invoke the rpc call to remove the widget from the page
- rave.layout.deleteRegionWidget(regionWidgetId);
-
- // prevent the menu button click event from bubbling up to parent
- // DOM object event handlers such as the page tab click event
- event.stopPropagation();
- });
+ function addPage() {
+ if (showImportExportUI) {
+ if ($pageFormTabbed.valid()) {
+ var newPageTitle = $("#tab_titleTabbed1").val();
+ var newPageLayoutCode = $("#pageLayoutTabbed").val();
+ // send the rpc request to create the new page
+ rave.api.rpc.addPage({pageName: newPageTitle,
+ pageLayoutCode: newPageLayoutCode,
+ errorLabel: 'pageFormErrorsTabbed1',
+ successCallback: function (result) {
+ ravePortal.viewPage(result.result.id);
+ },
+ errorCallback: function (errorLabel) {
+ $("#" + errorLabel).html(ravePortal.getClientMessage("page.duplicate_name"));
+ }
+ });
+ }
+ } else {
+ if ($pageForm.valid()) {
+ var newPageTitle = $tab_title_input.val();
+ var newPageLayoutCode = $page_layout_input.val();
+ // send the rpc request to create the new page
+ rave.api.rpc.addPage({pageName: newPageTitle,
+ pageLayoutCode: newPageLayoutCode,
+ errorLabel: 'pageFormErrors',
+ successCallback: function (result) {
+ ravePortal.viewPage(result.result.id);
+ },
+ errorCallback: function (errorLabel) {
+ $("#" + errorLabel).html(ravePortal.getClientMessage("page.duplicate_name"));
+ }
+ });
+ }
}
+ }
- // setup the maximize widget menu item
- $menuItemMaximize = $("#widget-" + widgetId + "-menu-maximize-item");
- if (!$menuItemMaximize.hasClass("menu-item-disabled")) {
- $menuItemMaximize.bind('click', function (event) {
- var regionWidgetId = rave.getObjectIdFromDomId(this.id);
-
- // maximize the widget
- rave.maximizeWidget({data: {id: regionWidgetId}});
- // prevent the menu button click event from bubbling up to parent
- // DOM object event handlers such as the page tab click event
- event.stopPropagation();
- });
+ function importPage() {
+ if ($.browser.msie == true) {
+ alert(ravePortal.getClientMessage("import.page.not.supported"));
}
-
- // setup the about this widget menu item
- $menuItemAbout = $("#widget-" + widgetId + "-menu-about-item");
- if (!$menuItemAbout.hasClass("menu-item-disabled")) {
- $menuItemAbout.bind('click', function (event) {
- var regionWidget = rave.getRegionWidgetById(rave.getObjectIdFromDomId(this.id));
-
- // go to the widget detail page
- rave.viewWidgetDetail(regionWidget.widgetId, getCurrentPageId());
- // prevent the menu button click event from bubbling up to parent
- // DOM object event handlers such as the page tab click event
- event.stopPropagation();
- });
+ else {
+ if ($pageFormImport.valid()) {
+ $pageFormImport.get(0).setAttribute('action', rave.getContext() + "api/rpc/page/import/omdl");
+ document.getElementById('pageFormImport').onsubmit = function () {
+ document.getElementById('pageFormImport').target = 'file_upload_frame';
+ document.getElementById("file_upload_frame").onload = processFileUploadResult;
+ }
+ $pageFormImport.submit();
+ }
}
+ }
- // setup the comment on this widget menu item
- $menuItemComment = $("#widget-" + widgetId + "-menu-comment-item");
- if (!$menuItemComment.hasClass("menu-item-disabled")) {
- $menuItemComment.bind('click', function (event) {
- var regionWidget = rave.getRegionWidgetById(rave.getObjectIdFromDomId(this.id));
-
- // go to the widget detail page
- rave.viewWidgetDetail(regionWidget.widgetId, getCurrentPageId(), 'widgetComments');
- // prevent the menu button click event from bubbling up to parent
- // DOM object event handlers such as the page tab click event
- event.stopPropagation();
- });
+ function processFileUploadResult() {
+ // chrome & firefox a <pre> has been added to the begining of the json
+ var ret = frames['file_upload_frame'].document.getElementsByTagName("body")[0].firstChild.innerHTML;
+ var data = eval("(" + ret + ")");
+ if (data.error) {
+ if (data.errorCode == 'DUPLICATE_ITEM') {
+ $("#pageFormErrorsTabbed2").html(ravePortal.getClientMessage("page.duplicate_name"));
+ }
+ else if (data.errorCode == 'INTERNAL_ERROR' && data.errorMessage.indexOf("BadOmdlXmlFormatException") != -1) {
+ var msg = data.errorMessage.substr(data.errorMessage.indexOf("BadOmdlXmlFormatException"), data.errorMessage.length)
+ $("#pageFormErrorsTabbed2").html(msg);
+ }
+ else {
+ alert(ravePortal.getClientMessage("api.rpc.error.internal"));
+ }
}
-
- // setup the Rate this widget menu item
- $menuItemRate = $("#widget-" + widgetId + "-menu-rate-item");
- if (!$menuItemRate.hasClass("menu-item-disabled")) {
- $menuItemRate.bind('click', function (event) {
- var regionWidget = rave.getRegionWidgetById(rave.getObjectIdFromDomId(this.id));
-
- // go to the widget detail page
- rave.viewWidgetDetail(regionWidget.widgetId, getCurrentPageId(), 'widgetRatings');
- // prevent the menu button click event from bubbling up to parent
- // DOM object event handlers such as the page tab click event
- event.stopPropagation();
- });
+ else {
+ ravePortal.viewPage(data.result.id);
}
}
- /**
- * Initializes ALL widgets private widgetMenu closure
- */
- function init() {
- // loop over each widget-menu and initialize the menu items
- // note: the edit prefs menu item is by default rendered disabled
- // and it is up to the provider code for that widget to
- // determine if the widget has preferences, and to enable
- // the menu item
- $(".widget-menu").each(function (index, element) {
- var widgetId = rave.getObjectIdFromDomId(element.id);
- bindWidgetMenu(widgetId);
- });
+ function addOrImportPage() {
+ var selectedTab = $("#page-tabs").tabs('option', 'selected');
+ if (selectedTab == 0) {
+ addPage();
+ } else {
+ importPage();
+ }
}
/**
- * Enables the Edit Prefs including the Preferences view (Custom Edit Prefs)
- * menu item in the widget menu to be clicked.
- * Widget providers should use this function when initializing their
- * widgets after determining if the widget has preferences to modify.
- *
- * @param regionWidgetId the regionWidgetId of the regionWidget menu to enable
- * @param isPreferencesView boolean to indicate whether "preferences" view or the default prefs view
+ * Submits the RPC call to move the page to a new render sequence
*/
- function enableEditPrefsMenuItem(regionWidgetId, isPreferencesView) {
- // setup the edit prefs widget menu item
- var $menuItemEditPrefs = $("#widget-" + regionWidgetId + "-menu-editprefs-item");
- $menuItemEditPrefs.removeClass("menu-item-disabled");
- $menuItemEditPrefs.on('click', function (event) {
- var regionWidgetId = rave.getObjectIdFromDomId(this.id);
-
- // show the regular edit prefs or the Custom Edit Prefs(preferences) region
- if (isPreferencesView) {
- rave.editCustomPrefs({data: {id: regionWidgetId}});
- }
- else {
- rave.editPrefs(regionWidgetId);
+ function movePage() {
+ var moveAfterPageId = $("#moveAfterPageId").val();
+ var args = { pageId: $("#currentPageId").val(),
+ successCallback: function (result) {
+ ravePortal.viewPage(result.result.id);
}
- // prevent the menu button click event from bubbling up to parent
- // DOM object event handlers such as the page tab click event
- return false;
- });
- }
+ };
- return {
- init: init,
- bindWidgetMenu: bindWidgetMenu,
- hideAll: hideAllMenus,
- hide: hideMenu,
- show: showMenu,
- enableEditPrefsMenuItem: enableEditPrefsMenuItem
- }
- })();
-
- function addIframeOverlays(event) {
- //e.preventDefault();
-
- var i = 0;
- $(".widget").each(function () {
- var W = $(this).outerWidth(),
- H = $(this).outerHeight(),
- X = $(this).position().left,
- Y = $(this).position().top;
-
- $(this).after('<div class="iframe-overlay" onclick="rave.layout.hideWidgetMenu()" />');
- $(this).next('.iframe-overlay').css({
- width: W,
- height: H,
- position: "absolute",
- top: Y,
- left: X
- });
-
- });
-
- // Remove any overlays onclick of all the things!!!
- $("*:not(.dropdown-toggle)").on("click", function () {
- $(".iframe-overlay").remove();
- });
- }
-
- /**
- * Submits the RPC call to move the widget to a new page
- */
- function moveWidgetToPage(regionWidgetId) {
- var toPageId = $("#moveToPageId").val();
- var args = { toPageId: toPageId,
- regionWidgetId: regionWidgetId,
- successCallback: function () {
- rave.viewPage(toPageId);
- }
- };
- // send the rpc request to move the widget to new page
- rave.api.rpc.moveWidgetToPage(args);
- }
-
- /**
- * Submits the RPC call to add a new page if form validation passes
- */
- function addPage() {
- if (showImportExportUI) {
- if ($pageFormTabbed.valid()) {
- var newPageTitle = $("#tab_titleTabbed1").val();
- var newPageLayoutCode = $("#pageLayoutTabbed").val();
- // send the rpc request to create the new page
- rave.api.rpc.addPage({pageName: newPageTitle,
- pageLayoutCode: newPageLayoutCode,
- errorLabel: 'pageFormErrorsTabbed1',
- successCallback: function (result) {
- rave.viewPage(result.result.id);
- }
- });
+ if (moveAfterPageId != MOVE_PAGE_DEFAULT_POSITION_IDX) {
+ args["moveAfterPageId"] = moveAfterPageId;
}
- } else {
+
+ // send the rpc request to move the new page
+ rave.api.rpc.movePage(args);
+ }
+
+ function updatePage() {
if ($pageForm.valid()) {
- var newPageTitle = $tab_title_input.val();
- var newPageLayoutCode = $page_layout_input.val();
- // send the rpc request to create the new page
- rave.api.rpc.addPage({pageName: newPageTitle,
- pageLayoutCode: newPageLayoutCode,
+ // send the rpc request to update the page
+ rave.api.rpc.updatePagePrefs({pageId: $tab_id.val(),
+ title: $tab_title_input.val(),
+ layout: $page_layout_input.val(),
errorLabel: 'pageFormErrors',
successCallback: function (result) {
- rave.viewPage(result.result.id);
+ ravePortal.viewPage(result.result.id);
+ },
+ errorCallback: function (errorLabel) {
+ $("#" + errorLabel).html(ravePortal.getClientMessage("page.duplicate_name"));
}
});
}
}
- }
- function importPage() {
- if ($.browser.msie == true) {
- alert(rave.getClientMessage("import.page.not.supported"));
- }
- else {
- if ($pageFormImport.valid()) {
- $pageFormImport.get(0).setAttribute('action', rave.getContext() + "api/rpc/page/import/omdl");
- document.getElementById('pageFormImport').onsubmit = function () {
- document.getElementById('pageFormImport').target = 'file_upload_frame';
- document.getElementById("file_upload_frame").onload = processFileUploadResult;
- }
- $pageFormImport.submit();
- }
+ function closePageDialog() {
+ $pageForm[0].reset();
+ $tab_id.val('');
+ $("#pageFormErrors").text('');
+ $("#pageMenuDialog").modal("hide");
}
- }
- function processFileUploadResult() {
- // chrome & firefox a <pre> has been added to the begining of the json
- var ret = frames['file_upload_frame'].document.getElementsByTagName("body")[0].firstChild.innerHTML;
- var data = eval("(" + ret + ")");
- if (data.error) {
- if (data.errorCode == 'DUPLICATE_ITEM') {
- $("#pageFormErrorsTabbed2").html(rave.getClientMessage("page.duplicate_name"));
- }
- else if (data.errorCode == 'INTERNAL_ERROR' && data.errorMessage.indexOf("BadOmdlXmlFormatException") != -1) {
- var msg = data.errorMessage.substr(data.errorMessage.indexOf("BadOmdlXmlFormatException"), data.errorMessage.length)
- $("#pageFormErrorsTabbed2").html(msg);
- }
- else {
- alert(rave.getClientMessage("api.rpc.error.internal"));
- }
+ function closePageDialogTabbed() {
+ $pageForm[0].reset();
+ $("#pageFormErrors").text('');
+ $("#pageFormErrorsTabbed1").text('');
+ $("#pageFormErrorsTabbed2").text('');
+ $pageFormTabbed[0].reset();
+ $pageFormImport[0].reset();
+ $("#pageMenuDialogTabbed").modal("hide");
}
- else {
- rave.viewPage(data.result.id);
- }
- }
- function addOrImportPage() {
- var selectedTab = $("#page-tabs").tabs('option', 'selected');
- if (selectedTab == 0) {
- addPage();
- } else {
- importPage();
- }
- }
-
- /**
- * Submits the RPC call to move the page to a new render sequence
- */
- function movePage() {
- var moveAfterPageId = $("#moveAfterPageId").val();
- var args = { pageId: $("#currentPageId").val(),
- successCallback: function (result) {
- rave.viewPage(result.result.id);
- }
- };
-
- if (moveAfterPageId != MOVE_PAGE_DEFAULT_POSITION_IDX) {
- args["moveAfterPageId"] = moveAfterPageId;
+ /**
+ * Returns the pageId of the currently viewed page
+ */
+ function getCurrentPageId() {
+ return rave.getPage().id
}
- // send the rpc request to move the new page
- rave.api.rpc.movePage(args);
- }
-
- function updatePage() {
- if ($pageForm.valid()) {
- // send the rpc request to update the page
- rave.api.rpc.updatePagePrefs({pageId: $tab_id.val(),
- title: $tab_title_input.val(),
- layout: $page_layout_input.val(),
- errorLabel: 'pageFormErrors',
- successCallback: function (result) {
- rave.viewPage(result.result.id);
- }});
+ /**
+ * Determines if the widget should be rendered as part of the initial page view. This can be used to help optimize
+ * page loads as widgets located on non-active sub pages will not be rendered initially. The function will return
+ * false if one of the following criteria is met, and true otherwise:
+ *
+ * 1) the widget is on a top level page (not a sub page)
+ * 2) the widget is on a sub page that is currently requested in the URL via the hash tag
+ * ie /app//person/canoniocal#My%20Activity
+ * 3) the widget is on the default sub page and the page request URL doesn't contain a sub-page hash tag
+ * ie /app/person/canonical
+ *
+ * @return boolean
+ */
+ function isWidgetOnHiddenTab(widget) {
+ var hash = decodeURIComponent(location.hash);
+ var subPage = widget.subPage;
+ return !(subPage.id === null ||
+ ("#" + subPage.name) === hash ||
+ (hash === "" && subPage.isDefault));
}
- }
- function closePageDialog() {
- $pageForm[0].reset();
- $tab_id.val('');
- $("#pageFormErrors").text('');
- $("#pageMenuDialog").modal("hide");
- }
-
- function closePageDialogTabbed() {
- $pageForm[0].reset();
- $("#pageFormErrors").text('');
- $("#pageFormErrorsTabbed1").text('');
- $("#pageFormErrorsTabbed2").text('');
- $pageFormTabbed[0].reset();
- $pageFormImport[0].reset();
- $("#pageMenuDialogTabbed").modal("hide");
- }
-
- /**
- * Invokes the RPC call to delete a regionWidget from a page
- *
- * @param regionWidgetId the regionWidgetId to delete
- */
- function deleteRegionWidget(regionWidgetId) {
- if (confirm(rave.getClientMessage("widget.remove_confirm"))) {
- rave.api.rpc.removeWidget({
- regionWidgetId: regionWidgetId,
- successCallback: function () {
- // remove the widget from the dom and the internal memory map
- $("#widget-" + this.regionWidgetId + "-wrapper").remove();
- rave.removeWidgetFromMap(this.regionWidgetId);
- if (rave.isPageEmpty()) {
- rave.displayEmptyPageMessage();
- }
- }
- });
+ function init(){
+ pageMenu.init(rave.getExportEnabled());
}
- }
- /**
- * Returns the pageId of the currently viewed page
- */
- function getCurrentPageId() {
- return $("#currentPageId").val();
- }
-
- /**
- * Determines if the widget should be rendered as part of the initial page view. This can be used to help optimize
- * page loads as widgets located on non-active sub pages will not be rendered initially. The function will return
- * false if one of the following criteria is met, and true otherwise:
- *
- * 1) the widget is on a top level page (not a sub page)
- * 2) the widget is on a sub page that is currently requested in the URL via the hash tag
- * ie /app//person/canoniocal#My%20Activity
- * 3) the widget is on the default sub page and the page request URL doesn't contain a sub-page hash tag
- * ie /app/person/canonical
- *
- * @return boolean
- */
- function isWidgetOnHiddenTab(widget) {
- var hash = decodeURIComponent(location.hash);
- var subPage = widget.subPage;
- return !(subPage.id === null ||
- ("#" + subPage.name) === hash ||
- (hash === "" && subPage.isDefault));
- }
-
- /***
- * initializes the rave.layout namespace code
- */
- function init(showImportExport) {
- pageMenu.init(showImportExport);
- //widgetMenu.init();
- // initialize the bootstrap dropdowns
- $(".dropdown-toggle").dropdown();
- }
-
- // public rave.layout API
- return {
- init: init,
- getCurrentPageId: getCurrentPageId,
- hideWidgetMenu: widgetMenu.hide,
- deleteRegionWidget: deleteRegionWidget,
- enableEditPrefsMenuItem: widgetMenu.enableEditPrefsMenuItem,
- bindWidgetMenu: widgetMenu.bindWidgetMenu,
- addPage: addPage,
- addOrImportPage: addOrImportPage,
- updatePage: updatePage,
- movePage: movePage,
- importPage: importPage,
- closePageDialog: closePageDialog,
- closePageDialogTabbed: closePageDialogTabbed,
- moveWidgetToPage: moveWidgetToPage,
- isWidgetOnHiddenTab: isWidgetOnHiddenTab,
- addIframeOverlays: addIframeOverlays
- };
-})();
+ rave.registerOnInitHandler(init);
+
+ // public rave.layout API
+ return {
+ addPage: addPage,
+ addOrImportPage: addOrImportPage,
+ updatePage: updatePage,
+ movePage: movePage,
+ importPage: importPage,
+ closePageDialog: closePageDialog,
+ closePageDialogTabbed: closePageDialogTabbed,
+ moveWidgetToPage: moveWidgetToPage,
+ isWidgetOnHiddenTab: isWidgetOnHiddenTab
+ };
+ })
Modified: rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_models.js
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_models.js?rev=1503074&r1=1503073&r2=1503074&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_models.js (original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/static/script/portal/rave_models.js Sun Jul 14 22:55:06 2013
@@ -17,21 +17,18 @@
* under the License.
*/
-var rave = rave || {};
-
-rave.models = (function () {
-
+define(["underscore", "portal/rave_backbone", "portal/rave_portal", "rave"], function(_, raveBackbone, ravePortal, rave){
/*
User model. Further implementation pending.
*/
- var User = rave.Model.extend({
+ var User = raveBackbone.Model.extend({
});
/*
Collection of users. Currently used for the share page users search.
*/
- var Users = rave.Collection.extend({
+ var Users = raveBackbone.Collection.extend({
model: User,
pageSize: 10,
@@ -55,7 +52,11 @@ rave.models = (function () {
this.searchTerm = term;
if (this.searchTerm) {
- rave.api.rpc.searchUsers({searchTerm: this.searchTerm, offset: 0, successCallback: this.parse });
+ rave.api.rpc.searchUsers({searchTerm: this.searchTerm,
+ offset: 0,
+ successCallback: this.parse,
+ alertEmptySearch: function(){alert(ravePortal.getClientMessage("api.rpc.empty.search.term"));}
+ });
}
else {
rave.api.rpc.getUsers({offset: 0, successCallback: this.parse });
@@ -70,7 +71,11 @@ rave.models = (function () {
offset *= this.pageSize;
if (this.searchTerm) {
- rave.api.rpc.searchUsers({searchTerm: this.searchTerm, offset: offset, successCallback: this.parse });
+ rave.api.rpc.searchUsers({searchTerm: this.searchTerm,
+ offset: offset,
+ successCallback: this.parse,
+ alertEmptySearch: function(){alert(ravePortal.getClientMessage("api.rpc.empty.search.term"));}
+ });
}
else {
rave.api.rpc.getUsers({offset: offset, successCallback: this.parse });
@@ -120,17 +125,12 @@ rave.models = (function () {
/*
Page model. Used for managing most of the sharing functionality.
*/
- var Page = rave.Model.extend({
+ var Page = raveBackbone.Model.extend({
defaults: {
members: {}
},
- /*
- TODO: currently this is used to silently bootstrap the page model from the page view. Once
- the jsp views are lightened up we should be able to provide a full representation of the page
- model to pass to .set() and this should not be needed.
- */
addInitData: function (userId, isEditor) {
var members = this.get('members');
@@ -175,7 +175,6 @@ rave.models = (function () {
/*
The model does not manage or care about views. Instead it fires events
that views can subscribe to for ui representation.
- TODO: solidify and document eventing model
*/
self.trigger('share', 'member:add', userId);
}
@@ -250,11 +249,6 @@ rave.models = (function () {
rave.api.rpc.clonePageForUser({pageId: this.get('id'), userId: userId, pageName: pageName,
successCallback: function(result){
if(result.error) {
- /*
- TODO: this is a weird error handling condition used by clone to catch duplicate
- named pages. Firing an event and letting the view handle for now, but the api
- should be managing errors better.
- */
return self.trigger('error', result.errorCode, userId);
}
self.trigger('share', 'clone', userId);
@@ -290,7 +284,4 @@ rave.models = (function () {
currentPage: new Page(),
users: new Users()
}
-
-})();
-
-
+})