pbw 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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