gaku_core 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/gaku/core_controller.rb +3 -8
- data/app/decorators/gaku/course_decorator.rb +1 -2
- data/app/decorators/gaku/guardian_decorator.rb +1 -1
- data/app/decorators/gaku/person_decorator.rb +8 -12
- data/app/decorators/gaku/student_decorator.rb +0 -2
- data/app/decorators/gaku/teacher_decorator.rb +1 -1
- data/app/models/concerns/addresses.rb +6 -6
- data/app/models/concerns/contacts.rb +6 -6
- data/app/models/concerns/enrollmentable.rb +9 -0
- data/app/models/concerns/gradable.rb +14 -0
- data/app/models/concerns/notes.rb +1 -2
- data/app/models/concerns/pagination.rb +1 -2
- data/app/models/concerns/person.rb +0 -2
- data/app/models/concerns/picture.rb +1 -3
- data/app/models/concerns/semesterable.rb +12 -0
- data/app/models/concerns/student_reviewable.rb +7 -0
- data/app/models/gaku/ability.rb +2 -4
- data/app/models/gaku/address.rb +11 -10
- data/app/models/gaku/admin_ability.rb +0 -1
- data/app/models/gaku/assignment.rb +0 -2
- data/app/models/gaku/assignment_score.rb +0 -1
- data/app/models/gaku/attachment.rb +1 -4
- data/app/models/gaku/attendance.rb +0 -2
- data/app/models/gaku/attendance_type.rb +0 -2
- data/app/models/gaku/badge.rb +0 -2
- data/app/models/gaku/badge_type.rb +0 -1
- data/app/models/gaku/class_group.rb +13 -13
- data/app/models/gaku/commute_method_type.rb +0 -2
- data/app/models/gaku/contact.rb +6 -36
- data/app/models/gaku/contact_type.rb +0 -2
- data/app/models/gaku/country.rb +0 -3
- data/app/models/gaku/course.rb +11 -25
- data/app/models/gaku/course_group.rb +0 -2
- data/app/models/gaku/course_group_enrollment.rb +3 -4
- data/app/models/gaku/department.rb +0 -2
- data/app/models/gaku/enrollment.rb +85 -0
- data/app/models/gaku/enrollment_status.rb +0 -2
- data/app/models/gaku/exam.rb +17 -22
- data/app/models/gaku/exam_portion.rb +2 -6
- data/app/models/gaku/exam_portion_score.rb +0 -2
- data/app/models/gaku/exam_schedule.rb +0 -1
- data/app/models/gaku/exam_session.rb +14 -0
- data/app/models/gaku/exam_syllabus.rb +2 -6
- data/app/models/gaku/external_school_record.rb +1 -9
- data/app/models/gaku/extracurricular_activity.rb +1 -2
- data/app/models/gaku/faculty.rb +0 -2
- data/app/models/gaku/grading_method.rb +14 -2
- data/app/models/gaku/grading_method_connector.rb +35 -0
- data/app/models/gaku/grading_method_set.rb +6 -4
- data/app/models/gaku/grading_method_set_item.rb +4 -5
- data/app/models/gaku/guardian.rb +1 -3
- data/app/models/gaku/install.rb +0 -2
- data/app/models/gaku/lesson.rb +0 -1
- data/app/models/gaku/lesson_plan.rb +0 -2
- data/app/models/gaku/level.rb +0 -2
- data/app/models/gaku/preset.rb +18 -18
- data/app/models/gaku/program.rb +0 -2
- data/app/models/gaku/program_level.rb +0 -2
- data/app/models/gaku/program_specialty.rb +0 -2
- data/app/models/gaku/program_syllabus.rb +0 -2
- data/app/models/gaku/role.rb +0 -2
- data/app/models/gaku/schedule.rb +0 -1
- data/app/models/gaku/scholarship_status.rb +0 -2
- data/app/models/gaku/school.rb +0 -2
- data/app/models/gaku/school_role.rb +0 -2
- data/app/models/gaku/school_year.rb +4 -2
- data/app/models/gaku/semester.rb +21 -6
- data/app/models/gaku/semester_attendance.rb +14 -0
- data/app/models/gaku/semester_connector.rb +27 -0
- data/app/models/gaku/simple_grade.rb +0 -2
- data/app/models/gaku/simple_grade_type.rb +0 -1
- data/app/models/gaku/specialty.rb +0 -2
- data/app/models/gaku/state.rb +0 -3
- data/app/models/gaku/student.rb +47 -45
- data/app/models/gaku/student_exam_session.rb +11 -0
- data/app/models/gaku/student_guardian.rb +0 -2
- data/app/models/gaku/student_review.rb +11 -0
- data/app/models/gaku/student_review_category.rb +13 -0
- data/app/models/gaku/student_specialty.rb +2 -5
- data/app/models/gaku/syllabus.rb +0 -4
- data/app/models/gaku/teacher.rb +0 -2
- data/app/models/gaku/template.rb +7 -9
- data/app/models/gaku/user.rb +10 -22
- data/app/models/gaku/user_role.rb +0 -2
- data/app/services/gaku/contact_creation.rb +49 -0
- data/app/services/gaku/contact_updation.rb +41 -0
- data/app/services/gaku/student_selection.rb +57 -0
- data/app/services/gaku/user_creator.rb +31 -0
- data/config/initializers/devise.rb +1 -1
- data/config/initializers/redis.rb +5 -0
- data/config/locales/en.yml +79 -15
- data/config/routes.rb +5 -10
- data/db/default/gaku/attendance_types.rb +14 -16
- data/db/default/gaku/commute_method_types.rb +2 -4
- data/db/default/gaku/enrollment_status.rb +3 -3
- data/db/default/gaku/master_school.rb +7 -6
- data/db/default/gaku/presets.rb +6 -9
- data/db/default/gaku/scholarship_statuses.rb +1 -1
- data/db/migrate/20140128141752_change_grading_methods_arguments_field.rb +5 -0
- data/db/migrate/20140213113405_create_grading_method_connectors_table.rb +9 -0
- data/db/migrate/20140304094422_create_gaku_exam_sessions_table.rb +10 -0
- data/db/migrate/20140304101025_create_gaku_student_exam_session_table.rb +8 -0
- data/db/migrate/20140325073941_add_time_format_24_to_presets_table.rb +5 -0
- data/db/migrate/20140408111314_remove_semester_join_tables.rb +6 -0
- data/db/migrate/20140408111358_create_semester_connectors_table.rb +8 -0
- data/db/migrate/20140423093155_create_enrollments_table.rb +11 -0
- data/db/migrate/20140423100114_clean_enrollments_join_models.rb +8 -0
- data/db/migrate/20140429112725_add_counters_to_enrollmentable.rb +11 -0
- data/db/migrate/20140604104210_rename_method_to_grading_method.rb +5 -0
- data/db/migrate/20140604113045_add_default_value_to_curved.rb +5 -0
- data/db/migrate/20140610091053_add_seat_number_to_enrollments.rb +5 -0
- data/db/migrate/20140701104700_change_hstore_to_string_criteria.rb +5 -0
- data/db/migrate/20140715135152_create_semester_attendance_table.rb +16 -0
- data/db/migrate/20140718105226_create_student_review_categories_table.rb +13 -0
- data/db/migrate/20140728121353_create_student_review_table.rb +12 -0
- data/db/seeds.rb +1 -1
- data/lib/gaku/core.rb +2 -1
- data/lib/gaku/core/engine.rb +7 -5
- data/lib/gaku/core/url_helpers.rb +1 -1
- data/lib/gaku/grading/collection/base_method.rb +30 -0
- data/lib/gaku/grading/collection/calculations.rb +36 -0
- data/lib/gaku/grading/collection/interval.rb +55 -0
- data/lib/gaku/grading/collection/ordinal.rb +10 -0
- data/lib/gaku/grading/collection/percentage.rb +10 -0
- data/lib/gaku/grading/collection/result.rb +18 -0
- data/lib/gaku/grading/collection/score.rb +10 -0
- data/lib/gaku/grading/single/base_method.rb +30 -0
- data/lib/gaku/grading/single/calculations.rb +42 -0
- data/lib/gaku/grading/single/interval.rb +7 -0
- data/lib/gaku/grading/single/ordinal.rb +30 -0
- data/lib/gaku/grading/single/pass_fail.rb +2 -0
- data/lib/gaku/grading/single/percentage.rb +26 -0
- data/lib/gaku/grading/single/ratio.rb +2 -0
- data/lib/gaku/grading/single/result.rb +18 -0
- data/lib/gaku/grading/single/score.rb +15 -0
- data/lib/gaku/migrations.rb +1 -1
- data/lib/gaku/streamer/sse.rb +5 -5
- data/lib/gaku/testing/auth_helpers.rb +6 -2
- data/lib/gaku/testing/common_rake.rb +9 -3
- data/lib/gaku/testing/controller_helpers.rb +17 -12
- data/lib/gaku/testing/coverage.rb +1 -1
- data/lib/gaku/testing/deferred_garbage_collection.rb +3 -3
- data/lib/gaku/testing/factories/attachment_factory.rb +0 -1
- data/lib/gaku/testing/factories/attendance_type_factory.rb +1 -1
- data/lib/gaku/testing/factories/class_group_factory.rb +12 -1
- data/lib/gaku/testing/factories/contact_creation_factory.rb +18 -0
- data/lib/gaku/testing/factories/course_enrollment_factory.rb +9 -9
- data/lib/gaku/testing/factories/course_factory.rb +2 -4
- data/lib/gaku/testing/factories/course_group_factory.rb +2 -4
- data/lib/gaku/testing/factories/enrollment_factory.rb +10 -0
- data/lib/gaku/testing/factories/exam_factory.rb +1 -1
- data/lib/gaku/testing/factories/exam_portion_factory.rb +2 -4
- data/lib/gaku/testing/factories/exam_score_factory.rb +1 -1
- data/lib/gaku/testing/factories/exam_session_factory.rb +14 -0
- data/lib/gaku/testing/factories/extracurricular_activity_factory.rb +1 -1
- data/lib/gaku/testing/factories/grading_method_connector_factory.rb +11 -0
- data/lib/gaku/testing/factories/grading_method_factory.rb +3 -2
- data/lib/gaku/testing/factories/guardian_factory.rb +2 -4
- data/lib/gaku/testing/factories/lesson_plan_factory.rb +2 -2
- data/lib/gaku/testing/factories/preset_factory.rb +7 -7
- data/lib/gaku/testing/factories/program_factory.rb +0 -1
- data/lib/gaku/testing/factories/school_factory.rb +3 -3
- data/lib/gaku/testing/factories/semester_attendance_factory.rb +8 -0
- data/lib/gaku/testing/factories/semester_connectors_factory.rb +11 -0
- data/lib/gaku/testing/factories/semester_factory.rb +16 -0
- data/lib/gaku/testing/factories/simple_grade_type_factory.rb +1 -1
- data/lib/gaku/testing/factories/state_factory.rb +2 -1
- data/lib/gaku/testing/factories/student_exam_session_factory.rb +8 -0
- data/lib/gaku/testing/factories/student_factory.rb +15 -5
- data/lib/gaku/testing/factories/student_review_category_factory.rb +7 -0
- data/lib/gaku/testing/factories/student_review_factory.rb +13 -0
- data/lib/gaku/testing/factories/teacher_factory.rb +1 -1
- data/lib/gaku/testing/factories/template_factory.rb +5 -7
- data/lib/gaku/testing/factories/traits.rb +32 -4
- data/lib/gaku/testing/factories/user_factory.rb +0 -1
- data/lib/gaku_core.rb +1 -1
- data/lib/generators/gaku/dummy/dummy_generator.rb +5 -4
- data/lib/generators/gaku/install/install_generator.rb +16 -14
- data/lib/tasks/admin_user.rake +2 -1
- metadata +310 -264
- data/app/models/gaku/class_group_course_enrollment.rb +0 -17
- data/app/models/gaku/class_group_enrollment.rb +0 -31
- data/app/models/gaku/course_enrollment.rb +0 -23
- data/app/models/gaku/disposal.rb +0 -45
- data/app/models/gaku/extracurricular_activity_enrollment.rb +0 -15
- data/app/models/gaku/semester_class_group.rb +0 -21
- data/app/models/gaku/semester_course.rb +0 -21
- data/lib/gaku/grading/calculations.rb +0 -279
- data/lib/gaku/grading/grade.rb +0 -17
- data/lib/gaku/grading/japanese_hs_standard.rb +0 -8
- data/lib/gaku/testing/factories/class_group_course_enrollment_factory.rb +0 -8
- data/lib/gaku/testing/factories/class_group_enrollment_factory.rb +0 -9
- data/lib/gaku/testing/factories/semester_class_group_factory.rb +0 -8
- data/lib/gaku/testing/factories/semester_course.rb +0 -8
data/app/models/gaku/user.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Gaku
|
2
2
|
class User < ActiveRecord::Base
|
3
|
-
|
4
3
|
has_many :user_roles
|
5
4
|
has_many :roles, through: :user_roles
|
6
5
|
|
@@ -11,44 +10,33 @@ module Gaku
|
|
11
10
|
|
12
11
|
attr_accessor :login
|
13
12
|
|
14
|
-
before_create :default_language
|
15
|
-
|
16
13
|
validates :username, presence: true, uniqueness: true
|
17
14
|
|
18
15
|
roles_table_name = Role.table_name
|
19
16
|
|
20
|
-
scope :admin, -> { includes(:roles).where("#{roles_table_name}.name" => '
|
17
|
+
scope :admin, -> { includes(:roles).where("#{roles_table_name}.name" => 'Admin') }
|
21
18
|
|
22
19
|
def to_s
|
23
20
|
username
|
24
21
|
end
|
25
22
|
|
23
|
+
# Override Devise::Models::Authenticatable#find_first_by_auth_conditions
|
24
|
+
# so login can be authenticated against username or email
|
26
25
|
def self.find_first_by_auth_conditions(warden_conditions)
|
27
26
|
conditions = warden_conditions.dup
|
28
|
-
|
29
|
-
|
27
|
+
login = conditions.delete(:login)
|
28
|
+
if login
|
29
|
+
where(conditions).where(
|
30
|
+
['lower(username) = :value OR lower(email) = :value',
|
31
|
+
{ value: login.downcase }]
|
32
|
+
).first
|
30
33
|
else
|
31
34
|
where(conditions).first
|
32
35
|
end
|
33
36
|
end
|
34
37
|
|
35
|
-
def has_role?(role_sym)
|
36
|
-
roles.any? { |r| r.name.underscore.to_sym == role_sym }
|
37
|
-
end
|
38
|
-
|
39
38
|
def role?(role)
|
40
|
-
roles.
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
def default_language
|
46
|
-
if Preset.active.nil?
|
47
|
-
settings[:locale] = 'en'
|
48
|
-
else
|
49
|
-
settings[:locale] = Preset.active.locale['language']
|
50
|
-
end
|
39
|
+
roles.where(name: role.to_s.camelize).any?
|
51
40
|
end
|
52
|
-
|
53
41
|
end
|
54
42
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Gaku
|
2
|
+
class ContactCreation
|
3
|
+
attr_reader :errors, :contact
|
4
|
+
|
5
|
+
def initialize(params = {})
|
6
|
+
@contact = Contact.new(params)
|
7
|
+
@errors = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def save
|
11
|
+
ensure_first_is_primary
|
12
|
+
|
13
|
+
if @contact.save
|
14
|
+
if @contact.contactable.respond_to?(:contacts)
|
15
|
+
remove_other_primary
|
16
|
+
end
|
17
|
+
return true
|
18
|
+
else
|
19
|
+
@errors = @contact.errors
|
20
|
+
return false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def save!
|
25
|
+
if save
|
26
|
+
return @contact
|
27
|
+
else
|
28
|
+
fail 'Failed to save record'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def ensure_first_is_primary
|
35
|
+
if @contact.contactable.respond_to?(:contacts) && @contact.contactable.contacts.blank?
|
36
|
+
@contact.primary = true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def remove_other_primary
|
41
|
+
if @contact.primary?
|
42
|
+
@contact.contactable.reload.contacts.where.not(id: @contact.id).update_all(primary: false)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Workaround performance issue by not using JOIN
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Gaku
|
2
|
+
class ContactUpdation
|
3
|
+
attr_reader :contact, :errors
|
4
|
+
|
5
|
+
def initialize(contact)
|
6
|
+
@contact = contact
|
7
|
+
@errors = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def update(params)
|
11
|
+
@contact.assign_attributes(params)
|
12
|
+
|
13
|
+
if @contact.save
|
14
|
+
if @contact.contactable.respond_to?(:contacts)
|
15
|
+
remove_other_primary
|
16
|
+
# update_primary_contact_field
|
17
|
+
end
|
18
|
+
true
|
19
|
+
else
|
20
|
+
@errors = @contact.errors
|
21
|
+
false
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def remove_other_primary
|
28
|
+
if @contact.primary?
|
29
|
+
@contact.contactable.reload.contacts.where.not(id: @contact.id).update_all(primary: false)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Workaround performance issue by not using JOIN
|
34
|
+
# def update_primary_contact_field
|
35
|
+
# if @contact.contactable.has_attribute?(:primary_contact)
|
36
|
+
# @contact.contactable.update_column(:primary_contact, @contact.contactable.contact_widget)
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Gaku
|
2
|
+
class StudentSelection
|
3
|
+
|
4
|
+
attr_accessor :user
|
5
|
+
|
6
|
+
def initialize(user)
|
7
|
+
@user = user
|
8
|
+
end
|
9
|
+
|
10
|
+
def all
|
11
|
+
$redis.lrange(user_selection, 0, -1)
|
12
|
+
end
|
13
|
+
|
14
|
+
def remove_all
|
15
|
+
$redis.del(user_selection)
|
16
|
+
self.students
|
17
|
+
end
|
18
|
+
|
19
|
+
def add(student)
|
20
|
+
$redis.rpush(user_selection, student.id)
|
21
|
+
self.students
|
22
|
+
end
|
23
|
+
|
24
|
+
def remove(student)
|
25
|
+
$redis.lrem(user_selection, 0, student.id)
|
26
|
+
self.students
|
27
|
+
end
|
28
|
+
|
29
|
+
def collection(students)
|
30
|
+
new_students = not_added_students(students)
|
31
|
+
$redis.rpush(user_selection, new_students) unless new_students.blank?
|
32
|
+
self.students
|
33
|
+
end
|
34
|
+
|
35
|
+
def remove_collection(students)
|
36
|
+
students.each do |student|
|
37
|
+
$redis.lrem(user_selection, 0, student.id)
|
38
|
+
end
|
39
|
+
self.students
|
40
|
+
end
|
41
|
+
|
42
|
+
def students
|
43
|
+
Student.where(id: all)
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def user_selection
|
49
|
+
%Q(user:#{user.id}:student_selection)
|
50
|
+
end
|
51
|
+
|
52
|
+
def not_added_students(students)
|
53
|
+
students.reject { |student| all.include?(student.id) }.map(&:id)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Gaku
|
2
|
+
class UserCreator
|
3
|
+
|
4
|
+
def initialize(params = {})
|
5
|
+
@user = User.new(params)
|
6
|
+
set_default_language
|
7
|
+
end
|
8
|
+
|
9
|
+
def save
|
10
|
+
@user.save
|
11
|
+
end
|
12
|
+
|
13
|
+
def save!
|
14
|
+
@user.save!
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_user
|
18
|
+
@user
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def set_default_language
|
24
|
+
if Preset.active.nil?
|
25
|
+
@user.settings[:locale] = 'en'
|
26
|
+
else
|
27
|
+
@user.settings[:locale] = Preset.active.locale['language']
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -164,7 +164,7 @@ Devise.setup do |config|
|
|
164
164
|
|
165
165
|
# ==> Configuration for :token_authenticatable
|
166
166
|
# Defines name of the authentication token params key
|
167
|
-
config.token_authentication_key = :auth_token
|
167
|
+
# config.token_authentication_key = :auth_token
|
168
168
|
|
169
169
|
# If true, authentication through token does not store user in session and needs
|
170
170
|
# to be supplied on each request. Useful if you are using the token as API token.
|
data/config/locales/en.yml
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
en:
|
2
|
+
enroll: Enroll
|
3
|
+
clear: Clear
|
2
4
|
academic: Academic
|
3
5
|
achievement:
|
4
6
|
add: Add Achievement
|
@@ -161,7 +163,7 @@ en:
|
|
161
163
|
class: Class
|
162
164
|
class_group:
|
163
165
|
add: Add Class Group
|
164
|
-
already_enrolled:
|
166
|
+
already_enrolled: Class group already enrolled!
|
165
167
|
choose: Choose Class Group
|
166
168
|
edit: Edit Class Group
|
167
169
|
enroll: Enroll Class Group
|
@@ -178,10 +180,8 @@ en:
|
|
178
180
|
singular: Class Group
|
179
181
|
with_semester: With Semester
|
180
182
|
without_semester: Without Semester
|
181
|
-
class_group_course_enrollment:
|
182
|
-
save: Save Course to Class Group
|
183
|
-
singular: Course
|
184
183
|
class_group_enrollment:
|
184
|
+
add: Enroll to class group
|
185
185
|
count: Enrollments count
|
186
186
|
create: Create Class Enrollment
|
187
187
|
current: Current enrollment
|
@@ -388,8 +388,12 @@ en:
|
|
388
388
|
empty: Empty
|
389
389
|
enroll_to_class: Enroll to class
|
390
390
|
enrollment:
|
391
|
-
plural:
|
392
|
-
singular:
|
391
|
+
plural: Student enrollments
|
392
|
+
singular: Student enrollment
|
393
|
+
add: Enroll student
|
394
|
+
list: Student enrollments list
|
395
|
+
save: Save student enrollment
|
396
|
+
class_group_overlapping: A student cannot belong to two Class Groups with overlapping semesters
|
393
397
|
enrollment_status:
|
394
398
|
active: Active
|
395
399
|
add: Add Enrollment Status
|
@@ -456,6 +460,15 @@ en:
|
|
456
460
|
use_weighting: Use Weighting
|
457
461
|
view: View Exams
|
458
462
|
weight: Weight
|
463
|
+
exam_session:
|
464
|
+
plural: Exam sessions
|
465
|
+
singular: Exam session
|
466
|
+
list: Exam session list
|
467
|
+
add: Add exam session
|
468
|
+
name: Name
|
469
|
+
session_time: Session time
|
470
|
+
session_start: Session start
|
471
|
+
minutes: "%{time} minutes"
|
459
472
|
exam_portion:
|
460
473
|
adjustments: Adjustments
|
461
474
|
attached_file_count: Attached file count
|
@@ -501,8 +514,8 @@ en:
|
|
501
514
|
save: Save
|
502
515
|
show: Show Extracurricular Activity
|
503
516
|
singular: Extracurricular Activity
|
504
|
-
|
505
|
-
|
517
|
+
create: Create Extracurricular Activity Enrollment
|
518
|
+
choose: Choose Extracurricular Activity
|
506
519
|
failure:
|
507
520
|
enrolled: Failed to enroll!
|
508
521
|
file: File
|
@@ -551,28 +564,28 @@ en:
|
|
551
564
|
weighting_portion: Weighting
|
552
565
|
grading_method:
|
553
566
|
add: Add Grading Method
|
554
|
-
|
555
|
-
|
556
|
-
arguments: Arguments
|
557
|
-
choose: Choose Grading Method
|
567
|
+
add_criteria: Add criteria
|
568
|
+
choose: Choose grading type
|
558
569
|
criteria: Criteria
|
559
570
|
curved: Curved
|
560
571
|
description: Description
|
561
572
|
edit: Edit Grading Method
|
562
573
|
interval: Interval
|
563
574
|
list: Grading Methods list
|
564
|
-
|
575
|
+
grading_type: Grading type
|
565
576
|
name: Name
|
566
577
|
ordinal: Ordinal
|
567
578
|
pass_fail: Pass/Fail
|
568
579
|
percentage: Percentage
|
569
580
|
plural: Grading Methods
|
570
581
|
ratio: Ratio
|
571
|
-
|
572
|
-
remove_criteria: Remove Criteria
|
582
|
+
remove_criteria: Remove criteria
|
573
583
|
save: Save Grading Method
|
574
584
|
score: Score
|
575
585
|
singular: Grading Method
|
586
|
+
grading_method_connector:
|
587
|
+
add_set: Grading methods from grading method set added
|
588
|
+
already: Grading methods are already added
|
576
589
|
grading_method_set:
|
577
590
|
add: Add Grading Method Set
|
578
591
|
display_deviation: Display Deviation
|
@@ -613,12 +626,30 @@ en:
|
|
613
626
|
id: ID
|
614
627
|
import: Import
|
615
628
|
import_format: Import Format
|
629
|
+
import_file:
|
630
|
+
singular: Import file
|
631
|
+
pluralize: Import files
|
632
|
+
list: Import files list
|
633
|
+
add: Add import file
|
634
|
+
save: Save import file
|
635
|
+
importer_type: Importer type
|
636
|
+
data_file: Data file
|
637
|
+
choose: Choose importer type
|
638
|
+
file_name: File name
|
639
|
+
file_size: File size
|
640
|
+
content_type: Content type
|
641
|
+
importing: 'Importing for %{type} started!'
|
642
|
+
|
616
643
|
is_graduated: Has Graduated
|
617
644
|
language: Language
|
618
645
|
languages:
|
619
646
|
en: English
|
620
647
|
ja: 日本語[Japanese]
|
621
648
|
manage: Manage
|
649
|
+
|
650
|
+
admin:
|
651
|
+
back: Back to Admin
|
652
|
+
back_to_school: Back to School
|
622
653
|
menu:
|
623
654
|
admin:
|
624
655
|
achievements: Achievements
|
@@ -645,6 +676,9 @@ en:
|
|
645
676
|
grading_methods: Grading Methods
|
646
677
|
grading_sets: Grading Sets
|
647
678
|
grading_methods: Grading Methods
|
679
|
+
importer:
|
680
|
+
importer: Importer
|
681
|
+
student: Student Importer
|
648
682
|
preset:
|
649
683
|
plural: Presets
|
650
684
|
school_details: School Details
|
@@ -662,6 +696,7 @@ en:
|
|
662
696
|
enrollment_status: Enrollment Statuses
|
663
697
|
states: States
|
664
698
|
types: Types & Methods
|
699
|
+
student_review_categories: Student Review Categories
|
665
700
|
users:
|
666
701
|
roles: Roles
|
667
702
|
users: Users
|
@@ -711,6 +746,8 @@ en:
|
|
711
746
|
removed: '%{resource} was successfully removed!'
|
712
747
|
updated: '%{resource} was successfully updated!'
|
713
748
|
uploaded: '%{resource} was successfully uploaded!'
|
749
|
+
picture_update: Picture are successfully updated!
|
750
|
+
picture_remove: Picture are successfully destroyed!
|
714
751
|
num_enrolled: Number Enrolled
|
715
752
|
options: Options
|
716
753
|
order: Order
|
@@ -744,6 +781,7 @@ en:
|
|
744
781
|
singular: Grading
|
745
782
|
list: Presets list
|
746
783
|
locale: Locale
|
784
|
+
time_format: Time format
|
747
785
|
name: Name
|
748
786
|
names_order: Names Order
|
749
787
|
pagination: Pagination
|
@@ -793,6 +831,7 @@ en:
|
|
793
831
|
list: Program Syllabuses list
|
794
832
|
plural: Program Syllabuses
|
795
833
|
remove: Remove Program Syllabus
|
834
|
+
prompt: Please select
|
796
835
|
required: required
|
797
836
|
resource: Resource
|
798
837
|
revert: Revert
|
@@ -803,6 +842,9 @@ en:
|
|
803
842
|
name: Name
|
804
843
|
save: Save Role
|
805
844
|
singular: Role
|
845
|
+
report:
|
846
|
+
plural: Reports
|
847
|
+
personal_information: Personal information
|
806
848
|
save: Save
|
807
849
|
schedule: Schedule
|
808
850
|
school:
|
@@ -864,6 +906,7 @@ en:
|
|
864
906
|
singular: Semester
|
865
907
|
starting: Semester starting
|
866
908
|
uniqueness: have this semester added
|
909
|
+
already: Semester already added
|
867
910
|
semester_class_group:
|
868
911
|
choose: Choose Semester
|
869
912
|
save: Save Semester
|
@@ -871,6 +914,11 @@ en:
|
|
871
914
|
uniqueness: Semester already added to Class Group
|
872
915
|
semester_course:
|
873
916
|
uniqueness: Semester already added to Course
|
917
|
+
semester_attendance:
|
918
|
+
plural: Semester attendances
|
919
|
+
absence: Absence
|
920
|
+
presence: Presence
|
921
|
+
attendances_and_reviews: Attendances and reviews
|
874
922
|
sex: Sex
|
875
923
|
sex_and_birth: Gender & Birth Date
|
876
924
|
show: Show
|
@@ -922,6 +970,7 @@ en:
|
|
922
970
|
save: Save State
|
923
971
|
singular: State
|
924
972
|
student:
|
973
|
+
selection: Student Selection
|
925
974
|
academic_information: Academic Information
|
926
975
|
add: Add Student
|
927
976
|
addresses: Student Addresses
|
@@ -952,6 +1001,7 @@ en:
|
|
952
1001
|
scholarship_status: Scholarship Status
|
953
1002
|
show: Show Students
|
954
1003
|
singular: Student
|
1004
|
+
already_enrolled: already enrolled!
|
955
1005
|
student_achievement:
|
956
1006
|
edit: Edit Student Achievement
|
957
1007
|
index: Student Achievement Index
|
@@ -963,6 +1013,19 @@ en:
|
|
963
1013
|
index: Student Specialty Index
|
964
1014
|
save: Save Student Specialty
|
965
1015
|
singular: Student Specialty
|
1016
|
+
student_review:
|
1017
|
+
edit_label: 'Edit %{student} review'
|
1018
|
+
new_label: 'New %{student} review'
|
1019
|
+
show_label: '%{student} review'
|
1020
|
+
review: Review
|
1021
|
+
content: Content
|
1022
|
+
student_review_category:
|
1023
|
+
plural: Student review categories
|
1024
|
+
singular: Student review category
|
1025
|
+
list: Student review categories list
|
1026
|
+
new: New student review category
|
1027
|
+
name: Student review category name
|
1028
|
+
choose: Choose student review category
|
966
1029
|
submit: Submit
|
967
1030
|
success:
|
968
1031
|
enrolled: Successfully enrolled!
|
@@ -1006,6 +1069,7 @@ en:
|
|
1006
1069
|
singular: Template
|
1007
1070
|
title: Title
|
1008
1071
|
undefined: Undefined
|
1072
|
+
upload: Upload
|
1009
1073
|
user:
|
1010
1074
|
add: Add User
|
1011
1075
|
edit: Edit User
|