maccman-bowline 0.1.4 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +3 -4
- data/README.txt +31 -8
- data/bowline.gemspec +4 -4
- data/examples/account.rb +31 -0
- data/examples/tweets.rb +28 -0
- data/examples/twitter.html +29 -33
- data/examples/users.rb +37 -0
- data/lib/bowline/commands/run.rb +3 -5
- data/lib/bowline/generators/application.rb +6 -1
- data/lib/bowline.rb +1 -1
- data/templates/config/environment.rb +1 -1
- data/templates/public/index.html +4 -2
- metadata +6 -7
- data/examples/account_binder.rb +0 -29
- data/examples/twitter_binder.rb +0 -46
- data/examples/twitter_login.html +0 -29
- data/examples/users_binder.rb +0 -39
data/Manifest.txt
CHANGED
@@ -9,12 +9,11 @@ assets/jquery.chain.js
|
|
9
9
|
assets/jquery.js
|
10
10
|
bin/bowline-gen
|
11
11
|
bowline.gemspec
|
12
|
-
examples/
|
12
|
+
examples/account.rb
|
13
13
|
examples/example.js
|
14
14
|
examples/twitter.html
|
15
|
-
examples/
|
16
|
-
examples/
|
17
|
-
examples/users_binder.rb
|
15
|
+
examples/tweets.rb
|
16
|
+
examples/users.rb
|
18
17
|
lib/bowline.rb
|
19
18
|
lib/bowline/binders.rb
|
20
19
|
lib/bowline/binders/collection.rb
|
data/README.txt
CHANGED
@@ -4,15 +4,15 @@ http://github.com/maccman/bowline
|
|
4
4
|
|
5
5
|
= DESCRIPTION
|
6
6
|
|
7
|
-
|
7
|
+
Ruby desktop application framework
|
8
8
|
|
9
9
|
= FEATURES
|
10
10
|
|
11
|
-
* Cross platform
|
12
11
|
* MVC
|
13
12
|
* Uses Webkit
|
14
13
|
* View in HTML/JavaScript
|
15
14
|
* Binding between HTML & Ruby
|
15
|
+
* Will be cross platform (though only OSX atm)
|
16
16
|
|
17
17
|
= CONTACT
|
18
18
|
|
@@ -20,16 +20,39 @@ info@eribium.org
|
|
20
20
|
http://eribium.org
|
21
21
|
http://twitter.com/maccman
|
22
22
|
|
23
|
-
= Usage
|
23
|
+
= Usage - Building a basic Twitter client
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
bowline-gen binder twitter
|
25
|
+
Build Titanium by following the instructions here:
|
26
|
+
http://wiki.github.com/marshall/titanium/build-instructions
|
28
27
|
|
28
|
+
Install the gem:
|
29
|
+
>> sudo gem install maccman-bowline --source http://gems.github.com
|
29
30
|
|
30
|
-
|
31
|
+
Run the app/binder generators:
|
32
|
+
>> bowline-gen app bowline_twitter
|
33
|
+
>> cd bowline_twitter
|
34
|
+
>> bowline-gen binder tweets
|
35
|
+
|
36
|
+
Copy tweets.rb from examples to app/binders/tweets.rb
|
37
|
+
Add your Twitter credentials to tweets.rb - in this simple example they're not dynamic.
|
38
|
+
|
39
|
+
Copy twitter.html from examples to public/index.html
|
40
|
+
|
41
|
+
Install the Twitter gem:
|
42
|
+
>> sudo gem install twitter
|
31
43
|
|
32
|
-
|
44
|
+
Add the Twitter gem to config/environment.rb:
|
45
|
+
config.gem "twitter"
|
46
|
+
|
47
|
+
run:
|
48
|
+
>> rake app:package TIPATH=~/path/to/titanium
|
49
|
+
|
50
|
+
run:
|
51
|
+
./script/run
|
52
|
+
|
53
|
+
That's it
|
54
|
+
|
55
|
+
= EXAMPLES
|
33
56
|
|
34
57
|
Usage for a collection (of users):
|
35
58
|
|
data/bowline.gemspec
CHANGED
@@ -2,24 +2,24 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{bowline}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.6"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Alex MacCaw"]
|
9
9
|
s.date = %q{2009-04-24}
|
10
10
|
s.default_executable = %q{bowline-gen}
|
11
|
-
s.description = %q{
|
11
|
+
s.description = %q{Ruby desktop application framework}
|
12
12
|
s.email = ["info@eribium.org"]
|
13
13
|
s.executables = ["bowline-gen"]
|
14
14
|
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
|
15
|
-
s.files = [".gitignore", "History.txt", "MIT-LICENSE", "Manifest.txt", "README.txt", "Rakefile", "assets/jquery.bowline.js", "assets/jquery.chain.js", "assets/jquery.js", "bin/bowline-gen", "bowline.gemspec", "examples/
|
15
|
+
s.files = [".gitignore", "History.txt", "MIT-LICENSE", "Manifest.txt", "README.txt", "Rakefile", "assets/jquery.bowline.js", "assets/jquery.chain.js", "assets/jquery.js", "bin/bowline-gen", "bowline.gemspec", "examples/account.rb", "examples/example.js", "examples/twitter.html", "examples/tweets.rb", "examples/users.rb", "lib/bowline.rb", "lib/bowline/binders.rb", "lib/bowline/binders/collection.rb", "lib/bowline/binders/singleton.rb", "lib/bowline/commands/console.rb", "lib/bowline/commands/generate.rb", "lib/bowline/commands/run.rb", "lib/bowline/ext/array.rb", "lib/bowline/ext/class.rb", "lib/bowline/ext/object.rb", "lib/bowline/ext/string.rb", "lib/bowline/gem_dependency.rb", "lib/bowline/generators.rb", "lib/bowline/generators/application.rb", "lib/bowline/generators/binder.rb", "lib/bowline/generators/migration.rb", "lib/bowline/generators/model.rb", "lib/bowline/initializer.rb", "lib/bowline/jquery.rb", "lib/bowline/observer.rb", "lib/bowline/tasks/app.rake", "lib/bowline/tasks/bowline.rb", "lib/bowline/tasks/database.rake", "lib/bowline/tasks/log.rake", "lib/bowline/tasks/misk.rake", "templates/Rakefile", "templates/binder.rb", "templates/config/application.yml", "templates/config/boot.rb", "templates/config/database.yml", "templates/config/environment.rb", "templates/config/manifest", "templates/config/tiapp.xml", "templates/gitignore", "templates/migration.rb", "templates/model.rb", "templates/public/index.html", "templates/public/javascripts/application.js", "templates/public/stylesheets/application.css", "templates/script/console", "templates/script/init", "templates/script/run"]
|
16
16
|
s.has_rdoc = true
|
17
17
|
s.homepage = %q{http://github.com/maccman/bowline}
|
18
18
|
s.rdoc_options = ["--main", "README.txt"]
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
s.rubyforge_project = %q{maccman}
|
21
21
|
s.rubygems_version = %q{1.3.2}
|
22
|
-
s.summary = %q{
|
22
|
+
s.summary = %q{Ruby desktop application framework}
|
23
23
|
|
24
24
|
if s.respond_to? :specification_version then
|
25
25
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
data/examples/account.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Binders
|
2
|
+
class Account < Bowline::Binders::Singleton
|
3
|
+
class << self
|
4
|
+
# self.collection is a special method
|
5
|
+
# Basically it'll update users on the client side
|
6
|
+
def index
|
7
|
+
self.item = current_account
|
8
|
+
end
|
9
|
+
|
10
|
+
def destroy
|
11
|
+
current_account.destroy
|
12
|
+
self.item = nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# Everything has a js_id which is basically the lowercase classname + _ + self.id
|
17
|
+
def highlight
|
18
|
+
# Calls $(element).highlight()
|
19
|
+
self.element.highlight
|
20
|
+
end
|
21
|
+
|
22
|
+
# Overrides charge on user
|
23
|
+
def charge!
|
24
|
+
# calls charge on model (i.e. do sql commit )
|
25
|
+
self.item.charge!
|
26
|
+
# Now gui stuff
|
27
|
+
flash[:notice] = "Successfully charged"
|
28
|
+
highlight
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/examples/tweets.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Binders
|
2
|
+
class Tweets < Bowline::Binders::Collection
|
3
|
+
class << self
|
4
|
+
def index
|
5
|
+
self.items = timeline
|
6
|
+
end
|
7
|
+
|
8
|
+
def update(status)
|
9
|
+
twitter.update(status)
|
10
|
+
index # update timeline
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
def twitter
|
15
|
+
httpauth = Twitter::HTTPAuth.new('user', 'pass')
|
16
|
+
Twitter::Base.new(httpauth)
|
17
|
+
end
|
18
|
+
|
19
|
+
def timeline
|
20
|
+
twitter.friends_timeline.collect {|t|
|
21
|
+
t.delete('user')
|
22
|
+
t.to_hash
|
23
|
+
}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end # Binders
|
data/examples/twitter.html
CHANGED
@@ -4,40 +4,36 @@
|
|
4
4
|
<html lang="en">
|
5
5
|
<head>
|
6
6
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
7
|
-
<title>
|
8
|
-
|
9
|
-
<
|
10
|
-
|
11
|
-
<script src="jquery.js" type="text/javascript" charset="utf-8"></script>
|
12
|
-
<script src="chain.js" type="text/javascript" charset="utf-8"></script>
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
</script>
|
7
|
+
<title>Twitter</title>
|
8
|
+
<!--
|
9
|
+
<script src="http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js" type="text/javascript"></script>
|
10
|
+
-->
|
11
|
+
<script src="javascripts/jquery.js" type="text/javascript" charset="utf-8"></script>
|
12
|
+
<script src="javascripts/jquery.chain.js" type="text/javascript" charset="utf-8"></script>
|
13
|
+
<script src="javascripts/jquery.bowline.js" type="text/javascript" charset="utf-8"></script>
|
14
|
+
<script src="../script/init" type="text/ruby" charset="utf-8"></script>
|
15
|
+
<script src="javascripts/application.js" type="text/javascript" charset="utf-8"></script>
|
16
|
+
<link rel="stylesheet" href="stylesheets/application.css" type="text/css" charset="utf-8">
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
jQuery(function($){
|
19
|
+
var tweets = $('#tweets').bowline('tweets');
|
20
|
+
tweets.invoke('index');
|
21
|
+
|
22
|
+
$('#updateSubmit').click(function(){
|
23
|
+
tweets.invoke('update', $('#updateText').val());
|
24
|
+
return false;
|
25
|
+
})
|
26
|
+
});
|
27
|
+
</script>
|
29
28
|
</head>
|
30
|
-
<body>
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
29
|
+
<body>
|
30
|
+
<div id="tweets">
|
31
|
+
<div class="item">
|
32
|
+
<span class="text"></span>
|
33
|
+
</div>
|
35
34
|
</div>
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
<input type="text" name="update" id="update">
|
40
|
-
<input type="submit" value="Update →">
|
41
|
-
</form>
|
35
|
+
|
36
|
+
<input type="text" id="updateText">
|
37
|
+
<input type="submit" value="Update →" id="updateSubmit">
|
42
38
|
</body>
|
43
39
|
</html>
|
data/examples/users.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module Binders
|
2
|
+
class Users < Bowline::Binders::Collection
|
3
|
+
class << self
|
4
|
+
# self.items is a special method
|
5
|
+
# Basically it'll update users on the client side
|
6
|
+
def index
|
7
|
+
self.items = User.all
|
8
|
+
end
|
9
|
+
|
10
|
+
def admins
|
11
|
+
self.items = User.admins.all
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def update(attrs)
|
16
|
+
if @item.update_attributes(attrs)
|
17
|
+
flash[:notice] = "Successfully updated"
|
18
|
+
else
|
19
|
+
flash[:notice] = "Errors updating users"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def highlight
|
24
|
+
# Calls $('user_1').highlight()
|
25
|
+
self.element.highlight
|
26
|
+
end
|
27
|
+
|
28
|
+
# Overrides charge on user
|
29
|
+
def charge!
|
30
|
+
# calls charge! on model (i.e. do sql commit )
|
31
|
+
self.item.charge!
|
32
|
+
# Now gui stuff
|
33
|
+
flash[:notice] = "Successfully charged"
|
34
|
+
highlight
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/bowline/commands/run.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require "config/environment"
|
1
2
|
exec_path = File.join(APP_ROOT, 'build', 'osx', "#{APP_NAME}.app")
|
2
3
|
|
3
4
|
unless File.exist?(exec_path)
|
@@ -6,8 +7,5 @@ unless File.exist?(exec_path)
|
|
6
7
|
Rake::Task['app:bundle'].invoke
|
7
8
|
end
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
else
|
12
|
-
`open #{exec_path}`
|
13
|
-
end
|
10
|
+
# Debug view
|
11
|
+
`open #{File.join(exec_path, 'Contents', 'MacOS', APP_NAME)}`
|
@@ -9,9 +9,14 @@ module Bowline::Generators
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def destination_root
|
12
|
+
# Todo - only works relative
|
12
13
|
File.join(@destination_root, base_name)
|
13
14
|
end
|
14
15
|
|
16
|
+
def full_name
|
17
|
+
File.basename(name).camel_case
|
18
|
+
end
|
19
|
+
|
15
20
|
first_argument :name, :required => true, :desc => "application name"
|
16
21
|
|
17
22
|
empty_directory :tmp, "tmp"
|
@@ -26,7 +31,7 @@ module Bowline::Generators
|
|
26
31
|
file :gitignore, "gitignore", ".gitignore"
|
27
32
|
|
28
33
|
empty_directory :public, "public"
|
29
|
-
|
34
|
+
template :index, "public/index.html", "public/index.html"
|
30
35
|
glob! "public/javascripts"
|
31
36
|
glob! "public/stylesheets"
|
32
37
|
|
data/lib/bowline.rb
CHANGED
data/templates/public/index.html
CHANGED
@@ -4,8 +4,10 @@
|
|
4
4
|
<html lang="en">
|
5
5
|
<head>
|
6
6
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
7
|
-
<title
|
8
|
-
|
7
|
+
<title><%= full_name %></title>
|
8
|
+
<!--
|
9
|
+
<script src="http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js" type="text/javascript"></script>
|
10
|
+
-->
|
9
11
|
<script src="javascripts/jquery.js" type="text/javascript" charset="utf-8"></script>
|
10
12
|
<script src="javascripts/jquery.chain.js" type="text/javascript" charset="utf-8"></script>
|
11
13
|
<script src="javascripts/jquery.bowline.js" type="text/javascript" charset="utf-8"></script>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maccman-bowline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex MacCaw
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: 1.8.0
|
54
54
|
version:
|
55
|
-
description:
|
55
|
+
description: Ruby desktop application framework
|
56
56
|
email:
|
57
57
|
- info@eribium.org
|
58
58
|
executables:
|
@@ -75,12 +75,11 @@ files:
|
|
75
75
|
- assets/jquery.js
|
76
76
|
- bin/bowline-gen
|
77
77
|
- bowline.gemspec
|
78
|
-
- examples/
|
78
|
+
- examples/account.rb
|
79
79
|
- examples/example.js
|
80
80
|
- examples/twitter.html
|
81
|
-
- examples/
|
82
|
-
- examples/
|
83
|
-
- examples/users_binder.rb
|
81
|
+
- examples/tweets.rb
|
82
|
+
- examples/users.rb
|
84
83
|
- lib/bowline.rb
|
85
84
|
- lib/bowline/binders.rb
|
86
85
|
- lib/bowline/binders/collection.rb
|
@@ -149,6 +148,6 @@ rubyforge_project: maccman
|
|
149
148
|
rubygems_version: 1.2.0
|
150
149
|
signing_key:
|
151
150
|
specification_version: 3
|
152
|
-
summary:
|
151
|
+
summary: Ruby desktop application framework
|
153
152
|
test_files: []
|
154
153
|
|
data/examples/account_binder.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
class AccountBinder < Bowline::Singleton
|
2
|
-
class << self
|
3
|
-
# self.collection is a special method
|
4
|
-
# Basically it'll update users on the client side
|
5
|
-
def index
|
6
|
-
self.item = current_account
|
7
|
-
end
|
8
|
-
|
9
|
-
def destroy
|
10
|
-
current_account.destroy
|
11
|
-
self.item = nil
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
# Everything has a js_id which is basically the lowercase classname + _ + self.id
|
16
|
-
def highlight
|
17
|
-
# Calls $(element).highlight()
|
18
|
-
self.element.highlight
|
19
|
-
end
|
20
|
-
|
21
|
-
# Overrides charge on user
|
22
|
-
def charge!
|
23
|
-
# calls charge on model (i.e. do sql commit )
|
24
|
-
self.item.charge!
|
25
|
-
# Now gui stuff
|
26
|
-
flash[:notice] = "Successfully charged"
|
27
|
-
highlight
|
28
|
-
end
|
29
|
-
end
|
data/examples/twitter_binder.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
class TwitterBinder < Bowline::Binders::Collection
|
2
|
-
cattr_accessor :user, :pass
|
3
|
-
|
4
|
-
class << self
|
5
|
-
def index
|
6
|
-
self.items = timeline
|
7
|
-
end
|
8
|
-
|
9
|
-
def update(text)
|
10
|
-
twit.update(text)
|
11
|
-
index # update timeline
|
12
|
-
end
|
13
|
-
|
14
|
-
def login
|
15
|
-
self.user, self.pass = params[:user], params[:pass]
|
16
|
-
if logged_in?
|
17
|
-
show_view :twitter
|
18
|
-
index
|
19
|
-
else
|
20
|
-
js.alert('Credentials invalid')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def logged_in?
|
25
|
-
return false unless self.user && self.pass
|
26
|
-
begin
|
27
|
-
twit.timeline && true
|
28
|
-
rescue Twitter::CantConnect
|
29
|
-
false
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
protected
|
34
|
-
def twit
|
35
|
-
httpauth = Twitter::HTTPAuth.new(self.user, self.pass)
|
36
|
-
Twitter::Base.new(httpauth)
|
37
|
-
end
|
38
|
-
|
39
|
-
def timeline
|
40
|
-
twit.friends_timeline.collect {|t|
|
41
|
-
t.delete('user')
|
42
|
-
t.to_hash
|
43
|
-
}
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
data/examples/twitter_login.html
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
2
|
-
"http://www.w3.org/TR/html4/strict.dtd">
|
3
|
-
|
4
|
-
<html lang="en">
|
5
|
-
<head>
|
6
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
7
|
-
<title>twitter_login</title>
|
8
|
-
<meta name="generator" content="TextMate http://macromates.com/">
|
9
|
-
<meta name="author" content="Alex MacCaw">
|
10
|
-
<!-- Date: 2009-01-10 -->
|
11
|
-
<script src="jquery.js" type="text/javascript" charset="utf-8"></script>
|
12
|
-
<script src="chain.js" type="text/javascript" charset="utf-8"></script>
|
13
|
-
<script src="bowline.js" type="text/javascript" charset="utf-8"></script>
|
14
|
-
</head>
|
15
|
-
<body>
|
16
|
-
<script type="text/javascript" charset="utf-8">
|
17
|
-
jQuery(function($){
|
18
|
-
$.setupForms();
|
19
|
-
});
|
20
|
-
</script>
|
21
|
-
|
22
|
-
<form action="twitter_binder.login" method="get">
|
23
|
-
<input type="text" name="user" id="user">
|
24
|
-
<input type="password" name="pass" id="pass">
|
25
|
-
|
26
|
-
<p><input type="submit" value="Login →"></p>
|
27
|
-
</form>
|
28
|
-
</body>
|
29
|
-
</html>
|
data/examples/users_binder.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
class UsersBinder < Bowline::Collection
|
2
|
-
class << self
|
3
|
-
# self.items is a special method
|
4
|
-
# Basically it'll update users on the client side
|
5
|
-
def index
|
6
|
-
self.items = User.all
|
7
|
-
end
|
8
|
-
|
9
|
-
# def index(offset)
|
10
|
-
# self.items = User.all(:conditions => ['id > ?', offset])
|
11
|
-
# end
|
12
|
-
|
13
|
-
def admins
|
14
|
-
self.items = User.admins.all
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def update(attrs)
|
19
|
-
if @item.update_attributes(attrs)
|
20
|
-
flash[:notice] = "Successfully updated"
|
21
|
-
else
|
22
|
-
flash[:notice] = "Errors updating users"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def highlight
|
27
|
-
# Calls $('user_1').highlight()
|
28
|
-
self.element.highlight
|
29
|
-
end
|
30
|
-
|
31
|
-
# Overrides charge on user
|
32
|
-
def charge!
|
33
|
-
# calls charge! on model (i.e. do sql commit )
|
34
|
-
self.item.charge!
|
35
|
-
# Now gui stuff
|
36
|
-
flash[:notice] = "Successfully charged"
|
37
|
-
highlight
|
38
|
-
end
|
39
|
-
end
|