jscaffold 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/jscaffold.gemspec +26 -0
- data/lib/generators/jscaffold/USAGE +8 -0
- data/lib/generators/jscaffold/jscaffold_generator.rb +43 -0
- data/lib/generators/jscaffold/templates/controller/model_controller.rb +98 -0
- data/lib/generators/jscaffold/templates/helpers/jscaffold_helper.rb +23 -0
- data/lib/generators/jscaffold/templates/helpers/models_helper.rb +2 -0
- data/lib/generators/jscaffold/templates/jscaffold.css +12 -0
- data/lib/generators/jscaffold/templates/jscaffold.js +20 -0
- data/lib/generators/jscaffold/templates/migration.rb +12 -0
- data/lib/generators/jscaffold/templates/models/model.rb +2 -0
- data/lib/generators/jscaffold/templates/test/fixtures/.gitkeep +0 -0
- data/lib/generators/jscaffold/templates/test/fixtures/models.yml +25 -0
- data/lib/generators/jscaffold/templates/test/functional/.gitkeep +0 -0
- data/lib/generators/jscaffold/templates/test/functional/models_controller_test.rb +49 -0
- data/lib/generators/jscaffold/templates/test/unit/.gitkeep +0 -0
- data/lib/generators/jscaffold/templates/test/unit/helpers/models_helper_test.rb +4 -0
- data/lib/generators/jscaffold/templates/test/unit/model_test.rb +7 -0
- data/lib/generators/jscaffold/templates/views/_form.html.erb +11 -0
- data/lib/generators/jscaffold/templates/views/_item.html.erb +14 -0
- data/lib/generators/jscaffold/templates/views/edit.html.erb +9 -0
- data/lib/generators/jscaffold/templates/views/index.html.erb +43 -0
- data/lib/generators/jscaffold/templates/views/more.html.erb +3 -0
- data/lib/generators/jscaffold/templates/views/new.html.erb +6 -0
- data/lib/generators/jscaffold/templates/views/show.html.erb +17 -0
- data/lib/jscaffold.rb +5 -0
- data/lib/jscaffold/version.rb +3 -0
- metadata +87 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/jscaffold.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "jscaffold/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "jscaffold"
|
7
|
+
s.version = Jscaffold::VERSION
|
8
|
+
s.authors = ["Viko Nava"]
|
9
|
+
s.email = ["viko.nava@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Scaffolding with jQuery Autocomplete and LoadMore button}
|
12
|
+
s.description = %q{A nice way to scaffold that includes autocomplete search field with categories and a Load More button that simulates endless page. Requires: jQuery, jQueryUI}
|
13
|
+
|
14
|
+
s.add_dependency "kaminari"
|
15
|
+
|
16
|
+
s.rubyforge_project = "jscaffold"
|
17
|
+
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
|
23
|
+
# specify any dependencies here; for example:
|
24
|
+
# s.add_development_dependency "rspec"
|
25
|
+
# s.add_runtime_dependency "rest-client"
|
26
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class JscaffoldGenerator < Rails::Generators::Base
|
2
|
+
source_root File.expand_path('../templates', __FILE__)
|
3
|
+
argument :model, :type => :string
|
4
|
+
argument :attributes, :type => :array, :default => [], :banner => "field:type:boolean field:type:boolean"
|
5
|
+
|
6
|
+
def generator
|
7
|
+
copy_file "jscaffold.js", "app/assets/javascripts/jscaffold.js"
|
8
|
+
copy_file "jscaffold.css", "app/assets/stylesheets/jscaffold.css"
|
9
|
+
template "controller/model_controller.rb", "app/controllers/#{plural_model}_controller.rb"
|
10
|
+
template "views/index.html.erb", "app/views/#{plural_model}/index.html.erb"
|
11
|
+
template "views/new.html.erb", "app/views/#{plural_model}/new.html.erb"
|
12
|
+
template "views/show.html.erb", "app/views/#{plural_model}/show.html.erb"
|
13
|
+
template "views/edit.html.erb", "app/views/#{plural_model}/edit.html.erb"
|
14
|
+
template "views/more.html.erb", "app/views/#{plural_model}/more.html.erb"
|
15
|
+
template "views/_form.html.erb", "app/views/#{plural_model}/_form.html.erb"
|
16
|
+
template "views/_item.html.erb", "app/views/#{plural_model}/_#{model_name}.html.erb"
|
17
|
+
template "models/model.rb", "app/models/#{model_name}.rb"
|
18
|
+
template "migration.rb", "db/migrate/#{timestamp}_create_#{plural_model}.rb"
|
19
|
+
template "test/unit/model_test.rb", "test/unit/#{model_name}_test.rb"
|
20
|
+
template "test/fixtures/models.yml", "test/fixtures/#{plural_model}.yml"
|
21
|
+
template "test/functional/models_controller_test.rb", "test/functional/#{plural_model}_controller_test.rb"
|
22
|
+
template "test/unit/helpers/models_helper_test.rb", "test/unit/helpers/#{plural_model}_helper_test.rb"
|
23
|
+
template "helpers/models_helper.rb", "app/helpers/#{plural_model}_helper.rb"
|
24
|
+
copy_file "helpers/jscaffold_helper.rb", "app/helpers/jscaffold_helper.rb"
|
25
|
+
inject_into_file "app/helpers/application_helper.rb", " include JscaffoldHelper\n", :after => "module ApplicationHelper\n"
|
26
|
+
route "resources :#{plural_model}"
|
27
|
+
route "match '/#{plural_model}/page/:page_id' => '#{plural_model}#more'"
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def model_name
|
33
|
+
model.singularize.downcase
|
34
|
+
end
|
35
|
+
|
36
|
+
def timestamp
|
37
|
+
Time.now.utc.strftime("%Y%m%d%k%M%S")
|
38
|
+
end
|
39
|
+
|
40
|
+
def plural_model
|
41
|
+
model_name.pluralize
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
class <%= plural_model.capitalize %>Controller < ApplicationController
|
2
|
+
|
3
|
+
def index<%
|
4
|
+
attributes.each do |attribute|
|
5
|
+
attribute = attribute.split(':')
|
6
|
+
if !attribute[2].nil? && attribute[2] == "true"%>
|
7
|
+
@<%= attribute[0] %>_data = Array.new<%
|
8
|
+
end
|
9
|
+
end
|
10
|
+
%>
|
11
|
+
<%= model_name.capitalize %>.all.each do |<%= model_name %>|<%
|
12
|
+
attributes.each do |attribute|
|
13
|
+
attribute = attribute.split(':')
|
14
|
+
if !attribute[2].nil? && attribute[2] == "true"%>
|
15
|
+
@<%= attribute[0] %>_data.push(<%= model_name %>.<%= attribute[0] %>) if !@<%= attribute[0] %>_data.include?(<%= model_name %>.<%= attribute[0] %>)<%
|
16
|
+
end
|
17
|
+
end
|
18
|
+
%>
|
19
|
+
end
|
20
|
+
|
21
|
+
params[:q] ? @q = params[:q] : @q = ""
|
22
|
+
|
23
|
+
query = "<%
|
24
|
+
attributes.each do |attribute|
|
25
|
+
attribute = attribute.split(':')
|
26
|
+
if !attribute[2].nil? && attribute[2] == "true"
|
27
|
+
%><%= attribute[0] %> LIKE ? OR <%
|
28
|
+
end
|
29
|
+
end
|
30
|
+
%>1 > ?"
|
31
|
+
@<%= plural_model %> = <%= model_name.capitalize %>.where(query, <%
|
32
|
+
attributes.each do |attribute|
|
33
|
+
attribute = attribute.split(':')
|
34
|
+
if !attribute[2].nil? && attribute[2] == "true"
|
35
|
+
%>"%#{params[:q]}%", <%
|
36
|
+
end
|
37
|
+
end
|
38
|
+
%> 2).page().per(10)
|
39
|
+
end
|
40
|
+
|
41
|
+
def more
|
42
|
+
query = "<%
|
43
|
+
attributes.each do |attribute|
|
44
|
+
attribute = attribute.split(':')
|
45
|
+
if !attribute[2].nil? && attribute[2] == "true"
|
46
|
+
%><%= attribute[0] %> LIKE ? OR <%
|
47
|
+
end
|
48
|
+
end
|
49
|
+
%>1 > ?"
|
50
|
+
@<%= plural_model %> = <%= model_name.capitalize %>.where(query, <%
|
51
|
+
attributes.each do |attribute|
|
52
|
+
attribute = attribute.split(':')
|
53
|
+
if !attribute[2].nil? && attribute[2] == "true"
|
54
|
+
%>"%#{params[:q]}%", <%
|
55
|
+
end
|
56
|
+
end
|
57
|
+
%> 2).page(params[:page_id]).per(10)
|
58
|
+
|
59
|
+
render :layout => false
|
60
|
+
end
|
61
|
+
|
62
|
+
def show
|
63
|
+
@<%= model_name %> = <%= model_name.capitalize %>.find(params[:id])
|
64
|
+
end
|
65
|
+
|
66
|
+
def new
|
67
|
+
@<%= model_name %> = <%= model_name.capitalize %>.new
|
68
|
+
end
|
69
|
+
|
70
|
+
def create
|
71
|
+
@<%= model_name %> = <%= model_name.capitalize %>.new(params[:<%= model_name %>])
|
72
|
+
|
73
|
+
if @<%= model_name %>.save
|
74
|
+
redirect_to <%= model_name %>_path(@<%= model_name %>), :notice => "Successfully created <%= model_name %>."
|
75
|
+
else
|
76
|
+
render :action => 'new'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def edit
|
81
|
+
@<%= model_name %> = <%= model_name.capitalize %>.find(params[:id])
|
82
|
+
end
|
83
|
+
|
84
|
+
def update
|
85
|
+
@<%= model_name %> = <%= model_name.capitalize %>.find(params[:id])
|
86
|
+
if @<%= model_name %>.update_attributes(params[:<%= model_name %>])
|
87
|
+
redirect_to <%= model_name %>_path(@<%= model_name %>), :notice => "Successfully updated <%= model_name %>."
|
88
|
+
else
|
89
|
+
render :action => 'edit'
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def destroy
|
94
|
+
@<%= model_name %> = <%= model_name.capitalize %>.find(params[:id])
|
95
|
+
@<%= model_name %>.destroy
|
96
|
+
redirect_to <%= plural_model %>_path, :notice => "Successfully destroyed <%= model_name %>."
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module JscaffoldHelper
|
2
|
+
def hide_more_button(model)
|
3
|
+
"<script>document.getElementById('#{model.table_name}_next_link').innerHTML = '';</script>".html_safe if model.last_page?
|
4
|
+
end
|
5
|
+
|
6
|
+
def search_data(data,category)
|
7
|
+
data.map{ |x| "{ label: '"+x+"', category: '"+category.capitalize+"' }," if x != category }.to_s.html_safe
|
8
|
+
end
|
9
|
+
|
10
|
+
def jqscript(model,data_a,searchf)
|
11
|
+
("<script>$(function() { var data = [ "+data_a.map{ |x| x.reverse.take(1).map { |y| search_data(x,y) } }.to_s+"]; $(\"#"+model.table_name+"_search_field\").catcomplete({ delay: 0, source: data }); }); $(document).ready(function() { var currPage = 1; $(\"button."+model.table_name+"_next\").click(function() { loadMore(++currPage,'"+model.table_name+"','"+ searchf + "'); }); });</script>").html_safe
|
12
|
+
end
|
13
|
+
|
14
|
+
def search_field(model,search)
|
15
|
+
("<form accept-charset=\"UTF-8\" action=\"/"+model.table_name+"/\" autocomplete=\"off\" method=\"get\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"✓\" /></div><input id=\""+model.table_name+"_search_field\" name=\"q\" type=\"text\" value=\""+search+"\" /><input type=\"submit\" value=\"Search\" /></form>").html_safe
|
16
|
+
end
|
17
|
+
|
18
|
+
def jq_load_more_btn(model)
|
19
|
+
if !model.last_page?
|
20
|
+
("<div id=\""+model.table_name+"_next_link\"><br/><center><button class=\""+model.table_name+"_next\" type=\"submit\" style=\"width:300px;\" name=\"button\">Load more</button></center></div>").html_safe
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
$.widget( "custom.catcomplete", $.ui.autocomplete, {
|
2
|
+
_renderMenu: function( ul, items ) {
|
3
|
+
var self = this,
|
4
|
+
currentCategory = "";
|
5
|
+
$.each( items, function( index, item ) {
|
6
|
+
if ( item.category != currentCategory ) {
|
7
|
+
ul.append( "<li class='ui-autocomplete-category'><b>" + item.category + "</b></li>" );
|
8
|
+
currentCategory = item.category;
|
9
|
+
}
|
10
|
+
self._renderItem( ul, item );
|
11
|
+
});
|
12
|
+
}
|
13
|
+
});
|
14
|
+
|
15
|
+
function loadMore(pageNo,model,searchf) {
|
16
|
+
$.get('page/' + pageNo + searchf, function(response) {
|
17
|
+
$('#'+model+"_data").append(response);
|
18
|
+
});
|
19
|
+
}
|
20
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Create<%= plural_model.capitalize %> < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :<%= plural_model %> do |t|<%
|
4
|
+
attributes.each do |attribute|
|
5
|
+
attribute = attribute.split(':') %>
|
6
|
+
t.<%= attribute[1] %> :<%= attribute[0] %><%
|
7
|
+
end
|
8
|
+
%>
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
File without changes
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Read about fixtures at http://api.rubyonrails.org/classes/Fixtures.html
|
2
|
+
|
3
|
+
one:<%
|
4
|
+
attributes.each do |attribute|
|
5
|
+
attribute = attribute.split(':')
|
6
|
+
attribute[1] = "MyString" if attribute[1].downcase == "tring"
|
7
|
+
attribute[1] = "My Text" if attribute[1].downcase == "text"
|
8
|
+
attribute[1] = "1" if attribute[1].downcase == "integer"
|
9
|
+
attribute[1] = "1.0" if attribute[1].downcase == "float"
|
10
|
+
attribute[1] = "true" if attribute[1].downcase == "boolean"%>
|
11
|
+
<%= attribute[0] %>: <%= attribute[1] %><%
|
12
|
+
end
|
13
|
+
%>
|
14
|
+
|
15
|
+
two:<%
|
16
|
+
attributes.each do |attribute|
|
17
|
+
attribute = attribute.split(':')
|
18
|
+
attribute[1] = "MyString" if attribute[1].downcase == "tring"
|
19
|
+
attribute[1] = "My Text" if attribute[1].downcase == "text"
|
20
|
+
attribute[1] = "1" if attribute[1].downcase == "integer"
|
21
|
+
attribute[1] = "1.0" if attribute[1].downcase == "float"
|
22
|
+
attribute[1] = "true" if attribute[1].downcase == "boolean"%>
|
23
|
+
<%= attribute[0] %>: <%= attribute[1] %><%
|
24
|
+
end
|
25
|
+
%>
|
File without changes
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class <%= plural_model.capitalize %>ControllerTest < ActionController::TestCase
|
4
|
+
setup do
|
5
|
+
@<%= model_name %> =<%= plural_model %>(:one)
|
6
|
+
end
|
7
|
+
|
8
|
+
test "should get index" do
|
9
|
+
get :index
|
10
|
+
assert_response :success
|
11
|
+
assert_not_nil assigns(:<%= plural_model %>)
|
12
|
+
end
|
13
|
+
|
14
|
+
test "should get new" do
|
15
|
+
get :new
|
16
|
+
assert_response :success
|
17
|
+
end
|
18
|
+
|
19
|
+
test "should create <%= model_name %>" do
|
20
|
+
assert_difference('<%= model_name.capitalize %>.count') do
|
21
|
+
post :create, :<%= model_name %> => @<%= model_name %>.attributes
|
22
|
+
end
|
23
|
+
|
24
|
+
assert_redirected_to <%= model_name %>_path(assigns(:<%= model_name %>))
|
25
|
+
end
|
26
|
+
|
27
|
+
test "should show <%= model_name %>" do
|
28
|
+
get :show, :id => @<%= model_name %>.to_param
|
29
|
+
assert_response :success
|
30
|
+
end
|
31
|
+
|
32
|
+
test "should get edit" do
|
33
|
+
get :edit, :id => @<%= model_name %>.to_param
|
34
|
+
assert_response :success
|
35
|
+
end
|
36
|
+
|
37
|
+
test "should update <%= model_name %>" do
|
38
|
+
put :update, :id => @<%= model_name %>.to_param, :<%= model_name %> => @<%= model_name %>.attributes
|
39
|
+
assert_redirected_to <%= model_name %>_path(assigns(:<%= model_name %>))
|
40
|
+
end
|
41
|
+
|
42
|
+
test "should destroy <%= model_name %>" do
|
43
|
+
assert_difference('<%= model_name.capitalize %>.count', -1) do
|
44
|
+
delete :destroy, :id => @<%= model_name %>.to_param
|
45
|
+
end
|
46
|
+
|
47
|
+
assert_redirected_to <%= plural_model %>_path
|
48
|
+
end
|
49
|
+
end
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%%= form_for @<%= model_name %>, :html => {:multipart => true} do |f| %><%
|
2
|
+
attributes.each do |attribute|
|
3
|
+
attribute = attribute.split(':')%>
|
4
|
+
<p>
|
5
|
+
<%%= f.label :<%= attribute[0] %> %><br />
|
6
|
+
<%%= f.text_field :<%= attribute[0] %> %>
|
7
|
+
</p><%
|
8
|
+
end
|
9
|
+
%>
|
10
|
+
<p><%%= f.submit %></p>
|
11
|
+
<%% end %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<tr><%
|
2
|
+
attributes.each do |attribute|
|
3
|
+
attribute = attribute.split(':')
|
4
|
+
if !attribute[2].nil? && attribute[2] == "true" %>
|
5
|
+
<td><%%= <%= model_name %>.<%= attribute[0] %> %></td><%
|
6
|
+
end
|
7
|
+
end
|
8
|
+
%>
|
9
|
+
<td>
|
10
|
+
<%%= link_to "Show", <%= model_name %> %>
|
11
|
+
<%%= link_to "Edit", edit_<%= model_name %>_path(<%= model_name %>) %>
|
12
|
+
<%%= link_to "Destroy", <%= model_name %>, :confirm => 'Are you sure?', :method => :delete %>
|
13
|
+
</td>
|
14
|
+
</tr>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<%%= jqscript(@<%= plural_model %>,[<%
|
2
|
+
attributes.each do |attribute|
|
3
|
+
attribute = attribute.split(':')
|
4
|
+
if !attribute[2].nil? && attribute[2] == "true" %>@<%= attribute[0] %>_data.map{|x| x.to_s}.push('<%= attribute[0].pluralize %>'), <%
|
5
|
+
end
|
6
|
+
end
|
7
|
+
%>], "?utf8=✓&q="+@q) %>
|
8
|
+
|
9
|
+
<center>
|
10
|
+
<h1><%= plural_model.capitalize %></h1>
|
11
|
+
<%%= search_field(@<%= plural_model %>, @q) %>
|
12
|
+
</center><br/>
|
13
|
+
|
14
|
+
<table cellspacing="0" cellpadding="0">
|
15
|
+
<thead>
|
16
|
+
<tr>
|
17
|
+
<td colspan="100">
|
18
|
+
<%%= link_to "New <%= model_name.capitalize %>", new_<%= model_name %>_path %>
|
19
|
+
</td>
|
20
|
+
</tr>
|
21
|
+
<tr><%
|
22
|
+
attributes.each do |attribute|
|
23
|
+
attribute = attribute.split(':')
|
24
|
+
if !attribute[2].nil? && attribute[2] == "true" %>
|
25
|
+
<th><%= attribute[0].capitalize %></th><%
|
26
|
+
end
|
27
|
+
end
|
28
|
+
%>
|
29
|
+
<th></th>
|
30
|
+
</tr>
|
31
|
+
</thead>
|
32
|
+
<tbody id="<%= plural_model %>_data">
|
33
|
+
<%% if @<%= plural_model%>.empty? %>
|
34
|
+
<tr>
|
35
|
+
<td colspan="100" align="center"><i>There are no records</i></td>
|
36
|
+
</tr>
|
37
|
+
<%% else %>
|
38
|
+
<%%= render @<%= plural_model %> %>
|
39
|
+
<%% end %>
|
40
|
+
</tbody>
|
41
|
+
</table>
|
42
|
+
|
43
|
+
<%%= jq_load_more_btn(@<%= plural_model %>) %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<center>
|
2
|
+
<h1><%= model_name.capitalize %></h1>
|
3
|
+
<p>
|
4
|
+
<%%= link_to "Edit", edit_<%= model_name %>_path(@<%= model_name %>) %> |
|
5
|
+
<%%= link_to "View All", <%= plural_model %>_path %>
|
6
|
+
</p>
|
7
|
+
</center>
|
8
|
+
|
9
|
+
<%
|
10
|
+
attributes.each do |attribute|
|
11
|
+
attribute = attribute.split(':')%>
|
12
|
+
<p>
|
13
|
+
<strong><%= attribute[0] %>:</strong>
|
14
|
+
<%%= @<%= model_name %>.<%= attribute[0] %> %>
|
15
|
+
</p><%
|
16
|
+
end
|
17
|
+
%>
|
data/lib/jscaffold.rb
ADDED
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jscaffold
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Viko Nava
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-10-20 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: kaminari
|
16
|
+
requirement: &69835690 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *69835690
|
25
|
+
description: ! 'A nice way to scaffold that includes autocomplete search field with
|
26
|
+
categories and a Load More button that simulates endless page. Requires: jQuery,
|
27
|
+
jQueryUI'
|
28
|
+
email:
|
29
|
+
- viko.nava@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- .gitignore
|
35
|
+
- Gemfile
|
36
|
+
- Rakefile
|
37
|
+
- jscaffold.gemspec
|
38
|
+
- lib/generators/jscaffold/USAGE
|
39
|
+
- lib/generators/jscaffold/jscaffold_generator.rb
|
40
|
+
- lib/generators/jscaffold/templates/controller/model_controller.rb
|
41
|
+
- lib/generators/jscaffold/templates/helpers/jscaffold_helper.rb
|
42
|
+
- lib/generators/jscaffold/templates/helpers/models_helper.rb
|
43
|
+
- lib/generators/jscaffold/templates/jscaffold.css
|
44
|
+
- lib/generators/jscaffold/templates/jscaffold.js
|
45
|
+
- lib/generators/jscaffold/templates/migration.rb
|
46
|
+
- lib/generators/jscaffold/templates/models/model.rb
|
47
|
+
- lib/generators/jscaffold/templates/test/fixtures/.gitkeep
|
48
|
+
- lib/generators/jscaffold/templates/test/fixtures/models.yml
|
49
|
+
- lib/generators/jscaffold/templates/test/functional/.gitkeep
|
50
|
+
- lib/generators/jscaffold/templates/test/functional/models_controller_test.rb
|
51
|
+
- lib/generators/jscaffold/templates/test/unit/.gitkeep
|
52
|
+
- lib/generators/jscaffold/templates/test/unit/helpers/models_helper_test.rb
|
53
|
+
- lib/generators/jscaffold/templates/test/unit/model_test.rb
|
54
|
+
- lib/generators/jscaffold/templates/views/_form.html.erb
|
55
|
+
- lib/generators/jscaffold/templates/views/_item.html.erb
|
56
|
+
- lib/generators/jscaffold/templates/views/edit.html.erb
|
57
|
+
- lib/generators/jscaffold/templates/views/index.html.erb
|
58
|
+
- lib/generators/jscaffold/templates/views/more.html.erb
|
59
|
+
- lib/generators/jscaffold/templates/views/new.html.erb
|
60
|
+
- lib/generators/jscaffold/templates/views/show.html.erb
|
61
|
+
- lib/jscaffold.rb
|
62
|
+
- lib/jscaffold/version.rb
|
63
|
+
homepage: ''
|
64
|
+
licenses: []
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
require_paths:
|
68
|
+
- lib
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
requirements: []
|
82
|
+
rubyforge_project: jscaffold
|
83
|
+
rubygems_version: 1.8.10
|
84
|
+
signing_key:
|
85
|
+
specification_version: 3
|
86
|
+
summary: Scaffolding with jQuery Autocomplete and LoadMore button
|
87
|
+
test_files: []
|