// )
// );
static function getDataForWeekView($records, $dayHeaders) {
+ global $user;
global $i18n;
$dataArray = array();
$control_id = '0_'. $dayHeaders[$i];
$dataArray[0][$dayHeaders[$i]] = array('control_id' => $control_id, 'tt_log_id' => null,'duration' => null);
}
- // Construct the second row for daily comments for a brand new entry.
- $dataArray[] = array('row_id' => null,'label' => $i18n->getKey('label.notes').':'); // Insert row.
- // Insert empty cells with proper control ids.
- for ($i = 0; $i < 7; $i++) {
- $control_id = '1_'. $dayHeaders[$i];
- $dataArray[1][$dayHeaders[$i]] = array('control_id' => $control_id, 'tt_log_id' => null,'note' => null);
+ if ($user->isPluginEnabled('wvns')) {
+ // Construct the second row for daily comments for a brand new entry.
+ $dataArray[] = array('row_id' => null,'label' => $i18n->getKey('label.notes').':'); // Insert row.
+ // Insert empty cells with proper control ids.
+ for ($i = 0; $i < 7; $i++) {
+ $control_id = '1_'. $dayHeaders[$i];
+ $dataArray[1][$dayHeaders[$i]] = array('control_id' => $control_id, 'tt_log_id' => null,'note' => null);
+ }
}
// Iterate through records and build $dataArray cell by cell.
$dataArray[$pos][$dayHeaders[$i]] = array('control_id' => $control_id, 'tt_log_id' => null,'duration' => null);
}
// Insert row for comments.
- $dataArray[] = array('row_id' => $row_id.'_notes','label' => $i18n->getKey('label.notes').':');
- $pos++;
- // Insert empty cells with proper control ids.
- for ($i = 0; $i < 7; $i++) {
- $control_id = $pos.'_'. $dayHeaders[$i];
- $dataArray[$pos][$dayHeaders[$i]] = array('control_id' => $control_id, 'tt_log_id' => null,'note' => null);
+ if ($user->isPluginEnabled('wvns')) {
+ $dataArray[] = array('row_id' => $row_id.'_notes','label' => $i18n->getKey('label.notes').':');
+ $pos++;
+ // Insert empty cells with proper control ids.
+ for ($i = 0; $i < 7; $i++) {
+ $control_id = $pos.'_'. $dayHeaders[$i];
+ $dataArray[$pos][$dayHeaders[$i]] = array('control_id' => $control_id, 'tt_log_id' => null,'note' => null);
+ }
+ $pos--;
}
- $pos--;
}
// Insert actual cell data from $record (one cell only).
$dataArray[$pos][$day_header] = array('control_id' => $pos.'_'. $day_header, 'tt_log_id' => $record['id'],'duration' => $record['duration']);
- // Insert existing comment from $record into the duration cell.
- $pos++;
- $dataArray[$pos][$day_header] = array('control_id' => $pos.'_'. $day_header, 'tt_log_id' => $record['id'],'note' => $record['comment']);
+ // Insert existing comment from $record into the comment cell.
+ if ($user->isPluginEnabled('wvns')) {
+ $pos++;
+ $dataArray[$pos][$day_header] = array('control_id' => $pos.'_'. $day_header, 'tt_log_id' => $record['id'],'note' => $record['comment']);
+ }
}
return $dataArray;
}
import('DateAndTime');
// Access check.
-if (!ttAccessCheck(right_data_entry)) {
+if (!ttAccessCheck(right_data_entry) || !$user->isPluginEnabled('wv')) {
header('Location: access_denied.php');
exit();
}
$_SESSION['project'] = $cl_project;
$cl_task = $request->getParameter('task', ($request->isPost() ? null : @$_SESSION['task']));
$_SESSION['task'] = $cl_task;
+$cl_note = $request->getParameter('note', ($request->isPost() ? null : @$_SESSION['note']));
+$_SESSION['note'] = $cl_note;
// Get the data we need to display week view.
// Get column headers, which are day numbers in month.
// Define rendering class for a label field to the left of durations.
class LabelCellRenderer extends DefaultCellRenderer {
function render(&$table, $value, $row, $column, $selected = false) {
+ global $user;
+
$this->setOptions(array('width'=>200,'valign'=>'middle'));
- // Special handling for row 0, which represents a new week entry.
+
+ // Special handling for a new week entry (row 0, or 0 and 1 if we show notes).
if (0 == $row) {
- $this->setOptions(array('style'=>'text-align: center; font-weight: bold;'));
- } else if (0 != $row % 2) {
+ $this->setOptions(array('style'=>'text-align: center; font-weight: bold; vertical-align: top;'));
+ } else if ($user->isPluginEnabled('wvns') && (1 == $row)) {
+ $this->setOptions(array('style'=>'text-align: right; vertical-align: top;'));
+ } else if ($user->isPluginEnabled('wvns') && (0 != $row % 2)) {
$this->setOptions(array('style'=>'text-align: right;'));
}
// Special handling for not billable entries.
- if ($row > 1 && 0 == $row % 2) {
+ $ignoreRow = $user->isPluginEnabled('wvns') ? 1 : 0;
+ if ($row > $ignoreRow) {
$row_id = $table->getValueAtName($row,'row_id');
$billable = ttWeekViewHelper::parseFromWeekViewRow($row_id, 'bl');
if (!$billable) {
- $this->setOptions(array('style'=>'color: red;')); // TODO: style it properly in CSS.
+ if (($user->isPluginEnabled('wvns') && (0 == $row % 2)) || !$user->isPluginEnabled('wvns')) {
+ $this->setOptions(array('style'=>'color: red;')); // TODO: style it properly in CSS.
+ }
}
}
$this->setValue(htmlspecialchars($value)); // This escapes HTML for output.
// Define rendering class for a single cell for a time or a comment entry in week view table.
class WeekViewCellRenderer extends DefaultCellRenderer {
function render(&$table, $value, $row, $column, $selected = false) {
+ global $user;
+
$field_name = $table->getValueAt($row,$column)['control_id']; // Our text field names (and ids) are like x_y (row_column).
$field = new TextField($field_name);
// Disable control if the date is locked.
$field->setEnabled(false);
$field->setFormName($table->getFormName());
$field->setStyle('width: 60px;'); // TODO: need to style everything properly, eventually.
- if (0 == $row % 2)
- $field->setValue($table->getValueAt($row,$column)['duration']); // Duration for even rows.
- else {
- $field->setValue($table->getValueAt($row,$column)['note']); // Comment for odd rows.
- $field->setTitle($table->getValueAt($row,$column)['note']); // Tooltip to help view the entire comment.
+ // Provide visual separation for new entry row.
+ $rowToSeparate = $user->isPluginEnabled('wvns') ? 1 : 0;
+ if ($rowToSeparate == $row) {
+ $field->setStyle('width: 60px; margin-bottom: 40px');
+ }
+ if ($user->isPluginEnabled('wvns')) {
+ if (0 == $row % 2) {
+ $field->setValue($table->getValueAt($row,$column)['duration']); // Duration for even rows.
+ } else {
+ $field->setValue($table->getValueAt($row,$column)['note']); // Comment for odd rows.
+ $field->setTitle($table->getValueAt($row,$column)['note']); // Tooltip to help view the entire comment.
+ }
+ } else {
+ $field->setValue($table->getValueAt($row,$column)['duration']);
+ // $field->setTitle($table->getValueAt($row,$column)['note']); // Tooltip to see comment. TODO - value not available.
}
// Disable control when time entry mode is TYPE_START_FINISH and there is no value in control
// because we can't supply start and finish times in week view - there are no fields for them.
- global $user;
if (!$field->getValue() && TYPE_START_FINISH == $user->record_type) {
$field->setEnabled(false);
}
'datakeys'=>array('id','name'),
'empty'=>array(''=>$i18n->getKey('dropdown.select'))));
}
+if (!defined('NOTE_INPUT_HEIGHT'))
+ define('NOTE_INPUT_HEIGHT', 40);
+$form->addInput(array('type'=>'textarea','name'=>'note','style'=>'width: 250px; height:'.NOTE_INPUT_HEIGHT.'px;','value'=>$cl_note));
// Add other controls.
$form->addInput(array('type'=>'calendar','name'=>'date','value'=>$cl_date)); // calendar
if (!$cl_task) $err->add($i18n->getKey('error.task'));
}
}
+ // Finished validating user input for row 0.
// Process the table of values.
if ($err->no()) {
$control_id = $rowNumber.'_'.$dayHeader;
// Handle durations and comments in separate blocks of code.
- if (0 == $rowNumber % 2) {
+ if (!$user->isPluginEnabled('wvns') || (0 == $rowNumber % 2)) {
// Handle durations row here.
// Obtain existing and posted durations.
$fields['row_id'] = ttWeekViewHelper::makeRowIdentifier($record).'_0';
// Note: no need to check for a possible conflict with an already existing row
// because we are doing an insert that does not affect already existing data.
+
+ if ($user->isPluginEnabled('wvn')) {
+ $fields['note'] = $request->getParameter('note');
+ }
}
$fields['day_header'] = $dayHeader;
$fields['start_date'] = $startDate->toString(DB_DATEFORMAT); // To be able to determine date for the entry using $dayHeader.
$fields['duration'] = $postedDuration;
$fields['browser_today'] = $request->getParameter('browser_today', null);
- // Take note value from the control below duration.
- $noteRowNumber = $rowNumber + 1;
- $note_control_id = $noteRowNumber.'_'.$dayHeader;
- $fields['note'] = $request->getParameter($note_control_id);
+ if ($user->isPluginEnabled('wvns')) {
+ // Take note value from the control below duration.
+ $noteRowNumber = $rowNumber + 1;
+ $note_control_id = $noteRowNumber.'_'.$dayHeader;
+ $fields['note'] = $request->getParameter($note_control_id);
+ }
$result = ttWeekViewHelper::insertDurationFromWeekView($fields, $custom_fields, $err);
} elseif ($postedDuration == null || 0 == ttTimeHelper::toMinutes($postedDuration)) {
// Delete an already existing record here.
}
if (!$result) break; // Break out of the loop in case of first error.
- } else {
+ } else if ($user->isPluginEnabled('wvns')) {
// Handle commments row here.
// Obtain existing and posted comments.