kirgudu_base 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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