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.
- checksums.yaml +4 -4
 - data/Rakefile +3 -1
 - data/app/models/knowledge_base/category_article_association.rb +1 -2
 - data/app/models/knowledge_base/section.rb +1 -5
 - data/app/models/knowledge_base/sectionables/attachments.rb +7 -0
 - data/app/models/knowledge_base/sectionables/attachments/attachment.rb +5 -0
 - data/app/models/knowledge_base/sectionables/attachments/list.rb +5 -0
 - data/app/models/knowledge_base/sectionables/gallery.rb +3 -7
 - data/app/models/knowledge_base/sectionables/gallery/image.rb +1 -3
 - data/app/models/knowledge_base/sectionables/image.rb +3 -7
 - data/app/models/knowledge_base/sectionables/links.rb +3 -5
 - data/app/models/knowledge_base/sectionables/links/link.rb +1 -6
 - data/app/models/knowledge_base/sectionables/links/list.rb +5 -0
 - data/app/models/knowledge_base/sectionables/list.rb +3 -7
 - data/app/models/knowledge_base/sectionables/list/item.rb +1 -1
 - data/app/models/knowledge_base/sectionables/sectionable.rb +3 -7
 - data/app/models/knowledge_base/sectionables/text.rb +3 -5
 - data/app/models/knowledge_base/sectionables/video.rb +3 -11
 - data/app/uploaders/knowledge_base/generic_file_uploader.rb +7 -0
 - data/app/uploaders/knowledge_base/image_uploader.rb +0 -48
 - data/app/views/knowledge_base/articles/_article.html.erb +3 -3
 - data/app/views/knowledge_base/articles/_search.html.erb +6 -0
 - data/app/views/knowledge_base/articles/index.html.erb +11 -0
 - data/app/views/knowledge_base/categories/_category.html.erb +2 -2
 - data/app/views/knowledge_base/sectionables/attachments/lists/_list.html.erb +14 -0
 - data/app/views/knowledge_base/sectionables/links/lists/_list.html.erb +13 -0
 - data/app/views/knowledge_base/sectionables/lists/_list.html.erb +4 -0
 - data/app/views/knowledge_base/sectionables/texts/_text.html.erb +4 -0
 - data/app/views/knowledge_base/sectionables/videos/_video.html.erb +4 -1
 - data/config/locales/en.yml +131 -0
 - data/config/locales/nb.yml +94 -15
 - data/config/routes.rb +2 -0
 - data/db/migrate/20140318125210_default_position_fields.rb +10 -0
 - data/db/migrate/20140318210722_change_knowledge_base_gallery_description_to_text.rb +9 -0
 - data/db/migrate/20140320125825_add_image_to_texts.rb +5 -0
 - data/db/migrate/20140325083548_add_image_to_sectionables_lists.rb +5 -0
 - data/db/migrate/20140404234850_create_knowledge_base_sectionables_attachments.rb +8 -0
 - data/db/migrate/20140410184906_create_knowledge_base_sectionables_attachment_lists.rb +7 -0
 - data/db/migrate/20140410185528_add_attachment_list_reference_to_knowledge_base_sectionables_attachments.rb +8 -0
 - data/db/migrate/20140410191611_migrate_attachments_over_to_lists.rb +49 -0
 - data/db/migrate/20140410203342_rename_attachment_lists_to_attachments_lists.rb +5 -0
 - data/db/migrate/20140410205056_rename_attachments_to_attachments_attachments.rb +5 -0
 - data/db/migrate/20140410224403_rename_links_to_links_lists.rb +5 -0
 - data/db/migrate/20140410231048_fix_sectionable_types_for_attachments.rb +13 -0
 - data/db/migrate/20140410231433_fix_sectionable_types_for_links.rb +13 -0
 - data/db/migrate/20140430112603_add_description_to_knowledge_base_attachments_attachment.rb +5 -0
 - data/db/migrate/20140430112633_add_description_to_knowledge_base_links_link.rb +5 -0
 - data/db/migrate/20140820114750_add_custom_style_to_knowledge_base_sectionables.rb +21 -0
 - data/db/migrate/20140821081854_remove_custom_style_from_non_sectionables.rb +8 -0
 - data/db/migrate/20140821085102_rename_custom_style_to_style.rb +11 -0
 - data/db/migrate/20140821151832_add_title_to_knowledge_base_sectionables_videos.rb +5 -0
 - data/db/migrate/20140930121510_add_title_to_attachment_lists.rb +5 -0
 - data/fixtures/parrot.png +0 -0
 - data/fixtures/sample.pdf +0 -0
 - data/lib/generators/knowledge_base/active_admin/USAGE +8 -0
 - data/lib/generators/knowledge_base/active_admin/active_admin_generator.rb +9 -0
 - data/lib/generators/knowledge_base/active_admin/templates/article.rb +92 -0
 - data/lib/generators/knowledge_base/active_admin/templates/category.rb +70 -0
 - data/lib/generators/knowledge_base/active_admin/templates/sectionables/attachments/list.rb +25 -0
 - data/lib/generators/knowledge_base/active_admin/templates/sectionables/gallery.rb +44 -0
 - data/lib/generators/knowledge_base/active_admin/templates/sectionables/image.rb +37 -0
 - data/lib/generators/knowledge_base/active_admin/templates/sectionables/links/list.rb +35 -0
 - data/lib/generators/knowledge_base/active_admin/templates/sectionables/list.rb +48 -0
 - data/lib/generators/knowledge_base/active_admin/templates/sectionables/text.rb +42 -0
 - data/lib/generators/knowledge_base/active_admin/templates/sectionables/video.rb +20 -0
 - data/lib/knowledge_base.rb +3 -0
 - data/lib/knowledge_base/concerns/controllers/articles_controller.rb +21 -2
 - data/lib/knowledge_base/concerns/controllers/categories_controller.rb +3 -2
 - data/lib/knowledge_base/concerns/models.rb +31 -0
 - data/lib/knowledge_base/concerns/models/article.rb +4 -3
 - data/lib/knowledge_base/concerns/models/category.rb +2 -3
 - data/lib/knowledge_base/concerns/models/category_article_association.rb +8 -0
 - data/lib/knowledge_base/concerns/models/section.rb +13 -0
 - data/lib/knowledge_base/concerns/models/sectionables/attachments/attachment.rb +11 -0
 - data/lib/knowledge_base/concerns/models/sectionables/attachments/list.rb +15 -0
 - data/lib/knowledge_base/concerns/models/sectionables/gallery.rb +17 -0
 - data/lib/knowledge_base/concerns/models/sectionables/gallery/image.rb +9 -0
 - data/lib/knowledge_base/concerns/models/sectionables/image.rb +13 -0
 - data/lib/knowledge_base/concerns/models/sectionables/links/link.rb +7 -0
 - data/lib/knowledge_base/concerns/models/sectionables/links/list.rb +15 -0
 - data/lib/knowledge_base/concerns/models/sectionables/list.rb +17 -0
 - data/lib/knowledge_base/concerns/models/sectionables/list/item.rb +7 -0
 - data/lib/knowledge_base/concerns/models/sectionables/sectionable.rb +28 -0
 - data/lib/knowledge_base/concerns/models/sectionables/text.rb +13 -0
 - data/lib/knowledge_base/concerns/models/sectionables/video.rb +15 -0
 - data/lib/knowledge_base/configuration.rb +10 -17
 - data/lib/knowledge_base/engine.rb +4 -0
 - data/lib/knowledge_base/seeds.rb +7 -3
 - data/lib/knowledge_base/version.rb +1 -1
 - data/spec/controllers/knowledge_base/articles_controller_spec.rb +15 -4
 - data/spec/controllers/knowledge_base/categories_controller_spec.rb +1 -1
 - data/spec/dummy/db/development.sqlite3 +0 -0
 - data/spec/dummy/db/schema.rb +39 -13
 - data/spec/dummy/db/test.sqlite3 +0 -0
 - data/spec/dummy/log/development.log +887 -0
 - data/spec/dummy/log/test.log +999 -0
 - data/spec/factories/knowledge_base_articles.rb +3 -3
 - data/spec/factories/knowledge_base_categories.rb +3 -3
 - data/spec/factories/knowledge_base_sectionables_attachment_lists.rb +6 -0
 - data/spec/lib/knowledge_base/configuration_spec.rb +32 -8
 - data/spec/lib/knowledge_base_spec.rb +3 -3
 - data/spec/models/knowledge_base/article_spec.rb +0 -1
 - data/spec/models/knowledge_base/category_article_association_spec.rb +0 -1
 - data/spec/models/knowledge_base/category_spec.rb +0 -1
 - data/spec/models/knowledge_base/section_spec.rb +0 -1
 - data/spec/models/knowledge_base/sectionables/attachments/attachment_spec.rb +6 -0
 - data/spec/models/knowledge_base/sectionables/attachments/list_spec.rb +13 -0
 - data/spec/models/knowledge_base/sectionables/gallery/image_spec.rb +0 -1
 - data/spec/models/knowledge_base/sectionables/gallery_spec.rb +0 -1
 - data/spec/models/knowledge_base/sectionables/image_spec.rb +0 -1
 - data/spec/models/knowledge_base/sectionables/links/link_spec.rb +0 -1
 - data/spec/models/knowledge_base/sectionables/links_spec.rb +0 -1
 - data/spec/models/knowledge_base/sectionables/list/item_spec.rb +0 -1
 - data/spec/models/knowledge_base/sectionables/list_spec.rb +0 -1
 - data/spec/models/knowledge_base/sectionables/sectionable_spec.rb +34 -0
 - data/spec/models/knowledge_base/sectionables/text_spec.rb +0 -1
 - data/spec/models/knowledge_base/sectionables/video_spec.rb +0 -7
 - data/spec/spec_helper.rb +3 -0
 - data/spec/views/knowledge_base/articles/show.html.erb_spec.rb +0 -1
 - data/spec/views/knowledge_base/categories/index.html.erb_spec.rb +0 -1
 - data/spec/views/knowledge_base/categories/show.html.erb_spec.rb +0 -1
 - metadata +179 -7
 - data/app/views/knowledge_base/sectionables/links/_links.html.erb +0 -5
 
| 
         @@ -9,13 +9,12 @@ module KnowledgeBase::Concerns::Models::Category 
     | 
|
| 
       9 
9 
     | 
    
         
             
                friendly_id :title, use: :slugged
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                belongs_to :category
         
     | 
| 
       12 
     | 
    
         
            -
                has_many :category_article_associations
         
     | 
| 
      
 12 
     | 
    
         
            +
                has_many :category_article_associations, -> { order 'position ASC' }
         
     | 
| 
       13 
13 
     | 
    
         
             
                has_many :articles, through: :category_article_associations
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                accepts_nested_attributes_for :category_article_associations
         
     | 
| 
      
 15 
     | 
    
         
            +
                accepts_nested_attributes_for :category_article_associations, allow_destroy: true
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                scope :root, -> { where parent_id: nil }
         
     | 
| 
       18 
     | 
    
         
            -
                scope :published, -> { where published: true }
         
     | 
| 
       19 
18 
     | 
    
         | 
| 
       20 
19 
     | 
    
         
             
                def to_s
         
     | 
| 
       21 
20 
     | 
    
         
             
                  title
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KnowledgeBase::Concerns::Models::Section
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend ActiveSupport::Concern
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              included do
         
     | 
| 
      
 5 
     | 
    
         
            +
                # It sounds wrong that a section "belongs to" a sectionable, but we want the foreign
         
     | 
| 
      
 6 
     | 
    
         
            +
                # key to be on this side and declaring `belongs_to` is the only way to do that.
         
     | 
| 
      
 7 
     | 
    
         
            +
                belongs_to :sectionable, polymorphic: true
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                belongs_to :container, polymorphic: true
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                validates :sectionable, presence: true
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KnowledgeBase::Concerns::Models::Sectionables::Attachments::Attachment
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend ActiveSupport::Concern
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              included do
         
     | 
| 
      
 5 
     | 
    
         
            +
                belongs_to :list, foreign_key: :attachment_list_id
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                mount_uploader :file, KnowledgeBase::GenericFileUploader
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                validates :title, :file, :list, presence: true
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KnowledgeBase::Concerns::Models::Sectionables::Attachments::List
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend ActiveSupport::Concern
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              included do
         
     | 
| 
      
 5 
     | 
    
         
            +
                has_many :sections, as: :sectionable, dependent: :destroy
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                has_many :attachments, dependent: :destroy, inverse_of: :list,
         
     | 
| 
      
 8 
     | 
    
         
            +
                  foreign_key: :attachment_list_id
         
     | 
| 
      
 9 
     | 
    
         
            +
                accepts_nested_attributes_for :attachments, allow_destroy: true
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 12 
     | 
    
         
            +
                  "#{super} ##{id}: #{title}"
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KnowledgeBase::Concerns::Models::Sectionables::Gallery
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend ActiveSupport::Concern
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              included do
         
     | 
| 
      
 5 
     | 
    
         
            +
                has_many :images, -> { order position: :asc },
         
     | 
| 
      
 6 
     | 
    
         
            +
                  dependent: :destroy
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                has_many :sections, as: :sectionable, dependent: :destroy
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                accepts_nested_attributes_for :images, allow_destroy: true
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 13 
     | 
    
         
            +
                  "#{super} ##{id}: #{title}"
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KnowledgeBase::Concerns::Models::Sectionables::Image
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend ActiveSupport::Concern
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              included do
         
     | 
| 
      
 5 
     | 
    
         
            +
                mount_uploader :image, KnowledgeBase.config.image_image_uploader
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                has_many :sections, as: :sectionable, dependent: :destroy
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 10 
     | 
    
         
            +
                  "#{super} ##{id}: #{caption}"
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KnowledgeBase::Concerns::Models::Sectionables::Links::List
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend ActiveSupport::Concern
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              included do
         
     | 
| 
      
 5 
     | 
    
         
            +
                has_many :links, dependent: :destroy, foreign_key: :links_id
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                has_many :sections, as: :sectionable, dependent: :destroy
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                accepts_nested_attributes_for :links, allow_destroy: true
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 12 
     | 
    
         
            +
                  "#{super} ##{id}: #{links.map(&:title).join(', ')}"
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KnowledgeBase::Concerns::Models::Sectionables::List
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend ActiveSupport::Concern
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              included do
         
     | 
| 
      
 5 
     | 
    
         
            +
                mount_uploader :image, KnowledgeBase.config.list_image_uploader
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                has_many :items, -> { order 'position ASC' }
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                has_many :sections, as: :sectionable, dependent: :destroy
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                accepts_nested_attributes_for :items, allow_destroy: true
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 14 
     | 
    
         
            +
                  "#{super} ##{id}: #{title}"
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KnowledgeBase::Concerns::Models::Sectionables::Sectionable
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend ActiveSupport::Concern
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              included do
         
     | 
| 
      
 5 
     | 
    
         
            +
                extend Enumerize
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def self.inherited(child)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  model_name = snake_case_class_name child.name
         
     | 
| 
      
 9 
     | 
    
         
            +
                  styles = KnowledgeBase.config.section_styles[model_name] || [ ]
         
     | 
| 
      
 10 
     | 
    
         
            +
                  child.enumerize :style, in: styles
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  super
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                self.abstract_class = true
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 18 
     | 
    
         
            +
                  self.class.model_name.human
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                private
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def self.snake_case_class_name(class_name)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  class_name.gsub("KnowledgeBase::Sectionables::", "").underscore.gsub("/", "_").to_sym
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KnowledgeBase::Concerns::Models::Sectionables::Text
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend ActiveSupport::Concern
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              included do
         
     | 
| 
      
 5 
     | 
    
         
            +
                mount_uploader :image, KnowledgeBase.config.text_image_uploader
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                has_many :sections, as: :sectionable, dependent: :destroy
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 10 
     | 
    
         
            +
                  "#{super} ##{id}: #{heading}"
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module KnowledgeBase::Concerns::Models::Sectionables::Video
         
     | 
| 
      
 2 
     | 
    
         
            +
              extend ActiveSupport::Concern
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              included do
         
     | 
| 
      
 5 
     | 
    
         
            +
                include Embeddable
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                embeddable :video, from: :url
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                has_many :sections, as: :sectionable, dependent: :destroy
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 12 
     | 
    
         
            +
                  "#{super} ##{id}: #{url}"
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,23 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module KnowledgeBase
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Configuration
         
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
       4 
     | 
    
         
            -
                   
     | 
| 
       5 
     | 
    
         
            -
                  categories_path: 'categories',
         
     | 
| 
       6 
     | 
    
         
            -
                  articles_path: 'articles'
         
     | 
| 
       7 
     | 
    
         
            -
                }
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_accessor :categories_path, :articles_path, :text_image_uploader,
         
     | 
| 
      
 4 
     | 
    
         
            +
                  :image_image_uploader, :gallery_image_uploader, :list_image_uploader, :section_styles
         
     | 
| 
       8 
5 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
                   
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                   
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                    else
         
     | 
| 
       18 
     | 
    
         
            -
                      value
         
     | 
| 
       19 
     | 
    
         
            -
                    end
         
     | 
| 
       20 
     | 
    
         
            -
                  end
         
     | 
| 
      
 6 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @categories_path        = 'categories'
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @articles_path          = 'articles'
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @text_image_uploader    = KnowledgeBase::ImageUploader
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @image_image_uploader   = KnowledgeBase::ImageUploader
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @gallery_image_uploader = KnowledgeBase::ImageUploader
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @list_image_uploader    = KnowledgeBase::ImageUploader
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @section_styles         = { }
         
     | 
| 
       21 
14 
     | 
    
         
             
                end
         
     | 
| 
       22 
15 
     | 
    
         
             
              end
         
     | 
| 
       23 
16 
     | 
    
         
             
            end
         
     | 
| 
         @@ -11,6 +11,10 @@ module KnowledgeBase 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  end
         
     | 
| 
       12 
12 
     | 
    
         
             
                end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
                initializer 'tasks.factories', after: 'factory_girl.set_factory_paths' do
         
     | 
| 
      
 15 
     | 
    
         
            +
                  FactoryGirl.definition_file_paths << File.expand_path('../../../spec/factories', __FILE__) if defined?(FactoryGirl)
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
       14 
18 
     | 
    
         
             
                config.generators do |g|
         
     | 
| 
       15 
19 
     | 
    
         
             
                  g.test_framework :rspec, fixture: false
         
     | 
| 
       16 
20 
     | 
    
         
             
                  g.fixture_replacement :factory_girl, dir: 'spec/factories'
         
     | 
    
        data/lib/knowledge_base/seeds.rb
    CHANGED
    
    | 
         @@ -6,8 +6,8 @@ def fixture file 
     | 
|
| 
       6 
6 
     | 
    
         
             
              File.open "#{File.expand_path File.dirname(__FILE__)}/../../fixtures/#{file}"
         
     | 
| 
       7 
7 
     | 
    
         
             
            end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
            category    = KnowledgeBase::Category.create! title: Faker::Lorem.words.join, description: Faker::Lorem.sentence
         
     | 
| 
       10 
     | 
    
         
            -
            article     = KnowledgeBase::Article.create! title: Faker::Lorem.words.join, description: Faker::Lorem.sentence
         
     | 
| 
      
 9 
     | 
    
         
            +
            category    = KnowledgeBase::Category.create! title: Faker::Lorem.words.join, description: Faker::Lorem.sentence, published_at: Time.now
         
     | 
| 
      
 10 
     | 
    
         
            +
            article     = KnowledgeBase::Article.create! title: Faker::Lorem.words.join, description: Faker::Lorem.sentence, published_at: Time.now
         
     | 
| 
       11 
11 
     | 
    
         
             
            association = KnowledgeBase::CategoryArticleAssociation.create! category: category, article: article
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            text    = KnowledgeBase::Sectionables::Text.create! heading: Faker::Lorem.words.join, lead: Faker::Lorem.sentence, body: Faker::Lorem.paragraph
         
     | 
| 
         @@ -27,6 +27,10 @@ list = KnowledgeBase::Sectionables::List.create! title: Faker::Lorem.sentence, d 
     | 
|
| 
       27 
27 
     | 
    
         
             
            2.times { list.items.create title: Faker::Lorem.sentence, body: Faker::Lorem.paragraph }
         
     | 
| 
       28 
28 
     | 
    
         
             
            section = KnowledgeBase::Section.create! sectionable: list, container: article, position: 5
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
            links = KnowledgeBase::Sectionables::Links.create!
         
     | 
| 
      
 30 
     | 
    
         
            +
            links = KnowledgeBase::Sectionables::Links::List.create!
         
     | 
| 
       31 
31 
     | 
    
         
             
            2.times { links.links.create title: Faker::Lorem.word, url: 'http://example.org' }
         
     | 
| 
       32 
32 
     | 
    
         
             
            section = KnowledgeBase::Section.create! sectionable: links, container: article, position: 6
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            attachments = KnowledgeBase::Sectionables::Attachments::List.create!
         
     | 
| 
      
 35 
     | 
    
         
            +
            2.times { attachments.attachments.create! title: Faker::Lorem.word, file: fixture('sample.pdf') }
         
     | 
| 
      
 36 
     | 
    
         
            +
            section = KnowledgeBase::Section.create! sectionable: attachments, container: article, position: 7
         
     | 
| 
         @@ -4,13 +4,24 @@ module KnowledgeBase 
     | 
|
| 
       4 
4 
     | 
    
         
             
              describe ArticlesController do
         
     | 
| 
       5 
5 
     | 
    
         
             
                routes { KnowledgeBase::Engine.routes }
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
      
 7 
     | 
    
         
            +
                describe "GET 'index'" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  let!(:articles) { create_list :article, 3, :published }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  it "returns http success" do
         
     | 
| 
      
 11 
     | 
    
         
            +
                    get :index
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                    articles = assigns :articles
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    expect(response).to be_success
         
     | 
| 
      
 16 
     | 
    
         
            +
                    expect(articles.count).to eq 3
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       7 
20 
     | 
    
         
             
                describe "GET 'show'" do
         
     | 
| 
       8 
21 
     | 
    
         
             
                  it "returns http success" do
         
     | 
| 
       9 
     | 
    
         
            -
                     
     | 
| 
       10 
     | 
    
         
            -
                    article     = create :article
         
     | 
| 
       11 
     | 
    
         
            -
                    association = create :category_article_association, category: category, article: article
         
     | 
| 
      
 22 
     | 
    
         
            +
                    article = create :article, :published
         
     | 
| 
       12 
23 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                    get :show,  
     | 
| 
      
 24 
     | 
    
         
            +
                    get :show, id: article.slug
         
     | 
| 
       14 
25 
     | 
    
         | 
| 
       15 
26 
     | 
    
         
             
                    response.should be_success
         
     | 
| 
       16 
27 
     | 
    
         
             
                  end
         
     | 
| 
         Binary file 
     | 
    
        data/spec/dummy/db/schema.rb
    CHANGED
    
    | 
         @@ -11,7 +11,7 @@ 
     | 
|
| 
       11 
11 
     | 
    
         
             
            #
         
     | 
| 
       12 
12 
     | 
    
         
             
            # It's strongly recommended that you check this file into your version control system.
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
            ActiveRecord::Schema.define(version:  
     | 
| 
      
 14 
     | 
    
         
            +
            ActiveRecord::Schema.define(version: 20140930121510) do
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
              create_table "knowledge_base_articles", force: true do |t|
         
     | 
| 
       17 
17 
     | 
    
         
             
                t.string   "title"
         
     | 
| 
         @@ -27,7 +27,7 @@ ActiveRecord::Schema.define(version: 20140307092719) do 
     | 
|
| 
       27 
27 
     | 
    
         
             
                t.string   "slug"
         
     | 
| 
       28 
28 
     | 
    
         
             
                t.text     "description"
         
     | 
| 
       29 
29 
     | 
    
         
             
                t.integer  "category_id"
         
     | 
| 
       30 
     | 
    
         
            -
                t.integer  "position"
         
     | 
| 
      
 30 
     | 
    
         
            +
                t.integer  "position",     default: 0
         
     | 
| 
       31 
31 
     | 
    
         
             
                t.datetime "published_at"
         
     | 
| 
       32 
32 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       33 
33 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
         @@ -39,7 +39,7 @@ ActiveRecord::Schema.define(version: 20140307092719) do 
     | 
|
| 
       39 
39 
     | 
    
         
             
              create_table "knowledge_base_category_article_associations", force: true do |t|
         
     | 
| 
       40 
40 
     | 
    
         
             
                t.integer  "category_id"
         
     | 
| 
       41 
41 
     | 
    
         
             
                t.integer  "article_id"
         
     | 
| 
       42 
     | 
    
         
            -
                t.integer  "position"
         
     | 
| 
      
 42 
     | 
    
         
            +
                t.integer  "position",    default: 0
         
     | 
| 
       43 
43 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       44 
44 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
       45 
45 
     | 
    
         
             
              end
         
     | 
| 
         @@ -47,17 +47,34 @@ ActiveRecord::Schema.define(version: 20140307092719) do 
     | 
|
| 
       47 
47 
     | 
    
         
             
              add_index "knowledge_base_category_article_associations", ["article_id"], name: "index_knowledge_base_c_a_association_on_article_id"
         
     | 
| 
       48 
48 
     | 
    
         
             
              add_index "knowledge_base_category_article_associations", ["category_id"], name: "index_knowledge_base_c_a_association_on_category_id"
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
      
 50 
     | 
    
         
            +
              create_table "knowledge_base_sectionables_attachments_attachments", force: true do |t|
         
     | 
| 
      
 51 
     | 
    
         
            +
                t.string  "title"
         
     | 
| 
      
 52 
     | 
    
         
            +
                t.string  "file"
         
     | 
| 
      
 53 
     | 
    
         
            +
                t.integer "attachment_list_id"
         
     | 
| 
      
 54 
     | 
    
         
            +
                t.text    "description"
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              add_index "knowledge_base_sectionables_attachments_attachments", ["attachment_list_id"], name: "index_knowledge_base_attachments_on_attachment_list_id"
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
              create_table "knowledge_base_sectionables_attachments_lists", force: true do |t|
         
     | 
| 
      
 60 
     | 
    
         
            +
                t.datetime "created_at"
         
     | 
| 
      
 61 
     | 
    
         
            +
                t.datetime "updated_at"
         
     | 
| 
      
 62 
     | 
    
         
            +
                t.string   "style"
         
     | 
| 
      
 63 
     | 
    
         
            +
                t.string   "title"
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
       50 
66 
     | 
    
         
             
              create_table "knowledge_base_sectionables_galleries", force: true do |t|
         
     | 
| 
       51 
67 
     | 
    
         
             
                t.string   "title"
         
     | 
| 
       52 
     | 
    
         
            -
                t. 
     | 
| 
      
 68 
     | 
    
         
            +
                t.text     "description"
         
     | 
| 
       53 
69 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       54 
70 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
      
 71 
     | 
    
         
            +
                t.string   "style"
         
     | 
| 
       55 
72 
     | 
    
         
             
              end
         
     | 
| 
       56 
73 
     | 
    
         | 
| 
       57 
74 
     | 
    
         
             
              create_table "knowledge_base_sectionables_gallery_images", force: true do |t|
         
     | 
| 
       58 
75 
     | 
    
         
             
                t.string   "caption"
         
     | 
| 
       59 
76 
     | 
    
         
             
                t.string   "image"
         
     | 
| 
       60 
     | 
    
         
            -
                t.integer  "position"
         
     | 
| 
      
 77 
     | 
    
         
            +
                t.integer  "position",   default: 0
         
     | 
| 
       61 
78 
     | 
    
         
             
                t.integer  "gallery_id"
         
     | 
| 
       62 
79 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       63 
80 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
         @@ -70,26 +87,29 @@ ActiveRecord::Schema.define(version: 20140307092719) do 
     | 
|
| 
       70 
87 
     | 
    
         
             
                t.string   "image"
         
     | 
| 
       71 
88 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       72 
89 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
              create_table "knowledge_base_sectionables_links", force: true do |t|
         
     | 
| 
       76 
     | 
    
         
            -
                t.datetime "created_at"
         
     | 
| 
       77 
     | 
    
         
            -
                t.datetime "updated_at"
         
     | 
| 
      
 90 
     | 
    
         
            +
                t.string   "style"
         
     | 
| 
       78 
91 
     | 
    
         
             
              end
         
     | 
| 
       79 
92 
     | 
    
         | 
| 
       80 
93 
     | 
    
         
             
              create_table "knowledge_base_sectionables_links_links", force: true do |t|
         
     | 
| 
       81 
94 
     | 
    
         
             
                t.string   "title"
         
     | 
| 
       82 
95 
     | 
    
         
             
                t.string   "url"
         
     | 
| 
       83 
     | 
    
         
            -
                t.integer  "position"
         
     | 
| 
      
 96 
     | 
    
         
            +
                t.integer  "position",    default: 0
         
     | 
| 
       84 
97 
     | 
    
         
             
                t.integer  "links_id"
         
     | 
| 
       85 
98 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       86 
99 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
      
 100 
     | 
    
         
            +
                t.text     "description"
         
     | 
| 
      
 101 
     | 
    
         
            +
              end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
              create_table "knowledge_base_sectionables_links_lists", force: true do |t|
         
     | 
| 
      
 104 
     | 
    
         
            +
                t.datetime "created_at"
         
     | 
| 
      
 105 
     | 
    
         
            +
                t.datetime "updated_at"
         
     | 
| 
      
 106 
     | 
    
         
            +
                t.string   "style"
         
     | 
| 
       87 
107 
     | 
    
         
             
              end
         
     | 
| 
       88 
108 
     | 
    
         | 
| 
       89 
109 
     | 
    
         
             
              create_table "knowledge_base_sectionables_list_items", force: true do |t|
         
     | 
| 
       90 
110 
     | 
    
         
             
                t.string   "title"
         
     | 
| 
       91 
111 
     | 
    
         
             
                t.text     "body"
         
     | 
| 
       92 
     | 
    
         
            -
                t.integer  "position"
         
     | 
| 
      
 112 
     | 
    
         
            +
                t.integer  "position",   default: 0
         
     | 
| 
       93 
113 
     | 
    
         
             
                t.integer  "list_id"
         
     | 
| 
       94 
114 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       95 
115 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
         @@ -102,6 +122,8 @@ ActiveRecord::Schema.define(version: 20140307092719) do 
     | 
|
| 
       102 
122 
     | 
    
         
             
                t.text     "description"
         
     | 
| 
       103 
123 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       104 
124 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
      
 125 
     | 
    
         
            +
                t.string   "image"
         
     | 
| 
      
 126 
     | 
    
         
            +
                t.string   "style"
         
     | 
| 
       105 
127 
     | 
    
         
             
              end
         
     | 
| 
       106 
128 
     | 
    
         | 
| 
       107 
129 
     | 
    
         
             
              create_table "knowledge_base_sectionables_texts", force: true do |t|
         
     | 
| 
         @@ -110,18 +132,22 @@ ActiveRecord::Schema.define(version: 20140307092719) do 
     | 
|
| 
       110 
132 
     | 
    
         
             
                t.text     "body"
         
     | 
| 
       111 
133 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       112 
134 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
      
 135 
     | 
    
         
            +
                t.string   "image"
         
     | 
| 
      
 136 
     | 
    
         
            +
                t.string   "style"
         
     | 
| 
       113 
137 
     | 
    
         
             
              end
         
     | 
| 
       114 
138 
     | 
    
         | 
| 
       115 
139 
     | 
    
         
             
              create_table "knowledge_base_sectionables_videos", force: true do |t|
         
     | 
| 
       116 
140 
     | 
    
         
             
                t.string   "url"
         
     | 
| 
       117 
141 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       118 
142 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
      
 143 
     | 
    
         
            +
                t.string   "style"
         
     | 
| 
      
 144 
     | 
    
         
            +
                t.string   "title"
         
     | 
| 
       119 
145 
     | 
    
         
             
              end
         
     | 
| 
       120 
146 
     | 
    
         | 
| 
       121 
147 
     | 
    
         
             
              create_table "knowledge_base_sections", force: true do |t|
         
     | 
| 
       122 
148 
     | 
    
         
             
                t.integer  "sectionable_id"
         
     | 
| 
       123 
149 
     | 
    
         
             
                t.string   "sectionable_type"
         
     | 
| 
       124 
     | 
    
         
            -
                t.integer  "position"
         
     | 
| 
      
 150 
     | 
    
         
            +
                t.integer  "position",         default: 0
         
     | 
| 
       125 
151 
     | 
    
         
             
                t.datetime "created_at"
         
     | 
| 
       126 
152 
     | 
    
         
             
                t.datetime "updated_at"
         
     | 
| 
       127 
153 
     | 
    
         
             
                t.integer  "container_id"
         
     |