gaku_frontend 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/app/assets/fonts/gaku/frontend/glyphicons-halflings-regular.eot +0 -0
- data/app/assets/fonts/gaku/frontend/glyphicons-halflings-regular.svg +228 -0
- data/app/assets/fonts/gaku/frontend/glyphicons-halflings-regular.ttf +0 -0
- data/app/assets/fonts/gaku/frontend/glyphicons-halflings-regular.woff +0 -0
- data/app/assets/javascripts/gaku/frontend.js.coffee +42 -0
- data/app/assets/javascripts/gaku/frontend/base.js.coffee +147 -0
- data/app/assets/javascripts/gaku/frontend/class_groups.js.coffee +19 -0
- data/app/assets/javascripts/gaku/frontend/courses.js.coffee +23 -0
- data/app/assets/javascripts/gaku/frontend/exams.js.coffee +23 -0
- data/app/assets/javascripts/gaku/frontend/extracurricular_activities.js.coffee +12 -0
- data/app/assets/javascripts/gaku/frontend/slide.js.erb +14 -0
- data/app/assets/javascripts/gaku/frontend/students.js.coffee +38 -0
- data/app/assets/javascripts/gaku/frontend/syllabuses.js.coffee +23 -0
- data/app/assets/javascripts/gaku/frontend/teachers.js.coffee +12 -0
- data/app/assets/stylesheets/gaku/bootstrap_and_theme.css.scss +573 -0
- data/app/assets/stylesheets/gaku/frontend.css +14 -0
- data/app/assets/stylesheets/gaku/frontend/class_groups.css.scss +19 -0
- data/app/assets/stylesheets/gaku/frontend/course_groups.css.scss +14 -0
- data/app/assets/stylesheets/gaku/frontend/courses.css.scss +19 -0
- data/app/assets/stylesheets/gaku/frontend/exams.css.scss +72 -0
- data/app/assets/stylesheets/gaku/frontend/gaku.css.scss +216 -0
- data/app/assets/stylesheets/gaku/frontend/students.css.scss +22 -0
- data/app/assets/templates/roster.xls +0 -0
- data/app/controllers/concerns/enrollments_controller.rb +83 -0
- data/app/controllers/concerns/polymorphic_resource_concern.rb +48 -0
- data/app/controllers/concerns/student_chooser_controller.rb +41 -0
- data/app/controllers/gaku/addresses_controller.rb +94 -0
- data/app/controllers/gaku/attachments_controller.rb +90 -0
- data/app/controllers/gaku/attendances_controller.rb +28 -0
- data/app/controllers/gaku/class_group_enrollments_controller.rb +15 -0
- data/app/controllers/gaku/class_groups/courses_controller.rb +50 -0
- data/app/controllers/gaku/class_groups/semester_class_groups_controller.rb +63 -0
- data/app/controllers/gaku/class_groups/students_controller.rb +37 -0
- data/app/controllers/gaku/class_groups_controller.rb +120 -0
- data/app/controllers/gaku/contacts_controller.rb +79 -0
- data/app/controllers/gaku/course_enrollments_controller.rb +10 -0
- data/app/controllers/gaku/course_groups/course_group_enrollments_controller.rb +54 -0
- data/app/controllers/gaku/course_groups_controller.rb +91 -0
- data/app/controllers/gaku/courses/enrollments_controller.rb +55 -0
- data/app/controllers/gaku/courses/exams_controller.rb +28 -0
- data/app/controllers/gaku/courses/semester_courses_controller.rb +64 -0
- data/app/controllers/gaku/courses_controller.rb +95 -0
- data/app/controllers/gaku/devise/passwords_controller.rb +4 -0
- data/app/controllers/gaku/devise/registrations_controller.rb +60 -0
- data/app/controllers/gaku/devise/sessions_controller.rb +13 -0
- data/app/controllers/gaku/exam_portion_scores_controller.rb +26 -0
- data/app/controllers/gaku/exams/exam_portions/attachments_controller.rb +46 -0
- data/app/controllers/gaku/exams/exam_portions_controller.rb +76 -0
- data/app/controllers/gaku/exams_controller.rb +153 -0
- data/app/controllers/gaku/extracurricular_activities/students_controller.rb +21 -0
- data/app/controllers/gaku/extracurricular_activities_controller.rb +68 -0
- data/app/controllers/gaku/extracurricular_activity_enrollments_controller.rb +16 -0
- data/app/controllers/gaku/gaku_controller.rb +23 -0
- data/app/controllers/gaku/home_controller.rb +11 -0
- data/app/controllers/gaku/notes_controller.rb +81 -0
- data/app/controllers/gaku/realtime_controller.rb +29 -0
- data/app/controllers/gaku/search_controller.rb +16 -0
- data/app/controllers/gaku/states_controller.rb +17 -0
- data/app/controllers/gaku/students/badges_controller.rb +65 -0
- data/app/controllers/gaku/students/class_group_enrollments_controller.rb +45 -0
- data/app/controllers/gaku/students/course_enrollments_controller.rb +51 -0
- data/app/controllers/gaku/students/external_school_records_controller.rb +70 -0
- data/app/controllers/gaku/students/guardians_controller.rb +70 -0
- data/app/controllers/gaku/students/simple_grades_controller.rb +69 -0
- data/app/controllers/gaku/students/student_specialties_controller.rb +68 -0
- data/app/controllers/gaku/students_controller.rb +198 -0
- data/app/controllers/gaku/syllabuses/assignments_controller.rb +20 -0
- data/app/controllers/gaku/syllabuses/exam_syllabuses_controller.rb +38 -0
- data/app/controllers/gaku/syllabuses/exams_controller.rb +68 -0
- data/app/controllers/gaku/syllabuses_controller.rb +77 -0
- data/app/controllers/gaku/teachers_controller.rb +76 -0
- data/app/helpers/gaku/autocomplete_helper.rb +31 -0
- data/app/helpers/gaku/exam_helper.rb +13 -0
- data/app/helpers/gaku/frontend_helper.rb +42 -0
- data/app/helpers/gaku/person_helper.rb +79 -0
- data/app/helpers/gaku/shared_helper.rb +29 -0
- data/app/helpers/gaku/student_chooser_helper.rb +11 -0
- data/app/helpers/gaku/students_helper.rb +31 -0
- data/app/overrides/frontend_menu.rb +6 -0
- data/app/views/gaku/addresses/_address.html.slim +5 -0
- data/app/views/gaku/addresses/_addresses.html.slim +25 -0
- data/app/views/gaku/addresses/_delete_link.html.slim +1 -0
- data/app/views/gaku/addresses/_fields.html.slim +14 -0
- data/app/views/gaku/addresses/_form.html.slim +3 -0
- data/app/views/gaku/addresses/_form_fields.html.slim +26 -0
- data/app/views/gaku/addresses/_modal.html.slim +4 -0
- data/app/views/gaku/addresses/_primary_field.html.slim +12 -0
- data/app/views/gaku/addresses/create.js.erb +12 -0
- data/app/views/gaku/addresses/destroy.js.erb +8 -0
- data/app/views/gaku/addresses/edit.js.erb +4 -0
- data/app/views/gaku/addresses/make_primary.js.erb +7 -0
- data/app/views/gaku/addresses/new.js.erb +4 -0
- data/app/views/gaku/addresses/recovery.js.erb +1 -0
- data/app/views/gaku/addresses/soft_delete.js.erb +8 -0
- data/app/views/gaku/addresses/update.js.erb +5 -0
- data/app/views/gaku/attachments/destroy.js.erb +1 -0
- data/app/views/gaku/attachments/edit.js.erb +3 -0
- data/app/views/gaku/attachments/new.js.erb +1 -0
- data/app/views/gaku/attachments/recovery.js.erb +1 -0
- data/app/views/gaku/attachments/soft_delete.js.erb +3 -0
- data/app/views/gaku/class_groups/_class_group.html.slim +4 -0
- data/app/views/gaku/class_groups/_class_groups.html.slim +11 -0
- data/app/views/gaku/class_groups/_class_groups_with_semester.html.slim +12 -0
- data/app/views/gaku/class_groups/_fields.html.slim +3 -0
- data/app/views/gaku/class_groups/_form.html.slim +3 -0
- data/app/views/gaku/class_groups/_form_fields.html.slim +7 -0
- data/app/views/gaku/class_groups/_student_chooser_form.html.slim +4 -0
- data/app/views/gaku/class_groups/_tabs.html.slim +41 -0
- data/app/views/gaku/class_groups/advanced_search.js.erb +30 -0
- data/app/views/gaku/class_groups/courses/_course.html.slim +4 -0
- data/app/views/gaku/class_groups/courses/_courses.html.slim +14 -0
- data/app/views/gaku/class_groups/courses/_form.html.slim +5 -0
- data/app/views/gaku/class_groups/courses/create.js.erb +7 -0
- data/app/views/gaku/class_groups/courses/destroy.js.erb +2 -0
- data/app/views/gaku/class_groups/courses/new.js.erb +3 -0
- data/app/views/gaku/class_groups/create.js.erb +6 -0
- data/app/views/gaku/class_groups/destroy.js.erb +1 -0
- data/app/views/gaku/class_groups/edit.html.slim +16 -0
- data/app/views/gaku/class_groups/index.html.slim +25 -0
- data/app/views/gaku/class_groups/new.js.erb +3 -0
- data/app/views/gaku/class_groups/search/_form.html.slim +18 -0
- data/app/views/gaku/class_groups/search/_semester_form.html.slim +23 -0
- data/app/views/gaku/class_groups/semester_advanced_search.js.erb +30 -0
- data/app/views/gaku/class_groups/semester_class_groups/_fields.html.slim +4 -0
- data/app/views/gaku/class_groups/semester_class_groups/_form.html.slim +4 -0
- data/app/views/gaku/class_groups/semester_class_groups/_form_fields.html.slim +3 -0
- data/app/views/gaku/class_groups/semester_class_groups/_modal.html.slim +5 -0
- data/app/views/gaku/class_groups/semester_class_groups/_semester.html.slim +3 -0
- data/app/views/gaku/class_groups/semester_class_groups/_semester_modal.html.slim +4 -0
- data/app/views/gaku/class_groups/semester_class_groups/_semesters.html.slim +13 -0
- data/app/views/gaku/class_groups/semester_class_groups/create.js.erb +8 -0
- data/app/views/gaku/class_groups/semester_class_groups/destroy.js.erb +2 -0
- data/app/views/gaku/class_groups/semester_class_groups/edit.js.erb +3 -0
- data/app/views/gaku/class_groups/semester_class_groups/new.js.erb +3 -0
- data/app/views/gaku/class_groups/semester_class_groups/update.js.erb +3 -0
- data/app/views/gaku/class_groups/student_chooser.js.erb +9 -0
- data/app/views/gaku/class_groups/students/_student.html.slim +5 -0
- data/app/views/gaku/class_groups/students/_students.html.slim +14 -0
- data/app/views/gaku/class_groups/students/destroy.js.erb +2 -0
- data/app/views/gaku/class_groups/students/enroll_students.js.erb +16 -0
- data/app/views/gaku/class_groups/students/new.js.erb +3 -0
- data/app/views/gaku/class_groups/students/without_semester.js.erb +2 -0
- data/app/views/gaku/class_groups/with_semester.html.slim +26 -0
- data/app/views/gaku/class_groups/with_semester.js.erb +2 -0
- data/app/views/gaku/class_groups/without_semester.html.slim +26 -0
- data/app/views/gaku/class_groups/without_semester.js.erb +2 -0
- data/app/views/gaku/contacts/_contact.html.slim +5 -0
- data/app/views/gaku/contacts/_contacts.html.slim +22 -0
- data/app/views/gaku/contacts/_delete_link.html.slim +1 -0
- data/app/views/gaku/contacts/_fields.html.slim +14 -0
- data/app/views/gaku/contacts/_form.html.slim +4 -0
- data/app/views/gaku/contacts/_form_fields.html.slim +14 -0
- data/app/views/gaku/contacts/_modal.html.slim +4 -0
- data/app/views/gaku/contacts/_primary_field.html.slim +13 -0
- data/app/views/gaku/contacts/create.js.erb +21 -0
- data/app/views/gaku/contacts/destroy.js.erb +9 -0
- data/app/views/gaku/contacts/edit.js.erb +4 -0
- data/app/views/gaku/contacts/make_primary.js.erb +6 -0
- data/app/views/gaku/contacts/new.js.erb +3 -0
- data/app/views/gaku/contacts/recovery.js.erb +1 -0
- data/app/views/gaku/contacts/soft_delete.js.erb +8 -0
- data/app/views/gaku/contacts/update.js.erb +14 -0
- data/app/views/gaku/course_groups/_course_group.html.slim +4 -0
- data/app/views/gaku/course_groups/_course_groups.html.slim +7 -0
- data/app/views/gaku/course_groups/_fields.html.slim +1 -0
- data/app/views/gaku/course_groups/_form.html.slim +3 -0
- data/app/views/gaku/course_groups/_form_fields.html.slim +1 -0
- data/app/views/gaku/course_groups/course_group_enrollments/_course.html.slim +4 -0
- data/app/views/gaku/course_groups/course_group_enrollments/_courses.html.slim +21 -0
- data/app/views/gaku/course_groups/course_group_enrollments/_form.html.slim +4 -0
- data/app/views/gaku/course_groups/course_group_enrollments/create.js.erb +7 -0
- data/app/views/gaku/course_groups/course_group_enrollments/destroy.js.erb +2 -0
- data/app/views/gaku/course_groups/course_group_enrollments/new.js.erb +3 -0
- data/app/views/gaku/course_groups/create.js.erb +6 -0
- data/app/views/gaku/course_groups/destroy.js.erb +1 -0
- data/app/views/gaku/course_groups/edit.html.slim +21 -0
- data/app/views/gaku/course_groups/index.html.slim +14 -0
- data/app/views/gaku/course_groups/new.js.erb +3 -0
- data/app/views/gaku/courses/_course.html.slim +7 -0
- data/app/views/gaku/courses/_courses.html.slim +24 -0
- data/app/views/gaku/courses/_form.html.slim +3 -0
- data/app/views/gaku/courses/_form_fields.html.slim +5 -0
- data/app/views/gaku/courses/_student_chooser_form.html.slim +4 -0
- data/app/views/gaku/courses/_tabs.html.slim +26 -0
- data/app/views/gaku/courses/create.js.erb +6 -0
- data/app/views/gaku/courses/destroy.js.erb +1 -0
- data/app/views/gaku/courses/edit.html.slim +16 -0
- data/app/views/gaku/courses/enrollments/_enrolled.html.slim +7 -0
- data/app/views/gaku/courses/enrollments/_enrollments.html.slim +27 -0
- data/app/views/gaku/courses/enrollments/_errors_modal.html.slim +11 -0
- data/app/views/gaku/courses/enrollments/class_groups/_form.html.slim +3 -0
- data/app/views/gaku/courses/enrollments/class_groups/enroll.js.erb +16 -0
- data/app/views/gaku/courses/enrollments/class_groups/new.js.erb +4 -0
- data/app/views/gaku/courses/enrollments/error.js.erb +2 -0
- data/app/views/gaku/courses/enrollments/students/enroll_students.js.erb +11 -0
- data/app/views/gaku/courses/exams/_exam.html.slim +5 -0
- data/app/views/gaku/courses/exams/_exam_portion_head.html.slim +5 -0
- data/app/views/gaku/courses/exams/_exams.html.slim +14 -0
- data/app/views/gaku/courses/exams/_grading_table_head.html.slim +9 -0
- data/app/views/gaku/courses/exams/_grading_table_student_field.html.slim +11 -0
- data/app/views/gaku/courses/exams/grading.html.slim +7 -0
- data/app/views/gaku/courses/index.html.slim +14 -0
- data/app/views/gaku/courses/new.js.erb +3 -0
- data/app/views/gaku/courses/semester_courses/_fields.html.slim +4 -0
- data/app/views/gaku/courses/semester_courses/_form.html.slim +4 -0
- data/app/views/gaku/courses/semester_courses/_form_fields.html.slim +3 -0
- data/app/views/gaku/courses/semester_courses/_modal.html.slim +4 -0
- data/app/views/gaku/courses/semester_courses/_semester_course.html.slim +3 -0
- data/app/views/gaku/courses/semester_courses/_semester_courses.html.slim +16 -0
- data/app/views/gaku/courses/semester_courses/create.js.erb +6 -0
- data/app/views/gaku/courses/semester_courses/destroy.js.erb +3 -0
- data/app/views/gaku/courses/semester_courses/edit.js.erb +3 -0
- data/app/views/gaku/courses/semester_courses/new.js.erb +3 -0
- data/app/views/gaku/courses/semester_courses/update.js.erb +3 -0
- data/app/views/gaku/courses/student_chooser.js.erb +7 -0
- data/app/views/gaku/devise/confirmations/new.html.slim +9 -0
- data/app/views/gaku/devise/mailer/confirmation_instructions.html.slim +4 -0
- data/app/views/gaku/devise/mailer/reset_password_instructions.html.slim +6 -0
- data/app/views/gaku/devise/mailer/unlock_instructions.html.slim +5 -0
- data/app/views/gaku/devise/passwords/edit.html.slim +14 -0
- data/app/views/gaku/devise/passwords/new.html.slim +8 -0
- data/app/views/gaku/devise/registrations/edit.html.slim +31 -0
- data/app/views/gaku/devise/registrations/new.html.slim +27 -0
- data/app/views/gaku/devise/registrations/set_up_admin_account.html.slim +26 -0
- data/app/views/gaku/devise/sessions/new.html.slim +24 -0
- data/app/views/gaku/devise/shared/_links.html.erb +25 -0
- data/app/views/gaku/devise/unlocks/new.html.slim +9 -0
- data/app/views/gaku/exam_divisions/_form.html.erb +29 -0
- data/app/views/gaku/exam_divisions/edit.html.erb +6 -0
- data/app/views/gaku/exam_divisions/index.html.erb +27 -0
- data/app/views/gaku/exam_divisions/new.html.erb +5 -0
- data/app/views/gaku/exam_divisions/show.html.erb +20 -0
- data/app/views/gaku/exams/_exam.html.slim +2 -0
- data/app/views/gaku/exams/_form.html.slim +16 -0
- data/app/views/gaku/exams/_form_fields.html.slim +17 -0
- data/app/views/gaku/exams/_table_fields.html.slim +8 -0
- data/app/views/gaku/exams/_tabs.html.slim +15 -0
- data/app/views/gaku/exams/_weight_check_widget.html.slim +20 -0
- data/app/views/gaku/exams/create.js.erb +6 -0
- data/app/views/gaku/exams/destroy.js.erb +1 -0
- data/app/views/gaku/exams/edit.html.slim +16 -0
- data/app/views/gaku/exams/exam_portions/_custom_exam_portion_error.html.slim +4 -0
- data/app/views/gaku/exams/exam_portions/_exam_portion.html.slim +2 -0
- data/app/views/gaku/exams/exam_portions/_exam_portion_weight_td.html.slim +3 -0
- data/app/views/gaku/exams/exam_portions/_exam_portions.html.slim +27 -0
- data/app/views/gaku/exams/exam_portions/_form.html.slim +3 -0
- data/app/views/gaku/exams/exam_portions/_table_fields.slim +8 -0
- data/app/views/gaku/exams/exam_portions/_tabs.html.slim +11 -0
- data/app/views/gaku/exams/exam_portions/attachments/_attachment.html.slim +2 -0
- data/app/views/gaku/exams/exam_portions/attachments/_attachments.html.slim +20 -0
- data/app/views/gaku/exams/exam_portions/attachments/_form.html.slim +3 -0
- data/app/views/gaku/exams/exam_portions/attachments/_form_fields.html.slim +3 -0
- data/app/views/gaku/exams/exam_portions/attachments/_modal.html.slim +4 -0
- data/app/views/gaku/exams/exam_portions/attachments/create.js.erb +0 -0
- data/app/views/gaku/exams/exam_portions/attachments/new.js.erb +3 -0
- data/app/views/gaku/exams/exam_portions/create.js.erb +49 -0
- data/app/views/gaku/exams/exam_portions/destroy.js.erb +8 -0
- data/app/views/gaku/exams/exam_portions/edit.html.slim +16 -0
- data/app/views/gaku/exams/exam_portions/new.js.erb +3 -0
- data/app/views/gaku/exams/exam_portions/show.html.slim +30 -0
- data/app/views/gaku/exams/export.xls.rb +67 -0
- data/app/views/gaku/exams/index.html.slim +24 -0
- data/app/views/gaku/exams/new.js.erb +3 -0
- data/app/views/gaku/exams/show.html.slim +28 -0
- data/app/views/gaku/extracurricular_activities/_extracurricular_activities.html.slim +7 -0
- data/app/views/gaku/extracurricular_activities/_extracurricular_activity.html.slim +4 -0
- data/app/views/gaku/extracurricular_activities/_fields.html.slim +1 -0
- data/app/views/gaku/extracurricular_activities/_form.html.slim +3 -0
- data/app/views/gaku/extracurricular_activities/_form_fields.html.slim +3 -0
- data/app/views/gaku/extracurricular_activities/_student_chooser_form.html.slim +4 -0
- data/app/views/gaku/extracurricular_activities/_tabs.html.slim +15 -0
- data/app/views/gaku/extracurricular_activities/create.js.erb +6 -0
- data/app/views/gaku/extracurricular_activities/destroy.js.erb +2 -0
- data/app/views/gaku/extracurricular_activities/edit.html.slim +16 -0
- data/app/views/gaku/extracurricular_activities/index.html.slim +15 -0
- data/app/views/gaku/extracurricular_activities/new.js.erb +3 -0
- data/app/views/gaku/extracurricular_activities/student_chooser.js.erb +9 -0
- data/app/views/gaku/extracurricular_activities/students/_student.html.slim +5 -0
- data/app/views/gaku/extracurricular_activities/students/_students.html.slim +16 -0
- data/app/views/gaku/extracurricular_activities/students/destroy.js.erb +3 -0
- data/app/views/gaku/extracurricular_activities/students/enroll_students.js.erb +11 -0
- data/app/views/gaku/home/_user_info.html.slim +7 -0
- data/app/views/gaku/home/_user_menu.html.slim +4 -0
- data/app/views/gaku/home/index.html.slim +10 -0
- data/app/views/gaku/layouts/edit.html.slim +10 -0
- data/app/views/gaku/layouts/gaku.html.slim +22 -0
- data/app/views/gaku/layouts/home.html.slim +1 -0
- data/app/views/gaku/layouts/index.html.slim +12 -0
- data/app/views/gaku/layouts/show.html.slim +10 -0
- data/app/views/gaku/notes/_buttons.html.slim +8 -0
- data/app/views/gaku/notes/_fields.html.slim +2 -0
- data/app/views/gaku/notes/_form.html.slim +6 -0
- data/app/views/gaku/notes/_form_fields.html.slim +6 -0
- data/app/views/gaku/notes/_modal.html.slim +4 -0
- data/app/views/gaku/notes/_note.html.slim +4 -0
- data/app/views/gaku/notes/_notes.html.slim +21 -0
- data/app/views/gaku/notes/_show_modal.html.slim +4 -0
- data/app/views/gaku/notes/create.js.erb +11 -0
- data/app/views/gaku/notes/destroy.js.erb +4 -0
- data/app/views/gaku/notes/edit.js.erb +3 -0
- data/app/views/gaku/notes/new.js.erb +3 -0
- data/app/views/gaku/notes/show.js.erb +2 -0
- data/app/views/gaku/notes/update.js.erb +4 -0
- data/app/views/gaku/shared/_delete_link.html.slim +1 -0
- data/app/views/gaku/shared/_delete_modal.html.slim +11 -0
- data/app/views/gaku/shared/_errors.html.slim +6 -0
- data/app/views/gaku/shared/_external_school_record.html.slim +36 -0
- data/app/views/gaku/shared/_flash.html.slim +4 -0
- data/app/views/gaku/shared/_language_bar.html.slim +8 -0
- data/app/views/gaku/shared/_login_widget.html.slim +15 -0
- data/app/views/gaku/shared/_manage_buttons.html.slim +4 -0
- data/app/views/gaku/shared/_menubar.html.slim +7 -0
- data/app/views/gaku/shared/_modal_config.html.slim +37 -0
- data/app/views/gaku/shared/_multi_errors.html.slim +6 -0
- data/app/views/gaku/shared/_picture.html.slim +8 -0
- data/app/views/gaku/shared/_upload_picture.html.slim +7 -0
- data/app/views/gaku/shared/error.js.erb +2 -0
- data/app/views/gaku/shared/fields/_address_and_contact_show_table.html.slim +6 -0
- data/app/views/gaku/shared/fields/_attachment_fields.html.slim +10 -0
- data/app/views/gaku/shared/fields/_course_fields.html.slim +4 -0
- data/app/views/gaku/shared/fields/_course_show_fields.html.slim +3 -0
- data/app/views/gaku/shared/fields/_exam_portion_fields.html.slim +7 -0
- data/app/views/gaku/shared/fields/_person_edit_table.html.slim +7 -0
- data/app/views/gaku/shared/fields/_person_show_table.html.slim +15 -0
- data/app/views/gaku/shared/fields/_semester_fields.html.slim +1 -0
- data/app/views/gaku/shared/form_fields/_exam_portion_form_fields.html.slim +14 -0
- data/app/views/gaku/shared/form_fields/_person_form_fields.html.slim +17 -0
- data/app/views/gaku/shared/menu/_frontend.html.erb +22 -0
- data/app/views/gaku/shared/multi_error.js.erb +2 -0
- data/app/views/gaku/shared/notice.js.erb +2 -0
- data/app/views/gaku/shared/overrides/students/_import_link.html.slim +0 -0
- data/app/views/gaku/shared/overrides/syllabuses/_import_link.html.slim +0 -0
- data/app/views/gaku/shared/student/_show.html.slim +12 -0
- data/app/views/gaku/shared/student_chooser/_chooser.html.slim +7 -0
- data/app/views/gaku/shared/student_chooser/_chooser_widget.html.slim +10 -0
- data/app/views/gaku/shared/student_chooser/_modal.html.slim +3 -0
- data/app/views/gaku/states/_no_states_select.html.slim +1 -0
- data/app/views/gaku/states/_states_select.html.slim +1 -0
- data/app/views/gaku/states/index.js.erb +5 -0
- data/app/views/gaku/students/_academic.html.slim +18 -0
- data/app/views/gaku/students/_chooser_widget.html.slim +14 -0
- data/app/views/gaku/students/_form.html.slim +3 -0
- data/app/views/gaku/students/_form_fields.html.slim +25 -0
- data/app/views/gaku/students/_personal.html.slim +3 -0
- data/app/views/gaku/students/_student.html.slim +5 -0
- data/app/views/gaku/students/_student_chooser_form.html.slim +16 -0
- data/app/views/gaku/students/_student_unit.html.slim +5 -0
- data/app/views/gaku/students/_students.html.slim +62 -0
- data/app/views/gaku/students/_table_fields.html.slim +63 -0
- data/app/views/gaku/students/_tabs.html.slim +48 -0
- data/app/views/gaku/students/_tabs_academic.html.slim +40 -0
- data/app/views/gaku/students/_tabs_personal.html.slim +27 -0
- data/app/views/gaku/students/advanced_search.js.erb +66 -0
- data/app/views/gaku/students/badges/_badge.html.slim +2 -0
- data/app/views/gaku/students/badges/_badge_type.html.slim +5 -0
- data/app/views/gaku/students/badges/_badges.html.slim +2 -0
- data/app/views/gaku/students/badges/_badges_tab.html.slim +8 -0
- data/app/views/gaku/students/badges/_edit.html.slim +8 -0
- data/app/views/gaku/students/badges/_fields.html.slim +8 -0
- data/app/views/gaku/students/badges/_form.html.slim +3 -0
- data/app/views/gaku/students/badges/_form_fields.html.slim +1 -0
- data/app/views/gaku/students/badges/_index.html.slim +20 -0
- data/app/views/gaku/students/badges/_index_modal.html.slim +4 -0
- data/app/views/gaku/students/badges/create.js.erb +14 -0
- data/app/views/gaku/students/badges/destroy.js.erb +6 -0
- data/app/views/gaku/students/badges/edit.js.erb +2 -0
- data/app/views/gaku/students/badges/index.js.erb +3 -0
- data/app/views/gaku/students/badges/new.js.erb +3 -0
- data/app/views/gaku/students/badges/update.js.erb +5 -0
- data/app/views/gaku/students/chosen.js.erb +12 -0
- data/app/views/gaku/students/class_group_enrollments/_new_modal.html.slim +28 -0
- data/app/views/gaku/students/class_group_enrollments/create.js.erb +11 -0
- data/app/views/gaku/students/class_group_enrollments/new.js.erb +2 -0
- data/app/views/gaku/students/course_enrollments/_course_enrollment.html.slim +4 -0
- data/app/views/gaku/students/course_enrollments/_course_enrollments.html.slim +17 -0
- data/app/views/gaku/students/course_enrollments/_errors_modal.html.slim +11 -0
- data/app/views/gaku/students/course_enrollments/_form.html.slim +4 -0
- data/app/views/gaku/students/course_enrollments/create.js.erb +9 -0
- data/app/views/gaku/students/course_enrollments/destroy.js.erb +3 -0
- data/app/views/gaku/students/course_enrollments/error.js.erb +2 -0
- data/app/views/gaku/students/course_enrollments/new.js.erb +3 -0
- data/app/views/gaku/students/create.js.erb +8 -0
- data/app/views/gaku/students/destroy.js.erb +2 -0
- data/app/views/gaku/students/edit.html.slim +37 -0
- data/app/views/gaku/students/external_school_records/_external_school_record.html.slim +2 -0
- data/app/views/gaku/students/external_school_records/_external_school_records.html.slim +24 -0
- data/app/views/gaku/students/external_school_records/_fields.html.slim +11 -0
- data/app/views/gaku/students/external_school_records/_form.html.slim +3 -0
- data/app/views/gaku/students/external_school_records/_form_fields.html.slim +17 -0
- data/app/views/gaku/students/external_school_records/_modal.html.slim +4 -0
- data/app/views/gaku/students/external_school_records/create.js.erb +8 -0
- data/app/views/gaku/students/external_school_records/destroy.js.erb +3 -0
- data/app/views/gaku/students/external_school_records/edit.js.erb +4 -0
- data/app/views/gaku/students/external_school_records/new.js.erb +4 -0
- data/app/views/gaku/students/external_school_records/update.js.erb +3 -0
- data/app/views/gaku/students/guardians/_delete_modal.html.slim +12 -0
- data/app/views/gaku/students/guardians/_form.html.slim +3 -0
- data/app/views/gaku/students/guardians/_form_fields.html.slim +4 -0
- data/app/views/gaku/students/guardians/_guardian.html.slim +12 -0
- data/app/views/gaku/students/guardians/_guardians.html.slim +24 -0
- data/app/views/gaku/students/guardians/_picture.html.slim +8 -0
- data/app/views/gaku/students/guardians/_tabs.html.slim +14 -0
- data/app/views/gaku/students/guardians/_upload_picture.html.slim +7 -0
- data/app/views/gaku/students/guardians/create.js.erb +7 -0
- data/app/views/gaku/students/guardians/destroy.js.erb +1 -0
- data/app/views/gaku/students/guardians/edit.html.slim +21 -0
- data/app/views/gaku/students/guardians/new.js.erb +3 -0
- data/app/views/gaku/students/guardians/recovery.js.erb +1 -0
- data/app/views/gaku/students/guardians/show.html.slim +17 -0
- data/app/views/gaku/students/importer/index.html.slim +26 -0
- data/app/views/gaku/students/index.html.slim +22 -0
- data/app/views/gaku/students/index.js.erb +2 -0
- data/app/views/gaku/students/new.html.slim +3 -0
- data/app/views/gaku/students/new.js.erb +3 -0
- data/app/views/gaku/students/search/_academic.html.slim +22 -0
- data/app/views/gaku/students/search/_address.html.slim +34 -0
- data/app/views/gaku/students/search/_advanced_form.html.slim +36 -0
- data/app/views/gaku/students/search/_extended.slim +108 -0
- data/app/views/gaku/students/search/_form.html.slim +8 -0
- data/app/views/gaku/students/search/_student.html.slim +36 -0
- data/app/views/gaku/students/show.html.slim +24 -0
- data/app/views/gaku/students/simple_grades/_edit.html.slim +8 -0
- data/app/views/gaku/students/simple_grades/_fields.html.slim +8 -0
- data/app/views/gaku/students/simple_grades/_form.html.slim +3 -0
- data/app/views/gaku/students/simple_grades/_form_fields.html.slim +3 -0
- data/app/views/gaku/students/simple_grades/_index.html.slim +21 -0
- data/app/views/gaku/students/simple_grades/_index_modal.html.slim +4 -0
- data/app/views/gaku/students/simple_grades/_simple_grade.html.slim +2 -0
- data/app/views/gaku/students/simple_grades/_simple_grades.html.slim +2 -0
- data/app/views/gaku/students/simple_grades/create.js.erb +10 -0
- data/app/views/gaku/students/simple_grades/destroy.js.erb +4 -0
- data/app/views/gaku/students/simple_grades/edit.js.erb +4 -0
- data/app/views/gaku/students/simple_grades/index.js.erb +5 -0
- data/app/views/gaku/students/simple_grades/new.js.erb +6 -0
- data/app/views/gaku/students/simple_grades/update.js.erb +4 -0
- data/app/views/gaku/students/student_specialties/_edit.html.slim +8 -0
- data/app/views/gaku/students/student_specialties/_fields.html.slim +5 -0
- data/app/views/gaku/students/student_specialties/_form.html.slim +3 -0
- data/app/views/gaku/students/student_specialties/_form_fields.html.slim +2 -0
- data/app/views/gaku/students/student_specialties/_index.html.slim +18 -0
- data/app/views/gaku/students/student_specialties/_index_modal.html.slim +4 -0
- data/app/views/gaku/students/student_specialties/_student_specialties.html.slim +2 -0
- data/app/views/gaku/students/student_specialties/_student_specialty.html.slim +2 -0
- data/app/views/gaku/students/student_specialties/create.js.erb +10 -0
- data/app/views/gaku/students/student_specialties/destroy.js.erb +4 -0
- data/app/views/gaku/students/student_specialties/edit.js.erb +2 -0
- data/app/views/gaku/students/student_specialties/index.js.erb +5 -0
- data/app/views/gaku/students/student_specialties/new.js.erb +3 -0
- data/app/views/gaku/students/student_specialties/update.js.erb +4 -0
- data/app/views/gaku/syllabuses/_all_exams.html.slim +14 -0
- data/app/views/gaku/syllabuses/_fields.html.slim +7 -0
- data/app/views/gaku/syllabuses/_form.html.slim +3 -0
- data/app/views/gaku/syllabuses/_form_fields.html.slim +12 -0
- data/app/views/gaku/syllabuses/_syllabus.html.slim +2 -0
- data/app/views/gaku/syllabuses/_syllabuses.html.slim +12 -0
- data/app/views/gaku/syllabuses/_tabs.html.slim +16 -0
- data/app/views/gaku/syllabuses/create.js.erb +7 -0
- data/app/views/gaku/syllabuses/destroy.js.erb +1 -0
- data/app/views/gaku/syllabuses/edit.html.slim +16 -0
- data/app/views/gaku/syllabuses/exam_syllabuses/create.js.erb +12 -0
- data/app/views/gaku/syllabuses/exam_syllabuses/destroy.js.erb +5 -0
- data/app/views/gaku/syllabuses/exams/_exam.html.slim +3 -0
- data/app/views/gaku/syllabuses/exams/_exams.html.slim +13 -0
- data/app/views/gaku/syllabuses/exams/_fields.html.slim +10 -0
- data/app/views/gaku/syllabuses/exams/_form.html.slim +17 -0
- data/app/views/gaku/syllabuses/exams/_form_fields.html.slim +10 -0
- data/app/views/gaku/syllabuses/exams/_modal.html.slim +4 -0
- data/app/views/gaku/syllabuses/exams/_select_form.html.slim +6 -0
- data/app/views/gaku/syllabuses/exams/create.js.erb +9 -0
- data/app/views/gaku/syllabuses/exams/destroy.js.erb +3 -0
- data/app/views/gaku/syllabuses/exams/edit.js.erb +3 -0
- data/app/views/gaku/syllabuses/exams/new.js.erb +3 -0
- data/app/views/gaku/syllabuses/exams/update.js.erb +4 -0
- data/app/views/gaku/syllabuses/importer/index.html.slim +14 -0
- data/app/views/gaku/syllabuses/index.html.slim +14 -0
- data/app/views/gaku/syllabuses/new.js.erb +3 -0
- data/app/views/gaku/teachers/_fields.html.slim +5 -0
- data/app/views/gaku/teachers/_form.html.slim +3 -0
- data/app/views/gaku/teachers/_form_fields.html.slim +1 -0
- data/app/views/gaku/teachers/_tabs.html.slim +20 -0
- data/app/views/gaku/teachers/_teacher.html.slim +5 -0
- data/app/views/gaku/teachers/_teachers.html.slim +11 -0
- data/app/views/gaku/teachers/create.js.erb +8 -0
- data/app/views/gaku/teachers/destroy.js.erb +1 -0
- data/app/views/gaku/teachers/edit.html.slim +19 -0
- data/app/views/gaku/teachers/index.html.slim +16 -0
- data/app/views/gaku/teachers/new.js.erb +3 -0
- data/app/views/gaku/teachers/show.html.slim +13 -0
- data/app/views/kaminari/_first_page.html.erb +11 -0
- data/app/views/kaminari/_gap.html.erb +8 -0
- data/app/views/kaminari/_last_page.html.erb +11 -0
- data/app/views/kaminari/_next_page.html.erb +11 -0
- data/app/views/kaminari/_page.html.erb +12 -0
- data/app/views/kaminari/_paginator.html.erb +27 -0
- data/app/views/kaminari/_prev_page.html.erb +11 -0
- data/config/initializers/client_side_validations.rb +9 -0
- data/config/initializers/wrap_parameters.rb +14 -0
- data/config/routes.rb +137 -0
- data/lib/gaku/app_responder.rb +6 -0
- data/lib/gaku/class_name_detector.rb +23 -0
- data/lib/gaku/frontend.rb +33 -0
- data/lib/gaku/frontend/engine.rb +30 -0
- data/lib/gaku_frontend.rb +1 -0
- data/lib/tasks/admin_user.rake +104 -0
- data/lib/tasks/core.rake +65 -0
- data/lib/tasks/reset.rake +37 -0
- metadata +848 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
.row
|
2
|
+
.col-md-12
|
3
|
+
ul.nav.nav-tabs.nav-justified
|
4
|
+
li.active
|
5
|
+
a#exam-exam-portions-tab-link data-toggle="tab" href="#exam-portions"
|
6
|
+
= print_count @exam.exam_portions_count, t(:'exam_portion.plural')
|
7
|
+
li
|
8
|
+
a#exam-notes-tab-link data-toggle="tab" href="#exam-notes"
|
9
|
+
= print_count @exam.notes_count, t(:'note.plural')
|
10
|
+
|
11
|
+
.tab-content
|
12
|
+
#exam-portions.tab-pane.active
|
13
|
+
= render 'gaku/exams/exam_portions/exam_portions'
|
14
|
+
#exam-notes.tab-pane
|
15
|
+
= render 'gaku/notes/notes'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
.col-md-12.well
|
2
|
+
.row
|
3
|
+
h3 = t('exam.weight')
|
4
|
+
.row
|
5
|
+
.exam-portion-error
|
6
|
+
/ .alert.alert-danger
|
7
|
+
/ = t('exam.weight')
|
8
|
+
.row
|
9
|
+
table.table.table-striped.table-bordered.table-condensed.exam-portions-weight
|
10
|
+
thead
|
11
|
+
- exam.exam_portions.each_with_index do |portion, i|
|
12
|
+
th.btn-warning = "#{portion.name} #{t('exam.weight')}"
|
13
|
+
tbody
|
14
|
+
=render partial: 'gaku/exams/exam_portions/exam_portion_weight_td', collection: exam.exam_portions, as: :portion
|
15
|
+
|
16
|
+
table.table.table-striped.table-bordered.table-condensed.exam-portions-total-weight
|
17
|
+
thead
|
18
|
+
th.btn-inverse = t('exam.total_weight')
|
19
|
+
tbody
|
20
|
+
td#weight-total.vm = exam.total_weight
|
@@ -0,0 +1 @@
|
|
1
|
+
showNotice("<%= render_flash %>");
|
@@ -0,0 +1,16 @@
|
|
1
|
+
.row
|
2
|
+
.col-md-12.exam-index
|
3
|
+
= normal_form_for @exam, label: 'nil' do |f|
|
4
|
+
= render 'form_fields', f: f
|
5
|
+
= buttons_for @exam
|
6
|
+
|
7
|
+
hr
|
8
|
+
|
9
|
+
= render 'tabs'
|
10
|
+
|
11
|
+
= footer do
|
12
|
+
.col-md-9
|
13
|
+
= link_to_index exams_path
|
14
|
+
.col-md-3
|
15
|
+
= link_to_modal_delete
|
16
|
+
= render 'gaku/shared/delete_modal', target: @exam
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#exam-portions-modal
|
2
|
+
#exam-exam-portions
|
3
|
+
= index_header do
|
4
|
+
#new-exam-exam-portion.d-none
|
5
|
+
.pull-right
|
6
|
+
= ajax_link_to_new t(:'exam.add_portion'), [:new, @exam, :exam_portion], id: 'new-exam-exam-portion-link' if can_edit?
|
7
|
+
|
8
|
+
= index_body do
|
9
|
+
= table_for 'exam-exam-portions-index' do
|
10
|
+
thead
|
11
|
+
tr
|
12
|
+
= th t(:'order')
|
13
|
+
= th t(:'exam_portion.name')
|
14
|
+
= th t(:'exam_portion.max_score')
|
15
|
+
- if @exam.use_weighting
|
16
|
+
= th t(:'exam_portion.weight')
|
17
|
+
= th t(:'exam_portion.problem_count')
|
18
|
+
= th t(:'exam_portion.attached_file_count')
|
19
|
+
- if can_edit?
|
20
|
+
= th_actions 3
|
21
|
+
- else
|
22
|
+
= th_actions 1
|
23
|
+
tbody class='sortable' data-sort-url="#{sort_exam_exam_portions_path(@exam)}"
|
24
|
+
= render partial: 'gaku/exams/exam_portions/exam_portion', collection: @exam.exam_portions, as: :exam_portion
|
25
|
+
|
26
|
+
|
27
|
+
|
@@ -0,0 +1,8 @@
|
|
1
|
+
= render 'gaku/shared/fields/exam_portion_fields', exam_portion: exam_portion
|
2
|
+
- if can_edit?
|
3
|
+
td
|
4
|
+
= link_to_show [@exam, exam_portion]
|
5
|
+
= link_to_edit [:edit, @exam, exam_portion]
|
6
|
+
= ajax_link_to_delete [@exam, exam_portion], class: 'btn btn-xs btn-danger delete-link'
|
7
|
+
- else
|
8
|
+
td = link_to_show [@exam, exam_portion]
|
@@ -0,0 +1,11 @@
|
|
1
|
+
.row
|
2
|
+
.col-md-12
|
3
|
+
ul.nav.nav-tabs.nav-justified
|
4
|
+
li.active
|
5
|
+
a#exam-exam-portion-attachments-tab-link data-toggle="tab" href="#exam-portion-attachments"
|
6
|
+
= print_count @exam_portion.attachments.count, t(:'attachment.plural')
|
7
|
+
|
8
|
+
.tab-content
|
9
|
+
#exam-exam-portion-attachments.tab-pane.active
|
10
|
+
= render 'gaku/exams/exam_portions/attachments/attachments'
|
11
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
= index_header do
|
2
|
+
#new-exam-exam-portion-attachment.d-none
|
3
|
+
.pull-left
|
4
|
+
= count_div 'exam-exam-portion-attachments-count' do
|
5
|
+
= print_count @exam_portion.attachments.count, t(:'attachment.list')
|
6
|
+
.pull-right
|
7
|
+
= ajax_link_to_new t(:'attachment.new'), [:new, @exam, @exam_portion, :attachment], id: 'new-exam-exam-portion-attachment-link' if can_edit?
|
8
|
+
|
9
|
+
= index_body do
|
10
|
+
= table_for 'exam-exam-portion-attachments-index' do
|
11
|
+
thead
|
12
|
+
tr
|
13
|
+
= th t(:'attachment.name')
|
14
|
+
= th t(:'attachment.description')
|
15
|
+
= th t(:'attachment.file_name')
|
16
|
+
= th t(:'attachment.file_type')
|
17
|
+
= th t(:'attachment.file_size')
|
18
|
+
= th_actions 3
|
19
|
+
tbody
|
20
|
+
= render partial: 'gaku/exams/exam_portions/attachments/attachment', collection: @exam_portion.attachments, as: :attachment
|
@@ -0,0 +1,4 @@
|
|
1
|
+
= modal_for 'edit-exam-exam-portion-attachment-modal' do
|
2
|
+
= normal_modal_form_for [@exam,@exam_portion, @attachment], resource: "exam-exam-portion-attachment" do |f|
|
3
|
+
= render 'gaku/exams/exam_portions/attachments/form_fields', f: f
|
4
|
+
= buttons_for @attachment, resource: "exam-exam-portion-attachment"
|
File without changes
|
@@ -0,0 +1,49 @@
|
|
1
|
+
$('#new-exam-exam-portion').slide();
|
2
|
+
$('#new-exam-exam-portion-link').show();
|
3
|
+
showNotice("<%= render_flash %>");
|
4
|
+
|
5
|
+
$('#exam-exam-portions-index tbody').append('<%= j render("gaku/exams/exam_portions/exam_portion", {exam_portion: @exam_portion}) %>');
|
6
|
+
|
7
|
+
$('.exam-exam-portions-count').html("<%= print_count(@count, t(:'exam_portion.list')) %>");
|
8
|
+
$('#exam-exam-portions-tab-link').html("<%= print_count(@count, t(:'exam_portion.plural')) %>");
|
9
|
+
|
10
|
+
<% if @exam.use_weighting? %>
|
11
|
+
|
12
|
+
//if no portion added yet
|
13
|
+
if($('.exam-portions-weight thead tr').length == 0){
|
14
|
+
$('.exam-portions-weight thead').append('<tr></tr>');
|
15
|
+
$('.exam-portions-weight tbody').append('<tr></tr>');
|
16
|
+
}
|
17
|
+
|
18
|
+
$('.exam-portions-weight thead tr').append('<th class="btn-warning" data-id=<%= @exam.exam_portions.last.id%>> <%= @exam.exam_portions.last.name+ " " + t("exam.weight") %> </th>');
|
19
|
+
$('.exam-portions-weight tbody tr').append('<%= j render("gaku/exams/exam_portions/exam_portion_weight_td", {portion: @exam.exam_portions.last}) %>');
|
20
|
+
|
21
|
+
weights = ('<%= @exam.exam_portions.pluck(:weight) %>');
|
22
|
+
weights = weights.slice(1, -1).split(',');
|
23
|
+
|
24
|
+
total = 0;
|
25
|
+
for (var i = 0; i < weights.length; i++) {
|
26
|
+
total += parseFloat(weights[i]);
|
27
|
+
}
|
28
|
+
|
29
|
+
$('.exam-portions-weight tbody form').each(function(i, form){
|
30
|
+
$(form).find('input.exam-portion-weight').val(parseFloat(weights[i]))
|
31
|
+
})
|
32
|
+
|
33
|
+
$('#exam-exam-portions-index tbody tr').each(function(i, tr){
|
34
|
+
tdWeight = $(tr).find('td')[3]
|
35
|
+
$(tdWeight).text(weights[i])
|
36
|
+
})
|
37
|
+
|
38
|
+
$('#weight-total').text(total);
|
39
|
+
<% end %>
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
error = '<%= @exam_portion.custom_errors %>'
|
44
|
+
|
45
|
+
if(error){
|
46
|
+
$('.exam-portion-error').html('<%= j render("gaku/exams/exam_portions/custom_exam_portion_error", {error: @exam_portion.custom_errors}) %>')
|
47
|
+
}else{
|
48
|
+
$('.exam-portion-error').html('');
|
49
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<% if @exam.destroyed? %>
|
2
|
+
window.location.href = '/exams'
|
3
|
+
<% else %>
|
4
|
+
$('#exam-exam-portions-tab-link').html("<%= print_count(@count, t(:'exam_portion.plural')) %>");
|
5
|
+
$('[data-id=<%= @exam_portion.id %>]').remove();
|
6
|
+
$('#weight-total').text('<%= @exam.total_weight %>');
|
7
|
+
showNotice("<%= render_flash %>");
|
8
|
+
<% end %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
.row
|
2
|
+
.col-md-12.exam-index
|
3
|
+
= normal_form_for [@exam, @exam_portion], label: 'nil', resource: 'exam-exam-portion' do |f|
|
4
|
+
= render 'gaku/shared/form_fields/exam_portion_form_fields', ep_form: f
|
5
|
+
= buttons_for @exam_portion, resource: 'exam-exam-portion'
|
6
|
+
|
7
|
+
hr
|
8
|
+
|
9
|
+
= render 'tabs'
|
10
|
+
|
11
|
+
= footer do
|
12
|
+
.col-md-9
|
13
|
+
= link_to_index [:edit, @exam]
|
14
|
+
.col-md-3
|
15
|
+
= link_to_modal_delete
|
16
|
+
/ = render 'gaku/shared/delete_modal', target: @exam
|
@@ -0,0 +1,30 @@
|
|
1
|
+
= panel_for 'exam-panel' do
|
2
|
+
= panel_header 'Exam Portion information', @exam
|
3
|
+
|
4
|
+
table.table.table-bordered.th-center
|
5
|
+
tbody
|
6
|
+
tr
|
7
|
+
th.active
|
8
|
+
= t(:'order')
|
9
|
+
td
|
10
|
+
h2 = drag_field
|
11
|
+
tr
|
12
|
+
th.active = t(:'exam_portion.name')
|
13
|
+
td = @exam_portion.name
|
14
|
+
tr
|
15
|
+
th.active = t(:'exam_portion.max_score')
|
16
|
+
td = @exam_portion.max_score
|
17
|
+
tr
|
18
|
+
th.active = t(:'exam_portion.weight')
|
19
|
+
td
|
20
|
+
- if @exam.use_weighting
|
21
|
+
= @exam_portion.weight
|
22
|
+
tr
|
23
|
+
th.active = t(:'exam_portion.problem_count')
|
24
|
+
td = @exam_portion.problem_count
|
25
|
+
|
26
|
+
= render 'tabs'
|
27
|
+
|
28
|
+
= footer do
|
29
|
+
.col-md-12
|
30
|
+
= link_to_index exams_path
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'spreadsheet'
|
2
|
+
require 'csv'
|
3
|
+
|
4
|
+
response.headers['Content-Disposition'] = "attachment; filename='#{@course.code}.xls'"
|
5
|
+
|
6
|
+
students = @course.students
|
7
|
+
|
8
|
+
book = Spreadsheet::Workbook.new
|
9
|
+
summary_sheet = book.create_worksheet
|
10
|
+
summary_sheet.name = 'Exam Summary Sheet'
|
11
|
+
exams = @course.syllabus.exams
|
12
|
+
exams.each do |exam|
|
13
|
+
|
14
|
+
#dynamicly merging cells
|
15
|
+
exam_portion_count = exam.exam_portions.count
|
16
|
+
|
17
|
+
#create worksheet for current exam
|
18
|
+
exam_sheet = book.create_worksheet name: exam.name
|
19
|
+
|
20
|
+
# formating and merging cells
|
21
|
+
format = Spreadsheet::Format.new weight: :bold, align: :center
|
22
|
+
exam_sheet.row(0).default_format = format
|
23
|
+
exam_sheet.row(1).default_format = format
|
24
|
+
exam_sheet.row(2).default_format = format
|
25
|
+
|
26
|
+
exam_sheet.merge_cells(1,0,1,3)
|
27
|
+
exam_sheet.merge_cells(1,4,1,3 + exam_portion_count)
|
28
|
+
|
29
|
+
|
30
|
+
#first info row
|
31
|
+
exam_sheet.row(0)[0] = 'Course Code:'
|
32
|
+
exam_sheet.row(0)[1] = @course.code
|
33
|
+
exam_sheet.row(0)[2] = 'Course ID:'
|
34
|
+
exam_sheet.row(0)[3] = @course.id
|
35
|
+
exam_sheet.row(0)[4] = 'Exam Name:'
|
36
|
+
exam_sheet.row(0)[5] = exam.name
|
37
|
+
exam_sheet.row(0)[6] = 'Exam ID:'
|
38
|
+
exam_sheet.row(0)[7] = exam.id
|
39
|
+
|
40
|
+
# table header cells
|
41
|
+
exam_sheet.row(1).concat ['Student','','','', "#{exam.name}"]
|
42
|
+
exam_sheet.row(2).concat ['id','Class', 'Seat Number','Name']
|
43
|
+
exam.exam_portions.each_with_index do |portion, index|
|
44
|
+
exam_sheet.row(2)[4 + index] = portion.name
|
45
|
+
end
|
46
|
+
|
47
|
+
#students info section
|
48
|
+
students.each_with_index do |student, index|
|
49
|
+
exam_sheet.row(3 + index)[0] = student.id
|
50
|
+
# exam_sheet.row(2 + index)[0] = ? - class
|
51
|
+
# exam_sheet.row(2 + index)[1] = ? - seat number
|
52
|
+
exam_sheet.row(3 + index)[3] = student
|
53
|
+
|
54
|
+
# studens/exam_portion score matrix
|
55
|
+
exam.exam_portions.each_with_index do |portion, portion_index|
|
56
|
+
|
57
|
+
#this method should be improved. many queries to db
|
58
|
+
portion_score = student.exam_portion_scores.where(exam_portion_id: portion.id).first
|
59
|
+
|
60
|
+
exam_sheet.row(3 + index)[(4 + portion_index.to_i)] = portion_score.score rescue ''
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
spreadsheet = StringIO.new
|
66
|
+
book.write spreadsheet
|
67
|
+
spreadsheet.string
|
@@ -0,0 +1,24 @@
|
|
1
|
+
= content_for :index_header do
|
2
|
+
.pull-left
|
3
|
+
= count_div 'exams-count' do
|
4
|
+
= print_count @count, t(:'exam.list')
|
5
|
+
.pull-right
|
6
|
+
= ajax_link_to_new t(:'exam.add'), [:new, :exam], id: 'new-exam-link'
|
7
|
+
|
8
|
+
= content_for :new_form do
|
9
|
+
#new-exam.d-none
|
10
|
+
|
11
|
+
= table_for 'exams-index' do
|
12
|
+
thead
|
13
|
+
tr
|
14
|
+
= th t(:'exam.name')
|
15
|
+
= th t(:'department.singular')
|
16
|
+
= th t(:'exam.adjustments')
|
17
|
+
= th t(:'exam.weight')
|
18
|
+
= th t(:'exam.use_weighting')
|
19
|
+
= th_actions 2
|
20
|
+
tbody
|
21
|
+
= render @exams
|
22
|
+
|
23
|
+
= paginate @exams
|
24
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
= panel_for 'exam-panel' do
|
2
|
+
= panel_header 'Exam information', @exam
|
3
|
+
|
4
|
+
table.table.table-bordered.th-center
|
5
|
+
tbody
|
6
|
+
tr
|
7
|
+
th.active
|
8
|
+
= t(:'exam.name')
|
9
|
+
td
|
10
|
+
h2 = @exam.name
|
11
|
+
tr
|
12
|
+
th.active = t(:'department.singular')
|
13
|
+
td = @exam.department
|
14
|
+
tr
|
15
|
+
th.active = t(:'exam.weight')
|
16
|
+
td = @exam.weight
|
17
|
+
tr
|
18
|
+
th.active = t(:'exam.description')
|
19
|
+
td = @exam.description
|
20
|
+
tr
|
21
|
+
th.active = t(:'exam.adjustments')
|
22
|
+
td = @exam.adjustments
|
23
|
+
|
24
|
+
= render 'tabs'
|
25
|
+
|
26
|
+
= footer do
|
27
|
+
.col-md-12
|
28
|
+
= link_to_index exams_path
|