ab_admin 0.3.6 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (419) hide show
  1. checksums.yaml +7 -0
  2. data/{LICENSE.txt → MIT-LICENSE} +2 -4
  3. data/README.md +3 -3
  4. data/Rakefile +21 -3
  5. data/app/assets/images/admin/flags/b_de.png +0 -0
  6. data/app/assets/images/admin/flags/b_es.png +0 -0
  7. data/app/assets/images/admin/flags/b_fr.png +0 -0
  8. data/app/assets/images/admin/flags/flag_de.gif +0 -0
  9. data/app/assets/images/admin/flags/flag_de_nonact.gif +0 -0
  10. data/app/assets/images/admin/flags/flag_es.gif +0 -0
  11. data/app/assets/images/admin/flags/flag_es_nonact.gif +0 -0
  12. data/app/assets/images/admin/flags/flag_fr.gif +0 -0
  13. data/app/assets/images/admin/flags/flag_fr_nonact.gif +0 -0
  14. data/app/assets/javascripts/ab_admin/components/admin_assets.js.coffee +50 -60
  15. data/app/assets/javascripts/ab_admin/components/base_assets.js.coffee +86 -0
  16. data/app/assets/javascripts/ab_admin/components/croppable_image.js.coffee +4 -4
  17. data/app/assets/javascripts/ab_admin/components/gmaps.js.coffee +5 -0
  18. data/app/assets/javascripts/ab_admin/components/google_translate.js.coffee +0 -1
  19. data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +7 -3
  20. data/app/assets/javascripts/ab_admin/components/locator.js.coffee +1 -1
  21. data/app/assets/javascripts/ab_admin/components/select2_bridge.js.coffee +152 -0
  22. data/app/assets/javascripts/ab_admin/components/sortable_tree.js.coffee +1 -1
  23. data/app/assets/javascripts/ab_admin/core/batch_actions.js.coffee +5 -4
  24. data/app/assets/javascripts/ab_admin/core/columns_hider.js.coffee +4 -11
  25. data/app/assets/javascripts/ab_admin/core/confirmation.js.coffee +4 -43
  26. data/app/assets/javascripts/ab_admin/core/deprecated_utils.js.coffee +44 -0
  27. data/app/assets/javascripts/ab_admin/core/init.js.coffee +8 -25
  28. data/app/assets/javascripts/ab_admin/core/pjax.js.coffee +18 -4
  29. data/app/assets/javascripts/ab_admin/core/search_form.js.coffee +5 -5
  30. data/app/assets/javascripts/ab_admin/core/ui_utils.js.coffee +15 -86
  31. data/app/assets/javascripts/ab_admin/core/utils.js.coffee +38 -51
  32. data/app/assets/javascripts/ab_admin/core/view_layout.js.coffee +1 -1
  33. data/app/assets/javascripts/ab_admin/inputs/datetime_input.js.coffee +16 -18
  34. data/app/assets/javascripts/ab_admin/main.js +7 -7
  35. data/app/assets/stylesheets/ab_admin/bootstrap_and_overrides.css.scss +21 -8
  36. data/app/assets/stylesheets/ab_admin/components/_admin_comments.css.scss +17 -5
  37. data/app/assets/stylesheets/ab_admin/components/_base.css.scss +4 -0
  38. data/app/assets/stylesheets/ab_admin/components/_colored_tabs.css.scss +1 -4
  39. data/app/assets/stylesheets/ab_admin/components/_columns_hider.css.scss +5 -0
  40. data/app/assets/stylesheets/ab_admin/components/_form.css.scss +45 -16
  41. data/app/assets/stylesheets/ab_admin/components/_grid_view.css.scss +11 -0
  42. data/app/assets/stylesheets/ab_admin/components/_locale_tabs.css.scss +1 -1
  43. data/app/assets/stylesheets/ab_admin/components/_navigation.css.scss +11 -9
  44. data/app/assets/stylesheets/ab_admin/components/_table_view.css.scss +1 -1
  45. data/app/assets/stylesheets/ab_admin/components/_translations.css.scss +1 -0
  46. data/app/assets/stylesheets/ab_admin/components/{_sortable_tree.css.scss → _tree_view.css.scss} +8 -3
  47. data/app/assets/stylesheets/ab_admin/fileupload.css.scss +51 -43
  48. data/app/assets/stylesheets/ab_admin/main.css.scss +1 -3
  49. data/app/controllers/admin/admin_comments_controller.rb +14 -4
  50. data/app/controllers/admin/assets_controller.rb +44 -35
  51. data/app/controllers/admin/base_controller.rb +93 -38
  52. data/app/controllers/admin/locators_controller.rb +3 -2
  53. data/app/controllers/admin/manager_controller.rb +20 -9
  54. data/app/controllers/admin/structures_controller.rb +9 -1
  55. data/app/controllers/admin/users_controller.rb +1 -2
  56. data/app/views/ab_admin/devise/sessions/new.html.slim +1 -1
  57. data/app/views/admin/admin_comments/_comment.html.slim +21 -7
  58. data/app/views/admin/admin_comments/_comments.html.slim +1 -1
  59. data/app/views/admin/admin_comments/_form.html.slim +8 -3
  60. data/app/views/admin/admin_comments/_list_block.html.slim +7 -0
  61. data/app/views/admin/admin_comments/create.js.erb +3 -2
  62. data/app/views/admin/admin_comments/destroy.js.erb +1 -1
  63. data/app/views/admin/admin_comments/index.js.erb +14 -0
  64. data/app/views/admin/assets/batch_edit.html.slim +14 -0
  65. data/app/views/admin/base/_modal_form_layout.html.slim +12 -0
  66. data/app/views/admin/base/_search_layout.html.slim +4 -3
  67. data/app/views/admin/base/_table.html.slim +2 -2
  68. data/app/views/admin/base/create.js.erb +13 -8
  69. data/app/views/admin/base/history.html.slim +18 -0
  70. data/app/views/admin/base/index.html.slim +3 -3
  71. data/app/views/admin/base/new.js.erb +14 -8
  72. data/app/views/admin/base/show.html.slim +1 -2
  73. data/app/views/admin/base/show.js.erb +7 -0
  74. data/app/views/admin/fileupload/_asset_templates.html.slim +29 -0
  75. data/app/views/admin/fileupload/_container.html.slim +13 -12
  76. data/app/views/admin/fileupload/_file.html.slim +2 -2
  77. data/app/views/admin/fileupload/_image.html.slim +8 -0
  78. data/app/views/admin/fileupload/_video.html.slim +2 -2
  79. data/app/views/admin/headers/_form.html.slim +2 -0
  80. data/app/views/admin/locators/edit.html.slim +1 -1
  81. data/app/views/admin/locators/show.html.slim +1 -2
  82. data/app/views/admin/manager/_form.html.slim +17 -3
  83. data/app/views/admin/manager/_modal_form.html.slim +19 -0
  84. data/app/views/admin/manager/_table.html.slim +3 -3
  85. data/app/views/admin/manager/show.html.slim +1 -0
  86. data/app/views/admin/shared/_content_actions.html.slim +39 -0
  87. data/app/views/admin/shared/_locale_tabs.html.slim +3 -3
  88. data/app/views/admin/shared/inputs/_checkbox_tree.html.slim +9 -3
  89. data/app/views/admin/structures/_form.html.slim +4 -7
  90. data/app/views/admin/users/_form.html.slim +2 -4
  91. data/app/views/admin/users/_search_form.html.slim +0 -1
  92. data/app/views/admin/users/_table.html.slim +8 -10
  93. data/app/views/layouts/admin/_footer.html.slim +3 -4
  94. data/app/views/layouts/admin/_navigation.html.slim +2 -2
  95. data/app/views/layouts/admin/application.html.slim +7 -9
  96. data/app/views/layouts/admin/devise.html.slim +3 -4
  97. data/config/locales/de.yml +319 -0
  98. data/config/locales/en.devise.yml +44 -31
  99. data/config/locales/en.yml +166 -143
  100. data/config/locales/it.devise.yml +54 -41
  101. data/config/locales/it.yml +178 -163
  102. data/config/locales/ru.devise.yml +70 -56
  103. data/config/locales/ru.yml +280 -264
  104. data/config/routes.rb +6 -3
  105. data/db/migrate/20130101000001_create_users.rb +7 -11
  106. data/db/migrate/20130101000003_create_assets.rb +5 -5
  107. data/db/migrate/20130101000004_create_headers.rb +2 -6
  108. data/db/migrate/20130101000005_create_static_pages.rb +1 -5
  109. data/db/migrate/20130101000006_create_structures.rb +5 -9
  110. data/db/migrate/20130101000007_base_translations.rb +3 -1
  111. data/db/migrate/20130101000008_create_admin_comments.rb +5 -5
  112. data/db/migrate/20130101000009_create_tracks.rb +20 -0
  113. data/lib/ab_admin.rb +36 -4
  114. data/lib/ab_admin/abstract_resource.rb +28 -7
  115. data/lib/ab_admin/carrierwave/base_uploader.rb +85 -5
  116. data/lib/ab_admin/carrierwave/glue.rb +6 -1
  117. data/lib/ab_admin/concerns/admin_addition.rb +26 -9
  118. data/lib/ab_admin/concerns/asset_human_names.rb +23 -0
  119. data/lib/ab_admin/concerns/fileuploads.rb +102 -0
  120. data/lib/ab_admin/concerns/has_tracking.rb +32 -0
  121. data/lib/ab_admin/concerns/nested_set.rb +9 -9
  122. data/lib/ab_admin/concerns/silencer.rb +5 -5
  123. data/lib/ab_admin/concerns/utilities.rb +28 -16
  124. data/lib/ab_admin/concerns/validations.rb +1 -1
  125. data/lib/ab_admin/config/base.rb +10 -2
  126. data/lib/ab_admin/controllers/callbacks.rb +2 -2
  127. data/lib/ab_admin/controllers/can_can_manager_resource.rb +3 -2
  128. data/lib/ab_admin/controllers/fv.rb +16 -0
  129. data/lib/ab_admin/controllers/head_options.rb +6 -4
  130. data/lib/ab_admin/core_ext/hash.rb +25 -70
  131. data/lib/ab_admin/core_ext/string.rb +17 -4
  132. data/lib/ab_admin/engine.rb +2 -8
  133. data/lib/ab_admin/hooks.rb +8 -3
  134. data/lib/ab_admin/hooks/active_model_hooks.rb +1 -1
  135. data/lib/ab_admin/hooks/globalize_hooks.rb +35 -0
  136. data/lib/ab_admin/hooks/paginate_hooks.rb +3 -1
  137. data/lib/ab_admin/i18n_tools/model_translator.rb +1 -1
  138. data/lib/ab_admin/menu/abstract_builder.rb +14 -0
  139. data/lib/ab_admin/menu/base_group.rb +26 -0
  140. data/lib/ab_admin/menu/builder.rb +16 -0
  141. data/lib/ab_admin/menu/group.rb +24 -0
  142. data/lib/ab_admin/menu/item.rb +23 -0
  143. data/lib/ab_admin/models/admin_comment.rb +68 -0
  144. data/lib/ab_admin/models/asset.rb +30 -19
  145. data/lib/ab_admin/models/attachment_file.rb +2 -1
  146. data/lib/ab_admin/models/header.rb +15 -0
  147. data/lib/ab_admin/models/locator.rb +1 -3
  148. data/lib/ab_admin/models/settings.rb +10 -10
  149. data/lib/ab_admin/models/structure.rb +20 -9
  150. data/lib/ab_admin/models/track.rb +61 -0
  151. data/lib/ab_admin/models/type_model.rb +30 -17
  152. data/lib/ab_admin/models/user.rb +18 -49
  153. data/lib/ab_admin/utils.rb +16 -7
  154. data/lib/ab_admin/utils/logger.rb +11 -7
  155. data/lib/ab_admin/utils/mysql.rb +10 -0
  156. data/lib/ab_admin/version.rb +1 -1
  157. data/lib/ab_admin/views/admin_helpers.rb +20 -9
  158. data/lib/ab_admin/views/admin_navigation_helpers.rb +44 -21
  159. data/lib/ab_admin/views/content_only_wrapper.rb +14 -0
  160. data/lib/ab_admin/views/form_builder.rb +27 -89
  161. data/lib/ab_admin/views/helpers.rb +1 -28
  162. data/lib/ab_admin/views/inputs/capture_block_input.rb +16 -0
  163. data/lib/ab_admin/views/inputs/date_time_picker_input.rb +45 -0
  164. data/lib/ab_admin/views/inputs/token_input.rb +2 -1
  165. data/lib/ab_admin/views/inputs/uploader_input.rb +101 -0
  166. data/lib/ab_admin/views/manager_helpers.rb +12 -0
  167. data/lib/ab_admin/views/search_form_builder.rb +36 -13
  168. data/lib/generators/ab_admin/ckeditor_assets/ckeditor_assets_generator.rb +1 -1
  169. data/lib/generators/ab_admin/install/install_generator.rb +3 -2
  170. data/lib/generators/ab_admin/install/templates/config/ab_admin.rb.erb +1 -1
  171. data/lib/generators/ab_admin/install/templates/config/admin_menu.rb +1 -1
  172. data/lib/generators/ab_admin/install/templates/config/i18n-js.yml +1 -1
  173. data/lib/generators/ab_admin/install/templates/config/nginx.conf +22 -9
  174. data/lib/generators/ab_admin/install/templates/config/robots.txt +7 -0
  175. data/lib/generators/ab_admin/install/templates/config/seeds.rb +2 -1
  176. data/lib/generators/ab_admin/install/templates/models/ability.rb +2 -7
  177. data/lib/generators/ab_admin/install/templates/models/admin_comment.rb +3 -28
  178. data/lib/generators/ab_admin/install/templates/models/asset.rb +4 -2
  179. data/lib/generators/ab_admin/install/templates/models/attachment_file.rb +1 -1
  180. data/lib/generators/ab_admin/install/templates/models/avatar.rb +2 -2
  181. data/lib/generators/ab_admin/install/templates/models/gender_type.rb +1 -1
  182. data/lib/generators/ab_admin/install/templates/models/header.rb +2 -2
  183. data/lib/generators/ab_admin/install/templates/models/locator.rb +0 -1
  184. data/lib/generators/ab_admin/install/templates/models/picture.rb +1 -1
  185. data/lib/generators/ab_admin/install/templates/models/settings.rb +1 -1
  186. data/lib/generators/ab_admin/install/templates/models/structure.rb +6 -8
  187. data/lib/generators/ab_admin/install/templates/models/track.rb +5 -0
  188. data/lib/generators/ab_admin/install/templates/models/user.rb +2 -3
  189. data/lib/generators/ab_admin/install/templates/script/unicorn.sh +0 -2
  190. data/lib/generators/ab_admin/install/templates/spec/factories/user_factory.rb +1 -2
  191. data/lib/generators/ab_admin/install/templates/uploaders/attachment_file_uploader.rb +1 -1
  192. data/lib/generators/ab_admin/install/templates/uploaders/avatar_uploader.rb +1 -1
  193. data/lib/generators/ab_admin/install/templates/uploaders/picture_uploader.rb +1 -1
  194. data/lib/generators/ab_admin/model/templates/resource.erb +1 -1
  195. data/lib/generators/ab_admin/resource/templates/_form.slim.erb +49 -45
  196. data/lib/generators/ab_admin/resource/templates/_table.slim.erb +1 -1
  197. data/lib/generators/template.rb +32 -56
  198. data/lib/tasks/assets.rake +1 -0
  199. metadata +197 -698
  200. data/.gitignore +0 -41
  201. data/Gemfile +0 -77
  202. data/Guardfile +0 -35
  203. data/TODO +0 -4
  204. data/ab_admin.gemspec +0 -59
  205. data/app/views/admin/fileupload/_asset.html.slim +0 -8
  206. data/app/views/admin/fileupload/_ftmpl.html.slim +0 -6
  207. data/app/views/admin/fileupload/_tmpl.html.slim +0 -9
  208. data/app/views/admin/fileupload/_vtmpl.html.slim +0 -10
  209. data/app/views/admin/shared/_batch_actions.html.slim +0 -27
  210. data/cucumber.yml +0 -10
  211. data/features/dsl/action_items.feature +0 -79
  212. data/features/dsl/admin_comments.feature +0 -30
  213. data/features/dsl/batch_actions.feature +0 -69
  214. data/features/dsl/config.feature +0 -44
  215. data/features/dsl/custom_actions.feature +0 -62
  216. data/features/dsl/export.feature +0 -42
  217. data/features/dsl/form.feature +0 -77
  218. data/features/dsl/in_place_edit.feature +0 -26
  219. data/features/dsl/list_edit.feature +0 -46
  220. data/features/dsl/parent_resource.feature +0 -18
  221. data/features/dsl/resource_action_items.feature +0 -40
  222. data/features/dsl/search.feature +0 -41
  223. data/features/dsl/show.feature +0 -37
  224. data/features/dsl/table.feature +0 -71
  225. data/features/dsl/tree.feature +0 -37
  226. data/features/index_views/table.feature +0 -20
  227. data/features/locators.feature +0 -40
  228. data/features/menu.feature +0 -35
  229. data/features/settings.feature +0 -36
  230. data/features/step_definitions/configuration_steps.rb +0 -94
  231. data/features/step_definitions/dsl/action_items_steps.rb +0 -13
  232. data/features/step_definitions/dsl/admin_comments_steps.rb +0 -12
  233. data/features/step_definitions/dsl/batch_actions_steps.rb +0 -27
  234. data/features/step_definitions/dsl/in_place_edit_steps.rb +0 -7
  235. data/features/step_definitions/dsl/parent_resource_steps.rb +0 -8
  236. data/features/step_definitions/dsl/resource_action_items_steps.rb +0 -14
  237. data/features/step_definitions/dsl/show_steps.rb +0 -8
  238. data/features/step_definitions/dsl/table_steps.rb +0 -38
  239. data/features/step_definitions/dsl/tree_steps.rb +0 -28
  240. data/features/step_definitions/menu_steps.rb +0 -20
  241. data/features/step_definitions/settings_steps.rb +0 -7
  242. data/features/step_definitions/structure_steps.rb +0 -7
  243. data/features/step_definitions/table_steps.rb +0 -23
  244. data/features/step_definitions/user_steps.rb +0 -72
  245. data/features/step_definitions/web_steps/browsing_steps.rb +0 -108
  246. data/features/step_definitions/web_steps/debug_steps.rb +0 -6
  247. data/features/step_definitions/web_steps/form_steps.rb +0 -190
  248. data/features/step_definitions/web_steps/i18n_steps.rb +0 -8
  249. data/features/step_definitions/web_steps/step_scoper.rb +0 -9
  250. data/features/step_definitions/web_steps/transforms_steps.rb +0 -3
  251. data/features/structure/tree.feature +0 -21
  252. data/features/support/capybara_helpers.rb +0 -15
  253. data/features/support/carrierwave.rb +0 -21
  254. data/features/support/env.rb +0 -40
  255. data/features/support/paths.rb +0 -55
  256. data/features/support/selector_helpers.rb +0 -9
  257. data/features/support/selectors.rb +0 -43
  258. data/features/support/tolerance_for_selenium_sync_issues.rb +0 -27
  259. data/features/user/sign_in.feature +0 -27
  260. data/features/user/sign_out.feature +0 -11
  261. data/features/user/user_edit.feature +0 -19
  262. data/features/user/user_show.feature +0 -9
  263. data/lib/ab_admin/hooks/quiet_scope_page.rb +0 -16
  264. data/lib/ab_admin/hooks/simple_form_hooks.rb +0 -31
  265. data/lib/ab_admin/menu_builder.rb +0 -89
  266. data/lib/ab_admin/views/inputs/date_time_input.rb +0 -65
  267. data/lib/generators/ab_admin/install/templates/models/user_state.rb +0 -6
  268. data/lib/generators/ab_admin/resource/templates/_form.haml.erb +0 -71
  269. data/lib/generators/ab_admin/resource/templates/_search_form.haml.erb +0 -35
  270. data/lib/generators/ab_admin/resource/templates/_table.haml.erb +0 -33
  271. data/spec/ab_admin_spec.rb +0 -23
  272. data/spec/dummy/Rakefile +0 -7
  273. data/spec/dummy/app/assets/images/rails.png +0 -0
  274. data/spec/dummy/app/assets/javascripts/application.js +0 -15
  275. data/spec/dummy/app/assets/stylesheets/application.css +0 -13
  276. data/spec/dummy/app/controllers/application_controller.rb +0 -3
  277. data/spec/dummy/app/controllers/products_controller.rb +0 -5
  278. data/spec/dummy/app/controllers/welcome_controller.rb +0 -5
  279. data/spec/dummy/app/mailers/.gitkeep +0 -0
  280. data/spec/dummy/app/models/ab_admin/ab_admin_catalogue.rb +0 -5
  281. data/spec/dummy/app/models/ab_admin/ab_admin_collection.rb +0 -35
  282. data/spec/dummy/app/models/ab_admin/ab_admin_product.rb +0 -74
  283. data/spec/dummy/app/models/admin_menu.rb +0 -18
  284. data/spec/dummy/app/models/catalogue.rb +0 -10
  285. data/spec/dummy/app/models/ckeditor/asset.rb +0 -7
  286. data/spec/dummy/app/models/ckeditor/attachment_file.rb +0 -7
  287. data/spec/dummy/app/models/ckeditor/picture.rb +0 -7
  288. data/spec/dummy/app/models/collection.rb +0 -20
  289. data/spec/dummy/app/models/product.rb +0 -32
  290. data/spec/dummy/app/uploaders/ckeditor_attachment_file_uploader.rb +0 -42
  291. data/spec/dummy/app/uploaders/ckeditor_picture_uploader.rb +0 -53
  292. data/spec/dummy/app/views/admin/collections/_form.html.slim +0 -24
  293. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  294. data/spec/dummy/app/views/products/show.html.erb +0 -2
  295. data/spec/dummy/app/views/welcome/index.html.erb +0 -2
  296. data/spec/dummy/config.ru +0 -4
  297. data/spec/dummy/config/application.rb +0 -82
  298. data/spec/dummy/config/boot.rb +0 -10
  299. data/spec/dummy/config/database.yml +0 -26
  300. data/spec/dummy/config/environment.rb +0 -5
  301. data/spec/dummy/config/environments/development.rb +0 -37
  302. data/spec/dummy/config/environments/production.rb +0 -67
  303. data/spec/dummy/config/environments/test.rb +0 -37
  304. data/spec/dummy/config/i18n-js.yml +0 -21
  305. data/spec/dummy/config/initializers/ab_admin.rb +0 -15
  306. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  307. data/spec/dummy/config/initializers/ckeditor.rb +0 -18
  308. data/spec/dummy/config/initializers/devise.rb +0 -232
  309. data/spec/dummy/config/initializers/inflections.rb +0 -15
  310. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  311. data/spec/dummy/config/initializers/secret_token.rb +0 -7
  312. data/spec/dummy/config/initializers/session_store.rb +0 -8
  313. data/spec/dummy/config/initializers/simple_form.rb +0 -142
  314. data/spec/dummy/config/initializers/simple_form_bootstrap.rb +0 -45
  315. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  316. data/spec/dummy/config/locales/devise.en.yml +0 -60
  317. data/spec/dummy/config/locales/en.yml +0 -5
  318. data/spec/dummy/config/locales/simple_form.en.yml +0 -26
  319. data/spec/dummy/config/routes.rb +0 -14
  320. data/spec/dummy/config/settings/development.local.yml +0 -9
  321. data/spec/dummy/config/settings/development.yml +0 -7
  322. data/spec/dummy/db/migrate/20130129151853_create_ckeditor_assets.rb +0 -26
  323. data/spec/dummy/db/migrate/20130130161853_create_collections.rb +0 -10
  324. data/spec/dummy/db/migrate/20130130162046_create_products.rb +0 -13
  325. data/spec/dummy/db/migrate/20130130175446_create_globalize_collection_product.rb +0 -11
  326. data/spec/dummy/db/migrate/20130207224516_create_catalogues.rb +0 -16
  327. data/spec/dummy/db/migrate/20130209223506_add_lat_lon_zoom_to_products.rb +0 -7
  328. data/spec/dummy/db/seeds.rb +0 -46
  329. data/spec/dummy/lib/assets/.gitkeep +0 -0
  330. data/spec/dummy/lib/capybara_irb.rb +0 -42
  331. data/spec/dummy/lib/tasks/.gitkeep +0 -0
  332. data/spec/dummy/lib/tasks/cucumber.rake +0 -65
  333. data/spec/dummy/lib/templates/slim/scaffold/_form.html.slim +0 -10
  334. data/spec/dummy/log/.gitkeep +0 -0
  335. data/spec/dummy/public/404.html +0 -26
  336. data/spec/dummy/public/422.html +0 -26
  337. data/spec/dummy/public/500.html +0 -25
  338. data/spec/dummy/public/favicon.ico +0 -0
  339. data/spec/dummy/script/cucumber +0 -10
  340. data/spec/dummy/script/rails +0 -6
  341. data/spec/factories/assets.rb +0 -52
  342. data/spec/factories/catalogues.rb +0 -7
  343. data/spec/factories/collections.rb +0 -8
  344. data/spec/factories/files/rails.png +0 -0
  345. data/spec/factories/products.rb +0 -17
  346. data/spec/factories/sequences.rb +0 -7
  347. data/spec/factories/structures.rb +0 -17
  348. data/spec/factories/users.rb +0 -30
  349. data/spec/generators/ckeditor_assets_generator_spec.rb +0 -19
  350. data/spec/generators/install_generator_spec.rb +0 -48
  351. data/spec/generators/model_generator_spec.rb +0 -31
  352. data/spec/generators/resource_generator_spec.rb +0 -36
  353. data/spec/models/ab_admin/abstract_resource_spec.rb +0 -5
  354. data/spec/models/avatar_spec.rb +0 -162
  355. data/spec/models/picture_uploader_spec.rb +0 -49
  356. data/spec/models/structure_spec.rb +0 -69
  357. data/spec/models/user_spec.rb +0 -159
  358. data/spec/shared_behaviors/concerns.rb +0 -20
  359. data/spec/spec_helper.rb +0 -96
  360. data/spec/support/controller_macros.rb +0 -52
  361. data/spec/support/custom_capybara_matchers.rb +0 -58
  362. data/spec/support/mailer_macros.rb +0 -17
  363. data/spec/support/shared_connection.rb +0 -11
  364. data/vendor/assets/images/ab_admin/clear.png +0 -0
  365. data/vendor/assets/images/ab_admin/loading.gif +0 -0
  366. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/core.js +0 -899
  367. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/index.js +0 -2
  368. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.bg.js +0 -14
  369. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.br.js +0 -13
  370. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.cs.js +0 -14
  371. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.da.js +0 -14
  372. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.de.js +0 -14
  373. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.es.js +0 -14
  374. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.fi.js +0 -14
  375. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.fr.js +0 -14
  376. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.id.js +0 -13
  377. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.is.js +0 -14
  378. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.it.js +0 -14
  379. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ja.js +0 -13
  380. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.kr.js +0 -13
  381. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.lt.js +0 -15
  382. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.lv.js +0 -16
  383. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ms.js +0 -14
  384. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.nb.js +0 -14
  385. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.nl.js +0 -14
  386. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.pl.js +0 -14
  387. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.js +0 -14
  388. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.pt.js +0 -14
  389. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ro.js +0 -15
  390. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.ru.js +0 -14
  391. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.sk.js +0 -14
  392. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.sl.js +0 -14
  393. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.sv.js +0 -14
  394. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.th.js +0 -14
  395. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.tr.js +0 -15
  396. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.js +0 -14
  397. data/vendor/assets/javascripts/ab_admin/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.js +0 -13
  398. data/vendor/assets/javascripts/ab_admin/bootstrap-editable-inline.js +0 -2895
  399. data/vendor/assets/javascripts/ab_admin/bootstrap-editable.js +0 -4523
  400. data/vendor/assets/javascripts/ab_admin/bootstrap-tab-multi.js +0 -135
  401. data/vendor/assets/javascripts/ab_admin/bootstrap-timepicker.js +0 -377
  402. data/vendor/assets/javascripts/ab_admin/fileupload/admin-fileuploader.js.coffee +0 -111
  403. data/vendor/assets/javascripts/ab_admin/fileupload/fileuploader.js +0 -1301
  404. data/vendor/assets/javascripts/ab_admin/jquery.Jcrop.js +0 -1083
  405. data/vendor/assets/javascripts/ab_admin/jquery_nested_form.js.coffee +0 -66
  406. data/vendor/assets/javascripts/bootstrap-wysihtml5/locales/ru.js +0 -48
  407. data/vendor/assets/javascripts/handlebars.min.js +0 -1
  408. data/vendor/assets/javascripts/jquery.cookie.js +0 -42
  409. data/vendor/assets/javascripts/jquery.hotkeys.js +0 -106
  410. data/vendor/assets/javascripts/jquery.pjax.js +0 -688
  411. data/vendor/assets/javascripts/jquery.tmpl.min.js +0 -10
  412. data/vendor/assets/javascripts/jquery.ui.nestedSortable.js +0 -356
  413. data/vendor/assets/javascripts/jquery/jquery-ui.min.js +0 -15
  414. data/vendor/assets/javascripts/jquery/jquery.min.js +0 -4
  415. data/vendor/assets/javascripts/underscore.min.js +0 -5
  416. data/vendor/assets/stylesheets/ab_admin/bootstrap-datepicker.css.scss +0 -274
  417. data/vendor/assets/stylesheets/ab_admin/bootstrap-editable.scss +0 -461
  418. data/vendor/assets/stylesheets/ab_admin/bootstrap-timepicker.css.scss +0 -88
  419. data/vendor/assets/stylesheets/ab_admin/jquery.Jcrop.min.css.scss +0 -28
@@ -46,7 +46,7 @@ class window.SortableTree
46
46
  $('.sortable_tree i.handle').show()
47
47
 
48
48
  error: (xhr, status, error) ->
49
- console.log error
49
+ log error
50
50
 
51
51
  $.fn.sortableTree = ->
52
52
  @each ->
@@ -1,21 +1,22 @@
1
1
  $ ->
2
2
  if $('#list')[0]
3
+ input_name = 'by_ids'
3
4
  $(document).on 'click', '#list input.toggle', ->
4
5
  checked = $(this).is(":checked")
5
- $("#list [name='ids[]']").attr "checked", checked
6
+ $("#list [name='#{input_name}[]']").attr "checked", checked
6
7
  $('#list tbody tr').toggleClass('active_row', checked)
7
8
 
8
9
  $(document).on 'click', '#list input.batch_check', ->
9
10
  $(this).closest('tr').toggleClass('active_row')
10
11
 
11
12
  submitBatch = (el) ->
12
- if $("#list [name='ids[]']:checked")[0]
13
+ if $("#list [name='#{input_name}[]']:checked")[0]
13
14
  $el = $(el)
14
- ids = $("#list [name='ids[]']:checked").map(-> $(this).val()).get()
15
+ ids = $("#list [name='#{input_name}[]']:checked").map(-> $(this).val()).get()
15
16
  action = $el.data('action')
16
17
  $('#batch_action').val(action)
17
18
  $form = $('#batch_action_form')
18
- $form.append("<input type='checkbox' name='ids[]' checked='1' value='#{id}' style='display:none;'/>") for id in ids
19
+ $form.append("<input type='checkbox' name='#{input_name}[]' checked='1' value='#{id}' style='display:none;'/>") for id in ids
19
20
  $form.submit()
20
21
 
21
22
  $(document).on 'click', '#list > tbody > tr', (e) ->
@@ -17,11 +17,11 @@ class window.ColumnsHider
17
17
  res = {}
18
18
  _.each @data, (v, k) ->
19
19
  res[k] = v.join('_')
20
- @storeData(res)
20
+ window.storeData(@store_key, res)
21
21
 
22
22
  getData: ->
23
23
  data = {}
24
- raw = $.parseJSON(@fetchData()) || {}
24
+ raw = $.parseJSON(window.fetchData(@store_key)) || {}
25
25
  _.each raw, (v, k) ->
26
26
  data[k] = []
27
27
  _.each v.split('_'), (el) ->
@@ -35,13 +35,6 @@ class window.ColumnsHider
35
35
  fetchData: ->
36
36
  window.localStorage?[@store_key] or $.cookie(@store_key)
37
37
 
38
- storeData: (data) ->
39
- str = JSON.stringify(data)
40
- if window.localStorage
41
- window.localStorage[@store_key] = str
42
- else
43
- $.cookie(@store_key, str, {path: '/'})
44
-
45
38
  initButtons: ->
46
39
  @data_el.empty()
47
40
  for col, i in @column_names
@@ -50,7 +43,7 @@ class window.ColumnsHider
50
43
  @data_el.append(html)
51
44
 
52
45
  columnNames: ->
53
- _.map $('#list th'), (el) ->
46
+ _.map $('#list > thead > tr > th'), (el) ->
54
47
  $el = $(el)
55
48
  {disabled: $el.hasClass('hide_cell'), name: $.trim($el.text().replace(/[▼▲]/g, ''))}
56
49
 
@@ -74,7 +67,7 @@ class window.ColumnsHider
74
67
  $("#list > thead > tr > th:nth-child(#{i}), #list > tbody > tr > td:nth-child(#{i})").hide()
75
68
 
76
69
  showAll: ->
77
- $("#list tr th, #list tr td").show()
70
+ $("#list > thead > tr > th, #list > tbody > tr > td").show()
78
71
 
79
72
  $ ->
80
73
  window.columns_hider = new ColumnsHider()
@@ -1,45 +1,6 @@
1
- # Override Rails handling of confirmation
2
-
3
1
  $.rails.allowAction = (element) ->
4
- # The message is something like "Are you sure?"
5
- message = element.data('confirm')
6
- # If there's no message, there's no data-confirm attribute,
7
- # which means there's nothing to confirm
2
+ message = element.data("confirm")
8
3
  return true unless message
9
- # Clone the clicked element (probably a delete link) so we can use it in the dialog box.
10
- $link = element.clone()
11
- # We don't necessarily want the same styling as the original link/button.
12
- .removeAttr('class')
13
- # We don't want to pop up another confirmation (recursion)
14
- .removeAttr('data-confirm')
15
- # We want a button
16
- .addClass('btn').addClass('btn-danger')
17
- # We want it to sound confirmy
18
- .html(I18n.t('admin_js.confirm'))
19
-
20
- # Create the modal box with the message
21
- modal_html = """
22
- <div class="modal" id="confirmation_dialog">
23
- <div class="modal-header">
24
- <a class="close" data-dismiss="modal">×</a>
25
- <h3>#{message}</h3>
26
- </div>
27
- <div class="modal-body">
28
- <p></p>
29
- </div>
30
- <div class="modal-footer">
31
- <a data-dismiss="modal" class="btn">#{I18n.t('admin_js.cancel')}</a>
32
- </div>
33
- </div>
34
- """
35
- $modal_html = $(modal_html)
36
- # Add the new button to the modal box
37
- $modal_html.find('.modal-footer').append($link)
38
- # Pop it up
39
- $modal_html.modal()
40
- $link.click (e) ->
41
- e.preventDefault()
42
- $(this).closest('.modal').modal('hide')
43
- element.trigger('ajax:complete').trigger('confirm:success')
44
- # Prevent the original link from working
45
- return false
4
+ bootbox.confirm message, (answer) ->
5
+ element.data('confirm', null).click() if answer
6
+ false
@@ -0,0 +1,44 @@
1
+ Array::last = ->
2
+ if @.length > 0
3
+ @[@.length - 1]
4
+
5
+ Array::first = ->
6
+ @[0]
7
+
8
+ Array::removeByIndex = (arrayIndex)->
9
+ @.splice(arrayIndex, 1)
10
+
11
+ Array::valDetect = (v, prop = 'id') ->
12
+ res = null
13
+ for el in @
14
+ if el[prop] is v
15
+ res = el
16
+ res
17
+
18
+ Array::includes = (obj) ->
19
+ for el, i in @
20
+ if el == obj
21
+ return i
22
+ return false
23
+
24
+ Array::remove = ->
25
+ what = undefined
26
+ a = arguments
27
+ L = a.length
28
+ ax = undefined
29
+ while L and @length
30
+ what = a[--L]
31
+ until (ax = @indexOf(what)) is -1
32
+ @splice ax, 1
33
+ break;
34
+ this
35
+
36
+ String::parseQuery = ->
37
+ h = {}
38
+ qs = $.trim(this).match(/([^?#]*)(#.*)?$/)[0]
39
+ return {} unless qs
40
+ pairs = qs.split("&")
41
+ $.each pairs, (i, v) ->
42
+ pair = v.split("=")
43
+ h[pair[0]] = pair[1]
44
+ h
@@ -9,13 +9,7 @@
9
9
  #= require ab_admin/core/view_layout
10
10
 
11
11
  $ ->
12
- if $('#list')[0]
13
- window.viewType = 'list'
14
- else if $('form.simple_form')[0]
15
- window.viewType = 'form'
16
-
17
12
  $(document).on 'admin:init', (e) ->
18
- return unless window.viewType == 'list'
19
13
  clonePagination()
20
14
 
21
15
  $(document).trigger('admin:list_init')
@@ -23,12 +17,11 @@ $ ->
23
17
  $('.per_page').click ->
24
18
  $.cookie('pp', $(this).data('val'))
25
19
 
26
- $('#list').on 'click', 'tr.list_edit .form_cancel', (e) ->
20
+ $('#list').on 'click', 'tr.list_edit .form_cancel', ->
27
21
  e.preventDefault()
28
22
  $(this).closest('tr').remove()
29
23
 
30
- $(document).on 'admin:init', (e) ->
31
- return unless window.viewType == 'form'
24
+ $(document).on 'admin:init', ->
32
25
  $form = $('form.simple_form')
33
26
  window.resource_id = $form.data('id')
34
27
  $form.trigger('admin:form_init')
@@ -37,11 +30,9 @@ $ ->
37
30
  initPopover()
38
31
  initTooltip()
39
32
 
40
- $(document).on 'admin:form_init', 'form', (e) ->
41
- # focusInput($(this))
33
+ $(document).on 'admin:form_init', 'form', ->
42
34
  initEditor()
43
35
  initFancySelect()
44
- inputSetToggle()
45
36
  initPickers()
46
37
 
47
38
  $(document).on 'pjax:end', ->
@@ -56,18 +47,10 @@ $ ->
56
47
  initFancySelect()
57
48
  initNestedFields()
58
49
  initNestedFields()
59
- # initAcFileds()
60
-
61
- if window.gon?.bg_color
62
- $('body').css('background-color', "##{window.gon.bg_color.replace(/^#/, '')}")
63
-
64
- initHotkeys() if window.gon?.hotkeys
50
+ inputSetToggle()
51
+ inputBtnClose()
65
52
 
53
+ if window.fv?.bg_color
54
+ $('body').css('background-color', "##{window.fv.bg_color.replace(/^#/, '')}")
66
55
 
67
- # $('form .region_ac').regionAc()
68
- # new NestedFieldsAdder
69
- # region_ac: true
70
- # callback: ->
71
- # initPickers()
72
- # initFancySelect()
73
- # initEditor()
56
+ initHotkeys() if window.fv?.hotkeys
@@ -1,18 +1,32 @@
1
+ window.toggleLoading = (is_loading=true) ->
2
+ $('#loading').toggle(is_loading)
3
+
1
4
  $ ->
2
5
  $(document).on 'click', '.pjax, .pagination a, .pjax_links a', (e) ->
3
6
  if e.which > 1 || e.metaKey || e.ctrlKey
4
7
  return
5
8
  else if $.support.pjax
6
9
  e.preventDefault()
10
+ container = $(this).data('pjax-container')
11
+ unless container
12
+ table = $(this).closest('table.index_table:not(#list)')
13
+ if table[0]
14
+ container = "##{table.attr('id')}"
15
+ else
16
+ container = '[data-pjax-container]'
17
+
18
+ main_pjax_wrap = container == '[data-pjax-container]'
7
19
  $.pjax
8
- container: $(this).data('pjax-container') || '[data-pjax-container]'
20
+ container: container
9
21
  url: $(this).data('href') || $(this).attr('href')
10
22
  timeout: 50000
23
+ push: main_pjax_wrap
24
+ scrollTo: main_pjax_wrap
11
25
  else if $(this).data('href')
12
26
  e.preventDefault()
13
27
  window.location = $(this).data('href')
14
28
 
15
- unless gon.test
29
+ unless fv.test
16
30
  $(document).on 'submit', '.pjax-form', (e) ->
17
31
  $el = $(this)
18
32
  if $.support.pjax
@@ -25,6 +39,6 @@ $ ->
25
39
 
26
40
  $(document)
27
41
  .on 'pjax:start', ->
28
- $('#loading').show()
42
+ toggleLoading(true)
29
43
  .on 'pjax:end', ->
30
- $('#loading').hide()
44
+ toggleLoading(false)
@@ -4,11 +4,11 @@ $ ->
4
4
  $el = $(this)
5
5
  $el.next('input').attr('name', "q[#{$el.val()}]")
6
6
 
7
- $("#search_form").submit ->
8
- $("#search_form [name$='_at_gteq]']").val (i, v) ->
9
- v + " 00:00" if v
10
- $("#search_form [name$='_at_lteq]']").val (i, v) ->
11
- v + " 23:59" if v
7
+ # $("#search_form").submit ->
8
+ # $("#search_form [name$='_at_gteq]']").val (i, v) ->
9
+ # v + " 00:00" if v
10
+ # $("#search_form [name$='_at_lteq]']").val (i, v) ->
11
+ # v + " 23:59" if v
12
12
 
13
13
  $('#search_cancel').click (e) ->
14
14
  e.preventDefault()
@@ -1,5 +1,11 @@
1
+ #= require ab_admin/components/select2_bridge
2
+
1
3
  window.clonePagination = ->
2
- $('.pagination:first').clone().appendTo($('.batch_actions'))
4
+ $pagination = $('.pagination-wrap:not(".pagination-cloned"):first')
5
+ if $pagination[0]
6
+ $wrap = $('.content_actions')
7
+ $wrap.find('.pagination-wrap').remove()
8
+ $pagination.clone().addClass('pagination-cloned').appendTo($wrap)
3
9
 
4
10
  window.initPopover = ->
5
11
  $('.popover').hide()
@@ -22,7 +28,7 @@ window.initTooltip = ->
22
28
  placement: 'right'
23
29
 
24
30
  window.initEditor = ->
25
- return if gon.test
31
+ return if fv.test
26
32
  $('form .do_wysihtml5').each ->
27
33
  $el = $(this)
28
34
  return if $el.hasClass('wysihtml5_done')
@@ -36,9 +42,14 @@ window.initEditor = ->
36
42
  $el.addClass('wysihtml5_done')
37
43
 
38
44
  window.inputSetToggle = ->
39
- $('.label.do_toggle').click ->
45
+ $(document).on 'click', '.label.do_toggle', ->
40
46
  $(this).siblings().toggle()
41
47
 
48
+ window.inputBtnClose = ->
49
+ $(document).on 'click', '.btn-close', (e) ->
50
+ e.preventDefault()
51
+ $(this).closest('.close-wrap').remove()
52
+
42
53
  window.flash = (message, type='notice') ->
43
54
  $("<div class='alert alert-#{type}'><a class='close' data-dismiss='alert'>×</a>#{message}</div>").insertBefore $('#container')
44
55
 
@@ -51,89 +62,7 @@ window.fetchTemplate = (tmpl_id) ->
51
62
  window.templateStorage[tmpl_id] ||= Handlebars.compile($(tmpl_id).html())
52
63
 
53
64
  window.initFancySelect = ->
54
- return if gon.test
55
- defaults =
56
- formatNoMatches: ->
57
- I18n.t('admin_js.no_results')
58
- placeholder: ' '
59
- allowClear: true
60
- minimumResultsForSearch: 10
61
-
62
65
  $('form .fancy_select, form input.token, .without_form.fancy_select').each ->
63
66
  $el = $(this)
64
67
  return if $el.data('select2')
65
- $el.prop('required', null)
66
- options = _.defaults({}, defaults)
67
- options.multiple = $el.data('multi') unless _.isUndefined($el.data('multi'))
68
- options.width = $el[0].style.width || 'resolve'
69
- options.escapeMarkup = (m) -> m
70
-
71
- if $el.data('tags')
72
- options.tokenSeparators = [","]
73
- options.tags = $el.data('tags')
74
- else if $el.data('class')
75
- if $el.data('image')
76
- options.formatResult = (item) ->
77
- html = '<div class="fancy_select-result">'
78
- html += "<img src='#{item.image}' alt='#{item.text}'>" if item.image
79
- html += "<span>#{item.text}</span></div>"
80
- options.formatSelection = (item) ->
81
- html = '<div class="fancy_select-selection">'
82
- html += "<img src='#{item.image}' alt='#{item.text}'>" if item.image
83
- html += "<span>#{item.text}</span></div>"
84
- if $el.data('result')
85
- options.formatResult = (item) -> fetchTemplate($el.data('result'))(item)
86
- if $el.data('selection')
87
- options.formatSelection = (item) -> fetchTemplate($el.data('selection'))(item)
88
-
89
- options.initSelection = (el, callback) ->
90
- data = $el.data('pre')
91
- if $el.data('multi')
92
- data = $el.data('pre')
93
- else
94
- data = $el.data('pre')[0]
95
- callback(data)
96
- options.ajax =
97
- url: "/admin/autocomplete",
98
- data: (term, page) ->
99
- cond = {}
100
- if $el.data('c')
101
- for kind in ['with', 'without']
102
- if $el.data('c')[kind]
103
- cond[kind] ||= {}
104
- for attr, id of $el.data('c')[kind]
105
- value = $('#' + id).val()
106
- cond[kind][attr] = value if value
107
-
108
- for kind in ['with_term', 'without_term']
109
- if $el.data('c')[kind]
110
- kind_key = kind.replace(/_term$/, '')
111
- cond[kind_key] ||= {}
112
- for attr, value of $el.data('c')[kind]
113
- cond[kind_key][attr] = value if value
114
-
115
- for kind in ['with_selector', 'without_selector']
116
- if $el.data('c')[kind]
117
- kind_key = kind.replace(/_selector$/, '')
118
- cond[kind_key] ||= {}
119
- for attr, value of $el.data('c')[kind]
120
- selectors = value.split(/\s+/)
121
- value = $el.closest(selectors[1] || 'html').find(selectors[0]).val()
122
- cond[kind_key][attr] = value if value
123
-
124
- log cond
125
-
126
- data = {q: term, class: $el.data('class'), token: true, page: page}
127
- _.extend(data, cond)
128
-
129
- results: (data, page) ->
130
- results: data, more: data.length > 0
131
-
132
- $el.select2(options)
133
-
134
- # $('#district_location_id').select2("data", {id: 123, text: '123'})
135
- # $el.change (data) ->
136
- # log data.val
137
- # createSearchChoice: (term) ->
138
- # log term
139
- # {id: 3, text: '123'}
68
+ $el.data('Select2Bridge') or $el.data('Select2Bridge', new Select2Bridge($el))
@@ -1,8 +1,8 @@
1
- window.gon ||= {}
2
- I18n.locale = window.gon.locale || 'ru'
1
+ window.fv ||= {}
2
+ window.I18n ||= {}
3
+ I18n.locale = window.fv.locale || 'ru'
3
4
  window.locale_path = if I18n.locale == 'ru' then '' else "/#{I18n.locale}"
4
5
 
5
- # undescore
6
6
  _.sum = (obj) ->
7
7
  return 0 if not $.isArray(obj) or obj.length is 0
8
8
  _.reduce obj, (sum, n) ->
@@ -36,7 +36,24 @@ _.inGroupsOf = (array, number, fill_with=null) ->
36
36
  res.last().push fill_with
37
37
  res
38
38
 
39
- # jquery
39
+ _.indexBy = (obj, value, context) ->
40
+ res = _.groupBy(obj, value, context)
41
+ for k, v of res
42
+ res[k] = v[0]
43
+ res
44
+
45
+ _.timeout = (timeout, fn) ->
46
+ setTimeout(fn, timeout)
47
+
48
+ _.interval = (timeout, fn) ->
49
+ setInterval(fn, timeout)
50
+
51
+ # execute function periodically while it return false
52
+ _.tryInterval = (timeout, fn) ->
53
+ proxy_fn = ->
54
+ clearInterval(try_interval_id) if fn.call()
55
+ try_interval_id = setInterval(proxy_fn, timeout)
56
+
40
57
  $.fn.serializeJSON = ->
41
58
  json = {}
42
59
  jQuery.map $(this).serializeArray(), (n) ->
@@ -44,6 +61,12 @@ $.fn.serializeJSON = ->
44
61
 
45
62
  json
46
63
 
64
+ $.fn.or = (fallbackSelector) ->
65
+ if @length
66
+ this
67
+ else
68
+ $(fallbackSelector || 'body')
69
+
47
70
  $.fn.unescape = ->
48
71
  $(this).html $.unescape($(this).html())
49
72
 
@@ -70,7 +93,8 @@ $.fn.loadSelect = (optionsDataArray) ->
70
93
 
71
94
  $.fn.scrollToEl = (speed='slow') ->
72
95
  return unless $(this)[0]
73
- $('html, body').animate({scrollTop: $(this).offset().top}, speed)
96
+ top = $(this).offset().top - to_i($('.navbar-fixed-top').height()) - 2 * to_i($('#list > thead').height())
97
+ $('html, body').stop(true, true).animate({scrollTop: top}, speed)
74
98
 
75
99
  $.fn.toHref = ->
76
100
  $el = $(this)
@@ -79,13 +103,16 @@ $.fn.toHref = ->
79
103
  else
80
104
  $el.click()
81
105
 
106
+ $.fn.toggleClassRadio = (class_name = 'active', state = undefined) ->
107
+ @each ->
108
+ $(this).toggleClass(class_name, state).siblings().removeClass(class_name)
109
+
82
110
  $.parseQuery = ->
83
- window.location.search.replace("?", "").parseQuery()
111
+ $.parseQueryParams window.location.search.replace("?", "")
84
112
 
85
- # core types
86
- String::parseQuery = ->
113
+ $.parseQueryParams = (string) ->
87
114
  h = {}
88
- qs = $.trim(this).match(/([^?#]*)(#.*)?$/)[0]
115
+ qs = $.trim(string).match(/([^?#]*)(#.*)?$/)[0]
89
116
  return {} unless qs
90
117
  pairs = qs.split("&")
91
118
  $.each pairs, (i, v) ->
@@ -93,45 +120,6 @@ String::parseQuery = ->
93
120
  h[pair[0]] = pair[1]
94
121
  h
95
122
 
96
- Array::last = ->
97
- if @.length > 0
98
- @[@.length - 1]
99
-
100
- Array::first = ->
101
- @[0]
102
-
103
- Array::removeByIndex = (arrayIndex)->
104
- @.splice(arrayIndex, 1)
105
-
106
- Array::valDetect = (v, prop = 'id') ->
107
- res = null
108
- for el in @
109
- if el[prop] is v
110
- res = el
111
- res
112
-
113
- Array::includes = (obj) ->
114
- for el, i in @
115
- if el == obj
116
- return i
117
- return false
118
-
119
- Array::remove = ->
120
- what = undefined
121
- a = arguments
122
- L = a.length
123
- ax = undefined
124
- while L and @length
125
- what = a[--L]
126
- until (ax = @indexOf(what)) is -1
127
- @splice ax, 1
128
- break;
129
- this
130
-
131
- # global
132
- window.replaceURLWithHTMLLinks = (text) ->
133
- exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig
134
- text.replace(exp, "<a href='$1' target='_blank'>$1</a>")
135
123
 
136
124
  window.to_i = (val) ->
137
125
  unless val
@@ -151,8 +139,8 @@ window.to_fixed = (val, prec = 2) ->
151
139
 
152
140
  window.log = (objects...) ->
153
141
  window.logging = true
154
- unless window.gon?.no_log
155
- console.log '== debug ==='
142
+ unless window.fv?.no_log
143
+ # console.log '== debug ==='
156
144
  objects = objects[0] if objects.length == 1
157
145
  console.log objects
158
146
  window.logging = false
@@ -168,7 +156,6 @@ window.clone_obj = (obj) ->
168
156
 
169
157
  return newInstance
170
158
 
171
-
172
159
  window.storeData = (key, data) ->
173
160
  if _.isObject(data)
174
161
  str = JSON.stringify(data)