Enhanced week view ith a list of editable records.
authoranuko <support@anuko.com>
Sat, 6 Jan 2018 18:42:15 +0000 (18:42 +0000)
committeranuko <support@anuko.com>
Sat, 6 Jan 2018 18:42:15 +0000 (18:42 +0000)
WEB-INF/lib/ttWeekViewHelper.class.php
WEB-INF/templates/footer.tpl
WEB-INF/templates/week.tpl
week.php

index ad21be0..5c03a37 100644 (file)
@@ -72,7 +72,7 @@ class ttWeekViewHelper {
       from tt_log l
       $left_joins
       where l.date >= '$start_date' and l.date <= '$end_date' and l.user_id = $user_id and l.status = 1
-      order by p.name, t.name, l.date, l.start, l.id";
+      order by l.date, p.name, t.name, l.start, l.id";
     $res = $mdb2->query($sql);
     if (!is_a($res, 'PEAR_Error')) {
       while ($val = $res->fetchRow()) {
@@ -132,12 +132,9 @@ class ttWeekViewHelper {
   //     'day_6' => array('control_id' => '2_day_6', 'tt_log_id' => null, 'duration' => null)
   //   )
   // );
-  static function getDataForWeekView($user_id, $start_date, $end_date, $dayHeaders) {
+  static function getDataForWeekView($records, $dayHeaders) {
     global $i18n;
 
-    // Start by obtaining all records in interval.
-    $records = ttWeekViewHelper::getRecordsForInterval($user_id, $start_date, $end_date);
-
     $dataArray = array();
 
     // Construct the first row for a brand new entry.
index a18ab1e..3d14fea 100644 (file)
@@ -12,7 +12,7 @@
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
-          <td align="center">&nbsp;Anuko Time Tracker 1.13.7.3726 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.13.8.3727 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
             <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
             <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
             <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>
index 34edf92..42f24f1 100644 (file)
     <td>{$forms.weekTimeForm.week_durations.control}</td>
   </tr>
 </table>
+
+<table>
+  <tr>
+    <td align="center" colspan="2">{$forms.weekTimeForm.btn_submit.control}</td>
+  </tr>
+  <tr><td>&nbsp;</td></tr>
+</table>
+
+<table width="720">
+<tr>
+  <td valign="top">
+{if $time_records}
+      <table border="0" cellpadding="3" cellspacing="1" width="100%">
+      <tr>
+        <td width="5%" class="tableHeader">{$i18n.label.date}</td>
+  {if $user->isPluginEnabled('cl')}
+        <td width="20%" class="tableHeader">{$i18n.label.client}</td>
+  {/if}
+  {if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
+        <td class="tableHeader">{$i18n.label.project}</td>
+  {/if}
+  {if ($smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
+        <td class="tableHeader">{$i18n.label.task}</td>
+  {/if}
+  {if (($smarty.const.TYPE_START_FINISH == $user->record_type) || ($smarty.const.TYPE_ALL == $user->record_type))}
+        <td width="5%" class="tableHeader" align="right">{$i18n.label.start}</td>
+        <td width="5%" class="tableHeader" align="right">{$i18n.label.finish}</td>
+  {/if}
+        <td width="5%" class="tableHeader">{$i18n.label.duration}</td>
+        <td class="tableHeader">{$i18n.label.note}</td>
+        <td width="5%" class="tableHeader">{$i18n.label.edit}</td>
+      </tr>
+  {foreach $time_records as $record}
+      <tr bgcolor="{cycle values="#f5f5f5,#ffffff"}" {if !$record.billable} class="not_billable" {/if}>
+        <td valign="top">{$record.date}</td>
+    {if $user->isPluginEnabled('cl')}
+        <td valign="top">{$record.client|escape}</td>
+    {/if}
+    {if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
+        <td valign="top">{$record.project|escape}</td>
+    {/if}
+    {if ($smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
+        <td valign="top">{$record.task|escape}</td>
+    {/if}
+    {if (($smarty.const.TYPE_START_FINISH == $user->record_type) || ($smarty.const.TYPE_ALL == $user->record_type))}
+        <td nowrap align="right" valign="top">{if $record.start}{$record.start}{else}&nbsp;{/if}</td>
+        <td nowrap align="right" valign="top">{if $record.finish}{$record.finish}{else}&nbsp;{/if}</td>
+    {/if}
+        <td align="right" valign="top">{if ($record.duration == '0:00' && $record.start <> '')}<font color="#ff0000">{$i18n.form.time.uncompleted}</font>{else}{$record.duration}{/if}</td>
+        <td valign="top">{if $record.comment}{$record.comment|escape}{else}&nbsp;{/if}</td>
+        <td valign="top" align="center">
+    {if $record.invoice_id}
+          &nbsp;
+    {else}
+          <a href="time_edit.php?id={$record.id}">{$i18n.label.edit}</a>
+      {if ($record.duration == '0:00' && $record.start <> '')}
+          <input type="hidden" name="record_id" value="{$record.id}">
+          <input type="hidden" name="browser_date" value="">
+          <input type="hidden" name="browser_time" value="">
+          <input type="submit" id="btn_stop" name="btn_stop" onclick="browser_date.value=get_date();browser_time.value=get_time()" value="{$i18n.button.stop}">
+      {/if}
+    {/if}
+        </td>
+      </tr>
+  {/foreach}
+    </table>
+{/if}
+  </td>
+</tr>
+</table>
+{if $time_records}
 <table cellpadding="3" cellspacing="1" width="720">
   <tr>
     <td align="left">{$i18n.label.week_total}: {$week_total}</td>
   </tr>
   {/if}
 </table>
-<table>
-  <tr>
-    <td align="center" colspan="2">{$forms.weekTimeForm.btn_submit.control}</td>
-  </tr>
-</table>
+{/if}
 {$forms.weekTimeForm.close}
index 19476c8..fb2dcaa 100644 (file)
--- a/week.php
+++ b/week.php
@@ -113,8 +113,10 @@ $cl_note = trim($request->getParameter('note'));
 // Get column headers, which are day numbers in month.
 $dayHeaders = ttWeekViewHelper::getDayHeadersForWeek($startDate->toString(DB_DATEFORMAT));
 $lockedDays = ttWeekViewHelper::getLockedDaysForWeek($startDate->toString(DB_DATEFORMAT));
-// Build data array for the table. Format is described in the function..
-$dataArray = ttWeekViewHelper::getDataForWeekView($user->getActiveUser(), $startDate->toString(DB_DATEFORMAT), $endDate->toString(DB_DATEFORMAT), $dayHeaders);
+// Get already existing records.
+$records = ttWeekViewHelper::getRecordsForInterval($user->getActiveUser(), $startDate->toString(DB_DATEFORMAT), $endDate->toString(DB_DATEFORMAT));
+// Build data array for the table. Format is described in the function.
+$dataArray = ttWeekViewHelper::getDataForWeekView($records, $dayHeaders);
 // Build day totals (total durations for each day in week).
 $dayTotals = ttWeekViewHelper::getDayTotals($dataArray, $dayHeaders);
 
@@ -410,6 +412,7 @@ $smarty->assign('task_list', $task_list);
 $smarty->assign('forms', array($form->getName()=>$form->toArray()));
 $smarty->assign('onload', 'onLoad="fillDropdowns()"');
 $smarty->assign('timestring', $startDate->toString($user->date_format).' - '.$endDate->toString($user->date_format));
+$smarty->assign('time_records', $records);
 
 $smarty->assign('title', $i18n->getKey('title.time'));
 $smarty->assign('content_page_name', 'week.tpl');