knowledge_base 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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