Better handling of dates when registering children
This commit is contained in:
parent
48debfbd6c
commit
6eb0b2f8dd
@ -13,6 +13,8 @@ class Controller_User_Child extends Controller_Child {
|
|||||||
protected $auth_required = TRUE;
|
protected $auth_required = TRUE;
|
||||||
protected $secure_actions = array(
|
protected $secure_actions = array(
|
||||||
'add'=>TRUE,
|
'add'=>TRUE,
|
||||||
|
'ajaxage'=>FALSE,
|
||||||
|
'ajaxagemax'=>FALSE,
|
||||||
'edit'=>TRUE,
|
'edit'=>TRUE,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -24,6 +26,18 @@ class Controller_User_Child extends Controller_Child {
|
|||||||
->body($this->add_edit());
|
->body($this->add_edit());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function action_ajaxage() {
|
||||||
|
$x = ORM::factory('Child');
|
||||||
|
$x->dob = $this->request->query('date');
|
||||||
|
$this->template->content = $x->age();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function action_ajaxagemax() {
|
||||||
|
$x = ORM::factory('Child');
|
||||||
|
$x->dob = $this->request->query('date');
|
||||||
|
$this->template->content = $x->date_enrol_max();
|
||||||
|
}
|
||||||
|
|
||||||
public function action_edit() {
|
public function action_edit() {
|
||||||
Block::factory()
|
Block::factory()
|
||||||
->type('form-horizontal')
|
->type('form-horizontal')
|
||||||
@ -60,10 +74,47 @@ class Controller_User_Child extends Controller_Child {
|
|||||||
->type('stdin')
|
->type('stdin')
|
||||||
->data('
|
->data('
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
'.($co->loaded() ? '
|
||||||
$("#date_stop").datepicker({
|
$("#date_stop").datepicker({
|
||||||
endDate: new Date('.($co->date_enrol_max()*1000).')
|
endDate: new Date('.($co->date_enrol_max()*1000).')
|
||||||
});
|
});
|
||||||
})
|
' : '').'
|
||||||
|
|
||||||
|
$("#dob").datepicker().on("hide",function(e) {
|
||||||
|
var x = $("#dob").datepicker("getDate").getTime()/1000;
|
||||||
|
|
||||||
|
// Send the request and update sub category dropdown
|
||||||
|
$.ajax({
|
||||||
|
type: "GET",
|
||||||
|
data: "date="+x,
|
||||||
|
dataType: "html",
|
||||||
|
cache: false,
|
||||||
|
url: "'.URL::link('user','child/ajaxage',TRUE).'",
|
||||||
|
timeout: 2000,
|
||||||
|
error: function(x) {
|
||||||
|
alert("Failed to submit");
|
||||||
|
},
|
||||||
|
success: function(data) {
|
||||||
|
$("div[id=age]").empty().append(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "GET",
|
||||||
|
data: "date="+x,
|
||||||
|
dataType: "html",
|
||||||
|
cache: false,
|
||||||
|
url: "'.URL::link('user','child/ajaxagemax',TRUE).'",
|
||||||
|
timeout: 2000,
|
||||||
|
error: function(x) {
|
||||||
|
alert("Failed to submit");
|
||||||
|
},
|
||||||
|
success: function(data) {
|
||||||
|
$("#date_stop").datepicker("setEndDate",new Date(data*1000));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
');
|
');
|
||||||
|
|
||||||
return View::factory('child/user/add_edit')
|
return View::factory('child/user/add_edit')
|
||||||
|
@ -21,7 +21,7 @@ class Model_Child extends ORM {
|
|||||||
|
|
||||||
public function filters() {
|
public function filters() {
|
||||||
return Arr::merge(parent::filters(),array(
|
return Arr::merge(parent::filters(),array(
|
||||||
'dob'=>array(array('strtotime', array(':value'))),
|
'dob'=>array(array(array($this,'date'), array(':value'))),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,6 +53,10 @@ class Model_Child extends ORM {
|
|||||||
return $format == '%w' ? sprintf('%02dw',$dob->diff($today)->days/7) : $dob->diff($today)->format($format);
|
return $format == '%w' ? sprintf('%02dw',$dob->diff($today)->days/7) : $dob->diff($today)->format($format);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function date($value) {
|
||||||
|
return is_numeric($value) ? $value : strtotime($value);
|
||||||
|
}
|
||||||
|
|
||||||
public function date_enrol_min() {
|
public function date_enrol_min() {
|
||||||
$dob = $this->_dob();
|
$dob = $this->_dob();
|
||||||
$dob->add(new DateInterval('P'.$this->_start));
|
$dob->add(new DateInterval('P'.$this->_start));
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
Age: <strong><?php echo $o->age(); ?></strong><br/>
|
Age: <strong><div id="age" style="display: inline;"><?php echo $o->dob ? $o->age() : ''; ?></div></strong><br/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -60,7 +60,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="input-group date" id="date_stop" data-date-format="dd-mm-yyyy" data-provide="datepicker" data-date-start-view="year" data-date-autoclose="true" data-date-today-highlight="true" data-date-start-date="0d">
|
<div class="input-group date" id="date_stop" data-date-format="dd-mm-yyyy" data-provide="datepicker" data-date-start-view="year" data-date-autoclose="true" data-date-today-highlight="true" data-date-start-date="0d">
|
||||||
<?php echo Form::input('room[date_stop]',$rco->date_stop ? $rco->display('date_stop') : $o->date_enrol_max(TRUE),array('class'=>'form-control','placeholder'=>'End','required','nocg'=>TRUE,'readonly')); ?>
|
<?php echo Form::input('room[date_stop]',$rco->date_stop ? $rco->display('date_stop') : '',array('class'=>'form-control','placeholder'=>'End','required','nocg'=>TRUE,'readonly')); ?>
|
||||||
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
Reference in New Issue
Block a user