diff --git a/.classpath b/.classpath index 53a5205..24cf536 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,6 @@ - + @@ -31,5 +31,5 @@ - + diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs index 35a2c6d..1e45030 100644 --- a/.settings/com.google.gdt.eclipse.core.prefs +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -1,6 +1,6 @@ -#Thu Apr 18 12:31:11 CEST 2013 +#Fri Jun 07 17:40:05 CEST 2013 eclipse.preferences.version=1 jarsExcludedFromWebInfLib= -lastWarOutDir=/Users/massi/Documents/workspace/notifications/target/notifications-0.2.0-SNAPSHOT +lastWarOutDir=/Users/massi/Documents/workspace/notifications/target/notifications-0.3.0-SNAPSHOT warSrcDir=src/main/webapp warSrcDirIsOutput=false diff --git a/pom.xml b/pom.xml index ca87e9b..db148c8 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ org.gcube.portlets.user notifications war - 0.2.0-SNAPSHOT + 0.3.0-SNAPSHOT gCube Notifications Portlet diff --git a/src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationSettings.java b/src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationSettingsDialog.java similarity index 63% rename from src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationSettings.java rename to src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationSettingsDialog.java index f997c45..0a406f8 100644 --- a/src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationSettings.java +++ b/src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationSettingsDialog.java @@ -6,6 +6,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.TreeMap; +import org.gcube.portal.databook.shared.NotificationChannelType; +import org.gcube.portal.databook.shared.NotificationType; import org.gcube.portlets.user.gcubewidgets.client.popup.GCubeDialog; import org.gcube.portlets.user.notifications.client.NotificationsServiceAsync; import org.gcube.portlets.user.notifications.client.view.templates.CategoryWrapper; @@ -14,11 +16,13 @@ import org.gcube.portlets.user.notifications.shared.NotificationPreference; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.HTML; @@ -37,85 +41,99 @@ import com.google.gwt.user.client.ui.Widget; * @author Massimiliano Assante ISTI-CNR * */ -public class NotificationSettings extends GCubeDialog { +public class NotificationSettingsDialog extends GCubeDialog { private VerticalPanel mainPanel = new VerticalPanel(); private VerticalPanel container = new VerticalPanel(); private HorizontalPanel buttonsContainerPanel = new HorizontalPanel(); private HorizontalPanel buttonsPanel = new HorizontalPanel(); - + public static final String loading = GWT.getModuleBaseURL() + "../images/feeds-loader.gif"; public static final String mailSentOK = GWT.getModuleBaseURL() + "../images/yes.png"; public static final String mailSentNOK = GWT.getModuleBaseURL() + "../images/warning_blue.png"; - - + + ArrayList myCategories = new ArrayList(); + private Button cancel = new Button("Cancel"); private Button save = new Button("Save"); - - private LinkedHashMap> preferences; - - public NotificationSettings(LinkedHashMap> preferences, final NotificationsServiceAsync notificationService) { + + public NotificationSettingsDialog(LinkedHashMap> preferences, final NotificationsServiceAsync notificationService) { super(); ScrollPanel scroller = new ScrollPanel(); scroller.setWidth("890px"); scroller.setHeight("500px"); - this.preferences = preferences; buttonsPanel.setWidth("100%"); buttonsPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT); - + container.setStyleName("user-notification"); container.setWidth("850px"); - + for (String category : preferences.keySet()) { - container.add(new CategoryWrapper(category)); - for (NotificationPreference pref : preferences.get(category)) { - container.add(new NotificationPreferenceView(pref)); - } + CategoryWrapper cat = new CategoryWrapper(category, preferences.get(category)); + container.add(cat); + myCategories.add(cat); } - - - + buttonsContainerPanel.add(cancel); buttonsContainerPanel.add(save); buttonsPanel.add(buttonsContainerPanel); //container.add(buttonsPanel); - + setText("Notification Settings"); scroller.add(container); mainPanel.add(scroller); mainPanel.add(buttonsPanel); setWidget(mainPanel); - + save.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { - + HashMap toStore = new HashMap(); + for (CategoryWrapper cat : myCategories) { + for (NotificationType notType : cat.getSelectedChannels().keySet()) { + toStore.put(notType, cat.getSelectedChannels().get(notType)); + //GWT.log(""+notType + " - " + cat.getSelectedChannels().get(notType)); + } + } + notificationService.setUserNotificationPreferences(toStore, new AsyncCallback() { + @Override + public void onSuccess(Boolean result) { + showDeliveryResult(result); + } + + @Override + public void onFailure(Throwable caught) { + showDeliveryResult(false); + } + }); } }); - - cancel.addClickHandler(new ClickHandler() { - + + cancel.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { hide(); } }); - + } - + private void showDeliveryResult(boolean success) { - container.clear(); - container.setHorizontalAlignment(HasAlignment.ALIGN_CENTER); - container.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); + mainPanel.clear(); + mainPanel.setWidth("890px"); + mainPanel.setHeight("500px"); + mainPanel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER); + mainPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); if (success) { setText("Notifications Settings Saved"); - container.add(new Image(mailSentOK)); + mainPanel.add(new HTML("Notifications Settings correctly saved.")); + mainPanel.add(new Image(mailSentOK)); } else { setText("Notifications Settings Saving Error"); - container.add(new Image(mailSentNOK)); - container.add(new HTML("There were problems contacting the server, please try again in a short while.")); + mainPanel.add(new Image(mailSentNOK)); + mainPanel.add(new HTML("There were problems contacting the server, please try again in a short while.")); Button close = new Button("Close"); close.addClickHandler(new ClickHandler() { @Override @@ -125,13 +143,15 @@ public class NotificationSettings extends GCubeDialog { }); } Button close = new Button("Close"); + close.setSize("200px", "70px"); + close.getElement().getStyle().setFontSize(24, Unit.PX); close.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { hide(); } }); - container.add(close); + mainPanel.add(close); } } diff --git a/src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationsPanel.java b/src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationsPanel.java index 6abbc66..b0fd931 100644 --- a/src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationsPanel.java +++ b/src/main/java/org/gcube/portlets/user/notifications/client/view/NotificationsPanel.java @@ -19,6 +19,8 @@ import org.gcube.portlets.user.notifications.client.view.templates.SingleNotific import org.gcube.portlets.user.notifications.shared.NotificationPreference; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style.Position; +import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Timer; @@ -100,7 +102,7 @@ public class NotificationsPanel extends Composite { @Override public void onSuccess(LinkedHashMap> result) { - NotificationSettings dlg = new NotificationSettings(result, notificationService); + NotificationSettingsDialog dlg = new NotificationSettingsDialog(result, notificationService); dlg.center(); dlg.show(); showSettingsLoader(false); @@ -173,10 +175,13 @@ public class NotificationsPanel extends Composite { private void showSettingsLoader(boolean show) { if (show) { loadingPanel.setWidth("100%"); + loadingPanel.getElement().getStyle().setPosition(Position.ABSOLUTE); + loadingPanel.getElement().getStyle().setTop(mainPanel.getAbsoluteTop()+200, Unit.PX); + loadingPanel.getElement().getStyle().setLeft(mainPanel.getAbsoluteLeft(), Unit.PX); loadingPanel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER); loadingPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); loadingPanel.add(loadingImage); - mainPanel.insert(loadingPanel, 0); + mainPanel.add(loadingPanel); } else mainPanel.remove(loadingPanel); } diff --git a/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/CategoryWrapper.java b/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/CategoryWrapper.java index dbba308..847595c 100644 --- a/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/CategoryWrapper.java +++ b/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/CategoryWrapper.java @@ -1,10 +1,26 @@ package org.gcube.portlets.user.notifications.client.view.templates; +import static com.google.gwt.query.client.GQuery.$; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import org.gcube.portal.databook.shared.NotificationChannelType; +import org.gcube.portal.databook.shared.NotificationType; +import org.gcube.portlets.user.gcubewidgets.client.elements.Span; +import org.gcube.portlets.user.gcubewidgets.client.switchbutton.SwitchButton; +import org.gcube.portlets.user.notifications.shared.NotificationPreference; + import com.google.gwt.core.client.GWT; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; /** @@ -18,12 +34,96 @@ public class CategoryWrapper extends Composite { interface CategoryWrapperUiBinder extends UiBinder { } - - @UiField HTML categoryLabel; - - public CategoryWrapper(String catName) { - initWidget(uiBinder.createAndBindUi(this)); - categoryLabel.setHTML(catName); - } + @UiField Span categoryLabel; + @UiField SwitchButton switchButton; + @UiField CheckBox portalCheckbox; + @UiField CheckBox emailCheckbox; + @UiField VerticalPanel categoryPanel; + + ArrayList myPreferences = new ArrayList(); + + public CategoryWrapper(String catName, ArrayList preferences) { + initWidget(uiBinder.createAndBindUi(this)); + categoryLabel.setText(catName); + + //set the view depending on the model + boolean atLeastOnePreferenceOn = false; + for (NotificationPreference pref : preferences) { + NotificationPreferenceView toAdd = new NotificationPreferenceView(pref); + categoryPanel.add(toAdd); + myPreferences.add(toAdd); + if (pref.getSelectedChannels()[0] != null && !atLeastOnePreferenceOn) { //if none were selected you get an array of size 1 having null + atLeastOnePreferenceOn = true; + } + } + if (!atLeastOnePreferenceOn) + setOff(); + else + switchButton.setValue(true); + + switchButton.addValueChangeHandler(new ValueChangeHandler() { + @Override + public void onValueChange(ValueChangeEvent event) { + if (event.getValue()) { + for (int i = categoryPanel.getWidgetCount()-1; i >= 0; i--) { + $(categoryPanel.getWidget(i)).slideDown(300); + $(portalCheckbox).fadeIn(300); + $(emailCheckbox).fadeIn(300); + } + } else { + for (int i = categoryPanel.getWidgetCount()-1; i >= 0; i--) { + $(categoryPanel.getWidget(i)).slideUp(300); + $(portalCheckbox).fadeOut(300); + $(emailCheckbox).fadeOut(300); + } + } + } + }); + + emailCheckbox.addValueChangeHandler(new ValueChangeHandler() { + @Override + public void onValueChange(ValueChangeEvent event) { + for (NotificationPreferenceView notPref : myPreferences) { + notPref.setEmailPrefValue(event.getValue()); + } + } + }); + + portalCheckbox.addValueChangeHandler(new ValueChangeHandler() { + @Override + public void onValueChange(ValueChangeEvent event) { + for (NotificationPreferenceView notPref : myPreferences) { + notPref.setPortalPrefValue(event.getValue()); + } + } + }); + } + public void setOff() { + for (int i = categoryPanel.getWidgetCount()-1; i >= 0; i--) { + $(categoryPanel.getWidget(i)).slideUp(0); + $(portalCheckbox).fadeOut(50); + $(emailCheckbox).fadeOut(50); + } + switchButton.setValue(false); + } + + /** + * @return the selected notification channels in the view + */ + public HashMap getSelectedChannels() { + HashMap toReturn = new HashMap(); + if (switchButton.getValue()) { + for (NotificationPreferenceView notPref : myPreferences) + if (notPref.getSelectedChannels() != null && notPref.getSelectedChannels().length > 0) + toReturn.put(notPref.getNotificationType(), notPref.getSelectedChannels()); + else + toReturn.put(notPref.getNotificationType(), new NotificationChannelType[0]); //none were selected + } + else { //all OFF + for (NotificationPreferenceView notPref : myPreferences) + toReturn.put(notPref.getNotificationType(), new NotificationChannelType[0]); + } + return toReturn; + } } diff --git a/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/CategoryWrapper.ui.xml b/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/CategoryWrapper.ui.xml index a7599ff..f7b623c 100644 --- a/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/CategoryWrapper.ui.xml +++ b/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/CategoryWrapper.ui.xml @@ -1,7 +1,18 @@ - - + +
+ +
+ Portal + Email + +
+
+
+
\ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/NotificationPreferenceView.java b/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/NotificationPreferenceView.java index 00f5705..8aa9c03 100644 --- a/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/NotificationPreferenceView.java +++ b/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/NotificationPreferenceView.java @@ -1,5 +1,9 @@ package org.gcube.portlets.user.notifications.client.view.templates; +import java.util.ArrayList; + +import org.gcube.portal.databook.shared.NotificationChannelType; +import org.gcube.portal.databook.shared.NotificationType; import org.gcube.portlets.user.gcubewidgets.client.elements.Span; import org.gcube.portlets.user.gcubewidgets.client.switchbutton.SwitchButton; import org.gcube.portlets.user.notifications.shared.NotificationPreference; @@ -11,6 +15,7 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import static com.google.gwt.query.client.GQuery.*; @@ -31,32 +36,94 @@ public class NotificationPreferenceView extends Composite { @UiField CheckBox portalCheckbox; @UiField CheckBox emailCheckbox; @UiField SwitchButton switchButton; + + NotificationPreference myPreference; public NotificationPreferenceView(NotificationPreference toDisplay) { initWidget(uiBinder.createAndBindUi(this)); + myPreference = toDisplay; + updateViewValues(toDisplay); prefType.setHTML(toDisplay.getTypeLabel()); - prefDesc.setHTML("("+toDisplay.getTypeDesc()+")"); - switchButton.setValue(true); + prefDesc.setHTML(toDisplay.getTypeDesc()); switchButton.addValueChangeHandler(new ValueChangeHandler() { @Override public void onValueChange(ValueChangeEvent event) { + setCheckBoxValue(portalCheckbox, event.getValue()); + setCheckBoxValue(emailCheckbox, event.getValue()); if (event.getValue()) { - portalCheckbox.setValue(true); - emailCheckbox.setValue(true); $(portalCheckbox).fadeIn(300); $(emailCheckbox).fadeIn(300); } else { - portalCheckbox.setValue(false); - emailCheckbox.setValue(false); $(portalCheckbox).fadeOut(300); $(emailCheckbox).fadeOut(300); } - } }); } + /** + * called initially, report the preferences from the server in the view + * @param setting the preference + */ + private void updateViewValues(NotificationPreference setting) { + NotificationChannelType[] currChannels = setting.getSelectedChannels(); + if (currChannels == null || currChannels.length == 0) { + setCheckBoxValue(portalCheckbox, false); + setCheckBoxValue(portalCheckbox, false); + } + else { + for (int i = 0; i < currChannels.length; i++) { + //GWT.log(currChannels[i].toString() + "-"+setting.getType()); + if (currChannels[i] == NotificationChannelType.PORTAL) { + setCheckBoxValue(portalCheckbox, true); + } + if (currChannels[i] == NotificationChannelType.EMAIL) { + setCheckBoxValue(emailCheckbox, true); + } + } + } + //if either one is true switch is ON + boolean overAll = portalCheckbox.getValue() || emailCheckbox.getValue(); + switchButton.setValue(overAll); + if (! overAll) { + $(portalCheckbox).fadeOut(300); + $(emailCheckbox).fadeOut(300); + } + } + /** + * this was meant also to color the checkbox label depending on true or false, had no time to complete + * @param toSet the CheckBox instance to check + * @param value just set the value + */ + private void setCheckBoxValue(CheckBox toSet, boolean value) { + toSet.setValue(value); + //TODO next time, no time now + //toSet.getElement().getElementsByTagName("label").getItem(0).setClassName(value ? "labelOn" : "labelOff"); + } - - + public NotificationType getNotificationType() { + return myPreference.getType(); + } + /** + * @return the selected notification channels in the view, null if none were selected + */ + public NotificationChannelType[] getSelectedChannels() { + if (switchButton.getValue()) { + ArrayList toReturn = new ArrayList(); + if (portalCheckbox.getValue()) + toReturn.add(NotificationChannelType.PORTAL); + if (emailCheckbox.getValue()) + toReturn.add(NotificationChannelType.EMAIL); + return toReturn.toArray(new NotificationChannelType[toReturn.size()]); + } + else + return new NotificationChannelType[0]; + } + + public void setPortalPrefValue(boolean value) { + setCheckBoxValue(portalCheckbox, value); + } + public void setEmailPrefValue(boolean value) { + setCheckBoxValue(emailCheckbox, value); + } } diff --git a/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/NotificationPreferenceView.ui.xml b/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/NotificationPreferenceView.ui.xml index 0e475c3..cf979d3 100644 --- a/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/NotificationPreferenceView.ui.xml +++ b/src/main/java/org/gcube/portlets/user/notifications/client/view/templates/NotificationPreferenceView.ui.xml @@ -10,9 +10,9 @@ - - Portal - Email + Portal + Email + diff --git a/src/main/java/org/gcube/portlets/user/notifications/server/NotificationsServiceImpl.java b/src/main/java/org/gcube/portlets/user/notifications/server/NotificationsServiceImpl.java index 0f820e0..b33576e 100644 --- a/src/main/java/org/gcube/portlets/user/notifications/server/NotificationsServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/notifications/server/NotificationsServiceImpl.java @@ -5,6 +5,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; @@ -34,6 +35,8 @@ import com.liferay.portal.model.UserModel; import com.liferay.portal.service.UserLocalServiceUtil; import com.liferay.portal.theme.ThemeDisplay; +import edu.emory.mathcs.backport.java.util.Collections; + /** * The server side implementation of the RPC service. */ @@ -183,19 +186,19 @@ public class NotificationsServiceImpl extends RemoteServiceServlet implements No String typeDesc = descriptions.getProperty(type.toString()); if (category != null) { if (treeMap.containsKey(category)) { - treeMap.get(category).add(new NotificationPreference(type, typeLabel, typeDesc, storePreferences.get(type.toString()))); + treeMap.get(category).add(new NotificationPreference(type, typeLabel, typeDesc, storePreferences.get(type))); } else { ArrayList toAdd = new ArrayList(); - toAdd.add(new NotificationPreference(type, typeLabel, typeDesc, storePreferences.get(type.toString()))); + toAdd.add(new NotificationPreference(type, typeLabel, typeDesc, storePreferences.get(type))); treeMap.put(category, toAdd); } } } } catch (Exception e) { - _log.error("While trying to get getUser Notification Preferences"); + _log.error("While trying to get getUser Notification Preferences for " + userid); e.printStackTrace(); } - _log.debug("Got Notification Preferences from Cassandra cluster, returning to the client for user: " + userid); + _log.debug("Got Notification Preferences, returning to the client for user: " + userid); //need the key in revers order so that workspace appears first LinkedHashMap> toReturn = new LinkedHashMap>(); for (String category : treeMap.descendingKeySet()) { @@ -203,6 +206,7 @@ public class NotificationsServiceImpl extends RemoteServiceServlet implements No for (NotificationPreference pref : treeMap.get(category)) { toAdd.add(pref); } + Collections.sort(toAdd); //sort the labels from the less length to the more length toReturn.put(category, toAdd); } return toReturn; diff --git a/src/main/java/org/gcube/portlets/user/notifications/shared/NotificationPreference.java b/src/main/java/org/gcube/portlets/user/notifications/shared/NotificationPreference.java index 5981bd8..7252a42 100644 --- a/src/main/java/org/gcube/portlets/user/notifications/shared/NotificationPreference.java +++ b/src/main/java/org/gcube/portlets/user/notifications/shared/NotificationPreference.java @@ -11,7 +11,7 @@ import org.gcube.portal.databook.shared.NotificationType; * and the channels selected by the user for this type */ @SuppressWarnings("serial") -public class NotificationPreference implements Serializable { +public class NotificationPreference implements Serializable, Comparable { NotificationType type; String typeLabel; String typeDesc; @@ -73,6 +73,15 @@ public class NotificationPreference implements Serializable { + Arrays.toString(selectedChannels) + "]"; } + + @Override + public int compareTo(NotificationPreference o) { + if (this.typeLabel.length() <= o.getTypeLabel().length()) + return -1; + else + return 1; + } + } diff --git a/src/main/webapp/Notifications.css b/src/main/webapp/Notifications.css index d610d11..3a2fee3 100644 --- a/src/main/webapp/Notifications.css +++ b/src/main/webapp/Notifications.css @@ -25,7 +25,7 @@ a.link:hover { border-bottom-color: #DADADA; border-bottom-style: solid; border-bottom-width: 1px; - padding: 5px 7px 3px; + padding: 15px 7px 3px; } .day-label { @@ -108,3 +108,24 @@ a.link:hover { .floatingLeft { float:left; } + +.floatingRight { + float:right; +} + +.paddingRight { + padding-right: 15px; +} + +.paddingLeft { + padding-left: 15px; +} + +.labelOn { + color: #0088CC; +} + + +.labelOff { + color: #777; +} diff --git a/src/main/webapp/conf/descbytype.properties b/src/main/webapp/conf/descbytype.properties index 5a2d930..56e997d 100644 --- a/src/main/webapp/conf/descbytype.properties +++ b/src/main/webapp/conf/descbytype.properties @@ -1,20 +1,20 @@ -WP_FOLDER_SHARE=sharing of workspace folders with you -WP_FOLDER_ADDEDUSER=someone added users one to one of your workspace shared folder -WP_FOLDER_REMOVEDUSER=someone removed users from one of your workspace shared folder -WP_FOLDER_RENAMED=someone renamed one of your workspace shared folder -WP_ITEM_DELETE=someone deleted an item in one of your workspace shared folder -WP_ITEM_UPDATED=someone updated an item in one of your workspace shared folder -WP_ITEM_RENAMED=someone renamed an item in one of your workspace shared folder -WP_ITEM_NEW=someone added an item in one of your workspace shared folder -OWN_COMMENT=someone replied to your post -COMMENT=someone replied too to a post you replied -MENTION=someone mentioned you in a post -LIKE=someone set favorite your post -MESSAGE=someone sent you a message -DOCUMENT_WORKFLOW_EDIT=a document workflow you created was editeded -DOCUMENT_WORKFLOW_VIEW=a document workflow you created was viewed -DOCUMENT_WORKFLOW_STEP_REQUEST_TASK=someone requested you to perform a task on his document workflow -DOCUMENT_WORKFLOW_FIRST_STEP_REQUEST_INVOLVMENT=someone involved you on his document workflow -DOCUMENT_WORKFLOW_USER_FORWARD_TO_OWNER=a document workflow you created was forwarded to another step -DOCUMENT_WORKFLOW_FORWARD_STEP_COMPLETED_OWNER=a document workflow you created was forwarded to the another step by all the users involved in the step -DOCUMENT_WORKFLOW_STEP_FORWARD_PEER=someone completed his task on a document workflow where you still need to do yours +WP_FOLDER_SHARE=Sharing of workspace folders with you +WP_FOLDER_ADDEDUSER=Someone added users one to one of your workspace shared folder +WP_FOLDER_REMOVEDUSER=Someone removed users from one of your workspace shared folder +WP_FOLDER_RENAMED=Someone renamed one of your workspace shared folder +WP_ITEM_DELETE=Someone deleted an item in one of your workspace shared folder +WP_ITEM_UPDATED=Someone updated an item in one of your workspace shared folder +WP_ITEM_RENAMED=Someone renamed an item in one of your workspace shared folder +WP_ITEM_NEW=Someone added an item in one of your workspace shared folder +OWN_COMMENT=Someone replied to your post +COMMENT=Someone replied too to a post you replied +MENTION=Someone mentioned you in a post +LIKE=Someone set favorite your post +MESSAGE=Someone sent you a message +DOCUMENT_WORKFLOW_EDIT=A document workflow you created was editeded +DOCUMENT_WORKFLOW_VIEW=A document workflow you created was viewed +DOCUMENT_WORKFLOW_STEP_REQUEST_TASK=Someone requested you to perform a task on his document workflow +DOCUMENT_WORKFLOW_FIRST_STEP_REQUEST_INVOLVMENT=Someone involved you on his document workflow +DOCUMENT_WORKFLOW_USER_FORWARD_TO_OWNER=A document workflow you created was forwarded to another step +DOCUMENT_WORKFLOW_FORWARD_STEP_COMPLETED_OWNER=A document workflow you created was forwarded to the another step by all the users involved in the step +DOCUMENT_WORKFLOW_STEP_FORWARD_PEER=Someone completed his task on a document workflow where you still need to do yours diff --git a/src/main/webapp/conf/labelbytype.properties b/src/main/webapp/conf/labelbytype.properties index 55ff0ee..c6bc2db 100644 --- a/src/main/webapp/conf/labelbytype.properties +++ b/src/main/webapp/conf/labelbytype.properties @@ -1,20 +1,20 @@ -WP_FOLDER_SHARE=shared folder -WP_FOLDER_ADDEDUSER=user added to shared folder -WP_FOLDER_REMOVEDUSER=user removed from shared folder -WP_FOLDER_RENAMED=shared folder renamed -WP_ITEM_DELETE=shared item deleted -WP_ITEM_UPDATED=shared item updated -WP_ITEM_RENAMED=shared item renamed -WP_ITEM_NEW=shared item added -OWN_COMMENT=own replies -COMMENT=replies -MENTION=mentions -LIKE=favorites -MESSAGE=messages -DOCUMENT_WORKFLOW_EDIT=edit -DOCUMENT_WORKFLOW_VIEW=view -DOCUMENT_WORKFLOW_STEP_REQUEST_TASK=task request -DOCUMENT_WORKFLOW_FIRST_STEP_REQUEST_INVOLVMENT=involvement request -DOCUMENT_WORKFLOW_USER_FORWARD_TO_OWNER=forward -DOCUMENT_WORKFLOW_FORWARD_STEP_COMPLETED_OWNER=step completed -DOCUMENT_WORKFLOW_STEP_FORWARD_PEER=forward from peer +WP_FOLDER_SHARE=Shared folder +WP_FOLDER_ADDEDUSER=User added to shared folder +WP_FOLDER_REMOVEDUSER=User removed from shared folder +WP_FOLDER_RENAMED=Shared folder renamed +WP_ITEM_DELETE=Shared item deleted +WP_ITEM_UPDATED=Shared item updated +WP_ITEM_RENAMED=Shared item renamed +WP_ITEM_NEW=Shared item added +OWN_COMMENT=Own replies +COMMENT=Replies +MENTION=Mentions +LIKE=Favorites +MESSAGE=Messages +DOCUMENT_WORKFLOW_EDIT=Edit +DOCUMENT_WORKFLOW_VIEW=View +DOCUMENT_WORKFLOW_STEP_REQUEST_TASK=Task request +DOCUMENT_WORKFLOW_FIRST_STEP_REQUEST_INVOLVMENT=Involvement request +DOCUMENT_WORKFLOW_USER_FORWARD_TO_OWNER=Forward +DOCUMENT_WORKFLOW_FORWARD_STEP_COMPLETED_OWNER=Step completed +DOCUMENT_WORKFLOW_STEP_FORWARD_PEER=Forward from peer