pbw 0.0.9 → 0.0.10
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/application_controller.rb +3 -16
- data/app/controllers/pbw/base_models_controller.rb +10 -32
- data/app/controllers/pbw/passwords_controller.rb +14 -0
- data/app/controllers/pbw/registrations_controller.rb +9 -6
- data/app/controllers/pbw/sessions_controller.rb +9 -4
- data/app/mailers/pbw/user_mailer.rb +16 -0
- data/app/models/pbw/area.rb +5 -5
- data/app/models/pbw/attached_process.rb +3 -3
- data/app/models/pbw/capability.rb +1 -1
- data/app/models/pbw/command.rb +2 -2
- data/app/models/pbw/constraint.rb +2 -2
- data/app/models/pbw/item.rb +2 -2
- data/app/models/pbw/item_container.rb +4 -4
- data/app/models/pbw/item_conversion.rb +1 -1
- data/app/models/pbw/process.rb +2 -2
- data/app/models/pbw/token.rb +7 -7
- data/app/models/pbw/trigger.rb +3 -3
- data/app/models/pbw/user.rb +30 -8
- data/config/initializers/devise.rb +1 -66
- data/config/locales/pbw.en.yml +7 -0
- data/config/routes.rb +2 -4
- data/lib/generators/pbw/install/install_generator.rb +22 -3
- data/lib/generators/pbw/model_generator.rb +6 -0
- data/lib/generators/pbw/resource_helpers.rb +16 -0
- data/lib/generators/pbw/rules/capability/capability_generator.rb +4 -2
- data/lib/generators/pbw/rules/constraint/constraint_generator.rb +4 -2
- data/lib/generators/pbw/rules/process/process_generator.rb +4 -2
- data/lib/generators/pbw/rules/trigger/trigger_generator.rb +4 -2
- data/lib/generators/pbw/scaffold_generator.rb +0 -12
- data/lib/generators/pbw/templates/app.coffee +5 -3
- data/lib/generators/pbw/templates/application.erb +24 -0
- data/lib/generators/pbw/templates/lifecycle.rb +1 -0
- data/lib/generators/pbw/templates/pbw.coffee +21 -0
- data/lib/generators/pbw/templates/router.coffee +15 -0
- data/lib/generators/pbw/templates/templates/home.jst +10 -1
- data/lib/generators/pbw/templates/templates/login.jst +25 -0
- data/lib/generators/pbw/templates/templates/recover_password.jst +17 -0
- data/lib/generators/pbw/templates/templates/signup.jst +29 -0
- data/lib/generators/pbw/templates/user_recovery.coffee +6 -0
- data/lib/generators/pbw/templates/user_registration.coffee +9 -0
- data/lib/generators/pbw/templates/user_session.coffee +8 -0
- data/lib/generators/pbw/templates/views/edit_view.coffee +15 -8
- data/lib/generators/pbw/templates/views/login_view.coffee +39 -0
- data/lib/generators/pbw/templates/views/new_view.coffee +5 -9
- data/lib/generators/pbw/templates/views/recovery_view.coffee +38 -0
- data/lib/generators/pbw/templates/views/signup_view.coffee +39 -0
- data/lib/pbw/engine.rb +5 -9
- data/lib/pbw/version.rb +1 -1
- data/lib/pbw.rb +15 -2
- data/vendor/assets/javascripts/backbone_datalink.js +21 -0
- metadata +16 -44
- data/app/controllers/pbw/capabilities_controller.rb +0 -7
- data/app/controllers/pbw/constraints_controller.rb +0 -7
- data/app/controllers/pbw/processes_controller.rb +0 -7
- data/app/controllers/pbw/triggers_controller.rb +0 -7
- data/public/Foundation-MIT-LICENSE.txt +0 -20
- data/public/config.rb +0 -26
- data/public/javascripts/foundation/foundation.alerts.js +0 -52
- data/public/javascripts/foundation/foundation.clearing.js +0 -516
- data/public/javascripts/foundation/foundation.cookie.js +0 -74
- data/public/javascripts/foundation/foundation.dropdown.js +0 -178
- data/public/javascripts/foundation/foundation.forms.js +0 -525
- data/public/javascripts/foundation/foundation.interchange.js +0 -271
- data/public/javascripts/foundation/foundation.joyride.js +0 -844
- data/public/javascripts/foundation/foundation.js +0 -447
- data/public/javascripts/foundation/foundation.magellan.js +0 -134
- data/public/javascripts/foundation/foundation.orbit.js +0 -390
- data/public/javascripts/foundation/foundation.placeholder.js +0 -179
- data/public/javascripts/foundation/foundation.reveal.js +0 -330
- data/public/javascripts/foundation/foundation.section.js +0 -422
- data/public/javascripts/foundation/foundation.tooltips.js +0 -208
- data/public/javascripts/foundation/foundation.topbar.js +0 -303
- data/public/javascripts/vendor/custom.modernizr.js +0 -4
- data/public/javascripts/vendor/jquery.js +0 -9807
- data/public/javascripts/vendor/zepto.js +0 -2000
- data/public/sass/_normalize.scss +0 -402
- data/public/sass/_settings.scss +0 -1271
- data/public/sass/app.scss +0 -48
- data/public/stylesheets/app.css +0 -6686
@@ -1,8 +1,10 @@
|
|
1
|
-
require 'generators/pbw/
|
1
|
+
require 'generators/pbw/model_generator'
|
2
2
|
require 'generators/pbw/rules/rules'
|
3
3
|
|
4
|
-
class Pbw::Rules::ConstraintGenerator < Pbw::Generators::
|
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/
|
1
|
+
require 'generators/pbw/model_generator'
|
2
2
|
require 'generators/pbw/rules/rules'
|
3
3
|
|
4
|
-
class Pbw::Rules::ProcessGenerator < Pbw::Generators::
|
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/
|
1
|
+
require 'generators/pbw/model_generator'
|
2
2
|
require 'generators/pbw/rules/rules'
|
3
3
|
|
4
|
-
class Pbw::Rules::TriggerGenerator < Pbw::Generators::
|
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
|
-
|
11
|
-
|
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>
|
@@ -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
|
-
|
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>
|
@@ -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,
|
18
|
-
|
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
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);
|