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 >
Encoding:
Text File  |  2004-03-08  |  11.3 KB  |  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.  
  36. $max_rows = isset($_REQUEST['max_rows']) ? $_REQUEST['max_rows'] : $_SESSION['GO_SESSION']['max_rows_list'];
  37. $first = isset($_REQUEST['first']) ? $_REQUEST['first'] : 0;
  38.  
  39. //check if we are included from the addressbook and if we have a contact related to us
  40. $projects_module_url = isset($projects_module_url) ? $projects_module_url : $GO_MODULES->url;
  41. $contact_id = isset($contact_id) ? $contact_id : 0;
  42. 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 />';
  43.  
  44.  
  45. if ($timer = $projects->get_timer($GO_SECURITY->user_id))
  46. {
  47.     echo     '<table border="0" class="alert"><tr><td><img src="'.$GO_THEME->images['alert'].'" border="0" /></td>'.
  48.             '<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>';
  49. }
  50.  
  51.  
  52. //determine sorting
  53. $pm_sort_field = isset($_COOKIE['pm_sort_field']) ? $_COOKIE['pm_sort_field'] : 'name';
  54. $pm_sort_direction = isset($_COOKIE['pm_sort_direction']) ? $_COOKIE['pm_sort_direction'] : 'ASC';
  55.  
  56. if ($pm_sort_direction == "DESC")
  57. {
  58.     $sort_arrow = ' <img src="'.$GO_THEME->images['arrow_down'].'" border="0" />';
  59.     $new_sort_direction = "ASC";
  60. }else
  61. {
  62.     $sort_arrow = ' <img src="'.$GO_THEME->images['arrow_up'].'" border="0" />';
  63.     $new_sort_direction = "DESC";
  64. }
  65.  
  66. $_COOKIE['pm_filter'] = isset($_COOKIE['pm_filter']) ? $_COOKIE['pm_filter'] : '';
  67. $filter = isset($_REQUEST['filter']) ? $_REQUEST['filter'] : $_COOKIE['pm_filter'];
  68.  
  69.  
  70. echo '<table border="0" cellspacing="0" cellpadding="1">';
  71. echo '<tr><td colspan="2"><table border="0"><tr><td>'.$pm_filter.':</td><td colspan="2">';
  72.  
  73. echo '<input type="hidden" name="first" value="'.$first.'" />';
  74. echo '<input type="hidden" name="max_rows" value="'.$max_rows.'" />';
  75. echo '<input type="hidden" name="post_action" value="projects" />';
  76. echo '<input type="hidden" name="new_sort_field" value="'.$pm_sort_field.'" />';
  77. echo '<input type="hidden" name="new_sort_direction" value="'.$pm_sort_direction.'" />';
  78. echo '<input type="hidden" name="delete_project_id" value="0" />';
  79.  
  80. $dropbox = new dropbox();
  81.  
  82. $dropbox->add_value('', $cmdShowAll);
  83. $dropbox->add_value(STATUS_OFFER, $pm_status_values[STATUS_OFFER]);
  84. $dropbox->add_value(STATUS_ONGOING, $pm_status_values[STATUS_ONGOING]);
  85. $dropbox->add_value(STATUS_WAITING, $pm_status_values[STATUS_WAITING]);
  86. $dropbox->add_value(STATUS_DONE, $pm_status_values[STATUS_DONE]);
  87. $dropbox->add_value(STATUS_BILLED, $pm_status_values[STATUS_BILLED]);
  88.  
  89. $dropbox->print_dropbox('filter', $filter, 'onchange="javascript:document.forms[0].submit()"');
  90.  
  91.  
  92. $count = $projects->get_authorized_projects($GO_SECURITY->user_id, $pm_sort_field, $pm_sort_direction, $first, $max_rows, $filter, $contact_id);
  93. echo '</td></tr></table></td><td colspan="99" class="small" align="right">'.$count.' '.$pm_projects_count.'</td></tr>';
  94.  
  95. $contacts_module = $GO_MODULES->get_module('addressbook');
  96. $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'])));
  97.  
  98. echo '<tr height="20">';
  99.  
  100. echo '<td class="TableHead2" width="16"></td>';
  101.  
  102. echo '<td class="TableHead2" width="100" nowrap><a class="TableHead2" href="javascript:_sort(\'name\',\''.$new_sort_direction.'\');">'.$strName.'</a>';
  103. if ($pm_sort_field == 'name')
  104. {
  105.     echo $sort_arrow;
  106. }
  107. echo '</td>';
  108.  
  109. echo '<td class="TableHead2" width="100" nowrap><a class="TableHead2" href="javascript:_sort(\'start_date\',\''.$new_sort_direction.'\');">'.$pm_start_date.'</a>';
  110. if ($pm_sort_field == 'start_date')
  111. {
  112.     echo $sort_arrow;
  113. }
  114. echo '</td>';
  115.  
  116. echo '<td class="TableHead2" width="100" nowrap><a class="TableHead2" href="javascript:_sort(\'end_date\',\''.$new_sort_direction.'\');">'.$pm_end_date.'</a>';
  117. if ($pm_sort_field == 'end_date')
  118. {
  119.     echo $sort_arrow;
  120. }
  121. echo '</td>';
  122.  
  123. echo '<td class="TableHead2" width="100" nowrap><a class="TableHead2" href="javascript:_sort(\'status\',\''.$new_sort_direction.'\');">'.$pm_status.'</a>';
  124. if ($pm_sort_field == 'status')
  125. {
  126.     echo $sort_arrow;
  127. }
  128. echo '</td>';
  129.  
  130. echo '<td class="TableHead2" nowrap><a class="TableHead2" href="javascript:_sort(\'probability\',\''.$new_sort_direction.'\');">'.$pm_probability.'</a>';
  131. if ($pm_sort_field == 'probability')
  132. {
  133.     echo $sort_arrow;
  134. }
  135. echo '</td>';
  136.  
  137. if ($has_contacts_module && $contact_id == 0)
  138. {
  139.     echo '<td class="TableHead2">'.$pm_client.'</td>';
  140. }
  141. echo '<td class="TableHead2" colspan="3"></td></tr>';
  142.  
  143.  
  144. if ($count > 0)
  145. {
  146.  
  147.     $time = get_time();
  148.  
  149.     while ($projects->next_record())
  150.     {
  151.         echo '<tr height="18"><td>';
  152.         if ($projects->f('status') < 4 && $projects->f('end_date') < get_time())
  153.         {
  154.             echo '<img border="0" src="'.$GO_THEME->images['alert'].'" alt="'.$pm_alert.'" />';
  155.         }else
  156.         {
  157.             switch($projects->f('status'))
  158.             {
  159.                 case '5':
  160.                     echo '<img border="0" src="'.$GO_THEME->images['ok'].'" alt="'.$pm_status_values[5].'" />';
  161.                 break;
  162.  
  163.                 case '4':
  164.                     echo '<img border="0" src="'.$GO_THEME->images['ok'].'" alt="'.$pm_status_values[4].'" />';
  165.                 break;
  166.  
  167.                 case '3':
  168.                     echo '<img border="0" src="'.$GO_THEME->images['clock'].'" alt="'.$pm_status_values[3].'" />';
  169.                 break;
  170.  
  171.                 case '2':
  172.                     echo '<img border="0" src="'.$GO_THEME->images['ongoing'].'" alt="'.$pm_status_values[2].'" />';
  173.                 break;
  174.  
  175.                 case '1':
  176.                     echo '<img border="0" src="'.$GO_THEME->images['offer'].'" alt="'.$pm_status_values[1].'" />';
  177.                 break;
  178.  
  179.             }
  180.         }
  181.  
  182.         $project_name = ($projects->f('description') == '') ? $projects->f('name') : $projects->f('name').' ('.$projects->f('description').')';
  183.         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>';
  184.         echo '<td nowrap>'.date($_SESSION['GO_SESSION']['date_format'], $projects->f('start_date')).'</td>';
  185.         echo '<td nowrap>'.date($_SESSION['GO_SESSION']['date_format'], $projects->f('end_date')).'</td>';
  186.         echo '<td nowrap>'.$pm_status_values[(int) $projects->f('status')].'</td>';
  187.         echo '<td nowrap>'.$projects->f('probability').'%</td>';
  188.         if ($has_contacts_module && $contact_id == 0)
  189.         {
  190.             echo "<td nowrap>".show_contact($projects->f('contact_id'))."   </td>";
  191.         }
  192.  
  193.         if (!$timer)
  194.         {
  195.             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>';
  196.             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>';
  197.         }elseif($timer['project_id'] == $projects->f('id'))
  198.         {
  199.             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>';
  200.         }else
  201.         {
  202.             echo '<td colspan="2"> </td>';
  203.         }
  204.         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";
  205.         echo '<tr><td colspan="99" height="1"><img src="'.$GO_THEME->images['cccccc'].'" border="0" height="1" width="100%" /></td></tr>';
  206.  
  207.     }
  208.     $links = '';
  209.     $max_links=10;
  210.     if ($max_rows != 0)
  211.     {
  212.         if ($count > $max_rows)
  213.         {
  214.             $links = '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td>';
  215.             $next_start = $first+$max_rows;
  216.             $previous_start = $first-$max_rows;
  217.             if ($first != 0)
  218.             {
  219.                 $links .= '<a href="javascript:change_list(0, '.$max_rows.');"><<</a> ';
  220.                 $links .= '<a href="javascript:change_list('.$previous_start.', '.$max_rows.');">'.$cmdPrevious.'</a> ';
  221.             }else
  222.             {
  223.                 $links .= '<font color="#cccccc"><< '.$cmdPrevious.'</font> ';
  224.             }
  225.  
  226.             $start = ($first-(($max_links/2)*$max_rows));
  227.  
  228.             $end = ($first+(($max_links/2)*$max_rows));
  229.  
  230.             if ($start < 0)
  231.             {
  232.                 $end = $end - $start;
  233.                 $start=0;
  234.             }
  235.             if ($end > $count)
  236.             {
  237.                 $end = $count;
  238.             }
  239.             if ($start > 0)
  240.             {
  241.                 $links .= '... ';
  242.             }
  243.  
  244.             for ($i=$start;$i<$end;$i+=$max_rows)
  245.             {
  246.                 $page = ($i/$max_rows)+1;
  247.                 if ($i==$first)
  248.                 {
  249.                     $links .= '<b><i>'.$page.'</i></b> ';
  250.                 }else
  251.                 {
  252.                     $links .= '<a href="'.$_SERVER['PHP_SELF'].'?post_action=projects&first='.$i.'">'.$page.'</a> ';
  253.                 }
  254.             }
  255.  
  256.             if ($end < $count)
  257.             {
  258.                 $links .= '... ';
  259.             }
  260.  
  261.             $last_page = floor($count/$max_rows)*$max_rows;
  262.  
  263.             if ($count > $next_start)
  264.             {
  265.                 $links .= '<a href="javascript:change_list('.$next_start.', '.$max_rows.');">'.$cmdNext.'</a> ';
  266.                 $links .= '<a href="javascript:change_list('.$last_page.', '.$max_rows.');">>></a>';
  267.             }else
  268.             {
  269.                 $links .= '<font color="#cccccc">'.$cmdNext.' >></font>';
  270.             }
  271.             $links .= '</td><td align="right"><a class="normal" href="javascript:change_list(0, 0);">'.$cmdShowAll.'</a></td></tr></table>';
  272.  
  273.             echo '<tr height="20"><td colspan="99">'.$links.'</td></tr>';
  274.         }
  275.     }
  276.  
  277. }else
  278. {
  279.     echo '<tr><td colspan="99">'.$pm_no_projects.'</td></tr>';
  280.     echo '<tr><td colspan="99" height="1"><img src="'.$GO_THEME->images['cccccc'].'" border="0" height="1" width="100%" /></td></tr>';
  281. }
  282. echo '</table>';
  283. ?>
  284.  
  285. <script type="text/javascript">
  286.  
  287. function _sort(field, direction)
  288. {
  289.     document.forms[0].new_sort_field.value=field;
  290.     document.forms[0].new_sort_direction.value=direction;
  291.     document.forms[0].submit();
  292. }
  293.  
  294. function delete_project(id)
  295. {
  296.     document.forms[0].delete_project_id.value=id;
  297.     document.forms[0].submit();
  298. }
  299.  
  300. function change_list(first, max_rows)
  301. {
  302.     document.forms[0].first.value=first;
  303.     document.forms[0].max_rows.value=max_rows;
  304.     document.forms[0].submit();
  305. }
  306. </script>
  307.