# User regexp is which email addresses are initially put into this group.
# This is only used when an email account is created; otherwise, profiles
# may be individually tweaked to add them in and out of groups.
+#
+# 2001-04-10 myk@mozilla.org:
+# isactive determines whether or not a group is active. An inactive group
+# cannot have bugs added to it. Deactivation is a much milder form of
+# deleting a group that allows users to continue to work on bugs in the group
+# without enabling them to extend the life of the group by adding bugs to it.
+# http://bugzilla.mozilla.org/show_bug.cgi?id=75482
$table{groups} =
'bit bigint not null,
description text not null,
isbuggroup tinyint not null,
userregexp tinytext not null,
+ isactive tinyint not null default 1,
unique(bit),
unique(name)';
}
}
+#
+# 2001-04-10 myk@mozilla.org:
+# isactive determines whether or not a group is active. An inactive group
+# cannot have bugs added to it. Deactivation is a much milder form of
+# deleting a group that allows users to continue to work on bugs in the group
+# without enabling them to extend the life of the group by adding bugs to it.
+# http://bugzilla.mozilla.org/show_bug.cgi?id=75482
+#
+AddField('groups', 'isactive', 'tinyint not null default 1');
+
# 2001-04-29 jake@acutex.net - Remove oldemailtech
# http://bugzilla.mozilla.org/show_bugs.cgi?id=71552
if (-d 'shadow') {
print "<th>Name</th>";
print "<th>Description</th>";
print "<th>User RegExp</th>";
+ print "<th>Active</th>";
print "<th>Action</th>";
print "</tr>\n";
- SendSQL("SELECT bit,name,description,userregexp " .
+ SendSQL("SELECT bit,name,description,userregexp,isactive " .
"FROM groups " .
"WHERE isbuggroup != 0 " .
"ORDER BY bit");
while (MoreSQLData()) {
- my ($bit, $name, $desc, $regexp) = FetchSQLData();
+ my ($bit, $name, $desc, $regexp, $isactive) = FetchSQLData();
print "<tr>\n";
print "<td valign=middle>$bit</td>\n";
print "<td><input size=20 name=\"name-$bit\" value=\"$name\">\n";
print "<input type=hidden name=\"olddesc-$bit\" value=\"$desc\"></td>\n";
print "<td><input size=30 name=\"regexp-$bit\" value=\"$regexp\">\n";
print "<input type=hidden name=\"oldregexp-$bit\" value=\"$regexp\"></td>\n";
+ print "<td><input type=\"checkbox\" name=\"isactive-$bit\" value=\"1\"" . ($isactive ? " checked" : "") . ">\n";
+ print "<input type=hidden name=\"oldisactive-$bit\" value=\"$isactive\"></td>\n";
print "<td align=center valign=middle><a href=\"editgroups.cgi?action=del&group=$bit\">Delete</a></td>\n";
print "</tr>\n";
}
print "<tr>\n";
- print "<td colspan=4></td>\n";
+ print "<td colspan=5></td>\n";
print "<td><a href=\"editgroups.cgi?action=add\">Add Group</a></td>\n";
print "</tr>\n";
print "</table>\n";
print "<b>User RegExp</b> is optional, and if filled in, will automatically
grant membership to this group to anyone creating a new account with an
email address that matches this regular expression.<p>";
+ print "The <b>Active</b> flag determines whether or not the group is active.
+If you deactivate a group it will no longer be possible for users to add bugs
+to that group, although bugs already in the group will remain in the group.
+Deactivating a group is a much less drastic way to stop a group from growing
+than deleting the group would be.<p>";
print "In addition, the following groups that determine user privileges
exist. You can only edit the User rexexp on these groups. You should also take
care not to duplicate the Names of any of them in your user groups.<p>";
print "<th>New Name</th>";
print "<th>New Description</th>";
print "<th>New User RegExp</th>";
+ print "<th>Active</th>";
print "</tr><tr>";
print "<td><input size=20 name=\"name\"></td>\n";
print "<td><input size=40 name=\"desc\"></td>\n";
print "<td><input size=30 name=\"regexp\"></td>\n";
+ print "<td><input type=\"checkbox\" name=\"isactive\" value=\"1\" checked></td>\n";
print "</TR></TABLE>\n<HR>\n";
print "<INPUT TYPE=SUBMIT VALUE=\"Add\">\n";
print "<INPUT TYPE=HIDDEN NAME=\"action\" VALUE=\"new\">\n";
print "<b>Description</b> is what will be shown in the bug reports to
members of the group where they can choose whether the bug will be restricted
to others in the same group.<p>";
+ print "The <b>Active</b> flag determines whether or not the group is active.
+If you deactivate a group it will no longer be possible for users to add bugs
+to that group, although bugs already in the group will remain in the group.
+Deactivating a group is a much less drastic way to stop a group from growing
+than deleting the group would be. <b>Note: If you are creating a group, you
+probably want it to be active, in which case you should leave this checked.</b><p>";
print "<b>User RegExp</b> is optional, and if filled in, will automatically
grant membership to this group to anyone creating a new account with an
email address that matches this regular expression.<p>";
my $name = trim($::FORM{name} || '');
my $desc = trim($::FORM{desc} || '');
my $regexp = trim($::FORM{regexp} || '');
+ # convert an undefined value in the inactive field to zero
+ # (this occurs when the inactive checkbox is not checked
+ # and the browser does not send the field to the server)
+ my $isactive = $::FORM{isactive} || 0;
unless ($name) {
ShowError("You must enter a name for the new group.<BR>" .
exit;
}
+ if ($isactive != 0 && $isactive != 1) {
+ ShowError("The active flag was improperly set. There may be " .
+ "a problem with Bugzilla or a bug in your browser.<br>" .
+ "Please click the <b>Back</b> button and try again.");
+ PutFooter();
+ exit;
+ }
+
# Major hack for bit values... perl can't handle 64-bit ints, so I can't
# just do the math to get the next available bit number, gotta handle
# them as strings... also, we're actually only going to allow 63 bits
# Add the new group
SendSQL("INSERT INTO groups ( " .
- "bit, name, description, isbuggroup, userregexp" .
+ "bit, name, description, isbuggroup, userregexp, isactive" .
" ) VALUES ( " .
$bit . "," .
SqlQuote($name) . "," .
SqlQuote($desc) . "," .
"1," .
- SqlQuote($regexp) . ")" );
+ SqlQuote($regexp) . "," .
+ $isactive . ")" );
print "OK, done.<p>\n";
print "Your new group was assigned bit #$bit.<p>";
" WHERE bit=" . SqlQuote($v));
print "Group $v user regexp updated.<br>\n";
}
+ # convert an undefined value in the inactive field to zero
+ # (this occurs when the inactive checkbox is not checked
+ # and the browser does not send the field to the server)
+ my $isactive = $::FORM{"isactive-$v"} || 0;
+ if ($::FORM{"oldisactive-$v"} != $isactive) {
+ $chgs = 1;
+ if ($isactive == 0 || $isactive == 1) {
+ SendSQL("UPDATE groups SET isactive=$isactive" .
+ " WHERE bit=" . SqlQuote($v));
+ print "Group $v active flag updated.<br>\n";
+ } else {
+ ShowError("The value '" . $isactive .
+ "' is not a valid value for the active flag.<BR>" .
+ "There may be a problem with Bugzilla or a bug in your browser.<br>" .
+ "Update of active flag for group $v skipped.");
+ }
+ }
}
}
if (!$chgs) {