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 * Copyright 2013, Franck Villaume - TrivialDev
10 * http://fusionforge.org
12 * This file is part of FusionForge. FusionForge is free software;
13 * you can redistribute it and/or modify it under the terms of the
14 * GNU General Public License as published by the Free Software
15 * Foundation; either version 2 of the Licence, or (at your option)
18 * FusionForge is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License along
24 * with FusionForge; if not, write to the Free Software Foundation, Inc.,
25 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
28 require_once $gfcommon.'pm/ProjectGroup.class.php';
30 function pm_header($params) {
31 // XXX ogi: What to do with these?
32 global $group_id,$is_pm_page,$words,$group_project_id,$HTML,$order,$pg;
34 if (!forge_get_config('use_pm')) {
38 // Required by site_project_header
39 $params['group']=$group_id;
40 $params['toptab']='pm';
42 // Only projects can use the Project Manager, and only if they have it turned on
43 $project = group_get_object($group_id);
44 if (!$project || !is_object($project)) {
48 if (!$project->usesPm()) {
49 exit_disabled('home');
56 if (forge_check_perm('pm_admin', $group_id)) {
57 $labels[] = _('General Admin');
58 $links[] = '/pm/admin/?group_id='.$group_id;
62 $labels[] = _('View Subprojects');
63 $links[] = '/pm/?group_id='.$group_id;
66 if ($group_project_id) {
67 $labels[] = (($pg) ? $pg->getName() : '');
68 $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=browse';
69 if (session_loggedin()) {
70 $labels[] = _('Add Task');
71 $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=addtask';
74 if ($group_project_id) {
77 $gantt_url = "/pm/task.php?group_id=$group_id&group_project_id=$group_project_id&func=ganttpage";
78 $gantt_title = _('Gantt Chart');
79 $gantt_winopt = 'scrollbars=yes,resizable=yes,toolbar=no,height=' . $gantt_height . ',width=' . $gantt_width;
80 $labels[] = $gantt_title;
81 $links[] = $gantt_url . '" onclick="window.open(this.href, \'' . preg_replace('/\s/' , '_' , $gantt_title)
82 . '\', \'' . $gantt_winopt . '\'); return false;';
85 //upload/download as CSV files
86 // $labels[] = _('Download as CSV');
87 // $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=downloadcsv';
88 // $labels[] = _('Upload CSV');
89 // $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=uploadcsv';
91 // Import/Export using CSV files.
92 $labels[] = _('Import/Export CSV');
93 $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=csv';
97 if ($pg && is_object($pg) && forge_check_perm ('pm', $pg->getID(), 'manager')) {
98 $labels[] = _('Reporting');
99 $links[] = '/pm/reporting/?group_id='.$group_id;
101 $labels[] = _('Administration');
102 $links[] = '/pm/admin/?group_id='.$group_id.'&group_project_id='.$group_project_id.'&update_pg=1';
104 } elseif (forge_check_perm ('pm_admin', $group_id)) {
105 $labels[] = _('Reporting');
106 $links[] = '/pm/reporting/?group_id='.$group_id;
108 $labels[] = _('Administration');
109 $links[] = '/pm/admin/?group_id='.$group_id;
113 if(!empty($labels)) {
114 $params['submenu'] = $HTML->subMenu($labels, $links, $attr);
117 site_project_header($params);
120 plugin_hook ("blocks", "tasks_".$pg->getName());
123 function pm_footer($params) {
124 site_project_footer($params);
127 class ProjectGroupHTML extends ProjectGroup {
129 function ProjectGroupHTML(&$Group, $group_project_id=false, $arr=false) {
130 if (!$this->ProjectGroup($Group,$group_project_id,$arr)) {
137 function statusBox($name='status_id',$checked='xyxy',$show_100=true,$text_100='None') {
138 return html_build_select_box($this->getStatuses(),$name,$checked,$show_100,$text_100);
141 function categoryBox($name='category_id',$checked='xzxz',$show_100=true,$text_100='None') {
142 return html_build_select_box($this->getCategories(),$name,$checked,$show_100,$text_100);
145 function groupProjectBox($name='group_project_id',$checked='xzxz',$show_100=true,$text_100='None') {
146 $res=db_query_params ('SELECT group_project_id,project_name
147 FROM project_group_list
149 array($this->Group->getID()));
150 return html_build_select_box($res,$name,$checked,$show_100,$text_100);
153 function percentCompleteBox($name='percent_complete',$selected=0) {
155 <select name="'.$name.'">';
157 <option value="0">'._('Not Started'). '</option>';
158 for ($i=5; $i<101; $i+=5) {
160 <option value="'.$i.'"';
162 echo ' selected="selected"';
164 echo '>'.$i.'%</option>';
170 function showMonthBox($name,$select_month=0) {
172 <select name="'.$name.'" size="1">';
185 '12'=>_('December'));
187 for ($i=1; $i<=count($monthlist); $i++) {
188 if ($i == $select_month) {
190 <option selected="selected" value="'.$i.'">'.$monthlist[$i].'</option>';
193 <option value="'.$i.'">'.$monthlist[$i].'</option>';
200 function showDayBox($name,$day=1) {
202 <select name="'.$name.'" size="1">';
203 for ($i=1; $i<=31; $i++) {
206 <option selected="selected" value="'.$i.'">'.$i.'</option>';
209 <option value="'.$i.'">'.$i.'</option>';
216 function showYearBox($name,$year=1) {
217 $current_year = date('Y');
219 <select name="'.$name.'" size="1">';
220 for ($i=$current_year-5; $i<=$current_year+8; $i++) {
223 <option selected="selected" value="'.$i.'">'.$i.'</option>';
226 <option value="'.$i.'">'.$i.'</option>';
233 function showHourBox($name,$hour=1) {
236 <select name="'.$name.'" size="1">';
237 for ($i=0; $i<=23; $i++) {
240 <option selected="selected" value="'.$i.'">'.$i.'</option>';
243 <option value="'.$i.'">'.$i.'</option>';
250 function showMinuteBox($name,$minute=0) {
251 echo ' <select name="'.$name.'" size="1">';
252 for ($i=0; $i<=45; $i=$i+15) {
254 echo ' <option selected="selected" value="'.$i.'">'.$i.'</option>';
257 <option value="'.$i.'">'.$i.'</option>';
264 function renderAssigneeList($assignee_ids) {
265 $techs = user_get_objects($assignee_ids);
267 for ($i=0; $i<count($techs); $i++) {
268 $return .= $techs[$i]->getRealName().'<br />';
277 // c-file-style: "bsd"