Author: vjrj Date: 2008-11-22 05:29:34 +0100 (Sat, 22 Nov 2008) New Revision: 961 Added: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkVisibility.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/UserBuddiesVisibility.java Modified: trunk/img/icons/person.svg trunk/pom.xml trunk/src/main/java/org/ourproject/kune/app/public/css/all.css trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesDataDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java trunk/src/main/resources/dozerBeanMapping.xml Log: Incomplete - task SocialNet visibility Incomplete - task Use of new ActionDescriptionClass in SocialNetwork Pagination bug in translator and searcher fixed Modified: trunk/img/icons/person.svg =================================================================== --- trunk/img/icons/person.svg 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/img/icons/person.svg 2008-11-22 04:29:34 UTC (rev 961) @@ -687,5 +687,46 @@ id="path2503" sodipodi:nodetypes="csssc" /> </g> + <g + id="g2476" + transform="translate(12.331755,43.161141)"> + <rect + transform="scale(-1,-1)" + y="-21.428276" + x="-645.06616" + height="55.132187" + width="45.132187" + id="rect2474" + style="opacity:0.8;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#e6e6e6;stroke-width:0.86781228;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <g + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/persons/person2-32.png" + transform="matrix(0.3764923,0,0,0.3764923,460.38508,-48.779868)" + id="g2466"> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/group-def-icon.png" + sodipodi:type="arc" + style="opacity:1;fill:#eeaaff;fill-opacity:1;fill-rule:nonzero;stroke:#954f2c;stroke-width:1.63299322;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path2468" + sodipodi:cx="-55.5" + sodipodi:cy="242.36218" + sodipodi:rx="12.5" + sodipodi:ry="12" + d="M -43,242.36218 A 12.5,12 0 1 1 -68,242.36218 A 12.5,12 0 1 1 -43,242.36218 z" + transform="matrix(3.1844753,0,0,3.3202165,608.65933,-692.76155)" /> + <path + id="path2470" + d="M 431.92095,72.158845 C 421.73175,72.158845 411.49371,76.003865 403.72508,83.779605 C 388.30176,99.217125 388.19614,124.14781 403.39336,139.72526 C 401.23073,130.24809 403.98472,119.87609 411.35455,112.49948 C 422.75019,101.09333 441.09171,101.09333 452.48735,112.49948 C 459.85713,119.87609 462.61117,130.24809 460.44854,139.72526 C 475.64581,124.14776 475.54025,99.217125 460.11683,83.779605 C 452.34825,76.003865 442.11016,72.158845 431.92095,72.158845 z" + style="fill:#dbdee3;fill-opacity:1;fill-rule:nonzero;stroke:#954f2c;stroke-width:5.30990267;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:#ff9955;fill-opacity:1;fill-rule:nonzero;stroke:#784421;stroke-width:5.30990171;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 454.05116,106.46307 C 449.38897,113.33396 426.14686,121.7791 418.78848,114.45323 C 411.51844,107.21527 411.5378,95.415805 418.78848,88.158448 C 426.03916,80.901092 437.80837,80.901094 445.05905,88.158453 C 452.30973,95.415815 449.3126,98.760105 454.05116,106.46307 z" + id="path2472" + sodipodi:nodetypes="csssc" /> + </g> + </g> </g> </svg> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/pom.xml 2008-11-22 04:29:34 UTC (rev 961) @@ -379,8 +379,8 @@ <version>2.0-beta23</version> <configuration> <logLevel>INFO</logLevel> - <style>OBF</style> - <!-- <style>PRETTY</style> --> + <style>PRETTY</style> + <!-- <style>OBF</style> --> <runTarget> org.ourproject.kune.app.Kune/Kune.html </runTarget> Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css =================================================================== --- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-22 04:29:34 UTC (rev 961) @@ -41,4 +41,4 @@ padding: 1px 0px 1px 1px; text-decoration:none; } -*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;} \ No newline at end of file +*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;} \ No newline at end of file Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css =================================================================== --- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-22 04:29:34 UTC (rev 961) @@ -784,3 +784,13 @@ margin-left: 6px; } +.k-bsp-buddie { + background: #FAFAFA none repeat scroll 0% 50%; + border: 1px solid #EBEBEB; + padding: 3px; + margin: 3px; +} + +.k-bsp-buddie td { + padding: 2px 3px 2px 3px; +} \ No newline at end of file Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java 2008-11-22 04:29:34 UTC (rev 961) @@ -24,10 +24,12 @@ public class SocialNetworkResultDTO implements IsSerializable { SocialNetworkDTO groupMembers; + SocialNetworkVisibilityDTO socialNetworkVisibilityDTO; ParticipationDataDTO userParticipation; UserBuddiesDataDTO userBuddies; + UserBuddiesVisibilityDTO userBuddiesVisibilityDTO; AccessRightsDTO groupRights; @@ -51,10 +53,18 @@ return groupRights; } + public SocialNetworkVisibilityDTO getSocialNetworkVisibilityDTO() { + return socialNetworkVisibilityDTO; + } + public UserBuddiesDataDTO getUserBuddies() { return userBuddies; } + public UserBuddiesVisibilityDTO getUserBuddiesVisibilityDTO() { + return userBuddiesVisibilityDTO; + } + public ParticipationDataDTO getUserParticipation() { return userParticipation; } @@ -67,10 +77,18 @@ this.groupRights = groupRights; } + public void setSocialNetworkVisibilityDTO(SocialNetworkVisibilityDTO socialNetworkVisibilityDTO) { + this.socialNetworkVisibilityDTO = socialNetworkVisibilityDTO; + } + public void setUserBuddies(UserBuddiesDataDTO userBuddies) { this.userBuddies = userBuddies; } + public void setUserBuddiesVisibilityDTO(UserBuddiesVisibilityDTO userBuddiesVisibilityDTO) { + this.userBuddiesVisibilityDTO = userBuddiesVisibilityDTO; + } + public void setUserParticipation(final ParticipationDataDTO userParticipation) { this.userParticipation = userParticipation; } Added: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java 2008-11-22 04:29:34 UTC (rev 961) @@ -0,0 +1,5 @@ +package org.ourproject.kune.platf.client.dto; + +public enum SocialNetworkVisibilityDTO { + anyone, onlymembers, onlyadmins +} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesDataDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesDataDTO.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesDataDTO.java 2008-11-22 04:29:34 UTC (rev 961) @@ -35,6 +35,15 @@ otherExternalBuddies = 0; } + public boolean contains(String shortName) { + for (UserSimpleDTO buddie : buddies) { + if (buddie.getShortName().equals(shortName)) { + return true; + } + } + return false; + } + public List<UserSimpleDTO> getBuddies() { return buddies; } Added: trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java 2008-11-22 04:29:34 UTC (rev 961) @@ -0,0 +1,5 @@ +package org.ourproject.kune.platf.client.dto; + +public enum UserBuddiesVisibilityDTO { + anyone, yourbuddies, onlyyou +} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java 2008-11-22 04:29:34 UTC (rev 961) @@ -28,6 +28,8 @@ private I18nLanguageDTO language; private I18nCountryDTO country; private TimeZoneDTO timezone; + private boolean hasLogo; + private StateToken stateToken; public UserSimpleDTO() { this(null, null, null, null, null); @@ -72,6 +74,10 @@ return country; } + public boolean getHasLogo() { + return hasLogo; + } + public Long getId() { return id; } @@ -88,6 +94,10 @@ return shortName; } + public StateToken getStateToken() { + return stateToken; + } + public TimeZoneDTO getTimezone() { return timezone; } @@ -101,10 +111,18 @@ return result; } + public boolean hasLogo() { + return hasLogo; + } + public void setCountry(final I18nCountryDTO country) { this.country = country; } + public void setHasLogo(boolean hasLogo) { + this.hasLogo = hasLogo; + } + public void setId(final Long id) { this.id = id; } @@ -121,10 +139,15 @@ this.shortName = shortName; } + public void setStateToken(StateToken stateToken) { + this.stateToken = stateToken; + } + public void setTimezone(final TimeZoneDTO timezone) { this.timezone = timezone; } + @Override public String toString() { return "UserSimpleDTO(" + shortName + ")"; } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java 2008-11-22 04:29:34 UTC (rev 961) @@ -20,6 +20,7 @@ package org.ourproject.kune.platf.client.rpc; import org.ourproject.kune.platf.client.dto.GroupDTO; +import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO; import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.errors.DefaultException; @@ -36,4 +37,6 @@ GroupDTO setGroupFullLogo(String userHash, StateToken token); + void setSocialNetworkVisibility(String userHash, StateToken groupToken, SocialNetworkVisibilityDTO visibility); + } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java 2008-11-22 04:29:34 UTC (rev 961) @@ -20,6 +20,7 @@ package org.ourproject.kune.platf.client.rpc; import org.ourproject.kune.platf.client.dto.GroupDTO; +import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO; import org.ourproject.kune.platf.client.dto.StateToken; import com.google.gwt.user.client.rpc.AsyncCallback; @@ -35,4 +36,7 @@ void setGroupFullLogo(String userHash, StateToken token, AsyncCallback<GroupDTO> asyncCallback); + void setSocialNetworkVisibility(String userHash, StateToken token, SocialNetworkVisibilityDTO visibility, + AsyncCallback<?> asyncCallback); + } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-11-22 04:29:34 UTC (rev 961) @@ -335,9 +335,9 @@ public GroupMembersSummary create() { final GroupMembersSummaryPresenter presenter = new GroupMembersSummaryPresenter( $(I18nUITranslationService.class), $(StateManager.class), $(ImageUtils.class), - $(Session.class), $$(SocialNetworkServiceAsync.class), $$(GroupLiveSearcher.class), - $(WsThemePresenter.class), $$(ChatEngine.class), $(GroupActionRegistry.class), - $(ActionGroupSummaryToolbar.class)); + $(Session.class), $$(SocialNetworkServiceAsync.class), $$(GroupServiceAsync.class), + $$(GroupLiveSearcher.class), $(WsThemePresenter.class), $$(ChatEngine.class), + $(GroupActionRegistry.class), $(ActionGroupSummaryToolbar.class)); final GroupMembersSummaryView view = new GroupMembersSummaryPanel(presenter, $(I18nUITranslationService.class), $(WorkspaceSkeleton.class), $( ActionGroupSummaryToolbar.class).getView()); @@ -362,8 +362,9 @@ @Override public BuddiesSummary create() { final BuddiesSummaryPresenter presenter = new BuddiesSummaryPresenter($(StateManager.class), - $(Session.class), $(UserActionRegistry.class), $(I18nTranslationService.class), - $$(ChatEngine.class), $(ActionBuddiesSummaryToolbar.class)); + $(Session.class), $$(UserServiceAsync.class), $(UserActionRegistry.class), + $(I18nTranslationService.class), $$(ChatEngine.class), $(ActionBuddiesSummaryToolbar.class), + $$(FileDownloadUtils.class)); final BuddiesSummaryPanel panel = new BuddiesSummaryPanel(presenter, $(WorkspaceSkeleton.class), $(I18nTranslationService.class), $(ActionManager.class), $(ActionBuddiesSummaryToolbar.class).getView()); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java 2008-11-22 04:29:34 UTC (rev 961) @@ -64,34 +64,6 @@ grid.setStripeRows(true); } - // protected void createPagingToolbar(final Store store, final GridPanel - // grid) { - // final PagingToolbar pag = new PagingToolbar(store); - // pag.setPageSize(PAGINATION_SIZE); - // pag.setDisplayInfo(true); - // pag.setDisplayMsg(i18n.tWithNT("Displaying results {0} - {1} of - // {2}", - // "Respect {} values in translations, " - // + "these will produce: 'Displaying results 1 - 25 of 95465' for - // instance")); - // pag.setEmptyMsg(i18n.t("No results to display")); - // pag.setAfterPageText(i18n.tWithNT("of {0}", "Used to show multiple - // results: '1 of 30'")); - // pag.setBeforePageText(i18n.t("Page")); - // pag.setFirstText(i18n.t("First Page")); - // pag.setLastText(i18n.t("Last Page")); - // pag.setNextText(i18n.t("Next Page")); - // pag.setPrevText(i18n.t("Previous Page")); - // pag.setRefreshText(i18n.t("Refresh")); - // grid.setBottomToolbar(pag); - // - // grid.addListener(new PanelListenerAdapter() { - // public void onRender(final Component component) { - // store.load(0, PAGINATION_SIZE); - // } - // }); - // } - protected Store createStore(final FieldDef[] fieldDefs, final String url, final String id) { final JsonReader reader = new JsonReader(new RecordDef(fieldDefs)); reader.setRoot("list"); @@ -102,8 +74,7 @@ } protected void query(final Store store, final GridPanel grid, final String query) { - final UrlParam[] newParams = new UrlParam[] { new UrlParam("query", query), new UrlParam("start", 0), - new UrlParam("limit", PAGINATION_SIZE) }; + final UrlParam[] newParams = new UrlParam[] { new UrlParam("query", query) }; store.setBaseParams(newParams); store.load(0, PAGINATION_SIZE); // see bind/unbind in: Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java 2008-11-22 04:29:34 UTC (rev 961) @@ -39,9 +39,12 @@ @OneToOne(cascade = CascadeType.ALL) GroupList pendingCollaborators; + SocialNetworkVisibility visibility; + public SocialNetwork() { accessLists = new AccessLists(); pendingCollaborators = new GroupList(); + visibility = SocialNetworkVisibility.anyone; } public void addAdmin(final Group group) { @@ -72,6 +75,10 @@ return pendingCollaborators; } + public SocialNetworkVisibility getVisibility() { + return visibility; + } + public boolean isAdmin(final Group group) { return accessLists.getAdmins().includes(group); } @@ -116,6 +123,11 @@ this.pendingCollaborators = pendingCollaborators; } + public void setVisibility(SocialNetworkVisibility visibility) { + this.visibility = visibility; + } + + @Override public String toString() { return "SocialNetwork[accessList: " + accessLists + "; pendingsCollabs: " + pendingCollaborators + "]"; } Added: trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkVisibility.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkVisibility.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkVisibility.java 2008-11-22 04:29:34 UTC (rev 961) @@ -0,0 +1,5 @@ +package org.ourproject.kune.platf.server.domain; + +public enum SocialNetworkVisibility { + anyone, onlymembers, onlyadmins +} Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java 2008-11-22 04:29:34 UTC (rev 961) @@ -30,6 +30,7 @@ import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import javax.persistence.Table; +import javax.persistence.Transient; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.Field; @@ -40,6 +41,7 @@ import org.hibernate.validator.Length; import org.hibernate.validator.NotNull; import org.hibernate.validator.Pattern; +import org.ourproject.kune.platf.client.dto.StateToken; import com.google.inject.name.Named; import com.wideplay.warp.persist.dao.Finder; @@ -100,6 +102,8 @@ @OneToOne(cascade = CascadeType.ALL) private final CustomProperties customProperties; + private UserBuddiesVisibility buddiesVisibility; + public User() { this(null, null, null, null, null, null, null); } @@ -115,6 +119,7 @@ this.country = country; this.timezone = timezone; customProperties = new CustomProperties(); + buddiesVisibility = UserBuddiesVisibility.anyone; } @Finder(query = "from User") @@ -122,6 +127,10 @@ return null; } + public UserBuddiesVisibility getBuddiesVisibility() { + return buddiesVisibility; + } + @Finder(query = "from User where email = :email") public User getByEmail(@Named("email") final String email) { return null; @@ -144,6 +153,10 @@ return email; } + public boolean getHasLogo() { + return hasLogo(); + } + public Long getId() { return id; } @@ -164,6 +177,11 @@ return shortName; } + @Transient + public StateToken getStateToken() { + return userGroup.getStateToken(); + } + public TimeZone getTimezone() { return timezone; } @@ -172,6 +190,15 @@ return userGroup; } + @Transient + public boolean hasLogo() { + return getUserGroup().hasLogo(); + } + + public void setBuddiesVisibility(UserBuddiesVisibility buddiesVisibility) { + this.buddiesVisibility = buddiesVisibility; + } + public void setCountry(final I18nCountry country) { this.country = country; } Added: trunk/src/main/java/org/ourproject/kune/platf/server/domain/UserBuddiesVisibility.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/UserBuddiesVisibility.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/UserBuddiesVisibility.java 2008-11-22 04:29:34 UTC (rev 961) @@ -0,0 +1,5 @@ +package org.ourproject.kune.platf.server.domain; + +public enum UserBuddiesVisibility { + anyone, yourbuddies, onlyyou +} Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java 2008-11-22 04:29:34 UTC (rev 961) @@ -20,6 +20,7 @@ package org.ourproject.kune.platf.server.rpc; import org.ourproject.kune.platf.client.dto.GroupDTO; +import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO; import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.errors.DefaultException; import org.ourproject.kune.platf.client.rpc.GroupService; @@ -32,6 +33,7 @@ import org.ourproject.kune.platf.server.content.ContentUtils; import org.ourproject.kune.platf.server.domain.Content; import org.ourproject.kune.platf.server.domain.Group; +import org.ourproject.kune.platf.server.domain.SocialNetworkVisibility; import org.ourproject.kune.platf.server.domain.User; import org.ourproject.kune.platf.server.manager.GroupManager; import org.ourproject.kune.platf.server.mapper.Mapper; @@ -67,7 +69,7 @@ final User user = userSession.getUser(); final Group group = groupManager.findByShortName(groupToken.getGroup()); groupManager.changeWsTheme(user, group, theme); - } + }; @Authenticated @Transactional(type = TransactionType.READ_WRITE, rollbackOn = DefaultException.class) @@ -100,6 +102,15 @@ return mapper.map(group, GroupDTO.class); } + @Authenticated(mandatory = true) + @Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.group) + @Transactional(type = TransactionType.READ_WRITE) + public void setSocialNetworkVisibility(final String userHash, StateToken token, + SocialNetworkVisibilityDTO visibility) { + final Group group = groupManager.findByShortName(token.getGroup()); + group.getSocialNetwork().setVisibility(SocialNetworkVisibility.valueOf(visibility.toString())); + } + private UserSession getUserSession() { return userSessionProvider.get(); } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java 2008-11-22 04:29:34 UTC (rev 961) @@ -25,8 +25,10 @@ import org.ourproject.kune.platf.client.dto.SocialNetworkDTO; import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult; import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO; +import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO; import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.dto.UserBuddiesDataDTO; +import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO; import org.ourproject.kune.platf.client.errors.DefaultException; import org.ourproject.kune.platf.client.rpc.SocialNetworkService; import org.ourproject.kune.platf.server.UserSession; @@ -37,7 +39,9 @@ import org.ourproject.kune.platf.server.auth.Authenticated; import org.ourproject.kune.platf.server.auth.Authorizated; import org.ourproject.kune.platf.server.domain.Group; +import org.ourproject.kune.platf.server.domain.SocialNetworkVisibility; import org.ourproject.kune.platf.server.domain.User; +import org.ourproject.kune.platf.server.domain.UserBuddiesVisibility; import org.ourproject.kune.platf.server.manager.GroupManager; import org.ourproject.kune.platf.server.manager.SocialNetworkManager; import org.ourproject.kune.platf.server.manager.UserManager; @@ -210,11 +214,47 @@ private SocialNetworkResultDTO generateResponse(final User userLogged, final Group group) { AccessRights groupRights = accessRightsService.get(userLogged, group.getSocialNetwork().getAccessLists()); if (group.getGroupType().equals(GroupType.PERSONAL)) { - return new SocialNetworkResultDTO(getGroupMembers(userLogged, group), getParticipation(userLogged, group), - getUserBuddies(group), mapper.map(groupRights, AccessRightsDTO.class)); + UserBuddiesDataDTO userBuddies = getUserBuddies(group); + SocialNetworkResultDTO result = new SocialNetworkResultDTO(getGroupMembers(userLogged, group), + getParticipation(userLogged, group), userBuddies, mapper.map(groupRights, AccessRightsDTO.class)); + UserBuddiesVisibility buddiesVisibility = userLogged.getBuddiesVisibility(); + switch (buddiesVisibility) { + case anyone: + break; + case onlyyou: + if (userLogged == null || !userLogged.getUserGroup().equals(group)) { + result.setUserBuddies(null); + } + break; + case yourbuddies: + if (!userBuddies.contains(userLogged.getShortName())) { + result.setUserBuddies(null); + } + break; + } + result.setUserBuddiesVisibilityDTO(mapper.map(buddiesVisibility, UserBuddiesVisibilityDTO.class)); + return result; } else { - return new SocialNetworkResultDTO(getGroupMembers(userLogged, group), getParticipation(userLogged, group), - UserBuddiesDataDTO.NO_BUDDIES, mapper.map(groupRights, AccessRightsDTO.class)); + SocialNetworkResultDTO result = new SocialNetworkResultDTO(getGroupMembers(userLogged, group), + getParticipation(userLogged, group), UserBuddiesDataDTO.NO_BUDDIES, mapper.map(groupRights, + AccessRightsDTO.class)); + SocialNetworkVisibility visibility = group.getSocialNetwork().getVisibility(); + switch (visibility) { + case anyone: + break; + case onlyadmins: + if (!groupRights.isAdministrable()) { + result.setGroupMembers(null); + } + break; + case onlymembers: + if (!groupRights.isEditable()) { + result.setGroupMembers(null); + } + break; + } + result.setSocialNetworkVisibilityDTO(mapper.map(visibility, SocialNetworkVisibilityDTO.class)); + return result; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java 2008-11-22 04:29:34 UTC (rev 961) @@ -21,14 +21,21 @@ import java.util.UUID; +import org.ourproject.kune.platf.client.dto.StateToken; +import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO; import org.ourproject.kune.platf.client.dto.UserDTO; import org.ourproject.kune.platf.client.dto.UserInfoDTO; +import org.ourproject.kune.platf.client.errors.AccessViolationException; import org.ourproject.kune.platf.client.errors.DefaultException; import org.ourproject.kune.platf.client.errors.UserAuthException; import org.ourproject.kune.platf.server.UserSession; +import org.ourproject.kune.platf.server.access.AccessRol; +import org.ourproject.kune.platf.server.auth.ActionLevel; import org.ourproject.kune.platf.server.auth.Authenticated; +import org.ourproject.kune.platf.server.auth.Authorizated; import org.ourproject.kune.platf.server.auth.SessionService; import org.ourproject.kune.platf.server.domain.User; +import org.ourproject.kune.platf.server.domain.UserBuddiesVisibility; import org.ourproject.kune.platf.server.manager.GroupManager; import org.ourproject.kune.platf.server.manager.UserManager; import org.ourproject.kune.platf.server.mapper.Mapper; @@ -102,6 +109,18 @@ final UserSession userSession = getUserSession(); final User user = userSession.getUser(); return loadUserInfo(user); + } + + @Authenticated(mandatory = true) + @Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.group) + @Transactional(type = TransactionType.READ_WRITE) + public void setBuddiesVisibility(final String userHash, StateToken groupToken, UserBuddiesVisibilityDTO visibility) { + final UserSession userSession = getUserSession(); + final User user = userSession.getUser(); + if (groupToken.getGroup() != user.getShortName()) { + new AccessViolationException(); + } + user.setBuddiesVisibility(UserBuddiesVisibility.valueOf(visibility.toString())); }; private UserSession getUserSession() { Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java 2008-11-22 04:29:34 UTC (rev 961) @@ -194,7 +194,6 @@ public void setChangeYourLogoText() { getEntityTextLogo().setChangeYourLogo(); - } public void setFullLogo(final StateToken stateToken, final boolean clipped) { Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java 2008-11-22 04:29:34 UTC (rev 961) @@ -246,30 +246,7 @@ 180, store, columnModel); createPagingToolbar(store, grid); - // final PagingToolbar pag = new PagingToolbar(store); - // pag.setPageSize(PAGINATION_SIZE); - // pag.setDisplayInfo(true); - // pag.setDisplayMsg(i18n.tWithNT("Displaying results {0} - {1} of - // {2}", - // "Respect {} values in translations, " - // + "these will produce: 'Displaying results 1 - 25 of 95465' for - // instance")); - // pag.setEmptyMsg(i18n.t("No results to display")); - // pag.setAfterPageText(i18n.tWithNT("of {0}", "Used to show - // multiple results: '1 of 30'")); - // pag.setBeforePageText(i18n.t("Page")); - // pag.setFirstText(i18n.t("First Page")); - // pag.setLastText(i18n.t("Last Page")); - // pag.setNextText(i18n.t("Next Page")); - // pag.setPrevText(i18n.t("Previous Page")); - // pag.setRefreshText(i18n.t("Refresh")); - // grid.setBottomToolbar(pag); - // grid.setLoadMask(true); - // grid.setLoadMask(i18n.t("Loading")); grid.setClicksToEdit(1); - // grid.setStripeRows(true); - // grid.setFrame(true); - // grid.setSelectionModel(new RowSelectionModel()); grid.addEditorGridListener(new EditorGridListenerAdapter() { @Override Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java 2008-11-22 04:29:34 UTC (rev 961) @@ -19,6 +19,8 @@ */ package org.ourproject.kune.workspace.client.site.rpc; +import org.ourproject.kune.platf.client.dto.StateToken; +import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO; import org.ourproject.kune.platf.client.dto.UserDTO; import org.ourproject.kune.platf.client.dto.UserInfoDTO; import org.ourproject.kune.platf.client.errors.DefaultException; @@ -36,4 +38,7 @@ void onlyCheckSession(String userHash) throws DefaultException; UserInfoDTO reloadUserInfo(String userHash) throws DefaultException; + + void setBuddiesVisibility(String userHash, StateToken groupToken, UserBuddiesVisibilityDTO visibility); + } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java 2008-11-22 04:29:34 UTC (rev 961) @@ -19,6 +19,8 @@ */ package org.ourproject.kune.workspace.client.site.rpc; +import org.ourproject.kune.platf.client.dto.StateToken; +import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO; import org.ourproject.kune.platf.client.dto.UserDTO; import org.ourproject.kune.platf.client.dto.UserInfoDTO; @@ -28,12 +30,15 @@ void createUser(UserDTO user, boolean wantPersonalHomepage, AsyncCallback<UserInfoDTO> asyncCallback); - void login(String nickOrEmail, String passwd, AsyncCallback<UserInfoDTO> callback); + void login(String nickOrEmail, String passwd, AsyncCallback<UserInfoDTO> asyncCallback); - void logout(String userHash, AsyncCallback<?> callback); + void logout(String userHash, AsyncCallback<?> asyncCallback); void onlyCheckSession(String userHash, AsyncCallback<?> asyncCallback); void reloadUserInfo(String userHash, AsyncCallback<UserInfoDTO> asyncCallback); + void setBuddiesVisibility(String userHash, StateToken groupToken, UserBuddiesVisibilityDTO visibility, + AsyncCallback<?> asyncCallback); + } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-11-22 04:29:34 UTC (rev 961) @@ -27,6 +27,7 @@ import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarView; import org.ourproject.kune.platf.client.dto.UserSimpleDTO; import org.ourproject.kune.platf.client.services.I18nTranslationService; +import org.ourproject.kune.platf.client.services.Images; import org.ourproject.kune.workspace.client.skel.SimpleToolbar; import org.ourproject.kune.workspace.client.skel.SummaryPanel; import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton; @@ -44,27 +45,35 @@ public class BuddiesSummaryPanel extends SummaryPanel implements BuddiesSummaryView { public class BuddieWidget extends Composite { - private final Image icon; + private final Image avatar; private final Label nick; - public BuddieWidget(String nickName, ClickListener clickListener) { + public BuddieWidget(String nickName, String avatarUrl, ClickListener clickListener) { // For Drag& drop, see gwt-ext-ux image: // http://www.gwt-ext.com:8080/demo-ux/#imageDDSample VerticalPanel vp = new VerticalPanel(); - icon = new Image("images/persons/person2-32.png"); + avatar = new Image(); + if (avatarUrl.equals(NOAVATAR)) { + Images.App.getInstance().personAvatarDef().applyTo(avatar); + } else { + avatar.setUrl(avatarUrl); + } + avatar.setPixelSize(AVATARSIZE, AVATARSIZE); nick = new Label(nickName); - vp.add(icon); + vp.add(avatar); vp.add(nick); + vp.addStyleName("k-bsp-buddie"); vp.addStyleName("kune-Margin-Small-trbl"); vp.addStyleName("kune-pointer"); vp.addStyleName("kune-floatleft"); nick.addClickListener(clickListener); - icon.addClickListener(clickListener); + vp.setCellHorizontalAlignment(nick, VerticalPanel.ALIGN_CENTER); + avatar.addClickListener(clickListener); initWidget(vp); } - public void setIcon(String url) { - icon.setUrl(url); + public void setAvatarUrl(String url) { + avatar.setUrl(url); } public void setNick(String nickName) { @@ -97,7 +106,8 @@ addInSummary(); } - public void addBuddie(final UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection) { + public void addBuddie(final UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection, + String avatarUrl) { ClickListener listener = new ClickListener() { public void onClick(Widget sender) { Menu menu = menuItemsContainer.get(user.getShortName()); @@ -112,7 +122,8 @@ doAction(actionItem); } }); - flowPanel.add(new BuddieWidget(user.getShortName(), listener)); + + flowPanel.add(new BuddieWidget(user.getShortName(), avatarUrl, listener)); } @Override Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-22 04:29:34 UTC (rev 961) @@ -34,11 +34,15 @@ import org.ourproject.kune.platf.client.dto.GroupType; import org.ourproject.kune.platf.client.dto.StateAbstractDTO; import org.ourproject.kune.platf.client.dto.UserBuddiesDataDTO; +import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO; import org.ourproject.kune.platf.client.dto.UserSimpleDTO; +import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple; import org.ourproject.kune.platf.client.services.I18nTranslationService; import org.ourproject.kune.platf.client.state.Session; import org.ourproject.kune.platf.client.state.StateManager; +import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils; import org.ourproject.kune.workspace.client.site.Site; +import org.ourproject.kune.workspace.client.site.rpc.UserServiceAsync; import com.calclab.suco.client.ioc.Provider; import com.calclab.suco.client.listener.Listener; @@ -52,16 +56,21 @@ private final Provider<ChatEngine> chatEngineProvider; private final Session session; private final ActionBuddiesSummaryToolbar toolbar; + private final Provider<UserServiceAsync> userServiceAsync; + private final Provider<FileDownloadUtils> fileDownUtilsProvider; - public BuddiesSummaryPresenter(StateManager stateManager, final Session session, UserActionRegistry actionRegistry, + public BuddiesSummaryPresenter(StateManager stateManager, final Session session, + Provider<UserServiceAsync> userServiceAsync, UserActionRegistry actionRegistry, I18nTranslationService i18n, final Provider<ChatEngine> chatEngineProvider, - final ActionBuddiesSummaryToolbar toolbar) { + final ActionBuddiesSummaryToolbar toolbar, Provider<FileDownloadUtils> fileDownUtilsProvider) { this.stateManager = stateManager; this.session = session; + this.userServiceAsync = userServiceAsync; this.actionRegistry = actionRegistry; this.i18n = i18n; this.chatEngineProvider = chatEngineProvider; this.toolbar = toolbar; + this.fileDownUtilsProvider = fileDownUtilsProvider; stateManager.onStateChanged(new Listener<StateAbstractDTO>() { public void onEvent(StateAbstractDTO state) { setState(state); @@ -90,8 +99,10 @@ if (userBuddies != UserBuddiesDataDTO.NO_BUDDIES) { List<UserSimpleDTO> buddies = userBuddies.getBuddies(); for (UserSimpleDTO user : buddies) { + String avatarUrl = user.hasLogo() ? fileDownUtilsProvider.get().getLogoImageUrl( + user.getStateToken()) : BuddiesSummaryView.NOAVATAR; view.addBuddie(user, actionRegistry.getCurrentActions(user, session.isLogged(), - new AccessRightsDTO(true, true, true), false)); + new AccessRightsDTO(true, true, true), false), avatarUrl); } boolean hasLocalBuddies = buddies.size() > 0; int numExtBuddies = userBuddies.getOtherExternalBuddies(); @@ -124,11 +135,17 @@ } } - private void createShowAction(String textDescription) { + private void createSetBuddiesVisibilityAction(String textDescription, final UserBuddiesVisibilityDTO visibility) { ActionToolbarMenuDescriptor<UserSimpleDTO> showBuddies = new ActionToolbarMenuDescriptor<UserSimpleDTO>( AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<UserSimpleDTO>() { public void onEvent(UserSimpleDTO parameter) { - Site.info("In development"); + userServiceAsync.get().setBuddiesVisibility(session.getUserHash(), + session.getCurrentState().getGroup().getStateToken(), visibility, + new AsyncCallbackSimple<Object>() { + public void onSuccess(Object result) { + Site.info(i18n.t("Buddies visibility changed")); + } + }); } }); showBuddies.setTextDescription(textDescription); @@ -165,9 +182,9 @@ go.setIconUrl("images/group-home.gif"); actionRegistry.addAction(go); - createShowAction(i18n.t("anyone")); - createShowAction(i18n.t("only your buddies")); - createShowAction(i18n.t("only you")); + createSetBuddiesVisibilityAction(i18n.t("anyone"), UserBuddiesVisibilityDTO.anyone); + createSetBuddiesVisibilityAction(i18n.t("only your buddies"), UserBuddiesVisibilityDTO.yourbuddies); + createSetBuddiesVisibilityAction(i18n.t("only you"), UserBuddiesVisibilityDTO.onlyyou); } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java 2008-11-22 04:29:34 UTC (rev 961) @@ -24,8 +24,11 @@ public interface BuddiesSummaryView extends View { - void addBuddie(UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection); + String NOAVATAR = ""; + int AVATARSIZE = 32; + void addBuddie(UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection, String avatarUrl); + void clear(); void clearOtherUsers(); Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-22 04:29:34 UTC (rev 961) @@ -34,9 +34,11 @@ import org.ourproject.kune.platf.client.dto.LinkDTO; import org.ourproject.kune.platf.client.dto.SocialNetworkDTO; import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO; +import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO; import org.ourproject.kune.platf.client.dto.StateAbstractDTO; import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple; +import org.ourproject.kune.platf.client.rpc.GroupServiceAsync; import org.ourproject.kune.platf.client.rpc.SocialNetworkServiceAsync; import org.ourproject.kune.platf.client.services.ImageDescriptor; import org.ourproject.kune.platf.client.services.ImageUtils; @@ -67,10 +69,12 @@ private final StateManager stateManager; private final GroupActionRegistry groupActionRegistry; private final Provider<GroupLiveSearcher> liveSearcherProvider; + private final Provider<GroupServiceAsync> groupServiceProvider; public GroupMembersSummaryPresenter(final I18nUITranslationService i18n, final StateManager stateManager, final ImageUtils imageUtils, final Session session, final Provider<SocialNetworkServiceAsync> snServiceProvider, + final Provider<GroupServiceAsync> groupServiceProvider, final Provider<GroupLiveSearcher> liveSearcherProvider, final WsThemePresenter wsThemePresenter, final Provider<ChatEngine> chatEngineProvider, final GroupActionRegistry groupActionRegistry, final ActionGroupSummaryToolbar toolbar) { @@ -79,6 +83,7 @@ this.stateManager = stateManager; this.session = session; this.snServiceProvider = snServiceProvider; + this.groupServiceProvider = groupServiceProvider; this.liveSearcherProvider = liveSearcherProvider; this.groupActionRegistry = groupActionRegistry; final Listener<StateAbstractDTO> setStateListener = new Listener<StateAbstractDTO>() { @@ -165,16 +170,22 @@ groupActionRegistry.addAction(unJoin); groupActionRegistry.addAction(participate); - createShowAction(i18n.t("anyone")); - createShowAction(i18n.t("only members")); - createShowAction(i18n.t("only admins")); + createSetMembersVisibilityAction(i18n.t("anyone"), SocialNetworkVisibilityDTO.anyone); + createSetMembersVisibilityAction(i18n.t("only members"), SocialNetworkVisibilityDTO.onlymembers); + createSetMembersVisibilityAction(i18n.t("only admins"), SocialNetworkVisibilityDTO.onlyadmins); } - private void createShowAction(String textDescription) { + private void createSetMembersVisibilityAction(String textDescription, final SocialNetworkVisibilityDTO visibility) { ActionToolbarMenuDescriptor<StateToken> showMembers = new ActionToolbarMenuDescriptor<StateToken>( AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<StateToken>() { public void onEvent(StateToken parameter) { - Site.info("In development"); + groupServiceProvider.get().setSocialNetworkVisibility(session.getUserHash(), + session.getCurrentState().getGroup().getStateToken(), visibility, + new AsyncCallbackSimple<Object>() { + public void onSuccess(Object result) { + Site.info(i18n.t("Members visibility changed")); + } + }); } }); showMembers.setTextDescription(textDescription); Modified: trunk/src/main/resources/dozerBeanMapping.xml =================================================================== --- trunk/src/main/resources/dozerBeanMapping.xml 2008-11-21 23:14:32 UTC (rev 960) +++ trunk/src/main/resources/dozerBeanMapping.xml 2008-11-22 04:29:34 UTC (rev 961) @@ -334,10 +334,16 @@ </mapping> <mapping> - <class-a> - org.ourproject.kune.platf.client.dto.UserSimpleDTO - </class-a> - <class-b>org.ourproject.kune.platf.server.domain.User</class-b> + <class-a>org.ourproject.kune.platf.server.domain.User</class-a> + <class-b>org.ourproject.kune.platf.client.dto.UserSimpleDTO</class-b> + <field type="one-way"> + <a>hasLogo</a> + <b>hasLogo</b> + </field> + <field> + <a get-method="getStateToken">stateToken</a> + <b>stateToken</b> + </field> </mapping> <mapping> @@ -443,6 +449,24 @@ <mapping> <class-a> + org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.SocialNetworkVisibility + </class-b> + </mapping> + + <mapping> + <class-a> + org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO + </class-a> + <class-b> + org.ourproject.kune.platf.server.domain.UserBuddiesVisibility + </class-b> + </mapping> + + <mapping> + <class-a> org.ourproject.kune.platf.client.dto.ContentStatusDTO </class-a> <class-b>