voltar 0.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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>