selections 0.1.12 → 0.1.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,6 @@
1
+ ## 0.1.13
2
+
3
+ * https://github.com/nigelr/selections/issues/4 - selections-4 create selection Management scaffold generator
1
4
  ## 0.1.12
2
5
 
3
6
  * https://github.com/nigelr/selections/issues/6 - #label_to_id feature to allow quick ID lookups within factories (speed enhancement)
data/README.md CHANGED
@@ -30,6 +30,15 @@ Or install it yourself as:
30
30
 
31
31
  ## Usage
32
32
 
33
+ ### Generator
34
+
35
+ Scaffold generates basic model, controller views that support the tree adding and editing of selections. Also generates a sample selections.yml file.
36
+ ```
37
+ rails generate selections_scaffold
38
+ ```
39
+
40
+
41
+ ### Manual
33
42
  First, you need to configure your selection model. We typically use `Selection` for this (although you
34
43
  can change the name), and should be generated such as:
35
44
 
@@ -207,27 +216,27 @@ Selections.model { YourSelectionModel }
207
216
 
208
217
  When using fixtures with the label same as the system_code, use this method to return the ID of the of the fixture and use this in Factories instead of using a lookup as it does not need a DB search.
209
218
 
210
- eg:
211
- Fixture File
212
- ----------------------------------------
213
- priority_high:
219
+ Fixture File
220
+ ```yaml
221
+ priority_high:
214
222
  name: Priorities
215
223
  system_code: priority_high
216
224
  parent: priority
217
- ----------------------------------------
218
-
219
- #### in Factory
220
- ---------------------------------------
221
- priority: { Selection.priority_high } <== Don't do this as it will need a DB lookup
222
-
223
- priority_id: { Selection.label_to_id(:priority_high) } <== This will be much quicker
224
-
225
+ ```
226
+ ### In Factory
227
+ Don't do this as it will need a DB lookup
228
+ ```ruby
229
+ priority: { Selection.priority_high }
230
+ ```
231
+ Do this as it will be much quicker
232
+ ```ruby
233
+ priority_id: { Selection.label_to_id(:priority_high) }
234
+ ```
225
235
 
226
236
 
227
237
  # TODO
228
238
 
229
- * Add model generators
230
- * Add selections management scaffold/generator
239
+ * Suggestions please
231
240
 
232
241
  ## Contributing
233
242
 
@@ -0,0 +1,35 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+ require 'rails/generators/active_record'
4
+
5
+ class SelectionsScaffoldGenerator < Rails::Generators::Base
6
+ include Rails::Generators::Migration
7
+
8
+ source_root File.expand_path('../templates', __FILE__)
9
+
10
+ def self.next_migration_number(path)
11
+ ActiveRecord::Generators::Base.next_migration_number(path)
12
+ end
13
+
14
+ def generate_selections_scaffold
15
+ {
16
+ 'selection_spec.rb' => 'spec/models/',
17
+ 'selection.rb' => 'app/models/',
18
+ 'selections_controller_spec.rb' => 'spec/controllers/',
19
+ 'selections_controller.rb' => 'app/controllers/',
20
+ 'selections_helper.rb' => 'app/helpers/',
21
+ 'selections.yml' => 'spec/fixtures/',
22
+ '_form.html.haml' => 'app/views/selections/',
23
+ 'edit.html.haml' => 'app/views/selections/',
24
+ 'index.html.haml' => 'app/views/selections/',
25
+ 'new.html.haml' => 'app/views/selections/'
26
+ }.each_pair do |file, dir|
27
+ copy_file file, dir + file
28
+ end
29
+
30
+ migration_template 'create_selections.rb', 'db/migrate/create_selections.rb'
31
+
32
+ route 'resources(:selections, :only => :index) { resources :selections, except: :show }'
33
+
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ = form_for ([@parent, @selection]), html: {class: 'form-horizontal'} do |f|
2
+ - if @selection.errors.any?
3
+ #error_explanation
4
+ %h2= "#{pluralize(@selection.errors.count, "error")} prohibited this selection from being saved:"
5
+ %ul
6
+ - @selection.errors.full_messages.each do |msg|
7
+ %li= msg
8
+
9
+ .control-group
10
+ = f.label :name
11
+ .controls
12
+ = f.text_field :name
13
+ .control-group
14
+ = f.label :parent
15
+ .controls
16
+ = link_to @selection.parent, selection_selections_path(@selection.parent)
17
+ .control-group
18
+ = f.label :system_code
19
+ .controls
20
+ = f.text_field :system_code, :readonly => !@selection.new_record?
21
+ .control-group
22
+ = f.label :position_value
23
+ .controls
24
+ = f.text_field :position_value
25
+ .control-group
26
+ = f.label :is_default
27
+ .controls
28
+ = f.check_box :is_default
29
+ .control-group
30
+ = f.label :archived
31
+ .controls
32
+ = f.check_box :archived
33
+
34
+ .form-actions
35
+ = f.submit 'Save Changes', :class => 'btn-primary'
36
+ = link_to 'Cancel', selection_selections_path(@parent), :class => 'btn'
@@ -0,0 +1,15 @@
1
+ class CreateSelections < ActiveRecord::Migration
2
+ def change
3
+ create_table :selections do |t|
4
+ t.string :name
5
+ t.integer :parent_id
6
+ t.string :system_code
7
+ t.integer :position_value
8
+ t.boolean :is_default
9
+ t.boolean :is_system
10
+ t.datetime :archived_at
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ <div class="edit-details">
2
+ <h3>Editing Selection</h3>
3
+
4
+ <%= render 'form' %>
5
+
6
+ </div>
@@ -0,0 +1,3 @@
1
+ .edit-details
2
+ %h3 Editing Selection
3
+ = render 'form'
@@ -0,0 +1,35 @@
1
+ <% if @parent %>
2
+ <h3>
3
+ <%= "Children of #{@parent.name}" %>
4
+ </h3>
5
+ <%= link_to 'New Selection', new_selection_selection_path(@parent), :class => 'btn create' unless @parent.is_system %>
6
+ <% else %>
7
+ <h3>
8
+ Selections
9
+ </h3>
10
+ <% end %>
11
+ <table class="data table-striped" width="100%">
12
+ <tr>
13
+ <th>Name</th>
14
+ <th>Position value</th>
15
+ <th>Is default</th>
16
+ <th>Archived at</th>
17
+ <th>System code</th>
18
+ </tr>
19
+ <% if @selections.size == 0 %>
20
+ <tr class="no-records">
21
+ <td colspan="6"><p>No records to display.</p></td>
22
+ </tr>
23
+ <% end %>
24
+ <% @selections.each do |selection| %>
25
+ <tr>
26
+ <td><%= selector selection %></td>
27
+ <td><%= selection.position_value %></td>
28
+ <td><%= selection.is_default %></td>
29
+ <td><%= selection.archived_at %></td>
30
+ <td><%= selection.system_code %></td>
31
+ </tr>
32
+ <% end %>
33
+ </table>
34
+
35
+
@@ -0,0 +1,26 @@
1
+ - if @parent
2
+ %h3
3
+ = "Children of #{@parent.name}"
4
+ = link_to ' (Back)', selections_path
5
+ = link_to 'New Selection', new_selection_selection_path(@parent), :class => 'btn create' unless @parent.is_system
6
+ - else
7
+ %h3
8
+ Selections
9
+ %table.data.table-striped{:width => "100%"}
10
+ %tr
11
+ %th Name
12
+ %th Position value
13
+ %th Is default
14
+ %th Archived at
15
+ %th System code
16
+ - if @selections.size == 0
17
+ %tr.no-records
18
+ %td{:colspan => "6"}
19
+ %p No records to display.
20
+ - @selections.each do |selection|
21
+ %tr
22
+ %td= selector selection
23
+ %td= selection.position_value
24
+ %td= selection.is_default
25
+ %td= selection.archived_at
26
+ %td= selection.system_code
@@ -0,0 +1,6 @@
1
+ <div class="new-details">
2
+ <h3>New Selection</h3>
3
+
4
+ <%= render 'form' %>
5
+
6
+ </div>
@@ -0,0 +1,3 @@
1
+ .new-details
2
+ %h3 New Selection
3
+ = render 'form'
@@ -0,0 +1,5 @@
1
+ class Selection < ActiveRecord::Base
2
+ attr_accessible :archived, :is_default, :is_system, :name, :parent_id, :position_value, :system_code
3
+
4
+ selectable
5
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Selection do
4
+ end
@@ -0,0 +1,17 @@
1
+ example:
2
+ name: Example
3
+ is_system: false
4
+ system_code: $LABEL
5
+ example_one:
6
+ name: One
7
+ parent: example
8
+ position_value:
9
+ is_default: true
10
+ system_code: $LABEL
11
+ example_two:
12
+ name: Two
13
+ parent: example
14
+ position_value:
15
+ is_default: false
16
+ system_code: $LABEL
17
+
@@ -0,0 +1,51 @@
1
+ class SelectionsController < ApplicationController
2
+ before_filter :parent_finder
3
+
4
+ def index
5
+ if @parent
6
+ @selections = @parent.children
7
+ else
8
+ @selections = Selection.roots
9
+ end
10
+ end
11
+
12
+ def new
13
+ @selection = @parent.children.new
14
+ end
15
+
16
+ def edit
17
+ @selection = @parent.children.find(params[:id])
18
+ end
19
+
20
+ def create
21
+ @selection = @parent.children.new(params[:selection])
22
+
23
+ if @selection.save
24
+ redirect_to selection_selections_path(@parent), notice: 'Selection was successfully created.'
25
+ else
26
+ render action: 'new'
27
+ end
28
+ end
29
+
30
+ def update
31
+ @selection = Selection.find(params[:id])
32
+
33
+ if @selection.update_attributes(params[:selection])
34
+ redirect_to selection_selections_path(@parent), notice: 'Selection was successfully updated.'
35
+ else
36
+ render action: 'edit'
37
+ end
38
+ end
39
+
40
+ def destroy
41
+ @selection = Selection.find(params[:id])
42
+ @selection.destroy
43
+
44
+ redirect_to selections_url
45
+ end
46
+
47
+ private
48
+ def parent_finder
49
+ @parent = Selection.find_by_id(params[:selection_id])
50
+ end
51
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe SelectionsController do
4
+ end
@@ -0,0 +1,9 @@
1
+ module SelectionsHelper
2
+ def selector selection
3
+ if selection.leaf?
4
+ link_to_unless selection.parent.try(:is_system), selection.name, edit_selection_selection_path(@parent, selection)
5
+ else
6
+ link_to selection.name, selection_selections_path(selection)
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module Selections
2
- VERSION = '0.1.12'
2
+ VERSION = '0.1.13'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selections
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.13
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: 2013-04-28 00:00:00.000000000 Z
12
+ date: 2013-05-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -140,6 +140,22 @@ files:
140
140
  - LICENSE.txt
141
141
  - README.md
142
142
  - Rakefile
143
+ - lib/generators/selections_scaffold/selections_scaffold_generator.rb
144
+ - lib/generators/selections_scaffold/templates/.DS_Store
145
+ - lib/generators/selections_scaffold/templates/_form.html.haml
146
+ - lib/generators/selections_scaffold/templates/create_selections.rb
147
+ - lib/generators/selections_scaffold/templates/edit.html.erb
148
+ - lib/generators/selections_scaffold/templates/edit.html.haml
149
+ - lib/generators/selections_scaffold/templates/index.html.erb
150
+ - lib/generators/selections_scaffold/templates/index.html.haml
151
+ - lib/generators/selections_scaffold/templates/new.html.erb
152
+ - lib/generators/selections_scaffold/templates/new.html.haml
153
+ - lib/generators/selections_scaffold/templates/selection.rb
154
+ - lib/generators/selections_scaffold/templates/selection_spec.rb
155
+ - lib/generators/selections_scaffold/templates/selections.yml
156
+ - lib/generators/selections_scaffold/templates/selections_controller.rb
157
+ - lib/generators/selections_scaffold/templates/selections_controller_spec.rb
158
+ - lib/generators/selections_scaffold/templates/selections_helper.rb
143
159
  - lib/selections.rb
144
160
  - lib/selections/belongs_to_selection.rb
145
161
  - lib/selections/form_builder_extensions.rb