/**
  *  This function is used for deleting a session, and interacting with topics.
  *      Both displaying and editing the topic list
  *
  */
 function definition_after_data()
 {
     parent::definition_after_data();
     $mform = $this->_form;
     $numRepeated = $mform->getElementValue('sessions_list');
     // Go through each session, and delete elements for ones that should be deleted
     for ($key = 0; $key < $numRepeated; ++$key) {
         $index = '[' . $key . ']';
         $deleted = $mform->getSubmitValue('delete_session' . $index);
         // If a button is pressed, then doing $mform->getSubmitValue(buttonId) will return a non-null vaue
         // However, if other buttons are subsequently pressed, then $mform->getSubmitValue(buttonId) will return null
         // So use the element 'was_deleted' for that repeated element to store if has been deleted
         if ($deleted or $mform->getElementValue('was_deleted' . $index) == true) {
             // If deleted, just remove the visual elements
             // Will not save to the database until the user presses submit
             $mform->removeElement('sessionheader' . $index);
             $mform->removeElement('sessiontitle' . $index);
             $mform->removeElement('sessionteachingstrategy' . $index);
             $mform->removeElement('sessionguestteacher' . $index);
             $mform->removeElement('sessiontype' . $index);
             $mform->removeElement('sessionlength' . $index);
             $mform->removeElement('sessiondate' . $index);
             $learningObjectiveTypes = get_learning_objective_types();
             foreach ($learningObjectiveTypes as $learningObjectiveType) {
                 $mform->removeElement('learning_objective_' . $learningObjectiveType . $index);
             }
             $mform->removeElement('assessments' . $index);
             $mform->removeElement('manage_topics_group' . $index);
             $mform->removeElement('add_topic_group' . $index);
             $mform->removeElement('delete_session' . $index);
             $mform->getElement('was_deleted' . $index)->setValue(true);
         } else {
             $this->update_topics($mform, $index);
             // New element, so expand header by default
             if ($mform->getElement('coursesession_id' . $index)->getValue() == -1) {
                 $mform->setExpanded('sessionheader' . $index);
             }
         }
     }
     // navigate to the newest added element
     if (isset($_POST['sessions_list_add_element'])) {
         redirect_to_anchor('session', 'id_sessions_list_add_element', -700);
     }
 }
 /**
  *This function deals with deleting the data after the form element is deleted
  *It is necessary to deal with removing elements so that they don't show up again
  */
 function definition_after_data()
 {
     parent::definition_after_data();
     $mform = $this->_form;
     $numRepeated = $mform->getElementValue('assessment_list');
     // Go through each assessment, and delete elements for ones that should be deleted
     for ($key = 0; $key < $numRepeated; ++$key) {
         $index = '[' . $key . ']';
         $deleted = $mform->getSubmitValue('delete_assessment' . $index);
         // If a button is pressed, then doing $mform->getSubmitValue(buttonId) will return a non-null value
         // However, if other buttons are subsequently pressed, then $mform->getSubmitValue(buttonId) will return null
         // So use the element 'was_deleted' for that repeated element to store if has been deleted
         // Otherwise, if the assessment is new, should expand its header
         if ($deleted or $mform->getElementValue('was_deleted' . $index) == true) {
             // If deleted, just remove the visual elements
             // Will not save to the database until the user presses submit
             $mform->removeElement('assessment_header' . $index);
             $mform->removeElement('assessmentname' . $index);
             $mform->removeElement('type' . $index);
             $mform->removeElement('assessmentprof' . $index);
             $mform->removeElement('assessmentexamtype' . $index);
             $mform->removeElement('assessmentduedate' . $index);
             $mform->removeElement('description' . $index);
             $mform->removeElement('gradingDescription_uploaded' . $index);
             $mform->removeElement('gradingDescription_upload' . $index);
             $mform->removeElement('gdescription' . $index);
             $mform->removeElement('assessmentweight' . $index);
             $learningObjectiveTypes = get_learning_objective_types();
             foreach ($learningObjectiveTypes as $learningObjectiveType) {
                 $mform->removeElement('learning_objective_' . $learningObjectiveType . $index);
             }
             $mform->removeElement('delete_assessment' . $index);
             $mform->getElement('was_deleted' . $index)->setValue(true);
         } else {
             if ($mform->getElement('courseassessment_id' . $index)->getValue() == -1) {
                 $mform->setExpanded('assessment_header' . $index);
             }
         }
     }
     // navigate to the newest added element
     if (isset($_POST['assessment_list_add_element'])) {
         redirect_to_anchor('assessment', 'id_assessment_list_add_element', -1000);
     }
 }
 /**
  * This function is used for uploading course objective and required readings.
  * and delete required reading.
  * @return void
  */
 function definition_after_data()
 {
     parent::definition_after_data();
     $mform = $this->_form;
     $this->delete_reading($mform);
     $this->upload_req_reading($mform);
     $this->upload_course_obj($mform);
     $this->delete_graduate_attribute($mform);
     if (isset($_POST['option_add_fields_reading'])) {
         redirect_to_anchor('reading', 'id_option_add_fields_reading', -200);
     }
     if (isset($_POST['option_add_fields_knowledge'])) {
         redirect_to_anchor('knowledge', 'id_option_add_fields_knowledge', -100);
     }
     if (isset($_POST['option_add_fields_skill'])) {
         redirect_to_anchor('skill', 'id_option_add_fields_skill', -100);
     }
     if (isset($_POST['option_add_fields_attitude'])) {
         redirect_to_anchor('attitude', 'id_option_add_fields_attitude', -100);
     }
     if (isset($_POST['option_add_fields_gradAtt'])) {
         redirect_to_anchor('gradAtt', 'id_option_add_fields_gradAtt', -100);
     }
 }