caboose-cms 0.6.22 → 0.6.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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDJlNjMyNDg2NTIwNWRjMTNiZjYxMDFmNDY5NzkxMTc4MzJjOTczZQ==
4
+ N2M5ZDYwMzJmZWIwMmE0NTllOGQ1Yjk5MTI4ODhhNTU0YjZhN2NkZg==
5
5
  data.tar.gz: !binary |-
6
- NWZlMjMzNDAyMjRlOWY2MzA3MjE0YzYyYzJkMDM1YWQ0NmE2YmU1NQ==
6
+ YmI3YjAyMDk2NThjNGFkNzliYjQ2YWRhZGZlMzM5ODBhODBkMmU5Mg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NjczMDJhZTc4MGZlOGViYWFjMjg4YTMzYjdiNzcxNzVkYTUwM2FkYTRmYzI2
10
- YzhiOGE5OGNiYWUzZTA5ZTQwMGU2ZjJhMTZjZTA5YTRhNjM2ZDM2YWEyYWRh
11
- YTUyNmZmNjAyY2UxN2I1Y2M2Mjk2YzhiMTYyNjg1YjFkZWViMDY=
9
+ ZjIxYzg3MmIyNmEyZGQxYmRhNGQ1NzFjZjA0Yzg3NzkxZDgwNjk3YmNmNGYx
10
+ YzM0MjM3MjliZjIzNGMxYzU0NDc4NTcwODc3MzE0MDVlYjIxZDY5NDU1ZmU0
11
+ NzQ5OWM2MGExZmNkZGNiMzY3ZDRhNmQ2ZDRjZjEzYjkzYmUyZDA=
12
12
  data.tar.gz: !binary |-
13
- ZjEyNTU2MTE1YjFiMjE0ZmExMDBlNmJjMzIzMTA4M2JkZjc5M2YyOWNhM2Uz
14
- OTcxNmE4NjNjMjBmNGQ1MWQzNzU3MGU4YjQ0OWFmNGI4YTE3N2E2Y2UwMWM3
15
- OGQ4MTNiNzM0Nzg2MzA1YzFlNTliYjdlMTFiZTg2NGU1YTljZDM=
13
+ NzUxMzMxZWQ0YzcxNTFmOTllZmE2MzI4NzE3OTc1NjA0MGYwMjM0YTEwNGVl
14
+ MmM0NzFkMzI3NGJkNzE4MjhmZGMwMDgxOTQ1ZGVlODZmMmNmYzllZTgyM2Uy
15
+ Y2Q3ZjI1ZTQ4ZTI4NThlZjQ4YTA1M2UxZWQ3MTg2MTg0NWFjYTA=
@@ -54,9 +54,12 @@ Caboose.Store.Modules.Product = (function() {
54
54
  self.initalize_zoom = function(image_url) {
55
55
  var big_image = $("#product-images").children("figure").first();
56
56
  big_image.data("zoom-image",image_url);
57
- if (typeof elevateZoom !== 'undefined') {
57
+ try {
58
58
  big_image.elevateZoom();
59
59
  }
60
+ catch(err) {
61
+ console.log("Missing image zoom script.");
62
+ }
60
63
  }
61
64
 
62
65
  self.render_images = function(callback) {
@@ -6,12 +6,26 @@ module Caboose
6
6
  def before_action
7
7
  @page = Page.page_with_uri(request.host_with_port, '/admin')
8
8
  end
9
-
9
+
10
10
  # GET /admin/login-logs
11
- def index
12
- return if !user_is_allowed('users', 'view')
13
-
14
- @gen = PageBarGenerator.new(params, {
11
+ def admin_index
12
+ return if !user_is_allowed_to 'view', 'loginlogs'
13
+ @pager = self.login_logs_pager
14
+ render :layout => 'caboose/admin'
15
+ end
16
+
17
+ # GET /admin/login-logs/json
18
+ def admin_json
19
+ return if !user_is_allowed_to 'view', 'loginlogs'
20
+ pager = self.login_logs_pager
21
+ render :json => {
22
+ :pager => pager,
23
+ :models => pager.items
24
+ }
25
+ end
26
+
27
+ def login_logs_pager
28
+ return Caboose::Pager.new(params, {
15
29
  'site_id' => @site.id,
16
30
  'username_like' => '',
17
31
  'user_id' => '',
@@ -23,11 +37,25 @@ module Caboose
23
37
  'model' => 'Caboose::LoginLog',
24
38
  'sort' => 'date_attempted',
25
39
  'desc' => false,
40
+ 'items_per_page' => 100,
26
41
  'base_url' => '/admin/login-logs',
27
42
  'use_url_params' => false
28
- })
29
- @logs = @gen.items
30
- end
43
+ })
44
+ end
45
+
46
+ # GET /admin/login-logs/:id/json
47
+ def admin_json_single
48
+ return if !user_is_allowed_to 'view', 'loginlogs'
49
+ login_log = LoginLog.find(params[:id])
50
+ render :json => login_log
51
+ end
52
+
53
+ # GET /admin/login-logs/:id
54
+ def admin_edit
55
+ return if !user_is_allowed_to 'edit', 'loginlogs'
56
+ @login_log = LoginLog.find(params[:id])
57
+ render :layout => 'caboose/admin'
58
+ end
31
59
 
32
60
  end
33
61
  end
@@ -1,41 +1,41 @@
1
- <h1>Login Logs</h1>
2
-
3
- <form action='/admin/users' method='get' class='search_form'>
4
- <input type='text' name='first_name_like' value="<%= @gen.params['first_name_like'] %>" placeholder='First name' />
5
- <input type='text' name='last_name_like' value="<%= @gen.params['last_name_like'] %>" placeholder='Last name' />
6
- <input type='text' name='email_like' value="<%= @gen.params['email_like'] %>" placeholder='Email' />
7
- <input type='submit' value='Search' />
8
- </form>
9
-
10
- <p>
11
- <a href='/admin/users/new'>New User</a> |
12
- <a href='/admin/users/import'>Import CSV</a>
13
- </p>
14
-
15
- <table class='data' id='users_table'>
16
- <tr>
17
- <%= raw @gen.sortable_table_headings({
18
- 'first_name' => 'First Name',
19
- 'last_name, first_name' => 'Last Name',
20
- 'username' => 'Username',
21
- 'email' => 'Email'
22
- })
23
- %>
24
- </tr>
25
- <% @users.each do |user| %>
26
- <tr onclick="window.location='/admin/users/<%= user.id %>';">
27
- <td><%= user.first_name %></td>
28
- <td><%= user.last_name %></td>
29
- <td><%= user.username %></td>
30
- <td><%= user.email %></td>
31
- </tr>
32
- <% end %>
33
- </table>
34
1
 
35
- <p><%= raw @gen.generate %></p>
2
+ <h1>Login Logs</h1>
3
+ <div id='login_logs'></div>
36
4
 
37
5
  <% content_for :caboose_js do %>
6
+ <%= javascript_include_tag 'caboose/model/all' %>
38
7
  <script type='text/javascript'>
39
8
 
9
+ $(document).ready(function() {
10
+ var that = this;
11
+ var table = new IndexTable({
12
+ form_authenticity_token: '<%= form_authenticity_token %>',
13
+ container: 'login_logs',
14
+ base_url: '/admin/login-logs',
15
+ allow_add: false,
16
+ allow_bulk_import: false,
17
+ allow_bulk_edit: false,
18
+ allow_bulk_delete: false,
19
+ allow_duplicate: false,
20
+ allow_advanced_edit: false,
21
+ fields: [
22
+ { show: true, name: 'username' , nice_name: 'Username' , sort: 'username' , type: 'text' , value: function(ll) { return ll.username }, width: 150, align: 'left', bulk_edit: false, editable: false },
23
+ { show: true, name: 'user_id' , nice_name: 'User ID' , sort: 'user_id' , type: 'text' , value: function(ll) { return ll.user_id }, width: 150, align: 'left', bulk_edit: false, editable: false },
24
+ { show: true, name: 'date_attempted' , nice_name: 'Date' , sort: 'date_attempted' , type: 'text' , value: function(ll) { return ll.date_attempted }, width: 150, align: 'left', bulk_edit: false, editable: false },
25
+ { show: true, name: 'ip' , nice_name: 'IP Address' , sort: 'ip' , type: 'text' , value: function(ll) { return ll.ip }, width: 150, align: 'left', bulk_edit: false, editable: false },
26
+ { show: true, name: 'success' , nice_name: 'Success' , sort: 'success' , type: 'checkbox' , value: function(ll) { return ll.success }, width: 150, align: 'left', bulk_edit: false, editable: false }
27
+ ],
28
+ search_fields: [
29
+ { name: 'username_like' , nice_name: 'Username' , type: 'text' , width: 150, align: 'left' },
30
+ { name: 'user_id' , nice_name: 'User ID' , type: 'text' , width: 150, align: 'left' },
31
+ { name: 'date_attempted_gte' , nice_name: 'Date Min' , type: 'text' , width: 150, align: 'left' },
32
+ { name: 'date_attempted_lte' , nice_name: 'Date Max' , type: 'text' , width: 150, align: 'left' },
33
+ { name: 'ip_like' , nice_name: 'IP Address' , type: 'text' , width: 150, align: 'left' },
34
+ { name: 'success' , nice_name: 'Success' , type: 'checkbox' , width: 150, align: 'left' }
35
+ ],
36
+ no_models_text: "There are no login logs right now."
37
+ });
38
+ });
39
+
40
40
  </script>
41
- <% end %>
41
+ <% end %>
@@ -0,0 +1,2 @@
1
+ <br style='clear: left; line-height: 0;' />
2
+ </div><!-- modal_content2 -->
@@ -0,0 +1,25 @@
1
+ <% content_for :caboose_css do %>
2
+ <% end %>
3
+ <% content_for :caboose_js do %>
4
+ <%= javascript_include_tag "caboose/model/all" %>
5
+ <% end %>
6
+
7
+ <h1>Edit Advertiser</h1>
8
+ <ul id='tabs'>
9
+ <%
10
+ tabs = {
11
+ 'General' => "/admin/advertisers/#{@advertiser.id}",
12
+ 'Authorize.net Info' => "/admin/advertisers/#{@advertiser.id}/authnet",
13
+ 'Users' => "/admin/advertisers/#{@advertiser.id}/users",
14
+ 'Campaigns' => "/admin/advertisers/#{@advertiser.id}/campaigns",
15
+ 'Invoices' => "/admin/advertisers/#{@advertiser.id}/invoices",
16
+ 'Delete' => "/admin/advertisers/#{@advertiser.id}/delete"
17
+ }
18
+ %>
19
+ <% tabs.each do |text, href| %>
20
+ <% selected = true if request.fullpath == href || (text != 'General' && request.fullpath.starts_with?(href)) %>
21
+ <li<% if selected %> class='selected'<% end %>><a href='<%= href %>'><%= raw text %></a></li>
22
+ <% end %>
23
+ <li class='back'><input type='button' value='< Back' onclick="window.location='/admin/advertisers';" /></li>
24
+ </ul>
25
+ <div id='content2'>
@@ -19,9 +19,10 @@ pic = "http://gravatar.com/avatar/#{gravatar_id}.png?s=150" #&d=/assets/caboose/
19
19
  </div>
20
20
  <div id='message'></div>
21
21
  <div id='controls'>
22
- <input type='button' value='Back' onclick="window.location='/admin/users';" />
23
- <input type='button' value='Reset Password' onclick="window.location='/admin/users/<%= @edituser.id %>/edit-password';" />
24
- <input type='button' value='Delete User' onclick="delete_user(<%= @edituser.id %>);" />
22
+ <input type='button' value='Back' onclick="window.location='/admin/users';" />
23
+ <input type='button' value='Login Logs for this User' onclick="window.location='/admin/login-logs?user_id=<%= @edituser.id %>';" />
24
+ <input type='button' value='Reset Password' onclick="window.location='/admin/users/<%= @edituser.id %>/edit-password';" />
25
+ <input type='button' value='Delete User' onclick="delete_user(<%= @edituser.id %>);" />
25
26
  </div>
26
27
 
27
28
  <% content_for :caboose_css do %>
@@ -79,6 +79,13 @@ Caboose::Engine.routes.draw do
79
79
  delete "/admin/sites/:site_id/domains/:id" => "domains#admin_delete"
80
80
  put "/admin/sites/:site_id/domains/:id/set-primary" => "domains#admin_set_primary"
81
81
 
82
+ #=============================================================================
83
+ # Login Logs
84
+ #=============================================================================
85
+
86
+ get "/admin/login-logs/json" => "login_logs#admin_json"
87
+ get "/admin/login-logs" => "login_logs#admin_index"
88
+
82
89
  #=============================================================================
83
90
  # Store
84
91
  #=============================================================================
@@ -14,7 +14,10 @@ module Caboose
14
14
 
15
15
  mattr_accessor :plugins
16
16
  @@plugins = ['Caboose::CorePlugin']
17
-
17
+
18
+ mattr_accessor :schemas
19
+ @@schemas = ['Caboose::Schema', 'Schema']
20
+
18
21
  # Any paths to modeljs javascript files
19
22
  mattr_accessor :modeljs_js_files
20
23
  @@modeljs_js_files = []
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.6.22'
2
+ VERSION = '0.6.23'
3
3
  end
@@ -151,12 +151,18 @@ namespace :caboose do
151
151
 
152
152
  desc "Creates/verifies that all database tables and fields are correctly added."
153
153
  task :db => :environment do
154
- Caboose::Schema.create_schema
155
- Caboose::Schema.load_data
156
- if class_exists?('Schema')
157
- Schema.create_schema
158
- Schema.load_data
154
+ Caboose::schemas.each do |schema_class|
155
+ S = schema_class.constantize
156
+ S.create_schema
157
+ S.load_data
159
158
  end
159
+
160
+ #Caboose::Schema.create_schema
161
+ #Caboose::Schema.load_data
162
+ #if class_exists?('Schema')
163
+ # Schema.create_schema
164
+ # Schema.load_data
165
+ #end
160
166
  caboose_correct_sequences
161
167
  end
162
168
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.22
4
+ version: 0.6.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-14 00:00:00.000000000 Z
11
+ date: 2015-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -1012,6 +1012,8 @@ files:
1012
1012
  - app/views/caboose/store/admin_edit_payment.html.erb
1013
1013
  - app/views/caboose/store/admin_edit_shipping.html.erb
1014
1014
  - app/views/caboose/store/admin_edit_tax.html.erb
1015
+ - app/views/caboose/users/_admin_footer.html.erb
1016
+ - app/views/caboose/users/_admin_header.html.erb
1015
1017
  - app/views/caboose/users/edit.html.erb
1016
1018
  - app/views/caboose/users/edit_password.html.erb
1017
1019
  - app/views/caboose/users/import_form.html.erb