refinerycms-llama_widgets 0.1.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 (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: []