kirgudu_base 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/kirgudu_base/dynamicEvents.js +2 -1
  3. data/app/assets/javascripts/kirgudu_base/jquery.container-management.js +241 -0
  4. data/app/assets/javascripts/kirgudu_base/jquery.fancybox copia.js +2020 -0
  5. data/app/assets/javascripts/kirgudu_base/scripts_nrg.js +300 -383
  6. data/app/controllers/kirgudu_base/admin_controller.rb +1 -44
  7. data/app/controllers/kirgudu_base/application_controller.rb +135 -92
  8. data/app/controllers/kirgudu_base/cabinet_controller.rb +35 -35
  9. data/app/controllers/kirgudu_base/security/authentications_controller.rb +452 -0
  10. data/app/controllers/kirgudu_base/security/email_confirmations_controller.rb +46 -0
  11. data/app/helpers/kirgudu_base/application_helper.rb +25 -0
  12. data/app/helpers/kirgudu_base/authentication_form_builder.rb +76 -0
  13. data/app/helpers/kirgudu_base/controllers/{basic_actions_with_parent.rb → OLD_basic_actions.rb} +39 -54
  14. data/app/helpers/kirgudu_base/controllers/basic_actions.rb +967 -161
  15. data/app/helpers/kirgudu_base/controllers/container_items_management_actions.rb +118 -40
  16. data/app/helpers/kirgudu_base/controllers/container_items_sorting_actions.rb +2 -2
  17. data/app/helpers/kirgudu_base/controllers/dynamic_pages.rb +147 -11
  18. data/app/helpers/kirgudu_base/form_builder.rb +3 -1
  19. data/app/helpers/kirgudu_base/gui_helper.rb +10 -5
  20. data/app/helpers/kirgudu_base/models/exports.rb +122 -122
  21. data/app/helpers/kirgudu_base/models/scopes.rb +5 -0
  22. data/app/mailers/authentications_mailer.rb +53 -0
  23. data/app/models/kirgudu_base/base_model.rb +47 -14
  24. data/app/models/kirgudu_base/dynamic_pages/builder.rb +0 -8
  25. data/app/models/kirgudu_base/dynamic_pages/controller_link.rb +4 -1
  26. data/app/models/kirgudu_base/dynamic_pages/controller_link_builder.rb +2 -1
  27. data/app/models/kirgudu_base/dynamic_pages/controller_link_id.rb +6 -6
  28. data/app/models/kirgudu_base/dynamic_pages/controller_link_id_builder.rb +6 -6
  29. data/app/models/kirgudu_base/dynamic_pages/element.rb +4 -5
  30. data/app/models/kirgudu_base/dynamic_pages/entry_builder.rb +2 -2
  31. data/app/models/kirgudu_base/dynamic_pages/event_if_block_builder.rb +1 -1
  32. data/app/models/kirgudu_base/dynamic_pages/form_builder.rb +2 -2
  33. data/app/models/kirgudu_base/dynamic_pages/list.rb +2 -0
  34. data/app/models/kirgudu_base/dynamic_pages/list_builder.rb +7 -3
  35. data/app/models/kirgudu_base/dynamic_pages/management_settings.rb +30 -0
  36. data/app/models/kirgudu_base/dynamic_pages/management_settings_builder.rb +47 -0
  37. data/app/models/kirgudu_base/dynamic_pages/menu.rb +9 -5
  38. data/app/models/kirgudu_base/dynamic_pages/menu_builder.rb +8 -5
  39. data/app/models/kirgudu_base/dynamic_pages/menu_item.rb +22 -6
  40. data/app/models/kirgudu_base/dynamic_pages/menu_items_block_builder.rb +9 -4
  41. data/app/models/kirgudu_base/dynamic_pages/menu_section.rb +38 -0
  42. data/app/models/kirgudu_base/dynamic_pages/menu_section_builder.rb +36 -0
  43. data/app/models/kirgudu_base/dynamic_pages/page.rb +6 -2
  44. data/app/models/kirgudu_base/dynamic_pages/page_builder.rb +18 -0
  45. data/app/models/kirgudu_base/dynamic_pages/relation.rb +23 -0
  46. data/app/models/kirgudu_base/dynamic_pages/relation_builder.rb +35 -0
  47. data/app/models/kirgudu_base/dynamic_pages/sorting_settings.rb +31 -0
  48. data/app/models/kirgudu_base/dynamic_pages/sorting_settings_builder.rb +48 -0
  49. data/app/models/kirgudu_base/security/autheintication.rb +4 -0
  50. data/app/models/kirgudu_base/security/authentication.rb +6 -7
  51. data/app/models/kirgudu_base/security/email_confirmation.rb +7 -0
  52. data/app/models/kirgudu_base/security/restore_password_code.rb +5 -0
  53. data/app/models/kirgudu_base/security/user.rb +2 -0
  54. data/app/models/kirgudu_base/security.rb +6 -7
  55. data/app/models/kirgudu_base/settings/group.rb +22 -0
  56. data/app/models/kirgudu_base/settings/option.rb +44 -0
  57. data/app/models/kirgudu_base/settings/settings_manager.rb +69 -0
  58. data/app/models/kirgudu_base/settings/value.rb +36 -0
  59. data/app/views/admin_templates/default/admin/layouts/application.html.erb +6 -4
  60. data/app/views/admin_templates/default/admin/system/settings/groups/edit.html.erb +9 -9
  61. data/app/views/admin_templates/default/admin/system/settings/groups/new.html.erb +1 -1
  62. data/app/views/admin_templates/default/admin/system/settings/options/edit.html.erb +1 -1
  63. data/app/views/admin_templates/default/admin/system/settings/options/new.html.erb +1 -1
  64. data/app/views/admin_templates/default/admin/system/settings/values/edit.html.erb +1 -1
  65. data/app/views/admin_templates/default/admin/system/settings/values/new.html.erb +1 -1
  66. data/app/views/admin_templates/erp/admin/shared/_top_nav_bar.html.erb +1 -3
  67. data/app/views/admin_templates/erp/admin/shared/entry_edit_form_renderer.html.erb +1 -1
  68. data/app/views/admin_templates/erp/admin/shared/entry_new_form_renderer.html.erb +1 -1
  69. data/app/views/admin_templates/good/admin/layouts/OLD_application.html.erb +14 -14
  70. data/app/views/admin_templates/good/admin/layouts/application.html.erb +11 -113
  71. data/app/views/admin_templates/good/admin/shared/_left_menu.html.erb +74 -63
  72. data/app/views/admin_templates/good/{zapanel/files/New Adobe Photoshop Image 12.psd → admin/shared/_left_menu_item.html.erb} +0 -0
  73. data/app/views/admin_templates/good/admin/shared/_left_menu_section.html.erb +21 -0
  74. data/app/views/admin_templates/good/admin/shared/render_new_OLD.html.erb +90 -0
  75. data/app/views/admin_templates/good/admin/shared/renderer_edit.html.erb +44 -13
  76. data/app/views/admin_templates/good/admin/shared/renderer_edit_OLD.html.erb +106 -0
  77. data/app/views/admin_templates/good/admin/shared/renderer_entries_list.html.erb +39 -18
  78. data/app/views/admin_templates/good/admin/shared/renderer_entries_list_with_parent.html.erb +4 -4
  79. data/app/views/admin_templates/good/admin/shared/renderer_management.html.erb +164 -0
  80. data/app/views/admin_templates/good/admin/shared/renderer_new.html.erb +40 -10
  81. data/app/views/admin_templates/good/admin/shared/renderer_show.html.erb +170 -58
  82. data/app/views/admin_templates/good/admin/shared/renderer_show_OLD.html.erb +159 -0
  83. data/app/views/admin_templates/good/admin/shared/renderer_sorting.html.erb +30 -0
  84. data/app/views/admin_templates/good/kirgudu_base/authentications/login.html.erb +13 -13
  85. data/app/views/admin_templates/good/kirgudu_base/authentications/register.html.erb +1 -1
  86. data/app/views/admin_templates/good/kirgudu_base/old/login_page.html.erb +7 -7
  87. data/app/views/admin_templates/good_flexy/admin/layouts/application.html.erb +17 -16
  88. data/app/views/admin_templates/good_flexy/admin/shared/_left_menu.html.erb +7 -0
  89. data/app/views/admin_templates/good_flexy/admin/shared/renderer_entries_list.html.erb +25 -17
  90. data/app/views/admin_templates/good_flexy/admin/shared/renderer_form_edit.html.erb +34 -13
  91. data/app/views/admin_templates/good_flexy/admin/shared/renderer_form_new.html.erb +31 -10
  92. data/app/views/admin_templates/good_flexy/admin/shared/renderer_show.html.erb +67 -52
  93. data/config/locales/kirgudu_base.ru.yml +92 -0
  94. data/config/routes.rb +16 -16
  95. data/db/migrate/20140413134252_create_kirgudu_base_security_authentications.rb +15 -0
  96. data/db/migrate/20140413152144_create_kirgudu_base_security_email_confirmations.rb +17 -0
  97. data/db/migrate/20140413201121_add_confirmations_kirgudu_base_security_users.rb +14 -0
  98. data/db/migrate/20140415093106_create_kirgudu_base_security_restore_password_codes.rb +20 -0
  99. data/lib/kirgudu_base.rb +2 -2
  100. data/test/fixtures/kirgudu_base/kirgudu_base/security/autheintications.yml +11 -0
  101. data/test/fixtures/kirgudu_base/security/applications.yml +21 -0
  102. data/test/fixtures/kirgudu_base/security/autheintications.yml +11 -0
  103. data/test/fixtures/kirgudu_base/security/authentications.yml +11 -0
  104. data/test/fixtures/kirgudu_base/security/email_confirmations.yml +13 -0
  105. data/test/fixtures/kirgudu_base/security/restore_password_codes.yml +13 -0
  106. data/test/models/kirgudu_base/kirgudu_base/security/autheintication_test.rb +9 -0
  107. data/test/models/kirgudu_base/security/application_test.rb +9 -0
  108. data/test/models/kirgudu_base/security/autheintication_test.rb +9 -0
  109. data/test/models/kirgudu_base/security/authentication_test.rb +9 -0
  110. data/test/models/kirgudu_base/security/email_confirmation_test.rb +9 -0
  111. data/test/models/kirgudu_base/security/restore_password_code_test.rb +9 -0
  112. metadata +102 -79
  113. data/app/assets/javascripts/kirgudu_base/jquery.fancybox.pack.js +0 -45
  114. data/app/controllers/kirgudu_base/authentications_controller.rb +0 -157
  115. data/app/views/admin_templates/good/zapanel/404.html +0 -386
  116. data/app/views/admin_templates/good/zapanel/billing.html +0 -550
  117. data/app/views/admin_templates/good/zapanel/blank-page.html +0 -343
  118. data/app/views/admin_templates/good/zapanel/buttons.html +0 -1018
  119. data/app/views/admin_templates/good/zapanel/calendars.html +0 -451
  120. data/app/views/admin_templates/good/zapanel/cart.html +0 -522
  121. data/app/views/admin_templates/good/zapanel/charts.html +0 -611
  122. data/app/views/admin_templates/good/zapanel/collapse.html +0 -555
  123. data/app/views/admin_templates/good/zapanel/contact.php +0 -102
  124. data/app/views/admin_templates/good/zapanel/dashboard.html +0 -985
  125. data/app/views/admin_templates/good/zapanel/dashboard2.html +0 -1091
  126. data/app/views/admin_templates/good/zapanel/dashboard3.html +0 -1079
  127. data/app/views/admin_templates/good/zapanel/data/movies.json +0 -1
  128. data/app/views/admin_templates/good/zapanel/faq.html +0 -435
  129. data/app/views/admin_templates/good/zapanel/file-manager.html +0 -358
  130. data/app/views/admin_templates/good/zapanel/files/index.php +0 -0
  131. data/app/views/admin_templates/good/zapanel/font-awesome/less/bootstrap.less +0 -84
  132. data/app/views/admin_templates/good/zapanel/font-awesome/less/core.less +0 -129
  133. data/app/views/admin_templates/good/zapanel/font-awesome/less/extras.less +0 -93
  134. data/app/views/admin_templates/good/zapanel/font-awesome/less/font-awesome-ie7.less +0 -1953
  135. data/app/views/admin_templates/good/zapanel/font-awesome/less/font-awesome.less +0 -33
  136. data/app/views/admin_templates/good/zapanel/font-awesome/less/icons.less +0 -381
  137. data/app/views/admin_templates/good/zapanel/font-awesome/less/mixins.less +0 -48
  138. data/app/views/admin_templates/good/zapanel/font-awesome/less/path.less +0 -14
  139. data/app/views/admin_templates/good/zapanel/font-awesome/less/variables.less +0 -735
  140. data/app/views/admin_templates/good/zapanel/font-awesome/scss/_bootstrap.scss +0 -84
  141. data/app/views/admin_templates/good/zapanel/font-awesome/scss/_core.scss +0 -129
  142. data/app/views/admin_templates/good/zapanel/font-awesome/scss/_extras.scss +0 -93
  143. data/app/views/admin_templates/good/zapanel/font-awesome/scss/_icons.scss +0 -381
  144. data/app/views/admin_templates/good/zapanel/font-awesome/scss/_mixins.scss +0 -48
  145. data/app/views/admin_templates/good/zapanel/font-awesome/scss/_path.scss +0 -14
  146. data/app/views/admin_templates/good/zapanel/font-awesome/scss/_variables.scss +0 -734
  147. data/app/views/admin_templates/good/zapanel/font-awesome/scss/font-awesome-ie7.scss +0 -1953
  148. data/app/views/admin_templates/good/zapanel/font-awesome/scss/font-awesome.scss +0 -33
  149. data/app/views/admin_templates/good/zapanel/form.html +0 -790
  150. data/app/views/admin_templates/good/zapanel/gallery.html +0 -392
  151. data/app/views/admin_templates/good/zapanel/grids.html +0 -574
  152. data/app/views/admin_templates/good/zapanel/hosting-dashboard.html +0 -448
  153. data/app/views/admin_templates/good/zapanel/icon.html +0 -722
  154. data/app/views/admin_templates/good/zapanel/inbox.html +0 -375
  155. data/app/views/admin_templates/good/zapanel/index.html +0 -48
  156. data/app/views/admin_templates/good/zapanel/invoice.html +0 -423
  157. data/app/views/admin_templates/good/zapanel/js/proxy/elFinderSupportVer1.js +0 -338
  158. data/app/views/admin_templates/good/zapanel/js/skins/default/lightbox-close.png +0 -0
  159. data/app/views/admin_templates/good/zapanel/js/skins/default/lightbox-next.png +0 -0
  160. data/app/views/admin_templates/good/zapanel/js/skins/default/lightbox-prev.png +0 -0
  161. data/app/views/admin_templates/good/zapanel/notification.html +0 -400
  162. data/app/views/admin_templates/good/zapanel/order-recieved.html +0 -348
  163. data/app/views/admin_templates/good/zapanel/php/MySQLStorage.sql +0 -23
  164. data/app/views/admin_templates/good/zapanel/php/connector.php +0 -44
  165. data/app/views/admin_templates/good/zapanel/php/elFinder.class.php +0 -1103
  166. data/app/views/admin_templates/good/zapanel/php/elFinderConnector.class.php +0 -133
  167. data/app/views/admin_templates/good/zapanel/php/elFinderVolumeDriver.class.php +0 -3370
  168. data/app/views/admin_templates/good/zapanel/php/elFinderVolumeLocalFileSystem.class.php +0 -835
  169. data/app/views/admin_templates/good/zapanel/php/elFinderVolumeMySQL.class.php +0 -896
  170. data/app/views/admin_templates/good/zapanel/php/mime.types +0 -512
  171. data/app/views/admin_templates/good/zapanel/price-table.html +0 -400
  172. data/app/views/admin_templates/good/zapanel/profile.html +0 -387
  173. data/app/views/admin_templates/good/zapanel/progressbar.html +0 -555
  174. data/app/views/admin_templates/good/zapanel/range-slider.html +0 -440
  175. data/app/views/admin_templates/good/zapanel/ribbon-grids.html +0 -491
  176. data/app/views/admin_templates/good/zapanel/sale-purchase-dashboard.html +0 -803
  177. data/app/views/admin_templates/good/zapanel/search.html +0 -370
  178. data/app/views/admin_templates/good/zapanel/skins/default/lightbox-close.png +0 -0
  179. data/app/views/admin_templates/good/zapanel/skins/default/lightbox-loading.gif +0 -0
  180. data/app/views/admin_templates/good/zapanel/skins/default/lightbox-next.png +0 -0
  181. data/app/views/admin_templates/good/zapanel/skins/default/lightbox-pause.png +0 -0
  182. data/app/views/admin_templates/good/zapanel/skins/default/lightbox-play.png +0 -0
  183. data/app/views/admin_templates/good/zapanel/skins/default/lightbox-playvideo.png +0 -0
  184. data/app/views/admin_templates/good/zapanel/skins/default/lightbox-prev.png +0 -0
  185. data/app/views/admin_templates/good/zapanel/slider.html +0 -453
  186. data/app/views/admin_templates/good/zapanel/tables.html +0 -470
  187. data/app/views/admin_templates/good/zapanel/typography.html +0 -746
@@ -3,7 +3,6 @@
3
3
  module KirguduBase
4
4
  module Controllers
5
5
  module BasicActions
6
-
7
6
  ################################################################################################################
8
7
  ######################################### Base and Ajax Modules ######################################
9
8
  ################################################################################################################
@@ -20,89 +19,196 @@ module KirguduBase
20
19
  raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
21
20
  end
22
21
 
23
- local_page = self.class.get_kb_page(:index)
22
+ options = {
23
+ logger: string_logger
24
+ }
25
+
26
+ local_data = {
27
+ errors: [],
28
+ messages: [],
29
+ page: self.class.get_kb_page(:index)
30
+ }
24
31
 
25
- unless local_page
32
+ unless local_data[:page]
26
33
  respond_to do |format|
27
- format.html { render_html1 self.get_view_path_for_page_404 }
34
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
28
35
  format.json { render_json_page_404 }
29
36
  end
30
37
  return
31
38
  end
32
39
 
33
- filters = self.get_filters_for_list(local_page.lists[:entries_list], params)
34
-
35
- self.fill_obligatory_filters(filters)
36
- options = {
37
- logger: string_logger
38
- }
39
-
40
- local_filters_data = self.load_data_for_filters_controls(local_page.lists[:entries_list], params)
41
-
42
- local_entries_list = self.entry_class.get_entries(nil, filters, options)
40
+ # fill parent for data
41
+ filters_for_parents = {}
42
+ self.fill_obligatory_filters(filters_for_parents)
43
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
43
44
 
44
45
 
46
+ filters = self.get_filters_for_list(local_data[:page].lists[:entries_list], params)
47
+ self.fill_obligatory_filters(filters)
48
+ filters.merge!(local_data[:parent_ids])
49
+
50
+ filters[:per_page] = 30 unless filters[:per_page]
51
+ filters[:per_page] ||= 30
52
+
53
+ # retrieving filters data from database
54
+ local_data[:filters_data] = self.load_data_for_filters_controls(local_data[:page].lists[:entries_list], params)
55
+ # retrieving entries from database
56
+ local_data[:entries] = self.entry_class.get_entries(nil, filters, options)
57
+
58
+ # filling filters for current url
59
+ filters_for_current_url = self.get_filters_for_list(local_data[:page].lists[:entries_list], params)
60
+ filters_for_current_url.merge!(local_data[:parent_ids])
61
+ local_data[:current_url] = self.to_url_for(:index, filters_for_current_url)
62
+
63
+ # building breadcrumbs
64
+ home_controller = self.class.get_method_latest_result(:get_kb_home_controller)
65
+ home_controller = eval(home_controller) if home_controller and home_controller.is_a?(String)
66
+ if home_controller
67
+ if self.class == home_controller
68
+ add_new_breadcrumb(I18n.t("#{home_controller.to_i18n}.index.title"))
69
+ else
70
+ add_new_breadcrumb(I18n.t("#{home_controller.to_i18n}.index.title"), home_controller.to_url_for(:index))
71
+ end
72
+ end
73
+ parent_ids = {}
74
+ local_data[:parents].each do |parent|
75
+ # breadcrumbs: adding parent index
76
+ add_new_breadcrumb(I18n.t("#{parent[:controller].to_i18n}.index.title"), parent[:controller].to_url_for(:index, parent_ids))
77
+ # breadcrumbs: getting parent entry name
78
+ parent_entry_name = nil
79
+ parent_entry_name = parent[:entry].name_for_breadcrumbs if parent[:entry].respond_to?(:name_for_breadcrumbs)
80
+ parent_entry_name = parent[:entry].id unless parent_entry_name
81
+ # breadcrumbs: adding parent entry
82
+ add_new_breadcrumb(parent_entry_name, parent[:controller].to_url_for(:show, parent_ids.merge(id: parent[:entry].id)))
83
+ parent_ids[parent[:id_param]] = parent[:id_value]
84
+ end if local_data[:parents]
85
+ # breadcrumbs: adding current index
86
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.index.title"), self.to_url_for(:index, local_data[:parent_ids]))
87
+
88
+
89
+
90
+ # logger.info "TEMPLATE PATH: #{self.class.get_method_latest_result(:get_kb_template)}"
91
+ # logger.info "VIEW PATH: #{self.class.get_method_latest_result(:get_kb_view_path, :index)}"
92
+
93
+ # rendering page
45
94
  respond_to do |format|
46
- format.html { render_html1 self.get_view_path_for_page_index, locals: {entries_list: local_entries_list, page: local_page, filters_data: local_filters_data} }
47
- format.json { render_json_ok(local_entries_list) }
95
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :index)}", locals: {data: local_data} }
96
+ format.json { render_json_ok(local_data[:entries]) }
48
97
  end
49
98
  end
50
-
51
99
  end
52
100
 
53
- module ShowActions
54
101
 
55
- def show
56
102
 
103
+ module ShowActions
104
+ def show
57
105
  unless self.class.respond_to?(:get_kb_page)
58
106
  raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
59
107
  end
60
108
 
61
- local_page = self.class.get_kb_page(:show)
109
+ options = {
110
+ logger: self.string_logger
111
+ }
112
+
62
113
 
63
- if local_page.nil?
114
+ local_data = {
115
+ errors: [],
116
+ messages: [],
117
+ page: self.class.get_kb_page(:show)
118
+ }
119
+
120
+ if local_data[:page].nil?
64
121
  respond_to do |format|
65
- format.html { render_html1 self.get_view_path_for_page_404 }
122
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
66
123
  format.json { render_json_page_404 }
67
124
  end
68
125
  return
69
126
  end
70
127
 
71
- #::ChupakabraTools::ClassHelper.get_controller_hierarchy(self.class).each do |klass|
72
- # parent_page = klass.get_kb_page(:show) if klass.respond_to?(:get_kb_page)
73
- #
74
- # parent_page.menus.each_pair do |key, parent_menu|
75
- # menu = local_page.menus[parent_menu.name]
76
- # if menu
77
- # parent_menu.items.each do |menu_item|
78
- # menu.items << menu_item
79
- # end
80
- # end
81
- # end if parent_page
82
- #end
83
-
84
-
128
+ # fill parent for data
129
+ filters_for_parents = {}
130
+ self.fill_obligatory_filters(filters_for_parents)
131
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
132
+ # fill filters for search
85
133
  filters = {}
86
134
  self.fill_obligatory_filters(filters)
135
+ filters.merge!(local_data[:parent_ids])
136
+ # getting local entry
137
+ local_data[:entry] = self.entry_class.get_entry_by_id(params[:id], filters, options)
138
+ # entry not found, showing not found page
139
+ unless local_data[:entry]
140
+ local_data[:errors] << I18n.t("#{self.to_i18n}.messages.not_found", entry_id: params[:id])
141
+ respond_to do |format|
142
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :entry_not_found)}", locals: {data: local_data} }
143
+ format.json { render_json_not_found message: local_data[:errors] }
144
+ end
145
+ return
146
+ end
147
+ # getting lists
148
+ local_data[:page].lists.each_pair do |key, list|
149
+ if list.relation
150
+ filters_for_list = {}
151
+ self.fill_obligatory_filters(filters_for_list)
152
+ reflection = self.entry_class.reflections[list.relation.name]
153
+ list_per_page = list.relation.per_page_param
154
+ list_page = list.relation.page_param
87
155
 
88
- local_entry = self.entry_class.get_entry_by_id(params[:id], filters, {logger: string_logger})
156
+ begin
157
+ filters_for_list[:per_page] = params[list_per_page].to_i
158
+ rescue
159
+ end
160
+ filters_for_list[:per_page] ||= 30
161
+ filters_for_list[:per_page] = 30 if filters_for_list[:per_page] == 0
89
162
 
163
+ begin
164
+ filters_for_list[:page] = params[list_page].to_i if params[list_page]
165
+ rescue
166
+ end
90
167
 
91
- unless local_entry
92
- respond_to do |format|
93
- flash[:error] = I18n.t("#{self.to_i18n}.messages.not_found", entry_id: params[:id])
94
- format.html { render_html1 get_not_found_view_path,
95
- locals: {
96
- entry: local_entry
97
- }
98
- }
99
- format.json { render json: local_entry.errors, status: :unprocessable_entity }
168
+ filters_for_list[reflection.foreign_key] = local_data[:entry].id
169
+
170
+ #logger.info "FILTERS for LIST: #{filters_for_list.to_json}"
171
+
172
+ local_data[:"list_entries_#{list.name}"] = eval(reflection.class_name).get_entries(nil, filters_for_list, options)
100
173
  end
101
- return
174
+ end if local_data[:page].lists
175
+
176
+
177
+ # fill parent for data
178
+ filters_for_parents = {}
179
+ self.fill_obligatory_filters(filters_for_parents)
180
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
181
+ # building breadcrumbs
182
+ home_controller = self.class.get_method_latest_result(:get_kb_home_controller)
183
+ home_controller = eval(home_controller) if home_controller and home_controller.is_a?(String)
184
+ add_new_breadcrumb(I18n.t("#{home_controller.to_i18n}.index.title"), home_controller.to_url_for(:index)) if home_controller
185
+ parent_ids = {}
186
+ local_data[:parents].each do |parent|
187
+ # breadcrumbs: adding parent index
188
+ add_new_breadcrumb(I18n.t("#{parent[:controller].to_i18n}.index.title"), parent[:controller].to_url_for(:index, parent_ids))
189
+ # breadcrumbs: getting parent entry name
190
+ parent_entry_name = nil
191
+ parent_entry_name = parent[:entry].name_for_breadcrumbs if parent[:entry].respond_to?(:name_for_breadcrumbs)
192
+ parent_entry_name = parent[:entry].id unless parent_entry_name
193
+ # breadcrumbs: adding parent entry
194
+ add_new_breadcrumb(parent_entry_name, parent[:controller].to_url_for(:show, parent_ids.merge(id: parent[:entry].id)))
195
+ parent_ids[parent[:id_param]] = parent[:id_value]
196
+ end if local_data[:parents]
197
+ # breadcrumbs: adding current index
198
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.index.title"), self.to_url_for(:index, local_data[:parent_ids]))
199
+ # breadcrumbs: getting current entry name
200
+ current_entry_name = nil
201
+ if local_data[:entry].respond_to?(:name_for_breadcrumbs)
202
+ current_entry_name = local_data[:entry].name_for_breadcrumbs
203
+ #current_entry_name.trim(20) if current_entry_name
102
204
  end
205
+ current_entry_name = local_data[:entry].id unless current_entry_name
206
+ # breadcrumbs: adding current entry
207
+ add_new_breadcrumb(current_entry_name)
208
+ # rendering page
103
209
  respond_to do |format|
104
- format.html { render_html1 self.get_view_path_for_page_show, locals: {entry: local_entry, page: local_page} }
105
- format.json { render json: local_entry }
210
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :show)}", locals: {data: local_data} }
211
+ format.json { render_json_ok local_data[:entry] }
106
212
  end
107
213
  end
108
214
 
@@ -114,29 +220,58 @@ module KirguduBase
114
220
  unless self.class.respond_to?(:get_kb_page)
115
221
  raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
116
222
  end
117
- local_page = self.class.get_kb_page(:new)
118
- unless local_page
223
+
224
+ local_data = {
225
+ messages: [],
226
+ errors: [],
227
+ page: self.class.get_kb_page(:new)
228
+ }
229
+
230
+ unless local_data[:page]
119
231
  respond_to do |format|
120
- format.html { render_html1 self.get_view_path_for_page_404 }
232
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
121
233
  format.json { render_json_page_404 }
122
234
  end
123
235
  return
124
236
  end
125
- local_entry = entry_class.new
126
237
 
127
- # loading data for select-like controls
128
- local_controls_data = self.load_data_for_entry_controls(local_page.forms[:changes], local_entry)
238
+ filters = {}
239
+ self.fill_obligatory_filters(filters)
129
240
 
241
+ # getting entry
242
+ local_data[:entry] = entry_class.new
243
+ # getting controls data
244
+ local_data[:controls_data] = self.load_data_for_entry_controls(local_data[:page].forms[:changes], local_data[:entry])
245
+
246
+ # fill parent for data
247
+ filters_for_parents = {}
248
+ self.fill_obligatory_filters(filters_for_parents)
249
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
250
+
251
+ # building breadcrumbs
252
+ home_controller = self.class.get_method_latest_result(:get_kb_home_controller)
253
+ home_controller = eval(home_controller) if home_controller and home_controller.is_a?(String)
254
+ add_new_breadcrumb(I18n.t("#{home_controller.to_i18n}.index.title"), home_controller.to_url_for(:index)) if home_controller
255
+ parent_ids = {}
256
+ local_data[:parents].each do |parent|
257
+ # breadcrumbs: adding parent index
258
+ add_new_breadcrumb(I18n.t("#{parent[:controller].to_i18n}.index.title"), parent[:controller].to_url_for(:index, parent_ids))
259
+ # breadcrumbs: getting parent entry name
260
+ parent_entry_name = nil
261
+ parent_entry_name = parent[:entry].name_for_breadcrumbs if parent[:entry].respond_to?(:name_for_breadcrumbs)
262
+ parent_entry_name = parent[:entry].id unless parent_entry_name
263
+ # breadcrumbs: adding parent entry
264
+ add_new_breadcrumb(parent_entry_name, parent[:controller].to_url_for(:show, parent_ids.merge(id: parent[:entry].id)))
265
+ parent_ids[parent[:id_param]] = parent[:id_value]
266
+ end if local_data[:parents]
267
+ # breadcrumbs: adding current index
268
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.index.title"), self.to_url_for(:index, local_data[:parent_ids]))
269
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.new.title"))
270
+
271
+ # rendering page
130
272
  respond_to do |format|
131
- format.html { render_html1 self.get_view_path_for_page_new,
132
- locals:
133
- {
134
- entry: local_entry,
135
- page: local_page,
136
- controls_data: local_controls_data
137
- }
138
- }
139
- format.json { render json: local_entry }
273
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :new)}", locals: {data: local_data} }
274
+ format.json { render_json_ok local_data[:entry] }
140
275
  end
141
276
  end
142
277
 
@@ -145,33 +280,48 @@ module KirguduBase
145
280
  unless self.class.respond_to?(:get_kb_page)
146
281
  raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
147
282
  end
148
- local_page = self.class.get_kb_page(:new)
149
- unless local_page
283
+
284
+ local_data = {
285
+ messages: [],
286
+ errors: [],
287
+ page: self.class.get_kb_page(:new)
288
+ }
289
+
290
+ unless local_data[:page]
150
291
  respond_to do |format|
151
- format.html { render_html1 self.get_view_path_for_page_404 }
292
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
152
293
  format.json { render_json_page_404 }
153
294
  end
154
295
  return
155
296
  end
156
297
 
157
- strong_params = {}.merge(self.class_strong_params(local_page.forms[:changes]))
158
- self.fill_obligatory_filters(strong_params)
159
298
 
160
- local_entry = self.entry_class.new(strong_params)
299
+ # fill parent for data
300
+ filters_for_parents = {}
301
+ self.fill_obligatory_filters(filters_for_parents)
302
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
161
303
 
162
- self.process_transaction_injections(local_entry, :create, :before_transaction, strong_params)
163
304
 
305
+ strong_params = {}.merge(self.class_strong_params(local_data[:page].forms[:changes]))
306
+ self.fill_obligatory_filters(strong_params)
307
+ strong_params.merge!(local_data[:parent_ids])
308
+
309
+ # getting entry
310
+ local_data[:entry] = self.entry_class.new(strong_params)
311
+
312
+ # pre create
313
+ self.process_transaction_injections(local_data[:entry], :create, :before_transaction, strong_params)
164
314
  transaction_is_ok = true
165
315
 
166
316
  ActiveRecord::Base.transaction do
167
317
  #raise "In Transaction Before Create"
168
- unless self.process_transaction_injections(local_entry, :create, :before_save, strong_params)
318
+ unless self.process_transaction_injections(local_data[:entry], :create, :before_save, strong_params)
169
319
  transaction_is_ok = false
170
320
  raise ActiveRecord::Rollback
171
321
  end
172
322
 
173
- if local_entry.save
174
- unless process_transaction_injections(local_entry, :create, :after_save, strong_params)
323
+ if local_data[:entry].save
324
+ unless process_transaction_injections(local_data[:entry], :create, :after_save, strong_params)
175
325
  transaction_is_ok = false
176
326
  raise ActiveRecord::Rollback
177
327
  end
@@ -181,26 +331,42 @@ module KirguduBase
181
331
  end
182
332
  end
183
333
 
184
- self.process_transaction_injections(local_entry, :create, :after_transaction, strong_params)
334
+ self.process_transaction_injections(local_data[:entry], :create, :after_transaction, strong_params)
185
335
 
186
336
  respond_to do |format|
187
337
  if transaction_is_ok
188
- flash[:success] = I18n.t("#{self.to_i18n}.messages.entry_created", entry_name: local_entry.to_s)
189
- format.html { render_redirect url_for(action: :show, id: local_entry) }
190
- format.json { render json: local_entry, status: :created, location: local_entry }
338
+ local_data[:messages] << I18n.t("#{self.to_i18n}.messages.entry_created", entry_name: local_data[:entry].to_s)
339
+ format.html { render_redirect self.to_url_for(:show, local_data[:parent_ids].merge(id: local_data[:entry].id)) }
340
+ format.json { render_json_ok local_data[:entry], message: local_data[:messages] }
191
341
  else
192
342
  # loading data for select-like controls
193
- local_controls_data = self.load_data_for_entry_controls(local_page.forms[:changes], local_entry)
194
- local_entry.errors[:form] << I18n.t("#{self.to_i18n}.messages.create_error")
195
- format.html { render_html1 self.get_view_path_for_page_new,
196
- locals:
197
- {
198
- entry: local_entry,
199
- page: local_page,
200
- controls_data: local_controls_data
201
- }
202
- }
203
- format.json { render json: local_entry.errors, status: :unprocessable_entity }
343
+ local_data[:controls_data] = self.load_data_for_entry_controls(local_data[:page].forms[:changes], local_data[:entry])
344
+ local_data[:errors] << I18n.t("#{self.to_i18n}.messages.create_error")
345
+
346
+
347
+ # building breadcrumbs
348
+ home_controller = self.class.get_method_latest_result(:get_kb_home_controller)
349
+ home_controller = eval(home_controller) if home_controller and home_controller.is_a?(String)
350
+ add_new_breadcrumb(I18n.t("#{home_controller.to_i18n}.index.title"), home_controller.to_url_for(:index)) if home_controller
351
+ parent_ids = {}
352
+ local_data[:parents].each do |parent|
353
+ # breadcrumbs: adding parent index
354
+ add_new_breadcrumb(I18n.t("#{parent[:controller].to_i18n}.index.title"), parent[:controller].to_url_for(:index, parent_ids))
355
+ # breadcrumbs: getting parent entry name
356
+ parent_entry_name = nil
357
+ parent_entry_name = parent[:entry].name_for_breadcrumbs if parent[:entry].respond_to?(:name_for_breadcrumbs)
358
+ parent_entry_name = parent[:entry].id unless parent_entry_name
359
+ # breadcrumbs: adding parent entry
360
+ add_new_breadcrumb(parent_entry_name, parent[:controller].to_url_for(:show, parent_ids.merge(id: parent[:entry].id)))
361
+ parent_ids[parent[:id_param]] = parent[:id_value]
362
+ end if local_data[:parents]
363
+ # breadcrumbs: adding current index
364
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.index.title"), self.to_url_for(:index, local_data[:parent_ids]))
365
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.new.title"))
366
+
367
+ # rendering page
368
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :new)}", locals: {data: local_data} }
369
+ format.json { render_json_error local_data[:entry], message: local_data[:errors] }
204
370
  end
205
371
  end
206
372
  end
@@ -215,42 +381,71 @@ module KirguduBase
215
381
  raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
216
382
  end
217
383
 
218
- local_page = self.class.get_kb_page(:edit)
384
+ local_data = {
385
+ errors: [],
386
+ messages: [],
387
+ page: self.class.get_kb_page(:edit)
388
+ }
219
389
 
220
- unless local_page
390
+ unless local_data[:page]
221
391
  respond_to do |format|
222
- format.html { render_html1 get_view_path_for_page_404 }
392
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
223
393
  format.json { render_json_page_404 }
224
394
  end
225
395
  return
226
396
  end
227
397
 
398
+ # fill parent for data
399
+ filters_for_parents = {}
400
+ self.fill_obligatory_filters(filters_for_parents)
401
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
402
+ # filling filters for search
228
403
  filters = {}
229
404
  self.fill_obligatory_filters(filters)
230
-
231
- local_entry = self.entry_class.get_entry_by_id(params[:id], filters, {logger: string_logger})
232
-
233
- unless local_entry
405
+ filters.merge!(local_data[:parent_ids])
406
+ # retrieving entry from database
407
+ local_data[:entry] = self.entry_class.get_entry_by_id(params[:id], filters, {logger: string_logger})
408
+ # entry not found, showing not found page
409
+ unless local_data[:entry]
410
+ local_data[:errors] << I18n.t("#{self.to_i18n}.messages.not_found", entry_id: params[:id])
234
411
  respond_to do |format|
235
- flash[:error] = I18n.t("#{self.to_i18n}.messages.not_found", entry_id: params[:id])
236
- format.html { render_html1 self.get_not_found_view_path, locals: {entry: local_entry} }
237
- format.json { render json: local_entry.errors, status: :unprocessable_entity }
412
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :entry_not_found)}", locals: {data: local_data} }
413
+ format.json { render_json_not_found message: local_data[:errors] }
238
414
  end
239
415
  return
240
416
  end
241
- # loading data for select-like controls
242
- local_controls_data = self.load_data_for_entry_controls(local_page.forms[:changes], local_entry)
243
-
417
+ # loading data for controls
418
+ local_data[:controls_data] = self.load_data_for_entry_controls(local_data[:page].forms[:changes], local_data[:entry])
419
+
420
+ # fill parent for data
421
+ filters_for_parents = {}
422
+ self.fill_obligatory_filters(filters_for_parents)
423
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
424
+ # building breadcrumbs
425
+ home_controller = self.class.get_method_latest_result(:get_kb_home_controller)
426
+ home_controller = eval(home_controller) if home_controller and home_controller.is_a?(String)
427
+ add_new_breadcrumb(I18n.t("#{home_controller.to_i18n}.index.title"), home_controller.to_url_for(:index)) if home_controller
428
+ parent_ids = {}
429
+ local_data[:parents].each do |parent|
430
+ # breadcrumbs: adding parent index
431
+ add_new_breadcrumb(I18n.t("#{parent[:controller].to_i18n}.index.title"), parent[:controller].to_url_for(:index, parent_ids))
432
+ # breadcrumbs: getting parent entry name
433
+ parent_entry_name = nil
434
+ parent_entry_name = parent[:entry].name_for_breadcrumbs if parent[:entry].respond_to?(:name_for_breadcrumbs)
435
+ parent_entry_name = parent[:entry].id unless parent_entry_name
436
+ # breadcrumbs: adding parent entry
437
+ add_new_breadcrumb(parent_entry_name, parent[:controller].to_url_for(:show, parent_ids.merge(id: parent[:entry].id)))
438
+ parent_ids[parent[:id_param]] = parent[:id_value]
439
+ end if local_data[:parents]
440
+ # breadcrumbs: adding current index
441
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.index.title"), self.to_url_for(:index, local_data[:parent_ids]))
442
+ # breadcrumbs: adding current entry
443
+ add_new_breadcrumb(local_data[:entry].id)
444
+
445
+ # rendering page
244
446
  respond_to do |format|
245
- format.html { render_html1 self.get_view_path_for_page_edit,
246
- locals:
247
- {
248
- entry: local_entry,
249
- page: local_page,
250
- controls_data: local_controls_data
251
- }
252
- }
253
- format.json { render json: local_entry }
447
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :edit)}", locals: {data: local_data} }
448
+ format.json { render_json_ok local_data[:entry] }
254
449
  end
255
450
  end
256
451
 
@@ -261,45 +456,55 @@ module KirguduBase
261
456
  raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
262
457
  end
263
458
 
264
- local_page = self.class.get_kb_page(:edit)
459
+ local_data = {
460
+ errors: [],
461
+ messages: [],
462
+ page: self.class.get_kb_page(:edit)
463
+ }
265
464
 
266
- unless local_page
465
+ unless local_data[:page]
267
466
  respond_to do |format|
268
- format.html { render_html1 self.get_view_path_for_page_404 }
467
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
269
468
  format.json { render_json_page_404 }
270
469
  end
271
470
  return
272
471
  end
273
472
 
274
473
 
275
- local_entry = self.entry_class.get_entry_by_id(params[:id], nil, {logger: string_logger})
276
-
277
- # Render NOT FOUND Form
278
- unless local_entry
474
+ # fill parent for data
475
+ filters_for_parents = {}
476
+ self.fill_obligatory_filters(filters_for_parents)
477
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
478
+ # filling filters for search
479
+ filters = {}
480
+ self.fill_obligatory_filters(filters)
481
+ filters.merge!(local_data[:parent_ids]) # merging search filters with parent ids
482
+ # retrieving data from database
483
+ local_data[:entry] = self.entry_class.get_entry_by_id(params[:id], filters, {logger: string_logger})
484
+ # entry not found, showing not found page
485
+ unless local_data[:entry]
486
+ local_data[:errors] << I18n.t("#{self.to_i18n}.messages.not_found", entry_id: params[:id])
279
487
  respond_to do |format|
280
- flash[:error] = I18n.t("#{self.to_i18n}.messages.not_found", entry_id: params[:id])
281
- format.html { render_html1 self.get_not_found_view_path, locals: {entry: local_entry} }
282
- format.json { render json: nil, status: :unprocessable_entity }
488
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :entry_not_found)}", locals: {data: local_data} }
489
+ format.json { render_json_not_found message: local_data[:errors] }
283
490
  end
284
491
  return
285
492
  end
286
-
287
- strong_params = {}.merge(self.class_strong_params(local_page.forms[:changes]))
493
+ # getting string params from params
494
+ strong_params = {}.merge(self.class_strong_params(local_data[:page].forms[:changes]))
288
495
  self.fill_obligatory_filters(strong_params)
289
496
 
290
- self.process_transaction_injections(local_entry, :update, :before_transaction, strong_params)
291
-
497
+ self.process_transaction_injections(local_data[:entry], :update, :before_transaction, strong_params)
292
498
  transaction_is_ok = true
293
-
294
499
  ActiveRecord::Base.transaction do
295
500
  #raise "In Transaction Before Create"
296
- unless self.process_transaction_injections(local_entry, :update, :before_save, strong_params)
501
+ unless self.process_transaction_injections(local_data[:entry], :update, :before_save, strong_params)
297
502
  transaction_is_ok = false
298
503
  raise ActiveRecord::Rollback
299
504
  end
300
505
 
301
- if local_entry.update(strong_params)
302
- unless process_transaction_injections(local_entry, :update, :after_save, strong_params)
506
+ if local_data[:entry].update(strong_params)
507
+ unless process_transaction_injections(local_data[:entry], :update, :after_save, strong_params)
303
508
  transaction_is_ok = false
304
509
  raise ActiveRecord::Rollback
305
510
  end
@@ -308,36 +513,104 @@ module KirguduBase
308
513
  raise ActiveRecord::Rollback
309
514
  end
310
515
  end
311
-
312
- self.process_transaction_injections(local_entry, :update, :after_transaction, strong_params)
516
+ self.process_transaction_injections(local_data[:entry], :update, :after_transaction, strong_params)
313
517
 
314
518
 
315
519
  respond_to do |format|
316
- flash[:success] = I18n.t("#{self.to_i18n}.messages.manufacturer_updated", entry_name: local_entry.to_s)
520
+ flash[:success] = I18n.t("#{self.to_i18n}.messages.manufacturer_updated", entry_name: local_data[:entry].to_s)
317
521
  if transaction_is_ok
318
- format.html { render_redirect url_for(action: :show, id: local_entry) }
522
+ format.html { render_redirect url_for(action: :show, id: local_data[:entry]) }
319
523
  format.json { head :no_content }
320
524
  else
321
525
  # loading data for select-like controls
322
- local_controls_data = self.load_data_for_entry_controls(local_page.forms[:changes], local_entry)
323
- local_entry.errors[:form] << I18n.t("#{self.to_i18n}.messages.update_error")
324
- format.html { render_html1 self.get_view_path_for_page_edit,
325
- locals:
326
- {
327
- entry: local_entry,
328
- page: local_page,
329
- controls_data: local_controls_data
330
- }
331
- }
332
- format.json { render json: local_entry.errors, status: :unprocessable_entity }
526
+ local_data[:controls_data] = self.load_data_for_entry_controls(local_data[:page].forms[:changes], local_data[:entry])
527
+ local_data[:entry].errors[:form] << I18n.t("#{self.to_i18n}.messages.update_error")
528
+
529
+
530
+ # building breadcrumbs
531
+ home_controller = self.class.get_method_latest_result(:get_kb_home_controller)
532
+ home_controller = eval(home_controller) if home_controller and home_controller.is_a?(String)
533
+ add_new_breadcrumb(I18n.t("#{home_controller.to_i18n}.index.title"), home_controller.to_url_for(:index)) if home_controller
534
+ parent_ids = {}
535
+ local_data[:parents].each do |parent|
536
+ # breadcrumbs: adding parent index
537
+ add_new_breadcrumb(I18n.t("#{parent[:controller].to_i18n}.index.title"), parent[:controller].to_url_for(:index, parent_ids))
538
+ # breadcrumbs: getting parent entry name
539
+ parent_entry_name = nil
540
+ parent_entry_name = parent[:entry].name_for_breadcrumbs if parent[:entry].respond_to?(:name_for_breadcrumbs)
541
+ parent_entry_name = parent[:entry].id unless parent_entry_name
542
+ # breadcrumbs: adding parent entry
543
+ add_new_breadcrumb(parent_entry_name, parent[:controller].to_url_for(:show, parent_ids.merge(id: parent[:entry].id)))
544
+ parent_ids[parent[:id_param]] = parent[:id_value]
545
+ end if local_data[:parents]
546
+ # breadcrumbs: adding current index
547
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.index.title"), self.to_url_for(:index, local_data[:parent_ids]))
548
+ # breadcrumbs: adding current entry
549
+ add_new_breadcrumb(local_data[:entry].id)
550
+
551
+
552
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :edit)}", locals: {data: local_data} }
553
+ format.json { render json: local_data[:entry].errors, status: :unprocessable_entity }
333
554
  end
334
555
  end
335
556
  end
336
557
  end
337
558
 
338
559
  module DeleteActions
339
- def delete
560
+ def destroy
561
+ unless self.class.respond_to?(:get_kb_page)
562
+ raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
563
+ end
564
+
565
+ local_data = {
566
+ errors: [],
567
+ messages: [],
568
+ page: self.class.get_kb_page(:delete)
569
+ }
340
570
 
571
+ #unless local_data[:page]
572
+ # respond_to do |format|
573
+ # format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
574
+ # format.json { render_json_page_404 }
575
+ # end
576
+ # return
577
+ #end
578
+
579
+
580
+ # fill parent for data
581
+ filters_for_parents = {}
582
+ self.fill_obligatory_filters(filters_for_parents)
583
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
584
+ # filling filters for search
585
+ filters = {}
586
+ self.fill_obligatory_filters(filters)
587
+ filters.merge!(local_data[:parent_ids])
588
+ # retrieving entry from database
589
+ local_data[:entry] = self.entry_class.get_entry_by_id(params[:id], filters, {logger: string_logger})
590
+ # entry not found, showing not found page
591
+ unless local_data[:entry]
592
+ local_data[:errors] << I18n.t("#{self.to_i18n}.messages.not_found", entry_id: params[:id])
593
+ respond_to do |format|
594
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :entry_not_found)}", locals: {data: local_data} }
595
+ format.json { render_json_not_found message: local_data[:errors] }
596
+ end
597
+ return
598
+ end
599
+ # destroying entry
600
+ if local_data[:entry].destroy
601
+ # entry destroyed
602
+ respond_to do |format|
603
+ format.html { render_redirect(self.to_url_for(:index, local_data[:parent_ids])) }
604
+ format.json { render_json_ok(local_data[:entry], message: "Record Deleted") }
605
+ end
606
+ else
607
+ # failed to destroy entry
608
+ local_data[:errors] << I18n.t("#{self.to_i18n}.messages.delete_error")
609
+ respond_to do |format|
610
+ format.html { render_html1 self.get_view_path_for_page_edit, locals: {data: local_data} }
611
+ format.json { render_json_error(local_data[:entry], message: local_data[:errors]) }
612
+ end
613
+ end
341
614
  end
342
615
  end
343
616
 
@@ -347,14 +620,25 @@ module KirguduBase
347
620
  raise "No defined \"entry_class\" method for controller #{self.class}" if !self.respond_to?(:entry_class) || self.entry_class.nil?
348
621
  raise "Current User NULL" if @current_user.nil?
349
622
 
350
- filters = {}.merge(params)
351
623
  options = {
352
624
  logger: string_logger
353
625
  }
354
626
 
355
- #logger.info "OPTIONS FOR SEARCH: #{options.to_s}"
627
+ local_data = {
628
+ errors: [],
629
+ messages: []
630
+ }
356
631
 
357
- @entries_list = self.entry_class.get_entries(nil, filters, options)
632
+ # fill parent for data
633
+ filters_for_parents = {}
634
+ self.fill_obligatory_filters(filters_for_parents)
635
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
636
+ # filling filters for search
637
+ filters = {}
638
+ self.fill_obligatory_filters(filters)
639
+ filters.merge!(local_data[:parent_ids])
640
+ # retrieving entries from database
641
+ local_data[:entries] = self.entry_class.get_entries(nil, filters, options)
358
642
 
359
643
  export_type = params[:type]
360
644
 
@@ -376,12 +660,12 @@ module KirguduBase
376
660
  when "json"
377
661
 
378
662
  when "xml"
379
- render text: @entries_list.to_xml
663
+ render text: local_data[:entries_list].to_xml
380
664
  end
381
665
  else
382
666
  respond_to do |format|
383
- format.json { render json: @entries_list }
384
- format.json { render xml: @entries_list }
667
+ format.json { render json: local_data[:entries] }
668
+ format.json { render xml: local_data[:entries] }
385
669
  end
386
670
  end
387
671
  end
@@ -395,8 +679,528 @@ module KirguduBase
395
679
  end
396
680
  end
397
681
 
682
+
683
+ module ItemsManagementActions
684
+
685
+ def manage_items
686
+
687
+ unless self.class.respond_to?(:get_kb_page)
688
+ raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
689
+ end
690
+
691
+ local_data = {
692
+ errors: [],
693
+ messages: [],
694
+ page: self.class.get_kb_page(:management)
695
+ }
696
+
697
+ options = {
698
+ logger: string_logger
699
+ }
700
+
701
+ unless local_data[:page]
702
+ respond_to do |format|
703
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
704
+ format.json { render_json_page_404 }
705
+ end
706
+ return
707
+ end
708
+
709
+ # getting management settings
710
+ local_data[:management_settings] = local_data[:page].managements[:manage] if local_data[:page].managements
711
+
712
+ unless local_data[:management_settings]
713
+ respond_to do |format|
714
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
715
+ format.json { render_json_page_404 }
716
+ end
717
+ return
718
+ end
719
+
720
+ #raise "MANAGEMENT: management settings error" unless local_data[:management_settings]
721
+
722
+ local_container_class = local_data[:management_settings].container_class
723
+ local_container_id_property = local_data[:management_settings].container_id_property
724
+ local_item_class = local_data[:management_settings].item_class
725
+ local_entry_id_property = local_data[:management_settings].entry_id_property
726
+ local_entry_class = local_data[:management_settings].entry_class
727
+
728
+
729
+ # fill parent for data
730
+ filters_for_parents = {}
731
+ self.fill_obligatory_filters(filters_for_parents)
732
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
733
+
734
+
735
+ #loading container data
736
+ filters_4_container = {}
737
+ self.fill_obligatory_filters(filters_4_container)
738
+ filters_4_container.merge!(local_data[:parent_ids])
739
+ # retrieving container from database
740
+ local_data[:container] = local_container_class.get_entry_by_id(params[local_container_id_property], filters_4_container, options)
741
+ # filling filters for items
742
+ filters_4_items = {}
743
+ self.fill_obligatory_filters(filters_4_items)
744
+ filters_4_items.merge!(local_data[:parent_ids])
745
+ filters_4_items[local_container_id_property] = params[local_container_id_property]
746
+ # retrieving items from database
747
+ local_data[:items] = local_item_class.get_entries(nil, filters_4_items, options)
748
+
749
+ #entries_order_by = get_managing_entries_order_by if self.respond_to?(:get_managing_entries_order_by)
750
+ #entries_order_by = "name asc" unless entries_order_by
751
+
752
+ # filling filters for entries
753
+ filters_4_entries = {}
754
+ self.fill_obligatory_filters(filters_4_entries)
755
+ filters_4_entries[local_entry_id_property] = params[local_entry_id_property]
756
+ # retrieving entries from database
757
+ local_entries_initial_query = local_entry_class.where { -(id.in local_item_class.get_entries(nil, filters_4_items, options).select(local_entry_id_property)) }
758
+
759
+ #fill parent elements
760
+ filters_for_parents = {}
761
+ self.fill_obligatory_filters(filters_for_parents)
762
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
763
+
764
+ local_entries = local_entry_class.get_entries(local_entries_initial_query, filters_4_entries, options)
765
+ local_data[:entries] = local_entries
766
+
767
+
768
+ # building breadcrumbs
769
+ home_controller = self.class.get_method_latest_result(:get_kb_home_controller)
770
+ home_controller = eval(home_controller) if home_controller and home_controller.is_a?(String)
771
+ add_new_breadcrumb(I18n.t("#{home_controller.to_i18n}.index.title"), home_controller.to_url_for(:index)) if home_controller
772
+ parent_ids = {}
773
+ local_data[:parents].each do |parent|
774
+ # breadcrumbs: adding parent index
775
+ add_new_breadcrumb(I18n.t("#{parent[:controller].to_i18n}.index.title"), parent[:controller].to_url_for(:index, parent_ids))
776
+ # breadcrumbs: getting parent entry name
777
+ parent_entry_name = nil
778
+ parent_entry_name = parent[:entry].name_for_breadcrumbs if parent[:entry].respond_to?(:name_for_breadcrumbs)
779
+ parent_entry_name = parent[:entry].id unless parent_entry_name
780
+ # breadcrumbs: adding parent entry
781
+ add_new_breadcrumb(parent_entry_name, parent[:controller].to_url_for(:show, parent_ids.merge(id: parent[:entry].id)))
782
+ parent_ids[parent[:id_param]] = parent[:id_value]
783
+ end if local_data[:parents]
784
+ # breadcrumbs: adding current index
785
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.index.title"), self.to_url_for(:index, local_data[:parent_ids]))
786
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.management.title"))
787
+
788
+
789
+ respond_to do |format|
790
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :management)}", locals: {data: local_data} }
791
+ format.json { render json: local_data }
792
+ end
793
+ end
794
+
795
+ def manage_items_add
796
+
797
+ unless self.class.respond_to?(:get_kb_page)
798
+ raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
799
+ end
800
+
801
+ local_data = {
802
+ errors: [],
803
+ messages: [],
804
+ page: self.class.get_kb_page(:management)
805
+ }
806
+
807
+ options = {
808
+ logger: string_logger
809
+ }
810
+
811
+ unless local_data[:page]
812
+ respond_to do |format|
813
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
814
+ format.json { render_json_page_404 }
815
+ end
816
+ return
817
+ end
818
+
819
+ # getting management settings
820
+ local_data[:management_settings] = local_data[:page].managements[:manage] if local_data[:page].managements
821
+
822
+ unless local_data[:management_settings]
823
+ respond_to do |format|
824
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
825
+ format.json { render_json_page_404 }
826
+ end
827
+ return
828
+ end
829
+
830
+
831
+ local_container_class = local_data[:management_settings].container_class
832
+ local_container_id_property = local_data[:management_settings].container_id_property
833
+ local_item_class = local_data[:management_settings].item_class
834
+ local_entry_id_property = local_data[:management_settings].entry_id_property
835
+ local_entry_class = local_data[:management_settings].entry_class
836
+
837
+
838
+ # fill parent for data
839
+ filters_for_parents = {}
840
+ self.fill_obligatory_filters(filters_for_parents)
841
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
842
+
843
+
844
+ #loading container from database
845
+ filters_4_container = {}
846
+ self.fill_obligatory_filters(filters_4_container)
847
+ local_data[:container] = local_container_class.get_entry_by_id(params[local_container_id_property], filters_4_container, options)
848
+ #checking if container not found
849
+ unless local_data[:container]
850
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('set_not_found'), message: I18n.t("#{self.to_i18n}.management.messages.set_not_found", id: params[local_container_id_property])}
851
+ return
852
+ end
853
+
854
+
855
+ #loading entry from database
856
+ filters_4_entries = {}
857
+ self.fill_obligatory_filters(filters_4_entries)
858
+ #local_data[:entry] = local_entry_class.get_entry_by_id(params[local_entry_id_property], filters_4_entries, options )
859
+ local_data[:entry] = local_entry_class.get_entry_by_id(params[:entry_id], filters_4_entries, options)
860
+
861
+ #checking if entry not found
862
+ unless local_data[:entry]
863
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('entry_not_found'), message: I18n.t("#{self.to_i18n}.management.messages.entry_not_found", entry_id: params[:entry_id])}
864
+ return
865
+ end
866
+
867
+ #raise "MANAGEMENT: entry is ok"
868
+
869
+ # loading item from database
870
+ filters_4_item = {}
871
+ self.fill_obligatory_filters(filters_4_item)
872
+ filters_4_item[local_container_id_property] = params[local_container_id_property]
873
+ #filters_4_item[local_entry_id_property] = params[local_entry_id_property]
874
+ filters_4_item[local_entry_id_property] = params[:entry_id]
875
+
876
+ logger.info("MANAGEMENT ADD: Retrieve Item from database filters - #{filters_4_item.to_json}")
877
+
878
+ local_data[:item] = local_item_class.get_entries(nil, filters_4_item, options).first
879
+
880
+ unless local_data[:item]
881
+ local_data[:item] = local_item_class.new
882
+ local_data[:item][local_container_id_property] = local_data[:container].id
883
+ local_data[:item][local_entry_id_property] = local_data[:entry].id
884
+
885
+ if local_data[:item].respond_to?(:sort_position)
886
+ filters_4_items_max = {}
887
+ self.fill_obligatory_filters(filters_4_items_max)
888
+ filters_4_items_max[local_container_id_property] = params[local_container_id_property]
889
+
890
+ max_sort_position = local_item_class.get_entries(nil, filters_4_items_max, options).maximum(:sort_position)
891
+ local_data[:item].sort_position = max_sort_position ? max_sort_position + 1 : 1
892
+ end
893
+
894
+ # saving entry using transactions
895
+ self.process_transaction_injections(local_data[:item], :create, :before_transaction, nil)
896
+ transaction_is_ok = true
897
+ ActiveRecord::Base.transaction do
898
+ #raise "In Transaction Before Create"
899
+ unless self.process_transaction_injections(local_data[:item], :create, :before_save, nil)
900
+ transaction_is_ok = false
901
+ raise ActiveRecord::Rollback
902
+ end
903
+
904
+ if local_data[:item].save
905
+ unless self.process_transaction_injections(local_data[:item], :create, :after_save, nil)
906
+ transaction_is_ok = false
907
+ raise ActiveRecord::Rollback
908
+ end
909
+ else
910
+ transaction_is_ok = false
911
+ raise ActiveRecord::Rollback
912
+ end
913
+ end
914
+ self.process_transaction_injections(local_data[:item], :create, :after_transaction, nil)
915
+
916
+ # rendering page
917
+ if transaction_is_ok
918
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('management_ok'), message: I18n.t("#{self.to_i18n}.management.messages.add_management_ok")}
919
+ else
920
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('management_error'), message: I18n.t("#{self.to_i18n}.management.messages.add_management_error")}
921
+ end
922
+ else
923
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('entry_already_in_set'), message: I18n.t("#{self.to_i18n}.management.messages.entry_already_in_set")}
924
+ end
925
+ end
926
+
927
+ def manage_items_remove
928
+
929
+ unless self.class.respond_to?(:get_kb_page)
930
+ raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
931
+ end
932
+
933
+ local_data = {
934
+ errors: [],
935
+ messages: [],
936
+ page: self.class.get_kb_page(:management)
937
+ }
938
+
939
+ options = {
940
+ logger: string_logger
941
+ }
942
+
943
+ unless local_data[:page]
944
+ respond_to do |format|
945
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
946
+ format.json { render_json_page_404 }
947
+ end
948
+ return
949
+ end
950
+
951
+ # getting management settings
952
+ local_data[:management_settings] = local_data[:page].managements[:manage] if local_data[:page].managements
953
+
954
+ unless local_data[:management_settings]
955
+ respond_to do |format|
956
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
957
+ format.json { render_json_page_404 }
958
+ end
959
+ return
960
+ end
961
+
962
+
963
+ local_container_class = local_data[:management_settings].container_class
964
+ local_container_id_property = local_data[:management_settings].container_id_property
965
+ local_item_class = local_data[:management_settings].item_class
966
+ local_entry_id_property = local_data[:management_settings].entry_id_property
967
+ local_entry_class = local_data[:management_settings].entry_class
968
+
969
+
970
+ # fill parent for data
971
+ filters_for_parents = {}
972
+ self.fill_obligatory_filters(filters_for_parents)
973
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
974
+
975
+ #loading container from database
976
+ filters_4_container = {}
977
+ self.fill_obligatory_filters(filters_4_container)
978
+ local_data[:container] = local_container_class.get_entry_by_id(params[local_container_id_property], filters_4_container, options)
979
+ #checking if container not found
980
+ unless local_data[:container]
981
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('set_not_found'), message: I18n.t("#{self.to_i18n}.management.messages.set_not_found", id: params[local_container_id_property])}
982
+ return
983
+ end
984
+
985
+
986
+ # loading item from database
987
+ filters_4_item = {}
988
+ self.fill_obligatory_filters(filters_4_item)
989
+ filters_4_item[local_container_id_property] = params[local_container_id_property]
990
+ filters_4_item[local_entry_id_property] = params[:entry_id]
991
+
992
+ local_data[:item] = local_item_class.get_entries(nil, filters_4_item, options).first
993
+
994
+
995
+ unless local_data[:item]
996
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('item_not_found'), message: I18n.t("#{self.to_i18n}.management.messages.item_not_found", entry_id: params[:entry_id])}
997
+ return
998
+ end
999
+
1000
+ if local_data[:item].destroy
1001
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('management_ok'), message: I18n.t("#{self.to_i18n}.management.messages.remove_management_ok")}
1002
+ else
1003
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('management_error'), message: I18n.t("#{self.to_i18n}.management.messages.remove_management_error")}
1004
+ end
1005
+ end
1006
+
1007
+
1008
+ def sort_items
1009
+
1010
+ unless self.class.respond_to?(:get_kb_page)
1011
+ raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
1012
+ end
1013
+
1014
+ local_data = {
1015
+ errors: [],
1016
+ messages: [],
1017
+ page: self.class.get_kb_page(:sorting)
1018
+ }
1019
+
1020
+ options = {
1021
+ logger: string_logger
1022
+ }
1023
+
1024
+ unless local_data[:page]
1025
+ respond_to do |format|
1026
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
1027
+ format.json { render_json_page_404 }
1028
+ end
1029
+ return
1030
+ end
1031
+
1032
+ # getting sorting settings
1033
+ local_data[:sorting_settings] = local_data[:page].sortings[:sort] if local_data[:page].sortings
1034
+
1035
+ unless local_data[:sorting_settings]
1036
+ respond_to do |format|
1037
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
1038
+ format.json { render_json_page_404 }
1039
+ end
1040
+ return
1041
+ end
1042
+
1043
+ #raise "SORTING: sorting settings error" unless local_data[:sorting_settings]
1044
+
1045
+ local_container_class = local_data[:sorting_settings].container_class
1046
+ local_container_id_property = local_data[:sorting_settings].container_id_property
1047
+ local_item_class = local_data[:sorting_settings].item_class
1048
+ local_entry_id_property = local_data[:sorting_settings].entry_id_property
1049
+ local_entry_class = local_data[:sorting_settings].entry_class
1050
+
1051
+
1052
+ # fill parent for data
1053
+ filters_for_parents = {}
1054
+ self.fill_obligatory_filters(filters_for_parents)
1055
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
1056
+
1057
+
1058
+ #loading container data
1059
+ filters_4_container = {}
1060
+ self.fill_obligatory_filters(filters_4_container)
1061
+ filters_4_container.merge!(local_data[:parent_ids])
1062
+ # retrieving container from database
1063
+ local_data[:container] = local_container_class.get_entry_by_id(params[local_container_id_property], filters_4_container, options)
1064
+ # filling filters for items
1065
+ filters_4_items = {}
1066
+ self.fill_obligatory_filters(filters_4_items)
1067
+ filters_4_items.merge!(local_data[:parent_ids])
1068
+ filters_4_items[local_container_id_property] = params[local_container_id_property]
1069
+ filters_4_items[:order] = ::Core::Store::CollectionProduct.for_sql_order_by(:sort_position, :asc)
1070
+ # retrieving items from database
1071
+ local_data[:items] = local_item_class.get_entries(nil, filters_4_items, options)
1072
+
1073
+
1074
+ # building breadcrumbs
1075
+ home_controller = self.class.get_method_latest_result(:get_kb_home_controller)
1076
+ home_controller = eval(home_controller) if home_controller and home_controller.is_a?(String)
1077
+ add_new_breadcrumb(I18n.t("#{home_controller.to_i18n}.index.title"), home_controller.to_url_for(:index)) if home_controller
1078
+ parent_ids = {}
1079
+ local_data[:parents].each do |parent|
1080
+ # breadcrumbs: adding parent index
1081
+ add_new_breadcrumb(I18n.t("#{parent[:controller].to_i18n}.index.title"), parent[:controller].to_url_for(:index, parent_ids))
1082
+ # breadcrumbs: getting parent entry name
1083
+ parent_entry_name = nil
1084
+ parent_entry_name = parent[:entry].name_for_breadcrumbs if parent[:entry].respond_to?(:name_for_breadcrumbs)
1085
+ parent_entry_name = parent[:entry].id unless parent_entry_name
1086
+ # breadcrumbs: adding parent entry
1087
+ add_new_breadcrumb(parent_entry_name, parent[:controller].to_url_for(:show, parent_ids.merge(id: parent[:entry].id)))
1088
+ parent_ids[parent[:id_param]] = parent[:id_value]
1089
+ end if local_data[:parents]
1090
+ # breadcrumbs: adding current index
1091
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.index.title"), self.to_url_for(:index, local_data[:parent_ids]))
1092
+ add_new_breadcrumb(I18n.t("#{self.to_i18n}.sorting.title"))
1093
+
1094
+
1095
+ respond_to do |format|
1096
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :sorting)}", locals: {data: local_data} }
1097
+ format.json { render_json_ok local_data }
1098
+ end
1099
+
1100
+ end
1101
+
1102
+ def sort_items_process
1103
+
1104
+
1105
+ unless self.class.respond_to?(:get_kb_page)
1106
+ raise "Method :get_kb_page must be implemented for controller '#{self.class}'"
1107
+ end
1108
+
1109
+ local_data = {
1110
+ errors: [],
1111
+ messages: [],
1112
+ page: self.class.get_kb_page(:sorting)
1113
+ }
1114
+
1115
+ options = {
1116
+ logger: string_logger
1117
+ }
1118
+
1119
+ unless local_data[:page]
1120
+ respond_to do |format|
1121
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
1122
+ format.json { render_json_page_404 }
1123
+ end
1124
+ return
1125
+ end
1126
+
1127
+ # getting sorting settings
1128
+ local_data[:sorting_settings] = local_data[:page].sortings[:sort] if local_data[:page].sortings
1129
+
1130
+ unless local_data[:sorting_settings]
1131
+ respond_to do |format|
1132
+ format.html { render_html1 "#{self.class.get_method_latest_result(:get_kb_template)}#{self.class.get_method_latest_result(:get_kb_view_path, :page_404)}" }
1133
+ format.json { render_json_page_404 }
1134
+ end
1135
+ return
1136
+ end
1137
+
1138
+ #raise "SORTING: sorting settings error" unless local_data[:sorting_settings]
1139
+
1140
+ local_container_class = local_data[:sorting_settings].container_class
1141
+ local_container_id_property = local_data[:sorting_settings].container_id_property
1142
+ local_item_class = local_data[:sorting_settings].item_class
1143
+ local_entry_id_property = local_data[:sorting_settings].entry_id_property
1144
+ local_entry_class = local_data[:sorting_settings].entry_class
1145
+
1146
+
1147
+ # fill parent for data
1148
+ filters_for_parents = {}
1149
+ self.fill_obligatory_filters(filters_for_parents)
1150
+ self.fill_parents_for_local_data(local_data, filters_for_parents)
1151
+
1152
+ #loading container from database
1153
+ filters_4_container = {}
1154
+ self.fill_obligatory_filters(filters_4_container)
1155
+ local_data[:container] = local_container_class.get_entry_by_id(params[local_container_id_property], filters_4_container, options)
1156
+ #checking if container not found
1157
+ unless local_data[:container]
1158
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('set_not_found'), message: I18n.t("#{self.to_i18n}.management.messages.set_not_found", id: params[local_container_id_property])}
1159
+ return
1160
+ end
1161
+
1162
+
1163
+ # loading items from database one by one and processing them
1164
+ # filters_4_item = {}
1165
+ # self.fill_obligatory_filters(filters_4_item)
1166
+ # filters_4_item[local_container_id_property] = params[local_container_id_property]
1167
+
1168
+
1169
+ filters_4_item = {}
1170
+ self.fill_obligatory_filters(filters_4_item)
1171
+ filters_4_item[local_container_id_property] = params[local_container_id_property]
1172
+ #filters_4_item[local_entry_id_property] = id
1173
+
1174
+
1175
+ result_is_ok = false
1176
+ if params[:items]
1177
+ begin
1178
+ ActiveRecord::Base.transaction do
1179
+ params[:items].each_with_index do |id, index|
1180
+ logger.info("ITEMID: #{id}")
1181
+
1182
+ logger.info "ITEM FILTERS: #{filters_4_item.to_json}"
1183
+ item = local_item_class.get_entry_by_id(id, filters_4_item, options)
1184
+ if item
1185
+ item.sort_position = index + 1
1186
+ item.save
1187
+ end
1188
+ end
1189
+ result_is_ok = true
1190
+ end
1191
+ end
1192
+ end
1193
+ if result_is_ok == true
1194
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('management_ok'), message: I18n.t("#{self.to_i18n}.sorting.messages.management_ok")}
1195
+ else
1196
+ render json: {status: ::ChupakabraTools::SetManagementResult.id_by_tag('management_error'), message: I18n.t("#{self.to_i18n}.sorting.messages.management_error")}
1197
+ end
1198
+ end
1199
+
1200
+ end
398
1201
  end
399
1202
 
1203
+
400
1204
  ################################################################################################################
401
1205
  ######################################### Ajax Modules ###############################################
402
1206
  ################################################################################################################
@@ -410,23 +1214,25 @@ module KirguduBase
410
1214
  return
411
1215
  end
412
1216
 
413
- local_page = self.class.get_kb_page(:update)
1217
+ local_data = {}
1218
+ local_data[:page] = self.class.get_kb_page(:update)
1219
+
414
1220
 
415
- unless local_page
1221
+ unless local_data[:page]
416
1222
  render text: '<span style = "color: red;"><b>ERROR OCCURRED!!!</b></span>'
417
1223
  return
418
1224
  end
419
1225
 
420
1226
 
421
- local_entry = self.entry_class.get_entry_by_id(params[:id], nil, {logger: string_logger})
422
- if local_entry
1227
+ local_data[:entry] = self.entry_class.get_entry_by_id(params[:id], nil, {logger: string_logger})
1228
+ if local_data[:entry]
423
1229
  result_string = ''
424
1230
  begin
425
- unless local_entry[params[:field_name]] == params[:value]
426
- local_entry[params[:field_name]] = params[:value]
427
- local_entry.updated_at = Time.now
428
- local_entry.updater = @current_user
429
- unless local_entry.save
1231
+ unless local_data[:entry][params[:field_name]] == params[:value]
1232
+ local_data[:entry][params[:field_name]] = params[:value]
1233
+ local_data[:entry].updated_at = Time.now
1234
+ local_data[:entry].updater = @current_user
1235
+ unless local_data[:entry].save
430
1236
  result_string = '<span style = "color: red;"><b>FAILED TO SAVE!!!</b></span>'
431
1237
  end
432
1238
  end
@@ -435,7 +1241,7 @@ module KirguduBase
435
1241
  end
436
1242
  if result_string.blank?
437
1243
  begin
438
- result_string = local_entry.send(params[:field_name])
1244
+ result_string = local_data[:entry].send(params[:field_name])
439
1245
  rescue
440
1246
  result_string = '<span style = "color: red;"><b>ERROR OCCURRED!!!</b></span>'
441
1247
  end