home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / dotproject / modules / projects / addedit.php next >
Encoding:
PHP Script  |  2004-02-01  |  12.9 KB  |  332 lines

  1. <?php /* PROJECTS $Id: addedit.php,v 1.68 2004/02/01 14:59:22 mkozusnik Exp $ */
  2. $project_id = intval( dPgetParam( $_GET, "project_id", 0 ) );
  3.  
  4. // check permissions for this record
  5. $canEdit = !getDenyEdit( $m, $project_id );
  6. if (!$canEdit) {
  7.     $AppUI->redirect( "m=public&a=access_denied" );
  8. }
  9.  
  10. // get a list of permitted companies
  11. require_once( $AppUI->getModuleClass ('companies' ) );
  12.  
  13. $row = new CCompany();
  14. $companies = $row->getAllowedRecords( $AppUI->user_id, 'company_id,company_name', 'company_name' );
  15. $companies = arrayMerge( array( '0'=>'' ), $companies );
  16.  
  17. // pull users
  18. $sql = "SELECT user_id, CONCAT_WS(', ',user_last_name,user_first_name) FROM users ORDER BY user_last_name";
  19. $users = db_loadHashList( $sql );
  20.  
  21. // load the record data
  22. $row = new CProject();
  23.  
  24. if (!$row->load( $project_id, false ) && $project_id > 0) {
  25.     $AppUI->setMsg( 'Project' );
  26.     $AppUI->setMsg( "invalidID", UI_MSG_ERROR, true );
  27.     $AppUI->redirect();
  28. } else if (count( $companies ) < 2 && $project_id == 0) {
  29.     $AppUI->setMsg( "noCompanies", UI_MSG_ERROR, true );
  30.     $AppUI->redirect();
  31. }
  32.  
  33. // add in the existing company if for some reason it is dis-allowed
  34. if ($project_id && !array_key_exists( $row->project_company, $companies )) {
  35.     $companies[$row->project_company] = db_loadResult(
  36.         "SELECT company_name FROM companies WHERE company_id=$row->project_company"
  37.     );
  38. }
  39.  
  40. // format dates
  41. $df = $AppUI->getPref('SHDATEFORMAT');
  42.  
  43. $start_date = new CDate( $row->project_start_date );
  44.  
  45. $end_date = intval( $row->project_end_date ) ? new CDate( $row->project_end_date ) : null;
  46. $actual_end_date = intval( $row->project_actual_end_date ) ? new CDate( $row->project_actual_end_date ) : null;
  47.  
  48. // setup the title block
  49. $ttl = $project_id > 0 ? "Edit Project" : "New Project";
  50. $titleBlock = new CTitleBlock( $ttl, 'applet3-48.png', $m, "$m.$a" );
  51. $titleBlock->addCrumb( "?m=projects", "projects list" );
  52. if ($project_id != 0)
  53.   $titleBlock->addCrumb( "?m=projects&a=view&project_id=$project_id", "view this project" );
  54. $titleBlock->show();
  55. ?>
  56. <link rel="stylesheet" type="text/css" media="all" href="<?php echo $AppUI->cfg['base_url'];?>/lib/calendar/calendar-dp.css" title="blue" />
  57. <!-- import the calendar script -->
  58. <script type="text/javascript" src="<?php echo $AppUI->cfg['base_url'];?>/lib/calendar/calendar.js"></script>
  59. <!-- import the language module -->
  60. <script type="text/javascript" src="<?php echo $AppUI->cfg['base_url'];?>/lib/calendar/lang/calendar-<?php echo $AppUI->user_locale; ?>.js"></script>
  61.  
  62. <script language="javascript">
  63. function setColor(color) {
  64.     var f = document.editFrm;
  65.     if (color) {
  66.         f.project_color_identifier.value = color;
  67.     }
  68.     //test.style.background = f.project_color_identifier.value;
  69.     document.getElementById('test').style.background = '#' + f.project_color_identifier.value;         //fix for mozilla: does this work with ie? opera ok.
  70. }
  71.  
  72. function setShort() {
  73.     var f = document.editFrm;
  74.     var x = 10;
  75.     if (f.project_name.value.length < 11) {
  76.         x = f.project_name.value.length;
  77.     }
  78.     if (f.project_short_name.value.length == 0) {
  79.         f.project_short_name.value = f.project_name.value.substr(0,x);
  80.     }
  81. }
  82.  
  83. var calendarField = '';
  84. var calWin = null;
  85.  
  86. function popCalendar( field ){
  87.     calendarField = field;
  88.     idate = eval( 'document.editFrm.project_' + field + '.value' );
  89.     window.open( 'index.php?m=public&a=calendar&dialog=1&callback=setCalendar&date=' + idate, 'calwin', 'top=250,left=250,width=280, height=250, scollbars=false' );
  90. }
  91.  
  92. /**
  93.  *    @param string Input date in the format YYYYMMDD
  94.  *    @param string Formatted date
  95.  */
  96. function setCalendar( idate, fdate ) {
  97.     fld_date = eval( 'document.editFrm.project_' + calendarField );
  98.     fld_fdate = eval( 'document.editFrm.' + calendarField );
  99.     fld_date.value = idate;
  100.     fld_fdate.value = fdate;
  101. }
  102.  
  103. function submitIt() {
  104.     var f = document.editFrm;
  105.     var msg = '';
  106.  
  107.     if (f.project_name.value.length < 3) {
  108.         msg += "\n<?php echo $AppUI->_('projectsValidName');?>";
  109.         f.project_name.focus();
  110.     }
  111.     if (f.project_color_identifier.value.length < 3) {
  112.         msg += "\n<?php echo $AppUI->_('projectsColor');?>";
  113.         f.project_color_identifier.focus();
  114.     }
  115.     if (f.project_company.options[f.project_company.selectedIndex].value < 1) {
  116.         msg += "\n<?php echo $AppUI->_('projectsBadCompany');?>";
  117.         f.project_name.focus();
  118.     }
  119.     /*
  120.     if (f.project_end_date.value > 0 && f.project_end_date.value < f.project_start_date.value) {
  121.         msg += "\n<?php echo $AppUI->_('projectsBadEndDate1');?>";
  122.     }
  123.     if (f.project_actual_end_date.value > 0 && f.project_actual_end_date.value < f.project_start_date.value) {
  124.         msg += "\n<?php echo $AppUI->_('projectsBadEndDate2');?>";
  125.     }
  126.     */
  127.     if (msg.length < 1) {
  128.         f.submit();
  129.     } else {
  130.         alert(msg);
  131.     }
  132. }
  133. </script>
  134.  
  135. <table cellspacing="0" cellpadding="4" border="0" width="100%" class="std">
  136. <form name="editFrm" action="./index.php?m=projects" method="post">
  137.     <input type="hidden" name="dosql" value="do_project_aed" />
  138.     <input type="hidden" name="project_id" value="<?php echo $project_id;?>" />
  139.     <input type="hidden" name="project_creator" value="<?php echo $AppUI->user_id;?>" />
  140.  
  141. <tr>
  142.     <td width="50%" valign="top">
  143.         <table cellspacing="0" cellpadding="2" border="0">
  144.         <tr>
  145.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Project Name');?></td>
  146.             <td width="100%">
  147.                 <input type="text" name="project_name" value="<?php echo dPformSafe( $row->project_name );?>" size="25" maxlength="50" onBlur="setShort();" class="text" />
  148.             </td>
  149.         </tr>
  150.         <tr>
  151.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Project Owner');?></td>
  152.             <td>
  153. <?php echo arraySelect( $users, 'project_owner', 'size="1" style="width:200px;" class="text"', $row->project_owner? $row->project_owner : $AppUI->user_id ) ?>
  154.             </td>
  155.         </tr>
  156.         <tr>
  157.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Company');?></td>
  158.             <td width="100%" nowrap="nowrap">
  159. <?php
  160.         echo arraySelect( $companies, 'project_company', 'class="text" size="1"', $row->project_company );
  161. ?> *</td>
  162.         </tr>
  163.         <tr>
  164.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Start Date');?></td>
  165.             <td>     <input type="hidden" name="project_start_date" value="<?php echo $start_date->format( FMT_TIMESTAMP_DATE );?>" />
  166.                 <input type="text" class="text" name="start_date" id="date1" value="<?php echo $start_date->format( $df );?>" class="text" disabled="disabled" />
  167.  
  168.                 <a href="#" onClick="popCalendar( 'start_date', 'start_date');">
  169.                     <img src="./images/calendar.gif" width="24" height="12" alt="<?php echo $AppUI->_('Calendar');?>" border="0" />
  170.                 </a>
  171.             </td>
  172.         </tr>
  173.         <tr>
  174.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Target Finish Date');?></td>
  175.             <td>    <input type="hidden" name="project_end_date" value="<?php echo $end_date ? $end_date->format( FMT_TIMESTAMP_DATE ) : '';?>" />
  176.                 <input type="text" class="text" name="end_date" id="date2" value="<?php echo $end_date ? $end_date->format( $df ) : '';?>" class="text" disabled="disabled" />
  177.  
  178.                 <a href="#" onClick="popCalendar('end_date', 'end_date');">
  179.                     <img src="./images/calendar.gif" width="24" height="12" alt="<?php echo $AppUI->_('Calendar');?>" border="0" />
  180.                 </a>
  181.             </td>
  182.         </tr>
  183.         <tr>
  184.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Target Budget');?> <?php echo $dPconfig['currency_symbol'] ?></td>
  185.             <td>
  186.                 <input type="Text" name="project_target_budget" value="<?php echo @$row->project_target_budget;?>" maxlength="10" class="text" />
  187.             </td>
  188.         </tr>
  189.         <tr>
  190.             <td colspan="2"><hr noshade="noshade" size="1"></td>
  191.         </tr>
  192. <tr>
  193.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Actual Finish Date');?></td>
  194.             <td>    <input type="hidden" name="project_actual_end_date" value="<?php echo $actual_end_date ? $actual_end_date->format( FMT_TIMESTAMP_DATE ) : '';?>" />
  195.                 <input type="text" class="text" name="actual_end_date" id="date2" value="<?php echo $actual_end_date ? $actual_end_date->format( $df ) : '';?>" class="text" disabled="disabled" />
  196.  
  197.                 <a href="#" onClick="popCalendar('actual_end_date', 'actual_end_date');">
  198.                     <img src="./images/calendar.gif" width="24" height="12" alt="<?php echo $AppUI->_('Calendar');?>" border="0" />
  199.                 </a>
  200.  
  201.  
  202.             </td>
  203.         </tr>
  204.         <tr>
  205.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Actual Budget');?> <?php echo $dPconfig['currency_symbol'] ?></td>
  206.             <td>
  207.                 <input type="text" name="project_actual_budget" value="<?php echo @$row->project_actual_budget;?>" size="10" maxlength="10" class="text"/>
  208.             </td>
  209.         </tr>
  210.         <tr>
  211.             <td colspan="2"><hr noshade="noshade" size="1"></td>
  212.         </tr>
  213.         <tr>
  214.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('URL');?></td>
  215.             <td>
  216.                 <input type="text" name="project_url" value='<?php echo @$row->project_url;?>' size="40" maxlength="255" class="text" />
  217.             </td>
  218.         </tr>
  219.         <tr>
  220.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Staging URL');?></td>
  221.             <td>
  222.                 <input type="Text" name="project_demo_url" value='<?php echo @$row->project_demo_url;?>' size="40" maxlength="255" class="text" />
  223.             </td>
  224.         </tr>
  225.         </table>
  226.     </td>
  227.     <td width="50%" valign="top">
  228.         <table cellspacing="0" cellpadding="2" border="0" width="100%">
  229.         <tr>
  230.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Short Name');?></td>
  231.             <td colspan="3">
  232.                 <input type="text" name="project_short_name" value="<?php echo dPformSafe( @$row->project_short_name ) ;?>" size="10" maxlength="10" class="text" /> *
  233.             </td>
  234.         </tr>
  235.         <tr>
  236.             <td align="right" nowrap="nowrap"><?php echo $AppUI->_('Color Identifier');?></td>
  237.             <td nowrap="nowrap">
  238.                 <input type="text" name="project_color_identifier" value="<?php echo @$row->project_color_identifier;?>" size="10" maxlength="6" onBlur="setColor();" class="text" /> *
  239.             </td>
  240.             <td nowrap="nowrap">
  241.                 <a href="#" onClick="newwin=window.open('./index.php?m=public&a=color_selector&dialog=1&callback=setColor', 'calwin', 'width=320, height=300, scollbars=false');"><?php echo $AppUI->_('change color');?></a>
  242.             </td>
  243.             <td nowrap="nowrap">
  244.                 <span id="test" title="test" style="background:#<?php echo @$row->project_color_identifier;?>;"><a href="#" onClick="newwin=window.open('./index.php?m=public&a=color_selector&dialog=1&callback=setColor', 'calwin', 'width=320, height=300, scollbars=false');"><img src="./images/shim.gif" border="1" width="40" height="20" /></a></span>
  245.             </td>
  246.         </tr>
  247.         <tr>
  248.             <td colspan="4">
  249.                 <table width="100%" bgcolor="#cccccc">
  250.                 <tr>
  251.                     <td><?php echo $AppUI->_('Status');?> *</td>
  252.                     <td nowrap="nowrap"><?php echo $AppUI->_('Progress');?></td>
  253.                     <td><?php echo $AppUI->_('Active');?>?</td>
  254.                 </tr>
  255.                 <tr>
  256.                     <td>
  257.                         <?php echo arraySelect( $pstatus, 'project_status', 'size="1" class="text"', $row->project_status, true ); ?>
  258.                     </td>
  259.                     <td>
  260.                         <strong><?php echo intval(@$row->project_percent_complete);?> %</strong>
  261.                     </td>
  262.                     <td>
  263.                         <input type="checkbox" value="1" name="project_active" <?php echo $row->project_active||$project_id==0 ? 'checked="checked"' : '';?> />
  264.                     </td>
  265.                 </tr>
  266.                 </table>
  267.             </td>
  268.         </tr>
  269.         <!-- BEGIN Handco patch -->
  270.         <?php  
  271.             if ($project_id != 0) {
  272.                 $sql = "SELECT COUNT(task_id) as count FROM tasks WHERE task_project = $project_id";
  273.                 $result = db_loadResult ($sql);
  274.                 $canImportTasks = $result == 0;
  275.             } else
  276.                 $canImportTasks = true;
  277.                 
  278.             if ($canImportTasks) { // We provide task import only for an empty project
  279.                 
  280.                 // Retrieve projects that the user can access
  281.                 $objProject = new CProject();
  282.                 $allowedProjects = $objProject->getAllowedRecords( $AppUI->user_id, 'project_id,project_name', 'project_name' );
  283.  
  284.                 //retrieve the number of existing projects
  285.                 $sql = "SELECT COUNT(*) FROM projects";
  286.                 $numProj = db_loadColumn($sql);
  287.                 //echo $numProj[0];
  288.  
  289.                 // Loading project with tasks
  290.                 $sql = 'SELECT DISTINCT p.project_id, p.project_name
  291.                         FROM projects AS p , tasks AS t 
  292.                         WHERE ( t.task_project = p.project_id )';
  293.                 if ( count($allowedProjects) > 0 ) {
  294.                     $sql .= ' AND (p.project_id IN (' .
  295.                         implode (',', array_keys($allowedProjects)) . ')) ORDER BY p.project_name';
  296.                 }
  297.  
  298.                 $importList = db_loadHashList ($sql);
  299.                 $importList = arrayMerge( array( '0'=> $AppUI->_('none') ), $importList);
  300.  
  301.         ?>
  302.             <tr>
  303.                 <td align="right" nowrap="nowrap">
  304.                     <?php echo $AppUI->_('Import tasks from');?><br/>
  305.                 </td>
  306.                 <td colspan="3">
  307.                     <?php echo arraySelect( $importList, 'import_tasks_from', 'size="1" class="text"', null, false ); ?>
  308.                 </td>
  309.             </tr>
  310.         <?php } // End of task import list code?>
  311.         <!-- END Handco patch -->
  312.         <tr>
  313.             <td colspan="4">
  314.                 <?php echo $AppUI->_('Description');?><br />
  315.                 <textarea name="project_description" cols="50" rows="10" wrap="virtual" class="textarea"><?php echo dPformSafe( @$row->project_description );?></textarea>
  316.             </td>
  317.         </tr>
  318.         </table>
  319.     </td>
  320. </tr>
  321. <tr>
  322.     <td>
  323.         <input class="button" type="button" name="cancel" value="<?php echo $AppUI->_('cancel');?>" onClick="javascript:if(confirm('Are you sure you want to cancel.')){location.href = './index.php?m=projects';}" />
  324.     </td>
  325.     <td align="right">
  326.         <input class="button" type="button" name="btnFuseAction" value="<?php echo $AppUI->_('submit');?>" onClick="submitIt();" />
  327.     </td>
  328. </tr>
  329. </form>
  330. </table>
  331. * <?php echo $AppUI->_('requiredField');?>
  332.