[kune-commits] r959 - in trunk: .
src/main/java/org/ourproject/kune/platf/client/actions
src/main/java/org/ourproject/kune/platf/client/actions/toolbar
src/main/java/org/ourproject/kune/workspace/client/socialnet
src/main/java/org/ourproject/kune/workspace/client/tags
vjrj
vjrj at ourproject.org
Fri Nov 21 16:36:49 CET 2008
Author: vjrj
Date: 2008-11-21 16:36:46 +0100 (Fri, 21 Nov 2008)
New Revision: 959
Added:
trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionAddCondition.java
Modified:
trunk/CREDITS
trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionDescriptor.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionItem.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/ContextActionRegistry.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/GroupActionRegistry.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/UserActionRegistry.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java
Log:
Complete - task Tags cloud
Incomplete - task Use of new ActionDescriptionClass in SocialNetwork
Modified: trunk/CREDITS
===================================================================
--- trunk/CREDITS 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/CREDITS 2008-11-21 15:36:46 UTC (rev 959)
@@ -18,4 +18,4 @@
* Thanks to David Trigo and http://www.esperanto-es.net/ for suggest the name of
'kune' for our initiative:
http://ourproject.org/forum/forum.php?thread_id=500&forum_id=469
-* and ourproject.org and xsto.info for sharing whit us their resources
+* and ourproject.org and xsto.info for sharing with us their resources
Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionAddCondition.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionAddCondition.java 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionAddCondition.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -0,0 +1,23 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */package org.ourproject.kune.platf.client.actions;
+
+public interface ActionAddCondition<T> {
+ boolean mustBeAdded(T item);
+}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionDescriptor.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionDescriptor.java 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionDescriptor.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -64,6 +64,9 @@
/** The enable condition. */
private ActionEnableCondition<T> enableCondition;
+ /** The must be added condition. */
+ private ActionAddCondition<T> addCondition;
+
/** The id. */
private String id;
@@ -133,6 +136,15 @@
}
/**
+ * Gets the add condition.
+ *
+ * @return the add condition
+ */
+ public ActionAddCondition<T> getAddCondition() {
+ return addCondition;
+ }
+
+ /**
* Gets the confirmation text.
*
* @return the confirmation text
@@ -233,6 +245,16 @@
}
/**
+ * Sets the add condition.
+ *
+ * @param addCondition
+ * the new add condition
+ */
+ public void setAddCondition(final ActionAddCondition<T> addCondition) {
+ this.addCondition = addCondition;
+ }
+
+ /**
* Sets the confirmation text.
*
* @param confirmationText
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionItem.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionItem.java 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionItem.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -34,6 +34,11 @@
this.item = item;
}
+ public boolean checkAdded() {
+ final ActionAddCondition<T> addCondition = action.getAddCondition();
+ return addCondition != null ? addCondition.mustBeAdded(getItem()) : true;
+ }
+
public boolean checkEnabling() {
final ActionEnableCondition<T> enableCondition = action.getEnableCondition();
return enableCondition != null ? enableCondition.mustBeEnabled(getItem()) : true;
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -23,6 +23,7 @@
import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
public class ActionRegistry<T> {
+ private static final String GENERIC = "kgenacts";
private final HashMap<String, ActionCollection<T>> actions;
@@ -30,13 +31,22 @@
actions = new HashMap<String, ActionCollection<T>>();
}
- public void addAction(final ActionDescriptor<T> action, final String... typeIds) {
+ public void addAction(final ActionDescriptor<T> action) {
+ addAction(action, GENERIC);
+ }
+
+ public void addAction(final ActionDescriptor<T> action, String... typeIds) {
for (final String contentTypeId : typeIds) {
final ActionCollection<T> actionColl = getActions(contentTypeId);
actionColl.add(action);
}
}
+ public ActionItemCollection<T> getCurrentActions(final T item, final boolean isLogged,
+ final AccessRightsDTO rights, final boolean toolbarItems) {
+ return getCurrentActions(item, GENERIC, isLogged, rights, toolbarItems);
+ }
+
public ActionItemCollection<T> getCurrentActions(final T item, final String typeId, final boolean isLogged,
final AccessRightsDTO rights, final boolean toolbarItems) {
final ActionItemCollection<T> collection = new ActionItemCollection<T>();
@@ -60,10 +70,18 @@
return collection;
}
+ public void removeAction(final ActionDescriptor<T> action) {
+ removeAction(GENERIC, action);
+ }
+
public void removeAction(final String typeId, final ActionDescriptor<T> action) {
actions.get(typeId).remove(action);
}
+ public int size() {
+ return actions.size();
+ }
+
private ActionCollection<T> getActions(final String typeId) {
ActionCollection<T> actionColl = actions.get(typeId);
if (actionColl == null) {
@@ -89,4 +107,4 @@
return rights.isVisible();
}
}
-}
+}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ContextActionRegistry.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ContextActionRegistry.java 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ContextActionRegistry.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -21,5 +21,4 @@
import org.ourproject.kune.platf.client.dto.StateToken;
public class ContextActionRegistry extends ActionRegistry<StateToken> {
-
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/GroupActionRegistry.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/GroupActionRegistry.java 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/GroupActionRegistry.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -24,7 +24,4 @@
* The Class GroupActionRegistry stores actions over groups (mainly used in SN)
*/
public class GroupActionRegistry extends ActionRegistry<StateToken> {
-
- @Deprecated
- public static final String GENERAL = "genActions";
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/UserActionRegistry.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/UserActionRegistry.java 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/UserActionRegistry.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -27,7 +27,4 @@
*
*/
public class UserActionRegistry extends ActionRegistry<UserSimpleDTO> {
-
- public static final String GENERAL = "genActions";
-
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPresenter.java 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -59,13 +59,16 @@
public void setActions(final ActionItemCollection<T> actions) {
for (final ActionItem<T> actionItem : actions) {
final ActionDescriptor<T> action = actionItem.getAction();
- if (isToolbarMenu(action)) {
- view.addMenuAction(actionItem, actionItem.checkEnabling());
- } else {
- if (isToolbarButton(action)) {
- view.addButtonAction(actionItem, actionItem.checkEnabling());
+ if (actionItem.checkAdded()) {
+ if (isToolbarMenu(action)) {
+ view.addMenuAction(actionItem, actionItem.checkEnabling());
} else {
- Log.error("Code error: Not an ActionMenuDescriptor or ActionButtonDescriptor: " + action.getText());
+ if (isToolbarButton(action)) {
+ view.addButtonAction(actionItem, actionItem.checkEnabling());
+ } else {
+ Log.error("Code error: Not an ActionMenuDescriptor or ActionButtonDescriptor: "
+ + action.getText());
+ }
}
}
}
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-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -84,8 +84,8 @@
if (userBuddies != UserBuddiesDataDTO.NO_BUDDIES) {
List<UserSimpleDTO> buddies = userBuddies.getBuddies();
for (UserSimpleDTO user : buddies) {
- view.addBuddie(user, actionRegistry.getCurrentActions(user, UserActionRegistry.GENERAL,
- session.isLogged(), new AccessRightsDTO(true, true, true), false));
+ view.addBuddie(user, actionRegistry.getCurrentActions(user, session.isLogged(),
+ new AccessRightsDTO(true, true, true), false));
}
boolean hasLocalBuddies = buddies.size() > 0;
int numExtBuddies = userBuddies.getOtherExternalBuddies();
@@ -129,7 +129,7 @@
return !session.getCurrentUserInfo().getShortName().equals(item.getShortName());
}
});
- actionRegistry.addAction(addAsBuddie, UserActionRegistry.GENERAL);
+ actionRegistry.addAction(addAsBuddie);
final ActionMenuItemDescriptor<UserSimpleDTO> go = new ActionMenuItemDescriptor<UserSimpleDTO>(
AccessRolDTO.Viewer, new Listener<UserSimpleDTO>() {
@@ -140,6 +140,6 @@
go.setMustBeAuthenticated(false);
go.setTextDescription(i18n.t("Visit this user homepage"));
go.setIconUrl("images/group-home.gif");
- actionRegistry.addAction(go, UserActionRegistry.GENERAL);
+ actionRegistry.addAction(go);
}
}
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-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -65,6 +65,8 @@
private final Session session;
private final Provider<SocialNetworkServiceAsync> snServiceProvider;
private final StateManager stateManager;
+ private final GroupActionRegistry groupActionRegistry;
+ private final Provider<GroupLiveSearcher> liveSearcherProvider;
public GroupMembersSummaryPresenter(final I18nUITranslationService i18n, final StateManager stateManager,
final ImageUtils imageUtils, final Session session,
@@ -77,12 +79,14 @@
this.stateManager = stateManager;
this.session = session;
this.snServiceProvider = snServiceProvider;
+ this.liveSearcherProvider = liveSearcherProvider;
+ this.groupActionRegistry = groupActionRegistry;
final Listener<StateAbstractDTO> setStateListener = new Listener<StateAbstractDTO>() {
public void onEvent(StateAbstractDTO state) {
setState(state);
toolbar.disableMenusAndClearButtons();
toolbar.setActions(groupActionRegistry.getCurrentActions(state.getGroup().getStateToken(),
- GroupActionRegistry.GENERAL, session.isLogged(), state.getGroupRights(), true));
+ session.isLogged(), state.getGroupRights(), true));
toolbar.attach();
}
};
@@ -120,6 +124,27 @@
imageUtils.getImageHtml(ImageDescriptor.alert), true);
super.addGroupOperation(gotoGroupMenuItem, false);
super.addUserOperation(gotoMemberMenuItem, false);
+ createActions();
+ }
+
+ public void addCollab(final String groupShortName) {
+ Site.showProgressProcessing();
+ snServiceProvider.get().addCollabMember(session.getUserHash(), session.getCurrentState().getStateToken(),
+ groupShortName, new AsyncCallbackSimple<SocialNetworkResultDTO>() {
+ public void onSuccess(final SocialNetworkResultDTO result) {
+ Site.hideProgress();
+ Site.info(i18n.t("Member added as collaborator"));
+ stateManager.setSocialNetwork(result);
+ }
+
+ });
+ }
+
+ public void init(final GroupMembersSummaryView view) {
+ this.view = view;
+ }
+
+ private void createActions() {
ActionToolbarMenuDescriptor<StateToken> addMember = new ActionToolbarMenuDescriptor<StateToken>(
AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<StateToken>() {
public void onEvent(StateToken parameter) {
@@ -135,30 +160,31 @@
addMember.setTextDescription(i18n.t("Add member"));
addMember.setToolTip(i18n.t("Add a group or a person as member of this group"));
addMember.setParentMenuTitle(i18n.t("Options"));
- groupActionRegistry.addAction(addMember, GroupActionRegistry.GENERAL);
+
+ groupActionRegistry.addAction(addMember);
+ groupActionRegistry.addAction(unJoin);
+
+ groupActionRegistry.addAction(participate);
+ createShowAction(i18n.t("anyone"));
+ createShowAction(i18n.t("only members"));
+ createShowAction(i18n.t("only admins"));
}
- public void addCollab(final String groupShortName) {
- Site.showProgressProcessing();
- snServiceProvider.get().addCollabMember(session.getUserHash(), session.getCurrentState().getStateToken(),
- groupShortName, new AsyncCallbackSimple<SocialNetworkResultDTO>() {
- public void onSuccess(final SocialNetworkResultDTO result) {
- Site.hideProgress();
- Site.info(i18n.t("Member added as collaborator"));
- stateManager.setSocialNetwork(result);
+ private void createShowAction(String textDescription) {
+ ActionToolbarMenuDescriptor<StateToken> showMembersToAll = new ActionToolbarMenuDescriptor<StateToken>(
+ AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<StateToken>() {
+ public void onEvent(StateToken parameter) {
+ Site.info("In development");
}
-
});
+ // showMembersToAll.setIconUrl("images/add-green.gif");
+ showMembersToAll.setTextDescription(textDescription);
+ // showMembersToAll.setToolTip(i18n.t("Add a group or a person as member of this group"));
+ showMembersToAll.setParentMenuTitle(i18n.t("Options"));
+ showMembersToAll.setParentSubMenuTitle(i18n.t("Who can view this member list"));
+ groupActionRegistry.addAction(showMembersToAll);
}
- public void init(final GroupMembersSummaryView view) {
- this.view = view;
- }
-
- private boolean isMember(final boolean userIsAdmin, final boolean userIsCollab) {
- return userIsAdmin || userIsCollab;
- }
-
@SuppressWarnings("unchecked")
private void setGroupMembers(final SocialNetworkDTO socialNetwork, final AccessRightsDTO rights) {
final AccessListsDTO accessLists = socialNetwork.getAccessLists();
@@ -167,23 +193,15 @@
final List<GroupDTO> collabList = accessLists.getEditors().getList();
final List<GroupDTO> pendingCollabsList = socialNetwork.getPendingCollaborators().getList();
- final int numAdmins = adminsList.size();
+ // final int numAdmins = adminsList.size();
boolean userIsAdmin = rights.isAdministrable();
- final boolean userIsCollab = !userIsAdmin && rights.isEditable();
final boolean userCanView = rights.isVisible();
- boolean userIsMember = isMember(userIsAdmin, userIsCollab);
view.clear();
view.setDraggable(session.isLogged());
- if (!userIsMember) {
-
- } else if (userIsAdmin && numAdmins > 1 || userIsCollab) {
- // FIXME: view.addButton(unJoinButton);
- }
-
if (userCanView) {
for (final GroupDTO admin : adminsList) {
view.addItem(createGridItem(adminCategory, admin, rights, changeToCollabMenuItem, removeMemberMenuItem));
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -18,6 +18,7 @@
*
*/package org.ourproject.kune.workspace.client.socialnet;
+import org.ourproject.kune.platf.client.actions.ActionAddCondition;
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarPosition;
@@ -65,8 +66,10 @@
private final ImageUtils imageUtils;
private final MenuItemCollection<GroupDTO> otherOperationsUsers;
private final MenuItemCollection<GroupDTO> otherLoggedOperationsUsers;
- private final GroupActionRegistry groupActionRegistry;
+ protected ActionToolbarMenuDescriptor<StateToken> unJoin;
+ protected ActionToolbarButtonDescriptor<StateToken> participate;
+
public SocialNetworkPresenter(final I18nUITranslationService i18n, final StateManager stateManager,
final ImageUtils imageUtils, final Session session,
final Provider<SocialNetworkServiceAsync> snServiceProvider, GroupActionRegistry groupActionRegistry) {
@@ -75,7 +78,6 @@
this.imageUtils = imageUtils;
this.session = session;
this.snServiceProvider = snServiceProvider;
- this.groupActionRegistry = groupActionRegistry;
createButtons();
createMenuActions();
otherOperationsUsers = new MenuItemCollection<GroupDTO>();
@@ -125,9 +127,15 @@
return gridItem;
}
+ protected boolean isMember(AccessRightsDTO rights) {
+ boolean userIsAdmin = rights.isAdministrable();
+ final boolean userIsCollab = !userIsAdmin && rights.isEditable();
+ return isMember(userIsAdmin, userIsCollab);
+ }
+
private void createButtons() {
- ActionToolbarButtonDescriptor<StateToken> participate = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Viewer, ActionToolbarPosition.bottombar, new Listener<StateToken>() {
+ participate = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Viewer,
+ ActionToolbarPosition.bottombar, new Listener<StateToken>() {
public void onEvent(StateToken parameter) {
Site.showProgressProcessing();
snServiceProvider.get().requestJoinGroup(session.getUserHash(),
@@ -155,9 +163,14 @@
participate.setTextDescription(i18n.t("Participate"));
participate.setToolTip(i18n.t("Request to participate in this group"));
participate.setMustBeAuthenticated(false);
+ participate.setAddCondition(new ActionAddCondition<StateToken>() {
+ public boolean mustBeAdded(StateToken token) {
+ return !isMember(session.getCurrentState().getGroupRights());
+ }
+ });
- ActionToolbarMenuDescriptor<StateToken> unJoin = new ActionToolbarMenuDescriptor<StateToken>(
- AccessRolDTO.Editor, ActionToolbarPosition.bottombar, new Listener<StateToken>() {
+ unJoin = new ActionToolbarMenuDescriptor<StateToken>(AccessRolDTO.Editor, ActionToolbarPosition.bottombar,
+ new Listener<StateToken>() {
public void onEvent(StateToken parameter) {
removeMemberAction();
}
@@ -169,8 +182,6 @@
unJoin.setMustBeConfirmed(true);
unJoin.setConfirmationTitle(i18n.t("Unjoin this group"));
unJoin.setConfirmationText(i18n.t("Are you sure?"));
- groupActionRegistry.addAction(participate, GroupActionRegistry.GENERAL);
- groupActionRegistry.addAction(unJoin, GroupActionRegistry.GENERAL);
}
private GridItem<GroupDTO> createDefMemberMenu(final GroupDTO group, final GridGroup gridGroup) {
@@ -303,6 +314,10 @@
});
}
+ private boolean isMember(final boolean userIsAdmin, final boolean userIsCollab) {
+ return userIsAdmin || userIsCollab;
+ }
+
private void removeMemberAction() {
removeMemberAction(session.getCurrentState().getGroup());
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java 2008-11-20 02:28:23 UTC (rev 958)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
@@ -38,7 +38,7 @@
public class TagsSummaryPresenter implements TagsSummary {
- private static final int MINSIZE = 12;
+ private static final int MINSIZE = 11;
private static final int MAXSIZE = 26;
private TagsSummaryView view;
More information about the kune-commits
mailing list