refinerycms-core 1.0.11 → 2.0.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 (528) hide show
  1. data/{public → app/assets/images}/favicon.ico +0 -0
  2. data/{public → app/assets}/images/refinery/add.png +0 -0
  3. data/{public → app/assets}/images/refinery/admin_bg.png +0 -0
  4. data/{public → app/assets}/images/refinery/ajax-loader.gif +0 -0
  5. data/{public → app/assets}/images/refinery/branch-end.gif +0 -0
  6. data/{public → app/assets}/images/refinery/branch-start.gif +0 -0
  7. data/{public → app/assets}/images/refinery/branch.gif +0 -0
  8. data/{public → app/assets}/images/refinery/carousel-left.png +0 -0
  9. data/{public → app/assets}/images/refinery/carousel-right.png +0 -0
  10. data/{public → app/assets}/images/refinery/cross.png +0 -0
  11. data/{public → app/assets}/images/refinery/dialogLoadingAnimation.gif +0 -0
  12. data/{public → app/assets}/images/refinery/header_background.png +0 -0
  13. data/{public → app/assets}/images/refinery/hover-gradient.jpg +0 -0
  14. data/{public → app/assets}/images/refinery/icons/accept.png +0 -0
  15. data/{public → app/assets}/images/refinery/icons/add.png +0 -0
  16. data/{public → app/assets}/images/refinery/icons/ajax-loader.gif +0 -0
  17. data/{public → app/assets}/images/refinery/icons/application_edit.png +0 -0
  18. data/{public → app/assets}/images/refinery/icons/application_go.png +0 -0
  19. data/{public → app/assets}/images/refinery/icons/arrow_left.png +0 -0
  20. data/{public → app/assets}/images/refinery/icons/arrow_switch.png +0 -0
  21. data/{public → app/assets}/images/refinery/icons/arrow_up.png +0 -0
  22. data/{public → app/assets}/images/refinery/icons/bin.png +0 -0
  23. data/{public → app/assets}/images/refinery/icons/bin_closed.png +0 -0
  24. data/{public → app/assets}/images/refinery/icons/cancel.png +0 -0
  25. data/{public → app/assets}/images/refinery/icons/cog_add.png +0 -0
  26. data/{public → app/assets}/images/refinery/icons/cog_edit.png +0 -0
  27. data/{public → app/assets}/images/refinery/icons/cross.png +0 -0
  28. data/{public → app/assets}/images/refinery/icons/delete.png +0 -0
  29. data/{public → app/assets}/images/refinery/icons/doc.png +0 -0
  30. data/{public → app/assets}/images/refinery/icons/down.gif +0 -0
  31. data/{public → app/assets}/images/refinery/icons/edit.png +0 -0
  32. data/{public → app/assets}/images/refinery/icons/email.png +0 -0
  33. data/{public → app/assets}/images/refinery/icons/email_edit.png +0 -0
  34. data/{public → app/assets}/images/refinery/icons/email_go.png +0 -0
  35. data/{public → app/assets}/images/refinery/icons/email_open.png +0 -0
  36. data/{public → app/assets}/images/refinery/icons/eye.png +0 -0
  37. data/app/assets/images/refinery/icons/folder.png +0 -0
  38. data/app/assets/images/refinery/icons/folder_open.png +0 -0
  39. data/{public → app/assets}/images/refinery/icons/folder_page_white.png +0 -0
  40. data/{public → app/assets}/images/refinery/icons/image_add.png +0 -0
  41. data/{public → app/assets}/images/refinery/icons/image_edit.png +0 -0
  42. data/{public → app/assets}/images/refinery/icons/img.png +0 -0
  43. data/{public → app/assets}/images/refinery/icons/information.png +0 -0
  44. data/{public → app/assets}/images/refinery/icons/layout_add.png +0 -0
  45. data/{public → app/assets}/images/refinery/icons/layout_edit.png +0 -0
  46. data/{public → app/assets}/images/refinery/icons/music.png +0 -0
  47. data/app/assets/images/refinery/icons/page.png +0 -0
  48. data/{public → app/assets}/images/refinery/icons/page_add.png +0 -0
  49. data/{public → app/assets}/images/refinery/icons/page_edit.png +0 -0
  50. data/{public → app/assets}/images/refinery/icons/page_white_edit.png +0 -0
  51. data/{public → app/assets}/images/refinery/icons/page_white_gear.png +0 -0
  52. data/{public → app/assets}/images/refinery/icons/page_white_put.png +0 -0
  53. data/{public → app/assets}/images/refinery/icons/pdf.png +0 -0
  54. data/{public → app/assets}/images/refinery/icons/ppt.png +0 -0
  55. data/{public → app/assets}/images/refinery/icons/star.png +0 -0
  56. data/{public → app/assets}/images/refinery/icons/tick.png +0 -0
  57. data/{public → app/assets}/images/refinery/icons/up.gif +0 -0
  58. data/{public → app/assets}/images/refinery/icons/user_add.png +0 -0
  59. data/{public → app/assets}/images/refinery/icons/user_comment.png +0 -0
  60. data/{public → app/assets}/images/refinery/icons/user_edit.png +0 -0
  61. data/{public → app/assets}/images/refinery/icons/xls.png +0 -0
  62. data/{public → app/assets}/images/refinery/icons/zip.png +0 -0
  63. data/{public → app/assets}/images/refinery/icons/zoom.png +0 -0
  64. data/{public → app/assets}/images/refinery/logo-large.png +0 -0
  65. data/{public → app/assets}/images/refinery/logo-medium.png +0 -0
  66. data/{public → app/assets}/images/refinery/logo-site-bar.png +0 -0
  67. data/{public → app/assets}/images/refinery/logo-small-medium.png +0 -0
  68. data/{public → app/assets}/images/refinery/logo-small.png +0 -0
  69. data/{public → app/assets}/images/refinery/logo-tiny.png +0 -0
  70. data/{public → app/assets}/images/refinery/logo.png +0 -0
  71. data/{public → app/assets}/images/refinery/nav-3-background.gif +0 -0
  72. data/{public → app/assets}/images/refinery/nav_inactive_background.png +0 -0
  73. data/{public → app/assets}/images/refinery/orange_button.png +0 -0
  74. data/{public → app/assets}/images/refinery/page_bg.png +0 -0
  75. data/{public → app/assets}/images/refinery/resolve_digital_footer_logo.png +0 -0
  76. data/{public → app/assets}/images/refinery/text_field_background.png +0 -0
  77. data/{public → app/assets}/images/refinery/tooltip-nib.gif +0 -0
  78. data/{public → app/assets}/images/refinery/tooltip-nib.png +0 -0
  79. data/{public → app/assets}/images/wymeditor/skins/refinery/arrow_redo.png +0 -0
  80. data/{public → app/assets}/images/wymeditor/skins/refinery/arrow_undo.png +0 -0
  81. data/{public → app/assets}/images/wymeditor/skins/refinery/eye.png +0 -0
  82. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/article.png +0 -0
  83. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/aside.png +0 -0
  84. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/blockquote.png +0 -0
  85. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/command.png +0 -0
  86. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/details.png +0 -0
  87. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/figcaption.png +0 -0
  88. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/figure.png +0 -0
  89. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/footer.png +0 -0
  90. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h1.png +0 -0
  91. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h2.png +0 -0
  92. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h3.png +0 -0
  93. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h4.png +0 -0
  94. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h5.png +0 -0
  95. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h6.png +0 -0
  96. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/header.png +0 -0
  97. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/hgroup.png +0 -0
  98. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/mark.png +0 -0
  99. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/meter.png +0 -0
  100. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/nav.png +0 -0
  101. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/p.png +0 -0
  102. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/pre.png +0 -0
  103. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/progress.png +0 -0
  104. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/readme.md +0 -0
  105. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/rp.png +0 -0
  106. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/rt.png +0 -0
  107. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/ruby.png +0 -0
  108. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/section.png +0 -0
  109. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/summary.png +0 -0
  110. data/{public → app/assets}/images/wymeditor/skins/refinery/html5/time.png +0 -0
  111. data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-blockquote.png +0 -0
  112. data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h1.png +0 -0
  113. data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h2.png +0 -0
  114. data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h3.png +0 -0
  115. data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h4.png +0 -0
  116. data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h5.png +0 -0
  117. data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h6.png +0 -0
  118. data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-p.png +0 -0
  119. data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-pre.png +0 -0
  120. data/{public → app/assets}/images/wymeditor/skins/refinery/link_add.png +0 -0
  121. data/{public → app/assets}/images/wymeditor/skins/refinery/link_break.png +0 -0
  122. data/{public → app/assets}/images/wymeditor/skins/refinery/page_code.png +0 -0
  123. data/{public → app/assets}/images/wymeditor/skins/refinery/page_paste.png +0 -0
  124. data/{public → app/assets}/images/wymeditor/skins/refinery/photo_add.png +0 -0
  125. data/{public → app/assets}/images/wymeditor/skins/refinery/right.png +0 -0
  126. data/{public → app/assets}/images/wymeditor/skins/refinery/style.png +0 -0
  127. data/{public → app/assets}/images/wymeditor/skins/refinery/table_add.png +0 -0
  128. data/{public → app/assets}/images/wymeditor/skins/refinery/text_align_center.png +0 -0
  129. data/{public → app/assets}/images/wymeditor/skins/refinery/text_align_justify.png +0 -0
  130. data/{public → app/assets}/images/wymeditor/skins/refinery/text_align_left.png +0 -0
  131. data/{public → app/assets}/images/wymeditor/skins/refinery/text_align_right.png +0 -0
  132. data/{public → app/assets}/images/wymeditor/skins/refinery/text_bold.png +0 -0
  133. data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_1.png +0 -0
  134. data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_2.png +0 -0
  135. data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_3.png +0 -0
  136. data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_4.png +0 -0
  137. data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_5.png +0 -0
  138. data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_6.png +0 -0
  139. data/{public → app/assets}/images/wymeditor/skins/refinery/text_indent.png +0 -0
  140. data/{public → app/assets}/images/wymeditor/skins/refinery/text_indent_remove.png +0 -0
  141. data/{public → app/assets}/images/wymeditor/skins/refinery/text_italic.png +0 -0
  142. data/{public → app/assets}/images/wymeditor/skins/refinery/text_list_bullets.png +0 -0
  143. data/{public → app/assets}/images/wymeditor/skins/refinery/text_list_numbers.png +0 -0
  144. data/{public → app/assets}/images/wymeditor/skins/refinery/text_paragraph.png +0 -0
  145. data/{public → app/assets}/images/wymeditor/skins/refinery/text_strikethrough.png +0 -0
  146. data/{public → app/assets}/images/wymeditor/skins/refinery/text_subscript.png +0 -0
  147. data/{public → app/assets}/images/wymeditor/skins/refinery/text_superscript.png +0 -0
  148. data/{public → app/assets}/images/wymeditor/skins/refinery/text_underline.png +0 -0
  149. data/{public → app/assets}/images/wymeditor/skins/wymeditor_icon.png +0 -0
  150. data/{public → app/assets}/javascripts/admin.js +1 -2
  151. data/{public → app/assets}/javascripts/application.js +0 -0
  152. data/{public → app/assets}/javascripts/dd_belatedpng.js +0 -0
  153. data/{public → app/assets}/javascripts/jquery/GPL-LICENSE.txt +0 -0
  154. data/{public → app/assets}/javascripts/jquery/MIT-LICENSE.txt +0 -0
  155. data/{public → app/assets}/javascripts/jquery/jquery.corner.js +0 -0
  156. data/{public → app/assets}/javascripts/jquery/jquery.html5-placeholder-shim.js +0 -0
  157. data/{public → app/assets}/javascripts/jquery/jquery.jcarousel.js +0 -0
  158. data/{public → app/assets}/javascripts/jquery/jquery.textTruncate.js +0 -0
  159. data/{public → app/assets}/javascripts/jquery/jquery.timers.js +0 -0
  160. data/app/assets/javascripts/modernizr-min.js +4 -0
  161. data/{public/javascripts/refinery/admin.js → app/assets/javascripts/refinery/admin.js.erb} +121 -209
  162. data/app/assets/javascripts/refinery/ajaxy_pagination.js.coffee +13 -0
  163. data/{public/javascripts/refinery/boot_wym.js → app/assets/javascripts/refinery/boot_wym.js.erb} +8 -8
  164. data/{public → app/assets}/javascripts/refinery/core.js +1 -1
  165. data/app/assets/javascripts/refinery/interface.js.coffee.erb +70 -0
  166. data/app/assets/javascripts/refinery/modal_dialogs.js.erb +142 -0
  167. data/app/assets/javascripts/refinery/nestedsortables.js +356 -0
  168. data/app/assets/javascripts/refinery/refinery.js.erb +20 -0
  169. data/app/assets/javascripts/refinery/serializelist.js +68 -0
  170. data/{public → app/assets}/javascripts/refinery/site_bar.js +0 -0
  171. data/app/assets/javascripts/refinery/sortable_menu.js.coffee +21 -0
  172. data/{public/javascripts/refinery/submenu.js → app/assets/javascripts/refinery/submenu.js.erb} +1 -1
  173. data/app/assets/javascripts/refinery/submit_continue.js.coffee.erb +8 -0
  174. data/app/assets/javascripts/refinery/tree.js +25 -0
  175. data/app/assets/javascripts/refinery/wymeditor.js +37 -0
  176. data/app/assets/javascripts/wymeditor/browsers/ie.js.erb +224 -0
  177. data/app/assets/javascripts/wymeditor/browsers/mozilla.js.erb +293 -0
  178. data/app/assets/javascripts/wymeditor/browsers/opera.js.erb +123 -0
  179. data/app/assets/javascripts/wymeditor/browsers/webkit.js.erb +284 -0
  180. data/app/assets/javascripts/wymeditor/classes.js.erb +1577 -0
  181. data/app/assets/javascripts/wymeditor/functions.js.erb +218 -0
  182. data/{public → app/assets}/javascripts/wymeditor/lang/bg.js +0 -0
  183. data/{public → app/assets}/javascripts/wymeditor/lang/ca.js +0 -0
  184. data/{public → app/assets}/javascripts/wymeditor/lang/cs.js +12 -1
  185. data/{public → app/assets}/javascripts/wymeditor/lang/da.js +0 -0
  186. data/{public → app/assets}/javascripts/wymeditor/lang/de.js +0 -0
  187. data/{public → app/assets}/javascripts/wymeditor/lang/en.js +0 -0
  188. data/{public → app/assets}/javascripts/wymeditor/lang/es.js +0 -0
  189. data/{public → app/assets}/javascripts/wymeditor/lang/fa.js +0 -0
  190. data/{public → app/assets}/javascripts/wymeditor/lang/fi.js +0 -0
  191. data/{public → app/assets}/javascripts/wymeditor/lang/fr.js +13 -1
  192. data/{public → app/assets}/javascripts/wymeditor/lang/he.js +0 -0
  193. data/{public → app/assets}/javascripts/wymeditor/lang/hu.js +0 -0
  194. data/{public → app/assets}/javascripts/wymeditor/lang/it.js +0 -0
  195. data/{public/javascripts/wymeditor/lang/jp.js → app/assets/javascripts/wymeditor/lang/ja.js} +1 -1
  196. data/{public → app/assets}/javascripts/wymeditor/lang/lv.js +0 -0
  197. data/{public → app/assets}/javascripts/wymeditor/lang/nb.js +0 -0
  198. data/{public → app/assets}/javascripts/wymeditor/lang/nl.js +0 -0
  199. data/{public → app/assets}/javascripts/wymeditor/lang/nn.js +0 -0
  200. data/{public → app/assets}/javascripts/wymeditor/lang/pl.js +0 -0
  201. data/app/assets/javascripts/wymeditor/lang/pt-BR.js +58 -0
  202. data/{public → app/assets}/javascripts/wymeditor/lang/pt.js +0 -0
  203. data/{public → app/assets}/javascripts/wymeditor/lang/rs.js +0 -0
  204. data/{public → app/assets}/javascripts/wymeditor/lang/ru.js +14 -3
  205. data/{public → app/assets}/javascripts/wymeditor/lang/sk.js +12 -1
  206. data/{public → app/assets}/javascripts/wymeditor/lang/sl.js +0 -0
  207. data/{public → app/assets}/javascripts/wymeditor/lang/sv.js +0 -0
  208. data/{public → app/assets}/javascripts/wymeditor/lang/tr.js +0 -0
  209. data/{public → app/assets}/javascripts/wymeditor/lang/vi.js +0 -0
  210. data/{public → app/assets}/javascripts/wymeditor/lang/zh_cn.js +0 -0
  211. data/app/assets/javascripts/wymeditor/prototypes.js.erb +1106 -0
  212. data/app/assets/javascripts/wymeditor/setup.js.erb +622 -0
  213. data/{public → app/assets}/javascripts/wymeditor/skins/refinery/skin.js +0 -0
  214. data/app/assets/javascripts/wymeditor/validators.js.erb +776 -0
  215. data/{public/stylesheets/refinery/home.css → app/assets/stylesheets/.gitkeep} +0 -0
  216. data/app/assets/stylesheets/application.css.scss +55 -0
  217. data/{public/stylesheets/refinery/formatting.css → app/assets/stylesheets/formatting.css.scss} +20 -23
  218. data/{public/stylesheets/home.css → app/assets/stylesheets/home.css.scss} +1 -2
  219. data/{public/stylesheets/refinery/refinery.css → app/assets/stylesheets/refinery/refinery.css.scss} +616 -654
  220. data/app/assets/stylesheets/refinery/site_bar.css.scss +92 -0
  221. data/app/assets/stylesheets/refinery/submenu.css.scss +24 -0
  222. data/app/assets/stylesheets/refinery/tooltips.css.scss +34 -0
  223. data/{public/stylesheets/refinery/ui.css → app/assets/stylesheets/refinery/ui.css.scss} +50 -54
  224. data/{public/stylesheets/refinery/theme.css → app/assets/stylesheets/theme.css.scss} +1 -1
  225. data/{public/stylesheets/wymeditor/skins/refinery/skin.css → app/assets/stylesheets/wymeditor/skins/refinery/skin.css.scss} +58 -58
  226. data/{public/stylesheets/wymeditor/skins/refinery/wymiframe.css → app/assets/stylesheets/wymeditor/skins/refinery/wymiframe.css.scss} +29 -29
  227. data/app/controllers/application_controller.rb +0 -1
  228. data/app/controllers/refinery/admin/dialogs_controller.rb +24 -0
  229. data/app/controllers/refinery/admin/refinery_core_controller.rb +14 -0
  230. data/app/controllers/{admin/base_controller.rb → refinery/admin_controller.rb} +2 -3
  231. data/app/controllers/refinery/fast_controller.rb +5 -1
  232. data/app/controllers/refinery/sitemap_controller.rb +20 -0
  233. data/app/helpers/application_helper.rb +1 -1
  234. data/app/helpers/refinery/custom_assets_helper.rb +11 -0
  235. data/app/helpers/refinery/html_truncation_helper.rb +23 -0
  236. data/app/helpers/refinery/image_helper.rb +37 -0
  237. data/app/helpers/refinery/menu_helper.rb +66 -0
  238. data/app/helpers/refinery/meta_helper.rb +52 -0
  239. data/app/helpers/refinery/pagination_helper.rb +14 -0
  240. data/app/helpers/refinery/site_bar_helper.rb +30 -0
  241. data/app/helpers/refinery/tag_helper.rb +20 -0
  242. data/app/helpers/refinery/translation_helper.rb +15 -0
  243. data/app/models/refinery/core/base_model.rb +11 -0
  244. data/app/views/layouts/application.html.erb +9 -9
  245. data/app/views/layouts/refinery/admin.html.erb +23 -0
  246. data/app/views/layouts/refinery/admin_dialog.html.erb +17 -0
  247. data/app/views/layouts/refinery/flash.html.erb +2 -0
  248. data/app/views/refinery/_content_page.html.erb +2 -0
  249. data/app/views/{shared → refinery}/_draft_page_message.html.erb +0 -0
  250. data/app/views/refinery/_footer.html.erb +4 -0
  251. data/app/views/{shared → refinery}/_google_analytics.html.erb +2 -2
  252. data/app/views/refinery/_head.html.erb +18 -0
  253. data/app/views/refinery/_header.html.erb +7 -0
  254. data/app/views/{shared → refinery}/_html_tag.html.erb +0 -0
  255. data/app/views/{shared → refinery}/_ie6check.html.erb +2 -2
  256. data/app/views/{shared → refinery}/_javascripts.html.erb +0 -0
  257. data/app/views/refinery/_menu.html.erb +20 -0
  258. data/app/views/refinery/_menu_branch.html.erb +19 -0
  259. data/app/views/refinery/_message.html.erb +7 -0
  260. data/app/views/{shared → refinery}/_no_script.html.erb +0 -0
  261. data/app/views/{shared → refinery}/_site_bar.html.erb +3 -3
  262. data/app/views/{shared → refinery}/admin/_continue_editing.html.erb +0 -0
  263. data/app/views/refinery/admin/_dialog_success.html.erb +5 -0
  264. data/app/views/{shared → refinery}/admin/_error_messages.html.erb +0 -0
  265. data/app/views/{shared → refinery}/admin/_form_actions.html.erb +11 -15
  266. data/app/views/refinery/admin/_head.html.erb +13 -0
  267. data/app/views/{shared → refinery}/admin/_image_picker.html.erb +8 -7
  268. data/app/views/refinery/admin/_javascripts.html.erb +8 -0
  269. data/app/views/refinery/admin/_make_sortable.html.erb +16 -0
  270. data/app/views/{admin → refinery/admin}/_menu.html.erb +4 -4
  271. data/app/views/{shared → refinery}/admin/_resource_picker.html.erb +14 -23
  272. data/app/views/{shared → refinery}/admin/_search.html.erb +1 -1
  273. data/app/views/{shared → refinery}/admin/_sortable_list.html.erb +0 -0
  274. data/app/views/{shared → refinery}/admin/_tabbed_fields.html.erb +2 -2
  275. data/app/views/{admin → refinery/admin}/dialogs/show.html.erb +0 -0
  276. data/app/views/refinery/sitemap/index.xml.builder +25 -0
  277. data/app/views/{wymiframe.html.erb → refinery/wymiframe.html.erb} +2 -3
  278. data/config/initializers/will_paginate_monkeypatch.rb +21 -0
  279. data/config/locales/bg.yml +24 -29
  280. data/config/locales/cs.yml +20 -25
  281. data/config/locales/da.yml +19 -24
  282. data/config/locales/de.yml +19 -24
  283. data/config/locales/el.yml +19 -24
  284. data/config/locales/en.yml +25 -31
  285. data/config/locales/es.yml +12 -17
  286. data/config/locales/fi.yml +22 -27
  287. data/config/locales/fr.yml +19 -24
  288. data/config/locales/it.yml +19 -40
  289. data/config/locales/{jp.yml → ja.yml} +25 -28
  290. data/config/locales/ko.yml +76 -0
  291. data/config/locales/lt.yml +19 -24
  292. data/config/locales/lv.yml +21 -26
  293. data/config/locales/nb.yml +19 -24
  294. data/config/locales/nl.yml +19 -24
  295. data/config/locales/pl.yml +19 -24
  296. data/config/locales/pt-BR.yml +19 -24
  297. data/config/locales/rs.yml +19 -25
  298. data/config/locales/ru.yml +37 -38
  299. data/config/locales/sk.yml +19 -24
  300. data/config/locales/sl.yml +12 -21
  301. data/config/locales/sv.yml +19 -24
  302. data/config/locales/vi.yml +19 -24
  303. data/config/locales/zh-CN.yml +19 -24
  304. data/config/locales/zh-TW.yml +19 -24
  305. data/config/routes.rb +5 -10
  306. data/lib/generators/refinery/clash_keywords.yml +3 -0
  307. data/lib/generators/refinery/cms/cms_generator.rb +238 -0
  308. data/lib/generators/{templates → refinery/cms/templates}/.gitignore +3 -1
  309. data/lib/generators/refinery/cms/templates/app/decorators/controllers/refinery/.gitkeep +0 -0
  310. data/lib/generators/refinery/cms/templates/app/decorators/models/refinery/.gitkeep +0 -0
  311. data/lib/generators/{templates → refinery/cms/templates}/app/views/sitemap/index.xml.builder +1 -1
  312. data/lib/generators/{templates → refinery/cms/templates}/config/database.yml.mysql +5 -5
  313. data/lib/generators/{templates → refinery/cms/templates}/config/database.yml.postgresql +26 -25
  314. data/lib/generators/{templates → refinery/cms/templates}/config/database.yml.sqlite3 +1 -9
  315. data/lib/generators/refinery/cms/templates/config/initializers/devise.rb +229 -0
  316. data/lib/generators/refinery/core/core_generator.rb +9 -0
  317. data/lib/generators/refinery/core/templates/config/initializers/refinery/core.rb.erb +48 -0
  318. data/lib/generators/refinery/dummy/dummy_generator.rb +86 -0
  319. data/lib/generators/refinery/dummy/templates/rails/Rakefile +7 -0
  320. data/lib/generators/refinery/dummy/templates/rails/application.rb +14 -0
  321. data/lib/generators/refinery/dummy/templates/rails/boot.rb +6 -0
  322. data/lib/generators/refinery/dummy/templates/rails/database.yml +34 -0
  323. data/lib/generators/refinery/dummy/templates/rails/routes.rb +3 -0
  324. data/lib/generators/refinery/engine/USAGE +24 -0
  325. data/lib/generators/refinery/engine/engine_generator.rb +36 -0
  326. data/lib/generators/refinery/engine/templates/Gemfile +69 -0
  327. data/lib/generators/refinery/engine/templates/Guardfile +27 -0
  328. data/lib/generators/refinery/engine/templates/Rakefile +20 -0
  329. data/lib/generators/refinery/engine/templates/app/controllers/refinery/namespace/admin/plural_name_controller.rb +14 -0
  330. data/lib/generators/refinery/engine/templates/app/controllers/refinery/namespace/plural_name_controller.rb +34 -0
  331. data/lib/generators/refinery/engine/templates/app/models/refinery/namespace/singular_name.rb +28 -0
  332. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_actions.html.erb +25 -0
  333. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_form.html.erb +67 -0
  334. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_locale_picker.html.erb +11 -0
  335. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_plural_name.html.erb +2 -0
  336. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_records.html.erb +18 -0
  337. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_singular_name.html.erb +32 -0
  338. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_sortable_list.html.erb +5 -0
  339. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/edit.html.erb +1 -0
  340. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/index.html.erb +7 -0
  341. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/new.html.erb +1 -0
  342. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/plural_name/index.html.erb +11 -0
  343. data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/plural_name/show.html.erb +39 -0
  344. data/lib/generators/refinery/engine/templates/config/locales/en.yml +28 -0
  345. data/lib/generators/refinery/engine/templates/config/locales/es.yml +29 -0
  346. data/lib/generators/refinery/engine/templates/config/locales/fr.yml +28 -0
  347. data/lib/generators/refinery/engine/templates/config/locales/nb.yml +28 -0
  348. data/lib/generators/refinery/engine/templates/config/locales/nl.yml +28 -0
  349. data/lib/generators/refinery/engine/templates/config/routes.rb +19 -0
  350. data/lib/generators/refinery/engine/templates/db/migrate/1_create_namespace_plural_name.rb +39 -0
  351. data/lib/generators/refinery/engine/templates/db/seeds.rb +23 -0
  352. data/lib/generators/refinery/engine/templates/lib/generators/refinery/extension_plural_name_generator.rb +18 -0
  353. data/lib/generators/refinery/engine/templates/lib/refinery/plural_name/engine.rb +30 -0
  354. data/lib/generators/refinery/engine/templates/lib/refinery/plural_name.rb +21 -0
  355. data/lib/generators/refinery/engine/templates/lib/refinerycms-extension_plural_name.rb +1 -0
  356. data/lib/generators/refinery/engine/templates/lib/tasks/refinery/extension_plural_name.rake +13 -0
  357. data/lib/generators/refinery/engine/templates/readme.md +10 -0
  358. data/lib/generators/refinery/engine/templates/refinerycms-extension_plural_name.gemspec +18 -0
  359. data/lib/generators/refinery/engine/templates/spec/models/refinery/namespace/singular_name_spec.rb +20 -0
  360. data/lib/generators/refinery/engine/templates/spec/requests/refinery/namespace/admin/plural_name_spec.rb +200 -0
  361. data/lib/generators/refinery/engine/templates/spec/spec_helper.rb +50 -0
  362. data/lib/generators/refinery/engine/templates/spec/support/factories/refinery/plural_name.rb +7 -0
  363. data/lib/generators/refinery/engine/templates/tasks/rspec.rake +6 -0
  364. data/lib/generators/refinery/engine/templates/tasks/testing.rake +8 -0
  365. data/lib/generators/refinery/form/USAGE +20 -0
  366. data/lib/generators/refinery/form/form_generator.rb +31 -0
  367. data/lib/generators/refinery/form/templates/.gitkeep +0 -0
  368. data/lib/generators/refinery/form/templates/app/controllers/refinery/namespace/admin/plural_name_controller.rb +54 -0
  369. data/lib/generators/refinery/form/templates/app/controllers/refinery/namespace/admin/settings_controller.rb +51 -0
  370. data/lib/generators/refinery/form/templates/app/controllers/refinery/namespace/plural_name_controller.rb +53 -0
  371. data/lib/generators/refinery/form/templates/app/mailers/refinery/namespace/mailer.rb +22 -0
  372. data/lib/generators/refinery/form/templates/app/models/refinery/namespace/setting.rb +34 -0
  373. data/lib/generators/refinery/form/templates/app/models/refinery/namespace/singular_name.rb +46 -0
  374. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/_records.html.erb +23 -0
  375. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/_singular_name.html.erb +25 -0
  376. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/_submenu.html.erb +29 -0
  377. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/index.html.erb +4 -0
  378. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/show.html.erb +52 -0
  379. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/spam.html.erb +26 -0
  380. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/settings/_confirmation_email_form.html.erb +51 -0
  381. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/settings/_notification_recipients_form.html.erb +21 -0
  382. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/settings/edit.html.erb +5 -0
  383. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/mailer/confirmation.html.erb +1 -0
  384. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/mailer/notification.html.erb +17 -0
  385. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/plural_name/new.html.erb +43 -0
  386. data/lib/generators/refinery/form/templates/app/views/refinery/namespace/plural_name/thank_you.html.erb +1 -0
  387. data/lib/generators/refinery/form/templates/config/locales/da.yml +69 -0
  388. data/lib/generators/refinery/form/templates/config/locales/de.yml +78 -0
  389. data/lib/generators/refinery/form/templates/config/locales/en.yml +78 -0
  390. data/lib/generators/refinery/form/templates/config/locales/es.yml +70 -0
  391. data/lib/generators/refinery/form/templates/config/locales/fr.yml +78 -0
  392. data/lib/generators/refinery/form/templates/config/locales/it.yml +68 -0
  393. data/lib/generators/refinery/form/templates/config/locales/lv.yml +77 -0
  394. data/lib/generators/refinery/form/templates/config/locales/nb.yml +78 -0
  395. data/lib/generators/refinery/form/templates/config/locales/nl.yml +77 -0
  396. data/lib/generators/refinery/form/templates/config/locales/pt-BR.yml +78 -0
  397. data/lib/generators/refinery/form/templates/config/locales/ru.yml +80 -0
  398. data/lib/generators/refinery/form/templates/config/locales/sl.yml +69 -0
  399. data/lib/generators/refinery/form/templates/config/locales/zh-CN.yml +4 -0
  400. data/lib/generators/refinery/form/templates/config/routes.rb +26 -0
  401. data/lib/generators/refinery/form/templates/db/migrate/1_create_plural_name.rb +42 -0
  402. data/lib/generators/refinery/form/templates/db/seeds.rb +27 -0
  403. data/lib/generators/refinery/form/templates/lib/generators/refinery/plural_name_generator.rb +20 -0
  404. data/lib/generators/refinery/form/templates/lib/refinery/plural_name/engine.rb +30 -0
  405. data/lib/generators/refinery/form/templates/lib/refinery/plural_name.rb +17 -0
  406. data/lib/generators/refinery/form/templates/lib/refinerycms-plural_name.rb +1 -0
  407. data/lib/generators/refinery/form/templates/refinerycms-plural_name.gemspec +19 -0
  408. data/lib/refinery/activity.rb +75 -18
  409. data/lib/refinery/admin/base_controller.rb +49 -66
  410. data/lib/refinery/application_controller.rb +59 -79
  411. data/lib/refinery/base_presenter.rb +25 -23
  412. data/lib/refinery/catch_all_routes.rb +1 -1
  413. data/lib/refinery/cli.rb +162 -0
  414. data/lib/refinery/core/configuration.rb +57 -0
  415. data/lib/refinery/core/engine.rb +143 -0
  416. data/lib/refinery/core.rb +179 -0
  417. data/lib/refinery/crud.rb +74 -54
  418. data/lib/refinery/engine.rb +56 -12
  419. data/lib/refinery/errors.rb +13 -0
  420. data/lib/refinery/ext/action_view/helpers/form_builder.rb +7 -0
  421. data/lib/refinery/ext/action_view/helpers/form_helper.rb +20 -0
  422. data/lib/refinery/ext/action_view/helpers/form_tag_helper.rb +10 -0
  423. data/lib/refinery/extension_generation.rb +258 -0
  424. data/lib/refinery/menu.rb +0 -19
  425. data/lib/refinery/menu_item.rb +32 -14
  426. data/lib/refinery/plugin.rb +19 -43
  427. data/lib/refinery/plugins.rb +2 -2
  428. data/lib/refinery/version.rb +16 -0
  429. data/lib/refinerycms-core.rb +1 -175
  430. data/lib/tasks/refinery.rake +2 -191
  431. data/lib/tasks/yard.rake +1 -1
  432. data/refinerycms-core.gemspec +23 -422
  433. data/spec/controllers/refinery/admin/refinery_core_controller_spec.rb +20 -0
  434. data/spec/controllers/{fast_controller_spec.rb → refinery/fast_controller_spec.rb} +3 -1
  435. data/spec/controllers/refinery/sitemap_controller_spec.rb +28 -0
  436. data/spec/helpers/refinery/custom_assets_helper_spec.rb +53 -0
  437. data/spec/helpers/refinery/html_truncation_helper_spec.rb +26 -0
  438. data/spec/helpers/refinery/pagination_helper_spec.rb +35 -0
  439. data/spec/helpers/refinery/tag_helper_spec.rb +23 -0
  440. data/spec/helpers/refinery/translation_helper_spec.rb +14 -0
  441. data/spec/lib/generators/refinery/cms/cms_generator_spec.rb +47 -0
  442. data/spec/lib/generators/refinery/core/core_generator_spec.rb +29 -0
  443. data/spec/lib/generators/refinery/engine/engine_generator_spec.rb +84 -0
  444. data/spec/lib/generators/refinery/engine/engine_generator_with_i18n_spec.rb +85 -0
  445. data/spec/lib/generators/refinery/engine/engine_generator_without_frontend_spec.rb +77 -0
  446. data/spec/lib/generators/refinery/form/form_generator_spec.rb +91 -0
  447. data/spec/lib/refinery/activity_spec.rb +38 -0
  448. data/spec/lib/refinery/application_controller_spec.rb +28 -0
  449. data/spec/lib/refinery/core_spec.rb +176 -0
  450. data/spec/lib/refinery/plugin_spec.rb +36 -34
  451. data/spec/lib/refinery/plugins_spec.rb +42 -16
  452. data/spec/requests/refinery/admin/custom_assets_spec.rb +32 -0
  453. data/spec/requests/refinery/admin/dialogs_spec.rb +28 -0
  454. data/spec/requests/refinery/search_spec.rb +71 -0
  455. data/spec/requests/refinery/site_bar_spec.rb +49 -0
  456. data/spec/support/background_selenium_firefox_driver.rb +14 -0
  457. data/spec/support/database_cleaner.rb +15 -0
  458. data/spec/support/fixtures/invalid_engine.rb +6 -0
  459. data/spec/support/fixtures/valid_engine.rb +13 -0
  460. data/spec/support/refinery.rb +14 -0
  461. metadata +626 -439
  462. data/app/controllers/admin/dialogs_controller.rb +0 -23
  463. data/app/controllers/admin/refinery_core_controller.rb +0 -12
  464. data/app/controllers/sitemap_controller.rb +0 -18
  465. data/app/views/admin/_head.html.erb +0 -21
  466. data/app/views/admin/_javascripts.html.erb +0 -33
  467. data/app/views/layouts/admin.html.erb +0 -24
  468. data/app/views/layouts/admin_dialog.html.erb +0 -14
  469. data/app/views/shared/_content_page.html.erb +0 -63
  470. data/app/views/shared/_footer.html.erb +0 -4
  471. data/app/views/shared/_head.html.erb +0 -20
  472. data/app/views/shared/_header.html.erb +0 -7
  473. data/app/views/shared/_menu.html.erb +0 -19
  474. data/app/views/shared/_menu_branch.html.erb +0 -19
  475. data/app/views/shared/_message.html.erb +0 -10
  476. data/app/views/shared/admin/_make_sortable.html.erb +0 -13
  477. data/app/views/welcome.html.erb +0 -17
  478. data/config/locales/lolcat.yml +0 -71
  479. data/doc/included-jquery-ui-packages.jpg +0 -0
  480. data/features/dialogs.feature +0 -20
  481. data/features/search.feature +0 -55
  482. data/features/site_bar.feature +0 -27
  483. data/features/step_definitions/core_steps.rb +0 -59
  484. data/features/support/paths.rb +0 -18
  485. data/features/uploads/beach.jpeg +0 -0
  486. data/features/uploads/refinery_is_awesome.txt +0 -1
  487. data/lib/gemspec.rb +0 -44
  488. data/lib/generators/refinerycms_generator.rb +0 -124
  489. data/lib/generators/templates/autotest/autotest.rb +0 -17
  490. data/lib/generators/templates/autotest/discover.rb +0 -2
  491. data/lib/generators/templates/config/initializers/devise.rb +0 -144
  492. data/lib/generators/templates/db/seeds.rb +0 -5
  493. data/lib/refinery/admin_base_controller.rb +0 -5
  494. data/lib/refinery/application.rb +0 -47
  495. data/lib/refinery/application_helper.rb +0 -19
  496. data/lib/refinery/configuration.rb +0 -29
  497. data/lib/refinery/helpers/form_helper.rb +0 -66
  498. data/lib/refinery/helpers/head_helper.rb +0 -17
  499. data/lib/refinery/helpers/html_truncation_helper.rb +0 -25
  500. data/lib/refinery/helpers/image_helper.rb +0 -42
  501. data/lib/refinery/helpers/menu_helper.rb +0 -98
  502. data/lib/refinery/helpers/meta_helper.rb +0 -78
  503. data/lib/refinery/helpers/pagination_helper.rb +0 -16
  504. data/lib/refinery/helpers/script_helper.rb +0 -36
  505. data/lib/refinery/helpers/site_bar_helper.rb +0 -32
  506. data/lib/refinery/helpers/tag_helper.rb +0 -22
  507. data/lib/refinery/helpers/translation_helper.rb +0 -17
  508. data/lib/tasks/doc.rake +0 -29
  509. data/public/javascripts/i18n-messages.js +0 -2
  510. data/public/javascripts/jquery-min.js +0 -16
  511. data/public/javascripts/jquery-ui-custom-min.js +0 -252
  512. data/public/javascripts/jquery.js +0 -8374
  513. data/public/javascripts/modernizr-min.js +0 -2
  514. data/public/javascripts/rails.js +0 -297
  515. data/public/javascripts/refinery/i18n.js +0 -340
  516. data/public/javascripts/refinery/nestedsortables.js +0 -164
  517. data/public/javascripts/refinery/serializelist.js +0 -66
  518. data/public/javascripts/wymeditor/jquery.refinery.wymeditor.js +0 -5262
  519. data/public/javascripts/wymeditor/lang/pt-BR.js +0 -47
  520. data/public/stylesheets/application.css +0 -4
  521. data/public/stylesheets/formatting.css +0 -4
  522. data/public/stylesheets/refinery/application.css +0 -76
  523. data/public/stylesheets/refinery/site_bar.css +0 -87
  524. data/public/stylesheets/refinery/submenu.css +0 -22
  525. data/public/stylesheets/refinery/tooltips.css +0 -34
  526. data/public/stylesheets/theme.css +0 -4
  527. data/spec/controllers/refinery_core_controller_spec.rb +0 -18
  528. data/spec/controllers/sitemap_controller_spec.rb +0 -27
@@ -0,0 +1,13 @@
1
+ module Refinery
2
+
3
+ # = Refinery Errors
4
+ #
5
+ # Generic Refinery exception class
6
+ class RefineryError < StandardError
7
+ end
8
+
9
+ # Raised when an extension has not been properly defined. See the exception message for further
10
+ # details
11
+ class InvalidEngineError < RefineryError
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ ActionView::Helpers::FormBuilder.module_eval do
2
+
3
+ def required_label(method, options = {})
4
+ @template.required_label(@object_name, method, objectify_options(options))
5
+ end
6
+
7
+ end
@@ -0,0 +1,20 @@
1
+ ActionView::Helpers::FormHelper.module_eval do
2
+
3
+ def required_label(object_name, method, options = {})
4
+ options = {:class => "required"}.merge!(options)
5
+
6
+ label(object_name, method, "#{label_humanize_text(method, options)} *", options)
7
+ end
8
+
9
+
10
+ def label_humanize_text method, options = {}
11
+ object = options[:object]
12
+
13
+ content ||= if object && object.class.respond_to?(:human_attribute_name)
14
+ object.class.human_attribute_name(method)
15
+ end
16
+
17
+ content ||= method.humanize
18
+ end
19
+
20
+ end
@@ -0,0 +1,10 @@
1
+ ActionView::Helpers::FormTagHelper.module_eval do
2
+
3
+ def required_label_tag(name, text = nil, options = {})
4
+ options = {:class => "required"}.merge!(options)
5
+ text ||= "#{name.to_s.humanize} *"
6
+
7
+ label_tag(name, text, options)
8
+ end
9
+
10
+ end
@@ -0,0 +1,258 @@
1
+ module Refinery
2
+ module ExtensionGeneration
3
+
4
+ def self.included(base)
5
+ base.class_eval do
6
+ argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
7
+
8
+ class_option :namespace, :type => :string, :default => nil, :banner => 'NAMESPACE', :required => false
9
+ class_option :extension, :type => :string, :default => nil, :banner => 'ENGINE', :required => false
10
+ class_option :i18n, :type => :array, :default => [], :required => false, :banner => "field field", :desc => 'Indicates generated fields'
11
+
12
+ remove_class_option :skip_namespace
13
+
14
+ def namespacing
15
+ @namespacing ||= if options[:namespace].present?
16
+ # Use exactly what the user requested, not a pluralised version.
17
+ options[:namespace].to_s.camelize
18
+ else
19
+ class_name.pluralize
20
+ end
21
+ end
22
+
23
+ def extension_name
24
+ @extension_name ||= if options[:extension].present?
25
+ # Use exactly what the user requested, not a made up version.
26
+ options[:extension].to_s
27
+ else
28
+ singular_name
29
+ end
30
+ end
31
+
32
+ def extension_class_name
33
+ @extension_class_name ||= extension_name.camelize
34
+ end
35
+
36
+ def extension_plural_class_name
37
+ @extension_plural_class_name ||= if options[:extension].present?
38
+ # Use exactly what the user requested, not a plural version.
39
+ extension_class_name
40
+ else
41
+ extension_class_name.pluralize
42
+ end
43
+ end
44
+
45
+ def extension_plural_name
46
+ @extension_plural_name ||= if options[:extension].present?
47
+ # Use exactly what the user requested, not a plural version.
48
+ extension_name
49
+ else
50
+ extension_name.pluralize
51
+ end
52
+ end
53
+
54
+ def localized?
55
+ localized_attributes.any?
56
+ end
57
+
58
+ def localized_attributes
59
+ @localized_attributes ||= attributes.select{|a| options[:i18n].include?(a.name)}
60
+ end
61
+
62
+ def attributes_for_translation_table
63
+ localized_attributes.inject([]) {|memo, attr| memo << ":#{attr.name} => :#{attr.type}"}.join(', ')
64
+ end
65
+
66
+ protected
67
+
68
+ def append_extension_to_gemfile!
69
+ unless Rails.env.test? || (self.behavior != :revoke && extension_in_gemfile?)
70
+ path = extension_pathname.parent.relative_path_from(gemfile.parent)
71
+ append_file gemfile, "\ngem '#{gem_name}', :path => '#{path}'"
72
+ end
73
+ end
74
+
75
+ def clash_keywords
76
+ @clash_keywords ||= begin
77
+ clash_keywords = []
78
+ unless (clash_file = source_pathname.parent.join('clash_keywords.yml')).file?
79
+ clash_file = source_pathname.parent.parent.join('clash_keywords.yml')
80
+ end
81
+ clash_keywords = YAML.load_file(clash_file) if clash_file.file?
82
+ clash_keywords
83
+ end
84
+ end
85
+
86
+ def destination_pathname
87
+ @destination_pathname ||= Pathname.new(self.destination_root.to_s)
88
+ end
89
+
90
+ def extension_pathname
91
+ destination_pathname.join('vendor', 'extensions', extension_plural_name)
92
+ end
93
+
94
+ def extension_path_for(path, extension)
95
+ path = extension_pathname.join(path.to_s.gsub(%r{#{source_pathname}/?}, '')).to_s
96
+
97
+ path.gsub!('extension_plural_name', extension_plural_name)
98
+ path.gsub!('plural_name', plural_name)
99
+ path.gsub!('singular_name', singular_name)
100
+ path.gsub!('namespace', namespacing.underscore)
101
+
102
+ if options[:namespace].present? || options[:extension].present?
103
+ # Increment the migration file leading number
104
+ # Only relevant for nested or namespaced extensions, where a previous migration exists
105
+ if path =~ %r{/migrate/\d+\w*.rb\z}
106
+ if last_migration = Dir["#{destination_pathname.join(path.split(File::SEPARATOR)[0..-2].join(File::SEPARATOR), '*.rb')}"].sort.last
107
+ path.gsub!(%r{\d+_}) { |m| "#{last_migration.match(%r{migrate/(\d+)_})[1].to_i + 1}_" }
108
+ end
109
+ end
110
+
111
+ # Detect whether this is a special file that needs to get merged not overwritten.
112
+ # This is important only when nesting extensions.
113
+ if extension.present? && File.exist?(path)
114
+ path = if path =~ %r{/locales/.*\.yml$} or path =~ %r{/routes.rb$} or path =~ %r{/#{gem_name}.rb$}
115
+ # put new translations into a tmp directory
116
+ path.split(File::SEPARATOR).insert(-2, "tmp").join(File::SEPARATOR)
117
+ elsif path =~ %r{/readme.md$} or path =~ %r{/#{plural_name}.rb$}
118
+ nil
119
+ else
120
+ path
121
+ end
122
+ elsif extension.present? and path =~ /lib\/#{plural_name}.rb$/
123
+ path = nil
124
+ end
125
+ end
126
+
127
+ path
128
+ end
129
+
130
+ def erase_destination!
131
+ if Pathname.glob(extension_pathname.join('**', '*')).all?(&:directory?)
132
+ say_status :remove, relative_to_original_destination_root(extension_pathname.to_s), true
133
+ FileUtils.rm_rf extension_pathname unless options[:pretend]
134
+ end
135
+ end
136
+
137
+ def evaluate_templates!
138
+ Pathname.glob(source_pathname.join('**', '**')).reject{|f|
139
+ reject_template?(f)
140
+ }.sort.each do |path|
141
+ if (template_path = extension_path_for(path, extension_name)).present?
142
+ template path, template_path
143
+ end
144
+ end
145
+ end
146
+
147
+ def existing_extension?
148
+ options[:extension].present? && extension_pathname.directory? && extension_in_gemfile?
149
+ end
150
+
151
+ def exit_with_message!(message)
152
+ puts ""
153
+ puts message
154
+ puts ""
155
+ exit(1)
156
+ end
157
+
158
+ def extension_in_gemfile?
159
+ gemfile.read.scan(%r{#{gem_name}}).any?
160
+ end
161
+
162
+ def finalize_extension!
163
+ if self.behavior != :revoke and !self.options['pretend']
164
+ puts_instructions!
165
+ else
166
+ erase_destination!
167
+ end
168
+ end
169
+
170
+ def gem_name
171
+ "refinerycms-#{extension_plural_name}"
172
+ end
173
+
174
+ def gemfile
175
+ @gemfile ||= begin
176
+ Bundler.default_gemfile || destination_pathname.join('Gemfile')
177
+ end
178
+ end
179
+
180
+ def merge_locales!
181
+ if existing_extension?
182
+ # go through all of the temporary files and merge what we need into the current files.
183
+ tmp_directories = []
184
+ Dir.glob(source_pathname.join("{config/locales/*.yml,config/routes.rb,lib/refinerycms-extension_plural_name.rb}"), File::FNM_DOTMATCH).sort.each do |path|
185
+ # get the path to the current tmp file.
186
+ new_file_path = destination_pathname.join(extension_path_for(path, extension_name))
187
+ tmp_directories << Pathname.new(new_file_path.to_s.split(File::SEPARATOR)[0..-2].join(File::SEPARATOR)) # save for later
188
+ # get the path to the existing file and perform a deep hash merge.
189
+ current_path = Pathname.new(new_file_path.to_s.split(File::SEPARATOR).reject{|f| f == 'tmp'}.join(File::SEPARATOR))
190
+ new_contents = nil
191
+ if new_file_path.to_s =~ %r{.yml$}
192
+ # merge translation files together.
193
+ new_contents = YAML::load(new_file_path.read).deep_merge(YAML::load(current_path.read)).to_yaml.gsub(%r{^---\n}, '')
194
+ elsif new_file_path.to_s =~ %r{/routes.rb$}
195
+ # append any routes from the new file to the current one.
196
+ routes_file = [(file_parts = current_path.read.to_s.split("\n")).first]
197
+ routes_file += file_parts[1..-2]
198
+ routes_file += new_file_path.read.to_s.split("\n")[1..-2]
199
+ routes_file << file_parts.last
200
+ new_contents = routes_file.join("\n")
201
+ elsif new_file_path.to_s =~ %r{/#{gem_name}.rb$}
202
+ new_contents = current_path.read + new_file_path.read
203
+ end
204
+ # write to current file the merged results.
205
+ current_path.open('w+') { |file| file.puts new_contents } if new_contents
206
+ end
207
+
208
+ tmp_directories.uniq.each{|dir| remove_dir(dir) if dir && dir.exist?}
209
+ end
210
+ end
211
+
212
+ def puts_instructions!
213
+ unless Rails.env.test?
214
+ puts "------------------------"
215
+ puts "Now run:"
216
+ puts "bundle install"
217
+ puts "rails generate refinery:#{extension_plural_name}"
218
+ puts "rake db:migrate"
219
+ puts "rake db:seed"
220
+ puts "------------------------"
221
+ end
222
+ end
223
+
224
+ def reject_file?(file)
225
+ !localized? && file.to_s.include?('locale_picker')
226
+ end
227
+
228
+ def reject_template?(file)
229
+ file.directory? || reject_file?(file)
230
+ end
231
+
232
+ def sanity_check!
233
+ if clash_keywords.member?(singular_name.downcase)
234
+ exit_with_message!("Please choose a different name. The generated code would fail for class '#{singular_name}' as it conflicts with a reserved keyword.")
235
+ end
236
+
237
+ if singular_name == plural_name
238
+ message = if singular_name.singularize == singular_name
239
+ "The extension name you specified will not work as the singular name is equal to the plural name."
240
+ else
241
+ "Please specify the singular name '#{singular_name.singularize}' instead of '#{plural_name}'."
242
+ end
243
+ exit_with_message!(message)
244
+ end
245
+
246
+ if attributes.empty? && self.behavior != :revoke
247
+ exit_with_message!("You must specify a name and at least one field. For help: #{generator_command}")
248
+ end
249
+ end
250
+
251
+ def source_pathname
252
+ @source_pathname ||= Pathname.new(self.class.source_root.to_s)
253
+ end
254
+ end
255
+ end
256
+
257
+ end
258
+ end
data/lib/refinery/menu.rb CHANGED
@@ -44,24 +44,5 @@ module Refinery
44
44
 
45
45
  # The delegation is specified so crazily so that it works on 1.8.x and 1.9.x
46
46
  delegate *((Array.instance_methods - Object.instance_methods) << {:to => :items})
47
-
48
- # Ensure that things still work from how the menu partials worked before.
49
- def live
50
- Refinery.deprecate({
51
- :what => "'live' on a ::Refinery::Menu instance",
52
- :when => '1.1 with no replacement'
53
- })
54
-
55
- self
56
- end
57
-
58
- def in_menu
59
- Refinery.deprecate({
60
- :what => "'in_menu' on a ::Refinery::Menu instance",
61
- :when => '1.1 with no replacement'
62
- })
63
-
64
- self
65
- end
66
47
  end
67
48
  end
@@ -1,18 +1,37 @@
1
1
  module Refinery
2
2
  class MenuItem < HashWithIndifferentAccess
3
3
 
4
- (ATTRIBUTES = [:id, :title, :parent_id, :lft, :rgt, :depth, :url, :menu_id, :menu_match, :type]).each do |attribute|
5
- class_eval %{
6
- def #{attribute}
7
- @#{attribute} ||= self[:#{attribute}]
8
- end
4
+ class << self
5
+ def attributes
6
+ [:title, :parent_id, :lft, :rgt, :depth, :url, :menu_id, :menu_match]
7
+ end
9
8
 
10
- def #{attribute}=(attr)
11
- @#{attribute} = attr
9
+ def apply_attributes!
10
+ attributes.each do |attribute|
11
+ class_eval %{
12
+ def #{attribute}
13
+ @#{attribute} ||= self[:#{attribute}]
14
+ end
15
+ } unless self.respond_to?(attribute)
16
+ class_eval %{
17
+ def #{attribute}=(attr)
18
+ @#{attribute} = attr
19
+ end
20
+ } unless self.respond_to?(:"#{attribute}=")
12
21
  end
13
- }
22
+ end
23
+ end
24
+
25
+ def original_id
26
+ @original_id ||= self[:id]
14
27
  end
15
28
 
29
+ def original_type
30
+ @original_type ||= self[:type]
31
+ end
32
+
33
+ apply_attributes!
34
+
16
35
  def ancestors
17
36
  return @ancestors if @ancestors
18
37
  @ancestors = []
@@ -24,7 +43,7 @@ module Refinery
24
43
 
25
44
  def children
26
45
  @children ||= if has_children?
27
- menu.select{|item| item.type == type && item.parent_id == id}
46
+ menu.select { |item| item.original_type == original_type && item.parent_id == original_id }
28
47
  else
29
48
  []
30
49
  end
@@ -32,7 +51,7 @@ module Refinery
32
51
 
33
52
  def descendants
34
53
  @descendants ||= if has_descendants?
35
- menu.select{|item| item.type == type && item.lft > lft && item.rgt < rgt}
54
+ menu.select{|item| item.original_type == original_type && item.lft > lft && item.rgt < rgt}
36
55
  else
37
56
  []
38
57
  end
@@ -51,11 +70,11 @@ module Refinery
51
70
  def inspect
52
71
  hash = {}
53
72
 
54
- ATTRIBUTES.each do |attribute|
73
+ self.class.attributes.each do |attribute|
55
74
  hash[attribute] = self[attribute]
56
75
  end
57
76
 
58
- hash
77
+ hash.inspect
59
78
  end
60
79
 
61
80
  def menu
@@ -63,13 +82,12 @@ module Refinery
63
82
  end
64
83
 
65
84
  def parent
66
- @parent ||= (menu.detect{|item| item.type == type && item.id == parent_id} if has_parent?)
85
+ @parent ||= (menu.detect{|item| item.original_type == original_type && item.original_id == parent_id} if has_parent?)
67
86
  end
68
87
 
69
88
  def siblings
70
89
  @siblings ||= ((has_parent? ? parent.children : menu.roots) - [self])
71
90
  end
72
91
  alias_method :shown_siblings, :siblings
73
-
74
92
  end
75
93
  end
@@ -4,47 +4,32 @@ module Refinery
4
4
  class Plugin
5
5
 
6
6
  attr_accessor :name, :class_name, :controller, :directory, :url,
7
- :version, :dashboard, :always_allow_access,
8
- :menu_match, :hide_from_menu,
9
- :pathname, :plugin_activity
10
- attr_reader :description
7
+ :version, :dashboard, :always_allow_access, :menu_match,
8
+ :hide_from_menu, :pathname, :plugin_activity
11
9
 
12
10
  def self.register(&block)
13
11
  yield(plugin = self.new)
14
12
 
15
13
  raise "A plugin MUST have a name!: #{plugin.inspect}" if plugin.name.blank?
16
14
 
17
- # Set the root as Rails::Engine.called_from will always be
18
- # vendor/engines/refinery/lib/refinery
19
- new_called_from = begin
20
- # Remove the line number from backtraces making sure we don't leave anything behind
21
- call_stack = caller.map { |p| p.split(':')[0..-2].join(':') }
22
- File.dirname(call_stack.detect { |p| p !~ %r[railties[\w\-\.]*/lib/rails|rack[\w\-\.]*/lib/rack] })
23
- end
24
-
25
- klass = Class.new(Rails::Engine)
26
- klass.class_eval <<-RUBY
27
- def self.called_from; "#{new_called_from}"; end
28
- RUBY
29
- Object.const_set(plugin.class_name.to_sym, klass)
15
+ # Set defaults.
16
+ plugin.menu_match ||= %r{refinery/#{plugin.name}(/.+?)?$}
17
+ plugin.always_allow_access ||= false
18
+ plugin.dashboard ||= false
19
+ plugin.class_name ||= plugin.name.camelize
30
20
 
31
21
  # add the new plugin to the collection of registered plugins
32
22
  ::Refinery::Plugins.registered << plugin
33
23
  end
34
24
 
35
- # Returns the class name of the plugin
36
- def class_name
37
- @class_name ||= name.camelize
38
- end
39
-
40
25
  # Returns the internationalized version of the title
41
26
  def title
42
- ::I18n.translate(['plugins', name, 'title'].join('.'))
27
+ ::I18n.translate(['refinery', 'plugins', name, 'title'].join('.'))
43
28
  end
44
29
 
45
30
  # Returns the internationalized version of the description
46
31
  def description
47
- ::I18n.translate(['plugins', name, 'description'].join('.'))
32
+ ::I18n.translate(['refinery', 'plugins', name, 'description'].join('.'))
48
33
  end
49
34
 
50
35
  # Retrieve information about how to access the latest activities of this plugin.
@@ -57,24 +42,14 @@ module Refinery
57
42
  [activities].flatten.each { |activity| add_activity(activity) }
58
43
  end
59
44
 
60
- # Returns true, if the user doesn't require plugin access
61
- def always_allow_access?
62
- @always_allow_access ||= false
63
- end
64
-
65
- # Special property to indicate that this plugin is the dashboard plugin.
66
- def dashboard?
67
- @dashboard ||= false
45
+ # Given a record's class name, find the related activity object.
46
+ def activity_by_class_name(class_name)
47
+ self.activity.select{ |a| a.class_name == class_name.to_s.camelize }
68
48
  end
69
49
 
70
50
  # Used to highlight the current tab in the admin interface
71
51
  def highlighted?(params)
72
- (params[:controller] =~ self.menu_match) or (self.dashboard? and params[:action] == 'error_404')
73
- end
74
-
75
- # Returns a RegExp that matches, if the current page is part of the plugin.
76
- def menu_match
77
- @menu_match ||= /(admin|refinery)\/#{self.name}$/
52
+ !!(params[:controller].try(:gsub, "admin/", "") =~ menu_match) || (dashboard && params[:action] == 'error_404')
78
53
  end
79
54
 
80
55
  def pathname=(value)
@@ -84,13 +59,14 @@ module Refinery
84
59
 
85
60
  # Returns a hash that can be used to create a url that points to the administration part of the plugin.
86
61
  def url
87
- @url ||= if self.controller.present?
88
- {:controller => "/admin/#{self.controller}"}
89
- elsif self.directory.present?
90
- {:controller => "/admin/#{self.directory.split('/').pop}"}
62
+ @url ||= if controller.present?
63
+ { :controller => "refinery/admin/#{controller}" }
64
+ elsif directory.present?
65
+ { :controller => "refinery/admin/#{directory.split('/').pop}" }
91
66
  else
92
- {:controller => "/admin/#{self.name}"}
67
+ { :controller => "refinery/admin/#{name}" }
93
68
  end
69
+ @url.is_a?(Hash) ? {:only_path => true}.merge(@url) : @url
94
70
  end
95
71
 
96
72
  # Make this protected, so that only Plugin.register can use it.
@@ -3,7 +3,7 @@ module Refinery
3
3
 
4
4
  def find_by_model(model)
5
5
  model = model.constantize if model.is_a? String
6
- detect { |plugin| plugin.activity.any? {|activity| activity.class == model } }
6
+ detect { |plugin| plugin.activity.any? {|activity| activity.klass == model } }
7
7
  end
8
8
 
9
9
  def find_by_name(name)
@@ -37,7 +37,7 @@ module Refinery
37
37
  end
38
38
 
39
39
  def always_allowed
40
- new registered.select(&:always_allow_access?)
40
+ new registered.select(&:always_allow_access)
41
41
  end
42
42
 
43
43
  def registered
@@ -0,0 +1,16 @@
1
+ module Refinery
2
+ class Version
3
+ @major = 2
4
+ @minor = 0
5
+ @tiny = 0
6
+ @build = nil
7
+
8
+ class << self
9
+ attr_reader :major, :minor, :tiny, :build
10
+
11
+ def to_s
12
+ [@major, @minor, @tiny, @build].compact.join('.')
13
+ end
14
+ end
15
+ end
16
+ end