r1523 - in trunk: script src/main/java/cc/kune/chat/client/actions src/main/java/cc/kune/core/client/i18n src/main/java/cc/kune/core/client/rpcservices src/main/java/cc/kune/core/server src/main/java/cc/kune/core/server/content src/main/java/cc/kune/core/server/properties src/main/java/cc/kune/core/server/rpc src/main/java/cc/kune/core/shared/dto src/main/java/cc/kune/gspace/client src/main/java/cc/kune/gspace/client/actions src/main/java/cc/kune/gspace/client/viewers src/main/java/cc/kune/wa
Author: vjrj_ Date: 2011-09-20 03:32:58 +0200 (Tue, 20 Sep 2011) New Revision: 1523 Added: trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackAction.java trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java Modified: trunk/script/i18n-db2gwt.sh trunk/src/main/java/cc/kune/chat/client/actions/ChatAboutContentBtn.java trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java trunk/src/main/java/cc/kune/core/server/InitData.java trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java trunk/src/main/java/cc/kune/wave/client/WebClient.java trunk/src/main/java/cc/kune/wave/server/KuneAgent.java trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java trunk/src/main/resources/kune.properties Log: NEW - # 79: I18n refactorization http://kune.ourproject.org/issues/ticket/79 CLOSED - # 108: Send Feedback button http://kune.ourproject.org/issues/ticket/108 Modified: trunk/script/i18n-db2gwt.sh =================================================================== --- trunk/script/i18n-db2gwt.sh 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/script/i18n-db2gwt.sh 2011-09-20 01:32:58 UTC (rev 1523) @@ -41,10 +41,13 @@ if [[ $J -eq 1 ]] then -mysql -B --skip-column-names --password="db4kune" -u kune kune_dev -e "$SEL" \ +mysql -B --skip-column-names --default-character-set=utf8 --password="db4kune" -u kune kune_dev -e "$SEL" \ | sed 's/ /ł/g' \ | awk -F "ł" ' BEGIN { + print "/**" + print " * Autogenerated by trunk/bin/i18n-db2gwt.sh, please not edit directly" + print " */" print "public interface KuneConstants extends ConstantsWithLookup {" } { @@ -69,6 +72,10 @@ | sed 's/ /ł/g' \ | awk -F "ł" ' BEGIN { + print "#" + print "# Autogenerated by trunk/bin/i18n-db2gwt.sh, please not edit directly" + print "#" + print } { lang=$4 Modified: trunk/src/main/java/cc/kune/chat/client/actions/ChatAboutContentBtn.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/actions/ChatAboutContentBtn.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/chat/client/actions/ChatAboutContentBtn.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -22,6 +22,8 @@ import cc.kune.chat.client.ChatClient; import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; +import cc.kune.common.client.notify.NotifyUser; +import cc.kune.common.client.utils.SimpleResponseCallback; import cc.kune.core.client.actions.RolAction; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.state.Session; @@ -51,11 +53,23 @@ @Override public void actionPerformed(final ActionEvent event) { - final String subject = i18n.t("Chat about: [%s]", session.getContentState().getTitle()); - final StateToken token = session.getCurrentStateToken(); - chatClient.get().joinRoom(token.toString().replaceAll("\\.", "-"), subject, - session.getCurrentUserInfo().getShortName()); - chatClient.get().show(); + NotifyUser.askConfirmation( + i18n.t("Confirm, please:"), + i18n.t("This will open a specific chatroom to chat about this page or document (it's useful to chat with others about something while reading/modifing it). Are you sure?"), + new SimpleResponseCallback() { + @Override + public void onCancel() { + } + + @Override + public void onSuccess() { + final String subject = i18n.t("Chat about: [%s]", session.getContentState().getTitle()); + final StateToken token = session.getCurrentStateToken(); + chatClient.get().joinRoom(token.toString().replaceAll("\\.", "-"), subject, + session.getCurrentUserInfo().getShortName()); + chatClient.get().show(); + } + }); } } Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -24,7 +24,6 @@ import java.util.MissingResourceException; import cc.kune.common.client.log.Log; -import cc.kune.common.client.notify.NotifyUser; import cc.kune.common.client.utils.Location; import cc.kune.common.client.utils.TextUtils; import cc.kune.common.client.utils.WindowUtils; @@ -64,7 +63,6 @@ @Override public void onSuccess(final I18nLanguageDTO result) { currentLang = result; - NotifyUser.info("lang: " + result.getCode()); currentLanguageCode = currentLang.getCode(); session.setCurrentLanguage(currentLang); i18nService.getLexicon(currentLang.getCode(), new AsyncCallback<HashMap<String, String>>() { Modified: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -1,5 +1,8 @@ package cc.kune.core.client.i18n; +/** + * Autogenerated by trunk/bin/i18n-db2gwt.sh, please not edit directly + */ import com.google.gwt.i18n.client.ConstantsWithLookup; public interface KuneConstants extends ConstantsWithLookup { Modified: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties =================================================================== --- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties 2011-09-20 01:32:58 UTC (rev 1523) @@ -1,3 +1,6 @@ +# +# Autogenerated by trunk/bin/i18n-db2gwt.sh, please not edit directly +# addAsABuddienull = Añadir como colega chatNull = Chat ;) search = Buscar Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -74,6 +74,8 @@ void save(String user, StateToken token, String content) throws DefaultException; + String sendFeedback(String userHash, String title, String body); + ContentSimpleDTO setAsDefaultContent(String userHash, StateToken token); I18nLanguageDTO setLanguage(String userHash, StateToken token, String languageCode) Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -77,6 +77,8 @@ void save(String user, StateToken token, String content, AsyncCallback<Void> asyncCallback); + void sendFeedback(String userHash, String title, String body, AsyncCallback<String> callback); + void setAsDefaultContent(String userHash, StateToken token, AsyncCallback<ContentSimpleDTO> asyncCallback); Modified: trunk/src/main/java/cc/kune/core/server/InitData.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/InitData.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/server/InitData.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -42,6 +42,7 @@ private License defaultLicense; private String defaultWsTheme; private List<ExtMediaDescrip> extMediaDescrips; + private boolean feedbackEnabled; private String flvEmbedObject; private String galleryPermittedExtensions; private List<ToolSimple> groupTools; @@ -180,6 +181,10 @@ return userTools; } + public boolean isFeedbackEnabled() { + return feedbackEnabled; + } + public void setAviEmbedObject(final String aviEmbedObject) { this.aviEmbedObject = aviEmbedObject; } @@ -216,6 +221,10 @@ this.extMediaDescrips = extMediaDescrips; } + public void setFeedbackEnabled(final boolean feedbackEnabled) { + this.feedbackEnabled = feedbackEnabled; + } + public void setFlvEmbedObject(final String flvEmbedObject) { this.flvEmbedObject = flvEmbedObject; } Modified: trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -46,7 +46,6 @@ private final ContainerManager containerManager; private final ContentManager contentManager; private final Log LOG = LogFactory.getLog(CreationServiceDefault.class); - private final ServerToolRegistry tools; @Inject Modified: trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -28,6 +28,8 @@ String CHAT_ROOM_HOST = "kune.chat.roomHost"; String CURRENT_CC_VERSION = "kune.currentccversion"; String DEFAULT_SITE_SHORT_NAME = "kune.default.site.shortName"; + String FEEDBACK_ENABLED = "kune.feedback.enabled"; + String FEEDBACK_TO = "kune.feedback.to"; String FLV_EMBEDED_OBJECT = "kune.media.flvembededobject"; String IMAGES_CROPSIZE = "kune.images.cropsize"; String IMAGES_ICONSIZE = "kune.images.iconsize"; @@ -63,6 +65,8 @@ String get(String key, String defaultValue); + boolean getBoolean(String key); + Integer getInteger(String key); List<String> getList(String key); Modified: trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/server/properties/KunePropertiesDefault.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -70,6 +70,13 @@ } @Override + public boolean getBoolean(final String key) { + final Boolean value = config.getBoolean(key); + checkNull(key, value); + return value; + } + + @Override public Integer getInteger(final String key) { final Integer value = config.getInt(key); checkNull(key, value); Modified: trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -19,10 +19,15 @@ */ package cc.kune.core.server.rpc; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import javax.persistence.NoResultException; +import org.waveprotocol.wave.model.wave.ParticipantId; +import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder; + import cc.kune.chat.server.ChatManager; import cc.kune.core.client.errors.AccessViolationException; import cc.kune.core.client.errors.ContentNotFoundException; @@ -45,6 +50,7 @@ import cc.kune.core.server.manager.GroupManager; import cc.kune.core.server.manager.TagUserContentManager; import cc.kune.core.server.mapper.Mapper; +import cc.kune.core.server.properties.KuneProperties; import cc.kune.core.server.state.StateContainer; import cc.kune.core.server.state.StateContent; import cc.kune.core.server.state.StateService; @@ -65,6 +71,8 @@ import cc.kune.domain.Content; import cc.kune.domain.Group; import cc.kune.domain.User; +import cc.kune.wave.server.KuneWaveManager; +import cc.kune.wave.server.ParticipantUtils; import com.google.inject.Inject; import com.google.inject.Provider; @@ -78,7 +86,10 @@ private final CreationService creationService; private final FinderService finderService; private final GroupManager groupManager; + private final KuneProperties kuneProperties; + private final KuneWaveManager kuneWaveManager; private final Mapper mapper; + private final ParticipantUtils participantUtils; private final AccessRightsService rightsService; private final StateService stateService; private final TagUserContentManager tagManager; @@ -90,7 +101,8 @@ final StateService stateService, final CreationService creationService, final GroupManager groupManager, final ContentManager contentManager, final ContainerManager containerManager, final TagUserContentManager tagManager, - final Mapper mapper, final ChatManager chatManager) { + final Mapper mapper, final ChatManager chatManager, final KuneWaveManager kuneWaveManager, + final KuneProperties kuneProperties, final ParticipantUtils participantUtils) { this.finderService = finderService; this.userSessionProvider = userSessionProvider; this.accessService = accessService; @@ -103,6 +115,9 @@ this.tagManager = tagManager; this.mapper = mapper; this.chatManager = chatManager; + this.kuneWaveManager = kuneWaveManager; + this.kuneProperties = kuneProperties; + this.participantUtils = participantUtils; } @Override @@ -436,6 +451,22 @@ @Override @Authenticated + @Transactional + public String sendFeedback(final String userHash, final String title, final String body) + throws DefaultException { + final User user = getCurrentUser(); + final List<String> participants = kuneProperties.getList(KuneProperties.FEEDBACK_TO); + participants.add(0, user.getShortName()); + final List<ParticipantId> partIds = new ArrayList<ParticipantId>(); + for (final String part : participants) { + partIds.add(participantUtils.of(part)); + } + return JavaWaverefEncoder.encodeToUriPathSegment(kuneWaveManager.createWave(title, body, + partIds.toArray(new ParticipantId[0]))); + } + + @Override + @Authenticated @Authorizated(accessRolRequired = AccessRol.Administrator) @Transactional public ContentSimpleDTO setAsDefaultContent(final String userHash, final StateToken token) { Modified: trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -152,6 +152,7 @@ data.setOggEmbedObject(kuneProperties.get(KuneProperties.OGG_EMBEDED_OBJECT)); data.setAviEmbedObject(kuneProperties.get(KuneProperties.AVI_EMBEDED_OBJECT)); data.setExtMediaDescrips(extMediaDescManager.getAll()); + data.setFeedbackEnabled(kuneProperties.getBoolean(KuneProperties.FEEDBACK_ENABLED)); return data; } } Modified: trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java =================================================================== --- trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -35,6 +35,7 @@ private LicenseDTO defaultLicense; private String defaultWsTheme; private List<ExtMediaDescripDTO> extMediaDescrips; + private boolean feedbackEnabled; private String flvEmbedObject; private String galleryPermittedExtensions; private List<ToolSimpleDTO> groupTools; @@ -180,6 +181,10 @@ return getUserInfo() != null; } + public boolean isFeedbackEnabled() { + return feedbackEnabled; + } + public void setAviEmbedObject(final String aviEmbedObject) { this.aviEmbedObject = aviEmbedObject; } @@ -216,6 +221,10 @@ this.extMediaDescrips = extMediaDescrips; } + public void setFeedbackEnabled(final boolean feedbackEnabled) { + this.feedbackEnabled = feedbackEnabled; + } + public void setFlvEmbedObject(final String flvEmbedObject) { this.flvEmbedObject = flvEmbedObject; } Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -61,6 +61,8 @@ IsActionExtensible getSubheaderToolbar(); + IsActionExtensible getToolsSouthToolbar(); + ForIsWidget getUserSpace(); void selectGroupSpace(); Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -95,6 +95,8 @@ private final ActionFlowPanel subheaderToolbar; @UiField TabLayoutPanel tabs; + private final ActionFlowPanel toolsSouthToolbar; + @UiField FlowPanel userSpace; @@ -110,9 +112,11 @@ footerToolbar = toolbarProv.get(); headerToolbar = toolbarProv.get(); subheaderToolbar = toolbarProv.get(); + toolsSouthToolbar = toolbarProv.get(); getDocHeader().add(headerToolbar); getDocSubheader().add(subheaderToolbar); getDocFooter().add(footerToolbar); + getEntityToolsSouth().add(toolsSouthToolbar); entityToolsNorth.getElement().getStyle().setPosition(Position.RELATIVE); // entityToolsSouth.setVisible(false); mainpanel.getWidgetContainerElement(tabs).addClassName("k-spaces"); @@ -215,6 +219,11 @@ } @Override + public IsActionExtensible getToolsSouthToolbar() { + return toolsSouthToolbar; + } + + @Override public ForIsWidget getUserSpace() { return userSpace; } Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -23,13 +23,14 @@ import cc.kune.core.client.sitebar.search.SitebarSearchPanel; import cc.kune.core.client.sitebar.search.SitebarSearchPresenter; import cc.kune.gspace.client.actions.ContentViewerOptionsMenu; +import cc.kune.gspace.client.actions.GiveUsFeedbackBtn; import cc.kune.gspace.client.actions.RenameAction; import cc.kune.gspace.client.i18n.I18nTranslator; import cc.kune.gspace.client.i18n.I18nTranslatorPanel; import cc.kune.gspace.client.i18n.I18nTranslatorPresenter; import cc.kune.gspace.client.i18n.I18nTranslatorPresenter.I18nTranslatorView; +import cc.kune.gspace.client.i18n.I18nTranslatorTabsCollection; import cc.kune.gspace.client.i18n.SiteOptionsI18nTranslatorAction; -import cc.kune.gspace.client.i18n.I18nTranslatorTabsCollection; import cc.kune.gspace.client.licensewizard.LicenseChangeAction; import cc.kune.gspace.client.licensewizard.LicenseWizard; import cc.kune.gspace.client.licensewizard.LicenseWizardPanel; @@ -184,6 +185,7 @@ // Actions s(ContentViewerOptionsMenu.class); s(RenameAction.class); + s(GiveUsFeedbackBtn.class); // LicenseWizard bindPresenter(LicenseWizardPresenter.class, LicenseWizardView.class, LicenseWizardPanel.class, Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -23,9 +23,10 @@ import cc.kune.core.client.init.AppStartEvent.AppStartHandler; import cc.kune.core.client.sitebar.search.SitebarSearchPresenter; import cc.kune.core.client.state.Session; +import cc.kune.gspace.client.actions.GiveUsFeedbackBtn; import cc.kune.gspace.client.i18n.I18nToTranslateGridPanel; +import cc.kune.gspace.client.i18n.I18nTranslatorTabsCollection; import cc.kune.gspace.client.i18n.SiteOptionsI18nTranslatorAction; -import cc.kune.gspace.client.i18n.I18nTranslatorTabsCollection; import cc.kune.gspace.client.options.GroupOptions; import cc.kune.gspace.client.options.GroupOptionsCollection; import cc.kune.gspace.client.options.UserOptions; @@ -67,6 +68,7 @@ final Provider<UserOptStyle> ups, final Provider<UserOptLogo> ul, final Provider<UserOptTools> utc, final Provider<SitebarSearchPresenter> siteSearch, final Provider<SiteOptionsI18nTranslatorAction> transAction, + final Provider<GiveUsFeedbackBtn> giveUsFeedback, final Provider<I18nToTranslateGridPanel> toTrans, final Provider<I18nTranslatorTabsCollection> gtranslator) { @@ -102,6 +104,11 @@ // i18n transAction.get(); gtranslator.get().add(toTrans); + + // Feedback + if (event.getInitData().isFeedbackEnabled()) { + giveUsFeedback.get(); + } } }); } Added: trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackAction.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackAction.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackAction.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -0,0 +1,69 @@ +package cc.kune.gspace.client.actions; + +import cc.kune.common.client.actions.AbstractExtendedAction; +import cc.kune.common.client.actions.ActionEvent; +import cc.kune.common.client.notify.NotifyLevel; +import cc.kune.common.client.notify.NotifyUser; +import cc.kune.common.client.utils.SimpleResponseCallback; +import cc.kune.core.client.auth.SignIn; +import cc.kune.core.client.rpcservices.AsyncCallbackSimple; +import cc.kune.core.client.rpcservices.ContentServiceAsync; +import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.SiteTokens; +import cc.kune.core.client.state.StateManager; +import cc.kune.core.client.state.TokenUtils; +import cc.kune.core.shared.i18n.I18nTranslationService; + +import com.google.inject.Inject; +import com.google.inject.Provider; + +public class GiveUsFeedbackAction extends AbstractExtendedAction { + + private final Provider<ContentServiceAsync> contentService; + private final I18nTranslationService i18n; + private final Session session; + private final Provider<SignIn> signIn; + private final StateManager stateManager; + + @Inject + public GiveUsFeedbackAction(final Session session, final Provider<SignIn> signIn, + final StateManager stateManager, final I18nTranslationService i18n, + final Provider<ContentServiceAsync> contentService) { + this.session = session; + this.signIn = signIn; + this.stateManager = stateManager; + this.i18n = i18n; + this.contentService = contentService; + } + + @Override + public void actionPerformed(final ActionEvent event) { + if (session.isLogged()) { + NotifyUser.askConfirmation( + i18n.t("Confirm, please:"), + i18n.t("Do you want to write us with some positive or negative feedback? This can help us to improve these services"), + new SimpleResponseCallback() { + @Override + public void onCancel() { + } + + @Override + public void onSuccess() { + contentService.get().sendFeedback(session.getUserHash(), + i18n.t("Feedback of [%s]", session.getCurrentUser().getShortName()), + i18n.t("Edit and write here your feedback."), new AsyncCallbackSimple<String>() { + @Override + public void onSuccess(final String url) { + stateManager.gotoHistoryToken(url); + } + }); + } + }); + } else { + signIn.get().setErrorMessage(i18n.t("Sign in or create an account to give us feedback"), + NotifyLevel.info); + stateManager.gotoHistoryToken(TokenUtils.addRedirect(SiteTokens.SIGNIN, + session.getCurrentStateToken().toString())); + } + } +} Added: trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -0,0 +1,23 @@ +package cc.kune.gspace.client.actions; + +import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; +import cc.kune.core.client.resources.nav.NavResources; +import cc.kune.core.shared.i18n.I18nTranslationService; +import cc.kune.gspace.client.GSpaceArmor; + +import com.google.inject.Inject; + +public class GiveUsFeedbackBtn extends ButtonDescriptor { + + @Inject + public GiveUsFeedbackBtn(final GiveUsFeedbackAction action, final I18nTranslationService i18n, + final NavResources res, final GSpaceArmor armor) { + super(action); + withIcon(res.refresh()); + withText(i18n.t("Give us feedback!")); + withToolTip(i18n.t("Write us with some feedback for help us to improve these services")); + withStyles("k-noborder, k-nobackcolor, k-no-backimage"); + armor.getToolsSouthToolbar().add(this); + } + +} Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -42,6 +42,7 @@ import cc.kune.gspace.client.actions.RenameAction; import cc.kune.gspace.client.actions.RenameListener; import cc.kune.gspace.client.tool.ContentViewer; +import cc.kune.wave.client.WaveClientManager; import com.google.gwt.event.shared.EventBus; import com.google.gwt.event.shared.HandlerRegistration; @@ -96,7 +97,7 @@ public ContentViewerPresenter(final EventBus eventBus, final ContentViewerView view, final StateManager stateManager, final ContentViewerProxy proxy, final Session session, final ActionRegistryByType actionsRegistry, final Provider<RenameAction> renameAction, - final PathToolbarUtils pathToolbarUtils) { + final PathToolbarUtils pathToolbarUtils, final WaveClientManager wavClientManager) { super(eventBus, view, proxy); this.session = session; this.actionsRegistry = actionsRegistry; @@ -109,7 +110,6 @@ } }); session.onUserSignIn(true, new UserSignInHandler() { - @Override public void onUserSignIn(final UserSignInEvent event) { getView().signIn(); @@ -174,7 +174,8 @@ if (session.isLogged() && rights.isEditable()) { if (stateContent.isParticipant()) { // is already participant, show wave editor - if (org.waveprotocol.box.webclient.client.Session.get().isLoggedIn()) { + final org.waveprotocol.box.webclient.client.Session waveSession = org.waveprotocol.box.webclient.client.Session.get(); + if (waveSession != null && waveSession.isLoggedIn()) { // final String typeId = stateContent.getTypeId(); // if (typeId.equals(BartersConstants.TYPE_BARTER) // || typeId.equals(MeetingsConstants.TYPE_MEETING)) { Modified: trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -19,6 +19,7 @@ */ package cc.kune.wave.client; +import cc.kune.common.client.log.Log; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.UserServiceAsync; import cc.kune.core.client.state.Session; @@ -34,6 +35,8 @@ import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsonUtils; +import com.google.gwt.core.client.Scheduler; +import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget; import com.google.inject.Inject; @@ -56,18 +59,24 @@ setUseSocketIO(result.useSocketIO()); setSessionJSON(JsonUtils.safeEval(result.getSessionJSON())); setClientFlags(JsonUtils.safeEval(result.getClientFlags())); - final ForIsWidget userSpace = wsArmor.getUserSpace(); - if (webClient == null) { - if (userSpace.getWidgetCount() > 0) { - userSpace.remove(0); + Log.info("Wave client session: " + result.getSessionJSON()); + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override + public void execute() { + final ForIsWidget userSpace = wsArmor.getUserSpace(); + if (webClient == null) { + if (userSpace.getWidgetCount() > 0) { + userSpace.remove(0); + } + webClient = webclientView.get(); + userSpace.add(webClient); + } else { + // this is done with the first webclient creation above + webClient.login(); + webClient.asWidget().setVisible(true); + } } - webClient = webclientView.get(); - userSpace.add(webClient); - } else { - // this is done with the first webclient creation above - webClient.login(); - webClient.asWidget().setVisible(true); - } + }); } }); } @@ -91,14 +100,14 @@ } private native void setClientFlags(JavaScriptObject object) /*-{ - $wnd.__client_flags = object; - }-*/; + $wnd.__client_flags = object; + }-*/; private native void setSessionJSON(JavaScriptObject object) /*-{ - $wnd.__session = object; - }-*/; + $wnd.__session = object; + }-*/; private native void setUseSocketIO(boolean use) /*-{ - $wnd.__useSocketIO = use; - }-*/; + $wnd.__useSocketIO = use; + }-*/; } Modified: trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -32,14 +32,14 @@ */ @Override protected void configure() { + s(WebClientMock.class); + s(WebClient.class); + s(WaveClientProvider.class); s(WaveClientManager.class); s(WaveStatusIndicator.class); eagle(WaveParts.class); s(KuneWaveProfileManager.class); s(InboxCountView.class, InboxCountPanel.class); s(InboxCountPresenter.class); - s(WaveClientProvider.class); - s(WebClientMock.class); - s(WebClient.class); } } Modified: trunk/src/main/java/cc/kune/wave/client/WebClient.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WebClient.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/wave/client/WebClient.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -25,6 +25,7 @@ import java.util.Date; import java.util.logging.Logger; +import org.apache.commons.lang.NotImplementedException; import org.waveprotocol.box.webclient.client.ClientEvents; import org.waveprotocol.box.webclient.client.ClientIdGenerator; import org.waveprotocol.box.webclient.client.DebugMessagePanel; @@ -32,7 +33,6 @@ import org.waveprotocol.box.webclient.client.RemoteViewServiceMultiplexer; import org.waveprotocol.box.webclient.client.Session; import org.waveprotocol.box.webclient.client.SimpleWaveStore; -import org.waveprotocol.box.webclient.client.StagesProvider; import org.waveprotocol.box.webclient.client.WaveWebSocketClient; import org.waveprotocol.box.webclient.client.events.NetworkStatusEvent; import org.waveprotocol.box.webclient.client.events.NetworkStatusEventHandler; @@ -51,7 +51,6 @@ import org.waveprotocol.box.webclient.widget.frame.FramedPanel; import org.waveprotocol.box.webclient.widget.loading.LoadingIndicator; import org.waveprotocol.wave.client.account.ProfileManager; -import org.waveprotocol.wave.client.account.impl.ProfileManagerImpl; import org.waveprotocol.wave.client.common.safehtml.SafeHtml; import org.waveprotocol.wave.client.common.safehtml.SafeHtmlBuilder; import org.waveprotocol.wave.client.common.util.AsyncHolder.Accessor; @@ -62,6 +61,7 @@ import org.waveprotocol.wave.model.wave.ParticipantId; import org.waveprotocol.wave.model.waveref.WaveRef; +import cc.kune.common.client.errors.UIException; import cc.kune.common.client.notify.NotifyUser; import cc.kune.core.client.errors.DefaultException; import cc.kune.core.client.sitebar.spaces.Space; @@ -81,15 +81,18 @@ import com.google.gwt.user.client.Command; import com.google.gwt.user.client.History; import com.google.gwt.user.client.Timer; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.DockLayoutPanel; import com.google.gwt.user.client.ui.SplitLayoutPanel; import com.google.gwt.user.client.ui.UIObject; import com.google.inject.Inject; +import com.google.inject.Singleton; /** * Entry point classes define <code>onModuleLoad()</code>. */ +@Singleton public class WebClient extends Composite implements WaveClientView { interface Binder extends UiBinder<DockLayoutPanel, WebClient> { } @@ -245,7 +248,7 @@ */ @Inject public WebClient(final EventBus eventBus, KuneWaveProfileManager profiles, InboxCountPresenter inboxCount, TokenMatcher tokenMatcher) { - + // Window.alert("webclient! " + new Date()); this.eventBus = eventBus; this.profiles = profiles; this.inboxCount = inboxCount; @@ -338,11 +341,11 @@ */ // XXX check formatting wrt GPE private native String getWebSocketBaseUrl(String moduleBase) /*-{ - return "ws" + /:\/\/[^\/]+/.exec(moduleBase)[0] + "/"; + return "ws" + /:\/\/[^\/]+/.exec(moduleBase)[0] + "/"; }-*/; private native boolean useSocketIO() /*-{ - return !!$wnd.__useSocketIO + return !!$wnd.__useSocketIO }-*/; /** Modified: trunk/src/main/java/cc/kune/wave/server/KuneAgent.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/KuneAgent.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/wave/server/KuneAgent.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -70,8 +70,8 @@ } @Override - public WaveRef createWave(final String message, final ParticipantId participant) { - return createWave(NO_TITLE, message, participant); + public WaveRef createWave(final String message, final ParticipantId... participants) { + return createWave(NO_TITLE, message, participants); } @Override Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -35,7 +35,7 @@ void addParticipants(WaveRef waveName, String author, String userWhoAdd, String... newParticipants); - WaveRef createWave(String message, ParticipantId participants); + WaveRef createWave(String message, ParticipantId... participants); WaveRef createWave(String title, String message, ParticipantId... participantsArray); Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-09-20 01:32:58 UTC (rev 1523) @@ -211,8 +211,8 @@ } @Override - public WaveRef createWave(final String message, final ParticipantId participant) { - return createWave(NO_TITLE, message, participant); + public WaveRef createWave(final String message, final ParticipantId... participants) { + return createWave(NO_TITLE, message, participants); } @Override Modified: trunk/src/main/resources/kune.properties =================================================================== --- trunk/src/main/resources/kune.properties 2011-09-19 20:25:07 UTC (rev 1522) +++ trunk/src/main/resources/kune.properties 2011-09-20 01:32:58 UTC (rev 1523) @@ -29,6 +29,11 @@ kune.chat.domain = localhost kune.chat.roomHost = rooms.localhost +### Feedback syste +kune.feedback.enabled = true +# List of participants to give feedback, comma-separated +kune.feedback.to = admin + ### Other params # Reserved words to avoid it's use in the client side for user and group names
participants (1)
-
Vicente J. Ruiz Jurado