And now, we're going to add a scheduler on the page. The technique used for dhtmlxGrid is the same for all other DHTMLX components,
including dhtmlxScheduler.
We will again divide the step into 2 substeps:
If after completing the step, you will run webhost/cdemo/event/scheduler, the app will produce the following scheduler that loads data from server and saves them back:
Again, we will use a standard code initializing the component.
For a deeper learning of dhtmlxScheduler initialization, read:
"views/scheduler.php" file
<!DOCTYPE html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script src="/dhtmlx/scheduler/dhtmlxscheduler.js"></script>
<link rel="stylesheet" href="/dhtmlx/scheduler/dhtmlxscheduler_glossy.css">
</head>
<body>
<div id="scheduler_here" class="dhx_cal_container" style='width:800px; height:600px;'>
<div class="dhx_cal_navline">
<div class="dhx_cal_prev_button"> </div>
<div class="dhx_cal_next_button"> </div>
<div class="dhx_cal_today_button"></div>
<div class="dhx_cal_date"></div>
<div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div>
<div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div>
<div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div>
</div>
<div class="dhx_cal_header">
</div>
<div class="dhx_cal_data">
</div>
</div>
<script type="text/javascript" charset="utf-8"> scheduler.config.multi_day = true;
scheduler.config.xml_date="%Y-%m-%d %H:%i";
scheduler.config.first_hour = 5;
scheduler.init('scheduler_here',new Date(2010,7,5),"week");
//refers to the 'data' action that we will create in the next substep
var dp = new dataProcessor("/scheduler/data");
scheduler.load("/scheduler/data");
//refers to the 'data' action as well
var dp = new dataProcessor("/scheduler/data");
dp.action_param ="dhx_editor_status";
dp.init(scheduler);
</script>
</body>
We won't create a separate controller file for the scheduler and just add the required functionality to the grid's controller.
"controllers/EventController.php" file
class EventController extends Controller {
public function actionIndex() {
$this->render('index');
}
public function actionGrid() {
$this->render('grid');
}
public function actionGrid_data() {
$grid = new GridConnector(Events::model(), "PHPYii");
$grid->configure("-", "event_id", "start_date, end_date, event_name");
$grid->render();
}
public function actionScheduler() { $this->render('scheduler'); //loads the 'scheduler' view } }
"controllers/EventController.php" file
class EventController extends Controller {
public function actionIndex() {
$this->render('index');
}
public function actionGrid() {
$this->render('grid');
}
public function actionGrid_data() {
$grid = new GridConnector(Events::model(), "PHPYii");
$grid->configure("-", "event_id", "start_date, end_date, event_name");
$grid->render();
}
public function actionScheduler() {
$this->render('scheduler'); //loads the 'scheduler' view
}
public function actionScheduler_data() { $scheduler = new SchedulerConnector(Events::model(), "PHPYii"); $scheduler->configure("-","event_id","start_date,end_date,event_name"); $scheduler->render(); } }