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-94f89814c4df
master
quasi 2013-08-07 09:58:41 +00:00
parent 0e89aeca3f
commit 2a89454821
4 changed files with 82 additions and 39 deletions

View File

@ -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.no_users_were_selected=Keine Benutzer ausgew\u00e4hlt.
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.task.add=Aufgabe hinzuf\u00fcgen
cms.ui.workflow.task.approve=Akzeptieren

View File

@ -35,20 +35,18 @@ import com.arsdigita.toolbox.ui.Section;
import com.arsdigita.web.Web;
import com.arsdigita.workflow.simple.Engine;
import com.arsdigita.workflow.simple.Workflow;
import org.apache.log4j.Logger;
import java.util.ArrayList;
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 $
*/
public final class AssignedTaskSection extends Section {
private static final Logger s_log = Logger.getLogger
(AssignedTaskSection.class);
private static final Logger s_log = Logger.getLogger(AssignedTaskSection.class);
private final WorkflowRequestLocal m_workflow;
private final WorkflowFacade m_facade;
@ -63,26 +61,52 @@ public final class AssignedTaskSection extends Section {
setBody(group);
group.setSubject(subject);
group.addAction(new RestartLink());
group.addAction(new LockLink());
group.addAction(new UnlockLink());
}
@Override
public final boolean isVisible(final PageState state) {
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 {
LockLink() {
super(new Label(gz("cms.ui.workflow.task.assigned.lock_all")));
addActionListener(new Listener());
}
@Override
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 {
public final void actionPerformed(final ActionEvent e) {
m_facade.lockTasks(e.getPageState());
}
@ -90,17 +114,20 @@ public final class AssignedTaskSection extends Section {
}
private class UnlockLink extends ActionLink {
UnlockLink() {
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) {
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 {
public final void actionPerformed(final ActionEvent e) {
m_facade.unlockTasks(e.getPageState());
}
@ -108,6 +135,7 @@ public final class AssignedTaskSection extends Section {
}
private class WorkflowFacade {
private final WorkflowRequestLocal m_flow;
private final TaskListRequestLocal m_tasks;
@ -117,11 +145,12 @@ public final class AssignedTaskSection extends Section {
}
private class TaskListRequestLocal extends RequestLocal {
@Override
protected final Object initialValue(final PageState state) {
final Workflow workflow = m_flow.getWorkflow(state);
final Engine engine = Engine.getInstance(CMSEngine.CMS_ENGINE_TYPE);
return engine.getEnabledTasks
(Web.getContext().getUser(), workflow.getID());
return engine.getEnabledTasks(Web.getContext().getUser(), workflow.getID());
}
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 Iterator iter = m_tasks.getTasks(state).iterator();
@ -169,6 +204,10 @@ public final class AssignedTaskSection extends Section {
return true;
}
final boolean workflowState(final PageState state, int processState) {
return m_flow.getWorkflow(state).getProcessState() == processState;
}
final boolean tasksExist(final PageState state) {
return !m_tasks.getTasks(state).isEmpty();
}

View File

@ -33,9 +33,8 @@ import com.arsdigita.cms.workflow.CMSTask;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.kernel.User;
import com.arsdigita.web.Web;
import org.apache.log4j.Logger;
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 {
@Override
public final void cellSelected(final TableActionEvent e) {
final int column = e.getColumn().intValue();
@ -91,7 +91,7 @@ public final class AssignedTaskTable extends Table {
BoxPanel p = new BoxPanel();
User lockingUser = (User) value;
if (lockingUser != null) {
StringBuffer sb = new StringBuffer("Locked by <br />");
StringBuilder sb = new StringBuilder("Locked by <br />");
if (lockingUser.equals(Web.getContext().getUser())) {
sb.append("you");
p.add(new ControlLink(new Label(

View File

@ -28,9 +28,9 @@ import com.arsdigita.util.Assert;
import com.arsdigita.web.Web;
import com.arsdigita.workflow.simple.Engine;
import com.arsdigita.workflow.simple.Workflow;
import org.apache.log4j.Logger;
import java.util.Collections;
import java.util.Iterator;
import org.apache.log4j.Logger;
/**
*
@ -38,9 +38,7 @@ import java.util.Iterator;
*/
class AssignedTaskTableModelBuilder extends AbstractTableModelBuilder {
private static final Logger s_log = Logger.getLogger
(AssignedTaskTableModelBuilder.class);
private static final Logger s_log = Logger.getLogger(AssignedTaskTableModelBuilder.class);
private final WorkflowRequestLocal m_workflow;
public AssignedTaskTableModelBuilder(final WorkflowRequestLocal workflow) {
@ -52,18 +50,24 @@ class AssignedTaskTableModelBuilder extends AbstractTableModelBuilder {
}
private static class Model implements TableModel {
private final Iterator m_iter;
private CMSTask m_task;
Model(final Workflow workflow) {
Assert.exists(workflow, Workflow.class);
if (workflow.getProcessState() == Workflow.STARTED) {
final Engine engine = Engine.getInstance(CMSEngine.CMS_ENGINE_TYPE);
Assert.exists(engine, Engine.class);
m_iter = engine.getEnabledTasks
(Web.getContext().getUser(), workflow.getID()).iterator();
m_iter = engine.getEnabledTasks(Web.getContext().getUser(), workflow.getID()).iterator();
} else {
m_iter = Collections.emptyList().iterator();
}
}
public final int getColumnCount() {
@ -92,8 +96,8 @@ class AssignedTaskTableModelBuilder extends AbstractTableModelBuilder {
// SF patch [ 1587168 ] Show locking user
return m_task.isLocked() ? m_task.getLockedUser() : null;
case 2:
return m_task.getTaskType().getID().equals(CMSTaskType.DEPLOY) ?
(Object) new Label("") : // null should work as well
return m_task.getTaskType().getID().equals(CMSTaskType.DEPLOY)
? (Object) new Label("") : // null should work as well
(Object) lz("cms.ui.workflow.task.finish");
default:
throw new IllegalStateException();