drg_manual 0.0.1

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 (57) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +60 -0
  4. data/Rakefile +39 -0
  5. data/app/assets/stylesheets/drg_manual.css +52 -0
  6. data/app/controllers/drgcms_controls/dc_book_chapter_dc_reply_control.rb +50 -0
  7. data/app/forms/cms_menu.yml +34 -0
  8. data/app/forms/dc_manual.yml +58 -0
  9. data/app/forms/dc_manual_page.yml +70 -0
  10. data/app/forms/dc_manual_settings.yml +17 -0
  11. data/app/helpers/dc_manual_renderer.rb +209 -0
  12. data/app/models/dc_manual.rb +135 -0
  13. data/app/models/dc_manual_page.rb +71 -0
  14. data/app/views/dc_manual/_chapter.html.erb +36 -0
  15. data/app/views/dc_manual/_chapter_old.html.erb +34 -0
  16. data/app/views/dc_manual/_list.html.erb +13 -0
  17. data/app/views/dc_manual/_toc.html.erb +10 -0
  18. data/config/locales/dc_manual_en.yml +91 -0
  19. data/config/locales/dc_manual_sl.yml +83 -0
  20. data/config/routes.rb +2 -0
  21. data/lib/drg_manual.rb +6 -0
  22. data/lib/drg_manual/engine.rb +4 -0
  23. data/lib/drg_manual/version.rb +3 -0
  24. data/lib/tasks/drg_manual_tasks.rake +31 -0
  25. data/lib/tasks/error_test.rake +17 -0
  26. data/test/drg_manual_test.rb +7 -0
  27. data/test/dummy/README.rdoc +261 -0
  28. data/test/dummy/Rakefile +7 -0
  29. data/test/dummy/app/assets/javascripts/application.js +15 -0
  30. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  31. data/test/dummy/app/controllers/application_controller.rb +3 -0
  32. data/test/dummy/app/helpers/application_helper.rb +2 -0
  33. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  34. data/test/dummy/config.ru +4 -0
  35. data/test/dummy/config/application.rb +59 -0
  36. data/test/dummy/config/boot.rb +10 -0
  37. data/test/dummy/config/database.yml +25 -0
  38. data/test/dummy/config/environment.rb +5 -0
  39. data/test/dummy/config/environments/development.rb +37 -0
  40. data/test/dummy/config/environments/production.rb +67 -0
  41. data/test/dummy/config/environments/test.rb +37 -0
  42. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  43. data/test/dummy/config/initializers/inflections.rb +15 -0
  44. data/test/dummy/config/initializers/mime_types.rb +5 -0
  45. data/test/dummy/config/initializers/secret_token.rb +7 -0
  46. data/test/dummy/config/initializers/session_store.rb +8 -0
  47. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  48. data/test/dummy/config/locales/en.yml +5 -0
  49. data/test/dummy/config/routes.rb +58 -0
  50. data/test/dummy/public/404.html +26 -0
  51. data/test/dummy/public/422.html +26 -0
  52. data/test/dummy/public/500.html +25 -0
  53. data/test/dummy/public/favicon.ico +0 -0
  54. data/test/dummy/script/rails +6 -0
  55. data/test/integration/navigation_test.rb +10 -0
  56. data/test/test_helper.rb +15 -0
  57. metadata +145 -0
@@ -0,0 +1,135 @@
1
+ #--
2
+ # Copyright (c) 2018 Damjan Rems
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+
25
+ class DcManual
26
+ include Mongoid::Document
27
+ include Mongoid::Timestamps
28
+
29
+ field :title , type: String
30
+ field :link, type: String
31
+ field :description, type: String
32
+ field :body, type: String
33
+ field :picture, type: String
34
+ field :author, type: String
35
+ field :order, type: Integer, default: 10
36
+ field :policy_id, type: BSON::ObjectId
37
+ field :active, type: Boolean, default: true
38
+ field :menu, type: String
39
+ field :css, type: String
40
+
41
+ embeds_many :dc_manual_pages
42
+
43
+ index( { link: 1 } )
44
+
45
+ validates :title, presence: true
46
+ validates :description, presence: true
47
+
48
+ before_save :do_before_save
49
+
50
+ ######################################################################
51
+ # Update befoer save
52
+ ######################################################################
53
+ def do_before_save
54
+ # update link
55
+ if self.link.blank?
56
+ self.link = DcManual.clear_link( self.title.downcase.strip )
57
+ end
58
+ # Prepare menu_data for caching menu. Save as tab delimited
59
+ self.menu = DcManual.update_menu(self).inject('') {|result, element| result << element.join("\t") + "\n"}
60
+ end
61
+
62
+ ######################################################################
63
+ # Returns menu data suitable for choices in tree_select DRGCMS field
64
+ ######################################################################
65
+ def choices4_all_as_tree(all=false)
66
+ all ? DcManual.get_menu_all() : DcManual.get_menu(self)
67
+ end
68
+
69
+ protected
70
+
71
+ ##########################################################################
72
+ # Strip unwante characters from link and trim it to 100 chars
73
+ ##########################################################################
74
+ def self.clear_link(link)
75
+ link.gsub!(/\+|\–|\.|\?|\!\&|»|«|\,|\"|\'|\%|\:|\/|\(|\)/,'')
76
+ link.chomp!()
77
+ link.gsub!(' ','-')
78
+ link.squeeze!('-')
79
+ link = link[0,100]
80
+ ix = link.size
81
+ ix = link.rindex('-') if ix == 100
82
+ link[0,ix]
83
+ end
84
+
85
+ #######################################################################
86
+ # Do one subpage
87
+ #######################################################################
88
+ def self.do_sub_page(pages, parent, ids) #:nodoc:
89
+ result = []
90
+ pages.each do |page|
91
+ next unless page.active
92
+ long_id = "#{ids};#{page.id}"
93
+ result << [page.title, long_id, parent, page.order, page.link]
94
+ sub_pages = page.dc_manual_pages.order_by(order: 1).to_a
95
+ result += self.do_sub_page(sub_pages, long_id, long_id) if sub_pages.size > 0
96
+ end
97
+ result
98
+ end
99
+
100
+ ######################################################################
101
+ # Update cached menu
102
+ ######################################################################
103
+ def self.update_menu(document)
104
+ pages = document.dc_manual_pages.only(:id, :order, :title, :link).order_by(order: 1).to_a
105
+ result = [[document.title, document.id, '', 0, document.link]]
106
+ result += self.do_sub_page(pages, document.id, document.id ) if pages.size > 0
107
+ result.sort{|a,b| a[2] <=> b[2]}
108
+ end
109
+
110
+ ######################################################################
111
+ # Meni za vse
112
+ ######################################################################
113
+ #def self.all_manuals_menu()
114
+ # manuals = self.only(:id, :title, :link).where(active: true).order_by(title: 1).to_a
115
+ # manuals.inject([]) { |result, manual| result += self.meni_en_prirocnik(element) }
116
+ #end
117
+
118
+ ######################################################################
119
+ # Returns menu for manual
120
+ ######################################################################
121
+ def self.get_menu(manual)
122
+ manual.menu.split("\n").each.inject([]) do |result, line|
123
+ result += [line.split("\t")]
124
+ end
125
+ end
126
+
127
+ ######################################################################
128
+ # Vrne menije za vse priročnike
129
+ ######################################################################
130
+ def self.get_all_menus()
131
+ manuals = self.only(:menu).where(active: true).order_by(title: 1).to_a
132
+ manuals.inject([]) { |result, manual| result += self.get_menu(manual) }
133
+ end
134
+
135
+ end
@@ -0,0 +1,71 @@
1
+ #--
2
+ # Copyright (c) 2018 Damjan Rems
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ class DcManualPage
25
+ include Mongoid::Document
26
+ include Mongoid::Timestamps
27
+
28
+ field :title, type: String
29
+ field :link, type: String
30
+ field :use_page, type: BSON::ObjectId
31
+ field :body, type: String
32
+ field :picture, type: String
33
+ field :author, type: String
34
+ field :order, type: Integer
35
+ field :policy_id, type: BSON::ObjectId
36
+ field :active, type: Boolean, default: true
37
+
38
+ index( { link: 1 } )
39
+
40
+ embeds_many :dc_manual_pages, :cyclic => true
41
+
42
+ validates :title, presence: true
43
+
44
+ before_save :do_before_save
45
+ after_save :update_menu
46
+ after_destroy :update_menu
47
+
48
+ protected
49
+
50
+ ######################################################################
51
+ #
52
+ ######################################################################
53
+ def do_before_save
54
+ if self.link.blank?
55
+ self.link = DcManual.clear_link( self.title.downcase.strip )
56
+ end
57
+ end
58
+
59
+ ######################################################################
60
+ # Update manual menu after page has been saved
61
+ ######################################################################
62
+ def update_menu
63
+ parent = self._parent
64
+ while parent.class != DcManual do
65
+ parent = parent._parent
66
+ end
67
+ parent.do_before_save
68
+ parent.save
69
+ end
70
+
71
+ end
@@ -0,0 +1,36 @@
1
+ <div class="book-top"><%= chapter.dc_book.title %></div>
2
+
3
+ <div class="book-chapter-title"><%= chapter.title %></div>
4
+ <div class="book-chapter-prev-next">
5
+ <%= dc_link_to(prev_chapter.title, 'hand-o-left', controller: :books, method: 'chapter',
6
+ book_id: prev_chapter.dc_book.link, chapter_id: prev_chapter.link ) if prev_chapter %>&nbsp;|&nbsp;
7
+ <%= dc_link_to(' ','hand-o-up', book_id: chapter.dc_book.link, method: 'toc' ) %>&nbsp;|&nbsp;
8
+ <%= dc_link_to(next_chapter.title, 'hand-o-right', controller: :books, method: 'chapter',
9
+ book_id: next_chapter.dc_book.link, chapter_id: next_chapter.link ) if next_chapter %>
10
+ </div>
11
+
12
+ <div class="book-chapter-text">
13
+ <%= if dc_edit_mode?
14
+ dc_link_for_edit({ controller: 'cmsedit', action: 'edit', id: text._id, ids: chapter._id,
15
+ table: 'dc_book_chapter;dc_book_text', title: "#{t('drgcms.edit')}" })
16
+ end %>
17
+
18
+ <%= text.body.html_safe %>
19
+ </div>
20
+
21
+ <div class="book-chapter-prev-next">
22
+ <%= dc_link_to(prev_chapter.title, 'hand-o-left', method: 'chapter',
23
+ book_id: prev_chapter.dc_book.link, chapter_id: prev_chapter.link ) if prev_chapter %>&nbsp;|&nbsp;
24
+ <%= dc_link_to(' ','hand-o-up', book_id: chapter.dc_book.link, method: 'toc' ) %>&nbsp;|&nbsp;
25
+ <%= dc_link_to(next_chapter.title, 'hand-o-right', method: 'chapter',
26
+ book_id: next_chapter.dc_book.link, chapter_id: next_chapter.link ) if next_chapter %>
27
+ </div>
28
+
29
+ <div class="book-replies">
30
+ <h2><%= t('dc_blog.comments') %></h2>
31
+ <%= render partial: 'dc_replay/reply', formats: [:html],
32
+ locals: { replies: replies, parent_doc: chapter, parent_document: 'dc_book_chapter' } %>
33
+ </div>
34
+ <br>
35
+
36
+ <iframe id="iframe_edit" name="iframe_edit" scrolling="no"></iframe>
@@ -0,0 +1,34 @@
1
+ <div class="book-top">
2
+ <%= chapter.dc_book.title %>
3
+ <div style="font-size:0.6em;"><%= chapter.title %></div>
4
+ </div>
5
+ <div class="book-chapter-versions"><%= t('drgcms.version', 'Version') %>:
6
+ <% versions.each do |v| %>&nbsp;
7
+ <%= text.version == v[0] ? v[0] :
8
+ link_to(v[0], method: 'chapter', book_id: chapter.dc_book_id, chapter_id: chapter._id, text_id: v[1] ) %>&nbsp;
9
+ <% end %>
10
+ </div>
11
+ <div class="book-chapter-prev-next">
12
+ <%= dc_link_to(prev_chapter.title, 'hand-o-left', method: 'chapter',
13
+ book_id: prev_chapter.dc_book.link, chapter_id: prev_chapter.link ) if prev_chapter %>&nbsp;|&nbsp;
14
+ <%= dc_link_to(' ','hand-o-up', book_id: chapter.dc_book.link, method: 'toc' ) %>&nbsp;|&nbsp;
15
+ <%= dc_link_to(next_chapter.title, 'hand-o-right', method: 'chapter',
16
+ book_id: next_chapter.dc_book.link, chapter_id: next_chapter.link ) if next_chapter %>
17
+
18
+ </div>
19
+ <div class="book-chapter-text">
20
+ <%= if dc_edit_mode?
21
+ dc_link_for_edit({ controller: 'cmsedit', action: 'edit', id: text._id, ids: chapter._id,
22
+ table: 'dc_book_chapter;dc_book_text', title: "#{t('drgcms.edit')}" })
23
+ end %>
24
+
25
+ <%= text.body.html_safe %>
26
+ </div>
27
+
28
+ <div class="book-replies">
29
+ <h2><%= t('dc_blog.comments') %></h2>
30
+ <%= render partial: 'dc_replay/reply', formats: [:html],
31
+ locals: { replies: replies, parent_id: chapter.id, parent_document: 'dc_book_chapter' } %>
32
+ </div>
33
+
34
+ <iframe id="iframe_edit" name="iframe_edit" scrolling="no"></iframe>
@@ -0,0 +1,13 @@
1
+ <h2><%= t('dc_manual.list') %></h2>
2
+ <div class="manual-list">
3
+ <% manuals.each do |manual| %>
4
+ <div class="title">
5
+ <% if dc_edit_mode?
6
+ dc_link_for_edit({ action: 'edit', table: 'dc_manual', id: manual._id,
7
+ title: "#{t('drgcms.edit')} #{manual.title}" })
8
+ end %>
9
+ <%= link_to(manual.title, "/#{@page.link}/#{manual.link}") %>
10
+ <div class="description"><%= manual.description %></div>
11
+ </div>
12
+ <% end %>
13
+ </div>
@@ -0,0 +1,10 @@
1
+ <div class="book-top"><%= book.title %>
2
+ <div class="book-contents">
3
+ <% chapters.each do |chapter| %>
4
+ <% a=chapter.chapter.split('.'); last=a.last; level=a.size%>
5
+ <div class="book-contents-level<%= level %>">
6
+ <%= link_to(chapter.title, method: 'chapter', book_id: chapter.dc_book.link, chapter_id: chapter.link ) %>
7
+ </div>
8
+ <% end %>
9
+ </div>
10
+ </div>
@@ -0,0 +1,91 @@
1
+ #--
2
+ # Copyright (c) 2018+ Damjan Rems
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+ en:
24
+ dc_manual:
25
+ new: Create new manual
26
+ edit: Edit manual
27
+ edit_chapter: 'Edit: %{title}'
28
+ new_chapter: 'Create new chapter in %{title}'
29
+ updated: 'Last update:'
30
+ list: All manuals
31
+
32
+ helpers:
33
+ label:
34
+ dc_manual:
35
+ tabletitle: Manual
36
+ 1basic: Basic
37
+ 2body: Body
38
+ 3pages: Subpages
39
+
40
+ title: Title
41
+ link: Link
42
+ body: Body
43
+ image: Image
44
+ author: Autor
45
+ order: Order
46
+ policy_id: Policy
47
+ active: Active
48
+ dc_manual_pages: Subpages
49
+ updated_at: Updated
50
+
51
+ dc_manual_pages:
52
+ tabletitle: Page - chapter
53
+ 1basic: Basic
54
+ 2body: Body
55
+ 3pages: Subpages
56
+
57
+ title: Chapter
58
+ link: Link
59
+ use_page: Use page
60
+ body: Body
61
+ image: Image
62
+ author: Author
63
+ order: Order
64
+ policy_id: Policy
65
+ active: Active
66
+ dc_manual_pages: Subpages
67
+ updated_at: Updated
68
+
69
+ help:
70
+ dc_manual:
71
+ title: Manual title
72
+ link: Link for manual access
73
+ body: Shorter description of manual
74
+ image: Image
75
+ author: Author name
76
+ order: Order of page in menu
77
+ policy_id: Manual access policy
78
+ active: Manual is active
79
+ drg_manual_pages: Manual chapters
80
+
81
+ dc_manual_pages:
82
+ title: Chapter title
83
+ link: Link for this chapter
84
+ use_page: Use page from other manual
85
+ body: Vsebina poglavja
86
+ image: Image
87
+ author: Chapter author name
88
+ order: Chapter order in menu
89
+ policy_id: Chapter access policy
90
+ active: Chapter is active
91
+ drg_manual_pages: Manual sub chapters
@@ -0,0 +1,83 @@
1
+ #--
2
+ # Copyright (c) 2018+ Damjan Rems
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+ sl:
24
+ helpers:
25
+ label:
26
+ dc_manual:
27
+ tabletitle: Priročnik
28
+ 1basic: Osnova
29
+ 2body: Vsebina
30
+ 3pages: Podstrani
31
+
32
+ title: Naslov
33
+ link: Povezava
34
+ body: Opis vsebine
35
+ image: Slika
36
+ author: Avtor
37
+ order: Zaporedje
38
+ policy_id: Politika
39
+ active: Aktiven
40
+ drg_manual_pages: Podstrani
41
+ updated_at: Spremenjeno
42
+
43
+ dc_manual_page:
44
+ tabletitle: Stran - poglavje priročnika
45
+ 1basic: Osnovno
46
+ 2body:: Vsebina
47
+ 3pages: Podstrani
48
+
49
+ title: Poglavje
50
+ link: Povezava
51
+ use_page: Uporabi stran
52
+ body: Vsebina
53
+ image: Slika
54
+ author: Avtor
55
+ order: Zaporedje
56
+ policy_id: Politika
57
+ active: Aktivno
58
+ drg_manual_pages: Podstrani
59
+ updated_at: Spremenjeno
60
+
61
+ help:
62
+ dc_manual:
63
+ title: Naslov priročnika
64
+ link: Povezava (link) za dostop do priročnika
65
+ body: Kratjši opis vsebine priročnika
66
+ image: Slika
67
+ author: Avtor, če ni avtomatično določen
68
+ order: Vrstni red prikaza strani v meniju
69
+ policy_id: Politika za dostop do priročnika
70
+ active: Priročnik je aktiven
71
+ drg_manual_pages: Poglavja priročnika
72
+
73
+ dc_manual_page:
74
+ title: Naslov poglavja
75
+ link: Povezava (link) za dostop do poglavja
76
+ use_page: Uporabi stran iz drugega priročnika
77
+ body: Vsebina poglavja
78
+ image: Slika
79
+ author: Avtor, če ni avtomatično določen
80
+ order: Vrstni red prikaza poglavja
81
+ policy_id: Politika za dostop do priročnika
82
+ active: Poglavje je aktivno
83
+ dc_manual_pages: Podpoglavja strani