pbw 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/controllers/pbw/base_models_controller.rb +14 -3
- data/lib/generators/pbw/area/area_generator.rb +4 -2
- data/lib/generators/pbw/area/templates/index.erb +6 -0
- data/lib/generators/pbw/area/templates/model.coffee +14 -0
- data/lib/generators/pbw/area/templates/router.coffee +31 -0
- data/lib/generators/pbw/area/templates/templates/edit.jst +21 -0
- data/lib/generators/pbw/area/templates/templates/index.jst +17 -0
- data/lib/generators/pbw/area/templates/templates/model.jst +8 -0
- data/lib/generators/pbw/area/templates/templates/new.jst +21 -0
- data/lib/generators/pbw/area/templates/templates/show.jst +14 -0
- data/lib/generators/pbw/area/templates/views/edit_view.coffee +24 -0
- data/lib/generators/pbw/area/templates/views/index_view.coffee +20 -0
- data/lib/generators/pbw/area/templates/views/model_view.coffee +19 -0
- data/lib/generators/pbw/area/templates/views/new_view.coffee +37 -0
- data/lib/generators/pbw/area/templates/views/show_view.coffee +8 -0
- data/lib/generators/pbw/install/templates/app.coffee +2 -0
- data/lib/generators/pbw/{resource → item}/USAGE +1 -1
- data/lib/generators/pbw/{resource/resource_generator.rb → item/item_generator.rb} +1 -1
- data/lib/generators/pbw/model_generator.rb +15 -0
- data/lib/generators/pbw/scaffold_generator.rb +33 -0
- data/lib/pbw/version.rb +1 -1
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NzBkNmRjYTAxMDI4Y2M1Nzg2YTQyZjFjOTk3OTNjYjY1ZWE4NzNjOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MWFiMDlhMzlmMTkwNjM3Y2VjYmI5MGQ1Yzc4MmVkOTU1MzllMjIyYQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmJiN2U3MjA2ZWJkY2NhN2ZmMjNhODIwNmQ0YzU3MTYyNDk4MjJiMmVlOWRl
|
10
|
+
ZTc3NzJhNmI3NjdhMjcxODkwOGYzMzU3ZmM3NDA5NjEzZDNlODc5MTZlZWQx
|
11
|
+
Y2ViODk4NmM5ZGU4NzVkNmZmNTMyOWI4OTY5NTZmNjVjNWYzNWM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmM5Y2I3YzNlYjkxYzRmYTFiMGUxMDg5NjY4NjkzN2U4MGQzMDQyZWNkZGVk
|
14
|
+
N2IxOWM2ZDRiYmUzNGE0MGE4OTIzY2M4ZGZjODYyNmM4YjJmZjlhNmZhMjUw
|
15
|
+
MGEzN2NkNzVjOWYyNTkzMzhjMGRlNmE0OTViZmIwZWI3NDE3OWQ=
|
@@ -31,15 +31,15 @@ module Pbw
|
|
31
31
|
|
32
32
|
def new
|
33
33
|
authorize! :manage, Admin
|
34
|
-
@model =
|
34
|
+
@model = real_model_class.new
|
35
35
|
respond_with(@model) do |format|
|
36
36
|
format.json { render json: @model }
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
def create
|
41
|
-
authorize! :manage,
|
42
|
-
@model =
|
41
|
+
authorize! :manage, real_model_class
|
42
|
+
@model = real_model_class.new(params[model_param])
|
43
43
|
@model.image = @image if @image
|
44
44
|
if @model.save
|
45
45
|
respond_with(@model) do |format|
|
@@ -80,6 +80,17 @@ module Pbw
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
+
def real_model_class
|
84
|
+
begin
|
85
|
+
unless params[:_type].blank?
|
86
|
+
klass = Kernel.get_const(params[:_type])
|
87
|
+
return klass if klass.ancestors.include?(self.model_class)
|
88
|
+
end
|
89
|
+
rescue
|
90
|
+
end
|
91
|
+
self.model_class
|
92
|
+
end
|
93
|
+
|
83
94
|
def model_param
|
84
95
|
model_class.name.underscore.downcase.to_sym
|
85
96
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'generators/pbw/scaffold_generator'
|
2
|
+
|
3
|
+
class Pbw::AreaGenerator < Pbw::Generators::ScaffoldGenerator
|
4
|
+
source_root File.expand_path("../templates", __FILE__)
|
3
5
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class <%= model_namespace %> extends Backbone.Model
|
2
|
+
paramRoot: '<%= singular_table_name %>'
|
3
|
+
urlRoot: '/pbw/areas?_type=<%= class_name%>'
|
4
|
+
|
5
|
+
defaults:
|
6
|
+
name: null
|
7
|
+
_type: '<%= class_name%>'
|
8
|
+
<% attributes.each do |attribute| -%>
|
9
|
+
<%= attribute.name %>: null
|
10
|
+
<% end -%>
|
11
|
+
|
12
|
+
class <%= collection_namespace %>Collection extends Backbone.Collection
|
13
|
+
model: <%= model_namespace %>
|
14
|
+
url: '/pbw/areas'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class <%= router_namespace %>Router extends Backbone.Router
|
2
|
+
initialize: (options) ->
|
3
|
+
@<%= plural_model_name %> = new <%= collection_namespace %>Collection()
|
4
|
+
@<%= plural_model_name %>.reset options.<%= plural_model_name %>
|
5
|
+
|
6
|
+
routes:
|
7
|
+
"" : "index"
|
8
|
+
"new" : "new<%= class_name %>"
|
9
|
+
":id/edit" : "edit"
|
10
|
+
":id" : "show"
|
11
|
+
".*" : "index"
|
12
|
+
|
13
|
+
new<%= class_name %>: ->
|
14
|
+
@view = new <%= "#{view_namespace}.NewView(collection: @#{plural_name})" %>
|
15
|
+
$("#<%= plural_name %>").html(@view.render().el)
|
16
|
+
|
17
|
+
index: ->
|
18
|
+
@view = new <%= "#{view_namespace}.IndexView(#{plural_name}: @#{plural_name})" %>
|
19
|
+
$("#<%= plural_name %>").html(@view.render().el)
|
20
|
+
|
21
|
+
show: (id) ->
|
22
|
+
<%= singular_name %> = @<%= plural_name %>.get(id)
|
23
|
+
|
24
|
+
@view = new <%= "#{view_namespace}.ShowView(model: #{singular_name})" %>
|
25
|
+
$("#<%= plural_name %>").html(@view.render().el)
|
26
|
+
|
27
|
+
edit: (id) ->
|
28
|
+
<%= singular_name %> = @<%= plural_name %>.get(id)
|
29
|
+
|
30
|
+
@view = new <%= "#{view_namespace}.EditView(model: #{singular_name})" %>
|
31
|
+
$("#<%= plural_name %>").html(@view.render().el)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<h1>Edit <%= singular_table_name %></h1>
|
2
|
+
|
3
|
+
<form id="edit-<%= singular_table_name %>" name="<%= singular_table_name %>">
|
4
|
+
<div class="field">
|
5
|
+
<label for="name">Name:</label>
|
6
|
+
<input type="text" name="name" id="name" value="<%%= name %>" >
|
7
|
+
</div>
|
8
|
+
<% attributes.each do |attribute| -%>
|
9
|
+
<div class="field">
|
10
|
+
<label for="<%= attribute.name %>"> <%= attribute.human_name %>:</label>
|
11
|
+
<input type="text" name="<%= attribute.name %>" id="<%= attribute.name %>" value="<%%= <%= attribute.name %> %>" >
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<% end -%>
|
15
|
+
<div class="actions">
|
16
|
+
<input type="submit" value="Update <%= human_name %>" />
|
17
|
+
</div>
|
18
|
+
|
19
|
+
</form>
|
20
|
+
|
21
|
+
<a href="#/">Back</a>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<h1>Listing <%= plural_table_name %></h1>
|
2
|
+
|
3
|
+
<table id="<%= plural_name %>-table">
|
4
|
+
<tr>
|
5
|
+
<th>Name</th>
|
6
|
+
<% attributes.each do |attribute| -%>
|
7
|
+
<th><%= attribute.human_name %></th>
|
8
|
+
<% end -%>
|
9
|
+
<th></th>
|
10
|
+
<th></th>
|
11
|
+
<th></th>
|
12
|
+
</tr>
|
13
|
+
</table>
|
14
|
+
|
15
|
+
<br/>
|
16
|
+
|
17
|
+
<a href="#/new">New <%= human_name %></a>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<td><%%= name %></td>
|
2
|
+
<% attributes.each do |attribute| -%>
|
3
|
+
<td><%%= <%= attribute.name %> %></td>
|
4
|
+
<% end -%>
|
5
|
+
|
6
|
+
<td><a href="#/<%%= _id %>">Show</td>
|
7
|
+
<td><a href="#/<%%= _id %>/edit">Edit</td>
|
8
|
+
<td><a href="#/<%%= _id %>/destroy" class="destroy">Destroy</a></td>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<h1>New <%= singular_table_name %></h1>
|
2
|
+
|
3
|
+
<form id="new-<%= singular_table_name %>" name="<%= singular_table_name %>">
|
4
|
+
<div class="field">
|
5
|
+
<label for="name">Name:</label>
|
6
|
+
<input type="text" name="name" id="name" value="<%%= name %>" >
|
7
|
+
</div>
|
8
|
+
<% attributes.each do |attribute| -%>
|
9
|
+
<div class="field">
|
10
|
+
<label for="<%= attribute.name %>"> <%= attribute.human_name %>:</label>
|
11
|
+
<input type="text" name="<%= attribute.name %>" id="<%= attribute.name %>" value="<%%= <%= attribute.name %> %>" >
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<% end -%>
|
15
|
+
<div class="actions">
|
16
|
+
<input type="submit" value="Create <%= human_name %>" />
|
17
|
+
</div>
|
18
|
+
|
19
|
+
</form>
|
20
|
+
|
21
|
+
<a href="#/">Back</a>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<%= view_namespace %> ||= {}
|
2
|
+
|
3
|
+
class <%= view_namespace %>.EditView extends Backbone.View
|
4
|
+
template: JST["<%= jst 'edit' %>"]
|
5
|
+
|
6
|
+
events:
|
7
|
+
"submit #edit-<%= singular_name %>": "update"
|
8
|
+
|
9
|
+
update: (e) ->
|
10
|
+
e.preventDefault()
|
11
|
+
e.stopPropagation()
|
12
|
+
|
13
|
+
@model.save(null,
|
14
|
+
success: (<%= singular_name %>) =>
|
15
|
+
@model = <%= singular_name %>
|
16
|
+
window.location.hash = "/#{@model.id}"
|
17
|
+
)
|
18
|
+
|
19
|
+
render: ->
|
20
|
+
@$el.html(@template(@model.toJSON() ))
|
21
|
+
|
22
|
+
this.$("form").backboneLink(@model)
|
23
|
+
|
24
|
+
return this
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%= view_namespace %> ||= {}
|
2
|
+
|
3
|
+
class <%= view_namespace %>.IndexView extends Backbone.View
|
4
|
+
template: JST["<%= jst 'index' %>"]
|
5
|
+
|
6
|
+
initialize: () ->
|
7
|
+
@options.<%= plural_model_name %>.bind('reset', @addAll)
|
8
|
+
|
9
|
+
addAll: () =>
|
10
|
+
@options.<%= plural_model_name %>.each(@addOne)
|
11
|
+
|
12
|
+
addOne: (<%= singular_model_name %>) =>
|
13
|
+
view = new <%= view_namespace %>.<%= singular_name.camelize %>View({model : <%= singular_model_name %>})
|
14
|
+
@$("tbody").append(view.render().el)
|
15
|
+
|
16
|
+
render: =>
|
17
|
+
@$el.html(@template(<%= plural_model_name %>: @options.<%= plural_model_name %>.toJSON() ))
|
18
|
+
@addAll()
|
19
|
+
|
20
|
+
return this
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%= view_namespace %> ||= {}
|
2
|
+
|
3
|
+
class <%= view_namespace %>.<%= singular_name.camelize %>View extends Backbone.View
|
4
|
+
template: JST["<%= jst singular_name %>"]
|
5
|
+
|
6
|
+
events:
|
7
|
+
"click .destroy" : "destroy"
|
8
|
+
|
9
|
+
tagName: "tr"
|
10
|
+
|
11
|
+
destroy: () ->
|
12
|
+
@model.destroy()
|
13
|
+
this.remove()
|
14
|
+
|
15
|
+
return false
|
16
|
+
|
17
|
+
render: ->
|
18
|
+
@$el.html(@template(@model.toJSON() ))
|
19
|
+
return this
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<%= view_namespace %> ||= {}
|
2
|
+
|
3
|
+
class <%= view_namespace %>.NewView extends Backbone.View
|
4
|
+
template: JST["<%= jst 'new' %>"]
|
5
|
+
|
6
|
+
events:
|
7
|
+
"submit #new-<%= singular_name %>": "save"
|
8
|
+
|
9
|
+
constructor: (options) ->
|
10
|
+
super(options)
|
11
|
+
@model = new @collection.model()
|
12
|
+
|
13
|
+
@model.bind("change:errors", () =>
|
14
|
+
this.render()
|
15
|
+
)
|
16
|
+
|
17
|
+
save: (e) ->
|
18
|
+
e.preventDefault()
|
19
|
+
e.stopPropagation()
|
20
|
+
|
21
|
+
@model.unset("errors")
|
22
|
+
|
23
|
+
@collection.create(@model.toJSON(),
|
24
|
+
success: (<%= singular_name %>) =>
|
25
|
+
@model = <%= singular_name %>
|
26
|
+
window.location.hash = "/#{@model.id}"
|
27
|
+
|
28
|
+
error: (<%= singular_name %>, jqXHR) =>
|
29
|
+
@model.set({errors: $.parseJSON(jqXHR.responseText)})
|
30
|
+
)
|
31
|
+
|
32
|
+
render: ->
|
33
|
+
@$el.html(@template(@model.toJSON() ))
|
34
|
+
|
35
|
+
this.$("form").backboneLink(@model)
|
36
|
+
|
37
|
+
return this
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'generators/pbw/resource_helpers'
|
2
|
+
|
3
|
+
module Pbw
|
4
|
+
module Generators
|
5
|
+
class ModelGenerator < Rails::Generators::NamedBase
|
6
|
+
include Pbw::Generators::ResourceHelpers
|
7
|
+
|
8
|
+
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
9
|
+
|
10
|
+
def create_backbone_model
|
11
|
+
template "model.coffee", "#{backbone_path}/models/#{file_name}.js.coffee"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'generators/pbw/model_generator'
|
2
|
+
|
3
|
+
module Pbw
|
4
|
+
module Generators
|
5
|
+
class ScaffoldGenerator < ModelGenerator
|
6
|
+
|
7
|
+
def create_router_files
|
8
|
+
template 'router.coffee', File.join(backbone_path, "routers", class_path, "#{plural_name}_router.js.coffee")
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_view_files
|
12
|
+
available_views.each do |view|
|
13
|
+
template "views/#{view}_view.coffee", File.join(backbone_path, "views", plural_name, "#{view}_view.js.coffee")
|
14
|
+
template "templates/#{view}.jst", File.join(backbone_path, "templates", plural_name, "#{view}.jst.ejs")
|
15
|
+
end
|
16
|
+
template "views/model_view.coffee", File.join(backbone_path, "views", plural_name, "#{singular_name}_view.js.coffee")
|
17
|
+
template "templates/model.jst", File.join(backbone_path, "templates", plural_name, "#{singular_name}.jst.ejs")
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_resources
|
21
|
+
generate "model", "#{class_name} #{attributes.map{|attr| "#{attr.name}:#{attr.type}"}.join(' ')}"
|
22
|
+
template "index.erb", "app/views/#{plural_name}/index.html.erb"
|
23
|
+
generate "controller", "#{plural_name} index --skip"
|
24
|
+
gsub_file "app/models/#{file_name}.rb", "class #{class_name}", "class #{class_name} < Pbw::Area"
|
25
|
+
gsub_file "app/models/#{file_name}.rb", "include Mongoid::Document", ""
|
26
|
+
end
|
27
|
+
|
28
|
+
def available_views
|
29
|
+
%w(index show new edit)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/pbw/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pbw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seyed P. Razavi
|
@@ -221,6 +221,19 @@ files:
|
|
221
221
|
- config/locales/devise.en.yml
|
222
222
|
- config/routes.rb
|
223
223
|
- lib/generators/pbw/area/area_generator.rb
|
224
|
+
- lib/generators/pbw/area/templates/index.erb
|
225
|
+
- lib/generators/pbw/area/templates/model.coffee
|
226
|
+
- lib/generators/pbw/area/templates/router.coffee
|
227
|
+
- lib/generators/pbw/area/templates/templates/edit.jst
|
228
|
+
- lib/generators/pbw/area/templates/templates/index.jst
|
229
|
+
- lib/generators/pbw/area/templates/templates/model.jst
|
230
|
+
- lib/generators/pbw/area/templates/templates/new.jst
|
231
|
+
- lib/generators/pbw/area/templates/templates/show.jst
|
232
|
+
- lib/generators/pbw/area/templates/views/edit_view.coffee
|
233
|
+
- lib/generators/pbw/area/templates/views/index_view.coffee
|
234
|
+
- lib/generators/pbw/area/templates/views/model_view.coffee
|
235
|
+
- lib/generators/pbw/area/templates/views/new_view.coffee
|
236
|
+
- lib/generators/pbw/area/templates/views/show_view.coffee
|
224
237
|
- lib/generators/pbw/area/USAGE
|
225
238
|
- lib/generators/pbw/command/command_generator.rb
|
226
239
|
- lib/generators/pbw/command/USAGE
|
@@ -228,8 +241,9 @@ files:
|
|
228
241
|
- lib/generators/pbw/install/templates/app.coffee
|
229
242
|
- lib/generators/pbw/install/templates/application.html.erb
|
230
243
|
- lib/generators/pbw/install/USAGE
|
231
|
-
- lib/generators/pbw/
|
232
|
-
- lib/generators/pbw/
|
244
|
+
- lib/generators/pbw/item/item_generator.rb
|
245
|
+
- lib/generators/pbw/item/USAGE
|
246
|
+
- lib/generators/pbw/model_generator.rb
|
233
247
|
- lib/generators/pbw/resource_helpers.rb
|
234
248
|
- lib/generators/pbw/rules/ability/ability_generator.rb
|
235
249
|
- lib/generators/pbw/rules/ability/USAGE
|
@@ -239,6 +253,7 @@ files:
|
|
239
253
|
- lib/generators/pbw/rules/process/USAGE
|
240
254
|
- lib/generators/pbw/rules/trigger/trigger_generator.rb
|
241
255
|
- lib/generators/pbw/rules/trigger/USAGE
|
256
|
+
- lib/generators/pbw/scaffold_generator.rb
|
242
257
|
- lib/generators/pbw/token/token_generator.rb
|
243
258
|
- lib/generators/pbw/token/USAGE
|
244
259
|
- lib/pbw/engine.rb
|