knowledge_base 0.1.0 → 0.2.0

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 (123) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -1
  3. data/app/models/knowledge_base/category_article_association.rb +1 -2
  4. data/app/models/knowledge_base/section.rb +1 -5
  5. data/app/models/knowledge_base/sectionables/attachments.rb +7 -0
  6. data/app/models/knowledge_base/sectionables/attachments/attachment.rb +5 -0
  7. data/app/models/knowledge_base/sectionables/attachments/list.rb +5 -0
  8. data/app/models/knowledge_base/sectionables/gallery.rb +3 -7
  9. data/app/models/knowledge_base/sectionables/gallery/image.rb +1 -3
  10. data/app/models/knowledge_base/sectionables/image.rb +3 -7
  11. data/app/models/knowledge_base/sectionables/links.rb +3 -5
  12. data/app/models/knowledge_base/sectionables/links/link.rb +1 -6
  13. data/app/models/knowledge_base/sectionables/links/list.rb +5 -0
  14. data/app/models/knowledge_base/sectionables/list.rb +3 -7
  15. data/app/models/knowledge_base/sectionables/list/item.rb +1 -1
  16. data/app/models/knowledge_base/sectionables/sectionable.rb +3 -7
  17. data/app/models/knowledge_base/sectionables/text.rb +3 -5
  18. data/app/models/knowledge_base/sectionables/video.rb +3 -11
  19. data/app/uploaders/knowledge_base/generic_file_uploader.rb +7 -0
  20. data/app/uploaders/knowledge_base/image_uploader.rb +0 -48
  21. data/app/views/knowledge_base/articles/_article.html.erb +3 -3
  22. data/app/views/knowledge_base/articles/_search.html.erb +6 -0
  23. data/app/views/knowledge_base/articles/index.html.erb +11 -0
  24. data/app/views/knowledge_base/categories/_category.html.erb +2 -2
  25. data/app/views/knowledge_base/sectionables/attachments/lists/_list.html.erb +14 -0
  26. data/app/views/knowledge_base/sectionables/links/lists/_list.html.erb +13 -0
  27. data/app/views/knowledge_base/sectionables/lists/_list.html.erb +4 -0
  28. data/app/views/knowledge_base/sectionables/texts/_text.html.erb +4 -0
  29. data/app/views/knowledge_base/sectionables/videos/_video.html.erb +4 -1
  30. data/config/locales/en.yml +131 -0
  31. data/config/locales/nb.yml +94 -15
  32. data/config/routes.rb +2 -0
  33. data/db/migrate/20140318125210_default_position_fields.rb +10 -0
  34. data/db/migrate/20140318210722_change_knowledge_base_gallery_description_to_text.rb +9 -0
  35. data/db/migrate/20140320125825_add_image_to_texts.rb +5 -0
  36. data/db/migrate/20140325083548_add_image_to_sectionables_lists.rb +5 -0
  37. data/db/migrate/20140404234850_create_knowledge_base_sectionables_attachments.rb +8 -0
  38. data/db/migrate/20140410184906_create_knowledge_base_sectionables_attachment_lists.rb +7 -0
  39. data/db/migrate/20140410185528_add_attachment_list_reference_to_knowledge_base_sectionables_attachments.rb +8 -0
  40. data/db/migrate/20140410191611_migrate_attachments_over_to_lists.rb +49 -0
  41. data/db/migrate/20140410203342_rename_attachment_lists_to_attachments_lists.rb +5 -0
  42. data/db/migrate/20140410205056_rename_attachments_to_attachments_attachments.rb +5 -0
  43. data/db/migrate/20140410224403_rename_links_to_links_lists.rb +5 -0
  44. data/db/migrate/20140410231048_fix_sectionable_types_for_attachments.rb +13 -0
  45. data/db/migrate/20140410231433_fix_sectionable_types_for_links.rb +13 -0
  46. data/db/migrate/20140430112603_add_description_to_knowledge_base_attachments_attachment.rb +5 -0
  47. data/db/migrate/20140430112633_add_description_to_knowledge_base_links_link.rb +5 -0
  48. data/db/migrate/20140820114750_add_custom_style_to_knowledge_base_sectionables.rb +21 -0
  49. data/db/migrate/20140821081854_remove_custom_style_from_non_sectionables.rb +8 -0
  50. data/db/migrate/20140821085102_rename_custom_style_to_style.rb +11 -0
  51. data/db/migrate/20140821151832_add_title_to_knowledge_base_sectionables_videos.rb +5 -0
  52. data/db/migrate/20140930121510_add_title_to_attachment_lists.rb +5 -0
  53. data/fixtures/parrot.png +0 -0
  54. data/fixtures/sample.pdf +0 -0
  55. data/lib/generators/knowledge_base/active_admin/USAGE +8 -0
  56. data/lib/generators/knowledge_base/active_admin/active_admin_generator.rb +9 -0
  57. data/lib/generators/knowledge_base/active_admin/templates/article.rb +92 -0
  58. data/lib/generators/knowledge_base/active_admin/templates/category.rb +70 -0
  59. data/lib/generators/knowledge_base/active_admin/templates/sectionables/attachments/list.rb +25 -0
  60. data/lib/generators/knowledge_base/active_admin/templates/sectionables/gallery.rb +44 -0
  61. data/lib/generators/knowledge_base/active_admin/templates/sectionables/image.rb +37 -0
  62. data/lib/generators/knowledge_base/active_admin/templates/sectionables/links/list.rb +35 -0
  63. data/lib/generators/knowledge_base/active_admin/templates/sectionables/list.rb +48 -0
  64. data/lib/generators/knowledge_base/active_admin/templates/sectionables/text.rb +42 -0
  65. data/lib/generators/knowledge_base/active_admin/templates/sectionables/video.rb +20 -0
  66. data/lib/knowledge_base.rb +3 -0
  67. data/lib/knowledge_base/concerns/controllers/articles_controller.rb +21 -2
  68. data/lib/knowledge_base/concerns/controllers/categories_controller.rb +3 -2
  69. data/lib/knowledge_base/concerns/models.rb +31 -0
  70. data/lib/knowledge_base/concerns/models/article.rb +4 -3
  71. data/lib/knowledge_base/concerns/models/category.rb +2 -3
  72. data/lib/knowledge_base/concerns/models/category_article_association.rb +8 -0
  73. data/lib/knowledge_base/concerns/models/section.rb +13 -0
  74. data/lib/knowledge_base/concerns/models/sectionables/attachments/attachment.rb +11 -0
  75. data/lib/knowledge_base/concerns/models/sectionables/attachments/list.rb +15 -0
  76. data/lib/knowledge_base/concerns/models/sectionables/gallery.rb +17 -0
  77. data/lib/knowledge_base/concerns/models/sectionables/gallery/image.rb +9 -0
  78. data/lib/knowledge_base/concerns/models/sectionables/image.rb +13 -0
  79. data/lib/knowledge_base/concerns/models/sectionables/links/link.rb +7 -0
  80. data/lib/knowledge_base/concerns/models/sectionables/links/list.rb +15 -0
  81. data/lib/knowledge_base/concerns/models/sectionables/list.rb +17 -0
  82. data/lib/knowledge_base/concerns/models/sectionables/list/item.rb +7 -0
  83. data/lib/knowledge_base/concerns/models/sectionables/sectionable.rb +28 -0
  84. data/lib/knowledge_base/concerns/models/sectionables/text.rb +13 -0
  85. data/lib/knowledge_base/concerns/models/sectionables/video.rb +15 -0
  86. data/lib/knowledge_base/configuration.rb +10 -17
  87. data/lib/knowledge_base/engine.rb +4 -0
  88. data/lib/knowledge_base/seeds.rb +7 -3
  89. data/lib/knowledge_base/version.rb +1 -1
  90. data/spec/controllers/knowledge_base/articles_controller_spec.rb +15 -4
  91. data/spec/controllers/knowledge_base/categories_controller_spec.rb +1 -1
  92. data/spec/dummy/db/development.sqlite3 +0 -0
  93. data/spec/dummy/db/schema.rb +39 -13
  94. data/spec/dummy/db/test.sqlite3 +0 -0
  95. data/spec/dummy/log/development.log +887 -0
  96. data/spec/dummy/log/test.log +999 -0
  97. data/spec/factories/knowledge_base_articles.rb +3 -3
  98. data/spec/factories/knowledge_base_categories.rb +3 -3
  99. data/spec/factories/knowledge_base_sectionables_attachment_lists.rb +6 -0
  100. data/spec/lib/knowledge_base/configuration_spec.rb +32 -8
  101. data/spec/lib/knowledge_base_spec.rb +3 -3
  102. data/spec/models/knowledge_base/article_spec.rb +0 -1
  103. data/spec/models/knowledge_base/category_article_association_spec.rb +0 -1
  104. data/spec/models/knowledge_base/category_spec.rb +0 -1
  105. data/spec/models/knowledge_base/section_spec.rb +0 -1
  106. data/spec/models/knowledge_base/sectionables/attachments/attachment_spec.rb +6 -0
  107. data/spec/models/knowledge_base/sectionables/attachments/list_spec.rb +13 -0
  108. data/spec/models/knowledge_base/sectionables/gallery/image_spec.rb +0 -1
  109. data/spec/models/knowledge_base/sectionables/gallery_spec.rb +0 -1
  110. data/spec/models/knowledge_base/sectionables/image_spec.rb +0 -1
  111. data/spec/models/knowledge_base/sectionables/links/link_spec.rb +0 -1
  112. data/spec/models/knowledge_base/sectionables/links_spec.rb +0 -1
  113. data/spec/models/knowledge_base/sectionables/list/item_spec.rb +0 -1
  114. data/spec/models/knowledge_base/sectionables/list_spec.rb +0 -1
  115. data/spec/models/knowledge_base/sectionables/sectionable_spec.rb +34 -0
  116. data/spec/models/knowledge_base/sectionables/text_spec.rb +0 -1
  117. data/spec/models/knowledge_base/sectionables/video_spec.rb +0 -7
  118. data/spec/spec_helper.rb +3 -0
  119. data/spec/views/knowledge_base/articles/show.html.erb_spec.rb +0 -1
  120. data/spec/views/knowledge_base/categories/index.html.erb_spec.rb +0 -1
  121. data/spec/views/knowledge_base/categories/show.html.erb_spec.rb +0 -1
  122. metadata +179 -7
  123. data/app/views/knowledge_base/sectionables/links/_links.html.erb +0 -5
@@ -13,37 +13,116 @@ nb:
13
13
  knowledge_base/section:
14
14
  one: Seksjon
15
15
  other: Seksjoner
16
+ knowledge_base/sectionables/attachments/attachment:
17
+ one: Vedlegg
18
+ other: Vedlegg
19
+ knowledge_base/sectionables/attachments/list:
20
+ one: Vedleggsliste
21
+ other: Vedleggslister
22
+ knowledge_base/sectionables/text:
23
+ one: Tekst
24
+ other: Tekster
25
+ knowledge_base/sectionables/image:
26
+ one: Bilde
27
+ other: Bilder
28
+ knowledge_base/sectionables/gallery:
29
+ one: Galleri
30
+ other: Gallerier
31
+ knowledge_base/sectionables/gallery/image:
32
+ one: Bilde
33
+ other: Bilder
34
+ knowledge_base/sectionables/list:
35
+ one: Liste
36
+ other: Lister
37
+ knowledge_base/sectionables/list/item:
38
+ one: Punkt
39
+ other: Punkter
40
+ knowledge_base/sectionables/links/list:
41
+ one: Lenkeliste
42
+ other: Lenkelister
43
+ knowledge_base/sectionables/links/link:
44
+ one: Lenke
45
+ other: Lenker
46
+ knowledge_base/sectionables/video:
47
+ one: Video
48
+ other: Videoer
49
+
16
50
  attributes:
17
- knowledge_base/category:
51
+ common: &common
18
52
  title: Tittel
19
53
  slug: Slug
20
54
  description: Beskrivelse
55
+ position: Plassering
56
+ created_at: Opprettet
57
+ updated_at: Sist oppdatert
58
+
59
+ sectionables: &sectionables
60
+ style: Utseende
61
+
62
+ knowledge_base/category:
63
+ <<: *common
21
64
  category: Kategori
22
65
  category_id: Kategori
23
- position: Plassering
24
66
  published_at: Publisert
25
- created_at: Opprettet
26
- updated_at: Oppdatert
27
67
  knowledge_base/article:
28
- title: Tittel
29
- slug: slug
30
- description: Beskrivelse
68
+ <<: *common
31
69
  category_article_assocations: Lenker mellom kategorier og artikler
32
70
  categories: Kategorier
33
71
  sections: Seksjoner
34
72
  published_at: Publisert
35
- created_at: Opprettet
36
- updated_at: Oppdatert
37
73
  knowledge_base/category_article_association:
74
+ <<: *common
38
75
  category: Kategori
39
76
  category_id: Kategori
40
77
  article: Artikkel
41
78
  article_id: Artikkel
42
- position: Plassering
43
- created_at: Opprettet
44
- updated_at: Oppdatert
45
79
  knowledge_base/section:
80
+ <<: *common
46
81
  sectionable: Innhold
47
- position: Plassering
48
- created_at: Opprettet
49
- updated_at: Oppdatert
82
+ sectionable_type: Innholdstype
83
+ knowledge_base/sectionables/attachments/attachment:
84
+ <<: *common
85
+ title: Tittel
86
+ file: File
87
+ knowledge_base/sectionables/attachments/list:
88
+ <<: *common
89
+ <<: *sectionables
90
+ attachments: Vedlegg
91
+ title: Tittel
92
+ file: File
93
+ knowledge_base/sectionables/text:
94
+ <<: *common
95
+ <<: *sectionables
96
+ heading: Overskrift
97
+ lead: Ingress
98
+ body: Brødtekst
99
+ remove_image: Fjern bilde
100
+ knowledge_base/sectionables/image:
101
+ <<: *common
102
+ <<: *sectionables
103
+ image: Bilde
104
+ caption: Bildetekst
105
+ knowledge_base/sectionables/gallery:
106
+ <<: *common
107
+ <<: *sectionables
108
+ knowledge_base/sectionables/gallery/image:
109
+ <<: *common
110
+ caption: Bildetekst
111
+ image: Bilde
112
+ knowledge_base/sectionables/list:
113
+ <<: *common
114
+ <<: *sectionables
115
+ remove_image: Fjern bilde
116
+ knowledge_base/sectionables/list/item:
117
+ <<: *common
118
+ body: Brødtekst
119
+ knowledge_base/sectionables/links/list:
120
+ <<: *common
121
+ <<: *sectionables
122
+ knowledge_base/sectionables/links/link:
123
+ <<: *common
124
+ url: Adresse
125
+ knowledge_base/sectionables/video:
126
+ <<: *common
127
+ <<: *sectionables
128
+ url: Adresse
@@ -1,4 +1,6 @@
1
1
  KnowledgeBase::Engine.routes.draw do
2
+ resources :articles, path: KnowledgeBase.config.articles_path, only: [:index, :show]
3
+
2
4
  resources :categories, path: KnowledgeBase.config.categories_path, only: [:index, :show] do
3
5
  resources :articles, path: KnowledgeBase.config.articles_path, only: [:show]
4
6
  end
@@ -0,0 +1,10 @@
1
+ class DefaultPositionFields < ActiveRecord::Migration
2
+ def change
3
+ change_column :knowledge_base_categories, :position, :integer, default: 0
4
+ change_column :knowledge_base_category_article_associations, :position, :integer, default: 0
5
+ change_column :knowledge_base_sections, :position, :integer, default: 0
6
+ change_column :knowledge_base_sectionables_gallery_images, :position, :integer, default: 0
7
+ change_column :knowledge_base_sectionables_links_links, :position, :integer, default: 0
8
+ change_column :knowledge_base_sectionables_list_items, :position, :integer, default: 0
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ class ChangeKnowledgeBaseGalleryDescriptionToText < ActiveRecord::Migration
2
+ def up
3
+ change_column :knowledge_base_sectionables_galleries, :description, :text, limit: nil
4
+ end
5
+
6
+ def down
7
+ change_column :knowledge_base_sectionables_galleries, :description, :string
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class AddImageToTexts < ActiveRecord::Migration
2
+ def change
3
+ add_column :knowledge_base_sectionables_texts, :image, :string
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddImageToSectionablesLists < ActiveRecord::Migration
2
+ def change
3
+ add_column :knowledge_base_sectionables_lists, :image, :string
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ class CreateKnowledgeBaseSectionablesAttachments < ActiveRecord::Migration
2
+ def change
3
+ create_table :knowledge_base_sectionables_attachments do |t|
4
+ t.string :title
5
+ t.string :file
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ class CreateKnowledgeBaseSectionablesAttachmentLists < ActiveRecord::Migration
2
+ def change
3
+ create_table :knowledge_base_sectionables_attachment_lists do |t|
4
+ t.timestamps
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ class AddAttachmentListReferenceToKnowledgeBaseSectionablesAttachments < ActiveRecord::Migration
2
+ def change
3
+ add_reference :knowledge_base_sectionables_attachments, :attachment_list
4
+
5
+ add_index :knowledge_base_sectionables_attachments, :attachment_list_id,
6
+ name: 'index_knowledge_base_attachments_on_attachment_list_id'
7
+ end
8
+ end
@@ -0,0 +1,49 @@
1
+ # This is mostly how the attachments looked at the time of the migration. They
2
+ # have later changed names, which would cause errors when running this
3
+ # migration. Hopefully, this is enough to run this through properly.
4
+ module KnowledgeBase::Sectionables
5
+ class Attachment < Sectionable
6
+ belongs_to :attachment_list
7
+ end
8
+
9
+ class AttachmentList < Sectionable
10
+ has_many :sections, as: :sectionable, dependent: :destroy
11
+
12
+ has_many :attachments, dependent: :destroy
13
+ accepts_nested_attributes_for :attachments, allow_destroy: true
14
+ end
15
+ end
16
+
17
+ class MigrateAttachmentsOverToLists < ActiveRecord::Migration
18
+ def up
19
+ KnowledgeBase::Sectionables::Attachment.all.each do |attachment|
20
+ sections = KnowledgeBase::Section
21
+ .where(sectionable_type: 'KnowledgeBase::Sectionables::Attachment')
22
+ .where(sectionable_id: attachment.id)
23
+
24
+ list = KnowledgeBase::Sectionables::AttachmentList.new
25
+ list.attachments << attachment
26
+ list.sections = sections
27
+
28
+ list.save!
29
+ end
30
+ rescue StandardError
31
+ # Do nothing
32
+ end
33
+
34
+ def down
35
+ KnowledgeBase::Sectionables::AttachmentList.all.each do |list|
36
+ sections = KnowledgeBase::Section
37
+ .where(sectionable_type: 'KnowledgeBase::Sectionables::AttachmentList')
38
+ .where(sectionable_id: list.id)
39
+
40
+ list.attachments.all.each do |attachment|
41
+ attachment.sections = sections
42
+
43
+ attachment.save!
44
+ end
45
+ end
46
+ rescue StandardError
47
+ # Do nothing
48
+ end
49
+ end
@@ -0,0 +1,5 @@
1
+ class RenameAttachmentListsToAttachmentsLists < ActiveRecord::Migration
2
+ def change
3
+ rename_table :knowledge_base_sectionables_attachment_lists, :knowledge_base_sectionables_attachments_lists
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class RenameAttachmentsToAttachmentsAttachments < ActiveRecord::Migration
2
+ def change
3
+ rename_table :knowledge_base_sectionables_attachments, :knowledge_base_sectionables_attachments_attachments
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class RenameLinksToLinksLists < ActiveRecord::Migration
2
+ def change
3
+ rename_table :knowledge_base_sectionables_links, :knowledge_base_sectionables_links_lists
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ class FixSectionableTypesForAttachments < ActiveRecord::Migration
2
+ def up
3
+ KnowledgeBase::Section
4
+ .where(sectionable_type: 'KnowledgeBase::Sectionables::AttachmentList')
5
+ .update_all sectionable_type: 'KnowledgeBase::Sectionables::Attachments::List'
6
+ end
7
+
8
+ def down
9
+ KnowledgeBase::Section
10
+ .where(sectionable_type: 'KnowledgeBase::Sectionables::Attachments::List')
11
+ .update_all sectionable_type: 'KnowledgeBase::Sectionables::AttachmentList'
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ class FixSectionableTypesForLinks < ActiveRecord::Migration
2
+ def up
3
+ KnowledgeBase::Section
4
+ .where(sectionable_type: 'KnowledgeBase::Sectionables::Links')
5
+ .update_all sectionable_type: 'KnowledgeBase::Sectionables::Links::List'
6
+ end
7
+
8
+ def down
9
+ KnowledgeBase::Section
10
+ .where(sectionable_type: 'KnowledgeBase::Sectionables::Links::List')
11
+ .update_all sectionable_type: 'KnowledgeBase::Sectionables::Links'
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class AddDescriptionToKnowledgeBaseAttachmentsAttachment < ActiveRecord::Migration
2
+ def change
3
+ add_column :knowledge_base_sectionables_attachments_attachments, :description, :text
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddDescriptionToKnowledgeBaseLinksLink < ActiveRecord::Migration
2
+ def change
3
+ add_column :knowledge_base_sectionables_links_links, :description, :text
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ class AddCustomStyleToKnowledgeBaseSectionables < ActiveRecord::Migration
2
+ def change
3
+ add_column :knowledge_base_sectionables_attachments_attachments, :custom_style, :string
4
+ add_column :knowledge_base_sectionables_attachments_lists, :custom_style, :string
5
+
6
+ add_column :knowledge_base_sectionables_galleries, :custom_style, :string
7
+ add_column :knowledge_base_sectionables_gallery_images, :custom_style, :string
8
+
9
+ add_column :knowledge_base_sectionables_images, :custom_style, :string
10
+
11
+ add_column :knowledge_base_sectionables_links_links, :custom_style, :string
12
+ add_column :knowledge_base_sectionables_links_lists, :custom_style, :string
13
+
14
+ add_column :knowledge_base_sectionables_list_items, :custom_style, :string
15
+ add_column :knowledge_base_sectionables_lists, :custom_style, :string
16
+
17
+ add_column :knowledge_base_sectionables_texts, :custom_style, :string
18
+
19
+ add_column :knowledge_base_sectionables_videos, :custom_style, :string
20
+ end
21
+ end
@@ -0,0 +1,8 @@
1
+ class RemoveCustomStyleFromNonSectionables < ActiveRecord::Migration
2
+ def change
3
+ remove_column :knowledge_base_sectionables_attachments_attachments, :custom_style, :string
4
+ remove_column :knowledge_base_sectionables_gallery_images, :custom_style, :string
5
+ remove_column :knowledge_base_sectionables_links_links, :custom_style, :string
6
+ remove_column :knowledge_base_sectionables_list_items, :custom_style, :string
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ class RenameCustomStyleToStyle < ActiveRecord::Migration
2
+ def change
3
+ rename_column :knowledge_base_sectionables_attachments_lists, :custom_style, :style
4
+ rename_column :knowledge_base_sectionables_galleries, :custom_style, :style
5
+ rename_column :knowledge_base_sectionables_images, :custom_style, :style
6
+ rename_column :knowledge_base_sectionables_links_lists, :custom_style, :style
7
+ rename_column :knowledge_base_sectionables_lists, :custom_style, :style
8
+ rename_column :knowledge_base_sectionables_texts, :custom_style, :style
9
+ rename_column :knowledge_base_sectionables_videos, :custom_style, :style
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class AddTitleToKnowledgeBaseSectionablesVideos < ActiveRecord::Migration
2
+ def change
3
+ add_column :knowledge_base_sectionables_videos, :title, :string
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddTitleToAttachmentLists < ActiveRecord::Migration
2
+ def change
3
+ add_column :knowledge_base_sectionables_attachments_lists, :title, :string
4
+ end
5
+ end
Binary file
Binary file
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Create ActiveAdmin configuration
3
+
4
+ Example:
5
+ rails generate knowledge_base:active_admin
6
+
7
+ This will create:
8
+ app/admin/knowledge_base
@@ -0,0 +1,9 @@
1
+ module KnowledgeBase
2
+ class ActiveAdminGenerator < Rails::Generators::Base
3
+ source_root File.expand_path('../templates', __FILE__)
4
+
5
+ def copy_configuration_files
6
+ directory '', 'app/admin/knowledge_base'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,92 @@
1
+ ActiveAdmin.register KnowledgeBase::Article do
2
+ menu parent: I18n.t('activerecord.models.knowledge_base')
3
+
4
+ index do
5
+ selectable_column
6
+
7
+ column :id
8
+ column :title
9
+ column :slug
10
+ column :published_at
11
+
12
+ column :published?, sortable: :published_at do |article|
13
+ css_class, label = article.published? ? [ :yes, t('texts.yes') ]
14
+ : [ :no, t('texts.no') ]
15
+
16
+ status_tag label, css_class
17
+ end
18
+
19
+ default_actions
20
+ end
21
+
22
+ show do |article|
23
+ columns do
24
+ column do
25
+ attributes_table do
26
+ row :id
27
+ row :title
28
+ row :slug
29
+ row :description do
30
+ simple_format article.description
31
+ end
32
+ row :published_at
33
+ row :created_at
34
+ row :updated_at
35
+ row :categories do
36
+ links = article.categories.map do |category|
37
+ link_to category.title, [ :admin, :knowledge_base, category ]
38
+ end
39
+
40
+ raw links.join(", ")
41
+ end
42
+
43
+ row :tags do
44
+ article.tags.map(&:title).join ", "
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+
51
+ sectionables = [
52
+ 'KnowledgeBase::Sectionables::Gallery',
53
+ 'KnowledgeBase::Sectionables::Image',
54
+ 'KnowledgeBase::Sectionables::Links',
55
+ 'KnowledgeBase::Sectionables::List',
56
+ 'KnowledgeBase::Sectionables::Text',
57
+ 'KnowledgeBase::Sectionables::Video',
58
+ ]
59
+
60
+ form do |f|
61
+ f.inputs do
62
+ f.input :title
63
+ f.input :slug
64
+ f.input :description
65
+ f.input :published_at
66
+ f.has_many :sections, sortable: :position do |section|
67
+
68
+ section.input :sectionable_type, input_html: { parent: true },
69
+ collection: sectionables.map { |sectionable|
70
+ [sectionable.constantize.model_name.human, sectionable]
71
+ }
72
+
73
+ sectionables.each do |sectionable|
74
+ section.input :sectionable, wrapper_html: { class: 'hide', child: true, model: sectionable },
75
+ collection: sectionable.constantize.all.map { |sectionable|
76
+ [sectionable.to_s, sectionable.id]
77
+ }
78
+ end
79
+
80
+ section.input :_destroy, as: :boolean, label: I18n.t('destroy')
81
+ end
82
+ end
83
+
84
+ f.actions
85
+ end
86
+
87
+ controller do
88
+ def find_resource
89
+ scoped_collection.friendly.find params[:id]
90
+ end
91
+ end
92
+ end