knowledge_base 0.0.3 → 0.1.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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/knowledge_base/application_controller.rb +1 -1
  3. data/app/controllers/knowledge_base/articles_controller.rb +1 -11
  4. data/app/controllers/knowledge_base/categories_controller.rb +1 -7
  5. data/app/models/knowledge_base/article.rb +1 -9
  6. data/app/models/knowledge_base/category.rb +1 -12
  7. data/app/models/knowledge_base/sectionables/gallery.rb +6 -2
  8. data/app/models/knowledge_base/sectionables/image.rb +6 -2
  9. data/app/models/knowledge_base/sectionables/links.rb +6 -2
  10. data/app/models/knowledge_base/sectionables/list.rb +6 -2
  11. data/app/models/knowledge_base/sectionables/sectionable.rb +9 -0
  12. data/app/models/knowledge_base/sectionables/text.rb +5 -2
  13. data/app/models/knowledge_base/sectionables/video.rb +6 -2
  14. data/app/uploaders/knowledge_base/image_uploader.rb +0 -1
  15. data/app/views/knowledge_base/articles/_article.html.erb +17 -0
  16. data/app/views/knowledge_base/articles/show.html.erb +1 -11
  17. data/app/views/knowledge_base/categories/_category.html.erb +19 -0
  18. data/app/views/knowledge_base/categories/index.html.erb +9 -7
  19. data/app/views/knowledge_base/categories/show.html.erb +1 -15
  20. data/app/views/knowledge_base/sectionables/galleries/_gallery.html.erb +1 -1
  21. data/app/views/knowledge_base/sectionables/links/_links.html.erb +1 -1
  22. data/app/views/knowledge_base/sectionables/lists/_list.html.erb +2 -2
  23. data/config/initializers/routing.rb +15 -0
  24. data/config/locales/nb.yml +49 -0
  25. data/config/routes.rb +2 -2
  26. data/lib/knowledge_base.rb +5 -0
  27. data/lib/knowledge_base/concerns.rb +4 -0
  28. data/lib/knowledge_base/concerns/controllers.rb +4 -0
  29. data/lib/knowledge_base/concerns/controllers/articles_controller.rb +19 -0
  30. data/lib/knowledge_base/concerns/controllers/categories_controller.rb +15 -0
  31. data/lib/knowledge_base/concerns/models.rb +4 -0
  32. data/lib/knowledge_base/concerns/models/article.rb +22 -0
  33. data/lib/knowledge_base/concerns/models/category.rb +24 -0
  34. data/lib/knowledge_base/configuration.rb +19 -1
  35. data/lib/knowledge_base/engine.rb +6 -0
  36. data/lib/knowledge_base/seeds.rb +32 -0
  37. data/lib/knowledge_base/version.rb +1 -1
  38. data/lib/tasks/knowledge_base_tasks.rake +6 -4
  39. data/spec/dummy/db/seeds.rb +1 -28
  40. data/spec/lib/knowledge_base/configuration_spec.rb +24 -8
  41. data/spec/lib/knowledge_base_spec.rb +19 -0
  42. metadata +36 -45
  43. data/MIT-LICENSE +0 -20
  44. data/app/views/layouts/knowledge_base/application.html.erb +0 -14
  45. data/spec/dummy/db/development.sqlite3 +0 -0
  46. data/spec/dummy/log/development.log +0 -12030
  47. data/spec/dummy/log/test.log +0 -917
  48. data/spec/dummy/tmp/cache/assets/development/sprockets/062b47a3a70e4df7224b893bf001a98f +0 -0
  49. data/spec/dummy/tmp/cache/assets/development/sprockets/183c0bd4fe8641adfc2b9f735484664a +0 -0
  50. data/spec/dummy/tmp/cache/assets/development/sprockets/2f86727a5dfdf38270057bb8a6b140bc +0 -0
  51. data/spec/dummy/tmp/cache/assets/development/sprockets/32c50a0141ffd19eb481b35a22532865 +0 -0
  52. data/spec/dummy/tmp/cache/assets/development/sprockets/806fae72d2de8ab235cdf1503e8c950b +0 -0
  53. data/spec/dummy/tmp/cache/assets/development/sprockets/e9c371dd2bf884ad2ab7c34915daf486 +0 -0
  54. data/spec/dummy/tmp/pids/server.pid +0 -1
  55. data/spec/fixtures/parrot.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38e4e16f46ef1177b0e10c1b766ef129cc048e1f
4
- data.tar.gz: 67ee73a4192942beb16046819390f5a4a254ef64
3
+ metadata.gz: 902f665c6b7069b91bfb814f3ac35a037b84dba8
4
+ data.tar.gz: b07ccea2e4bbd55331fdf4450e7f2f3ae854d755
5
5
  SHA512:
6
- metadata.gz: 2c2a9d4670ade1caeec6f06c3dd5c7951a77337703402d53762de1fc7f9022f5bcb32e5bef01444ead630c4b4b6ab4ffd27b24ca6c719edecf2e2e9d8f2bd239
7
- data.tar.gz: 55ec149fc0c0ae60a07ad90b4861f68cbc76718f7ccdd3de8e0031f6d4c146802359a063f9ed8ae584f9f07abfd4d6a82123e7eb325d9627a2415b29c23d4b98
6
+ metadata.gz: 2b61a7f8da04f0203a213b49057ef44d4b4eb9901af0468000378bc475a0262322784b32b6b29897309b1f09fc9ead01e2dab5102785e53ab401dea25d625e72
7
+ data.tar.gz: 95974a702dcf790fa2a60d5f974fad3963c02817242c2b5121668354a1fdab44546b5840db151a61f4e4979a5cdf23beef122f9b556fe98c0e360f89436880c7
@@ -1,4 +1,4 @@
1
1
  module KnowledgeBase
2
- class ApplicationController < ActionController::Base
2
+ class ApplicationController < ::ApplicationController
3
3
  end
4
4
  end
@@ -2,16 +2,6 @@ require_dependency "knowledge_base/application_controller"
2
2
 
3
3
  module KnowledgeBase
4
4
  class ArticlesController < ApplicationController
5
- before_action :set_category
6
-
7
- def show
8
- @article = @category.articles.friendly.find params[:id]
9
- end
10
-
11
- private
12
-
13
- def set_category
14
- @category = Category.friendly.find params[:category_id]
15
- end
5
+ include Concerns::Controllers::ArticlesController
16
6
  end
17
7
  end
@@ -2,12 +2,6 @@ require_dependency "knowledge_base/application_controller"
2
2
 
3
3
  module KnowledgeBase
4
4
  class CategoriesController < ApplicationController
5
- def index
6
- @categories = Category.all
7
- end
8
-
9
- def show
10
- @category = Category.friendly.find params[:id]
11
- end
5
+ include Concerns::Controllers::CategoriesController
12
6
  end
13
7
  end
@@ -1,13 +1,5 @@
1
1
  module KnowledgeBase
2
2
  class Article < ActiveRecord::Base
3
- extend FriendlyId
4
-
5
- publishable
6
-
7
- friendly_id :title, use: :slugged
8
-
9
- has_many :category_article_associations
10
- has_many :categories, through: :category_article_associations
11
- has_many :sections, -> { order 'position ASC' }, as: :container
3
+ include Concerns::Models::Article
12
4
  end
13
5
  end
@@ -1,16 +1,5 @@
1
1
  module KnowledgeBase
2
2
  class Category < ActiveRecord::Base
3
- extend FriendlyId
4
-
5
- publishable
6
-
7
- friendly_id :title, use: :slugged
8
-
9
- belongs_to :category
10
- has_many :category_article_associations
11
- has_many :articles, through: :category_article_associations
12
-
13
- scope :root, -> { where parent_id: nil }
14
- scope :published, -> { where published: true }
3
+ include Concerns::Models::Category
15
4
  end
16
5
  end
@@ -1,5 +1,9 @@
1
- module KnowledgeBase
2
- class Sectionables::Gallery < ActiveRecord::Base
1
+ module KnowledgeBase::Sectionables
2
+ class Gallery < Sectionable
3
3
  has_many :images, -> { order 'position DESC' }
4
+
5
+ def to_s
6
+ "#{super}: #{title}"
7
+ end
4
8
  end
5
9
  end
@@ -1,5 +1,9 @@
1
- module KnowledgeBase
2
- class Sectionables::Image < ActiveRecord::Base
1
+ module KnowledgeBase::Sectionables
2
+ class Image < Sectionable
3
3
  mount_uploader :image, ImageUploader
4
+
5
+ def to_s
6
+ "#{super}: #{caption}"
7
+ end
4
8
  end
5
9
  end
@@ -1,5 +1,9 @@
1
- module KnowledgeBase
2
- class Sectionables::Links < ActiveRecord::Base
1
+ module KnowledgeBase::Sectionables
2
+ class Links < Sectionable
3
3
  has_many :links
4
+
5
+ def to_s
6
+ "#{super}: #{links.map(&:title).join(', ')}"
7
+ end
4
8
  end
5
9
  end
@@ -1,5 +1,9 @@
1
- module KnowledgeBase
2
- class Sectionables::List < ActiveRecord::Base
1
+ module KnowledgeBase::Sectionables
2
+ class List < Sectionable
3
3
  has_many :items, -> { order 'position ASC' }
4
+
5
+ def to_s
6
+ "#{super}: #{title}"
7
+ end
4
8
  end
5
9
  end
@@ -0,0 +1,9 @@
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
8
+ end
9
+ end
@@ -1,4 +1,7 @@
1
- module KnowledgeBase
2
- class Sectionables::Text < ActiveRecord::Base
1
+ module KnowledgeBase::Sectionables
2
+ class Text < Sectionable
3
+ def to_s
4
+ "#{super}: #{heading}"
5
+ end
3
6
  end
4
7
  end
@@ -1,9 +1,13 @@
1
- module KnowledgeBase
2
- class Sectionables::Video < ActiveRecord::Base
1
+ module KnowledgeBase::Sectionables
2
+ class Video < Sectionable
3
3
  VIDEO_ID_EXPRESSION = %r{^https?://(?:(?:www|m)\.)?youtube\.com/watch\?v=([^&]+)}
4
4
 
5
5
  def youtube_id
6
6
  url[VIDEO_ID_EXPRESSION, 1]
7
7
  end
8
+
9
+ def to_s
10
+ "#{super}: #{url}"
11
+ end
8
12
  end
9
13
  end
@@ -9,7 +9,6 @@ module KnowledgeBase
9
9
 
10
10
  # Choose what kind of storage to use for this uploader:
11
11
  storage KnowledgeBase.config.storage
12
- # storage :fog
13
12
 
14
13
  # Override the directory where uploaded files will be stored.
15
14
  # This is a sensible default for uploaders that are meant to be mounted:
@@ -0,0 +1,17 @@
1
+ <div class="article">
2
+ <div class="meta">
3
+ <h1 class="title"><%= article.title %></h1>
4
+
5
+ <div class="description">
6
+ <%= simple_format article.description %>
7
+ </div>
8
+ </div>
9
+
10
+ <div class="sections">
11
+ <% article.sections.each do |section| %>
12
+ <div class="<%= section.sectionable.class.name.demodulize.downcase %> section">
13
+ <%= render section.sectionable %>
14
+ </div>
15
+ <% end %>
16
+ </div>
17
+ </div>
@@ -1,11 +1 @@
1
- <h1 class="title"><%= @article.title %></h1>
2
-
3
- <div class="description">
4
- <%= simple_format @article.description %>
5
-
6
- <% @article.sections.each do |section| %>
7
- <div class="<%= section.sectionable.class.name.demodulize.downcase %> section">
8
- <%= render section.sectionable %>
9
- </div>
10
- <% end %>
11
- </div>
1
+ <%= render @article %>
@@ -0,0 +1,19 @@
1
+ <div class="category">
2
+ <div class="meta">
3
+ <h1 class="title"><%= category.title %></h1>
4
+
5
+ <div class="description">
6
+ <%= simple_format category.description %>
7
+ </div>
8
+ </div>
9
+
10
+ <div class="articles">
11
+ <% category.articles.each do |article| %>
12
+ <div class="article">
13
+ <h2 class="title"><%= link_to article.title, category_article_path(category, article) %></h2>
14
+
15
+ <div class="description"><%= simple_format article.description %></div>
16
+ </div>
17
+ <% end %>
18
+ </div>
19
+ </div>
@@ -1,11 +1,13 @@
1
- <h1>Categories</h1>
2
-
3
1
  <div class="categories">
4
- <% @categories.each do |category| %>
5
- <div class="category">
6
- <h2 class="title"><%= link_to category.title, category %></h2>
2
+ <h1>Categories</h1>
3
+
4
+ <div class="list">
5
+ <% @categories.each do |category| %>
6
+ <div class="category">
7
+ <h2 class="title"><%= link_to category.title, category %></h2>
7
8
 
8
- <div class="description"><%= simple_format category.description %></div>
9
+ <div class="description"><%= simple_format category.description %></div>
10
+ </div>
11
+ <% end %>
9
12
  </div>
10
- <% end %>
11
13
  </div>
@@ -1,15 +1 @@
1
- <h1 class="title"><%= @category.title %></h1>
2
-
3
- <div class="description">
4
- <%= simple_format @category.description %>
5
- </div>
6
-
7
- <div class="articles">
8
- <% @category.articles.each do |article| %>
9
- <div class="article">
10
- <h2 class="title"><%= link_to article.title, category_article_path(@category, article) %></h2>
11
-
12
- <div class="description"><%= simple_format article.description %></div>
13
- </div>
14
- <% end %>
15
- </div>
1
+ <%= render @category %>
@@ -1,4 +1,4 @@
1
- <h1 class="title"><%= gallery.title %></h1>
1
+ <h2 class="title"><%= gallery.title %></h2>
2
2
 
3
3
  <div class="description">
4
4
  <%= simple_format gallery.description %>
@@ -2,4 +2,4 @@
2
2
  <% links.links.each do |link| %>
3
3
  <%= link_to link.title, link.url %>
4
4
  <% end %>
5
- </div>
5
+ </nav>
@@ -1,4 +1,4 @@
1
- <h1 class="title"><%= list.title %></h1>
1
+ <h2 class="title"><%= list.title %></h2>
2
2
 
3
3
  <div class="description">
4
4
  <%= simple_format list.description %>
@@ -14,4 +14,4 @@
14
14
  </div>
15
15
  </li>
16
16
  <% end %>
17
- </div>
17
+ </ul>
@@ -0,0 +1,15 @@
1
+ module KnowledgeBase
2
+ module ApplicationHelper
3
+
4
+ # Knowledge base uses the layout of the client application, which causes Rails' url helpers to get confused
5
+ # and require you to prepend 'main_app' to your own routes. This hack allows developers to keep referring to
6
+ # routes without a prefix by sending undefined routes to 'main_app' before failing.
7
+ def method_missing(method, *args, &block)
8
+ if (method.to_s.end_with?('_path') || method.to_s.end_with?('_url')) && main_app.respond_to?(method)
9
+ main_app.send(method, *args)
10
+ else
11
+ super
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,49 @@
1
+ nb:
2
+ activerecord:
3
+ models:
4
+ knowledge_base/category:
5
+ one: Kategori
6
+ other: Kategorier
7
+ knowledge_base/article:
8
+ one: Artikkel
9
+ other: Artikler
10
+ knowledge_base/category_article_association:
11
+ one: Lenke
12
+ other: Lenker
13
+ knowledge_base/section:
14
+ one: Seksjon
15
+ other: Seksjoner
16
+ attributes:
17
+ knowledge_base/category:
18
+ title: Tittel
19
+ slug: Slug
20
+ description: Beskrivelse
21
+ category: Kategori
22
+ category_id: Kategori
23
+ position: Plassering
24
+ published_at: Publisert
25
+ created_at: Opprettet
26
+ updated_at: Oppdatert
27
+ knowledge_base/article:
28
+ title: Tittel
29
+ slug: slug
30
+ description: Beskrivelse
31
+ category_article_assocations: Lenker mellom kategorier og artikler
32
+ categories: Kategorier
33
+ sections: Seksjoner
34
+ published_at: Publisert
35
+ created_at: Opprettet
36
+ updated_at: Oppdatert
37
+ knowledge_base/category_article_association:
38
+ category: Kategori
39
+ category_id: Kategori
40
+ article: Artikkel
41
+ article_id: Artikkel
42
+ position: Plassering
43
+ created_at: Opprettet
44
+ updated_at: Oppdatert
45
+ knowledge_base/section:
46
+ sectionable: Innhold
47
+ position: Plassering
48
+ created_at: Opprettet
49
+ updated_at: Oppdatert
@@ -1,5 +1,5 @@
1
1
  KnowledgeBase::Engine.routes.draw do
2
- resources :categories, only: [:index, :show] do
3
- resources :articles, only: [:show]
2
+ resources :categories, path: KnowledgeBase.config.categories_path, only: [:index, :show] do
3
+ resources :articles, path: KnowledgeBase.config.articles_path, only: [:show]
4
4
  end
5
5
  end
@@ -1,5 +1,6 @@
1
1
  require "knowledge_base/engine"
2
2
  require "knowledge_base/configuration"
3
+ require "knowledge_base/concerns"
3
4
  require "carrierwave"
4
5
 
5
6
  module KnowledgeBase
@@ -11,5 +12,9 @@ module KnowledgeBase
11
12
  def config
12
13
  @config ||= KnowledgeBase::Configuration.new
13
14
  end
15
+
16
+ def reset
17
+ @config = nil
18
+ end
14
19
  end
15
20
  end
@@ -0,0 +1,4 @@
1
+ module KnowledgeBase::Concerns
2
+ require 'knowledge_base/concerns/models'
3
+ require 'knowledge_base/concerns/controllers'
4
+ end
@@ -0,0 +1,4 @@
1
+ module KnowledgeBase::Concerns::Controllers
2
+ require 'knowledge_base/concerns/controllers/categories_controller'
3
+ require 'knowledge_base/concerns/controllers/articles_controller'
4
+ end
@@ -0,0 +1,19 @@
1
+ module KnowledgeBase
2
+ module Concerns::Controllers::ArticlesController
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ before_action :set_category
7
+
8
+ def show
9
+ @article = @category.articles.friendly.find params[:id]
10
+ end
11
+
12
+ private
13
+
14
+ def set_category
15
+ @category = Category.friendly.find params[:category_id]
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ module KnowledgeBase
2
+ module Concerns::Controllers::CategoriesController
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ def index
7
+ @categories = Category.all
8
+ end
9
+
10
+ def show
11
+ @category = Category.friendly.find params[:id]
12
+ end
13
+ end
14
+ end
15
+ end