1 <?php # vim:ts=2:sw=2:et:
2 /* For licensing and copyright terms, see the file named LICENSE */
3 include '../../inc/common.php';
5 MTrackACL::requireAnyRights('Components', 'modify');
7 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
8 if (isset($_POST['newcomponent']) && strlen($_POST['newcomponent'])) {
9 $CS = MTrackChangeset::begin("component:X",
10 "Added Component $_POST[newcomponent]");
11 $comp = new MTrackComponent;
12 $comp->name = $_POST['newcomponent'];
13 $comp->setProjects($_POST['newcomponentprojects']);
15 $CS->setObject("component:$comp->compid");
18 foreach ($_POST as $name => $value) {
19 if (preg_match("/^comp:(\d+):name$/", $name, $M)) {
21 $C = MTrackComponent::loadById($compid);
24 if ($C->name != $_POST["comp:$compid:name"]) {
25 $C->name = $_POST["comp:$compid:name"];
28 if (isset($_POST["comp:$compid:deleted"]) &&
29 $_POST["comp:$compid:deleted"] == "on") {
34 if ($C->deleted != $deleted) {
35 $C->deleted = $deleted;
38 $plist = $_POST["comp:$compid:projects"];
39 if (is_array($plist)) {
42 if ($plist != $C->getProjects()) {
43 $C->setProjects($plist);
47 $CS = MTrackChangeset::begin("component:$compid",
48 "Edit Component $C->name");
55 header("Location: ${ABSWEB}admin/");
59 mtrack_head("Administration - Components");
61 echo "<form method='post'>";
62 echo "<br><b>Components</b><br>\n";
63 echo "<table><tr><th>Name</th><th>Projects</th><th>Deleted</th></tr>\n";
66 foreach (MTrackDB::q('select projid, name, shortname from projects
67 order by name')->fetchAll() as $row) {
68 if ($row[1] != $row[2]) {
69 $projects[$row[0]] = $row[1] . " ($row[2])";
71 $projects[$row[0]] = $row[1];
76 foreach (MTrackDB::q('select compid, projid from components_by_project')
77 ->fetchAll() as $row) {
78 $p_by_c[$row[0]][$row[1]] = $row[1];
81 foreach (MTrackDB::q('select compid, name, deleted from components order by name')->fetchAll() as $row) {
82 $compid = (int)$row[0];
83 $name = htmlentities($row[1], ENT_QUOTES, 'utf-8');
84 $del = $row[2] ? ' checked="checked" ' : '';
86 "<td><input type='text' name='comp:$compid:name' value='$name'></td>" .
87 "<td>" . mtrack_multi_select_box("comp:$compid:projects",
88 "(select to add)", $projects, $p_by_c[$compid]) .
90 "<td><input type='checkbox' name='comp:$compid:deleted' $del></td>" .
94 echo "<tr><td><input type='text' name='newcomponent' value=''></td>" .
95 "<td>" . mtrack_multi_select_box('newcomponentprojects',
96 "(select to add)", $projects) .
97 "</td><td>Add a new Component</td></tr>\n";
101 echo "<button>Save Changes</button></form>";