anoubis 1.0.1 → 1.0.10

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -0
  3. data/app/controllers/anoubis/application_controller.rb +4 -0
  4. data/app/controllers/anoubis/core/index/actions.rb +1 -1
  5. data/app/controllers/anoubis/core/index_controller.rb +3 -3
  6. data/app/controllers/anoubis/data/actions.rb +947 -0
  7. data/app/controllers/anoubis/data/callbacks.rb +66 -0
  8. data/app/controllers/anoubis/data/convert.rb +422 -0
  9. data/app/controllers/anoubis/data/defaults.rb +215 -0
  10. data/app/controllers/anoubis/data/get.rb +529 -0
  11. data/app/controllers/anoubis/data/load.rb +87 -0
  12. data/app/controllers/anoubis/data/set.rb +47 -0
  13. data/app/controllers/anoubis/data/setup.rb +102 -0
  14. data/app/controllers/anoubis/data_controller.rb +21 -0
  15. data/app/controllers/anoubis/etc/field.rb +7 -0
  16. data/app/controllers/anoubis/output/basic.rb +1 -1
  17. data/app/controllers/anoubis/sso/client/index_controller.rb +2 -2
  18. data/app/controllers/anoubis/sso/server/login_controller.rb +5 -5
  19. data/app/controllers/anoubis/sso/server/user_controller.rb +2 -2
  20. data/app/controllers/anoubis/tenant/index_controller.rb +3 -3
  21. data/app/models/anoubis/application_record.rb +141 -0
  22. data/app/services/anoubis/log_service.rb +97 -0
  23. data/app/services/anoubis/request_service.rb +134 -0
  24. data/config/locales/en.yml +20 -6
  25. data/config/locales/ru.yml +25 -13
  26. data/config/routes.rb +19 -19
  27. data/lib/anoubis/version.rb +1 -1
  28. metadata +32 -33
  29. data/app/controllers/anoubis/core/data/actions.rb +0 -962
  30. data/app/controllers/anoubis/core/data/callbacks.rb +0 -68
  31. data/app/controllers/anoubis/core/data/convert.rb +0 -407
  32. data/app/controllers/anoubis/core/data/defaults.rb +0 -217
  33. data/app/controllers/anoubis/core/data/get.rb +0 -531
  34. data/app/controllers/anoubis/core/data/load.rb +0 -89
  35. data/app/controllers/anoubis/core/data/set.rb +0 -49
  36. data/app/controllers/anoubis/core/data/setup.rb +0 -104
  37. data/app/controllers/anoubis/core/data_controller.rb +0 -28
  38. data/app/controllers/anoubis/sso/client/data/actions.rb +0 -5
  39. data/app/controllers/anoubis/sso/client/data/callbacks.rb +0 -5
  40. data/app/controllers/anoubis/sso/client/data/convert.rb +0 -5
  41. data/app/controllers/anoubis/sso/client/data/defaults.rb +0 -5
  42. data/app/controllers/anoubis/sso/client/data/get.rb +0 -5
  43. data/app/controllers/anoubis/sso/client/data/load.rb +0 -26
  44. data/app/controllers/anoubis/sso/client/data/set.rb +0 -5
  45. data/app/controllers/anoubis/sso/client/data/setup.rb +0 -5
  46. data/app/controllers/anoubis/sso/client/data_controller.rb +0 -21
  47. data/app/controllers/anoubis/tenant/data/actions.rb +0 -11
  48. data/app/controllers/anoubis/tenant/data/callbacks.rb +0 -11
  49. data/app/controllers/anoubis/tenant/data/convert.rb +0 -11
  50. data/app/controllers/anoubis/tenant/data/defaults.rb +0 -11
  51. data/app/controllers/anoubis/tenant/data/get.rb +0 -11
  52. data/app/controllers/anoubis/tenant/data/load.rb +0 -52
  53. data/app/controllers/anoubis/tenant/data/set.rb +0 -11
  54. data/app/controllers/anoubis/tenant/data/setup.rb +0 -11
  55. data/app/controllers/anoubis/tenant/data_controller.rb +0 -28
  56. data/app/controllers/anoubis/tenants_controller.rb +0 -7
  57. data/app/controllers/anoubis/users_controller.rb +0 -7
  58. data/app/mailers/anoubis/application_mailer.rb +0 -8
@@ -0,0 +1,215 @@
1
+ module Anoubis
2
+ module Data
3
+ ##
4
+ # Module sets default parameters for {DataController}.
5
+ module Defaults
6
+ ##
7
+ # Sets hash of defined tabs. Every tab consists of next attributes:
8
+ #
9
+ # *Attributes:*
10
+ # - *:title* (String) --- title of the tab
11
+ # - *:where* (Hash | Array) --- hash or array of where parameters for ActiveRecord request. If doesn't present
12
+ # then there are no additional where statements for current tab
13
+ #
14
+ # @return [Hash] returns hash of assigned tabs.
15
+ #
16
+ # @example Sets custom tabs
17
+ # def tabs
18
+ # {
19
+ # :all => {
20
+ # title: 'All IDs'
21
+ # },
22
+ # :id_1 => {
23
+ # title: 'Only ID 1',
24
+ # where: { id: 1 }
25
+ # },
26
+ # :other_id => {
27
+ # title: 'Other IDs',
28
+ # where: ['id > ?', 1]
29
+ # }
30
+ # }
31
+ # end
32
+ def tabs
33
+ {
34
+ :default => {
35
+ title: I18n.t('anoubis.default_tab'),
36
+ tips: I18n.t('anoubis.default_tab_hint')
37
+ }
38
+ }
39
+ end
40
+
41
+ ##
42
+ # Sets frame buttons for every using tab.
43
+ # Key of the button is an action for frontend application. Every button consists of next attributes:
44
+ #
45
+ # *Attributes:*
46
+ # - *:type* (String) <i>(defaults to: 'default')</i> --- type of the button ('primary', 'danger', 'default')
47
+ # - *:mode* (String) <i>(defaults to: 'single')</i> --- button action object ('single', 'multiple')
48
+ #
49
+ # By default system defines two buttons: 'New' (for create new element in table) and 'Delete' (for
50
+ # delete multiple element)
51
+ #
52
+ # @param [Hash] args additional parameters are used for define frame buttons.
53
+ # @option args [String] :tab current tab is used for generation
54
+ #
55
+ # @return [Hash] returns hash of assigned buttons.
56
+ #
57
+ # @example Sets no buttons
58
+ # def frame_buttons(args = {})
59
+ # {
60
+ # }
61
+ # end
62
+ #
63
+ # @example Sets only 'New' button
64
+ # def frame_buttons(args = {})
65
+ # {
66
+ # new: { type: 'primary' }
67
+ # }
68
+ # end
69
+ def frame_buttons(args = {})
70
+ {
71
+ new: { type: 'primary' },
72
+ delete: { mode: 'multiple', type: 'danger' }
73
+ }
74
+ end
75
+
76
+ ##
77
+ # Returns model that is used for controller actions. By default it's not defined.
78
+ # This is primary model and it must be defined in customer conroller. Different models may be defined according
79
+ # by {Anoubis::Etc::Base#action self.etc.action} attribute.
80
+ # @return [Anoubis::ApplicationRecord, nil, any] returns model
81
+ def model
82
+ nil
83
+ end
84
+
85
+ ##
86
+ # Returns defined select fields. If returns nil, then return default select fields
87
+ def select
88
+ nil
89
+ end
90
+
91
+ ##
92
+ # Returns eager load parameters that are used for controller actions. By default it's set to \[\].
93
+ # This procedure could be redefined in cusomer controller. Different eager loads may be defined according
94
+ # by {Anoubis::Etc::Base#action self.etc.action} attribute.
95
+ def eager_load
96
+ []
97
+ end
98
+
99
+ ##
100
+ # Returns fields that is used for controller actions in defined {#model}. By default it's defined for id field.
101
+ # This is primary definition and it must be defined in customer conroller. Different fields may be defined according
102
+ # by {Anoubis::Etc::Base#action self.etc.action} attribute.
103
+ # @return [Hash] returns defined fields for current model
104
+ def fields
105
+ {
106
+ id: { type: 'number', precision: 0 }
107
+ }
108
+ end
109
+
110
+ ##
111
+ # Get array of field's identifiers in desired order. By default it's current defined order of all fields.
112
+ def fields_order
113
+ result = []
114
+ self.etc.data.fields.each_key do |key|
115
+ result.push key.to_s
116
+ end
117
+ result
118
+ end
119
+
120
+ ##
121
+ # Get array of field's identifiers in desired order for filter form. By default it's current defined order of all fields.
122
+ def filter_order
123
+ self.fields_order
124
+ end
125
+
126
+ ##
127
+ # Returns parent model that is used for controller actions. By default it's defined as <i>nil</i>.
128
+ # This procedure could be redefined in customer controller. Different models may be defined according
129
+ # by {Anoubis::Etc::Base#action self.etc.action} attribute.
130
+ # @return [Anoubis::ApplicationRecord, nil] returns model
131
+ def parent_model
132
+ nil
133
+ end
134
+
135
+ ##
136
+ # Returns eager load parameters for parent model that are used for controller actions. By default it's set to \[\].
137
+ # This procedure could be redefined in customer controller. Different eager loads may be defined according
138
+ # by {Anoubis::Etc::Base#action self.etc.action} attribute.
139
+ def parent_eager_load
140
+ []
141
+ end
142
+
143
+ ##
144
+ # Returns parent model id. By default it's set to 0.
145
+ # This procedure could be rewrote in customer controller.
146
+ def parent_id
147
+ return 0
148
+ end
149
+
150
+ ##
151
+ # @!group Block of default controller table actions
152
+
153
+ ##
154
+ # Sets default table actions for every row
155
+ # @return [Array] return string array of action identifiers
156
+ def table_actions
157
+ %w[edit delete]
158
+ end
159
+
160
+ ##
161
+ # Returns possibility of 'edit' action for current row
162
+ # @param row [ActiveRecord] single model's data row
163
+ def table_action_edit(row)
164
+ row.can_edit({ controller: params[:controller], tab: self.etc.tab })
165
+ end
166
+
167
+ ##
168
+ # Returns possibility of 'delete' action for current row
169
+ # @param row [ActiveRecord] single model's data row
170
+ def table_action_delete(row)
171
+ row.can_delete({ controller: params[:controller], tab: self.etc.tab })
172
+ end
173
+
174
+ ##
175
+ # Returns default where condition
176
+ # @return [Hash, Array] default where condition
177
+ def where
178
+ []
179
+ end
180
+
181
+ #@!endgroup
182
+
183
+ ##
184
+ # Returns export format for current action. Procedure is rewrote for change default export format.
185
+ def export_format
186
+ 'xls'
187
+ end
188
+
189
+ ##
190
+ # Returns filter possibility for defined options. It's rewrote for custom controllers.
191
+ # @param [Hash] args additional parameters.
192
+ # @option args [String] :tab current tab is used for generation
193
+ # @return [Boolean] Possibility of filter table data. Default: true
194
+ def is_filter(args = {})
195
+ true
196
+ end
197
+
198
+ ##
199
+ # Returns export possibility for defined options. It's rewrote for custom controllers.
200
+ # @param [Hash] args additional parameters.
201
+ # @option args [String] :tab current tab is used for generation
202
+ # @return [Boolean] Possibility of export table data. Default: true
203
+ def is_export(args = {})
204
+ true
205
+ end
206
+
207
+ ##
208
+ # Returns field name for manual table order or nil if table can't be sorted manually.
209
+ # @return [String] Field name for manual table order
210
+ def is_sortable
211
+ nil
212
+ end
213
+ end
214
+ end
215
+ end