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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 902f665c6b7069b91bfb814f3ac35a037b84dba8
4
- data.tar.gz: b07ccea2e4bbd55331fdf4450e7f2f3ae854d755
3
+ metadata.gz: 9cb5a753f0a330d1ecdc720b54f4d0110f0cd343
4
+ data.tar.gz: 520627e63ae829f121465e11c72483bc85bdeb94
5
5
  SHA512:
6
- metadata.gz: 2b61a7f8da04f0203a213b49057ef44d4b4eb9901af0468000378bc475a0262322784b32b6b29897309b1f09fc9ead01e2dab5102785e53ab401dea25d625e72
7
- data.tar.gz: 95974a702dcf790fa2a60d5f974fad3963c02817242c2b5121668354a1fdab44546b5840db151a61f4e4979a5cdf23beef122f9b556fe98c0e360f89436880c7
6
+ metadata.gz: b2a19eef373954ca57f9815dbf71d56bd92fa8f21f82a982bf823e63d587da2e38c3d3931e504e29fad27b9c439f7c33db661c2a812a78410d6aa2443bd45c4e
7
+ data.tar.gz: b110fa52196088f3e8cdd3be1ca30550dd05a88ba1af10ef2df55e5cc5b20be7dc7abf62ec58eb18a9f193d7114f03a89d415d00b0e77ba7e3fd7657a7f83048
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ require 'thor'
2
+
1
3
  begin
2
4
  require 'bundler/setup'
3
5
  rescue LoadError
@@ -8,7 +10,7 @@ require 'rdoc/task'
8
10
 
9
11
  RDoc::Task.new(:rdoc) do |rdoc|
10
12
  rdoc.rdoc_dir = 'rdoc'
11
- rdoc.title = 'Mingle'
13
+ rdoc.title = 'Knowledge Base'
12
14
  rdoc.options << '--line-numbers'
13
15
  rdoc.rdoc_files.include('README.rdoc')
14
16
  rdoc.rdoc_files.include('lib/**/*.rb')
@@ -1,6 +1,5 @@
1
1
  module KnowledgeBase
2
2
  class CategoryArticleAssociation < ActiveRecord::Base
3
- belongs_to :category
4
- belongs_to :article
3
+ include Concerns::Models::CategoryArticleAssociation
5
4
  end
6
5
  end
@@ -1,9 +1,5 @@
1
1
  module KnowledgeBase
2
2
  class Section < ActiveRecord::Base
3
- # It sounds wrong that a section "belongs to" a sectionable, but we want the foreign
4
- # key to be on this side and declaring `belongs_to` is the only way to do that.
5
- belongs_to :sectionable, polymorphic: true
6
-
7
- belongs_to :container, polymorphic: true
3
+ include Concerns::Models::Section
8
4
  end
9
5
  end
@@ -0,0 +1,7 @@
1
+ module KnowledgeBase::Sectionables
2
+ module Attachments
3
+ def self.table_name_prefix
4
+ "knowledge_base_sectionables_attachments_"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ module KnowledgeBase
2
+ class Sectionables::Attachments::Attachment < ActiveRecord::Base
3
+ include Concerns::Models::Sectionables::Attachments::Attachment
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module KnowledgeBase
2
+ class Sectionables::Attachments::List < Sectionables::Sectionable
3
+ include Concerns::Models::Sectionables::Attachments::List
4
+ end
5
+ end
@@ -1,9 +1,5 @@
1
- module KnowledgeBase::Sectionables
2
- class Gallery < Sectionable
3
- has_many :images, -> { order 'position DESC' }
4
-
5
- def to_s
6
- "#{super}: #{title}"
7
- end
1
+ module KnowledgeBase
2
+ class Sectionables::Gallery < Sectionables::Sectionable
3
+ include Concerns::Models::Sectionables::Gallery
8
4
  end
9
5
  end
@@ -1,7 +1,5 @@
1
1
  module KnowledgeBase
2
2
  class Sectionables::Gallery::Image < ActiveRecord::Base
3
- belongs_to :gallery
4
-
5
- mount_uploader :image, ImageUploader
3
+ include Concerns::Models::Sectionables::Gallery::Image
6
4
  end
7
5
  end
@@ -1,9 +1,5 @@
1
- module KnowledgeBase::Sectionables
2
- class Image < Sectionable
3
- mount_uploader :image, ImageUploader
4
-
5
- def to_s
6
- "#{super}: #{caption}"
7
- end
1
+ module KnowledgeBase
2
+ class Sectionables::Image < Sectionables::Sectionable
3
+ include Concerns::Models::Sectionables::Image
8
4
  end
9
5
  end
@@ -1,9 +1,7 @@
1
1
  module KnowledgeBase::Sectionables
2
- class Links < Sectionable
3
- has_many :links
4
-
5
- def to_s
6
- "#{super}: #{links.map(&:title).join(', ')}"
2
+ module Links
3
+ def self.table_name_prefix
4
+ 'knowledge_base_sectionables_links_'
7
5
  end
8
6
  end
9
7
  end
@@ -1,10 +1,5 @@
1
1
  module KnowledgeBase
2
2
  class Sectionables::Links::Link < ActiveRecord::Base
3
- # ActiveRecord assumes our table will be called 'knowledge_base_sectionables_link_links'
4
- # because it likes to singularize modules. 'Links' It is not a module, however, but rather
5
- # a class that represents a collection of links.
6
- self.table_name = 'knowledge_base_sectionables_links_links'
7
-
8
- belongs_to :links
3
+ include Concerns::Models::Sectionables::Links::Link
9
4
  end
10
5
  end
@@ -0,0 +1,5 @@
1
+ module KnowledgeBase
2
+ class Sectionables::Links::List < Sectionables::Sectionable
3
+ include Concerns::Models::Sectionables::Links::List
4
+ end
5
+ end
@@ -1,9 +1,5 @@
1
- module KnowledgeBase::Sectionables
2
- class List < Sectionable
3
- has_many :items, -> { order 'position ASC' }
4
-
5
- def to_s
6
- "#{super}: #{title}"
7
- end
1
+ module KnowledgeBase
2
+ class Sectionables::List < Sectionables::Sectionable
3
+ include Concerns::Models::Sectionables::List
8
4
  end
9
5
  end
@@ -1,5 +1,5 @@
1
1
  module KnowledgeBase
2
2
  class Sectionables::List::Item < ActiveRecord::Base
3
- belongs_to :list
3
+ include Concerns::Models::Sectionables::List::Item
4
4
  end
5
5
  end
@@ -1,9 +1,5 @@
1
- module KnowledgeBase::Sectionables
2
- class Sectionable < ActiveRecord::Base
3
- self.abstract_class = true
4
-
5
- def to_s
6
- self.class.model_name.human
7
- end
1
+ module KnowledgeBase
2
+ class Sectionables::Sectionable < ActiveRecord::Base
3
+ include Concerns::Models::Sectionables::Sectionable
8
4
  end
9
5
  end
@@ -1,7 +1,5 @@
1
- module KnowledgeBase::Sectionables
2
- class Text < Sectionable
3
- def to_s
4
- "#{super}: #{heading}"
5
- end
1
+ module KnowledgeBase
2
+ class Sectionables::Text < Sectionables::Sectionable
3
+ include Concerns::Models::Sectionables::Text
6
4
  end
7
5
  end
@@ -1,13 +1,5 @@
1
- module KnowledgeBase::Sectionables
2
- class Video < Sectionable
3
- VIDEO_ID_EXPRESSION = %r{^https?://(?:(?:www|m)\.)?youtube\.com/watch\?v=([^&]+)}
4
-
5
- def youtube_id
6
- url[VIDEO_ID_EXPRESSION, 1]
7
- end
8
-
9
- def to_s
10
- "#{super}: #{url}"
11
- end
1
+ module KnowledgeBase
2
+ class Sectionables::Video < Sectionables::Sectionable
3
+ include Concerns::Models::Sectionables::Video
12
4
  end
13
5
  end
@@ -0,0 +1,7 @@
1
+ module KnowledgeBase
2
+ class GenericFileUploader < CarrierWave::Uploader::Base
3
+ def store_dir
4
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
5
+ end
6
+ end
7
+ end
@@ -1,52 +1,4 @@
1
- # encoding: utf-8
2
-
3
1
  module KnowledgeBase
4
2
  class ImageUploader < CarrierWave::Uploader::Base
5
-
6
- # Include RMagick or MiniMagick support:
7
- # include CarrierWave::RMagick
8
- # include CarrierWave::MiniMagick
9
-
10
- # Choose what kind of storage to use for this uploader:
11
- storage KnowledgeBase.config.storage
12
-
13
- # Override the directory where uploaded files will be stored.
14
- # This is a sensible default for uploaders that are meant to be mounted:
15
- def store_dir
16
- "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
17
- end
18
-
19
- # Provide a default URL as a default if there hasn't been a file uploaded:
20
- # def default_url
21
- # # For Rails 3.1+ asset pipeline compatibility:
22
- # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
23
- #
24
- # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
25
- # end
26
-
27
- # Process files as they are uploaded:
28
- # process :scale => [200, 300]
29
- #
30
- # def scale(width, height)
31
- # # do something
32
- # end
33
-
34
- # Create different versions of your uploaded files:
35
- # version :thumb do
36
- # process :resize_to_fit => [50, 50]
37
- # end
38
-
39
- # Add a white list of extensions which are allowed to be uploaded.
40
- # For images you might use something like this:
41
- # def extension_white_list
42
- # %w(jpg jpeg gif png)
43
- # end
44
-
45
- # Override the filename of the uploaded files:
46
- # Avoid using model.id or version_name here, see uploader/store.rb for details.
47
- # def filename
48
- # "something.jpg" if original_filename
49
- # end
50
-
51
3
  end
52
4
  end
@@ -9,9 +9,9 @@
9
9
 
10
10
  <div class="sections">
11
11
  <% article.sections.each do |section| %>
12
- <div class="<%= section.sectionable.class.name.demodulize.downcase %> section">
13
- <%= render section.sectionable %>
14
- </div>
12
+ <div class="<%= section.sectionable.class.name.demodulize.downcase %> section <%= section.sectionable.style %>">
13
+ <%= render section.sectionable %>
14
+ </div>
15
15
  <% end %>
16
16
  </div>
17
17
  </div>
@@ -0,0 +1,6 @@
1
+ <div class="search">
2
+ <%= search_form_for @search do |f| %>
3
+ <%= f.label :title_or_description_cont %>
4
+ <%= f.search_field :title_or_description_cont %>
5
+ <% end %>
6
+ </div>
@@ -0,0 +1,11 @@
1
+ <%= render "search" %>
2
+
3
+ <div class="articles">
4
+ <% @articles.each do |article| %>
5
+ <div class="article">
6
+ <h2 class="title"><%= link_to article.title, article_path(article) %></h2>
7
+
8
+ <div class="description"><%= simple_format article.description %></div>
9
+ </div>
10
+ <% end %>
11
+ </div>
@@ -8,9 +8,9 @@
8
8
  </div>
9
9
 
10
10
  <div class="articles">
11
- <% category.articles.each do |article| %>
11
+ <% @articles.each do |article| %>
12
12
  <div class="article">
13
- <h2 class="title"><%= link_to article.title, category_article_path(category, article) %></h2>
13
+ <h2 class="title"><%= link_to article.title, article_path(article) %></h2>
14
14
 
15
15
  <div class="description"><%= simple_format article.description %></div>
16
16
  </div>
@@ -0,0 +1,14 @@
1
+ <section class="attachments">
2
+ <% list.attachments.each do |attachment| %>
3
+ <div class="link"><%= link_to attachment.title,
4
+ attachment.file.to_s,
5
+ download: File.basename(attachment.file.to_s) %>
6
+ </div>
7
+
8
+ <% if attachment.description.present? %>
9
+ <div class="description">
10
+ <%= simple_format attachment.description %>
11
+ </div>
12
+ <% end %>
13
+ <% end %>
14
+ </section>
@@ -0,0 +1,13 @@
1
+ <nav class="links">
2
+ <% list.links.each do |link| %>
3
+ <div class="link">
4
+ <%= link_to link.title, link.url %>
5
+ </div>
6
+
7
+ <% if link.description.present? %>
8
+ <div class="description">
9
+ <%= simple_format link.description %>
10
+ </div>
11
+ <% end %>
12
+ <% end %>
13
+ </nav>
@@ -1,5 +1,9 @@
1
1
  <h2 class="title"><%= list.title %></h2>
2
2
 
3
+ <% if list.image? %>
4
+ <%= image_tag list.image %>
5
+ <% end %>
6
+
3
7
  <div class="description">
4
8
  <%= simple_format list.description %>
5
9
  </div>
@@ -1,5 +1,9 @@
1
1
  <h2 class="heading"><%= text.heading %></h2>
2
2
 
3
+ <% if text.image? %>
4
+ <%= image_tag text.image %>
5
+ <% end %>
6
+
3
7
  <div class="lead">
4
8
  <%= simple_format text.lead %>
5
9
  </div>
@@ -1 +1,4 @@
1
- <iframe width="420" height="315" src="//www.youtube.com/embed/<%= video.youtube_id %>" frameborder="0" allowfullscreen></iframe>
1
+ <% if video.title %>
2
+ <h1><%= video.title %></h1>
3
+ <% end %>
4
+ <iframe width="420" height="315" src="//www.youtube.com/embed/<%= video.video_id %>" frameborder="0" allowfullscreen></iframe>
@@ -0,0 +1,131 @@
1
+ en:
2
+ activerecord:
3
+ models:
4
+ knowledge_base/category:
5
+ one: Category
6
+ other: Categories
7
+ knowledge_base/article:
8
+ one: Article
9
+ other: Articles
10
+ knowledge_base/category_article_association:
11
+ one: Link
12
+ other: Links
13
+ knowledge_base/section:
14
+ one: Section
15
+ other: Sections
16
+ knowledge_base/sectionable:
17
+ one: Sectionable
18
+ other: Sectionables
19
+ knowledge_base/sectionables/attachments/attachment:
20
+ one: Attachment
21
+ other: Attachments
22
+ knowledge_base/sectionables/attachments/list:
23
+ one: Attachment list
24
+ other: Attachment lists
25
+ knowledge_base/sectionables/text:
26
+ one: Text
27
+ other: Texts
28
+ knowledge_base/sectionables/image:
29
+ one: Image
30
+ other: Images
31
+ knowledge_base/sectionables/gallery:
32
+ one: Gallery
33
+ other: Galleries
34
+ knowledge_base/sectionables/gallery/image:
35
+ one: Image
36
+ other: Images
37
+ knowledge_base/sectionables/list:
38
+ one: List
39
+ other: Lists
40
+ knowledge_base/sectionables/list/item:
41
+ one: List item
42
+ other: List items
43
+ knowledge_base/sectionables/links/list:
44
+ one: Link list
45
+ other: Link lists
46
+ knowledge_base/sectionables/links/link:
47
+ one: Link
48
+ other: Links
49
+ knowledge_base/sectionables/video:
50
+ one: Video
51
+ other: Videos
52
+
53
+ attributes:
54
+ common: &common
55
+ title: Title
56
+ slug: Slug
57
+ description: Description
58
+ position: Position
59
+ created_at: Created at
60
+ updated_at: Updated at
61
+
62
+ sectionables: &sectionables
63
+ style: Style
64
+
65
+ knowledge_base/category:
66
+ <<: *common
67
+ category: Category
68
+ category_id: Category
69
+ published_at: Published at
70
+ knowledge_base/article:
71
+ <<: *common
72
+ categories: Categories
73
+ category_article_assocations: Links between categories and articles
74
+ published_at: Published at
75
+ sections: Sections
76
+ knowledge_base/category_article_association:
77
+ <<: *common
78
+ article: Article
79
+ article_id: Article
80
+ category: Category
81
+ category_id: Category
82
+ knowledge_base/section:
83
+ <<: *common
84
+ sectionable: Sectionable
85
+ sectionable_type: Sectionable type
86
+ knowledge_base/sectionables/attachments/attachment:
87
+ <<: *common
88
+ file: File
89
+ title: Title
90
+ knowledge_base/sectionables/attachments/list:
91
+ <<: *common
92
+ <<: *sectionables
93
+ attachments: Attachments
94
+ file: File
95
+ title: Title
96
+ knowledge_base/sectionables/text:
97
+ <<: *common
98
+ <<: *sectionables
99
+ body: Body text
100
+ heading: Heading
101
+ lead: Lead paragraph
102
+ remove_image: Remove image
103
+ knowledge_base/sectionables/image:
104
+ <<: *common
105
+ <<: *sectionables
106
+ caption: Image caption
107
+ image: Image
108
+ knowledge_base/sectionables/gallery:
109
+ <<: *common
110
+ <<: *sectionables
111
+ knowledge_base/sectionables/gallery/image:
112
+ <<: *common
113
+ caption: Image caption
114
+ image: Image
115
+ knowledge_base/sectionables/list:
116
+ <<: *common
117
+ <<: *sectionables
118
+ remove_image: Remove image
119
+ knowledge_base/sectionables/list/item:
120
+ <<: *common
121
+ body: Body text
122
+ knowledge_base/sectionables/links/list:
123
+ <<: *common
124
+ <<: *sectionables
125
+ knowledge_base/sectionables/links/link:
126
+ <<: *common
127
+ url: URL
128
+ knowledge_base/sectionables/video:
129
+ <<: *common
130
+ <<: *sectionables
131
+ url: URL