home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / groupoffice-com-2.01 / modules / projects / projects.inc < prev    next >
Text File  |  2004-03-08  |  12KB  |  304 lines

  1. <?php
  2. /*
  3. Copyright Intermesh 2003
  4. Author: Merijn Schering <mschering@intermesh.nl>
  5. Version: 1.0 Release date: 08 July 2003
  6.  
  7. This program is free software; you can redistribute it and/or modify it
  8. under the terms of the GNU General Public License as published by the
  9. Free Software Foundation; either version 2 of the License, or (at your
  10. option) any later version.
  11. */
  12.  
  13.  
  14. if($task ==  'start_timer')
  15. {
  16.     $projects->start_timer($GO_SECURITY->user_id, $_REQUEST['project_id']);
  17. }
  18.  
  19. if (isset($_REQUEST['delete_project_id']) && $_REQUEST['delete_project_id'] > 0)
  20. {
  21.     $project = $projects->get_project($_REQUEST['delete_project_id']);
  22.     if ($GO_SECURITY->has_permission($GO_SECURITY->user_id, $project['acl_write']))
  23.     {
  24.         if($projects->delete_project($_REQUEST['delete_project_id']))
  25.         {
  26.             $GO_SECURITY->delete_acl($project['acl_write']);
  27.             $GO_SECURITY->delete_acl($project['acl_read']);
  28.         }
  29.     }else
  30.     {
  31.         $feedback = '<p class="Error">'.$strAccessDenied.'</p>';
  32.     }
  33. }
  34.  
  35. $max_rows = isset($_REQUEST['max_rows']) ? $_REQUEST['max_rows'] : $_SESSION['GO_SESSION']['max_rows_list'];
  36. $first = isset($_REQUEST['first']) ? $_REQUEST['first'] : 0;
  37.  
  38. //check if we are included from the addressbook and if we have a contact related to us
  39. $projects_module_url = isset($projects_module_url) ? $projects_module_url : $GO_MODULES->url;
  40. $contact_id = isset($contact_id) ? $contact_id : 0;
  41. echo '<a href="'.$projects_module_url.'project.php?contact_id='.$contact_id.'&return_to='.rawurlencode($link_back).'" class="normal">'.$pm_new_project.'</a><br /><br />';
  42.  
  43.  
  44. if ($timer = $projects->get_timer($GO_SECURITY->user_id))
  45. {
  46.     echo     '<table border="0" class="alert"><tr><td><img src="'.$GO_THEME->images['alert'].'" border="0" /></td>'.
  47.             '<td><a class="normal" href="'.$projects_module_url.'project.php?task=stop_timer&project_id='.$timer['project_id'].'&return_to='.rawurlencode($link_back).'&contact_id='.$contact_id.'">'.$pm_clocked_in.'</a></td></tr></table>';
  48. }
  49.  
  50.  
  51. //determine sorting
  52. $pm_sort_field = isset($_COOKIE['pm_sort_field']) ? $_COOKIE['pm_sort_field'] : 'name';
  53. $pm_sort_direction = isset($_COOKIE['pm_sort_direction']) ? $_COOKIE['pm_sort_direction'] : 'ASC';
  54.  
  55. if ($pm_sort_direction == "DESC")
  56. {
  57.     $sort_arrow = ' <img src="'.$GO_THEME->images['arrow_down'].'" border="0" />';
  58.     $new_sort_direction = "ASC";
  59. }else
  60. {
  61.     $sort_arrow = ' <img src="'.$GO_THEME->images['arrow_up'].'" border="0" />';
  62.     $new_sort_direction = "DESC";
  63. }
  64.  
  65. $_COOKIE['pm_filter'] = isset($_COOKIE['pm_filter']) ? $_COOKIE['pm_filter'] : '';
  66. $filter = isset($_REQUEST['filter']) ? $_REQUEST['filter'] : $_COOKIE['pm_filter'];
  67.  
  68. echo '<table border="0" cellspacing="0" cellpadding="1">';
  69. echo '<tr><td colspan="2"><table border="0"><tr><td>'.$pm_filter.':</td><td colspan="2">';
  70.  
  71. echo '<input type="hidden" name="first" value="'.$first.'" />';
  72. echo '<input type="hidden" name="max_rows" value="'.$max_rows.'" />';
  73. echo '<input type="hidden" name="post_action" value="projects" />';
  74. echo '<input type="hidden" name="new_sort_field" value="'.$pm_sort_field.'" />';
  75. echo '<input type="hidden" name="new_sort_direction" value="'.$pm_sort_direction.'" />';
  76. echo '<input type="hidden" name="delete_project_id" value="0" />';
  77.  
  78. $dropbox = new dropbox();
  79.  
  80. $dropbox->add_value('', $cmdShowAll);
  81. $dropbox->add_value(STATUS_OFFER, $pm_status_values[STATUS_OFFER]);
  82. $dropbox->add_value(STATUS_ONGOING, $pm_status_values[STATUS_ONGOING]);
  83. $dropbox->add_value(STATUS_WAITING, $pm_status_values[STATUS_WAITING]);
  84. $dropbox->add_value(STATUS_DONE, $pm_status_values[STATUS_DONE]);
  85. $dropbox->add_value(STATUS_BILLED, $pm_status_values[STATUS_BILLED]);
  86.  
  87. $dropbox->print_dropbox('filter', $filter, 'onchange="javascript:document.forms[0].submit()"');
  88.  
  89. $count = $projects->get_authorized_projects($GO_SECURITY->user_id, $pm_sort_field, $pm_sort_direction, $first, $max_rows, $filter, $contact_id);
  90. echo '</td></tr></table></td><td colspan="99" class="small" align="right">'.$count.' '.$pm_projects_count.'</td></tr>';
  91.  
  92. $contacts_module = $GO_MODULES->get_module('addressbook');
  93. $has_contacts_module = ($contacts_module && ($GO_SECURITY->has_permission($GO_SECURITY->user_id, $contacts_module['acl_read']) || $GO_SECURITY->has_permission($GO_SECURITY->user_id, $contacts_module['acl_write'])));
  94.  
  95. echo '<tr height="20">';
  96.  
  97. echo '<td class="TableHead2" width="16"></td>';
  98.  
  99. echo '<td class="TableHead2" width="100" nowrap><a class="TableHead2" href="javascript:_sort(\'name\',\''.$new_sort_direction.'\');">'.$strName.'</a>';
  100. if ($pm_sort_field == 'name')
  101. {
  102.     echo $sort_arrow;
  103. }
  104. echo '</td>';
  105.  
  106. echo '<td class="TableHead2" width="100" nowrap><a class="TableHead2" href="javascript:_sort(\'start_date\',\''.$new_sort_direction.'\');">'.$pm_start_date.'</a>';
  107. if ($pm_sort_field == 'start_date')
  108. {
  109.     echo $sort_arrow;
  110. }
  111. echo '</td>';
  112.  
  113. echo '<td class="TableHead2" width="100" nowrap><a class="TableHead2" href="javascript:_sort(\'end_date\',\''.$new_sort_direction.'\');">'.$pm_end_date.'</a>';
  114. if ($pm_sort_field == 'end_date')
  115. {
  116.     echo $sort_arrow;
  117. }
  118. echo '</td>';
  119.  
  120. echo '<td class="TableHead2" width="100" nowrap><a class="TableHead2" href="javascript:_sort(\'status\',\''.$new_sort_direction.'\');">'.$pm_status.'</a>';
  121. if ($pm_sort_field == 'status')
  122. {
  123.     echo $sort_arrow;
  124. }
  125. echo '</td>';
  126.  
  127. echo '<td class="TableHead2" nowrap><a class="TableHead2" href="javascript:_sort(\'probability\',\''.$new_sort_direction.'\');">'.$pm_probability.'</a>';
  128. if ($pm_sort_field == 'probability')
  129. {
  130.     echo $sort_arrow;
  131. }
  132. echo '</td>';
  133.  
  134. if ($has_contacts_module && $contact_id == 0)
  135. {
  136.     echo '<td class="TableHead2">'.$pm_client.'</td>';
  137. }
  138. echo '<td class="TableHead2" colspan="3"></td></tr>';
  139.  
  140.  
  141. if ($count > 0)
  142. {
  143.  
  144.     $time = get_time();
  145.  
  146.     while ($projects->next_record())
  147.     {
  148.         echo '<tr height="18"><td>';
  149.         if ($projects->f('status') < 4 && $projects->f('end_date') < get_time())
  150.         {
  151.             echo '<img border="0" src="'.$GO_THEME->images['alert'].'" alt="'.$pm_alert.'" />';
  152.         }else
  153.         {
  154.             switch($projects->f('status'))
  155.             {
  156.                 case '5':
  157.                     echo '<img border="0" src="'.$GO_THEME->images['ok'].'" alt="'.$pm_status_values[5].'" />';
  158.                 break;
  159.  
  160.                 case '4':
  161.                     echo '<img border="0" src="'.$GO_THEME->images['ok'].'" alt="'.$pm_status_values[4].'" />';
  162.                 break;
  163.  
  164.                 case '3':
  165.                     echo '<img border="0" src="'.$GO_THEME->images['clock'].'" alt="'.$pm_status_values[3].'" />';
  166.                 break;
  167.  
  168.                 case '2':
  169.                     echo '<img border="0" src="'.$GO_THEME->images['ongoing'].'" alt="'.$pm_status_values[2].'" />';
  170.                 break;
  171.  
  172.                 case '1':
  173.                     echo '<img border="0" src="'.$GO_THEME->images['offer'].'" alt="'.$pm_status_values[1].'" />';
  174.                 break;
  175.  
  176.             }
  177.         }
  178.  
  179.         $project_name = ($projects->f('description') == '') ? $projects->f('name') : $projects->f('name').' ('.$projects->f('description').')';
  180.         echo '</td><td nowrap><a href="'.$projects_module_url.'project.php?project_id='.$projects->f('id').'&return_to='.rawurlencode($link_back).'" class="normal" title="'.$strEdit.' \''.$projects->f('name').'\'">'.$project_name.'</a></td>';
  181.         echo '<td nowrap>'.date($_SESSION['GO_SESSION']['date_format'], $projects->f('start_date')).'</td>';
  182.         echo '<td nowrap>'.date($_SESSION['GO_SESSION']['date_format'], $projects->f('end_date')).'</td>';
  183.         echo '<td nowrap>'.$pm_status_values[(int) $projects->f('status')].'</td>';
  184.         echo '<td nowrap>'.$projects->f('probability').'%</td>';
  185.         if ($has_contacts_module && $contact_id == 0)
  186.         {
  187.             echo "<td nowrap>".show_contact($projects->f('contact_id'))."   </td>";
  188.         }
  189.  
  190.         if (!$timer)
  191.         {
  192.             echo '<td><a href="'.$projects_module_url.'project.php?task=book&project_id='.$projects->f("id").'&return_to='.rawurlencode($link_back).'&contact_id='.$contact_id.'" title="'.$pm_enter_data.'"><img src="'.$GO_THEME->images['enter_data'].'" border="0"></a></td>';
  193.             echo '<td><a href="'.$projects_module_url.'index.php?task=start_timer&project_id='.$projects->f("id").'&contact_id='.$contact_id.'&link_back='.urlencode($link_back).'" title="'.$pm_start_timer.'"><img src="'.$GO_THEME->images['clock'].'" border="0"></a></td>';
  194.         }elseif($timer['project_id'] == $projects->f('id'))
  195.         {
  196.             echo '<td></td><td><a href="'.$projects_module_url.'project.php?task=stop_timer&project_id='.$projects->f("id").'&return_to='.rawurlencode($link_back).'&contact_id='.$contact_id.'" title="'.$pm_stop_timer.'"><img src="'.$GO_THEME->images['clockout'].'" border="0"></a></td>';
  197.         }else
  198.         {
  199.             echo '<td colspan="2"> </td>';
  200.         }
  201.         echo "<td><a href='javascript:confirm_action(\"javascript:delete_project(".$projects->f("id").")\",\"".rawurlencode($strDeletePrefix."'".$project_name."'".$strDeleteSuffix)."\")' title=\"".$strDeleteItem." '".$project_name."'\"><img src=\"".$GO_THEME->images['delete']."\" border=\"0\"></a></td>\n";
  202.         echo '<tr><td colspan="99" height="1"><img src="'.$GO_THEME->images['cccccc'].'" border="0" height="1" width="100%" /></td></tr>';
  203.  
  204.     }
  205.     $links = '';
  206.     $max_links=10;
  207.     if ($max_rows != 0)
  208.     {
  209.         if ($count > $max_rows)
  210.         {
  211.             $links = '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td>';
  212.             $next_start = $first+$max_rows;
  213.             $previous_start = $first-$max_rows;
  214.             if ($first != 0)
  215.             {
  216.                 $links .= '<a href="javascript:change_list(0, '.$max_rows.');"><<</a> ';
  217.                 $links .= '<a href="javascript:change_list('.$previous_start.', '.$max_rows.');">'.$cmdPrevious.'</a> ';
  218.             }else
  219.             {
  220.                 $links .= '<font color="#cccccc"><< '.$cmdPrevious.'</font> ';
  221.             }
  222.  
  223.             $start = ($first-(($max_links/2)*$max_rows));
  224.  
  225.             $end = ($first+(($max_links/2)*$max_rows));
  226.  
  227.             if ($start < 0)
  228.             {
  229.                 $end = $end - $start;
  230.                 $start=0;
  231.             }
  232.             if ($end > $count)
  233.             {
  234.                 $end = $count;
  235.             }
  236.             if ($start > 0)
  237.             {
  238.                 $links .= '... ';
  239.             }
  240.  
  241.             for ($i=$start;$i<$end;$i+=$max_rows)
  242.             {
  243.                 $page = ($i/$max_rows)+1;
  244.                 if ($i==$first)
  245.                 {
  246.                     $links .= '<b><i>'.$page.'</i></b> ';
  247.                 }else
  248.                 {
  249.                     $links .= '<a href="'.$_SERVER['PHP_SELF'].'?post_action=projects&first='.$i.'">'.$page.'</a> ';
  250.                 }
  251.             }
  252.  
  253.             if ($end < $count)
  254.             {
  255.                 $links .= '... ';
  256.             }
  257.  
  258.             $last_page = floor($count/$max_rows)*$max_rows;
  259.  
  260.             if ($count > $next_start)
  261.             {
  262.                 $links .= '<a href="javascript:change_list('.$next_start.', '.$max_rows.');">'.$cmdNext.'</a> ';
  263.                 $links .= '<a href="javascript:change_list('.$last_page.', '.$max_rows.');">>></a>';
  264.             }else
  265.             {
  266.                 $links .= '<font color="#cccccc">'.$cmdNext.' >></font>';
  267.             }
  268.             $links .= '</td><td align="right"><a class="normal" href="javascript:change_list(0, 0);">'.$cmdShowAll.'</a></td></tr></table>';
  269.  
  270.             echo '<tr height="20"><td colspan="99">'.$links.'</td></tr>';
  271.         }
  272.     }
  273.  
  274. }else
  275. {
  276.     echo '<tr><td colspan="99">'.$pm_no_projects.'</td></tr>';
  277.     echo '<tr><td colspan="99" height="1"><img src="'.$GO_THEME->images['cccccc'].'" border="0" height="1" width="100%" /></td></tr>';
  278. }
  279. echo '</table>';
  280. ?>
  281.  
  282. <script type="text/javascript">
  283.  
  284. function _sort(field, direction)
  285. {
  286.     document.forms[0].new_sort_field.value=field;
  287.     document.forms[0].new_sort_direction.value=direction;
  288.     document.forms[0].submit();
  289. }
  290.  
  291. function delete_project(id)
  292. {
  293.     document.forms[0].delete_project_id.value=id;
  294.     document.forms[0].submit();
  295. }
  296.  
  297. function change_list(first, max_rows)
  298. {
  299.     document.forms[0].first.value=first;
  300.     document.forms[0].max_rows.value=max_rows;
  301.     document.forms[0].submit();
  302. }
  303. </script>
  304.