ecm_links2 1.0.0

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