r1557 - in trunk/src: main/java/cc/kune/common/client/ui main/java/cc/kune/core/client/events main/java/cc/kune/domain/finders main/java/cc/kune/hspace/client main/java/cc/kune/wave/client/inboxcount main/webapp test/java/cc/kune/core/server/integration
Author: vjrj_ Date: 2011-10-12 13:44:25 +0200 (Wed, 12 Oct 2011) New Revision: 1557 Added: trunk/src/main/java/cc/kune/core/client/events/InboxUnreadUpdatedEvent.java Modified: trunk/src/main/java/cc/kune/common/client/ui/DottedTabPanel.java trunk/src/main/java/cc/kune/domain/finders/ContentFinder.java trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.ui.xml trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPanel.java trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java trunk/src/main/webapp/ws.html trunk/src/test/java/cc/kune/core/server/integration/StatsServiceTest.java Log: CLOSED - # 132: Global public stats http://kune.ourproject.org/issues/ticket/132 Modified: trunk/src/main/java/cc/kune/common/client/ui/DottedTabPanel.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/ui/DottedTabPanel.java 2011-10-11 12:07:21 UTC (rev 1556) +++ trunk/src/main/java/cc/kune/common/client/ui/DottedTabPanel.java 2011-10-12 11:44:25 UTC (rev 1557) @@ -31,7 +31,15 @@ return tabPanel.getWidgetIndex(view.asWidget()); } + public void insertTab(final IsWidget view, final int beforeIndex) { + tabPanel.insert(view.asWidget(), new DottedTab(), beforeIndex); + } + public void removeTab(final IsWidget view) { tabPanel.remove(view.asWidget()); } + + public void selectTab(final int index) { + tabPanel.selectTab(index); + } } Added: trunk/src/main/java/cc/kune/core/client/events/InboxUnreadUpdatedEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/InboxUnreadUpdatedEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/InboxUnreadUpdatedEvent.java 2011-10-12 11:44:25 UTC (rev 1557) @@ -0,0 +1,91 @@ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public class InboxUnreadUpdatedEvent extends GwtEvent<InboxUnreadUpdatedEvent.InboxUnreadUpdatedHandler> { + + public interface HasInboxUnreadUpdatedHandlers extends HasHandlers { + HandlerRegistration addInboxUnreadUpdatedHandler(InboxUnreadUpdatedHandler handler); + } + + public interface InboxUnreadUpdatedHandler extends EventHandler { + public void onInboxUnreadUpdated(InboxUnreadUpdatedEvent event); + } + + private static final Type<InboxUnreadUpdatedHandler> TYPE = new Type<InboxUnreadUpdatedHandler>(); + + public static void fire(final HasHandlers source, final int count, final boolean greater) { + source.fireEvent(new InboxUnreadUpdatedEvent(count, greater)); + } + + public static Type<InboxUnreadUpdatedHandler> getType() { + return TYPE; + } + + int count; + boolean greater; + + protected InboxUnreadUpdatedEvent() { + // Possibly for serialization. + } + + public InboxUnreadUpdatedEvent(final int count, final boolean greater) { + this.count = count; + this.greater = greater; + } + + @Override + protected void dispatch(final InboxUnreadUpdatedHandler handler) { + handler.onInboxUnreadUpdated(this); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final InboxUnreadUpdatedEvent other = (InboxUnreadUpdatedEvent) obj; + if (count != other.count) { + return false; + } + if (greater != other.greater) { + return false; + } + return true; + } + + @Override + public Type<InboxUnreadUpdatedHandler> getAssociatedType() { + return TYPE; + } + + public int getCount() { + return count; + } + + @Override + public int hashCode() { + int hashCode = 23; + hashCode = (hashCode * 37) + new Integer(count).hashCode(); + hashCode = (hashCode * 37) + new Boolean(greater).hashCode(); + return hashCode; + } + + public boolean isGreater() { + return greater; + } + + @Override + public String toString() { + return "InboxUnreadUpdatedEvent[" + count + "," + greater + "]"; + } +} Modified: trunk/src/main/java/cc/kune/domain/finders/ContentFinder.java =================================================================== --- trunk/src/main/java/cc/kune/domain/finders/ContentFinder.java 2011-10-11 12:07:21 UTC (rev 1556) +++ trunk/src/main/java/cc/kune/domain/finders/ContentFinder.java 2011-10-12 11:44:25 UTC (rev 1557) @@ -64,11 +64,25 @@ public List<Content> lastModifiedContents(@MaxResults final int limit, @Named("status") final ContentStatus status); - @Finder(query = "FROM Content c WHERE " + "((c.container.owner.id IN (SELECT ed.id FROM " - + "c.container.owner.socialNetwork.accessLists.editors.list AS ed WHERE ed.id = :groupid)) OR" - + "(c.container.owner.id IN (SELECT ad.id FROM " - + "c.container.owner.socialNetwork.accessLists.admins.list AS ad WHERE ad.id = :groupid)))" + @Finder(query = "FROM Content c WHERE " + "((:groupid IN (SELECT ed.id FROM " + + "c.container.owner.socialNetwork.accessLists.editors.list AS ed)) OR" + + "(:groupid IN (SELECT ad.id FROM " + + "c.container.owner.socialNetwork.accessLists.admins.list AS ad)))" + "ORDER BY c.modifiedOn DESC", returnAs = ArrayList.class) public List<Content> lastModifiedContentsInUserGroup(@MaxResults final int limit, @Named("groupid") Long groupId); + + // @Finder(query = "FROM Content c WHERE " + + // "(c.container.owner.id IN (SELECT ad.id" + // + "FROM Group ad WHERE ad.id IN (SELECT ad.id " + // + + // "FROM ad.socialNetwork.accessLists.admins.list adm WHERE adm.id = :groupid)) OR " + // + "(c.container.owner.id IN (SELECT ed.id" + + // "FROM Group ed WHERE ed.id IN (SELECT ed.id " + // + + // "FROM ed.socialNetwork.accessLists.editors.list eds WHERE eds.id = :groupid))))" + // + "ORDER BY c.modifiedOn DESC", returnAs = ArrayList.class) + // public List<Content> lastModifiedContentsInUserGroup(@MaxResults final int + // limit, + // @Named("groupid") Long groupId); } Modified: trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java =================================================================== --- trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java 2011-10-11 12:07:21 UTC (rev 1556) +++ trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java 2011-10-12 11:44:25 UTC (rev 1557) @@ -6,6 +6,7 @@ import cc.kune.common.client.ui.DottedTabPanel; import cc.kune.core.client.services.FileDownloadUtils; +import cc.kune.core.client.state.SiteTokens; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.ContentSimpleDTO; import cc.kune.core.shared.dto.GroupDTO; @@ -13,11 +14,13 @@ import cc.kune.gspace.client.GSpaceArmor; import cc.kune.hspace.client.HSpacePresenter.HSpaceView; +import com.calclab.emite.core.client.packet.TextUtils; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HasText; +import com.google.gwt.user.client.ui.Hyperlink; import com.google.gwt.user.client.ui.InlineLabel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootPanel; @@ -39,6 +42,7 @@ private final FileDownloadUtils downUtils; @UiField FlowPanel globalStats; + private final RootPanel globalStatsParent; @UiField public Label globalStatsTitle; @UiField @@ -49,6 +53,7 @@ public InlineLabel globalStatsTotalUsersCount; @UiField public InlineLabel globalStatsTotalUsersTitle; + private final RootPanel groupStatsParent; @UiField public FlowPanel lastActivityInYourGroup; @UiField @@ -72,6 +77,9 @@ private final DottedTabPanel tabPanel; + @UiField + public Hyperlink unreadInYourInbox; + private final Widget widget; @Inject @@ -86,14 +94,13 @@ lastGroupsTitle.setText(i18n.t("Latest created groups")); lastPublishedContentsTitle.setText(i18n.t("Latest publications")); lastActivityInYourGroupTitle.setText(i18n.t("Latest activity in your groups")); - tabPanel = new DottedTabPanel("465px", "200px"); + tabPanel = new DottedTabPanel("440px", "200px"); tabPanel.addTab(lastGroupsPanel); - // tabPanel.addTab(lastActivityPanel); tabPanel.addTab(lastPublishedPanel); globalStats.removeFromParent(); - - final RootPanel globalStatsParent = RootPanel.get(K_HOME_GLOBAL_STATS); - final RootPanel groupStatsParent = RootPanel.get(K_HOME_GROUP_STATS); + unreadInYourInbox.setTargetHistoryToken(SiteTokens.WAVEINBOX); + globalStatsParent = RootPanel.get(K_HOME_GLOBAL_STATS); + groupStatsParent = RootPanel.get(K_HOME_GROUP_STATS); if (globalStatsParent != null) { globalStatsParent.add(globalStats); } @@ -110,7 +117,7 @@ private String format(final Long modifiedOn, final String name) { final String modOn = DateUtils.getInstance().formatPastDate(modifiedOn); - return modOn + " ~ " + name; + return TextUtils.ellipsis(modOn + " ~ " + name, 50); } @Override @@ -124,6 +131,16 @@ } @Override + public HasText getUnreadInYourInbox() { + return unreadInYourInbox; + } + + @Override + public void setInboxUnreadVisible(final boolean visible) { + unreadInYourInbox.setVisible(visible); + } + + @Override public void setLastContentsOfMyGroup(final List<ContentSimpleDTO> lastContentsOfMyGroupsList) { lastActivityInYourGroup.clear(); for (final ContentSimpleDTO content : lastContentsOfMyGroupsList) { @@ -152,26 +169,33 @@ for (final ContentSimpleDTO content : lastPublishedContentsList) { final GroupContentHomeLink link = linkProv.get(); final StateToken token = content.getStateToken(); - link.setValues(downUtils.getLogoImageUrl(token.copy().clearDocument().clearFolder()), - format(content.getModifiedOn(), content.getName()), token.toString()); + link.setValues( + downUtils.getLogoImageUrl(token.copy().clearDocument().clearFolder()), + format(content.getModifiedOn(), + "(" + content.getStateToken().getGroup() + ") " + content.getName()), token.toString()); lastPublishedContents.add(link); } } @Override public void setStatsVisible(final boolean visible) { - globalStats.setVisible(visible); - tabPanel.setVisible(visible); + if (globalStatsParent != null) { + globalStatsParent.setVisible(visible); + } + if (groupStatsParent != null) { + groupStatsParent.setVisible(visible); + } } @Override public void setUserGroupsActivityVisible(final boolean visible) { final boolean isAttached = tabPanel.getWidgetIndex(lastActivityPanel) != -1; if (visible && !isAttached) { - tabPanel.addTab(lastActivityPanel); + tabPanel.insertTab(lastActivityPanel, 0); } else if (!visible && isAttached) { tabPanel.removeTab(lastActivityPanel); } + tabPanel.selectTab(0); } } Modified: trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.ui.xml =================================================================== --- trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.ui.xml 2011-10-11 12:07:21 UTC (rev 1556) +++ trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.ui.xml 2011-10-12 11:44:25 UTC (rev 1557) @@ -21,6 +21,10 @@ <g:InlineLabel ui:field="globalStatsTotalUsersCount" addStyleNames="{style.padl} k-home-em-text"/> </g:FlowPanel> + <g:FlowPanel> + <g:Hyperlink ui:field="unreadInYourInbox" + addStyleNames="k-home-group-inbox-link k-home-normal-text"/> + </g:FlowPanel> </g:FlowPanel> <g:FlowPanel ui:field="lastGroupsPanel"> <g:Label ui:field="lastGroupsTitle" styleName="k-home-title"/> Modified: trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java =================================================================== --- trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java 2011-10-11 12:07:21 UTC (rev 1556) +++ trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java 2011-10-12 11:44:25 UTC (rev 1557) @@ -21,6 +21,7 @@ import java.util.List; +import cc.kune.core.client.events.InboxUnreadUpdatedEvent; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.UserSignInOrSignOutEvent; @@ -28,6 +29,7 @@ import cc.kune.core.shared.dto.ContentSimpleDTO; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.HomeStatsDTO; +import cc.kune.core.shared.i18n.I18nTranslationService; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.ui.HasText; @@ -50,6 +52,10 @@ HasText getGlobalStatsTotalUsersCount(); + HasText getUnreadInYourInbox(); + + void setInboxUnreadVisible(boolean visible); + void setLastContentsOfMyGroup(List<ContentSimpleDTO> lastContentsOfMyGroupsList); void setLastGroups(List<GroupDTO> lastGroups); @@ -58,28 +64,47 @@ void setStatsVisible(boolean visible); - void setUserGroupsActivityVisible(boolean logged); + void setUserGroupsActivityVisible(boolean visible); } @Inject public HSpacePresenter(final Session session, final EventBus eventBus, final HSpaceView view, - final HSpaceProxy proxy, final Provider<ClientStatsServiceAsync> statsService) { + final HSpaceProxy proxy, final Provider<ClientStatsServiceAsync> statsService, + final I18nTranslationService i18n) { super(eventBus, view, proxy); + eventBus.addHandler(InboxUnreadUpdatedEvent.getType(), + new InboxUnreadUpdatedEvent.InboxUnreadUpdatedHandler() { + @Override + public void onInboxUnreadUpdated(final InboxUnreadUpdatedEvent event) { + final int total = event.getCount(); + if (total > 0 && session.isLogged()) { + getView().getUnreadInYourInbox().setText( + total == 1 ? i18n.t("One recent conversation unread") : i18n.t( + "[%d] recent conversations unread", total)); + getView().setInboxUnreadVisible(true); + } else { + getView().setInboxUnreadVisible(false); + } + } + }); final AsyncCallbackSimple<HomeStatsDTO> callback = new AsyncCallbackSimple<HomeStatsDTO>() { @Override public void onSuccess(final HomeStatsDTO result) { getView().getGlobalStatsTotalGroupsCount().setText(result.getTotalGroups().toString()); getView().getGlobalStatsTotalUsersCount().setText(result.getTotalUsers().toString()); getView().setLastGroups(result.getLastGroups()); + getView().setLastPublishedContents(result.getLastPublishedContents()); + getView().setStatsVisible(true); final List<ContentSimpleDTO> lastContentsOfMyGroups = result.getLastContentsOfMyGroups(); - final boolean myGroupsHasActivity = lastContentsOfMyGroups != null + final boolean logged = session.isLogged(); + final boolean myGroupsHasActivity = logged && lastContentsOfMyGroups != null && lastContentsOfMyGroups.size() > 0; + // NotifyUser.info("" + lastContentsOfMyGroups.size(), true); if (myGroupsHasActivity) { getView().setLastContentsOfMyGroup(lastContentsOfMyGroups); } getView().setUserGroupsActivityVisible(myGroupsHasActivity); - getView().setLastPublishedContents(result.getLastPublishedContents()); - getView().setStatsVisible(true); + getView().setInboxUnreadVisible(logged); } }; session.onUserSignInOrSignOut(true, new UserSignInOrSignOutHandler() { Modified: trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPanel.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPanel.java 2011-10-11 12:07:21 UTC (rev 1556) +++ trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPanel.java 2011-10-12 11:44:25 UTC (rev 1557) @@ -46,8 +46,8 @@ @Override public void setTotal(final int total) { count.setText(String.valueOf(total)); - tooltip.setText(total == 1 ? i18n.t("One conversation unread") : i18n.t("[%d] conversations unread", - total)); + tooltip.setText(total == 1 ? i18n.t("One recent conversation unread") : i18n.t( + "[%d] recent conversations unread", total)); } @Override Modified: trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java 2011-10-11 12:07:21 UTC (rev 1556) +++ trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java 2011-10-12 11:44:25 UTC (rev 1557) @@ -7,6 +7,7 @@ import org.waveprotocol.box.webclient.search.Search; import org.waveprotocol.box.webclient.search.Search.Listener; +import cc.kune.core.client.events.InboxUnreadUpdatedEvent; import cc.kune.core.client.events.NewUserRegisteredEvent; import cc.kune.core.client.events.SndClickEvent; import cc.kune.core.client.state.Session; @@ -132,9 +133,11 @@ view.setTotal(total); final boolean show = session.isLogged() && total != Search.UNKNOWN_SIZE && total > 0; view.showCount(show); - if (show && total > currentTotal) { + final boolean greater = total > currentTotal; + if (show && greater) { sendNoticeToUser(); } + InboxUnreadUpdatedEvent.fire(eventBus, total, greater); currentTotal = total; } Modified: trunk/src/main/webapp/ws.html =================================================================== --- trunk/src/main/webapp/ws.html 2011-10-11 12:07:21 UTC (rev 1556) +++ trunk/src/main/webapp/ws.html 2011-10-12 11:44:25 UTC (rev 1557) @@ -5,8 +5,8 @@ <title>Kune</title> <script type="text/javascript" language="javascript" - src="ws/ws.nocache.js"></script> -<!-- + src="ws/ws.nocache.js"></script> +<!-- We will use this string for mention this site in messages like: "Thanks for joining this site" Your can use another string and the message will looks like "Thanks for joining example.org" --> @@ -32,229 +32,236 @@ <meta name="hablar.height" content="400px" /> <link rel="shortcut icon" href="ws/favicon.ico" /> <link rel="stylesheet" type="text/css" - href="http://yui.yahooapis.com/2.8.0r4/build/reset/reset-min.css"> + href="http://yui.yahooapis.com/2.8.0r4/build/reset/reset-min.css"> <!-- FIXME: make something local --> <script src="//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js"></script> <script> - WebFont.load({ - google : { - families : [ 'Ubuntu' ] - } - }); + WebFont.load({ + google : { + families : [ 'Ubuntu' ] + } + }); </script> <link - href='http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold,bolditalic' - rel='stylesheet' type='text/css'> + href='http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold,bolditalic' + rel='stylesheet' type='text/css'> <!-- <link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'> --> <link type="text/css" rel="stylesheet" href="ws/gxt/css/gxt-all.css"> <link type="text/css" rel="stylesheet" href="ws/gxt/css/gxt-gray.css"> <link type="text/css" rel="stylesheet" - href="ws/gxt-custom/css/gxt-op-common.css"> + href="ws/gxt-custom/css/gxt-op-common.css"> <link type="text/css" rel="stylesheet" href="ws/kune-hablar.css"> <link type="text/css" rel="stylesheet" href="ws/kune-chat.css"> <link type="text/css" rel="stylesheet" href="ws/kune-common.css"> <link type="text/css" rel="stylesheet" - href="ws/fontface/ubuntufontface.css"> + href="ws/fontface/ubuntufontface.css"> <link type="text/css" rel="stylesheet" href="ws/kune-message.css"> <link type="text/css" rel="stylesheet" - href="others/splash/style/permalink.css"> + href="others/splash/style/permalink.css"> <link type="text/css" rel="stylesheet" - href="others/splash/style/stuff.css"> + href="others/splash/style/stuff.css"> <link type="text/css" rel="stylesheet" - href="others/splash/style/main.css"> + href="others/splash/style/main.css"> <link type="text/css" rel="stylesheet" href="ws/ws.css"> <script type="text/javascript" src="others/splash/js/gadget.js"></script> <script type="text/javascript" src="others/splash/js/rpc.js"></script> <script type="text/javascript" src="others/splash/js/common_client.js"></script> <script type="text/javascript" - src="others/splash/js/permalink_client.js"></script> + src="others/splash/js/permalink_client.js"></script> <script type="text/javascript" - src="http://wave.google.com/gadgets/js/core:rpc.js?c=1"></script> + src="http://wave.google.com/gadgets/js/core:rpc.js?c=1"></script> <style type="text/css"> body { - background-color: white; - color: black; - font-family: 'Ubuntu', Arial; - font-size: small; - overflow: hidden; + background-color: white; + color: black; + font-family: 'Ubuntu', Arial; + font-size: small; + overflow: hidden; } #kuneloading { - position: absolute; - left: 2%; - top: 2%; - z-index: 20001; - height: auto; - border: solid 2px #ccc; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; - background-color: white; + position: absolute; + left: 2%; + top: 2%; + z-index: 20001; + height: auto; + border: solid 2px #ccc; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + background-color: white; } #kuneloading a { - color: #225588; + color: #225588; } #kuneloading .kuneloading-indicator { - color: #444; - font: bold 13px tahoma, arial, helvetica; - padding: 3px 3px 8px; - margin: 0; - height: auto; + color: #444; + font: bold 13px tahoma, arial, helvetica; + padding: 3px 3px 8px; + margin: 0; + height: auto; } #kuneloading-msg { - font: normal 10px arial, tahoma, sans-serif; + font: normal 10px arial, tahoma, sans-serif; } #k-home-prewrap { - margin-top: -22px; + margin-top: -22px; } #k-home-wrapper { - margin-left: auto; - margin-right: auto; - position: relative; - width: 665px; - min-width: 320px; + margin-left: auto; + margin-right: auto; + position: relative; + width: 665px; + min-width: 320px; } #k-home-ini { /* clear: both; */ - font-size: 20px; - color: #69312f; - text-align: justify; - /* padding: 27px 0; */ - /* line-height: 1.3em; */ + font-size: 20px; + color: #69312f; + text-align: justify; + /* padding: 27px 0; */ + /* line-height: 1.3em; */ } #k-home-ini a { - color: #803000; - font-weight: bold; + color: #803000; + font-weight: bold; } #k-home-ini strong { - font-weight: bold; + font-weight: bold; } #k-home-table { - display: block; + display: block; } #k-home-header { - display: table-row; - float: right; + display: table-row; + float: right; } #k-home-intro { - display: table-row; + display: table-row; } #k-home-footer { - display: table-row; - font-size: 14px; - text-align: right; - color: #8a5050; + display: table-row; + font-size: 14px; + text-align: right; + color: #8a5050; } #k-home-logo { - margin: 50px 0 22px 0; + margin: 50px 0 22px 0; } #k-home-summary { - font-size: 28px; - color: #dd8a3d; - font-weight: bold; - white-space: nowrap; + font-size: 28px; + color: #dd8a3d; + font-weight: bold; + white-space: nowrap; } #k-home-summary li { - padding-left: 41px; - background-repeat: no-repeat; - background-position: 0 .2em; - line-height: 45px; + padding-left: 41px; + background-repeat: no-repeat; + background-position: 0 .2em; + line-height: 45px; } #k-home-body { /* display: table-row;*/ - clear: both; - display: block; + clear: both; + display: block; } #k-home-left,#k-home-summary-left { - display: table-cell; + display: table-cell; } #k-home-left { - float: left; + float: left; } #k-home-right,#k-home-summary-right { - display: table-cell; - text-align: right; - padding-left: 20px; + display: table-cell; + text-align: right; + padding-left: 20px; } #k-home-summary-right { - padding-top: 42px; - vertical-align: bottom; + padding-top: 42px; + vertical-align: bottom; } -#k-home-right { - white-space: nowrap; - vertical-align: top; - padding-top: 20px; - float: right; +#k-home-right { /* white-space: nowrap; */ + vertical-align: top; + padding-top: 20px; + /* float: right; */ } #k-home-group-stats { - color: #c87137; + color: #c87137; } #k-home-global-stats { - + } .k-home-title { - color: #c87137; - font-size: 18px; - font-weight: bold; - padding-top: 10px; - /* clear: both; */ + color: #c87137; + font-size: 18px; + font-weight: bold; + padding-top: 10px; + /* clear: both; */ } .k-home-normal-text { - color: #8a5050; - font-size: 16px; + color: #8a5050; + font-size: 16px; } .k-home-em-text { - color: #8a5050; - font-size: 18px; - font-weight: bold; + color: #8a5050; + font-size: 18px; + font-weight: bold; } .k-home-group-cnt-icon { - float: left; + float: left; } +.k-home-group-inbox-link { + +} + +.k-home-group-inbox-link a { + color: green; +} + .k-home-group-cnt-link { - float: left; + float: left; } .k-home-group-cnt-link a { - color: #8a5050; - padding-left: 10px; + color: #8a5050; + padding-left: 10px; } .k-home-group-stats-item { - clear: both; - /* line-height: 1.2em; */ + clear: both; + /* line-height: 1.2em; */ } .banner { - margin: 30px; + margin: 30px; } </style> <!--[if IE 6]> @@ -262,97 +269,97 @@ <![endif]--> </head> <body> - <!-- Banner for wave errors --> - <div class="banner" id="banner"></div> - <!-- Autocomplete user/pass --> - <form method="post" action="javascript:void(0)" style="display: none"> - <input type="text" id="address" name="address" value="" /> <input - type="password" id="password" name="password" value="" /> <input - type="submit" value="Login" id="login" /> <input type="submit" - class="wiab le button" name="signIn" id="signIn" value="Sign in"> - </form> - <!-- RECOMMENDED if your web app will not function without JavaScript enabled --> - <noscript> - <div - style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif"> - Your web browser must have JavaScript enabled in order for this - application to display correctly.</div> - </noscript> - <iframe id="__gwt_historyFrame" style="width: 0; height: 0; border: 0"></iframe> - <iframe src="" id="__download" style="width: 0; height: 0; border: 0"></iframe> - <div id="kuneinitialcurtain"></div> - <div id="kuneloading"> - <div class="kuneloading-indicator"> - <img src="ws/images/kune-anim-g.gif" width="35" height="35" - alt="kune-loading" - style="margin-right: 3px; float: left; vertical-align: top;" />kune <br /> - <span id="kuneloading-msg">Starting...</span> - </div> - </div> - <div id="k-home-prewrap"> - <div id="k-home-wrapper"> - <!-- This id is required for kune (you can create a different .html but preserve this id) --> - <div id="k-home-table"> - <div id="k-home-header"></div> - <!-- div home-header --> - <div id="k-home-intro"> - <div id="k-home-summary-left"> - <div id="k-home-logo"> - <img src="ws/logo-big-home.png" alt="" /> - </div> - <div id="k-home-summary"> - <ul> - <li - style="background-image: url(ws/images/kune-intro-user.png);">Comunicate - with others</li> - <li - style="background-image: url(ws/images/kune-intro-group.png);">Work - in collaboration</li> - <li - style="background-image: url(ws/images/kune-intro-world.png);">And - share with the world</li> - </ul> - </div> - <!-- k-home-summary --> - </div> - <!-- k-home-summary-left --> - <div id="k-home-summary-right"> - <div id="k-home-ini"> - Welcome! This site is a Kune node. Kune, which means "together" - in esperanto, it's a network of interconnected sites like this - one, where you can <strong>communicate, share, - collaborate with others and create your web spaces easily</strong>. <a - href="#signin">Join!</a> - </div> - <!-- div home-ini --> - <!-- k-home-summary-right --> - </div> - <!-- div home-header --> - </div> - <div id="k-home-body"> - <div id="k-home-left"> - <div id="k-home-group-stats" style="display: none;"> - <!-- This id is optional for kune (you can create a different .html and preserve this id if you want this stats) --> - </div> - <!-- div home-group-stats --> - </div> - <!-- div k-home-left --> - <div id="k-home-right"> - <div id="k-home-global-stats" style="display: none;"> - <!-- This id is optinal for kune (you can create a different .html but preserve this id if you want this stats) --> - </div> - </div> - <!-- div k-home-right --> - </div> - <!-- div k-home-body --> - <!-- <div id="k-home-footer" style="display: none;"> --> - <!-- </div> --> - <!-- div k-home-footer --> - </div> - <!-- div home-table --> - </div> - <!-- home-wrapper --> - </div> - <!-- home-prewrap --> + <!-- Banner for wave errors --> + <div class="banner" id="banner"></div> + <!-- Autocomplete user/pass --> + <form method="post" action="javascript:void(0)" style="display: none"> + <input type="text" id="address" name="address" value="" /> <input + type="password" id="password" name="password" value="" /> <input + type="submit" value="Login" id="login" /> <input type="submit" + class="wiab le button" name="signIn" id="signIn" value="Sign in"> + </form> + <!-- RECOMMENDED if your web app will not function without JavaScript enabled --> + <noscript> + <div + style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif"> + Your web browser must have JavaScript enabled in order for this + application to display correctly.</div> + </noscript> + <iframe id="__gwt_historyFrame" style="width: 0; height: 0; border: 0"></iframe> + <iframe src="" id="__download" style="width: 0; height: 0; border: 0"></iframe> + <div id="kuneinitialcurtain"></div> + <div id="kuneloading"> + <div class="kuneloading-indicator"> + <img src="ws/images/kune-anim-g.gif" width="35" height="35" + alt="kune-loading" + style="margin-right: 3px; float: left; vertical-align: top;" />kune <br /> + <span id="kuneloading-msg">Starting...</span> + </div> + </div> + <div id="k-home-prewrap"> + <div id="k-home-wrapper"> + <!-- This id is required for kune (you can create a different .html but preserve this id) --> + <div id="k-home-table"> + <div id="k-home-header"></div> + <!-- div home-header --> + <div id="k-home-intro"> + <div id="k-home-summary-left"> + <div id="k-home-logo"> + <img src="ws/logo-big-home.png" alt="" /> + </div> + <div id="k-home-summary"> + <ul> + <li + style="background-image: url(ws/images/kune-intro-user.png);">Comunicate + with others</li> + <li + style="background-image: url(ws/images/kune-intro-group.png);">Work + in collaboration</li> + <li + style="background-image: url(ws/images/kune-intro-world.png);">And + share with the world</li> + </ul> + </div> + <!-- k-home-summary --> + </div> + <!-- k-home-summary-left --> + <div id="k-home-summary-right"> + <div id="k-home-ini"> + Welcome! This site is a Kune node. Kune, which means + "together" in esperanto, it's a network of interconnected + sites like this one, where you can <strong>communicate, + share, collaborate with others and create your web + spaces easily</strong>. <a href="#signin">Join!</a> + </div> + <!-- div home-ini --> + <!-- k-home-summary-right --> + </div> + <!-- div home-header --> + </div> + <div id="k-home-body"> + <div id="k-home-left"> + <div id="k-home-group-stats" style="display: none;"> + <!-- This id is optional for kune (you can create a different .html and preserve this id if you want this stats) --> + </div> + <!-- div home-group-stats --> + </div> + <!-- div k-home-left --> + <div id="k-home-right"> + <div id="k-home-global-stats" style="display: none;"> + <!-- This id is optinal for kune (you can create a different .html but preserve this id if you want this stats) --> + </div> + </div> + <!-- div k-home-right --> + </div> + <!-- div k-home-body --> + <!-- <div id="k-home-footer" style="display: none;"> --> + <!-- </div> --> + <!-- div k-home-footer --> + </div> + <!-- div home-table --> + </div> + <!-- home-wrapper --> + </div> + <!-- home-prewrap --> </body> </html> Modified: trunk/src/test/java/cc/kune/core/server/integration/StatsServiceTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/integration/StatsServiceTest.java 2011-10-11 12:07:21 UTC (rev 1556) +++ trunk/src/test/java/cc/kune/core/server/integration/StatsServiceTest.java 2011-10-12 11:44:25 UTC (rev 1557) @@ -21,11 +21,14 @@ import static org.junit.Assert.assertTrue; +import java.util.List; + import org.junit.Before; import org.junit.Test; import cc.kune.core.server.stats.HomeStats; import cc.kune.core.server.stats.StatsService; +import cc.kune.domain.Content; import cc.kune.domain.finders.GroupFinder; import com.google.inject.Inject; @@ -40,6 +43,10 @@ private void checkStats(final HomeStats homeStats) { assertTrue(homeStats.getTotalGroups() > 0); assertTrue(homeStats.getTotalUsers() > 0); + assertTrue(homeStats.getLastGroups().size() > 0); + assertTrue(homeStats.getLastPublishedContents().size() > 0); + final List<Content> lastContentsOfMyGroups = homeStats.getLastContentsOfMyGroups(); + assertTrue(lastContentsOfMyGroups == null || lastContentsOfMyGroups.size() > 0); } @Transactional @@ -50,9 +57,13 @@ @Test public void testBasicStats() { - HomeStats homeStats = statsService.getHomeStats(); + final HomeStats homeStats = statsService.getHomeStats(); checkStats(homeStats); - homeStats = statsService.getHomeStats(groupFinder.findByShortName(getDefSiteShortName())); + } + + @Test + public void testLoggedStats() { + final HomeStats homeStats = statsService.getHomeStats(groupFinder.findByShortName(getSiteAdminShortName())); checkStats(homeStats); }
participants (1)
-
Vicente J. Ruiz Jurado