refinerycms 0.9.6.34 → 0.9.7

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 (1069) hide show
  1. data/.gitignore +9 -8
  2. data/Gemfile +50 -0
  3. data/Rakefile +1 -1
  4. data/bin/refinery +22 -11
  5. data/bin/refinery-update-core +45 -27
  6. data/changelog.md +313 -0
  7. data/config.ru +5 -0
  8. data/config/acts_as_indexed_config.rb +7 -0
  9. data/config/amazon_s3.yml.example +3 -3
  10. data/config/application.rb +7 -11
  11. data/config/boot.rb +15 -1
  12. data/config/cucumber.yml +8 -0
  13. data/config/database.yml.example +24 -0
  14. data/config/environments/cucumber.rb +27 -0
  15. data/config/environments/development.rb +0 -1
  16. data/config/environments/production.rb +2 -1
  17. data/config/i18n-js.yml +6 -0
  18. data/config/initializers/field_with_error_fix.rb +3 -0
  19. data/config/preinitializer.rb +20 -18
  20. data/config/routes.rb +8 -3
  21. data/db/migrate/20100125003944_rename_title_to_name_on_user_plugins.rb +9 -0
  22. data/db/migrate/20100125033146_migrate_old_plugin_titles_to_plugin_names_for_users.rb +61 -0
  23. data/db/migrate/20100419001048_change_image_grid_thumbnail_size_and_regenerate.rb +13 -0
  24. data/db/migrate/20100522020225_rename_permissions_for_resources_plugin_to_files.rb +15 -0
  25. data/db/migrate/20100525084518_remove_take_down_for_maintenance_page.rb +19 -0
  26. data/db/migrate/20100525110237_add_small_and_large_thumbnail_sizes.rb +14 -0
  27. data/db/migrate/20100530205942_update_link_url_on_pages_from_inquiries_new_to_contact.rb +31 -0
  28. data/db/migrate/20100606173919_create_page_translations.rb +12 -0
  29. data/db/migrate/20100608062447_add_scoping_to_refinery_settings.rb +9 -0
  30. data/db/migrate/20100623220402_add_restricted_to_refinery_settings.rb +9 -0
  31. data/db/migrate/20100624024501_add_roles.rb +24 -0
  32. data/db/migrate/20100629081543_add_callback_proc_as_string_to_refinery_settings.rb +9 -0
  33. data/db/migrate/20100701053151_remove_superuser_from_users.rb +20 -0
  34. data/db/migrate/20100702022630_add_spam_to_inquiries.rb +11 -0
  35. data/db/schema.rb +28 -10
  36. data/db/seeds.rb +6 -119
  37. data/db/seeds/inquiry_settings.rb +2 -0
  38. data/db/seeds/pages.rb +81 -0
  39. data/db/seeds/refinery_settings.rb +19 -0
  40. data/features/refinery/dashboard.feature +4 -0
  41. data/features/refinery/manage_files.feature +4 -0
  42. data/features/refinery/manage_images.feature +4 -0
  43. data/features/refinery/manage_inquiries.feature +4 -0
  44. data/features/refinery/manage_pages.feature +39 -0
  45. data/features/refinery/manage_refinery_settings.feature +4 -0
  46. data/features/refinery/manage_users.feature +29 -0
  47. data/features/refinery/site_bar.feature +22 -0
  48. data/features/step_definitions/refinery/page_steps.rb +23 -0
  49. data/features/step_definitions/refinery/user_steps.rb +33 -0
  50. data/features/step_definitions/web_steps.rb +271 -0
  51. data/features/support/env.rb +63 -0
  52. data/features/support/factories.rb +19 -0
  53. data/features/support/negative_expectations_helper.rb +57 -0
  54. data/features/support/paths.rb +39 -0
  55. data/lib/gemspec.rb +35 -0
  56. data/lib/refinery/tasks/refinery.rake +0 -30
  57. data/lib/tasks/cucumber.rake +53 -0
  58. data/lib/tasks/rspec.rake +144 -0
  59. data/public/images/refinery/admin_bg.png +0 -0
  60. data/public/images/refinery/cross.png +0 -0
  61. data/public/images/refinery/icons/bin.png +0 -0
  62. data/public/images/refinery/icons/bin_closed.png +0 -0
  63. data/public/images/refinery/icons/doc.png +0 -0
  64. data/public/images/refinery/icons/email.png +0 -0
  65. data/public/images/refinery/icons/flags/ad.png +0 -0
  66. data/public/images/refinery/icons/flags/ae.png +0 -0
  67. data/public/images/refinery/icons/flags/af.png +0 -0
  68. data/public/images/refinery/icons/flags/ag.png +0 -0
  69. data/public/images/refinery/icons/flags/ai.png +0 -0
  70. data/public/images/refinery/icons/flags/al.png +0 -0
  71. data/public/images/refinery/icons/flags/am.png +0 -0
  72. data/public/images/refinery/icons/flags/an.png +0 -0
  73. data/public/images/refinery/icons/flags/ao.png +0 -0
  74. data/public/images/refinery/icons/flags/ar.png +0 -0
  75. data/public/images/refinery/icons/flags/as.png +0 -0
  76. data/public/images/refinery/icons/flags/at.png +0 -0
  77. data/public/images/refinery/icons/flags/au.png +0 -0
  78. data/public/images/refinery/icons/flags/aw.png +0 -0
  79. data/public/images/refinery/icons/flags/ax.png +0 -0
  80. data/public/images/refinery/icons/flags/az.png +0 -0
  81. data/public/images/refinery/icons/flags/ba.png +0 -0
  82. data/public/images/refinery/icons/flags/bb.png +0 -0
  83. data/public/images/refinery/icons/flags/bd.png +0 -0
  84. data/public/images/refinery/icons/flags/be.png +0 -0
  85. data/public/images/refinery/icons/flags/bf.png +0 -0
  86. data/public/images/refinery/icons/flags/bg.png +0 -0
  87. data/public/images/refinery/icons/flags/bh.png +0 -0
  88. data/public/images/refinery/icons/flags/bi.png +0 -0
  89. data/public/images/refinery/icons/flags/bj.png +0 -0
  90. data/public/images/refinery/icons/flags/bm.png +0 -0
  91. data/public/images/refinery/icons/flags/bn.png +0 -0
  92. data/public/images/refinery/icons/flags/bo.png +0 -0
  93. data/public/images/refinery/icons/flags/bs.png +0 -0
  94. data/public/images/refinery/icons/flags/bt.png +0 -0
  95. data/public/images/refinery/icons/flags/bv.png +0 -0
  96. data/public/images/refinery/icons/flags/bw.png +0 -0
  97. data/public/images/refinery/icons/flags/by.png +0 -0
  98. data/public/images/refinery/icons/flags/bz.png +0 -0
  99. data/public/images/refinery/icons/flags/ca.png +0 -0
  100. data/public/images/refinery/icons/flags/catalonia.png +0 -0
  101. data/public/images/refinery/icons/flags/cc.png +0 -0
  102. data/public/images/refinery/icons/flags/cd.png +0 -0
  103. data/public/images/refinery/icons/flags/cf.png +0 -0
  104. data/public/images/refinery/icons/flags/cg.png +0 -0
  105. data/public/images/refinery/icons/flags/ch.png +0 -0
  106. data/public/images/refinery/icons/flags/ci.png +0 -0
  107. data/public/images/refinery/icons/flags/ck.png +0 -0
  108. data/public/images/refinery/icons/flags/cl.png +0 -0
  109. data/public/images/refinery/icons/flags/cm.png +0 -0
  110. data/public/images/refinery/icons/flags/cn.png +0 -0
  111. data/public/images/refinery/icons/flags/co.png +0 -0
  112. data/public/images/refinery/icons/flags/cr.png +0 -0
  113. data/public/images/refinery/icons/flags/cs.png +0 -0
  114. data/public/images/refinery/icons/flags/cu.png +0 -0
  115. data/public/images/refinery/icons/flags/cv.png +0 -0
  116. data/public/images/refinery/icons/flags/cx.png +0 -0
  117. data/public/images/refinery/icons/flags/cy.png +0 -0
  118. data/public/images/refinery/icons/flags/cz.png +0 -0
  119. data/public/images/refinery/icons/flags/da.png +0 -0
  120. data/public/images/refinery/icons/flags/de.png +0 -0
  121. data/public/images/refinery/icons/flags/dj.png +0 -0
  122. data/public/images/refinery/icons/flags/dm.png +0 -0
  123. data/public/images/refinery/icons/flags/do.png +0 -0
  124. data/public/images/refinery/icons/flags/dz.png +0 -0
  125. data/public/images/refinery/icons/flags/ec.png +0 -0
  126. data/public/images/refinery/icons/flags/ee.png +0 -0
  127. data/public/images/refinery/icons/flags/eg.png +0 -0
  128. data/public/images/refinery/icons/flags/eh.png +0 -0
  129. data/public/images/refinery/icons/flags/en.png +0 -0
  130. data/public/images/refinery/icons/flags/england.png +0 -0
  131. data/public/images/refinery/icons/flags/er.png +0 -0
  132. data/public/images/refinery/icons/flags/es.png +0 -0
  133. data/public/images/refinery/icons/flags/et.png +0 -0
  134. data/public/images/refinery/icons/flags/europeanunion.png +0 -0
  135. data/public/images/refinery/icons/flags/fam.png +0 -0
  136. data/public/images/refinery/icons/flags/fi.png +0 -0
  137. data/public/images/refinery/icons/flags/fj.png +0 -0
  138. data/public/images/refinery/icons/flags/fk.png +0 -0
  139. data/public/images/refinery/icons/flags/fm.png +0 -0
  140. data/public/images/refinery/icons/flags/fo.png +0 -0
  141. data/public/images/refinery/icons/flags/fr.png +0 -0
  142. data/public/images/refinery/icons/flags/ga.png +0 -0
  143. data/public/images/refinery/icons/flags/gb.png +0 -0
  144. data/public/images/refinery/icons/flags/gd.png +0 -0
  145. data/public/images/refinery/icons/flags/ge.png +0 -0
  146. data/public/images/refinery/icons/flags/gf.png +0 -0
  147. data/public/images/refinery/icons/flags/gh.png +0 -0
  148. data/public/images/refinery/icons/flags/gi.png +0 -0
  149. data/public/images/refinery/icons/flags/gl.png +0 -0
  150. data/public/images/refinery/icons/flags/gm.png +0 -0
  151. data/public/images/refinery/icons/flags/gn.png +0 -0
  152. data/public/images/refinery/icons/flags/gp.png +0 -0
  153. data/public/images/refinery/icons/flags/gq.png +0 -0
  154. data/public/images/refinery/icons/flags/gr.png +0 -0
  155. data/public/images/refinery/icons/flags/gs.png +0 -0
  156. data/public/images/refinery/icons/flags/gt.png +0 -0
  157. data/public/images/refinery/icons/flags/gu.png +0 -0
  158. data/public/images/refinery/icons/flags/gw.png +0 -0
  159. data/public/images/refinery/icons/flags/gy.png +0 -0
  160. data/public/images/refinery/icons/flags/hk.png +0 -0
  161. data/public/images/refinery/icons/flags/hm.png +0 -0
  162. data/public/images/refinery/icons/flags/hn.png +0 -0
  163. data/public/images/refinery/icons/flags/hr.png +0 -0
  164. data/public/images/refinery/icons/flags/ht.png +0 -0
  165. data/public/images/refinery/icons/flags/hu.png +0 -0
  166. data/public/images/refinery/icons/flags/id.png +0 -0
  167. data/public/images/refinery/icons/flags/ie.png +0 -0
  168. data/public/images/refinery/icons/flags/il.png +0 -0
  169. data/public/images/refinery/icons/flags/in.png +0 -0
  170. data/public/images/refinery/icons/flags/io.png +0 -0
  171. data/public/images/refinery/icons/flags/iq.png +0 -0
  172. data/public/images/refinery/icons/flags/ir.png +0 -0
  173. data/public/images/refinery/icons/flags/is.png +0 -0
  174. data/public/images/refinery/icons/flags/it.png +0 -0
  175. data/public/images/refinery/icons/flags/jm.png +0 -0
  176. data/public/images/refinery/icons/flags/jo.png +0 -0
  177. data/public/images/refinery/icons/flags/jp.png +0 -0
  178. data/public/images/refinery/icons/flags/ke.png +0 -0
  179. data/public/images/refinery/icons/flags/kg.png +0 -0
  180. data/public/images/refinery/icons/flags/kh.png +0 -0
  181. data/public/images/refinery/icons/flags/ki.png +0 -0
  182. data/public/images/refinery/icons/flags/km.png +0 -0
  183. data/public/images/refinery/icons/flags/kn.png +0 -0
  184. data/public/images/refinery/icons/flags/kp.png +0 -0
  185. data/public/images/refinery/icons/flags/kr.png +0 -0
  186. data/public/images/refinery/icons/flags/kw.png +0 -0
  187. data/public/images/refinery/icons/flags/ky.png +0 -0
  188. data/public/images/refinery/icons/flags/kz.png +0 -0
  189. data/public/images/refinery/icons/flags/la.png +0 -0
  190. data/public/images/refinery/icons/flags/lb.png +0 -0
  191. data/public/images/refinery/icons/flags/lc.png +0 -0
  192. data/public/images/refinery/icons/flags/li.png +0 -0
  193. data/public/images/refinery/icons/flags/lk.png +0 -0
  194. data/public/images/refinery/icons/flags/lr.png +0 -0
  195. data/public/images/refinery/icons/flags/ls.png +0 -0
  196. data/public/images/refinery/icons/flags/lt.png +0 -0
  197. data/public/images/refinery/icons/flags/lu.png +0 -0
  198. data/public/images/refinery/icons/flags/lv.png +0 -0
  199. data/public/images/refinery/icons/flags/ly.png +0 -0
  200. data/public/images/refinery/icons/flags/ma.png +0 -0
  201. data/public/images/refinery/icons/flags/mc.png +0 -0
  202. data/public/images/refinery/icons/flags/md.png +0 -0
  203. data/public/images/refinery/icons/flags/me.png +0 -0
  204. data/public/images/refinery/icons/flags/mg.png +0 -0
  205. data/public/images/refinery/icons/flags/mh.png +0 -0
  206. data/public/images/refinery/icons/flags/mk.png +0 -0
  207. data/public/images/refinery/icons/flags/ml.png +0 -0
  208. data/public/images/refinery/icons/flags/mm.png +0 -0
  209. data/public/images/refinery/icons/flags/mn.png +0 -0
  210. data/public/images/refinery/icons/flags/mo.png +0 -0
  211. data/public/images/refinery/icons/flags/mp.png +0 -0
  212. data/public/images/refinery/icons/flags/mq.png +0 -0
  213. data/public/images/refinery/icons/flags/mr.png +0 -0
  214. data/public/images/refinery/icons/flags/ms.png +0 -0
  215. data/public/images/refinery/icons/flags/mt.png +0 -0
  216. data/public/images/refinery/icons/flags/mu.png +0 -0
  217. data/public/images/refinery/icons/flags/mv.png +0 -0
  218. data/public/images/refinery/icons/flags/mw.png +0 -0
  219. data/public/images/refinery/icons/flags/mx.png +0 -0
  220. data/public/images/refinery/icons/flags/my.png +0 -0
  221. data/public/images/refinery/icons/flags/mz.png +0 -0
  222. data/public/images/refinery/icons/flags/na.png +0 -0
  223. data/public/images/refinery/icons/flags/nb.png +0 -0
  224. data/public/images/refinery/icons/flags/nc.png +0 -0
  225. data/public/images/refinery/icons/flags/ne.png +0 -0
  226. data/public/images/refinery/icons/flags/nf.png +0 -0
  227. data/public/images/refinery/icons/flags/ng.png +0 -0
  228. data/public/images/refinery/icons/flags/ni.png +0 -0
  229. data/public/images/refinery/icons/flags/nl.png +0 -0
  230. data/public/images/refinery/icons/flags/nn.png +0 -0
  231. data/public/images/refinery/icons/flags/np.png +0 -0
  232. data/public/images/refinery/icons/flags/nr.png +0 -0
  233. data/public/images/refinery/icons/flags/nu.png +0 -0
  234. data/public/images/refinery/icons/flags/nz.png +0 -0
  235. data/public/images/refinery/icons/flags/om.png +0 -0
  236. data/public/images/refinery/icons/flags/pa.png +0 -0
  237. data/public/images/refinery/icons/flags/pe.png +0 -0
  238. data/public/images/refinery/icons/flags/pf.png +0 -0
  239. data/public/images/refinery/icons/flags/pg.png +0 -0
  240. data/public/images/refinery/icons/flags/ph.png +0 -0
  241. data/public/images/refinery/icons/flags/pk.png +0 -0
  242. data/public/images/refinery/icons/flags/pl.png +0 -0
  243. data/public/images/refinery/icons/flags/pm.png +0 -0
  244. data/public/images/refinery/icons/flags/pn.png +0 -0
  245. data/public/images/refinery/icons/flags/pr.png +0 -0
  246. data/public/images/refinery/icons/flags/ps.png +0 -0
  247. data/public/images/refinery/icons/flags/pt-BR.png +0 -0
  248. data/public/images/refinery/icons/flags/pt.png +0 -0
  249. data/public/images/refinery/icons/flags/pw.png +0 -0
  250. data/public/images/refinery/icons/flags/py.png +0 -0
  251. data/public/images/refinery/icons/flags/qa.png +0 -0
  252. data/public/images/refinery/icons/flags/re.png +0 -0
  253. data/public/images/refinery/icons/flags/ro.png +0 -0
  254. data/public/images/refinery/icons/flags/rs.png +0 -0
  255. data/public/images/refinery/icons/flags/ru.png +0 -0
  256. data/public/images/refinery/icons/flags/rw.png +0 -0
  257. data/public/images/refinery/icons/flags/sa.png +0 -0
  258. data/public/images/refinery/icons/flags/sb.png +0 -0
  259. data/public/images/refinery/icons/flags/sc.png +0 -0
  260. data/public/images/refinery/icons/flags/scotland.png +0 -0
  261. data/public/images/refinery/icons/flags/sd.png +0 -0
  262. data/public/images/refinery/icons/flags/se.png +0 -0
  263. data/public/images/refinery/icons/flags/sg.png +0 -0
  264. data/public/images/refinery/icons/flags/sh.png +0 -0
  265. data/public/images/refinery/icons/flags/si.png +0 -0
  266. data/public/images/refinery/icons/flags/sj.png +0 -0
  267. data/public/images/refinery/icons/flags/sk.png +0 -0
  268. data/public/images/refinery/icons/flags/sl.png +0 -0
  269. data/public/images/refinery/icons/flags/sm.png +0 -0
  270. data/public/images/refinery/icons/flags/sn.png +0 -0
  271. data/public/images/refinery/icons/flags/so.png +0 -0
  272. data/public/images/refinery/icons/flags/sr.png +0 -0
  273. data/public/images/refinery/icons/flags/st.png +0 -0
  274. data/public/images/refinery/icons/flags/sv.png +0 -0
  275. data/public/images/refinery/icons/flags/sy.png +0 -0
  276. data/public/images/refinery/icons/flags/sz.png +0 -0
  277. data/public/images/refinery/icons/flags/tc.png +0 -0
  278. data/public/images/refinery/icons/flags/td.png +0 -0
  279. data/public/images/refinery/icons/flags/tf.png +0 -0
  280. data/public/images/refinery/icons/flags/tg.png +0 -0
  281. data/public/images/refinery/icons/flags/th.png +0 -0
  282. data/public/images/refinery/icons/flags/tj.png +0 -0
  283. data/public/images/refinery/icons/flags/tk.png +0 -0
  284. data/public/images/refinery/icons/flags/tl.png +0 -0
  285. data/public/images/refinery/icons/flags/tm.png +0 -0
  286. data/public/images/refinery/icons/flags/tn.png +0 -0
  287. data/public/images/refinery/icons/flags/to.png +0 -0
  288. data/public/images/refinery/icons/flags/tr.png +0 -0
  289. data/public/images/refinery/icons/flags/tt.png +0 -0
  290. data/public/images/refinery/icons/flags/tv.png +0 -0
  291. data/public/images/refinery/icons/flags/tw.png +0 -0
  292. data/public/images/refinery/icons/flags/tz.png +0 -0
  293. data/public/images/refinery/icons/flags/ua.png +0 -0
  294. data/public/images/refinery/icons/flags/ug.png +0 -0
  295. data/public/images/refinery/icons/flags/um.png +0 -0
  296. data/public/images/refinery/icons/flags/us.png +0 -0
  297. data/public/images/refinery/icons/flags/uy.png +0 -0
  298. data/public/images/refinery/icons/flags/uz.png +0 -0
  299. data/public/images/refinery/icons/flags/va.png +0 -0
  300. data/public/images/refinery/icons/flags/vc.png +0 -0
  301. data/public/images/refinery/icons/flags/ve.png +0 -0
  302. data/public/images/refinery/icons/flags/vg.png +0 -0
  303. data/public/images/refinery/icons/flags/vi.png +0 -0
  304. data/public/images/refinery/icons/flags/vn.png +0 -0
  305. data/public/images/refinery/icons/flags/vu.png +0 -0
  306. data/public/images/refinery/icons/flags/wales.png +0 -0
  307. data/public/images/refinery/icons/flags/wf.png +0 -0
  308. data/public/images/refinery/icons/flags/ws.png +0 -0
  309. data/public/images/refinery/icons/flags/ye.png +0 -0
  310. data/public/images/refinery/icons/flags/yt.png +0 -0
  311. data/public/images/refinery/icons/flags/za.png +0 -0
  312. data/public/images/refinery/icons/flags/zm.png +0 -0
  313. data/public/images/refinery/icons/flags/zw.png +0 -0
  314. data/public/images/refinery/icons/folder_page_white.png +0 -0
  315. data/public/images/refinery/icons/img.png +0 -0
  316. data/public/images/refinery/icons/music.png +0 -0
  317. data/public/images/refinery/icons/page_white_gear.png +0 -0
  318. data/public/images/refinery/icons/pdf.png +0 -0
  319. data/public/images/refinery/icons/ppt.png +0 -0
  320. data/public/images/refinery/icons/xls.png +0 -0
  321. data/public/images/refinery/icons/zip.png +0 -0
  322. data/public/images/refinery/logo-site-bar.png +0 -0
  323. data/public/images/refinery/nav_inactive_background.png +0 -0
  324. data/public/images/refinery/orange_button.png +0 -0
  325. data/public/images/refinery/text_field_background.png +0 -0
  326. data/public/images/refinery/tooltip-nib.png +0 -0
  327. data/public/images/wymeditor/skins/refinery/text_indent.png +0 -0
  328. data/public/images/wymeditor/skins/refinery/text_indent_remove.png +0 -0
  329. data/public/javascripts/admin.js +6 -8
  330. data/public/javascripts/i18n-messages.js +2 -0
  331. data/public/javascripts/jquery-min.js +154 -0
  332. data/public/javascripts/jquery-ui-custom-min.js +244 -0
  333. data/public/javascripts/jquery/jquery.corner.js +314 -216
  334. data/public/javascripts/jquery/jquery.html5-placeholder-shim.js +81 -0
  335. data/public/javascripts/jquery/jquery.nestedsortables.js +186 -0
  336. data/public/javascripts/jquery/jquery.textTruncate.js +174 -0
  337. data/public/javascripts/jquery/jquery.timers.js +138 -0
  338. data/public/javascripts/refinery/admin.js +352 -153
  339. data/public/javascripts/refinery/boot_wym.js +81 -46
  340. data/public/javascripts/refinery/i18n.js +340 -0
  341. data/public/javascripts/wymeditor/jquery.refinery.wymeditor.js +359 -363
  342. data/public/javascripts/wymeditor/lang/en.js +46 -46
  343. data/public/javascripts/wymeditor/lang/nl.js +5 -3
  344. data/public/javascripts/wymeditor/lang/pt-br.js +3 -2
  345. data/public/javascripts/wymeditor/lang/sl.js +47 -0
  346. data/public/javascripts/wymeditor/skins/refinery/skin.js +23 -23
  347. data/public/robots.txt +1 -0
  348. data/public/stylesheets/application.css +3 -3
  349. data/public/stylesheets/formatting.css +3 -3
  350. data/public/stylesheets/home.css +2 -2
  351. data/public/stylesheets/ie7.css +1 -0
  352. data/public/stylesheets/refinery/application.css +4 -2
  353. data/public/stylesheets/refinery/formatting.css +15 -15
  354. data/public/stylesheets/refinery/ie.css +20 -0
  355. data/public/stylesheets/refinery/refinery.css +680 -462
  356. data/public/stylesheets/refinery/site_bar.css +68 -25
  357. data/public/stylesheets/refinery/theme.css +14 -14
  358. data/public/stylesheets/refinery/tooltips.css +28 -32
  359. data/public/stylesheets/refinery/ui.css +25 -10
  360. data/public/stylesheets/wymeditor/skins/refinery/skin.css +148 -149
  361. data/public/stylesheets/wymeditor/skins/refinery/wymiframe.css +67 -63
  362. data/readme.md +48 -17
  363. data/script/about +1 -1
  364. data/script/autospec +6 -0
  365. data/script/console +1 -1
  366. data/script/cucumber +10 -0
  367. data/script/dbconsole +1 -1
  368. data/script/destroy +1 -1
  369. data/script/generate +1 -1
  370. data/script/performance/benchmarker +1 -1
  371. data/script/performance/profiler +1 -1
  372. data/script/performance/request +1 -1
  373. data/script/plugin +1 -1
  374. data/script/process/inspector +1 -1
  375. data/script/process/reaper +1 -1
  376. data/script/process/spawner +1 -1
  377. data/script/runner +1 -1
  378. data/script/server +1 -1
  379. data/script/spec +10 -0
  380. data/test/fixtures/images.yml +1 -2
  381. data/test/fixtures/pages.yml +4 -4
  382. data/test/fixtures/user_plugins.yml +20 -24
  383. data/test/functional/dashboard_controller_test.rb +2 -1
  384. data/test/functional/images_controller_test.rb +3 -10
  385. data/test/unit/image_test.rb +1 -1
  386. data/test/unit/inquiry_test.rb +6 -6
  387. data/test/unit/page_test.rb +31 -1
  388. data/test/unit/refinery_setting_test.rb +1 -1
  389. data/themes/demolicious/stylesheets/application.css +23 -12
  390. data/themes/demolicious/stylesheets/formatting.css +3 -3
  391. data/themes/demolicious/stylesheets/home.css +1 -4
  392. data/themes/demolicious/views/layouts/application.html.erb +5 -5
  393. data/themes/demolicious/views/pages/home.html.erb +1 -1
  394. data/themes/hemingway/stylesheets/application.css +1 -1
  395. data/themes/hemingway/views/layouts/application.html.erb +1 -0
  396. data/todo.md +19 -5
  397. data/vendor/plugins/authentication/app/controllers/admin/users_controller.rb +13 -18
  398. data/vendor/plugins/authentication/app/controllers/sessions_controller.rb +21 -6
  399. data/vendor/plugins/authentication/app/controllers/users_controller.rb +57 -49
  400. data/vendor/plugins/authentication/app/models/role.rb +16 -0
  401. data/vendor/plugins/authentication/app/models/user.rb +21 -8
  402. data/vendor/plugins/authentication/app/models/user_mailer.rb +3 -2
  403. data/vendor/plugins/authentication/app/models/user_session.rb +1 -1
  404. data/vendor/plugins/authentication/app/views/admin/users/_form.html.erb +29 -10
  405. data/vendor/plugins/authentication/app/views/admin/users/_user.html.erb +11 -10
  406. data/vendor/plugins/authentication/app/views/admin/users/index.html.erb +2 -3
  407. data/vendor/plugins/authentication/app/views/sessions/new.html.erb +15 -18
  408. data/vendor/plugins/authentication/app/views/users/forgot.html.erb +14 -9
  409. data/vendor/plugins/authentication/app/views/users/new.html.erb +11 -13
  410. data/vendor/plugins/authentication/app/views/users/reset.html.erb +14 -9
  411. data/vendor/plugins/authentication/config/locales/da.yml +71 -0
  412. data/vendor/plugins/authentication/config/locales/de.yml +75 -0
  413. data/vendor/plugins/authentication/config/locales/en.yml +75 -0
  414. data/vendor/plugins/authentication/config/locales/es.yml +79 -0
  415. data/vendor/plugins/authentication/config/locales/fr.yml +79 -0
  416. data/vendor/plugins/authentication/config/locales/it.yml +68 -0
  417. data/vendor/plugins/authentication/config/locales/nb.yml +68 -0
  418. data/vendor/plugins/authentication/config/locales/nl.yml +83 -0
  419. data/vendor/plugins/authentication/config/locales/pt-BR.yml +64 -0
  420. data/vendor/plugins/authentication/config/locales/sl.yml +78 -0
  421. data/vendor/plugins/authentication/config/routes.rb +4 -5
  422. data/vendor/plugins/authentication/lib/authenticated_system.rb +5 -1
  423. data/vendor/plugins/authentication/rails/init.rb +5 -1
  424. data/vendor/plugins/authentication/{authentication.md → readme.md} +0 -0
  425. data/vendor/plugins/authentication/test/unit/user_mailer_test.rb +1 -1
  426. data/vendor/plugins/dashboard/app/controllers/admin/dashboard_controller.rb +17 -7
  427. data/vendor/plugins/dashboard/app/helpers/admin/dashboard_helper.rb +5 -9
  428. data/vendor/plugins/dashboard/app/views/admin/dashboard/_recent_activity.html.erb +10 -12
  429. data/vendor/plugins/dashboard/app/views/admin/dashboard/_recent_inquiries.html.erb +12 -0
  430. data/vendor/plugins/dashboard/app/views/admin/dashboard/index.html.erb +34 -11
  431. data/vendor/plugins/dashboard/config/locales/da.yml +22 -0
  432. data/vendor/plugins/dashboard/config/locales/de.yml +22 -0
  433. data/vendor/plugins/dashboard/config/locales/en.yml +22 -0
  434. data/vendor/plugins/dashboard/config/locales/es.yml +22 -0
  435. data/vendor/plugins/dashboard/config/locales/fr.yml +22 -0
  436. data/vendor/plugins/dashboard/config/locales/it.yml +22 -0
  437. data/vendor/plugins/dashboard/config/locales/nb.yml +22 -0
  438. data/vendor/plugins/dashboard/config/locales/nl.yml +22 -0
  439. data/vendor/plugins/dashboard/config/locales/pt-BR.yml +22 -0
  440. data/vendor/plugins/dashboard/config/locales/sl.yml +22 -0
  441. data/vendor/plugins/dashboard/config/routes.rb +2 -1
  442. data/vendor/plugins/dashboard/rails/init.rb +6 -0
  443. data/vendor/plugins/dashboard/{dashboard.md → readme.md} +0 -0
  444. data/vendor/plugins/i18n-js/README.rdoc +249 -0
  445. data/vendor/plugins/i18n-js/Rakefile +23 -0
  446. data/vendor/plugins/i18n-js/init.rb +1 -0
  447. data/vendor/plugins/i18n-js/install.rb +7 -0
  448. data/vendor/plugins/i18n-js/lib/i18n-js.rb +132 -0
  449. data/vendor/plugins/i18n-js/lib/i18n-js.yml +4 -0
  450. data/vendor/plugins/i18n-js/lib/i18n.js +339 -0
  451. data/vendor/plugins/i18n-js/lib/tasks/i18n-js_tasks.rake +16 -0
  452. data/vendor/plugins/i18n-js/test/i18n-test.html +50 -0
  453. data/vendor/plugins/i18n-js/test/i18n-test.js +661 -0
  454. data/vendor/plugins/i18n-js/test/i18n_js_test.rb +168 -0
  455. data/vendor/plugins/i18n-js/test/jsunittest/jsunittest.js +1017 -0
  456. data/vendor/plugins/i18n-js/test/jsunittest/unittest.css +54 -0
  457. data/vendor/plugins/i18n-js/test/resources/custom_path.yml +4 -0
  458. data/vendor/plugins/i18n-js/test/resources/default.yml +4 -0
  459. data/vendor/plugins/i18n-js/test/resources/locales.yml +76 -0
  460. data/vendor/plugins/i18n-js/test/resources/multiple_files.yml +6 -0
  461. data/vendor/plugins/i18n-js/test/resources/no_scope.yml +3 -0
  462. data/vendor/plugins/i18n-js/test/resources/simple_scope.yml +4 -0
  463. data/vendor/plugins/i18n-js/test/test_helper.rb +24 -0
  464. data/vendor/plugins/i18n/config/locales/ar.yml +121 -0
  465. data/vendor/plugins/i18n/config/locales/bg.yml +198 -0
  466. data/vendor/plugins/i18n/config/locales/bn-IN.yml +180 -0
  467. data/vendor/plugins/i18n/config/locales/bs.yml +114 -0
  468. data/vendor/plugins/i18n/config/locales/ca-ES.yml +155 -0
  469. data/vendor/plugins/i18n/config/locales/cz.rb +166 -0
  470. data/vendor/plugins/i18n/config/locales/da.yml +167 -0
  471. data/vendor/plugins/i18n/config/locales/de-AT.yml +140 -0
  472. data/vendor/plugins/i18n/config/locales/de.yml +141 -0
  473. data/vendor/plugins/i18n/config/locales/dsb.yml +182 -0
  474. data/vendor/plugins/i18n/config/locales/el.yml +191 -0
  475. data/vendor/plugins/i18n/config/locales/es-AR.yml +168 -0
  476. data/vendor/plugins/i18n/config/locales/es-CO.yml +146 -0
  477. data/vendor/plugins/i18n/config/locales/es-MX.yml +118 -0
  478. data/vendor/plugins/i18n/config/locales/es.yml +186 -0
  479. data/vendor/plugins/i18n/config/locales/et.yml +109 -0
  480. data/vendor/plugins/i18n/config/locales/fa.yml +119 -0
  481. data/vendor/plugins/i18n/config/locales/fi.yml +154 -0
  482. data/vendor/plugins/i18n/config/locales/fr-CH.yml +123 -0
  483. data/vendor/plugins/i18n/config/locales/fr.yml +140 -0
  484. data/vendor/plugins/i18n/config/locales/fun/en-AU.rb +105 -0
  485. data/vendor/plugins/i18n/config/locales/fun/gibberish.rb +109 -0
  486. data/vendor/plugins/i18n/config/locales/fur.yml +141 -0
  487. data/vendor/plugins/i18n/config/locales/gl-ES.yml +193 -0
  488. data/vendor/plugins/i18n/config/locales/he.yml +103 -0
  489. data/vendor/plugins/i18n/config/locales/hr.yml +116 -0
  490. data/vendor/plugins/i18n/config/locales/hsb.yml +190 -0
  491. data/vendor/plugins/i18n/config/locales/hu.yml +144 -0
  492. data/vendor/plugins/i18n/config/locales/id.yml +122 -0
  493. data/vendor/plugins/i18n/config/locales/is.yml +142 -0
  494. data/vendor/plugins/i18n/config/locales/it.yml +146 -0
  495. data/vendor/plugins/i18n/config/locales/ja.yml +139 -0
  496. data/vendor/plugins/i18n/config/locales/ko.yml +153 -0
  497. data/vendor/plugins/i18n/config/locales/lo.yml +201 -0
  498. data/vendor/plugins/i18n/config/locales/lt.yml +141 -0
  499. data/vendor/plugins/i18n/config/locales/lv.yml +132 -0
  500. data/vendor/plugins/i18n/config/locales/mk.yml +115 -0
  501. data/vendor/plugins/i18n/config/locales/nb.yml +103 -0
  502. data/vendor/plugins/i18n/config/locales/nl.yml +173 -0
  503. data/vendor/plugins/i18n/config/locales/nn.yml +96 -0
  504. data/vendor/plugins/i18n/config/locales/pl.yml +127 -0
  505. data/vendor/plugins/i18n/config/locales/pt-BR.yml +148 -0
  506. data/vendor/plugins/i18n/config/locales/pt-PT.yml +220 -0
  507. data/vendor/plugins/i18n/config/locales/rm.yml +134 -0
  508. data/vendor/plugins/i18n/config/locales/ro.yml +152 -0
  509. data/vendor/plugins/i18n/config/locales/ru.yml +210 -0
  510. data/vendor/plugins/i18n/config/locales/sk.yml +139 -0
  511. data/vendor/plugins/i18n/config/locales/sl.yml +190 -0
  512. data/vendor/plugins/i18n/config/locales/sr-Latn.yml +116 -0
  513. data/vendor/plugins/i18n/config/locales/sr.yml +116 -0
  514. data/vendor/plugins/i18n/config/locales/sv-SE.yml +191 -0
  515. data/vendor/plugins/i18n/config/locales/sw.yml +123 -0
  516. data/vendor/plugins/i18n/config/locales/th.rb +222 -0
  517. data/vendor/plugins/i18n/config/locales/tr.yml +139 -0
  518. data/vendor/plugins/i18n/config/locales/uk.yml +237 -0
  519. data/vendor/plugins/i18n/config/locales/vi.yml +198 -0
  520. data/vendor/plugins/i18n/config/locales/zh-CN.yml +131 -0
  521. data/vendor/plugins/i18n/config/locales/zh-TW.yml +132 -0
  522. data/vendor/plugins/i18n/lib/i18n.rb +115 -0
  523. data/vendor/plugins/i18n/lib/i18n_filter.rb +48 -0
  524. data/vendor/plugins/i18n/lib/routing_filter/MIT-LICENSE +20 -0
  525. data/vendor/plugins/i18n/lib/routing_filter/README.markdown +123 -0
  526. data/vendor/plugins/i18n/lib/routing_filter/VERSION +1 -0
  527. data/vendor/plugins/i18n/lib/routing_filter/routing_filter.rb +96 -0
  528. data/vendor/plugins/i18n/lib/routing_filter/routing_filter/base.rb +31 -0
  529. data/vendor/plugins/i18n/lib/routing_filter/routing_filter/force_extension.rb +57 -0
  530. data/vendor/plugins/i18n/lib/routing_filter/routing_filter/pagination.rb +33 -0
  531. data/vendor/plugins/i18n/lib/routing_filter/routing_filter/uuid_token.rb +78 -0
  532. data/vendor/plugins/i18n/rails/init.rb +4 -0
  533. data/vendor/plugins/images/app/controllers/admin/images_controller.rb +6 -7
  534. data/vendor/plugins/images/app/models/image.rb +24 -6
  535. data/vendor/plugins/images/app/views/admin/images/_existing_image.erb +50 -0
  536. data/vendor/plugins/images/app/views/admin/images/_form.html.erb +15 -7
  537. data/vendor/plugins/images/app/views/admin/images/_grid_view.html.erb +5 -5
  538. data/vendor/plugins/images/app/views/admin/images/_list_view.html.erb +3 -1
  539. data/vendor/plugins/images/app/views/admin/images/_list_view_image.html.erb +10 -10
  540. data/vendor/plugins/images/app/views/admin/images/index.html.erb +5 -8
  541. data/vendor/plugins/images/app/views/admin/images/insert.html.erb +16 -38
  542. data/vendor/plugins/images/config/locales/da.yml +44 -0
  543. data/vendor/plugins/images/config/locales/de.yml +45 -0
  544. data/vendor/plugins/images/config/locales/en.yml +44 -0
  545. data/vendor/plugins/images/config/locales/es.yml +45 -0
  546. data/vendor/plugins/images/config/locales/fr.yml +44 -0
  547. data/vendor/plugins/images/config/locales/it.yml +42 -0
  548. data/vendor/plugins/images/config/locales/nb.yml +43 -0
  549. data/vendor/plugins/images/config/locales/nl.yml +44 -0
  550. data/vendor/plugins/images/config/locales/pt-BR.yml +46 -0
  551. data/vendor/plugins/images/config/locales/sl.yml +44 -0
  552. data/vendor/plugins/images/config/routes.rb +1 -1
  553. data/vendor/plugins/images/lib/tasks/images.rake +6 -6
  554. data/vendor/plugins/images/rails/init.rb +5 -1
  555. data/vendor/plugins/images/readme.md +58 -0
  556. data/vendor/plugins/inquiries/app/controllers/admin/inquiries_controller.rb +16 -7
  557. data/vendor/plugins/inquiries/app/controllers/admin/inquiry_settings_controller.rb +5 -9
  558. data/vendor/plugins/inquiries/app/controllers/inquiries_controller.rb +14 -12
  559. data/vendor/plugins/inquiries/app/models/inquiry.rb +133 -6
  560. data/vendor/plugins/inquiries/app/models/inquiry_mailer.rb +2 -2
  561. data/vendor/plugins/inquiries/app/models/inquiry_setting.rb +51 -2
  562. data/vendor/plugins/inquiries/app/views/admin/inquiries/_inquiry.html.erb +16 -8
  563. data/vendor/plugins/inquiries/app/views/admin/inquiries/_submenu.html.erb +27 -0
  564. data/vendor/plugins/inquiries/app/views/admin/inquiries/index.html.erb +3 -18
  565. data/vendor/plugins/inquiries/app/views/admin/inquiries/show.html.erb +23 -12
  566. data/vendor/plugins/inquiries/app/views/admin/inquiries/spam.html.erb +20 -0
  567. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/_confirmation_email_form.html.erb +21 -14
  568. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/_inquiry_setting.html.erb +11 -0
  569. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/_notification_recipients_form.html.erb +21 -14
  570. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/_subject_form.html.erb +9 -0
  571. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/edit.html.erb +2 -0
  572. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/index.html.erb +7 -17
  573. data/vendor/plugins/inquiries/app/views/inquiries/new.html.erb +4 -5
  574. data/vendor/plugins/inquiries/config/locales/da.yml +67 -0
  575. data/vendor/plugins/inquiries/config/locales/de.yml +71 -0
  576. data/vendor/plugins/inquiries/config/locales/en.yml +75 -0
  577. data/vendor/plugins/inquiries/config/locales/es.yml +68 -0
  578. data/vendor/plugins/inquiries/config/locales/fr.yml +65 -0
  579. data/vendor/plugins/inquiries/config/locales/it.yml +66 -0
  580. data/vendor/plugins/inquiries/config/locales/nb.yml +67 -0
  581. data/vendor/plugins/inquiries/config/locales/nl.yml +71 -0
  582. data/vendor/plugins/inquiries/config/locales/pt-BR.yml +75 -0
  583. data/vendor/plugins/inquiries/config/locales/sl.yml +68 -0
  584. data/vendor/plugins/inquiries/config/routes.rb +4 -3
  585. data/vendor/plugins/inquiries/rails/init.rb +6 -3
  586. data/vendor/plugins/inquiries/readme.md +31 -0
  587. data/vendor/plugins/model_translations/MIT-LICENSE +20 -0
  588. data/vendor/plugins/model_translations/README.rdoc +90 -0
  589. data/vendor/plugins/model_translations/Rakefile +23 -0
  590. data/vendor/plugins/model_translations/init.rb +1 -0
  591. data/vendor/plugins/model_translations/lib/active_record/model_translations.rb +55 -0
  592. data/vendor/plugins/model_translations/test/model_translations_test.rb +88 -0
  593. data/vendor/plugins/model_translations/test/test_helper.rb +3 -0
  594. data/vendor/plugins/pages/app/controllers/admin/page_dialogs_controller.rb +29 -0
  595. data/vendor/plugins/pages/app/controllers/admin/page_parts_controller.rb +2 -0
  596. data/vendor/plugins/pages/app/controllers/admin/pages_controller.rb +37 -10
  597. data/vendor/plugins/pages/app/controllers/pages_controller.rb +24 -2
  598. data/vendor/plugins/pages/app/models/page.rb +90 -15
  599. data/vendor/plugins/pages/app/models/page_part.rb +1 -1
  600. data/vendor/plugins/pages/app/views/admin/page_dialogs/_page_link.html.erb +1 -1
  601. data/vendor/plugins/pages/app/views/admin/page_dialogs/link_to.html.erb +59 -74
  602. data/vendor/plugins/pages/app/views/admin/pages/_form.html.erb +14 -39
  603. data/vendor/plugins/pages/app/views/admin/pages/_form_advanced_options.html.erb +56 -50
  604. data/vendor/plugins/pages/app/views/admin/pages/_form_advanced_options_seo.html.erb +23 -21
  605. data/vendor/plugins/pages/app/views/admin/pages/_form_page_parts.html.erb +37 -0
  606. data/vendor/plugins/pages/app/views/admin/pages/_page.html.erb +10 -11
  607. data/vendor/plugins/pages/app/views/admin/pages/_page_part_field.html.erb +3 -2
  608. data/vendor/plugins/pages/app/views/admin/pages/index.html.erb +7 -7
  609. data/vendor/plugins/pages/app/views/pages/home.html.erb +1 -1
  610. data/vendor/plugins/pages/config/locales/da.yml +53 -0
  611. data/vendor/plugins/pages/config/locales/de.yml +53 -0
  612. data/vendor/plugins/pages/config/locales/en.yml +95 -0
  613. data/vendor/plugins/pages/config/locales/es.yml +53 -0
  614. data/vendor/plugins/pages/config/locales/fr.yml +53 -0
  615. data/vendor/plugins/pages/config/locales/it.yml +53 -0
  616. data/vendor/plugins/pages/config/locales/nb.yml +53 -0
  617. data/vendor/plugins/pages/config/locales/nl.yml +54 -0
  618. data/vendor/plugins/pages/config/locales/pt-BR.yml +61 -0
  619. data/vendor/plugins/pages/config/locales/sl.yml +96 -0
  620. data/vendor/plugins/pages/config/routes.rb +2 -2
  621. data/vendor/plugins/pages/rails/init.rb +5 -1
  622. data/vendor/plugins/pages/readme.md +156 -0
  623. data/vendor/plugins/refinery/app/controllers/admin/refinery_core_controller.rb +4 -2
  624. data/vendor/plugins/refinery/app/controllers/refinery/fast_controller.rb +7 -0
  625. data/vendor/plugins/refinery/app/views/admin/_head.html.erb +42 -9
  626. data/vendor/plugins/refinery/app/views/admin/_menu.html.erb +14 -15
  627. data/vendor/plugins/refinery/app/views/admin/_menu_tab.html.erb +4 -0
  628. data/vendor/plugins/refinery/app/views/layouts/admin.html.erb +10 -5
  629. data/vendor/plugins/refinery/app/views/layouts/application.html.erb +3 -3
  630. data/vendor/plugins/refinery/app/views/shared/_content_page.html.erb +28 -29
  631. data/vendor/plugins/refinery/app/views/shared/_draft_page_message.html.erb +3 -0
  632. data/vendor/plugins/refinery/app/views/shared/_google_analytics.html.erb +2 -1
  633. data/vendor/plugins/refinery/app/views/shared/_head.html.erb +1 -0
  634. data/vendor/plugins/refinery/app/views/shared/_header.html.erb +1 -1
  635. data/vendor/plugins/refinery/app/views/shared/_ie6check.html.erb +44 -4
  636. data/vendor/plugins/refinery/app/views/shared/_language_switcher.html.erb +5 -0
  637. data/vendor/plugins/refinery/app/views/shared/_menu.html.erb +17 -8
  638. data/vendor/plugins/refinery/app/views/shared/_menu_branch.html.erb +19 -21
  639. data/vendor/plugins/refinery/app/views/shared/_message.html.erb +6 -1
  640. data/vendor/plugins/refinery/app/views/shared/_site_bar.html.erb +38 -15
  641. data/vendor/plugins/refinery/app/views/shared/admin/_continue_editing.html.erb +1 -2
  642. data/vendor/plugins/refinery/app/views/shared/admin/_form_actions.html.erb +58 -14
  643. data/vendor/plugins/refinery/app/views/shared/admin/_image_picker.html.erb +7 -6
  644. data/vendor/plugins/refinery/app/views/shared/admin/_make_sortable.html.erb +10 -9
  645. data/vendor/plugins/refinery/app/views/shared/admin/_resource_picker.html.erb +7 -4
  646. data/vendor/plugins/refinery/app/views/shared/admin/_search.html.erb +3 -4
  647. data/vendor/plugins/refinery/app/views/shared/admin/_sortable_list.html.erb +1 -1
  648. data/vendor/plugins/refinery/app/views/welcome.html.erb +5 -7
  649. data/vendor/plugins/refinery/app/views/wymiframe.html.erb +13 -5
  650. data/vendor/plugins/refinery/config/locales/da.yml +71 -0
  651. data/vendor/plugins/refinery/config/locales/de.yml +67 -0
  652. data/vendor/plugins/refinery/config/locales/en.yml +59 -0
  653. data/vendor/plugins/refinery/config/locales/es.yml +64 -0
  654. data/vendor/plugins/refinery/config/locales/fr.yml +67 -0
  655. data/vendor/plugins/refinery/config/locales/it.yml +68 -0
  656. data/vendor/plugins/refinery/config/locales/nb.yml +64 -0
  657. data/vendor/plugins/refinery/config/locales/nl.yml +63 -0
  658. data/vendor/plugins/refinery/config/locales/pt-BR.yml +60 -0
  659. data/vendor/plugins/refinery/config/locales/sl.yml +61 -0
  660. data/vendor/plugins/refinery/config/routes.rb +4 -4
  661. data/vendor/plugins/refinery/crud.md +2 -2
  662. data/vendor/plugins/refinery/lib/crud.rb +34 -25
  663. data/vendor/plugins/refinery/lib/generators/refinery/refinery_generator.rb +9 -2
  664. data/vendor/plugins/refinery/lib/generators/refinery/templates/config/locales/en.yml +16 -0
  665. data/vendor/plugins/refinery/lib/generators/refinery/templates/config/locales/nl.yml +16 -0
  666. data/vendor/plugins/refinery/lib/generators/refinery/templates/config/routes.rb +2 -2
  667. data/vendor/plugins/refinery/lib/generators/refinery/templates/migration.rb +1 -14
  668. data/vendor/plugins/refinery/lib/generators/refinery/templates/model.rb +1 -2
  669. data/vendor/plugins/refinery/lib/generators/refinery/templates/rails/init.rb +3 -0
  670. data/vendor/plugins/refinery/lib/generators/refinery/templates/seed.rb +15 -0
  671. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/_form.html.erb +2 -2
  672. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/_singular_name.html.erb +10 -11
  673. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/index.html.erb +5 -6
  674. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/show.html.erb +1 -1
  675. data/vendor/plugins/refinery/lib/refinery.rb +22 -1
  676. data/vendor/plugins/refinery/lib/refinery/activity.rb +1 -1
  677. data/vendor/plugins/refinery/lib/refinery/admin_base_controller.rb +56 -10
  678. data/vendor/plugins/refinery/lib/refinery/application_controller.rb +39 -14
  679. data/vendor/plugins/refinery/lib/refinery/application_helper.rb +62 -12
  680. data/vendor/plugins/refinery/lib/refinery/base_presenter.rb +1 -1
  681. data/vendor/plugins/refinery/lib/refinery/form_helpers.rb +37 -2
  682. data/vendor/plugins/refinery/lib/refinery/html_truncation_helper.rb +10 -100
  683. data/vendor/plugins/refinery/lib/refinery/initializer.rb +15 -1
  684. data/vendor/plugins/refinery/lib/refinery/plugin.rb +26 -14
  685. data/vendor/plugins/refinery/lib/refinery/plugins.rb +21 -8
  686. data/vendor/plugins/refinery/lib/tasks/doc.rake +24 -24
  687. data/vendor/plugins/refinery/lib/tasks/refinery.rake +232 -9
  688. data/vendor/plugins/refinery/lib/tasks/yard.rake +22 -22
  689. data/vendor/plugins/refinery/plugins.md +6 -6
  690. data/vendor/plugins/refinery/rails/init.rb +8 -1
  691. data/vendor/plugins/refinery_dialogs/app/controllers/admin/dialogs_controller.rb +4 -0
  692. data/vendor/plugins/refinery_dialogs/app/views/admin/dialogs/show.html.erb +11 -12
  693. data/vendor/plugins/refinery_dialogs/app/views/layouts/admin_dialog.html.erb +4 -2
  694. data/vendor/plugins/refinery_dialogs/config/routes.rb +1 -1
  695. data/vendor/plugins/refinery_dialogs/rails/init.rb +4 -0
  696. data/vendor/plugins/refinery_settings/app/controllers/admin/refinery_settings_controller.rb +39 -0
  697. data/vendor/plugins/refinery_settings/app/models/refinery_setting.rb +67 -10
  698. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/_form.html.erb +30 -6
  699. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/_refinery_setting.html.erb +10 -11
  700. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/edit.html.erb +0 -3
  701. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/index.html.erb +13 -4
  702. data/vendor/plugins/refinery_settings/config/locales/da.yml +49 -0
  703. data/vendor/plugins/refinery_settings/config/locales/de.yml +23 -0
  704. data/vendor/plugins/refinery_settings/config/locales/en.yml +45 -0
  705. data/vendor/plugins/refinery_settings/config/locales/es.yml +23 -0
  706. data/vendor/plugins/refinery_settings/config/locales/fr.yml +23 -0
  707. data/vendor/plugins/refinery_settings/config/locales/it.yml +23 -0
  708. data/vendor/plugins/refinery_settings/config/locales/nb.yml +23 -0
  709. data/vendor/plugins/refinery_settings/config/locales/nl.yml +46 -0
  710. data/vendor/plugins/refinery_settings/config/locales/pt-BR.yml +23 -0
  711. data/vendor/plugins/refinery_settings/config/locales/sl.yml +24 -0
  712. data/vendor/plugins/refinery_settings/config/routes.rb +1 -1
  713. data/vendor/plugins/refinery_settings/rails/init.rb +5 -8
  714. data/vendor/plugins/refinery_settings/{settings.md → readme.md} +0 -0
  715. data/vendor/plugins/resources/app/controllers/admin/resources_controller.rb +2 -7
  716. data/vendor/plugins/resources/app/models/resource.rb +8 -3
  717. data/vendor/plugins/resources/app/views/admin/resources/_existing_resource.html.erb +34 -0
  718. data/vendor/plugins/resources/app/views/admin/resources/_form.html.erb +15 -7
  719. data/vendor/plugins/resources/app/views/admin/resources/_resource.html.erb +12 -12
  720. data/vendor/plugins/resources/app/views/admin/resources/index.html.erb +8 -6
  721. data/vendor/plugins/resources/app/views/admin/resources/insert.html.erb +4 -40
  722. data/vendor/plugins/resources/config/locales/da.yml +34 -0
  723. data/vendor/plugins/resources/config/locales/de.yml +32 -0
  724. data/vendor/plugins/resources/config/locales/en.yml +32 -0
  725. data/vendor/plugins/resources/config/locales/es.yml +34 -0
  726. data/vendor/plugins/resources/config/locales/fr.yml +34 -0
  727. data/vendor/plugins/resources/config/locales/it.yml +33 -0
  728. data/vendor/plugins/resources/config/locales/nb.yml +34 -0
  729. data/vendor/plugins/resources/config/locales/nl.yml +34 -0
  730. data/vendor/plugins/resources/config/locales/pt-BR.yml +34 -0
  731. data/vendor/plugins/resources/config/locales/sl.yml +34 -0
  732. data/vendor/plugins/resources/config/routes.rb +1 -3
  733. data/vendor/plugins/resources/rails/init.rb +5 -1
  734. data/vendor/plugins/resources/{resources.md → readme.md} +0 -0
  735. data/vendor/plugins/themes/lib/theme_server.rb +1 -1
  736. data/vendor/plugins/themes/rails/init.rb +4 -1
  737. data/vendor/plugins/themes/readme.md +113 -0
  738. data/vendor/plugins/{rails_indexes → translate}/MIT-LICENSE +0 -0
  739. data/vendor/plugins/translate/README +61 -0
  740. data/vendor/plugins/translate/REFINERY_README +8 -0
  741. data/vendor/plugins/translate/Rakefile +11 -0
  742. data/vendor/plugins/translate/init.rb +8 -0
  743. data/vendor/plugins/translate/lib/translate.rb +13 -0
  744. data/vendor/plugins/translate/lib/translate/file.rb +35 -0
  745. data/vendor/plugins/translate/lib/translate/keys.rb +123 -0
  746. data/vendor/plugins/translate/lib/translate/log.rb +39 -0
  747. data/vendor/plugins/translate/lib/translate/storage.rb +20 -0
  748. data/vendor/plugins/translate/tasks/translate.rake +182 -0
  749. metadata +574 -366
  750. data/.gems +0 -0
  751. data/VERSION +0 -1
  752. data/bin/refinery-override +0 -76
  753. data/public/images/thickbox/cross.png +0 -0
  754. data/public/images/thickbox/loadingAnimation.gif +0 -0
  755. data/public/images/thickbox/macFFBgHack.png +0 -0
  756. data/public/javascripts/jquery-ui-1.8.min.js +0 -374
  757. data/vendor/plugins/acts_as_indexed/CHANGELOG +0 -78
  758. data/vendor/plugins/acts_as_indexed/MIT-LICENSE +0 -20
  759. data/vendor/plugins/acts_as_indexed/README.rdoc +0 -114
  760. data/vendor/plugins/acts_as_indexed/Rakefile +0 -35
  761. data/vendor/plugins/acts_as_indexed/init.rb +0 -2
  762. data/vendor/plugins/acts_as_indexed/lib/acts_as_indexed.rb +0 -224
  763. data/vendor/plugins/acts_as_indexed/lib/search_atom.rb +0 -109
  764. data/vendor/plugins/acts_as_indexed/lib/search_index.rb +0 -329
  765. data/vendor/plugins/acts_as_indexed/lib/will_paginate_search.rb +0 -29
  766. data/vendor/plugins/acts_as_indexed/test/abstract_unit.rb +0 -47
  767. data/vendor/plugins/acts_as_indexed/test/acts_as_indexed_test.rb +0 -102
  768. data/vendor/plugins/acts_as_indexed/test/database.yml +0 -10
  769. data/vendor/plugins/acts_as_indexed/test/fixtures/post.rb +0 -5
  770. data/vendor/plugins/acts_as_indexed/test/fixtures/posts.yml +0 -31
  771. data/vendor/plugins/acts_as_indexed/test/schema.rb +0 -6
  772. data/vendor/plugins/authlogic/CHANGELOG.rdoc +0 -345
  773. data/vendor/plugins/authlogic/LICENSE +0 -20
  774. data/vendor/plugins/authlogic/README.rdoc +0 -246
  775. data/vendor/plugins/authlogic/Rakefile +0 -42
  776. data/vendor/plugins/authlogic/VERSION.yml +0 -5
  777. data/vendor/plugins/authlogic/authlogic.gemspec +0 -217
  778. data/vendor/plugins/authlogic/generators/session/session_generator.rb +0 -9
  779. data/vendor/plugins/authlogic/generators/session/templates/session.rb +0 -2
  780. data/vendor/plugins/authlogic/init.rb +0 -1
  781. data/vendor/plugins/authlogic/lib/authlogic.rb +0 -64
  782. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/base.rb +0 -107
  783. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/email.rb +0 -110
  784. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/logged_in_status.rb +0 -60
  785. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/login.rb +0 -141
  786. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/magic_columns.rb +0 -24
  787. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/password.rb +0 -355
  788. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/perishable_token.rb +0 -105
  789. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/persistence_token.rb +0 -68
  790. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/restful_authentication.rb +0 -61
  791. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/session_maintenance.rb +0 -139
  792. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/single_access_token.rb +0 -65
  793. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/validations_scope.rb +0 -32
  794. data/vendor/plugins/authlogic/lib/authlogic/authenticates_many/association.rb +0 -42
  795. data/vendor/plugins/authlogic/lib/authlogic/authenticates_many/base.rb +0 -55
  796. data/vendor/plugins/authlogic/lib/authlogic/controller_adapters/abstract_adapter.rb +0 -67
  797. data/vendor/plugins/authlogic/lib/authlogic/controller_adapters/merb_adapter.rb +0 -30
  798. data/vendor/plugins/authlogic/lib/authlogic/controller_adapters/rails_adapter.rb +0 -48
  799. data/vendor/plugins/authlogic/lib/authlogic/controller_adapters/sinatra_adapter.rb +0 -61
  800. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/aes256.rb +0 -43
  801. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/bcrypt.rb +0 -90
  802. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/md5.rb +0 -34
  803. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/sha1.rb +0 -35
  804. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/sha256.rb +0 -50
  805. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/sha512.rb +0 -50
  806. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/wordpress.rb +0 -43
  807. data/vendor/plugins/authlogic/lib/authlogic/i18n.rb +0 -83
  808. data/vendor/plugins/authlogic/lib/authlogic/i18n/translator.rb +0 -15
  809. data/vendor/plugins/authlogic/lib/authlogic/random.rb +0 -33
  810. data/vendor/plugins/authlogic/lib/authlogic/regex.rb +0 -25
  811. data/vendor/plugins/authlogic/lib/authlogic/session/activation.rb +0 -58
  812. data/vendor/plugins/authlogic/lib/authlogic/session/active_record_trickery.rb +0 -64
  813. data/vendor/plugins/authlogic/lib/authlogic/session/base.rb +0 -37
  814. data/vendor/plugins/authlogic/lib/authlogic/session/brute_force_protection.rb +0 -96
  815. data/vendor/plugins/authlogic/lib/authlogic/session/callbacks.rb +0 -99
  816. data/vendor/plugins/authlogic/lib/authlogic/session/cookies.rb +0 -130
  817. data/vendor/plugins/authlogic/lib/authlogic/session/existence.rb +0 -93
  818. data/vendor/plugins/authlogic/lib/authlogic/session/foundation.rb +0 -63
  819. data/vendor/plugins/authlogic/lib/authlogic/session/http_auth.rb +0 -58
  820. data/vendor/plugins/authlogic/lib/authlogic/session/id.rb +0 -41
  821. data/vendor/plugins/authlogic/lib/authlogic/session/klass.rb +0 -78
  822. data/vendor/plugins/authlogic/lib/authlogic/session/magic_columns.rb +0 -95
  823. data/vendor/plugins/authlogic/lib/authlogic/session/magic_states.rb +0 -59
  824. data/vendor/plugins/authlogic/lib/authlogic/session/params.rb +0 -101
  825. data/vendor/plugins/authlogic/lib/authlogic/session/password.rb +0 -240
  826. data/vendor/plugins/authlogic/lib/authlogic/session/perishable_token.rb +0 -18
  827. data/vendor/plugins/authlogic/lib/authlogic/session/persistence.rb +0 -70
  828. data/vendor/plugins/authlogic/lib/authlogic/session/priority_record.rb +0 -34
  829. data/vendor/plugins/authlogic/lib/authlogic/session/scopes.rb +0 -101
  830. data/vendor/plugins/authlogic/lib/authlogic/session/session.rb +0 -62
  831. data/vendor/plugins/authlogic/lib/authlogic/session/timeout.rb +0 -82
  832. data/vendor/plugins/authlogic/lib/authlogic/session/unauthorized_record.rb +0 -50
  833. data/vendor/plugins/authlogic/lib/authlogic/session/validation.rb +0 -82
  834. data/vendor/plugins/authlogic/lib/authlogic/test_case.rb +0 -120
  835. data/vendor/plugins/authlogic/lib/authlogic/test_case/mock_controller.rb +0 -45
  836. data/vendor/plugins/authlogic/lib/authlogic/test_case/mock_cookie_jar.rb +0 -14
  837. data/vendor/plugins/authlogic/lib/authlogic/test_case/mock_logger.rb +0 -10
  838. data/vendor/plugins/authlogic/lib/authlogic/test_case/mock_request.rb +0 -19
  839. data/vendor/plugins/authlogic/lib/authlogic/test_case/rails_request_adapter.rb +0 -30
  840. data/vendor/plugins/authlogic/rails/init.rb +0 -1
  841. data/vendor/plugins/authlogic/shoulda_macros/authlogic.rb +0 -69
  842. data/vendor/plugins/authlogic/test/acts_as_authentic_test/base_test.rb +0 -18
  843. data/vendor/plugins/authlogic/test/acts_as_authentic_test/email_test.rb +0 -97
  844. data/vendor/plugins/authlogic/test/acts_as_authentic_test/logged_in_status_test.rb +0 -36
  845. data/vendor/plugins/authlogic/test/acts_as_authentic_test/login_test.rb +0 -109
  846. data/vendor/plugins/authlogic/test/acts_as_authentic_test/magic_columns_test.rb +0 -27
  847. data/vendor/plugins/authlogic/test/acts_as_authentic_test/password_test.rb +0 -236
  848. data/vendor/plugins/authlogic/test/acts_as_authentic_test/perishable_token_test.rb +0 -90
  849. data/vendor/plugins/authlogic/test/acts_as_authentic_test/persistence_token_test.rb +0 -55
  850. data/vendor/plugins/authlogic/test/acts_as_authentic_test/restful_authentication_test.rb +0 -40
  851. data/vendor/plugins/authlogic/test/acts_as_authentic_test/session_maintenance_test.rb +0 -84
  852. data/vendor/plugins/authlogic/test/acts_as_authentic_test/single_access_test.rb +0 -44
  853. data/vendor/plugins/authlogic/test/authenticates_many_test.rb +0 -16
  854. data/vendor/plugins/authlogic/test/crypto_provider_test/aes256_test.rb +0 -14
  855. data/vendor/plugins/authlogic/test/crypto_provider_test/bcrypt_test.rb +0 -14
  856. data/vendor/plugins/authlogic/test/crypto_provider_test/sha1_test.rb +0 -23
  857. data/vendor/plugins/authlogic/test/crypto_provider_test/sha256_test.rb +0 -14
  858. data/vendor/plugins/authlogic/test/crypto_provider_test/sha512_test.rb +0 -14
  859. data/vendor/plugins/authlogic/test/fixtures/companies.yml +0 -5
  860. data/vendor/plugins/authlogic/test/fixtures/employees.yml +0 -17
  861. data/vendor/plugins/authlogic/test/fixtures/projects.yml +0 -3
  862. data/vendor/plugins/authlogic/test/fixtures/users.yml +0 -24
  863. data/vendor/plugins/authlogic/test/i18n_test.rb +0 -33
  864. data/vendor/plugins/authlogic/test/libs/affiliate.rb +0 -7
  865. data/vendor/plugins/authlogic/test/libs/company.rb +0 -6
  866. data/vendor/plugins/authlogic/test/libs/employee.rb +0 -7
  867. data/vendor/plugins/authlogic/test/libs/employee_session.rb +0 -2
  868. data/vendor/plugins/authlogic/test/libs/ldaper.rb +0 -3
  869. data/vendor/plugins/authlogic/test/libs/ordered_hash.rb +0 -9
  870. data/vendor/plugins/authlogic/test/libs/project.rb +0 -3
  871. data/vendor/plugins/authlogic/test/libs/user.rb +0 -5
  872. data/vendor/plugins/authlogic/test/libs/user_session.rb +0 -6
  873. data/vendor/plugins/authlogic/test/random_test.rb +0 -49
  874. data/vendor/plugins/authlogic/test/session_test/activation_test.rb +0 -43
  875. data/vendor/plugins/authlogic/test/session_test/active_record_trickery_test.rb +0 -36
  876. data/vendor/plugins/authlogic/test/session_test/brute_force_protection_test.rb +0 -101
  877. data/vendor/plugins/authlogic/test/session_test/callbacks_test.rb +0 -6
  878. data/vendor/plugins/authlogic/test/session_test/cookies_test.rb +0 -112
  879. data/vendor/plugins/authlogic/test/session_test/credentials_test.rb +0 -0
  880. data/vendor/plugins/authlogic/test/session_test/existence_test.rb +0 -64
  881. data/vendor/plugins/authlogic/test/session_test/http_auth_test.rb +0 -28
  882. data/vendor/plugins/authlogic/test/session_test/id_test.rb +0 -17
  883. data/vendor/plugins/authlogic/test/session_test/klass_test.rb +0 -40
  884. data/vendor/plugins/authlogic/test/session_test/magic_columns_test.rb +0 -62
  885. data/vendor/plugins/authlogic/test/session_test/magic_states_test.rb +0 -60
  886. data/vendor/plugins/authlogic/test/session_test/params_test.rb +0 -53
  887. data/vendor/plugins/authlogic/test/session_test/password_test.rb +0 -106
  888. data/vendor/plugins/authlogic/test/session_test/perishability_test.rb +0 -15
  889. data/vendor/plugins/authlogic/test/session_test/persistence_test.rb +0 -21
  890. data/vendor/plugins/authlogic/test/session_test/scopes_test.rb +0 -60
  891. data/vendor/plugins/authlogic/test/session_test/session_test.rb +0 -59
  892. data/vendor/plugins/authlogic/test/session_test/timeout_test.rb +0 -52
  893. data/vendor/plugins/authlogic/test/session_test/unauthorized_record_test.rb +0 -13
  894. data/vendor/plugins/authlogic/test/session_test/validation_test.rb +0 -23
  895. data/vendor/plugins/authlogic/test/test_helper.rb +0 -182
  896. data/vendor/plugins/friendly_id/Changelog.md +0 -243
  897. data/vendor/plugins/friendly_id/Contributors.md +0 -30
  898. data/vendor/plugins/friendly_id/Gemfile +0 -2
  899. data/vendor/plugins/friendly_id/Guide.md +0 -509
  900. data/vendor/plugins/friendly_id/LICENSE +0 -19
  901. data/vendor/plugins/friendly_id/README.md +0 -76
  902. data/vendor/plugins/friendly_id/Rakefile +0 -68
  903. data/vendor/plugins/friendly_id/extras/README.txt +0 -3
  904. data/vendor/plugins/friendly_id/extras/bench.rb +0 -59
  905. data/vendor/plugins/friendly_id/extras/extras.rb +0 -31
  906. data/vendor/plugins/friendly_id/extras/prof.rb +0 -14
  907. data/vendor/plugins/friendly_id/extras/template-gem.rb +0 -26
  908. data/vendor/plugins/friendly_id/extras/template-plugin.rb +0 -28
  909. data/vendor/plugins/friendly_id/friendly_id.gemspec +0 -40
  910. data/vendor/plugins/friendly_id/generators/friendly_id/friendly_id_generator.rb +0 -28
  911. data/vendor/plugins/friendly_id/generators/friendly_id/templates/create_slugs.rb +0 -18
  912. data/vendor/plugins/friendly_id/lib/friendly_id.rb +0 -67
  913. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2.rb +0 -47
  914. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/configuration.rb +0 -66
  915. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/finders.rb +0 -140
  916. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/simple_model.rb +0 -162
  917. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/slug.rb +0 -111
  918. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/slugged_model.rb +0 -323
  919. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/tasks.rb +0 -66
  920. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/tasks/friendly_id.rake +0 -19
  921. data/vendor/plugins/friendly_id/lib/friendly_id/configuration.rb +0 -132
  922. data/vendor/plugins/friendly_id/lib/friendly_id/finders.rb +0 -106
  923. data/vendor/plugins/friendly_id/lib/friendly_id/slug_string.rb +0 -292
  924. data/vendor/plugins/friendly_id/lib/friendly_id/slugged.rb +0 -91
  925. data/vendor/plugins/friendly_id/lib/friendly_id/status.rb +0 -35
  926. data/vendor/plugins/friendly_id/lib/friendly_id/test.rb +0 -175
  927. data/vendor/plugins/friendly_id/lib/friendly_id/version.rb +0 -8
  928. data/vendor/plugins/friendly_id/rails/init.rb +0 -2
  929. data/vendor/plugins/friendly_id/test/active_record2/basic_slugged_model_test.rb +0 -14
  930. data/vendor/plugins/friendly_id/test/active_record2/cached_slug_test.rb +0 -61
  931. data/vendor/plugins/friendly_id/test/active_record2/core.rb +0 -93
  932. data/vendor/plugins/friendly_id/test/active_record2/custom_normalizer_test.rb +0 -20
  933. data/vendor/plugins/friendly_id/test/active_record2/custom_table_name_test.rb +0 -22
  934. data/vendor/plugins/friendly_id/test/active_record2/deprecated_test.rb +0 -23
  935. data/vendor/plugins/friendly_id/test/active_record2/scoped_model_test.rb +0 -111
  936. data/vendor/plugins/friendly_id/test/active_record2/simple_test.rb +0 -59
  937. data/vendor/plugins/friendly_id/test/active_record2/slug_test.rb +0 -34
  938. data/vendor/plugins/friendly_id/test/active_record2/slugged.rb +0 -30
  939. data/vendor/plugins/friendly_id/test/active_record2/slugged_status_test.rb +0 -61
  940. data/vendor/plugins/friendly_id/test/active_record2/sti_test.rb +0 -22
  941. data/vendor/plugins/friendly_id/test/active_record2/support/database.mysql.yml +0 -4
  942. data/vendor/plugins/friendly_id/test/active_record2/support/database.postgres.yml +0 -6
  943. data/vendor/plugins/friendly_id/test/active_record2/support/database.sqlite3.yml +0 -2
  944. data/vendor/plugins/friendly_id/test/active_record2/support/models.rb +0 -78
  945. data/vendor/plugins/friendly_id/test/active_record2/tasks_test.rb +0 -82
  946. data/vendor/plugins/friendly_id/test/active_record2/test_helper.rb +0 -114
  947. data/vendor/plugins/friendly_id/test/friendly_id_test.rb +0 -60
  948. data/vendor/plugins/friendly_id/test/slug_string_test.rb +0 -78
  949. data/vendor/plugins/friendly_id/test/test_helper.rb +0 -9
  950. data/vendor/plugins/hpricot/CHANGELOG +0 -88
  951. data/vendor/plugins/hpricot/COPYING +0 -18
  952. data/vendor/plugins/hpricot/README +0 -275
  953. data/vendor/plugins/hpricot/Rakefile +0 -272
  954. data/vendor/plugins/hpricot/ext/fast_xs/FastXsService.java +0 -1030
  955. data/vendor/plugins/hpricot/ext/fast_xs/extconf.rb +0 -4
  956. data/vendor/plugins/hpricot/ext/fast_xs/fast_xs.c +0 -201
  957. data/vendor/plugins/hpricot/ext/hpricot_scan/HpricotCss.java +0 -831
  958. data/vendor/plugins/hpricot/ext/hpricot_scan/HpricotScanService.java +0 -2086
  959. data/vendor/plugins/hpricot/ext/hpricot_scan/MANIFEST +0 -0
  960. data/vendor/plugins/hpricot/ext/hpricot_scan/extconf.rb +0 -6
  961. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_common.rl +0 -76
  962. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_css.c +0 -3503
  963. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_css.java.rl +0 -155
  964. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_css.rl +0 -115
  965. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_scan.c +0 -6927
  966. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_scan.h +0 -79
  967. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_scan.java.rl +0 -1152
  968. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_scan.rl +0 -788
  969. data/vendor/plugins/hpricot/extras/mingw-rbconfig.rb +0 -176
  970. data/vendor/plugins/hpricot/hpricot.gemspec +0 -17
  971. data/vendor/plugins/hpricot/lib/hpricot.rb +0 -26
  972. data/vendor/plugins/hpricot/lib/hpricot/blankslate.rb +0 -63
  973. data/vendor/plugins/hpricot/lib/hpricot/builder.rb +0 -216
  974. data/vendor/plugins/hpricot/lib/hpricot/elements.rb +0 -510
  975. data/vendor/plugins/hpricot/lib/hpricot/htmlinfo.rb +0 -691
  976. data/vendor/plugins/hpricot/lib/hpricot/inspect.rb +0 -103
  977. data/vendor/plugins/hpricot/lib/hpricot/modules.rb +0 -40
  978. data/vendor/plugins/hpricot/lib/hpricot/parse.rb +0 -38
  979. data/vendor/plugins/hpricot/lib/hpricot/tag.rb +0 -219
  980. data/vendor/plugins/hpricot/lib/hpricot/tags.rb +0 -164
  981. data/vendor/plugins/hpricot/lib/hpricot/traverse.rb +0 -839
  982. data/vendor/plugins/hpricot/lib/hpricot/xchar.rb +0 -94
  983. data/vendor/plugins/hpricot/setup.rb +0 -1585
  984. data/vendor/plugins/hpricot/test/files/basic.xhtml +0 -17
  985. data/vendor/plugins/hpricot/test/files/boingboing.html +0 -2266
  986. data/vendor/plugins/hpricot/test/files/cy0.html +0 -3653
  987. data/vendor/plugins/hpricot/test/files/immob.html +0 -400
  988. data/vendor/plugins/hpricot/test/files/pace_application.html +0 -1320
  989. data/vendor/plugins/hpricot/test/files/tenderlove.html +0 -16
  990. data/vendor/plugins/hpricot/test/files/uswebgen.html +0 -220
  991. data/vendor/plugins/hpricot/test/files/utf8.html +0 -1054
  992. data/vendor/plugins/hpricot/test/files/week9.html +0 -1723
  993. data/vendor/plugins/hpricot/test/files/why.xml +0 -19
  994. data/vendor/plugins/hpricot/test/load_files.rb +0 -7
  995. data/vendor/plugins/hpricot/test/nokogiri-bench.rb +0 -64
  996. data/vendor/plugins/hpricot/test/test_alter.rb +0 -96
  997. data/vendor/plugins/hpricot/test/test_builder.rb +0 -37
  998. data/vendor/plugins/hpricot/test/test_parser.rb +0 -428
  999. data/vendor/plugins/hpricot/test/test_paths.rb +0 -25
  1000. data/vendor/plugins/hpricot/test/test_preserved.rb +0 -88
  1001. data/vendor/plugins/hpricot/test/test_xml.rb +0 -28
  1002. data/vendor/plugins/images/images.md +0 -53
  1003. data/vendor/plugins/inquiries/inquiries.md +0 -31
  1004. data/vendor/plugins/pages/pages.md +0 -146
  1005. data/vendor/plugins/rails_indexes/README.textile +0 -46
  1006. data/vendor/plugins/rails_indexes/Rakefile +0 -23
  1007. data/vendor/plugins/rails_indexes/lib/indexer.rb +0 -303
  1008. data/vendor/plugins/rails_indexes/tasks/indexer.rake +0 -18
  1009. data/vendor/plugins/rails_indexes/test/fixtures/app/controllers/users_controller.rb +0 -8
  1010. data/vendor/plugins/rails_indexes/test/fixtures/app/models/address.rb +0 -5
  1011. data/vendor/plugins/rails_indexes/test/fixtures/app/models/company.rb +0 -11
  1012. data/vendor/plugins/rails_indexes/test/fixtures/app/models/country.rb +0 -4
  1013. data/vendor/plugins/rails_indexes/test/fixtures/app/models/freelancer.rb +0 -3
  1014. data/vendor/plugins/rails_indexes/test/fixtures/app/models/gift.rb +0 -10
  1015. data/vendor/plugins/rails_indexes/test/fixtures/app/models/god.rb +0 -3
  1016. data/vendor/plugins/rails_indexes/test/fixtures/app/models/user.rb +0 -17
  1017. data/vendor/plugins/rails_indexes/test/fixtures/app/sweepers/user_sweeper.rb +0 -9
  1018. data/vendor/plugins/rails_indexes/test/fixtures/schema.rb +0 -46
  1019. data/vendor/plugins/rails_indexes/test/rails_indexes_test.rb +0 -83
  1020. data/vendor/plugins/rails_indexes/test/test_helper.rb +0 -30
  1021. data/vendor/plugins/refinery/app/views/admin/_footer.html.erb +0 -7
  1022. data/vendor/plugins/refinery/app/views/shared/_submenu.html.erb +0 -5
  1023. data/vendor/plugins/refinery/app/views/shared/_submenu_branch.html.erb +0 -10
  1024. data/vendor/plugins/themes/themes.md +0 -113
  1025. data/vendor/plugins/will_paginate/.manifest +0 -43
  1026. data/vendor/plugins/will_paginate/CHANGELOG.rdoc +0 -139
  1027. data/vendor/plugins/will_paginate/LICENSE +0 -18
  1028. data/vendor/plugins/will_paginate/README.rdoc +0 -107
  1029. data/vendor/plugins/will_paginate/Rakefile +0 -53
  1030. data/vendor/plugins/will_paginate/examples/apple-circle.gif +0 -0
  1031. data/vendor/plugins/will_paginate/examples/index.haml +0 -69
  1032. data/vendor/plugins/will_paginate/examples/index.html +0 -92
  1033. data/vendor/plugins/will_paginate/examples/pagination.css +0 -90
  1034. data/vendor/plugins/will_paginate/examples/pagination.sass +0 -91
  1035. data/vendor/plugins/will_paginate/init.rb +0 -1
  1036. data/vendor/plugins/will_paginate/lib/will_paginate.rb +0 -90
  1037. data/vendor/plugins/will_paginate/lib/will_paginate/array.rb +0 -16
  1038. data/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +0 -146
  1039. data/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb +0 -43
  1040. data/vendor/plugins/will_paginate/lib/will_paginate/finder.rb +0 -264
  1041. data/vendor/plugins/will_paginate/lib/will_paginate/named_scope.rb +0 -170
  1042. data/vendor/plugins/will_paginate/lib/will_paginate/named_scope_patch.rb +0 -37
  1043. data/vendor/plugins/will_paginate/lib/will_paginate/version.rb +0 -9
  1044. data/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb +0 -408
  1045. data/vendor/plugins/will_paginate/test/boot.rb +0 -21
  1046. data/vendor/plugins/will_paginate/test/collection_test.rb +0 -143
  1047. data/vendor/plugins/will_paginate/test/console +0 -8
  1048. data/vendor/plugins/will_paginate/test/database.yml +0 -22
  1049. data/vendor/plugins/will_paginate/test/finder_test.rb +0 -473
  1050. data/vendor/plugins/will_paginate/test/fixtures/admin.rb +0 -3
  1051. data/vendor/plugins/will_paginate/test/fixtures/developer.rb +0 -14
  1052. data/vendor/plugins/will_paginate/test/fixtures/developers_projects.yml +0 -13
  1053. data/vendor/plugins/will_paginate/test/fixtures/project.rb +0 -15
  1054. data/vendor/plugins/will_paginate/test/fixtures/projects.yml +0 -6
  1055. data/vendor/plugins/will_paginate/test/fixtures/replies.yml +0 -29
  1056. data/vendor/plugins/will_paginate/test/fixtures/reply.rb +0 -7
  1057. data/vendor/plugins/will_paginate/test/fixtures/schema.rb +0 -38
  1058. data/vendor/plugins/will_paginate/test/fixtures/topic.rb +0 -10
  1059. data/vendor/plugins/will_paginate/test/fixtures/topics.yml +0 -30
  1060. data/vendor/plugins/will_paginate/test/fixtures/user.rb +0 -2
  1061. data/vendor/plugins/will_paginate/test/fixtures/users.yml +0 -35
  1062. data/vendor/plugins/will_paginate/test/helper.rb +0 -37
  1063. data/vendor/plugins/will_paginate/test/lib/activerecord_test_case.rb +0 -43
  1064. data/vendor/plugins/will_paginate/test/lib/activerecord_test_connector.rb +0 -75
  1065. data/vendor/plugins/will_paginate/test/lib/load_fixtures.rb +0 -11
  1066. data/vendor/plugins/will_paginate/test/lib/view_test_process.rb +0 -179
  1067. data/vendor/plugins/will_paginate/test/tasks.rake +0 -59
  1068. data/vendor/plugins/will_paginate/test/view_test.rb +0 -373
  1069. data/vendor/plugins/will_paginate/will_paginate.gemspec +0 -19
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * WYMeditor : what you see is What You Mean web-based editor
3
- * Copyright (c) 2008 Jean-Francois Hovinne, http://www.wymeditor.org/
3
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
4
4
  * Dual licensed under the MIT (MIT-license.txt)
5
5
  * and GPL (GPL-license.txt) licenses.
6
6
  *
@@ -19,7 +19,7 @@
19
19
  * Scott Lewis (lewiscot a-t gmail dotcom)
20
20
  * Bermi Ferrer (wymeditor a-t bermi dotorg)
21
21
  * Daniel Reszka (d.reszka a-t wymeditor dotorg)
22
- * Jonatan Lundin (jonatan.lundin _at_ gmail.com)
22
+ * Jonatan Lundin (jonatan.lundin a-t gmail dotcom)
23
23
  */
24
24
 
25
25
  /*
@@ -117,7 +117,7 @@ $.extend(WYMeditor, {
117
117
 
118
118
  */
119
119
 
120
- VERSION : "0.5-b2-refinery",
120
+ VERSION : "0.5-rc1-refinery",
121
121
  INSTANCES : [],
122
122
  STRINGS : [],
123
123
  SKINS : [],
@@ -127,7 +127,7 @@ $.extend(WYMeditor, {
127
127
  BASE_PATH : "{Wym_Base_Path}",
128
128
  CSS_PATH : "{Wym_Css_Path}",
129
129
  WYM_PATH : "{Wym_Wym_Path}",
130
- SKINS_DEFAULT_PATH : "/images/wymeditor/skins/",
130
+ SKINS_DEFAULT_PATH : "images/wymeditor/skins/",
131
131
  SKINS_DEFAULT_CSS : "skin.css",
132
132
  SKINS_DEFAULT_JS : "skin.js",
133
133
  LANG_DEFAULT_PATH : "lang/",
@@ -182,6 +182,7 @@ $.extend(WYMeditor, {
182
182
  TITLE : "title",
183
183
  TARGET : "target",
184
184
  ALT : "alt",
185
+ REL : 'rel',
185
186
  DIALOG_LINK : "Link",
186
187
  DIALOG_IMAGE : "Image",
187
188
  DIALOG_TABLE : "Table",
@@ -268,19 +269,26 @@ $.extend(WYMeditor, {
268
269
 
269
270
  //store the HTML option, if any
270
271
  if(this._options.html) this._html = this._options.html;
272
+
271
273
  //get or compute the base path (where the main JS file is located)
272
274
  this._options.basePath = this._options.basePath || this.computeBasePath();
275
+
273
276
  //get or set the skin path (where the skin files are located)
274
- this._options.skinPath = this._options.skinPath || this._options.basePath + WYMeditor.SKINS_DEFAULT_PATH + this._options.skin + '/';
277
+ this._options.skinPath = this._options.skinPath || (this._options.basePath + WYMeditor.SKINS_DEFAULT_PATH) + this._options.skin + '/';
278
+
275
279
  // set css and js skin paths
276
- this._options.cssSkinPath = (this._options.cssSkinPath || this._options.skinPath) + this._options.skin + "/";
277
- this._options.jsSkinPath = (this._options.jsSkinPath || this._options.skinPath) + this._options.skin + "/";
280
+ this._options.cssCompiledSkinPath = this._options.cssCompiledSkinPath || ((this._options.cssSkinPath || this._options.skinPath) + this._options.skin + "/");
281
+ this._options.jsCompiledSkinPath = this._options.jsCompiledSkinPath || ((this._options.jsSkinPath || this._options.skinPath) + this._options.skin + "/");
282
+
278
283
  //get or compute the main JS file location
279
284
  this._options.wymPath = this._options.wymPath || this.computeWymPath();
285
+
280
286
  //get or set the language files path
281
287
  this._options.langPath = this._options.langPath || this._options.basePath + WYMeditor.LANG_DEFAULT_PATH;
288
+
282
289
  //get or set the designmode iframe's base path
283
290
  this._options.iframeBasePath = this._options.iframeBasePath || this._options.basePath + WYMeditor.IFRAME_DEFAULT;
291
+
284
292
  //get or compute the jQuery JS file location
285
293
  this._options.jQueryPath = this._options.jQueryPath || this.computeJqueryPath();
286
294
 
@@ -343,68 +351,42 @@ $.fn.wymeditor = function(options) {
343
351
 
344
352
  direction: "ltr",
345
353
 
346
- boxHtml: "<div class='wym_box'>"
347
- + "<div class='wym_area_top'>"
348
- + WYMeditor.TOOLS
349
- + "</div>"
354
+ boxHtml: "<div class='wym_box'>"
355
+ + "<div class='wym_area_top'>" + WYMeditor.TOOLS + "</div>"
350
356
  + "<div class='wym_area_left'></div>"
351
- + "<div class='wym_area_right'>"
352
- + WYMeditor.CONTAINERS
353
- + WYMeditor.CLASSES
354
- + "</div>"
355
- + "<div class='wym_area_main'>"
356
- + WYMeditor.HTML
357
- + WYMeditor.IFRAME
358
- + WYMeditor.STATUS
359
- + "</div>"
360
- + "<div class='wym_area_bottom'>"
361
- + WYMeditor.LOGO
362
- + "</div>"
363
- + "</div>",
364
-
365
- logoHtml: "<a class='wym_wymeditor_link' "
366
- + "href='http://www.wymeditor.org/'>WYMeditor</a>",
357
+ + "<div class='wym_area_right'>" + WYMeditor.CONTAINERS + WYMeditor.CLASSES + "</div>"
358
+ + "<div class='wym_area_main'>" + WYMeditor.HTML + WYMeditor.IFRAME + WYMeditor.STATUS + "</div>"
359
+ + "<div class='wym_area_bottom'>" + WYMeditor.LOGO + "</div>"
360
+ + "</div>",
361
+
362
+ logoHtml: "<a class='wym_wymeditor_link' href='http://www.wymeditor.org/'>WYMeditor</a>",
367
363
 
368
364
  iframeHtml:"<div class='wym_iframe wym_section'>"
369
- + "<iframe "
370
- + "src='"
371
- + WYMeditor.IFRAME_BASE_PATH
372
- + "wymiframe.html' "
373
- + "onload='this.contentWindow.parent.WYMeditor.INSTANCES["
374
- + WYMeditor.INDEX + "].initIframe(this)'"
375
- + "></iframe>"
376
- + "</div>",
365
+ + "<iframe src='" + WYMeditor.IFRAME_BASE_PATH + "wymiframe.html' onload='"
366
+ + "this.contentWindow.parent.WYMeditor.INSTANCES[" + WYMeditor.INDEX + "].initIframe(this)'>"
367
+ + "</iframe>"
368
+ + "</div>",
377
369
 
378
370
  editorStyles: [],
379
371
 
380
372
  toolsHtml: "<div class='wym_tools wym_section'>"
381
- + "<h2>{Tools}</h2>"
382
- + "<ul>"
383
- + WYMeditor.TOOLS_ITEMS
384
- + "</ul>"
385
- + "</div>",
386
-
387
- toolsItemHtml: "<li class='"
388
- + WYMeditor.TOOL_CLASS
389
- + "'><a href='#' name='"
390
- + WYMeditor.TOOL_NAME
391
- + "' title='"
392
- + WYMeditor.TOOL_TITLE
393
- + "'>"
394
- + WYMeditor.TOOL_TITLE
395
- + "</a></li>",
373
+ + "<h2>{Tools}</h2>"
374
+ + "<ul>" + WYMeditor.TOOLS_ITEMS + "</ul>"
375
+ + "</div>",
376
+
377
+ toolsItemHtml:"<li class='" + WYMeditor.TOOL_CLASS + "'>"
378
+ + "<a href='#' name='" + WYMeditor.TOOL_NAME + "' title='" + WYMeditor.TOOL_TITLE + "'>"
379
+ + WYMeditor.TOOL_TITLE
380
+ + "</a>"
381
+ + "</li>",
396
382
 
397
383
  toolsItems: [
398
384
  {'name': 'Bold', 'title': 'Strong', 'css': 'wym_tools_strong'},
399
385
  {'name': 'Italic', 'title': 'Emphasis', 'css': 'wym_tools_emphasis'},
400
- {'name': 'Superscript', 'title': 'Superscript',
401
- 'css': 'wym_tools_superscript'},
402
- {'name': 'Subscript', 'title': 'Subscript',
403
- 'css': 'wym_tools_subscript'},
404
- {'name': 'InsertOrderedList', 'title': 'Ordered_List',
405
- 'css': 'wym_tools_ordered_list'},
406
- {'name': 'InsertUnorderedList', 'title': 'Unordered_List',
407
- 'css': 'wym_tools_unordered_list'},
386
+ {'name': 'Superscript', 'title': 'Superscript', 'css': 'wym_tools_superscript'},
387
+ {'name': 'Subscript', 'title': 'Subscript', 'css': 'wym_tools_subscript'},
388
+ {'name': 'InsertOrderedList', 'title': 'Ordered_List', 'css': 'wym_tools_ordered_list'},
389
+ {'name': 'InsertUnorderedList', 'title': 'Unordered_List', 'css': 'wym_tools_unordered_list'},
408
390
  {'name': 'Indent', 'title': 'Indent', 'css': 'wym_tools_indent'},
409
391
  {'name': 'Outdent', 'title': 'Outdent', 'css': 'wym_tools_outdent'},
410
392
  {'name': 'Undo', 'title': 'Undo', 'css': 'wym_tools_undo'},
@@ -413,8 +395,7 @@ $.fn.wymeditor = function(options) {
413
395
  {'name': 'Unlink', 'title': 'Unlink', 'css': 'wym_tools_unlink'},
414
396
  {'name': 'InsertImage', 'title': 'Image', 'css': 'wym_tools_image'},
415
397
  {'name': 'InsertTable', 'title': 'Table', 'css': 'wym_tools_table'},
416
- {'name': 'Paste', 'title': 'Paste_From_Word',
417
- 'css': 'wym_tools_paste'},
398
+ {'name': 'Paste', 'title': 'Paste_From_Word', 'css': 'wym_tools_paste'},
418
399
  {'name': 'ToggleHtml', 'title': 'HTML', 'css': 'wym_tools_html'},
419
400
  {'name': 'Preview', 'title': 'Preview', 'css': 'wym_tools_preview'}
420
401
  ],
@@ -426,14 +407,11 @@ $.fn.wymeditor = function(options) {
426
407
  + "</ul>"
427
408
  + "</div>",
428
409
 
429
- containersItemHtml:"<li class='"
430
- + WYMeditor.CONTAINER_CLASS
431
- + "'>"
432
- + "<a href='#' name='"
433
- + WYMeditor.CONTAINER_NAME
434
- + "'>"
435
- + WYMeditor.CONTAINER_TITLE
436
- + "</a></li>",
410
+ containersItemHtml:"<li class='" + WYMeditor.CONTAINER_CLASS + "'>"
411
+ + "<a href='#' name='" + WYMeditor.CONTAINER_NAME + "'>"
412
+ + WYMeditor.CONTAINER_TITLE
413
+ + "</a>"
414
+ +"</li>",
437
415
 
438
416
  containersItems: [
439
417
  {'name': 'P', 'title': 'Paragraph', 'css': 'wym_containers_p'},
@@ -444,8 +422,7 @@ $.fn.wymeditor = function(options) {
444
422
  {'name': 'H5', 'title': 'Heading_5', 'css': 'wym_containers_h5'},
445
423
  {'name': 'H6', 'title': 'Heading_6', 'css': 'wym_containers_h6'},
446
424
  {'name': 'PRE', 'title': 'Preformatted', 'css': 'wym_containers_pre'},
447
- {'name': 'BLOCKQUOTE', 'title': 'Blockquote',
448
- 'css': 'wym_containers_blockquote'},
425
+ {'name': 'BLOCKQUOTE', 'title': 'Blockquote', 'css': 'wym_containers_blockquote'},
449
426
  {'name': 'TH', 'title': 'Table_Header', 'css': 'wym_containers_th'}
450
427
  ],
451
428
 
@@ -454,22 +431,22 @@ $.fn.wymeditor = function(options) {
454
431
  + WYMeditor.CLASSES_ITEMS
455
432
  + "</ul></div>",
456
433
 
457
- classesItemHtml: "<li><a href='#' name='"
458
- + WYMeditor.CLASS_NAME
459
- + "'>"
460
- + WYMeditor.CLASS_TITLE
461
- + "</a></li>",
434
+ classesItemHtml: "<li class='wym_classes_" + WYMeditor.CLASS_NAME + "'>"
435
+ + "<a href='#' name='" + WYMeditor.CLASS_NAME + "'>"
436
+ + WYMeditor.CLASS_TITLE
437
+ + "</a>"
438
+ +"</li>",
462
439
 
463
440
  classesItems: [],
464
441
 
465
442
  statusHtml: "<div class='wym_status wym_section'>"
466
443
  + "<h2>{Status}</h2>"
467
- + "</div>",
444
+ +"</div>",
468
445
 
469
446
  htmlHtml: "<div class='wym_html wym_section'>"
470
447
  + "<h2>{Source_Code}</h2>"
471
448
  + "<textarea class='wym_html_val'></textarea>"
472
- + "</div>",
449
+ +"</div>",
473
450
 
474
451
  boxSelector: ".wym_box",
475
452
  toolsSelector: ".wym_tools",
@@ -493,6 +470,7 @@ $.fn.wymeditor = function(options) {
493
470
  targetSelector: ".wym_target",
494
471
  altSelector: ".wym_alt",
495
472
  textSelector: ".wym_text",
473
+ sizeSelector: ".wym_size",
496
474
 
497
475
  rowsSelector: ".wym_rows",
498
476
  colsSelector: ".wym_cols",
@@ -514,33 +492,23 @@ $.fn.wymeditor = function(options) {
514
492
  updateEvent: "click",
515
493
 
516
494
  dialogFeatures: {
517
- width: 560
495
+ width: 560
518
496
  , height: 300
519
497
  }
520
498
 
521
- , dialogHtml: "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'"
522
- + " 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>"
523
- + "<html dir='"
524
- + WYMeditor.DIRECTION
525
- + "'><head>"
526
- + "<link rel='stylesheet' type='text/css' media='screen'"
527
- + " href='"
528
- + WYMeditor.CSS_PATH
529
- + "' />"
530
- + "<title>"
531
- + WYMeditor.DIALOG_TITLE
532
- + "</title>"
533
- + "<script type='text/javascript'"
534
- + " src='"
535
- + WYMeditor.JQUERY_PATH
536
- + "'></script>"
537
- + "<script type='text/javascript'"
538
- + " src='"
539
- + WYMeditor.WYM_PATH
540
- + "'></script>"
541
- + "</head>"
542
- + WYMeditor.DIALOG_BODY
543
- + "</html>",
499
+ , dialogFeaturesPreview: "menubar=no,titlebar=no,toolbar=no,resizable=no,scrollbars=yes,width=560,height=300,top=0,left=0"
500
+
501
+ , dialogHtml:"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'"
502
+ + " 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>"
503
+ + "<html dir='" + WYMeditor.DIRECTION + "'>"
504
+ + "<head>"
505
+ + "<link rel='stylesheet' type='text/css' media='screen'" + " href='" + WYMeditor.CSS_PATH + "' />"
506
+ + "<title>" + WYMeditor.DIALOG_TITLE + "</title>"
507
+ + "<script type='text/javascript' src='" + WYMeditor.JQUERY_PATH + "'></script>"
508
+ + "<script type='text/javascript' src='" + WYMeditor.WYM_PATH + "'></script>"
509
+ + "</head>"
510
+ + WYMeditor.DIALOG_BODY
511
+ + "</html>",
544
512
 
545
513
  dialogLinkHtml: "<div class='wym_dialog wym_dialog_link'>"
546
514
  + "<form>"
@@ -558,7 +526,7 @@ $.fn.wymeditor = function(options) {
558
526
  + "<input type='text' class='wym_title' value='' size='40' />"
559
527
  + "</div>"
560
528
  + "<div class='row row-indent'>"
561
- + "<input class='wym_submit' type='button'"
529
+ + "<input class='wym_submit button' type='button'"
562
530
  + " value='{Submit}' />"
563
531
  + "<input class='wym_cancel' type='button'"
564
532
  + "value='{Cancel}' />"
@@ -587,7 +555,7 @@ $.fn.wymeditor = function(options) {
587
555
  + "<input type='text' class='wym_title' value='' size='40' />"
588
556
  + "</div>"
589
557
  + "<div class='row row-indent'>"
590
- + "<input class='wym_submit' type='button'"
558
+ + "<input class='wym_submit button' type='button'"
591
559
  + " value='{Submit}' />"
592
560
  + "<input class='wym_cancel' type='button'"
593
561
  + "value='{Cancel}' />"
@@ -618,7 +586,7 @@ $.fn.wymeditor = function(options) {
618
586
  + "<input type='text' class='wym_cols' value='2' size='3' />"
619
587
  + "</div>"
620
588
  + "<div class='row row-indent'>"
621
- + "<input class='wym_submit' type='button'"
589
+ + "<input class='wym_submit button' type='button'"
622
590
  + " value='{Submit}' />"
623
591
  + "<input class='wym_cancel' type='button'"
624
592
  + "value='{Cancel}' />"
@@ -637,7 +605,7 @@ $.fn.wymeditor = function(options) {
637
605
  + "<textarea class='wym_text' rows='10' cols='50'></textarea>"
638
606
  + "</div>"
639
607
  + "<div class='row'>"
640
- + "<input class='wym_submit' type='button'"
608
+ + "<input class='wym_submit button' type='button'"
641
609
  + " value='{Submit}' />"
642
610
  + "<input class='wym_cancel' type='button'"
643
611
  + "value='{Cancel}' />"
@@ -700,7 +668,7 @@ WYMeditor.editor.prototype.init = function() {
700
668
  else if ($.browser.opera) {
701
669
  var WymClass = new WYMeditor.WymClassOpera(this);
702
670
  }
703
- else if ($.browser.safari) {
671
+ else if ($.browser.webkit) {
704
672
  var WymClass = new WYMeditor.WymClassSafari(this);
705
673
  }
706
674
 
@@ -724,19 +692,25 @@ WYMeditor.editor.prototype.init = function() {
724
692
  for (var prop in WymClass) { this[prop] = WymClass[prop]; }
725
693
 
726
694
  //load wymbox
727
- this._box = $(this._element).hide().after(this._options.boxHtml).next();
695
+ this._box = $(this._element).hide().after(this._options.boxHtml).next().addClass('wym_box_' + this._index);
728
696
 
729
- //store the instance index in the wymbox element
697
+ //store the instance index in wymbox and element replaced by editor instance
730
698
  //but keep it compatible with jQuery < 1.2.3, see #122
731
- if( $.isFunction( $.fn.data ) )
699
+ if( $.isFunction( $.fn.data ) ) {
732
700
  $.data(this._box.get(0), WYMeditor.WYM_INDEX, this._index);
701
+ $.data(this._element.get(0), WYMeditor.WYM_INDEX, this._index);
702
+ }
733
703
 
734
704
  var h = WYMeditor.Helper;
735
705
 
736
706
  //construct the iframe
737
707
  var iframeHtml = this._options.iframeHtml;
708
+
738
709
  iframeHtml = h.replaceAll(iframeHtml, WYMeditor.INDEX, this._index);
739
710
  iframeHtml = h.replaceAll(iframeHtml, WYMeditor.IFRAME_BASE_PATH, this._options.iframeBasePath);
711
+ if (id_of_editor = this._element.parent().attr('id')) {
712
+ iframeHtml = h.replaceAll(iframeHtml, '/wymiframe', '/wymiframe/' + id_of_editor);
713
+ }
740
714
 
741
715
  //construct wymbox
742
716
  var boxHtml = $(this._box).html();
@@ -840,6 +814,7 @@ WYMeditor.editor.prototype.bindEvents = function() {
840
814
 
841
815
  //handle click event on tools buttons
842
816
  $(this._box).find(this._options.toolSelector).click(function() {
817
+ wym._iframe.contentWindow.focus(); //See #154
843
818
  wym.exec($(this).attr(WYMeditor.NAME));
844
819
  return(false);
845
820
  });
@@ -851,9 +826,11 @@ WYMeditor.editor.prototype.bindEvents = function() {
851
826
  });
852
827
 
853
828
  //handle keyup event on html value: set the editor value
854
- $(this._box).find(this._options.htmlValSelector).keyup(function() {
855
- $(wym._doc.body).html($(this).val());
856
- });
829
+ //handle focus/blur events to check if the element has focus, see #147
830
+ $(this._box).find(this._options.htmlValSelector)
831
+ .keyup(function() { $(wym._doc.body).html($(this).val());})
832
+ .focus(function() { $(this).toggleClass('hasfocus'); })
833
+ .blur(function() { $(this).toggleClass('hasfocus'); });
857
834
 
858
835
  //handle click event on classes buttons
859
836
  $(this._box).find(this._options.classSelector).click(function() {
@@ -890,6 +867,7 @@ WYMeditor.editor.prototype.bindEvents = function() {
890
867
  // now hide the menu
891
868
  wym.exec(WYMeditor.APPLY_CLASS);
892
869
 
870
+ wym._iframe.contentWindow.focus(); //See #154
893
871
  return(false);
894
872
  });
895
873
 
@@ -927,8 +905,11 @@ WYMeditor.editor.prototype.html = function(html) {
927
905
  */
928
906
  WYMeditor.editor.prototype.intercept_paste = function(e) {
929
907
  var wym = WYMeditor.INSTANCES[this.title];
908
+ wym.format_block();
930
909
  wym.exec(WYMeditor.PASTE);
931
- e.preventDefault();
910
+ if (e) {
911
+ e.preventDefault();
912
+ }
932
913
  }
933
914
 
934
915
  /* @name xhtml
@@ -969,9 +950,9 @@ WYMeditor.editor.prototype.exec = function(cmd) {
969
950
  this.toggleHtml();
970
951
 
971
952
  //partially fixes #121 when the user manually inserts an image
972
- if(!$(this._box).find(this._options.htmlSelector).is(':visible')) {
973
- this.listen();
974
- }
953
+ //if(!$(this._box).find(this._options.htmlSelector).is(':visible')) {
954
+ // this.listen();
955
+ //}
975
956
  break;
976
957
 
977
958
  case WYMeditor.PREVIEW:
@@ -1219,11 +1200,12 @@ WYMeditor.editor.prototype.update = function() {
1219
1200
 
1220
1201
  // the replace function below makes the HTML source code easier to read when end users need to use this view.
1221
1202
  var html = this.xhtml().replace(/<\/([A-Za-z0-9]*)></g, function(m){return m.split(">").join(">\n")});
1222
- html = html.replace(/src=\"system\/images/, 'src="/system/images'); // make system/images calls absolute.
1223
- html = html.replace(/(replace_me_with_wym-[0-9]*)/, ""); // get rid of replace_me_with_wym id tags that were forgotten about.
1203
+ html = html.replace(/src=\"system\/images/g, 'src="/system/images'); // make system/images calls absolute.
1204
+ html = html.replace(/(\ ?id=(\"|\')replace_me_with_wym-[0-9]*(\"|\'))/g, ''); // get rid of replace_me_with_wym id tags that were forgotten about.
1205
+ html = html.replace(/(\ ?id=(\"|\')last\_paste(\"|\'))/g, '') // get rid of id='last_page' that were forgotten about.
1224
1206
 
1225
1207
  $(this._element).val(html);
1226
- $(this._box).find(this._options.htmlValSelector).val(html);
1208
+ $(this._box).find(this._options.htmlValSelector).not('.hasfocus').val(html); //#147
1227
1209
  };
1228
1210
 
1229
1211
  /* @name dialog
@@ -1238,27 +1220,23 @@ WYMeditor.editor.prototype.dialog = function( dialogType ) {
1238
1220
  this._redo_on_cancel = false;
1239
1221
 
1240
1222
  var selected = this.selected();
1241
- //set to P if parent = BODY
1242
- if ($.inArray(dialogType, [WYMeditor.DIALOG_TABLE, WYMeditor.DIALOG_PASTE]) == -1)
1243
- {
1244
- if (selected != null){
1245
- if(selected.tagName.toLowerCase() == WYMeditor.BODY) {
1246
- this._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);
1247
- }
1248
- }
1249
- else {
1250
- // somehow select the wymeditor textarea or simulate a click or a keydown on it.
1251
- }
1223
+ //set to P if parent = BODY unless it's a table going in there.
1224
+ if (dialogType != WYMeditor.DIALOG_TABLE) {
1225
+ this.format_block();
1252
1226
  }
1253
1227
 
1254
1228
  var wym = this;
1255
1229
  if (dialogType == WYMeditor.DIALOG_LINK && $.browser.mozilla) {
1256
1230
  selection = wym._iframe.contentWindow.getSelection();
1257
1231
  matches = $($(selected).html().match(new RegExp(selection.anchorNode.textContent + "(.*)" + selection.focusNode.textContent)));
1258
- if (matches != null && matches.length > 0 && (possible_anchor_tag = matches.last()).length > 0) {
1259
- if (((href_matches = possible_anchor_tag.get(0).match(/href="([^"]*)"/)) != null) && (href = $(href_matches).last().get(0)) != null) {
1260
- $(wym._doc).find('a').each(function(index, possible_match) {
1261
- if ($(possible_match).html() == selection) {
1232
+ if (matches != null && matches.length > 0 && (possible_anchor_tag = matches.last()).length > 0)
1233
+ {
1234
+ if (((href_matches = possible_anchor_tag.get(0).match(/href="([^"]*)"/)) != null) && (href = $(href_matches).last().get(0)) != null)
1235
+ {
1236
+ $(wym._doc).find('a').each(function(index, possible_match)
1237
+ {
1238
+ if ($(possible_match).html() == selection)
1239
+ {
1262
1240
  selected = possible_match;
1263
1241
  }
1264
1242
  })
@@ -1277,11 +1255,11 @@ WYMeditor.editor.prototype.dialog = function( dialogType ) {
1277
1255
  else {
1278
1256
  parent_node = selected;
1279
1257
  }
1280
-
1258
+
1281
1259
  if ((parent_node != null) && (parent_node.tagName.toLowerCase() != WYMeditor.A))
1282
1260
  {
1283
- // wrap the current selection with a funky span (not required for safari)
1284
- if (!this._selected_image && !$.browser.safari)
1261
+ // wrap the current selection with a funky span (not required for webkit)
1262
+ if (this._selected_image == null && !$.browser.webkit)
1285
1263
  {
1286
1264
  this.wrap("<span id='replace_me_with_" + this._current_unique_stamp + "'>", "</span>");
1287
1265
  }
@@ -1301,30 +1279,31 @@ WYMeditor.editor.prototype.dialog = function( dialogType ) {
1301
1279
  }
1302
1280
 
1303
1281
  // launch dialog
1304
-
1305
1282
  dialog_title = wym.replaceStrings(wym.encloseString( dialogType ));
1306
1283
  dialog_container = $("<div id='" + wym._options.dialogId + "' class='editor_dialog'></div>");
1307
1284
  switch(dialogType) {
1308
1285
  case WYMeditor.DIALOG_TABLE: {
1309
1286
  // create and open dialog
1310
- dialog_container.html(wym.replaceStrings(wym._options.dialogTableHtml)).dialog($.extend(wym._options.dialogInlineFeatures, {
1311
- title: dialog_title
1312
- }));
1287
+ dialog_container.html(wym.replaceStrings(wym._options.dialogTableHtml))
1288
+ .dialog($.extend(wym._options.dialogInlineFeatures, {
1289
+ title: dialog_title
1290
+ }));
1313
1291
 
1314
1292
  ajax_loaded_callback();
1315
1293
  break;
1316
1294
  }
1317
1295
  case WYMeditor.DIALOG_PASTE: {
1318
- dialog_container.html(wym.replaceStrings(wym._options.dialogPasteHtml)).dialog($.extend(wym._options.dialogInlineFeatures, {
1319
- title: dialog_title
1320
- }));
1296
+ dialog_container.html(wym.replaceStrings(wym._options.dialogPasteHtml))
1297
+ .dialog($.extend(wym._options.dialogInlineFeatures, {
1298
+ title: dialog_title
1299
+ }));
1321
1300
 
1322
1301
  ajax_loaded_callback();
1323
1302
  break;
1324
1303
  }
1325
1304
  default:
1326
1305
  {
1327
- $("<img id='dialog_loading' src='/images/refinery/dialogLoadingAnimation.gif />").appendTo(dialog_container);
1306
+ $("<img id='dialog_loading' src='/images/refinery/dialogLoadingAnimation.gif' width='208' height='13' />").appendTo(dialog_container);
1328
1307
  dialog_container.dialog($.extend(wym._options.dialogFeatures, {
1329
1308
  title: dialog_title
1330
1309
  })).load(path, ajax_loaded_callback);
@@ -1341,9 +1320,12 @@ WYMeditor.editor.prototype.dialog_ajax_callback = function(selected) {
1341
1320
  // now fix the height;
1342
1321
  $("#" + wym._options.dialogId + ".editor_dialog").css('height', 'auto');
1343
1322
 
1323
+ // add corners to the buttons.
1324
+ $('#' + wym._options.dialogId + " .button").corner('6px');
1325
+
1344
1326
  // look for iframes
1345
1327
  (iframes = $("#" + this._options.dialogId).find('iframe')).load(function() {
1346
- WYMeditor.INIT_DIALOG(wym, _selected);
1328
+ WYMeditor.INIT_DIALOG(wym, _selected, true);
1347
1329
  $(this).unbind('load');
1348
1330
  });
1349
1331
 
@@ -1364,7 +1346,6 @@ WYMeditor.editor.prototype.uniqueStamp = function() {
1364
1346
  };
1365
1347
 
1366
1348
  WYMeditor.editor.prototype.paste = function(sData) {
1367
-
1368
1349
  wym = this;
1369
1350
 
1370
1351
  wym.format_block();
@@ -1373,10 +1354,10 @@ WYMeditor.editor.prototype.paste = function(sData) {
1373
1354
  replaceable = $(wym._doc.body).find('#replace_me_with_' + wym._current_unique_stamp);
1374
1355
 
1375
1356
  // replaceable doesn't actually get replaced here, it's just used as a marker for where the cursor was.
1376
- var container = replaceable.get(0) || this.selected();
1357
+ container = replaceable.get(0) || this.selected();
1377
1358
 
1378
1359
  //split the data, using double newlines as the separator
1379
- var aP = sData.split(wym._newLine + wym._newLine);
1360
+ var aP = sData.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").split(wym._newLine + wym._newLine);
1380
1361
  var rExp = new RegExp(wym._newLine, "g");
1381
1362
 
1382
1363
  //add a P for each item
@@ -1411,7 +1392,7 @@ WYMeditor.editor.prototype.paste = function(sData) {
1411
1392
  }
1412
1393
 
1413
1394
  } else {
1414
- $(container).html($(container).html() + sTmp);
1395
+ $(container).html($(container).html().replace(/^<br\/?>$/, '') + sTmp);
1415
1396
  }
1416
1397
  } else {
1417
1398
  if ((aP.length -1) == x) {
@@ -1479,6 +1460,17 @@ WYMeditor.editor.prototype.unwrap = function(selection) {
1479
1460
  }
1480
1461
  };
1481
1462
 
1463
+ WYMeditor.editor.prototype.setFocusToNode = function(node, toStart) {
1464
+ var range = this._doc.createRange(),
1465
+ selection = this._iframe.contentWindow.getSelection();
1466
+ toStart = toStart ? 0 : 1;
1467
+
1468
+ range.selectNodeContents(node);
1469
+ selection.addRange(range);
1470
+ selection.collapse(node, toStart);
1471
+ this._iframe.contentWindow.focus();
1472
+ }
1473
+
1482
1474
  WYMeditor.editor.prototype.addCssRules = function(doc, aCss) {
1483
1475
  var styles = doc.styleSheets[0];
1484
1476
  if(styles) {
@@ -1494,25 +1486,19 @@ WYMeditor.editor.prototype.format_block = function(selected) {
1494
1486
  //'this' should be the wymeditor instance.
1495
1487
  var wym = this;
1496
1488
 
1497
- var container = selected || wym.selected();
1498
-
1499
- wym._selected_image = null;
1500
-
1489
+ var container = selected || wym.selected() || $(wym._iframe).contents().find('body').get(0);
1501
1490
  var name = container.tagName.toLowerCase();
1502
-
1491
+
1503
1492
  //fix forbidden main containers
1504
- if(
1505
- name == "strong" ||
1506
- name == "b" ||
1507
- name == "em" ||
1508
- name == "i" ||
1509
- name == "sub" ||
1510
- name == "sup" ||
1511
- name == "a"
1512
-
1513
- ) name = container.parentNode.tagName.toLowerCase();
1493
+ if($.inArray(name, ['strong', 'b', 'em', 'i', 'sub', 'sup', 'a']) > -1) {
1494
+ name = container.parentNode.tagName.toLowerCase();
1495
+ }
1514
1496
 
1515
- if(name == WYMeditor.BODY) wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);
1497
+ if(name == WYMeditor.BODY) {
1498
+ wym._selected_image = null;
1499
+ $(wym._iframe).contents().find('.selected_by_wym').removeClass('selected_by_wym');
1500
+ wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);
1501
+ }
1516
1502
  };
1517
1503
 
1518
1504
  /********** CONFIGURATION **********/
@@ -1581,11 +1567,13 @@ WYMeditor.editor.prototype.listen = function() {
1581
1567
  $(this._doc).find('a[href]').click(function(e){e.preventDefault();});
1582
1568
  };
1583
1569
 
1584
- WYMeditor.editor.prototype.mousedown = function(evt) {
1570
+ WYMeditor.editor.prototype.mousedown = function(e) {
1585
1571
 
1586
1572
  var wym = WYMeditor.INSTANCES[this.ownerDocument.title];
1587
- wym._selected_image = (this.tagName.toLowerCase() == WYMeditor.IMG) ? this : null;
1588
- evt.stopPropagation();
1573
+ wym._selected_image = (e.target.tagName.toLowerCase() == WYMeditor.IMG) ? e.target : null;
1574
+ $(wym._iframe).contents().find('.selected_by_wym').removeClass('selected_by_wym');
1575
+ if (!$.browser.mozilla) $(wym._selected_image).addClass('selected_by_wym');
1576
+ if (!$.browser.webkit) e.stopPropagation();
1589
1577
  };
1590
1578
 
1591
1579
  /********** SKINS **********/
@@ -1624,7 +1612,7 @@ WYMeditor.editor.prototype.loadSkin = function() {
1624
1612
 
1625
1613
  // if not found, load it, using the skin path
1626
1614
  if(!found) {
1627
- WYMeditor.loadCss( this._options.cssSkinPath + WYMeditor.SKINS_DEFAULT_CSS );
1615
+ WYMeditor.loadCss( this._options.cssCompiledSkinPath + WYMeditor.SKINS_DEFAULT_CSS );
1628
1616
  }
1629
1617
  }
1630
1618
 
@@ -1634,7 +1622,7 @@ WYMeditor.editor.prototype.loadSkin = function() {
1634
1622
  //does the user want to use some JS to initialize the skin (default: yes)?
1635
1623
  //also check if it hasn't already been loaded by another instance
1636
1624
  if(this._options.initSkin && !WYMeditor.SKINS[this._options.skin]) {
1637
- eval($.ajax({url:this._options.jsSkinPath + WYMeditor.SKINS_DEFAULT_JS, async:false}).responseText);
1625
+ eval($.ajax({url:this._options.jsCompiledSkinPath + WYMeditor.SKINS_DEFAULT_JS, async:false}).responseText);
1638
1626
  }
1639
1627
 
1640
1628
  //init the skin, if needed
@@ -1651,9 +1639,13 @@ WYMeditor.INIT_DIALOG = function(wym, selected, isIframe) {
1651
1639
 
1652
1640
  var selected = selected || wym.selected();
1653
1641
  var dialog = $("#"+wym._options.dialogId);
1654
- var doc = (isIframe ? dialog.find('iframe').get(0).document() : document);
1642
+ var doc = $((isIframe ? dialog.find('iframe').contents() : document));
1655
1643
  var dialogType = dialog.find('#wym_dialog_type').val();
1656
- var replaceable = wym._selected_image ? $(wym._selected_image) : $(wym._doc.body).find('#replace_me_with_' + wym._current_unique_stamp);
1644
+ if (wym._selected_image) {
1645
+ var replaceable = $(wym._selected_image);
1646
+ } else {
1647
+ var replaceable = $(wym._doc.body).find('#replace_me_with_' + wym._current_unique_stamp);
1648
+ }
1657
1649
 
1658
1650
  // focus first textarea or input type text element
1659
1651
  dialog.find('input[type=text], textarea').first().focus();
@@ -1667,14 +1659,7 @@ WYMeditor.INIT_DIALOG = function(wym, selected, isIframe) {
1667
1659
  wym._options.preInitDialog(wym, window);
1668
1660
  }
1669
1661
 
1670
- //auto populate image fields if selected image
1671
- if(wym._selected_image) {
1672
- $(wym._options.dialogImageSelector).find(wym._options.srcSelector).val($(wym._selected_image).attr(WYMeditor.SRC));
1673
- $(wym._options.dialogImageSelector).find(wym._options.titleSelector).val($(wym._selected_image).attr(WYMeditor.TITLE));
1674
- $(wym._options.dialogImageSelector).find(wym._options.altSelector).val($(wym._selected_image).attr(WYMeditor.ALT));
1675
- }
1676
-
1677
- $(wym._options.dialogLinkSelector).find(wym._options.submitSelector).click(function()
1662
+ $(wym._options.dialogLinkSelector).find(wym._options.submitSelector).click(function(e)
1678
1663
  {
1679
1664
  if ((sUrl = $(wym._options.hrefSelector).val()).length > 0)
1680
1665
  {
@@ -1716,33 +1701,53 @@ WYMeditor.INIT_DIALOG = function(wym, selected, isIframe) {
1716
1701
  }
1717
1702
  }
1718
1703
  // fire a click event on the dialogs close button
1719
- wym.close_dialog();
1704
+ wym.close_dialog(e);
1720
1705
  });
1721
1706
 
1722
- $(wym._options.dialogImageSelector).find(wym._options.submitSelector).click(function() {
1707
+ //auto populate image fields if selected image
1708
+ if(wym._selected_image) {
1709
+ imgDialog = $(wym._options.dialogImageSelector);
1710
+ img = $(wym._selected_image);
1711
+ size = ((img.attr(WYMeditor.REL) || doc.find('#existing_image_size_area li.selected a').attr('rel')) || "");
1712
+ src = img.attr(WYMeditor.SRC);
1713
+ if (size.length > 0) {
1714
+ src = src.replace('_' + size + '.', '.');
1715
+ doc.find('#existing_image_size_area li.selected').removeClass('selected');
1716
+ doc.find("#existing_image_size_area li a[href='#" + size + "']").parents('li:first').addClass('selected');
1717
+ }
1718
+
1719
+ imgDialog.find(wym._options.srcSelector).val(src);
1720
+ imgDialog.find(wym._options.titleSelector).val(img.attr(WYMeditor.TITLE));
1721
+ imgDialog.find(wym._options.altSelector).val(img.attr(WYMeditor.ALT));
1722
+ imgDialog.find(wym._options.sizeSelector).val(size);
1723
+
1724
+ (src = src.split('.')).pop();
1725
+ doc.find("#existing_image_area_content li img[src^='" + src + "']").parents('li:first').addClass('selected');
1726
+ }
1727
+
1728
+ $(wym._options.dialogImageSelector).find(wym._options.submitSelector).click(function(e) {
1723
1729
  form = $(this.form);
1724
1730
  if ((url = form.find(wym._options.srcSelector).val()) != null && url.length > 0) {
1725
- wym._exec(WYMeditor.INSERT_IMAGE, wym._current_unique_stamp, selected);
1726
-
1727
- var image = $(wym._doc.body).find("img[src*=" + wym._current_unique_stamp + "]");
1731
+ wym._exec(WYMeditor.INSERT_IMAGE, wym._current_unique_stamp, selected);
1728
1732
 
1729
- if(image.length > 0) {
1733
+ if((image = $(wym._doc.body).find("img[src*=" + wym._current_unique_stamp + "]")).length > 0) {
1730
1734
  image.attr(WYMeditor.SRC, url)
1731
1735
  .attr(WYMeditor.TITLE, form.find(wym._options.titleSelector).val())
1732
- .attr(WYMeditor.ALT, form.find(wym._options.srcSelector).val());
1736
+ .attr(WYMeditor.ALT, form.find(wym._options.titleSelector).val())
1737
+ .attr(WYMeditor.REL, form.find(wym._options.sizeSelector).val());
1733
1738
 
1734
- if (!$.browser.safari && replaceable != null && (this._selected_image == null || (this._selected_image != null && replaceable.parentNode != null)))
1739
+ if (!$.browser.webkit && replaceable != null && (this._selected_image == null || (this._selected_image != null && replaceable.parentNode != null)))
1735
1740
  {
1736
1741
  replaceable.after(image).remove();
1737
1742
  }
1738
1743
  }
1739
1744
 
1740
1745
  // fire a click event on the dialogs close button
1741
- wym.close_dialog();
1746
+ wym.close_dialog(e);
1742
1747
  }
1743
1748
  });
1744
1749
 
1745
- $(wym._options.dialogTableSelector).find(wym._options.submitSelector).click(function() {
1750
+ $(wym._options.dialogTableSelector).find(wym._options.submitSelector).click(function(e) {
1746
1751
  if((iRows = $(wym._options.rowsSelector).val()) > 0 && (iCols = $(wym._options.colsSelector).val()) > 0)
1747
1752
  {
1748
1753
  //create the table and the caption
@@ -1762,13 +1767,13 @@ WYMeditor.INIT_DIALOG = function(wym, selected, isIframe) {
1762
1767
  else $(node).after(table);
1763
1768
  }
1764
1769
  // fire a click event on the dialogs close button
1765
- wym.close_dialog();
1770
+ wym.close_dialog(e);
1766
1771
  });
1767
1772
 
1768
- $(wym._options.dialogPasteSelector).find(wym._options.submitSelector).click(function() {
1773
+ $(wym._options.dialogPasteSelector).find(wym._options.submitSelector).click(function(e) {
1769
1774
  wym.paste($(wym._options.textSelector).val());
1770
1775
 
1771
- wym.close_dialog();
1776
+ wym.close_dialog(e);
1772
1777
  });
1773
1778
 
1774
1779
  $(wym._options.dialogPreviewSelector).find(wym._options.previewSelector).html(wym.xhtml());
@@ -2308,7 +2313,8 @@ WYMeditor.XhtmlValidator = {
2308
2313
  "3":"ismap",
2309
2314
  "4":"longdesc",
2310
2315
  "5":"usemap",
2311
- "6":"width"
2316
+ "6":"width",
2317
+ "7":"rel"
2312
2318
  },
2313
2319
  "required":[
2314
2320
  "alt",
@@ -3178,7 +3184,7 @@ WYMeditor.Lexer.prototype._decodeSpecial = function(mode)
3178
3184
  WYMeditor.Lexer.prototype._invokeParser = function(content, is_match)
3179
3185
  {
3180
3186
 
3181
- if (!/ +/.test(content) && ((content === '') || (content === false))) {
3187
+ if (content === '') {
3182
3188
  return true;
3183
3189
  }
3184
3190
  var current = this._mode.getCurrent();
@@ -3706,7 +3712,7 @@ WYMeditor.XhtmlSaxListener.prototype.afterParsing = function(xhtml)
3706
3712
  WYMeditor.XhtmlSaxListener.prototype.replaceNamedEntities = function(xhtml)
3707
3713
  {
3708
3714
  for (var entity in this.entities) {
3709
- xhtml = xhtml.replace(entity, this.entities[entity]);
3715
+ xhtml = xhtml.replace(new RegExp(entity, 'g'), this.entities[entity]);
3710
3716
  }
3711
3717
  return xhtml;
3712
3718
  };
@@ -3720,7 +3726,18 @@ WYMeditor.XhtmlSaxListener.prototype.joinRepeatedEntities = function(xhtml)
3720
3726
 
3721
3727
  WYMeditor.XhtmlSaxListener.prototype.removeEmptyTags = function(xhtml)
3722
3728
  {
3723
- return xhtml.replace(new RegExp('<('+this.block_tags.join("|").replace(/\|td/,'')+')>(<br \/>|&#160;|&nbsp;|\\s)*<\/\\1>' ,'g'),'');
3729
+ return xhtml.replace(new RegExp('<('+this.block_tags.join("|").replace(/\|td/,'').replace(/\|th/, '')+')>(<br \/>|&#160;|&nbsp;|\\s)*<\/\\1>' ,'g'),'');
3730
+ };
3731
+
3732
+ WYMeditor.XhtmlSaxListener.prototype.removeBrInPre = function(xhtml)
3733
+ {
3734
+ var matches = xhtml.match(new RegExp('<pre[^>]*>(.*?)<\/pre>','gmi'));
3735
+ if(matches) {
3736
+ for(var i=0; i<matches.length; i++) {
3737
+ xhtml = xhtml.replace(matches[i], matches[i].replace(new RegExp('<br \/>', 'g'), String.fromCharCode(13,10)));
3738
+ }
3739
+ }
3740
+ return xhtml;
3724
3741
  };
3725
3742
 
3726
3743
  WYMeditor.XhtmlSaxListener.prototype.getResult = function()
@@ -3871,7 +3888,7 @@ WYMeditor.WymCssLexer = function(parser, only_wym_blocks)
3871
3888
  this.addExitPattern("/\\\x2a[<\/\\s]*WYMeditor[>\\s]*\\\x2a/", 'WymCss');
3872
3889
  }
3873
3890
 
3874
- this.addSpecialPattern("\\\x2e[a-z-_0-9]+[\\sa-z1-6]*", 'WymCss', 'WymCssStyleDeclaration');
3891
+ this.addSpecialPattern("[\\sa-z1-6]*\\\x2e[a-z-_0-9]+", 'WymCss', 'WymCssStyleDeclaration');
3875
3892
 
3876
3893
  this.addEntryPattern("/\\\x2a", 'WymCss', 'WymCssComment');
3877
3894
  this.addExitPattern("\\\x2a/", 'WymCssComment');
@@ -3879,8 +3896,8 @@ WYMeditor.WymCssLexer = function(parser, only_wym_blocks)
3879
3896
  this.addEntryPattern("\x7b", 'WymCss', 'WymCssStyle');
3880
3897
  this.addExitPattern("\x7d", 'WymCssStyle');
3881
3898
 
3882
- this.addEntryPattern("/\\\x2a", 'WymCssStyle', 'WymCssFeddbackStyle');
3883
- this.addExitPattern("\\\x2a/", 'WymCssFeddbackStyle');
3899
+ this.addEntryPattern("/\\\x2a", 'WymCssStyle', 'WymCssFeedbackStyle');
3900
+ this.addExitPattern("\\\x2a/", 'WymCssFeedbackStyle');
3884
3901
 
3885
3902
  return this;
3886
3903
  };
@@ -3944,7 +3961,7 @@ WYMeditor.WymCssParser.prototype.WymCssStyle = function(match, status)
3944
3961
  return true;
3945
3962
  };
3946
3963
 
3947
- WYMeditor.WymCssParser.prototype.WymCssFeddbackStyle = function(match, status)
3964
+ WYMeditor.WymCssParser.prototype.WymCssFeedbackStyle = function(match, status)
3948
3965
  {
3949
3966
  if(status == WYMeditor.LEXER_UNMATCHED){
3950
3967
  this._current_item[this._current_element].feedback_style = match.replace(/^([\s\/\*]*)|([\s\/\*]*)$/gm,'');
@@ -3957,10 +3974,10 @@ WYMeditor.WymCssParser.prototype.WymCssStyleDeclaration = function(match)
3957
3974
  match = match.replace(/^([\s\.]*)|([\s\.*]*)$/gm, '');
3958
3975
 
3959
3976
  var tag = '';
3960
- if(match.indexOf(' ') > 0){
3961
- var parts = match.split(' ');
3962
- this._current_element = parts[0];
3963
- var tag = parts[1];
3977
+ if(match.indexOf('.') > 0){
3978
+ var parts = match.split('.');
3979
+ this._current_element = parts[1];
3980
+ var tag = parts[0];
3964
3981
  }else{
3965
3982
  this._current_element = match;
3966
3983
  }
@@ -4082,7 +4099,7 @@ WYMeditor.Helper = {
4082
4099
  break;
4083
4100
  }
4084
4101
  }
4085
- return(ret);
4102
+ return ret;
4086
4103
  },
4087
4104
 
4088
4105
  //return 'item' object in 'arr' array, checking its 'name' property, or null
@@ -4091,11 +4108,12 @@ WYMeditor.Helper = {
4091
4108
  var item = arr[i];
4092
4109
  if(item.name == name) return(item);
4093
4110
  }
4094
- return(null);
4111
+ return null;
4095
4112
  }
4096
4113
  };
4097
4114
 
4098
4115
  function titleize(words) {
4116
+ if (words == null) return words;
4099
4117
  parts = [];
4100
4118
  $.each(words.replace(/\./, '').replace(/[-_]/, ' ').split(' '), function(index, part){
4101
4119
  parts.push(part.substring(0,1).toUpperCase() + part.substring(1));
@@ -4105,7 +4123,7 @@ function titleize(words) {
4105
4123
 
4106
4124
  /*
4107
4125
  * WYMeditor : what you see is What You Mean web-based editor
4108
- * Copyright (c) 2008 Jean-Francois Hovinne, http://www.wymeditor.org/
4126
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
4109
4127
  * Dual licensed under the MIT (MIT-license.txt)
4110
4128
  * and GPL (GPL-license.txt) licenses.
4111
4129
  *
@@ -4121,13 +4139,15 @@ function titleize(words) {
4121
4139
  * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
4122
4140
  * Bermi Ferrer (wymeditor a-t bermi dotorg)
4123
4141
  * Frédéric Palluel-Lafleur (fpalluel a-t gmail dotcom)
4124
- * Jonatan Lundin (jonatan.lundin _at_ gmail.com)
4142
+ * Jonatan Lundin (jonatan.lundin a-t gmail dotcom)
4125
4143
  */
4126
4144
 
4127
4145
  WYMeditor.WymClassExplorer = function(wym) {
4128
- this._wym = wym;
4129
- this._class = "className";
4130
- this._newLine = "\r\n";
4146
+
4147
+ this._wym = wym;
4148
+ this._class = "className";
4149
+ this._newLine = "\r\n";
4150
+
4131
4151
  };
4132
4152
 
4133
4153
  WYMeditor.WymClassExplorer.prototype.initIframe = function(iframe) {
@@ -4195,43 +4215,53 @@ WYMeditor.WymClassExplorer.prototype.initIframe = function(iframe) {
4195
4215
 
4196
4216
  //init designMode
4197
4217
  this._doc.designMode="on";
4198
-
4199
4218
  try{
4200
- // (bermi's note) noticed when running unit tests on IE6
4201
- // Is this really needed, it trigger an unexisting property on IE6
4202
- this._doc = iframe.contentWindow.document;
4219
+ // (bermi's note) noticed when running unit tests on IE6
4220
+ // Is this really needed, it trigger an unexisting property on IE6
4221
+ this._doc = iframe.contentWindow.document;
4203
4222
  }catch(e){}
4204
4223
  };
4205
4224
 
4206
4225
  WYMeditor.WymClassExplorer.prototype._exec = function(cmd,param) {
4207
- switch(cmd) {
4226
+
4227
+ switch(cmd) {
4228
+
4208
4229
  case WYMeditor.INDENT: case WYMeditor.OUTDENT:
4209
- // determine whether we're in a list item.
4210
- if (this.findUp(this.container(), WYMeditor.LI)) {
4211
- this._doc.execCommand(cmd);
4212
- }
4213
- break;
4230
+
4231
+ var container = this.findUp(this.container(), WYMeditor.LI);
4232
+ if(container) {
4233
+ var ancestor = container.parentNode.parentNode;
4234
+ if(container.parentNode.childNodes.length>1
4235
+ || ancestor.tagName.toLowerCase() == WYMeditor.OL
4236
+ || ancestor.tagName.toLowerCase() == WYMeditor.UL)
4237
+ this._doc.execCommand(cmd);
4238
+ }
4239
+ break;
4214
4240
  default:
4215
- if(param) this._doc.execCommand(cmd,false,param);
4216
- else this._doc.execCommand(cmd);
4217
- break;
4241
+ if(param) this._doc.execCommand(cmd,false,param);
4242
+ else this._doc.execCommand(cmd);
4243
+ break;
4218
4244
  }
4219
4245
 
4220
- this.listen();
4221
4246
  };
4222
4247
 
4223
4248
  WYMeditor.WymClassExplorer.prototype.selected = function() {
4224
- if((caretPos = this._iframe.contentWindow.document.caretPos)!=null && caretPos.parentElement!=undefined) {
4225
- return(caretPos.parentElement());
4226
- }
4249
+
4250
+ var caretPos = this._iframe.contentWindow.document.caretPos;
4251
+ if(caretPos!=null) {
4252
+ if(caretPos.parentElement!=undefined)
4253
+ return(caretPos.parentElement());
4254
+ }
4227
4255
  };
4228
4256
 
4229
4257
  WYMeditor.WymClassExplorer.prototype.saveCaret = function() {
4230
- this._doc.caretPos = this._doc.selection.createRange();
4258
+
4259
+ this._doc.caretPos = this._doc.selection.createRange();
4231
4260
  };
4232
4261
 
4233
4262
  WYMeditor.WymClassExplorer.prototype.addCssRule = function(styles, oCss) {
4234
- styles.addRule(oCss.name, oCss.css);
4263
+
4264
+ styles.addRule(oCss.name, oCss.css);
4235
4265
  };
4236
4266
 
4237
4267
  WYMeditor.WymClassExplorer.prototype.insert = function(html) {
@@ -4284,20 +4314,22 @@ WYMeditor.WymClassExplorer.prototype.unwrap = function() {
4284
4314
  //keyup handler
4285
4315
  WYMeditor.WymClassExplorer.prototype.keyup = function() {
4286
4316
  this._selected_image = null;
4317
+ $(this._iframe).contents().find('.selected_by_wym').removeClass('selected_by_wym');
4287
4318
  };
4288
4319
 
4289
- WYMeditor.WymClassExplorer.prototype.setFocusToNode = function(node) {
4320
+ WYMeditor.WymClassExplorer.prototype.setFocusToNode = function(node, toStart) {
4290
4321
  var range = this._doc.selection.createRange();
4322
+ toStart = toStart ? true : false;
4323
+
4291
4324
  range.moveToElementText(node);
4292
- range.collapse(false);
4293
- range.move('character',-1);
4325
+ range.collapse(toStart);
4294
4326
  range.select();
4295
4327
  node.focus();
4296
4328
  };
4297
4329
 
4298
4330
  /*
4299
4331
  * WYMeditor : what you see is What You Mean web-based editor
4300
- * Copyright (c) 2008 Jean-Francois Hovinne, http://www.wymeditor.org/
4332
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
4301
4333
  * Dual licensed under the MIT (MIT-license.txt)
4302
4334
  * and GPL (GPL-license.txt) licenses.
4303
4335
  *
@@ -4325,6 +4357,8 @@ WYMeditor.WymClassMozilla = function(wym) {
4325
4357
 
4326
4358
  WYMeditor.WymClassMozilla.prototype.initIframe = function(iframe) {
4327
4359
 
4360
+ var wym = this;
4361
+
4328
4362
  this._iframe = iframe;
4329
4363
  this._doc = iframe.contentDocument;
4330
4364
 
@@ -4340,6 +4374,9 @@ WYMeditor.WymClassMozilla.prototype.initIframe = function(iframe) {
4340
4374
  //set the text direction
4341
4375
  $('html', this._doc).attr('dir', this._options.direction);
4342
4376
 
4377
+ //add error class to body if the containing iframe has an error class
4378
+ $('.fieldWithErrors iframe').contents().find('body').addClass('fieldWithErrors');
4379
+
4343
4380
  //init html value
4344
4381
  this.html(this._wym._html);
4345
4382
 
@@ -4362,7 +4399,10 @@ WYMeditor.WymClassMozilla.prototype.initIframe = function(iframe) {
4362
4399
  $(this._doc).bind("paste", this.intercept_paste);
4363
4400
 
4364
4401
  //bind editor focus events (used to reset designmode - Gecko bug)
4365
- $(this._doc).bind("focus", this.enableDesignMode);
4402
+ $(this._doc).bind("focus", function (){
4403
+ // Fix scope
4404
+ wym.enableDesignMode.call(wym);
4405
+ });
4366
4406
 
4367
4407
  //post-init functions
4368
4408
  if($.isFunction(this._options.postInit)) this._options.postInit(this);
@@ -4431,10 +4471,6 @@ WYMeditor.WymClassMozilla.prototype._exec = function(cmd,param) {
4431
4471
  var container = this.selected();
4432
4472
  if(container.tagName.toLowerCase() == WYMeditor.BODY)
4433
4473
  this._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);
4434
-
4435
- //add event handlers on doc elements
4436
-
4437
- this.listen();
4438
4474
  };
4439
4475
 
4440
4476
 
@@ -4482,91 +4518,85 @@ WYMeditor.WymClassMozilla.prototype.addCssRule = function(styles, oCss) {
4482
4518
 
4483
4519
 
4484
4520
  //keydown handler, mainly used for keyboard shortcuts
4485
- WYMeditor.WymClassMozilla.prototype.keydown = function(evt) {
4521
+ WYMeditor.WymClassMozilla.prototype.keydown = function(e) {
4486
4522
 
4487
4523
  //'this' is the doc
4488
4524
  var wym = WYMeditor.INSTANCES[this.title];
4489
4525
 
4490
- if(evt.ctrlKey){
4491
- if(evt.keyCode == 66){
4526
+ if(e.ctrlKey){
4527
+ if(e.keyCode == 66){
4492
4528
  //CTRL+b => STRONG
4493
4529
  wym._exec(WYMeditor.BOLD);
4494
4530
  return false;
4495
4531
  }
4496
- if(evt.keyCode == 73){
4532
+ if(e.keyCode == 73){
4497
4533
  //CTRL+i => EMPHASIS
4498
4534
  wym._exec(WYMeditor.ITALIC);
4499
4535
  return false;
4500
4536
  }
4501
4537
  }
4538
+ else if(e.keyCode == 13) {
4539
+ if(!e.shiftKey){
4540
+ //fix PRE bug #73
4541
+ container = wym.selected();
4542
+ if(container && container.tagName.toLowerCase() == WYMeditor.PRE) {
4543
+ e.preventDefault();
4544
+ wym.insert('<p></p>');
4545
+ }
4546
+ }
4547
+ }
4502
4548
  };
4503
4549
 
4504
4550
  //keyup handler, mainly used for cleanups
4505
- WYMeditor.WymClassMozilla.prototype.keyup = function(evt) {
4551
+ WYMeditor.WymClassMozilla.prototype.keyup = function(e) {
4506
4552
 
4507
4553
  //'this' is the doc
4508
- var wym = WYMeditor.INSTANCES[this.title];
4509
- if (wym != null) {
4554
+ if ((wym = WYMeditor.INSTANCES[this.title]) != null)
4555
+ {
4510
4556
  wym._selected_image = null;
4557
+ $(wym._iframe).contents().find('.selected_by_wym').removeClass('selected_by_wym');
4511
4558
  var container = null;
4512
4559
 
4513
- if(evt.keyCode == 13 && !evt.shiftKey) {
4514
-
4515
- //RETURN key
4516
- //cleanup <br><br> between paragraphs
4560
+ if(e.keyCode == 13 && !e.shiftKey) {
4561
+ //RETURN key - cleanup <br><br> between paragraphs
4517
4562
  $(wym._doc.body).children(WYMeditor.BR).remove();
4518
4563
 
4519
4564
  //fix PRE bug #73
4520
- container = wym.selected();
4521
- if(container && container.tagName.toLowerCase() == WYMeditor.PRE)
4522
- wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P); //create P after PRE
4565
+ if((container = wym.selected()) && container.tagName.toLowerCase() == WYMeditor.PRE) {
4566
+ wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P); //create P after PRE
4567
+ }
4523
4568
  }
4524
-
4525
- else if(evt.keyCode != 8
4526
- && evt.keyCode != 17
4527
- && evt.keyCode != 46
4528
- && evt.keyCode != 224
4529
- && !evt.metaKey
4530
- && !evt.ctrlKey) {
4569
+ else if(($.inArray(e.keyCode, [8, 17, 46, 224]) == -1) && !e.metaKey && !e.ctrlKey) {
4531
4570
  //NOT BACKSPACE, NOT DELETE, NOT CTRL, NOT COMMAND
4532
4571
  //text nodes replaced by P
4533
-
4534
4572
  wym.format_block();
4535
4573
  }
4536
4574
  }
4537
4575
  };
4538
4576
 
4539
4577
  WYMeditor.WymClassMozilla.prototype.enableDesignMode = function() {
4540
- if(this.designMode == "off") {
4578
+ if(this._doc.designMode == "off") {
4541
4579
  try {
4542
- this.designMode = "on";
4543
- this.execCommand("styleWithCSS", '', false);
4544
- } catch(e) { }
4580
+ this._doc.designMode = "on";
4581
+ this._doc.execCommand("styleWithCSS", '', false);
4582
+ }
4583
+ catch(e) { }
4545
4584
  }
4546
4585
  };
4547
4586
 
4548
- WYMeditor.WymClassMozilla.prototype.setFocusToNode = function(node) {
4549
- var range = document.createRange();
4550
- range.selectNode(node);
4551
- var selected = this._iframe.contentWindow.getSelection();
4552
- selected.addRange(range);
4553
- selected.collapse(node, node.childNodes.length);
4554
- this._iframe.contentWindow.focus();
4555
- };
4556
-
4557
4587
  WYMeditor.WymClassMozilla.prototype.openBlockTag = function(tag, attributes)
4558
4588
  {
4559
4589
  var attributes = this.validator.getValidTagAttributes(tag, attributes);
4560
4590
 
4561
4591
  // Handle Mozilla styled spans
4562
- if(tag == 'span' && attributes.style){
4592
+ if(tag == 'span' && attributes.style) {
4563
4593
  var new_tag = this.getTagForStyle(attributes.style);
4564
4594
  if(new_tag){
4565
4595
  this._tag_stack.pop();
4566
4596
  var tag = new_tag;
4567
4597
  this._tag_stack.push(new_tag);
4568
4598
  attributes.style = '';
4569
- }else{
4599
+ } else {
4570
4600
  return;
4571
4601
  }
4572
4602
  }
@@ -4579,13 +4609,13 @@ WYMeditor.WymClassMozilla.prototype.getTagForStyle = function(style) {
4579
4609
  if(/bold/.test(style)) return 'strong';
4580
4610
  if(/italic/.test(style)) return 'em';
4581
4611
  if(/sub/.test(style)) return 'sub';
4582
- if(/sub/.test(style)) return 'super';
4612
+ if(/super/.test(style)) return 'super';
4583
4613
  return false;
4584
4614
  };
4585
4615
 
4586
4616
  /*
4587
4617
  * WYMeditor : what you see is What You Mean web-based editor
4588
- * Copyright (c) 2008 Jean-Francois Hovinne, http://www.wymeditor.org/
4618
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
4589
4619
  * Dual licensed under the MIT (MIT-license.txt)
4590
4620
  * and GPL (GPL-license.txt) licenses.
4591
4621
  *
@@ -4655,8 +4685,6 @@ WYMeditor.WymClassOpera.prototype.initIframe = function(iframe) {
4655
4685
  WYMeditor.WymClassOpera.prototype._exec = function(cmd,param) {
4656
4686
  if(param) this._doc.execCommand(cmd,false,param);
4657
4687
  else this._doc.execCommand(cmd);
4658
-
4659
- this.listen();
4660
4688
  };
4661
4689
 
4662
4690
  WYMeditor.WymClassOpera.prototype.selected = function() {
@@ -4675,7 +4703,7 @@ WYMeditor.WymClassOpera.prototype.addCssRule = function(styles, oCss) {
4675
4703
  };
4676
4704
 
4677
4705
  //keydown handler
4678
- WYMeditor.WymClassOpera.prototype.keydown = function(evt) {
4706
+ WYMeditor.WymClassOpera.prototype.keydown = function(e) {
4679
4707
 
4680
4708
  //'this' is the doc
4681
4709
  var wym = WYMeditor.INSTANCES[this.title];
@@ -4683,36 +4711,31 @@ WYMeditor.WymClassOpera.prototype.keydown = function(evt) {
4683
4711
  startNode = sel.getRangeAt(0).startContainer;
4684
4712
 
4685
4713
  //Get a P instead of no container
4686
- if(!$(startNode).parentsOrSelf(
4687
- WYMeditor.MAIN_CONTAINERS.join(","))[0]
4714
+ if(!$(startNode).parentsOrSelf(WYMeditor.MAIN_CONTAINERS.join(","))[0]
4688
4715
  && !$(startNode).parentsOrSelf('li')
4689
- && evt.keyCode != WYMeditor.KEY.ENTER
4690
- && evt.keyCode != WYMeditor.KEY.LEFT
4691
- && evt.keyCode != WYMeditor.KEY.UP
4692
- && evt.keyCode != WYMeditor.KEY.RIGHT
4693
- && evt.keyCode != WYMeditor.KEY.DOWN
4694
- && evt.keyCode != WYMeditor.KEY.BACKSPACE
4695
- && evt.keyCode != WYMeditor.KEY.DELETE)
4716
+ && e.keyCode != WYMeditor.KEY.ENTER
4717
+ && e.keyCode != WYMeditor.KEY.LEFT
4718
+ && e.keyCode != WYMeditor.KEY.UP
4719
+ && e.keyCode != WYMeditor.KEY.RIGHT
4720
+ && e.keyCode != WYMeditor.KEY.DOWN
4721
+ && e.keyCode != WYMeditor.KEY.BACKSPACE
4722
+ && e.keyCode != WYMeditor.KEY.DELETE)
4696
4723
  wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);
4697
4724
 
4698
4725
  };
4699
4726
 
4700
4727
  //keyup handler
4701
- WYMeditor.WymClassOpera.prototype.keyup = function(evt) {
4728
+ WYMeditor.WymClassOpera.prototype.keyup = function(e) {
4702
4729
 
4703
4730
  //'this' is the doc
4704
4731
  var wym = WYMeditor.INSTANCES[this.title];
4705
4732
  wym._selected_image = null;
4706
- };
4707
-
4708
- // TODO: implement me
4709
- WYMeditor.WymClassOpera.prototype.setFocusToNode = function(node) {
4710
-
4733
+ $(wym._iframe).contents().find('.selected_by_wym').removeClass('selected_by_wym');
4711
4734
  };
4712
4735
 
4713
4736
  /*
4714
4737
  * WYMeditor : what you see is What You Mean web-based editor
4715
- * Copyright (c) 2008 Jean-Francois Hovinne, http://www.wymeditor.org/
4738
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
4716
4739
  * Dual licensed under the MIT (MIT-license.txt)
4717
4740
  * and GPL (GPL-license.txt) licenses.
4718
4741
  *
@@ -4783,21 +4806,19 @@ WYMeditor.WymClassSafari.prototype.initIframe = function(iframe) {
4783
4806
 
4784
4807
  WYMeditor.WymClassSafari.prototype.paste = function(sData) {
4785
4808
 
4786
- wym = this;
4787
-
4788
- wym.format_block();
4789
-
4790
- var sTmp;
4809
+ (wym = this).format_block();
4791
4810
  replaceable = $(wym._doc.body).find('#replace_me_with_' + wym._current_unique_stamp);
4792
4811
 
4793
4812
  // replaceable doesn't actually get replaced here, it's just used as a marker for where the cursor was.
4794
4813
  var container = replaceable.get(0) || this.selected();
4795
4814
 
4796
4815
  //split the data, using double newlines as the separator
4797
- var aP = sData.split(wym._newLine + wym._newLine);
4816
+ var aP = sData.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
4817
+ .split(wym._newLine + wym._newLine);
4798
4818
  var rExp = new RegExp(wym._newLine, "g");
4799
4819
 
4800
4820
  //add a P for each item
4821
+ var sTmp;
4801
4822
  if(container && container.tagName.toLowerCase() != WYMeditor.BODY) {
4802
4823
  for(x = aP.length - 1; x >= 0; x--) {
4803
4824
  sTmp = aP[x];
@@ -4809,7 +4830,9 @@ WYMeditor.WymClassSafari.prototype.paste = function(sData) {
4809
4830
  $(container).after("<p>" + sTmp + "</p>");
4810
4831
  }
4811
4832
  }
4812
- } else {
4833
+ }
4834
+
4835
+ else {
4813
4836
  for(x = 0; x < aP.length; x++) {
4814
4837
  sTmp = aP[x];
4815
4838
  //simple newlines are replaced by a break
@@ -4870,18 +4893,13 @@ WYMeditor.WymClassSafari.prototype._exec = function(cmd,param) {
4870
4893
  break;
4871
4894
 
4872
4895
  default:
4873
-
4874
- if(param) this._doc.execCommand(cmd,'',param);
4875
- else this._doc.execCommand(cmd,'',null);
4896
+ if(param) this._doc.execCommand(cmd,'',param);
4897
+ else this._doc.execCommand(cmd,'',null);
4876
4898
  }
4877
4899
 
4878
4900
  //set to P if parent = BODY
4879
- var container = this.selected();
4880
- if(container && container.tagName.toLowerCase() == WYMeditor.BODY)
4881
- this._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);
4901
+ this.format_block();
4882
4902
 
4883
- //add event handlers on doc elements
4884
- this.listen();
4885
4903
  };
4886
4904
 
4887
4905
  /* @name selected
@@ -4949,18 +4967,17 @@ WYMeditor.WymClassSafari.prototype.addCssRule = function(styles, oCss) {
4949
4967
 
4950
4968
 
4951
4969
  //keydown handler, mainly used for keyboard shortcuts
4952
- WYMeditor.WymClassSafari.prototype.keydown = function(evt) {
4970
+ WYMeditor.WymClassSafari.prototype.keydown = function(e) {
4953
4971
 
4954
- //'this' is the doc
4955
- var wym = WYMeditor.INSTANCES[this.title];
4956
-
4957
- if(evt.ctrlKey){
4958
- if(evt.keyCode == 66){
4972
+ if(e.ctrlKey){
4973
+ //'this' is the doc
4974
+ var wym = WYMeditor.INSTANCES[this.title];
4975
+
4976
+ if(e.keyCode == 66) {
4959
4977
  //CTRL+b => STRONG
4960
4978
  wym._exec(WYMeditor.BOLD);
4961
4979
  return false;
4962
- }
4963
- if(evt.keyCode == 73){
4980
+ } else if(e.keyCode == 73) {
4964
4981
  //CTRL+i => EMPHASIS
4965
4982
  wym._exec(WYMeditor.ITALIC);
4966
4983
  return false;
@@ -4969,38 +4986,33 @@ WYMeditor.WymClassSafari.prototype.keydown = function(evt) {
4969
4986
  };
4970
4987
 
4971
4988
  //keyup handler, mainly used for cleanups
4972
- WYMeditor.WymClassSafari.prototype.keyup = function(evt) {
4989
+ WYMeditor.WymClassSafari.prototype.keyup = function(e) {
4973
4990
 
4974
4991
  //'this' is the doc
4975
4992
  var wym = WYMeditor.INSTANCES[this.title];
4976
4993
 
4977
4994
  wym._selected_image = null;
4995
+ $(wym._iframe).contents().find('.selected_by_wym').removeClass('selected_by_wym');
4978
4996
  var container = null;
4979
4997
 
4980
- if(evt.keyCode == 13 && !evt.shiftKey) {
4981
-
4998
+ if(e.keyCode == 13 && !e.shiftKey) {
4982
4999
  //RETURN key
4983
5000
  //cleanup <br><br> between paragraphs
4984
5001
  $(wym._doc.body).children(WYMeditor.BR).remove();
4985
5002
 
4986
5003
  //fix PRE bug #73
4987
5004
  container = wym.selected();
4988
- if(container && container.tagName.toLowerCase() == WYMeditor.PRE)
4989
- wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P); //create P after PRE
5005
+ if(container && container.tagName.toLowerCase() == WYMeditor.PRE) {
5006
+ wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P); //create P after PRE
5007
+ }
4990
5008
  }
4991
5009
 
4992
5010
  //fix #112
4993
- if(evt.keyCode == 13 && evt.shiftKey) {
5011
+ if(e.keyCode == 13 && e.shiftKey) {
4994
5012
  wym._exec('InsertLineBreak');
4995
5013
  }
4996
-
4997
- if(evt.keyCode != 8
4998
- && evt.keyCode != 17
4999
- && evt.keyCode != 46
5000
- && evt.keyCode != 224
5001
- && !evt.metaKey
5002
- && !evt.ctrlKey) {
5003
-
5014
+ else if(($.inArray(e.keyCode, [8, 17, 46, 224]) == -1) && !e.metaKey && !e.ctrlKey)
5015
+ {
5004
5016
  //NOT BACKSPACE, NOT DELETE, NOT CTRL, NOT COMMAND
5005
5017
  //text nodes replaced by P
5006
5018
 
@@ -5008,48 +5020,32 @@ WYMeditor.WymClassSafari.prototype.keyup = function(evt) {
5008
5020
  var name = container.tagName.toLowerCase();
5009
5021
 
5010
5022
  //fix forbidden main containers
5011
- if(
5012
- name == "strong" ||
5013
- name == "b" ||
5014
- name == "em" ||
5015
- name == "i" ||
5016
- name == "sub" ||
5017
- name == "sup" ||
5018
- name == "a" ||
5019
- name == "span" //fix #110
5020
-
5021
- ) name = container.parentNode.tagName.toLowerCase();
5022
-
5023
- if(name == WYMeditor.BODY || name == WYMeditor.DIV) wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P); //fix #110 for DIV
5023
+ if($.inArray(name, ['strong', 'b', 'em', 'i', 'sub', 'sup', 'a', 'span']) > -1) {
5024
+ name = container.parentNode.tagName.toLowerCase();
5025
+ }
5026
+
5027
+ if(name == WYMeditor.BODY || name == WYMeditor.DIV) {
5028
+ wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P); //fix #110 for DIV
5029
+ }
5024
5030
  }
5025
5031
  };
5026
5032
 
5027
-
5028
- WYMeditor.WymClassSafari.prototype.setFocusToNode = function(node) {
5029
- var range = this._iframe.contentDocument.createRange();
5030
- range.selectNode(node);
5031
- var selected = this._iframe.contentWindow.getSelection();
5032
- selected.addRange(range);
5033
- selected.collapse(node, node.childNodes.length);
5034
- this._iframe.contentWindow.focus();
5035
- };
5036
-
5037
5033
  WYMeditor.WymClassSafari.prototype.openBlockTag = function(tag, attributes)
5038
5034
  {
5039
5035
  var attributes = this.validator.getValidTagAttributes(tag, attributes);
5040
5036
 
5041
5037
  // Handle Safari styled spans
5042
5038
  if(tag == 'span' && attributes.style) {
5043
- var new_tag = this.getTagForStyle(attributes.style);
5044
- if(new_tag){
5039
+ if(new_tag = this.getTagForStyle(attributes.style)) {
5045
5040
  this._tag_stack.pop();
5046
5041
  var tag = new_tag;
5047
5042
  this._tag_stack.push(new_tag);
5048
5043
  attributes.style = '';
5049
5044
 
5050
5045
  //should fix #125 - also removed the xhtml() override
5051
- if(typeof attributes['class'] == 'string')
5046
+ if(typeof attributes['class'] == 'string') {
5052
5047
  attributes['class'] = attributes['class'].replace(/apple-style-span/gi, '');
5048
+ }
5053
5049
 
5054
5050
  } else {
5055
5051
  return;
@@ -5066,4 +5062,4 @@ WYMeditor.WymClassSafari.prototype.getTagForStyle = function(style) {
5066
5062
  if(/sub/.test(style)) return 'sub';
5067
5063
  if(/super/.test(style)) return 'sup';
5068
5064
  return false;
5069
- };
5065
+ };