flexible_admin 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.textile CHANGED
@@ -51,6 +51,12 @@ h2. Adding models
51
51
 
52
52
  run <code>rails generate flexible_admin Post</code> to generate a admin/posts controller, /admin/posts route, and add Posts to the admin navigation
53
53
 
54
+ h2. Adding WYSIWYG editor
55
+
56
+ run <code>rails generate flexible_admin:ckeditor</code> to install and generate ckeditor. That will turn all fields named Body and Description into a text editor. It also supports pictures and file attachments in the body and configures ckeditor to use amazon_s3 to store the pic/uploads.
57
+
58
+ The pics/attachment uploads for ckeditor depend on paperclip for file uploads. If you use another file attachment handler, install ckeditor yourself from the gem: https://github.com/galetahub/ckeditor
59
+
54
60
  h2. Editing views and controllers
55
61
 
56
62
  Edit views directly in the app/views/admin, app/views/layouts/admin and app/views/controllers/admin
@@ -1,3 +1,3 @@
1
1
  module FlexibleAdmin
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,42 @@
1
+ require 'rails/generators'
2
+
3
+ # http://guides.rubyonrails.org/generators.html
4
+ # http://rdoc.info/github/wycats/thor/master/Thor/Actions.html
5
+ # keep generator idempotent, thanks
6
+
7
+ module FlexibleAdmin
8
+ class CkeditorGenerator < Rails::Generators::Base
9
+ source_root File.expand_path("../templates", __FILE__)
10
+
11
+ desc "flexible_admin ckeditor generator"
12
+
13
+ def install_gem
14
+ append_file "Gemfile", "\n", :force => true
15
+ gem "ckeditor", "~> 3.6.3"
16
+ gem "paperclip"
17
+ gem 'aws-s3', :require => 'aws/s3'
18
+
19
+ inside Rails.root do
20
+ run "bundle install"
21
+ end
22
+ end
23
+
24
+ def run_generator
25
+ generate "ckeditor:install"
26
+ generate "ckeditor:models --orm=active_record --backend=paperclip"
27
+ end
28
+
29
+ def set_paperclip_settings_for_s3
30
+ remove_file 'app/models/ckeditor/picture.rb'
31
+ remove_file 'app/models/ckeditor/attachment_file.rb'
32
+ template "ckeditor/picture.rb", "app/models/ckeditor/picture.rb"
33
+ template "ckeditor/attachment_file.rb", "app/models/ckeditor/attachment_file.rb"
34
+ end
35
+
36
+ def instructions
37
+ say "you now need to run 'rake db:migrate' to create the ckeditor tables", :blue
38
+ say "the pictures/attachments for ckeditor assume an amazon_s3 config file at config/amazon_s3.yml. Add that file OR change the settings at app/models/ckeditor/picture.rb & app/models/ckeditor/attachment_file.rb", :blue
39
+ end
40
+
41
+ end
42
+ end
@@ -158,7 +158,11 @@ module FlexibleAdmin
158
158
  elsif column.type == :boolean
159
159
  "<%= render 'admin/shared/checkbox_field', :f => f, :what => :#{column.name} %>"
160
160
  elsif column.type == :text
161
- "<%= render 'admin/shared/text_area_field', :f => f, :what => :#{column.name} %>"
161
+ if column.name =~ /(body|description)/
162
+ "<%= render 'admin/shared/cktext_area_field', :f => f, :what => :#{column.name} %>"
163
+ else
164
+ "<%= render 'admin/shared/text_area_field', :f => f, :what => :#{column.name} %>"
165
+ end
162
166
  else
163
167
  "<%= render 'admin/shared/text_field', :f => f, :what => :#{column.name} %>"
164
168
  end
@@ -8,6 +8,10 @@
8
8
  <title>Flexible Admin</title>
9
9
  <%%= stylesheet_link_tag 'admin/application' %>
10
10
  <%%= javascript_include_tag 'admin/application' %>
11
+
12
+ <%%= yield :stylesheets -%>
13
+ <%%= yield :javascripts -%>
14
+
11
15
  <%%= csrf_meta_tag %>
12
16
  </head>
13
17
 
@@ -0,0 +1,16 @@
1
+ class Ckeditor::AttachmentFile < Ckeditor::Asset
2
+ has_attached_file :data,
3
+ :storage => :s3,
4
+ :s3_credentials => "#{Rails.root}/config/amazon_s3.yml",
5
+ :path => ":class/:id/:basename.:extension"
6
+
7
+ validates_attachment_size :data, :less_than => 100.megabytes
8
+ validates_attachment_presence :data
9
+
10
+ def url_thumb
11
+ @url_thumb ||= begin
12
+ extname = File.extname(filename).gsub(/^\./, '')
13
+ "/javascripts/ckeditor/filebrowser/images/thumbs/#{extname}.gif"
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ class Ckeditor::Picture < Ckeditor::Asset
2
+ has_attached_file :data,
3
+ :storage => :s3,
4
+ :s3_credentials => "#{Rails.root}/config/amazon_s3.yml",
5
+ :path => ":class/:id/:basename.:extension",
6
+ :styles => { :content => '800>', :thumb => '118x100#' }
7
+
8
+ validates_attachment_size :data, :less_than => 2.megabytes
9
+ validates_attachment_presence :data
10
+
11
+ def url_content
12
+ url(:content)
13
+ end
14
+ end
@@ -6,4 +6,10 @@
6
6
  <%%= f.cktext_area what, :toolbar => 'Easy', :width => 800, :height => 400 %>
7
7
  <%%= content_tag(:span, help, :class => 'help-block') if help_text_present?(local_variables) %>
8
8
  </div>
9
- </div><!-- /clearfix -->
9
+ </div><!-- /clearfix -->
10
+
11
+
12
+ <%% content_for :javascripts do %>
13
+ <%%= javascript_include_tag "/javascripts/ckeditor/ckeditor.js" %>
14
+ <%%= stylesheet_link_tag "/javascripts/ckeditor/contents.css" %>
15
+ <%% end %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flexible_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-16 00:00:00.000000000Z
12
+ date: 2012-01-19 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70250395871320 !ruby/object:Gem::Requirement
16
+ requirement: &70258698571740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,43 @@ dependencies:
21
21
  version: 3.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70250395871320
24
+ version_requirements: *70258698571740
25
+ - !ruby/object:Gem::Dependency
26
+ name: devise
27
+ requirement: &70258698567380 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70258698567380
36
+ - !ruby/object:Gem::Dependency
37
+ name: inherited_resources
38
+ requirement: &70258698564980 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70258698564980
47
+ - !ruby/object:Gem::Dependency
48
+ name: ckeditor
49
+ requirement: &70258698534720 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 3.6.3
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70258698534720
25
58
  - !ruby/object:Gem::Dependency
26
59
  name: sqlite3
27
- requirement: &70250395870860 !ruby/object:Gem::Requirement
60
+ requirement: &70258698514560 !ruby/object:Gem::Requirement
28
61
  none: false
29
62
  requirements:
30
63
  - - ! '>='
@@ -32,10 +65,10 @@ dependencies:
32
65
  version: '0'
33
66
  type: :development
34
67
  prerelease: false
35
- version_requirements: *70250395870860
68
+ version_requirements: *70258698514560
36
69
  - !ruby/object:Gem::Dependency
37
70
  name: rspec
38
- requirement: &70250395870400 !ruby/object:Gem::Requirement
71
+ requirement: &70258698512440 !ruby/object:Gem::Requirement
39
72
  none: false
40
73
  requirements:
41
74
  - - ! '>='
@@ -43,10 +76,10 @@ dependencies:
43
76
  version: '0'
44
77
  type: :development
45
78
  prerelease: false
46
- version_requirements: *70250395870400
79
+ version_requirements: *70258698512440
47
80
  - !ruby/object:Gem::Dependency
48
81
  name: generator_spec
49
- requirement: &70250395869980 !ruby/object:Gem::Requirement
82
+ requirement: &70258698509320 !ruby/object:Gem::Requirement
50
83
  none: false
51
84
  requirements:
52
85
  - - ! '>='
@@ -54,10 +87,10 @@ dependencies:
54
87
  version: '0'
55
88
  type: :development
56
89
  prerelease: false
57
- version_requirements: *70250395869980
90
+ version_requirements: *70258698509320
58
91
  - !ruby/object:Gem::Dependency
59
92
  name: pry
60
- requirement: &70250395869540 !ruby/object:Gem::Requirement
93
+ requirement: &70258698505880 !ruby/object:Gem::Requirement
61
94
  none: false
62
95
  requirements:
63
96
  - - ! '>='
@@ -65,7 +98,7 @@ dependencies:
65
98
  version: '0'
66
99
  type: :development
67
100
  prerelease: false
68
- version_requirements: *70250395869540
101
+ version_requirements: *70258698505880
69
102
  description: Rails 3.1 admin generator
70
103
  email:
71
104
  - josh@joshcrews.com
@@ -75,6 +108,7 @@ extra_rdoc_files: []
75
108
  files:
76
109
  - lib/flexible_admin/version.rb
77
110
  - lib/flexible_admin.rb
111
+ - lib/generators/flexible_admin/ckeditor_generator.rb
78
112
  - lib/generators/flexible_admin/flexible_admin_generator.rb
79
113
  - lib/generators/flexible_admin/install_generator.rb
80
114
  - lib/generators/flexible_admin/templates/admin_controller.rb
@@ -83,6 +117,8 @@ files:
83
117
  - lib/generators/flexible_admin/templates/admin_layout.html.erb
84
118
  - lib/generators/flexible_admin/templates/admin_resources_controller.rb
85
119
  - lib/generators/flexible_admin/templates/admin_user_sessions_controller.rb
120
+ - lib/generators/flexible_admin/templates/ckeditor/attachment_file.rb
121
+ - lib/generators/flexible_admin/templates/ckeditor/picture.rb
86
122
  - lib/generators/flexible_admin/templates/flash.html.erb
87
123
  - lib/generators/flexible_admin/templates/forms/checkbox_field.html.erb
88
124
  - lib/generators/flexible_admin/templates/forms/cktext_area_field.html.erb
@@ -135,7 +171,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
171
  version: '0'
136
172
  segments:
137
173
  - 0
138
- hash: 4582513282580412729
174
+ hash: 1094665881318821711
139
175
  required_rubygems_version: !ruby/object:Gem::Requirement
140
176
  none: false
141
177
  requirements:
@@ -144,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
180
  version: '0'
145
181
  segments:
146
182
  - 0
147
- hash: 4582513282580412729
183
+ hash: 1094665881318821711
148
184
  requirements: []
149
185
  rubyforge_project:
150
186
  rubygems_version: 1.8.11