3 * Project Management Facility
5 * Copyright 1999/2000, Sourceforge.net Tim Perdue
6 * Copyright 2002 GForge, LLC, Tim Perdue
7 * Copyright 2010, FusionForge Team
8 * Copyright (C) 2011 Alain Peyrat - Alcatel-Lucent
9 * http://fusionforge.org
11 * This file is part of FusionForge. FusionForge is free software;
12 * you can redistribute it and/or modify it under the terms of the
13 * GNU General Public License as published by the Free Software
14 * Foundation; either version 2 of the Licence, or (at your option)
17 * FusionForge is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
22 * You should have received a copy of the GNU General Public License along
23 * with FusionForge; if not, write to the Free Software Foundation, Inc.,
24 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
27 require_once $gfcommon.'pm/ProjectGroup.class.php';
29 function pm_header($params) {
30 // XXX ogi: What to do with these?
31 global $group_id,$is_pm_page,$words,$group_project_id,$HTML,$order,$pg;
33 if (!forge_get_config('use_pm')) {
37 //required by site_project_header
38 $params['group']=$group_id;
39 $params['toptab']='pm';
41 //only projects can use the bug tracker, and only if they have it turned on
42 $project = group_get_object($group_id);
43 if (!$project || !is_object($project)) {
47 if (!$project->usesPm()) {
48 exit_disabled('home');
53 $labels[] = _('View Subprojects');
54 $links[] = '/pm/?group_id='.$group_id;
56 if ($group_project_id) {
57 $labels[] = (($pg) ? $pg->getName() : '');
58 $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=browse';
59 if (session_loggedin()) {
60 $labels[] = _('Add Task');
61 $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=addtask';
63 if ($group_project_id) {
66 $gantt_url = "/pm/task.php?group_id=$group_id&group_project_id=$group_project_id&func=ganttpage";
67 $gantt_title = _('Gantt Chart');
68 $gantt_winopt = 'scrollbars=yes,resizable=yes,toolbar=no,height=' . $gantt_height . ',width=' . $gantt_width;
69 $labels[] = $gantt_title;
70 $links[] = $gantt_url . '" onclick="window.open(this.href, \'' . preg_replace('/\s/' , '_' , $gantt_title)
71 . '\', \'' . $gantt_winopt . '\'); return false;';
73 //upload/download as CSV files
74 // $labels[] = _('Download as CSV');
75 // $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=downloadcsv';
76 // $labels[] = _('Upload CSV');
77 // $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=uploadcsv';
79 // Import/Export using CSV files.
80 $labels[] = _('Import/Export CSV');
81 $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=csv';
84 if ($pg && is_object($pg) && forge_check_perm ('pm', $pg->getID(), 'manager')) {
85 $labels[] = _('Reporting');
86 $links[] = '/pm/reporting/?group_id='.$group_id;
87 $labels[] = _('Administration');
88 $links[] = '/pm/admin/?group_id='.$group_id.'&group_project_id='.$group_project_id.'&update_pg=1';
89 } else if (forge_check_perm ('pm_admin', $group_id)) {
90 $labels[] = _('Reporting');
91 $links[] = '/pm/reporting/?group_id='.$group_id;
92 $labels[] = _('Administration');
93 $links[] = '/pm/admin/?group_id='.$group_id;
97 $params['submenu'] = $HTML->subMenu($labels,$links);
100 site_project_header($params);
103 plugin_hook ("blocks", "tasks_".$pg->getName());
106 function pm_footer($params) {
107 site_project_footer($params);
110 class ProjectGroupHTML extends ProjectGroup {
112 function ProjectGroupHTML(&$Group, $group_project_id=false, $arr=false) {
113 if (!$this->ProjectGroup($Group,$group_project_id,$arr)) {
120 function statusBox($name='status_id',$checked='xyxy',$show_100=true,$text_100='None') {
121 return html_build_select_box($this->getStatuses(),$name,$checked,$show_100,$text_100);
124 function categoryBox($name='category_id',$checked='xzxz',$show_100=true,$text_100='None') {
125 return html_build_select_box($this->getCategories(),$name,$checked,$show_100,$text_100);
128 function groupProjectBox($name='group_project_id',$checked='xzxz',$show_100=true,$text_100='None') {
129 $res=db_query_params ('SELECT group_project_id,project_name
130 FROM project_group_list
132 array($this->Group->getID()));
133 return html_build_select_box($res,$name,$checked,$show_100,$text_100);
136 function percentCompleteBox($name='percent_complete',$selected=0) {
138 <select name="'.$name.'">';
140 <option value="0">'._('Not Started'). '</option>';
141 for ($i=5; $i<101; $i+=5) {
143 <option value="'.$i.'"';
145 echo ' selected="selected"';
147 echo '>'.$i.'%</option>';
153 function showMonthBox($name,$select_month=0) {
155 <select name="'.$name.'" size="1">';
168 '12'=>_('December'));
170 for ($i=1; $i<=count($monthlist); $i++) {
171 if ($i == $select_month) {
173 <option selected="selected" value="'.$i.'">'.$monthlist[$i].'</option>';
176 <option value="'.$i.'">'.$monthlist[$i].'</option>';
183 function showDayBox($name,$day=1) {
185 <select name="'.$name.'" size="1">';
186 for ($i=1; $i<=31; $i++) {
189 <option selected="selected" value="'.$i.'">'.$i.'</option>';
192 <option value="'.$i.'">'.$i.'</option>';
199 function showYearBox($name,$year=1) {
201 <select name="'.$name.'" size="1">';
202 for ($i=1999; $i<=2038; $i++) {
205 <option selected="selected" value="'.$i.'">'.$i.'</option>';
208 <option value="'.$i.'">'.$i.'</option>';
215 function showHourBox($name,$hour=1) {
218 <select name="'.$name.'" size="1">';
219 for ($i=0; $i<=23; $i++) {
222 <option selected="selected" value="'.$i.'">'.$i.'</option>';
225 <option value="'.$i.'">'.$i.'</option>';
232 function showMinuteBox($name,$minute=0) {
233 echo ' <select name="'.$name.'" size="1">';
234 for ($i=0; $i<=45; $i=$i+15) {
236 echo ' <option selected="selected" value="'.$i.'">'.$i.'</option>';
239 <option value="'.$i.'">'.$i.'</option>';
246 function renderAssigneeList($assignee_ids) {
247 $techs =& user_get_objects($assignee_ids);
248 for ($i=0; $i<count($techs); $i++) {
249 $return .= $techs[$i]->getRealName().'<br />';
258 // c-file-style: "bsd"