voltar 0.0.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +37 -0
  5. data/app/assets/fonts/FontAwesome.otf +0 -0
  6. data/app/assets/fonts/Simple-Line-Icons.eot +0 -0
  7. data/app/assets/fonts/Simple-Line-Icons.svg +1369 -0
  8. data/app/assets/fonts/Simple-Line-Icons.ttf +0 -0
  9. data/app/assets/fonts/Simple-Line-Icons.woff +0 -0
  10. data/app/assets/fonts/fontawesome-webfont.eot +0 -0
  11. data/app/assets/fonts/fontawesome-webfont.svg +520 -0
  12. data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
  13. data/app/assets/fonts/fontawesome-webfont.woff +0 -0
  14. data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  15. data/app/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  16. data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  17. data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  18. data/app/assets/fonts/sourcesanspro/sourcesanspro-bold.woff +0 -0
  19. data/app/assets/fonts/sourcesanspro/sourcesanspro-light.woff +0 -0
  20. data/app/assets/fonts/sourcesanspro/sourcesanspro.woff +0 -0
  21. data/app/assets/javascripts/voltar/app.js +203 -0
  22. data/app/assets/javascripts/voltar/application.js +33 -0
  23. data/app/assets/javascripts/voltar/controllers/app_ctrl.js.erb +673 -0
  24. data/app/assets/javascripts/voltar/directives/app_directives.js +345 -0
  25. data/app/assets/javascripts/voltar/factories/app_services.js +255 -0
  26. data/app/assets/javascripts/voltar/stripe.js.coffee +2 -0
  27. data/app/assets/stylesheets/voltar/app.css +4990 -0
  28. data/app/assets/stylesheets/voltar/application.css +23 -0
  29. data/app/assets/stylesheets/voltar/voltar.css.scss +93 -0
  30. data/app/controllers/voltar/application_controller.rb +4 -0
  31. data/app/controllers/voltar/dashboard_controller.rb +11 -0
  32. data/app/helpers/voltar/application_helper.rb +4 -0
  33. data/app/views/layouts/voltar/application.html.erb +40 -0
  34. data/app/views/voltar/account/_billing.html.erb +552 -0
  35. data/app/views/voltar/account/_locations.html.erb +135 -0
  36. data/app/views/voltar/account/_managers.html +134 -0
  37. data/app/views/voltar/account/_password.html.erb +57 -0
  38. data/app/views/voltar/account/_profile.html.erb +84 -0
  39. data/app/views/voltar/dashboard/index.html.erb +0 -0
  40. data/app/views/voltar/inventory/_delete_dialog.html.erb +16 -0
  41. data/app/views/voltar/inventory/_edit.html.erb +244 -0
  42. data/app/views/voltar/inventory/_index.html.erb +160 -0
  43. data/app/views/voltar/inventory/_mark_as_sold_dialog.html.erb +26 -0
  44. data/app/views/voltar/shared/_keen_js.html.haml +11 -0
  45. data/app/views/voltar/shared/_voltar_app.html.erb +83 -0
  46. data/app/views/voltar/shared/_voltar_aside.html.erb +71 -0
  47. data/app/views/voltar/shared/_voltar_footer.html.erb +13 -0
  48. data/app/views/voltar/shared/_voltar_header.html.erb +156 -0
  49. data/app/views/voltar/shared/app/_country_province_select.html +19 -0
  50. data/app/views/voltar/shared/app/_dashboard.html.erb +243 -0
  51. data/app/views/voltar/shared/app/_notifications.html.erb +13 -0
  52. data/app/views/voltar/shared/app/_spinner.html.erb +8 -0
  53. data/config/routes.rb +4 -0
  54. data/lib/tasks/voltar_tasks.rake +4 -0
  55. data/lib/voltar.rb +5 -0
  56. data/lib/voltar/engine.rb +15 -0
  57. data/lib/voltar/version.rb +3 -0
  58. data/test/dummy/README.rdoc +28 -0
  59. data/test/dummy/Rakefile +6 -0
  60. data/test/dummy/app/assets/javascripts/application.js +13 -0
  61. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  62. data/test/dummy/app/controllers/application_controller.rb +5 -0
  63. data/test/dummy/app/helpers/application_helper.rb +2 -0
  64. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  65. data/test/dummy/bin/bundle +3 -0
  66. data/test/dummy/bin/rails +4 -0
  67. data/test/dummy/bin/rake +4 -0
  68. data/test/dummy/bin/setup +29 -0
  69. data/test/dummy/config.ru +4 -0
  70. data/test/dummy/config/application.rb +26 -0
  71. data/test/dummy/config/boot.rb +5 -0
  72. data/test/dummy/config/database.yml +25 -0
  73. data/test/dummy/config/environment.rb +5 -0
  74. data/test/dummy/config/environments/development.rb +41 -0
  75. data/test/dummy/config/environments/production.rb +76 -0
  76. data/test/dummy/config/environments/test.rb +39 -0
  77. data/test/dummy/config/initializers/assets.rb +11 -0
  78. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  79. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  80. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  81. data/test/dummy/config/initializers/inflections.rb +16 -0
  82. data/test/dummy/config/initializers/mime_types.rb +4 -0
  83. data/test/dummy/config/initializers/session_store.rb +3 -0
  84. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  85. data/test/dummy/config/locales/en.yml +23 -0
  86. data/test/dummy/config/routes.rb +4 -0
  87. data/test/dummy/config/secrets.yml +22 -0
  88. data/test/dummy/log/development.log +0 -0
  89. data/test/dummy/public/404.html +67 -0
  90. data/test/dummy/public/422.html +67 -0
  91. data/test/dummy/public/500.html +66 -0
  92. data/test/dummy/public/favicon.ico +0 -0
  93. data/test/integration/navigation_test.rb +10 -0
  94. data/test/test_helper.rb +15 -0
  95. data/test/voltar_test.rb +7 -0
  96. data/vendor/assets/images/voltar/a0.jpg +0 -0
  97. data/vendor/assets/images/voltar/a1.jpg +0 -0
  98. data/vendor/assets/images/voltar/a10.jpg +0 -0
  99. data/vendor/assets/images/voltar/a2.jpg +0 -0
  100. data/vendor/assets/images/voltar/a3.jpg +0 -0
  101. data/vendor/assets/images/voltar/a4.jpg +0 -0
  102. data/vendor/assets/images/voltar/a5.jpg +0 -0
  103. data/vendor/assets/images/voltar/a6.jpg +0 -0
  104. data/vendor/assets/images/voltar/a7.jpg +0 -0
  105. data/vendor/assets/images/voltar/a8.jpg +0 -0
  106. data/vendor/assets/images/voltar/a9.jpg +0 -0
  107. data/vendor/assets/images/voltar/b0.jpg +0 -0
  108. data/vendor/assets/images/voltar/b1.jpg +0 -0
  109. data/vendor/assets/images/voltar/b2.jpg +0 -0
  110. data/vendor/assets/images/voltar/b3.jpg +0 -0
  111. data/vendor/assets/images/voltar/b4.jpg +0 -0
  112. data/vendor/assets/images/voltar/b5.jpg +0 -0
  113. data/vendor/assets/images/voltar/c0.jpg +0 -0
  114. data/vendor/assets/images/voltar/c1.jpg +0 -0
  115. data/vendor/assets/images/voltar/c2.jpg +0 -0
  116. data/vendor/assets/images/voltar/c3.jpg +0 -0
  117. data/vendor/assets/images/voltar/c4.jpg +0 -0
  118. data/vendor/assets/images/voltar/c5.jpg +0 -0
  119. data/vendor/assets/images/voltar/chosen-sprite.png +0 -0
  120. data/vendor/assets/images/voltar/chosen-sprite@2x.png +0 -0
  121. data/vendor/assets/images/voltar/logo.png +0 -0
  122. data/vendor/assets/images/voltar/p0.jpg +0 -0
  123. data/vendor/assets/javascripts/voltar/angular-animate.js +1689 -0
  124. data/vendor/assets/javascripts/voltar/angular-contenteditable.js +98 -0
  125. data/vendor/assets/javascripts/voltar/angular-cookies.js +206 -0
  126. data/vendor/assets/javascripts/voltar/angular-sanitize.js +647 -0
  127. data/vendor/assets/javascripts/voltar/angular-ui-router.js +3658 -0
  128. data/vendor/assets/javascripts/voltar/angular.js +22024 -0
  129. data/vendor/assets/javascripts/voltar/chosen.jquery.min.js +2 -0
  130. data/vendor/assets/javascripts/voltar/easypiechart/jquery.easy-pie-chart.js +209 -0
  131. data/vendor/assets/javascripts/voltar/flot/jquery.flot.min.js +29 -0
  132. data/vendor/assets/javascripts/voltar/flot/jquery.flot.orderBars.js +187 -0
  133. data/vendor/assets/javascripts/voltar/flot/jquery.flot.pie.min.js +56 -0
  134. data/vendor/assets/javascripts/voltar/flot/jquery.flot.resize.js +60 -0
  135. data/vendor/assets/javascripts/voltar/flot/jquery.flot.spline.js +212 -0
  136. data/vendor/assets/javascripts/voltar/flot/jquery.flot.tooltip.min.js +12 -0
  137. data/vendor/assets/javascripts/voltar/jquery.min.js +5 -0
  138. data/vendor/assets/javascripts/voltar/moment.js +2856 -0
  139. data/vendor/assets/javascripts/voltar/ngStorage.js +103 -0
  140. data/vendor/assets/javascripts/voltar/ocLazyLoad.js +906 -0
  141. data/vendor/assets/javascripts/voltar/smart-table.min.js +1 -0
  142. data/vendor/assets/javascripts/voltar/sparkline/jquery.sparkline.min.js +2 -0
  143. data/vendor/assets/javascripts/voltar/toaster.js +185 -0
  144. data/vendor/assets/javascripts/voltar/ui-bootstrap-tpls.js +4116 -0
  145. data/vendor/assets/javascripts/voltar/ui-jq.js +86 -0
  146. data/vendor/assets/javascripts/voltar/ui-load.js +93 -0
  147. data/vendor/assets/javascripts/voltar/ui-validate.js +119 -0
  148. data/vendor/assets/stylesheets/voltar/animate.css +1098 -0
  149. data/vendor/assets/stylesheets/voltar/bootstrap.css +6202 -0
  150. data/vendor/assets/stylesheets/voltar/chosen.css +399 -0
  151. data/vendor/assets/stylesheets/voltar/font-awesome.min.css +4 -0
  152. data/vendor/assets/stylesheets/voltar/font.css +18 -0
  153. data/vendor/assets/stylesheets/voltar/simple-line-icons.css +526 -0
  154. data/vendor/assets/stylesheets/voltar/toaster.css +213 -0
  155. metadata +333 -0
@@ -0,0 +1,23 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any styles
10
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
+ * file per style scope.
12
+ *
13
+ *= require voltar/bootstrap
14
+ *= require voltar/animate
15
+ *= require voltar/font-awesome.min
16
+ *= require voltar/simple-line-icons
17
+ *= require skeuocard.reset
18
+ *= require skeuocard
19
+ *= require voltar/font
20
+ *= require voltar/toaster
21
+ *= require voltar/app
22
+ *= require voltar/voltar
23
+ */
@@ -0,0 +1,93 @@
1
+ .plans {
2
+ .thick-border-success {
3
+ border: 1px solid #27C24C;
4
+ }
5
+ .thick-border-info {
6
+ border: 1px solid #23B7E5;
7
+ }
8
+ .thick-border-warning {
9
+ border: 1px solid #FACE00;
10
+ }
11
+ .thick-border-danger {
12
+ border: 1px solid #F05050;
13
+ }
14
+ }
15
+
16
+ .btn-file {
17
+ position: relative;
18
+ overflow: hidden;
19
+ }
20
+ .btn-file input[type=file] {
21
+ position: absolute;
22
+ top: 0;
23
+ right: 0;
24
+ min-width: 100%;
25
+ min-height: 100%;
26
+ font-size: 100px;
27
+ text-align: right;
28
+ filter: alpha(opacity=0);
29
+ opacity: 0;
30
+ outline: none;
31
+ background: white;
32
+ cursor: inherit;
33
+ display: block;
34
+ }
35
+
36
+ .image-row {
37
+ img.thumbnail {
38
+ height: 125px;
39
+ width: 100%;
40
+ margin-bottom: 0px;
41
+ }
42
+ .col-sm-4 {
43
+ margin: 10px 0px;
44
+ }
45
+ .opaque {
46
+ opacity: 0.4;
47
+ }
48
+ .no-radius {
49
+ border-radius: 0px;
50
+ }
51
+ }
52
+
53
+ .spinner {
54
+ width: 40px;
55
+ height: 40px;
56
+ top: 100px;
57
+ position: relative;
58
+ margin: 100px auto;
59
+ }
60
+
61
+ .double-bounce1, .double-bounce2 {
62
+ width: 100%;
63
+ height: 100%;
64
+ border-radius: 50%;
65
+ background-color: #333;
66
+ opacity: 0.6;
67
+ position: absolute;
68
+ top: 0;
69
+ left: 0;
70
+
71
+ -webkit-animation: bounce 2.0s infinite ease-in-out;
72
+ animation: bounce 2.0s infinite ease-in-out;
73
+ }
74
+
75
+ .double-bounce2 {
76
+ -webkit-animation-delay: -1.0s;
77
+ animation-delay: -1.0s;
78
+ }
79
+
80
+ @-webkit-keyframes bounce {
81
+ 0%, 100% { -webkit-transform: scale(0.0) }
82
+ 50% { -webkit-transform: scale(1.0) }
83
+ }
84
+
85
+ @keyframes bounce {
86
+ 0%, 100% {
87
+ transform: scale(0.0);
88
+ -webkit-transform: scale(0.0);
89
+ } 50% {
90
+ transform: scale(1.0);
91
+ -webkit-transform: scale(1.0);
92
+ }
93
+ }
@@ -0,0 +1,4 @@
1
+ class Voltar::ApplicationController < Dealers::BaseController
2
+ layout 'voltar/application'
3
+
4
+ end
@@ -0,0 +1,11 @@
1
+ module Voltar
2
+ class DashboardController < ApplicationController
3
+
4
+ layout 'voltar/application'
5
+
6
+ def index
7
+ @dealer = current_dealer
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,4 @@
1
+ module Voltar
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,40 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" data-ng-app="voltar">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Dealer Dashboard | Shopbuses</title>
6
+ <meta name="description" content="shopbuses, dealer, admin, portal, buses for sale, inventory" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
8
+ <meta name="stripe-key" content="<%= ENV['STRIPE_PUBLIC_KEY'] %>" >
9
+
10
+ <%= stylesheet_link_tag 'voltar/application.css' %>
11
+ <%= javascript_include_tag "https://js.stripe.com/v1/" %>
12
+ <%= javascript_include_tag 'voltar/application.js' %>
13
+ </head>
14
+ <body>
15
+
16
+ <div class="app app-header-fixed app-aside-fixed app-aside-dock" id="app" ui-view></div>
17
+ <toaster-container toaster-options="{ 'timeOut': '30000' }"></toaster-container>
18
+
19
+ <%= render partial: 'voltar/shared/voltar_app' %>
20
+ <%= render partial: 'voltar/shared/app/dashboard' %>
21
+ <%= render partial: 'voltar/shared/app/country_province_select' %>
22
+
23
+ <%= render partial: 'voltar/inventory/index' %>
24
+ <%= render partial: 'voltar/inventory/edit' %>
25
+ <%= render partial: 'voltar/inventory/delete_dialog' %>
26
+ <%= render partial: 'voltar/inventory/mark_as_sold_dialog' %>
27
+
28
+ <%= render partial: 'voltar/account/profile' %>
29
+ <%= render partial: 'voltar/account/password' %>
30
+ <%= render partial: 'voltar/account/locations' %>
31
+ <%= render partial: 'voltar/account/managers' %>
32
+ <%= render partial: 'voltar/account/billing' %>
33
+
34
+ <%= render partial: 'voltar/shared/keen_js' %>
35
+ <%= render partial: 'voltar/shared/app/spinner' %>
36
+ <%= render partial: 'voltar/shared/voltar_header' %>
37
+ <%= render partial: 'voltar/shared/voltar_aside' %>
38
+
39
+ </body>
40
+ </html>
@@ -0,0 +1,552 @@
1
+ <script type="text/ng-template" id='billing.html'>
2
+
3
+ <div class="bg-light lter b-b wrapper-md">
4
+ <h1 class="m-n font-thin h3">Billing</h1>
5
+ <small class="text-muted">Manage your billing details here</small>
6
+ </div>
7
+
8
+ <div class="wrapper-md" data-ng-controller="BillingController">
9
+
10
+ <tabset class="tab-container">
11
+ <tab>
12
+ <tab-heading>
13
+ <i class='fa fa-file-text-o'></i> Invoices
14
+ </tab-heading>
15
+
16
+ <div>
17
+
18
+ <div class='table-responsive'>
19
+ <table class='table table-striped b-t b-light'>
20
+ <thead>
21
+ <tr>
22
+ <th>Invoice ID</th>
23
+ <th>Date</th>
24
+ <th>Total</th>
25
+ </tr>
26
+ </thead>
27
+
28
+ <tbody>
29
+ <tr data-ng-repeat="invoice in invoices">
30
+ <td>{{invoice.invoice}}</td>
31
+ <td>{{invoice.created * 1000 | date:'medium' }}</td>
32
+ <td>{{invoice.amount/100 | currency}}</td>
33
+ </tr>
34
+ </tbody>
35
+
36
+ </table>
37
+ </div>
38
+
39
+ </div>
40
+
41
+ </tab>
42
+
43
+ <tab>
44
+ <tab-heading>
45
+ <i class='fa fa-map-marker'></i> Plans
46
+ </tab-heading>
47
+
48
+ <div data-ng-controller='PlansController' class='plans'>
49
+
50
+ <div class="row no-gutter">
51
+ <div class="col-lg-3 col-md-4 col-sm-6">
52
+ <div class="panel b-a" data-ng-class=" { 'thick-border-success': currentPlan.name == 'trial' } ">
53
+ <div class="panel-heading wrapper-xs bg-success no-border">
54
+ </div>
55
+ <div class="wrapper text-center b-b b-light" data-ng-class="{ 'bg-success': currentPlan.name == 'trial' }">
56
+ <h4 class="text-u-c m-b-none">TRIAL</h4>
57
+ <h2 class="m-t-none">
58
+ <sup class="pos-rlt" style="top:-22px"></sup>
59
+ <span class="text-2x text-lt">FREE</span>
60
+ <br/>
61
+ <span class="text-xs"> for 30 days</span>
62
+ </h2>
63
+ </div>
64
+ <ul class="list-group text-center no-borders m-t-sm">
65
+ <li class="list-group-item">
66
+ <i class="icon-check text-success m-r-xs"></i> 1 Location
67
+ </li>
68
+ <li class="list-group-item">
69
+ <i class="icon-check text-success m-r-xs"></i> Custom Dashboard
70
+ </li>
71
+ <li class="list-group-item">
72
+ <i class="icon-check text-success m-r-xs"></i> Inventory Management
73
+ </li>
74
+ <li class="list-group-item">
75
+ <i class="icon-check text-success m-r-xs"></i> Lead Manager
76
+ </li>
77
+ <li class="list-group-item">
78
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Analytics</span>
79
+ </li>
80
+ <li class="list-group-item">
81
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Social Media Integration</span>
82
+ </li>
83
+ <li class="list-group-item">
84
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Multiuser</span>
85
+ </li>
86
+ <li class="list-group-item">
87
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Support</span>
88
+ </li>
89
+ <li class="list-group-item">
90
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">1-800 Call Tracking</span>
91
+ </li>
92
+ <li class="list-group-item">
93
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Automated Reports</span>
94
+ </li>
95
+ <li class="list-group-item">
96
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Commercial Exports</span>
97
+ </li>
98
+ <li class="list-group-item">
99
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Live Chat</span>
100
+ </li>
101
+ <li class="list-group-item">
102
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Video Marketing</span>
103
+ </li>
104
+ </ul>
105
+ <div class="panel-footer text-center">
106
+ <div class="panel-footer text-center">
107
+ <a href="" class="btn btn-default font-bold m" data-ng-show="currentPlan.name == 'trial'">
108
+ <i class='fa fa-check'></i>
109
+ Your Current Plan
110
+ </a>
111
+ <a href="" class="btn btn-success font-bold m" data-ng-click="selectPlan('trial')" data-ng-show="currentPlan.name != 'trial'">Select Plan</a>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </div>
116
+
117
+ <div class="col-lg-3 col-md-4 col-sm-6">
118
+ <div class="panel b-a" data-ng-class=" { 'thick-border-info': currentPlan.name == 'basic' } ">
119
+ <div class="panel-heading wrapper-xs bg-info no-border">
120
+ </div>
121
+ <div class="wrapper text-center b-b b-light" data-ng-class="{ 'bg-info': currentPlan.name == 'basic' }">
122
+ <h4 class="text-u-c m-b-none">BASIC</h4>
123
+ <h2 class="m-t-none">
124
+ <sup class="pos-rlt" style="top:-22px">$</sup>
125
+ <span class="text-2x text-lt">897</span>
126
+ <span class="text-xs">/ mo</span>
127
+ <br/>
128
+ <span class="text-xs">Best value!</span>
129
+ </h2>
130
+ </div>
131
+ <ul class="list-group text-center no-borders m-t-sm">
132
+ <li class="list-group-item">
133
+ <i class="icon-check text-success m-r-xs"></i> 1 Location
134
+ </li>
135
+ <li class="list-group-item">
136
+ <i class="icon-check text-success m-r-xs"></i> Custom Dashboard
137
+ </li>
138
+ <li class="list-group-item">
139
+ <i class="icon-check text-success m-r-xs"></i> Inventory Management
140
+ </li>
141
+ <li class="list-group-item">
142
+ <i class="icon-check text-success m-r-xs"></i> Lead Manager
143
+ </li>
144
+ <li class="list-group-item">
145
+ <i class="icon-check text-success m-r-xs"></i> Analytics
146
+ </li>
147
+ <li class="list-group-item">
148
+ <i class="icon-check text-success m-r-xs"></i> Social Media Integration
149
+ </li>
150
+ <li class="list-group-item">
151
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Multiuser</span>
152
+ </li>
153
+ <li class="list-group-item">
154
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Support</span>
155
+ </li>
156
+ <li class="list-group-item">
157
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">1-800 Call Tracking</span>
158
+ </li>
159
+ <li class="list-group-item">
160
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Automated Reports</span>
161
+ </li>
162
+ <li class="list-group-item">
163
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Commercial Exports</span>
164
+ </li>
165
+ <li class="list-group-item">
166
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Live Chat</span>
167
+ </li>
168
+ <li class="list-group-item">
169
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Video Marketing</span>
170
+ </li>
171
+ </ul>
172
+ <div class="panel-footer text-center">
173
+ <div class="panel-footer text-center">
174
+ <a href="" class="btn btn-default font-bold m" data-ng-show="currentPlan.name == 'basic'">
175
+ <i class='fa fa-check'></i>
176
+ Your Current Plan
177
+ </a>
178
+ <a href="" class="btn btn-info font-bold m" data-ng-click="selectPlan('basic')" data-ng-show="currentPlan.name != 'basic'">Select Plan</a>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ </div>
183
+
184
+ <div class="col-lg-3 col-md-4 col-sm-6">
185
+ <div class="panel b-a" data-ng-class=" { 'thick-border-warning': currentPlan.name == 'pro' } ">
186
+ <div class="panel-heading wrapper-xs bg-warning dker no-border">
187
+
188
+ </div>
189
+ <div class="wrapper text-center m-l-n-xxs m-r-n-xxs b-b b-light" data-ng-class="{ 'bg-warning': currentPlan.name == 'pro' }">
190
+ <h4 class="text-u-c m-b-none">PRO</h4>
191
+ <h2 class="m-t-none">
192
+ <sup class="pos-rlt" style="top:-22px">$</sup>
193
+ <span class="text-2x text-lt">1297</span>
194
+ <span class="text-xs">/ mo</span>
195
+ <br/>
196
+ <span class="text-xs">Recommended!</span>
197
+ </h2>
198
+ </div>
199
+ <ul class="list-group text-center no-borders m-t-sm">
200
+ <li class="list-group-item">
201
+ <i class="icon-check text-success m-r-xs"></i> 1 ($500/mo per additional)
202
+ </li>
203
+ <li class="list-group-item">
204
+ <i class="icon-check text-success m-r-xs"></i> Custom Dashboard
205
+ </li>
206
+ <li class="list-group-item">
207
+ <i class="icon-check text-success m-r-xs"></i> Inventory Management
208
+ </li>
209
+ <li class="list-group-item">
210
+ <i class="icon-check text-success m-r-xs"></i> Lead Manager
211
+ </li>
212
+ <li class="list-group-item">
213
+ <i class="icon-check text-success m-r-xs"></i> Analytics
214
+ </li>
215
+ <li class="list-group-item">
216
+ <i class="icon-check text-success m-r-xs"></i> Social Media Integration
217
+ </li>
218
+ <li class="list-group-item">
219
+ <i class="icon-check text-success m-r-xs"></i> Multiuser
220
+ </li>
221
+ <li class="list-group-item">
222
+ <i class="icon-check text-success m-r-xs"></i> Email Support
223
+ </li>
224
+ <li class="list-group-item">
225
+ <i class="icon-check text-success m-r-xs"></i> 1-800 Call Tracking (200 minutes)
226
+ </li>
227
+ <li class="list-group-item">
228
+ <i class="icon-check text-success m-r-xs"></i> Automated Reports
229
+ </li>
230
+ <li class="list-group-item">
231
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Commercial Exports</span>
232
+ </li>
233
+ <li class="list-group-item">
234
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Live Chat</span>
235
+ </li>
236
+ <li class="list-group-item">
237
+ <i class="icon-close text-danger m-r-xs"></i> <span class="text-l-t">Video Marketing</span>
238
+ </li>
239
+ </ul>
240
+ <div class="panel-footer text-center">
241
+ <div class="panel-footer text-center">
242
+ <a href="" class="btn btn-default font-bold m" data-ng-show="currentPlan.name == 'pro'">
243
+ <i class='fa fa-check'></i>
244
+ Your Current Plan
245
+ </a>
246
+ <a href="" class="btn btn-warning font-bold m" data-ng-click="selectPlan('pro')" data-ng-show="currentPlan.name != 'pro'">Select Plan</a>
247
+ </div>
248
+ </div>
249
+ </div>
250
+ </div>
251
+
252
+ <div class="col-lg-3 col-md-4 col-sm-6 hidden-md">
253
+ <div class="panel b-a" data-ng-class=" { 'thick-border-danger': currentPlan.name == 'ultimate' } ">
254
+ <div class="panel-heading wrapper-xs bg-danger no-border">
255
+
256
+ </div>
257
+ <div class="wrapper text-center b-b b-light" data-ng-class="{ 'bg-danger': currentPlan.name == 'ultimate' }">
258
+ <h4 class="text-u-c m-b-none">ULTIMATE</h4>
259
+ <h2 class="m-t-none">
260
+ <sup class="pos-rlt" style="top:-22px">$</sup>
261
+ <span class="text-2x text-lt">2497</span>
262
+ <span class="text-xs">/ mo</span>
263
+ <br/>
264
+ <span class="text-xs">For established Businesses!</span>
265
+ </h2>
266
+ </div>
267
+ <ul class="list-group text-center no-borders m-t-sm">
268
+ <li class="list-group-item">
269
+ <i class="icon-check text-success m-r-xs"></i> 1 ($500/mo per additional)
270
+ </li>
271
+ <li class="list-group-item">
272
+ <i class="icon-check text-success m-r-xs"></i> Custom Dashboard
273
+ </li>
274
+ <li class="list-group-item">
275
+ <i class="icon-check text-success m-r-xs"></i> Inventory Management
276
+ </li>
277
+ <li class="list-group-item">
278
+ <i class="icon-check text-success m-r-xs"></i> Lead Manager
279
+ </li>
280
+ <li class="list-group-item">
281
+ <i class="icon-check text-success m-r-xs"></i> Analytics
282
+ </li>
283
+ <li class="list-group-item">
284
+ <i class="icon-check text-success m-r-xs"></i> Social Media Integration
285
+ </li>
286
+ <li class="list-group-item">
287
+ <i class="icon-check text-success m-r-xs"></i> Multiuser
288
+ </li>
289
+ <li class="list-group-item">
290
+ <i class="icon-check text-success m-r-xs"></i> Email + Phone Support
291
+ </li>
292
+ <li class="list-group-item">
293
+ <i class="icon-check text-success m-r-xs"></i> 1-800 Call Tracking (500 minutes)
294
+ </li>
295
+ <li class="list-group-item">
296
+ <i class="icon-check text-success m-r-xs"></i> Automated Reports
297
+ </li>
298
+ <li class="list-group-item">
299
+ <i class="icon-check text-success m-r-xs"></i> Commercial Exports
300
+ </li>
301
+ <li class="list-group-item">
302
+ <i class="icon-check text-success m-r-xs"></i> Live Chat
303
+ </li>
304
+ <li class="list-group-item">
305
+ <i class="icon-check text-success m-r-xs"></i> Video Marketing
306
+ </li>
307
+ </ul>
308
+ <div class="panel-footer text-center">
309
+ <div class="panel-footer text-center">
310
+ <a href="" class="btn btn-default font-bold m" data-ng-show="currentPlan.name == 'ultimate'">
311
+ <i class='fa fa-check'></i>
312
+ Your Current Plan
313
+ </a>
314
+ <a href="" class="btn btn-danger font-bold m" data-ng-click="selectPlan('ultimate')" data-ng-show="currentPlan.name != 'ultimate'">Select Plan</a>
315
+ </div>
316
+ </div>
317
+ </div>
318
+ </div>
319
+ </div>
320
+
321
+ </div> <!-- End PlansController -->
322
+ </tab>
323
+
324
+ <tab>
325
+ <tab-heading>
326
+ <i class='fa fa-credit-card'></i> Credit Cards
327
+ </tab-heading>
328
+
329
+ <div>
330
+
331
+ <div class='row'>
332
+ <div class='col-lg-6'>
333
+ <div class="panel panel-default">
334
+
335
+ <div class='panel-heading font-bold'>
336
+ <span>Credit Cards on File:</span>
337
+ <button class="btn btn-primary btn-xs pull-right" data-ng-click="addCreditCard()">
338
+ <i class="fa fa-plus"></i>
339
+ Add New Card
340
+ </button>
341
+ </div>
342
+
343
+ <div class="panel-body">
344
+ <div class='table table-responsive'>
345
+
346
+ <table class='table table-responsive table-striped'>
347
+ <thead>
348
+ <tr>
349
+ <th>Card Type</th>
350
+ <th>Card Holder Name</th>
351
+ <th>Last 4 Digits</th>
352
+ <th>Expiry Date</th>
353
+ <th>Actions</th>
354
+ </tr>
355
+ </thead>
356
+
357
+ <tbody>
358
+ <tr data-ng-repeat='card in dealer.stripe_customer.cards.data'>
359
+ <td>
360
+ {{card.type}}
361
+ </td>
362
+ <td>
363
+ {{card.name}}
364
+ <span class="label bg-info" data-ng-show='card.id == dealer.stripe_customer.default_card'>Primary</span>
365
+ </td>
366
+ <td>{{card.last4}}</td>
367
+ <td>{{card.exp_month}}/{{card.exp_year}}</td>
368
+ <td>
369
+ <div class='btn-group'>
370
+ <button type='button' class='btn btn-default btn-xs' data-ng-click='editCreditCard(card)' >
371
+ <i class='fa fa-edit'></i>
372
+ </button>
373
+ <button type='button' class='btn btn-default btn-xs' data-ng-hide='card.id == dealer.stripe_customer.default_card' data-ng-click='makePrimary(card)' >
374
+ Make Primary
375
+ </button>
376
+ </div>
377
+ </td>
378
+ </tr>
379
+ </tbody>
380
+ </table>
381
+
382
+ </div>
383
+ </div>
384
+ </div>
385
+ </div>
386
+
387
+ <div class='col-lg-6' data-ng-show='showEditForm'>
388
+
389
+ <div class="panel panel-default">
390
+ <div class='panel-heading font-bold'>
391
+ <span>Credit Card Details</span>
392
+
393
+ <button class='btn btn-primary btn-xs pull-right' type='submit' data-ng-click='updateCard()'>
394
+ Update Card
395
+ </button>
396
+
397
+ <button class='btn btn-dark btn-xs pull-right m-l-sm' type='submit' data-ng-click='cancelCardEdit()'>
398
+ Cancel
399
+ </button>
400
+
401
+ </div>
402
+
403
+ <div class="panel-body">
404
+
405
+ <div class='alert alert-info'>
406
+ <span>You cannot update the credit card number or CVC of an existing card. If you need to change those details, chances are you need to add a new card to your account.</span>
407
+ </div>
408
+
409
+ <form name='updateCreditCard'>
410
+
411
+ <div class='form-group'>
412
+ <label>Name</label>
413
+ <input type='text' class='form-control' data-ng-model='currentCard.name'>
414
+ </div>
415
+
416
+ <div class='form-group'>
417
+ <label>Expiry Month</label>
418
+ <input type='text' class='form-control' data-ng-model='currentCard.exp_month'>
419
+ </div>
420
+
421
+ <div class='form-group'>
422
+ <label>Expiry Year</label>
423
+ <input type='text' class='form-control' data-ng-model='currentCard.exp_year'>
424
+ </div>
425
+
426
+ <div class='form-group'>
427
+ <label>Street Address</label>
428
+ <input type='text' class='form-control' data-ng-model='currentCard.address_line1'>
429
+ </div>
430
+
431
+ <div class='form-group'>
432
+ <label>City</label>
433
+ <input type='text' class='form-control' data-ng-model='currentCard.address_city'>
434
+ </div>
435
+
436
+ <div class='form-group'>
437
+ <label>State/Province</label>
438
+ <input type='text' class='form-control' data-ng-model='currentCard.address_state'>
439
+ </div>
440
+
441
+ <div class='form-group'>
442
+ <label>Zip/Postal Code</label>
443
+ <input type='text' class='form-control' data-ng-model='currentCard.address_zip'>
444
+ </div>
445
+
446
+ <div class='form-group'>
447
+ <label>Country</label>
448
+ <input type='text' class='form-control' data-ng-model='currentCard.address_country'>
449
+ </div>
450
+ </form>
451
+ </div>
452
+ </div>
453
+ </div>
454
+
455
+
456
+ <div class='col-lg-6' data-ng-show='showAddCardForm' >
457
+
458
+ <div class='panel panel-default'>
459
+ <div class='panel-heading font-bold'>
460
+ <span>Add New Card</span>
461
+
462
+ <button class='btn btn-primary btn-xs pull-right' type='submit' data-ng-click='addNewCard()'>
463
+ Add Card
464
+ </button>
465
+
466
+ <button class='btn btn-dark btn-xs pull-right m-l-sm' type='submit' data-ng-click='cancelCardEdit()'>
467
+ Cancel
468
+ </button>
469
+ </div>
470
+
471
+ <div class='panel-body'>
472
+
473
+ <div class='alert alert-danger' data-ng-show='stripeError'>
474
+ <span>{{stripeError.message}}</span>
475
+ </div>
476
+
477
+
478
+ <form name='creditCardForm'>
479
+ <center>
480
+ <div class="credit-card-input no-js" id="skeuocard">
481
+ <p class="no-support-warning">
482
+ Either you have Javascript disabled, or you are using an unsupported browser, amigo! Thats why you are seeing this old-school credit card input form instead of a fancy new Skeuocard. On the other hand, at least you know it gracefully degrades...
483
+ </p>
484
+ <label for="cc_type">Card Type</label>
485
+ <select name="cc_type" >
486
+ <option value="">...</option>
487
+ <option value="Visa" data-sc-type='visa'>Visa</option>
488
+ <option value="Discover" data-sc-type='discover'>Discover</option>
489
+ <option value="MasterCard" data-sc-type='mastercard'>MasterCard</option>
490
+ <option value="JCB" data-sc-type='jcb'>JCB</option>
491
+ <option value="Diners Club" data-sc-type='dinersclubintl'>Diners Club</option>
492
+ <option value="American Express" data-sc-type='amex'>American Express</option>
493
+ <option value="maestro">Maestro</option>
494
+ <option value="unionpay">China UnionPay</option>
495
+ </select>
496
+ <label for="cc_number">Card Number</label>
497
+ <input type="text" name="cc_number" id="cc_number" maxlength="19" size="19" >
498
+ <label for="cc_exp_month">Expiration Month</label>
499
+ <input type="text" name="cc_exp_month" id="cc_exp_month" placeholder="00" >
500
+ <label for="cc_exp_year" >Expiration Year</label>
501
+ <input type="text" name="cc_exp_year" id="cc_exp_year" placeholder="00" >
502
+ <label for="cc_name">Cardholders Name</label>
503
+ <input type="text" name="cc_name" id="cc_name" placeholder="John Doe" data-ng-model='sample.name' >
504
+ <label for="cc_cvc">Card Validation Code</label>
505
+ <input type="text" name="cc_cvc" id="cc_cvc" placeholder="123" maxlength="3" size="3">
506
+ </div>
507
+ </center>
508
+
509
+ <div class='form-group'>
510
+ <label>Street Address</label>
511
+ <input type='text' class='form-control' id='address_line1'>
512
+ </div>
513
+
514
+ <div class='form-group'>
515
+ <label>City</label>
516
+ <input type='text' class='form-control' id='address_city'>
517
+ </div>
518
+
519
+ <div class='form-group'>
520
+ <label>State/Province</label>
521
+ <input type='text' class='form-control' id='address_state'>
522
+ </div>
523
+
524
+ <div class='form-group'>
525
+ <label>Zip/Postal Code</label>
526
+ <input type='text' class='form-control' id='address_zip'>
527
+ </div>
528
+
529
+ <div class='form-group'>
530
+ <label>Country</label>
531
+ <input type='text' class='form-control' id='address_country'>
532
+ </div>
533
+
534
+ </form>
535
+
536
+ </div>
537
+ </div>
538
+ </div>
539
+
540
+
541
+
542
+ </div>
543
+
544
+
545
+ </div>
546
+
547
+ </tab>
548
+ </tabset>
549
+
550
+ </div>
551
+
552
+ </script>