biovision-courses 0.0.180221

Sign up to get free protection for your applications and to get access to all the features.
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: []