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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZGIzNWI0MmRmMWE4YTYxMTdjYTU5MzI3Y2M0NjA0MzcwOWJiOGQ4OA==
4
+ NzBkNmRjYTAxMDI4Y2M1Nzg2YTQyZjFjOTk3OTNjYjY1ZWE4NzNjOA==
5
5
  data.tar.gz: !binary |-
6
- YzQ5ZTM5MDE2Njk2N2VkMzI0ZDIyMjk5NjgzZmUwYjNjMDU4ODU1MQ==
6
+ MWFiMDlhMzlmMTkwNjM3Y2VjYmI5MGQ1Yzc4MmVkOTU1MzllMjIyYQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MDNkNTE3Yjg2MWEwY2I0YjliZTI4M2YwNTBmYzNjNDcwOGZkOTdmM2I5MWNj
10
- NWFhOGJjZjhlYjIwNjQxOGUyMjliMTQ5MDA5MGRkYTZiOGYzNDE3NjViYzVm
11
- OWQ0OTkxZjU0OGI5M2E5ZDdlOWZmMjg2MWUzNDRiNGQyZWFiMzc=
9
+ YmJiN2U3MjA2ZWJkY2NhN2ZmMjNhODIwNmQ0YzU3MTYyNDk4MjJiMmVlOWRl
10
+ ZTc3NzJhNmI3NjdhMjcxODkwOGYzMzU3ZmM3NDA5NjEzZDNlODc5MTZlZWQx
11
+ Y2ViODk4NmM5ZGU4NzVkNmZmNTMyOWI4OTY5NTZmNjVjNWYzNWM=
12
12
  data.tar.gz: !binary |-
13
- ZDZhYmRmMDdkNmZmYTY2YjdiYTA2ODY2ZWVkZWE5ZWQ5NmMxZjI0ZmNmZTky
14
- ZmZjNDIzODFlYWQ3MTE2NDllNTc4OWI4YmVmNWIyMjk4NTRiZWU5ZjkwOTJi
15
- MTFlNWQwMjQ5MzhiNGQwZmIzOTU1ZDhiOTdkYWE2MDE4Yzg0MjY=
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 = model_class.new
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, model_class
42
- @model = model_class.new(params[model_param])
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
- class Pbw::AreaGenerator < Rails::Generators::NamedBase
2
- source_root File.expand_path('../templates', __FILE__)
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,6 @@
1
+ <script type="text/javascript">
2
+ $(function() {
3
+ window.router = new <%= router_namespace %>Router;
4
+ Backbone.history.start();
5
+ });
6
+ </script>
@@ -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,14 @@
1
+ <p>
2
+ <b>Name:</b>
3
+ <%%= name %>
4
+ </p>
5
+
6
+ <% attributes.each do |attribute| -%>
7
+ <p>
8
+ <b><%= attribute.human_name %>:</b>
9
+ <%%= <%= attribute.name %> %>
10
+ </p>
11
+
12
+ <% end -%>
13
+
14
+ <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,8 @@
1
+ <%= view_namespace %> ||= {}
2
+
3
+ class <%= view_namespace %>.ShowView extends Backbone.View
4
+ template: JST["<%= jst 'show' %>"]
5
+
6
+ render: ->
7
+ @$el.html(@template(@model.toJSON() ))
8
+ return this
@@ -4,6 +4,8 @@
4
4
  #= require_tree ./views
5
5
  #= require_tree ./routers
6
6
 
7
+ Backbone.Model.prototype.idAttribute = "_id";
8
+
7
9
  window.<%= js_app_name %> =
8
10
  Models: {}
9
11
  Collections: {}
@@ -2,7 +2,7 @@ Description:
2
2
  Explain the generator
3
3
 
4
4
  Example:
5
- rails generate resource Thing
5
+ rails generate item Thing
6
6
 
7
7
  This will create:
8
8
  what/will/it/create
@@ -1,3 +1,3 @@
1
- class Pbw::ResourceGenerator < Rails::Generators::NamedBase
1
+ class Pbw::ItemGenerator < Rails::Generators::NamedBase
2
2
  source_root File.expand_path('../templates', __FILE__)
3
3
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Pbw
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
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.3
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/resource/resource_generator.rb
232
- - lib/generators/pbw/resource/USAGE
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