sunrise-questions 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.
Files changed (264) hide show
  1. data/Gemfile +34 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +21 -0
  4. data/Rakefile +27 -0
  5. data/app/controllers/manage/questions_controller.rb +36 -0
  6. data/app/views/manage/questions/_form.html.erb +17 -0
  7. data/app/views/manage/questions/_model_filter.html.erb +34 -0
  8. data/app/views/manage/questions/_question.html.erb +27 -0
  9. data/app/views/manage/questions/edit.html.erb +6 -0
  10. data/app/views/manage/questions/index.html.erb +32 -0
  11. data/app/views/manage/questions/new.html.erb +6 -0
  12. data/app/views/manage/questions/show.html.erb +29 -0
  13. data/config/locales/ru.yml +16 -0
  14. data/config/locales/uk.yml +16 -0
  15. data/config/routes.rb +7 -0
  16. data/lib/generators/sunrise/questions/USAGE +12 -0
  17. data/lib/generators/sunrise/questions/install_generator.rb +34 -0
  18. data/lib/generators/sunrise/questions/templates/create_questions.rb +20 -0
  19. data/lib/generators/sunrise/questions/templates/question.rb +5 -0
  20. data/lib/sunrise-questions.rb +1 -0
  21. data/lib/sunrise/models/question.rb +34 -0
  22. data/lib/sunrise/questions.rb +12 -0
  23. data/lib/sunrise/questions/engine.rb +18 -0
  24. data/lib/sunrise/questions/version.rb +5 -0
  25. data/spec/controllers/manage/questions_controller_spec.rb +96 -0
  26. data/spec/dummy/Rakefile +7 -0
  27. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  28. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  29. data/spec/dummy/app/helpers/manage/assets_helper.rb +2 -0
  30. data/spec/dummy/app/helpers/manage/base_helper.rb +81 -0
  31. data/spec/dummy/app/helpers/manage/pages_helper.rb +2 -0
  32. data/spec/dummy/app/helpers/manage/settings_helper.rb +2 -0
  33. data/spec/dummy/app/helpers/manage/structures_helper.rb +12 -0
  34. data/spec/dummy/app/helpers/manage/users_helper.rb +6 -0
  35. data/spec/dummy/app/models/defaults/ability.rb +39 -0
  36. data/spec/dummy/app/models/defaults/asset.rb +7 -0
  37. data/spec/dummy/app/models/defaults/attachment_file.rb +33 -0
  38. data/spec/dummy/app/models/defaults/avatar.rb +37 -0
  39. data/spec/dummy/app/models/defaults/header.rb +5 -0
  40. data/spec/dummy/app/models/defaults/page.rb +5 -0
  41. data/spec/dummy/app/models/defaults/picture.rb +35 -0
  42. data/spec/dummy/app/models/defaults/position_type.rb +7 -0
  43. data/spec/dummy/app/models/defaults/role.rb +20 -0
  44. data/spec/dummy/app/models/defaults/role_type.rb +8 -0
  45. data/spec/dummy/app/models/defaults/structure.rb +16 -0
  46. data/spec/dummy/app/models/defaults/structure_type.rb +9 -0
  47. data/spec/dummy/app/models/defaults/user.rb +47 -0
  48. data/spec/dummy/app/models/question.rb +5 -0
  49. data/spec/dummy/app/views/layouts/application.html.erb +37 -0
  50. data/spec/dummy/app/views/pages/show.html.erb +2 -0
  51. data/spec/dummy/app/views/shared/_notice.html.erb +17 -0
  52. data/spec/dummy/config.ru +4 -0
  53. data/spec/dummy/config/application.rb +46 -0
  54. data/spec/dummy/config/application.yml.sample +4 -0
  55. data/spec/dummy/config/boot.rb +10 -0
  56. data/spec/dummy/config/database.yml +22 -0
  57. data/spec/dummy/config/database.yml.sample +34 -0
  58. data/spec/dummy/config/environment.rb +5 -0
  59. data/spec/dummy/config/environments/development.rb +26 -0
  60. data/spec/dummy/config/environments/production.rb +49 -0
  61. data/spec/dummy/config/environments/test.rb +35 -0
  62. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  63. data/spec/dummy/config/initializers/devise.rb +204 -0
  64. data/spec/dummy/config/initializers/inflections.rb +10 -0
  65. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  66. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  67. data/spec/dummy/config/initializers/session_store.rb +8 -0
  68. data/spec/dummy/config/initializers/simple_form.rb +93 -0
  69. data/spec/dummy/config/initializers/sunrise.rb +7 -0
  70. data/spec/dummy/config/locales/devise.en.yml +53 -0
  71. data/spec/dummy/config/locales/en.yml +5 -0
  72. data/spec/dummy/config/locales/simple_form.en.yml +24 -0
  73. data/spec/dummy/config/logrotate-config.sample +9 -0
  74. data/spec/dummy/config/nginx-config-passenger.sample +51 -0
  75. data/spec/dummy/config/routes.rb +64 -0
  76. data/spec/dummy/db/development.sqlite3 +0 -0
  77. data/spec/dummy/db/migrate/20110801124809_sunrise_create_users.rb +29 -0
  78. data/spec/dummy/db/migrate/20110801124909_sunrise_create_roles.rb +16 -0
  79. data/spec/dummy/db/migrate/20110801125009_sunrise_create_structures.rb +27 -0
  80. data/spec/dummy/db/migrate/20110801125109_sunrise_create_pages.rb +17 -0
  81. data/spec/dummy/db/migrate/20110801125209_sunrise_create_assets.rb +28 -0
  82. data/spec/dummy/db/migrate/20110801125309_sunrise_create_headers.rb +20 -0
  83. data/spec/dummy/db/migrate/20110801161138_sunrise_create_questions.rb +20 -0
  84. data/spec/dummy/db/seeds.rb +25 -0
  85. data/spec/dummy/db/test.sqlite3 +0 -0
  86. data/spec/dummy/lib/templates/erb/scaffold/_form.html.erb +13 -0
  87. data/spec/dummy/log/development.log +5 -0
  88. data/spec/dummy/log/production.log +0 -0
  89. data/spec/dummy/log/server.log +0 -0
  90. data/spec/dummy/log/test.log +1830 -0
  91. data/spec/dummy/public/404.html +26 -0
  92. data/spec/dummy/public/422.html +26 -0
  93. data/spec/dummy/public/500.html +26 -0
  94. data/spec/dummy/public/favicon.ico +0 -0
  95. data/spec/dummy/public/images/manage/add_post_bot.gif +0 -0
  96. data/spec/dummy/public/images/manage/add_post_top.gif +0 -0
  97. data/spec/dummy/public/images/manage/add_white_bot.gif +0 -0
  98. data/spec/dummy/public/images/manage/add_white_top.gif +0 -0
  99. data/spec/dummy/public/images/manage/arrow.png +0 -0
  100. data/spec/dummy/public/images/manage/back_but_lc.gif +0 -0
  101. data/spec/dummy/public/images/manage/back_but_rc.gif +0 -0
  102. data/spec/dummy/public/images/manage/bot_corn.gif +0 -0
  103. data/spec/dummy/public/images/manage/bot_duo_corn.gif +0 -0
  104. data/spec/dummy/public/images/manage/but_bg.png +0 -0
  105. data/spec/dummy/public/images/manage/but_block_lc.gif +0 -0
  106. data/spec/dummy/public/images/manage/but_block_rc.gif +0 -0
  107. data/spec/dummy/public/images/manage/but_freze_lc.gif +0 -0
  108. data/spec/dummy/public/images/manage/but_freze_rc.gif +0 -0
  109. data/spec/dummy/public/images/manage/but_gr.gif +0 -0
  110. data/spec/dummy/public/images/manage/but_gr_l.gif +0 -0
  111. data/spec/dummy/public/images/manage/but_gr_r.gif +0 -0
  112. data/spec/dummy/public/images/manage/but_search.gif +0 -0
  113. data/spec/dummy/public/images/manage/but_unfreze_lc.gif +0 -0
  114. data/spec/dummy/public/images/manage/but_unfreze_rc.gif +0 -0
  115. data/spec/dummy/public/images/manage/button_add_foto.gif +0 -0
  116. data/spec/dummy/public/images/manage/button_add_foto_ru.gif +0 -0
  117. data/spec/dummy/public/images/manage/button_add_foto_ua.gif +0 -0
  118. data/spec/dummy/public/images/manage/button_add_foto_uk.gif +0 -0
  119. data/spec/dummy/public/images/manage/cancelbutton.gif +0 -0
  120. data/spec/dummy/public/images/manage/dark_arr.gif +0 -0
  121. data/spec/dummy/public/images/manage/dark_arr_left.gif +0 -0
  122. data/spec/dummy/public/images/manage/dark_cross_ico.gif +0 -0
  123. data/spec/dummy/public/images/manage/dot.gif +0 -0
  124. data/spec/dummy/public/images/manage/duo_bg.gif +0 -0
  125. data/spec/dummy/public/images/manage/duo_bg_small.gif +0 -0
  126. data/spec/dummy/public/images/manage/duo_bg_small_blocked.gif +0 -0
  127. data/spec/dummy/public/images/manage/duo_bg_small_frozed.gif +0 -0
  128. data/spec/dummy/public/images/manage/duo_bg_small_notact.gif +0 -0
  129. data/spec/dummy/public/images/manage/duo_bot_small.gif +0 -0
  130. data/spec/dummy/public/images/manage/duo_bot_small_blocked.gif +0 -0
  131. data/spec/dummy/public/images/manage/duo_bot_small_frozed.gif +0 -0
  132. data/spec/dummy/public/images/manage/duo_bot_small_notact.gif +0 -0
  133. data/spec/dummy/public/images/manage/duo_top_small.gif +0 -0
  134. data/spec/dummy/public/images/manage/duo_top_small_blocked.gif +0 -0
  135. data/spec/dummy/public/images/manage/duo_top_small_frozed.gif +0 -0
  136. data/spec/dummy/public/images/manage/duo_top_small_notact.gif +0 -0
  137. data/spec/dummy/public/images/manage/edit_white_top.gif +0 -0
  138. data/spec/dummy/public/images/manage/empty.gif +0 -0
  139. data/spec/dummy/public/images/manage/filter_bot_bg.gif +0 -0
  140. data/spec/dummy/public/images/manage/filter_top_bg.gif +0 -0
  141. data/spec/dummy/public/images/manage/flag_en.gif +0 -0
  142. data/spec/dummy/public/images/manage/flag_en_nonact.gif +0 -0
  143. data/spec/dummy/public/images/manage/flag_ru.gif +0 -0
  144. data/spec/dummy/public/images/manage/flag_ru_nonact.gif +0 -0
  145. data/spec/dummy/public/images/manage/flag_ua.gif +0 -0
  146. data/spec/dummy/public/images/manage/flag_ua_nonact.gif +0 -0
  147. data/spec/dummy/public/images/manage/foto.jpg +0 -0
  148. data/spec/dummy/public/images/manage/ico_add.gif +0 -0
  149. data/spec/dummy/public/images/manage/ico_del.gif +0 -0
  150. data/spec/dummy/public/images/manage/ico_down.gif +0 -0
  151. data/spec/dummy/public/images/manage/ico_edit.gif +0 -0
  152. data/spec/dummy/public/images/manage/ico_settings.gif +0 -0
  153. data/spec/dummy/public/images/manage/ico_up.gif +0 -0
  154. data/spec/dummy/public/images/manage/input_bg.gif +0 -0
  155. data/spec/dummy/public/images/manage/l_but_corn.gif +0 -0
  156. data/spec/dummy/public/images/manage/minimise_but.gif +0 -0
  157. data/spec/dummy/public/images/manage/mp3.png +0 -0
  158. data/spec/dummy/public/images/manage/page_arr_hover.png +0 -0
  159. data/spec/dummy/public/images/manage/page_next_arr.gif +0 -0
  160. data/spec/dummy/public/images/manage/page_num_hover.gif +0 -0
  161. data/spec/dummy/public/images/manage/page_prev_arr.gif +0 -0
  162. data/spec/dummy/public/images/manage/panel/l_but_corn.gif +0 -0
  163. data/spec/dummy/public/images/manage/panel/maximise_but.gif +0 -0
  164. data/spec/dummy/public/images/manage/panel/r_but_corn.gif +0 -0
  165. data/spec/dummy/public/images/manage/panel/top_menu_arr.gif +0 -0
  166. data/spec/dummy/public/images/manage/panel/user_pic.gif +0 -0
  167. data/spec/dummy/public/images/manage/preloader.gif +0 -0
  168. data/spec/dummy/public/images/manage/r_but_corn.gif +0 -0
  169. data/spec/dummy/public/images/manage/select_bg.gif +0 -0
  170. data/spec/dummy/public/images/manage/select_corn.gif +0 -0
  171. data/spec/dummy/public/images/manage/struct_corn_lg.gif +0 -0
  172. data/spec/dummy/public/images/manage/struct_corn_llg.gif +0 -0
  173. data/spec/dummy/public/images/manage/struct_corn_lw.gif +0 -0
  174. data/spec/dummy/public/images/manage/struct_corn_rg.gif +0 -0
  175. data/spec/dummy/public/images/manage/struct_corn_rlg.gif +0 -0
  176. data/spec/dummy/public/images/manage/struct_corn_rw.gif +0 -0
  177. data/spec/dummy/public/images/manage/tab_gl.gif +0 -0
  178. data/spec/dummy/public/images/manage/tab_gr.gif +0 -0
  179. data/spec/dummy/public/images/manage/tab_wl.gif +0 -0
  180. data/spec/dummy/public/images/manage/tab_wr.gif +0 -0
  181. data/spec/dummy/public/images/manage/top_corn.gif +0 -0
  182. data/spec/dummy/public/images/manage/top_duo_corn.gif +0 -0
  183. data/spec/dummy/public/images/manage/top_menu_arr.gif +0 -0
  184. data/spec/dummy/public/images/manage/transp_cross.png +0 -0
  185. data/spec/dummy/public/images/manage/upload_progress.gif +0 -0
  186. data/spec/dummy/public/images/manage/user_act_lc.gif +0 -0
  187. data/spec/dummy/public/images/manage/user_act_rc.gif +0 -0
  188. data/spec/dummy/public/images/manage/user_ico.gif +0 -0
  189. data/spec/dummy/public/images/manage/user_pic.gif +0 -0
  190. data/spec/dummy/public/images/manage/user_pic_small.gif +0 -0
  191. data/spec/dummy/public/images/manage/user_pic_thumb.gif +0 -0
  192. data/spec/dummy/public/javascripts/application.js +2 -0
  193. data/spec/dummy/public/javascripts/controls.js +965 -0
  194. data/spec/dummy/public/javascripts/datepicker/jquery-ui-i18n.js +1176 -0
  195. data/spec/dummy/public/javascripts/datepicker/jquery.ui.datepicker-ru.js +37 -0
  196. data/spec/dummy/public/javascripts/datepicker/jquery.ui.datepicker-uk.js +37 -0
  197. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  198. data/spec/dummy/public/javascripts/effects.js +1123 -0
  199. data/spec/dummy/public/javascripts/fileupload/fileuploader-input.js +217 -0
  200. data/spec/dummy/public/javascripts/fileupload/fileuploader.css +31 -0
  201. data/spec/dummy/public/javascripts/fileupload/fileuploader.js +1288 -0
  202. data/spec/dummy/public/javascripts/jquery-ui-timepicker-addon.js +911 -0
  203. data/spec/dummy/public/javascripts/jquery.cookie.js +97 -0
  204. data/spec/dummy/public/javascripts/jquery.fancybox-1.3.4.pack.js +46 -0
  205. data/spec/dummy/public/javascripts/jquery.tmpl.min.js +10 -0
  206. data/spec/dummy/public/javascripts/manage-fileuploader.js +182 -0
  207. data/spec/dummy/public/javascripts/manage.js +294 -0
  208. data/spec/dummy/public/javascripts/preloader.js +47 -0
  209. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  210. data/spec/dummy/public/javascripts/rails.js +331 -0
  211. data/spec/dummy/public/stylesheets/application.css +1 -0
  212. data/spec/dummy/public/stylesheets/fancybox/images/blank.gif +0 -0
  213. data/spec/dummy/public/stylesheets/fancybox/images/fancy_close.png +0 -0
  214. data/spec/dummy/public/stylesheets/fancybox/images/fancy_loading.png +0 -0
  215. data/spec/dummy/public/stylesheets/fancybox/images/fancy_nav_left.png +0 -0
  216. data/spec/dummy/public/stylesheets/fancybox/images/fancy_nav_right.png +0 -0
  217. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_e.png +0 -0
  218. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_n.png +0 -0
  219. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_ne.png +0 -0
  220. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_nw.png +0 -0
  221. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_s.png +0 -0
  222. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_se.png +0 -0
  223. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_sw.png +0 -0
  224. data/spec/dummy/public/stylesheets/fancybox/images/fancy_shadow_w.png +0 -0
  225. data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_left.png +0 -0
  226. data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_main.png +0 -0
  227. data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_over.png +0 -0
  228. data/spec/dummy/public/stylesheets/fancybox/images/fancy_title_right.png +0 -0
  229. data/spec/dummy/public/stylesheets/fancybox/images/fancybox-x.png +0 -0
  230. data/spec/dummy/public/stylesheets/fancybox/images/fancybox-y.png +0 -0
  231. data/spec/dummy/public/stylesheets/fancybox/images/fancybox.png +0 -0
  232. data/spec/dummy/public/stylesheets/fancybox/jquery.fancybox-1.3.4.css +359 -0
  233. data/spec/dummy/public/stylesheets/manage/buttons.css +42 -0
  234. data/spec/dummy/public/stylesheets/manage/ie.css +16 -0
  235. data/spec/dummy/public/stylesheets/manage/main.css +1108 -0
  236. data/spec/dummy/public/stylesheets/manage/panel.css +126 -0
  237. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  238. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  239. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  240. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  241. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  242. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  243. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  244. data/spec/dummy/public/stylesheets/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  245. data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_222222_256x240.png +0 -0
  246. data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  247. data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_454545_256x240.png +0 -0
  248. data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_888888_256x240.png +0 -0
  249. data/spec/dummy/public/stylesheets/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  250. data/spec/dummy/public/stylesheets/smoothness/jquery-ui-1.8.13.custom.css +578 -0
  251. data/spec/dummy/script/rails +6 -0
  252. data/spec/factories/question_factory.rb +10 -0
  253. data/spec/factories/structure_factory.rb +22 -0
  254. data/spec/factories/user_factory.rb +48 -0
  255. data/spec/generators/install_generator_spec.rb +24 -0
  256. data/spec/integration/navigation_spec.rb +9 -0
  257. data/spec/models/question_spec.rb +30 -0
  258. data/spec/spec.opts +2 -0
  259. data/spec/spec_helper.rb +57 -0
  260. data/spec/sunrise_questions_spec.rb +7 -0
  261. data/spec/support/helpers/controller_macros.rb +40 -0
  262. data/spec/tmp/app/models/question.rb +5 -0
  263. data/spec/tmp/db/migrate/20110801173811_sunrise_create_questions.rb +20 -0
  264. metadata +582 -0
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+ module Sunrise
3
+ module Questions
4
+ # Default way to setup Sunrise.
5
+ def self.setup
6
+ yield self
7
+ end
8
+ end
9
+ end
10
+
11
+ require 'sunrise/questions/version'
12
+ require 'sunrise/questions/engine'
@@ -0,0 +1,18 @@
1
+ require 'rails'
2
+ require 'sunrise-questions'
3
+
4
+ module Sunrise
5
+ module Questions
6
+ class Engine < ::Rails::Engine
7
+ config.before_initialize do
8
+ Sunrise::Plugin.register :questions do |plugin|
9
+ plugin.model = 'sunrise/models/question'
10
+ plugin.menu = false
11
+ plugin.version = Sunrise::Questions::VERSION.dup
12
+ end
13
+
14
+ Sunrise::Plugins.activate(:questions)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ module Sunrise
2
+ module Questions
3
+ VERSION = "0.1.0".freeze
4
+ end
5
+ end
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+
3
+ describe Manage::QuestionsController 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, :structure_id => @structure.id
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, :structure_id => @structure.id, :question => FactoryGirl.attributes_for(:question)
22
+ }.should change { @structure.questions.count }.by(1)
23
+ end
24
+
25
+ context "exists question" do
26
+ before(:each) do
27
+ @question = FactoryGirl.create(:question, :structure => @structure)
28
+ end
29
+
30
+ it "should render index action" do
31
+ get :index, :structure_id => @structure.id
32
+ assigns(:structure).should == @structure
33
+ assigns(:questions).should include(@question)
34
+ response.should render_template('index')
35
+ end
36
+
37
+ it "should render edit action" do
38
+ controller.should_receive :edit
39
+ get :edit, :structure_id => @structure.id, :id => @question.id
40
+ end
41
+
42
+ it "should update structure" do
43
+ put :update, :structure_id => @structure.id, :id => @question.id, :question => { :title => "Update" }
44
+ assigns(:question).should be_valid
45
+ assigns(:question).title.should == 'Update'
46
+ response.should redirect_to(manage_structure_questions_path(@structure.id))
47
+ end
48
+
49
+ it "should destroy user" do
50
+ lambda {
51
+ delete :destroy, :structure_id => @structure.id, :id => @question.id
52
+ }.should change { @structure.questions.count }.by(-1)
53
+ end
54
+ end
55
+ end
56
+
57
+ context "anonymous user" do
58
+ user_logout
59
+
60
+ it "should not render index action" do
61
+ controller.should_not_receive :index
62
+ get :index, :structure_id => @structure.id
63
+ end
64
+
65
+ it "should not render new action" do
66
+ controller.should_not_receive :new
67
+ get :new, :structure_id => @structure.id
68
+ end
69
+
70
+ it "should not render create action" do
71
+ controller.should_not_receive :create
72
+ post :create, :structure_id => @structure.id
73
+ end
74
+
75
+ context "with exists structure" do
76
+ before(:each) do
77
+ @question = FactoryGirl.create(:question, :structure => @structure)
78
+ end
79
+
80
+ it "should not render edit action" do
81
+ controller.should_not_receive :edit
82
+ get :edit, :structure_id => @structure.id, :id => @question.id
83
+ end
84
+
85
+ it "should not render update action" do
86
+ controller.should_not_receive :update
87
+ put :update, :structure_id => @structure.id, :id => @question.id
88
+ end
89
+
90
+ it "should not render destroy action" do
91
+ controller.should_not_receive :destroy
92
+ delete :destroy, :structure_id => @structure.id, :id => @question.id
93
+ end
94
+ end
95
+ end
96
+ end
@@ -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,3 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery
3
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Manage::AssetsHelper
2
+ end
@@ -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,2 @@
1
+ module Manage::PagesHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Manage::SettingsHelper
2
+ 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,6 @@
1
+ module Manage::UsersHelper
2
+ def manage_user_avatar_tag(record, options={})
3
+ options.symbolize_keys!
4
+ record_asset_tag(record, :avatar, "manage/user_pic.gif", options.merge(:title => record.try(:name)))
5
+ end
6
+ 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,7 @@
1
+ class Asset < ActiveRecord::Base
2
+ include Sunrise::Models::Asset
3
+
4
+ attr_accessible :data
5
+
6
+ default_scope order("#{quoted_table_name}.sort_order")
7
+ 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,5 @@
1
+ class Header < ActiveRecord::Base
2
+ include Sunrise::Models::Header
3
+
4
+ attr_accessible :title, :keywords, :description
5
+ end
@@ -0,0 +1,5 @@
1
+ class Page < ActiveRecord::Base
2
+ include Sunrise::Models::Page
3
+
4
+ attr_accessible :title, :content
5
+ 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,7 @@
1
+ class PositionType < Sunrise::Models::PositionType
2
+ define_enum do |builder|
3
+ builder.member :default, :object => new("default")
4
+ builder.member :menu, :object => new("menu")
5
+ builder.member :bottom, :object => new("bottom")
6
+ end
7
+ end