caboose-cms 0.5.214 → 0.5.215

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzFiYmRlZWU5Zjg3YTViMjZmNzZjZmEyMmFhZDQ3Zjc2MWI4Nzk3ZA==
4
+ ZDA4ODMwZTZhOGNhYTU0NGJlMzk2NmRlMmIzM2Q0ZGQ3ODk5YzY1OQ==
5
5
  data.tar.gz: !binary |-
6
- MDQ1MzI3NTM2OTRmNzUxNzg0YjEyMWVhMjUzNzcyMzkxZDI1NWQ0Zg==
6
+ ZTQxOWYwNTVmZTgyMDhlYjJiOGY3YjlhNGI0NDc4NmYyZjEyYjdhZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZWY2Y2NkYjE1YjQ3YmY2ZjhjZWEyZTBkOWI0NjM5MDczOTVkYWU2MmE0YjVh
10
- MTUxMzc0NmVhNGZhOTZhMzU3NzI4Zjc2Nzc3Mjc1ZjRiOTE2YjgzYjZkNWYz
11
- OGFkMGNhYTdmMmQ5M2FmYTMzZTI2NzA3MGQzZmUzYWIxMzk4MGU=
9
+ MmZiOTNkZTQzZjI4ZmUyMzNjYWI1Y2ZjNTU2NGQxZGYxZGViM2E1NTVjNmNl
10
+ Yjc0YTViMDFkNDBmOTg5NDFhNTY2MjNiOGIxOGNjZWVjYzM5NzZhNGVhZTc4
11
+ M2MxYmNhNDFjZWVkZDg2MDU3MDc3NWI4ZDU3MGVhMTNiMzIzOWM=
12
12
  data.tar.gz: !binary |-
13
- MWJiM2MxZGFiNGNhMmFjMjM0OTc0Y2Y5OTA5NjgxYjM1OWY0MTMyYmYxODlk
14
- ZDBiZTVhZmNiNjcxZGMyZWYzYmEzMjNkNjZhZjE4MjJjM2I5MzBiNjdiN2Y1
15
- Nzg1ZTU5N2FiYjU3NTg4MzMwZjcyZDlkMzhhZTE4ZjNiYWViM2E=
13
+ NGI2NzEyODFlOWY1MDQ1OTUwZTZlMzlhNTE2OWQyNTM0OTBlMThkMDI0NDhl
14
+ NWUxMjBkODMxMzE2ZmQ2NmZmMGQ4NTg0NzJmNzVlNmRjODhhZjA0YWQ2M2Qz
15
+ MjkxMzc5NGFiZDM2NWU2NWY3N2JkZTcyYmE0MWZhMTY0NGI5ODk=
@@ -0,0 +1,98 @@
1
+ module Caboose
2
+ class PostCategoriesController < Caboose::ApplicationController
3
+
4
+ #=============================================================================
5
+ # Admin actions
6
+ #=============================================================================
7
+
8
+ # GET /admin/post-categories
9
+ def admin_index
10
+ return unless user_is_allowed('post_categories', 'view')
11
+
12
+ @main_cat = PostCategory.where("site_id = ?", @site.id).first
13
+ if @main_cat.nil?
14
+ @main_cat = PostCategory.create(:site_id => @site.id, :name => 'General News')
15
+ end
16
+ render :layout => 'caboose/admin'
17
+ end
18
+
19
+ # GET /admin/post-categories/new
20
+ def admin_new
21
+ return unless user_is_allowed('post_categories', 'add')
22
+ render :layout => 'caboose/admin'
23
+ end
24
+
25
+ # POST /admin/post-categories
26
+ def admin_add
27
+ return unless user_is_allowed('post_categories', 'add')
28
+
29
+ resp = Caboose::StdClass.new
30
+
31
+ if params[:name].nil? || params[:name].empty?
32
+ resp.error = 'The category name cannot be empty.'
33
+ else
34
+ cat = PostCategory.new(
35
+ :site_id => @site.id,
36
+ :name => params[:name]
37
+ )
38
+
39
+ if cat.save
40
+ resp.redirect = "/admin/post-categories/#{cat.id}"
41
+ else
42
+ resp.error = 'There was an error saving the category.'
43
+ end
44
+ end
45
+
46
+ render :json => resp
47
+ end
48
+
49
+ # GET /admin/post-categories/:id
50
+ def admin_edit
51
+ return unless user_is_allowed('post_categories', 'edit')
52
+ @category = PostCategory.find(params[:id])
53
+ render :layout => 'caboose/admin'
54
+ end
55
+
56
+ # PUT /admin/post-categories/:id
57
+ def admin_update
58
+ return unless user_is_allowed('post_categories', 'edit')
59
+
60
+ # Define category and initialize response
61
+ cat = PostCategory.find(params[:id])
62
+ resp = Caboose::StdClass.new({ :attributes => {} })
63
+
64
+ # Iterate over params and update relevant attributes
65
+ params.each do |key, value|
66
+ case key
67
+ when 'site_id' then cat.name = value
68
+ when 'name' then cat.name = value
69
+ end
70
+ end
71
+
72
+ # Try and save category
73
+ resp.success = cat.save
74
+
75
+ # Respond to update request
76
+ render :json => resp
77
+ end
78
+
79
+ # DELETE /admin/post-categories/:id
80
+ def admin_delete
81
+ return unless user_is_allowed('post_categories', 'delete')
82
+
83
+ resp = Caboose::StdClass.new
84
+ cat = PostCategory.find(params[:id])
85
+
86
+ if cat.posts.any?
87
+ resp.error = "Can't delete a post category that has posts in it."
88
+ else
89
+ resp.success = cat.destroy
90
+ resp.redirect = '/admin/post-categories'
91
+ end
92
+ render :json => resp
93
+ end
94
+
95
+
96
+ end
97
+ end
98
+
@@ -8,15 +8,16 @@ class Caboose::CorePlugin < Caboose::CaboosePlugin
8
8
 
9
9
  item = { 'id' => 'core', 'text' => 'Settings', 'children' => [] }
10
10
  item['children'] << { 'id' => 'blocktypes' , 'text' => 'AB Test Variants' , 'href' => '/admin/ab-variants' , 'modal' => false } if user.is_allowed('abvariants' , 'view')
11
- item['children'] << { 'id' => 'blocktypes' , 'text' => 'Block Types' , 'href' => '/admin/block-types' , 'modal' => false } if user.is_allowed('blocktypes' , 'view')
12
- item['children'] << { 'id' => 'fonts' , 'text' => 'Fonts' , 'href' => '/admin/fonts' , 'modal' => false } if user.is_allowed('fonts' , 'view') if site.use_fonts
11
+ item['children'] << { 'id' => 'blocktypes' , 'text' => 'Block Types' , 'href' => '/admin/block-types' , 'modal' => false } if user.is_allowed('blocktypes' , 'view') if site.is_master == true
12
+ item['children'] << { 'id' => 'fonts' , 'text' => 'Fonts' , 'href' => '/admin/fonts' , 'modal' => false } if user.is_allowed('fonts' , 'view') if site.use_fonts == true
13
13
  item['children'] << { 'id' => 'redirects' , 'text' => 'Permanent Redirects' , 'href' => '/admin/redirects' , 'modal' => false } if user.is_allowed('redirects' , 'view')
14
- item['children'] << { 'id' => 'permissions' , 'text' => 'Permissions' , 'href' => '/admin/permissions' , 'modal' => false } if user.is_allowed('permissions' , 'view')
14
+ item['children'] << { 'id' => 'permissions' , 'text' => 'Permissions' , 'href' => '/admin/permissions' , 'modal' => false } if user.is_allowed('permissions' , 'view')
15
+ item['children'] << { 'id' => 'post_categories' , 'text' => 'Post Categories' , 'href' => '/admin/post-categories' , 'modal' => false } if user.is_allowed('post_categories', 'view')
15
16
  item['children'] << { 'id' => 'roles' , 'text' => 'Roles' , 'href' => '/admin/roles' , 'modal' => false } if user.is_allowed('roles' , 'view')
16
17
  item['children'] << { 'id' => 'sites' , 'text' => 'Sites' , 'href' => '/admin/sites' , 'modal' => false } if user.is_allowed('sites' , 'view') if site.is_master == true
17
18
  item['children'] << { 'id' => 'smtp' , 'text' => 'SMTP (Mail)' , 'href' => '/admin/smtp' , 'modal' => false } if user.is_allowed('smtp' , 'view')
18
19
  item['children'] << { 'id' => 'social' , 'text' => 'Social Media' , 'href' => '/admin/social' , 'modal' => false } if user.is_allowed('social' , 'view')
19
- item['children'] << { 'id' => 'store' , 'text' => 'Store' , 'href' => '/admin/store' , 'modal' => false } if user.is_allowed('store' , 'view')
20
+ item['children'] << { 'id' => 'store' , 'text' => 'Store' , 'href' => '/admin/store' , 'modal' => false } if user.is_allowed('store' , 'view') if site.use_store == true
20
21
  item['children'] << { 'id' => 'users' , 'text' => 'Users' , 'href' => '/admin/users' , 'modal' => false } if user.is_allowed('users' , 'view')
21
22
  item['children'] << { 'id' => 'variables' , 'text' => 'Variables' , 'href' => '/admin/settings' , 'modal' => false } if user.is_allowed('settings' , 'view')
22
23
  nav << item if item['children'].count > 0
@@ -10,7 +10,11 @@ class Caboose::Role < ActiveRecord::Base
10
10
  has_many :permissions, :through => :role_permissions
11
11
  has_many :page_permissions
12
12
 
13
- attr_accessible :name, :description, :parent_id, :site_id
13
+ attr_accessible :id,
14
+ :name,
15
+ :description,
16
+ :parent_id,
17
+ :site_id
14
18
  attr_accessor :children
15
19
 
16
20
  def self.admin_role
@@ -19,7 +19,10 @@ width = 200
19
19
  <% id = item['id'].nil? ? i.to_s : item['id'] %>
20
20
  <% href = item['href'].nil? ? '#' : item['href'] %>
21
21
  <% modal = item['modal'].nil? ? false : item['modal'] %>
22
- <li id='nav_item_<%= id %>'><a href='<%= href %>'<%= raw (modal ? " rel='modal'" : "") %>><span class='icon'></span><span class='text'><%= item['text'] %></span></a>
22
+ <li id='nav_item_<%= id %>'>
23
+ <% if href != "#" %><a href='<%= href %>'<%= raw (modal ? " rel='modal'" : "") %>><% end %>
24
+ <span class='icon'></span><span class='text'><%= item['text'] %></span>
25
+ <% if href != "#" %></a><% end %>
23
26
  <% if (!item['children'].nil? && item['children'].count > 0) %>
24
27
  <ul>
25
28
  <% item['children'].each do |item2| %>
@@ -46,7 +46,11 @@ $(document).ready(function() {
46
46
  m = new ModelBinder({
47
47
  name: 'Block',
48
48
  id: <%= b.id %>,
49
+ <% if b.post_id %>
50
+ update_url: '/admin/posts/<%= b.post_id %>/blocks/<%= b.id %>',
51
+ <% else %>
49
52
  update_url: '/admin/pages/<%= b.page_id %>/blocks/<%= b.id %>',
53
+ <% end %>
50
54
  authenticity_token: '<%= form_authenticity_token %>',
51
55
  attributes: [{
52
56
  name: 'block_type_id',
@@ -3,6 +3,7 @@
3
3
 
4
4
  <form action='/admin/pages/<%= @page.id %>' method='put' id='layout_form'>
5
5
  <input type='hidden' name='authenticity_token' value='<%= form_authenticity_token %>' />
6
+ <h4 style="color:red;">WARNING: Changing the page layout will delete all existing content from the page.</h4>
6
7
  <p><select name='block_type_id'>
7
8
  <option value=''>-- Select a layout --</option>
8
9
  <% cat_ids = Caboose::BlockTypeCategory.layouts.collect{ |cat| cat.id } %>
@@ -0,0 +1,66 @@
1
+ <h1>Edit Category</h1>
2
+
3
+ <p><div class="push-below" id="postcategory_<%= @category.id %>_name"></div></p>
4
+
5
+ <h2>Posts</h2>
6
+
7
+ <% if @category.posts.any? %>
8
+ <ul>
9
+ <% @category.posts.each do |post| %>
10
+ <li><a href="/admin/posts/<%= post.id %>"><%= post.title %></a></li>
11
+ <% end %>
12
+ </ul>
13
+ <% else %>
14
+ <p>This category has no associated posts.</p>
15
+ <% end %>
16
+
17
+ <div id="message"></div>
18
+ <p>
19
+ <input type="button" value="< Back" onclick="window.location='/admin/post-categories';" />
20
+ <input type="button" value="Delete Category" onclick="delete_category(<%= @category.id %>)" />
21
+ </p>
22
+
23
+ <% content_for :caboose_css do %>
24
+ <style>
25
+ .push-below { margin-bottom: 24px; }
26
+ </style>
27
+ <% end %>
28
+
29
+ <% content_for :caboose_js do %>
30
+ <%= javascript_include_tag "caboose/model/all" %>
31
+ <script type='text/javascript'>
32
+
33
+ $(document).ready(function() {
34
+ m = new ModelBinder({
35
+ name: 'PostCategory',
36
+ id: <%= @category.id %>,
37
+ update_url: '/admin/post-categories/<%= @category.id %>',
38
+ authenticity_token: '<%= form_authenticity_token %>',
39
+ attributes: [
40
+
41
+ { name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(@category.name) %> , width: 400 }
42
+ ]
43
+ });
44
+ });
45
+
46
+ function delete_category(cat_id, confirm) {
47
+ if (!confirm) {
48
+ var p = $('<p/>').addClass('note error').css('margin-bottom', '10px')
49
+ .append("Are you sure you want to delete the category?<br />This can't be undone.<br /><br />")
50
+ .append($('<input/>').attr('type', 'button').val('Yes').click(function() { delete_category(cat_id, true); })).append(' ')
51
+ .append($('<input/>').attr('type', 'button').val('No').click(function() { $('#message').empty(); }));
52
+ $('#message').empty().append(p);
53
+ return;
54
+ }
55
+ $('#message').html("<p class='loading'>Deleting the category...</p>");
56
+ $.ajax({
57
+ url: '/admin/post-categories/' + cat_id,
58
+ type: 'delete',
59
+ success: function(resp) {
60
+ if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>");
61
+ if (resp.redirect) window.location = resp.redirect;
62
+ }
63
+ });
64
+ }
65
+ </script>
66
+ <% end %>
@@ -0,0 +1,16 @@
1
+ <h1>Post Categories</h1>
2
+ <a href='/admin/post-categories/new'>New Category</a>
3
+
4
+ <% cats = Caboose::PostCategory.where(:site_id => @site.id).order(:name).all %>
5
+ <ul>
6
+ <% cats.each do |c| %>
7
+ <li><a href="/admin/post-categories/<%= c.id %>" title="<%= c.name %>"><%= c.name %></a>
8
+ <% end %>
9
+ </ul>
10
+
11
+
12
+ <% content_for :caboose_js do %>
13
+ <script type='text/javascript'>
14
+
15
+ </script>
16
+ <% end %>
@@ -0,0 +1,43 @@
1
+ <h1>New Category</h1>
2
+
3
+ <form action="/admin/categories" method="post" id="new_form">
4
+ <input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>" />
5
+ <p><input type="text" name="name" id='name' placeholder="Category Name" /></p>
6
+ <div id="message"></div>
7
+ <input type="button" value="< Back" onclick="window.location='/admin/post-categories';" />
8
+ <input type="submit" value="Add Category" onclick="add_category(); return false" />
9
+ </form>
10
+
11
+ <% content_for :caboose_js do %>
12
+ <%= javascript_include_tag "caboose/model/all" %>
13
+ <script type='text/javascript'>
14
+
15
+ function add_category() {
16
+ $('#message').html("<p class='loading'>Adding category...</p>");
17
+ var stay = $('#stay').prop('checked');
18
+
19
+ $.ajax({
20
+ url: '/admin/post-categories',
21
+ type: 'post',
22
+ data: $('#new_form').serialize(),
23
+ success: function(resp) {
24
+ if (resp.error) modal.autosize("<p class='note error'>" + resp.error + "</p>");
25
+ if (resp.redirect)
26
+ {
27
+ if (stay)
28
+ {
29
+ $('#name').val('');
30
+ get_category_options();
31
+ $('#message').html("<p class='note succes'>The category has been added successfully.</p>");
32
+ setTimeout(function() { $('#message').empty(); }, 2000);
33
+ }
34
+ else if (resp.redirect)
35
+ window.location = resp.redirect;
36
+ }
37
+ }
38
+ });
39
+ }
40
+
41
+
42
+ </script>
43
+ <% end %>
@@ -46,7 +46,7 @@ user_ids = [] if user_ids.nil?
46
46
  <div id='members'>
47
47
  <table class='data'>
48
48
  <tr><th>User</th><th>None</th><th>User</th><th>Admin</th></tr>
49
- <% Caboose::User.reorder('last_name, first_name').all.each do |u| %>
49
+ <% Caboose::User.where(:site_id => @site.id).reorder('last_name, first_name').all.each do |u| %>
50
50
  <tr>
51
51
  <td><%= u.first_name %> <%= u.last_name %> (<%= u.email %>)</td>
52
52
  <td align='center'><input type='radio' name='user<%= u.id %>' <%= !admin_ids.include?(u.id) && !user_ids.include?(u.id) ? "checked='true'" : '' %> onclick="remove_site_membership(<%= s.id %>, <%= u.id %>);" /></td>
data/config/routes.rb CHANGED
@@ -372,6 +372,23 @@ Caboose::Engine.routes.draw do
372
372
  get "/admin/posts" => "posts#admin_index"
373
373
  post "/admin/posts" => "posts#admin_add"
374
374
  delete "/admin/posts/:id" => "posts#admin_delete"
375
+
376
+ #=============================================================================
377
+ # Post Categories
378
+ #=============================================================================
379
+
380
+ get "/admin/post-categories" => "post-categories#admin_index"
381
+ get "/admin/post-categories/new" => "post-categories#admin_new"
382
+ get "/admin/post-categories/options" => "post-categories#admin_options"
383
+ get '/admin/post-categories/status-options' => 'post-categories#admin_status_options'
384
+ get "/admin/post-categories/:id/sort-children" => "post-categories#admin_sort_children"
385
+ put "/admin/post-categories/:id/children/sort-order" => "post-categories#admin_update_sort_order"
386
+ get "/admin/post-categories/:id/products/json" => "post-categories#admin_category_products"
387
+ get "/admin/post-categories/:id" => "post-categories#admin_edit"
388
+ put "/admin/post-categories/:id" => "post-categories#admin_update"
389
+ post "/admin/post-categories/:id" => "post-categories#admin_update"
390
+ post "/admin/post-categories" => "post-categories#admin_add"
391
+ delete "/admin/post-categories/:id" => "post-categories#admin_delete"
375
392
 
376
393
  #=============================================================================
377
394
  # Google Spreadsheets
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.5.214'
2
+ VERSION = '0.5.215'
3
3
  end
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.5.214
4
+ version: 0.5.215
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-06-15 00:00:00.000000000 Z
11
+ date: 2015-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -554,6 +554,7 @@ files:
554
554
  - app/controllers/caboose/page_permissions_controller.rb
555
555
  - app/controllers/caboose/pages_controller.rb
556
556
  - app/controllers/caboose/permissions_controller.rb
557
+ - app/controllers/caboose/post_categories_controller.rb
557
558
  - app/controllers/caboose/posts_controller.rb
558
559
  - app/controllers/caboose/product_images_controller.rb
559
560
  - app/controllers/caboose/products_controller.rb
@@ -847,6 +848,9 @@ files:
847
848
  - app/views/caboose/permissions/edit.html.erb
848
849
  - app/views/caboose/permissions/index.html.erb
849
850
  - app/views/caboose/permissions/new.html.erb
851
+ - app/views/caboose/post_categories/admin_edit.html.erb
852
+ - app/views/caboose/post_categories/admin_index.html.erb
853
+ - app/views/caboose/post_categories/admin_new.html.erb
850
854
  - app/views/caboose/posts/_admin_footer.html.erb
851
855
  - app/views/caboose/posts/_admin_header.html.erb
852
856
  - app/views/caboose/posts/admin_delete_form.html.erb