drg_cms 0.5.52.16 → 0.6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/drg_cms/drg_cms.js +446 -144
  3. data/app/assets/javascripts/drg_cms/jstree.min.js +6 -6
  4. data/app/assets/javascripts/drg_cms_application.js +1 -1
  5. data/app/assets/stylesheets/drg_cms/drg_cms.css +625 -243
  6. data/app/assets/stylesheets/drg_cms/jstree.css +6 -12
  7. data/app/assets/stylesheets/drg_cms/select-multiple.css +18 -12
  8. data/app/assets/stylesheets/drg_cms_cms.css +1 -1
  9. data/app/controllers/cmsedit_controller.rb +536 -331
  10. data/app/controllers/dc_application_controller.rb +380 -117
  11. data/app/controllers/dc_common_controller.rb +105 -14
  12. data/app/{controllers → controls}/browse_models_control.rb +0 -0
  13. data/app/controls/dc_help_control.rb +126 -0
  14. data/app/{controllers → controls}/dc_page_control.rb +24 -8
  15. data/app/controls/dc_poll_result_control.rb +88 -0
  16. data/app/controls/dc_report.rb +225 -0
  17. data/app/{controllers → controls}/design_element_settings_control.rb +0 -0
  18. data/app/forms/all_options.yml +50 -9
  19. data/app/forms/cms_menu.yml +28 -18
  20. data/app/forms/dc_ad.yml +11 -22
  21. data/app/forms/dc_big_table.yml +1 -0
  22. data/app/forms/dc_big_table_value.yml +1 -0
  23. data/app/forms/dc_category.yml +2 -1
  24. data/app/forms/dc_design.yml +20 -16
  25. data/app/forms/dc_filter.yml +3 -6
  26. data/app/forms/dc_help_1.yml +109 -0
  27. data/app/forms/dc_journal.yml +3 -1
  28. data/app/forms/dc_json_ld.yml +59 -0
  29. data/app/forms/dc_key_value.yml +32 -0
  30. data/app/forms/dc_link.yml +1 -1
  31. data/app/forms/dc_menu.yml +2 -0
  32. data/app/forms/dc_menu_item.yml +2 -0
  33. data/app/forms/dc_page.yml +3 -5
  34. data/app/forms/dc_part.yml +1 -0
  35. data/app/forms/dc_piece.yml +1 -0
  36. data/app/forms/dc_poll.yml +19 -9
  37. data/app/forms/dc_poll_item.yml +2 -1
  38. data/app/forms/dc_poll_result.yml +83 -0
  39. data/app/forms/dc_poll_result_export.yml +35 -0
  40. data/app/forms/dc_seo.yml +33 -0
  41. data/app/forms/dc_simple_menu.yml +2 -0
  42. data/app/forms/dc_site.yml +4 -12
  43. data/app/forms/dc_user.yml +27 -11
  44. data/app/forms/dc_user_role.yml +3 -0
  45. data/app/forms/json_ld_schema.yml +168 -0
  46. data/app/helpers/cms_common_helper.rb +376 -0
  47. data/app/helpers/cms_edit_helper.rb +506 -0
  48. data/app/helpers/cms_helper.rb +268 -0
  49. data/app/helpers/cms_index_helper.rb +576 -0
  50. data/app/helpers/dc_application_helper.rb +183 -271
  51. data/app/models/concerns/dc_page_concern.rb +40 -6
  52. data/app/models/concerns/dc_policy_rule_concern.rb +20 -8
  53. data/app/models/concerns/dc_seo_concern.rb +66 -0
  54. data/app/models/concerns/dc_site_concern.rb +67 -44
  55. data/app/models/concerns/dc_user_concern.rb +62 -21
  56. data/app/models/dc_design.rb +30 -18
  57. data/app/models/dc_filter.rb +22 -13
  58. data/app/models/dc_json_ld.rb +152 -0
  59. data/app/models/dc_key_value.rb +48 -0
  60. data/app/models/dc_key_value_store.rb +1 -0
  61. data/app/models/dc_memory.rb +8 -1
  62. data/app/models/dc_page.rb +0 -1
  63. data/app/models/dc_permission.rb +49 -9
  64. data/app/models/dc_policy.rb +25 -14
  65. data/app/models/dc_policy_role.rb +22 -11
  66. data/app/models/dc_poll.rb +39 -19
  67. data/app/models/{drgcms_form_fields/drgcms_form_fields.rb → dc_poll_result.rb} +23 -2
  68. data/app/models/dc_temp.rb +140 -0
  69. data/app/models/dc_user_role.rb +2 -2
  70. data/app/models/drgcms_form_fields.rb +14 -6
  71. data/app/models/drgcms_form_fields/action.rb +61 -0
  72. data/app/models/drgcms_form_fields/check_box.rb +3 -0
  73. data/app/models/drgcms_form_fields/comment.rb +8 -4
  74. data/app/models/drgcms_form_fields/date_picker.rb +11 -9
  75. data/app/models/drgcms_form_fields/date_select.rb +1 -1
  76. data/app/models/drgcms_form_fields/{date_time_picker.rb → datetime_picker.rb} +12 -10
  77. data/app/models/drgcms_form_fields/datetime_select.rb +1 -1
  78. data/app/models/drgcms_form_fields/drgcms_field.rb +55 -9
  79. data/app/models/drgcms_form_fields/embedded.rb +26 -16
  80. data/app/models/drgcms_form_fields/file_field.rb +52 -0
  81. data/app/models/drgcms_form_fields/file_select.rb +2 -2
  82. data/app/models/drgcms_form_fields/hash_field.rb +90 -0
  83. data/app/models/drgcms_form_fields/hidden_field.rb +1 -1
  84. data/app/models/drgcms_form_fields/html_field.rb +1 -1
  85. data/app/models/drgcms_form_fields/link_to.rb +2 -2
  86. data/app/models/drgcms_form_fields/method.rb +66 -0
  87. data/app/models/drgcms_form_fields/multitext_autocomplete.rb +23 -14
  88. data/app/models/drgcms_form_fields/number_field.rb +15 -6
  89. data/app/models/drgcms_form_fields/radio.rb +96 -0
  90. data/app/models/drgcms_form_fields/readonly.rb +2 -2
  91. data/app/models/drgcms_form_fields/select.rb +92 -29
  92. data/app/models/drgcms_form_fields/text_area.rb +1 -1
  93. data/app/models/drgcms_form_fields/text_autocomplete.rb +29 -17
  94. data/app/models/drgcms_form_fields/text_field.rb +1 -1
  95. data/app/models/drgcms_form_fields/text_with_select.rb +6 -3
  96. data/app/models/drgcms_form_fields/tree_select.rb +29 -10
  97. data/app/{helpers → renderers}/dc_ad_renderer.rb +0 -0
  98. data/app/{helpers → renderers}/dc_big_menu_renderer.rb +1 -0
  99. data/app/{helpers → renderers}/dc_captcha_renderer.rb +0 -0
  100. data/app/{helpers → renderers}/dc_common_renderer.rb +0 -0
  101. data/app/{helpers → renderers}/dc_gallery_renderer.rb +1 -0
  102. data/app/{helpers → renderers}/dc_menu_renderer.rb +11 -4
  103. data/app/{helpers → renderers}/dc_page_renderer.rb +1 -0
  104. data/app/{helpers → renderers}/dc_part_renderer.rb +5 -4
  105. data/app/{helpers → renderers}/dc_piece_renderer.rb +1 -1
  106. data/app/{helpers → renderers}/dc_poll_renderer.rb +84 -48
  107. data/app/{helpers → renderers}/dc_renderer.rb +1 -0
  108. data/app/{helpers → renderers}/dc_simple_menu_renderer.rb +1 -0
  109. data/app/views/cmsedit/{remove_edit_stuff.js.erb → __remove_edit_stuff.js.erb} +0 -0
  110. data/app/views/cmsedit/{show.html.erb → __show.html.erb} +0 -0
  111. data/app/views/cmsedit/_edit_stuff.html.erb +4 -25
  112. data/app/views/cmsedit/_form.html.erb +4 -3
  113. data/app/views/cmsedit/_result.html.erb +2 -3
  114. data/app/views/cmsedit/edit.html.erb +4 -1
  115. data/app/views/cmsedit/index.html.erb +7 -1
  116. data/app/views/cmsedit/new.html.erb +3 -1
  117. data/app/views/dc_common/_help.html.erb +8 -0
  118. data/app/views/layouts/models.html.erb +2 -1
  119. data/config/locales/drgcms_en.yml +26 -3
  120. data/config/locales/drgcms_sl.yml +31 -5
  121. data/config/locales/models_en.yml +66 -18
  122. data/config/locales/models_sl.yml +71 -20
  123. data/drg_cms.gemspec +3 -3
  124. data/lib/drg_cms.rb +63 -1
  125. data/lib/drg_cms/version.rb +2 -2
  126. data/lib/generators/new_drg_form/new_drg_form_generator.rb +9 -2
  127. data/lib/tasks/database.rake +6 -56
  128. metadata +81 -63
  129. data/app/assets/stylesheets/drg_cms/__jquery-ui.css +0 -339
  130. data/app/helpers/application_helper.rb +0 -2
  131. data/app/helpers/cmsedit_helper.rb +0 -885
  132. data/app/models/dc_dummy.rb +0 -102
  133. data/test/fixtures/drg_cms_test_data.rb +0 -87
@@ -72,6 +72,7 @@ sl:
72
72
  name: Ime
73
73
  description: Opis
74
74
  body: Vsebina
75
+ params: Parametri
75
76
  css: CSS
76
77
  author: Avtor
77
78
  updated_by: Spremenil
@@ -81,23 +82,24 @@ sl:
81
82
  site_id: Spletišče
82
83
  control: Kontrolna datoteka
83
84
  control_method: Kontrolna metoda
84
-
85
+ updated_at: Spremenjeno
85
86
 
86
87
  dc_user:
87
88
  tabletitle: Uporabniki
88
- tab1: Osnova
89
+ 1base: Osnova
89
90
 
90
91
  id: Id
91
92
  username: Uporabnik
92
93
  title: Titula
93
94
  first_name: Ime
95
+ middle_name: Srednje ime
94
96
  last_name: Priimek
95
97
  name: Naziv
96
98
  address: Naslov
97
99
  post: Pošta
98
100
  country: Država
99
101
  phone: Telefon
100
- email: e-Pošta
102
+ email: e-Naslov
101
103
  picture: Slika
102
104
  birthdate: Datum rojstva
103
105
  about: Več o
@@ -106,8 +108,8 @@ sl:
106
108
  valid_from: Velja od
107
109
  valid_to: Velja do
108
110
  updated_by: Spremenil
109
- type: Vrsta
110
- members: Člani
111
+ group: Je skupina
112
+ member: Član v skupinah
111
113
  dc_user_roles: Uporabniške vloge
112
114
  password: Geslo
113
115
  password_confirmation: Potrdi geslo
@@ -126,18 +128,21 @@ sl:
126
128
  dc_poll:
127
129
  tabletitle: Ankete
128
130
  choices4_operation: 'Poženi program:poll_submit,Povezava:link'
129
- choices4_display: 'Od zgoraj-navzdol:td,Od leve na desno:lr'
131
+ choices4_display: 'Zgoraj:td,Levo:lr,Znotraj:in'
130
132
  tab1: Podatki
131
- tab2: Forma
132
- tab3: Vrstice
133
+ tab2: Skriptna koda
134
+ tab3: Vsebina
135
+ tab4: Vsebina - napredno
133
136
 
134
137
  name: Ime
135
138
  title: Naslov
136
139
  sub_text: Kratek opis
137
140
  operation: Operacija
138
141
  parameters: Parametri
139
- display: Prikaz
142
+ display: Napis
140
143
  css: CSS
144
+ js: Skriptna koda
145
+ pre_display: Pred prikazom zaženi
141
146
  valid_from: Velja od
142
147
  valid_to: Velja do
143
148
  dc_poll_items: Vrstice
@@ -147,18 +152,26 @@ sl:
147
152
 
148
153
  dc_poll_item:
149
154
  tabletitle: Vnosne vrstice
150
- choices4_type: Podatek:text_field,Tekst:text_area,Izbirno:select,Izbirni gumb:check_box,Zaključek:submit_tag,Povezava:link_to,Geslo:password_field,Komentar:comment
155
+ choices4_type: Podatek:text_field,Tekst:text_area,Izbirno:select,Izbirni gumb:check_box,Zaključek:submit_tag,Povezava:link_to,Geslo:password_field,Komentar:comment,Radio:radio
151
156
  choices4_separator: Presledek:&nbsp;,Prazna vrstica:<br />,Ravnilo:<hr>
152
157
 
153
158
  name: Naziv
154
159
  text: Napis
155
160
  type: Vrsta
156
- Size: Velikost
161
+ size: Velikost
157
162
  mandatory: Obvezen
158
163
  separator: Ločilo
159
164
  options: Opcije
160
165
  order: Zaporedje
161
- active: Active
166
+ active: Aktivna
167
+
168
+ dc_poll_result:
169
+ tabletitle: Rezultati anket
170
+
171
+ dc_poll_id: Anketa
172
+ created_at: Nastalo
173
+ data: Podatki
174
+ confirmed: Potrjen
162
175
 
163
176
  dc_policy:
164
177
  tabletitle: Politike za dostop
@@ -285,7 +298,6 @@ sl:
285
298
 
286
299
  subject: Zadeva
287
300
  subject_link: Povezava
288
- title: Naslov za brskalnik
289
301
  sub_subject: Povzetek
290
302
  picture: Slika
291
303
  alt_link: Alt povezava
@@ -322,6 +334,13 @@ sl:
322
334
  if_class: CSS class
323
335
  _update_menu: Spremeni meni
324
336
 
337
+ dc_seo:
338
+ seo: SEO
339
+ title: Naslov za brskalnik
340
+ meta_description: Meta opis
341
+ canonical_link: Canonical link
342
+ dc_json_lds: Strukturni podatki
343
+
325
344
  dc_part:
326
345
  tabletitle: Elementi strani
327
346
  1base: Osnovno
@@ -542,6 +561,18 @@ sl:
542
561
  active: Aktiven
543
562
  created_at: Ustvarjeno
544
563
 
564
+ dc_json_ld:
565
+ tabletitle: Struktirirani podatki za spletno stran
566
+ choices4_type: Organizacija:Organization,Kontakt:ContactPoint
567
+
568
+ name: Ime
569
+ type: Tip
570
+ data: Podatki
571
+ created_at: Narejeno
572
+ updated_at: Spremenjeno
573
+ active: Aktiven
574
+ dc_json_lds: Podelement strukture
575
+
545
576
  # help pomoč na obrazcih ####################################################
546
577
 
547
578
  help:
@@ -580,14 +611,14 @@ sl:
580
611
  body: Vsebina dizajna, ki se bo izvedla kot vsaka Rails view datoteka
581
612
  css: CSS za dizajn
582
613
  author: Ime avtorja
614
+ params: Parametri povezani z dizajnom strani
583
615
  updated_by: Zadnji spreminjal
584
616
  active: Ali je dizajn aktiven
585
617
  dc_parts: Elementi, sestavni deli dizajna
586
618
  rails_view: Ime Rails view datoteke, ki bo uporabljena za izris strani
587
619
  site_id: Izberite spletišče, če dizajn pripada samo enemu spletišču
588
620
  control: Izvorna datoteka z akcijami za izris dizajna
589
- control_method: Kontrolna metoda (akcija), ki se bo klicala v izvorni datoteki
590
-
621
+ control_method: Kontrolna metoda (akcija), ki se bo klicala v izvorni datoteki
591
622
 
592
623
  dc_user:
593
624
  username: Uporabniško ime
@@ -609,14 +640,13 @@ sl:
609
640
  valid_from: Začetni datum veljavnosti
610
641
  valid_to: Končni datum veljavnosti
611
642
  updated_by: Spremenil
612
- type: Vrsta uporabniškega računa
613
- members: Člani (če skupina uporabnikov)
643
+ group: Račun predstavlja uporabniško skupino
644
+ member: Seznam skupin za uporabnika
614
645
  dc_user_roles: Vloge, ki pripadajo temu uporabniku
615
646
  password: Geslo
616
647
  password_confirmation: Še enkrat vpišite geslo
617
648
  signature: Podpis, ki se doda k vsakemu sporočilu tega uporabnika
618
649
 
619
-
620
650
  dc_user_role:
621
651
  dc_policy_role_id: Uporabnikova vloga
622
652
  has_cms_menu: Vloga dovoljuje prikaz opcije za CMS menu
@@ -631,8 +661,10 @@ sl:
631
661
  sub_text: Kratek opis ankete
632
662
  operation: Operacija, ki se izvede ob kliku na izbiro
633
663
  parameters: Dodatni parametri za operacijo
634
- display: Kako so posamezni podatki postavljeni na obrazcu
664
+ display: Postavitev napisa glede na vpisno polje
635
665
  css: CSS samo za to anketo
666
+ js: Javascript koda samo za to anketo
667
+ pre_display: Metoda. ki se zažene pred prikazom obrazca. Običajno za privzeto polnjenje podatkov obrazca
636
668
  valid_from: Anketa je veljavna od
637
669
  valid_to: Anketa je veljavna do
638
670
  dc_poll_items: Posamezni podatki ankete
@@ -649,6 +681,12 @@ sl:
649
681
  options: Opcije, odvisne od vrste vpisnega polja
650
682
  order: Zaporedje prikaza na anketi
651
683
  active: Vrstica je aktivna
684
+
685
+ dc_poll_result:
686
+ dc_poll_id: Naziv ankete
687
+ created_at: Čas nastanka zapisa
688
+ data: Podatki v YAML formatu
689
+ confirmed: Podatki potrjeni. Npr. Uporabnik mora klikniti povezavo v e-pošti.
652
690
 
653
691
  dc_policy:
654
692
  name: Naziv politike
@@ -740,7 +778,6 @@ sl:
740
778
  subject: Zadeva (kratek naslov) sestavka
741
779
  subject_link: Povezava (link) do sestavka
742
780
  sub_subject: Povzetek, kratek opis vsebine
743
- title: Naslov, ki se izpiše v gornji vrstici brskalnika. Optimiziraj za SEO.
744
781
  alt_link: Alternativna povezava do sestavka
745
782
  picture: Slika v povezavi s stranjo
746
783
  gallery: Dokument vsebuje slikovno galerijo.
@@ -774,6 +811,12 @@ sl:
774
811
  if_id: CSS id IFrame objekta
775
812
  if_class: CSS class IFrame objekta
776
813
  _update_menu: Popravi tudi povezavo do dokumenta v menuju
814
+
815
+ dc_seo:
816
+ title: Naslov, ki se izpiše v gornji vrstici brskalnika. Optimiziraj za SEO.
817
+ meta_description: SEO optimiziran opis strani
818
+ canonical_link: Canonical link, kadar je stran uporabljena z različnimi parametri
819
+ dc_json_lds: Schema strukturni podatki, ki dodatno opisujejo spletno stran
777
820
 
778
821
  dc_part:
779
822
  name: Naziv elementa
@@ -932,3 +975,11 @@ sl:
932
975
  doc_id: Dokument povezan z galerijo
933
976
  order: Vrstni red slike v galeriji
934
977
  active: Dokument je aktiven
978
+
979
+ dc_json_ld:
980
+ name: Naziv elementa podatkovne strukture
981
+ type: Tip podatkovne strukture
982
+ data: Podatki v YAML formatu
983
+ active: Podatki so aktivni
984
+ add_schema: Dodaj strukturo
985
+ add_error: Element %{schema} že obstaja!
data/drg_cms.gemspec CHANGED
@@ -18,15 +18,15 @@ Gem::Specification.new do |s|
18
18
  s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.md", "History.log", "drg_cms.gemspec"]
19
19
  s.test_files = Dir["test/**/*"]
20
20
 
21
- s.required_ruby_version = '>= 2.4'
21
+ s.required_ruby_version = '>= 2.5'
22
22
 
23
- s.add_dependency 'rails', '>= 5'
23
+ s.add_dependency 'rails', '~> 6'
24
24
  s.add_dependency 'jquery-rails'
25
25
  s.add_dependency 'jquery-ui-rails'
26
26
  s.add_dependency 'non-stupid-digest-assets'
27
27
 
28
28
  s.add_dependency 'bcrypt' #, '~> 3.0.0'
29
- s.add_dependency 'mongoid'#, '~> 5'
29
+ s.add_dependency 'mongoid', '~> 7'
30
30
 
31
31
  s.add_dependency 'kaminari-mongoid'
32
32
  s.add_dependency 'kaminari-actionview'
data/lib/drg_cms.rb CHANGED
@@ -118,6 +118,63 @@ def self.from_root(file=nil)
118
118
  File.expand_path("../../#{file}", __FILE__).to_s
119
119
  end
120
120
 
121
+ ####################################################################
122
+ # Checks if any errors exist on document and writes error log. It can also
123
+ # crash if requested. This is mostly usefull in development for debuging
124
+ # model errors or when updating multiple collections and each save must be
125
+ # checked if succesfull.
126
+ #
127
+ # @param [Document] Document object which will be checked
128
+ # @param [Boolean] If true method should end in runtime error. Default = false.
129
+ #
130
+ # @return [String] Error messages or empty string if everything is OK.
131
+ #
132
+ # @Example Check for error when data is saved.
133
+ # model.save
134
+ # if (msg = DrgCms.model_check(model) ).size > 0
135
+ # p msg
136
+ # error process ......
137
+ # end
138
+ #
139
+ ####################################################################
140
+ def self.model_check(document, crash = false)
141
+ return nil unless document.errors.any?
142
+
143
+ msg = ""
144
+ document.errors.each do |attribute, errors_array|
145
+ msg << "#{attribute}: #{errors_array}\n"
146
+ end
147
+ #
148
+ if crash and msg.size > 0
149
+ msg = "Validation errors in #{document.class}:\n" + msg
150
+ pp msg
151
+ Rails.logger.error(msg)
152
+ raise "Validation error. See log for more information."
153
+ end
154
+ msg
155
+ end
156
+
157
+ ####################################################################
158
+ # Clear cache. If key is specified only this key will be deleted.
159
+ #
160
+ # @param [String] Optional key to be deleted
161
+ ####################################################################
162
+ def self.cache_clear(key = nil)
163
+ return Rails.cache.clear if key.nil?
164
+
165
+ if ((Rails.application.config.cache_store.first == :redis_cache_store) rescue false)
166
+ Rails.cache.redis.del(key)
167
+ else
168
+ Rails.cache.delete_matched("#{key}*")
169
+ end
170
+ end
171
+
172
+ def self.__cache_clear(key = nil)
173
+ return Rails.cache.clear if key.nil?
174
+
175
+ Rails.cache.delete_matched("#{key}*")
176
+ end
177
+
121
178
  ###############################################################################
122
179
  # All Routes required by DrgCms.
123
180
  #
@@ -135,13 +192,18 @@ def self.routes
135
192
  get 'dc_common/logout' => :logout
136
193
  get 'dc_common/login' => :login
137
194
  get 'dc_common/copy_clipboard' => :copy_clipboard
138
- match 'dc_common/paste_clipboard' => :paste_clipboard, via: [:get, :post]
195
+ match 'dc_common/paste_clipboard' => :paste_clipboard, via: [:get, :post]
139
196
  put 'dc_common/restore_from_journal' => :restore_from_journal
197
+ get 'dc_common/add_json_ld_schema' => :add_json_ld_schema
198
+ get 'dc_common/help' => :help
140
199
  end
141
200
  match 'elfinder' => 'dc_elfinder#connector', via: [:get, :post]
201
+ match 'cmsedit/run' => 'cmsedit#run', via: [:get, :put, :post]
142
202
  resources :cmsedit
143
203
  resources :cms, controller: :cmsedit
144
204
  end
145
205
  end
146
206
 
147
207
  end
208
+
209
+ DrgCms.add_patches_path(File.dirname(__FILE__) + '../app/models/drgcms_form_fields/patches')
@@ -21,7 +21,7 @@
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #++
23
23
 
24
+ # drg_cms gem version
24
25
  module DrgCms #:nodoc:
25
- # drg_cms gem version
26
- VERSION = '0.5.52.16'
26
+ VERSION = '0.6.1.0'.freeze
27
27
  end
@@ -12,8 +12,15 @@ def create_form_file
12
12
  #:TODO: find out how to prevent error when model class is not defined
13
13
  @file_name = file_name
14
14
  form_name = file_name #if formname.size == 0
15
- @model = file_name.classify.constantize rescue nil
16
- return (p "Model #{file_name.classify} not found! Aborting.") if @model.nil?
15
+ begin
16
+ @model = file_name.classify.constantize
17
+ rescue Exception => e
18
+ msg = ([e.message]+e.backtrace).join($/)
19
+ Rails.logger.error(msg)
20
+ pp msg
21
+ @model = nil
22
+ end
23
+ return (pp "Error loading #{file_name.classify} model! Aborting.") if @model.nil?
17
24
  #
18
25
  yml = top_level_options + index_options + result_set_options + form_top_options + form_fields_options + localize_options
19
26
  create_file "app/forms/#{form_name}.yml", yml
@@ -6,61 +6,9 @@
6
6
  #########################################################################
7
7
  def determine_model(path)
8
8
  path =~ /(.*)\/(.*).rb/
9
- begin
10
- $2.camelize.constantize
11
- rescue Exception # it happends
12
- nil
13
- end
9
+ $2.camelize.constantize rescue nil # nil happens
14
10
  end
15
11
 
16
- #########################################################################
17
- # Create index for single module
18
- #########################################################################
19
- def create_index(model)
20
- return if model.index_specifications.empty?
21
- #
22
- if !model.embedded? || model.cyclic?
23
- @logger.info("DRGCMS: Creating indexes on #{model}:")
24
- model.create_indexes
25
- model.index_specifications.each do |spec|
26
- @logger.info("DRGCMS: Index: #{spec.key}, Options: #{spec.options}")
27
- end
28
- model
29
- else
30
- @logger.info("DRGCMS: Index ignored on: #{model}, please define in the root model.")
31
- nil
32
- end
33
- end
34
-
35
- #########################################################################
36
- # Will remove all undefined indexes from collection.
37
- #########################################################################
38
- def remove_undefined_indexes(model)
39
- return if model.embedded?
40
- #
41
- begin
42
- undefined = []
43
- model.collection.indexes.each do |index|
44
- # ignore default index
45
- next if index['name'] == '_id_'
46
-
47
- key = index['key'].symbolize_keys
48
- spec = model.index_specification(key)
49
- undefined << index unless spec
50
- end
51
- rescue Mongo::Error::OperationFailure; end
52
- #
53
- undefined.each do |index|
54
- key = index['key'].symbolize_keys
55
- collection = model.collection
56
- collection.indexes.drop(key)
57
- @logger.info(
58
- "MONGOID: Removed index '#{index['name']}' on collection " +
59
- "'#{collection.name}' in database '#{collection.database.name}'."
60
- )
61
- end
62
- end
63
-
64
12
  #########################################################################
65
13
  # Return array of all models found in application.
66
14
  #########################################################################
@@ -70,7 +18,7 @@ def all_models()
70
18
  models_dir = File.expand_path("../models", path)
71
19
  Dir["#{models_dir}/*.rb"].each do |model_file|
72
20
  model = determine_model(model_file)
73
- models << model if !model.nil? and model.respond_to?(:index_specifications)
21
+ models << model if model and model.respond_to?(:index_specifications)
74
22
  end
75
23
  end
76
24
  models
@@ -82,12 +30,14 @@ end
82
30
  namespace :drg_cms do
83
31
  desc "Create indexes for all mongoid models. Including those in gem plugins."
84
32
  task :create_indexes => :environment do
85
- all_models.each {|model| create_index(model)}
33
+ @logger.info( "MONGOID: Checking indexes.")
34
+ Mongoid::Tasks::Database.create_indexes(all_models)
86
35
  end
87
36
 
88
37
  desc "Remove undefined indexes for all mongoid models. Including those in gem plugins."
89
38
  task :remove_undefined_indexes => :environment do
90
- all_models.each {|model| remove_undefined_indexes(model)}
39
+ @logger.info( "MONGOID: Remove undefined indexes.")
40
+ Mongoid::Tasks::Database.remove_undefined_indexes(all_models)
91
41
  end
92
42
 
93
43
  end