link_to_action 0.2.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -7,6 +7,8 @@ Set of helpers: link_to_new, link_to_index, link_to_show, link_to_edit, link_to_
7
7
 
8
8
  Bonus helper: link_to_back
9
9
 
10
+ Demo application sources with Twitter Bootstrap enabled: [link_to_action_demo](https://github.com/denispeplin/link_to_action_demo)
11
+
10
12
  ## Why
11
13
 
12
14
  Rails scaffold-generated links are not DRY, and it becomes even worse,
@@ -30,21 +32,21 @@ And scaffolded code was:
30
32
  ```
31
33
 
32
34
  Even in simple scaffolded link words 'edit' and 'comment' was repeated twice.
33
- In more complex example word 'edit' was written three times.
35
+ In the more complex example word 'edit' was written three times.
34
36
 
35
- Using link_to_action gem, you can avoid those duplication completely:
37
+ Using `link_to_action` gem, you can avoid those duplications completely:
36
38
 
37
39
  ```erb
38
40
  <%= link_to_edit @comment %>
39
41
  ```
40
42
 
41
- That's all for this link, but not all for this gem. It configurable, it can be
43
+ That's all for this link, but not all for this gem. It is configurable, it can be
42
44
  tuned up to suit other than twitter-bootstrap CSS frameworks (which is off by
43
45
  default anyway), and it even can take advantage of cancan's abilities.
44
46
 
45
47
  ## When
46
48
 
47
- This gem is especially useful when application contains many simular-looking
49
+ This gem is especially useful when an application contains many similar-looking
48
50
  links. Many global and link-specific options are exists, so this gem is flexible.
49
51
  And you still have `link_to` if you want some link to look really simple!
50
52
 
@@ -58,12 +60,17 @@ And then execute:
58
60
 
59
61
  $ bundle
60
62
 
61
- Add initializer and locale file:
63
+ Add initializer, locale file and templates. Note that CSS classes, icons and
64
+ cancan are disabled by default. To leave it as it is, just run:
62
65
 
63
66
  $ rails generate link_to_action:install
64
67
 
65
- Edit `config/initializers/link_to_action.rb`. Note that CSS classes, icons and
66
- cancan are disabled by default.
68
+ Edit `config/initializers/link_to_action.rb` to change some options. The list of
69
+ options with defaults provided below.
70
+
71
+ To install `link_to_action` with Twitter Bootstrap and icons enabled, run:
72
+
73
+ $ rails generate link_to_action:install --bootstrap
67
74
 
68
75
  ## Usage
69
76
 
@@ -71,7 +78,8 @@ In general:
71
78
 
72
79
  link_to_{action} object, options
73
80
 
74
- Per action, with commented-out link_to equivalents:
81
+ Per action, with commented-out link_to equivalents (no CSS or icons, just to
82
+ keep it simple):
75
83
 
76
84
  ```ruby
77
85
  link_to_new MyModel # link_to 'New MyModel', new_my_model_path
@@ -83,7 +91,7 @@ link_to_destroy @my_model # link_to 'Delete MyModel', my_model_path(@my_model),
83
91
  link_to_back # link_to :back
84
92
  ```
85
93
 
86
- `link_to_show` tries some methods (by default :name, :title, and :to_s) to get
94
+ `link_to_show` tries some methods (by default :name and :to_s) to get
87
95
  name for the link. This can be changed by specifying `i18n` option. Other
88
96
  helpers use I18n to get link names unless `name` option specified.
89
97
 
@@ -137,11 +145,11 @@ size_class_default = nil
137
145
  size_class_large = 'btn-large'
138
146
  size_class_small = 'btn-small'
139
147
  size_class_mini = 'btn-mini'
140
- show_methods = [ :name, :title, :to_s ]
148
+ show_methods = [ :name, :to_s ]
141
149
  destroy_confirm = true
142
- destroy_skip_pjax = false
150
+ destroy_skip_pjax = false # overwrite this if pjax is used
143
151
  ```
144
- Look to `config/initializers/link_to_action.rb` for detailed description.
152
+ Look to `config/initializers/link_to_action.rb` for detailed descriptions.
145
153
 
146
154
  ## Per-link options
147
155
 
@@ -180,9 +188,14 @@ link_to_new [ @user, Comment ] # /users/1/comments/new
180
188
 
181
189
  ## TODO
182
190
 
183
- 1. Add templates to change Rails scaffold templates.
184
- 2. Better testing.
185
- 3. Improve README, add more examples.
191
+ 1. Better testing.
192
+ 2. Improve README, add more examples.
193
+ 3. Add templates for Zurb Foundation.
194
+ 4. Whitespace fix in templates.
195
+
196
+ ## Credits
197
+
198
+ This gem was heavily inspired by Platformatec's show_for and simple_form gems. Some code samples were taken from these gems.
186
199
 
187
200
  ## Contributing
188
201
 
@@ -6,9 +6,23 @@ module LinkToAction
6
6
  class InstallGenerator < Rails::Generators::Base
7
7
  desc "Copy LinkToAction configuration file"
8
8
  source_root File.expand_path('../templates', __FILE__)
9
+ class_option :bootstrap, type: :boolean,
10
+ desc: 'Add the Twitter Bootstrap option and templates.'
11
+
12
+ def info_framework
13
+ puts "link_to_action supports Twitter Bootstrap. If you want a " \
14
+ "configuration that is compatible with this framework, then please " \
15
+ "re-run this generator with --bootstrap option." unless options.bootstrap?
16
+ end
9
17
 
10
18
  def copy_initializers
11
19
  copy_file 'link_to_action.rb', 'config/initializers/link_to_action.rb'
20
+ if options[:bootstrap]
21
+ gsub_file 'config/initializers/link_to_action.rb',
22
+ %r|# config.use_icons = false|, 'config.use_icons = true'
23
+ gsub_file 'config/initializers/link_to_action.rb',
24
+ %r|# config.use_classes = false|, 'config.use_classes = true'
25
+ end
12
26
  end
13
27
 
14
28
  def copy_locale_file
@@ -17,11 +31,11 @@ module LinkToAction
17
31
  end
18
32
 
19
33
  def copy_templates
20
- # TODO: one LOC
21
- copy_file 'edit.html.erb', 'lib/templates/erb/scaffold/edit.html.erb'
22
- copy_file 'index.html.erb', 'lib/templates/erb/scaffold/index.html.erb'
23
- copy_file 'new.html.erb', 'lib/templates/erb/scaffold/new.html.erb'
24
- copy_file 'show.html.erb', 'lib/templates/erb/scaffold/show.html.erb'
34
+ ['edit', 'index', 'new', 'show'].each do |action|
35
+ source_dir = 'bootstrap' if options[:bootstrap]
36
+ source_file = [ source_dir, "#{action}.html.erb"].compact.join('/')
37
+ copy_file source_file, "lib/templates/erb/scaffold/#{action}.html.erb"
38
+ end
25
39
  end
26
40
  end
27
41
  end
@@ -0,0 +1,3 @@
1
+ <h1>Editing <%= singular_table_name %></h1>
2
+
3
+ <%%= render 'form' %>
@@ -0,0 +1,28 @@
1
+ <h1>Listing <%= plural_table_name %></h1>
2
+
3
+ <table class="table table-condensed">
4
+ <thead>
5
+ <tr>
6
+ <% attributes.each do |attribute| -%>
7
+ <th><%= attribute.human_name %></th>
8
+ <% end -%>
9
+ <th></th>
10
+ </tr>
11
+ </thead>
12
+
13
+ <tbody>
14
+ <%%= content_tag_for(:tr, @<%= plural_table_name %>) do |<%= singular_table_name %>| %>
15
+ <% attributes.each do |attribute| -%>
16
+ <% if attribute.name == 'name' %>
17
+ <td><%%= link_to_show <%= singular_table_name %> %></td>
18
+ <% else %>
19
+ <td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
20
+ <% end -%>
21
+ <% end -%>
22
+ <td><%%= link_to_edit <%= singular_table_name %>, size: :mini %>
23
+ <%%= link_to_destroy <%= singular_table_name %>, size: :mini %></td>
24
+ <%% end %>
25
+ </tbody>
26
+ </table>
27
+
28
+ <%%= link_to_new <%= class_name %> %>
@@ -0,0 +1,3 @@
1
+ <h1>New <%= singular_table_name %></h1>
2
+
3
+ <%%= render 'form' %>
@@ -0,0 +1,10 @@
1
+ <% attributes.each do |attribute| -%>
2
+ <p>
3
+ <strong><%= attribute.human_name %>:</strong>
4
+ <%%= @<%= singular_table_name %>.<%= attribute.name %> %>
5
+ </p>
6
+
7
+ <% end -%>
8
+
9
+ <%%= link_to_edit @<%= singular_table_name %> %>
10
+ <%%= link_to_back %>
@@ -44,7 +44,7 @@ LinkToAction.setup do |config|
44
44
 
45
45
  # Methods for link_to_show
46
46
  # config.show_methods = [ :name, :to_s ]
47
-
47
+
48
48
  # Destroy link options
49
49
  # config.destroy_confirm = true
50
50
  # config.destroy_skip_pjax = false
@@ -63,11 +63,11 @@ module LinkToAction::Helpers
63
63
  private
64
64
 
65
65
  def link_to_action(action, object, options)
66
- name = options.delete(:name) || LinkToAction::Utils::t_action(object, action)
66
+ name = options.delete(:name) || LinkToAction::Utils.t_action(object, action)
67
67
  params = options.delete(:params) || {}
68
68
  params[:action] = action if [ :new, :edit ].include? action
69
- options[:class] = LinkToAction::Utils::action_class(action, options)
70
- name = LinkToAction::Utils::add_icon_to_name(action, name, options)
69
+ options[:class] = LinkToAction::Utils.action_class(action, options)
70
+ name = LinkToAction::Utils.add_icon_to_name(action, name, options)
71
71
  if link_to_action_cancan?(action, object)
72
72
  link_to name, link_to_action_path(action, object, params), options
73
73
  end
@@ -1,4 +1,6 @@
1
1
  module LinkToAction::Utils
2
+ module_function
3
+
2
4
  def self.action_icon(action, options)
3
5
  icon = options.delete(:icon) || LinkToAction.send("icon_#{action}")
4
6
  icon_size = options.delete(:icon_size) || LinkToAction.icons_size
@@ -1,3 +1,3 @@
1
1
  module LinkToAction
2
- VERSION = "0.2.5"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: link_to_action
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-22 00:00:00.000000000 Z
12
+ date: 2012-12-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -90,6 +90,10 @@ files:
90
90
  - Rakefile
91
91
  - lib/generators/link_to_action/USAGE
92
92
  - lib/generators/link_to_action/install_generator.rb
93
+ - lib/generators/link_to_action/templates/bootstrap/edit.html.erb
94
+ - lib/generators/link_to_action/templates/bootstrap/index.html.erb
95
+ - lib/generators/link_to_action/templates/bootstrap/new.html.erb
96
+ - lib/generators/link_to_action/templates/bootstrap/show.html.erb
93
97
  - lib/generators/link_to_action/templates/edit.html.erb
94
98
  - lib/generators/link_to_action/templates/index.html.erb
95
99
  - lib/generators/link_to_action/templates/link_to_action.rb
@@ -162,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
166
  version: '0'
163
167
  segments:
164
168
  - 0
165
- hash: -2198198113135722753
169
+ hash: -2925219352894663217
166
170
  required_rubygems_version: !ruby/object:Gem::Requirement
167
171
  none: false
168
172
  requirements:
@@ -171,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
175
  version: '0'
172
176
  segments:
173
177
  - 0
174
- hash: -2198198113135722753
178
+ hash: -2925219352894663217
175
179
  requirements: []
176
180
  rubyforge_project:
177
181
  rubygems_version: 1.8.23