ab_admin 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +27 -12
- data/app/assets/javascripts/ab_admin/components/select2_bridge.js.coffee +39 -20
- data/app/assets/javascripts/ab_admin/core/columns_hider.js.coffee +4 -5
- data/app/assets/javascripts/ab_admin/inputs/datetime_input.js.coffee +3 -3
- data/app/assets/stylesheets/ab_admin/bootstrap_and_overrides.css.scss +5 -1
- data/app/assets/stylesheets/ab_admin/components/_columns_hider.css.scss +1 -1
- data/app/assets/stylesheets/ab_admin/components/_form.css.scss +1 -1
- data/app/controllers/admin/assets_controller.rb +4 -1
- data/app/controllers/admin/base_controller.rb +28 -10
- data/app/controllers/admin/locators_controller.rb +1 -1
- data/app/controllers/admin/manager_controller.rb +7 -2
- data/app/controllers/admin/static_pages_controller.rb +4 -5
- data/app/controllers/admin/structures_controller.rb +1 -1
- data/app/views/admin/base/create.js.erb +1 -1
- data/app/views/admin/base/edit.js.erb +16 -10
- data/app/views/admin/base/index.html.slim +2 -2
- data/app/views/admin/base/show.js.erb +2 -2
- data/app/views/admin/base/update.js.erb +12 -8
- data/app/views/admin/manager/_form.html.slim +4 -1
- data/app/views/admin/manager/_table.html.slim +2 -2
- data/app/views/admin/shared/_flash.html.slim +1 -1
- data/app/views/admin/structures/_form.html.slim +1 -1
- data/app/views/admin/users/_table.html.slim +1 -1
- data/config/locales/de.yml +18 -36
- data/config/locales/en.yml +20 -36
- data/config/locales/it.yml +12 -30
- data/config/locales/ru.yml +4 -17
- data/config/locales/uk.yml +301 -0
- data/lib/ab_admin.rb +1 -2
- data/lib/ab_admin/concerns/admin_addition.rb +1 -1
- data/lib/ab_admin/concerns/asset_human_names.rb +9 -1
- data/lib/ab_admin/concerns/utilities.rb +2 -6
- data/lib/ab_admin/controllers/tree.rb +2 -2
- data/lib/ab_admin/core_ext/array.rb +6 -5
- data/lib/ab_admin/hooks.rb +7 -32
- data/lib/ab_admin/hooks/{active_model_hooks.rb → active_model_attr_accessible_few_roles.rb} +12 -4
- data/lib/ab_admin/hooks/{globalize_hooks.rb → globalize_locale_suffix_accessors.rb} +1 -9
- data/lib/ab_admin/hooks/globalize_valid_locale.rb +9 -0
- data/lib/ab_admin/hooks/{paginate_hooks.rb → will_paginate_id_prefetch.rb} +7 -22
- data/lib/ab_admin/hooks/will_paginate_no_uri.rb +19 -0
- data/lib/ab_admin/i18n_tools/model_translator.rb +3 -2
- data/lib/ab_admin/menu/base_group.rb +3 -3
- data/lib/ab_admin/menu/item.rb +15 -4
- data/lib/ab_admin/models/asset.rb +6 -0
- data/lib/ab_admin/models/settings.rb +6 -6
- data/lib/ab_admin/models/user.rb +4 -0
- data/lib/ab_admin/utils.rb +16 -7
- data/lib/ab_admin/utils/xls_document.rb +9 -1
- data/lib/ab_admin/version.rb +1 -1
- data/lib/ab_admin/views/admin_helpers.rb +15 -11
- data/lib/ab_admin/views/admin_navigation_helpers.rb +11 -6
- data/lib/ab_admin/views/form_builder.rb +5 -1
- data/lib/ab_admin/views/search_form_builder.rb +1 -1
- data/lib/generators/ab_admin/glob/glob_generator.rb +6 -3
- data/lib/generators/ab_admin/install/install_generator.rb +1 -1
- data/lib/generators/ab_admin/install/templates/config/{unicorn_config.rb → unicorn/production.rb} +6 -9
- data/lib/generators/ab_admin/install/templates/script/unicorn.sh +7 -6
- data/lib/generators/template.rb +0 -1
- data/lib/tasks/assets.rake +7 -1
- metadata +34 -61
- data/app/assets/stylesheets/ab_admin/components/_text_styles.css.scss +0 -47
- data/lib/ab_admin/views/inputs/capture_block_input.rb +0 -16
data/config/locales/ru.yml
CHANGED
@@ -111,7 +111,7 @@ ru:
|
|
111
111
|
cancel: Отмена
|
112
112
|
save: Сохранить
|
113
113
|
save_and_add_another: Сохранить & новый
|
114
|
-
save_and_edit:
|
114
|
+
save_and_edit: Сохранить & редактировать
|
115
115
|
save_and_edit_next: Сохранить и след.
|
116
116
|
save_and_edit_prev: Сохранить и пред.
|
117
117
|
details: Подробнее
|
@@ -128,7 +128,6 @@ ru:
|
|
128
128
|
default: По умолчанию
|
129
129
|
private: Приватная
|
130
130
|
public: Публичная
|
131
|
-
keywords: Ключевые слова
|
132
131
|
langs:
|
133
132
|
en: En
|
134
133
|
it: It
|
@@ -214,7 +213,6 @@ ru:
|
|
214
213
|
cancel: Отмена
|
215
214
|
clear: Сброс
|
216
215
|
confirm: Подтвердить
|
217
|
-
create_product: Создать новый товар
|
218
216
|
day: Воскресенье,Понедельник,Вторник,Среда,Четверг,Пятница,Суббота
|
219
217
|
day_short: Вс,Пн,Вт,Ср,Чт,Пт,Сб
|
220
218
|
delete_nested_elements: Невозможно удалить
|
@@ -234,21 +232,11 @@ ru:
|
|
234
232
|
emptyResult: Пустой результат загрузки файла
|
235
233
|
attributes:
|
236
234
|
map: Местоположение
|
237
|
-
address: Адрес
|
238
|
-
country: Страна
|
239
|
-
country_id: Страна
|
240
235
|
created_at: Дата создания
|
241
236
|
description: Описание
|
242
|
-
footmarks_count: Лайков
|
243
237
|
is_visible: Отображать
|
244
238
|
name: Название
|
245
|
-
parent: Родительский элемент
|
246
|
-
parent_id: Родительский элемент
|
247
239
|
position: Позиция
|
248
|
-
region: Регион
|
249
|
-
region_id: Регион
|
250
|
-
reviews_count: Просмотров
|
251
|
-
synonyms: Синонимы
|
252
240
|
title: Название
|
253
241
|
updated_at: Дата изменения
|
254
242
|
user: Пользователь
|
@@ -257,7 +245,6 @@ ru:
|
|
257
245
|
updater_id: Обновил
|
258
246
|
remember_me: Запомнить
|
259
247
|
password: Пароль
|
260
|
-
slug: Алиас
|
261
248
|
attrs:
|
262
249
|
en: анг.
|
263
250
|
it: итал.
|
@@ -265,6 +252,7 @@ ru:
|
|
265
252
|
uk: укр.
|
266
253
|
de: нем.
|
267
254
|
fr: фран.
|
255
|
+
es: исп.
|
268
256
|
flash:
|
269
257
|
admin:
|
270
258
|
actions:
|
@@ -277,9 +265,6 @@ ru:
|
|
277
265
|
update:
|
278
266
|
error: '%{resource_name} - при сохранении возникли ошибки: %{errors}'
|
279
267
|
notice: '%{resource_name} - запись была успешно изменена.'
|
280
|
-
controller_name:
|
281
|
-
update:
|
282
|
-
success: products
|
283
268
|
locators:
|
284
269
|
prepared: Переводы успешно подготовлены
|
285
270
|
restart: Переводы успешно перезагружены
|
@@ -313,3 +298,5 @@ ru:
|
|
313
298
|
size_too_big: слишком большой размер (должно быть не более %{file_size})
|
314
299
|
carrierwave_processing_error: Невозможно переконвертировать
|
315
300
|
carrierwave_integrity_error: Не является рисунком
|
301
|
+
unauthorized:
|
302
|
+
default: "Нет прав для просмотра"
|
@@ -0,0 +1,301 @@
|
|
1
|
+
uk:
|
2
|
+
_no: "Ні"
|
3
|
+
_yes: "Так"
|
4
|
+
activerecord:
|
5
|
+
models:
|
6
|
+
locator: "Переклади"
|
7
|
+
settings: "Настройки"
|
8
|
+
track:
|
9
|
+
few: "История"
|
10
|
+
many: "История"
|
11
|
+
one: "История"
|
12
|
+
other: "История"
|
13
|
+
zero: "История"
|
14
|
+
attributes:
|
15
|
+
user:
|
16
|
+
password_confirmation: "Пароль еще раз"
|
17
|
+
admin:
|
18
|
+
actions:
|
19
|
+
activate:
|
20
|
+
link: "Активировать"
|
21
|
+
batch_destroy:
|
22
|
+
confirmation: "Вы уверены что хотите удалить выбранные записи?"
|
23
|
+
link: "Удалить выбранные"
|
24
|
+
title: "Мульти-удаление"
|
25
|
+
batch_publish:
|
26
|
+
link: "Опубликовать выбранные"
|
27
|
+
title: "Мульти-публикация"
|
28
|
+
batch_un_publish:
|
29
|
+
link: "Снять с публикации выбранные"
|
30
|
+
title: "Мульти-скрытие"
|
31
|
+
create:
|
32
|
+
link: "Создать"
|
33
|
+
title: "Создание"
|
34
|
+
destroy:
|
35
|
+
link: "Удалить"
|
36
|
+
title: "Удаление"
|
37
|
+
edit:
|
38
|
+
link: "Редактировать"
|
39
|
+
title: "Редактирование"
|
40
|
+
history:
|
41
|
+
link: "История"
|
42
|
+
title: "История"
|
43
|
+
index:
|
44
|
+
link: "Список"
|
45
|
+
title: "Список"
|
46
|
+
new:
|
47
|
+
link: "Создать"
|
48
|
+
title: "Создание"
|
49
|
+
perms:
|
50
|
+
link: "Права"
|
51
|
+
title: "Редактирование прав доступа"
|
52
|
+
preview:
|
53
|
+
link: "Предпросмотр"
|
54
|
+
show:
|
55
|
+
link: "Просмотр"
|
56
|
+
title: "Детали"
|
57
|
+
suspend:
|
58
|
+
link: "Бан"
|
59
|
+
update:
|
60
|
+
link: "Редактировать"
|
61
|
+
title: "Редактирование"
|
62
|
+
add: "Добавить"
|
63
|
+
auth:
|
64
|
+
profile: "Профиль"
|
65
|
+
sign_out: "Выход"
|
66
|
+
sessions:
|
67
|
+
title: "Вход"
|
68
|
+
button: "Войти"
|
69
|
+
passwords:
|
70
|
+
new:
|
71
|
+
title: "Забыли пароль?"
|
72
|
+
button: "Выслать инструкции"
|
73
|
+
edit:
|
74
|
+
title: "Изменение пароля"
|
75
|
+
button: "Изменить пароль"
|
76
|
+
password: "Новый пароль"
|
77
|
+
password_confirmation: "Новый пароль еще раз"
|
78
|
+
avatar: "Аватар"
|
79
|
+
batch_actions:
|
80
|
+
title: "Действия"
|
81
|
+
status:
|
82
|
+
zero: "%{action} - 0 записей"
|
83
|
+
one: "%{action} - %{count} запись"
|
84
|
+
few: "%{action} - %{count} записи"
|
85
|
+
many: "%{action} - %{count} записей"
|
86
|
+
other: "%{action} - %{count} записей"
|
87
|
+
cache_clear: "Очистить кэш"
|
88
|
+
cant_be_deleted: "Удаление невозможно"
|
89
|
+
choose: "Выберите %{attr}"
|
90
|
+
close: "Закрыть"
|
91
|
+
columns_hider:
|
92
|
+
button: "Столбцы"
|
93
|
+
title: "Настройка отображения колонок"
|
94
|
+
comments:
|
95
|
+
add: "Комментировать"
|
96
|
+
title_content: "Комментариев (%{count})"
|
97
|
+
delete: "Удалить"
|
98
|
+
delete_confirmation: "Вы уверены, что хотите удалить это?"
|
99
|
+
empty: "Пусто"
|
100
|
+
exit: "Выход"
|
101
|
+
fileupload:
|
102
|
+
button: "Выберите файл"
|
103
|
+
buttons: "Выберите файлы"
|
104
|
+
delete: "Удалить файл"
|
105
|
+
drop_here: "или бросьте файл(ы) сюда"
|
106
|
+
main_image: "Сделать главным"
|
107
|
+
max_size: "Макс разм."
|
108
|
+
crop: "Обрезать"
|
109
|
+
rotate: "Повернуть"
|
110
|
+
form:
|
111
|
+
cancel: "Отмена"
|
112
|
+
save: "Сохранить"
|
113
|
+
save_and_add_another: "Сохранить & новый"
|
114
|
+
save_and_edit: "Применить"
|
115
|
+
save_and_edit_next: "Сохранить и след."
|
116
|
+
save_and_edit_prev: "Сохранить и пред."
|
117
|
+
details: "Подробнее"
|
118
|
+
base: "Основное"
|
119
|
+
keywords: "Мета теги"
|
120
|
+
gender:
|
121
|
+
female: "Женский"
|
122
|
+
male: "Мужской"
|
123
|
+
undefined: "Неизвестно"
|
124
|
+
geo_autocomplete: "Введите адрес"
|
125
|
+
group:
|
126
|
+
kind:
|
127
|
+
admin: "Административная"
|
128
|
+
default: "По умолчанию"
|
129
|
+
private: "Приватная"
|
130
|
+
public: "Публичная"
|
131
|
+
keywords: "Ключевые слова"
|
132
|
+
langs:
|
133
|
+
en: En
|
134
|
+
it: It
|
135
|
+
ru: Ru
|
136
|
+
uk: Uk
|
137
|
+
index_view:
|
138
|
+
table: "Отображение таблицей"
|
139
|
+
tree: "Отображение деревом с сортировкой"
|
140
|
+
grid: "Отображение плиткой"
|
141
|
+
loading: "Загрузка..."
|
142
|
+
locators:
|
143
|
+
edit_file: "Редактировать файл"
|
144
|
+
edit_files: "Редактировать файлы"
|
145
|
+
file: "Файл"
|
146
|
+
locale: "Локаль"
|
147
|
+
prepare: "Подготовить файлы локализации"
|
148
|
+
restart: "Обновить локализацию"
|
149
|
+
title: "Редактирование локализации"
|
150
|
+
update_file: "Обновить файл"
|
151
|
+
all_terms: "Все"
|
152
|
+
incomplete: "Пустые"
|
153
|
+
complete: "Готовые"
|
154
|
+
key: "Ключ"
|
155
|
+
filter: "введите текст для фильтрации"
|
156
|
+
translate_incomplete: "Перевести все пустые (google)"
|
157
|
+
navigation:
|
158
|
+
system: "Система"
|
159
|
+
users: "Пользователи"
|
160
|
+
dashboard: Dashboard
|
161
|
+
no_results_text: "Ничего не найдено"
|
162
|
+
photo: "Главное изображение"
|
163
|
+
pictures: "Изображения"
|
164
|
+
preview: "Предпросмотр"
|
165
|
+
role:
|
166
|
+
kind:
|
167
|
+
admin: admin
|
168
|
+
default: default
|
169
|
+
group: group
|
170
|
+
user: user
|
171
|
+
save: "Сохранить"
|
172
|
+
scopes:
|
173
|
+
un_visible: "Скрытые"
|
174
|
+
visible: "Опубликованные"
|
175
|
+
search:
|
176
|
+
cancel: "Очистить"
|
177
|
+
submit: "Уточнить"
|
178
|
+
title: "Поиск"
|
179
|
+
set_main: "Сделать главным изображением"
|
180
|
+
show:
|
181
|
+
attr: "Атрибут"
|
182
|
+
value: "Значение"
|
183
|
+
table:
|
184
|
+
actions: "Действия"
|
185
|
+
user:
|
186
|
+
role:
|
187
|
+
admin: "Админ"
|
188
|
+
default: "Клиент"
|
189
|
+
guest: "Гость"
|
190
|
+
moderator: "Модератор"
|
191
|
+
redactor: "Редактор"
|
192
|
+
state:
|
193
|
+
active: "Активен"
|
194
|
+
deleted: "Удален"
|
195
|
+
pending: "Неактивирован"
|
196
|
+
suspended: "Заморожен"
|
197
|
+
structure:
|
198
|
+
kind:
|
199
|
+
group: "Группа страницек"
|
200
|
+
main: "Главная"
|
201
|
+
posts: "Журнал"
|
202
|
+
redirect: "Перенаправление"
|
203
|
+
static_page: "Текстовая страница"
|
204
|
+
position:
|
205
|
+
bottom: "Снизу"
|
206
|
+
default: "По умолчанию"
|
207
|
+
menu: "Меню"
|
208
|
+
js:
|
209
|
+
empty: "Пусто"
|
210
|
+
add_link: "Создать?"
|
211
|
+
add: "Добавить"
|
212
|
+
remove: "Удалить"
|
213
|
+
save: "Сохнанить"
|
214
|
+
cancel: "Отмена"
|
215
|
+
clear: "Сброс"
|
216
|
+
confirm: "Подтвердить"
|
217
|
+
day: "Воскресенье,Понедельник,Вторник,Среда,Четверг,Пятница,Суббота"
|
218
|
+
day_short: "Вс,Пн,Вт,Ср,Чт,Пт,Сб"
|
219
|
+
delete_nested_elements: "Невозможно удалить"
|
220
|
+
edit: "Редактировать"
|
221
|
+
month: "Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь"
|
222
|
+
name: "Название"
|
223
|
+
no_results: "Ничего не найдено"
|
224
|
+
search: "Идет поиск..."
|
225
|
+
value: "Значение"
|
226
|
+
fileupload:
|
227
|
+
errors:
|
228
|
+
maxFileSize: "Файл слишком велик"
|
229
|
+
minFileSize: "Файл слишком мал"
|
230
|
+
acceptFileTypes: "Тип файла не допускается"
|
231
|
+
maxNumberOfFiles: "Превышено максимальное количество файлов"
|
232
|
+
uploadedBytes: "Превышен максимальный размер файла"
|
233
|
+
emptyResult: "Пустой результат загрузки файла"
|
234
|
+
attributes:
|
235
|
+
map: "Местоположение"
|
236
|
+
created_at: "Дата создания"
|
237
|
+
description: "Описание"
|
238
|
+
is_visible: "Отображать"
|
239
|
+
name: "Название"
|
240
|
+
position: "Позиция"
|
241
|
+
title: "Название"
|
242
|
+
updated_at: "Дата изменения"
|
243
|
+
user: "Пользователь"
|
244
|
+
user_id: "Пользователь"
|
245
|
+
updater: "Обновил"
|
246
|
+
updater_id: "Обновил"
|
247
|
+
remember_me: "Запомнить"
|
248
|
+
password: "Пароль"
|
249
|
+
attrs:
|
250
|
+
en: "анг."
|
251
|
+
it: "итал."
|
252
|
+
ru: "рус."
|
253
|
+
uk: "укр."
|
254
|
+
de: "нем."
|
255
|
+
fr: "фран."
|
256
|
+
es: "исп."
|
257
|
+
flash:
|
258
|
+
admin:
|
259
|
+
actions:
|
260
|
+
create:
|
261
|
+
error: "%{resource_name} - при сохранении возникли ошибки: %{errors}"
|
262
|
+
notice: "%{resource_name} - запись успешно создана."
|
263
|
+
destroy:
|
264
|
+
error: "%{resource_name} - запись не может быть удалена"
|
265
|
+
notice: "%{resource_name} - запись была успешно удалена."
|
266
|
+
update:
|
267
|
+
error: "%{resource_name} - при сохранении возникли ошибки: %{errors}"
|
268
|
+
notice: "%{resource_name} - запись была успешно изменена."
|
269
|
+
locators:
|
270
|
+
prepared: "Переводы успешно подготовлены"
|
271
|
+
restart: "Переводы успешно перезагружены"
|
272
|
+
update_error: "Возникли ошибки при обновлении данных"
|
273
|
+
updated: "Перевод успешно обновлен"
|
274
|
+
permissions:
|
275
|
+
failure: "Ошибка обновления"
|
276
|
+
success: "Права успешно обновлены"
|
277
|
+
simple_form:
|
278
|
+
buttons:
|
279
|
+
cancel: "Отмена"
|
280
|
+
creating: "Создание..."
|
281
|
+
error_notification:
|
282
|
+
default_message: "При сохранении возникли ошибки"
|
283
|
+
'no': "Нет"
|
284
|
+
required:
|
285
|
+
mark: "*"
|
286
|
+
text: "обязательное"
|
287
|
+
updating: "Обновление..."
|
288
|
+
'yes': "Да"
|
289
|
+
will_paginate:
|
290
|
+
page_gap: "…"
|
291
|
+
pagination_info: "<b>%{from} - %{to}</b> из <b>%{count}</b>"
|
292
|
+
pagination_info_empty: 0 всего
|
293
|
+
next_label: "→"
|
294
|
+
previous_label: "←"
|
295
|
+
errors:
|
296
|
+
messages:
|
297
|
+
wrong_size: "неправильный размер (должно быть %{file_size})"
|
298
|
+
size_too_small: "слишком маленький размер (должно быть не менее %{file_size})"
|
299
|
+
size_too_big: "слишком большой размер (должно быть не более %{file_size})"
|
300
|
+
carrierwave_processing_error: "Невозможно переконвертировать"
|
301
|
+
carrierwave_integrity_error: "Не является рисунком"
|
data/lib/ab_admin.rb
CHANGED
@@ -104,7 +104,6 @@ module AbAdmin
|
|
104
104
|
autoload :EditorInput, 'ab_admin/views/inputs/editor_input'
|
105
105
|
autoload :DateTimePickerInput, 'ab_admin/views/inputs/date_time_picker_input'
|
106
106
|
autoload :TokenInput, 'ab_admin/views/inputs/token_input'
|
107
|
-
autoload :CaptureBlockInput, 'ab_admin/views/inputs/capture_block_input'
|
108
107
|
autoload :UploaderInput, 'ab_admin/views/inputs/uploader_input'
|
109
108
|
end
|
110
109
|
end
|
@@ -146,7 +145,7 @@ module AbAdmin
|
|
146
145
|
@@translate_models = %w(User Asset Structure StaticPage Header AdminComment)
|
147
146
|
|
148
147
|
mattr_accessor :assets
|
149
|
-
@@assets = %w(ab_admin/devise.css bootstrap.js)
|
148
|
+
@@assets = %w(ab_admin/devise.css bootstrap.js ab_admin/loading.gif ab_admin/clear.png)
|
150
149
|
|
151
150
|
mattr_accessor :test_settings
|
152
151
|
@@test_settings = {}
|
@@ -30,7 +30,7 @@ module AbAdmin
|
|
30
30
|
def new_changes
|
31
31
|
exclude_attrs = respond_to?(:translated_attribute_names) ? translated_attribute_names.dup : []
|
32
32
|
exclude_attrs << :updated_at
|
33
|
-
changes.except(*exclude_attrs).map { |k, v| [k, v.last] }.
|
33
|
+
changes.except(*exclude_attrs).map { |k, v| [k, v.last] }.to_h
|
34
34
|
end
|
35
35
|
|
36
36
|
def admin_comments_count_non_zero
|
@@ -14,7 +14,15 @@ module AbAdmin
|
|
14
14
|
def make_asset_human_names
|
15
15
|
asset_human_names_list.each do |assoc|
|
16
16
|
Array(send(assoc)).each do |asset|
|
17
|
-
|
17
|
+
begin
|
18
|
+
asset.store_model_filename(self)
|
19
|
+
rescue Errno::ENOENT => e
|
20
|
+
if Rails.env.production? && (defined? ExceptionNotifier)
|
21
|
+
ExceptionNotifier.notify_exception(e, data: {email: asset.attributes})
|
22
|
+
else
|
23
|
+
raise e
|
24
|
+
end
|
25
|
+
end
|
18
26
|
end
|
19
27
|
end
|
20
28
|
end
|
@@ -7,7 +7,7 @@ module AbAdmin
|
|
7
7
|
prev_id = params[:prev_id].to_i
|
8
8
|
next_id = params[:next_id].to_i
|
9
9
|
|
10
|
-
|
10
|
+
head(:bad_request) and return if parent_id.zero? && prev_id.zero? && next_id.zero?
|
11
11
|
|
12
12
|
if prev_id.zero? && next_id.zero?
|
13
13
|
resource.move_to_child_of resource_class.find(parent_id)
|
@@ -17,7 +17,7 @@ module AbAdmin
|
|
17
17
|
resource.move_to_left_of resource_class.find(next_id)
|
18
18
|
end
|
19
19
|
|
20
|
-
|
20
|
+
head :ok
|
21
21
|
end
|
22
22
|
|
23
23
|
end
|