CMS  Version 3.9
task_schedule_field_renderer.inc
Go to the documentation of this file.
1 <?php
7 Fakoli::usingFeature("auto_form");
8 
10 {
11  static function drawScheduleBox($id, $value, $readOnly = false)
12  {
13  echo "<table id='{$id}' class='task_schedule'><thead><tr><th>&nbsp;</th>";
14  for($i = 0; $i < 7; ++$i)
15  {
16  $day = jddayofweek($i, 2);
17 
18  echo "<th class='schedule_day'>{$day}</th>";
19  }
20  echo "</tr></thead>";
21  echo "<tbody>";
22 
23  for($hour = 0; $hour < 24; ++$hour)
24  {
25  $desc = str_pad($hour, 2, '0', STR_PAD_LEFT).":00";
26 
27  echo "<tr>";
28  echo "<th class='schedule_period'>$desc</td>";
29 
30  for($i = 0; $i < 7; ++$i)
31  {
32  $idx = "{$i}:{$desc}";
33  $class = (strpos($value, $idx) !== FALSE) ? "period selected" : "period";
34  echo "<td class='{$class}' data-period='$idx'></td>";
35  }
36  echo "</tr>";
37  }
38 
39  echo "</tbody></table>";
40  }
41 
42  static function calculatePeriod($datetime = null)
43  {
44  $d = new DateTime($datetime);
45 
46  $day = $d->format("N") - 1;
47 
48  $hour = $d->format("H");
49 
50  $sp = "{$day}:{$hour}:00";
51 
52  trace("Schedule Period for $datetime is $sp", 3);
53 
54  return $sp;
55  }
56 }
57 
58 class TaskScheduleFieldRenderer extends FieldRenderer
59 {
60 
62  {
63  $this->FieldRenderer($parent);
64  $this->annotateBefore = true;
65  }
66 
67  function renderScript($field)
68  {
69  if ($this->parent->readOnlyForm || $this->parent->isReadOnly($field)) return;
70  $id = "{$this->parent->id}_{$field}";
71 ?>
72  <script type="text/javascript" src="/components/scheduled_task/js/task_schedule_selector.js"></script>
73  <script type='text/javascript'>
74  window.addEvent('load', function()
75  {
76  new TaskScheduleSelector('<?echo $id?>_table', '<?echo $id?>');
77  });
78  </script>
79 <?
80  }
81 
82  function drawScheduleBox($field, $readOnly = false)
83  {
84  $value = $this->parent->data->get($field);
85 
86  echo "<input type='hidden' id='{$this->parent->id}_{$field}' name='{$field}' value='{$value}'/>";
87  TaskScheduleHelper::drawScheduleBox("{$this->parent->id}_{$field}_table", $value, $readOnly);
88  }
89 
90  function renderField($field)
91  {
92  $this->_startField($field);
93 
94  $this->drawScheduleBox($field);
95 
96  $this->_endField($field);
97  }
98 
100  {
101  $this->_startField($field);
102 
103  $this->drawScheduleBox($field, true);
104 
105  $this->_endField($field);
106  }
107 }
108 
109 
110 // Register the field renderer
111 AutoForm::registerFieldRendererClass(TaskSchedule, TaskScheduleFieldRenderer);?>
$parent
Definition: templates.inc:42
static usingFeature()
Uses the specified framework feature(s).
Definition: core.inc:388
drawScheduleBox($field, $readOnly=false)
static drawScheduleBox($id, $value, $readOnly=false)
static calculatePeriod($datetime=null)
if(!checkRole($library->allow_access) &&! $library->allowAccess()) if(!checkRole($document->allow_access)) $d
Definition: download.inc:66
$desc
Definition: event_edit.inc:62
$day
Definition: event_list.inc:49