Author: erinnp
Date: Tue Mar 26 08:26:42 2013
New Revision: 1461011

URL: http://svn.apache.org/r1461011
Log:
RAVE-921. Fixed requestNavigateTo rendering into surfaces. Went ahead and 
implemented canvas and home as registered view objects.


Modified:
    
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/portal/rave_ui.js

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=1461011&r1=1461010&r2=1461011&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
 Tue Mar 26 08:26:42 2013
@@ -100,7 +100,8 @@ rave = (function () {
         }
         //if registered view is a constructor, create a new instance
         if (_.isFunction(view)) {
-            view = new view();
+            //TODO: this makes sure that the constructor gets a widget object, 
but it's cheesy. Should clean it up.
+            view = new view(args[0]);
         }
         view.render.apply(view, args);
         view._uid = _.uniqueId('rave_view_');

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=1461011&r1=1461010&r2=1461011&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
 Tue Mar 26 08:26:42 2013
@@ -48,8 +48,11 @@ rave.registerProvider(
         }
 
         function requestNavigateTo(args, viewName, opt_params, opt_ownerId) {
-            var widget = args.gs._widget;
-            widget.render(widget._el, {view: viewName, view_params: 
opt_params, ownerId: 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) {

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=1461011&r1=1461010&r2=1461011&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
 Tue Mar 26 08:26:42 2013
@@ -218,169 +218,7 @@ _.extend(rave.ui, (function () {
         }
 
         _.each(rave.getWidgets(), function (widget) {
-            var widgetId = widget.regionWidgetId;
-
-            var $chrome = $('#widget-' + widgetId + '-wrapper');
-            var $minimizeIcon = $("#widget-" + widgetId + "-min");
-            var $toggleCollapseIcon = $("#widget-" + widgetId + "-collapse");
-            var $menuItemMove = $("#widget-" + widgetId + "-menu-move-item");
-            var $menuItemDelete = $("#widget-" + widgetId + 
"-menu-delete-item");
-            var $menuItemMaximize = $("#widget-" + widgetId + 
"-menu-maximize-item");
-            var $menuItemAbout = $("#widget-" + widgetId + "-menu-about-item");
-            var $menuItemComment = $("#widget-" + widgetId + 
"-menu-comment-item");
-            var $menuItemRate = $("#widget-" + widgetId + "-menu-rate-item");
-            var $menuItemEditPrefs = $("#widget-" + widgetId + 
"-menu-editprefs-item");
-            var $widgetSite = $("#widget-" + widgetId + "-body");
-
-            widget.render($widgetSite[0]);
-            doCollapseExpand();
-
-            function minimize() {
-                $(".dnd-overlay, .canvas-overlay").remove();
-                getNonLockedRegions().sortable("option", "disabled", false);
-                // display the widget in normal view
-                $("#widget-" + widgetId + 
"-wrapper").removeClass("widget-wrapper-canvas").addClass("widget-wrapper");
-                // hide the widget minimize button
-                $("#widget-" + widgetId + "-min").hide();
-                // show the widget menu
-                $("#widget-" + widgetId + "-widget-menu-wrapper").show();
-                // show the collapse/restore toggle icon
-                $("#widget-" + widgetId + "-collapse").show();
-                // if the widget is collapsed execute the collapse function
-                // otherwise execute the minimize function
-                widget.render(widget._el);
-                return false;
-            }
-
-            function maximize() {
-                // display the widget in maximized view
-                openFullScreenOverlay(widgetId);
-                // due to widget list changing height of the window, we have 
to set the height of the sneeze-guard here.
-                var overlayStyleMap = {
-                    height: $('.wrapper').height() - $('.navbar').height() - 
$('.logo-wrapper').height()
-                };
-                $('.canvas-overlay').css(overlayStyleMap);
-
-                widget.render(widget._el, {view: 'canvas'});
-
-                function openFullScreenOverlay(widgetId) {
-                    addCanvasOverlay($("#pageContent"));
-                    //TODO: make this work
-                    getNonLockedRegions().sortable("option", "disabled", true);
-                    $("#widget-" + widgetId + 
"-wrapper").removeClass("widget-wrapper").addClass("widget-wrapper-canvas");
-                    // hide the widget menu
-                    $("#widget-" + widgetId + "-widget-menu-wrapper").hide();
-                    // display the widget minimize button
-                    $("#widget-" + widgetId + "-min").show();
-                    // hide the collapse/restore toggle icon in canvas mode
-                    $("#widget-" + widgetId + "-collapse").hide();
-                }
-
-                function addCanvasOverlay(jqElm) {
-                    var overlay = $('<div></div>');
-                    var styleMap = {
-                        height: $('body').height() - 40
-                    };
-
-                    // style it and give it the marker class
-                    $(overlay).css(styleMap);
-                    $(overlay).addClass("canvas-overlay");
-                    // add it to the dom before the iframe so it covers it
-                    jqElm.prepend(overlay[0]);
-                }
-            }
-
-            function toggleCollapse() {
-                var hidden = widget.collapsed
-                if (hidden) {
-                    widget.show();
-                }
-                else {
-                    widget.hide();
-                }
-                doCollapseExpand();
-                return false;
-            }
-
-            function doCollapseExpand() {
-                var expanded = !widget.collapsed
-                $('iframe', $widgetSite).toggle(expanded);
-                $('i', $toggleCollapseIcon).toggleClass('icon-chevron-down', 
expanded);
-                $('i', $toggleCollapseIcon).toggleClass('icon-chevron-up', 
!expanded);
-            }
-
-            function showMovePageDialog() {
-                // Clear the dropdown box; needing to do this may be a bug?
-                $('.dropdown').removeClass('open');
-                // Open the modal
-                $("#moveWidgetModal").data('regionWidgetId', widgetId);
-                $("#moveWidgetModal").modal('show');
-
-                return false;
-            }
-
-            function deleteWidget() {
-                $chrome.remove();
-                widget.close();
-                rave.unregisterWidget(widget);
-                if (_.isEmpty(rave.getWidgets())) {
-                    displayEmptyPageMessage();
-                }
-                return false;
-            }
-
-            function aboutWidget() {
-                rave.viewWidgetDetail(widgetId, getCurrentPageId());
-                return false;
-            }
-
-            function commentOnWidget() {
-                rave.viewWidgetDetail(widgetId, getCurrentPageId(), 
'widgetComments');
-                return false;
-            }
-
-            function rateWidget() {
-                rave.viewWidgetDetail(widgetId, getCurrentPageId(), 
'widgetRatings');
-                return false;
-            }
-
-            function showPrefsPane() {
-                showWidgetPrefs(widget);
-                return false;
-            }
-
-            $('#widget-' + widgetId + '-toolbar').mousedown(function (event) {
-                // don't allow drag and drop when this item is clicked
-                event.stopPropagation();
-            });
-
-            //bind widget menu items
-            $minimizeIcon.click(minimize);
-            $toggleCollapseIcon.click(toggleCollapse);
-            if (!$menuItemMove.hasClass("menu-item-disabled")) {
-                $menuItemMove.click(showMovePageDialog);
-            }
-            if (!$menuItemDelete.hasClass("menu-item-disabled")) {
-                $menuItemDelete.click(deleteWidget);
-            }
-            if (!$menuItemMaximize.hasClass("menu-item-disabled")) {
-                $menuItemMaximize.click(maximize);
-            }
-            if (!$menuItemAbout.hasClass("menu-item-disabled")) {
-                $menuItemAbout.click(aboutWidget)
-            }
-            if (!$menuItemComment.hasClass("menu-item-disabled")) {
-                $menuItemComment.click(commentOnWidget);
-            }
-            if (!$menuItemRate.hasClass("menu-item-disabled")) {
-                $menuItemRate.click(rateWidget);
-            }
-            var metadata = widget.metadata;
-            if (metadata && (metadata.hasPrefsToEdit || (metadata.views && 
metadata.views.preferences))) {
-                $menuItemEditPrefs.removeClass("menu-item-disabled");
-                $menuItemEditPrefs.click(showPrefsPane);
-            }
-
+            widget.render('home');
         });
     }
 
@@ -722,7 +560,233 @@ _.extend(rave.ui, (function () {
         }
     }
 
-    function registerViews() {
+    function registerHomeView() {
+        var HomeView = function (widget) {
+            this.widget = widget;
+
+            var widgetId = widget.regionWidgetId;
+
+            this.$chrome = $('#widget-' + widgetId + '-wrapper');
+            this.$minimizeIcon = $("#widget-" + widgetId + "-min");
+            this.$toggleCollapseIcon = $("#widget-" + widgetId + "-collapse");
+            this.$menuItemMove = $("#widget-" + widgetId + "-menu-move-item");
+            this.$menuItemDelete = $("#widget-" + widgetId + 
"-menu-delete-item");
+            this.$menuItemMaximize = $("#widget-" + widgetId + 
"-menu-maximize-item");
+            this.$menuItemAbout = $("#widget-" + widgetId + 
"-menu-about-item");
+            this.$menuItemComment = $("#widget-" + widgetId + 
"-menu-comment-item");
+            this.$menuItemRate = $("#widget-" + widgetId + "-menu-rate-item");
+            this.$menuItemEditPrefs = $("#widget-" + widgetId + 
"-menu-editprefs-item");
+            this.$widgetSite = $("#widget-" + widgetId + "-body");
+        }
+
+        HomeView.prototype.render = function (widget) {
+            var widgetId = this.widget.regionWidgetId;
+            var self = this;
+
+            doCollapseExpand();
+            cleanupFromCanvas();
+
+            function cleanupFromCanvas() {
+                $(".dnd-overlay, .canvas-overlay").remove();
+                getNonLockedRegions().sortable("option", "disabled", false);
+                // display the widget in normal view
+                $("#widget-" + widgetId + 
"-wrapper").removeClass("widget-wrapper-canvas").addClass("widget-wrapper");
+                // hide the widget minimize button
+                $("#widget-" + widgetId + "-min").hide();
+                // show the widget menu
+                $("#widget-" + widgetId + "-widget-menu-wrapper").show();
+                // show the collapse/restore toggle icon
+                $("#widget-" + widgetId + "-collapse").show();
+                // if the widget is collapsed execute the collapse function
+                // otherwise execute the minimize function
+                return false;
+            }
+
+            function minimize() {
+                self.widget.render('home');
+            }
+
+            function maximize() {
+                self.widget.render('canvas');
+            }
+
+            function toggleCollapse() {
+                var hidden = self.widget.collapsed
+                if (hidden) {
+                    self.widget.show();
+                }
+                else {
+                    self.widget.hide();
+                }
+                doCollapseExpand();
+                return false;
+            }
+
+            function doCollapseExpand() {
+                var expanded = !widget.collapsed
+                $('iframe', self.$widgetSite).toggle(expanded);
+                $('i', 
self.$toggleCollapseIcon).toggleClass('icon-chevron-down', expanded);
+                $('i', 
self.$toggleCollapseIcon).toggleClass('icon-chevron-up', !expanded);
+            }
+
+            function showMovePageDialog() {
+                // Clear the dropdown box; needing to do self may be a bug?
+                $('.dropdown').removeClass('open');
+                // Open the modal
+                $("#moveWidgetModal").data('regionWidgetId', widgetId);
+                $("#moveWidgetModal").modal('show');
+
+                return false;
+            }
+
+            function deleteWidget() {
+                self.widget.close();
+                return false;
+            }
+
+            function aboutWidget() {
+                rave.viewWidgetDetail(widgetId, getCurrentPageId());
+                return false;
+            }
+
+            function commentOnWidget() {
+                rave.viewWidgetDetail(widgetId, getCurrentPageId(), 
'widgetComments');
+                return false;
+            }
+
+            function rateWidget() {
+                rave.viewWidgetDetail(widgetId, getCurrentPageId(), 
'widgetRatings');
+                return false;
+            }
+
+            function showPrefsPane() {
+                showWidgetPrefs(widget);
+                return false;
+            }
+
+            $('#widget-' + widgetId + '-toolbar').mousedown(function (event) {
+                // don't allow drag and drop when self item is clicked
+                event.stopPropagation();
+            });
+
+            //bind widget menu items
+            self.$minimizeIcon.click(minimize);
+            self.$toggleCollapseIcon.click(toggleCollapse);
+            if (!self.$menuItemMove.hasClass("menu-item-disabled")) {
+                self.$menuItemMove.click(showMovePageDialog);
+            }
+            if (!self.$menuItemDelete.hasClass("menu-item-disabled")) {
+                self.$menuItemDelete.click(deleteWidget);
+            }
+            if (!self.$menuItemMaximize.hasClass("menu-item-disabled")) {
+                self.$menuItemMaximize.click(maximize);
+            }
+            if (!self.$menuItemAbout.hasClass("menu-item-disabled")) {
+                self.$menuItemAbout.click(aboutWidget)
+            }
+            if (!self.$menuItemComment.hasClass("menu-item-disabled")) {
+                self.$menuItemComment.click(commentOnWidget);
+            }
+            if (!self.$menuItemRate.hasClass("menu-item-disabled")) {
+                self.$menuItemRate.click(rateWidget);
+            }
+            var metadata = self.widget.metadata;
+            if (metadata && (metadata.hasPrefsToEdit || (metadata.views && 
metadata.views.preferences))) {
+                self.$menuItemEditPrefs.removeClass("menu-item-disabled");
+                self.$menuItemEditPrefs.click(showPrefsPane);
+            }
+        }
+        HomeView.prototype.getWidgetSite = function () {
+            return this.$widgetSite[0];
+        }
+        HomeView.prototype.destroy = function (widget) {
+            this.$chrome.remove();
+            if (_.isEmpty(rave.getWidgets())) {
+                displayEmptyPageMessage();
+            }
+        }
+
+        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() {
+        var CanvasView = function () {
+            this.widget;
+        }
+        CanvasView.prototype.render = function (widget) {
+            this.widget = widget;
+            // display the widget in maximized view
+            openFullScreenOverlay(widget.regionWidgetId);
+            // due to widget list changing height of the window, we have to 
set the height of the sneeze-guard here.
+            var overlayStyleMap = {
+                height: $('.wrapper').height() - $('.navbar').height() - 
$('.logo-wrapper').height()
+            };
+            $('.canvas-overlay').css(overlayStyleMap);
+
+            widget.render(widget._el, {view: 'canvas'});
+
+            function openFullScreenOverlay(widgetId) {
+                addCanvasOverlay($("#pageContent"));
+                //TODO: make this work
+                getNonLockedRegions().sortable("option", "disabled", true);
+                $("#widget-" + widgetId + 
"-wrapper").removeClass("widget-wrapper").addClass("widget-wrapper-canvas");
+                // hide the widget menu
+                $("#widget-" + widgetId + "-widget-menu-wrapper").hide();
+                // display the widget minimize button
+                $("#widget-" + widgetId + "-min").show();
+                // hide the collapse/restore toggle icon in canvas mode
+                $("#widget-" + widgetId + "-collapse").hide();
+            }
+
+            function addCanvasOverlay(jqElm) {
+                if ($('.canvas-overlay').length > 0) {
+                    return;
+                }
+                var overlay = $('<div></div>');
+                var styleMap = {
+                    height: $('body').height() - 40
+                };
+
+                // style it and give it the marker class
+                $(overlay).css(styleMap);
+                $(overlay).addClass("canvas-overlay");
+                // add it to the dom before the iframe so it covers it
+                jqElm.prepend(overlay[0]);
+            }
+        }
+        CanvasView.prototype.getWidgetSite = function () {
+            return $("#widget-" + this.widget.regionWidgetId + "-body")[0];
+        }
+        CanvasView.prototype.destroy = function () {
+            $(".dnd-overlay, .canvas-overlay").remove();
+            getNonLockedRegions().sortable("option", "disabled", false);
+            // display the widget in normal view
+            $("#widget-" + widgetId + 
"-wrapper").removeClass("widget-wrapper-canvas").addClass("widget-wrapper");
+            // hide the widget minimize button
+            $("#widget-" + widgetId + "-min").hide();
+            // show the widget menu
+            $("#widget-" + widgetId + "-widget-menu-wrapper").show();
+            // show the collapse/restore toggle icon
+            $("#widget-" + widgetId + "-collapse").show();
+            // if the widget is collapsed execute the collapse function
+            // otherwise execute the minimize function
+            return false;
+        }
+
+        rave.registerView('canvas', CanvasView);
+    }
+
+    function registerPopups() {
         var POPUPS = {
             sidebar: {
                 name: "sidebar",
@@ -805,7 +869,6 @@ _.extend(rave.ui, (function () {
         };
 
         _.each(POPUPS, function (target) {
-
             var $container = $(rave.ui.templates[target.template]());
             var $site = $(target.contentSelector, $container);
 
@@ -839,20 +902,12 @@ _.extend(rave.ui, (function () {
                 }
             });
         });
-
-        rave.registerView('errorWidget', {
-            render: function (el, widget) {
-                el.innerHTML = 
rave.getClientMessage("opensocial.render_error") + "<br /><br />" + 
widget.error.message;
-                return this;
-            },
-            destroy: function () {
-            }
-        });
-
     }
 
     function init() {
-        registerViews();
+        registerHomeView();
+        registerCanvasView();
+        registerPopups();
         renderWidgets();
         setupDragAndDrop();
     }


Reply via email to