smukherjee-openbill 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/.actionScriptProperties +4 -1
- data/VERSION +1 -1
- data/app/controllers/application.rb +50 -0
- data/app/controllers/carts_controller.rb +0 -33
- data/app/controllers/products_controller.rb +48 -15
- data/app/controllers/sessions_controller.rb +2 -2
- data/app/controllers/settings_controller.rb +4 -2
- data/app/controllers/users_controller.rb +52 -0
- data/app/helpers/users_helper.rb +2 -0
- data/app/models/user.rb +7 -0
- data/app/views/layouts/users.html.erb +17 -0
- data/config/routes.rb +2 -1
- data/openbill.gemspec +20 -3
- data/pkg/openbill-0.1.6.gem +0 -0
- data/pkg/openbill-0.1.7.gem +0 -0
- data/public/admin.swf +0 -0
- data/public/images/delete.png +0 -0
- data/public/images/done.png +0 -0
- data/public/images/edit.png +0 -0
- data/public/modules/AdminHome.swf +0 -0
- data/public/modules/CustomerList.swf +0 -0
- data/public/stylesheets/default.css +1 -1
- data/src/admin.mxml +18 -6
- data/src/images/delete.png +0 -0
- data/src/images/done.png +0 -0
- data/src/images/edit.png +0 -0
- data/src/modules/AdminHome.mxml +26 -0
- data/src/modules/CustomerList.mxml +32 -0
- data/src/org/rsos/openbill/business/RailsDelegate.as +16 -0
- data/src/org/rsos/openbill/command/CustomerCommand.as +49 -0
- data/src/org/rsos/openbill/control/OpenbillController.as +1 -0
- data/src/org/rsos/openbill/event/CustomerEvent.as +29 -0
- data/src/org/rsos/openbill/model/OpenbillModelLocator.as +29 -15
- data/src/org/rsos/openbill/view/Header.mxml +9 -2
- data/src/org/rsos/openbill/view/SignIn.mxml +1 -1
- data/src/stylesheets/default.css +1 -1
- data/test/functional/users_controller_test.rb +8 -0
- metadata +20 -3
- data/src/org/rsos/openbill/view/Content.mxml +0 -20
data/.actionScriptProperties
CHANGED
@@ -21,6 +21,9 @@
|
|
21
21
|
<applications>
|
22
22
|
<application path="admin.mxml"/>
|
23
23
|
</applications>
|
24
|
-
<modules
|
24
|
+
<modules>
|
25
|
+
<module application="src/admin.mxml" destPath="modules/AdminHome.swf" optimize="true" sourcePath="src/modules/AdminHome.mxml"/>
|
26
|
+
<module application="src/admin.mxml" destPath="modules/CustomerList.swf" optimize="true" sourcePath="src/modules/CustomerList.mxml"/>
|
27
|
+
</modules>
|
25
28
|
<buildCSSFiles/>
|
26
29
|
</actionScriptProperties>
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.7
|
@@ -46,4 +46,54 @@ class ApplicationController < ActionController::Base
|
|
46
46
|
|
47
47
|
helper :all
|
48
48
|
|
49
|
+
def admin_login_required
|
50
|
+
if authorized?
|
51
|
+
@user = User.find(current_user.id)
|
52
|
+
if @user.role.role_name == "Admin"
|
53
|
+
session[:account_id] = @user.account_id
|
54
|
+
else
|
55
|
+
logout_killing_session!
|
56
|
+
access_denied
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
if params[:account_id]!=nil
|
61
|
+
session[:account_id] = params[:account_id]
|
62
|
+
elsif session[:account_id]==nil
|
63
|
+
session[:account_id]=1
|
64
|
+
end
|
65
|
+
|
66
|
+
@account = Account.find(session[:account_id])
|
67
|
+
end
|
68
|
+
|
69
|
+
def init_cart
|
70
|
+
if authorized?
|
71
|
+
@user = User.find(current_user.id)
|
72
|
+
if @user.role.role_name == "Customer"
|
73
|
+
session[:account_id] = @user.account_id
|
74
|
+
else
|
75
|
+
logout_killing_session!
|
76
|
+
end
|
77
|
+
else
|
78
|
+
@user = User.new
|
79
|
+
@user.account_id = session[:account_id]
|
80
|
+
end
|
81
|
+
|
82
|
+
if params[:account_id]!=nil
|
83
|
+
session[:account_id] = params[:account_id]
|
84
|
+
elsif session[:account_id]==nil
|
85
|
+
session[:account_id]=1
|
86
|
+
end
|
87
|
+
|
88
|
+
if session[:order]==nil
|
89
|
+
session[:order] = Order.new
|
90
|
+
session[:order].user = @user
|
91
|
+
end
|
92
|
+
|
93
|
+
@account = Account.find(session[:account_id])
|
94
|
+
@setting = @account.settings.find(:first)
|
95
|
+
@tlds = @account.tlds
|
96
|
+
@order = session[:order]
|
97
|
+
end
|
98
|
+
|
49
99
|
end
|
@@ -189,38 +189,5 @@ protected
|
|
189
189
|
flash[:error] = "Couldn't log you in as '#{params[:login]}'"
|
190
190
|
logger.warn "Failed login for '#{params[:login]}' from #{request.remote_ip} at #{Time.now.utc}"
|
191
191
|
end
|
192
|
-
|
193
|
-
private
|
194
|
-
def init_cart
|
195
|
-
|
196
|
-
if authorized?
|
197
|
-
@user = User.find(current_user.id)
|
198
|
-
if @user.role.role_name == "Customer"
|
199
|
-
session[:account_id] = @user.account_id
|
200
|
-
else
|
201
|
-
logout_killing_session!
|
202
|
-
end
|
203
|
-
else
|
204
|
-
@user = User.new
|
205
|
-
@user.account_id = session[:account_id]
|
206
|
-
end
|
207
|
-
|
208
|
-
if params[:account_id]!=nil
|
209
|
-
session[:account_id] = params[:account_id]
|
210
|
-
elsif session[:account_id]==nil
|
211
|
-
session[:account_id]=1
|
212
|
-
end
|
213
|
-
|
214
|
-
if session[:order]==nil
|
215
|
-
session[:order] = Order.new
|
216
|
-
session[:order].user = @user
|
217
|
-
end
|
218
|
-
|
219
|
-
@account = Account.find(session[:account_id])
|
220
|
-
@setting = @account.settings.find(:first)
|
221
|
-
@tlds = @account.tlds
|
222
|
-
@order = session[:order]
|
223
|
-
|
224
|
-
end
|
225
192
|
|
226
193
|
end
|
@@ -1,19 +1,52 @@
|
|
1
1
|
class ProductsController < ApplicationController
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
before_filter :admin_login_required
|
4
|
+
|
5
|
+
# GET /products
|
6
|
+
# GET /products.xml
|
7
|
+
def index
|
8
|
+
@products = @account.products.find(:all)
|
9
|
+
render :xml => @products
|
10
|
+
end
|
4
11
|
|
5
|
-
|
6
|
-
|
7
|
-
|
12
|
+
# GET /products/1
|
13
|
+
# GET /products/1.xml
|
14
|
+
def show
|
15
|
+
@product = @account.products.find(params[:id])
|
16
|
+
render :xml => @product
|
17
|
+
end
|
18
|
+
|
19
|
+
# POST /products
|
20
|
+
# POST /products.xml
|
21
|
+
def create
|
22
|
+
@product = Product.new(params[:product])
|
23
|
+
if @product.save
|
24
|
+
flash[:notice] = 'Product was successfully created.'
|
25
|
+
render :xml => @product, :status => :ok
|
26
|
+
else
|
27
|
+
render :xml => @product.errors, :status => :ok
|
8
28
|
end
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
# PUT /products/1
|
33
|
+
# PUT /products/1.xml
|
34
|
+
def update
|
35
|
+
@product = @account.products.find(params[:id])
|
36
|
+
if @product.update_attributes(params[:product])
|
37
|
+
flash[:notice] = 'Product was successfully updated.'
|
38
|
+
render :xml => @product, :status => :ok
|
39
|
+
else
|
40
|
+
render :xml => @product.errors, :status => :ok
|
18
41
|
end
|
19
|
-
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
# DELETE /products/1
|
46
|
+
# DELETE /products/1.xml
|
47
|
+
def destroy
|
48
|
+
@product = @account.products.find(params[:id])
|
49
|
+
@product.destroy
|
50
|
+
render :xml => @product, :status => :ok
|
51
|
+
end
|
52
|
+
end
|
@@ -3,7 +3,7 @@ class SessionsController < ApplicationController
|
|
3
3
|
def create
|
4
4
|
if authorized? && User.find(self.current_user.id).role.role_name == params[:role_name]
|
5
5
|
@user = User.find(self.current_user.id)
|
6
|
-
render :xml => @user
|
6
|
+
render :xml => @user, :status=>:ok
|
7
7
|
else
|
8
8
|
logout_keeping_session!
|
9
9
|
user = User.authenticate(params[:login], params[:password])
|
@@ -13,7 +13,7 @@ class SessionsController < ApplicationController
|
|
13
13
|
handle_remember_cookie! new_cookie_flag
|
14
14
|
flash[:notice] = "Logged in successfully"
|
15
15
|
@user = User.find(self.current_user.id)
|
16
|
-
render :xml => @user
|
16
|
+
render :xml => @user, :status=>:ok
|
17
17
|
else
|
18
18
|
note_failed_signin
|
19
19
|
@login = params[:login]
|
@@ -1,9 +1,11 @@
|
|
1
1
|
class SettingsController < ApplicationController
|
2
2
|
|
3
|
-
before_filter :
|
3
|
+
before_filter :admin_login_required
|
4
4
|
|
5
|
+
# PUT /settings/1
|
6
|
+
# PUT /settings/1.xml
|
5
7
|
def update
|
6
|
-
@setting =
|
8
|
+
@setting = @account.settings.find(:first)
|
7
9
|
if @setting.update_attributes(params[:setting])
|
8
10
|
flash[:notice] = 'Settings was successfully updated.'
|
9
11
|
render :xml => @setting, :status => :ok
|
@@ -0,0 +1,52 @@
|
|
1
|
+
class UsersController < ApplicationController
|
2
|
+
|
3
|
+
before_filter :admin_login_required
|
4
|
+
|
5
|
+
# GET /users
|
6
|
+
# GET /users.xml
|
7
|
+
def index
|
8
|
+
@users = @account.users.find(:all)
|
9
|
+
render :xml => @users
|
10
|
+
end
|
11
|
+
|
12
|
+
# GET /users/1
|
13
|
+
# GET /users/1.xml
|
14
|
+
def show
|
15
|
+
@user = @account.users.find(params[:id])
|
16
|
+
render :xml => @user
|
17
|
+
end
|
18
|
+
|
19
|
+
# POST /users
|
20
|
+
# POST /users.xml
|
21
|
+
def create
|
22
|
+
@user = User.new(params[:user])
|
23
|
+
if @user.save
|
24
|
+
flash[:notice] = 'User was successfully created.'
|
25
|
+
render :xml => @user, :status => :ok
|
26
|
+
else
|
27
|
+
render :xml => @user.errors, :status => :ok
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
# PUT /users/1
|
33
|
+
# PUT /users/1.xml
|
34
|
+
def update
|
35
|
+
@user = @account.users.find(params[:id])
|
36
|
+
if @user.update_attributes(params[:user])
|
37
|
+
flash[:notice] = 'User was successfully updated.'
|
38
|
+
render :xml => @user, :status => :ok
|
39
|
+
else
|
40
|
+
render :xml => @user.errors, :status => :ok
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
# DELETE /users/1
|
46
|
+
# DELETE /users/1.xml
|
47
|
+
def destroy
|
48
|
+
@user = @account.users.find(params[:id])
|
49
|
+
@user.destroy
|
50
|
+
render :xml => @user, :status => :ok
|
51
|
+
end
|
52
|
+
end
|
data/app/models/user.rb
CHANGED
@@ -59,6 +59,13 @@ class User < ActiveRecord::Base
|
|
59
59
|
def email=(value)
|
60
60
|
write_attribute :email, (value ? value.downcase : nil)
|
61
61
|
end
|
62
|
+
|
63
|
+
alias_method :_to_xml, :to_xml
|
64
|
+
|
65
|
+
def to_xml(options = {})
|
66
|
+
default_options = {:include => [:role, :account, :settings, :currencies], :except => [:activation_code,:crypted_password,:salt, :remember_token, :remember_token_expires_at]}
|
67
|
+
self._to_xml(options.merge(default_options))
|
68
|
+
end
|
62
69
|
|
63
70
|
protected
|
64
71
|
def make_activation_code
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
|
7
|
+
<title>Users: <%= controller.action_name %></title>
|
8
|
+
<%= stylesheet_link_tag 'scaffold' %>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
|
12
|
+
<p style="color: green"><%= flash[:notice] %></p>
|
13
|
+
|
14
|
+
<%= yield %>
|
15
|
+
|
16
|
+
</body>
|
17
|
+
</html>
|
data/config/routes.rb
CHANGED
data/openbill.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{openbill}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.7"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Siddhartha Mukherjee"]
|
9
|
-
s.date = %q{2009-05-
|
9
|
+
s.date = %q{2009-05-31}
|
10
10
|
s.description = %q{Open source web hosting billing platform}
|
11
11
|
s.email = %q{support@rsos.in}
|
12
12
|
s.extra_rdoc_files = [
|
@@ -30,11 +30,13 @@ Gem::Specification.new do |s|
|
|
30
30
|
"app/controllers/products_controller.rb",
|
31
31
|
"app/controllers/sessions_controller.rb",
|
32
32
|
"app/controllers/settings_controller.rb",
|
33
|
+
"app/controllers/users_controller.rb",
|
33
34
|
"app/helpers/application_helper.rb",
|
34
35
|
"app/helpers/carts_helper.rb",
|
35
36
|
"app/helpers/products_helper.rb",
|
36
37
|
"app/helpers/sessions_helper.rb",
|
37
38
|
"app/helpers/settings_helper.rb",
|
39
|
+
"app/helpers/users_helper.rb",
|
38
40
|
"app/models/account.rb",
|
39
41
|
"app/models/billingcycle.rb",
|
40
42
|
"app/models/currency.rb",
|
@@ -72,6 +74,7 @@ Gem::Specification.new do |s|
|
|
72
74
|
"app/views/carts/customer.html.erb",
|
73
75
|
"app/views/carts/order.html.erb",
|
74
76
|
"app/views/layouts/default.html.erb",
|
77
|
+
"app/views/layouts/users.html.erb",
|
75
78
|
"app/views/user_mailer/activation.erb",
|
76
79
|
"app/views/user_mailer/signup_notification.erb",
|
77
80
|
"config/boot.rb",
|
@@ -124,6 +127,7 @@ Gem::Specification.new do |s|
|
|
124
127
|
"pkg/openbill-0.1.4.gem",
|
125
128
|
"pkg/openbill-0.1.5.gem",
|
126
129
|
"pkg/openbill-0.1.6.gem",
|
130
|
+
"pkg/openbill-0.1.7.gem",
|
127
131
|
"public/404.html",
|
128
132
|
"public/422.html",
|
129
133
|
"public/500.html",
|
@@ -318,6 +322,9 @@ Gem::Specification.new do |s|
|
|
318
322
|
"public/history/history.js",
|
319
323
|
"public/history/historyFrame.html",
|
320
324
|
"public/images/avatar.png",
|
325
|
+
"public/images/delete.png",
|
326
|
+
"public/images/done.png",
|
327
|
+
"public/images/edit.png",
|
321
328
|
"public/images/logo.png",
|
322
329
|
"public/images/rails.png",
|
323
330
|
"public/images/spinner.gif",
|
@@ -330,6 +337,8 @@ Gem::Specification.new do |s|
|
|
330
337
|
"public/javascripts/jquery.localscroll.js",
|
331
338
|
"public/javascripts/jquery.scrollTo.js",
|
332
339
|
"public/javascripts/prototype.js",
|
340
|
+
"public/modules/AdminHome.swf",
|
341
|
+
"public/modules/CustomerList.swf",
|
333
342
|
"public/playerProductInstall.swf",
|
334
343
|
"public/privacy.html",
|
335
344
|
"public/robots.txt",
|
@@ -547,17 +556,24 @@ Gem::Specification.new do |s|
|
|
547
556
|
"src/assets/scroll/up_1.png",
|
548
557
|
"src/assets/scroll/up_2.png",
|
549
558
|
"src/assets/xml/listData.xml",
|
559
|
+
"src/images/delete.png",
|
560
|
+
"src/images/done.png",
|
561
|
+
"src/images/edit.png",
|
550
562
|
"src/images/logo.png",
|
551
563
|
"src/libs/Cairngorm.swc",
|
552
564
|
"src/libs/flexlib.swc",
|
565
|
+
"src/modules/AdminHome.mxml",
|
566
|
+
"src/modules/CustomerList.mxml",
|
553
567
|
"src/org/rsos/openbill/business/RailsDelegate.as",
|
554
568
|
"src/org/rsos/openbill/business/Services.mxml",
|
569
|
+
"src/org/rsos/openbill/command/CustomerCommand.as",
|
555
570
|
"src/org/rsos/openbill/command/FpCommand.as",
|
556
571
|
"src/org/rsos/openbill/command/LoginCommand.as",
|
557
572
|
"src/org/rsos/openbill/command/LogoutCommand.as",
|
558
573
|
"src/org/rsos/openbill/command/ProductCommand.as",
|
559
574
|
"src/org/rsos/openbill/command/SettingCommand.as",
|
560
575
|
"src/org/rsos/openbill/control/OpenbillController.as",
|
576
|
+
"src/org/rsos/openbill/event/CustomerEvent.as",
|
561
577
|
"src/org/rsos/openbill/event/FpEvent.as",
|
562
578
|
"src/org/rsos/openbill/event/LoginEvent.as",
|
563
579
|
"src/org/rsos/openbill/event/LogoutEvent.as",
|
@@ -565,7 +581,6 @@ Gem::Specification.new do |s|
|
|
565
581
|
"src/org/rsos/openbill/event/SettingEvent.as",
|
566
582
|
"src/org/rsos/openbill/model/OpenbillModelLocator.as",
|
567
583
|
"src/org/rsos/openbill/util/ValueObjectUtil.as",
|
568
|
-
"src/org/rsos/openbill/view/Content.mxml",
|
569
584
|
"src/org/rsos/openbill/view/Footer.mxml",
|
570
585
|
"src/org/rsos/openbill/view/Header.mxml",
|
571
586
|
"src/org/rsos/openbill/view/Product.mxml",
|
@@ -606,6 +621,7 @@ Gem::Specification.new do |s|
|
|
606
621
|
"test/functional/products_controller_test.rb",
|
607
622
|
"test/functional/sessions_controller_test.rb",
|
608
623
|
"test/functional/settings_controller_test.rb",
|
624
|
+
"test/functional/users_controller_test.rb",
|
609
625
|
"test/integration/empty",
|
610
626
|
"test/performance/browsing_test.rb",
|
611
627
|
"test/test_helper.rb",
|
@@ -751,6 +767,7 @@ Gem::Specification.new do |s|
|
|
751
767
|
"test/functional/products_controller_test.rb",
|
752
768
|
"test/functional/sessions_controller_test.rb",
|
753
769
|
"test/functional/settings_controller_test.rb",
|
770
|
+
"test/functional/users_controller_test.rb",
|
754
771
|
"test/performance/browsing_test.rb",
|
755
772
|
"test/test_helper.rb",
|
756
773
|
"test/unit/account_test.rb",
|
data/pkg/openbill-0.1.6.gem
CHANGED
Binary file
|
Binary file
|
data/public/admin.swf
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/src/admin.mxml
CHANGED
@@ -38,6 +38,17 @@
|
|
38
38
|
loginEvent.userVO = new UserVO();
|
39
39
|
CairngormEventDispatcher.getInstance().dispatchEvent(loginEvent);
|
40
40
|
}
|
41
|
+
private function handleSwfProgress(event:ProgressEvent):void{
|
42
|
+
pb.setProgress(((event.bytesLoaded/event.bytesTotal)*100), pb.maximum);
|
43
|
+
pb.validateNow();
|
44
|
+
if(event.bytesLoaded==event.bytesTotal){
|
45
|
+
pb.setProgress(pb.maximum,pb.maximum);
|
46
|
+
pb.visible=false;
|
47
|
+
mloader.validateNow();
|
48
|
+
}else{
|
49
|
+
pb.visible=true;
|
50
|
+
}
|
51
|
+
}
|
41
52
|
]]>
|
42
53
|
</mx:Script>
|
43
54
|
|
@@ -48,12 +59,13 @@
|
|
48
59
|
|
49
60
|
<!-- the FrontController, containing Commands specific to this application -->
|
50
61
|
<control:OpenbillController id="controller" />
|
51
|
-
<ns1:Header left="0" top="0" right="0"
|
52
|
-
|
53
|
-
<
|
54
|
-
|
55
|
-
|
56
|
-
</
|
62
|
+
<ns1:Header visible="{model.loggedin}" left="0" top="0" right="0" />
|
63
|
+
<ns1:Footer visible="{model.loggedin}" bottom="0" left="0" right="0" />
|
64
|
+
<mx:HBox left="0" right="0" top="80" bottom="50">
|
65
|
+
<mx:VBox width="250" height="100%" />
|
66
|
+
<mx:ModuleLoader visible="{model.loggedin}" progress="handleSwfProgress(event)" id="mloader"/>
|
67
|
+
</mx:HBox>
|
68
|
+
<mx:ProgressBar visible="false" horizontalCenter="0" verticalCenter="0" labelPlacement="center" width="200" color="#BBBBBB" fontWeight="normal" minimum="0" maximum="100" indeterminate="false" id="pb"/>
|
57
69
|
|
58
70
|
<!-- ========================================================================== -->
|
59
71
|
|
Binary file
|
data/src/images/done.png
ADDED
Binary file
|
data/src/images/edit.png
ADDED
Binary file
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
|
3
|
+
<mx:DropShadowFilter id="dropShadow" distance="1" angle="45" blurX="0" blurY="0" alpha="1" color="0x111111" />
|
4
|
+
<mx:Label text="Admin home" filters="{[dropShadow]}" fontWeight="bold" fontSize="20" color="#60AAFF" left="0" top="10"/>
|
5
|
+
<mx:VBox backgroundColor="#000000" dropShadowEnabled="true" dropShadowColor="#000000" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5" shadowDirection="right" shadowDistance="5" borderStyle="solid" left="0" top="44">
|
6
|
+
<mx:BarChart id="barchart1" height="150" width="275" showAllDataTips="true" showDataTips="true" dataTipMode="multiple" selectionMode="multiple">
|
7
|
+
<mx:series>
|
8
|
+
<mx:BarSeries displayName="Orphan order" xField=""/>
|
9
|
+
<mx:BarSeries displayName="Pending order" xField=""/>
|
10
|
+
<mx:BarSeries displayName="Active order" xField=""/>
|
11
|
+
</mx:series>
|
12
|
+
</mx:BarChart>
|
13
|
+
<mx:Legend dataProvider="{barchart1}" backgroundColor="#111111"/>
|
14
|
+
</mx:VBox>
|
15
|
+
|
16
|
+
<mx:VBox backgroundColor="#000000" dropShadowEnabled="true" dropShadowColor="#000000" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5" shadowDirection="right" shadowDistance="5" borderStyle="solid" left="331" top="44">
|
17
|
+
<mx:BarChart id="barchart2" height="150" width="250" showAllDataTips="true" showDataTips="true" dataTipMode="multiple" selectionMode="multiple">
|
18
|
+
<mx:series>
|
19
|
+
<mx:BarSeries displayName="Pending invoice" xField=""/>
|
20
|
+
<mx:BarSeries displayName="Paid invoice" xField=""/>
|
21
|
+
<mx:BarSeries displayName="Overdue invoice" xField=""/>
|
22
|
+
</mx:series>
|
23
|
+
</mx:BarChart>
|
24
|
+
<mx:Legend dataProvider="{barchart2}" backgroundColor="#111111"/>
|
25
|
+
</mx:VBox>
|
26
|
+
</mx:Module>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
|
3
|
+
<mx:Script>
|
4
|
+
<![CDATA[
|
5
|
+
import org.rsos.openbill.model.OpenbillModelLocator;
|
6
|
+
[Bindable]
|
7
|
+
private var model:OpenbillModelLocator = OpenbillModelLocator.getInstance();
|
8
|
+
]]>
|
9
|
+
</mx:Script>
|
10
|
+
<mx:DropShadowFilter id="dropShadow" distance="1" angle="45" blurX="0" blurY="0" alpha="1" color="0x111111" />
|
11
|
+
<mx:Label text="Customer list" filters="{[dropShadow]}" fontWeight="bold" fontSize="20" color="#60AAFF" top="10" left="0"/>
|
12
|
+
<mx:VBox backgroundColor="#000000" dropShadowEnabled="true" dropShadowColor="#000000" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5" shadowDirection="right" shadowDistance="5" borderStyle="solid" left="0" top="44">
|
13
|
+
<mx:DataGrid width="600" height="400" dataProvider="{model.customerArray}">
|
14
|
+
<mx:columns>
|
15
|
+
<mx:DataGridColumn headerText="Name" dataField="name"/>
|
16
|
+
<mx:DataGridColumn headerText="Email" dataField="email"/>
|
17
|
+
<mx:DataGridColumn headerText="Orders"/>
|
18
|
+
<mx:DataGridColumn headerText="Invoices"/>
|
19
|
+
<mx:DataGridColumn headerText="">
|
20
|
+
<mx:itemRenderer>
|
21
|
+
<mx:Component>
|
22
|
+
<mx:HBox width="100">
|
23
|
+
<mx:Image buttonMode="true" useHandCursor="true" source="images/edit.png" width="16" height="16"/>
|
24
|
+
<mx:Image buttonMode="true" useHandCursor="true" source="images/delete.png" width="16" height="16"/>
|
25
|
+
</mx:HBox>
|
26
|
+
</mx:Component>
|
27
|
+
</mx:itemRenderer>
|
28
|
+
</mx:DataGridColumn>
|
29
|
+
</mx:columns>
|
30
|
+
</mx:DataGrid>
|
31
|
+
</mx:VBox>
|
32
|
+
</mx:Module>
|
@@ -19,6 +19,22 @@ package org.rsos.openbill.business
|
|
19
19
|
this.service = ServiceLocator.getInstance().getHTTPService( "RailsService" );
|
20
20
|
this.responder = responder;
|
21
21
|
}
|
22
|
+
public function customer(userVO:UserVO, action:String):void
|
23
|
+
{
|
24
|
+
var params:Object = new Object();
|
25
|
+
if(userVO!=null){
|
26
|
+
params['users[id]']=userVO.id;
|
27
|
+
}
|
28
|
+
params['_method'] = action;
|
29
|
+
|
30
|
+
service.url = "/users";
|
31
|
+
service.method = action;
|
32
|
+
if (action=="PUT")service.method = "POST";
|
33
|
+
|
34
|
+
var token:AsyncToken = service.send(params);
|
35
|
+
token.resultHandler = responder.result;
|
36
|
+
token.faultHandler = responder.fault;
|
37
|
+
}
|
22
38
|
public function product(productVO:ProductVO, action:String):void
|
23
39
|
{
|
24
40
|
var params:Object = new Object();
|
@@ -0,0 +1,49 @@
|
|
1
|
+
package org.rsos.openbill.command
|
2
|
+
{
|
3
|
+
/* add to controller
|
4
|
+
addCommand( CustomerEvent.EVENT_CUSTOMER, CustomerCommand );
|
5
|
+
*/
|
6
|
+
import com.adobe.cairngorm.control.CairngormEvent;
|
7
|
+
import com.adobe.cairngorm.commands.ICommand;
|
8
|
+
|
9
|
+
import org.rsos.openbill.model.OpenbillModelLocator;
|
10
|
+
import org.rsos.openbill.business.RailsDelegate;
|
11
|
+
import org.rsos.openbill.event.CustomerEvent;
|
12
|
+
|
13
|
+
import mx.controls.Alert;
|
14
|
+
import mx.rpc.IResponder;
|
15
|
+
import mx.rpc.events.FaultEvent;
|
16
|
+
|
17
|
+
public class CustomerCommand implements ICommand, IResponder
|
18
|
+
{
|
19
|
+
public function execute(event:CairngormEvent):void
|
20
|
+
{
|
21
|
+
var delegate : RailsDelegate = new RailsDelegate( this )
|
22
|
+
|
23
|
+
delegate.customer(CustomerEvent(event).userVO, CustomerEvent(event).action);
|
24
|
+
|
25
|
+
}
|
26
|
+
|
27
|
+
public function result(data:Object):void
|
28
|
+
{
|
29
|
+
var model:OpenbillModelLocator = OpenbillModelLocator.getInstance();
|
30
|
+
var resultXML:XML = XML(data.result);
|
31
|
+
if(resultXML.hasComplexContent()){
|
32
|
+
var users:XMLList = resultXML.children();
|
33
|
+
var tmp:Array = new Array();
|
34
|
+
for(var i:Number=0; i<users.length(); i++)
|
35
|
+
{
|
36
|
+
tmp.push(model.GetUserVOFromXML(users[i]));
|
37
|
+
}
|
38
|
+
model.customerArray = tmp;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
public function fault(info:Object):void
|
43
|
+
{
|
44
|
+
var faultEvent :FaultEvent = FaultEvent( info )
|
45
|
+
Alert.show( "fault at customer" )
|
46
|
+
}
|
47
|
+
|
48
|
+
}
|
49
|
+
}
|
@@ -19,6 +19,7 @@ package org.rsos.openbill.control
|
|
19
19
|
addCommand( FpEvent.EVENT_FP, FpCommand );
|
20
20
|
addCommand( SettingEvent.EVENT_SETTING, SettingCommand );
|
21
21
|
addCommand( ProductEvent.EVENT_PRODUCT, ProductCommand );
|
22
|
+
addCommand( CustomerEvent.EVENT_CUSTOMER, CustomerCommand );
|
22
23
|
}
|
23
24
|
}
|
24
25
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
package org.rsos.openbill.event
|
2
|
+
{
|
3
|
+
import com.adobe.cairngorm.control.CairngormEvent;
|
4
|
+
|
5
|
+
import flash.events.Event;
|
6
|
+
|
7
|
+
import org.rsos.openbill.vo.UserVO;
|
8
|
+
|
9
|
+
public class CustomerEvent extends CairngormEvent
|
10
|
+
{
|
11
|
+
|
12
|
+
public static var EVENT_CUSTOMER : String = "Customer";
|
13
|
+
public var userVO:UserVO;
|
14
|
+
public var action:String = "GET";
|
15
|
+
public function CustomerEvent()
|
16
|
+
{
|
17
|
+
super(EVENT_CUSTOMER);
|
18
|
+
}
|
19
|
+
|
20
|
+
/**
|
21
|
+
* Override the inherited clone() method, but don't return any state.
|
22
|
+
*/
|
23
|
+
override public function clone() : Event
|
24
|
+
{
|
25
|
+
return new CustomerEvent();
|
26
|
+
}
|
27
|
+
|
28
|
+
}
|
29
|
+
}
|
@@ -3,9 +3,10 @@ package org.rsos.openbill.model
|
|
3
3
|
import com.adobe.cairngorm.control.CairngormEventDispatcher;
|
4
4
|
import com.adobe.cairngorm.model.ModelLocator;
|
5
5
|
|
6
|
+
import mx.core.Application;
|
6
7
|
import mx.managers.PopUpManager;
|
7
8
|
|
8
|
-
import org.rsos.openbill.event.
|
9
|
+
import org.rsos.openbill.event.CustomerEvent;
|
9
10
|
import org.rsos.openbill.view.*;
|
10
11
|
import org.rsos.openbill.vo.*;
|
11
12
|
|
@@ -28,7 +29,16 @@ package org.rsos.openbill.model
|
|
28
29
|
}
|
29
30
|
|
30
31
|
private var signin:SignIn;
|
31
|
-
|
32
|
+
|
33
|
+
public function set load(module:String):void{
|
34
|
+
|
35
|
+
var url:String='modules/'+module+'.swf';
|
36
|
+
|
37
|
+
if(Application.application.mloader.url!=url){
|
38
|
+
Application.application.mloader.unloadModule();
|
39
|
+
Application.application.mloader.loadModule(url);
|
40
|
+
}
|
41
|
+
}
|
32
42
|
|
33
43
|
public function ReportError(e:*):void{
|
34
44
|
|
@@ -40,15 +50,9 @@ package org.rsos.openbill.model
|
|
40
50
|
PopUpManager.addPopUp(setting, parent, true);
|
41
51
|
}
|
42
52
|
|
43
|
-
public function showproduct(parent:*, productVO:ProductVO):void
|
44
|
-
{
|
45
|
-
var product:Product = new Product();
|
46
|
-
product.productVO = productVO;
|
47
|
-
PopUpManager.addPopUp(product, parent, true);
|
48
|
-
}
|
49
|
-
|
50
53
|
public function askforlogin(parent:*):void
|
51
54
|
{
|
55
|
+
loggedin = false;
|
52
56
|
try{
|
53
57
|
signin.closeWindow();
|
54
58
|
}catch(e:Error){ReportError(e)}
|
@@ -59,13 +63,11 @@ package org.rsos.openbill.model
|
|
59
63
|
}
|
60
64
|
public function dologin():void
|
61
65
|
{
|
66
|
+
loggedin = true;
|
62
67
|
try{
|
63
68
|
signin.closeWindow();
|
64
69
|
}catch(e:Error){ReportError(e)}
|
65
|
-
|
66
|
-
var listProducts:ProductEvent = new ProductEvent();
|
67
|
-
listProducts.action = "GET";
|
68
|
-
CairngormEventDispatcher.getInstance().dispatchEvent(listProducts);
|
70
|
+
load = "AdminHome";
|
69
71
|
|
70
72
|
}
|
71
73
|
public function GetUserVOFromXML(resultXML:XML):UserVO
|
@@ -144,7 +146,7 @@ package org.rsos.openbill.model
|
|
144
146
|
|
145
147
|
public function GetProductVOFromXML(resultXML:XML):ProductVO
|
146
148
|
{
|
147
|
-
var productVO:ProductVO = new ProductVO()
|
149
|
+
var productVO:ProductVO = new ProductVO();
|
148
150
|
try{
|
149
151
|
productVO.id = Number(resultXML.id);
|
150
152
|
productVO.account = userVO.account;
|
@@ -157,7 +159,7 @@ package org.rsos.openbill.model
|
|
157
159
|
|
158
160
|
public function GetCurrencyVOFromXML(resultXML:XML):CurrencyVO
|
159
161
|
{
|
160
|
-
var currencyVO:CurrencyVO = new CurrencyVO()
|
162
|
+
var currencyVO:CurrencyVO = new CurrencyVO();
|
161
163
|
try{
|
162
164
|
currencyVO.id = Number(resultXML.id);
|
163
165
|
currencyVO.currency_name = String(resultXML.currency_name);
|
@@ -180,9 +182,21 @@ package org.rsos.openbill.model
|
|
180
182
|
}
|
181
183
|
|
182
184
|
/* bindables go here */
|
185
|
+
public var loggedin:Boolean = false;
|
183
186
|
public var userVO:UserVO;
|
184
187
|
public var productsArray:Array;
|
185
188
|
public var dateFormats:Array = ["YYYY-MM-DD", "DD-MM-YYYY"];
|
186
189
|
public var currenyArray:Array = [];
|
190
|
+
public var customerArray:Array = [];
|
191
|
+
public var adminArray:Array = [];
|
192
|
+
public var staffArray:Array = [];
|
193
|
+
public var guestArray:Array = [];
|
194
|
+
|
195
|
+
public function getcustomerlist():void
|
196
|
+
{
|
197
|
+
var customerEvent:CustomerEvent = new CustomerEvent();
|
198
|
+
CairngormEventDispatcher.getInstance().dispatchEvent(customerEvent);
|
199
|
+
}
|
200
|
+
|
187
201
|
}
|
188
202
|
}
|
@@ -19,12 +19,12 @@
|
|
19
19
|
private var menubarXML:XMLList =
|
20
20
|
<>
|
21
21
|
<menuitem label="Home" data="top">
|
22
|
-
<menuitem label="Admin home" data="
|
22
|
+
<menuitem label="Admin home" data="adminhome"/>
|
23
23
|
<menuitem label="Settings" data="setting"/>
|
24
24
|
<menuitem label="Logout" data="logout"/>
|
25
25
|
</menuitem>
|
26
26
|
<menuitem label="Customer" data="top">
|
27
|
-
<menuitem label="List customers" data="
|
27
|
+
<menuitem label="List customers" data="customerlist"/>
|
28
28
|
<menuitem label="Add customer" data="2B"/>
|
29
29
|
<menuitem label="List custom fields" data="2C"/>
|
30
30
|
<menuitem label="Add custom field" data="2D"/>
|
@@ -77,8 +77,15 @@
|
|
77
77
|
|
78
78
|
private function menuHandler(event:MenuEvent):void {
|
79
79
|
if (event.item.@data != "top") {
|
80
|
+
if (event.item.@data.toString()=="adminhome") model.load = "AdminHome";
|
80
81
|
if (event.item.@data.toString()=="setting") opensetting();
|
81
82
|
if (event.item.@data.toString()=="logout") logout();
|
83
|
+
|
84
|
+
if (event.item.@data.toString()=="customerlist")
|
85
|
+
{
|
86
|
+
model.getcustomerlist();
|
87
|
+
model.load = "CustomerList";
|
88
|
+
}
|
82
89
|
}
|
83
90
|
}
|
84
91
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="flexlib.controls.*" xmlns:ns2="flexlib.containers.*" horizontalAlign="center" verticalAlign="middle" creationComplete="centerWindow()"
|
2
|
+
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="flexlib.controls.*" xmlns:ns2="flexlib.containers.*" horizontalAlign="center" verticalAlign="middle" creationComplete="centerWindow()">
|
3
3
|
<mx:states>
|
4
4
|
<mx:State name="fp">
|
5
5
|
<mx:SetProperty target="{label1}" name="text" value="Password reset"/>
|
data/src/stylesheets/default.css
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smukherjee-openbill
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Siddhartha Mukherjee
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-05-
|
12
|
+
date: 2009-05-31 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -39,11 +39,13 @@ files:
|
|
39
39
|
- app/controllers/products_controller.rb
|
40
40
|
- app/controllers/sessions_controller.rb
|
41
41
|
- app/controllers/settings_controller.rb
|
42
|
+
- app/controllers/users_controller.rb
|
42
43
|
- app/helpers/application_helper.rb
|
43
44
|
- app/helpers/carts_helper.rb
|
44
45
|
- app/helpers/products_helper.rb
|
45
46
|
- app/helpers/sessions_helper.rb
|
46
47
|
- app/helpers/settings_helper.rb
|
48
|
+
- app/helpers/users_helper.rb
|
47
49
|
- app/models/account.rb
|
48
50
|
- app/models/billingcycle.rb
|
49
51
|
- app/models/currency.rb
|
@@ -81,6 +83,7 @@ files:
|
|
81
83
|
- app/views/carts/customer.html.erb
|
82
84
|
- app/views/carts/order.html.erb
|
83
85
|
- app/views/layouts/default.html.erb
|
86
|
+
- app/views/layouts/users.html.erb
|
84
87
|
- app/views/user_mailer/activation.erb
|
85
88
|
- app/views/user_mailer/signup_notification.erb
|
86
89
|
- config/boot.rb
|
@@ -133,6 +136,7 @@ files:
|
|
133
136
|
- pkg/openbill-0.1.4.gem
|
134
137
|
- pkg/openbill-0.1.5.gem
|
135
138
|
- pkg/openbill-0.1.6.gem
|
139
|
+
- pkg/openbill-0.1.7.gem
|
136
140
|
- public/404.html
|
137
141
|
- public/422.html
|
138
142
|
- public/500.html
|
@@ -327,6 +331,9 @@ files:
|
|
327
331
|
- public/history/history.js
|
328
332
|
- public/history/historyFrame.html
|
329
333
|
- public/images/avatar.png
|
334
|
+
- public/images/delete.png
|
335
|
+
- public/images/done.png
|
336
|
+
- public/images/edit.png
|
330
337
|
- public/images/logo.png
|
331
338
|
- public/images/rails.png
|
332
339
|
- public/images/spinner.gif
|
@@ -339,6 +346,8 @@ files:
|
|
339
346
|
- public/javascripts/jquery.localscroll.js
|
340
347
|
- public/javascripts/jquery.scrollTo.js
|
341
348
|
- public/javascripts/prototype.js
|
349
|
+
- public/modules/AdminHome.swf
|
350
|
+
- public/modules/CustomerList.swf
|
342
351
|
- public/playerProductInstall.swf
|
343
352
|
- public/privacy.html
|
344
353
|
- public/robots.txt
|
@@ -556,17 +565,24 @@ files:
|
|
556
565
|
- src/assets/scroll/up_1.png
|
557
566
|
- src/assets/scroll/up_2.png
|
558
567
|
- src/assets/xml/listData.xml
|
568
|
+
- src/images/delete.png
|
569
|
+
- src/images/done.png
|
570
|
+
- src/images/edit.png
|
559
571
|
- src/images/logo.png
|
560
572
|
- src/libs/Cairngorm.swc
|
561
573
|
- src/libs/flexlib.swc
|
574
|
+
- src/modules/AdminHome.mxml
|
575
|
+
- src/modules/CustomerList.mxml
|
562
576
|
- src/org/rsos/openbill/business/RailsDelegate.as
|
563
577
|
- src/org/rsos/openbill/business/Services.mxml
|
578
|
+
- src/org/rsos/openbill/command/CustomerCommand.as
|
564
579
|
- src/org/rsos/openbill/command/FpCommand.as
|
565
580
|
- src/org/rsos/openbill/command/LoginCommand.as
|
566
581
|
- src/org/rsos/openbill/command/LogoutCommand.as
|
567
582
|
- src/org/rsos/openbill/command/ProductCommand.as
|
568
583
|
- src/org/rsos/openbill/command/SettingCommand.as
|
569
584
|
- src/org/rsos/openbill/control/OpenbillController.as
|
585
|
+
- src/org/rsos/openbill/event/CustomerEvent.as
|
570
586
|
- src/org/rsos/openbill/event/FpEvent.as
|
571
587
|
- src/org/rsos/openbill/event/LoginEvent.as
|
572
588
|
- src/org/rsos/openbill/event/LogoutEvent.as
|
@@ -574,7 +590,6 @@ files:
|
|
574
590
|
- src/org/rsos/openbill/event/SettingEvent.as
|
575
591
|
- src/org/rsos/openbill/model/OpenbillModelLocator.as
|
576
592
|
- src/org/rsos/openbill/util/ValueObjectUtil.as
|
577
|
-
- src/org/rsos/openbill/view/Content.mxml
|
578
593
|
- src/org/rsos/openbill/view/Footer.mxml
|
579
594
|
- src/org/rsos/openbill/view/Header.mxml
|
580
595
|
- src/org/rsos/openbill/view/Product.mxml
|
@@ -615,6 +630,7 @@ files:
|
|
615
630
|
- test/functional/products_controller_test.rb
|
616
631
|
- test/functional/sessions_controller_test.rb
|
617
632
|
- test/functional/settings_controller_test.rb
|
633
|
+
- test/functional/users_controller_test.rb
|
618
634
|
- test/integration/empty
|
619
635
|
- test/performance/browsing_test.rb
|
620
636
|
- test/test_helper.rb
|
@@ -779,6 +795,7 @@ test_files:
|
|
779
795
|
- test/functional/products_controller_test.rb
|
780
796
|
- test/functional/sessions_controller_test.rb
|
781
797
|
- test/functional/settings_controller_test.rb
|
798
|
+
- test/functional/users_controller_test.rb
|
782
799
|
- test/performance/browsing_test.rb
|
783
800
|
- test/test_helper.rb
|
784
801
|
- test/unit/account_test.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
|
3
|
-
<mx:VBox height="100%" width="250">
|
4
|
-
</mx:VBox>
|
5
|
-
<mx:VBox width="100%" height="100%">
|
6
|
-
<mx:VBox backgroundColor="#000000" dropShadowEnabled="true" dropShadowColor="#000000" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10" shadowDirection="right" shadowDistance="5" borderStyle="solid">
|
7
|
-
<mx:BarChart id="barchart1" height="200" width="350" showAllDataTips="true" showDataTips="true" dataTipMode="multiple" selectionMode="multiple">
|
8
|
-
<mx:series>
|
9
|
-
<mx:BarSeries displayName="Pending order" xField=""/>
|
10
|
-
<mx:BarSeries displayName="Active order" xField=""/>
|
11
|
-
<mx:BarSeries displayName="Completed order" xField=""/>
|
12
|
-
<mx:BarSeries displayName="Suspended order" xField=""/>
|
13
|
-
</mx:series>
|
14
|
-
</mx:BarChart>
|
15
|
-
<mx:Legend dataProvider="{barchart1}" width="350" backgroundColor="#111111"/>
|
16
|
-
</mx:VBox>
|
17
|
-
|
18
|
-
</mx:VBox>
|
19
|
-
|
20
|
-
</mx:HBox>
|