motor-admin 0.2.53 → 0.2.57

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 67bb67c4a201104a29894b80a8bd242f1cf10b49cb6d385714581e7cc7497879
4
- data.tar.gz: 7982ff5d3c3636c2f6fd4216cd038e33c62f4af603a345900cf05512b5b1fe54
3
+ metadata.gz: 7e3657c2a6c5c2d025d887aff5e53b166b6ec8b434153d2ed72bc3b084363a3b
4
+ data.tar.gz: 162c942ea91f8645567d59017b3a0852197673997bba463cd54196f4657c715a
5
5
  SHA512:
6
- metadata.gz: 949241fdf2ac8b47d2eb1ff796f11b2784a45226a2abf23bc4ffcb60a2c5f0947e02dd04b20d488f9fcb52ba06eedffc5cccff9d3fcf1a1dd253157bda133e0d
7
- data.tar.gz: '08b26b86e8cdd556b1230a09539a891aa0c6b863b6a6f3bf62ccb69926bdbbd057fb6a38bb5bfd384652fda1a73aab02d2edbebedf6175c254656e6aa2817caa'
6
+ metadata.gz: c18c6fed8fcaa804915e503f0d0277e8660333555acfa82673d9a3d1f3d55b1a1e5b7c3b72d18e178422576c7d5428d26d38a39b3900b2b58c1e65d8b8ef0167
7
+ data.tar.gz: 3d98b122b9ec65c67a99df3b90595442e981d41d2441b426fe1aec99b0de65deb30c07f85c76e6013700cb70bd0abffed03561dc6b044e0f4c79634f529c01de
@@ -33,7 +33,7 @@ module Motor
33
33
  def set_i18n_locale
34
34
  configs = Motor::Configs::LoadFromCache.load_configs(cache_key: cache_keys[:configs])
35
35
 
36
- I18n.locale = configs.find { |c| c.key == 'language' }&.value || I18n.locale
36
+ I18n.locale = configs.find { |c| c.key == 'language' }&.value&.to_sym || I18n.locale
37
37
  end
38
38
 
39
39
  def cache_keys
@@ -0,0 +1,389 @@
1
+ el:
2
+ motor:
3
+ action_has_been_applied: Η ενέργεια έχει εφαρμοστεί!
4
+ action_has_failed_with_code: Η ενέργεια απέτυχε με κωδικό
5
+ action_type: Τύπος ενέργειας
6
+ actions: Ενέργειες
7
+ add: Προσθληκη
8
+ add_action: Προσθήκη ενέργειας
9
+ add_alert: Προσθήκη ειδοποίησης
10
+ add_column: Προσθήκη Στήλης
11
+ add_dashboard: Προσθήκη Ταμπλό
12
+ add_field: Προσθήκη Πεδίου
13
+ add_filter: Προσθήκη Φίλτρου
14
+ add_form: Προσθήκη Φόρμας
15
+ add_group: Προσθήκη Ομάδας
16
+ add_item: Προσθήκη Αντικειμένου
17
+ add_link: Προσθήκη Συνδέσμου
18
+ add_query: Προσθήκη Ερωτήματος
19
+ add_scope: Προσθήκη πεδίου εφαρμογής
20
+ add_tab: Προσθήκη Καρτέλας
21
+ adjust_form: Προσαρμογή φόρμας
22
+ adjust_fields: Προσαρμογή πεδίων
23
+ alert_email_has_been_sent: Το email ειδοποίησης έχει σταλεί!
24
+ alert_has_been_activated: Η ειδοποίηση έχει ενεργοποιηθεί
25
+ alert_has_been_disabled: Η ειδοποίηση έχει απενεργοποιηθεί
26
+ alert_has_been_saved: Η ειδοποίηση έχει σωθεί!
27
+ alert_name: Όνομα ειδοποίησης
28
+ alerts: Ειδοποιήσεις
29
+ all: Όλα
30
+ all_resources: Όλοι οι πόροι
31
+ and: Και
32
+ api: API
33
+ api_path: Διαδρομή API
34
+ api_request: Αίτημα API
35
+ apply: Εφαρμογή
36
+ are_you_sure: Είστε σίγουροι;
37
+ associations: Συνδέσεις
38
+ bar_chart: Ραβδόγραμμα
39
+ base: Βάση
40
+ boolean: Boolean
41
+ build_custom_form: Δημιουργία προσαρμοσμένης φόρμας
42
+ cancel: Ακύρωση
43
+ cents: Σεντς
44
+ checkbox: Checkbox
45
+ clear_all: Εκκαθάριση όλων
46
+ clear_selection: Εκκαθάριση επιλογής
47
+ close: Κλείσιμο
48
+ close_editor: Κλείσιμο επεξεργαστή
49
+ close_settings: Κλείσιμο ρυθμίσεων
50
+ close_variables: Κλείσιμο μεταβλητών
51
+ columns: Στήλες
52
+ contains: Περιέχει
53
+ create: Δημιουργία
54
+ currency: Νόμισμα
55
+ dashboard: Ταμπλό
56
+ dashboard_has_been_saved: Το ταμπλό έχει αποθηκευτεί!
57
+ dashboard_title: Τίτλος ταμπλό
58
+ dashboards: Ταμπλό
59
+ date: Ημερομηνία
60
+ date_and_time: Ημερομηνία και ώρα
61
+ decimal: Δεκαδικό
62
+ default: Προεπιλεγμένο
63
+ default_value: Προεπιλεγμένη τιμή
64
+ describe_this_alert_optional: Περιγράψτε αυτή την ειδοποίηση (προαιρετικά)
65
+ describe_your_dashboard_optional: Περιγράψτε το ταμπλό σας (προαιρετικά)
66
+ describe_your_form_optional: Περιγράψτε τη φόρμα σας (προαιρετικά)
67
+ describe_your_query_optional: Περιγράψτε το ερώτημά σας (προαιρετικά)
68
+ description: Περιγραφή
69
+ deselect_all: Αποεπιλέξτε όλα
70
+ details: Λεπτομέρειες
71
+ disable: Απενεργοποίηση
72
+ display_as: Εμφάνιση ως
73
+ edit: Επεξεργασία
74
+ edit_sql: Επεξεργασία SQL
75
+ edit_markdown: Επεξεργασία Markdown
76
+ emails: Emails
77
+ ends_with: Τελειώνει με
78
+ equal_to: Ίσο με
79
+ every_day_at_hh_mm: κάθε μέρα στις HH:mm PM...
80
+ excludes: εξαιρείται
81
+ field_is_not_a_number: '%{field} δεν είναι αριθμός'
82
+ field_is_required: '%{field} απαιτείται'
83
+ field_list_cant_be_empty: "%{field} λίστα δεν μπορεί να είναι άδεια"
84
+ field_must_be_exactly_in_length: '%{field} πρέπει να είναι ακριβώς %{length} σε μήκος'
85
+ field_must_be_less_in_length: '%{field} πρέπει να είναι μικρότερο από %{length} σε μήκος'
86
+ field_must_be_more_in_length: '%{field} πρέπει να είναι μεγαλύτερο από %{length} σε μήκος'
87
+ field_name: Όνομα πεδίου
88
+ field_value_does_not_match_pattern: '%{field} η τιμή δεν ταιριάζει με %{pattern}'
89
+ file: Αρχείο
90
+ filter: Φίλτρο
91
+ filters: Φίλτρα
92
+ form: Φόρμα
93
+ form_has_been_saved: Η φόρμα έχει αποθηκευτεί!
94
+ form_has_been_submitted_successfully: Η φόρμα υποβλήθηκε επιτυχώς!
95
+ form_name: Όνομα φόρμας
96
+ forms: Φόρμες
97
+ funnel: Funnel
98
+ greater_or_equal: Μεγαλύτερο ή ίσο
99
+ greater_than: Μεγαλύτερο από
100
+ greater_than_or_equal_to: Μεγαλύτερο ή ίσο με
101
+ group_name: Όνομα ομάδας
102
+ has_been_created: έχει δημιουργηθεί
103
+ has_been_removed_succesfully: έχει αφαιρεθεί επιτυχώς
104
+ has_been_updated: έχει ενημερωθεί
105
+ hello_admin: Γεια σου Διαχειριστή 👋
106
+ hidden: Κρυφό
107
+ image: Εικόνα
108
+ includes: Περιλαμβάνει
109
+ input_type: Τύπος εισόδου
110
+ integer: Ακέραιος αριθμός
111
+ interval: Interval
112
+ is: Είναι
113
+ is_not: Δεν είναι
114
+ items_have_been_removed: τα στοιχεία έχουν αφαιρεθεί
115
+ items_will_be_removed: '%{count} τα στοιχεία θα αφαιρεθούν'
116
+ json: JSON
117
+ label: Νόμισμα
118
+ less_or_equal: Λιγότερο ή ίσο
119
+ less_than: Λιγότερο από
120
+ less_than_or_equal_to: Λιγότερο ή ίσο με
121
+ line_chart: Γραμμικό γράφημα
122
+ link_name: Όνομα συνδέσμου
123
+ links: Σύνδεσμοι
124
+ load_initial_data: Φόρτωση αρχικών δεδομένων
125
+ loading: Φόρτωση...
126
+ looks_like_you_are_new_here: Φαίνεται ότι είστε νέος εδώ 🙃
127
+ markdown: Markdown
128
+ method: Μέθοδος
129
+ method_call: Κλήση μεθόδου
130
+ multiple: Πολλαπλό
131
+ name: Όνομα
132
+ new_alert: Νέα ειδοποίηση
133
+ new_dashboard: Νέο ταμπλό
134
+ new_form: Νέα φόρμα
135
+ new_query: Νέο ερώτημα
136
+ no_data: Δεν υπάρχουν δεδομένα
137
+ not_found: Δεν βρέθηκε
138
+ number: Αριθμός
139
+ ok: ΟΚ
140
+ options_separated_with_new_line_or_comma: Επιλογές χωρισμένες με νέα γραμμή ή κόμμα
141
+ or: Ή
142
+ other_than: Άλλο εκτός από
143
+ param_name: Όνομα παραμέτρου
144
+ password: Κωδικός
145
+ path: Διαδρομή
146
+ percent: Ποσοστό
147
+ pie_chart: Διάγραμμα πίτας
148
+ queries: Ερωτήματα
149
+ query: Ερώτημα
150
+ query_has_been_saved: Το ερώτημα έχει αποθηκευτεί!
151
+ query_name: Όνομα ερωτήματος
152
+ query_not_selected: Το ερώτημα δεν έχει επιλεγεί
153
+ query_revisions: Αναθεωρήσεις ερωτημάτων
154
+ read_only: Μόνο για ανάγνωση
155
+ read_write: Ανάγνωση-Εγγραφή
156
+ reference: Παραπομπή
157
+ reference_resource: Πόρος αναφοράς
158
+ remove: Αφαίρεση
159
+ reports: Αναφορές
160
+ request_param: Παράμετρος αιτήματος
161
+ required: Απαιτούμενο
162
+ resource_filters: '%{resource} Φίλτρα'
163
+ resource_settings: '%{resource} Ρυθμίσεις'
164
+ resources: Πόροι
165
+ resubmit: Επαναϋποβολή
166
+ revert: Αναστρέψτε το
167
+ revision_has_been_applied: Εφαρμόστηκε η αναθεώρηση
168
+ revisions: Αναθεωρήσεις
169
+ richtext: Πλούσιο κείμενο
170
+ row_chart: Διάγραμμα γραμμής
171
+ save: Αποθήκευση
172
+ save_and_create_new: Αποθήκευση και δημιουργία νέου
173
+ save_as_new: Αποθήκευση ως νέο
174
+ save_dashboard: Αποθήκευση ταμπλό
175
+ save_form: Αποθήκευση φόρμας
176
+ save_query: Αποθήκευση ερωτήματος
177
+ scopes: Πεδία εφαρμογής
178
+ search: Αναζήτηση
179
+ search_placeholder: Αναζήτηση...
180
+ search_query: Ερώτημα αναζήτησης
181
+ select: Επιλογή
182
+ select_alert_tags: Επιλέξτε ετικέτες ειδοποίησης
183
+ select_dashboard: Επιλέξτε ταμπλό
184
+ select_dashboard_tags: Επιλέξτε ετικέτες ταμπλό
185
+ select_form: Επιλέξτε φόρμα
186
+ select_form_tags: Επιλέξτε ετικέτες dashform
187
+ select_options: Επιλέξτε επιλογές
188
+ select_placeholder: Επιλογή...
189
+ select_query: Επιλέξτε ερώτημα
190
+ select_query_tags: Επιλέξτε ετικέτες ερωτήματος
191
+ select_resource_placeholder: Επιλέξτε πόρο...
192
+ selected_item_has_been_removed: Το επιλεγμένο στοιχείο έχει αφαιρεθεί
193
+ selected_item_will_be_removed: Το επιλεγμένο στοιχείο θα αφαιρεθεί
194
+ selected_item_will_be_removed_are_you_sure: Το επιλεγμένο στοιχείο θα αφαιρεθεί. Είστε σίγουροι;
195
+ send_empty: Να σταλεί άδειο;
196
+ send_now: Αποστολή τώρα
197
+ send_to: Αποστολή προς
198
+ set_tags: Ορισμός ετικετών
199
+ settings: Ρυθμίσεις
200
+ should_be_a_valid_json: '%{field} θα πρέπει να είναι ένα έγκυρο JSON'
201
+ should_be_error_constraint: '%{field} θα πρέπει να είναι %{error} %{constraint}'
202
+ stacked_bars: Στοιβαγμένες μπάρες
203
+ starts_with: Ξεκινάει με
204
+ submit: Υποβολή
205
+ tab_type: Τύπος καρτέλας
206
+ table: Πίνακας
207
+ tabs: Καρτέλες
208
+ tags: Ετικέτες
209
+ text: Κείμενο
210
+ textarea: Περιοχή κειμένου
211
+ timezone: Ζώνη ώρας
212
+ title: Τίτλος
213
+ type: Τύπος
214
+ unable_to_load_form_data: Αδυναμία φόρτωσης δεδομένων φόρμας
215
+ unable_to_remove_item: Αδυναμία αφαίρεσης στοιχείου
216
+ unable_to_remove_items: Αδυναμία αφαίρεσης στοιχείων
217
+ unable_to_send_email: Αδυναμία αποστολής email
218
+ unable_to_submit_form: Αδυναμία υποβολής φόρμας
219
+ unit: Μονάδα
220
+ value: Τιμή
221
+ values_axis: Άξονας τιμών
222
+ variables: Μεταβλητές
223
+ visibility: Ορατότητα
224
+ visualization: Απεικόνιση
225
+ write_only: Μόνο για εγγραφή
226
+ long_text: Μακρύ κείμενο
227
+ percentage: Ποσοστό
228
+ change: Αλλαγή
229
+ chart: Διάγραμμα
230
+ tag: Ετικέτα
231
+ link: Σύνδεσμος
232
+ color: Χρώμα
233
+ link_text: Κείμενο συνδέσμου
234
+ copied_to_the_clipboard: Αντιγραφή στο πρόχειρο
235
+ queries_can_contain_variable_via_syntax_html: "Τα ερωτήματα μπορούν να περιέχουν μεταβλητές ενσωμάτωσης χρησιμοποιώντας <code>{{variable}}</code> σύνταξη:"
236
+ syntax_is_used_for_if_and_if_not_conditions_html: "<code>{{#variable}} ... {{/variable}}</code> και <code>{{^variable}} ... {{variable}}</code> σύνταξη χρησιμοποιείται για <code>if</code> και <code>if not</code> συνθήκες αντίστοιχα:"
237
+ current_user_variables_are_always_passed_explicitly_and_can_he_used_html: "<code>{{current_user_id}}</code> και <code>{{current_user_email}}</code> μεταβλητές μεταβιβάζονται πάντα ρητά και μπορούν να χρησιμοποιηθούν για να αποφασιστεί ποια δεδομένα θα πρέπει να εμφανίζονται για ορισμένους χρήστες:"
238
+ create_new: Δημιουργία νέου
239
+ conditional: Υπό προϋποθέσεις
240
+ condition: Προϋπόθεση
241
+ field: Πεδίο
242
+ empty: Άδειο
243
+ not_empty: Δεν είναι άδειο
244
+ general: Γενικό
245
+ run: Εκτέλεση
246
+ use_default: Χρήση προεπιλογής
247
+ query_editor: Επεξεργαστής ερωτημάτων
248
+ polymorphic: Πολυμορφικό
249
+ foreign_key: Ξένο κλειδί
250
+ primary_key: Πρωτεύον κλειδί
251
+ through: Μέσω
252
+ source: Πηγή
253
+ resource: Πόρος
254
+ add_association: Προσθήκη σύνδεσης
255
+ there_are_unsaved_changes_from: "Υπάρχουν μη αποθηκευμένες αλλαγές από %{timestamp}"
256
+ clear: Καθαρισμός
257
+ restore: Επαναφορά
258
+ more: Περισσότερα
259
+ add_text: Προσθήκη κειμένου
260
+ edit_text: Επεξεργασία κειμένου
261
+ open_in_markdown_editor: Άνοιγμα σε markdown συντάκτη
262
+ activate: Ενεργοποίηση
263
+ load_existing_options_from_database: Φόρτωση υφιστάμενων επιλογών από τη βάση δεδομένων
264
+ add_database: Προσθήκη βάσης δεδομένων
265
+ audio: Ήχος
266
+ video: Βίντεο
267
+ display_column: Εμφάνιση στήλης
268
+ not_authorized_to_perform_action: Δεν είστε εξουσιοδοτημένοι να εκτελέσετε αυτή την ενέργεια.
269
+ download: Λήψη
270
+ alert: Ειδοποίηση
271
+ downloading: Γίνεται λήψη
272
+ display_id: Εμφάνιση ID
273
+ display_settings: Ρυθμίσεις εμφάνισης
274
+ sign_out: Αποσύνδεση
275
+ header: Επικεφαλίδα
276
+ user_dropdown: Αναδιπλούμενο παράθυρο χρήστη
277
+ upload: Ανέβασμα
278
+ there_is_nothing_here_yet: Δεν υπάρχει τίποτα ακόμα εδώ 🤷‍♂️
279
+ is_null: Είναι null
280
+ is_not_null: Δεν είναι null
281
+ split_tags_by: Διαχωρισμός ετικετών κατά
282
+ do_not_split: Μην χωρίζετε
283
+ semicolon: Ερωτηματικό
284
+ hyphen: Παύλα
285
+ comma: Κόμμα
286
+ slash: Κάθετος
287
+ sql: SQL
288
+ api: API
289
+ searchable_columns: Στήλες με δυνατότητα αναζήτησης
290
+ validate: Επικύρωση
291
+ error_message: Μήνυμα σφάλματος
292
+ validation_regexp: Επικύρωση RegExp
293
+ regexp: RegExp
294
+ message: Μήνυμα
295
+ should_be_a_valid_regexp: Πρέπει να είναι μία έγκυρη RegExp συμβολοσειρά
296
+ order_by: Ταξινόμηση κατά
297
+ ascending: Αύξουσα
298
+ descending: Φθίνουσα
299
+ url: URL
300
+ expand: Επέκταση
301
+ add_api: Προσθήκη API
302
+ on_collection: Κατά τη συλλογή
303
+ association: Σύνδεση
304
+ action_has_been_removed: Η ενέργεια αυτή έχει καταργηθεί
305
+ i:
306
+ locale: el
307
+ select:
308
+ placeholder: Επιλογή
309
+ noMatch: Δεν βρέθηκαν αποτελέσματα
310
+ loading: Φόρτωση
311
+ table:
312
+ noDataText: Χωρίς δεδομένα
313
+ noFilteredDataText: Χωρίς φίλτρο
314
+ confirmFilter: Επιβεβαίωση
315
+ resetFilter: Επαναφορά
316
+ clearFilter: Όλα
317
+ sumText: Σύνολο
318
+ datepicker:
319
+ selectDate: Επιλέξτε ημέρα
320
+ selectTime: Επιλέξτε ώρα
321
+ startTime: Ωρα Έναρξης
322
+ endTime: Ωρα Λήξης
323
+ clear: Καθαρισμός
324
+ ok: Εντάξει
325
+ datePanelLabel: "[mmmm] [yyyy]"
326
+ month: Μήνας
327
+ month1: Ιανουάριος
328
+ month2: Φεβρουάριος
329
+ month3: Μάρτιος
330
+ month4: Απρίλιος
331
+ month5: Μάιος
332
+ month6: Ιούνιος
333
+ month7: Ιούλιος
334
+ month8: Αύγουστος
335
+ month9: Σεπτέμβριος
336
+ month10: Οκτώβριος
337
+ month11: Νοέμβριος
338
+ month12: Δεκέμβριος
339
+ year: Έτος
340
+ weekStartDay: '1'
341
+ weeks:
342
+ sun: Κυρ
343
+ mon: Δευ
344
+ tue: Τρι
345
+ wed: Τετ
346
+ thu: Πεμ
347
+ fri: Παρ
348
+ sat: Σαβ
349
+ months:
350
+ m1: Ιαν
351
+ m2: Φεβ
352
+ m3: Μαρ
353
+ m4: Απρ
354
+ m5: Μαϊ
355
+ m6: Ιουν
356
+ m7: Ιουλ
357
+ m8: Αυγ
358
+ m9: Σεπ
359
+ m10: Οκτ
360
+ m11: Νοε
361
+ m12: Δεκ
362
+ transfer:
363
+ titles:
364
+ source: Πηγή
365
+ target: Στόχος
366
+ filterPlaceholder: Αναζήτηση
367
+ notFoundText: Δεν βρέθηκαν αποτελέσματα
368
+ modal:
369
+ okText: Εντάξει
370
+ cancelText: Ακύρωση
371
+ poptip:
372
+ okText: Εντάξει
373
+ cancelText: Ακύρωση
374
+ page:
375
+ prev: Προηγούμενη Σελίδα
376
+ next: Επόμενη Σελίδα
377
+ total: Σύνολο
378
+ item: Αντικείμενο
379
+ items: Αντικείμενα
380
+ prev5: Προηγούμενες 5 Σελίδες
381
+ next5: Επόμενες 5 Σελίδες
382
+ page: "/Σελίδα"
383
+ goto: Μετάβαση σε
384
+ p: ''
385
+ rate:
386
+ star: Αστέρι
387
+ stars: Αστέρια
388
+ tree:
389
+ emptyText: Χωρίς Δεδομένα
@@ -301,3 +301,4 @@ en:
301
301
  add_api: Add API
302
302
  on_collection: On collection
303
303
  association: Association
304
+ action_has_been_removed: This action has been removed
@@ -301,6 +301,7 @@ es:
301
301
  add_api: De API
302
302
  on_collection: En la colección
303
303
  association: Asociación
304
+ action_has_been_removed: Esta acción ha sido eliminada
304
305
  i:
305
306
  locale: es
306
307
  select:
@@ -297,6 +297,7 @@ pt:
297
297
  add_api: De API
298
298
  on_collection: Na coleção
299
299
  association: Associação
300
+ action_has_been_removed: Esta ação foi removida
300
301
  i:
301
302
  locale: pt
302
303
  select:
@@ -0,0 +1,71 @@
1
+ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
2
+ class MotorApiConfig < ActiveRecord::Base
3
+ self.table_name = 'motor_api_configs'
4
+
5
+ encrypts :credentials if defined?(::Motor::EncryptedConfig)
6
+
7
+ serialize :credentials, Motor::HashSerializer
8
+ serialize :preferences, Motor::HashSerializer
9
+
10
+ attribute :preferences, default: -> { HashWithIndifferentAccess.new }
11
+ attribute :credentials, default: -> { HashWithIndifferentAccess.new }
12
+ end
13
+
14
+ class MotorForm < ActiveRecord::Base
15
+ self.table_name = 'motor_forms'
16
+
17
+ serialize :preferences, Motor::HashSerializer
18
+ end
19
+
20
+ class MotorResource < ActiveRecord::Base
21
+ self.table_name = 'motor_resources'
22
+
23
+ serialize :preferences, Motor::HashSerializer
24
+ end
25
+
26
+ def up
27
+ MotorResource.all.each do |resource|
28
+ resource.preferences.fetch(:actions, []).each do |action|
29
+ next unless action[:action_type] == 'api'
30
+
31
+ api_path = action[:preferences][:api_path]
32
+ api_url = api_path[%r{\Ahttps?://[^/]+}]
33
+ api_path = api_path.delete_prefix(api_url).sub(/\A\/?/, '/') if api_url
34
+
35
+ api_config =
36
+ if api_url
37
+ MotorApiConfig.create_with(url: api_url).find_or_create_by!(name: api_url.sub(%r{\Ahttps?://}))
38
+ else
39
+ MotorApiConfig.create_with(url: '/').find_or_create_by!(name: 'origin')
40
+ end
41
+
42
+ resource_display_name = (resource[:preferences][:display_name] || resource.name).titleize.singularize
43
+
44
+ form = MotorForm.create_with(
45
+ api_config_name: api_config.name,
46
+ api_path: api_path.sub(/\{{1,2}\w+\}{1,2}/, '{{id}}'),
47
+ http_method: 'POST',
48
+ preferences: {
49
+ fields: [{
50
+ name: 'id',
51
+ display_name: resource_display_name,
52
+ default_value: '',
53
+ field_type: 'reference',
54
+ reference: { model_name: resource.name },
55
+ validators: [{ required: true }]
56
+ }]
57
+ }
58
+ ).find_or_create_by!(
59
+ name: "#{action[:display_name]} #{resource_display_name}"
60
+ )
61
+
62
+ action[:action_type] = 'form'
63
+ action[:preferences] = { form_id: form.id }
64
+ end
65
+
66
+ resource.save!
67
+ end
68
+ end
69
+
70
+ def down; end
71
+ end
@@ -15,11 +15,19 @@ module Motor
15
15
  source_root File.expand_path('templates', __dir__)
16
16
 
17
17
  def copy_migration
18
- if Motor::ApiConfig.table_exists?
19
- puts 'The latest Motor Admin features are already configured'
20
- else
18
+ has_api_actions = Motor::Resource.all.any? do |resource|
19
+ resource.preferences[:actions]&.any? { |action| action[:action_type] == 'api' }
20
+ end
21
+
22
+ unless Motor::ApiConfig.table_exists?
21
23
  migration_template 'install_api_configs.rb', 'db/migrate/install_motor_api_configs.rb'
24
+ end
25
+
26
+ migration_template 'upgrade_motor_api_actions.rb', 'db/migrate/upgrade_motor_api_actions.rb' if has_api_actions
22
27
 
28
+ if Motor::ApiConfig.table_exists? && !has_api_actions
29
+ puts 'The latest Motor Admin features are already configured'
30
+ else
23
31
  puts 'Run `rake db:migrate` to update DB schema'
24
32
  end
25
33
  end
data/lib/motor/admin.rb CHANGED
@@ -97,10 +97,14 @@ module Motor
97
97
 
98
98
  initializer 'motor.upgrade' do
99
99
  config.after_initialize do
100
+ next unless Motor.server?
101
+
100
102
  unless Motor::Query.table_exists?
101
103
  puts
102
104
  puts ' => Run `rails g motor:install && rake db:migrate` in order to create Motor Admin configuration tables'
103
105
  puts
106
+
107
+ raise
104
108
  end
105
109
 
106
110
  unless Motor::ApiConfig.table_exists?
@@ -108,9 +112,9 @@ module Motor
108
112
  puts ' => Run `rails g motor:upgrade && rake db:migrate`' \
109
113
  ' to perform data migration and enable the latest features'
110
114
  puts
115
+
116
+ raise
111
117
  end
112
- rescue ActiveRecord::NoDatabaseError
113
- nil
114
118
  end
115
119
  end
116
120
  end
@@ -4,6 +4,8 @@ module Motor
4
4
  module ApiConfigs
5
5
  METHODS = %w[get post put delete].freeze
6
6
 
7
+ DEFAULT_HEADERS = { 'Content-Type' => 'application/json' }.freeze
8
+
7
9
  InvalidHttpMethod = Class.new(StandardError)
8
10
 
9
11
  module_function
@@ -17,7 +19,7 @@ module Motor
17
19
  method.downcase.to_sym,
18
20
  api_config.url.to_s.sub(%r{/?\z}, '/') + path.delete_prefix('/'),
19
21
  params,
20
- headers.merge(api_config.headers),
22
+ DEFAULT_HEADERS.merge(headers).merge(api_config.headers),
21
23
  body&.to_json
22
24
  )
23
25
  end
data/lib/motor/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Motor
4
- VERSION = '0.2.53'
4
+ VERSION = '0.2.57'
5
5
  end
@@ -2601,9 +2601,9 @@
2601
2601
  "icons/zoom-out.svg.gz": "icons/zoom-out.svg.gz",
2602
2602
  "icons/zoom-question.svg": "icons/zoom-question.svg",
2603
2603
  "icons/zoom-question.svg.gz": "icons/zoom-question.svg.gz",
2604
- "main-f5a4c21edafaf5c70b05.css.gz": "main-f5a4c21edafaf5c70b05.css.gz",
2605
- "main-f5a4c21edafaf5c70b05.js.LICENSE.txt": "main-f5a4c21edafaf5c70b05.js.LICENSE.txt",
2606
- "main-f5a4c21edafaf5c70b05.js.gz": "main-f5a4c21edafaf5c70b05.js.gz",
2607
- "main.css": "main-f5a4c21edafaf5c70b05.css",
2608
- "main.js": "main-f5a4c21edafaf5c70b05.js"
2604
+ "main-d1d984574d0834ccc286.css.gz": "main-d1d984574d0834ccc286.css.gz",
2605
+ "main-d1d984574d0834ccc286.js.LICENSE.txt": "main-d1d984574d0834ccc286.js.LICENSE.txt",
2606
+ "main-d1d984574d0834ccc286.js.gz": "main-d1d984574d0834ccc286.js.gz",
2607
+ "main.css": "main-d1d984574d0834ccc286.css",
2608
+ "main.js": "main-d1d984574d0834ccc286.js"
2609
2609
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motor-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.53
4
+ version: 0.2.57
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Matsyburka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-10 00:00:00.000000000 Z
11
+ date: 2022-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord-filter
@@ -154,6 +154,7 @@ files:
154
154
  - app/views/layouts/motor/application.html.erb
155
155
  - app/views/motor/alerts_mailer/alert_email.html.erb
156
156
  - app/views/motor/ui/show.html.erb
157
+ - config/locales/el.yml
157
158
  - config/locales/en.yml
158
159
  - config/locales/es.yml
159
160
  - config/locales/pt.yml
@@ -162,6 +163,7 @@ files:
162
163
  - lib/generators/motor/migration.rb
163
164
  - lib/generators/motor/templates/install.rb
164
165
  - lib/generators/motor/templates/install_api_configs.rb
166
+ - lib/generators/motor/templates/upgrade_motor_api_actions.rb
165
167
  - lib/generators/motor/upgrade_generator.rb
166
168
  - lib/motor-admin.rb
167
169
  - lib/motor.rb
@@ -1532,14 +1534,16 @@ files:
1532
1534
  - ui/dist/icons/zoom-money.svg.gz
1533
1535
  - ui/dist/icons/zoom-out.svg.gz
1534
1536
  - ui/dist/icons/zoom-question.svg.gz
1535
- - ui/dist/main-f5a4c21edafaf5c70b05.css.gz
1536
- - ui/dist/main-f5a4c21edafaf5c70b05.js.gz
1537
+ - ui/dist/main-d1d984574d0834ccc286.css.gz
1538
+ - ui/dist/main-d1d984574d0834ccc286.js.gz
1537
1539
  - ui/dist/manifest.json
1538
1540
  homepage:
1539
1541
  licenses:
1540
1542
  - MIT
1541
1543
  metadata: {}
1542
- post_install_message:
1544
+ post_install_message: "\n ==================\n Run `rails g motor:upgrade &&
1545
+ rake db:migrate`\n to perform data migration and enable the latest features'\n
1546
+ \ ==================\n "
1543
1547
  rdoc_options: []
1544
1548
  require_paths:
1545
1549
  - lib