You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by ma...@apache.org on 2016/12/30 13:05:40 UTC
syncope git commit: [SYNCOPE-773] allow edit and view in job
dashboard widget
Repository: syncope
Updated Branches:
refs/heads/2_0_X 02722801b -> 9ed1a00c2
[SYNCOPE-773] allow edit and view in job dashboard widget
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/9ed1a00c
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/9ed1a00c
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/9ed1a00c
Branch: refs/heads/2_0_X
Commit: 9ed1a00c27440bf1eddfbef559088afdc8bfec4a
Parents: 0272280
Author: Matteo Di Carlo <ma...@tirasa.net>
Authored: Fri Dec 23 17:09:15 2016 +0100
Committer: Matteo Di Carlo <ma...@tirasa.net>
Committed: Fri Dec 30 13:02:42 2016 +0100
----------------------------------------------------------------------
.../client/console/panels/ExecMessageModal.java | 34 ++++++
.../console/tasks/ExecutionsDirectoryPanel.java | 2 +-
.../client/console/widgets/ActionColumn.java | 27 +++++
.../console/widgets/ActionLinksPanel.java | 27 +++++
.../client/console/widgets/ExecActionPanel.java | 41 +++++++
.../client/console/widgets/JobActionPanel.java | 103 +++++++++++++++++-
.../client/console/widgets/JobWidget.java | 107 ++++++++++++++++++-
.../client/console/panels/ExecMessageModal.html | 25 +++++
.../client/console/widgets/JobActionPanel.html | 14 +--
.../JobWidget$AvailableJobsPanel.properties | 21 ++++
.../JobWidget$AvailableJobsPanel_it.properties | 21 ++++
...obWidget$AvailableJobsPanel_pt_BR.properties | 21 ++++
.../JobWidget$AvailableJobsPanel_ru.properties | 21 ++++
.../client/console/widgets/JobWidget.html | 2 +
.../client/console/widgets/JobWidget.properties | 1 +
.../console/widgets/JobWidget_it.properties | 1 +
.../console/widgets/JobWidget_pt_BR.properties | 1 +
.../console/widgets/JobWidget_ru.properties | 19 ++--
18 files changed, 461 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/java/org/apache/syncope/client/console/panels/ExecMessageModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ExecMessageModal.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ExecMessageModal.java
new file mode 100644
index 0000000..23f411b
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ExecMessageModal.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.panels;
+
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+
+public class ExecMessageModal extends Panel implements ModalPanel {
+
+ private static final long serialVersionUID = 1L;
+
+ public ExecMessageModal(final PageReference pageRef, final String executionMessage) {
+ super(BaseModal.CONTENT_ID);
+ add(new Label("executionMessage", executionMessage).setOutputMarkupId(true));
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java
index 1e39479..4daa2a7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java
@@ -88,7 +88,7 @@ public abstract class ExecutionsDirectoryPanel
this.key = key;
initResultTable();
}
-
+
@Override
protected void resultTableCustomChanges(final AjaxDataTablePanel.Builder<ExecTO, String> resultTableBuilder) {
resultTableBuilder.setMultiLevelPanel(baseModal, multiLevelPanelRef);
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/java/org/apache/syncope/client/console/widgets/ActionColumn.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/ActionColumn.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/ActionColumn.java
new file mode 100644
index 0000000..ddef2dd
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/ActionColumn.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.widgets;
+
+/**
+ *
+ * @author matt3o
+ */
+public class ActionColumn {
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/java/org/apache/syncope/client/console/widgets/ActionLinksPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/ActionLinksPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/ActionLinksPanel.java
new file mode 100644
index 0000000..cb2ea92
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/ActionLinksPanel.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.widgets;
+
+/**
+ *
+ * @author matt3o
+ */
+class ActionLinksPanel<T> {
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/java/org/apache/syncope/client/console/widgets/ExecActionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/ExecActionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/ExecActionPanel.java
new file mode 100644
index 0000000..f66bd6b
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/ExecActionPanel.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.widgets;
+
+import static de.agilecoders.wicket.core.util.CssClassNames.Grid.container;
+
+import java.io.Serializable;
+import org.apache.syncope.client.console.panels.ExecMessageModal;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.common.lib.to.ExecTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.StringResourceModel;
+
+public class ExecActionPanel {
+
+ public ExecActionPanel(String stringResourceModel,final JobWidget widget,
+ final BaseModal<Serializable> jobModal, final PageReference pageRef){
+
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobActionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobActionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobActionPanel.java
index bdaf0dd..7f2c43a 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobActionPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobActionPanel.java
@@ -23,28 +23,106 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.reports.ReportWizardBuilder;
+import org.apache.syncope.client.console.rest.ReportRestClient;
+import org.apache.syncope.client.console.rest.TaskRestClient;
+import org.apache.syncope.client.console.tasks.SchedTaskWizardBuilder;
import org.apache.syncope.client.console.wicket.ajax.markup.html.IndicatorAjaxLink;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
+import org.apache.syncope.client.console.wizards.WizardMgtPanel;
import org.apache.syncope.common.lib.to.JobTO;
+import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.syncope.common.lib.to.SchedTaskTO;
import org.apache.syncope.common.lib.types.JobAction;
+import org.apache.syncope.common.lib.types.JobType;
import org.apache.syncope.common.rest.api.service.NotificationService;
import org.apache.syncope.common.rest.api.service.ReportService;
import org.apache.syncope.common.rest.api.service.TaskService;
+import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.event.IEvent;
import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.StringResourceModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class JobActionPanel extends Panel {
+public class JobActionPanel extends WizardMgtPanel<Serializable> {
private static final long serialVersionUID = 6645135178773151224L;
private static final Logger LOG = LoggerFactory.getLogger(JobActionPanel.class);
- public JobActionPanel(final String id, final JobTO jobTO, final JobWidget widget) {
- super(id);
+ private final BaseModal<Serializable> jobModal;
+
+ public JobActionPanel(final String id, final JobTO jobTO, final JobWidget widget,
+ final BaseModal<Serializable> jobModal, final PageReference pageRef) {
+ super(id, true);
+ this.jobModal = jobModal;
setOutputMarkupId(true);
+ setWindowClosedReloadCallback(modal);
+
+ IndicatorAjaxLink<Void> link = new IndicatorAjaxLink<Void>("edit") {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+
+ if (null != jobTO.getType()) {
+ switch (jobTO.getType()) {
+
+ case NOTIFICATION:
+ break;
+
+ case REPORT:
+
+ final ReportTO reportTO = new ReportRestClient().read(jobTO.getRefKey());
+
+ final ReportWizardBuilder rwb = new ReportWizardBuilder(reportTO, pageRef);
+ rwb.setEventSink(JobActionPanel.this);
+
+ target.add(jobModal.setContent(rwb.build(BaseModal.CONTENT_ID, AjaxWizard.Mode.EDIT)));
+
+ jobModal.header(new StringResourceModel(
+ "any.edit",
+ this,
+ new Model<>(reportTO)));
+
+ jobModal.show(true);
+
+ break;
+
+ case TASK:
+
+ final SchedTaskTO schedTaskTO = new TaskRestClient().
+ readSchedTask(SchedTaskTO.class, jobTO.getRefKey());
+
+ final SchedTaskWizardBuilder swb = new SchedTaskWizardBuilder(schedTaskTO, pageRef);
+ swb.setEventSink(JobActionPanel.this);
+
+ target.add(jobModal.setContent(swb.build(BaseModal.CONTENT_ID, AjaxWizard.Mode.EDIT)));
+
+ jobModal.header(new StringResourceModel(
+ "any.edit",
+ this,
+ new Model<>(schedTaskTO)));
+
+ jobModal.show(true);
+
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+ };
+ link.setOutputMarkupPlaceholderTag(true);
+ link.setVisible(!(null != jobTO.getType() && JobType.NOTIFICATION.equals(jobTO.getType())));
+ addInnerObject(link);
Fragment controls;
if (jobTO.isRunning()) {
@@ -122,7 +200,7 @@ public class JobActionPanel extends Panel {
}
});
}
- add(controls);
+ addInnerObject(controls);
}
public static class JobActionPayload implements Serializable {
@@ -140,4 +218,19 @@ public class JobActionPanel extends Panel {
}
}
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public void onEvent(final IEvent<?> event) {
+ if (event.getPayload() instanceof AjaxWizard.NewItemEvent) {
+ final AjaxRequestTarget target = AjaxWizard.NewItemEvent.class.cast(event.getPayload()).getTarget();
+
+ if (event.getPayload() instanceof AjaxWizard.NewItemCancelEvent
+ || event.getPayload() instanceof AjaxWizard.NewItemFinishEvent) {
+ jobModal.close(target);
+ }
+ }
+
+ super.onEvent(event);
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
index 410d576..d70c449 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
@@ -30,10 +30,14 @@ import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.commons.DirectoryDataProvider;
import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
import org.apache.syncope.client.console.panels.DirectoryPanel;
+import org.apache.syncope.client.console.panels.ExecMessageModal;
import org.apache.syncope.client.console.rest.BaseRestClient;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BooleanPropertyColumn;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
import org.apache.syncope.common.lib.to.ExecTO;
import org.apache.syncope.common.lib.to.JobTO;
@@ -44,8 +48,10 @@ import org.apache.syncope.common.rest.api.service.TaskService;
import org.apache.wicket.Application;
import org.apache.wicket.PageReference;
import org.apache.wicket.ThreadContext;
+import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
import org.apache.wicket.event.IEvent;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
@@ -60,6 +66,7 @@ import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.protocol.ws.WebSocketSettings;
import org.apache.wicket.protocol.ws.api.WebSocketPushBroadcaster;
import org.apache.wicket.protocol.ws.api.event.WebSocketPushPayload;
@@ -77,6 +84,28 @@ public class JobWidget extends BaseWidget {
private static final int ROWS = 5;
+ private final BaseModal<Serializable> modal = new BaseModal<Serializable>("modal") {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onConfigure() {
+ super.onConfigure();
+ setFooterVisible(false);
+ }
+ };
+
+ private final BaseModal<Serializable> detailModal = new BaseModal<Serializable>("detailModal") {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onConfigure() {
+ super.onConfigure();
+ setFooterVisible(true);
+ }
+ };
+
private static List<JobTO> getAvailable(final SyncopeConsoleSession session) {
List<JobTO> available = new ArrayList<>();
@@ -120,6 +149,27 @@ public class JobWidget extends BaseWidget {
public JobWidget(final String id, final PageReference pageRef) {
super(id);
setOutputMarkupId(true);
+ add(modal);
+ modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+
+ private static final long serialVersionUID = 8804221891699487139L;
+
+ @Override
+ public void onClose(final AjaxRequestTarget target) {
+ modal.show(false);
+ }
+ });
+
+ add(detailModal);
+ detailModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClose(final AjaxRequestTarget target) {
+ detailModal.show(false);
+ }
+ });
available = getAvailable(SyncopeConsoleSession.get());
recent = getRecent(SyncopeConsoleSession.get());
@@ -190,8 +240,7 @@ public class JobWidget extends BaseWidget {
}
}
- private class AvailableJobsPanel extends DirectoryPanel<
- JobTO, JobTO, AvailableJobsProvider, BaseRestClient> {
+ private class AvailableJobsPanel extends DirectoryPanel<JobTO, JobTO, AvailableJobsProvider, BaseRestClient> {
private static final long serialVersionUID = -8214546246301342868L;
@@ -242,11 +291,14 @@ public class JobWidget extends BaseWidget {
final IModel<JobTO> rowModel) {
JobTO jobTO = rowModel.getObject();
- JobActionPanel panel = new JobActionPanel(componentId, jobTO, JobWidget.this);
+ JobActionPanel panel = new JobActionPanel(componentId, jobTO, JobWidget.this, JobWidget.this.modal,
+ pageRef);
MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.ENABLE,
- String.format("%s,%s",
+ String.format("%s,%s%s,%s",
StandardEntitlement.TASK_EXECUTE,
- StandardEntitlement.REPORT_EXECUTE));
+ StandardEntitlement.REPORT_EXECUTE,
+ StandardEntitlement.TASK_UPDATE,
+ StandardEntitlement.REPORT_UPDATE));
cellItem.add(panel);
}
@@ -342,6 +394,51 @@ public class JobWidget extends BaseWidget {
columns.add(new PropertyColumn<ExecTO, String>(new ResourceModel("status"), "status", "status"));
+ columns.add(new ActionColumn<ExecTO, String>(new ResourceModel("actions")) {
+
+ private static final long serialVersionUID = -3503023501954863131L;
+
+ @Override
+ public ActionLinksPanel<ExecTO> getActions(final String componentId, final IModel<ExecTO> model) {
+
+ final ActionLinksPanel.Builder<ExecTO> panel = ActionLinksPanel.<ExecTO>builder().
+ add(new ActionLink<ExecTO>() {
+
+ private static final long serialVersionUID= -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ExecTO ignore) {
+
+ StringResourceModel stringResourceModel =
+ new StringResourceModel("execution.view", JobWidget.this, model);
+ detailModal.header(stringResourceModel);
+ detailModal.
+ setContent(new ExecMessageModal(pageRef, model.getObject().getMessage()));
+ detailModal.show(true);
+ target.add(detailModal);
+ }
+ }, ActionLink.ActionType.VIEW, StandardEntitlement.TASK_READ);
+ return panel.build(componentId, model.getObject());
+ }
+
+ @Override
+ public ActionLinksPanel<Serializable> getHeader(final String componentId) {
+ final ActionLinksPanel.Builder<Serializable> panel = ActionLinksPanel.builder();
+
+ return panel.add(new ActionLink<Serializable>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
+ if (target != null) {
+ target.add(container);
+ }
+ }
+ }, ActionLink.ActionType.RELOAD, StandardEntitlement.TASK_LIST).build(componentId);
+ }
+ });
+
return columns;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ExecMessageModal.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ExecMessageModal.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ExecMessageModal.html
new file mode 100644
index 0000000..5158d82
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ExecMessageModal.html
@@ -0,0 +1,25 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <pre wicket:id="executionMessage">
+ [executionMessage]
+ </pre>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobActionPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobActionPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobActionPanel.html
index 51dedbd..6be7c2b 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobActionPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobActionPanel.html
@@ -17,17 +17,17 @@ specific language governing permissions and limitations
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div wicket:id="controls" style="text-align: right;"></div>
-
+ <wicket:extend>
+ <div style="float: left; margin-left: 10px" wicket:id="controls"></div>
<wicket:fragment wicket:id="runningFragment">
- <i class="fa fa-refresh fa-spin"></i>
+ <i id="actionLink" class="fa fa-refresh fa-spin"></i>
<a href="#" wicket:id="stop" class="fa fa-stop-circle"></a>
</wicket:fragment>
-
<wicket:fragment wicket:id="notRunningFragment">
<a href="#" wicket:id="start" class="fa fa-play-circle"></a>
</wicket:fragment>
- </wicket:panel>
-</html>
\ No newline at end of file
+ <!--<div wicket:id="modal"/>-->
+ <a href="#" wicket:id="edit" ><i id="actionLink" class="glyphicon glyphicon-pencil" alt="edit icon" title="Edit"></i></a>
+ </wicket:extend>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel.properties
new file mode 100644
index 0000000..8e33220
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+any.edit=Edit ${name}
+any.new=New
+any.finish=Submit
+any.cancel=Cancel
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_it.properties
new file mode 100644
index 0000000..c719734
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_it.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+any.edit=Modifica ${name}
+any.new=Nuovo
+any.finish=Conferma
+any.cancel=Annulla
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_pt_BR.properties
new file mode 100644
index 0000000..8e33220
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_pt_BR.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+any.edit=Edit ${name}
+any.new=New
+any.finish=Submit
+any.cancel=Cancel
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_ru.properties
new file mode 100644
index 0000000..8e33220
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget$AvailableJobsPanel_ru.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+any.edit=Edit ${name}
+any.new=New
+any.finish=Submit
+any.cancel=Cancel
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget.html b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget.html
index fdf5373..2aa16c3 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget.html
@@ -29,5 +29,7 @@ under the License.
<div class="box-body" wicket:id="tabbedPanel"/>
</div>
</div>
+ <div wicket:id="modal"/>
+ <div wicket:id="detailModal"/>
</wicket:panel>
</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget.properties
index 273253a..eb9f6d3 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget.properties
@@ -23,3 +23,4 @@ end=End
available=Available
recent=Recent
jobs=Jobs
+execution.view=Result status of execution '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_it.properties
index 19a26b9..e898e38 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_it.properties
@@ -23,3 +23,4 @@ end=Fine
available=Disponibili
recent=Recenti
jobs=Job
+execution.view=Stato dell'esecuzione'${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_pt_BR.properties
index e300f11..109f3df 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_pt_BR.properties
@@ -23,3 +23,4 @@ end=Final
available=Dispon\u00edvel
recent=Recente
jobs=Job
+execution.view=Status do resultado da execu\u00e7\u00e3o '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/9ed1a00c/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_ru.properties
index 4c6d274..e2b39d5 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/JobWidget_ru.properties
@@ -15,21 +15,22 @@
# specific language governing permissions and limitations
# under the License.
#
-# refDesc=\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435
+# refDesc=\u00d0\u009d\u00d0\u00b0\u00d0\u00b7\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
refDesc=\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435
-# running=\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f
+# running=\u00d0\u0092\u00d1\u008b\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d0\u00bd\u00d1\u008f\u00d0\u00b5\u00d1\u0082\u00d1\u0081\u00d1\u008f
running=\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f
-# scheduled=\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e
+# scheduled=\u00d0\u0097\u00d0\u00b0\u00d0\u00bf\u00d0\u00bb\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u0080\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00be
scheduled=\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e
-# start=\u041d\u0430\u0447\u0430\u043b\u043e
+# start=\u00d0\u009d\u00d0\u00b0\u00d1\u0087\u00d0\u00b0\u00d0\u00bb\u00d0\u00be
start=\u041d\u0430\u0447\u0430\u043b\u043e
-# message=\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435
+# message=\u00d0\u00a1\u00d0\u00be\u00d0\u00be\u00d0\u00b1\u00d1\u0089\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
message=\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435
-# end=\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435
+# end=\u00d0\u009e\u00d0\u00ba\u00d0\u00be\u00d0\u00bd\u00d1\u0087\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
end=\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435
-# available=\u0412\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438
+# available=\u00d0\u0092\u00d1\u0081\u00d0\u00b5 \u00d0\u00b7\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b8
available=\u0412\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438
-# recent=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435
+# recent=\u00d0\u009f\u00d0\u00be\u00d1\u0081\u00d0\u00bb\u00d0\u00b5\u00d0\u00b4\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5 \u00d0\u00b2\u00d1\u008b\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d0\u00bd\u00d0\u00b5\u00d0\u00bd\u00d0\u00bd\u00d1\u008b\u00d0\u00b5
recent=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435
-# jobs=\u0417\u0430\u0434\u0430\u0447\u0438
+# jobs=\u00d0\u0097\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b8
jobs=\u0417\u0430\u0434\u0430\u0447\u0438
+execution.view=\u0421\u0442\u0430\u0442\u0443\u0441 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f '${key}'