ecm_links2 1.0.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 (39) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +52 -0
  4. data/Rakefile +25 -0
  5. data/app/controllers/ecm/links/categories_controller.rb +11 -0
  6. data/app/decorators/ecm/links/category_decorator.rb +17 -0
  7. data/app/helpers/ecm/links/categories_helper.rb +5 -0
  8. data/app/helpers/ecm/links/links_helper.rb +5 -0
  9. data/app/helpers/ecm/links_helper.rb +7 -0
  10. data/app/models/ecm/links/category.rb +102 -0
  11. data/app/models/ecm/links/link.rb +63 -0
  12. data/app/views/ecm/links/_link_footer.html.erb +14 -0
  13. data/app/views/ecm/links/categories/_category.html.erb +22 -0
  14. data/app/views/ecm/links/categories/_category_in_index.html.erb +5 -0
  15. data/app/views/ecm/links/categories/index.html.erb +5 -0
  16. data/app/views/ecm/links/categories/show.html.erb +9 -0
  17. data/app/views/ecm/links/links/_link.html.erb +1 -0
  18. data/app/views/ecm/links/links/_link_in_table.html.erb +5 -0
  19. data/app/views/ecm/links/links/_table.html.erb +7 -0
  20. data/config/locales/ecm.links.category.de.yml +26 -0
  21. data/config/locales/ecm.links.category.en.yml +26 -0
  22. data/config/locales/ecm.links.de.yml +9 -0
  23. data/config/locales/ecm.links.en.yml +9 -0
  24. data/config/locales/ecm.links.link.de.yml +18 -0
  25. data/config/locales/ecm.links.link.en.yml +18 -0
  26. data/db/migrate/001_create_ecm_links_categories.rb +26 -0
  27. data/db/migrate/002_create_ecm_links_links.rb +19 -0
  28. data/lib/ecm/links/active_admin/ecm_links_categories.rb +121 -0
  29. data/lib/ecm/links/active_admin/ecm_links_links.rb +56 -0
  30. data/lib/ecm/links/configuration.rb +33 -0
  31. data/lib/ecm/links/engine.rb +12 -0
  32. data/lib/ecm/links/routing.rb +36 -0
  33. data/lib/ecm/links/version.rb +5 -0
  34. data/lib/ecm_links2.rb +21 -0
  35. data/lib/generators/ecm/links/install/install_generator.rb +15 -0
  36. data/lib/generators/ecm/links/install/templates/ecm_links.rb +29 -0
  37. data/lib/generators/ecm/links/locales/locales_generator.rb +20 -0
  38. data/lib/tasks/ecm_links_tasks.rake +50 -0
  39. metadata +479 -0
@@ -0,0 +1,121 @@
1
+ include ActiveAdmin::ActsAsList::Helper if defined?(ActiveAdmin)
2
+ include ActiveAdmin::AwesomeNestedSet::Helper if defined?(ActiveAdmin)
3
+
4
+ ActiveAdmin.register Ecm::Links::Category do
5
+ # menu entry settings
6
+ menu :parent => Proc.new { I18n.t('ecm.links.active_admin.menu') }.call
7
+
8
+ # awesome nested set
9
+ sortable_tree_member_actions
10
+
11
+ permit_params :link_footer_column,
12
+ :locale,
13
+ :long_description,
14
+ :markup_language,
15
+ :name,
16
+ :parent_id,
17
+ :short_description,
18
+ ecm_links_links_attributes: [
19
+ :description,
20
+ :ecm_links_category_id,
21
+ :markup_language,
22
+ :name,
23
+ :position,
24
+ :url
25
+ ]
26
+
27
+
28
+ form do |f|
29
+ f.inputs do
30
+ f.input :parent, :as => :select, :collection => nested_set_options(Ecm::Links::Category, f.object) { |c| "#{'    ' * c.level} |-- #{c.to_s}".html_safe }
31
+ f.input :locale, :as => :select, :collection => I18n.available_locales.map(&:to_s)
32
+ f.input :name
33
+ f.input :short_description
34
+ f.input :long_description
35
+ end
36
+
37
+ f.inputs do
38
+ f.input :markup_language, :as => :select, :collection => Ecm::Links::Configuration.markup_languages.map(&:to_s)
39
+ f.input :link_footer_column, :as => :select, :collection => (1..Ecm::Links::Configuration.link_footer_columns).to_a
40
+ end
41
+
42
+ f.inputs do
43
+ f.has_many :ecm_links_links do |l|
44
+ if l.object.persisted?
45
+ l.input :_destroy, :as => :boolean, :label => I18n.t('active_admin.delete')
46
+ end
47
+ l.input :name
48
+ l.input :url
49
+ l.input :description
50
+ end
51
+ end
52
+
53
+ f.actions
54
+ end
55
+
56
+ index :as => :nested_set do
57
+ selectable_column
58
+ sortable_tree_columns
59
+ column :locale
60
+ column :name do |c|
61
+ span(:style => "margin-left: #{30 * c.level}px") { c.name }
62
+ end
63
+ column :short_description
64
+ column :ecm_links_links_count
65
+ column :link_footer_column
66
+ column :created_at
67
+ column :updated_at
68
+ actions
69
+ end
70
+
71
+ show do
72
+ attributes_table do
73
+ row :parent
74
+ row :locale
75
+ row :name
76
+ row :ecm_links_links_count
77
+ row :markup_language
78
+ row :link_footer_column
79
+ row :created_at
80
+ row :updated_at
81
+ end
82
+
83
+ panel Ecm::Links::Category.human_attribute_name(:short_description) do
84
+ div { ecm_links_category.short_description }
85
+ end
86
+
87
+ panel Ecm::Links::Category.human_attribute_name(:long_description) do
88
+ div { ecm_links_category.long_description }
89
+ end
90
+
91
+ panel Ecm::Links::Category.human_attribute_name(:children) do
92
+ table_for ecm_links_category.descendants, :i18n => Ecm::Links::Category do
93
+ sortable_tree_columns
94
+ column(:name) { |child| link_to child, [:admin, child], :style => "margin-left: #{30 * (child.level - ecm_links_category.level - 1)}px" }
95
+ column :short_description
96
+ column :ecm_links_links_count
97
+ column :link_footer_column
98
+ column :created_at
99
+ column :updated_at
100
+ column do |child|
101
+ link_to(I18n.t('active_admin.view'), [:admin, child], :class => "member_link view_link") +
102
+ link_to(I18n.t('active_admin.edit'), [:edit, :admin, child], :class => "member_link edit_link")
103
+ end
104
+ end
105
+ end
106
+
107
+ panel Ecm::Links::Category.human_attribute_name(:ecm_links_links) do
108
+ table_for ecm_links_category.ecm_links_links, :i18n => Ecm::Links::Link do
109
+ sortable_columns
110
+ column(:name) { |link| link_to link.name, [:admin, link] }
111
+ column(:url) { |link| link_to link.url, link.url }
112
+ column :created_at
113
+ column :updated_at
114
+ column do |link|
115
+ link_to(I18n.t('active_admin.view'), [:admin, link], :class => "member_link view_link") +
116
+ link_to(I18n.t('active_admin.edit'), [:edit, :admin, link], :class => "member_link edit_link")
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end if defined?(ActiveAdmin)
@@ -0,0 +1,56 @@
1
+ include ActiveAdmin::ActsAsList::Helper if defined?(ActiveAdmin)
2
+
3
+ ActiveAdmin.register Ecm::Links::Link do
4
+ # menu entry settings
5
+ menu :parent => Proc.new { I18n.t('ecm.links.active_admin.menu') }.call
6
+
7
+ permit_params :description,
8
+ :ecm_links_category_id,
9
+ :markup_language,
10
+ :name,
11
+ :position,
12
+ :url
13
+
14
+ # acts as list
15
+ sortable_member_actions
16
+
17
+ form do |f|
18
+ f.inputs do
19
+ f.input :ecm_links_category, :as => :select, :collection => nested_set_options(Ecm::Links::Category) { |c| "#{'    ' * c.level} |-- #{c.to_s}".html_safe }
20
+ f.input :name
21
+ f.input :url
22
+ f.input :description
23
+ end
24
+
25
+ f.inputs do
26
+ f.input :markup_language, :as => :select, :collection => Ecm::Links::Link::MARKUP_LANGUAGES
27
+ end
28
+
29
+ f.actions
30
+ end
31
+
32
+ index do
33
+ selectable_column
34
+ column :ecm_links_category
35
+ column :name
36
+ column :url
37
+ column :created_at
38
+ column :updated_at
39
+ actions
40
+ end
41
+
42
+ show do
43
+ attributes_table do
44
+ row :ecm_links_category
45
+ row :name
46
+ row :url
47
+ row :markup_language
48
+ row :created_at
49
+ row :updated_at
50
+ end
51
+
52
+ panel Ecm::Links::Link.human_attribute_name(:description) do
53
+ div { ecm_links_link.description }
54
+ end
55
+ end
56
+ end if defined?(ActiveAdmin)
@@ -0,0 +1,33 @@
1
+ require 'active_support/core_ext/module/delegation'
2
+ require 'active_support/core_ext/module/attribute_accessors'
3
+ require 'active_support/hash_with_indifferent_access'
4
+
5
+ module Ecm
6
+ module Links
7
+ module Configuration
8
+ def configure
9
+ yield self
10
+ end
11
+
12
+ mattr_accessor :link_footer_columns do
13
+ 4
14
+ end
15
+
16
+ mattr_accessor :link_footer_column_css_classes do
17
+ 'link-footer-column col-lg-3'
18
+ end
19
+
20
+ mattr_accessor :base_controller do
21
+ 'ApplicationController'
22
+ end
23
+
24
+ mattr_accessor :default_markup_language do
25
+ 'textile'
26
+ end
27
+
28
+ mattr_accessor :markup_languages do
29
+ ['textile']
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,12 @@
1
+ module Ecm
2
+ module Links
3
+ class Engine < ::Rails::Engine
4
+ # active admin
5
+ initializer :ecm_links_engine do
6
+ ::ActiveAdmin.setup do |active_admin_config|
7
+ active_admin_config.load_paths += Dir[File.dirname(__FILE__) + '/active_admin']
8
+ end
9
+ end if defined?(::ActiveAdmin)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,36 @@
1
+ module Ecm
2
+ module Links
3
+ class Routing
4
+ # Creates the routes for categories. You can pass options to
5
+ # specify the actions for categories.
6
+ #
7
+ # Ecm::Links::Routing.routes(self, { :links_category_actions => [ :index ]})
8
+ #
9
+ # This will only create the index action for link categories.
10
+ def self.routes(router, options = {})
11
+ options.reverse_merge!({
12
+ links_category_actions: [:index, :show]
13
+ })
14
+
15
+ router.resources :ecm_links_categories, only: options[:links_category_actions], :controller => 'ecm/links/categories'
16
+ end
17
+ # # Creates the routes for links and categories. You can pass options to
18
+ # # specify the actions for both links and/or categories.
19
+ # #
20
+ # # Ecm::Links::Routing.routes(self, { :link_category_actions => [ :show ]})
21
+ # #
22
+ # # This will only create the show action for link categories, but omit the index action.
23
+ # def self.routes(router, options = {})
24
+ # options.reverse_merge!(
25
+ # { :link_category_actions => [:index, :show],
26
+ # :link_actions => [:index, :show]
27
+ # }
28
+ # )
29
+ #
30
+ # router.resources :ecm_links_categories, :only => options[:link_category_actions], :controller => 'ecm/links/link_categories'
31
+ # router.resources :ecm_links_links,:only => options[:link_actions], :controller => 'ecm/products/links'
32
+ # end
33
+ end
34
+ end
35
+ end
36
+
@@ -0,0 +1,5 @@
1
+ module Ecm
2
+ module Links
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
data/lib/ecm_links2.rb ADDED
@@ -0,0 +1,21 @@
1
+ require 'active_admin-acts_as_list'
2
+ require 'active_admin-awesome_nested_set'
3
+ require 'acts_as_list'
4
+ require 'awesome_nested_set'
5
+ require 'awesome_nested_set-tools'
6
+ require 'friendly_id'
7
+ require 'draper'
8
+
9
+ require 'ecm/links/engine'
10
+ require 'ecm/links/configuration'
11
+ require 'ecm/links/routing'
12
+
13
+ module Ecm
14
+ module Links
15
+ extend Configuration
16
+
17
+ def self.table_name_prefix
18
+ 'ecm_links_'
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ module Ecm
2
+ module Links
3
+ module Generators
4
+ class InstallGenerator < Rails::Generators::Base
5
+ desc "Generates the intializer"
6
+
7
+ source_root File.expand_path('../templates', __FILE__)
8
+
9
+ def generate_intializer
10
+ copy_file "ecm_links.rb", "config/initializers/ecm_links.rb"
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,29 @@
1
+ Ecm::Links.configure do |config|
2
+ # Configure your link footer columns here.
3
+ #
4
+ # Default: config.link_footer_columns = 4
5
+ #
6
+ config.link_footer_columns = 4
7
+
8
+ # Configure your link footer colum css classes here.
9
+ #
10
+ # Default: config.link_footer_column_css_classes = %w[ link-footer-column col-lg-3 ]
11
+ #
12
+ config.link_footer_column_css_classes = %w[ link-footer-column col-lg-3 ]
13
+
14
+ # Set the base controller for the contact form
15
+ #
16
+ # Default: config.base_controller = 'ApplicationController'
17
+ #
18
+ config.base_controller = 'ApplicationController'
19
+
20
+ # Accepted markup languages
21
+ #
22
+ # default: config.markup_languages = %w[ textile ]
23
+ config.markup_languages = %w[ textile ]
24
+
25
+ # Default markup language
26
+ #
27
+ # default: config.default_markup_language = 'textile'
28
+ config.default_markup_language = 'textile'
29
+ end
@@ -0,0 +1,20 @@
1
+ module Ecm
2
+ module Links
3
+ module Generators
4
+ class LocalesGenerator < Rails::Generators::Base
5
+ desc "Copies the locale files to your application"
6
+
7
+ source_root File.expand_path('../../../../../../config/locales', __FILE__)
8
+
9
+ def generate_locales
10
+ copy_file "ecm.links.category.en.yml", "config/locales/ecm.links.category.en.yml"
11
+ copy_file "ecm.links.category.de.yml", "config/locales/ecm.links.category.de.yml"
12
+ copy_file "ecm.links.en.yml", "config/locales/ecm.links.en.yml"
13
+ copy_file "ecm.links.de.yml", "config/locales/ecm.links.de.yml"
14
+ copy_file "ecm.links.link.en.yml", "config/locales/ecm.links.link.en.yml"
15
+ copy_file "ecm.links.link.de.yml", "config/locales/ecm.links.link.de.yml"
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,50 @@
1
+ namespace :ecm_links do
2
+ namespace :db do
3
+ desc "Purges and creates example data"
4
+ task :populate!, [] => [:environment] do |t, args|
5
+
6
+ Rake::Task["ecm_links:db:clear!"].execute
7
+ Rake::Task["ecm_links:db:populate"].execute
8
+ end
9
+
10
+ desc "Clears all data!"
11
+ task :clear!, [] => [:environment] do |t, args|
12
+ Ecm::Links::Category.delete_all
13
+ Ecm::Links::Link.delete_all
14
+ end
15
+
16
+ desc "Creates example_data"
17
+ task :populate, [] => [:environment] do |t, args|
18
+ require "ffaker"
19
+ require "forgery"
20
+
21
+ # Create example categories
22
+ 5.times do
23
+ Ecm::Links::Category.create! do |c|
24
+ c.locale = I18n.available_locales.map(&:to_s).choice
25
+ c.name = "#{Faker::Company.name} Category"
26
+ c.link_footer_column = [nil, 1, 2, 3, 4].choice
27
+ end
28
+ end
29
+
30
+ 50.times do
31
+ Ecm::Links::Category.create! do |c|
32
+ c.parent = Ecm::Links::Category.all.choice
33
+ c.name = "#{Faker::Company.name} Category"
34
+ c.link_footer_column = [nil, 1, 2, 3, 4].choice
35
+ end
36
+ end
37
+
38
+ # Create example links
39
+ categories = Ecm::Links::Category.all
40
+ 50.times do
41
+ Ecm::Links::Link.create! do |l|
42
+ l.name ="#{Faker::Company.name} Link"
43
+ l.url = "#{Faker::Internet.http_url} Link"
44
+ l.description = Faker::Lorem.paragraph(rand(3))
45
+ l.ecm_links_category = categories.choice
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end