Author: dabbous
Date: 2006-06-04 04:12:19-0700
New Revision: 10139
Modified:
trunk/src/conf/classes/ScarabBundle_de.properties
trunk/src/conf/classes/ScarabBundle_en.properties
trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java
trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java
trunk/src/java/org/tigris/scarab/workflow/CheapWorkflow.java
trunk/src/java/org/tigris/scarab/workflow/DefaultWorkflow.java
trunk/src/java/org/tigris/scarab/workflow/Workflow.java
Log:
added some support for displaying Transitions on the GUI.
Needed this for the info-popup for disabled issueTypes
during create.
added l10n support for the info-popup above and updated the
en and the de resource bundles.
Modified: trunk/src/conf/classes/ScarabBundle_de.properties
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/conf/classes/ScarabBundle_de.properties?view=diff&rev=10139&p1=trunk/src/conf/classes/ScarabBundle_de.properties&p2=trunk/src/conf/classes/ScarabBundle_de.properties&r1=10138&r2=10139
==============================================================================
--- trunk/src/conf/classes/ScarabBundle_de.properties (original)
+++ trunk/src/conf/classes/ScarabBundle_de.properties 2006-06-04 04:12:19-0700
@@ -2210,6 +2210,13 @@
TransitionDisabledIfBlocked=Deaktiviert wenn Ticket blockiert
DisabledIfBlockedExplanation=Wenn die "Deaktiviert wenn Ticket blockiert" Option für einen Übergang aktiviert ist, wird der Übergang für ein blockiertes Ticket nicht angeboten. Es wird wieder aktiviert, wenn das blockierende Ticket die Blockierung auflöst.
+
+NoCreateTransition = Dieser Ticket-Typ enthält Pflichtattribute, für welche Sie keinen initialen Wert setzen dürfen. Diese Attribute sind in der folgenden Liste aufgeführt. Für jedes Attribut sehen Sie auch den für Sie freigegebenen Workflow:
+RequiredAttribute = Pflichtattribut
+AllowedTransitions = Erlaubte Werteübergänge
+CreateTransitionHelp1 = Wenn sie denken, es handelt sich um einen Konfigurationsfehler, nehmen Sie Kontakt auf mir Ihrem Administrator . Dieser Fehler tritt typischerweise dann auf, wenn Sie ein Attribut nur auf solche Werte initialisieren dürfen, die im aktuellen Modul nicht verwendet werden.
+CreateTransitionHelp2 = Bitte überprüfen Sie die Werteübergangsmatrix der angegebenen Attribute. Sie können dazu die oben angelegten Hyperlinks verwenden. Beachten Sie, dass die Werteübergangsmatrix ganz unten auf der Seite steht und Sie ggf. Scrollen müssen um die Werte zu sehen.
+
ExceptionDatabaseGenericError=Genereller Datenbank-Fehler. Bitte benachrichtigen Sie den Administrator.
AttachmentsURLs={0} Anhänge/ {1} URLs
DependenciesTab={0} Abhängigkeiten
Modified: trunk/src/conf/classes/ScarabBundle_en.properties
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/conf/classes/ScarabBundle_en.properties?view=diff&rev=10139&p1=trunk/src/conf/classes/ScarabBundle_en.properties&p2=trunk/src/conf/classes/ScarabBundle_en.properties&r1=10138&r2=10139
==============================================================================
--- trunk/src/conf/classes/ScarabBundle_en.properties (original)
+++ trunk/src/conf/classes/ScarabBundle_en.properties 2006-06-04 04:12:19-0700
@@ -2247,6 +2247,12 @@
TransitionDisabledIfBlocked=Disabled when issue blocked
DisabledIfBlockedExplanation=If you check the 'Disabled when issue blocked' checkbox for a transition, this transition will never be availaible for a blocked issue. It will be re-enabled when the blocking issues release the block.
+NoCreateTransition = You need the permission to initiate the <i>create-transition</i> from the "empty option" to any other valid option value for some of the required attributes. The following table shows you the list of required attributes for which the create-transition has been discarded and the list of transitions you are allowed to initiate on these attributes:
+RequiredAttribute = required attribute
+AllowedTransitions = allowed transitions
+CreateTransitionHelp1 = If you think, this is a configuration error, please contact your Scarab Administrator. This error typically happens, when the current module does not use all defined option values of an attribute and all "create-transitions" you are allowed to initiate are associated to these non used option values.
+CreateTransitionHelp2 = Please check carefully your transition matrix by following the link presented in the table above and scroll to the bottom of the target page.
+
# Localization for Javascript Date calendar
DateFirstWeekDay = 0
DateWeekDays = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
Modified: trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java?view=diff&rev=10139&p1=trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java&p2=trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java&r1=10138&r2=10139
==============================================================================
--- trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java (original)
+++ trunk/src/java/org/tigris/scarab/tools/ScarabGlobalTool.java 2006-06-04 04:12:19-0700
@@ -68,7 +68,6 @@
import org.apache.velocity.app.FieldMethodizer;
import org.radeox.api.engine.RenderEngine;
import org.radeox.api.engine.context.RenderContext;
-import org.radeox.engine.BaseRenderEngine;
import org.radeox.engine.context.BaseRenderContext;
import org.tigris.scarab.notification.ActivityType;
@@ -383,9 +382,9 @@
/**
* Makes the workflow tool accessible.
+ * @throws ScarabException
*/
- public Workflow getWorkflow()
- throws Exception
+ public static Workflow getWorkflow() throws ScarabException
{
return WorkflowFactory.getInstance();
}
Modified: trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java?view=diff&rev=10139&p1=trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java&p2=trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java&r1=10138&r2=10139
==============================================================================
--- trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java (original)
+++ trunk/src/java/org/tigris/scarab/tools/ScarabRequestTool.java 2006-06-04 04:12:19-0700
@@ -147,6 +147,7 @@
import org.tigris.scarab.util.word.MaxConcurrentSearchException;
import org.tigris.scarab.util.word.QueryResult;
import org.tigris.scarab.util.word.SearchIndex;
+import org.tigris.scarab.workflow.Workflow;
/**
* This class is used by the Scarab API
@@ -507,9 +508,14 @@
*/
public ScarabUser getUser()
{
- return this.user;
+ return user;
}
+ public ScarabUser getCurrentUser()
+ {
+ return (ScarabUser)data.getUser();
+ }
+
/**
* Return a specific User by ID from within the system.
* You can pass in either a Integer or something that
@@ -3297,6 +3303,21 @@
return tran;
}
+ /**
+ * Returns the list of transitions allowed for the current user
+ * in the current module/issueType/attribute combination
+ * @throws TorqueException
+ */
+ public List getTransitions(IssueType issueType,
+ Attribute attribute) throws ScarabException
+ {
+ ScarabUser user = getCurrentUser();
+ Workflow workflow = ScarabGlobalTool.getWorkflow();
+ List result = workflow.getTransitions(user,issueType,attribute);
+ return result;
+ }
+
+
// ****************** Recyclable implementation ************************
/**
* Recycles the object by removing its disposed flag.
Modified: trunk/src/java/org/tigris/scarab/workflow/CheapWorkflow.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/workflow/CheapWorkflow.java?view=diff&rev=10139&p1=trunk/src/java/org/tigris/scarab/workflow/CheapWorkflow.java&p2=trunk/src/java/org/tigris/scarab/workflow/CheapWorkflow.java&r1=10138&r2=10139
==============================================================================
--- trunk/src/java/org/tigris/scarab/workflow/CheapWorkflow.java (original)
+++ trunk/src/java/org/tigris/scarab/workflow/CheapWorkflow.java 2006-06-04 04:12:19-0700
@@ -56,6 +56,7 @@
import org.apache.torque.TorqueException;
import org.apache.fulcrum.security.entity.Role;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -187,6 +188,124 @@
}
/**
+ * Returns the list of transitions allowed for the current user
+ * in the current module/issueType/attribute combination
+ * @throws TorqueException
+ */
+ public List getTransitions(ScarabUser user,
+ IssueType issueType,
+ Attribute attribute) throws ScarabException
+ {
+ Module module = user.getCurrentModule();
+ List allTransitions = null;
+ List availableOptions;
+ List result = null;
+ try
+ {
+ availableOptions = module.getOptionTree(attribute,issueType,true);
+ } catch (TorqueException e)
+ {
+ LocalizationKey key = L10NKeySet.ExceptionTorqueGeneric;
+ L10NMessage msg = new L10NMessage(key,e);
+ throw new ScarabException(msg,e);
+ }
+
+ Iterator optionsIter = availableOptions.iterator();
+ while(optionsIter.hasNext())
+ {
+ RModuleOption rmoduleOption = (RModuleOption)optionsIter.next();
+ AttributeOption fromOption;
+ try
+ {
+ fromOption = rmoduleOption.getAttributeOption();
+ }
+ catch (TorqueException te)
+ {
+ L10NMessage msg = new L10NMessage(L10NKeySet.ExceptionTorqueGeneric,te);
+ throw new ScarabException(msg);
+ }
+ List list = getTransitionsFrom(user,issueType,attribute,fromOption);
+ if(list != null)
+ {
+ if(result == null)
+ {
+ result = list;
+ }
+ else
+ {
+ result.addAll(list);
+ }
+ }
+ }
+ return result;
+ }
+
+
+ /**
+ * Returns the list of transitions allowed for the current user
+ * in the current module/issueType/attribute combination
+ * starting from fromOption.
+ * @throws TorqueException
+ */
+ public List getTransitionsFrom(ScarabUser user,
+ IssueType issueType,
+ Attribute attribute,
+ AttributeOption fromOption) throws ScarabException
+ {
+ Module module = user.getCurrentModule();
+ List allTransitions = null;
+ List availableOptions;
+ List result;
+ try
+ {
+ availableOptions = module.getOptionTree(attribute,issueType,true);
+ } catch (TorqueException e)
+ {
+ LocalizationKey key = L10NKeySet.ExceptionTorqueGeneric;
+ L10NMessage msg = new L10NMessage(key,e);
+ throw new ScarabException(msg,e);
+ }
+
+ allTransitions = TransitionPeer.getTransitionsFrom(availableOptions, attribute, fromOption);
+ Iterator iter = allTransitions.iterator();
+ if(iter.hasNext())
+ {
+ result = new ArrayList();
+ while (iter.hasNext())
+ {
+ Object obj = iter.next();
+ Transition transition = (Transition) obj;
+
+ if (transitionIsSupportedByOptions(transition, availableOptions))
+ {
+ boolean transitionAllowed = false;
+ Role requiredRole = transition.getRole();
+ if (requiredRole != null)
+ {
+ // A role is required for this transition to be allowed
+ transitionAllowed =
+ user.hasRoleInModule(requiredRole, module);
+ }
+ else
+ {
+ transitionAllowed = true;
+ }
+ if (transitionAllowed)
+ {
+ result.add(transition);
+ }
+ }
+ }
+ }
+ else
+ {
+ result = null; // no transitions defined -> all transitions allowed
+ }
+ return result;
+ }
+
+
+ /**
* It is possible that a defined transition can not be processed, because
* either the source option or the target option is not available in the
* current scope. This may happen when an option has been defined in the
Modified: trunk/src/java/org/tigris/scarab/workflow/DefaultWorkflow.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/workflow/DefaultWorkflow.java?view=diff&rev=10139&p1=trunk/src/java/org/tigris/scarab/workflow/DefaultWorkflow.java&p2=trunk/src/java/org/tigris/scarab/workflow/DefaultWorkflow.java&r1=10138&r2=10139
==============================================================================
--- trunk/src/java/org/tigris/scarab/workflow/DefaultWorkflow.java (original)
+++ trunk/src/java/org/tigris/scarab/workflow/DefaultWorkflow.java 2006-06-04 04:12:19-0700
@@ -50,6 +50,7 @@
import java.util.Map;
+import org.apache.torque.TorqueException;
import org.tigris.scarab.om.ScarabUser;
import org.tigris.scarab.om.Issue;
import org.tigris.scarab.om.Module;
@@ -79,6 +80,33 @@
return true;
}
+ /**
+ * Returns the list of transitions allowed for the current user
+ * in the current module/issueType/attribute combination
+ * @throws TorqueException
+ */
+ public List getTransitions(ScarabUser user,
+ IssueType issueType,
+ Attribute attribute) throws ScarabException
+ {
+ return null;
+ }
+
+
+ /**
+ * Returns the list of transitions allowed for the current user
+ * in the current module/issueType/attribute combination
+ * starting from fromOption.
+ * @throws TorqueException
+ */
+ public List getTransitionsFrom(ScarabUser user,
+ IssueType issueType,
+ Attribute attribute,
+ AttributeOption fromOption) throws ScarabException
+ {
+ return null;
+ }
+
public boolean canMakeTransitionsFrom(ScarabUser user,
IssueType issueType,
Attribute attribute,
Modified: trunk/src/java/org/tigris/scarab/workflow/Workflow.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/workflow/Workflow.java?view=diff&rev=10139&p1=trunk/src/java/org/tigris/scarab/workflow/Workflow.java&p2=trunk/src/java/org/tigris/scarab/workflow/Workflow.java&r1=10138&r2=10139
==============================================================================
--- trunk/src/java/org/tigris/scarab/workflow/Workflow.java (original)
+++ trunk/src/java/org/tigris/scarab/workflow/Workflow.java 2006-06-04 04:12:19-0700
@@ -50,6 +50,7 @@
import java.util.List;
+import org.apache.torque.TorqueException;
import org.tigris.scarab.om.ScarabUser;
import org.tigris.scarab.om.Issue;
import org.tigris.scarab.om.Module;
@@ -77,6 +78,27 @@
Issue issue)
throws ScarabException;
+ /**
+ * Returns the list of transitions allowed for the current user
+ * in the current module/issueType/attribute combination
+ * @throws TorqueException
+ */
+ public List getTransitions(ScarabUser user,
+ IssueType issueType,
+ Attribute attribute) throws ScarabException;
+
+
+ /**
+ * Returns the list of transitions allowed for the current user
+ * in the current module/issueType/attribute combination
+ * starting from fromOption.
+ * @throws TorqueException
+ */
+ public List getTransitionsFrom(ScarabUser user,
+ IssueType issueType,
+ Attribute attribute,
+ AttributeOption fromOption) throws ScarabException;
+
public boolean canMakeTransitionsFrom(ScarabUser user,
IssueType issueType,
Attribute attribute,
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.