Project

General

Profile

1
package eu.dnetlib.client.monitor;
2

    
3
import com.github.gwtbootstrap.client.ui.*;
4
import com.github.gwtbootstrap.client.ui.Button;
5
import com.github.gwtbootstrap.client.ui.ListBox;
6
import com.github.gwtbootstrap.client.ui.constants.AlertType;
7
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
8
import com.github.gwtbootstrap.client.ui.constants.FormType;
9
import com.google.gwt.core.client.GWT;
10
import com.google.gwt.dom.client.Document;
11
import com.google.gwt.dom.client.Style;
12
import com.google.gwt.event.dom.client.ChangeEvent;
13
import com.google.gwt.event.dom.client.ChangeHandler;
14
import com.google.gwt.event.dom.client.ClickEvent;
15
import com.google.gwt.event.dom.client.ClickHandler;
16
import com.google.gwt.i18n.client.DateTimeFormat;
17
import com.google.gwt.user.client.rpc.AsyncCallback;
18
import com.google.gwt.user.client.ui.*;
19
import com.google.gwt.user.client.ui.Label;
20
import com.google.gwt.user.client.ui.TextArea;
21
import eu.dnetlib.client.*;
22
import eu.dnetlib.client.widgets.CKEditor;
23
import eu.dnetlib.client.widgets.FormFieldSet;
24
import eu.dnetlib.goldoa.domain.Help;
25

    
26
/**
27
 * Created by stefania on 4/17/15.
28
 */
29
public class MonitorHelpTextsWidget implements MyWidget {
30

    
31
    private String token = "";
32

    
33
    private FlowPanel monitorHelpTextsPagePanel = new FlowPanel();
34
    private Label monitorHelpTextsTitleLabel = new Label();
35
    private Label monitorHelpTextsInfoLabel = new Label();
36

    
37
    private Alert successLabel = new Alert();
38
    private Alert errorLabel = new Alert();
39
    private Alert warningLabel = new Alert();
40

    
41
    private FlowPanel helpTextsPanel = new FlowPanel();
42

    
43
    private Form helpTextsForm = new Form();
44
    private ListBox helpTextsSelection = new ListBox();
45
    private TextArea textArea = new TextArea();
46
    private CKEditor editor;
47

    
48
    private Button submitChanges = new Button();
49
    private Button preview = new Button();
50

    
51
    private SidebarPanel helpPanel = new SidebarPanel("Help");
52
    private SidebarPanel previewPanel = new SidebarPanel("Preview");
53

    
54
    private DateTimeFormat dtf = DateTimeFormat.getFormat("yyyy/MM/dd");
55
    private DataServiceAsync dataService = GWT.create(DataService.class);
56

    
57
    private GoldOAConstants goldOAConstants = GWT.create(GoldOAConstants.class);
58

    
59
    public MonitorHelpTextsWidget() {
60

    
61
        monitorHelpTextsPagePanel.addStyleName("content");
62

    
63
        monitorHelpTextsTitleLabel.setText("Monitor Help Texts");
64
        monitorHelpTextsTitleLabel.addStyleName("contentTitleLabel");
65

    
66
        monitorHelpTextsInfoLabel.setText("Monitor and change the help texts that appear on the sidebar of each page");
67
        monitorHelpTextsInfoLabel.addStyleName("contentInfoLabel");
68

    
69
        errorLabel.addStyleName("alertLabel");
70
        errorLabel.setType(AlertType.ERROR);
71
        errorLabel.setClose(false);
72
        errorLabel.setVisible(false);
73

    
74
        warningLabel.addStyleName("alertLabel");
75
        warningLabel.setType(AlertType.WARNING);
76
        warningLabel.setClose(false);
77
        warningLabel.setVisible(false);
78

    
79
        successLabel.addStyleName("alertLabel");
80
        successLabel.setType(AlertType.SUCCESS);
81
        successLabel.setClose(false);
82
        successLabel.setVisible(false);
83

    
84
        monitorHelpTextsPagePanel.add(monitorHelpTextsTitleLabel);
85
        monitorHelpTextsPagePanel.add(monitorHelpTextsInfoLabel);
86
        monitorHelpTextsPagePanel.add(successLabel);
87
        monitorHelpTextsPagePanel.add(errorLabel);
88
        monitorHelpTextsPagePanel.add(warningLabel);
89
        monitorHelpTextsPagePanel.add(helpTextsPanel);
90

    
91
        helpTextsForm.setType(FormType.HORIZONTAL);
92

    
93
        helpTextsSelection.addItem("None selected", "none");
94
        helpTextsSelection.addItem("User Registration", "register");
95
        helpTextsSelection.addItem("My Account", "myAccount");
96
        helpTextsSelection.addItem("Edit Account Info", "editAccountInfo");
97
        helpTextsSelection.addItem("Support", "support");
98
        helpTextsSelection.addItem("Statistics", "statistics");
99
        helpTextsSelection.addItem("Eligible Projects", "eligibleProjects");
100
        helpTextsSelection.addItem("Requests", "requests");
101
        helpTextsSelection.addItem("New Funding Request - Researcher", "newFundingRequest_researcher");
102
        helpTextsSelection.addItem("New Funding Request - Project", "newFundingRequest_project");
103
        helpTextsSelection.addItem("New Funding Request - Publication", "newFundingRequest_publication");
104
        helpTextsSelection.addItem("New Funding Request - Accounting", "newFundingRequest_accounting");
105
        helpTextsSelection.addItem("New Funding Request - Summary", "newFundingRequest_summary");
106
        helpTextsSelection.addItem("New Budget Request", "newBudgetRequest");
107
        helpTextsSelection.addItem("Existing Funding Request", "existingFundingRequests");
108
        helpTextsSelection.addItem("Existing Budget Request", "existingBudgetRequests");
109
        helpTextsSelection.addItem("Monitor", "monitor");
110
        helpTextsSelection.addItem("Monitor Funding Requests", "monitorFundingRequests");
111
        helpTextsSelection.addItem("Monitor Budgets", "monitorBudgets");
112
        helpTextsSelection.addItem("Monitor Users", "monitorUsers");
113
        helpTextsSelection.addItem("Monitor User Roles", "monitorUserRoles");
114
        helpTextsSelection.addItem("Monitor Help Texts", "monitorHelpTexts");
115
        helpTextsSelection.addItem("Accounting Monitor", "accountingMonitor");
116
        helpTextsSelection.addItem("Accounting Monitor Funding Requests", "accountingMonitorFundingRequests");
117
        helpTextsSelection.addItem("Accounting Monitor Budgets", "accountingMonitorBudgets");
118

    
119
        helpTextsSelection.addChangeHandler(new ChangeHandler() {
120
            @Override
121
            public void onChange(ChangeEvent changeEvent) {
122

    
123
                successLabel.setVisible(false);
124
                errorLabel.setVisible(false);
125
                warningLabel.setVisible(false);
126

    
127
                if(!helpTextsSelection.getValue().equals("none")) {
128
                    dataService.getHelpById(helpTextsSelection.getValue(), new AsyncCallback<Help>() {
129

    
130
                        @Override
131
                        public void onFailure(Throwable throwable) {
132

    
133
                            errorLabel.setText(goldOAConstants.errorRetrievingHelpText());
134
                            errorLabel.setVisible(true);
135
                        }
136

    
137
                        @Override
138
                        public void onSuccess(Help help) {
139

    
140
                            if (help != null)
141
                                editor.setValue(help.getText());
142
                            else
143
                                editor.setValue("");
144

    
145
                        }
146
                    });
147
                } else {
148
                    editor.setValue("");
149
                }
150
            }
151
        });
152
        helpTextsForm.add(new FormFieldSet("Select help item", helpTextsSelection));
153

    
154
        textArea.getElement().setId("editor");
155
        helpTextsForm.add(new FormFieldSet("Edit help text", textArea));
156

    
157
        preview.setText("Preview");
158
        preview.setType(ButtonType.DEFAULT);
159
        preview.addStyleName("inlineBlock");
160
        preview.addClickHandler(new ClickHandler() {
161

    
162
            @Override
163
            public void onClick(ClickEvent clickEvent) {
164

    
165
                if(editor!=null) {
166

    
167
                    HTML html = new HTML();
168
                    html.setHTML(editor.getValue());
169

    
170
                    previewPanel.clearContent();
171
                    previewPanel.addContent(html);
172
                }
173
            }
174
        });
175

    
176
        submitChanges.setText("Submit Changes");
177
        submitChanges.setType(ButtonType.PRIMARY);
178
        submitChanges.addStyleName("inlineBlock");
179
        submitChanges.addClickHandler(new ClickHandler() {
180

    
181
            @Override
182
            public void onClick(ClickEvent clickEvent) {
183

    
184
                errorLabel.setVisible(false);
185
                warningLabel.setVisible(false);
186
                successLabel.setVisible(false);
187

    
188
                if(!helpTextsSelection.getValue().equals("none")) {
189

    
190
                    Help help = new Help();
191
                    help.setId(helpTextsSelection.getValue());
192
                    help.setText(editor.getValue());
193

    
194
                    dataService.saveHelp(help, new AsyncCallback<Help>() {
195

    
196
                        @Override
197
                        public void onFailure(Throwable throwable) {
198
                            errorLabel.setText(goldOAConstants.errorSavingHelpText());
199
                            errorLabel.setVisible(true);
200
                        }
201

    
202
                        @Override
203
                        public void onSuccess(Help help) {
204
                            successLabel.setText(goldOAConstants.successfullySavingHelpText());
205
                            successLabel.setVisible(true);
206
                            if(help.getId().equals("monitorHelpTexts"))
207
                                MyWidgetHelper.loadHelp(helpPanel, token.split("\\.")[0]);
208
                        }
209
                    });
210
                } else {
211
                    warningLabel.setText(goldOAConstants.warningNoHelpItemSelected());
212
                    warningLabel.setVisible(true);
213
                }
214
            }
215
        });
216

    
217
        helpTextsForm.add(new FormFieldSet(null, preview, submitChanges));
218

    
219
        helpTextsPanel.add(helpTextsForm);
220
    }
221

    
222
    @Override
223
    public void clear() {
224

    
225
        errorLabel.setVisible(false);
226
        warningLabel.setVisible(false);
227
        successLabel.setVisible(false);
228

    
229
        helpPanel.clearContent();
230
        previewPanel.clearContent();
231

    
232
        if(editor!=null) {
233
            editor.destroy();
234
            editor = null;
235
        }
236

    
237
        textArea.setValue("");
238
        helpTextsSelection.setSelectedValue("none");
239
    }
240

    
241
    @Override
242
    public void reload() {
243

    
244
        MyWidgetHelper.showSidebar();
245

    
246
        MyWidgetHelper.loadHelp(helpPanel, token.split("\\.")[0]);
247

    
248
        RootPanel.get("sidebar").add(previewPanel.asWidget());
249
    }
250

    
251
    @Override
252
    public void setToken(String token) {
253
        this.token = token;
254
    }
255

    
256
    @Override
257
    public void afterAdditionToRootPanel() {
258
        loadHelpTexts();
259
    }
260

    
261
    @Override
262
    public Widget asWidget() {
263
        return monitorHelpTextsPagePanel;
264
    }
265

    
266
    private void loadHelpTexts() {
267

    
268
        if(editor==null) {
269
            editor = new CKEditor(textArea.getElement().getId());
270
            editor.setUIColor("#dfd9d2");
271
        }
272
    }
273
}
(4-4/8)