sunrise-widgets 0.1.0
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.
- data/Gemfile +34 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +21 -0
- data/Rakefile +27 -0
- data/app/controllers/manage/widgets_controller.rb +33 -0
- data/app/views/manage/widgets/_form.html.erb +21 -0
- data/app/views/manage/widgets/_model_filter.html.erb +40 -0
- data/app/views/manage/widgets/_widget.html.erb +41 -0
- data/app/views/manage/widgets/edit.html.erb +6 -0
- data/app/views/manage/widgets/index.html.erb +30 -0
- data/app/views/manage/widgets/new.html.erb +6 -0
- data/app/views/manage/widgets/show.html.erb +29 -0
- data/config/locales/ru.yml +18 -0
- data/config/locales/uk.yml +18 -0
- data/config/routes.rb +5 -0
- data/lib/generators/sunrise/widgets/USAGE +12 -0
- data/lib/generators/sunrise/widgets/install_generator.rb +40 -0
- data/lib/generators/sunrise/widgets/templates/create_widgets.rb +24 -0
- data/lib/generators/sunrise/widgets/templates/widget.rb +6 -0
- data/lib/generators/sunrise/widgets/templates/widget_position.rb +14 -0
- data/lib/generators/sunrise/widgets/templates/widget_sweeper.rb +21 -0
- data/lib/generators/sunrise/widgets/templates/widget_type.rb +15 -0
- data/lib/sunrise/models/widget.rb +39 -0
- data/lib/sunrise/widgets/engine.rb +18 -0
- data/lib/sunrise/widgets/version.rb +5 -0
- data/lib/sunrise/widgets.rb +12 -0
- data/lib/sunrise-widgets.rb +1 -0
- data/spec/controllers/manage/widgets_controller_spec.rb +95 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/helpers/manage/assets_helper.rb +2 -0
- data/spec/dummy/app/helpers/manage/base_helper.rb +81 -0
- data/spec/dummy/app/helpers/manage/pages_helper.rb +2 -0
- data/spec/dummy/app/helpers/manage/settings_helper.rb +2 -0
- data/spec/dummy/app/helpers/manage/structures_helper.rb +12 -0
- data/spec/dummy/app/helpers/manage/users_helper.rb +6 -0
- data/spec/dummy/app/models/defaults/ability.rb +39 -0
- data/spec/dummy/app/models/defaults/asset.rb +7 -0
- data/spec/dummy/app/models/defaults/attachment_file.rb +33 -0
- data/spec/dummy/app/models/defaults/avatar.rb +37 -0
- data/spec/dummy/app/models/defaults/header.rb +5 -0
- data/spec/dummy/app/models/defaults/page.rb +5 -0
- data/spec/dummy/app/models/defaults/picture.rb +35 -0
- data/spec/dummy/app/models/defaults/position_type.rb +7 -0
- data/spec/dummy/app/models/defaults/role.rb +20 -0
- data/spec/dummy/app/models/defaults/role_type.rb +8 -0
- data/spec/dummy/app/models/defaults/structure.rb +16 -0
- data/spec/dummy/app/models/defaults/structure_type.rb +9 -0
- data/spec/dummy/app/models/defaults/user.rb +47 -0
- data/spec/dummy/app/views/layouts/application.html.erb +37 -0
- data/spec/dummy/app/views/pages/show.html.erb +2 -0
- data/spec/dummy/app/views/shared/_notice.html.erb +17 -0
- data/spec/dummy/config/application.rb +47 -0
- data/spec/dummy/config/application.yml.sample +4 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +22 -0
- data/spec/dummy/config/database.yml.sample +34 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +26 -0
- data/spec/dummy/config/environments/production.rb +49 -0
- data/spec/dummy/config/environments/test.rb +35 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/devise.rb +204 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/simple_form.rb +93 -0
- data/spec/dummy/config/initializers/sunrise.rb +7 -0
- data/spec/dummy/config/locales/devise.en.yml +53 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/locales/simple_form.en.yml +24 -0
- data/spec/dummy/config/logrotate-config.sample +9 -0
- data/spec/dummy/config/nginx-config-passenger.sample +51 -0
- data/spec/dummy/config/routes.rb +64 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/migrate/20110801124809_sunrise_create_users.rb +29 -0
- data/spec/dummy/db/migrate/20110801124909_sunrise_create_roles.rb +16 -0
- data/spec/dummy/db/migrate/20110801125009_sunrise_create_structures.rb +27 -0
- data/spec/dummy/db/migrate/20110801125109_sunrise_create_pages.rb +17 -0
- data/spec/dummy/db/migrate/20110801125209_sunrise_create_assets.rb +28 -0
- data/spec/dummy/db/migrate/20110801125309_sunrise_create_headers.rb +20 -0
- data/spec/dummy/db/migrate/20110801161138_sunrise_create_widgets.rb +24 -0
- data/spec/dummy/db/seeds.rb +25 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/lib/templates/erb/scaffold/_form.html.erb +13 -0
- data/spec/dummy/log/development.log +5 -0
- data/spec/dummy/log/production.log +0 -0
- data/spec/dummy/log/server.log +0 -0
- data/spec/dummy/log/test.log +2324 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/images/manage/add_post_bot.gif +0 -0
- data/spec/dummy/public/images/manage/add_post_top.gif +0 -0
- data/spec/dummy/public/images/manage/add_white_bot.gif +0 -0
- data/spec/dummy/public/images/manage/add_white_top.gif +0 -0
- data/spec/dummy/public/images/manage/arrow.png +0 -0
- data/spec/dummy/public/images/manage/back_but_lc.gif +0 -0
- data/spec/dummy/public/images/manage/back_but_rc.gif +0 -0
- data/spec/dummy/public/images/manage/bot_corn.gif +0 -0
- data/spec/dummy/public/images/manage/bot_duo_corn.gif +0 -0
- data/spec/dummy/public/images/manage/but_bg.png +0 -0
- data/spec/dummy/public/images/manage/but_block_lc.gif +0 -0
- data/spec/dummy/public/images/manage/but_block_rc.gif +0 -0
- data/spec/dummy/public/images/manage/but_freze_lc.gif +0 -0
- data/spec/dummy/public/images/manage/but_freze_rc.gif +0 -0
- data/spec/dummy/public/images/manage/but_gr.gif +0 -0
- data/spec/dummy/public/images/manage/but_gr_l.gif +0 -0
- data/spec/dummy/public/images/manage/but_gr_r.gif +0 -0
- data/spec/dummy/public/images/manage/but_search.gif +0 -0
- data/spec/dummy/public/images/manage/but_unfreze_lc.gif +0 -0
- data/spec/dummy/public/images/manage/but_unfreze_rc.gif +0 -0
- data/spec/dummy/public/images/manage/button_add_foto.gif +0 -0
- data/spec/dummy/public/images/manage/button_add_foto_ru.gif +0 -0
- data/spec/dummy/public/images/manage/button_add_foto_ua.gif +0 -0
- data/spec/dummy/public/images/manage/button_add_foto_uk.gif +0 -0
- data/spec/dummy/public/images/manage/cancelbutton.gif +0 -0
- data/spec/dummy/public/images/manage/dark_arr.gif +0 -0
- data/spec/dummy/public/images/manage/dark_arr_left.gif +0 -0
- data/spec/dummy/public/images/manage/dark_cross_ico.gif +0 -0
- data/spec/dummy/public/images/manage/dot.gif +0 -0
- data/spec/dummy/public/images/manage/duo_bg.gif +0 -0
- data/spec/dummy/public/images/manage/duo_bg_small.gif +0 -0
- data/spec/dummy/public/images/manage/duo_bg_small_blocked.gif +0 -0
- data/spec/dummy/public/images/manage/duo_bg_small_frozed.gif +0 -0
- data/spec/dummy/public/images/manage/duo_bg_small_notact.gif +0 -0
- data/spec/dummy/public/images/manage/duo_bot_small.gif +0 -0
- data/spec/dummy/public/images/manage/duo_bot_small_blocked.gif +0 -0
- data/spec/dummy/public/images/manage/duo_bot_small_frozed.gif +0 -0
- data/spec/dummy/public/images/manage/duo_bot_small_notact.gif +0 -0
- data/spec/dummy/public/images/manage/duo_top_small.gif +0 -0
- data/spec/dummy/public/images/manage/duo_top_small_blocked.gif +0 -0
- data/spec/dummy/public/images/manage/duo_top_small_frozed.gif +0 -0
- data/spec/dummy/public/images/manage/duo_top_small_notact.gif +0 -0
- data/spec/dummy/public/images/manage/edit_white_top.gif +0 -0
- data/spec/dummy/public/images/manage/empty.gif +0 -0
- data/spec/dummy/public/images/manage/filter_bot_bg.gif +0 -0
- data/spec/dummy/public/images/manage/filter_top_bg.gif +0 -0
- data/spec/dummy/public/images/manage/flag_en.gif +0 -0
- data/spec/dummy/public/images/manage/flag_en_nonact.gif +0 -0
- data/spec/dummy/public/images/manage/flag_ru.gif +0 -0
- data/spec/dummy/public/images/manage/flag_ru_nonact.gif +0 -0
- data/spec/dummy/public/images/manage/flag_ua.gif +0 -0
- data/spec/dummy/public/images/manage/flag_ua_nonact.gif +0 -0
- data/spec/dummy/public/images/manage/foto.jpg +0 -0
- data/spec/dummy/public/images/manage/ico_add.gif +0 -0
- data/spec/dummy/public/images/manage/ico_del.gif +0 -0
- data/spec/dummy/public/images/manage/ico_down.gif +0 -0
- data/spec/dummy/public/images/manage/ico_edit.gif +0 -0
- data/spec/dummy/public/images/manage/ico_settings.gif +0 -0
- data/spec/dummy/public/images/manage/ico_up.gif +0 -0
- data/spec/dummy/public/images/manage/input_bg.gif +0 -0
- data/spec/dummy/public/images/manage/l_but_corn.gif +0 -0
- data/spec/dummy/public/images/manage/minimise_but.gif +0 -0
- data/spec/dummy/public/images/manage/mp3.png +0 -0
- data/spec/dummy/public/images/manage/page_arr_hover.png +0 -0
- data/spec/dummy/public/images/manage/page_next_arr.gif +0 -0
- data/spec/dummy/public/images/manage/page_num_hover.gif +0 -0
- data/spec/dummy/public/images/manage/page_prev_arr.gif +0 -0
- data/spec/dummy/public/images/manage/panel/l_but_corn.gif +0 -0
- data/spec/dummy/public/images/manage/panel/maximise_but.gif +0 -0
- data/spec/dummy/public/images/manage/panel/r_but_corn.gif +0 -0
- data/spec/dummy/public/images/manage/panel/top_menu_arr.gif +0 -0
- data/spec/dummy/public/images/manage/panel/user_pic.gif +0 -0
- data/spec/dummy/public/images/manage/preloader.gif +0 -0
- data/spec/dummy/public/images/manage/r_but_corn.gif +0 -0
- data/spec/dummy/public/images/manage/select_bg.gif +0 -0
- data/spec/dummy/public/images/manage/select_corn.gif +0 -0
- data/spec/dummy/public/images/manage/struct_corn_lg.gif +0 -0
- data/spec/dummy/public/images/manage/struct_corn_llg.gif +0 -0
- data/spec/dummy/public/images/manage/struct_corn_lw.gif +0 -0
- data/spec/dummy/public/images/manage/struct_corn_rg.gif +0 -0
- data/spec/dummy/public/images/manage/struct_corn_rlg.gif +0 -0
- data/spec/dummy/public/images/manage/struct_corn_rw.gif +0 -0
- data/spec/dummy/public/images/manage/tab_gl.gif +0 -0
- data/spec/dummy/public/images/manage/tab_gr.gif +0 -0
- data/spec/dummy/public/images/manage/tab_wl.gif +0 -0
- data/spec/dummy/public/images/manage/tab_wr.gif +0 -0
- data/spec/dummy/public/images/manage/top_corn.gif +0 -0
- data/spec/dummy/public/images/manage/top_duo_corn.gif +0 -0
- data/spec/dummy/public/images/manage/top_menu_arr.gif +0 -0
- data/spec/dummy/public/images/manage/transp_cross.png +0 -0
- data/spec/dummy/public/images/manage/upload_progress.gif +0 -0
- data/spec/dummy/public/images/manage/user_act_lc.gif +0 -0
- data/spec/dummy/public/images/manage/user_act_rc.gif +0 -0
- data/spec/dummy/public/images/manage/user_ico.gif +0 -0
- data/spec/dummy/public/images/manage/user_pic.gif +0 -0
- data/spec/dummy/public/images/manage/user_pic_small.gif +0 -0
- data/spec/dummy/public/images/manage/user_pic_thumb.gif +0 -0
- data/spec/dummy/public/javascripts/application.js +2 -0
- data/spec/dummy/public/javascripts/controls.js +965 -0
- data/spec/dummy/public/javascripts/datepicker/jquery-ui-i18n.js +1176 -0
- data/spec/dummy/public/javascripts/datepicker/jquery.ui.datepicker-ru.js +37 -0
- data/spec/dummy/public/javascripts/datepicker/jquery.ui.datepicker-uk.js +37 -0
- data/spec/dummy/public/javascripts/dragdrop.js +974 -0
- data/spec/dummy/public/javascripts/effects.js +1123 -0
- data/spec/dummy/public/javascripts/fileupload/fileuploader-input.js +217 -0
- data/spec/dummy/public/javascripts/fileupload/fileuploader.css +31 -0
- data/spec/dummy/public/javascripts/fileupload/fileuploader.js +1288 -0
- data/spec/dummy/public/javascripts/jquery-ui-timepicker-addon.js +911 -0
- data/spec/dummy/public/javascripts/jquery.cookie.js +97 -0
- data/spec/dummy/public/javascripts/jquery.fancybox-1.3.4.pack.js +46 -0
- data/spec/dummy/public/javascripts/jquery.tmpl.min.js +10 -0
- data/spec/dummy/public/javascripts/manage-fileuploader.js +182 -0
- data/spec/dummy/public/javascripts/manage.js +294 -0
- data/spec/dummy/public/javascripts/preloader.js +47 -0
- data/spec/dummy/public/javascripts/prototype.js +6001 -0
- data/spec/dummy/public/javascripts/rails.js +331 -0
- data/spec/dummy/public/stylesheets/application.css +1 -0
- data/spec/dummy/public/stylesheets/fancybox/images/blank.gif +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_close.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_loading.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_nav_left.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_nav_right.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_e.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_n.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_ne.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_nw.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_s.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_se.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_sw.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_w.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_left.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_main.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_over.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_right.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancybox-x.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancybox-y.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/images/fancybox.png +0 -0
- data/spec/dummy/public/stylesheets/fancybox/jquery.fancybox-1.3.4.css +359 -0
- data/spec/dummy/public/stylesheets/manage/buttons.css +42 -0
- data/spec/dummy/public/stylesheets/manage/ie.css +16 -0
- data/spec/dummy/public/stylesheets/manage/main.css +1108 -0
- data/spec/dummy/public/stylesheets/manage/panel.css +126 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/dummy/public/stylesheets/smoothness/jquery-ui-1.8.13.custom.css +578 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/factories/structure_factory.rb +22 -0
- data/spec/factories/user_factory.rb +48 -0
- data/spec/factories/widget_factory.rb +12 -0
- data/spec/generators/install_generator_spec.rb +27 -0
- data/spec/integration/navigation_spec.rb +9 -0
- data/spec/models/widget_spec.rb +30 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +57 -0
- data/spec/sunrise_widgets_spec.rb +7 -0
- data/spec/support/helpers/controller_macros.rb +40 -0
- data/spec/tmp/app/models/widget.rb +6 -0
- data/spec/tmp/app/models/widget_position.rb +14 -0
- data/spec/tmp/app/models/widget_type.rb +15 -0
- data/spec/tmp/app/sweepers/widget_sweeper.rb +21 -0
- data/spec/tmp/db/migrate/20110818113026_sunrise_create_widgets.rb +24 -0
- metadata +587 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Manage::WidgetsController do
|
4
|
+
render_views
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
@structure = FactoryGirl.create(:structure_page)
|
8
|
+
end
|
9
|
+
|
10
|
+
context "administrator" do
|
11
|
+
login_admin
|
12
|
+
|
13
|
+
it "should render new action" do
|
14
|
+
get :new
|
15
|
+
response.should be_success
|
16
|
+
response.should render_template("new")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should create new structure" do
|
20
|
+
lambda {
|
21
|
+
post :create, :widget => FactoryGirl.attributes_for(:widget)
|
22
|
+
}.should change { Widget.count }.by(1)
|
23
|
+
end
|
24
|
+
|
25
|
+
context "exists widget" do
|
26
|
+
before(:each) do
|
27
|
+
@widget = FactoryGirl.create(:widget, :structure => @structure)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should render index action" do
|
31
|
+
get :index
|
32
|
+
assigns(:widgets).should include(@widget)
|
33
|
+
response.should render_template('index')
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should render edit action" do
|
37
|
+
controller.should_receive :edit
|
38
|
+
get :edit, :id => @widget.id
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should update structure" do
|
42
|
+
put :update, :id => @widget.id, :widget => { :title => "Update" }
|
43
|
+
assigns(:widget).should be_valid
|
44
|
+
assigns(:widget).title.should == 'Update'
|
45
|
+
response.should redirect_to(manage_widgets_path)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should destroy widget" do
|
49
|
+
lambda {
|
50
|
+
delete :destroy, :id => @widget.id
|
51
|
+
}.should change { Widget.count }.by(-1)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "anonymous user" do
|
57
|
+
user_logout
|
58
|
+
|
59
|
+
it "should not render index action" do
|
60
|
+
controller.should_not_receive :index
|
61
|
+
get :index
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should not render new action" do
|
65
|
+
controller.should_not_receive :new
|
66
|
+
get :new
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should not render create action" do
|
70
|
+
controller.should_not_receive :create
|
71
|
+
post :create
|
72
|
+
end
|
73
|
+
|
74
|
+
context "with exists structure" do
|
75
|
+
before(:each) do
|
76
|
+
@widget = FactoryGirl.create(:widget, :structure => @structure)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should not render edit action" do
|
80
|
+
controller.should_not_receive :edit
|
81
|
+
get :edit, :id => @widget.id
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should not render update action" do
|
85
|
+
controller.should_not_receive :update
|
86
|
+
put :update, :id => @widget.id
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should not render destroy action" do
|
90
|
+
controller.should_not_receive :destroy
|
91
|
+
delete :destroy, :id => @widget.id
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
data/spec/dummy/Rakefile
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
2
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
3
|
+
|
4
|
+
require File.expand_path('../config/application', __FILE__)
|
5
|
+
require 'rake'
|
6
|
+
|
7
|
+
Dummy::Application.load_tasks
|
@@ -0,0 +1,81 @@
|
|
1
|
+
module Manage::BaseHelper
|
2
|
+
def content_manager?
|
3
|
+
user_signed_in? && current_user.admin?
|
4
|
+
end
|
5
|
+
|
6
|
+
def link_to_unless_current_span2(name, options = {}, html_options = {}, &block)
|
7
|
+
if current_page?(options)
|
8
|
+
if block_given?
|
9
|
+
block.arity <= 1 ? yield(name) : yield(name, options, html_options)
|
10
|
+
else
|
11
|
+
content_tag(:span, content_tag(:span, name), html_options)
|
12
|
+
end
|
13
|
+
else
|
14
|
+
link_to(name, options, html_options)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def options_for_ckeditor(options = {})
|
19
|
+
{:width=>700, :height=>400,
|
20
|
+
:swf_params=>{:assetable_type=>current_user.class.name, :assetable_id=>current_user.id}
|
21
|
+
|
22
|
+
}.update(options)
|
23
|
+
end
|
24
|
+
|
25
|
+
def white_block_form(options = {}, &block)
|
26
|
+
title = options[:title]
|
27
|
+
|
28
|
+
concat(content_tag(:div, {:class=>"edit-white-bl"}) do
|
29
|
+
concat(content_tag(:div, {:class=>"bot-bg"}) do
|
30
|
+
concat(content_tag(:div, title, :class=>"wh-title")) unless title.blank?
|
31
|
+
yield if block_given?
|
32
|
+
end)
|
33
|
+
end)
|
34
|
+
end
|
35
|
+
|
36
|
+
def link_to_sort(title, options = {})
|
37
|
+
options.symbolize_keys!
|
38
|
+
|
39
|
+
order_type = options[:order_type] || 'asc'
|
40
|
+
order_column = options[:name] || 'id'
|
41
|
+
class_name = options[:class] || nil
|
42
|
+
|
43
|
+
search_options = request.params[:search] || {}
|
44
|
+
search_options.update(:order_column => order_column, :order_type => order_type)
|
45
|
+
|
46
|
+
link_to(title, :search => search_options, :class => class_name)
|
47
|
+
end
|
48
|
+
|
49
|
+
def remove_child_link(name, f)
|
50
|
+
f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)")
|
51
|
+
end
|
52
|
+
|
53
|
+
def add_child_link(name, f, method, options={})
|
54
|
+
options.symbolize_keys!
|
55
|
+
|
56
|
+
html_options = options.delete(:html) || {}
|
57
|
+
fields = new_child_fields(f, method, options)
|
58
|
+
|
59
|
+
html_options[:class] ||= "new"
|
60
|
+
|
61
|
+
content_tag(:div,
|
62
|
+
link_to_function(name, h("insert_fields(this, \"#{method}\", \"#{escape_javascript(fields)}\")"), html_options),
|
63
|
+
:class=>"add-bl")
|
64
|
+
end
|
65
|
+
|
66
|
+
def new_child_fields(form_builder, method, options = {})
|
67
|
+
options[:object] ||= form_builder.object.class.reflect_on_association(method).klass.new
|
68
|
+
options[:partial] ||= method.to_s.singularize
|
69
|
+
options[:form_builder_local] ||= :form
|
70
|
+
|
71
|
+
form_builder.fields_for(method, options[:object], :child_index => "new_#{method}") do |f|
|
72
|
+
render(:partial => options[:partial], :locals => { options[:form_builder_local] => f })
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def cookie_content_tag(tag_name, options={}, &block)
|
77
|
+
key = options[:id]
|
78
|
+
options[:style] = "display:none;" if !cookies[key].blank? && cookies[key].to_i != 1
|
79
|
+
content_tag(tag_name, options, &block)
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Manage::StructuresHelper
|
2
|
+
|
3
|
+
def edit_structure_record_path(structure)
|
4
|
+
case structure.structure_type
|
5
|
+
when StructureType.page then edit_manage_structure_page_path(:structure_id=>structure.id)
|
6
|
+
when StructureType.posts then manage_structure_posts_path(:structure_id => structure.id)
|
7
|
+
when StructureType.main then '#'
|
8
|
+
when StructureType.redirect then structure.slug
|
9
|
+
when StructureType.group then '#'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class Ability
|
2
|
+
include CanCanNamespace::Ability
|
3
|
+
|
4
|
+
attr_accessor :context, :user
|
5
|
+
|
6
|
+
def initialize(user, context = nil)
|
7
|
+
alias_action :delete, :to => :destroy
|
8
|
+
|
9
|
+
@user = (user || User.new) # guest user (not logged in)
|
10
|
+
@context = context
|
11
|
+
|
12
|
+
case @user.role_type_id
|
13
|
+
when RoleType.default.id then default
|
14
|
+
when RoleType.redactor.id then redactor
|
15
|
+
when RoleType.moderator.id then moderator
|
16
|
+
when RoleType.admin.id then admin
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def default
|
21
|
+
# TODO
|
22
|
+
end
|
23
|
+
|
24
|
+
def redactor
|
25
|
+
# TODO
|
26
|
+
end
|
27
|
+
|
28
|
+
def moderator
|
29
|
+
# TODO
|
30
|
+
end
|
31
|
+
|
32
|
+
def admin
|
33
|
+
can :manage, :all
|
34
|
+
can :manage, :all, :context => :manage
|
35
|
+
|
36
|
+
# User cannot destroy self account
|
37
|
+
cannot :destroy, User, :id => @user.id, :context => :manage
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# == Schema Information
|
2
|
+
#
|
3
|
+
# Table name: assets
|
4
|
+
#
|
5
|
+
# id :integer(4) not null, primary key
|
6
|
+
# data_file_name :string(255) not null
|
7
|
+
# data_content_type :string(255)
|
8
|
+
# data_file_size :integer(4)
|
9
|
+
# assetable_id :integer(4) not null
|
10
|
+
# assetable_type :string(25) not null
|
11
|
+
# type :string(25)
|
12
|
+
# guid :string(10)
|
13
|
+
# locale :integer(1) default(0)
|
14
|
+
# user_id :integer(4)
|
15
|
+
# created_at :datetime
|
16
|
+
# updated_at :datetime
|
17
|
+
# duration :float default(0.0)
|
18
|
+
# resolution_id :integer(1) default(0)
|
19
|
+
#
|
20
|
+
# Indexes
|
21
|
+
#
|
22
|
+
# index_assets_on_assetable_type_and_type_and_assetable_id (assetable_type,type,assetable_id)
|
23
|
+
# index_assets_on_assetable_type_and_assetable_id (assetable_type,assetable_id)
|
24
|
+
# index_assets_on_user_id (user_id)
|
25
|
+
#
|
26
|
+
|
27
|
+
class AttachmentFile < Asset
|
28
|
+
has_attached_file :data,
|
29
|
+
:url => "/assets/attachments/:id/:filename",
|
30
|
+
:path => ":rails_root/public/assets/attachments/:id/:filename"
|
31
|
+
|
32
|
+
validates_attachment_size :data, :less_than => 100.megabytes
|
33
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# == Schema Information
|
2
|
+
#
|
3
|
+
# Table name: assets
|
4
|
+
#
|
5
|
+
# id :integer(4) not null, primary key
|
6
|
+
# data_file_name :string(255) not null
|
7
|
+
# data_content_type :string(255)
|
8
|
+
# data_file_size :integer(4)
|
9
|
+
# assetable_id :integer(4) not null
|
10
|
+
# assetable_type :string(25) not null
|
11
|
+
# type :string(25)
|
12
|
+
# guid :string(10)
|
13
|
+
# locale :integer(1) default(0)
|
14
|
+
# user_id :integer(4)
|
15
|
+
# created_at :datetime
|
16
|
+
# updated_at :datetime
|
17
|
+
# duration :float default(0.0)
|
18
|
+
# resolution_id :integer(1) default(0)
|
19
|
+
#
|
20
|
+
# Indexes
|
21
|
+
#
|
22
|
+
# index_assets_on_assetable_type_and_type_and_assetable_id (assetable_type,type,assetable_id)
|
23
|
+
# index_assets_on_assetable_type_and_assetable_id (assetable_type,assetable_id)
|
24
|
+
# index_assets_on_user_id (user_id)
|
25
|
+
#
|
26
|
+
|
27
|
+
class Avatar < Asset
|
28
|
+
has_attached_file :data,
|
29
|
+
:url => "/assets/avatars/:id/:style_:basename.:extension",
|
30
|
+
:path => ":rails_root/public/assets/avatars/:id/:style_:basename.:extension",
|
31
|
+
:convert_options => { :all => "-strip" },
|
32
|
+
:styles => { :thumb => "50x50#", :small => "32x32#" }
|
33
|
+
|
34
|
+
validates_attachment_presence :data
|
35
|
+
validates_attachment_size :data, :less_than => 1.megabyte
|
36
|
+
validates_attachment_content_type :data, :content_type => Sunrise::Utils::IMAGE_TYPES
|
37
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# == Schema Information
|
2
|
+
#
|
3
|
+
# Table name: assets
|
4
|
+
#
|
5
|
+
# id :integer(4) not null, primary key
|
6
|
+
# data_file_name :string(255) not null
|
7
|
+
# data_content_type :string(255)
|
8
|
+
# data_file_size :integer(4)
|
9
|
+
# assetable_id :integer(4) not null
|
10
|
+
# assetable_type :string(25) not null
|
11
|
+
# type :string(25)
|
12
|
+
# guid :string(10)
|
13
|
+
# locale :integer(1) default(0)
|
14
|
+
# user_id :integer(4)
|
15
|
+
# created_at :datetime
|
16
|
+
# updated_at :datetime
|
17
|
+
#
|
18
|
+
# Indexes
|
19
|
+
#
|
20
|
+
# index_assets_on_assetable_type_and_type_and_assetable_id (assetable_type,type,assetable_id)
|
21
|
+
# index_assets_on_assetable_type_and_assetable_id (assetable_type,assetable_id)
|
22
|
+
# index_assets_on_user_id (user_id)
|
23
|
+
#
|
24
|
+
|
25
|
+
class Picture < Asset
|
26
|
+
has_attached_file :data,
|
27
|
+
:url => "/assets/pictures/:id/:style_:basename.:extension",
|
28
|
+
:path => ":rails_root/public/assets/pictures/:id/:style_:basename.:extension",
|
29
|
+
:convert_options => { :all => "-strip" },
|
30
|
+
:styles => { :content => '575>', :thumb => '80x80#' }
|
31
|
+
|
32
|
+
validates_attachment_presence :data
|
33
|
+
validates_attachment_size :data, :less_than => 2.megabytes
|
34
|
+
validates_attachment_content_type :data, :content_type => Sunrise::Utils::IMAGE_TYPES
|
35
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# == Schema Information
|
2
|
+
#
|
3
|
+
# Table name: roles
|
4
|
+
#
|
5
|
+
# id :integer(4) not null, primary key
|
6
|
+
# role_type :integer(1) default(0)
|
7
|
+
# user_id :integer(4) not null
|
8
|
+
# created_at :datetime
|
9
|
+
# updated_at :datetime
|
10
|
+
#
|
11
|
+
# Indexes
|
12
|
+
#
|
13
|
+
# fk_user (user_id)
|
14
|
+
#
|
15
|
+
|
16
|
+
class Role < ActiveRecord::Base
|
17
|
+
include Sunrise::Models::Role
|
18
|
+
|
19
|
+
attr_accessible :role_type
|
20
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class RoleType < Sunrise::Models::RoleType
|
2
|
+
define_enum do |builder|
|
3
|
+
builder.member :default, :object => new("default")
|
4
|
+
builder.member :redactor, :object => new("redactor")
|
5
|
+
builder.member :moderator, :object => new("moderator")
|
6
|
+
builder.member :admin, :object => new("admin")
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Structure < ActiveRecord::Base
|
2
|
+
include Sunrise::Models::Structure
|
3
|
+
|
4
|
+
has_many :questions, :dependent => :delete_all
|
5
|
+
has_slug :prepend_id => false
|
6
|
+
|
7
|
+
attr_accessible :title, :kind, :position, :parent_id, :redirect_url,
|
8
|
+
:position_type, :slug, :parent, :structure_type,
|
9
|
+
:header_attributes, :is_visible
|
10
|
+
|
11
|
+
def self.find_by_permalink!(value)
|
12
|
+
record = find_by_permalink(value)
|
13
|
+
raise ActiveRecord::RecordNotFound, "Couldn't find structure by #{value}" if record.nil?
|
14
|
+
return record
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class StructureType < Sunrise::Models::StructureType
|
2
|
+
define_enum do |builder|
|
3
|
+
builder.member :page, :object => new("page")
|
4
|
+
builder.member :posts, :object => new("posts")
|
5
|
+
builder.member :main, :object => new("main")
|
6
|
+
builder.member :redirect, :object => new("redirect")
|
7
|
+
builder.member :group, :object => new("group")
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# == Schema Information
|
2
|
+
#
|
3
|
+
# Table name: users
|
4
|
+
#
|
5
|
+
# id :integer(4) not null, primary key
|
6
|
+
# name :string(150)
|
7
|
+
# login :string(20) not null
|
8
|
+
# email :string(255) default(""), not null
|
9
|
+
# encrypted_password :string(128) default(""), not null
|
10
|
+
# password_salt :string(255) default(""), not null
|
11
|
+
# reset_password_token :string(255)
|
12
|
+
# remember_token :string(255)
|
13
|
+
# remember_created_at :datetime
|
14
|
+
# sign_in_count :integer(4) default(0)
|
15
|
+
# current_sign_in_at :datetime
|
16
|
+
# last_sign_in_at :datetime
|
17
|
+
# current_sign_in_ip :string(255)
|
18
|
+
# last_sign_in_ip :string(255)
|
19
|
+
# confirmation_token :string(255)
|
20
|
+
# confirmed_at :datetime
|
21
|
+
# confirmation_sent_at :datetime
|
22
|
+
# failed_attempts :integer(4) default(0)
|
23
|
+
# locked_at :datetime
|
24
|
+
# created_at :datetime
|
25
|
+
# updated_at :datetime
|
26
|
+
#
|
27
|
+
# Indexes
|
28
|
+
#
|
29
|
+
# index_users_on_login (login) UNIQUE
|
30
|
+
# index_users_on_email (email) UNIQUE
|
31
|
+
# index_users_on_reset_password_token (reset_password_token) UNIQUE
|
32
|
+
# index_users_on_confirmation_token (confirmation_token) UNIQUE
|
33
|
+
#
|
34
|
+
|
35
|
+
class User < ActiveRecord::Base
|
36
|
+
include Sunrise::Models::User
|
37
|
+
|
38
|
+
# Include default devise modules.
|
39
|
+
devise :database_authenticatable, :confirmable, :lockable, :timeoutable,
|
40
|
+
:recoverable, :rememberable, :trackable, :validatable,
|
41
|
+
:encryptable, :encryptor => :sha512
|
42
|
+
|
43
|
+
# Setup accessible (or protected) attributes for your model
|
44
|
+
attr_accessible :name, :email, :password, :password_confirmation, :remember_me
|
45
|
+
|
46
|
+
fileuploads :avatar
|
47
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5
|
+
<%= tag(:meta, :content => render_keywords, :name=>"keywords") %>
|
6
|
+
<%= tag(:meta, :content => render_description, :name=>"description") %>
|
7
|
+
<%= csrf_meta_tag %>
|
8
|
+
<title><%= render_title %></title>
|
9
|
+
<%= stylesheet_link_tag "application" %>
|
10
|
+
<%= stylesheet_link_tag 'manage/panel.css', :media=> 'screen' if content_manager? %>
|
11
|
+
<!--[if lte IE 6]><link href="/stylesheets/ie.css" rel="stylesheet" type="text/css" /><![endif]-->
|
12
|
+
<!--[if lte IE 7]><link href="/stylesheets/ie7.css" rel="stylesheet" type="text/css" /><![endif]-->
|
13
|
+
|
14
|
+
<script src="https://www.google.com/jsapi?key=" type="text/javascript"></script>
|
15
|
+
<script language="Javascript" type="text/javascript">
|
16
|
+
//<![CDATA[
|
17
|
+
google.load("jquery", "1.6.1");
|
18
|
+
google.load("swfobject", "2.2");
|
19
|
+
//]]>
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<%= javascript_include_tag "preloader", "rails" %>
|
23
|
+
<%= yield(:head) %>
|
24
|
+
</head>
|
25
|
+
<body>
|
26
|
+
<%= render :partial => "manage/shared/panel" if content_manager? %>
|
27
|
+
<%= render :partial => 'shared/notice' if flash %>
|
28
|
+
|
29
|
+
<div class='content'>
|
30
|
+
<%= yield %>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<%= yield(:footer) %>
|
34
|
+
|
35
|
+
<div id="preloader" style="display:none;z-index:5000;" class="load-wait"><div><strong>Загрузка</strong></div></div>
|
36
|
+
</body>
|
37
|
+
</html>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<% unless flash.keys.empty? %>
|
2
|
+
<div class="message" style="display:none;z-index:5000;">
|
3
|
+
<div class="alert-container">
|
4
|
+
<div class="alert">
|
5
|
+
<% flash.each do |key, text| %>
|
6
|
+
<%= content_tag(:div, text, :class => "flash_#{key}") %>
|
7
|
+
<% end %>
|
8
|
+
<%= link_to_function(image_tag("cross_ico.png", :title=>t('label.close')), "$(this).parents('div.message').slideUp()", :class=>"close") %>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
<script type='text/javascript' charset='UTF-8'>
|
12
|
+
$(document).ready(function(){
|
13
|
+
$('div.message').slideDown('slow');
|
14
|
+
})
|
15
|
+
</script>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
2
|
+
|
3
|
+
require "active_model/railtie"
|
4
|
+
require "active_record/railtie"
|
5
|
+
require "action_controller/railtie"
|
6
|
+
require "action_view/railtie"
|
7
|
+
require "action_mailer/railtie"
|
8
|
+
|
9
|
+
Bundler.require
|
10
|
+
require "sunrise-widgets"
|
11
|
+
|
12
|
+
module Dummy
|
13
|
+
class Application < Rails::Application
|
14
|
+
# Settings in config/environments/* take precedence over those specified here.
|
15
|
+
# Application configuration should go into files in config/initializers
|
16
|
+
# -- all .rb files in that directory are automatically loaded.
|
17
|
+
|
18
|
+
# Custom directories with classes and modules you want to be autoloadable.
|
19
|
+
# config.autoload_paths += %W(#{config.root}/extras)
|
20
|
+
config.autoload_paths += %W(#{config.root}/app/models/defaults
|
21
|
+
#{config.root}/../../lib/generators/sunrise/widgets/templates)
|
22
|
+
|
23
|
+
# Only load the plugins named here, in the order given (default is alphabetical).
|
24
|
+
# :all can be used as a placeholder for all plugins not explicitly named.
|
25
|
+
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
|
26
|
+
|
27
|
+
# Activate observers that should always be running.
|
28
|
+
# config.active_record.observers = :cacher, :garbage_collector, :forum_observer
|
29
|
+
|
30
|
+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
31
|
+
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
32
|
+
# config.time_zone = 'Central Time (US & Canada)'
|
33
|
+
|
34
|
+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
35
|
+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
36
|
+
# config.i18n.default_locale = :de
|
37
|
+
|
38
|
+
# JavaScript files you want as :defaults (application.js is always included).
|
39
|
+
# config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
|
40
|
+
|
41
|
+
# Configure the default encoding used in templates for Ruby 1.9.
|
42
|
+
config.encoding = "utf-8"
|
43
|
+
|
44
|
+
# Configure sensitive parameters which will be filtered from the log file.
|
45
|
+
config.filter_parameters += [:password]
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# SQLite version 3.x
|
2
|
+
# gem install sqlite3
|
3
|
+
development:
|
4
|
+
adapter: sqlite3
|
5
|
+
database: db/development.sqlite3
|
6
|
+
pool: 5
|
7
|
+
timeout: 5000
|
8
|
+
|
9
|
+
# Warning: The database defined as "test" will be erased and
|
10
|
+
# re-generated from your development database when you run "rake".
|
11
|
+
# Do not set this db to the same as development or production.
|
12
|
+
test:
|
13
|
+
adapter: sqlite3
|
14
|
+
database: db/test.sqlite3
|
15
|
+
pool: 5
|
16
|
+
timeout: 5000
|
17
|
+
|
18
|
+
production:
|
19
|
+
adapter: sqlite3
|
20
|
+
database: db/production.sqlite3
|
21
|
+
pool: 5
|
22
|
+
timeout: 5000
|