Link zum Starten des Arbeitsabluafes in die Task Tabelle mit aufgenommen. (#1269)
git-svn-id: https://svn.libreccm.org/ccm/trunk@2299 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
0e89aeca3f
commit
2a89454821
|
|
@ -706,7 +706,7 @@ cms.ui.workflow.intro=Arbeitsablauf w\u00e4hlen oder einen neuen hinzuf\u00fcgen
|
||||||
cms.ui.workflow.lock_tasks=Meine Aufgaben f\u00fcr diesen Inhaltstyp reservieren
|
cms.ui.workflow.lock_tasks=Meine Aufgaben f\u00fcr diesen Inhaltstyp reservieren
|
||||||
cms.ui.workflow.no_users_were_selected=Keine Benutzer ausgew\u00e4hlt.
|
cms.ui.workflow.no_users_were_selected=Keine Benutzer ausgew\u00e4hlt.
|
||||||
cms.ui.workflow.num_tasks=Anzahl der Aufgaben
|
cms.ui.workflow.num_tasks=Anzahl der Aufgaben
|
||||||
cms.ui.workflow.restart_stopped_workflow=Gestoppter Arbeitsablauf erneut starten
|
cms.ui.workflow.restart_stopped_workflow=Gestoppten Arbeitsablauf erneut starten
|
||||||
cms.ui.workflow.stop_workflow=Arbeitsablauf stoppen
|
cms.ui.workflow.stop_workflow=Arbeitsablauf stoppen
|
||||||
cms.ui.workflow.task.add=Aufgabe hinzuf\u00fcgen
|
cms.ui.workflow.task.add=Aufgabe hinzuf\u00fcgen
|
||||||
cms.ui.workflow.task.approve=Akzeptieren
|
cms.ui.workflow.task.approve=Akzeptieren
|
||||||
|
|
|
||||||
|
|
@ -35,25 +35,23 @@ import com.arsdigita.toolbox.ui.Section;
|
||||||
import com.arsdigita.web.Web;
|
import com.arsdigita.web.Web;
|
||||||
import com.arsdigita.workflow.simple.Engine;
|
import com.arsdigita.workflow.simple.Engine;
|
||||||
import com.arsdigita.workflow.simple.Workflow;
|
import com.arsdigita.workflow.simple.Workflow;
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* @author unknown
|
||||||
|
* @author Sören Bernstein
|
||||||
* @version $Id: AssignedTaskSection.java 1280 2006-07-27 09:12:09Z cgyg9330 $
|
* @version $Id: AssignedTaskSection.java 1280 2006-07-27 09:12:09Z cgyg9330 $
|
||||||
*/
|
*/
|
||||||
public final class AssignedTaskSection extends Section {
|
public final class AssignedTaskSection extends Section {
|
||||||
|
|
||||||
private static final Logger s_log = Logger.getLogger
|
private static final Logger s_log = Logger.getLogger(AssignedTaskSection.class);
|
||||||
(AssignedTaskSection.class);
|
|
||||||
|
|
||||||
private final WorkflowRequestLocal m_workflow;
|
private final WorkflowRequestLocal m_workflow;
|
||||||
private final WorkflowFacade m_facade;
|
private final WorkflowFacade m_facade;
|
||||||
|
|
||||||
public AssignedTaskSection(final WorkflowRequestLocal workflow,
|
public AssignedTaskSection(final WorkflowRequestLocal workflow,
|
||||||
final Component subject) {
|
final Component subject) {
|
||||||
super(gz("cms.ui.workflow.task.assigned"));
|
super(gz("cms.ui.workflow.task.assigned"));
|
||||||
|
|
||||||
m_workflow = workflow;
|
m_workflow = workflow;
|
||||||
|
|
@ -63,26 +61,52 @@ public final class AssignedTaskSection extends Section {
|
||||||
setBody(group);
|
setBody(group);
|
||||||
|
|
||||||
group.setSubject(subject);
|
group.setSubject(subject);
|
||||||
|
group.addAction(new RestartLink());
|
||||||
group.addAction(new LockLink());
|
group.addAction(new LockLink());
|
||||||
group.addAction(new UnlockLink());
|
group.addAction(new UnlockLink());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public final boolean isVisible(final PageState state) {
|
public final boolean isVisible(final PageState state) {
|
||||||
return m_workflow.getWorkflow(state) != null;
|
return m_workflow.getWorkflow(state) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class RestartLink extends ActionLink {
|
||||||
|
|
||||||
|
RestartLink() {
|
||||||
|
super(new Label(gz("cms.ui.workflow.restart_stopped_workflow")));
|
||||||
|
|
||||||
|
addActionListener(new Listener());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean isVisible(final PageState state) {
|
||||||
|
return m_facade.workflowState(state, Workflow.INIT) || m_facade.workflowState(state, Workflow.STOPPED);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class Listener implements ActionListener {
|
||||||
|
|
||||||
|
public final void actionPerformed(final ActionEvent e) {
|
||||||
|
m_facade.restartWorkflow(e.getPageState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class LockLink extends ActionLink {
|
private class LockLink extends ActionLink {
|
||||||
|
|
||||||
LockLink() {
|
LockLink() {
|
||||||
super(new Label(gz("cms.ui.workflow.task.assigned.lock_all")));
|
super(new Label(gz("cms.ui.workflow.task.assigned.lock_all")));
|
||||||
|
|
||||||
addActionListener(new Listener());
|
addActionListener(new Listener());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public final boolean isVisible(final PageState state) {
|
public final boolean isVisible(final PageState state) {
|
||||||
return m_facade.tasksExist(state) && !m_facade.tasksLocked(state);
|
return m_facade.workflowState(state, Workflow.STARTED) && m_facade.tasksExist(state) && !m_facade.tasksLocked(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Listener implements ActionListener {
|
private class Listener implements ActionListener {
|
||||||
|
|
||||||
public final void actionPerformed(final ActionEvent e) {
|
public final void actionPerformed(final ActionEvent e) {
|
||||||
m_facade.lockTasks(e.getPageState());
|
m_facade.lockTasks(e.getPageState());
|
||||||
}
|
}
|
||||||
|
|
@ -90,17 +114,20 @@ public final class AssignedTaskSection extends Section {
|
||||||
}
|
}
|
||||||
|
|
||||||
private class UnlockLink extends ActionLink {
|
private class UnlockLink extends ActionLink {
|
||||||
|
|
||||||
UnlockLink() {
|
UnlockLink() {
|
||||||
super(new Label(gz("cms.ui.workflow.task.assigned.unlock_all")));
|
super(new Label(gz("cms.ui.workflow.task.assigned.unlock_all")));
|
||||||
|
|
||||||
addActionListener(new Listener());
|
addActionListener(new UnlockLink.Listener());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public final boolean isVisible(final PageState state) {
|
public final boolean isVisible(final PageState state) {
|
||||||
return m_facade.tasksExist(state) && m_facade.tasksLocked(state);
|
return m_facade.workflowState(state, Workflow.STARTED) && m_facade.tasksExist(state) && m_facade.tasksLocked(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Listener implements ActionListener {
|
private class Listener implements ActionListener {
|
||||||
|
|
||||||
public final void actionPerformed(final ActionEvent e) {
|
public final void actionPerformed(final ActionEvent e) {
|
||||||
m_facade.unlockTasks(e.getPageState());
|
m_facade.unlockTasks(e.getPageState());
|
||||||
}
|
}
|
||||||
|
|
@ -108,6 +135,7 @@ public final class AssignedTaskSection extends Section {
|
||||||
}
|
}
|
||||||
|
|
||||||
private class WorkflowFacade {
|
private class WorkflowFacade {
|
||||||
|
|
||||||
private final WorkflowRequestLocal m_flow;
|
private final WorkflowRequestLocal m_flow;
|
||||||
private final TaskListRequestLocal m_tasks;
|
private final TaskListRequestLocal m_tasks;
|
||||||
|
|
||||||
|
|
@ -117,11 +145,12 @@ public final class AssignedTaskSection extends Section {
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TaskListRequestLocal extends RequestLocal {
|
private class TaskListRequestLocal extends RequestLocal {
|
||||||
|
|
||||||
|
@Override
|
||||||
protected final Object initialValue(final PageState state) {
|
protected final Object initialValue(final PageState state) {
|
||||||
final Workflow workflow = m_flow.getWorkflow(state);
|
final Workflow workflow = m_flow.getWorkflow(state);
|
||||||
final Engine engine = Engine.getInstance(CMSEngine.CMS_ENGINE_TYPE);
|
final Engine engine = Engine.getInstance(CMSEngine.CMS_ENGINE_TYPE);
|
||||||
return engine.getEnabledTasks
|
return engine.getEnabledTasks(Web.getContext().getUser(), workflow.getID());
|
||||||
(Web.getContext().getUser(), workflow.getID());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final ArrayList getTasks(final PageState state) {
|
final ArrayList getTasks(final PageState state) {
|
||||||
|
|
@ -129,6 +158,12 @@ public final class AssignedTaskSection extends Section {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final void restartWorkflow(final PageState state) {
|
||||||
|
final Workflow workflow = m_flow.getWorkflow(state);
|
||||||
|
workflow.start(Web.getContext().getUser());
|
||||||
|
workflow.save();
|
||||||
|
}
|
||||||
|
|
||||||
final void lockTasks(final PageState state) {
|
final void lockTasks(final PageState state) {
|
||||||
final Iterator iter = m_tasks.getTasks(state).iterator();
|
final Iterator iter = m_tasks.getTasks(state).iterator();
|
||||||
|
|
||||||
|
|
@ -169,13 +204,17 @@ public final class AssignedTaskSection extends Section {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final boolean workflowState(final PageState state, int processState) {
|
||||||
|
return m_flow.getWorkflow(state).getProcessState() == processState;
|
||||||
|
}
|
||||||
|
|
||||||
final boolean tasksExist(final PageState state) {
|
final boolean tasksExist(final PageState state) {
|
||||||
return !m_tasks.getTasks(state).isEmpty();
|
return !m_tasks.getTasks(state).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean relevant(final CMSTask task) {
|
private boolean relevant(final CMSTask task) {
|
||||||
return task.getTaskType().getID().equals(CMSTaskType.AUTHOR)
|
return task.getTaskType().getID().equals(CMSTaskType.AUTHOR)
|
||||||
|| task.getTaskType().getID().equals(CMSTaskType.EDIT);
|
|| task.getTaskType().getID().equals(CMSTaskType.EDIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,9 +33,8 @@ import com.arsdigita.cms.workflow.CMSTask;
|
||||||
import com.arsdigita.globalization.GlobalizedMessage;
|
import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
import com.arsdigita.kernel.User;
|
import com.arsdigita.kernel.User;
|
||||||
import com.arsdigita.web.Web;
|
import com.arsdigita.web.Web;
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -63,6 +62,7 @@ public final class AssignedTaskTable extends Table {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class LockListener extends TableActionAdapter {
|
private static class LockListener extends TableActionAdapter {
|
||||||
|
@Override
|
||||||
public final void cellSelected(final TableActionEvent e) {
|
public final void cellSelected(final TableActionEvent e) {
|
||||||
final int column = e.getColumn().intValue();
|
final int column = e.getColumn().intValue();
|
||||||
|
|
||||||
|
|
@ -91,7 +91,7 @@ public final class AssignedTaskTable extends Table {
|
||||||
BoxPanel p = new BoxPanel();
|
BoxPanel p = new BoxPanel();
|
||||||
User lockingUser = (User) value;
|
User lockingUser = (User) value;
|
||||||
if (lockingUser != null) {
|
if (lockingUser != null) {
|
||||||
StringBuffer sb = new StringBuffer("Locked by <br />");
|
StringBuilder sb = new StringBuilder("Locked by <br />");
|
||||||
if (lockingUser.equals(Web.getContext().getUser())) {
|
if (lockingUser.equals(Web.getContext().getUser())) {
|
||||||
sb.append("you");
|
sb.append("you");
|
||||||
p.add(new ControlLink(new Label(
|
p.add(new ControlLink(new Label(
|
||||||
|
|
|
||||||
|
|
@ -28,19 +28,17 @@ import com.arsdigita.util.Assert;
|
||||||
import com.arsdigita.web.Web;
|
import com.arsdigita.web.Web;
|
||||||
import com.arsdigita.workflow.simple.Engine;
|
import com.arsdigita.workflow.simple.Engine;
|
||||||
import com.arsdigita.workflow.simple.Workflow;
|
import com.arsdigita.workflow.simple.Workflow;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class AssignedTaskTableModelBuilder extends AbstractTableModelBuilder {
|
class AssignedTaskTableModelBuilder extends AbstractTableModelBuilder {
|
||||||
|
|
||||||
private static final Logger s_log = Logger.getLogger
|
private static final Logger s_log = Logger.getLogger(AssignedTaskTableModelBuilder.class);
|
||||||
(AssignedTaskTableModelBuilder.class);
|
|
||||||
|
|
||||||
private final WorkflowRequestLocal m_workflow;
|
private final WorkflowRequestLocal m_workflow;
|
||||||
|
|
||||||
public AssignedTaskTableModelBuilder(final WorkflowRequestLocal workflow) {
|
public AssignedTaskTableModelBuilder(final WorkflowRequestLocal workflow) {
|
||||||
|
|
@ -52,18 +50,24 @@ class AssignedTaskTableModelBuilder extends AbstractTableModelBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class Model implements TableModel {
|
private static class Model implements TableModel {
|
||||||
|
|
||||||
private final Iterator m_iter;
|
private final Iterator m_iter;
|
||||||
private CMSTask m_task;
|
private CMSTask m_task;
|
||||||
|
|
||||||
Model(final Workflow workflow) {
|
Model(final Workflow workflow) {
|
||||||
Assert.exists(workflow, Workflow.class);
|
Assert.exists(workflow, Workflow.class);
|
||||||
|
|
||||||
final Engine engine = Engine.getInstance(CMSEngine.CMS_ENGINE_TYPE);
|
if (workflow.getProcessState() == Workflow.STARTED) {
|
||||||
|
|
||||||
Assert.exists(engine, Engine.class);
|
final Engine engine = Engine.getInstance(CMSEngine.CMS_ENGINE_TYPE);
|
||||||
|
|
||||||
|
Assert.exists(engine, Engine.class);
|
||||||
|
|
||||||
|
m_iter = engine.getEnabledTasks(Web.getContext().getUser(), workflow.getID()).iterator();
|
||||||
|
} else {
|
||||||
|
m_iter = Collections.emptyList().iterator();
|
||||||
|
}
|
||||||
|
|
||||||
m_iter = engine.getEnabledTasks
|
|
||||||
(Web.getContext().getUser(), workflow.getID()).iterator();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public final int getColumnCount() {
|
public final int getColumnCount() {
|
||||||
|
|
@ -86,17 +90,17 @@ class AssignedTaskTableModelBuilder extends AbstractTableModelBuilder {
|
||||||
|
|
||||||
public final Object getElementAt(final int column) {
|
public final Object getElementAt(final int column) {
|
||||||
switch (column) {
|
switch (column) {
|
||||||
case 0:
|
case 0:
|
||||||
return m_task.getLabel();
|
return m_task.getLabel();
|
||||||
case 1:
|
case 1:
|
||||||
// SF patch [ 1587168 ] Show locking user
|
// SF patch [ 1587168 ] Show locking user
|
||||||
return m_task.isLocked() ? m_task.getLockedUser() : null;
|
return m_task.isLocked() ? m_task.getLockedUser() : null;
|
||||||
case 2:
|
case 2:
|
||||||
return m_task.getTaskType().getID().equals(CMSTaskType.DEPLOY) ?
|
return m_task.getTaskType().getID().equals(CMSTaskType.DEPLOY)
|
||||||
(Object) new Label("") : // null should work as well
|
? (Object) new Label("") : // null should work as well
|
||||||
(Object) lz("cms.ui.workflow.task.finish");
|
(Object) lz("cms.ui.workflow.task.finish");
|
||||||
default:
|
default:
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue