Index: modules/project/project.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.module,v
retrieving revision 1.181
diff -u -r1.181 project.module
--- modules/project/project.module 6 Feb 2005 19:59:02 -0000 1.181
+++ modules/project/project.module 9 Feb 2005 23:55:41 -0000
@@ -52,13 +52,18 @@
}
function project_perm() {
- return array(
+ $perms = array(
'administer projects',
'maintain projects',
'access projects',
'create project issues',
'access project issues'
);
+ $states = project_issue_state();
+ foreach($states as $key => $value) {
+ $perms[] = "set issue status '" . $value . "'";
+ }
+ return $perms;
}
function project_settings() {
Index: modules/project/issue.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/issue.inc,v
retrieving revision 1.90
diff -u -r1.90 issue.inc
--- modules/project/issue.inc 6 Feb 2005 12:32:41 -0000 1.90
+++ modules/project/issue.inc 10 Feb 2005 00:00:25 -0000
@@ -5,6 +5,16 @@
return t('issue');
}
+function project_issue_nodeapi(&$node, $op, $arg) {
+ switch ($op) {
+ case 'validate':
+ if (!user_access("set issue status '" . $node->state . "'")) {
+ form_set_error('state', t('Invalid issue status %status: you do not have permission to set this status', array('%status' => "$node->state")));
+ }
+ break;
+ }
+}
+
function project_issue_page() {
switch ($_POST['op'] ? $_POST['op'] : arg(2)) {
case 'search':
@@ -225,7 +235,7 @@
}
$categories = array_merge(t(''), project_issue_category(0, 0));
$priorities = project_issue_priority();
- $states = project_issue_state();
+ $states = project_issue_state(0, true);
if ($user->uid == $node->assigned) {
$assigned = array(0 => t('Unassign'), $user->uid => $user->name);
@@ -410,8 +420,18 @@
}
// Support stuff
-function project_issue_state($state = 0) {
- $states = array(1 => t('active'), 2 => t('fixed'), 8=> t('patch'), 3 => t('duplicate'), 4 => t('postponed'), 5 => t("won't fix"), 6 => t('by design'), 7 => t('closed'));
+function project_issue_state($state = 0, $restrict = false) {
+ $options = array(1 => t('active'), 8 => t('patch'), 9 => t('reviewed'), 10 => t('queued for application'), 2 => t('applied'), 3 => t('duplicate'), 4 => t('postponed'), 5 => t("won't fix"), 6 => t('by design'), 7 => t('closed'));
+ if($restrict) {
+ foreach($options as $key => $value) {
+ if (user_access("set project status '" . $value . "'")) {
+ $states[$key] = $value;
+ }
+ }
+ }
+ else {
+ $states = $options;
+ }
return $state ? $states[$state] : $states;
}