refinerycms 0.9.6.34 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
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
+ };