Пример #1
0
 public function action_edit()
 {
     $submitted = false;
     $id = $this->request->param('id');
     if (!$id) {
         Request::current()->redirect('course');
     }
     $course = ORM::factory('course', $id);
     if ($this->request->method() === 'POST' && $this->request->post()) {
         if (Arr::get($this->request->post(), 'save') !== null) {
             $submitted = true;
             $validator = $course->validator($this->request->post());
             $validator->bind(':course', $course);
             $validator->bind(':start_date', $this->request->post('start_date'));
             if ($validator->check()) {
                 $course->name = $this->request->post('name');
                 $course->description = $this->request->post('description');
                 $course->access_code = $this->request->post('access_code');
                 $course->start_date = $this->request->post('start_date');
                 $course->end_date = $this->request->post('end_date');
                 $course->save();
                 Session::instance()->set('success', 'Cources edited successfully.');
                 Model_Course::assign_users($course, $this->request->post('selected'));
                 Request::current()->redirect('course');
                 exit;
             } else {
                 $this->_errors = $validator->errors('course');
             }
         }
     }
     $saved_data = array('name' => $course->name, 'description' => $course->description, 'access_code' => $course->access_code, 'start_date' => $course->start_date, 'end_date' => $course->end_date);
     $form = $this->form('course/edit/id/' . $id, $submitted, $saved_data);
     $data = Model_Course::get_students($course);
     $cacheimage = CacheImage::instance();
     $user_ids = $data->as_array(NULL, 'id');
     $count = $course->users->count_all();
     $users = View::factory('course/assign')->bind('data', $data)->bind('count', $count)->bind('cacheimage', $cacheimage)->bind('user_ids', $user_ids);
     $teachers = Model_Role::get_users('teacher');
     $assigned_teachers = Model_Course::get_teachers($course)->as_array(null, 'id');
     $teachers_table = View::factory('course/teachers')->bind('teachers', $teachers)->bind('cacheimage', $cacheimage)->bind('assigned_teachers', $assigned_teachers);
     $batches = ORM::factory('batch')->find_all();
     $view = View::factory('course/form')->bind('form', $form)->bind('users', $users)->bind('batches', $batches)->bind('teachers_table', $teachers_table)->bind('course_id', $id);
     Breadcrumbs::add(array('Courses', Url::site('course')));
     Breadcrumbs::add(array($course->name, Url::site('course/edit/id/' . $id)));
     $this->content = $view;
 }
Пример #2
0
 private function form($action, $submitted = false, $saved_data = array())
 {
     $courses = ORM::factory('course')->find_all()->as_array('id', 'name');
     $users = array();
     foreach (Model_Role::get_users('teacher') as $user) {
         $users[$user->id] = $user->firstname . ' ' . $user->lastname;
     }
     $rooms = array();
     foreach (ORM::factory('room')->find_all() as $room) {
         $rooms[$room->id] = $room->room_number . ', ' . $room->room_name;
     }
     $form = new Stickyform($action, array(), $submitted ? $this->_errors : array());
     $form->default_data = array('name' => '', 'user_id' => '', 'course_id' => '', 'room_id' => '', 'once_date' => '', 'repeat_from' => '', 'repeat_to' => '', 'type' => 'once');
     $form->saved_data = $saved_data;
     $form->posted_data = $submitted ? Stickyform::ungroup_params($this->request->post()) : array();
     $form->append('Name', 'name', 'text');
     $form->append('Type', 'type', 'radio');
     $form->append('Date:', 'once_date', 'text', array('attributes' => array('class' => 'date', 'name' => 'once[date]')));
     $form->append('From:', 'repeat_from', 'text', array('attributes' => array('class' => 'date', 'name' => 'repeat[from]')));
     $form->append('To:', 'repeat_to', 'text', array('attributes' => array('class' => 'date', 'name' => 'repeat[to]')));
     $form->append('Lecturer', 'user_id', 'select', array('options' => $users));
     $form->append('Course', 'course_id', 'select', array('options' => $courses));
     $form->append('Room', 'room_id', 'select', array('options' => $rooms));
     $form->append('Save', 'save', 'submit', array('attributes' => array('class' => 'button')));
     $form->process();
     return $form;
 }