sunrise-cms 0.5.3 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +6 -0
- data/README.md +1 -1
- data/app/assets/javascripts/sunrise/manage.js.coffee +13 -1
- data/app/controllers/sunrise/application_controller.rb +2 -0
- data/app/controllers/sunrise/dashboard_controller.rb +4 -3
- data/app/helpers/sunrise/dashboard_helper.rb +36 -0
- data/app/views/sunrise/dashboard/_activity.html.erb +16 -0
- data/app/views/sunrise/dashboard/index.html.erb +32 -32
- data/config/locales/sunrise/en.yml +10 -2
- data/config/locales/sunrise/ru.yml +10 -6
- data/config/locales/sunrise/uk.yml +10 -6
- data/db/migrate/20111216144915_create_structures.rb +4 -3
- data/lib/generators/sunrise/templates/config/nginx-config +1 -1
- data/lib/generators/sunrise/templates/config/seeds.rb +2 -3
- data/lib/generators/sunrise/templates/config/sunrise.rb +43 -10
- data/lib/generators/sunrise/templates/models/active_record/asset.rb +1 -1
- data/lib/generators/sunrise/templates/models/active_record/settings.rb +3 -0
- data/lib/generators/sunrise/templates/models/active_record/structure.rb +2 -1
- data/lib/generators/sunrise/templates/models/active_record/user.rb +2 -1
- data/lib/generators/sunrise/templates/models/mongoid/asset.rb +2 -1
- data/lib/generators/sunrise/templates/models/mongoid/settings.rb +3 -0
- data/lib/generators/sunrise/templates/models/mongoid/structure.rb +2 -2
- data/lib/generators/sunrise/templates/models/mongoid/user.rb +2 -2
- data/lib/generators/sunrise/templates/models/sunrise/sunrise_structure.rb +2 -2
- data/lib/sunrise/config.rb +2 -10
- data/lib/sunrise/models/ability.rb +1 -1
- data/lib/sunrise/models/structure.rb +6 -5
- data/lib/sunrise/utils.rb +3 -3
- data/lib/sunrise/version.rb +1 -1
- data/spec/controllers/sunrise/dashboard_controller_spec.rb +4 -2
- data/spec/controllers/sunrise/manager_controller_spec.rb +1 -1
- data/spec/dummy/app/helpers/application_helper.rb +10 -0
- data/spec/dummy/app/models/active_record/post.rb +4 -0
- data/spec/dummy/app/models/mongoid/post.rb +2 -2
- data/spec/dummy/app/views/public_activity/post/_create.html.erb +5 -0
- data/spec/dummy/app/views/public_activity/post/_destroy.html.erb +5 -0
- data/spec/dummy/app/views/public_activity/post/_update.html.erb +5 -0
- data/spec/dummy/config/routes.rb +1 -0
- data/spec/dummy/db/migrate/20130214090723_create_activities.rb +23 -0
- data/spec/dummy/log/development.log +1 -0
- data/spec/dummy/log/test.log +30059 -0
- data/spec/models/structure_spec.rb +1 -1
- data/spec/orm/active_record.rb +0 -3
- data/spec/orm/mongoid.rb +12 -1
- data/spec/requests/dashboard_spec.rb +5 -2
- data/spec/requests/manager/default/create_spec.rb +2 -2
- data/spec/requests/manager/default/edit_spec.rb +2 -2
- data/spec/requests/manager/default/new_spec.rb +1 -1
- data/spec/requests/manager/default/update_spec.rb +2 -2
- data/vendor/assets/images/gravatar-140.png +0 -0
- data/vendor/assets/images/sunrise/audit/{action.png → key.png} +0 -0
- data/vendor/assets/images/sunrise/audit/{user.png → owner.png} +0 -0
- data/vendor/assets/images/sunrise/audit/{auditable.png → trackable.png} +0 -0
- data/vendor/assets/images/sunrise/icons/commented.svg +8 -0
- data/vendor/assets/images/sunrise/icons/create.svg +3 -0
- data/vendor/assets/images/sunrise/icons/destroy.svg +7 -0
- data/vendor/assets/images/sunrise/icons/update.svg +10 -0
- metadata +39 -79
- data/app/views/sunrise/dashboard/_event.html.erb +0 -15
- data/lib/generators/sunrise/templates/models/mongoid/history_tracker.rb +0 -31
- data/spec/factories/audit_factory.rb +0 -24
- data/spec/tmp/app/models/defaults/ability.rb +0 -18
- data/spec/tmp/app/models/defaults/asset.rb +0 -7
- data/spec/tmp/app/models/defaults/attachment_file.rb +0 -5
- data/spec/tmp/app/models/defaults/avatar.rb +0 -7
- data/spec/tmp/app/models/defaults/picture.rb +0 -7
- data/spec/tmp/app/models/defaults/position_type.rb +0 -7
- data/spec/tmp/app/models/defaults/role_type.rb +0 -8
- data/spec/tmp/app/models/defaults/settings.rb +0 -3
- data/spec/tmp/app/models/defaults/structure.rb +0 -9
- data/spec/tmp/app/models/defaults/structure_type.rb +0 -9
- data/spec/tmp/app/models/defaults/user.rb +0 -13
- data/spec/tmp/app/models/sunrise/sunrise_navigation.rb +0 -14
- data/spec/tmp/app/models/sunrise/sunrise_page.rb +0 -10
- data/spec/tmp/app/models/sunrise/sunrise_structure.rb +0 -35
- data/spec/tmp/app/models/sunrise/sunrise_user.rb +0 -50
- data/spec/tmp/app/uploaders/attachment_file_uploader.rb +0 -5
- data/spec/tmp/app/uploaders/avatar_uploader.rb +0 -15
- data/spec/tmp/app/uploaders/picture_uploader.rb +0 -15
- data/spec/tmp/app/views/layouts/application.html.erb +0 -22
- data/spec/tmp/app/views/pages/show.html.erb +0 -2
- data/spec/tmp/app/views/shared/_notice.html.erb +0 -17
- data/spec/tmp/config/application.rb +0 -63
- data/spec/tmp/config/database.yml.sample +0 -34
- data/spec/tmp/config/initializers/sunrise.rb +0 -18
- data/spec/tmp/config/logrotate-config.sample +0 -9
- data/spec/tmp/config/nginx-config.sample +0 -99
- data/spec/tmp/config/routes.rb +0 -9
- data/spec/tmp/db/seeds.rb +0 -31
- data/spec/tmp/spec/controllers/pages_controller_spec.rb +0 -22
- data/spec/tmp/spec/controllers/welcome_controller_spec.rb +0 -18
- data/spec/tmp/spec/factories/structure_factory.rb +0 -22
- data/spec/tmp/spec/factories/user_factory.rb +0 -61
- data/spec/tmp/spec/spec_helper.rb +0 -37
- data/spec/tmp/spec/support/helpers/controller_macros.rb +0 -52
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 0.6.0
|
2
|
+
* Raname attributes kind and position to structure_type_id and position_type_id
|
3
|
+
* Integrate "public_activity" gem
|
4
|
+
* Remove "activerecord-audited" and "mongoid-history" gems
|
5
|
+
* Fix search class in Utils
|
6
|
+
|
1
7
|
== 0.5.0
|
2
8
|
* Integrate "strong_parameters" gem
|
3
9
|
* Add config option "navigational_formats"
|
data/README.md
CHANGED
@@ -10,7 +10,6 @@ List of gems for [active_record](https://gist.github.com/4529926#file-gemfile-ac
|
|
10
10
|
|
11
11
|
```bash
|
12
12
|
$> rails g devise:install
|
13
|
-
$> rails g audited:install
|
14
13
|
$> rails g sunrise:install --orm=active_record
|
15
14
|
```
|
16
15
|
|
@@ -20,6 +19,7 @@ Copy db migrations files:
|
|
20
19
|
$> rake sunrise:install:migrations
|
21
20
|
$> rake page_parts_engine:install:migrations
|
22
21
|
$> rake meta_manager_engine:install:migrations
|
22
|
+
$> rails g public_activity:migration
|
23
23
|
```
|
24
24
|
|
25
25
|
### Mongoid
|
@@ -12,6 +12,7 @@ class Sunrise
|
|
12
12
|
($ '[data-lang]').lang_tabs()
|
13
13
|
|
14
14
|
this.init_submit_buttons()
|
15
|
+
this.init_group_menus()
|
15
16
|
|
16
17
|
getParameterByName: (name) ->
|
17
18
|
match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search)
|
@@ -27,7 +28,18 @@ class Sunrise
|
|
27
28
|
|
28
29
|
$('#submit-form-button').bind 'click', (evt) ->
|
29
30
|
$('form:first').submit()
|
30
|
-
|
31
|
+
|
32
|
+
init_group_menus: ->
|
33
|
+
$(".title-switcher").bind('click', (e) ->
|
34
|
+
$(this).parent().find(".padder").toggle()
|
35
|
+
|
36
|
+
if $(this).hasClass('up')
|
37
|
+
$(this).removeClass('up').addClass('down')
|
38
|
+
else
|
39
|
+
$(this).removeClass('down').addClass('up')
|
40
|
+
|
41
|
+
return false
|
42
|
+
)
|
31
43
|
|
32
44
|
# Store params: page, per, sort and view for current namespace
|
33
45
|
storeQuery: () ->
|
@@ -5,12 +5,13 @@ module Sunrise
|
|
5
5
|
authorize_resource :class => false
|
6
6
|
|
7
7
|
def index
|
8
|
-
per_page = Sunrise::Config.
|
8
|
+
per_page = Sunrise::Config.activities_per_page
|
9
9
|
cur_page = (params[:page] || 1).to_i
|
10
10
|
offset = (cur_page - 1) * per_page
|
11
11
|
|
12
|
-
@events =
|
13
|
-
|
12
|
+
@events = PublicActivity::Activity.includes(:owner, :trackable, :recipient)
|
13
|
+
@events = @events.limit(per_page).offset(offset)
|
14
|
+
|
14
15
|
respond_with(@events) do |format|
|
15
16
|
format.html { render :layout => params[:time].blank? }
|
16
17
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Sunrise
|
2
|
+
module DashboardHelper
|
3
|
+
|
4
|
+
# For generating time tags calculated using jquery.timeago
|
5
|
+
def timeago_tag(time, options = {})
|
6
|
+
options[:class] ||= "timeago"
|
7
|
+
content_tag(:abbr, time.to_s, options.merge(:title => time.getutc.iso8601)) if time
|
8
|
+
end
|
9
|
+
|
10
|
+
def activity_icon_tag(key, options = {})
|
11
|
+
icon = key.split('.').last
|
12
|
+
image = image_path("sunrise/icons/#{icon}.svg")
|
13
|
+
|
14
|
+
options = {
|
15
|
+
:class => "mega-icon",
|
16
|
+
:style => "background-image: url(#{image});"
|
17
|
+
}.merge(options)
|
18
|
+
|
19
|
+
content_tag(:div, nil, options)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Check if object still exists in the database and display a link to it,
|
23
|
+
# otherwise display a proper message about it.
|
24
|
+
# This is used in activities that can refer to
|
25
|
+
# objects which no longer exist, like removed posts.
|
26
|
+
def link_to_trackable(object, object_type)
|
27
|
+
model_name = object_type.downcase
|
28
|
+
|
29
|
+
if object
|
30
|
+
link_to(model_name, edit_path(:model_name => model_name.pluralize, :id => object.id))
|
31
|
+
else
|
32
|
+
"a #{model_name} which does not exist anymore"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%= content_tag(:tr, :id => ["activity", activity.id].join("_"), :class => "event") do -%>
|
2
|
+
<td><%= I18n.l activity.created_at, :format => "%d.%m.%Y %H:%M" %></td>
|
3
|
+
<% if activity.owner -%>
|
4
|
+
<td>
|
5
|
+
<%= link_to activity.owner.name, edit_path(:model_name => activity.owner_type, :id => activity.owner_id) %>
|
6
|
+
</td>
|
7
|
+
<% else -%>
|
8
|
+
<td>someone</td>
|
9
|
+
<% end -%>
|
10
|
+
<td><%= activity.key %></td>
|
11
|
+
<td>
|
12
|
+
<% if ['create', 'update'].include?(activity.key.split('.').last) %>
|
13
|
+
<%= link_to_trackable activity.trackable, activity.trackable_type %>
|
14
|
+
<% end %>
|
15
|
+
</td>
|
16
|
+
<% end -%>
|
@@ -1,37 +1,37 @@
|
|
1
1
|
<div class="wrapper without-panel">
|
2
2
|
<div class="dbTable">
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
3
|
+
<table id="events-table" cellpadding="0" cellspacing="0" border="0" width="100%">
|
4
|
+
<tbody>
|
5
|
+
<tr class="theader">
|
6
|
+
<% ["created_at", "owner", "key", "trackable"].each do |attr| %>
|
7
|
+
<th>
|
8
|
+
<%= image_tag("sunrise/audit/#{attr}.png") %>
|
9
|
+
<%= PublicActivity::Activity.human_attribute_name("activity.#{attr}") %>
|
10
|
+
</th>
|
11
|
+
<% end -%>
|
12
|
+
</tr>
|
13
|
+
<%= render :partial => 'activity', :collection => @events %>
|
14
|
+
</tbody>
|
15
|
+
</table>
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
17
|
+
<% if @events.count >= Sunrise::Config.activities_per_page -%>
|
18
|
+
<div class="centerBtnHolder">
|
19
|
+
<%= link_to t('manage.buttons.next_50'), "#", :class=>"button", :style=>"width:100px;", :id=>"events-next" %>
|
20
|
+
|
21
|
+
<script type="text/javascript">
|
22
|
+
$(document).ready(function(){
|
23
|
+
$("#events-table").pagination({
|
24
|
+
url: '/manage/dashboard',
|
25
|
+
binder: '#events-next',
|
26
|
+
event: 'click',
|
27
|
+
callback: function(data){
|
28
|
+
var rows = $(data).find("#events-table tr.event");
|
29
|
+
$('#events-table tbody').append(rows);
|
30
|
+
}
|
31
|
+
});
|
32
|
+
});
|
33
|
+
</script>
|
34
|
+
</div>
|
35
|
+
<% end -%>
|
36
36
|
</div>
|
37
37
|
</div>
|
@@ -20,9 +20,9 @@ en:
|
|
20
20
|
title_en: "Name (eng.)"
|
21
21
|
parent_id: "Main Categories"
|
22
22
|
is_visible: "Show?"
|
23
|
-
|
23
|
+
structure_type_id: "Page Type"
|
24
24
|
redirect_url: "Redirect (URL)"
|
25
|
-
|
25
|
+
position_type_id: "Position"
|
26
26
|
slug: "Slug"
|
27
27
|
|
28
28
|
header:
|
@@ -66,6 +66,13 @@ en:
|
|
66
66
|
remote_ip: "IP address"
|
67
67
|
user_agent: "Browser Version"
|
68
68
|
message: "Message"
|
69
|
+
|
70
|
+
activity:
|
71
|
+
created_at: "Created at"
|
72
|
+
owner: "User"
|
73
|
+
key: "Action"
|
74
|
+
trackable: "Object"
|
75
|
+
remote_address: "IP"
|
69
76
|
|
70
77
|
manage:
|
71
78
|
title: "System <br /> Management"
|
@@ -156,6 +163,7 @@ en:
|
|
156
163
|
edit_profile: "My profile"
|
157
164
|
exit: "Exit"
|
158
165
|
add_nested_field: "+Add"
|
166
|
+
next_50: "Show more 50"
|
159
167
|
|
160
168
|
user:
|
161
169
|
actions: "action"
|
@@ -20,9 +20,9 @@ ru:
|
|
20
20
|
title_en: "Название (eng.)"
|
21
21
|
parent_id: "Главная категория"
|
22
22
|
is_visible: "Отображать?"
|
23
|
-
|
23
|
+
structure_type_id: "Тип страницы"
|
24
24
|
redirect_url: "Перенаправление (URL)"
|
25
|
-
|
25
|
+
position_type_id: "Позиция"
|
26
26
|
slug: "URL"
|
27
27
|
|
28
28
|
header:
|
@@ -67,11 +67,11 @@ ru:
|
|
67
67
|
user_agent: "Версия браузера"
|
68
68
|
message: "Сообщение"
|
69
69
|
|
70
|
-
|
70
|
+
activity:
|
71
71
|
created_at: "Дата"
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
owner: "Пользователь"
|
73
|
+
key: "Что"
|
74
|
+
trackable: "Объект"
|
75
75
|
remote_address: "IP"
|
76
76
|
|
77
77
|
manage:
|
@@ -163,6 +163,7 @@ ru:
|
|
163
163
|
edit_profile: "Мой профайл"
|
164
164
|
exit: "Выход"
|
165
165
|
add_nested_field: "+Еще"
|
166
|
+
next_50: "Показать еще 50"
|
166
167
|
|
167
168
|
user:
|
168
169
|
actions: "действия"
|
@@ -259,6 +260,9 @@ ru:
|
|
259
260
|
edit: "Редактировать"
|
260
261
|
settings: "Настройки"
|
261
262
|
delete: "Удалить"
|
263
|
+
|
264
|
+
groups:
|
265
|
+
meta_tags: "Мета теги"
|
262
266
|
|
263
267
|
views:
|
264
268
|
pagination:
|
@@ -20,9 +20,9 @@ uk:
|
|
20
20
|
title_en: "Назва (eng.)"
|
21
21
|
parent_id: "Головна категорія"
|
22
22
|
is_visible: "Відображати?"
|
23
|
-
|
23
|
+
structure_type_id: "Тип сторінки"
|
24
24
|
redirect_url: "Перенаправлення (URL)"
|
25
|
-
|
25
|
+
position_type_id: "Позиція"
|
26
26
|
slug: "URL"
|
27
27
|
|
28
28
|
header:
|
@@ -67,11 +67,11 @@ uk:
|
|
67
67
|
user_agent: "Версія браузера"
|
68
68
|
message: "Повідомлення"
|
69
69
|
|
70
|
-
|
70
|
+
activity:
|
71
71
|
created_at: "Дата"
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
owner: "Пользователь"
|
73
|
+
key: "Что"
|
74
|
+
trackable: "Объект"
|
75
75
|
remote_address: "IP"
|
76
76
|
|
77
77
|
manage:
|
@@ -163,6 +163,7 @@ uk:
|
|
163
163
|
edit_profile: "Мій профайл"
|
164
164
|
exit: "Вихід"
|
165
165
|
add_nested_field: "+Ще"
|
166
|
+
next_50: "Показати ще 50"
|
166
167
|
|
167
168
|
user:
|
168
169
|
actions: "дії"
|
@@ -258,6 +259,9 @@ uk:
|
|
258
259
|
edit: "Редагувати"
|
259
260
|
settings: "Настройки"
|
260
261
|
delete: "Видалити"
|
262
|
+
|
263
|
+
groups:
|
264
|
+
meta_tags: "Мета теги"
|
261
265
|
|
262
266
|
views:
|
263
267
|
pagination:
|
@@ -3,8 +3,8 @@ class CreateStructures < ActiveRecord::Migration
|
|
3
3
|
create_table :structures do |t|
|
4
4
|
t.string :title, :null => false
|
5
5
|
t.string :slug, :null => false, :limit => 25
|
6
|
-
t.integer :
|
7
|
-
t.integer :
|
6
|
+
t.integer :structure_type_id, :limit => 1, :default => 0
|
7
|
+
t.integer :position_type_id, :limit => 2, :default => 0
|
8
8
|
t.boolean :is_visible, :default => true
|
9
9
|
t.string :redirect_url
|
10
10
|
|
@@ -16,7 +16,8 @@ class CreateStructures < ActiveRecord::Migration
|
|
16
16
|
t.timestamps
|
17
17
|
end
|
18
18
|
|
19
|
-
add_index :structures,
|
19
|
+
add_index :structures, :structure_type_id
|
20
|
+
add_index :structures, :position_type_id
|
20
21
|
add_index :structures, :parent_id
|
21
22
|
add_index :structures, [:lft, :rgt]
|
22
23
|
end
|
@@ -22,9 +22,8 @@ end
|
|
22
22
|
def insert_structures
|
23
23
|
Structure.truncate!
|
24
24
|
|
25
|
-
main_page = Structure.create!(
|
26
|
-
#Structure.create!(
|
27
|
-
#Structure.create!({:title => "Прямые репортажи", :slug => "posts", :structure_type => StructureType.posts, :parent => main_page}, :as => :admin)
|
25
|
+
main_page = Structure.create!(title: "Главная страница", slug: "main-page", structure_type: StructureType.main, parent: nil)
|
26
|
+
# Structure.create!(title: "Трансляции", slug: "broadcasts", structure_type: StructureType.broadcasts, parent: main_page)
|
28
27
|
end
|
29
28
|
|
30
29
|
insert_user
|
@@ -1,16 +1,49 @@
|
|
1
|
+
# require 'meta_manager/orm/active_record'
|
2
|
+
# require 'page_parts/orm/active_record'
|
3
|
+
|
1
4
|
# Use this hook to configure sunrise
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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 = []
|
8
32
|
|
9
|
-
#
|
10
|
-
#
|
33
|
+
# Set transliteration for babosa gem
|
34
|
+
# more info here: https://github.com/norman/babosa (default: :russian)
|
35
|
+
# config.transliteration = :russian
|
11
36
|
|
12
|
-
#
|
13
|
-
#
|
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
|
14
47
|
|
15
48
|
#if Settings.table_exists?
|
16
49
|
# Settings.defaults[:some_setting] = "value"
|