crudify 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -2
- data/Gemfile.lock +57 -28
- data/README.md +121 -3
- data/Rakefile +3 -4
- data/crudify.gemspec +5 -2
- data/lib/crudify.rb +5 -1
- data/lib/crudify/base.rb +8 -7
- data/lib/crudify/class_methods.rb +35 -21
- data/lib/crudify/hook_methods.rb +30 -33
- data/lib/crudify/version.rb +1 -1
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/controllers/admin/peanut_butters_controller.rb +5 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/jellies_controller.rb +7 -0
- data/test/dummy/app/models/jelly.rb +9 -0
- data/test/dummy/app/models/peanut_butter.rb +8 -0
- data/test/dummy/app/views/admin/peanut_butters/_fields.html.erb +4 -0
- data/test/dummy/app/views/admin/peanut_butters/edit.html.erb +11 -0
- data/test/dummy/app/views/admin/peanut_butters/index.html.erb +23 -0
- data/test/dummy/app/views/admin/peanut_butters/new.html.erb +11 -0
- data/test/dummy/app/views/admin/peanut_butters/show.html.erb +14 -0
- data/test/dummy/app/views/jellies/_fields.html.erb +8 -0
- data/test/dummy/app/views/jellies/edit.html.erb +11 -0
- data/test/dummy/app/views/jellies/index.html.erb +23 -0
- data/test/dummy/app/views/jellies/new.html.erb +11 -0
- data/test/dummy/app/views/jellies/show.html.erb +15 -0
- data/test/dummy/app/views/layouts/application.html.erb +72 -0
- data/test/dummy/app/views/shared/_error_messages.html.erb +9 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +45 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +22 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +26 -0
- data/test/dummy/config/environments/production.rb +49 -0
- data/test/dummy/config/environments/test.rb +38 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/green_eggs_and_spam.rb +2 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/routes.rb +11 -0
- data/test/dummy/db/migrate/20110223073415_create_jellies.rb +13 -0
- data/test/dummy/db/migrate/20110223073427_create_peanut_butters.rb +12 -0
- data/test/dummy/db/schema.rb +28 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/{log/development.log → test/dummy/public/favicon.ico} +0 -0
- data/test/dummy/public/javascripts/application.js +2 -0
- data/test/dummy/public/javascripts/controls.js +965 -0
- data/test/dummy/public/javascripts/dragdrop.js +974 -0
- data/test/dummy/public/javascripts/effects.js +1123 -0
- data/test/dummy/public/javascripts/index.html +239 -0
- data/test/dummy/public/javascripts/prototype.js +6001 -0
- data/test/dummy/public/javascripts/rails.js +191 -0
- data/test/dummy/public/stylesheets/styles.css +126 -0
- data/test/dummy/script/rails +6 -0
- data/test/functional/jellies_controller_test.rb +55 -0
- data/test/helper.rb +42 -31
- data/test/integration/demo_test.rb +79 -0
- data/test/{test_controller.rb → unit/crudify_test.rb} +17 -17
- metadata +149 -13
data/lib/crudify/hook_methods.rb
CHANGED
@@ -6,68 +6,73 @@ module Crudify
|
|
6
6
|
|
7
7
|
def before_create
|
8
8
|
# just a hook!
|
9
|
-
puts "> Crud::before_create"
|
9
|
+
puts "> Crud::before_create" if @crud_options[:log]
|
10
10
|
before_action
|
11
11
|
end
|
12
12
|
|
13
13
|
def before_update
|
14
14
|
# just a hook!
|
15
|
-
puts "> Crud::before_update"
|
15
|
+
puts "> Crud::before_update" if @crud_options[:log]
|
16
16
|
before_action
|
17
17
|
end
|
18
18
|
|
19
19
|
def before_destroy
|
20
20
|
# just a hook!
|
21
|
-
puts "> Crud::before_destroy"
|
21
|
+
puts "> Crud::before_destroy" if @crud_options[:log]
|
22
|
+
set_what
|
22
23
|
before_action
|
23
24
|
end
|
24
|
-
|
25
|
-
|
25
|
+
|
26
26
|
def before_action
|
27
27
|
# just a hook!
|
28
|
-
puts "> Crud::before_action"
|
29
|
-
|
30
|
-
true
|
28
|
+
puts "> Crud::before_action" if @crud_options[:log]
|
29
|
+
#true
|
31
30
|
end
|
32
31
|
|
33
32
|
|
34
33
|
|
35
34
|
def successful_create
|
36
|
-
puts "> Crud::successful_create"
|
37
|
-
|
38
|
-
flash[:notice] = t('crudify.created', :what =>
|
35
|
+
puts "> Crud::successful_create" if @crud_options[:log]
|
36
|
+
|
37
|
+
flash[:notice] = t('crudify.created', :what => set_what)
|
39
38
|
|
40
39
|
after_success
|
41
40
|
end
|
42
41
|
|
43
42
|
def successful_update
|
44
|
-
puts "> Crud::successful_update"
|
43
|
+
puts "> Crud::successful_update" if @crud_options[:log]
|
45
44
|
|
46
|
-
flash[:notice] = t('crudify.updated', :what =>
|
45
|
+
flash[:notice] = t('crudify.updated', :what => set_what)
|
47
46
|
|
48
47
|
after_success
|
49
48
|
end
|
50
49
|
|
51
50
|
def successful_destroy
|
52
|
-
puts "> Crud::successful_destroy"
|
53
|
-
|
51
|
+
puts "> Crud::successful_destroy" if @crud_options[:log]
|
54
52
|
flash.notice = t('crudify.destroyed', :what => @what)
|
55
53
|
|
56
54
|
after_success
|
57
55
|
end
|
58
56
|
|
59
57
|
def after_success
|
60
|
-
puts "> Crud::after_success"
|
58
|
+
puts "> Crud::after_success" if @crud_options[:log]
|
61
59
|
|
62
60
|
unless request.xhr?
|
63
|
-
if
|
61
|
+
if @redirect_to_url
|
62
|
+
redirect_to @redirect_to_url
|
63
|
+
elsif params[:commit].to_s.match(/continue/)
|
64
64
|
if params[:action] == 'create'
|
65
65
|
redirect_to request.referer.sub('new', "#{@what.to_param}/edit")
|
66
66
|
else
|
67
67
|
redirect_to request.referer
|
68
68
|
end
|
69
69
|
else
|
70
|
-
|
70
|
+
url = eval(@crud_options[:redirect_to_url])
|
71
|
+
if defined?(redirect_back_or_default)
|
72
|
+
redirect_back_or_default url
|
73
|
+
else
|
74
|
+
redirect_to url
|
75
|
+
end
|
71
76
|
end
|
72
77
|
else
|
73
78
|
render :partial => "/shared/message"
|
@@ -79,33 +84,25 @@ module Crudify
|
|
79
84
|
|
80
85
|
|
81
86
|
def failed_create
|
82
|
-
puts "> Crud::failed_create"
|
83
|
-
|
84
|
-
flash[:error] = t('crudify.failed_create', :what => @what)
|
85
|
-
|
87
|
+
puts "> Crud::failed_create" if @crud_options[:log]
|
88
|
+
flash[:error] = t('crudify.failed_create', :what => set_what)
|
86
89
|
after_fail
|
87
90
|
end
|
88
91
|
|
89
92
|
def failed_update
|
90
|
-
puts "> Crud::failed_update"
|
91
|
-
|
92
|
-
flash[:error] = t('crudify.failed_update', :what => @what)
|
93
|
-
|
93
|
+
puts "> Crud::failed_update" if @crud_options[:log]
|
94
|
+
flash[:error] = t('crudify.failed_update', :what => set_what)
|
94
95
|
after_fail
|
95
96
|
end
|
96
97
|
|
97
98
|
def failed_destroy
|
98
|
-
puts "> Crud::failed_destroy"
|
99
|
-
|
99
|
+
puts "> Crud::failed_destroy" if @crud_options[:log]
|
100
100
|
flash[:error] = t('crudify.failed_destroy', :what => @what)
|
101
|
-
|
102
101
|
after_fail
|
103
102
|
end
|
104
|
-
|
105
|
-
|
103
|
+
|
106
104
|
def after_fail
|
107
|
-
puts "> Crud::after_fail"
|
108
|
-
|
105
|
+
puts "> Crud::after_fail" if @crud_options[:log]
|
109
106
|
unless request.xhr?
|
110
107
|
render :action => request.post? ? 'new' : 'edit'
|
111
108
|
else
|
data/lib/crudify/version.rb
CHANGED
data/test/dummy/Rakefile
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
2
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
3
|
+
|
4
|
+
require File.expand_path('../config/application', __FILE__)
|
5
|
+
require 'rake'
|
6
|
+
|
7
|
+
Dummy::Application.load_tasks
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<h3>Edit Peanut Butter</h3>
|
2
|
+
|
3
|
+
<%= render 'shared/error_messages', :target => @peanut_butter %>
|
4
|
+
|
5
|
+
<%= form_for [:admin, @peanut_butter] do |f| %>
|
6
|
+
<%= render 'fields', :form => f %>
|
7
|
+
<p class="action">
|
8
|
+
<%= f.submit 'update' %>
|
9
|
+
or <%= link_to "cancel", admin_peanut_butters_path %>
|
10
|
+
</p>
|
11
|
+
<% end %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<h3>Listing Peanut Butters</h3>
|
2
|
+
<%= link_to "<em>create</em> a new peanut_butter".html_safe, new_admin_peanut_butter_path %>
|
3
|
+
|
4
|
+
<% if @peanut_butters.empty? %>
|
5
|
+
to start your adventure.
|
6
|
+
<% else %>
|
7
|
+
or
|
8
|
+
<ul class="items">
|
9
|
+
<% @peanut_butters.each do |peanut_butter| %>
|
10
|
+
<li>
|
11
|
+
<span>
|
12
|
+
<%= link_to content_tag(:em, "read"), admin_peanut_butter_path(peanut_butter) %>,
|
13
|
+
<%= link_to content_tag(:em, "update"), edit_admin_peanut_butter_path(peanut_butter) %> or
|
14
|
+
<%= link_to content_tag(:em, "delete"), admin_peanut_butter_path(peanut_butter), :method => :delete, :confirm => "Are you sure?" %>
|
15
|
+
</span>
|
16
|
+
<b><%= peanut_butter.viscosity.inspect %></b>
|
17
|
+
</li>
|
18
|
+
<% end %>
|
19
|
+
</ul>
|
20
|
+
<%= will_paginate @peanut_butters %>
|
21
|
+
<br/>
|
22
|
+
<p>So much peanut_butter, <strike>so little time</strike> and time to eat it too.</p>
|
23
|
+
<% end %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<h3>New Peanut Butter</h3>
|
2
|
+
|
3
|
+
<%= render 'shared/error_messages', :target => @peanut_butter %>
|
4
|
+
|
5
|
+
<%= form_for [:admin, @peanut_butter] do |f| %>
|
6
|
+
<%= render 'fields', :form => f %>
|
7
|
+
<p class="action">
|
8
|
+
<%= f.submit 'create' %>
|
9
|
+
or <%= link_to "cancel", admin_peanut_butters_path %>
|
10
|
+
</p>
|
11
|
+
<% end %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<h3>Show Peanut Butter</h3>
|
2
|
+
|
3
|
+
<%= render 'shared/error_messages', :target => @peanut_butter %>
|
4
|
+
|
5
|
+
<h3><%= @peanut_butter.viscosity %></h3>
|
6
|
+
|
7
|
+
<br/>
|
8
|
+
|
9
|
+
<p>
|
10
|
+
<%= link_to content_tag(:em, "update"), edit_admin_peanut_butter_path(@peanut_butter) %> or
|
11
|
+
<%= link_to content_tag(:em, "delete"), admin_peanut_butter_path(@peanut_butter), :method => :delete, :confirm => "Are you sure?" %>
|
12
|
+
this peanut_butter, or
|
13
|
+
<%= link_to "return to peanut_butters", admin_peanut_butters_path %>
|
14
|
+
</p>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<h3>Edit Jelly</h3>
|
2
|
+
|
3
|
+
<%= render 'shared/error_messages', :target => @jelly %>
|
4
|
+
|
5
|
+
<%= form_for @jelly do |f| %>
|
6
|
+
<%= render 'fields', :form => f %>
|
7
|
+
<p class="action">
|
8
|
+
<%= f.submit 'update' %>
|
9
|
+
or <%= link_to "cancel", jellies_path %>
|
10
|
+
</p>
|
11
|
+
<% end %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<h3>Listing Jellies</h3>
|
2
|
+
<%= link_to "<em>create</em> a new jelly".html_safe, new_jelly_path %>
|
3
|
+
|
4
|
+
<% if @jellies.empty? %>
|
5
|
+
to start your adventure.
|
6
|
+
<% else %>
|
7
|
+
or
|
8
|
+
<ul class="items">
|
9
|
+
<% @jellies.each do |jelly| %>
|
10
|
+
<li>
|
11
|
+
<span>
|
12
|
+
<%= link_to content_tag(:em, "read"), jelly_path(jelly) %>,
|
13
|
+
<%= link_to content_tag(:em, "update"), edit_jelly_path(jelly) %> or
|
14
|
+
<%= link_to content_tag(:em, "delete"), jelly_path(jelly), :method => :delete, :confirm => "Are you sure?" %>
|
15
|
+
</span>
|
16
|
+
jelly named <b><%= jelly.name %></b>
|
17
|
+
</li>
|
18
|
+
<% end %>
|
19
|
+
</ul>
|
20
|
+
<%= will_paginate @jellies %>
|
21
|
+
<br/>
|
22
|
+
<p>So much jelly, <strike>so little time</strike> and time to eat it too.</p>
|
23
|
+
<% end %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<h3>New Jelly</h3>
|
2
|
+
|
3
|
+
<%= render 'shared/error_messages', :target => @jelly %>
|
4
|
+
|
5
|
+
<%= form_for @jelly do |f| %>
|
6
|
+
<%= render 'fields', :form => f %>
|
7
|
+
<p class="action">
|
8
|
+
<%= f.submit 'create' %>
|
9
|
+
or <%= link_to "cancel", jellies_path %>
|
10
|
+
</p>
|
11
|
+
<% end %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<h3>Show Jelly</h3>
|
2
|
+
|
3
|
+
<%= render 'shared/error_messages', :target => @jelly %>
|
4
|
+
|
5
|
+
<h3><%= @jelly.title %></h3>
|
6
|
+
<p><%= @jelly.name %></p>
|
7
|
+
|
8
|
+
<br/>
|
9
|
+
|
10
|
+
<p>
|
11
|
+
<%= link_to content_tag(:em, "update"), edit_jelly_path(@jelly) %> or
|
12
|
+
<%= link_to content_tag(:em, "delete"), jelly_path(@jelly), :method => :delete, :confirm => "Are you sure?" %>
|
13
|
+
this jelly, or
|
14
|
+
<%= link_to "return to jellies", jellies_path %>
|
15
|
+
</p>
|
@@ -0,0 +1,72 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Crudify Dummy</title>
|
5
|
+
<%= csrf_meta_tag %>
|
6
|
+
<%= stylesheet_link_tag 'styles' %>
|
7
|
+
<%= javascript_include_tag :defaults %>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
|
11
|
+
<div id="container">
|
12
|
+
|
13
|
+
<div id="header">
|
14
|
+
<h1 class="title">Crudify</h1>
|
15
|
+
<h2>All the CRUD, no hassle.</h2>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<hr/>
|
19
|
+
<h4><em>Disclaimer</em></h4>
|
20
|
+
<p>Crudify was shamlessly robbed from <%= link_to "refinerycms", "https://github.com/resolve/refinerycms/blob/master/core/lib/refinery/crud.rb" %>'s internals and customized for use in other projects. Much credit and many thanks to the guys at <%= link_to "resolve digital", "http://resolvedigital.com/" %> for all their hard work on the <%= link_to "refinery cms project", "http://resolvedigital.com/development/refinery%C2%A0cms" %>. Keep it up!</p>
|
21
|
+
|
22
|
+
<hr/>
|
23
|
+
<h3>Here's the controller running this demo:</h3>
|
24
|
+
|
25
|
+
<% file = File.expand_path("../../../controllers/#{controller.controller_path}_controller.rb", __FILE__) %>
|
26
|
+
<% if File.exists?(file) %>
|
27
|
+
<pre><%= File.read(file) %></pre>
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
<hr/>
|
31
|
+
<h3>Here's the CRUD:</h3>
|
32
|
+
|
33
|
+
<%= content_tag(:p, flash[:notice], :id => 'flash_notice', :class => 'flash') if flash[:notice] %>
|
34
|
+
<%= content_tag(:p, flash[:error], :id => 'flash_error', :class => 'flash') if flash[:error] %>
|
35
|
+
|
36
|
+
<div id="content">
|
37
|
+
<%= yield %>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
|
41
|
+
<h3>Here's some more info:</h3>
|
42
|
+
|
43
|
+
<p>Like the available options:</p>
|
44
|
+
<pre>
|
45
|
+
:title_attribute => "title",
|
46
|
+
:use_class_name_as_title => false,
|
47
|
+
:paginate => true,
|
48
|
+
:sortable => true,
|
49
|
+
:searchable => true,
|
50
|
+
:include => [],
|
51
|
+
:order => ('position ASC' if this_class.table_exists?
|
52
|
+
&& this_class.column_names.include?('position')),
|
53
|
+
:conditions => '',
|
54
|
+
:search_conditions => '',
|
55
|
+
:redirect_to_url => "admin_#{plural_name}_url",
|
56
|
+
:log => Rails.env == 'development'</pre>
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
<hr/>
|
61
|
+
<h3>Get some:</h3>
|
62
|
+
<p class="small"><%= link_to "Github", "https://github.com/citrus/crudify" %> or <%= link_to "Ruby Gems", "http://rubygems.org/gems/crudify" %>; take your pick.</p>
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
<hr/>
|
67
|
+
<em>Now enjoy your jellies with no hassle from crud!</em>
|
68
|
+
|
69
|
+
</div>
|
70
|
+
|
71
|
+
</body>
|
72
|
+
</html>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
2
|
+
|
3
|
+
require "active_model/railtie"
|
4
|
+
require "active_record/railtie"
|
5
|
+
require "action_controller/railtie"
|
6
|
+
require "action_view/railtie"
|
7
|
+
require "action_mailer/railtie"
|
8
|
+
|
9
|
+
Bundler.require
|
10
|
+
require "crudify"
|
11
|
+
|
12
|
+
module Dummy
|
13
|
+
class Application < Rails::Application
|
14
|
+
# Settings in config/environments/* take precedence over those specified here.
|
15
|
+
# Application configuration should go into files in config/initializers
|
16
|
+
# -- all .rb files in that directory are automatically loaded.
|
17
|
+
|
18
|
+
# Custom directories with classes and modules you want to be autoloadable.
|
19
|
+
# config.autoload_paths += %W(#{config.root}/extras)
|
20
|
+
|
21
|
+
# Only load the plugins named here, in the order given (default is alphabetical).
|
22
|
+
# :all can be used as a placeholder for all plugins not explicitly named.
|
23
|
+
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
|
24
|
+
|
25
|
+
# Activate observers that should always be running.
|
26
|
+
# config.active_record.observers = :cacher, :garbage_collector, :forum_observer
|
27
|
+
|
28
|
+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
29
|
+
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
30
|
+
# config.time_zone = 'Central Time (US & Canada)'
|
31
|
+
|
32
|
+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
33
|
+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
34
|
+
# config.i18n.default_locale = :de
|
35
|
+
|
36
|
+
# JavaScript files you want as :defaults (application.js is always included).
|
37
|
+
# config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
|
38
|
+
|
39
|
+
# Configure the default encoding used in templates for Ruby 1.9.
|
40
|
+
config.encoding = "utf-8"
|
41
|
+
|
42
|
+
# Configure sensitive parameters which will be filtered from the log file.
|
43
|
+
config.filter_parameters += [:password]
|
44
|
+
end
|
45
|
+
end
|