-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Deletion doesn't work if you move a gadget from one column to another: the regionId on client and server are not in synch until you refresh the page or logout/login. We'll have to revisit to remove the dependency of regionId on the client side.
Marlon On 6/6/11 5:08 PM, Zhenhua (Gerald) Guo wrote: > I committed some code to fix the gadget deletion bug several days ago. > I tested it and it worked. > It still does not work for you guys? > > Gerald > > On Mon, Jun 6, 2011 at 11:34 AM, Marlon Pierce <[email protected]> wrote: > Sorry, computer crash. Sure--go ahead or describe the solution and I'll do > it. Deleting the RegionWidget from Region's list was the only way I saw to > do the delete. > > > Marlon > > > On 6/6/11 1:55 PM, Franklin, Matthew B. wrote: >>>> Ahh. That makes sense. I think there might be a way to simplify the >>>> server side delete operation so that this wouldn't happen. Specifically, >>>> removing the need to pass the regionId and just use the regionWidgetId to >>>> delete the widget. >>>> >>>> -Matt >>>> >>>> On 6/6/11 1:52 PM, "Marlon Pierce" <[email protected]> wrote: >>>> >>>> Trying to delete a gadget that you have moved on the page throws this >>>> error:Rave attempted to update the server with your recent changes, but >>>> the changes were rejected by the server as invalid. >>>> >>>> On 6/6/11 1:46 PM, Franklin, Matthew B. wrote: >>>>>>> >>>>>>> On 6/6/11 1:43 PM, "Marlon Pierce" <[email protected]> wrote: >>>>>>> >>>>>>> I cleaned it up a bit already, but let me look at the init. There is >>>>>>> still a bug associated with deleting gadgets that have been moved. >>>>>>> >>>>>>>> Moved or deleted? Can you elaborate on the bug a bit? >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Marlon >>>>>>> >>>>>>> >>>>>>> On 6/6/11 1:36 PM, Franklin, Matthew B. wrote: >>>>>>>>>> On 6/6/11 1:10 PM, "[email protected]" <[email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Author: mpierce >>>>>>>>>>> Date: Mon Jun 6 17:10:32 2011 >>>>>>>>>>> New Revision: 1132706 >>>>>>>>>>> >>>>>>>>>>> URL: http://svn.apache.org/viewvc?rev=1132706&view=rev >>>>>>>>>>> Log: >>>>>>>>>>> Reorganizing the widget deletion code (RAVE-41) so that most of the >>>>>>>>>>> action takes place in rave.js rather than home.jsp. Probably this >>>>>>>>>>> needs >>>>>>>>>>> a better design pattern applied to it. >>>>>>>>>> >>>>>>>>>> Thanks for taking that on. I haven't had a ton of time to look over >>>>>>>>>> the >>>>>>>>>> delete code yet, but from what I have seen, it looks like there >>>>>>>>>> should >>>>>>>>>> be >>>>>>>>>> no reason that we can't do what is left in the home.jsp in the >>>>>>>>>> ui.init >>>>>>>>>> function of rave.js (init the buttons for all widgets with one >>>>>>>>>> expression). This would allow us to move the script includes for >>>>>>>>>> jquery, >>>>>>>>>> etc back to the bottom of the page, which is where we really want >>>>>>>>>> them. >>>>>>>>>> >>>>>>>>>> I can go ahead and make this change unless Marlon or others who have >>>>>>>>>> been >>>>>>>>>> working on it want to give it a go. >>>>>>>>>> >>>>>>>>>> -Matt >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Modified: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.j >>>>>>>>>>> sp >>>>>>>>>>> incubator/rave/trunk/rave-portal/src/main/webapp/script/rave.js >>>>>>>>>>> >>>>>>>>>>> Modified: >>>>>>>>>>> >>>>>>>>>>> incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.j >>>>>>>>>>> sp >>>>>>>>>>> URL: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/mai >>>>>>>>>>> n/w >>>>>>>>>>> eb >>>>>>>>>>> >>>>>>>>>>> app/WEB-INF/views/home.jsp?rev=1132706&r1=1132705&r2=1132706&view=dif >>>>>>>>>>> f >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> ===================================================================== >>>>>>>>>>> === >>>>>>>>>>> == >>>>>>>>>>> ==== >>>>>>>>>>> --- >>>>>>>>>>> >>>>>>>>>>> incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.j >>>>>>>>>>> sp >>>>>>>>>>> (original) >>>>>>>>>>> +++ >>>>>>>>>>> >>>>>>>>>>> incubator/rave/trunk/rave-portal/src/main/webapp/WEB-INF/views/home.j >>>>>>>>>>> sp >>>>>>>>>>> Mon Jun 6 17:10:32 2011 >>>>>>>>>>> @@ -64,41 +64,35 @@ >>>>>>>>>>> <div class="widget-title-bar" > >>>>>>>>>>> <span >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> id="widget-${regionWidget.id}-title">${regionWidget.widget.title}</sp >>>>>>>>>>> an> >>>>>>>>>>> >>>>>>>>>>> - <span id="widget-${regionWidget.id}-toolbar" >>>>>>>>>>> style="float:right;"> >>>>>>>>>>> - <button id="widget-${regionWidget.id}-max" >>>>>>>>>>> class="widget-toolbar-btn"></button> >>>>>>>>>>> - <button >>>>>>>>>>> id="widget-${regionWidget.id}-remove" >>>>>>>>>>> class="widget-toolbar-btn"></button> >>>>>>>>>>> - <script> >>>>>>>>>>> - $("#widget-${regionWidget.id}-max").button({ >>>>>>>>>>> - text: false, >>>>>>>>>>> - icons: { >>>>>>>>>>> - primary: "ui-icon-arrow-4-diag" >>>>>>>>>>> - } >>>>>>>>>>> - }).click(function() { >>>>>>>>>>> - alert("not implemented yet."); >>>>>>>>>>> - }); >>>>>>>>>>> - >>>>>>>>>>> $("#widget-${regionWidget.id}-remove").button({ >>>>>>>>>>> - text: false, >>>>>>>>>>> - icons: { >>>>>>>>>>> - primary: >>>>>>>>>>> "ui-icon-close" >>>>>>>>>>> - } >>>>>>>>>>> - >>>>>>>>>>> }).unbind("click").click(function() { >>>>>>>>>>> - alert("remove >>>>>>>>>>> gadget"); >>>>>>>>>>> - >>>>>>>>>>> rave.api.rpc.removeWidget({ >>>>>>>>>>> - regionWidgetId: >>>>>>>>>>> "${regionWidget.id}", >>>>>>>>>>> - pageId: >>>>>>>>>>> "${defaultPage.id}", >>>>>>>>>>> - region: { >>>>>>>>>>> - id : >>>>>>>>>>> rave.getGadgetRegion("${regionWidget.id}") >>>>>>>>>>> - }, >>>>>>>>>>> - succCB: function() >>>>>>>>>>> { >>>>>>>>>>> - >>>>>>>>>>> $("#widget-wrapper-${regionWidget.id}").remove(); >>>>>>>>>>> - } >>>>>>>>>>> - }); >>>>>>>>>>> - }); >>>>>>>>>>> - >>>>>>>>>>> rave.mapGadgetToRegion("${regionWidget.id}", >>>>>>>>>>> "${region.id}"); >>>>>>>>>>> - </script> >>>>>>>>>>> - </span> >>>>>>>>>>> - >>>>>>>>>>> - </div> >>>>>>>>>>> + <!-- These are toolbar buttons --> >>>>>>>>>>> + <span >>>>>>>>>>> id="widget-${regionWidget.id}-toolbar" >>>>>>>>>>> style="float:right;"> >>>>>>>>>>> + <button >>>>>>>>>>> id="widget-${regionWidget.id}-max" >>>>>>>>>>> + >>>>>>>>>>> class="widget-toolbar-btn" >>>>>>>>>>> + >>>>>>>>>>> onclick="rave.toolbarMaximize(this)"></button> >>>>>>>>>>> + <button >>>>>>>>>>> id="widget-${regionWidget.id}-remove" >>>>>>>>>>> + >>>>>>>>>>> class="widget-toolbar-btn" >>>>>>>>>>> + >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> onclick="rave.toolbarDelete(this,${regionWidget.id},${region.id},${de >>>>>>>>>>> fau >>>>>>>>>>> lt >>>>>>>>>>> Page.id})"> >>>>>>>>>>> + </button> >>>>>>>>>>> + <script> >>>>>>>>>>> + //This decorates the >>>>>>>>>>> toolbar buttons. As currently written, >>>>>>>>>>> + //it needs to be in the >>>>>>>>>>> forEach loop. >>>>>>>>>>> + >>>>>>>>>>> $("#widget-${regionWidget.id}-max").button({ >>>>>>>>>>> + text: false, >>>>>>>>>>> + icons: { >>>>>>>>>>> + primary: >>>>>>>>>>> "ui-icon-arrow-4-diag" >>>>>>>>>>> + } >>>>>>>>>>> + }); >>>>>>>>>>> + >>>>>>>>>>> + >>>>>>>>>>> $("#widget-${regionWidget.id}-remove").button({ >>>>>>>>>>> + text: false, >>>>>>>>>>> + icons: { >>>>>>>>>>> + primary: "ui-icon-close" >>>>>>>>>>> + } >>>>>>>>>>> + }); >>>>>>>>>>> + </script> >>>>>>>>>>> + >>>>>>>>>>> + </span> >>>>>>>>>>> + </div> >>>>>>>>>>> <div class="widget" id="widget-${regionWidget.id}-body"> >>>>>>>>>>> <!-- >>>>>>>>>>> Among other things, the >>>>>>>>>>> render-widget tag will populate the >>>>>>>>>>> widgets[] array. >>>>>>>>>>> >>>>>>>>>>> Modified: >>>>>>>>>>> incubator/rave/trunk/rave-portal/src/main/webapp/script/rave.js >>>>>>>>>>> URL: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/mai >>>>>>>>>>> n/w >>>>>>>>>>> eb >>>>>>>>>>> app/script/rave.js?rev=1132706&r1=1132705&r2=1132706&view=diff >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> ===================================================================== >>>>>>>>>>> === >>>>>>>>>>> == >>>>>>>>>>> ==== >>>>>>>>>>> --- incubator/rave/trunk/rave-portal/src/main/webapp/script/rave.js >>>>>>>>>>> (original) >>>>>>>>>>> +++ incubator/rave/trunk/rave-portal/src/main/webapp/script/rave.js >>>>>>>>>>> Mon >>>>>>>>>>> Jun 6 17:10:32 2011 >>>>>>>>>>> @@ -105,6 +105,36 @@ var rave = rave || (function() { >>>>>>>>>>> >>>>>>>>>>> })(); >>>>>>>>>>> >>>>>>>>>>> + /** >>>>>>>>>>> + * Group widget toolbar functions >>>>>>>>>>> + */ >>>>>>>>>>> + var toolbar = (function() { >>>>>>>>>>> + function init(){ >>>>>>>>>>> + } >>>>>>>>>>> + function maximizeAction(button){ >>>>>>>>>>> + alert("Maximize: "+button.id+" not >>>>>>>>>>> yet implemented."); >>>>>>>>>>> + >>>>>>>>>>> + }; >>>>>>>>>>> + function >>>>>>>>>>> deleteAction(button,myRegionWidgetId,myRegionId,myPageId){ >>>>>>>>>>> +// alert("Delete:"+button.id+" >>>>>>>>>>> "+myRegionWidgetId+" >>>>>>>>>>> "+myRegionId+" >>>>>>>>>>> "+myPageId); >>>>>>>>>>> + rave.api.rpc.removeWidget({ >>>>>>>>>>> + regionWidgetId: >>>>>>>>>>> myRegionWidgetId, >>>>>>>>>>> + pageId : myPageId, >>>>>>>>>>> + region: { >>>>>>>>>>> + id : myRegionId >>>>>>>>>>> + }, >>>>>>>>>>> + succCB: function() { >>>>>>>>>>> + >>>>>>>>>>> $("#widget-wrapper-"+myRegionWidgetId).remove(); >>>>>>>>>>> + } >>>>>>>>>>> + }); >>>>>>>>>>> + >>>>>>>>>>> rave.mapGadgetToRegion(myRegionWidgetId, myRegionId); >>>>>>>>>>> + }; >>>>>>>>>>> + return { >>>>>>>>>>> + maximizeAction : maximizeAction, >>>>>>>>>>> + deleteAction : deleteAction >>>>>>>>>>> + } >>>>>>>>>>> + })(); >>>>>>>>>>> + >>>>>>>>>>> function initializeProviders() { >>>>>>>>>>> //Current providers are rave.wookie and >>>>>>>>>>> rave.opensocial. >>>>>>>>>>> //Providers register themselves when loaded, so >>>>>>>>>>> @@ -161,14 +191,6 @@ var rave = rave || (function() { >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> /** >>>>>>>>>>> - * Deletes the gadget/widget from the display. >>>>>>>>>>> - * TODO: must be implemented. >>>>>>>>>>> - */ >>>>>>>>>>> - function deleteWidgetFromPage() { >>>>>>>>>>> - return null; >>>>>>>>>>> - } >>>>>>>>>>> - >>>>>>>>>>> - /** >>>>>>>>>>> * Map a widget to the region where it is located. >>>>>>>>>>> * >>>>>>>>>>> * @param widgetId: id of the widget (not DOM id) >>>>>>>>>>> @@ -248,10 +270,6 @@ var rave = rave || (function() { >>>>>>>>>>> */ >>>>>>>>>>> getContext: getContext, >>>>>>>>>>> >>>>>>>>>>> - /** >>>>>>>>>>> - * Remove a selected gadget from the page >>>>>>>>>>> - */ >>>>>>>>>>> - deleteGadget : deleteWidgetFromPage, >>>>>>>>>>> >>>>>>>>>>> /** >>>>>>>>>>> * Change or delete gadget to region map entry. >>>>>>>>>>> @@ -261,6 +279,12 @@ var rave = rave || (function() { >>>>>>>>>>> /** >>>>>>>>>>> * Get the region where a widget/gadget belongs to. >>>>>>>>>>> */ >>>>>>>>>>> - getGadgetRegion : getGadgetRegion >>>>>>>>>>> + getGadgetRegion : getGadgetRegion, >>>>>>>>>>> + >>>>>>>>>>> + /** >>>>>>>>>>> + * These are exposed toolbar actions, >>>>>>>>>>> associated with widget >>>>>>>>>>> toolbar >>>>>>>>>>> buttons >>>>>>>>>>> + */ >>>>>>>>>>> + toolbarMaximize : toolbar.maximizeAction, >>>>>>>>>>> + toolbarDelete : toolbar.deleteAction >>>>>>>>>>> } >>>>>>>>>>> })(); >>>>>>>>>>> \ No newline at end of file >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >> -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.16 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJN7UJ0AAoJEEfVXEODPFIDO68H/jSDm0w9fY0xHNPml1T7OZ3U SZawMn17+WkgzvV8+Nhf01xWBh9j+dwmZN4jqk88qTk7WDwMUJr7cMkRO1YLxI+i wZ/qRej9cwXlNn9n70OSGYTQ9Ru4OHbWwoJ9HOggxdlgZilLGc/6JqULPHq/zPS4 YqqKzVZSRspjPxFg5QtXERKCBc7jdL0WcbuS4wcJc2YCwmj9OfJ06tC6WGQMEH8r ub6XTTFJ1aqGXKOXxET+vt9Q5rz42989SPOUQ8FVhH+hOaoBlnRj3PvLUI/DCOxP TROsxcaVB3+WkZQz+52sv3i/Iu3y3BcDMhbWfqnFUsspL7hCUT5YA5E2plLNk4Q= =vyFJ -----END PGP SIGNATURE-----
