refinerycms-core 0.9.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (305) hide show
  1. data/app/controllers/admin/base_controller.rb +10 -0
  2. data/app/controllers/admin/dialogs_controller.rb +26 -0
  3. data/app/controllers/admin/refinery_core_controller.rb +12 -0
  4. data/app/controllers/application_controller.rb +6 -0
  5. data/app/controllers/refinery/fast_controller.rb +9 -0
  6. data/app/controllers/sitemap_controller.rb +14 -0
  7. data/app/helpers/application_helper.rb +5 -0
  8. data/app/views/admin/_head.html.erb +43 -0
  9. data/app/views/admin/_javascripts.html.erb +32 -0
  10. data/app/views/admin/_menu.html.erb +17 -0
  11. data/app/views/admin/dialogs/show.html.erb +19 -0
  12. data/app/views/layouts/admin.html.erb +24 -0
  13. data/app/views/layouts/admin_dialog.html.erb +14 -0
  14. data/app/views/layouts/application.html.erb +21 -0
  15. data/app/views/shared/_content_page.html.erb +63 -0
  16. data/app/views/shared/_draft_page_message.html.erb +3 -0
  17. data/app/views/shared/_footer.html.erb +4 -0
  18. data/app/views/shared/_google_analytics.html.erb +8 -0
  19. data/app/views/shared/_head.html.erb +42 -0
  20. data/app/views/shared/_header.html.erb +8 -0
  21. data/app/views/shared/_html_tag.html.erb +6 -0
  22. data/app/views/shared/_ie6check.html.erb +63 -0
  23. data/app/views/shared/_javascripts.html.erb +10 -0
  24. data/app/views/shared/_menu.html.erb +30 -0
  25. data/app/views/shared/_menu_branch.html.erb +26 -0
  26. data/app/views/shared/_message.html.erb +10 -0
  27. data/app/views/shared/_no_script.html.erb +9 -0
  28. data/app/views/shared/_site_bar.html.erb +25 -0
  29. data/app/views/shared/admin/_continue_editing.html.erb +3 -0
  30. data/app/views/shared/admin/_error_messages.html.erb +16 -0
  31. data/app/views/shared/admin/_form_actions.html.erb +75 -0
  32. data/app/views/shared/admin/_image_picker.html.erb +60 -0
  33. data/app/views/shared/admin/_make_sortable.html.erb +13 -0
  34. data/app/views/shared/admin/_resource_picker.html.erb +66 -0
  35. data/app/views/shared/admin/_search.html.erb +6 -0
  36. data/app/views/shared/admin/_sortable_list.html.erb +7 -0
  37. data/app/views/shared/admin/_tabbed_fields.html.erb +42 -0
  38. data/app/views/welcome.html.erb +17 -0
  39. data/app/views/wymiframe.html.erb +15 -0
  40. data/config/locales/cs.yml +77 -0
  41. data/config/locales/da.yml +75 -0
  42. data/config/locales/de.yml +75 -0
  43. data/config/locales/el.yml +75 -0
  44. data/config/locales/en.yml +75 -0
  45. data/config/locales/es.yml +68 -0
  46. data/config/locales/fr.yml +72 -0
  47. data/config/locales/it.yml +96 -0
  48. data/config/locales/lolcat.yml +68 -0
  49. data/config/locales/lt.yml +75 -0
  50. data/config/locales/lv.yml +72 -0
  51. data/config/locales/nb.yml +75 -0
  52. data/config/locales/nl.yml +75 -0
  53. data/config/locales/pl.yml +75 -0
  54. data/config/locales/pt-BR.yml +72 -0
  55. data/config/locales/rs.yml +76 -0
  56. data/config/locales/ru.yml +71 -0
  57. data/config/locales/sl.yml +72 -0
  58. data/config/locales/sv.yml +75 -0
  59. data/config/locales/vi.yml +75 -0
  60. data/config/locales/zh-CN.yml +75 -0
  61. data/config/locales/zh-TW.yml +75 -0
  62. data/config/routes.rb +19 -0
  63. data/crud.md +197 -0
  64. data/doc/included-jquery-ui-packages.jpg +0 -0
  65. data/engines.md +179 -0
  66. data/features/search.feature +55 -0
  67. data/features/site_bar.feature +24 -0
  68. data/features/step_definitions/core_steps.rb +61 -0
  69. data/features/support/paths.rb +14 -0
  70. data/features/uploads/beach.jpeg +0 -0
  71. data/features/uploads/refinery_is_awesome.txt +1 -0
  72. data/lib/gemspec.rb +43 -0
  73. data/lib/generators/refinerycms_generator.rb +110 -0
  74. data/lib/generators/templates/.gitignore +83 -0
  75. data/lib/generators/templates/app/views/sitemap/index.xml.builder +22 -0
  76. data/lib/generators/templates/autotest/autotest.rb +17 -0
  77. data/lib/generators/templates/autotest/discover.rb +2 -0
  78. data/lib/generators/templates/config/database.yml.mysql +20 -0
  79. data/lib/generators/templates/config/database.yml.postgresql +57 -0
  80. data/lib/generators/templates/config/database.yml.sqlite3 +26 -0
  81. data/lib/generators/templates/config/i18n-js.yml +6 -0
  82. data/lib/generators/templates/config/initializers/devise.rb +142 -0
  83. data/lib/generators/templates/config/settings.rb +2 -0
  84. data/lib/generators/templates/db/seeds.rb +5 -0
  85. data/lib/refinery/activity.rb +45 -0
  86. data/lib/refinery/admin/base_controller.rb +111 -0
  87. data/lib/refinery/admin_base_controller.rb +5 -0
  88. data/lib/refinery/application.rb +48 -0
  89. data/lib/refinery/application_controller.rb +120 -0
  90. data/lib/refinery/application_helper.rb +19 -0
  91. data/lib/refinery/base_presenter.rb +27 -0
  92. data/lib/refinery/catch_all_routes.rb +11 -0
  93. data/lib/refinery/crud.rb +295 -0
  94. data/lib/refinery/helpers/form_helper.rb +66 -0
  95. data/lib/refinery/helpers/head_helper.rb +17 -0
  96. data/lib/refinery/helpers/html_truncation_helper.rb +25 -0
  97. data/lib/refinery/helpers/image_helper.rb +49 -0
  98. data/lib/refinery/helpers/menu_helper.rb +68 -0
  99. data/lib/refinery/helpers/meta_helper.rb +67 -0
  100. data/lib/refinery/helpers/pagination_helper.rb +16 -0
  101. data/lib/refinery/helpers/script_helper.rb +36 -0
  102. data/lib/refinery/helpers/site_bar_helper.rb +24 -0
  103. data/lib/refinery/helpers/tag_helper.rb +21 -0
  104. data/lib/refinery/helpers/translation_helper.rb +17 -0
  105. data/lib/refinery/link_renderer.rb +55 -0
  106. data/lib/refinery/plugin.rb +106 -0
  107. data/lib/refinery/plugins.rb +75 -0
  108. data/lib/refinerycms-core.rb +156 -0
  109. data/lib/tasks/doc.rake +29 -0
  110. data/lib/tasks/refinery.rake +231 -0
  111. data/lib/tasks/yard.rake +30 -0
  112. data/license.md +21 -0
  113. data/public/404.html +26 -0
  114. data/public/422.html +26 -0
  115. data/public/500.html +26 -0
  116. data/public/favicon.ico +0 -0
  117. data/public/images/refinery/add.png +0 -0
  118. data/public/images/refinery/admin_bg.png +0 -0
  119. data/public/images/refinery/ajax-loader.gif +0 -0
  120. data/public/images/refinery/branch-end.gif +0 -0
  121. data/public/images/refinery/branch-start.gif +0 -0
  122. data/public/images/refinery/branch.gif +0 -0
  123. data/public/images/refinery/carousel-left.png +0 -0
  124. data/public/images/refinery/carousel-right.png +0 -0
  125. data/public/images/refinery/cross.png +0 -0
  126. data/public/images/refinery/dialogLoadingAnimation.gif +0 -0
  127. data/public/images/refinery/header_background.png +0 -0
  128. data/public/images/refinery/hover-gradient.jpg +0 -0
  129. data/public/images/refinery/icons/accept.png +0 -0
  130. data/public/images/refinery/icons/add.png +0 -0
  131. data/public/images/refinery/icons/ajax-loader.gif +0 -0
  132. data/public/images/refinery/icons/application_edit.png +0 -0
  133. data/public/images/refinery/icons/application_go.png +0 -0
  134. data/public/images/refinery/icons/arrow_left.png +0 -0
  135. data/public/images/refinery/icons/arrow_switch.png +0 -0
  136. data/public/images/refinery/icons/arrow_up.png +0 -0
  137. data/public/images/refinery/icons/bin.png +0 -0
  138. data/public/images/refinery/icons/bin_closed.png +0 -0
  139. data/public/images/refinery/icons/cancel.png +0 -0
  140. data/public/images/refinery/icons/cog_add.png +0 -0
  141. data/public/images/refinery/icons/cog_edit.png +0 -0
  142. data/public/images/refinery/icons/cross.png +0 -0
  143. data/public/images/refinery/icons/delete.png +0 -0
  144. data/public/images/refinery/icons/doc.png +0 -0
  145. data/public/images/refinery/icons/down.gif +0 -0
  146. data/public/images/refinery/icons/edit.png +0 -0
  147. data/public/images/refinery/icons/email.png +0 -0
  148. data/public/images/refinery/icons/email_edit.png +0 -0
  149. data/public/images/refinery/icons/email_go.png +0 -0
  150. data/public/images/refinery/icons/email_open.png +0 -0
  151. data/public/images/refinery/icons/eye.png +0 -0
  152. data/public/images/refinery/icons/folder_page_white.png +0 -0
  153. data/public/images/refinery/icons/image_add.png +0 -0
  154. data/public/images/refinery/icons/image_edit.png +0 -0
  155. data/public/images/refinery/icons/img.png +0 -0
  156. data/public/images/refinery/icons/information.png +0 -0
  157. data/public/images/refinery/icons/layout_add.png +0 -0
  158. data/public/images/refinery/icons/layout_edit.png +0 -0
  159. data/public/images/refinery/icons/music.png +0 -0
  160. data/public/images/refinery/icons/page_add.png +0 -0
  161. data/public/images/refinery/icons/page_edit.png +0 -0
  162. data/public/images/refinery/icons/page_white_edit.png +0 -0
  163. data/public/images/refinery/icons/page_white_gear.png +0 -0
  164. data/public/images/refinery/icons/page_white_put.png +0 -0
  165. data/public/images/refinery/icons/pdf.png +0 -0
  166. data/public/images/refinery/icons/ppt.png +0 -0
  167. data/public/images/refinery/icons/star.png +0 -0
  168. data/public/images/refinery/icons/tick.png +0 -0
  169. data/public/images/refinery/icons/up.gif +0 -0
  170. data/public/images/refinery/icons/user_add.png +0 -0
  171. data/public/images/refinery/icons/user_comment.png +0 -0
  172. data/public/images/refinery/icons/user_edit.png +0 -0
  173. data/public/images/refinery/icons/xls.png +0 -0
  174. data/public/images/refinery/icons/zip.png +0 -0
  175. data/public/images/refinery/icons/zoom.png +0 -0
  176. data/public/images/refinery/logo-large.png +0 -0
  177. data/public/images/refinery/logo-medium.png +0 -0
  178. data/public/images/refinery/logo-site-bar.png +0 -0
  179. data/public/images/refinery/logo-small-medium.png +0 -0
  180. data/public/images/refinery/logo-small.png +0 -0
  181. data/public/images/refinery/logo-tiny.png +0 -0
  182. data/public/images/refinery/logo.png +0 -0
  183. data/public/images/refinery/nav-3-background.gif +0 -0
  184. data/public/images/refinery/nav_inactive_background.png +0 -0
  185. data/public/images/refinery/orange_button.png +0 -0
  186. data/public/images/refinery/page_bg.png +0 -0
  187. data/public/images/refinery/resolve_digital_footer_logo.png +0 -0
  188. data/public/images/refinery/text_field_background.png +0 -0
  189. data/public/images/refinery/tooltip-nib.gif +0 -0
  190. data/public/images/refinery/tooltip-nib.png +0 -0
  191. data/public/images/wymeditor/skins/refinery/arrow_redo.png +0 -0
  192. data/public/images/wymeditor/skins/refinery/arrow_undo.png +0 -0
  193. data/public/images/wymeditor/skins/refinery/eye.png +0 -0
  194. data/public/images/wymeditor/skins/refinery/iframe/lbl-blockquote.png +0 -0
  195. data/public/images/wymeditor/skins/refinery/iframe/lbl-h1.png +0 -0
  196. data/public/images/wymeditor/skins/refinery/iframe/lbl-h2.png +0 -0
  197. data/public/images/wymeditor/skins/refinery/iframe/lbl-h3.png +0 -0
  198. data/public/images/wymeditor/skins/refinery/iframe/lbl-h4.png +0 -0
  199. data/public/images/wymeditor/skins/refinery/iframe/lbl-h5.png +0 -0
  200. data/public/images/wymeditor/skins/refinery/iframe/lbl-h6.png +0 -0
  201. data/public/images/wymeditor/skins/refinery/iframe/lbl-p.png +0 -0
  202. data/public/images/wymeditor/skins/refinery/iframe/lbl-pre.png +0 -0
  203. data/public/images/wymeditor/skins/refinery/link_add.png +0 -0
  204. data/public/images/wymeditor/skins/refinery/link_break.png +0 -0
  205. data/public/images/wymeditor/skins/refinery/page_code.png +0 -0
  206. data/public/images/wymeditor/skins/refinery/page_paste.png +0 -0
  207. data/public/images/wymeditor/skins/refinery/photo_add.png +0 -0
  208. data/public/images/wymeditor/skins/refinery/right.png +0 -0
  209. data/public/images/wymeditor/skins/refinery/style.png +0 -0
  210. data/public/images/wymeditor/skins/refinery/table_add.png +0 -0
  211. data/public/images/wymeditor/skins/refinery/text_align_center.png +0 -0
  212. data/public/images/wymeditor/skins/refinery/text_align_justify.png +0 -0
  213. data/public/images/wymeditor/skins/refinery/text_align_left.png +0 -0
  214. data/public/images/wymeditor/skins/refinery/text_align_right.png +0 -0
  215. data/public/images/wymeditor/skins/refinery/text_bold.png +0 -0
  216. data/public/images/wymeditor/skins/refinery/text_heading_1.png +0 -0
  217. data/public/images/wymeditor/skins/refinery/text_heading_2.png +0 -0
  218. data/public/images/wymeditor/skins/refinery/text_heading_3.png +0 -0
  219. data/public/images/wymeditor/skins/refinery/text_heading_4.png +0 -0
  220. data/public/images/wymeditor/skins/refinery/text_heading_5.png +0 -0
  221. data/public/images/wymeditor/skins/refinery/text_heading_6.png +0 -0
  222. data/public/images/wymeditor/skins/refinery/text_indent.png +0 -0
  223. data/public/images/wymeditor/skins/refinery/text_indent_remove.png +0 -0
  224. data/public/images/wymeditor/skins/refinery/text_italic.png +0 -0
  225. data/public/images/wymeditor/skins/refinery/text_list_bullets.png +0 -0
  226. data/public/images/wymeditor/skins/refinery/text_list_numbers.png +0 -0
  227. data/public/images/wymeditor/skins/refinery/text_paragraph.png +0 -0
  228. data/public/images/wymeditor/skins/refinery/text_strikethrough.png +0 -0
  229. data/public/images/wymeditor/skins/refinery/text_subscript.png +0 -0
  230. data/public/images/wymeditor/skins/refinery/text_superscript.png +0 -0
  231. data/public/images/wymeditor/skins/refinery/text_underline.png +0 -0
  232. data/public/images/wymeditor/skins/wymeditor_icon.png +0 -0
  233. data/public/javascripts/admin.js +7 -0
  234. data/public/javascripts/application.js +1 -0
  235. data/public/javascripts/dd_belatedpng.js +13 -0
  236. data/public/javascripts/i18n-messages.js +2 -0
  237. data/public/javascripts/jquery-min.js +16 -0
  238. data/public/javascripts/jquery-ui-custom-min.js +251 -0
  239. data/public/javascripts/jquery.js +8176 -0
  240. data/public/javascripts/jquery/GPL-LICENSE.txt +278 -0
  241. data/public/javascripts/jquery/MIT-LICENSE.txt +20 -0
  242. data/public/javascripts/jquery/jquery.corner.js +345 -0
  243. data/public/javascripts/jquery/jquery.html5-placeholder-shim.js +88 -0
  244. data/public/javascripts/jquery/jquery.jcarousel.js +900 -0
  245. data/public/javascripts/jquery/jquery.textTruncate.js +174 -0
  246. data/public/javascripts/jquery/jquery.timers.js +138 -0
  247. data/public/javascripts/modernizr-min.js +30 -0
  248. data/public/javascripts/rails.js +175 -0
  249. data/public/javascripts/refinery/admin.js +1114 -0
  250. data/public/javascripts/refinery/boot_wym.js +285 -0
  251. data/public/javascripts/refinery/core.js +18 -0
  252. data/public/javascripts/refinery/i18n.js +340 -0
  253. data/public/javascripts/refinery/nestedsortables.js +164 -0
  254. data/public/javascripts/refinery/serializelist.js +66 -0
  255. data/public/javascripts/refinery/site_bar.js +16 -0
  256. data/public/javascripts/refinery/submenu.js +49 -0
  257. data/public/javascripts/wymeditor/jquery.refinery.wymeditor.js +5156 -0
  258. data/public/javascripts/wymeditor/lang/ca.js +45 -0
  259. data/public/javascripts/wymeditor/lang/cs.js +45 -0
  260. data/public/javascripts/wymeditor/lang/da.js +48 -0
  261. data/public/javascripts/wymeditor/lang/de.js +45 -0
  262. data/public/javascripts/wymeditor/lang/en.js +47 -0
  263. data/public/javascripts/wymeditor/lang/es.js +48 -0
  264. data/public/javascripts/wymeditor/lang/fa.js +46 -0
  265. data/public/javascripts/wymeditor/lang/fr.js +45 -0
  266. data/public/javascripts/wymeditor/lang/he.js +45 -0
  267. data/public/javascripts/wymeditor/lang/hu.js +45 -0
  268. data/public/javascripts/wymeditor/lang/it.js +48 -0
  269. data/public/javascripts/wymeditor/lang/lv.js +47 -0
  270. data/public/javascripts/wymeditor/lang/nb.js +48 -0
  271. data/public/javascripts/wymeditor/lang/nl.js +47 -0
  272. data/public/javascripts/wymeditor/lang/nn.js +45 -0
  273. data/public/javascripts/wymeditor/lang/pl.js +45 -0
  274. data/public/javascripts/wymeditor/lang/pt-BR.js +47 -0
  275. data/public/javascripts/wymeditor/lang/pt.js +45 -0
  276. data/public/javascripts/wymeditor/lang/rs.js +47 -0
  277. data/public/javascripts/wymeditor/lang/ru.js +45 -0
  278. data/public/javascripts/wymeditor/lang/sl.js +47 -0
  279. data/public/javascripts/wymeditor/lang/sv.js +45 -0
  280. data/public/javascripts/wymeditor/lang/tr.js +45 -0
  281. data/public/javascripts/wymeditor/lang/vi.js +47 -0
  282. data/public/javascripts/wymeditor/lang/zh_cn.js +47 -0
  283. data/public/javascripts/wymeditor/skins/refinery/skin.js +48 -0
  284. data/public/robots.txt +3 -0
  285. data/public/stylesheets/application.css +4 -0
  286. data/public/stylesheets/formatting.css +4 -0
  287. data/public/stylesheets/home.css +4 -0
  288. data/public/stylesheets/refinery/application.css +72 -0
  289. data/public/stylesheets/refinery/formatting.css +57 -0
  290. data/public/stylesheets/refinery/home.css +0 -0
  291. data/public/stylesheets/refinery/refinery.css +1579 -0
  292. data/public/stylesheets/refinery/site_bar.css +87 -0
  293. data/public/stylesheets/refinery/submenu.css +22 -0
  294. data/public/stylesheets/refinery/theme.css +36 -0
  295. data/public/stylesheets/refinery/tooltips.css +34 -0
  296. data/public/stylesheets/refinery/ui.css +107 -0
  297. data/public/stylesheets/theme.css +4 -0
  298. data/public/stylesheets/wymeditor/skins/refinery/skin.css +528 -0
  299. data/public/stylesheets/wymeditor/skins/refinery/wymiframe.css +96 -0
  300. data/public/wymeditor/GPL-license.txt +278 -0
  301. data/public/wymeditor/MIT-license.txt +20 -0
  302. data/public/wymeditor/README +35 -0
  303. data/refinerycms-core.gemspec +391 -0
  304. data/spec/lib/refinery/plugins_spec.rb +90 -0
  305. metadata +482 -0
@@ -0,0 +1,285 @@
1
+ onOpenDialog = function(dialog) {
2
+ (dialog = $('.ui-dialog')).find('.ui-dialog-titlebar').corner('1px top');
3
+ if(!$.browser.msie){
4
+ dialog.corner('6px');
5
+ }
6
+ if (dialog.height() < $(window).height()) {
7
+ if(iframed()) {
8
+ $(parent.document.body).addClass('hide-overflow');
9
+ } else {
10
+ $(document.body).addClass('hide-overflow');
11
+ }
12
+ }
13
+ };
14
+
15
+ onCloseDialog = function(dialog) {
16
+ if(iframed()) {
17
+ $(parent.document.body).removeClass('hide-overflow');
18
+ } else {
19
+ $(document.body).removeClass('hide-overflow');
20
+ }
21
+ };
22
+
23
+ WYMeditor.onload_functions = [];
24
+ var wymeditor_inputs = [];
25
+ var wymeditors_loaded = 0;
26
+ // supply custom_wymeditor_boot_options if you want to override anything here.
27
+ if (typeof(custom_wymeditor_boot_options) == "undefined") { custom_wymeditor_boot_options = {}; }
28
+ var form_actions =
29
+ "<div id='dialog-form-actions' class='form-actions'>"
30
+ + "<div class='form-actions-left'>"
31
+ + "<input id='submit_button' class='wym_submit button' type='submit' value='{Insert}' class='button' />"
32
+ + "<a href='' class='wym_cancel close_dialog button'>{Cancel}</a>"
33
+ + "</div>"
34
+ + "</div>";
35
+ var wymeditor_boot_options = $.extend({
36
+ skin: 'refinery'
37
+ , basePath: "/"
38
+ , wymPath: "/javascripts/wymeditor/jquery.refinery.wymeditor.js"
39
+ , cssSkinPath: "/stylesheets/wymeditor/skins/"
40
+ , jsSkinPath: "/javascripts/wymeditor/skins/"
41
+ , langPath: "/javascripts/wymeditor/lang/"
42
+ , iframeBasePath: '/'
43
+ , classesItems: [
44
+ {name: 'text-align', rules:['left', 'center', 'right', 'justify'], join: '-'}
45
+ , {name: 'image-align', rules:['left', 'right'], join: '-'}
46
+ , {name: 'font-size', rules:['small', 'normal', 'large'], join: '-'}
47
+ ]
48
+
49
+ , containersItems: [
50
+ {'name': 'h1', 'title':'Heading_1', 'css':'wym_containers_h1'}
51
+ , {'name': 'h2', 'title':'Heading_2', 'css':'wym_containers_h2'}
52
+ , {'name': 'h3', 'title':'Heading_3', 'css':'wym_containers_h3'}
53
+ , {'name': 'p', 'title':'Paragraph', 'css':'wym_containers_p'}
54
+ ]
55
+ , toolsItems: [
56
+ {'name': 'Bold', 'title': 'Bold', 'css': 'wym_tools_strong'}
57
+ ,{'name': 'Italic', 'title': 'Emphasis', 'css': 'wym_tools_emphasis'}
58
+ ,{'name': 'InsertUnorderedList', 'title': 'Unordered_List', 'css': 'wym_tools_unordered_list'}
59
+ ,{'name': 'InsertOrderedList', 'title': 'Ordered_List', 'css': 'wym_tools_ordered_list'}
60
+ /*,{'name': 'Indent', 'title': 'Indent', 'css': 'wym_tools_indent'}
61
+ ,{'name': 'Outdent', 'title': 'Outdent', 'css': 'wym_tools_outdent'}
62
+ ,{'name': 'Undo', 'title': 'Undo', 'css': 'wym_tools_undo'}
63
+ ,{'name': 'Redo', 'title': 'Redo', 'css': 'wym_tools_redo'}*/
64
+ ,{'name': 'CreateLink', 'title': 'Link', 'css': 'wym_tools_link'}
65
+ ,{'name': 'Unlink', 'title': 'Unlink', 'css': 'wym_tools_unlink'}
66
+ ,{'name': 'InsertImage', 'title': 'Image', 'css': 'wym_tools_image'}
67
+ ,{'name': 'InsertTable', 'title': 'Table', 'css': 'wym_tools_table'}
68
+ //,{'name': 'Paste', 'title': 'Paste_From_Word', 'css': 'wym_tools_paste'}
69
+ ,{'name': 'ToggleHtml', 'title': 'HTML', 'css': 'wym_tools_html'}
70
+ ]
71
+
72
+ ,toolsHtml: "<ul class='wym_tools wym_section wym_buttons'>" + WYMeditor.TOOLS_ITEMS + WYMeditor.CLASSES + "</ul>"
73
+
74
+ ,toolsItemHtml:
75
+ "<li class='" + WYMeditor.TOOL_CLASS + "'>"
76
+ + "<a href='#' name='" + WYMeditor.TOOL_NAME + "' title='" + WYMeditor.TOOL_TITLE + "' class='no-tooltip'>"
77
+ + WYMeditor.TOOL_TITLE
78
+ + "</a>"
79
+ + "</li>"
80
+
81
+ , classesHtml: "<li class='wym_tools_class'>"
82
+ + "<a href='#' name='" + WYMeditor.APPLY_CLASS + "' title='"+ WYMeditor.APPLY_CLASS +"' class='no-tooltip'>"
83
+ + WYMeditor.APPLY_CLASS
84
+ + "</a>"
85
+ + "<ul class='wym_classes wym_classes_hidden'>" + WYMeditor.CLASSES_ITEMS + "</ul>"
86
+ + "</li>"
87
+
88
+ , classesItemHtml: "<li><a href='#' name='"+ WYMeditor.CLASS_NAME + "'>"+ WYMeditor.CLASS_TITLE+ "</a></li>"
89
+ , classesItemHtmlMultiple: "<li class='wym_tools_class_multiple_rules'>"
90
+ + "<span>" + WYMeditor.CLASS_TITLE + "</span>"
91
+ + "<ul>{classesItemHtml}</ul>"
92
+ +"</li>"
93
+
94
+ , containersHtml: "<ul class='wym_containers wym_section'>" + WYMeditor.CONTAINERS_ITEMS + "</ul>"
95
+
96
+ , containersItemHtml:
97
+ "<li class='" + WYMeditor.CONTAINER_CLASS + "'>"
98
+ + "<a href='#' name='" + WYMeditor.CONTAINER_NAME + "' title='" + WYMeditor.CONTAINER_TITLE + "' class='no-tooltip'></a>"
99
+ + "</li>"
100
+
101
+ , boxHtml:
102
+ "<div class='wym_box'>"
103
+ + "<div class='wym_area_top clearfix'>"
104
+ + WYMeditor.CONTAINERS
105
+ + WYMeditor.TOOLS
106
+ + "</div>"
107
+ + "<div class='wym_area_main'>"
108
+ + WYMeditor.HTML
109
+ + WYMeditor.IFRAME
110
+ + WYMeditor.STATUS
111
+ + "</div>"
112
+ + "</div>"
113
+
114
+ , iframeHtml:
115
+ "<div class='wym_iframe wym_section'>"
116
+ + "<iframe id='WYMeditor_" + WYMeditor.INDEX + "'" + ($.browser.msie ? " src='" + WYMeditor.IFRAME_BASE_PATH + "wymiframe'" : "")
117
+ + " frameborder='0' marginheight='0' marginwidth='0' border='0'"
118
+ + " onload='this.contentWindow.parent.WYMeditor.INSTANCES[" + WYMeditor.INDEX + "].loadIframe(this);'></iframe>"
119
+ +"</div>"
120
+
121
+ , dialogImageHtml: ""
122
+
123
+ , dialogLinkHtml: ""
124
+
125
+ , dialogTableHtml:
126
+ "<div class='wym_dialog wym_dialog_table'>"
127
+ + "<form>"
128
+ + "<input type='hidden' id='wym_dialog_type' class='wym_dialog_type' value='"+ WYMeditor.DIALOG_TABLE + "' />"
129
+ + "<div class='field'>"
130
+ + "<label for='wym_caption'>{Caption}</label>"
131
+ + "<input type='text' id='wym_caption' class='wym_caption' value='' size='40' />"
132
+ + "</div>"
133
+ + "<div class='field'>"
134
+ + "<label for='wym_rows'>{Number_Of_Rows}</label>"
135
+ + "<input type='text' id='wym_rows' class='wym_rows' value='3' size='3' />"
136
+ + "</div>"
137
+ + "<div class='field'>"
138
+ + "<label for='wym_cols'>{Number_Of_Cols}</label>"
139
+ + "<input type='text' id='wym_cols' class='wym_cols' value='2' size='3' />"
140
+ + "</div>"
141
+ + form_actions
142
+ + "</form>"
143
+ + "</div>"
144
+
145
+ , dialogPasteHtml:
146
+ "<div class='wym_dialog wym_dialog_paste'>"
147
+ + "<form>"
148
+ + "<input type='hidden' id='wym_dialog_type' class='wym_dialog_type' value='" + WYMeditor.DIALOG_PASTE + "' />"
149
+ + "<div class='field'>"
150
+ + "<textarea class='wym_text' rows='10' cols='50'></textarea>"
151
+ + "</div>"
152
+ + form_actions
153
+ + "</form>"
154
+ + "</div>"
155
+
156
+ , dialogPath: "/refinery/dialogs/"
157
+ , dialogFeatures: {
158
+ width: 866
159
+ , height: 455
160
+ , modal: true
161
+ , draggable: true
162
+ , resizable: false
163
+ , autoOpen: true
164
+ , open: onOpenDialog
165
+ , close: onCloseDialog
166
+ }
167
+ , dialogInlineFeatures: {
168
+ width: 600
169
+ , height: 485
170
+ , modal: true
171
+ , draggable: true
172
+ , resizable: false
173
+ , autoOpen: true
174
+ , open: onOpenDialog
175
+ , close: onCloseDialog
176
+ }
177
+
178
+ , dialogId: 'editor_dialog'
179
+
180
+ , dialogHtml:
181
+ "<!DOCTYPE html>"
182
+ + "<html dir='" + WYMeditor.DIRECTION + "'>"
183
+ + "<head>"
184
+ + "<link rel='stylesheet' type='text/css' media='screen' href='" + WYMeditor.CSS_PATH + "' />"
185
+ + "<title>" + WYMeditor.DIALOG_TITLE + "</title>"
186
+ + "<script type='text/javascript' src='" + WYMeditor.JQUERY_PATH + "'></script>"
187
+ + "<script type='text/javascript' src='" + WYMeditor.WYM_PATH + "'></script>"
188
+ + "</head>"
189
+ + "<body>"
190
+ + "<div id='page'>" + WYMeditor.DIALOG_BODY + "</div>"
191
+ + "</body>"
192
+ + "</html>"
193
+ , postInit: function(wym)
194
+ {
195
+ // register loaded
196
+ wymeditors_loaded += 1;
197
+
198
+ // fire loaded if all editors loaded
199
+ if(WYMeditor.INSTANCES.length == wymeditors_loaded){
200
+ $('.wym_loading_overlay').remove();
201
+
202
+ // load any functions that have been registered to happen onload.
203
+ // these will have to be registered BEFORE postInit is fired (which is fairly quickly).
204
+ for(i=0; i < WYMeditor.onload_functions.length; i++) {
205
+ WYMeditor.onload_functions[i]();
206
+ }
207
+ }
208
+
209
+ $(wym._iframe).contents().find('body').addClass('wym_iframe_body');
210
+
211
+ $('.field.hide-overflow').removeClass('hide-overflow').css('height', 'auto');
212
+ }
213
+ , postInitDialog: function(wym) {
214
+ if($.browser.msie) {
215
+ ($the_ui_dialog = $('.ui-dialog')).css('height',
216
+ $the_ui_dialog.find('iframe').height()
217
+ + $the_ui_dialog.find('iframe').contents().find('.form-actions').height()
218
+ - 12
219
+ );
220
+ }
221
+ }
222
+ , lang: (typeof(I18n.locale) != "undefined" ? I18n.locale : 'en')
223
+ }, custom_wymeditor_boot_options);
224
+
225
+ WYMeditor.editor.prototype.loadIframe = function(iframe) {
226
+ var wym = this;
227
+
228
+ // Internet explorer doesn't like this (which versions??)
229
+ var doc = (iframe.contentDocument || iframe.contentWindow);
230
+ if(doc.document) {
231
+ doc = doc.document;
232
+ }
233
+ if (!$.browser.msie) {
234
+ doc.open('text/html', 'replace');
235
+ html = "<!DOCTYPE html>\
236
+ <html>\
237
+ <head>\
238
+ <title>WYMeditor</title>\
239
+ <meta charset='" + $('meta[charset]').attr('charset') + "' />\
240
+ <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1' />\
241
+ </head>\
242
+ <body class='wym_iframe'>\
243
+ </body>\
244
+ </html>";
245
+ doc.write(html);
246
+ doc.close();
247
+
248
+ var doc_head = doc.head || $(doc).find('head').get(0);
249
+ $.each(["wymeditor/skins/refinery/wymiframe", "formatting", "refinery/theme", "theme"], function(i, href) {
250
+ $("<link href='/stylesheets/" + href + ".css?"+Math.random().toString().split('.')[1]+"' media='all' rel='stylesheet' />").appendTo(doc_head);
251
+ });
252
+ }
253
+ if ((id_of_editor = wym._element.parent().attr('id')) != null) {
254
+ $(doc.body).addClass(id_of_editor);
255
+ }
256
+
257
+ wym.initIframe(iframe);
258
+ };
259
+
260
+ WYMeditor.init = function() {
261
+ wymeditor_inputs = $('.wymeditor');
262
+ wymeditor_inputs = wymeditor_inputs.filter(function(index) {
263
+ for (i=0; i < WYMeditor.INSTANCES.length; i++) {
264
+ if (WYMeditor.INSTANCES[i]._element.attr('id') == $(this).attr('id')) {
265
+ return false;
266
+ }
267
+ }
268
+
269
+ return true;
270
+ });
271
+
272
+ wymeditor_inputs.each(function(input) {
273
+ if ((containing_field = $(this).parents('.field')).length > 0 && containing_field.get(0).style.height === '') {
274
+ containing_field.addClass('hide-overflow')
275
+ .css('height', $(this).outerHeight() - containing_field.offset().top + $(this).offset().top + 45);
276
+ }
277
+ $(this).hide();
278
+ });
279
+
280
+ wymeditor_inputs.wymeditor(wymeditor_boot_options);
281
+ };
282
+
283
+ $(function(){
284
+ WYMeditor.init();
285
+ });
@@ -0,0 +1,18 @@
1
+ $(document).ready(function(){
2
+ // focus first field in an admin form.
3
+ $('form input[type=text]:first').focus();
4
+
5
+ init_flash_messages();
6
+ });
7
+
8
+ init_flash_messages = function(){
9
+ $('#flash').css({
10
+ 'opacity': 0
11
+ , 'visibility':'visible'
12
+ }).animate({'opacity': '1'}, 550);
13
+ $('#flash_close').click(function(e) {
14
+ $('#flash').animate({'opacity': 0, 'visibility': 'toggle'}, 330);
15
+ e.preventDefault();
16
+ });
17
+ $('#flash.flash_message').prependTo('#records');
18
+ };
@@ -0,0 +1,340 @@
1
+ // Instantiate the object
2
+ var I18n = I18n || {};
3
+
4
+ // Set default locale to english
5
+ I18n.defaultLocale = "en";
6
+
7
+ // Set current locale to null
8
+ I18n.locale = I18n.locale || null;
9
+
10
+ I18n.lookup = function(scope, options) {
11
+ var translations = this.prepareOptions(I18n.translations);
12
+ var messages = translations[I18n.currentLocale()];
13
+ options = this.prepareOptions(options);
14
+
15
+ if (!messages) {
16
+ return;
17
+ }
18
+
19
+ if (typeof(scope) == "object") {
20
+ scope = scope.join(".");
21
+ }
22
+
23
+ if (options.scope) {
24
+ scope = options.scope.toString() + "." + scope;
25
+ }
26
+
27
+ scope = scope.split(".");
28
+
29
+ while (scope.length > 0) {
30
+ var currentScope = scope.shift();
31
+ messages = messages[currentScope];
32
+
33
+ if (!messages) {
34
+ break;
35
+ }
36
+ }
37
+
38
+ if (!messages && options.defaultValue != null && options.defaultValue != undefined) {
39
+ messages = options.defaultValue;
40
+ }
41
+
42
+ return messages;
43
+ };
44
+
45
+ // Merge serveral hash options, checking if value is set before
46
+ // overwriting any value. The precedence is from left to right.
47
+ //
48
+ // I18n.prepareOptions({name: "John Doe"}, {name: "Mary Doe", role: "user"});
49
+ // #=> {name: "John Doe", role: "user"}
50
+ //
51
+ I18n.prepareOptions = function() {
52
+ var options = {};
53
+ var opts;
54
+ var count = arguments.length;
55
+
56
+ for (var i = 0; i < count; i++) {
57
+ opts = arguments[i];
58
+
59
+ if (!opts) {
60
+ continue;
61
+ }
62
+
63
+ for (var key in opts) {
64
+ if (options[key] == undefined || options[key] == null) {
65
+ options[key] = opts[key];
66
+ }
67
+ }
68
+ }
69
+
70
+ return options;
71
+ };
72
+
73
+ I18n.interpolate = function(message, options) {
74
+ options = options || {};
75
+ var regex = /\{\{(.*?)\}\}/gm;
76
+
77
+ var matches = message.match(regex);
78
+
79
+ if (!matches) {
80
+ return message;
81
+ }
82
+
83
+ var placeholder, value, name;
84
+
85
+ for (var i = 0; placeholder = matches[i]; i++) {
86
+ name = placeholder.replace(/\{\{(.*?)\}\}/gm, "$1");
87
+
88
+ value = options[name];
89
+
90
+ if (options[name] == null || options[name] == undefined) {
91
+ value = "[missing " + placeholder + " value]";
92
+ }
93
+
94
+ regex = new RegExp(placeholder.replace(/\{/gm, "\\{").replace(/\}/gm, "\\}"));
95
+
96
+ message = message.replace(regex, value);
97
+ }
98
+
99
+ return message;
100
+ };
101
+
102
+ I18n.translate = function(scope, options) {
103
+ options = this.prepareOptions(options);
104
+ var translation = this.lookup(scope, options);
105
+
106
+ try {
107
+ if (typeof(translation) == "object") {
108
+ if (typeof(options.count) == "number") {
109
+ return this.pluralize(options.count, scope, options);
110
+ } else {
111
+ return translation;
112
+ }
113
+ } else {
114
+ return this.interpolate(translation, options);
115
+ }
116
+ } catch(err) {
117
+ return this.missingTranslation(scope);
118
+ }
119
+ };
120
+
121
+ I18n.localize = function(scope, value) {
122
+ switch (scope) {
123
+ case "currency":
124
+ return this.toCurrency(value);
125
+ case "number":
126
+ scope = this.lookup("number.format");
127
+ return this.toNumber(value, scope);
128
+ default:
129
+ if (scope.match(/^(date|time)/)) {
130
+ return this.toTime(scope, value);
131
+ } else {
132
+ return value.toString();
133
+ }
134
+ }
135
+ };
136
+
137
+ I18n.parseDate = function(d) {
138
+ var matches, date;
139
+ var year, month, day, hour, min, sec = null;
140
+
141
+ if (matches = d.toString().match(/(\d{4})-(\d{2})-(\d{2})(?:[ |T](\d{2}):(\d{2}):(\d{2}))?(Z)?/)) {
142
+ // date/time strings: yyyy-mm-dd hh:mm:ss or yyyy-mm-dd or yyyy-mm-ddThh:mm:ssZ
143
+ for (var i = 1; i <= 6; i++) {
144
+ matches[i] = matches[i] == undefined? 0 : parseInt(matches[i], 10);
145
+ }
146
+
147
+ // month starts on 0
148
+ matches[2] = matches[2] - 1;
149
+
150
+ if (matches[7]) {
151
+ date = new Date(Date.UTC(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6]));
152
+ } else if (!isNaN(matches[4])) {
153
+ date = new Date(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6]);
154
+ } else {
155
+ date = new Date(matches[1], matches[2], matches[3]);
156
+ }
157
+ } else if (typeof(d) == "number") {
158
+ // UNIX timestamp
159
+ date = new Date();
160
+ date.setTime(d);
161
+ } else {
162
+ // an arbitrary javascript string
163
+ date = new Date();
164
+ date.setTime(Date.parse(d));
165
+ }
166
+
167
+ return date;
168
+ };
169
+
170
+ I18n.toTime = function(scope, d) {
171
+ var date = this.parseDate(d);
172
+ var format = this.lookup(scope);
173
+
174
+ if (date.toString().match(/invalid/i)) {
175
+ return date.toString();
176
+ }
177
+
178
+ if (!format) {
179
+ return date.toString();
180
+ }
181
+
182
+ return this.strftime(date, format);
183
+ };
184
+
185
+ I18n.strftime = function(date, format) {
186
+ var options = this.lookup("date");
187
+
188
+ if (!options) {
189
+ return date.toString();
190
+ }
191
+
192
+ var weekDay = date.getDay();
193
+ var day = date.getDate();
194
+ var year = date.getFullYear();
195
+ var month = date.getMonth() + 1;
196
+ var hour = date.getHours();
197
+ var hour12 = hour;
198
+ var meridian = hour > 12? "PM" : "AM";
199
+ var secs = date.getSeconds();
200
+ var mins = date.getMinutes();
201
+ var offset = date.getTimezoneOffset();
202
+ var absOffsetHours = Math.floor(Math.abs(offset / 60));
203
+ var absOffsetMinutes = Math.abs(offset) - (absOffsetHours * 60);
204
+ var timezoneoffset = (offset > 0 ? "-" : "+") + (absOffsetHours.toString().length < 2 ? '0' + absOffsetHours : absOffsetHours) + (absOffsetMinutes.toString().length < 2 ? '0' + absOffsetMinutes : absOffsetMinutes);
205
+
206
+ if (hour12 > 12) {
207
+ hour12 = hour12 - 12;
208
+ }
209
+
210
+ var padding = function(n) {
211
+ var s = "0" + n.toString();
212
+ return s.substr(s.length - 2);
213
+ };
214
+
215
+ var f = format;
216
+ f = f.replace("%a", options["abbr_day_names"][weekDay]);
217
+ f = f.replace("%A", options["day_names"][weekDay]);
218
+ f = f.replace("%b", options["abbr_month_names"][month]);
219
+ f = f.replace("%B", options["month_names"][month]);
220
+ f = f.replace("%d", padding(day));
221
+ f = f.replace("%-d", day);
222
+ f = f.replace("%H", padding(hour));
223
+ f = f.replace("%-H", hour);
224
+ f = f.replace("%I", padding(hour12));
225
+ f = f.replace("%-I", hour12);
226
+ f = f.replace("%m", padding(month));
227
+ f = f.replace("%-m", month);
228
+ f = f.replace("%M", padding(mins));
229
+ f = f.replace("%-M", mins);
230
+ f = f.replace("%p", meridian);
231
+ f = f.replace("%S", padding(secs));
232
+ f = f.replace("%-S", secs);
233
+ f = f.replace("%w", weekDay);
234
+ f = f.replace("%y", padding(year));
235
+ f = f.replace("%-y", padding(year).replace(/^0+/, ""));
236
+ f = f.replace("%Y", year);
237
+ f = f.replace("%z", timezoneoffset);
238
+
239
+ return f;
240
+ };
241
+
242
+ I18n.toNumber = function(number, options) {
243
+ options = this.prepareOptions(
244
+ options,
245
+ this.lookup("number.format"),
246
+ {precision: 3, separator: '.', delimiter: ','}
247
+ );
248
+
249
+ var string = number.toFixed(options["precision"]).toString();
250
+ var parts = string.split(".");
251
+
252
+ number = parts[0];
253
+ var precision = parts[1];
254
+
255
+ var n = [];
256
+
257
+ while (number.length > 0) {
258
+ n.unshift(number.substr(Math.max(0, number.length - 3), 3));
259
+ number = number.substr(0, number.length -3);
260
+ }
261
+
262
+ var formattedNumber = n.join(options["delimiter"]);
263
+
264
+ if (options["precision"] > 0) {
265
+ formattedNumber += options["separator"] + parts[1];
266
+ }
267
+
268
+ return formattedNumber;
269
+ };
270
+
271
+ I18n.toCurrency = function(number, options) {
272
+ options = this.prepareOptions(
273
+ options,
274
+ this.lookup("number.currency.format"),
275
+ this.lookup("number.format"),
276
+ { unit: "$", precision: 2, format: "%u%n", delimiter: ",", separator: "." }
277
+ );
278
+
279
+ number = this.toNumber(number, options);
280
+ number = options["format"]
281
+ .replace("%u", options["unit"])
282
+ .replace("%n", number);
283
+
284
+ return number;
285
+ };
286
+
287
+ I18n.toPercentage = function(number, options) {
288
+ options = this.prepareOptions(
289
+ options,
290
+ this.lookup("number.percentage.format"),
291
+ this.lookup("number.format"),
292
+ { precision: 3, separator: ".", delimiter: "" }
293
+ );
294
+
295
+ number = this.toNumber(number, options);
296
+ return number + "%";
297
+ };
298
+
299
+ I18n.pluralize = function(count, scope, options) {
300
+ var translation = this.lookup(scope, options);
301
+
302
+ var message;
303
+ options = options || {};
304
+ options["count"] = count.toString();
305
+
306
+ switch(Math.abs(count)) {
307
+ case 0:
308
+ message = translation["zero"] || translation["none"] || translation["other"] || this.missingTranslation(scope, "zero");
309
+ break;
310
+ case 1:
311
+ message = translation["one"] || this.missingTranslation(scope, "one");
312
+ break;
313
+ default:
314
+ message = translation["other"] || this.missingTranslation(scope, "other");
315
+ }
316
+
317
+ return this.interpolate(message, options);
318
+ };
319
+
320
+ I18n.missingTranslation = function() {
321
+ var message = '[missing "' + this.currentLocale();
322
+ var count = arguments.length;
323
+
324
+ for (var i = 0; i < count; i++) {
325
+ message += "." + arguments[i];
326
+ }
327
+
328
+ message += '" translation]';
329
+
330
+ return message;
331
+ };
332
+
333
+ I18n.currentLocale = function() {
334
+ return (I18n.locale || I18n.defaultLocale);
335
+ };
336
+
337
+ // shortcuts
338
+ I18n.t = I18n.translate;
339
+ I18n.l = I18n.localize;
340
+ I18n.p = I18n.pluralize;