biovision-courses 0.0.180221

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +26 -0
  5. data/app/assets/config/biovision_courses_manifest.js +2 -0
  6. data/app/assets/javascripts/biovision/courses/application.js +13 -0
  7. data/app/assets/stylesheets/biovision/courses/application.css +15 -0
  8. data/app/controllers/admin/course_categories_controller.rb +28 -0
  9. data/app/controllers/admin/course_tags_controller.rb +28 -0
  10. data/app/controllers/admin/courses_controller.rb +29 -0
  11. data/app/controllers/biovision/courses/application_controller.rb +7 -0
  12. data/app/controllers/course_categories_controller.rb +70 -0
  13. data/app/controllers/course_tags_controller.rb +66 -0
  14. data/app/controllers/courses_controller.rb +94 -0
  15. data/app/helpers/biovision/courses/application_helper.rb +6 -0
  16. data/app/helpers/biovision_courses_helper.rb +80 -0
  17. data/app/jobs/biovision/courses/application_job.rb +6 -0
  18. data/app/mailers/biovision/courses/application_mailer.rb +8 -0
  19. data/app/models/application_record.rb +3 -0
  20. data/app/models/biovision/courses/application_record.rb +7 -0
  21. data/app/models/course.rb +109 -0
  22. data/app/models/course_category.rb +137 -0
  23. data/app/models/course_course_tag.rb +13 -0
  24. data/app/models/course_tag.rb +49 -0
  25. data/app/uploaders/course_image_uploader.rb +46 -0
  26. data/app/views/admin/course_categories/_nav_item.html.erb +2 -0
  27. data/app/views/admin/course_categories/entity/_in_list.html.erb +43 -0
  28. data/app/views/admin/course_categories/index.html.erb +17 -0
  29. data/app/views/admin/course_categories/show.html.erb +85 -0
  30. data/app/views/admin/course_tags/_nav_item.html.erb +2 -0
  31. data/app/views/admin/course_tags/entity/_in_list.html.erb +21 -0
  32. data/app/views/admin/course_tags/index.html.erb +19 -0
  33. data/app/views/admin/course_tags/show.html.erb +39 -0
  34. data/app/views/admin/courses/_nav_item.html.erb +2 -0
  35. data/app/views/admin/courses/entity/_in_list.html.erb +40 -0
  36. data/app/views/admin/courses/index.html.erb +17 -0
  37. data/app/views/admin/courses/show.html.erb +117 -0
  38. data/app/views/admin/index/dashboard/_biovision_courses.html.erb +12 -0
  39. data/app/views/course_categories/_form.html.erb +96 -0
  40. data/app/views/course_categories/edit.html.erb +22 -0
  41. data/app/views/course_categories/edit.js.erb +1 -0
  42. data/app/views/course_categories/new.html.erb +15 -0
  43. data/app/views/course_categories/new.js.erb +1 -0
  44. data/app/views/course_tags/_form.html.erb +72 -0
  45. data/app/views/course_tags/edit.html.erb +17 -0
  46. data/app/views/course_tags/edit.js.erb +1 -0
  47. data/app/views/course_tags/new.html.erb +15 -0
  48. data/app/views/course_tags/new.js.erb +1 -0
  49. data/app/views/courses/_form.html.erb +244 -0
  50. data/app/views/courses/edit.html.erb +17 -0
  51. data/app/views/courses/edit.js.erb +1 -0
  52. data/app/views/courses/form/_wysiwyg.html.erb +14 -0
  53. data/app/views/courses/new.html.erb +15 -0
  54. data/app/views/courses/new.js.erb +1 -0
  55. data/app/views/layouts/biovision/courses/application.html.erb +14 -0
  56. data/config/locales/courses-ru.yml +138 -0
  57. data/config/routes.rb +26 -0
  58. data/db/migrate/20180218120000_prepare_course_privileges.rb +19 -0
  59. data/db/migrate/20180218120005_create_course_categories.rb +28 -0
  60. data/db/migrate/20180218120010_create_course_tags.rb +20 -0
  61. data/db/migrate/20180218120015_create_courses.rb +42 -0
  62. data/db/migrate/20180218120020_create_course_course_tags.rb +17 -0
  63. data/lib/biovision/courses.rb +7 -0
  64. data/lib/biovision/courses/engine.rb +18 -0
  65. data/lib/biovision/courses/version.rb +5 -0
  66. data/lib/tasks/biovision/courses_tasks.rake +4 -0
  67. metadata +207 -0
@@ -0,0 +1 @@
1
+ <%= render partial: 'shared/forms/list_of_errors', locals: { entity: @entity, form_id: 'course-form' } %>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Biovision courses</title>
5
+ <%= stylesheet_link_tag "biovision/courses/application", media: "all" %>
6
+ <%= javascript_include_tag "biovision/courses/application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
@@ -0,0 +1,138 @@
1
+ ru:
2
+ course_count:
3
+ zero: "курсов нет"
4
+ one: "%{count} курс"
5
+ few: "%{count} курса"
6
+ many: "%{count} курсов"
7
+ other: "%{count} курсов"
8
+ activerecord:
9
+ models:
10
+ course: "Курс"
11
+ course_category: "Категория курса"
12
+ attributes:
13
+ course:
14
+ course_category: "Категория"
15
+ course_category_id: "Категория"
16
+ description: "Описание"
17
+ duration: "Длительность"
18
+ highlight: "Продвигать"
19
+ image: "Изображение"
20
+ image_alt_text: "Альтернативный текст для изображения"
21
+ lead: "Аннотация"
22
+ meta_description: "Описание для метатэга"
23
+ meta_keywords: "Ключевые слова для метатэга"
24
+ meta_title: "Название для заголовка окна"
25
+ metadata: "Метаданные"
26
+ online: "Онлайн-курс"
27
+ price: "Цена"
28
+ priority: "Порядок сортировки"
29
+ slug: "Идентификатор для URL"
30
+ special_price: "Специальная цена"
31
+ special_price_end: "Срок окончания спецпредложения"
32
+ subtitle: "Подзаголовок"
33
+ tags_cache: "Метки"
34
+ title: "Название"
35
+ visible: "Показывать"
36
+ course_category:
37
+ children_cache: "Кеш дочек"
38
+ course_type: "Тип курса"
39
+ course_type_id: "Тип курса"
40
+ image: "Картинка"
41
+ name: "Название"
42
+ parent_id: "Родительская категория"
43
+ parents_cache: "Кеш родителей"
44
+ priority: "Порядок сортировки"
45
+ slug: "Идентификатор"
46
+ visible: "Показывать"
47
+ course_tag:
48
+ image: "Картинка"
49
+ name: "Название"
50
+ slug: "Идентификатор"
51
+ visible: "Показывать"
52
+ admin:
53
+ course_categories:
54
+ nav_item:
55
+ description: "Управление категориями курсов"
56
+ text: "Категории курсов"
57
+ index:
58
+ title: "Категории курсов"
59
+ heading: "Категории курсов"
60
+ show:
61
+ title: "Категория курсов «%{name}»"
62
+ children: "Дочерние категории"
63
+ new_child: "Добавить дочернюю категорию"
64
+ course_tags:
65
+ nav_item:
66
+ description: "Управление метками курсов"
67
+ text: "Метки курсов"
68
+ index:
69
+ title: "Метки курсов, страница %{page}"
70
+ heading: "Метки курсов"
71
+ show:
72
+ title: "Метка курсов «%{name}»"
73
+ courses:
74
+ nav_item:
75
+ description: "Управление курсами"
76
+ text: "Курсы"
77
+ index:
78
+ heading: "Курсы"
79
+ title: "Курсы, страница %{page}"
80
+ show:
81
+ title: "Курс «%{name}»"
82
+ index:
83
+ dashboard:
84
+ biovision_courses:
85
+ heading: "Модуль курсов"
86
+ course_categories:
87
+ new:
88
+ title: "Новая категория курсов"
89
+ heading: "Добавление категории курсов"
90
+ edit:
91
+ title: "Редактирование категории курсов"
92
+ heading: "Редактирование категории курсов"
93
+ update:
94
+ success: "Категория курсов успешно изменена"
95
+ destroy:
96
+ success: "Категория курсов успешно удалена"
97
+ form:
98
+ guidelines:
99
+ image: "Максимальный размер — 3000×3000, формат — JPG или PNG."
100
+ name: "Максимум 50 символов."
101
+ slug: "Используется в URL. Только латинские буквы, цифры и дефис (кроме первого и последнего символа), максимум 50 символов."
102
+ course_tags:
103
+ new:
104
+ title: "Новая метка курсов"
105
+ heading: "Добавление метки курсов"
106
+ edit:
107
+ title: "Редактирование метки курсов"
108
+ heading: "Редактирование метки курсов"
109
+ update:
110
+ success: "Метка курсов успешно изменена"
111
+ destroy:
112
+ success: "Метка курсов успешно удалена"
113
+ form:
114
+ guidelines:
115
+ image: "Максимальный размер — 3000×3000, формат — JPG или PNG."
116
+ name: "Максимум 50 символов."
117
+ slug: "Используется в URL. Только латинские буквы, цифры и дефис (кроме первого и последнего символа), максимум 50 символов."
118
+ courses:
119
+ edit:
120
+ title: "Редактирование курса"
121
+ heading: "Редактирование курса"
122
+ destroy:
123
+ success: "Курс успешно удалена"
124
+ form:
125
+ guidelines:
126
+ duration: "Максимум 50 символов"
127
+ image: "Максимальный размер — 3000×3000, формат — JPG или PNG."
128
+ image_alt_text: "Краткое описание того, что происходит на картинке. До 250 символов."
129
+ lead: "Краткая суть, максимум 1000 символов."
130
+ meta_description: "50–55 слов. Максимум 250 символов."
131
+ meta_keywords: "Максимум 250 символов."
132
+ meta_title: "Если указать, будет отображаться в заголовке окна вместо названия. Максимум 250 символов."
133
+ slug: "Только латинские буквы, цифры, точки, дефисы и подчёркивания. Максимум 250 символов."
134
+ subtitle: "Максимум 250 символов."
135
+ title: "Максимум 250 символов."
136
+ new:
137
+ title: "Добавление курса"
138
+ heading: "Новый курс"
data/config/routes.rb ADDED
@@ -0,0 +1,26 @@
1
+ Rails.application.routes.draw do
2
+ resources :courses
3
+ resources :course_categories, :course_tags, except: [:index, :show]
4
+
5
+ namespace :admin do
6
+ resources :course_categories, only: [:index, :show] do
7
+ member do
8
+ post 'priority', defaults: { format: :json }
9
+ post 'toggle', defaults: { format: :json }
10
+ end
11
+ end
12
+ resources :course_tags, only: [:index, :show] do
13
+ member do
14
+ post 'toggle', defaults: { format: :json }
15
+ end
16
+ end
17
+ resources :courses, only: [:index, :show] do
18
+ member do
19
+ put 'lock', defaults: { format: :json }
20
+ delete 'lock', action: :unlock, defaults: { format: :json }
21
+ post 'priority', defaults: { format: :json }
22
+ post 'toggle', defaults: { format: :json }
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ class PrepareCoursePrivileges < ActiveRecord::Migration[5.1]
2
+ def up
3
+ Privilege.create(slug: 'chief_course_manager', name: 'Главный управляющий курсами')
4
+
5
+ chief = Privilege.find_by!(slug: 'chief_course_manager')
6
+ Privilege.create(slug: 'course_manager', name: 'Управляющий курсами', parent: chief)
7
+ PrivilegeGroup.create(slug: 'course_managers', name: 'Управляющие курсами')
8
+
9
+ manager = Privilege.find_by!(slug: 'course_manager')
10
+ group = PrivilegeGroup.find_by!(slug: 'course_managers')
11
+
12
+ group.add_privilege(chief)
13
+ group.add_privilege(manager)
14
+ end
15
+
16
+ def down
17
+ # No rollback needed
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ class CreateCourseCategories < ActiveRecord::Migration[5.1]
2
+ def up
3
+ unless CourseCategory.table_exists?
4
+ create_table :course_categories do |t|
5
+ t.timestamps
6
+ t.integer :parent_id
7
+ t.boolean :visible, default: true, null: false
8
+ t.boolean :deleted, default: false, null: false
9
+ t.integer :priority, limit: 2, default: 1, null: false
10
+ t.integer :courses_count, default: 0, null: false
11
+ t.string :name, null: false
12
+ t.string :slug, null: false
13
+ t.string :long_slug, null: false
14
+ t.string :image
15
+ t.string :parents_cache, default: '', null: false
16
+ t.integer :children_cache, array: true, default: [], null: false
17
+ end
18
+
19
+ add_foreign_key :course_categories, :course_categories, column: :parent_id, on_update: :cascade, on_delete: :cascade
20
+ end
21
+ end
22
+
23
+ def down
24
+ if CourseCategory.table_exists?
25
+ drop_table :course_categories
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ class CreateCourseTags < ActiveRecord::Migration[5.1]
2
+ def up
3
+ unless CourseTag.table_exists?
4
+ create_table :course_tags do |t|
5
+ t.timestamps
6
+ t.boolean :visible, default: true, null: false
7
+ t.integer :courses_count, default: 0, null: false
8
+ t.string :name, null: false
9
+ t.string :slug, null: false
10
+ t.string :image
11
+ end
12
+ end
13
+ end
14
+
15
+ def down
16
+ if CourseTag.table_exists?
17
+ drop_table :course_tags
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,42 @@
1
+ class CreateCourses < ActiveRecord::Migration[5.1]
2
+ def up
3
+ unless Course.table_exists?
4
+ create_table :courses do |t|
5
+ t.timestamps
6
+ t.references :course_category, foreign_key: { on_update: :cascade, on_delete: :nullify }
7
+ t.references :user, foreign_key: { on_update: :cascade, on_delete: :nullify }
8
+ t.references :agent, foreign_key: { on_update: :cascade, on_delete: :nullify }
9
+ t.inet :ip
10
+ t.integer :priority, limit: 2, default: 1, null: false
11
+ t.integer :users_count, default: 0, null: false
12
+ t.boolean :visible, default: true, null: false
13
+ t.boolean :highlight, default: false, null: false
14
+ t.boolean :online, default: true, null: false
15
+ t.boolean :deleted, default: false, null: false
16
+ t.boolean :locked, default: false, null: false
17
+ t.integer :price
18
+ t.integer :special_price
19
+ t.date :special_price_end
20
+ t.string :title, null: false
21
+ t.string :subtitle
22
+ t.string :slug, null: false
23
+ t.string :meta_title
24
+ t.string :meta_description
25
+ t.string :meta_keywords
26
+ t.string :duration
27
+ t.string :image
28
+ t.string :image_alt_text
29
+ t.text :lead
30
+ t.text :description
31
+ t.string :tags_cache, array: true, default: [], null: false
32
+ t.json :metadata
33
+ end
34
+ end
35
+ end
36
+
37
+ def down
38
+ if Course.table_exists?
39
+ drop_table :courses
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,17 @@
1
+ class CreateCourseCourseTags < ActiveRecord::Migration[5.1]
2
+ def up
3
+ unless CourseCourseTag.table_exists?
4
+ create_table :course_course_tags do |t|
5
+ t.timestamps
6
+ t.references :course, foreign_key: { on_update: :cascade, on_delete: :cascade }
7
+ t.references :course_tag, foreign_key: { on_update: :cascade, on_delete: :cascade }
8
+ end
9
+ end
10
+ end
11
+
12
+ def down
13
+ if CourseCourseTag.table_exists?
14
+ drop_table :course_course_tags
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ require "biovision/courses/engine"
2
+
3
+ module Biovision
4
+ module Courses
5
+ # Your code goes here...
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ require 'biovision/base'
2
+ require 'carrierwave'
3
+ require 'carrierwave-bombshelter'
4
+ require 'mini_magick'
5
+
6
+ module Biovision
7
+ module Courses
8
+ class Engine < ::Rails::Engine
9
+ config.generators do |g|
10
+ g.test_framework :rspec
11
+ g.fixture_replacement :factory_bot, :dir => 'spec/factories'
12
+ end
13
+
14
+ config.assets.precompile << %w(admin.scss)
15
+ config.assets.precompile << %w(biovision/base/**/*)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ module Biovision
2
+ module Courses
3
+ VERSION = '0.0.180221'
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :biovision_courses do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,207 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: biovision-courses
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.180221
5
+ platform: ruby
6
+ authors:
7
+ - Maxim Khan-Magomedov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-02-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails-i18n
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: biovision-base
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: database_cleaner
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: factory_bot_rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pg
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Managing courses and study for biovision-based applications.
112
+ email:
113
+ - maxim.km@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - MIT-LICENSE
119
+ - README.md
120
+ - Rakefile
121
+ - app/assets/config/biovision_courses_manifest.js
122
+ - app/assets/javascripts/biovision/courses/application.js
123
+ - app/assets/stylesheets/biovision/courses/application.css
124
+ - app/controllers/admin/course_categories_controller.rb
125
+ - app/controllers/admin/course_tags_controller.rb
126
+ - app/controllers/admin/courses_controller.rb
127
+ - app/controllers/biovision/courses/application_controller.rb
128
+ - app/controllers/course_categories_controller.rb
129
+ - app/controllers/course_tags_controller.rb
130
+ - app/controllers/courses_controller.rb
131
+ - app/helpers/biovision/courses/application_helper.rb
132
+ - app/helpers/biovision_courses_helper.rb
133
+ - app/jobs/biovision/courses/application_job.rb
134
+ - app/mailers/biovision/courses/application_mailer.rb
135
+ - app/models/application_record.rb
136
+ - app/models/biovision/courses/application_record.rb
137
+ - app/models/course.rb
138
+ - app/models/course_category.rb
139
+ - app/models/course_course_tag.rb
140
+ - app/models/course_tag.rb
141
+ - app/uploaders/course_image_uploader.rb
142
+ - app/views/admin/course_categories/_nav_item.html.erb
143
+ - app/views/admin/course_categories/entity/_in_list.html.erb
144
+ - app/views/admin/course_categories/index.html.erb
145
+ - app/views/admin/course_categories/show.html.erb
146
+ - app/views/admin/course_tags/_nav_item.html.erb
147
+ - app/views/admin/course_tags/entity/_in_list.html.erb
148
+ - app/views/admin/course_tags/index.html.erb
149
+ - app/views/admin/course_tags/show.html.erb
150
+ - app/views/admin/courses/_nav_item.html.erb
151
+ - app/views/admin/courses/entity/_in_list.html.erb
152
+ - app/views/admin/courses/index.html.erb
153
+ - app/views/admin/courses/show.html.erb
154
+ - app/views/admin/index/dashboard/_biovision_courses.html.erb
155
+ - app/views/course_categories/_form.html.erb
156
+ - app/views/course_categories/edit.html.erb
157
+ - app/views/course_categories/edit.js.erb
158
+ - app/views/course_categories/new.html.erb
159
+ - app/views/course_categories/new.js.erb
160
+ - app/views/course_tags/_form.html.erb
161
+ - app/views/course_tags/edit.html.erb
162
+ - app/views/course_tags/edit.js.erb
163
+ - app/views/course_tags/new.html.erb
164
+ - app/views/course_tags/new.js.erb
165
+ - app/views/courses/_form.html.erb
166
+ - app/views/courses/edit.html.erb
167
+ - app/views/courses/edit.js.erb
168
+ - app/views/courses/form/_wysiwyg.html.erb
169
+ - app/views/courses/new.html.erb
170
+ - app/views/courses/new.js.erb
171
+ - app/views/layouts/biovision/courses/application.html.erb
172
+ - config/locales/courses-ru.yml
173
+ - config/routes.rb
174
+ - db/migrate/20180218120000_prepare_course_privileges.rb
175
+ - db/migrate/20180218120005_create_course_categories.rb
176
+ - db/migrate/20180218120010_create_course_tags.rb
177
+ - db/migrate/20180218120015_create_courses.rb
178
+ - db/migrate/20180218120020_create_course_course_tags.rb
179
+ - lib/biovision/courses.rb
180
+ - lib/biovision/courses/engine.rb
181
+ - lib/biovision/courses/version.rb
182
+ - lib/tasks/biovision/courses_tasks.rake
183
+ homepage: https://github.com/Biovision/biovision-courses
184
+ licenses:
185
+ - MIT
186
+ metadata: {}
187
+ post_install_message:
188
+ rdoc_options: []
189
+ require_paths:
190
+ - lib
191
+ required_ruby_version: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ required_rubygems_version: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ requirements: []
202
+ rubyforge_project:
203
+ rubygems_version: 2.7.3
204
+ signing_key:
205
+ specification_version: 4
206
+ summary: Courses for Biovision-based applications
207
+ test_files: []