refinerycms-llama_widgets 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/app/assets/images/refinery/icons/lock.png +0 -0
  2. data/app/assets/images/refinery/itoggle.png +0 -0
  3. data/app/assets/javascripts/refinery/engage.itoggle-min.js +17 -0
  4. data/app/assets/javascripts/refinery/widgets.js.coffee.erb +91 -0
  5. data/app/assets/stylesheets/refinery/engage.itoggle.css +94 -0
  6. data/app/assets/stylesheets/refinery/widgets.scss +89 -0
  7. data/app/controllers/refinery/widgets/admin/templates_controller.rb +28 -0
  8. data/app/controllers/refinery/widgets/admin/widget_types_controller.rb +59 -0
  9. data/app/controllers/refinery/widgets/admin/widgets_controller.rb +30 -0
  10. data/app/decorators/controllers/refinery/admin/pages_controller.rb +23 -0
  11. data/app/decorators/controllers/refinery/pages_controller.rb +13 -0
  12. data/app/decorators/models/refinery/page.rb +28 -0
  13. data/app/decorators/models/refinery/page_part.rb +16 -0
  14. data/app/helpers/refinery/widgets/widgets_helper.rb +38 -0
  15. data/app/models/refinery/widgets/content_block_widget.rb +13 -0
  16. data/app/models/refinery/widgets/template.rb +64 -0
  17. data/app/models/refinery/widgets/template_part.rb +37 -0
  18. data/app/models/refinery/widgets/widget.rb +108 -0
  19. data/app/overrides/refinery/admin/pages/_actions.rb +5 -0
  20. data/app/overrides/refinery/admin/pages/_form.rb +4 -0
  21. data/app/overrides/refinery/admin/pages/_form_page_parts.rb +5 -0
  22. data/app/overrides/refinery/admin/pages/_page.rb +5 -0
  23. data/app/views/refinery/admin/_image_picker.html.erb +66 -0
  24. data/app/views/refinery/admin/_nested_image_picker.html.erb +58 -0
  25. data/app/views/refinery/admin/pages/_form_page_parts.html.erb +37 -0
  26. data/app/views/refinery/admin/pages/_page_part.slim +25 -0
  27. data/app/views/refinery/admin/pages/_widget_fields.slim +46 -0
  28. data/app/views/refinery/widgets/_content_block_widget.slim +2 -0
  29. data/app/views/refinery/widgets/_widget.slim +1 -0
  30. data/app/views/refinery/widgets/admin/templates/_actions.html.erb +25 -0
  31. data/app/views/refinery/widgets/admin/templates/_form.html.erb +17 -0
  32. data/app/views/refinery/widgets/admin/templates/_page_part.slim +22 -0
  33. data/app/views/refinery/widgets/admin/templates/_page_parts.html.erb +37 -0
  34. data/app/views/refinery/widgets/admin/templates/_records.html.erb +16 -0
  35. data/app/views/refinery/widgets/admin/templates/_sortable_list.html.erb +5 -0
  36. data/app/views/refinery/widgets/admin/templates/_template.html.erb +18 -0
  37. data/app/views/refinery/widgets/admin/templates/_templates.html.erb +2 -0
  38. data/app/views/refinery/widgets/admin/templates/_widget_fields.slim +26 -0
  39. data/app/views/refinery/widgets/admin/templates/edit.html.erb +1 -0
  40. data/app/views/refinery/widgets/admin/templates/index.html.erb +7 -0
  41. data/app/views/refinery/widgets/admin/templates/list.slim +15 -0
  42. data/app/views/refinery/widgets/admin/templates/new.html.erb +1 -0
  43. data/app/views/refinery/widgets/admin/widget_types/new_for_page.slim +4 -0
  44. data/app/views/refinery/widgets/admin/widget_types/new_for_template.slim +4 -0
  45. data/app/views/refinery/widgets/admin/widget_types/show_for_page.slim +4 -0
  46. data/app/views/refinery/widgets/admin/widget_types/show_for_template.slim +4 -0
  47. data/app/views/refinery/widgets/admin/widgets/_content_block_widget.slim +3 -0
  48. data/app/views/refinery/widgets/admin/widgets/_content_block_widget_preview.slim +3 -0
  49. data/app/views/refinery/widgets/admin/widgets/_widget.slim +2 -0
  50. data/app/views/refinery/widgets/admin/widgets/_widget_preview.slim +2 -0
  51. data/app/views/refinery/widgets/admin/widgets/new.slim +31 -0
  52. data/config/locales/cs.yml +27 -0
  53. data/config/locales/en.yml +34 -0
  54. data/config/locales/es.yml +28 -0
  55. data/config/locales/fr.yml +27 -0
  56. data/config/locales/it.yml +27 -0
  57. data/config/locales/nb.yml +27 -0
  58. data/config/locales/nl.yml +27 -0
  59. data/config/locales/sk.yml +27 -0
  60. data/config/locales/tr.yml +27 -0
  61. data/config/locales/zh-CN.yml +29 -0
  62. data/config/routes.rb +29 -0
  63. data/db/migrate/1_create_widgets_templates.rb +22 -0
  64. data/db/migrate/2_create_widgets_template_parts.rb +20 -0
  65. data/db/migrate/3_create_widgets_widgets.rb +24 -0
  66. data/db/migrate/4_create_widgets_content_block_widgets.rb +16 -0
  67. data/db/migrate/5_add_template_id_to_refinery_pages.rb +13 -0
  68. data/db/migrate/6_add_locked_to_refinery_page_parts.rb +13 -0
  69. data/db/seeds.rb +24 -0
  70. data/lib/generators/refinery/templates/config/initializers/refinery/widgets.rb.erb +7 -0
  71. data/lib/generators/refinery/widgets_generator.rb +27 -0
  72. data/lib/refinery/widgets.rb +24 -0
  73. data/lib/refinery/widgets/acts_as_widget.rb +31 -0
  74. data/lib/refinery/widgets/configuration.rb +15 -0
  75. data/lib/refinery/widgets/engine.rb +39 -0
  76. data/lib/refinery/widgets/widget_type.rb +31 -0
  77. data/lib/refinerycms-widgets.rb +4 -0
  78. data/lib/tasks/refinery/widgets.rake +26 -0
  79. metadata +202 -0
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+ Refinery::Widgets.configure do |config|
3
+ # config.base_widgets = ['Refinery::Widgets::ContentBlockWidget']
4
+ # config.excluded_widgets = []
5
+ # config.super_admin_widgets = []
6
+ config.additional_widgets = []
7
+ end
@@ -0,0 +1,27 @@
1
+ module Refinery
2
+ class WidgetsGenerator < Rails::Generators::Base
3
+
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ def rake_db
7
+ rake "refinery_widgets:install:migrations"
8
+ end
9
+
10
+ def append_load_seed_data
11
+ create_file 'db/seeds.rb' unless File.exists?(File.join(destination_root, 'db', 'seeds.rb'))
12
+ append_file 'db/seeds.rb', :verbose => true do
13
+ <<-EOH
14
+
15
+ # Added by Refinery CMS Widgets extension
16
+ Refinery::Widgets::Engine.load_seed
17
+ EOH
18
+ end
19
+ end
20
+
21
+ def generate_widgets_initializer
22
+ template "config/initializers/refinery/widgets.rb.erb",
23
+ File.join(destination_root, "config", "initializers", "refinery", "widgets.rb")
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ require 'refinerycms-core'
2
+
3
+ module Refinery
4
+ autoload :WidgetsGenerator, 'generators/refinery/widgets_generator'
5
+
6
+ module Widgets
7
+ require 'refinery/widgets/engine'
8
+ require 'refinery/widgets/configuration'
9
+ require 'refinery/widgets/widget_type'
10
+ require 'refinery/widgets/acts_as_widget'
11
+
12
+ class << self
13
+ attr_writer :root
14
+
15
+ def root
16
+ @root ||= Pathname.new(File.expand_path('../../../', __FILE__))
17
+ end
18
+
19
+ def factory_paths
20
+ @factory_paths ||= [ root.join('spec', 'factories').to_s ]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,31 @@
1
+ module Refinery
2
+ module Widgets
3
+ module ActsAsWidget
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ end
9
+
10
+ module ClassMethods
11
+ def acts_as_widget(options={})
12
+ widget_type = WidgetType.find(self.to_s)
13
+ self.class_eval do
14
+ belongs_to :widget, class_name: 'Refinery::Widgets::Widget'
15
+ ApplicationController.class_eval do
16
+ define_method widget_type.association_name, Proc.new{}
17
+ end
18
+ end
19
+ Widget.class_eval do
20
+ has_one widget_type.association_name.to_sym, class_name: widget_type.klass_as_string, dependent: :destroy
21
+ accepts_nested_attributes_for widget_type.association_name.to_sym
22
+ attr_accessible widget_type.attribute_param.to_sym
23
+ end
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+
31
+ ActiveRecord::Base.send :include, Refinery::Widgets::ActsAsWidget
@@ -0,0 +1,15 @@
1
+ module Refinery
2
+ module Widgets
3
+ include ActiveSupport::Configurable
4
+
5
+ config_accessor :base_widgets, :excluded_widgets,
6
+ :additional_widgets, :super_admin_widgets
7
+
8
+ self.base_widgets = ['Refinery::Widgets::ContentBlockWidget']
9
+ self.excluded_widgets = []
10
+ self.additional_widgets = []
11
+ self.super_admin_widgets = []
12
+
13
+ end
14
+ end
15
+
@@ -0,0 +1,39 @@
1
+ module Refinery
2
+ module Widgets
3
+ class Engine < Rails::Engine
4
+ extend Refinery::Engine
5
+ isolate_namespace Refinery::Widgets
6
+
7
+ engine_name :refinery_widgets
8
+
9
+ initializer "register refinerycms_templates plugin" do
10
+ Refinery::Plugin.register do |plugin|
11
+ plugin.name = "templates"
12
+ plugin.url = proc { Refinery::Core::Engine.routes.url_helpers.widgets_admin_templates_path }
13
+ plugin.pathname = root
14
+ plugin.activity = {
15
+ :class_name => :'refinery/widgets/template',
16
+ :title => 'name'
17
+ }
18
+ plugin.menu_match = %r{refinery/widgets/templates(/.*)?$}
19
+ end
20
+
21
+ Refinery::Core.configure do |config| # # Register extra javascript for backend
22
+ config.register_javascript 'refinery/widgets.js.coffee.erb'
23
+ config.register_javascript 'refinery/engage.itoggle-min.js'
24
+ config.register_stylesheet "refinery/widgets", :media => 'screen'
25
+ config.register_stylesheet "refinery/engage.itoggle", :media => 'screen'
26
+ end
27
+ end
28
+
29
+ config.after_initialize do
30
+ Refinery.register_extension(Refinery::Widgets)
31
+ end
32
+
33
+ config.to_prepare do
34
+ Dir["#{File.dirname(__FILE__)}/../../../app/decorators/**/*.rb"].each { |f| load(f) }
35
+ Dir["#{File.dirname(__FILE__)}/../../../app/helpers/**/*.rb"].each { |f| load(f) }
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,31 @@
1
+ module Refinery
2
+ module Widgets
3
+ class WidgetType
4
+
5
+ attr_reader :name, :klass, :html_id, :association_name, :admin_partial,
6
+ :klass_as_string, :attribute_param, :admin_preview_partial,
7
+ :front_partial
8
+
9
+ def initialize(class_as_string)
10
+ @klass_as_string = class_as_string
11
+ @klass = class_as_string.constantize
12
+ @html_id = class_as_string.split('::').last.underscore
13
+ @association_name = @html_id
14
+ @attribute_param = "#{@association_name}_attributes"
15
+ @admin_partial = @html_id
16
+ @admin_preview_partial = "#{@html_id}_preview"
17
+ @front_partial = @html_id
18
+ @name = @html_id.humanize
19
+ end
20
+
21
+ def self.all
22
+ Refinery::Widgets.config[:base_widgets].collect{|w| self.new(w) } +
23
+ Refinery::Widgets.config[:additional_widgets].collect{|w| self.new(w) }
24
+ end
25
+
26
+ def self.find(class_as_string)
27
+ self.new(class_as_string)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,4 @@
1
+ require 'refinery/widgets'
2
+
3
+ require 'slim-rails'
4
+ require 'deface'
@@ -0,0 +1,26 @@
1
+ namespace :refinery do
2
+
3
+ namespace :widgets do
4
+
5
+ # call this task by running: rake refinery:templates:my_task
6
+ desc "Reset page parts on pages and templates after changing config"
7
+ task :reset_parts => :environment do
8
+ Refinery::Widgets::Template.all.each do |t|
9
+ t.template_parts = []
10
+ Refinery::Widgets::Template::PartNames.each do |part|
11
+ t.template_parts << Refinery::Widgets::TemplatePart.new(name: part)
12
+ end
13
+ t.save!
14
+ end
15
+ Refinery::Page.all.each do |p|
16
+ p.parts = []
17
+ Refinery::Widgets::Template::PartNames.each do |part|
18
+ p.parts << Refinery::PagePart.new(title: part)
19
+ end
20
+ p.save!
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ end
metadata ADDED
@@ -0,0 +1,202 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: refinerycms-llama_widgets
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Nick Bolt
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ type: :runtime
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: 2.1.0
21
+ none: false
22
+ prerelease: false
23
+ name: refinerycms-core
24
+ requirement: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ version: 2.1.0
29
+ none: false
30
+ - !ruby/object:Gem::Dependency
31
+ type: :runtime
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ! '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ none: false
38
+ prerelease: false
39
+ name: refinerycms-nested_models
40
+ requirement: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ none: false
46
+ - !ruby/object:Gem::Dependency
47
+ type: :runtime
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ none: false
54
+ prerelease: false
55
+ name: slim-rails
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ none: false
62
+ - !ruby/object:Gem::Dependency
63
+ type: :runtime
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 1.0.0
69
+ none: false
70
+ prerelease: false
71
+ name: deface
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 1.0.0
77
+ none: false
78
+ - !ruby/object:Gem::Dependency
79
+ type: :development
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ version: 2.1.0
85
+ none: false
86
+ prerelease: false
87
+ name: refinerycms-testing
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ~>
91
+ - !ruby/object:Gem::Version
92
+ version: 2.1.0
93
+ none: false
94
+ description: Ruby on Rails Widgets extension for Refinery CMS
95
+ email:
96
+ executables: []
97
+ extensions: []
98
+ extra_rdoc_files: []
99
+ files:
100
+ - app/views/refinery/widgets/_content_block_widget.slim
101
+ - app/views/refinery/widgets/admin/widget_types/show_for_template.slim
102
+ - app/views/refinery/widgets/admin/widget_types/new_for_page.slim
103
+ - app/views/refinery/widgets/admin/widget_types/show_for_page.slim
104
+ - app/views/refinery/widgets/admin/widget_types/new_for_template.slim
105
+ - app/views/refinery/widgets/admin/widgets/new.slim
106
+ - app/views/refinery/widgets/admin/widgets/_content_block_widget.slim
107
+ - app/views/refinery/widgets/admin/widgets/_content_block_widget_preview.slim
108
+ - app/views/refinery/widgets/admin/widgets/_widget.slim
109
+ - app/views/refinery/widgets/admin/widgets/_widget_preview.slim
110
+ - app/views/refinery/widgets/admin/templates/edit.html.erb
111
+ - app/views/refinery/widgets/admin/templates/new.html.erb
112
+ - app/views/refinery/widgets/admin/templates/_page_part.slim
113
+ - app/views/refinery/widgets/admin/templates/_widget_fields.slim
114
+ - app/views/refinery/widgets/admin/templates/_records.html.erb
115
+ - app/views/refinery/widgets/admin/templates/_page_parts.html.erb
116
+ - app/views/refinery/widgets/admin/templates/index.html.erb
117
+ - app/views/refinery/widgets/admin/templates/_template.html.erb
118
+ - app/views/refinery/widgets/admin/templates/_templates.html.erb
119
+ - app/views/refinery/widgets/admin/templates/_form.html.erb
120
+ - app/views/refinery/widgets/admin/templates/_actions.html.erb
121
+ - app/views/refinery/widgets/admin/templates/list.slim
122
+ - app/views/refinery/widgets/admin/templates/_sortable_list.html.erb
123
+ - app/views/refinery/widgets/_widget.slim
124
+ - app/views/refinery/admin/pages/_form_page_parts.html.erb
125
+ - app/views/refinery/admin/pages/_page_part.slim
126
+ - app/views/refinery/admin/pages/_widget_fields.slim
127
+ - app/views/refinery/admin/_image_picker.html.erb
128
+ - app/views/refinery/admin/_nested_image_picker.html.erb
129
+ - app/controllers/refinery/widgets/admin/widget_types_controller.rb
130
+ - app/controllers/refinery/widgets/admin/widgets_controller.rb
131
+ - app/controllers/refinery/widgets/admin/templates_controller.rb
132
+ - app/helpers/refinery/widgets/widgets_helper.rb
133
+ - app/assets/images/refinery/itoggle.png
134
+ - app/assets/images/refinery/icons/lock.png
135
+ - app/assets/stylesheets/refinery/engage.itoggle.css
136
+ - app/assets/stylesheets/refinery/widgets.scss
137
+ - app/assets/javascripts/refinery/widgets.js.coffee.erb
138
+ - app/assets/javascripts/refinery/engage.itoggle-min.js
139
+ - app/decorators/controllers/refinery/admin/pages_controller.rb
140
+ - app/decorators/controllers/refinery/pages_controller.rb
141
+ - app/decorators/models/refinery/page.rb
142
+ - app/decorators/models/refinery/page_part.rb
143
+ - app/overrides/refinery/admin/pages/_form.rb
144
+ - app/overrides/refinery/admin/pages/_page.rb
145
+ - app/overrides/refinery/admin/pages/_form_page_parts.rb
146
+ - app/overrides/refinery/admin/pages/_actions.rb
147
+ - app/models/refinery/widgets/template.rb
148
+ - app/models/refinery/widgets/template_part.rb
149
+ - app/models/refinery/widgets/content_block_widget.rb
150
+ - app/models/refinery/widgets/widget.rb
151
+ - config/locales/sk.yml
152
+ - config/locales/it.yml
153
+ - config/locales/fr.yml
154
+ - config/locales/tr.yml
155
+ - config/locales/nl.yml
156
+ - config/locales/es.yml
157
+ - config/locales/cs.yml
158
+ - config/locales/zh-CN.yml
159
+ - config/locales/en.yml
160
+ - config/locales/nb.yml
161
+ - config/routes.rb
162
+ - db/seeds.rb
163
+ - db/migrate/2_create_widgets_template_parts.rb
164
+ - db/migrate/1_create_widgets_templates.rb
165
+ - db/migrate/4_create_widgets_content_block_widgets.rb
166
+ - db/migrate/6_add_locked_to_refinery_page_parts.rb
167
+ - db/migrate/3_create_widgets_widgets.rb
168
+ - db/migrate/5_add_template_id_to_refinery_pages.rb
169
+ - lib/tasks/refinery/widgets.rake
170
+ - lib/refinery/widgets/configuration.rb
171
+ - lib/refinery/widgets/acts_as_widget.rb
172
+ - lib/refinery/widgets/widget_type.rb
173
+ - lib/refinery/widgets/engine.rb
174
+ - lib/refinery/widgets.rb
175
+ - lib/generators/refinery/widgets_generator.rb
176
+ - lib/generators/refinery/templates/config/initializers/refinery/widgets.rb.erb
177
+ - lib/refinerycms-widgets.rb
178
+ homepage:
179
+ licenses: []
180
+ post_install_message:
181
+ rdoc_options: []
182
+ require_paths:
183
+ - lib
184
+ required_ruby_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ! '>='
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ none: false
190
+ required_rubygems_version: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ! '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ none: false
196
+ requirements: []
197
+ rubyforge_project:
198
+ rubygems_version: 1.8.25
199
+ signing_key:
200
+ specification_version: 3
201
+ summary: Widgets extension for Refinery CMS
202
+ test_files: []