0"; $sth = $pdo->query($sql); $opt_user = array(); foreach ($sth->fetchAll() as $row) { $opt_user[$row['userid']] = $row['displayname']; } $opt_state = db_load_enum('project', 'projstate', true, true); /* Nur für choices benötigt $local_script = " document.addEventListener('DOMContentLoaded', function () { const element = document.getElementById('flt_state[]'); const choices = new Choices(element, { removeItemButton: true, duplicateItemsAllowed: false, searchEnabled: false }); }); "; */ // ========== ACTIONS START =================================================== switch ($submit = form_get_action()) { case NULL: break; case 'add': $action = ACT_ADD; break; case 'view': $action = ACT_VIEW; break; case 'edit': $action = ACT_EDIT; break; case 'del': $action = ACT_DELETE; break; case 'filter': $flt = array(); $flt['name'] = gpc_get_string($_POST, 'flt_name'); $flt['state'] = gpc_get_string($_POST, 'flt_state'); // TODO perhaps change to checkboxes $flt['remarks'] = gpc_get_string($_POST, 'flt_remarks'); db_save_filter($flt, 205); $action = ACT_DEFAULT; break; case 'freset': db_clear_filter(205); $action = ACT_DEFAULT; break; case 'insert': $p[':vid'] = $user->vid; $p[':projname'] = gpc_get_string($_POST, 'projname'); $p[':responsible'] = gpc_get_int($_POST, 'responsible'); $p[':remarks'] = gpc_get_string($_POST, 'remarks', 150); $id = db_exec_insert('project', $p); $action = ACT_VIEW; break; case 'update': $p[':projid'] = $id; $p[':projname'] = gpc_get_string($_POST, 'projname'); $p[':startdate'] = gpc_get_date($_POST, 'startdate'); $p[':duration'] = gpc_get_int($_POST, 'duration'); $p[':projstate'] = gpc_get_string($_POST, 'projstate'); $p[':remarks'] = gpc_get_string($_POST, 'remarks', 150); db_exec_update('project', $p, 'projid'); $action = ACT_VIEW; break; case 'delete': // Security token needed! if (gpc_get_string($_POST, 'token', 16) != $_SESSION['token']) { $g_error->Add(_('Delete prohibited, invalid security token!')); $action = ACT_VIEW; break; } unset($_SESSION['token']); // TBD $action = ACT_DEFAULT; break; default: $g_error->Add(sprintf(_("Unknown function '%s'!"), $submit)); $valid = FALSE; } // ========== ACTIONS END ===================================================== require 'header.php'; // ========== PAGE CONTENT ==================================================== if ($action == ACT_DEFAULT): // ========== VARIANT: default behavior ======================================= page_caption_search($pagetitle); // load filter from db $flt = db_get_filter($user->id, 205, ['name','state','remarks']); $w = array('vid=:vid'); $p = array(':vid' => $user->vid); if ($flt->state > 0) { $w[] = 'projstate=:state'; $p[':state'] = $flt->state; } if (strlen($flt->name) > 1) { $w[] = '(projname LIKE :name)'; $p[':name'] = '%'.$flt->name.'%'; } if (strlen($flt->remarks) > 1) { $w[] = '(remarks LIKE :remarks)'; $p[':remarks'] = '%'.$flt->remarks.'%'; } $where = join(' AND ', $w); $order = ' ORDER BY projname'; // grand total of records for current vessel $sth = $pdo->prepare("SELECT COUNT(*) FROM project WHERE " . $where); try { $sth->execute($p); } catch(PDOException $e) { $g_error->Add($e->getMessage()); $g_error->Add($sql); $g_error->Add(print_r($p, true)); $g_error->PrintOut(); } $numrows = $sth->fetchColumn(); $page = gpc_get_int($_REQUEST, 'p', 1); $rows_pp = gpc_get_int($_REQUEST, 'n', $user->rows_pp); $lastpage = ceil($numrows/$rows_pp); // $grandtotal = $pdo->query("SELECT COUNT(*) FROM project WHERE " . $where)->fetchColumn(); $sql = "SELECT projid, projname, startdate, duration, projstate, remarks " . "FROM project"; $sql .= " WHERE " . $where; $sql .= $order; // if pagination: $sql .= ' LIMIT ' . ($page - 1) * $rows_pp . ',' . $rows_pp; $sth = $pdo->prepare($sql); $sth->execute($p); $res = $sth->fetchAll(); // Filter ?>
Filter
state ?? -2, FALSE); ?>
'. "\n"; echo "\n"; echo ""; echo '#'; echo "" . _('Name') . ""; echo "" . _('Start date') . ""; echo "" . _('Duration') . ""; echo "" . _('State') . ""; echo "" . _('Remarks') . ""; echo " "; echo "\n"; echo "\n"; $i = ($page - 1) * $rows_pp; $i0 = $i + 1; foreach ($res as $row) { $i++; // record number echo "\n"; echo '', $i; echo '', "\n"; echo "\n"; echo "". $row['projname'] ."\n"; echo "". $row['startdate'] ."\n"; echo "". $row['duration'] ."\n"; echo "". get_enum($row['projstate']) ."\n"; echo "". $row['remarks'] ."\n"; // Edit current record button echo ""; echo '', "\n"; echo "\n"; echo "\n"; } // Table summary table_rec_summary($i0, $i, $numrows, 6); echo "\n"; echo $pagination; form_add_button($g_scriptname); echo "

", _('Generic Tasks'), "

\n"; echo "

", _('Tasks not assigned to any project'), "

\n"; $sql = "SELECT taskid, taskname, taskstate " . "FROM task " . "WHERE vid=? AND projid IS NULL " . "ORDER BY taskid"; $sth = $pdo->prepare($sql); $sth->execute([$user->vid]); $res = $sth->fetchAll(); echo '', "\n"; echo "\n"; echo ""; echo ''; echo ""; echo ""; echo "\n"; echo "\n"; // TODO own pagination // $i = ($page - 1) * $rows_pp; $i = 0; $i0 = $i + 1; foreach ($res as $row) { $i++; // record number echo "\n"; echo '\n"; echo "\n"; echo "\n"; // Edit current record button echo "\n"; echo "\n"; } // Table summary table_rec_summary($i0, $i, count($res), 4); echo "
#", _('Name'), "", _('State'), "
', $i; echo '', "\n"; echo "", $row['taskname'], "", get_enum($row['taskstate']), ""; echo '', "\n"; echo "
\n"; form_add_button('task.php'); elseif ($action == ACT_ADD): // ========== VARIANT: add record ============================================= echo '

', _('Add Project'), "

\n"; ?>
responsible); ?>
prepare($sql); $sth->execute([$id]); $project = $sth->fetch(PDO::FETCH_OBJ); echo "

", $project->projname, "

\n"; echo '', "\n"; echo '\n"; echo '\n"; echo '\n"; echo '\n"; echo '\n"; echo '\n"; echo "
', _('Name'),"", $project->projname, "
', _('Responsible'),"", $opt_user[$project->responsible], "
', _('Start date'),"", $project->startdate, "
', _('Duration'),"", $project->duration, "
', _('State'),"", get_enum($project->projstate), "
', _('Remarks'),"", nl2br($project->remarks), "
\n"; form_view_buttons($g_scriptname, $id); // assigned tasks echo "

", _('Assigned tasks'), "

\n"; $sql = "SELECT taskid, taskname FROM task WHERE projid=? ORDER BY taskname"; $sth = $pdo->prepare($sql); $sth->execute([$id]); $res = $sth->fetchAll(); if (empty($res)) { echo "

", _('No assigned tasks found.'),"

\n"; } else { ?> "; echo ""; echo ""; // Edit current record button echo "\n"; echo "\n"; } // endforeach; echo "
#
", $i++; echo '', "\n"; echo "", $row['taskname'], ""; echo '', "\n"; echo "
\n"; } // not empty form_add_button('task.php', $id, 'projid'); elseif ($action == ACT_EDIT): // ========== VARIANT: edit single record ===================================== echo '

', _('Edit Project'), "

\n"; $sql = "SELECT projname, responsible, startdate, duration, projstate, remarks " . "FROM project " . "WHERE projid=?"; $sth = $pdo->prepare($sql); $sth->execute([$id]); $project = $sth->fetch(PDO::FETCH_OBJ); ?>
responsible); ?>
projstate); ?>
', _('Delete Project'), "\n"; else: // ========== ERROR UNKNOWN VARIANT =========================================== echo '

', _('Unknown function call: Please report to system development!'), "

\n"; endif; // $action == ... // ========== END OF VARIANTS ================================================= include 'footer.php';