sunrise-cms 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +5 -0
- data/README.md +8 -0
- data/app/controllers/sunrise/dashboard_controller.rb +1 -1
- data/app/controllers/sunrise/manager_controller.rb +1 -1
- data/app/views/sunrise/manager/buttons/_sort.html.erb +1 -1
- data/config/locales/sunrise/en.yml +3 -0
- data/config/locales/sunrise/ru.yml +3 -0
- data/config/locales/sunrise/uk.yml +3 -0
- data/lib/generators/sunrise/install_generator.rb +1 -1
- data/lib/generators/sunrise/templates/config/{sunrise.rb → active_record/sunrise.rb} +6 -6
- data/lib/generators/sunrise/templates/config/mongoid/sunrise.rb +51 -0
- data/lib/generators/sunrise/templates/config/nginx-config +5 -37
- data/lib/generators/sunrise/templates/models/mongoid/structure.rb +4 -4
- data/lib/sunrise/abstract_model.rb +20 -11
- data/lib/sunrise/version.rb +1 -1
- data/lib/sunrise.rb +9 -1
- data/spec/dummy/log/test.log +7653 -0
- data/spec/models/sunrise/abstract_model_spec.rb +8 -0
- metadata +4 -3
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== 0.6.1
|
2
|
+
* New callbacks after_sort, before_sort, after_mass_destroy, before_mass_destroy in Abstract model.
|
3
|
+
* Translate sort buttons
|
4
|
+
* New nginx config (using try_files)
|
5
|
+
|
1
6
|
== 0.6.0
|
2
7
|
* Raname attributes kind and position to structure_type_id and position_type_id
|
3
8
|
* Integrate "public_activity" gem
|
data/README.md
CHANGED
@@ -39,6 +39,8 @@ class SunriseProduct < Sunrise::AbstractModel
|
|
39
39
|
self.resource_name = "Product"
|
40
40
|
|
41
41
|
association :structure
|
42
|
+
|
43
|
+
after_sort :clear_cache
|
42
44
|
|
43
45
|
list :thumbs do
|
44
46
|
scope { Product.includes(:picture) }
|
@@ -79,6 +81,12 @@ class SunriseProduct < Sunrise::AbstractModel
|
|
79
81
|
field :picture, :as => :uploader
|
80
82
|
end
|
81
83
|
end
|
84
|
+
|
85
|
+
protected
|
86
|
+
|
87
|
+
def clear_cache
|
88
|
+
Rails.cache.clear
|
89
|
+
end
|
82
90
|
end
|
83
91
|
```
|
84
92
|
|
@@ -9,7 +9,7 @@ module Sunrise
|
|
9
9
|
cur_page = (params[:page] || 1).to_i
|
10
10
|
offset = (cur_page - 1) * per_page
|
11
11
|
|
12
|
-
@events =
|
12
|
+
@events = Sunrise.activities
|
13
13
|
@events = @events.limit(per_page).offset(offset)
|
14
14
|
|
15
15
|
respond_with(@events) do |format|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<div class="but-holder">
|
2
2
|
<div class="act-but">
|
3
|
-
<%= link_to image_tag('sunrise/empty.gif'), export_path(:format => :json), :class => 'but-container sort', :title => '
|
3
|
+
<%= link_to image_tag('sunrise/empty.gif'), export_path(:format => :json), :class => 'but-container sort', :title => t('manage.buttons.sort'), :id => 'sort-button', :"data-save_title" => t('manage.buttons.save'), :"data-cancel_title" => t('manage.buttons.cancel'), :"data-url" => sort_path(:format => :json) %>
|
4
4
|
|
5
5
|
<script type="text/javascript">
|
6
6
|
$(document).ready(function(){
|
@@ -22,7 +22,7 @@ module Sunrise
|
|
22
22
|
|
23
23
|
def copy_configurations
|
24
24
|
copy_file('config/seeds.rb', 'db/seeds.rb')
|
25
|
-
copy_file(
|
25
|
+
copy_file("config/#{orm}/sunrise.rb", 'config/initializers/sunrise.rb')
|
26
26
|
|
27
27
|
template('config/database.yml', 'config/database.yml.sample')
|
28
28
|
template('config/logrotate-config', 'config/logrotate-config.sample')
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'meta_manager/orm/active_record'
|
2
|
+
require 'page_parts/orm/active_record'
|
3
3
|
|
4
4
|
# Use this hook to configure sunrise
|
5
5
|
Sunrise.setup do |config|
|
@@ -41,11 +41,11 @@ Sunrise.setup do |config|
|
|
41
41
|
# config.navigational_formats = [:html, :json]
|
42
42
|
end
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
PublicActivity::Config.set do
|
45
|
+
orm :active_record
|
46
|
+
end
|
47
47
|
|
48
48
|
#if Settings.table_exists?
|
49
49
|
# Settings.defaults[:some_setting] = "value"
|
50
50
|
# Settings.defaults[:some_setting2] = "value2"
|
51
|
-
#end
|
51
|
+
#end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'meta_manager/orm/mongoid'
|
2
|
+
require 'page_parts/orm/mongoid'
|
3
|
+
|
4
|
+
# Use this hook to configure sunrise
|
5
|
+
Sunrise.setup do |config|
|
6
|
+
# Paginate records per page (default: 25)
|
7
|
+
# config.default_items_per_page = 25
|
8
|
+
|
9
|
+
# Display audits events on dashboard (default: 50)
|
10
|
+
# config.activities_per_page = 50
|
11
|
+
|
12
|
+
# By default show latest first (default: :desc)
|
13
|
+
# config.default_sort_mode = :desc
|
14
|
+
|
15
|
+
# The display for a model instance (i.e. a single database record).
|
16
|
+
# config.label_methods = [:title, :name]
|
17
|
+
|
18
|
+
# Defailt list template view (default: "thumbs")
|
19
|
+
# config.default_list_view = "thumbs"
|
20
|
+
|
21
|
+
# Avariable lists views (default: [:list, :thumbs, :table])
|
22
|
+
# config.available_list_view = [:list, :thumbs, :table]
|
23
|
+
|
24
|
+
# Defailt list template view (default: "sort_order")
|
25
|
+
# config.sort_column = "sort_order"
|
26
|
+
|
27
|
+
# Find template before rendering (default: true)
|
28
|
+
# config.scoped_views = true
|
29
|
+
|
30
|
+
# Set available locales in app (default: [])
|
31
|
+
# config.available_locales = []
|
32
|
+
|
33
|
+
# Set transliteration for babosa gem
|
34
|
+
# more info here: https://github.com/norman/babosa (default: :russian)
|
35
|
+
# config.transliteration = :russian
|
36
|
+
|
37
|
+
# Set list toolbar buttons (default: [:delete, :edit, :new, :sort, :export])
|
38
|
+
# config.default_toolbar_buttons = [:delete, :edit, :new, :sort, :export]
|
39
|
+
|
40
|
+
# Lists the formats that should be treated as navigational (default: [:html, :json])
|
41
|
+
# config.navigational_formats = [:html, :json]
|
42
|
+
end
|
43
|
+
|
44
|
+
PublicActivity::Config.set do
|
45
|
+
orm :mongoid
|
46
|
+
end
|
47
|
+
|
48
|
+
#if Settings.table_exists?
|
49
|
+
# Settings.defaults[:some_setting] = "value"
|
50
|
+
# Settings.defaults[:some_setting2] = "value2"
|
51
|
+
#end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# <%= app_name %>
|
2
2
|
#
|
3
3
|
upstream <%= app_name %>_backend {
|
4
|
-
server unix:/var/www/<%= app_name %>/tmp/sockets/unicorn.sock;
|
4
|
+
server unix:/var/www/<%= app_name %>/tmp/sockets/unicorn.sock fail_timeout=0;
|
5
5
|
}
|
6
6
|
|
7
7
|
server {
|
@@ -14,31 +14,10 @@ server {
|
|
14
14
|
|
15
15
|
root /var/www/<%= app_name %>/public;
|
16
16
|
|
17
|
-
|
18
|
-
break;
|
19
|
-
}
|
20
|
-
|
21
|
-
if (-f /cache$request_filename) {
|
22
|
-
rewrite (.*) /cache$1 break;
|
23
|
-
break;
|
24
|
-
}
|
25
|
-
|
26
|
-
if (-f /cache$request_filename.html) {
|
27
|
-
rewrite (.*) /cache$1.html break;
|
28
|
-
break;
|
29
|
-
}
|
17
|
+
try_files $uri $uri.html $uri/index.html /cache$uri/index.html /cache$uri.html /cache$uri @app;
|
30
18
|
|
31
|
-
if (-f $document_root/cache$request_uri.html) {
|
32
|
-
rewrite (.*) /cache$1.html break;
|
33
|
-
}
|
34
|
-
|
35
|
-
if (-f $document_root/cache$request_uri/index.html) {
|
36
|
-
rewrite (.*) /cache$1/index.html break;
|
37
|
-
}
|
38
|
-
|
39
|
-
# This directive prohibits direct access to the cache directory from outside
|
40
19
|
location ^~ /cache {
|
41
|
-
|
20
|
+
return 404;
|
42
21
|
}
|
43
22
|
|
44
23
|
location ~ /\.[^\/]+ {
|
@@ -64,19 +43,12 @@ server {
|
|
64
43
|
proxy_busy_buffers_size 64k;
|
65
44
|
proxy_temp_file_write_size 64k;
|
66
45
|
|
67
|
-
|
68
|
-
proxy_pass http://<%= app_name %>_backend;
|
69
|
-
break;
|
70
|
-
}
|
46
|
+
proxy_pass http://<%= app_name %>_backend;
|
71
47
|
}
|
72
48
|
|
73
49
|
location ~ ^/(assets|uploads|images|javascripts|stylesheets)/ {
|
74
50
|
expires 1y;
|
75
51
|
add_header Cache-Control public;
|
76
|
-
|
77
|
-
# Some browsers still send conditional-GET requests if there's a
|
78
|
-
# Last-Modified header or an ETag header even if they haven't
|
79
|
-
# reached the expiry date sent in the Expires header.
|
80
52
|
add_header Last-Modified "";
|
81
53
|
add_header ETag "";
|
82
54
|
break;
|
@@ -89,11 +61,7 @@ server {
|
|
89
61
|
|
90
62
|
error_page 503 @503;
|
91
63
|
location @503 {
|
92
|
-
|
93
|
-
if (-f $request_filename) {
|
94
|
-
break;
|
95
|
-
}
|
96
|
-
|
64
|
+
root /var/www/designinterior/public;
|
97
65
|
rewrite ^(.*)$ /system/maintenance.html break;
|
98
66
|
}
|
99
67
|
}
|
@@ -9,13 +9,13 @@ class Structure
|
|
9
9
|
# Columns
|
10
10
|
field :title, :type => String
|
11
11
|
field :slug, :type => String
|
12
|
-
field :
|
13
|
-
field :
|
12
|
+
field :structure_type_id, :type => Integer, :default => 0
|
13
|
+
field :position_type_id, :type => Integer, :default => 0
|
14
14
|
field :is_visible, :type => Boolean, :default => true
|
15
15
|
field :redirect_url, :type => String
|
16
16
|
|
17
|
-
index({:
|
18
|
-
index({:
|
17
|
+
index({:structure_type_id => 1})
|
18
|
+
index({:position_type_id => 1})
|
19
19
|
index({:parent_id => 1})
|
20
20
|
|
21
21
|
tracked owner: ->(controller, model) { controller.try(:current_user) }
|
@@ -3,7 +3,8 @@ require 'ostruct'
|
|
3
3
|
|
4
4
|
module Sunrise
|
5
5
|
class AbstractModel
|
6
|
-
|
6
|
+
extend ::ActiveModel::Callbacks
|
7
|
+
|
7
8
|
class << self
|
8
9
|
|
9
10
|
# Gets the resource_name
|
@@ -49,6 +50,8 @@ module Sunrise
|
|
49
50
|
delegate :config, :model, :to => 'self.class'
|
50
51
|
delegate :label, :to => 'self.class.config'
|
51
52
|
delegate :param_key, :singular, :plural, :route_key, :to => :model_name
|
53
|
+
|
54
|
+
define_model_callbacks :sort, :mass_destroy, :only => [:before, :after]
|
52
55
|
|
53
56
|
def initialize(params = {})
|
54
57
|
@model_name = model.model_name
|
@@ -117,10 +120,20 @@ module Sunrise
|
|
117
120
|
end
|
118
121
|
|
119
122
|
def update_sort(params)
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
123
|
+
run_callbacks :sort do
|
124
|
+
if !params[:ids].blank?
|
125
|
+
update_sort_column(params[:ids])
|
126
|
+
elsif !params[:tree].blank?
|
127
|
+
update_sort_tree(params[:tree])
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def destroy_all(params)
|
133
|
+
return if params[:ids].blank?
|
134
|
+
|
135
|
+
run_callbacks :mass_destroy do
|
136
|
+
model.where(:id => params[:ids]).destroy_all
|
124
137
|
end
|
125
138
|
end
|
126
139
|
|
@@ -139,14 +152,10 @@ module Sunrise
|
|
139
152
|
|
140
153
|
def update_sort_column(ids)
|
141
154
|
return nil if ids.empty?
|
142
|
-
|
143
|
-
sql_case = ''
|
155
|
+
|
144
156
|
ids.each do |key, value|
|
145
|
-
|
157
|
+
model.where(:id => key).update_all(["#{@sort_column} = ?", value])
|
146
158
|
end
|
147
|
-
sql_case += 'END'
|
148
|
-
|
149
|
-
model.update_all("#{@sort_column} = CASE id #{sql_case}", ["id IN (?)", ids.keys.map(&:to_i)])
|
150
159
|
end
|
151
160
|
|
152
161
|
# Initialize new model, sets parent record and call build_defaults method
|
data/lib/sunrise/version.rb
CHANGED
data/lib/sunrise.rb
CHANGED
@@ -47,12 +47,20 @@ module Sunrise
|
|
47
47
|
LOCALIZE_STANDALONE_DAY_NAMES_MATCH = /^%A/
|
48
48
|
|
49
49
|
def self.root_path
|
50
|
-
@root_path ||= Pathname.new(
|
50
|
+
@root_path ||= Pathname.new(File.dirname(File.expand_path('../', __FILE__)))
|
51
51
|
end
|
52
52
|
|
53
53
|
def self.setup
|
54
54
|
yield Config
|
55
55
|
end
|
56
|
+
|
57
|
+
def self.activities
|
58
|
+
if defined?(Mongoid::Document)
|
59
|
+
PublicActivity::Activity.desc(:created_at)
|
60
|
+
else
|
61
|
+
PublicActivity::Activity.order("created_at DESC")
|
62
|
+
end
|
63
|
+
end
|
56
64
|
end
|
57
65
|
|
58
66
|
require 'sunrise/engine'
|