biovision-base 0.8.171029 → 0.9.171227
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +49 -0
- data/app/assets/images/biovision/base/icons/breadcrumb-hover.svg +1 -0
- data/app/assets/images/biovision/base/icons/breadcrumb.svg +1 -0
- data/app/assets/images/biovision/base/placeholders/file.svg +1 -0
- data/app/assets/javascripts/biovision/base/biovision-sliders.js +64 -0
- data/app/assets/stylesheets/biovision/base/admin.scss +66 -53
- data/app/assets/stylesheets/biovision/base/biovision.scss +107 -55
- data/app/assets/stylesheets/biovision/base/layout.scss +64 -54
- data/app/assets/stylesheets/biovision/base/tootik.scss +70 -56
- data/app/assets/stylesheets/biovision/base/track.scss +2 -10
- data/app/controllers/admin/feedback_requests_controller.rb +23 -0
- data/app/controllers/admin/media_files_controller.rb +25 -0
- data/app/controllers/admin/media_folders_controller.rb +31 -0
- data/app/controllers/errors_controller.rb +43 -0
- data/app/controllers/feedback_requests_controller.rb +23 -0
- data/app/controllers/media_files_controller.rb +104 -0
- data/app/controllers/media_folders_controller.rb +85 -0
- data/app/helpers/biovision_users_helper.rb +7 -0
- data/app/helpers/media_helper.rb +26 -0
- data/app/mailers/feedback_mailer.rb +10 -0
- data/app/models/editable_page.rb +1 -1
- data/app/models/feedback_request.rb +31 -0
- data/app/models/media_file.rb +48 -0
- data/app/models/media_folder.rb +114 -0
- data/app/models/metric.rb +4 -1
- data/app/models/privilege_group.rb +1 -1
- data/app/uploaders/media_file_uploader.rb +30 -0
- data/app/uploaders/media_snapshot_uploader.rb +32 -0
- data/app/views/admin/feedback_requests/_nav_item.html.erb +2 -0
- data/app/views/admin/feedback_requests/entity/_in_list.html.erb +18 -0
- data/app/views/admin/feedback_requests/index.html.erb +16 -0
- data/app/views/admin/index/_biovision_base.html.erb +6 -0
- data/app/views/admin/index/_custom_dashboard.html.erb +0 -0
- data/app/views/admin/index/dashboard/_biovision_feedback.html.erb +9 -0
- data/app/views/admin/index/dashboard/_biovision_region.html.erb +8 -0
- data/app/views/admin/index/dashboard/_biovision_track.html.erb +8 -0
- data/app/views/admin/index/dashboard/_biovision_user.html.erb +13 -0
- data/app/views/admin/index/dashboard/_editorial.html.erb +12 -0
- data/app/views/admin/index/dashboard/_settings.html.erb +9 -0
- data/app/views/admin/index/index.html.erb +2 -22
- data/app/views/admin/media_files/_nav_item.html.erb +2 -0
- data/app/views/admin/media_files/entity/_in_list.html.erb +26 -0
- data/app/views/admin/media_files/index.html.erb +17 -0
- data/app/views/admin/media_files/show.html.erb +60 -0
- data/app/views/admin/media_folders/_nav_item.html.erb +2 -0
- data/app/views/admin/media_folders/entity/_in_list.html.erb +32 -0
- data/app/views/admin/media_folders/files.html.erb +28 -0
- data/app/views/admin/media_folders/index.html.erb +21 -0
- data/app/views/admin/media_folders/show.html.erb +79 -0
- data/app/views/application/error.html.erb +9 -0
- data/app/views/editable_pages/_editable_page.html.erb +1 -8
- data/app/views/editable_pages/entity/_metadata.html.erb +14 -0
- data/app/views/editable_pages/form/_ckeditor.html.erb +1 -1
- data/app/views/errors/error.html.erb +7 -0
- data/app/views/feedback_mailer/new_feedback_request.html.erb +12 -0
- data/app/views/feedback_mailer/new_feedback_request.text.erb +5 -0
- data/app/views/feedback_requests/_form.html.erb +60 -0
- data/app/views/feedback_requests/create.js.erb +10 -0
- data/app/views/media_files/_form.html.erb +75 -0
- data/app/views/media_files/ckeditor.html.erb +8 -0
- data/app/views/media_files/edit.html.erb +19 -0
- data/app/views/media_files/edit.js.erb +1 -0
- data/app/views/media_files/new.html.erb +15 -0
- data/app/views/media_files/new.js.erb +1 -0
- data/app/views/media_folders/_form.html.erb +54 -0
- data/app/views/media_folders/edit.html.erb +22 -0
- data/app/views/media_folders/edit.js.erb +1 -0
- data/app/views/media_folders/new.html.erb +19 -0
- data/app/views/media_folders/new.js.erb +1 -0
- data/app/views/shared/_meta_texts.html.erb +3 -0
- data/app/views/shared/_pagination.jbuilder +3 -3
- data/app/views/shared/admin/_toggleable.html.erb +7 -0
- data/app/views/shared/editable_pages/_body.html.erb +1 -10
- data/app/views/shared/forms/_default_ajax_handler.html.erb +13 -0
- data/app/views/shared/forms/_list_of_errors.js.erb +19 -0
- data/config/locales/common-en.yml +152 -0
- data/config/locales/common-ru.yml +41 -0
- data/config/locales/feedback-en.yml +30 -0
- data/config/locales/feedback-ru.yml +36 -0
- data/config/locales/media-ru.yml +92 -0
- data/config/routes.rb +34 -0
- data/db/migrate/20170301000002_create_metric_values.rb +1 -1
- data/db/migrate/20170301000102_create_agents.rb +1 -1
- data/db/migrate/20170302000001_create_users.rb +2 -2
- data/db/migrate/20170302000002_create_user_profiles.rb +1 -1
- data/db/migrate/20170302000003_create_tokens.rb +2 -2
- data/db/migrate/20170302000005_create_codes.rb +3 -3
- data/db/migrate/20170302000102_create_user_privileges.rb +3 -3
- data/db/migrate/20170302000104_create_privilege_group_privileges.rb +2 -2
- data/db/migrate/20170425000002_create_foreign_users.rb +3 -3
- data/db/migrate/20170629120000_create_login_attempts.rb +2 -2
- data/db/migrate/20171202000000_create_media_folders.rb +28 -0
- data/db/migrate/20171202000001_create_media_files.rb +27 -0
- data/db/migrate/20171211000000_create_feedback_requests.rb +26 -0
- data/db/migrate/20171217222222_add_fields_to_feedback_requests.rb +10 -0
- data/db/migrate/20171223333333_amend_foreign_keys.rb +72 -0
- data/lib/biovision/base/base_methods.rb +1 -1
- data/lib/biovision/base/engine.rb +1 -1
- data/lib/biovision/base/version.rb +1 -1
- metadata +94 -26
@@ -0,0 +1,152 @@
|
|
1
|
+
en:
|
2
|
+
error_count:
|
3
|
+
zero: "no errors"
|
4
|
+
one: "%{count} error"
|
5
|
+
few: "%{count} errors"
|
6
|
+
many: "%{count} errors"
|
7
|
+
other: "%{count} errors"
|
8
|
+
errors:
|
9
|
+
messages:
|
10
|
+
extension_blacklist_error: "is blacklisted"
|
11
|
+
error:
|
12
|
+
bad_request:
|
13
|
+
title: "Bad request"
|
14
|
+
heading: "Bad request"
|
15
|
+
message: "You have performed a malformed request, please check and try again."
|
16
|
+
unauthorized:
|
17
|
+
title: "Unauthorized"
|
18
|
+
heading: "Unauthorized"
|
19
|
+
message: "You are not authorized to access this page."
|
20
|
+
forbidden:
|
21
|
+
title: "Forbidden"
|
22
|
+
heading: "Forbidden"
|
23
|
+
message: "This action is forbidden."
|
24
|
+
not_found:
|
25
|
+
title: "Not found"
|
26
|
+
heading: "Not found"
|
27
|
+
message: "Page was not found."
|
28
|
+
unprocessable_entity:
|
29
|
+
title: "Unprocessable entity"
|
30
|
+
heading: "Unprocessable entity"
|
31
|
+
message: "You request could not be processed."
|
32
|
+
internal_server_error:
|
33
|
+
title: "Internal server error"
|
34
|
+
heading: "Internal server error"
|
35
|
+
message: "Something went wrong. Please try again later."
|
36
|
+
date:
|
37
|
+
nominative_months:
|
38
|
+
-
|
39
|
+
- "january"
|
40
|
+
- "february"
|
41
|
+
- "march"
|
42
|
+
- "april"
|
43
|
+
- "may"
|
44
|
+
- "june"
|
45
|
+
- "july"
|
46
|
+
- "august"
|
47
|
+
- "september"
|
48
|
+
- "october"
|
49
|
+
- "november"
|
50
|
+
- "december"
|
51
|
+
archive_year: " in year %{year}"
|
52
|
+
archive_month: " in %{month} of year %{year}"
|
53
|
+
are_you_sure: "Are you sure?"
|
54
|
+
back: "Back"
|
55
|
+
copyright: "2017"
|
56
|
+
create: "Create"
|
57
|
+
created_at: "Created at"
|
58
|
+
current_image: "Current image"
|
59
|
+
delete: "Delete"
|
60
|
+
deleted_entity: "Deleted entity"
|
61
|
+
edit: "Edit"
|
62
|
+
filter: "Filter"
|
63
|
+
find: "Find"
|
64
|
+
flags: "Flags"
|
65
|
+
hide: "Hide"
|
66
|
+
home: "Home"
|
67
|
+
list: "List"
|
68
|
+
locked: "Editing is forbidden"
|
69
|
+
"no": "No"
|
70
|
+
not_selected: "Not selected"
|
71
|
+
not_set: "Not send"
|
72
|
+
nothing_found: "Nothing was found"
|
73
|
+
page: "Page"
|
74
|
+
save: "Save"
|
75
|
+
submit: "Submit"
|
76
|
+
unlocked: "Editing is allowed"
|
77
|
+
untitled: "Untitled"
|
78
|
+
update: "Update"
|
79
|
+
updated_at: "Updated at"
|
80
|
+
view: "View"
|
81
|
+
view_as_administrator: "View as administrator"
|
82
|
+
view_as_visitor: "View as visitor"
|
83
|
+
"yes": "Yes"
|
84
|
+
views:
|
85
|
+
pagination:
|
86
|
+
first: "⇤"
|
87
|
+
last: "⇥"
|
88
|
+
previous: "←"
|
89
|
+
next: "→"
|
90
|
+
truncate: "…"
|
91
|
+
shared:
|
92
|
+
flash_messages:
|
93
|
+
notice: "Notice"
|
94
|
+
warning: "Warning"
|
95
|
+
alert: "Alert"
|
96
|
+
meta_texts:
|
97
|
+
site_name: "example.com"
|
98
|
+
twitter_site: ""
|
99
|
+
twitter_creator: ""
|
100
|
+
admin:
|
101
|
+
index:
|
102
|
+
index:
|
103
|
+
title: "Administration"
|
104
|
+
heading: "Administration"
|
105
|
+
dashboard:
|
106
|
+
biovision_region:
|
107
|
+
heading: "Regions"
|
108
|
+
biovision_user:
|
109
|
+
heading: "Users module"
|
110
|
+
biovision_track:
|
111
|
+
heading: "Metrics"
|
112
|
+
editorial:
|
113
|
+
heading: "Editorial"
|
114
|
+
settings:
|
115
|
+
heading: "Settings"
|
116
|
+
index:
|
117
|
+
navigation:
|
118
|
+
index:
|
119
|
+
index: "Main site"
|
120
|
+
index:
|
121
|
+
title: "Home page"
|
122
|
+
application:
|
123
|
+
not_found:
|
124
|
+
title: "Page not found"
|
125
|
+
heading: "Page is not found"
|
126
|
+
message: "Page does not exist or is deleted"
|
127
|
+
unauthorized:
|
128
|
+
title: "Unauthorized"
|
129
|
+
heading: "Unauthorized"
|
130
|
+
message: "You are not authorized to access this page."
|
131
|
+
service_unavailable:
|
132
|
+
title: "Service unavailable"
|
133
|
+
heading: "Service unavailable"
|
134
|
+
message: "Service is temporary unavailable. Try again later."
|
135
|
+
error:
|
136
|
+
title: "Server error"
|
137
|
+
heading: "Something went wrong"
|
138
|
+
message: "Internal server error has occurred. Try again later."
|
139
|
+
layouts:
|
140
|
+
admin:
|
141
|
+
footer:
|
142
|
+
support: "Support"
|
143
|
+
about:
|
144
|
+
index:
|
145
|
+
nav_text: "About us"
|
146
|
+
tos:
|
147
|
+
nav_text: "Terms of service"
|
148
|
+
editable:
|
149
|
+
title: "In progress"
|
150
|
+
heading: "Content is not ready"
|
151
|
+
message: "Page content is not ready, please come back later."
|
152
|
+
total: "Total"
|
@@ -8,6 +8,31 @@ ru:
|
|
8
8
|
errors:
|
9
9
|
messages:
|
10
10
|
extension_blacklist_error: "имеет недопустимое расширение файла"
|
11
|
+
error:
|
12
|
+
bad_request:
|
13
|
+
title: "Плохой запрос"
|
14
|
+
heading: "Плохой запрос"
|
15
|
+
message: "Запрос был сформирован некорректно. Проверьте данные и попробуйте снова."
|
16
|
+
unauthorized:
|
17
|
+
title: "В доступе отказано"
|
18
|
+
heading: "В доступе отказано"
|
19
|
+
message: "У вас не хватает прав для доступа к этой странице."
|
20
|
+
forbidden:
|
21
|
+
title: "Запрещено"
|
22
|
+
heading: "Запрещено"
|
23
|
+
message: "Данное дайствие запрещено."
|
24
|
+
not_found:
|
25
|
+
title: "Не найдено"
|
26
|
+
heading: "Страница не найдена"
|
27
|
+
message: "Страница не найдена или была удалена."
|
28
|
+
unprocessable_entity:
|
29
|
+
title: "Невозможно обработать"
|
30
|
+
heading: "Невозможно обработать"
|
31
|
+
message: "Ваш запрос не удалось обработать. Проверьте данные и попробуйте снова."
|
32
|
+
internal_server_error:
|
33
|
+
title: "Ошибка сервера"
|
34
|
+
heading: "Ошибка сервера"
|
35
|
+
message: "Что-то пошло не так. Попробуйте снова позже."
|
11
36
|
date:
|
12
37
|
nominative_months:
|
13
38
|
-
|
@@ -77,6 +102,17 @@ ru:
|
|
77
102
|
index:
|
78
103
|
title: "Администрирование"
|
79
104
|
heading: "Администрирование"
|
105
|
+
dashboard:
|
106
|
+
biovision_region:
|
107
|
+
heading: "Региональность"
|
108
|
+
biovision_user:
|
109
|
+
heading: "Модуль пользователей"
|
110
|
+
biovision_track:
|
111
|
+
heading: "Метрики"
|
112
|
+
editorial:
|
113
|
+
heading: "Редакция"
|
114
|
+
settings:
|
115
|
+
heading: "Настройки"
|
80
116
|
index:
|
81
117
|
navigation:
|
82
118
|
index:
|
@@ -96,6 +132,10 @@ ru:
|
|
96
132
|
title: "Сервис недоступен"
|
97
133
|
heading: "Сервис недоступен"
|
98
134
|
message: "Сервис временно недоступен. Попробуйте повторить попытку позже"
|
135
|
+
error:
|
136
|
+
title: "Ошибка сервера"
|
137
|
+
heading: "Что-то пошло не так"
|
138
|
+
message: "Произошла внутренняя ошибка сервера. Попробуйте повторить попытку позже."
|
99
139
|
layouts:
|
100
140
|
admin:
|
101
141
|
footer:
|
@@ -109,3 +149,4 @@ ru:
|
|
109
149
|
title: "Раздел в разработке"
|
110
150
|
heading: "Раздел наполняется"
|
111
151
|
message: "Информация ещё не готова, зайдите позже"
|
152
|
+
total: "Всего"
|
@@ -0,0 +1,30 @@
|
|
1
|
+
en:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
feedback_request: "Feedback request"
|
5
|
+
attributes:
|
6
|
+
feedback_request:
|
7
|
+
comment: "Comment"
|
8
|
+
email: "E-mail"
|
9
|
+
image: "Image"
|
10
|
+
name: "Name"
|
11
|
+
phone: "Phone number"
|
12
|
+
processed: "Processed"
|
13
|
+
admin:
|
14
|
+
feedback_requests:
|
15
|
+
nav_item:
|
16
|
+
description: "Feedback requests list"
|
17
|
+
text: "Feedback requests"
|
18
|
+
index:
|
19
|
+
heading: "Feedback requests"
|
20
|
+
title: "Feedback requests, page %{page}"
|
21
|
+
index:
|
22
|
+
feedback_requests:
|
23
|
+
heading: "Feedback"
|
24
|
+
feedback_requests:
|
25
|
+
form:
|
26
|
+
result: "Thank you, we will contact you"
|
27
|
+
feedback_mailer:
|
28
|
+
new_feedback_request:
|
29
|
+
subject: "New feedback request from agency.tm"
|
30
|
+
title: "New feebdack request came"
|
@@ -0,0 +1,36 @@
|
|
1
|
+
ru:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
feedback_request: "Запрос обратной связи"
|
5
|
+
attributes:
|
6
|
+
feedback_request:
|
7
|
+
comment: "Комментарий"
|
8
|
+
email: "Почта"
|
9
|
+
image: "Картинка"
|
10
|
+
name: "Имя"
|
11
|
+
phone: "Телефон"
|
12
|
+
processed: "Обработан"
|
13
|
+
admin:
|
14
|
+
feedback_requests:
|
15
|
+
nav_item:
|
16
|
+
description: "Список запросов обратной связи"
|
17
|
+
text: "Запросы обратной связи"
|
18
|
+
index:
|
19
|
+
heading: "Запросы обратной связи"
|
20
|
+
title: "Запросы обратной связи, страница %{page}"
|
21
|
+
index:
|
22
|
+
dashboard:
|
23
|
+
biovision_feedback:
|
24
|
+
heading: "Обратная связь"
|
25
|
+
index:
|
26
|
+
index:
|
27
|
+
contact:
|
28
|
+
heading: "Контакты"
|
29
|
+
or_use_form: "Или оставьте ваши контактные данные и мы очень быстро свяжемся с вами"
|
30
|
+
feedback_requests:
|
31
|
+
form:
|
32
|
+
result: "Спасибо, с Вами свяжутся"
|
33
|
+
feedback_mailer:
|
34
|
+
new_feedback_request:
|
35
|
+
subject: "Новый запрос обратной связи"
|
36
|
+
title: "Поступил новый запрос на обратную связь"
|
@@ -0,0 +1,92 @@
|
|
1
|
+
ru:
|
2
|
+
media_file_count:
|
3
|
+
zero: "файлов нет"
|
4
|
+
one: "%{count} файл"
|
5
|
+
few: "%{count} файла"
|
6
|
+
many: "%{count} файлов"
|
7
|
+
other: "%{count} файлов"
|
8
|
+
child_media_folder_count:
|
9
|
+
zero: "дочерних папок нет"
|
10
|
+
one: "%{count} дочерняя папка"
|
11
|
+
few: "%{count} дочерниe папки"
|
12
|
+
many: "%{count} дочерних папок"
|
13
|
+
other: "%{count} дочерних папок"
|
14
|
+
activerecord:
|
15
|
+
models:
|
16
|
+
media_folder: "Медиа-папка"
|
17
|
+
media_file: "Медиа-файл"
|
18
|
+
errors:
|
19
|
+
models:
|
20
|
+
media_folder:
|
21
|
+
attributes:
|
22
|
+
parent:
|
23
|
+
is_too_deep: "имеет слишком глубокую вложенность"
|
24
|
+
attributes:
|
25
|
+
media_file:
|
26
|
+
description: "Описание"
|
27
|
+
file: "Файл"
|
28
|
+
media_folder: "Папка"
|
29
|
+
media_folder_id: "Папка"
|
30
|
+
mime_type: "MIME-тип"
|
31
|
+
name: "Название"
|
32
|
+
original_name: "Оригинальное название"
|
33
|
+
snapshot: "Миниатюра"
|
34
|
+
user: "Владелец"
|
35
|
+
uuid: "UUID"
|
36
|
+
media_folder:
|
37
|
+
name: "Название"
|
38
|
+
parent: "Родительская папка"
|
39
|
+
parent_id: "Родительская папка"
|
40
|
+
snapshot: "Картинка"
|
41
|
+
user: "Владелец"
|
42
|
+
uuid: "UUID"
|
43
|
+
admin:
|
44
|
+
media_files:
|
45
|
+
nav_item:
|
46
|
+
description: "Управление загруженными файлами"
|
47
|
+
text: "Медиафайлы"
|
48
|
+
index:
|
49
|
+
title: "Медиафайлы, страница %{page}"
|
50
|
+
heading: "Медиафайлы"
|
51
|
+
media_folders:
|
52
|
+
nav_item:
|
53
|
+
description: "Управление папками для медиафайлов"
|
54
|
+
text: "Медиапапки"
|
55
|
+
index:
|
56
|
+
title: "Медиапапки"
|
57
|
+
heading: "Медиапапки"
|
58
|
+
show:
|
59
|
+
add_child: "Добавить дочернюю папку"
|
60
|
+
media_files: "Файлы"
|
61
|
+
files:
|
62
|
+
title: "Файлы в медиапапке «%{name}», страница %{page}"
|
63
|
+
media_files:
|
64
|
+
new:
|
65
|
+
heading: "Новый медиафайл"
|
66
|
+
title: "Добавление медиафайла"
|
67
|
+
edit:
|
68
|
+
heading: "Редактирование медиафайла"
|
69
|
+
forbidden: "Редактирование этого файла запрещено"
|
70
|
+
title: "Редактирование медиафайла"
|
71
|
+
destroy:
|
72
|
+
success: "Файл успешно удалён"
|
73
|
+
update:
|
74
|
+
success: "Файл успешно изменён"
|
75
|
+
form:
|
76
|
+
guidelines:
|
77
|
+
file: "Картинка размером до 3000×3000, формат — JPG или PNG."
|
78
|
+
name: "Максимум 250 символов."
|
79
|
+
description: "Максимум 250 символов."
|
80
|
+
media_folders:
|
81
|
+
new:
|
82
|
+
heading: "Новая медиапапка"
|
83
|
+
title: "Добавление медиапапки"
|
84
|
+
edit:
|
85
|
+
heading: "Редактирование медиапапки"
|
86
|
+
title: "Редактирование медиапапки"
|
87
|
+
destroy:
|
88
|
+
success: "Медиапапка успешно удалена"
|
89
|
+
form:
|
90
|
+
guidelines:
|
91
|
+
snapshot: "Картинка размером 160×160, формат — JPG или PNG."
|
92
|
+
name: "Максимум 100 символов."
|
data/config/routes.rb
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
|
+
# Handling errors
|
3
|
+
match '/400' => 'errors#bad_request', via: :all
|
4
|
+
match '/401' => 'errors#unauthorized', via: :all
|
5
|
+
match '/403' => 'errors#forbidden', via: :all
|
6
|
+
match '/404' => 'errors#not_found', via: :all
|
7
|
+
match '/422' => 'errors#unprocessable_entity', via: :all
|
8
|
+
match '/500' => 'errors#internal_server_error', via: :all
|
2
9
|
|
3
10
|
controller :authentication do
|
4
11
|
get 'login' => :new
|
@@ -84,6 +91,24 @@ Rails.application.routes.draw do
|
|
84
91
|
end
|
85
92
|
|
86
93
|
resources :login_attempts, only: [:index]
|
94
|
+
|
95
|
+
resources :media_folders, only: [:index, :show] do
|
96
|
+
member do
|
97
|
+
get 'files'
|
98
|
+
end
|
99
|
+
end
|
100
|
+
resources :media_files, only: [:index, :show] do
|
101
|
+
member do
|
102
|
+
put 'lock', defaults: { format: :json }
|
103
|
+
delete 'lock', action: :unlock, defaults: { format: :json }
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
resources :feedback_requests, only: [:index] do
|
108
|
+
member do
|
109
|
+
post 'toggle', defaults: { format: :json }
|
110
|
+
end
|
111
|
+
end
|
87
112
|
end
|
88
113
|
|
89
114
|
namespace :my do
|
@@ -113,4 +138,13 @@ Rails.application.routes.draw do
|
|
113
138
|
|
114
139
|
resources :privileges, except: [:index, :show]
|
115
140
|
resources :privilege_groups, except: [:index, :show]
|
141
|
+
|
142
|
+
resources :media_folders, except: [:index, :show]
|
143
|
+
resources :media_files, except: [:index, :show] do
|
144
|
+
collection do
|
145
|
+
post :ckeditor
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
resources :feedback_requests, only: [:create, :destroy]
|
116
150
|
end
|
@@ -2,7 +2,7 @@ class CreateMetricValues < ActiveRecord::Migration[5.1]
|
|
2
2
|
def up
|
3
3
|
unless MetricValue.table_exists?
|
4
4
|
create_table :metric_values do |t|
|
5
|
-
t.references :metric,
|
5
|
+
t.references :metric, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
6
6
|
t.timestamp :time, null: false
|
7
7
|
t.integer :quantity, null: false, default: 1
|
8
8
|
end
|
@@ -3,7 +3,7 @@ class CreateAgents < ActiveRecord::Migration[5.1]
|
|
3
3
|
unless Agent.table_exists?
|
4
4
|
create_table :agents do |t|
|
5
5
|
t.timestamps
|
6
|
-
t.references :browser, foreign_key:
|
6
|
+
t.references :browser, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
7
7
|
t.boolean :bot, null: false, default: false
|
8
8
|
t.boolean :mobile, null: false, default: false
|
9
9
|
t.boolean :active, null: false, default: true
|
@@ -3,8 +3,8 @@ class CreateUsers < ActiveRecord::Migration[5.1]
|
|
3
3
|
unless User.table_exists?
|
4
4
|
create_table :users do |t|
|
5
5
|
t.timestamps
|
6
|
-
t.references :region, foreign_key:
|
7
|
-
t.references :agent, foreign_key:
|
6
|
+
t.references :region, foreign_key: { on_update: :cascade, on_delete: :nullify }
|
7
|
+
t.references :agent, foreign_key: { on_update: :cascade, on_delete: :nullify }
|
8
8
|
t.inet :ip
|
9
9
|
t.integer :inviter_id
|
10
10
|
t.integer :native_id
|
@@ -3,7 +3,7 @@ class CreateUserProfiles < ActiveRecord::Migration[5.1]
|
|
3
3
|
unless UserProfile.table_exists?
|
4
4
|
create_table :user_profiles do |t|
|
5
5
|
t.timestamps
|
6
|
-
t.references :user,
|
6
|
+
t.references :user, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
7
7
|
t.integer :gender, limit: 2
|
8
8
|
t.date :birthday
|
9
9
|
t.string :name
|
@@ -3,8 +3,8 @@ class CreateTokens < ActiveRecord::Migration[5.1]
|
|
3
3
|
unless Token.table_exists?
|
4
4
|
create_table :tokens do |t|
|
5
5
|
t.timestamps
|
6
|
-
t.references :user,
|
7
|
-
t.references :agent, foreign_key:
|
6
|
+
t.references :user, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
7
|
+
t.references :agent, foreign_key: { on_update: :cascade, on_delete: :nullify }
|
8
8
|
t.inet :ip
|
9
9
|
t.datetime :last_used, index: true
|
10
10
|
t.boolean :active, default: true, null: false
|
@@ -3,9 +3,9 @@ class CreateCodes < ActiveRecord::Migration[5.1]
|
|
3
3
|
unless Code.table_exists?
|
4
4
|
create_table :codes do |t|
|
5
5
|
t.timestamps
|
6
|
-
t.references :code_type,
|
7
|
-
t.references :user, foreign_key:
|
8
|
-
t.references :agent, foreign_key:
|
6
|
+
t.references :code_type, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
7
|
+
t.references :user, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
8
|
+
t.references :agent, foreign_key: { on_update: :cascade, on_delete: :nullify }
|
9
9
|
t.inet :ip
|
10
10
|
t.integer :quantity, limit: 2, default: 1, null: false
|
11
11
|
t.string :body, null: false
|
@@ -3,9 +3,9 @@ class CreateUserPrivileges < ActiveRecord::Migration[5.1]
|
|
3
3
|
unless UserPrivilege.table_exists?
|
4
4
|
create_table :user_privileges do |t|
|
5
5
|
t.timestamps
|
6
|
-
t.references :region, foreign_key:
|
7
|
-
t.references :user,
|
8
|
-
t.references :privilege,
|
6
|
+
t.references :region, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
7
|
+
t.references :user, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
8
|
+
t.references :privilege, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -3,8 +3,8 @@ class CreatePrivilegeGroupPrivileges < ActiveRecord::Migration[5.1]
|
|
3
3
|
unless PrivilegeGroupPrivilege.table_exists?
|
4
4
|
create_table :privilege_group_privileges do |t|
|
5
5
|
t.timestamps
|
6
|
-
t.references :privilege_group,
|
7
|
-
t.references :privilege,
|
6
|
+
t.references :privilege_group, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
7
|
+
t.references :privilege, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
8
8
|
end
|
9
9
|
|
10
10
|
group = PrivilegeGroup.find_by(slug: 'editors')
|
@@ -3,9 +3,9 @@ class CreateForeignUsers < ActiveRecord::Migration[5.1]
|
|
3
3
|
unless ForeignUser.table_exists?
|
4
4
|
create_table :foreign_users do |t|
|
5
5
|
t.timestamps
|
6
|
-
t.references :foreign_site,
|
7
|
-
t.references :user,
|
8
|
-
t.references :agent, foreign_key:
|
6
|
+
t.references :foreign_site, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
7
|
+
t.references :user, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
8
|
+
t.references :agent, foreign_key: { on_update: :cascade, on_delete: :nullify }
|
9
9
|
t.inet :ip
|
10
10
|
t.string :slug, null: false
|
11
11
|
t.string :email
|
@@ -3,8 +3,8 @@ class CreateLoginAttempts < ActiveRecord::Migration[5.1]
|
|
3
3
|
unless LoginAttempt.table_exists?
|
4
4
|
create_table :login_attempts do |t|
|
5
5
|
t.timestamps
|
6
|
-
t.references :user,
|
7
|
-
t.references :agent, foreign_key:
|
6
|
+
t.references :user, null: false, foreign_key: { on_update: :cascade, on_delete: :cascade }
|
7
|
+
t.references :agent, foreign_key: { on_update: :cascade, on_delete: :nullify }
|
8
8
|
t.inet :ip
|
9
9
|
t.string :password, default: '', null: false
|
10
10
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class CreateMediaFolders < ActiveRecord::Migration[5.1]
|
2
|
+
def up
|
3
|
+
unless MediaFolder.table_exists?
|
4
|
+
create_table :media_folders do |t|
|
5
|
+
t.timestamps
|
6
|
+
t.references :user, foreign_key: { on_update: :cascade, on_delete: :nullify }
|
7
|
+
t.references :agent, foreign_key: { on_update: :cascade, on_delete: :nullify }
|
8
|
+
t.inet :ip
|
9
|
+
t.integer :parent_id
|
10
|
+
t.integer :media_files_count, default: 0, null: false
|
11
|
+
t.integer :depth, limit: 2, default: 0, null: false
|
12
|
+
t.string :uuid, null: false
|
13
|
+
t.string :snapshot
|
14
|
+
t.string :parents_cache, default: '', null: false
|
15
|
+
t.string :name, null: false
|
16
|
+
t.integer :children_cache, array: true, default: [], null: false
|
17
|
+
end
|
18
|
+
|
19
|
+
add_foreign_key :media_folders, :media_folders, column: :parent_id, on_update: :cascade, on_delete: :cascade
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def down
|
24
|
+
if MediaFolder.table_exists?
|
25
|
+
drop_table :media_folders
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class CreateMediaFiles < ActiveRecord::Migration[5.1]
|
2
|
+
def up
|
3
|
+
unless MediaFile.table_exists?
|
4
|
+
create_table :media_files do |t|
|
5
|
+
t.timestamps
|
6
|
+
t.references :media_folder, 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.boolean :locked, default: false, null: false
|
11
|
+
t.string :uuid, null: false
|
12
|
+
t.string :snapshot
|
13
|
+
t.string :file
|
14
|
+
t.string :mime_type
|
15
|
+
t.string :original_name
|
16
|
+
t.string :name, null: false
|
17
|
+
t.string :description
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def down
|
23
|
+
if MediaFile.table_exists?
|
24
|
+
drop_table :media_files
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class CreateFeedbackRequests < ActiveRecord::Migration[5.1]
|
2
|
+
def up
|
3
|
+
unless FeedbackRequest.table_exists?
|
4
|
+
create_table :feedback_requests do |t|
|
5
|
+
t.timestamps
|
6
|
+
t.references :agent, foreign_key: { on_update: :cascade, on_delete: :nullify }
|
7
|
+
t.inet :ip
|
8
|
+
t.boolean :processed
|
9
|
+
t.string :name
|
10
|
+
t.string :email
|
11
|
+
t.string :phone
|
12
|
+
t.string :image
|
13
|
+
t.text :comment
|
14
|
+
end
|
15
|
+
|
16
|
+
Privilege.create(slug: 'feedback_manager', name: 'Менеджер обратной связи')
|
17
|
+
StoredValue.create(slug: 'feedback_receiver', value: 'support@example.com', name: 'Адрес для запросов обратной связи', description: 'На этот адрес будут отправляться запросы обратной связи')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def down
|
22
|
+
if FeedbackRequest.table_exists?
|
23
|
+
drop_table :feedback_requests
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class AddFieldsToFeedbackRequests < ActiveRecord::Migration[5.1]
|
2
|
+
def up
|
3
|
+
add_column :feedback_requests, :image, :string unless column_exists?(:feedback_requests, :image)
|
4
|
+
add_column :feedback_requests, :comment, :text unless column_exists?(:feedback_requests, :comment)
|
5
|
+
end
|
6
|
+
|
7
|
+
def down
|
8
|
+
# No need to rollback
|
9
|
+
end
|
10
|
+
end
|