3 * GForge Project Management Facility
5 * Copyright 2002 GForge, LLC
12 By Tim Perdue, Sourceforge, 11/99
13 Heavy rewrite by Tim Perdue April 2000
15 Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
18 require_once $gfcommon.'pm/ProjectGroup.class.php';
20 function pm_header($params) {
21 // XXX ogi: What to do with these?
22 global $group_id,$is_pm_page,$words,$group_project_id,$HTML,$order,$pg;
24 if (!forge_get_config('use_pm')) {
28 //required by site_project_header
29 $params['group']=$group_id;
30 $params['toptab']='pm';
32 //only projects can use the bug tracker, and only if they have it turned on
33 $project =& group_get_object($group_id);
34 if (!$project || !is_object($project)) {
38 if (!$project->usesPm()) {
39 exit_error(_('Error'),_('This Project Has Turned Off The Tasks'));
42 site_project_header($params);
43 echo '<h1>' . $params['title']. '</h1>';
48 if ($group_project_id) {
49 $labels[] = (($pg) ? $pg->getName() .': ' : '') ._('Browse tasks');
50 $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=browse';
51 if (session_loggedin()) {
52 $labels[] = _('Add task');
53 $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=addtask';
55 if ($group_project_id) {
58 $gantt_url = "/pm/task.php?group_id=$group_id&group_project_id=$group_project_id&func=ganttpage";
59 $gantt_title = _('Gantt Chart');
60 $gantt_winopt = 'scrollbars=yes,resizable=yes,toolbar=no,height=' . $gantt_height . ',width=' . $gantt_width;
61 $labels[] = $gantt_title;
62 $links[] = $gantt_url . '" onclick="window.open(this.href, \'' . preg_replace('/\s/' , '_' , $gantt_title)
63 . '\', \'' . $gantt_winopt . '\'); return false;';
65 //upload/download as CSV files
66 // $labels[] = _('Download as CSV');
67 // $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=downloadcsv';
68 // $labels[] = _('Upload CSV');
69 // $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=uploadcsv';
71 // Import/Export using CSV files.
72 $labels[] = _('Import/Export CSV');
73 $links[] = '/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=csv';
75 if ($pg && is_object($pg) && $pg->userIsAdmin()) {
76 $labels[] = _('Reporting');
77 $links[] = '/pm/reporting/?group_id='.$group_id;
78 $labels[] = _('Admin');
79 $links[] = '/pm/admin/?group_id='.$group_id.'&group_project_id='.$group_project_id.'&update_pg=1';
82 echo ($HTML->subMenu($labels,$links));
86 plugin_hook ("blocks", "tasks_".$pg->getName());
89 function pm_footer($params) {
90 site_project_footer($params);
93 class ProjectGroupHTML extends ProjectGroup {
95 function ProjectGroupHTML(&$Group, $group_project_id=false, $arr=false) {
96 if (!$this->ProjectGroup($Group,$group_project_id,$arr)) {
103 function statusBox($name='status_id',$checked='xyxy',$show_100=true,$text_100='None') {
104 return html_build_select_box($this->getStatuses(),$name,$checked,$show_100,$text_100);
107 function categoryBox($name='category_id',$checked='xzxz',$show_100=true,$text_100='None') {
108 return html_build_select_box($this->getCategories(),$name,$checked,$show_100,$text_100);
111 function groupProjectBox($name='group_project_id',$checked='xzxz',$show_100=true,$text_100='None') {
112 $res=db_query_params ('SELECT group_project_id,project_name
113 FROM project_group_list
115 array($this->Group->getID()));
116 return html_build_select_box($res,$name,$checked,$show_100,$text_100);
119 function percentCompleteBox($name='percent_complete',$selected=0) {
121 <select name="'.$name.'">';
123 <option value="0">'._('Not Started'). '</option>';
124 for ($i=5; $i<101; $i+=5) {
126 <option value="'.$i.'"';
128 echo ' selected="selected"';
130 echo '>'.$i.'%</option>';
136 function showMonthBox($name,$select_month=0) {
138 <select name="'.$name.'" size="1">';
151 '12'=>_('December'));
153 for ($i=1; $i<=count($monthlist); $i++) {
154 if ($i == $select_month) {
156 <option selected="selected" value="'.$i.'">'.$monthlist[$i].'</option>';
159 <option value="'.$i.'">'.$monthlist[$i].'</option>';
166 function showDayBox($name,$day=1) {
168 <select name="'.$name.'" size="1">';
169 for ($i=1; $i<=31; $i++) {
172 <option selected="selected" value="'.$i.'">'.$i.'</option>';
175 <option value="'.$i.'">'.$i.'</option>';
182 function showYearBox($name,$year=1) {
184 <select name="'.$name.'" size="1">';
185 for ($i=1999; $i<=2013; $i++) {
188 <option selected="selected" value="'.$i.'">'.$i.'</option>';
191 <option value="'.$i.'">'.$i.'</option>';
198 function showHourBox($name,$hour=1) {
201 <select name="'.$name.'" size="1">';
202 for ($i=0; $i<=23; $i++) {
205 <option selected="selected" value="'.$i.'">'.$i.'</option>';
208 <option value="'.$i.'">'.$i.'</option>';
215 function showMinuteBox($name,$minute=0) {
216 echo ' <select name="'.$name.'" size="1">';
217 for ($i=0; $i<=45; $i=$i+15) {
219 echo ' <option selected="selected" value="'.$i.'">'.$i.'</option>';
222 <option value="'.$i.'">'.$i.'</option>';
229 function renderAssigneeList($assignee_ids) {
230 $techs =& user_get_objects($assignee_ids);
231 for ($i=0; $i<count($techs); $i++) {
232 $return .= $techs[$i]->getRealName().'<br />';
241 // c-file-style: "bsd"