pbw 0.0.9 → 0.0.10

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.
Files changed (80) hide show
  1. checksums.yaml +8 -8
  2. data/app/controllers/pbw/application_controller.rb +3 -16
  3. data/app/controllers/pbw/base_models_controller.rb +10 -32
  4. data/app/controllers/pbw/passwords_controller.rb +14 -0
  5. data/app/controllers/pbw/registrations_controller.rb +9 -6
  6. data/app/controllers/pbw/sessions_controller.rb +9 -4
  7. data/app/mailers/pbw/user_mailer.rb +16 -0
  8. data/app/models/pbw/area.rb +5 -5
  9. data/app/models/pbw/attached_process.rb +3 -3
  10. data/app/models/pbw/capability.rb +1 -1
  11. data/app/models/pbw/command.rb +2 -2
  12. data/app/models/pbw/constraint.rb +2 -2
  13. data/app/models/pbw/item.rb +2 -2
  14. data/app/models/pbw/item_container.rb +4 -4
  15. data/app/models/pbw/item_conversion.rb +1 -1
  16. data/app/models/pbw/process.rb +2 -2
  17. data/app/models/pbw/token.rb +7 -7
  18. data/app/models/pbw/trigger.rb +3 -3
  19. data/app/models/pbw/user.rb +30 -8
  20. data/config/initializers/devise.rb +1 -66
  21. data/config/locales/pbw.en.yml +7 -0
  22. data/config/routes.rb +2 -4
  23. data/lib/generators/pbw/install/install_generator.rb +22 -3
  24. data/lib/generators/pbw/model_generator.rb +6 -0
  25. data/lib/generators/pbw/resource_helpers.rb +16 -0
  26. data/lib/generators/pbw/rules/capability/capability_generator.rb +4 -2
  27. data/lib/generators/pbw/rules/constraint/constraint_generator.rb +4 -2
  28. data/lib/generators/pbw/rules/process/process_generator.rb +4 -2
  29. data/lib/generators/pbw/rules/trigger/trigger_generator.rb +4 -2
  30. data/lib/generators/pbw/scaffold_generator.rb +0 -12
  31. data/lib/generators/pbw/templates/app.coffee +5 -3
  32. data/lib/generators/pbw/templates/application.erb +24 -0
  33. data/lib/generators/pbw/templates/lifecycle.rb +1 -0
  34. data/lib/generators/pbw/templates/pbw.coffee +21 -0
  35. data/lib/generators/pbw/templates/router.coffee +15 -0
  36. data/lib/generators/pbw/templates/templates/home.jst +10 -1
  37. data/lib/generators/pbw/templates/templates/login.jst +25 -0
  38. data/lib/generators/pbw/templates/templates/recover_password.jst +17 -0
  39. data/lib/generators/pbw/templates/templates/signup.jst +29 -0
  40. data/lib/generators/pbw/templates/user_recovery.coffee +6 -0
  41. data/lib/generators/pbw/templates/user_registration.coffee +9 -0
  42. data/lib/generators/pbw/templates/user_session.coffee +8 -0
  43. data/lib/generators/pbw/templates/views/edit_view.coffee +15 -8
  44. data/lib/generators/pbw/templates/views/login_view.coffee +39 -0
  45. data/lib/generators/pbw/templates/views/new_view.coffee +5 -9
  46. data/lib/generators/pbw/templates/views/recovery_view.coffee +38 -0
  47. data/lib/generators/pbw/templates/views/signup_view.coffee +39 -0
  48. data/lib/pbw/engine.rb +5 -9
  49. data/lib/pbw/version.rb +1 -1
  50. data/lib/pbw.rb +15 -2
  51. data/vendor/assets/javascripts/backbone_datalink.js +21 -0
  52. metadata +16 -44
  53. data/app/controllers/pbw/capabilities_controller.rb +0 -7
  54. data/app/controllers/pbw/constraints_controller.rb +0 -7
  55. data/app/controllers/pbw/processes_controller.rb +0 -7
  56. data/app/controllers/pbw/triggers_controller.rb +0 -7
  57. data/public/Foundation-MIT-LICENSE.txt +0 -20
  58. data/public/config.rb +0 -26
  59. data/public/javascripts/foundation/foundation.alerts.js +0 -52
  60. data/public/javascripts/foundation/foundation.clearing.js +0 -516
  61. data/public/javascripts/foundation/foundation.cookie.js +0 -74
  62. data/public/javascripts/foundation/foundation.dropdown.js +0 -178
  63. data/public/javascripts/foundation/foundation.forms.js +0 -525
  64. data/public/javascripts/foundation/foundation.interchange.js +0 -271
  65. data/public/javascripts/foundation/foundation.joyride.js +0 -844
  66. data/public/javascripts/foundation/foundation.js +0 -447
  67. data/public/javascripts/foundation/foundation.magellan.js +0 -134
  68. data/public/javascripts/foundation/foundation.orbit.js +0 -390
  69. data/public/javascripts/foundation/foundation.placeholder.js +0 -179
  70. data/public/javascripts/foundation/foundation.reveal.js +0 -330
  71. data/public/javascripts/foundation/foundation.section.js +0 -422
  72. data/public/javascripts/foundation/foundation.tooltips.js +0 -208
  73. data/public/javascripts/foundation/foundation.topbar.js +0 -303
  74. data/public/javascripts/vendor/custom.modernizr.js +0 -4
  75. data/public/javascripts/vendor/jquery.js +0 -9807
  76. data/public/javascripts/vendor/zepto.js +0 -2000
  77. data/public/sass/_normalize.scss +0 -402
  78. data/public/sass/_settings.scss +0 -1271
  79. data/public/sass/app.scss +0 -48
  80. data/public/stylesheets/app.css +0 -6686
@@ -1,8 +1,10 @@
1
- require 'generators/pbw/scaffold_generator'
1
+ require 'generators/pbw/model_generator'
2
2
  require 'generators/pbw/rules/rules'
3
3
 
4
- class Pbw::Rules::ConstraintGenerator < Pbw::Generators::ScaffoldGenerator
4
+ class Pbw::Rules::ConstraintGenerator < Pbw::Generators::ModelGenerator
5
5
  source_root File.expand_path("../../../templates", __FILE__)
6
+ def create_backbone_model
7
+ end
6
8
  protected
7
9
  def base_model_class
8
10
  "Pbw::Constraint"
@@ -1,8 +1,10 @@
1
- require 'generators/pbw/scaffold_generator'
1
+ require 'generators/pbw/model_generator'
2
2
  require 'generators/pbw/rules/rules'
3
3
 
4
- class Pbw::Rules::ProcessGenerator < Pbw::Generators::ScaffoldGenerator
4
+ class Pbw::Rules::ProcessGenerator < Pbw::Generators::ModelGenerator
5
5
  source_root File.expand_path("../../../templates", __FILE__)
6
+ def create_backbone_model
7
+ end
6
8
  protected
7
9
  def base_model_class
8
10
  "Pbw::Process"
@@ -1,8 +1,10 @@
1
- require 'generators/pbw/scaffold_generator'
1
+ require 'generators/pbw/model_generator'
2
2
  require 'generators/pbw/rules/rules'
3
3
 
4
- class Pbw::Rules::TriggerGenerator < Pbw::Generators::ScaffoldGenerator
4
+ class Pbw::Rules::TriggerGenerator < Pbw::Generators::ModelGenerator
5
5
  source_root File.expand_path("../../../templates", __FILE__)
6
+ def create_backbone_model
7
+ end
6
8
  protected
7
9
  def base_model_class
8
10
  "Pbw::Trigger"
@@ -46,18 +46,6 @@ module Pbw
46
46
  template "templates/model.jst", File.join(backbone_path, "templates/#{model_namespace.downcase}", plural_name, "#{singular_name}.jst.ejs")
47
47
  end
48
48
 
49
- def create_resources
50
- generate "model", "#{model_namespace}::#{class_name} #{attributes.map{|attr| "#{attr.name}:#{attr.type}"}.join(' ')}"
51
- gsub_file "app/models/#{model_namespace.downcase}/#{file_name}.rb", "class #{model_namespace}::#{class_name}", "class #{model_namespace}::#{class_name} < #{base_model_class}"
52
- gsub_file "app/models/#{model_namespace.downcase}/#{file_name}.rb", "include Mongoid::Document", ""
53
- end
54
-
55
- def append_app_file
56
- inject_into_file "app/assets/javascripts/#{application_name.underscore}.js.coffee", :after => "Views: {}" do
57
- "\nwindow.#{js_app_name}.Models.#{model_namespace} = {}\nwindow.#{js_app_name}.Collections.#{model_namespace} = {}\nwindow.#{js_app_name}.Views.#{model_namespace} = {}\n"
58
- end
59
- end
60
-
61
49
  protected
62
50
  def available_views
63
51
  %w(index show new edit)
@@ -1,4 +1,5 @@
1
1
  #= require_self
2
+ #= require_tree ./helpers
2
3
  #= require_tree ./templates
3
4
  #= require_tree ./models
4
5
  #= require_tree ./views
@@ -7,7 +8,8 @@
7
8
  Backbone.Model.prototype.idAttribute = "_id";
8
9
 
9
10
  window.<%= js_app_name %> =
10
- Models: {}
11
- Collections: {}
11
+ User: null
12
+ Models: {Areas: {}, Items: {}, Commands: {}, Tokens: {}}
13
+ Collections: {Areas: {}, Items: {}, Commands: {}, Tokens: {}}
12
14
  Routers: {}
13
- Views: {}
15
+ Views: {Areas: {}, Items: {}, Commands: {}, Tokens: {}}
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE html>
2
+ <!--[if lt IE 7 ]> <html class="ie6" lang="en"> <![endif]-->
3
+ <!--[if IE 7 ]> <html class="ie7" lang="en"> <![endif]-->
4
+ <!--[if IE 8 ]> <html class="ie8" lang="en"> <![endif]-->
5
+ <!--[if (gte IE 9)|!(IE)]><!--> <html lang="en"> <!--<![endif]-->
6
+ <head>
7
+ <meta charset="utf-8" />
8
+ <!-- Uncomment to make IE8 render like IE7 -->
9
+ <!-- <meta http-equiv="X-UA-Compatible" content="IE=7" /> -->
10
+ <!-- Set the viewport width to device width for mobile -->
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12
+ <title><%=application_name%></title>
13
+
14
+ <%%= stylesheet_link_tag "application", :media => "all" %>
15
+ <%%= csrf_meta_tags %>
16
+ </head>
17
+
18
+ <body>
19
+ <%%= javascript_include_tag "application" %>
20
+ <div id="app">
21
+ <%%= yield %>
22
+ </div>
23
+ </body>
24
+ </html>
@@ -3,6 +3,7 @@ module User
3
3
 
4
4
  def self.after_signup(user)
5
5
  # do anything that needs to happen immediately after a user signs up
6
+ user.make_superadmin! if Pbw::User.count == 1
6
7
  end
7
8
 
8
9
  def self.after_login(user)
@@ -0,0 +1,21 @@
1
+ # PBW Helper Methods
2
+
3
+ # Debugging to console
4
+ @debug = (message) ->
5
+ window.console && console.log message
6
+
7
+ # User session
8
+ @current_user = ->
9
+ window.<%= js_app_name %>.User
10
+
11
+ # Form error handling
12
+ @form_errors = (message, jqXHR) ->
13
+ debug message
14
+ debug jqXHR
15
+ $("#error").html('<h3>' + message + '</h3><ul>')
16
+ if jqXHR && jqXHR.responseText
17
+ _.each($.parseJSON(jqXHR.responseText), (value,key) ->
18
+ $("#error").append('<li>' + value + '</li>')
19
+ )
20
+ $("#error").append('</ul>')
21
+ $("#error").show()
@@ -4,8 +4,23 @@ class <%= router_name %> extends Backbone.Router
4
4
 
5
5
  routes:
6
6
  "" : "home"
7
+ "login" : "login"
8
+ "signup" : "signup"
9
+ "password_recovery" : "passwordRecovery"
7
10
 
8
11
 
9
12
  home: ->
10
13
  @view = new <%= "#{js_app_name}.Views.Home.IndexView" %>
14
+ $("#app").html(@view.render().el)
15
+
16
+ login: ->
17
+ @view = new <%= "#{js_app_name}.Views.Users.LoginView" %>
18
+ $("#app").html(@view.render().el)
19
+
20
+ signup: ->
21
+ @view = new <%= "#{js_app_name}.Views.Users.SignupView" %>
22
+ $("#app").html(@view.render().el)
23
+
24
+ passwordRecovery: ->
25
+ @view = new <%= "#{js_app_name}.Views.Users.RecoveryView" %>
11
26
  $("#app").html(@view.render().el)
@@ -1 +1,10 @@
1
- <!-- This is the home view of your app -->
1
+ <nav>
2
+ <ul>
3
+ <%% if(current_user()) { %>
4
+ <li><a href="/pbw/users/sign_out" data-method="delete">Sign out</a></li>
5
+ <%% } else { %>
6
+ <li><a href="#/signup">Sign up</a></li>
7
+ <li><a href="#/login">Login</a></li>
8
+ <%% } %>
9
+ </ul>
10
+ </nav>
@@ -0,0 +1,25 @@
1
+ <form id="new-user-session" name="user-session">
2
+ <div id="error"></div>
3
+ <input type="hidden" name="authenticity_token" value="<%%= $("meta[name='csrf-token']").attr("content") %>">
4
+ <fieldset>
5
+ <legend>Login</legend>
6
+ <div class="field">
7
+ <label for="name">Email:</label>
8
+ <input type="text" name="email" id="email" value="<%%= email %>" >
9
+ </div>
10
+ <div class="field">
11
+ <label for="name">Password:</label>
12
+ <input type="password" name="password" id="password">
13
+ </div>
14
+ <div class="field">
15
+ <label for="name">Remember me:</label>
16
+ <input type="checkbox" name="remember_me" id="remember_me">
17
+ </div>
18
+ <div class="actions">
19
+ <input type="submit" value="Login" />
20
+ </div>
21
+ </fieldset>
22
+ </form>
23
+
24
+ <a href="#/signup">Sign up</a><br/>
25
+ <a href="#/password_recovery">Forgot your password?</a>
@@ -0,0 +1,17 @@
1
+ <form id="new-user-password" name="user-password">
2
+ <div id="error"></div>
3
+ <input type="hidden" name="authenticity_token" value="<%%= $("meta[name='csrf-token']").attr("content") %>">
4
+ <fieldset>
5
+ <legend>Recover your password</legend>
6
+ <div class="field">
7
+ <label for="name">Email:</label>
8
+ <input type="text" name="email" id="email" value="<%%= email %>" >
9
+ </div>
10
+ <div class="actions">
11
+ <input type="submit" value="Send me reset password instructions" />
12
+ </div>
13
+ </fieldset>
14
+ </form>
15
+
16
+ <a href="#/signup">Sign up</a><br/>
17
+ <a href="#/login">Login</a>
@@ -0,0 +1,29 @@
1
+ <form id="new-user" name="user">
2
+ <div id="error"></div>
3
+ <input type="hidden" name="authenticity_token" value="<%%= $("meta[name='csrf-token']").attr("content") %>">
4
+ <fieldset>
5
+ <legend>Sign up</legend>
6
+ <div class="field">
7
+ <label for="name">Name:</label>
8
+ <input type="text" name="name" id="name" value="<%%= name %>" >
9
+ </div>
10
+ <div class="field">
11
+ <label for="name">Email:</label>
12
+ <input type="text" name="email" id="email" value="<%%= email %>" >
13
+ </div>
14
+ <div class="field">
15
+ <label for="name">Password:</label>
16
+ <input type="password" name="password" id="password">
17
+ </div>
18
+ <div class="field">
19
+ <label for="name">Confirm Password:</label>
20
+ <input type="password" name="password_confirmation" id="password_confirmation">
21
+ </div>
22
+ <div class="actions">
23
+ <input type="submit" value="Sign up" />
24
+ </div>
25
+ </fieldset>
26
+ </form>
27
+
28
+ <a href="#/login">Login</a><br/>
29
+ <a href="#/password_recovery">Forgot your password?</a>
@@ -0,0 +1,6 @@
1
+ class <%= js_user_model_namespace %>Recovery extends Backbone.Model
2
+ paramRoot: 'user'
3
+ url: '/pbw/users/password.json'
4
+
5
+ defaults:
6
+ email: null
@@ -0,0 +1,9 @@
1
+ class <%= js_user_model_namespace %>Registration extends Backbone.Model
2
+ paramRoot: 'user'
3
+ url: '/pbw/users.json'
4
+
5
+ defaults:
6
+ name: null
7
+ email: null
8
+ password: null
9
+ password_confirmation: null
@@ -0,0 +1,8 @@
1
+ class <%= js_user_model_namespace %>Session extends Backbone.Model
2
+ paramRoot: 'user'
3
+ url: '/pbw/users/sign_in.json'
4
+
5
+ defaults:
6
+ email: null
7
+ password: null
8
+ remember_me: null
@@ -6,21 +6,28 @@ class <%= view_namespace %>.EditView extends Backbone.View
6
6
  events:
7
7
  "submit #edit-<%= singular_name %>": "update"
8
8
 
9
+ constructor: (options) ->
10
+ super(options)
11
+ @model = options.model
12
+
13
+ @model.bind("change:errors", () =>
14
+ this.render()
15
+ )
16
+
17
+ @model.bind("error", (model, xhr, options) =>
18
+ form_errors 'There was a problem saving <%= singular_name %>', xhr
19
+ )
20
+
9
21
  update: (e) ->
10
22
  e.preventDefault()
11
23
  e.stopPropagation()
12
24
 
13
25
  @model.save(null,
14
- success: (<%= singular_name %>) =>
26
+ success: (<%= singular_name %>, response, options) =>
15
27
  @model = <%= singular_name %>
16
28
  window.location.hash = "/<%=model_namespace.downcase%>/#{@model.id}"
17
- error: (model, jqXHR) =>
18
- $("#error").html('<h2>There was a problem saving the <%= singular_name %></h2><ul>')
19
- _.each($.parseJSON(jqXHR.responseText), (value,key) ->
20
- $("#error").append('<li>' + value + '</li>')
21
- )
22
- $("#error").append('</ul>')
23
- $("#error").show()
29
+ error: (model, xhr, options) =>
30
+ form_errors 'There was a problem saving <%= singular_name %>', xhr
24
31
  )
25
32
 
26
33
  render: ->
@@ -0,0 +1,39 @@
1
+ <%= user_view_namespace %> ||= {}
2
+
3
+ class <%= user_view_namespace %>.LoginView extends Backbone.View
4
+ template: JST["<%= user_jst 'login' %>"]
5
+
6
+ events:
7
+ "submit #new-user-session": "save"
8
+
9
+ constructor: (options) ->
10
+ super(options)
11
+ @model = new <%= js_user_model_namespace %>Session
12
+
13
+ @model.bind("change:errors", () =>
14
+ this.render()
15
+ )
16
+
17
+ @model.bind("error", (model, xhr, options) =>
18
+ form_errors 'There was a problem logging in', xhr
19
+ )
20
+
21
+ save: (e) ->
22
+ e.preventDefault()
23
+ e.stopPropagation()
24
+
25
+ @model.unset("errors")
26
+
27
+ @model.save(@model.attributes,
28
+ success: (user, response, options) =>
29
+ @model = user
30
+ window.<%= js_app_name %>.User = @model
31
+ window.location.hash = "/"
32
+ )
33
+
34
+ render: ->
35
+ @$el.html(@template(@model.toJSON() ))
36
+
37
+ this.$("form").backboneLink(@model)
38
+
39
+ return this
@@ -14,6 +14,10 @@ class <%= view_namespace %>.NewView extends Backbone.View
14
14
  this.render()
15
15
  )
16
16
 
17
+ @model.bind("error", (model, xhr, options) =>
18
+ form_errors 'There was a problem saving <%= singular_name %>', xhr
19
+ )
20
+
17
21
  save: (e) ->
18
22
  e.preventDefault()
19
23
  e.stopPropagation()
@@ -21,17 +25,9 @@ class <%= view_namespace %>.NewView extends Backbone.View
21
25
  @model.unset("errors")
22
26
 
23
27
  @collection.create(@model.toJSON(),
24
- success: (<%= singular_name %>) =>
28
+ success: (<%= singular_name %>, response, options) =>
25
29
  @model = <%= singular_name %>
26
30
  window.location.hash = "/<%=model_namespace.downcase%>/#{@model.id}"
27
-
28
- error: (model, jqXHR) =>
29
- $("#error").html('<h2>There was a problem saving the <%= singular_name %></h2><ul>')
30
- _.each($.parseJSON(jqXHR.responseText), (value,key) ->
31
- $("#error").append('<li>' + value + '</li>')
32
- )
33
- $("#error").append('</ul>')
34
- $("#error").show()
35
31
  )
36
32
 
37
33
  render: ->
@@ -0,0 +1,38 @@
1
+ <%= user_view_namespace %> ||= {}
2
+
3
+ class <%= user_view_namespace %>.RecoveryView extends Backbone.View
4
+ template: JST["<%= user_jst 'recover_password' %>"]
5
+
6
+ events:
7
+ "submit #new-user-password": "save"
8
+
9
+ constructor: (options) ->
10
+ super(options)
11
+ @model = new <%= js_user_model_namespace %>Recovery
12
+
13
+ @model.bind("change:errors", () =>
14
+ this.render()
15
+ )
16
+
17
+ @model.bind("error", (model, xhr, options) =>
18
+ form_errors 'There was a problem recovering your password', xhr
19
+ )
20
+
21
+ save: (e) ->
22
+ e.preventDefault()
23
+ e.stopPropagation()
24
+
25
+ @model.unset("errors")
26
+
27
+ @model.save(@model.attributes,
28
+ success: (user_recovery, response, options) =>
29
+ @model = user_recovery
30
+ window.location.hash = "/"
31
+ )
32
+
33
+ render: ->
34
+ @$el.html(@template(@model.toJSON() ))
35
+
36
+ this.$("form").backboneLink(@model)
37
+
38
+ return this
@@ -0,0 +1,39 @@
1
+ <%= user_view_namespace %> ||= {}
2
+
3
+ class <%= user_view_namespace %>.SignupView extends Backbone.View
4
+ template: JST["<%= user_jst 'signup' %>"]
5
+
6
+ events:
7
+ "submit #new-user": "save"
8
+
9
+ constructor: (options) ->
10
+ super(options)
11
+ @model = new <%= js_user_model_namespace %>Registration
12
+
13
+ @model.bind("change:errors", () =>
14
+ this.render()
15
+ )
16
+
17
+ @model.bind("error", (model, xhr, options) =>
18
+ form_errors 'There was a problem signing up', xhr
19
+ )
20
+
21
+ save: (e) ->
22
+ e.preventDefault()
23
+ e.stopPropagation()
24
+
25
+ @model.unset("errors")
26
+
27
+ @model.save(@model.attributes,
28
+ success: (user, response, options) =>
29
+ @model = user
30
+ window.<%= js_app_name %>.User = @model
31
+ window.location.hash = "/"
32
+ )
33
+
34
+ render: ->
35
+ @$el.html(@template(@model.toJSON() ))
36
+
37
+ this.$("form").backboneLink(@model)
38
+
39
+ return this
data/lib/pbw/engine.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require 'pbw/version'
2
+ require 'mongoid'
3
+ require 'devise'
2
4
 
3
5
  module Pbw
4
6
  class Engine < ::Rails::Engine
@@ -20,6 +22,9 @@ module Pbw
20
22
  g.javascript_engine :coffee
21
23
  end
22
24
 
25
+ config.email_from_address = 'superadmin@localhost'
26
+ config.user_lifecycle_class = nil
27
+
23
28
  initializer "check config" do |app|
24
29
  config.mount_at += '/' unless config.mount_at.last == '/'
25
30
  end
@@ -28,17 +33,8 @@ module Pbw
28
33
  app.middleware.use ::ActionDispatch::Static, "#{root}/public"
29
34
  end
30
35
 
31
- def self.config(&block)
32
- yield Engine.config if block
33
- Engine.config
34
- end
35
-
36
36
  def self.version
37
37
  Pbw::VERSION
38
38
  end
39
-
40
- def self.user_lifecycle_class
41
- self.config.user_lifecycle_class || User::Lifecycle
42
- end
43
39
  end
44
40
  end
data/lib/pbw/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pbw
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
data/lib/pbw.rb CHANGED
@@ -1,6 +1,19 @@
1
- require 'mongoid'
2
- require 'devise'
3
1
  require "pbw/engine"
4
2
 
5
3
  module Pbw
4
+ def self.email_from_address
5
+ Engine.config.email_from_address
6
+ end
7
+
8
+ def self.email_from_address=(email)
9
+ Engine.config.email_from_address = email
10
+ end
11
+
12
+ def self.user_lifecycle_class
13
+ Engine.config.user_lifecycle_class || ::User::Lifecycle
14
+ end
15
+
16
+ def self.user_lifecycle_class=(klass)
17
+ Engine.config.user_lifecycle_class = klass
18
+ end
6
19
  end
@@ -0,0 +1,21 @@
1
+ (function($) {
2
+ return $.extend($.fn, {
3
+ backboneLink: function(model) {
4
+ return $(this).find(":input").each(function() {
5
+ var el, name;
6
+ el = $(this);
7
+ name = el.attr("name");
8
+ model.bind("change:" + name, function() {
9
+ return el.val(model.get(name));
10
+ });
11
+ return $(this).bind("change", function() {
12
+ var attrs;
13
+ el = $(this);
14
+ attrs = {};
15
+ attrs[el.attr("name")] = el.val();
16
+ return model.set(attrs);
17
+ });
18
+ });
19
+ }
20
+ });
21
+ })(jQuery);