You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2017/05/09 16:48:41 UTC
syncope git commit: [SYNCOPE-1079] fixes missing action toggle panel
Repository: syncope
Updated Branches:
refs/heads/2_0_X 89a600a61 -> 84822259a
[SYNCOPE-1079] fixes missing action toggle panel
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/84822259
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/84822259
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/84822259
Branch: refs/heads/2_0_X
Commit: 84822259af4156da5a57e70d0b5ab5abb3b652df
Parents: 89a600a
Author: fmartelli <fa...@gmail.com>
Authored: Tue May 9 18:48:20 2017 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Tue May 9 18:48:20 2017 +0200
----------------------------------------------------------------------
.../client/console/panels/DirectoryPanel.java | 6 +-
.../client/console/panels/TogglePanel.java | 4 +-
.../html/form/ActionLinksTogglePanel.java | 4 +
.../client/console/widgets/JobActionPanel.java | 141 ----------------
.../client/console/widgets/JobWidget.java | 160 ++++++++++++++++++-
.../client/console/widgets/JobActionPanel.html | 3 -
.../client/console/widgets/JobWidget.html | 1 +
7 files changed, 169 insertions(+), 150 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/84822259/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
index ec92a2e..e066088 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
@@ -105,7 +105,7 @@ public abstract class DirectoryPanel<
protected final BaseModal<W> displayAttributeModal = new BaseModal<>("outer");
- private final ActionLinksTogglePanel<T> actionTogglePanel;
+ private ActionLinksTogglePanel<T> actionTogglePanel;
/**
* Create simple unfiltered search result panel.
@@ -354,6 +354,10 @@ public abstract class DirectoryPanel<
return actionTogglePanel;
}
+ protected void setTogglePanel(final ActionLinksTogglePanel<T> actionTogglePanel) {
+ this.actionTogglePanel = actionTogglePanel;
+ }
+
public static class EventDataWrapper {
private AjaxRequestTarget target;
http://git-wip-us.apache.org/repos/asf/syncope/blob/84822259/client/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
index 436d332..17573b6 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
@@ -114,7 +114,9 @@ public abstract class TogglePanel<T extends Serializable> extends WizardMgtPanel
}
protected void setHeader(final AjaxRequestTarget target, final String header) {
- this.header.setDefaultModelObject(header.length() >= 40 ? (header.substring(0, 30) + " ... ") : header);
+ this.header.setDefaultModelObject(header == null
+ ? StringUtils.EMPTY
+ : header.length() >= 40 ? (header.substring(0, 30) + " ... ") : header);
target.add(this.header);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/84822259/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
index 62b9de6..c387c32 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
@@ -36,6 +36,7 @@ import org.apache.syncope.common.lib.to.SecurityQuestionTO;
import org.apache.syncope.common.lib.policy.AbstractPolicyTO;
import org.apache.syncope.common.lib.to.AccessTokenTO;
import org.apache.syncope.common.lib.to.ExecTO;
+import org.apache.syncope.common.lib.to.JobTO;
import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -98,6 +99,9 @@ public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel<
header = ((PolicyRuleWrapper) modelObject).getName();
} else if (modelObject instanceof ReportletWrapper) {
header = ((ReportletWrapper) modelObject).getName();
+ } else if (modelObject instanceof JobTO) {
+ header = ((JobTO) modelObject).getRefKey() == null
+ ? ((JobTO) modelObject).getRefDesc() : ((JobTO) modelObject).getRefKey();
} else {
header = new ResourceModel("actions", StringUtils.EMPTY).getObject();
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/84822259/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 79e7997..82665f8 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
@@ -18,36 +18,22 @@
*/
package org.apache.syncope.client.console.widgets;
-import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
import java.io.Serializable;
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.reports.ReportletDirectoryPanel;
import org.apache.syncope.client.console.rest.NotificationRestClient;
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.lib.types.StandardEntitlement;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.event.IEvent;
import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.StringResourceModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,10 +43,6 @@ public class JobActionPanel extends WizardMgtPanel<Serializable> {
private static final Logger LOG = LoggerFactory.getLogger(JobActionPanel.class);
- private final BaseModal<Serializable> jobModal;
-
- private final BaseModal<ReportTO> reportModal;
-
private final NotificationRestClient notificationRestClient = new NotificationRestClient();
private final ReportRestClient reportRestClient = new ReportRestClient();
@@ -71,117 +53,9 @@ public class JobActionPanel extends WizardMgtPanel<Serializable> {
final String id,
final JobTO jobTO,
final JobWidget widget,
- final BaseModal<Serializable> jobModal,
- final BaseModal<ReportTO> reportModal,
final PageReference pageRef) {
super(id, true);
- this.jobModal = jobModal;
- this.reportModal = reportModal;
setOutputMarkupId(true);
- setWindowClosedReloadCallback(jobModal);
- jobModal.size(Modal.Size.Large);
- setWindowClosedReloadCallback(reportModal);
- this.reportModal.size(Modal.Size.Large);
-
- IndicatorAjaxLink<Void> link = new IndicatorAjaxLink<Void>("edit") {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- public void onClick(final AjaxRequestTarget target) {
- switch (jobTO.getType()) {
- case NOTIFICATION:
- break;
-
- case REPORT:
- ReportTO reportTO = new ReportRestClient().read(jobTO.getRefKey());
-
- 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:
- SchedTaskTO schedTaskTO = new TaskRestClient().
- readSchedTask(SchedTaskTO.class, jobTO.getRefKey());
-
- SchedTaskWizardBuilder<SchedTaskTO> 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);
-
- IndicatorAjaxLink<Void> composeLink;
- composeLink =
- new IndicatorAjaxLink<Void>("compose") {
-
- 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());
-
- target.add(JobActionPanel.this.reportModal.setContent(
- new ReportletDirectoryPanel(reportModal, jobTO.getRefKey(), pageRef)));
-
- MetaDataRoleAuthorizationStrategy.authorize(
- reportModal.getForm(),
- ENABLE, StandardEntitlement.REPORT_UPDATE);
-
- reportModal.header(new StringResourceModel(
- "reportlet.conf", this, new Model<>(reportTO)
- ));
-
- reportModal.show(true);
-
- break;
-
- case TASK:
- break;
-
- default:
- break;
- }
- }
- }
- };
- composeLink.setOutputMarkupPlaceholderTag(true);
- composeLink.setVisible(!(null != jobTO.getType() && (JobType.TASK.equals(jobTO.getType())
- || JobType.NOTIFICATION.equals(jobTO.getType()))));
- addInnerObject(composeLink);
Fragment controls;
if (jobTO.isRunning()) {
@@ -271,19 +145,4 @@ public class JobActionPanel extends WizardMgtPanel<Serializable> {
}
}
-
- @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/84822259/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 7eaac21..aadd49c 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
@@ -18,6 +18,8 @@
*/
package org.apache.syncope.client.console.widgets;
+import static org.apache.wicket.Component.ENABLE;
+
import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
import java.io.Serializable;
@@ -32,20 +34,28 @@ 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.reports.ReportWizardBuilder;
+import org.apache.syncope.client.console.reports.ReportletDirectoryPanel;
import org.apache.syncope.client.console.rest.BaseRestClient;
import org.apache.syncope.client.console.rest.NotificationRestClient;
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.IndicatorAjaxTimerBehavior;
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.ActionLink.ActionType;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
import org.apache.syncope.common.lib.to.ExecTO;
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.JobType;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -76,6 +86,8 @@ public class JobWidget extends BaseWidget {
private static final int ROWS = 5;
+ private final ActionLinksTogglePanel<JobTO> actionTogglePanel;
+
private final BaseModal<Serializable> modal = new BaseModal<Serializable>("modal") {
private static final long serialVersionUID = 389935548143327858L;
@@ -105,7 +117,7 @@ public class JobWidget extends BaseWidget {
@Override
protected void onConfigure() {
super.onConfigure();
- setFooterVisible(true);
+ setFooterVisible(false);
}
};
@@ -197,6 +209,9 @@ public class JobWidget extends BaseWidget {
add(container);
container.add(new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList(pageRef)));
+
+ actionTogglePanel = new ActionLinksTogglePanel<>("actionTogglePanel", pageRef);
+ add(actionTogglePanel);
}
private List<JobTO> getUpdatedAvailable() {
@@ -275,6 +290,10 @@ public class JobWidget extends BaseWidget {
private static final long serialVersionUID = -8214546246301342868L;
+ private final BaseModal<ReportTO> reportModal;
+
+ private final BaseModal<Serializable> jobModal;
+
AvailableJobsPanel(final String id, final PageReference pageRef) {
super(id, new Builder<JobTO, JobTO, BaseRestClient>(null, pageRef) {
@@ -286,6 +305,14 @@ public class JobWidget extends BaseWidget {
}
}.disableCheckBoxes().hidePaginator());
+ super.setTogglePanel(actionTogglePanel);
+
+ this.reportModal = JobWidget.this.reportModal;
+ setWindowClosedReloadCallback(reportModal);
+
+ this.jobModal = JobWidget.this.modal;
+ setWindowClosedReloadCallback(jobModal);
+
rows = ROWS;
initResultTable();
}
@@ -326,8 +353,8 @@ public class JobWidget extends BaseWidget {
final IModel<JobTO> rowModel) {
JobTO jobTO = rowModel.getObject();
- JobActionPanel panel = new JobActionPanel(componentId, jobTO, JobWidget.this, JobWidget.this.modal,
- JobWidget.this.reportModal, pageRef);
+ JobActionPanel panel
+ = new JobActionPanel(componentId, jobTO, JobWidget.this, pageRef);
MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.ENABLE,
String.format("%s,%s%s,%s",
StandardEntitlement.TASK_EXECUTE,
@@ -341,12 +368,137 @@ public class JobWidget extends BaseWidget {
public String getCssClass() {
return "col-xs-1";
}
-
});
return columns;
}
+ @Override
+ protected ActionsPanel<JobTO> getActions(final IModel<JobTO> model) {
+ final ActionsPanel<JobTO> panel = super.getActions(model);
+
+ final JobTO jobTO = model.getObject();
+
+ panel.add(new ActionLink<JobTO>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final JobTO ignore) {
+ switch (jobTO.getType()) {
+ case NOTIFICATION:
+ break;
+
+ case REPORT:
+ ReportTO reportTO = new ReportRestClient().read(jobTO.getRefKey());
+
+ ReportWizardBuilder rwb = new ReportWizardBuilder(reportTO, pageRef);
+ rwb.setEventSink(AvailableJobsPanel.this);
+
+ target.add(jobModal.setContent(rwb.build(BaseModal.CONTENT_ID, AjaxWizard.Mode.EDIT)));
+
+ jobModal.header(new StringResourceModel(
+ "any.edit",
+ AvailableJobsPanel.this,
+ new Model<>(reportTO)));
+
+ jobModal.show(true);
+ break;
+
+ case TASK:
+ SchedTaskTO schedTaskTO = new TaskRestClient().
+ readSchedTask(SchedTaskTO.class, jobTO.getRefKey());
+
+ SchedTaskWizardBuilder<SchedTaskTO> swb
+ = new SchedTaskWizardBuilder<>(schedTaskTO, pageRef);
+ swb.setEventSink(AvailableJobsPanel.this);
+
+ target.add(jobModal.setContent(swb.build(BaseModal.CONTENT_ID, AjaxWizard.Mode.EDIT)));
+
+ jobModal.header(new StringResourceModel(
+ "any.edit",
+ AvailableJobsPanel.this,
+ new Model<>(schedTaskTO)));
+
+ jobModal.show(true);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ @Override
+ protected boolean statusCondition(final JobTO modelObject) {
+ return !(null != jobTO.getType() && JobType.NOTIFICATION.equals(jobTO.getType()));
+ }
+ }, ActionType.EDIT, StandardEntitlement.TASK_UPDATE);
+
+ panel.add(new ActionLink<JobTO>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final JobTO ignore) {
+
+ if (null != jobTO.getType()) {
+ switch (jobTO.getType()) {
+
+ case NOTIFICATION:
+ break;
+
+ case REPORT:
+
+ final ReportTO reportTO = new ReportRestClient().read(jobTO.getRefKey());
+
+ target.add(AvailableJobsPanel.this.reportModal.setContent(
+ new ReportletDirectoryPanel(reportModal, jobTO.getRefKey(), pageRef)));
+
+ MetaDataRoleAuthorizationStrategy.authorize(
+ reportModal.getForm(),
+ ENABLE, StandardEntitlement.REPORT_UPDATE);
+
+ reportModal.header(new StringResourceModel(
+ "reportlet.conf", AvailableJobsPanel.this, new Model<>(reportTO)));
+
+ reportModal.show(true);
+
+ break;
+
+ case TASK:
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+
+ @Override
+ protected boolean statusCondition(final JobTO modelObject) {
+ return !(null != jobTO.getType() && (JobType.TASK.equals(jobTO.getType())
+ || JobType.NOTIFICATION.equals(jobTO.getType())));
+ }
+
+ }, ActionType.COMPOSE, StandardEntitlement.TASK_UPDATE);
+
+ return 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);
+ }
}
protected final class AvailableJobsProvider extends DirectoryDataProvider<JobTO> {
http://git-wip-us.apache.org/repos/asf/syncope/blob/84822259/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 1ca771a..e94f292 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
@@ -27,8 +27,5 @@ under the License.
<wicket:fragment wicket:id="notRunningFragment">
<a href="#" wicket:id="start" class="fa fa-play-circle"></a>
</wicket:fragment>
- <!--<div wicket:id="modal"/>-->
- <a href="#" wicket:id="edit" ><i id="actionLink" class="glyphicon glyphicon-pencil" alt="edit icon" title="Edit"></i></a>
- <a href="#" wicket:id="compose" ><i id="actionLink" class="fa fa-puzzle-piece" alt="compose icon" title="Compose"></i></a>
</wicket:extend>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/84822259/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 3b359b6..7346aa1 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
@@ -33,5 +33,6 @@ under the License.
<div wicket:id="modal"/>
<div wicket:id="detailModal"/>
<div wicket:id="reportModal"/>
+ <div wicket:id="actionTogglePanel"/>
</wicket:panel>
</html>
\ No newline at end of file