Shared time_script.tpl in mobile timer.tpl as well.
authoranuko <support@anuko.com>
Sun, 29 Jan 2017 20:53:17 +0000 (20:53 +0000)
committeranuko <support@anuko.com>
Sun, 29 Jan 2017 20:53:17 +0000 (20:53 +0000)
WEB-INF/templates/mobile/timer.tpl
WEB-INF/templates/time_script.tpl
mobile/timer.php

index c91dd4f..631f497 100644 (file)
@@ -1,160 +1,7 @@
-<script>
-// We need a few arrays to populate project and task dropdowns.
-// When client selection changes, the project dropdown must be re-populated with only relevant projects.
-// When project selection changes, the task dropdown must be repopulated similarly.
-// Format:
-// project_ids[143] = "325,370,390,400";  // Comma-separated list of project ids for client.
-// project_names[325] = "Time Tracker";   // Project name.
-// task_ids[325] = "100,101,302,303,304"; // Comma-separated list ot task ids for project.
-// task_names[100] = "Coding";            // Task name.
-
-// Prepare an array of projects ids for clients.
-var project_ids = new Array();
-{foreach $client_list as $client}
-  project_ids[{$client.id}] = "{$client.projects}";
-{/foreach}
-// Prepare an array of project names.
-var project_names = new Array();
-{foreach $project_list as $project}
-  project_names[{$project.id}] = "{$project.name|escape:'javascript'}";
-{/foreach}
-// We'll use this array to populate project dropdown when client is not selected.
-var idx = 0;
-var projects = new Array();
-{foreach $project_list as $project}
-  projects[idx] = new Array("{$project.id}", "{$project.name|escape:'javascript'}");
-  idx++;
-{/foreach}
-
-// Prepare an array of task ids for projects.
-var task_ids = new Array();
-{foreach $project_list as $project}
-  task_ids[{$project.id}] = "{$project.tasks}";
-{/foreach}
-// Prepare an array of task names.
-var task_names = new Array();
-{foreach $task_list as $task}
-  task_names[{$task.id}] = "{$task.name|escape:'javascript'}";
-{/foreach}
-
-// Mandatory top options for project and task dropdowns.
-var empty_label_project = '{$i18n.dropdown.select|escape:'javascript'}';
-var empty_label_task = '{$i18n.dropdown.select|escape:'javascript'}';
-
-// The fillDropdowns function populates the "project" and "task" dropdown controls
-// with relevant values.
-function fillDropdowns() {
-  if(document.body.contains(document.timerRecordForm.client))
-    fillProjectDropdown(document.timerRecordForm.client.value);
-
-  fillTaskDropdown(document.timerRecordForm.project.value);
-}
-
-// The fillProjectDropdown function populates the project combo box with
-// projects associated with a selected client (client id is passed here as id).
-function fillProjectDropdown(id) {
-  var str_ids = project_ids[id];
-
-  var dropdown = document.getElementById("project");
-  // Determine previously selected item.
-  var selected_item = dropdown.options[dropdown.selectedIndex].value;
-
-  // Remove existing content.
-  dropdown.length = 0;
-  var project_reset = true;
-  // Add mandatory top option.
-  dropdown.options[0] = new Option(empty_label_project, '', true);
-
-  // Populate project dropdown.
-  if (!id) {
-    // If we are here, client is not selected.
-    var len = projects.length;
-    for (var i = 0; i < len; i++) {
-      dropdown.options[i+1] = new Option(projects[i][1], projects[i][0]);
-      if (dropdown.options[i+1].value == selected_item)  {
-        dropdown.options[i+1].selected = true;
-        project_reset = false;
-      }
-    }
-  } else if (str_ids) {
-    var ids = new Array();
-    ids = str_ids.split(",");
-    var len = ids.length;
-
-    for (var i = 0; i < len; i++) {
-      var p_id = ids[i];
-      dropdown.options[i+1] = new Option(project_names[p_id], p_id);
-      if (dropdown.options[i+1].value == selected_item)  {
-        dropdown.options[i+1].selected = true;
-        project_reset = false;
-      }
-    }
-  }
-
-  // If project selection was reset - clear the tasks dropdown.
-  if (project_reset) {
-    dropdown = document.getElementById("task");
-    dropdown.length = 0;
-    dropdown.options[0] = new Option(empty_label_task, '', true);
-  }
-}
-
-// The fillTaskDropdown function populates the task combo box with
-// tasks associated with a selected project (project id is passed here as id).
-function fillTaskDropdown(id) {
-  var str_ids = task_ids[id];
-
-  var dropdown = document.getElementById("task");
-  if (dropdown == null) return; // Nothing to do.
-
-  // Determine previously selected item.
-  var selected_item = dropdown.options[dropdown.selectedIndex].value;
-
-  // Remove existing content.
-  dropdown.length = 0;
-  // Add mandatory top option.
-  dropdown.options[0] = new Option(empty_label_task, '', true);
-
-  // Populate the dropdown from the task_names array.
-  if (str_ids) {
-    var ids = new Array();
-    ids = str_ids.split(",");
-    var len = ids.length;
-
-    var idx = 1;
-    for (var i = 0; i < len; i++) {
-      var t_id = ids[i];
-      if (task_names[t_id]) {
-        dropdown.options[idx] = new Option(task_names[t_id], t_id);
-        idx++;
-      }
-    }
-
-    // If a previously selected item is still in dropdown - select it.
-    if (dropdown.options.length > 0) {
-      for (var i = 0; i < dropdown.options.length; i++) {
-        if (dropdown.options[i].value == selected_item) {
-          dropdown.options[i].selected = true;
-        }
-      }
-    }
-  }
-}
-
-function get_date() {
-  var date = new Date();
-  return date.strftime("%Y-%m-%d");
-}
-
-function get_time() {
-  var date = new Date();
-  return date.strftime("%H:%M");
-}
-</script>
+{include file="time_script.tpl"}
 
 <p><span id="hour">00</span><span id="separator">:</span><span id="min">00</span>
 
-
 <script>
 var timerID = null;
 var startDate = null;
@@ -209,7 +56,7 @@ startTimer();
 </script>
 {/if}
 
-{$forms.timerRecordForm.open}
+{$forms.timeRecordForm.open}
 <table cellspacing="4" cellpadding="7" border="0">
 <tr>
   <td>
@@ -219,34 +66,34 @@ startTimer();
     <table border="0">
 {if $user->isPluginEnabled('cl')}
     <tr><td>{$i18n.label.client}:</td></tr>
-    <tr><td>{$forms.timerRecordForm.client.control}</td></tr>
+    <tr><td>{$forms.timeRecordForm.client.control}</td></tr>
 {/if}
 {if $user->isPluginEnabled('iv')}
-    <tr><td><label>{$forms.timerRecordForm.billable.control}{$i18n.form.time.billable}</label></td></tr>
+    <tr><td><label>{$forms.timeRecordForm.billable.control}{$i18n.form.time.billable}</label></td></tr>
 {/if}
 {if ($custom_fields && $custom_fields->fields[0])}
       <tr><td>{$custom_fields->fields[0]['label']|escape}:</td></tr>
-      <tr><td>{$forms.timerRecordForm.cf_1.control}</td></tr>
+      <tr><td>{$forms.timeRecordForm.cf_1.control}</td></tr>
 {/if}
 {if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
     <tr><td>{$i18n.label.project}:</td></tr>
-    <tr><td>{$forms.timerRecordForm.project.control}</td></tr>
+    <tr><td>{$forms.timeRecordForm.project.control}</td></tr>
 {/if}
 {if ($smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
     <tr><td>{$i18n.label.task}:</td></tr>
-    <tr><td>{$forms.timerRecordForm.task.control}</td></tr>
+    <tr><td>{$forms.timeRecordForm.task.control}</td></tr>
 {/if}
     </table>
     </td>
   </tr>
   <tr>
-    <td colspan="2" height="50" align="center">{$forms.timerRecordForm.btn_start.control} {$forms.timerRecordForm.btn_stop.control}</td>
+    <td colspan="2" height="50" align="center">{$forms.timeRecordForm.btn_start.control} {$forms.timeRecordForm.btn_stop.control}</td>
   </tr>
   </table>
   </td>
 </tr>
 </table>
-{$forms.timerRecordForm.close}
+{$forms.timeRecordForm.close}
 
 <table cellspacing="3" cellpadding="0" border="0" width="100%">
 <tr>
index 624ff0e..275f74c 100644 (file)
@@ -1,5 +1,9 @@
 <script>
-// This script is shared by time.tpl and time_edit.tpl (both regular and mobile).
+// This script is shared by time.tpl, time_edit.tpl (both regular and mobile),
+// and also by WEB-INF/templates/mobile/timer.tpl.
+// This creates certain restrictions, such as the form name being "timeRecordForm",
+// variables such as $client_list, $project_list and others to be assigned in php files
+// for all pages. Things need to be tested together for all involved files.
 
 // We need a few arrays to populate project and task dropdowns.
 // When client selection changes, the project dropdown must be re-populated with only relevant projects.
index d2d3a8d..8a82bb6 100644 (file)
@@ -84,7 +84,7 @@ $uncompleted = ttTimeHelper::getUncompleted($user->getActiveUser());
 $enable_controls = ($uncompleted == null);
 
 // Elements of timeRecordForm.
-$form = new Form('timerRecordForm');
+$form = new Form('timeRecordForm');
 
 // Dropdown for clients in MODE_TIME. Use all active clients.
 if (MODE_TIME == $user->tracking_mode && $user->isPluginEnabled('cl')) {