Commit 7df9728f authored by Jean-Paul Saman's avatar Jean-Paul Saman

Implement configure options to allow selecting the User responsible for approving the timesheets.

parent b24e9c33
...@@ -332,6 +332,7 @@ function showproject() ...@@ -332,6 +332,7 @@ function showproject()
} }
} }
} }
$timesheet_worked = $timesheet_worked + $amount; $timesheet_worked = $timesheet_worked + $amount;
if( $amount > 0 ) if( $amount > 0 )
{ {
......
<?php //Do not edit this file by hand, it will be overwritten by the configuration utility.
$TIMESHEET_CONFIG['items_per_page'] = '4';
?>
<?php
/*
* Name: Timesheet
* Directory: timesheet
* Version: 1.0.1
* Type: user
* UI Name: Timesheet
* UI Icon: timesheet.png
*/
/*
* Copyright (C) 2007, M2X
*
* Authors: Jean-Paul Saman
*
* This file is based upon configure.php from HelpDesk dotProject module
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
// Deny all but system admins
if (getDenyEdit('system')) {
$AppUI->redirect( "m=public&a=access_denied" );
}
@include_once( "./functions/admin_func.php" );
$CONFIG_FILE = "./modules/timesheet/config.php";
$AppUI->savePlace();
// Pull all users
$q = new DBQuery;
$q->addQuery('user_id, contact_first_name, contact_last_name');
$q->addTable('users');
$q->addTable('contacts');
$q->addWhere('user_contact = contact_id');
$q->addOrder('contact_last_name, contact_first_name');
$q->exec();
$users = array();
while ( $row = $q->fetchRow()) {
$users[$row['user_id']] = $row['contact_last_name'] . ', ' . $row['contact_first_name'];
}
/* All config options, their descriptions and their default values are defined
* here. Add new config options here. Type can be "checkbox", "text", "radio" or
* "select". If the type is "radio," it must include a set of buttons. If it's
* "select" then be sure to include a 'list' entry with the options. if the key
* starts with headingXXX then it will just display the contents on the value.
* This is used for grouping.
*/
$config_options = array(
"heading1" => $AppUI->_('Timesheet rights'),
"items_per_page" => array(
"description" => $AppUI->_('Approval by'),
"value" => '',
'type' => 'select',
'list' => $users
)
);
//if this is a submitted page, overwrite the config file.
if(dPgetParam( $_POST, "Save", '' )!='')
{
if (is_writable($CONFIG_FILE)) {
if (!$handle = fopen($CONFIG_FILE, 'w')) {
$AppUI->setMsg( $CONFIG_FILE." ".$AppUI->_('cannot be opened'), UI_MSG_ERROR );
exit;
}
if (fwrite($handle, "<?php //Do not edit this file by hand, it will be overwritten by the configuration utility. \n") === FALSE) {
$AppUI->setMsg( $CONFIG_FILE." ".$AppUI->_('cannot be written to'), UI_MSG_ERROR );
exit;
} else {
foreach ($config_options as $key=>$value){
if(substr($key,0,7)=='heading') continue;
$val="";
switch($value['type']){
case 'checkbox':
$val = isset($_POST[$key])?"1":"0";
break;
case 'text':
$val = isset($_POST[$key])?$_POST[$key]:"";
break;
case 'select':
$val = isset($_POST[$key])?$_POST[$key]:"0";
break;
case 'radio':
$val = $_POST[$key];
break;
default:
break;
}
fwrite($handle, "\$TIMESHEET_CONFIG['".$key."'] = '".$val."';\n");
}
fwrite($handle, "?>\n");
$AppUI->setMsg( $CONFIG_FILE." ".$AppUI->_('has been successfully updated'), UI_MSG_OK );
fclose($handle);
require( $CONFIG_FILE );
}
} else {
$AppUI->setMsg( $CONFIG_FILE." ".$AppUI->_('is not writable'), UI_MSG_ERROR );
}
} else if(dPgetParam( $_POST, $AppUI->_('cancel'), '' )!=''){
$AppUI->redirect("m=system&a=viewmods");
}
//$HELPDESK_CONFIG = array();
require_once( $CONFIG_FILE );
//Read the current config values from the config file and update the array.
foreach ($config_options as $key=>$value){
if(isset($TIMESHEET_CONFIG[$key])){
$config_options[$key]['value']=$HELPDESK_CONFIG[$key];
}
}
// setup the title block
$titleBlock = new CTitleBlock( 'Configure Timesheet Module', 'timesheet.png', $m, "$m.$a" );
$titleBlock->addCrumb( "?m=system", "System Admin" );
$titleBlock->addCrumb( "?m=system&a=viewmods", "Modules" );
$titleBlock->show();
?>
<form method="post">
<table class="std">
<?php
foreach ($config_options as $key=>$value){
?>
<tr>
<?php
// the key starts with hr, then just display the value
if(substr($key,0,7)=='heading'){ ?>
<th align="center" colspan="2"><?=$value?></th>
<?php } else { ?>
<td align="right"><?=$value['description']?></td>
<td><?php
switch($value['type']){
case 'checkbox': ?>
<input type="checkbox" name="<?=$key?>" <?=$value['value']?"checked=\"checked\"":""?>>
<?php
break;
case 'text': ?>
<input type="text" name="<?=$key?>" value="<?=$value['value']?>">
<?php
break;
case 'select':
print arraySelect( $value["list"], $key, 'class="text" size="1" id="' . $key . '" ' . $value["events"], $value["value"] );
break;
case 'radio':
foreach ($value['buttons'] as $v => $n) {?>
<label><input type="radio" name="<?php echo $key; ?>" id="<?php echo $key; ?>" value=<?php echo $v; ?> <?php echo (($value['value'] == $v)?"checked":""); ?> <?php echo $value['events']; ?>> <?php echo $n;?></label>
<?php }
break;
default:
break;
}
?></td>
<?php
}
?>
</tr>
<?php
}
?>
<tr>
<td colspan="2" align="right"><input type="Submit" name="Cancel" value="<?=$AppUI->_('cancel')?>">
<input type="Submit" name="Save" value="<?=$AppUI->_('save')?>"></td>
</tr>
</table>
</form>
...@@ -47,11 +47,11 @@ if (@$a == 'setup') { ...@@ -47,11 +47,11 @@ if (@$a == 'setup') {
class CSetupTimesheet { class CSetupTimesheet {
// function configure() { // configure this module function configure() { // configure this module
// global $AppUI; global $AppUI;
// $AppUI->redirect( 'm=timesheet&a=configure' ); // load module specific configuration page $AppUI->redirect( 'm=timesheet&a=configure' ); // load module specific configuration page
// return true; return true;
// } }
function remove() { function remove() {
$q = new DBQuery; $q = new DBQuery;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment