Made records with 0 duration legal.
authorNik Okuntseff <support@anuko.com>
Tue, 16 Aug 2016 18:40:07 +0000 (18:40 +0000)
committerNik Okuntseff <support@anuko.com>
Tue, 16 Aug 2016 18:40:07 +0000 (18:40 +0000)
WEB-INF/lib/ttTimeHelper.class.php
WEB-INF/templates/footer.tpl
WEB-INF/templates/mobile/time.tpl
WEB-INF/templates/mobile/time_delete.tpl
WEB-INF/templates/time.tpl
WEB-INF/templates/time_delete.tpl
mobile/time.php
mobile/time_edit.php
time.php
time_edit.php

index 87b5aea..a2dade9 100644 (file)
@@ -87,18 +87,12 @@ class ttTimeHelper {
     if ($value == '24:00' || $value == '2400') return true;
 
     if (preg_match('/^([0-1]{0,1}[0-9]|2[0-3]):?[0-5][0-9]$/', $value )) { // 0:00 - 23:59, 000 - 2359
-      if ('00:00' == ttTimeHelper::normalizeDuration($value))
-        return false;
       return true;
     }
     if (preg_match('/^([0-1]{0,1}[0-9]|2[0-4])h?$/', $value )) { // 0, 1 ... 24
-      if ('00:00' == ttTimeHelper::normalizeDuration($value))
-        return false;
       return true;
     }
     if (preg_match('/^([0-1]{0,1}[0-9]|2[0-3])?[.][0-9]{1,4}h?$/', $value )) { // decimal values like 0.5, 1.25h, ... .. 23.9999h
-      if ('00:00' == ttTimeHelper::normalizeDuration($value))
-        return false;
       return true;
     }
 
index 08b96c3..20d292f 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.9.28.3522 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.9.29.3523 | 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 8a57c8c..ed83c9c 100644 (file)
@@ -226,7 +226,7 @@ function get_date() {
 {if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
         <td valign='top'>{$record.project|escape:'html'}</td>
 {/if}
-        <td align='right' valign='top'>{if $record.duration == '0:00'}<font color="#ff0000">{/if}{$record.duration}{if $record.duration == '0:00'}</font>{/if}
+        <td align='right' valign='top'>{if ($record.duration == '0:00' && $record.start <> '')}<font color="#ff0000">{/if}{$record.duration}{if ($record.duration == '0:00' && $record.start <> '')}</font>{/if}</td>
         <td align='center'>{if $record.invoice_id}&nbsp;{else}<a href='time_edit.php?id={$record.id}'>{$i18n.label.edit}</a>{/if}</td>
       </tr>
       {/foreach}
index 3afc823..bfe367a 100644 (file)
@@ -14,7 +14,7 @@
 {if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
     <td>{$time_rec.project_name|escape:'html'}</td>
 {/if}
-    <td align="right">{if $time_rec.duration<>'0:00'}{$time_rec.duration}{else}<font color="#ff0000">{$i18n.form.time.uncompleted}</font>{/if}</td>
+    <td align="right">{if ($time_rec.duration == '0:00' && $time_rec.start <> '')}<font color="#ff0000">{$i18n.form.time.uncompleted}</font>{else}{$time_rec.duration}{/if}</td>
     <td>{if $time_rec.comment}{$time_rec.comment|escape:'html'}{else}&nbsp;{/if}</td>
   </tr>
   </table>
index c36f81f..ee17d9d 100644 (file)
@@ -326,14 +326,14 @@ function get_time() {
         <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.duration}{else}<font color="#ff0000">{$i18n.form.time.uncompleted}</font>{/if}</td>
+        <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:'html'}{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'}
+      {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=''>
index 8470fc3..362ced4 100644 (file)
@@ -31,7 +31,7 @@
     <td align="right">{if $time_rec.finish<>$time_rec.start}{$time_rec.finish}{else}&nbsp;{/if}</td>
 {/if}
 {if (($smarty.const.TYPE_DURATION == $user->record_type) || ($smarty.const.TYPE_ALL == $user->record_type))}
-    <td align="right">{if $time_rec.duration<>'0:00'}{$time_rec.duration}{else}<font color="#ff0000">{$i18n.form.time.uncompleted}</font>{/if}</td>
+    <td align="right">{if ($time_rec.duration == '0:00' && $time_rec.start <> '')}<font color="#ff0000">{$i18n.form.time.uncompleted}</font>{else}{$time_rec.duration}{/if}</td>
 {/if}
     <td>{if $time_rec.comment}{$time_rec.comment|escape:'html'}{else}&nbsp;{/if}</td>
   </tr>
index 679dcad..2dfe239 100644 (file)
@@ -199,10 +199,8 @@ if ($request->isPost()) {
     if (MODE_PROJECTS_AND_TASKS == $user->tracking_mode) {
       if (!$cl_task) $err->add($i18n->getKey('error.task'));
     }
-    if (!$cl_duration) {
-      if ('0' == $cl_duration)
-        $err->add($i18n->getKey('error.field'), $i18n->getKey('label.duration'));
-      elseif ($cl_start || $cl_finish) {
+    if (strlen($cl_duration) == 0) {
+      if ($cl_start || $cl_finish) {
         if (!ttTimeHelper::isValidTime($cl_start))
           $err->add($i18n->getKey('error.field'), $i18n->getKey('label.start'));
         if ($cl_finish) {
index 452baf2..d0d3f44 100644 (file)
@@ -95,7 +95,7 @@ if ($request->isPost()) {
   $cl_billable = $time_rec['billable'];
 
   // Add an info message to the form if we are editing an uncompleted record.
-  if (($cl_start == $cl_finish) && ($cl_duration == '0:00')) {
+  if (strlen($cl_start) > 0 && $cl_start == $cl_finish && $cl_duration == '0:00') {
     $cl_finish = '';
     $cl_duration = '';
     $msg->add($i18n->getKey('form.time_edit.uncompleted'));
index 3543cce..768a809 100644 (file)
--- a/time.php
+++ b/time.php
@@ -232,10 +232,8 @@ if ($request->isPost()) {
     if (MODE_PROJECTS_AND_TASKS == $user->tracking_mode) {
       if (!$cl_task) $err->add($i18n->getKey('error.task'));
     }
-    if (!$cl_duration) {
-      if ('0' == $cl_duration)
-        $err->add($i18n->getKey('error.field'), $i18n->getKey('label.duration'));
-      elseif ($cl_start || $cl_finish) {
+    if (strlen($cl_duration) == 0) {
+      if ($cl_start || $cl_finish) {
         if (!ttTimeHelper::isValidTime($cl_start))
           $err->add($i18n->getKey('error.field'), $i18n->getKey('label.start'));
         if ($cl_finish) {
index b509fcf..d486d65 100644 (file)
@@ -95,7 +95,7 @@ if ($request->isPost()) {
   $cl_billable = $time_rec['billable'];
 
   // Add an info message to the form if we are editing an uncompleted record.
-  if (($cl_start == $cl_finish) && ($cl_duration == '0:00')) {
+  if (strlen($cl_start) > 0 && $cl_start == $cl_finish && $cl_duration == '0:00') {
     $cl_finish = '';
     $cl_duration = '';
     $msg->add($i18n->getKey('form.time_edit.uncompleted'));