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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/drg_cms/drg_cms.js +446 -144
- data/app/assets/javascripts/drg_cms/jstree.min.js +6 -6
- data/app/assets/javascripts/drg_cms_application.js +1 -1
- data/app/assets/stylesheets/drg_cms/drg_cms.css +625 -243
- data/app/assets/stylesheets/drg_cms/jstree.css +6 -12
- data/app/assets/stylesheets/drg_cms/select-multiple.css +18 -12
- data/app/assets/stylesheets/drg_cms_cms.css +1 -1
- data/app/controllers/cmsedit_controller.rb +536 -331
- data/app/controllers/dc_application_controller.rb +380 -117
- data/app/controllers/dc_common_controller.rb +105 -14
- data/app/{controllers → controls}/browse_models_control.rb +0 -0
- data/app/controls/dc_help_control.rb +126 -0
- data/app/{controllers → controls}/dc_page_control.rb +24 -8
- data/app/controls/dc_poll_result_control.rb +88 -0
- data/app/controls/dc_report.rb +225 -0
- data/app/{controllers → controls}/design_element_settings_control.rb +0 -0
- data/app/forms/all_options.yml +50 -9
- data/app/forms/cms_menu.yml +28 -18
- data/app/forms/dc_ad.yml +11 -22
- data/app/forms/dc_big_table.yml +1 -0
- data/app/forms/dc_big_table_value.yml +1 -0
- data/app/forms/dc_category.yml +2 -1
- data/app/forms/dc_design.yml +20 -16
- data/app/forms/dc_filter.yml +3 -6
- data/app/forms/dc_help_1.yml +109 -0
- data/app/forms/dc_journal.yml +3 -1
- data/app/forms/dc_json_ld.yml +59 -0
- data/app/forms/dc_key_value.yml +32 -0
- data/app/forms/dc_link.yml +1 -1
- data/app/forms/dc_menu.yml +2 -0
- data/app/forms/dc_menu_item.yml +2 -0
- data/app/forms/dc_page.yml +3 -5
- data/app/forms/dc_part.yml +1 -0
- data/app/forms/dc_piece.yml +1 -0
- data/app/forms/dc_poll.yml +19 -9
- data/app/forms/dc_poll_item.yml +2 -1
- data/app/forms/dc_poll_result.yml +83 -0
- data/app/forms/dc_poll_result_export.yml +35 -0
- data/app/forms/dc_seo.yml +33 -0
- data/app/forms/dc_simple_menu.yml +2 -0
- data/app/forms/dc_site.yml +4 -12
- data/app/forms/dc_user.yml +27 -11
- data/app/forms/dc_user_role.yml +3 -0
- data/app/forms/json_ld_schema.yml +168 -0
- data/app/helpers/cms_common_helper.rb +376 -0
- data/app/helpers/cms_edit_helper.rb +506 -0
- data/app/helpers/cms_helper.rb +268 -0
- data/app/helpers/cms_index_helper.rb +576 -0
- data/app/helpers/dc_application_helper.rb +183 -271
- data/app/models/concerns/dc_page_concern.rb +40 -6
- data/app/models/concerns/dc_policy_rule_concern.rb +20 -8
- data/app/models/concerns/dc_seo_concern.rb +66 -0
- data/app/models/concerns/dc_site_concern.rb +67 -44
- data/app/models/concerns/dc_user_concern.rb +62 -21
- data/app/models/dc_design.rb +30 -18
- data/app/models/dc_filter.rb +22 -13
- data/app/models/dc_json_ld.rb +152 -0
- data/app/models/dc_key_value.rb +48 -0
- data/app/models/dc_key_value_store.rb +1 -0
- data/app/models/dc_memory.rb +8 -1
- data/app/models/dc_page.rb +0 -1
- data/app/models/dc_permission.rb +49 -9
- data/app/models/dc_policy.rb +25 -14
- data/app/models/dc_policy_role.rb +22 -11
- data/app/models/dc_poll.rb +39 -19
- data/app/models/{drgcms_form_fields/drgcms_form_fields.rb → dc_poll_result.rb} +23 -2
- data/app/models/dc_temp.rb +140 -0
- data/app/models/dc_user_role.rb +2 -2
- data/app/models/drgcms_form_fields.rb +14 -6
- data/app/models/drgcms_form_fields/action.rb +61 -0
- data/app/models/drgcms_form_fields/check_box.rb +3 -0
- data/app/models/drgcms_form_fields/comment.rb +8 -4
- data/app/models/drgcms_form_fields/date_picker.rb +11 -9
- data/app/models/drgcms_form_fields/date_select.rb +1 -1
- data/app/models/drgcms_form_fields/{date_time_picker.rb → datetime_picker.rb} +12 -10
- data/app/models/drgcms_form_fields/datetime_select.rb +1 -1
- data/app/models/drgcms_form_fields/drgcms_field.rb +55 -9
- data/app/models/drgcms_form_fields/embedded.rb +26 -16
- data/app/models/drgcms_form_fields/file_field.rb +52 -0
- data/app/models/drgcms_form_fields/file_select.rb +2 -2
- data/app/models/drgcms_form_fields/hash_field.rb +90 -0
- data/app/models/drgcms_form_fields/hidden_field.rb +1 -1
- data/app/models/drgcms_form_fields/html_field.rb +1 -1
- data/app/models/drgcms_form_fields/link_to.rb +2 -2
- data/app/models/drgcms_form_fields/method.rb +66 -0
- data/app/models/drgcms_form_fields/multitext_autocomplete.rb +23 -14
- data/app/models/drgcms_form_fields/number_field.rb +15 -6
- data/app/models/drgcms_form_fields/radio.rb +96 -0
- data/app/models/drgcms_form_fields/readonly.rb +2 -2
- data/app/models/drgcms_form_fields/select.rb +92 -29
- data/app/models/drgcms_form_fields/text_area.rb +1 -1
- data/app/models/drgcms_form_fields/text_autocomplete.rb +29 -17
- data/app/models/drgcms_form_fields/text_field.rb +1 -1
- data/app/models/drgcms_form_fields/text_with_select.rb +6 -3
- data/app/models/drgcms_form_fields/tree_select.rb +29 -10
- data/app/{helpers → renderers}/dc_ad_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_big_menu_renderer.rb +1 -0
- data/app/{helpers → renderers}/dc_captcha_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_common_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_gallery_renderer.rb +1 -0
- data/app/{helpers → renderers}/dc_menu_renderer.rb +11 -4
- data/app/{helpers → renderers}/dc_page_renderer.rb +1 -0
- data/app/{helpers → renderers}/dc_part_renderer.rb +5 -4
- data/app/{helpers → renderers}/dc_piece_renderer.rb +1 -1
- data/app/{helpers → renderers}/dc_poll_renderer.rb +84 -48
- data/app/{helpers → renderers}/dc_renderer.rb +1 -0
- data/app/{helpers → renderers}/dc_simple_menu_renderer.rb +1 -0
- data/app/views/cmsedit/{remove_edit_stuff.js.erb → __remove_edit_stuff.js.erb} +0 -0
- data/app/views/cmsedit/{show.html.erb → __show.html.erb} +0 -0
- data/app/views/cmsedit/_edit_stuff.html.erb +4 -25
- data/app/views/cmsedit/_form.html.erb +4 -3
- data/app/views/cmsedit/_result.html.erb +2 -3
- data/app/views/cmsedit/edit.html.erb +4 -1
- data/app/views/cmsedit/index.html.erb +7 -1
- data/app/views/cmsedit/new.html.erb +3 -1
- data/app/views/dc_common/_help.html.erb +8 -0
- data/app/views/layouts/models.html.erb +2 -1
- data/config/locales/drgcms_en.yml +26 -3
- data/config/locales/drgcms_sl.yml +31 -5
- data/config/locales/models_en.yml +66 -18
- data/config/locales/models_sl.yml +71 -20
- data/drg_cms.gemspec +3 -3
- data/lib/drg_cms.rb +63 -1
- data/lib/drg_cms/version.rb +2 -2
- data/lib/generators/new_drg_form/new_drg_form_generator.rb +9 -2
- data/lib/tasks/database.rake +6 -56
- metadata +81 -63
- data/app/assets/stylesheets/drg_cms/__jquery-ui.css +0 -339
- data/app/helpers/application_helper.rb +0 -2
- data/app/helpers/cmsedit_helper.rb +0 -885
- data/app/models/dc_dummy.rb +0 -102
- 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
|
-
|
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-
|
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
|
-
|
110
|
-
|
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: '
|
131
|
+
choices4_display: 'Zgoraj:td,Levo:lr,Znotraj:in'
|
130
132
|
tab1: Podatki
|
131
|
-
tab2:
|
132
|
-
tab3:
|
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:
|
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: ,Prazna vrstica:<br />,Ravnilo:<hr>
|
152
157
|
|
153
158
|
name: Naziv
|
154
159
|
text: Napis
|
155
160
|
type: Vrsta
|
156
|
-
|
161
|
+
size: Velikost
|
157
162
|
mandatory: Obvezen
|
158
163
|
separator: Ločilo
|
159
164
|
options: Opcije
|
160
165
|
order: Zaporedje
|
161
|
-
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
|
-
|
613
|
-
|
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:
|
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.
|
21
|
+
s.required_ruby_version = '>= 2.5'
|
22
22
|
|
23
|
-
s.add_dependency 'rails', '
|
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'
|
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'
|
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')
|
data/lib/drg_cms/version.rb
CHANGED
@@ -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
|
-
|
16
|
-
|
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
|
data/lib/tasks/database.rake
CHANGED
@@ -6,61 +6,9 @@
|
|
6
6
|
#########################################################################
|
7
7
|
def determine_model(path)
|
8
8
|
path =~ /(.*)\/(.*).rb/
|
9
|
-
|
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
|
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
|
-
|
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
|
-
|
39
|
+
@logger.info( "MONGOID: Remove undefined indexes.")
|
40
|
+
Mongoid::Tasks::Database.remove_undefined_indexes(all_models)
|
91
41
|
end
|
92
42
|
|
93
43
|
end
|