imperavi-rails 0.0.3.beta → 0.0.4.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (324) hide show
  1. data/README.md +33 -29
  2. data/app/assets/javascripts/imperavi-rails/imperavi/redactor.js +317 -405
  3. data/app/assets/stylesheets/imperavi-rails/imperavi/redactor.css.scss +1 -1
  4. data/app/views/imperavi_rails/imperavi/image_edit.html.erb +1 -1
  5. data/lib/imperavi-rails/controller_methods.rb +35 -0
  6. data/lib/imperavi-rails/version.rb +1 -1
  7. data/lib/imperavi-rails.rb +9 -3
  8. data/spec/dummy/db/development.sqlite3 +0 -0
  9. data/spec/dummy/log/development.log +12384 -0
  10. data/spec/dummy/public/system/dragonfly/development/2012/02/03/14_44_32_721_6.jpg +0 -0
  11. data/spec/dummy/public/system/dragonfly/development/2012/02/03/14_44_32_721_6.jpg.meta +4 -0
  12. data/spec/dummy/public/system/dragonfly/development/2012/02/03/14_45_23_25_5.jpg +0 -0
  13. data/spec/dummy/public/system/dragonfly/development/2012/02/03/14_45_23_25_5.jpg.meta +4 -0
  14. data/spec/dummy/public/system/dragonfly/development/2012/02/03/14_45_49_374_15744.jpg +0 -0
  15. data/spec/dummy/public/system/dragonfly/development/2012/02/03/14_45_49_374_15744.jpg.meta +3 -0
  16. data/spec/dummy/public/system/dragonfly/development/2012/02/03/14_50_20_902_4.jpg +0 -0
  17. data/spec/dummy/public/system/dragonfly/development/2012/02/03/14_50_20_902_4.jpg.meta +4 -0
  18. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_22_15_373_5.jpg +0 -0
  19. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_22_15_373_5.jpg.meta +4 -0
  20. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_22_40_820_5.jpg +0 -0
  21. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_22_40_820_5.jpg.meta +4 -0
  22. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_23_30_325_3.jpg +0 -0
  23. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_23_30_325_3.jpg.meta +4 -0
  24. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_23_57_376_4.jpg +0 -0
  25. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_23_57_376_4.jpg.meta +4 -0
  26. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_26_27_220_5.jpg +0 -0
  27. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_26_27_220_5.jpg.meta +4 -0
  28. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_26_57_55_6.jpg +0 -0
  29. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_26_57_55_6.jpg.meta +4 -0
  30. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_27_58_370_5.jpg +0 -0
  31. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_27_58_370_5.jpg.meta +4 -0
  32. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_29_07_700_5.jpg +0 -0
  33. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_29_07_700_5.jpg.meta +4 -0
  34. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_29_19_327_4.jpg +0 -0
  35. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_29_19_327_4.jpg.meta +4 -0
  36. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_29_53_813_4.jpg +0 -0
  37. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_29_53_813_4.jpg.meta +4 -0
  38. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_30_13_242_5.jpg +0 -0
  39. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_30_13_242_5.jpg.meta +4 -0
  40. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_30_19_927_6.jpg +0 -0
  41. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_30_19_927_6.jpg.meta +4 -0
  42. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_31_14_355_5.jpg +0 -0
  43. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_31_14_355_5.jpg.meta +4 -0
  44. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_31_19_371_1.jpg +0 -0
  45. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_31_19_371_1.jpg.meta +4 -0
  46. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_31_28_432_15750.jpg +0 -0
  47. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_31_28_432_15750.jpg.meta +3 -0
  48. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_31_39_821_15720.jpg +0 -0
  49. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_31_39_821_15720.jpg.meta +3 -0
  50. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_31_47_624_4.jpg +0 -0
  51. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_31_47_624_4.jpg.meta +4 -0
  52. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_33_26_155_5.jpg +0 -0
  53. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_33_26_155_5.jpg.meta +4 -0
  54. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_34_29_787_2_small.jpg +0 -0
  55. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_34_29_787_2_small.jpg.meta +3 -0
  56. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_34_35_450_6.jpg +0 -0
  57. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_34_35_450_6.jpg.meta +4 -0
  58. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_34_41_340_15744.jpg +0 -0
  59. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_34_41_340_15744.jpg.meta +3 -0
  60. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_38_14_325_5.jpg +0 -0
  61. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_38_14_325_5.jpg.meta +4 -0
  62. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_45_06_883_6.jpg +0 -0
  63. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_45_06_883_6.jpg.meta +4 -0
  64. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_45_18_915_6.jpg +0 -0
  65. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_45_18_915_6.jpg.meta +4 -0
  66. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_45_46_86_15744.jpg +0 -0
  67. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_45_46_86_15744.jpg.meta +3 -0
  68. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_47_24_195_3.jpg +0 -0
  69. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_47_24_195_3.jpg.meta +4 -0
  70. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_47_46_83_5.jpg +0 -0
  71. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_47_46_83_5.jpg.meta +4 -0
  72. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_51_18_603_15720.jpg +0 -0
  73. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_51_18_603_15720.jpg.meta +3 -0
  74. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_51_57_666_6.jpg +0 -0
  75. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_51_57_666_6.jpg.meta +4 -0
  76. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_53_25_938_6.jpg +0 -0
  77. data/spec/dummy/public/system/dragonfly/development/2012/02/17/19_53_25_938_6.jpg.meta +4 -0
  78. data/spec/dummy/tmp/cache/assets/CA9/BC0/sprockets%2F85d8b987b980454101a1236fdec2c220 +0 -0
  79. data/spec/dummy/tmp/cache/assets/CBE/FC0/sprockets%2Ff5431a64e341b062b7530132a5c1ea5a +2306 -1667
  80. data/spec/dummy/tmp/cache/assets/CC5/C10/sprockets%2F7c81f5c40dc9b87819488e127f487a04 +447 -369
  81. data/spec/dummy/tmp/cache/assets/CD5/530/sprockets%2F8d4c18bd4851f107c450a2c782301f8b +53 -0
  82. data/spec/dummy/tmp/cache/assets/CD7/EF0/sprockets%2Fc22597dc7c74137ba100f08542fec580 +76 -0
  83. data/spec/dummy/tmp/cache/assets/D09/DB0/sprockets%2F5ad1bbd0a458985447fac962fb121264 +188 -0
  84. data/spec/dummy/tmp/cache/assets/D1A/AB0/sprockets%2F05ea78f209b93ef03f29e933625b7fa5 +305 -1
  85. data/spec/dummy/tmp/cache/assets/D33/480/sprockets%2Fec072121b559132efe7d07cac0e991a5 +106 -0
  86. data/spec/dummy/tmp/cache/assets/D38/5D0/sprockets%2F7913f60d743aeb957af7a0ca5a20059d +0 -0
  87. data/spec/dummy/tmp/cache/assets/D43/830/sprockets%2Fe09848481135db1a4a5c783a7dc94fbd +50 -0
  88. data/spec/dummy/tmp/cache/assets/D59/260/sprockets%2Fd513a46ce8d83f003a733cb306dfe01a +317 -406
  89. data/spec/dummy/tmp/cache/assets/D64/190/sprockets%2Ffdfa1bbf71247a2b9ef0b97732603e02 +0 -0
  90. data/spec/dummy/tmp/cache/assets/D66/200/sprockets%2Fb343cda49d5d41a82c10a8f06d986bd2 +45 -0
  91. data/spec/dummy/tmp/cache/assets/D6B/980/sprockets%2F56c37f49f60073a401fcbd529dcaa74e +222 -0
  92. data/spec/dummy/tmp/cache/assets/D6D/AF0/sprockets%2F5a1aa4e3f7d7008e775019dfef3282cc +97 -0
  93. data/spec/dummy/tmp/cache/assets/D76/560/sprockets%2Fe0c5141697a090ffb74c9412e6dd7fef +50 -0
  94. data/spec/dummy/tmp/cache/assets/D95/E80/sprockets%2F844edf25b78967cbe9cf3e969c37c6c7 +0 -0
  95. data/spec/dummy/tmp/cache/assets/D96/230/sprockets%2F63e1b63e2b03d0bd6aaebd27c9973e91 +248 -1
  96. data/spec/dummy/tmp/cache/assets/D9B/E30/sprockets%2Fd87c8ca46743542cace533cfe91ae1d0 +437 -365
  97. data/spec/dummy/tmp/cache/assets/D9B/FF0/sprockets%2Fd8bbace39747d4af921e0534736baea3 +125 -0
  98. data/spec/dummy/tmp/cache/assets/DA2/970/sprockets%2F0d4ef1d42ee3e36fedcd979b3506525b +881 -1
  99. data/spec/dummy/tmp/cache/assets/DA8/F60/sprockets%2Fbb2cd57d63160c94d622ef9d91ccef68 +5 -5
  100. data/spec/dummy/tmp/cache/assets/DAC/140/sprockets%2F7a814a5598eaaaccf7ab7895f5663ad5 +89 -0
  101. data/spec/dummy/tmp/cache/assets/DB7/F90/sprockets%2Faf8cc6b28a790c7e3bd686e8ab9973c8 +0 -0
  102. data/spec/dummy/tmp/cache/assets/DBB/960/sprockets%2Fe20156d5decfaaea9d1e09f14a100f19 +16 -0
  103. data/spec/dummy/tmp/cache/sass/bc54e898614d486bf9338d646e8cd056915d4779/redactor.css.scssc +0 -0
  104. data/spec/dummy/tmp/dragonfly/cache/body/01/8b80e42551d33aed663f5757b3e4d3789383e6 +2359 -0
  105. data/spec/dummy/tmp/dragonfly/cache/body/02/3133eaaddaa68515039bc51e11b3bca2ad3f23 +986 -0
  106. data/spec/dummy/tmp/dragonfly/cache/body/03/13c061439229cdbd19215cbd1cf0e26441fac2 +713 -0
  107. data/spec/dummy/tmp/dragonfly/cache/body/05/024188cd40feb026eb8ccd15985d890ba9c84e +643 -0
  108. data/spec/dummy/tmp/dragonfly/cache/body/06/e22ab9a18784ce1f20e09401ee38b9672860d9 +697 -0
  109. data/spec/dummy/tmp/dragonfly/cache/body/07/f49938e6a88e40d2d6fd9fc613578396148e1d +1014 -0
  110. data/spec/dummy/tmp/dragonfly/cache/body/08/8e8a8fc07862b6f7f1bb3d065c44a796a1b959 +489 -0
  111. data/spec/dummy/tmp/dragonfly/cache/body/09/7fc6a9593ea7b3a9992dd166cdc87cf0e06afc +2341 -0
  112. data/spec/dummy/tmp/dragonfly/cache/body/09/c8b9529699d7f44fc6e314c992ea222ecf891a +926 -0
  113. data/spec/dummy/tmp/dragonfly/cache/body/0a/eae45805608cdebd81ace3ac272d43ef8c581a +517 -0
  114. data/spec/dummy/tmp/dragonfly/cache/body/0f/33cebc2562a1ba143494c74b572a7f569c398e +0 -0
  115. data/spec/dummy/tmp/dragonfly/cache/body/12/f3e9f5435e64b368b805b0f6e2e5b04763e0e9 +713 -0
  116. data/spec/dummy/tmp/dragonfly/cache/body/13/02bfc481015a6a0abeb3bd17a166b761ba8a47 +626 -0
  117. data/spec/dummy/tmp/dragonfly/cache/body/14/132bf3af2f923b66a62826ebe1dd001f0ba183 +0 -0
  118. data/spec/dummy/tmp/dragonfly/cache/body/16/3001f75355d109f24b59f690f7ba71c2616261 +2343 -0
  119. data/spec/dummy/tmp/dragonfly/cache/body/16/7a17ea4c64e37f9f0aa5e773501ee5131bb2af +552 -0
  120. data/spec/dummy/tmp/dragonfly/cache/body/18/1ddbad5715e03f6bcaeb409ca55a8f1f1c2b76 +1000 -0
  121. data/spec/dummy/tmp/dragonfly/cache/body/18/dc1d281e1b27f8e29a5d3ea3192ee5ab92c8fe +1721 -0
  122. data/spec/dummy/tmp/dragonfly/cache/body/19/244efbcbf0ed096cc80addb39d1139782691e4 +701 -0
  123. data/spec/dummy/tmp/dragonfly/cache/body/1b/09d865c098ccb9e1bb1783281f8f18ab22f49c +1016 -0
  124. data/spec/dummy/tmp/dragonfly/cache/body/1b/5baeb3d8b21ebdd6d60357437ea9b4ddefa49a +537 -0
  125. data/spec/dummy/tmp/dragonfly/cache/body/1b/f3995977d56cd70d334227ffae3858fdb3e1d4 +1011 -0
  126. data/spec/dummy/tmp/dragonfly/cache/body/1c/8c49d20e2ca7ccea3c7124923f2d6ff715400c +538 -0
  127. data/spec/dummy/tmp/dragonfly/cache/body/1e/3ce5b58c37f23053d85f581ff49d15ad1a498a +674 -0
  128. data/spec/dummy/tmp/dragonfly/cache/body/1f/de9c96ae1b545cb125a43f6c81fe6f15851ac7 +546 -0
  129. data/spec/dummy/tmp/dragonfly/cache/body/20/5d43e6adae0bf766e830109660e59dfd97a776 +646 -0
  130. data/spec/dummy/tmp/dragonfly/cache/body/20/9dd05484ee6eca030ee50cf71b912a67089c79 +2339 -0
  131. data/spec/dummy/tmp/dragonfly/cache/body/21/bdc0c588b6d2ddbbcc9b76fe749c38f0ef2f41 +872 -0
  132. data/spec/dummy/tmp/dragonfly/cache/body/22/f0e133e63c81c43643026aa5cbb3712bfa929e +708 -0
  133. data/spec/dummy/tmp/dragonfly/cache/body/24/f7da13054199d224537d7530367474f292c85a +2359 -0
  134. data/spec/dummy/tmp/dragonfly/cache/body/27/0ac007b4441579233e425f3e7a36887eb4298e +986 -0
  135. data/spec/dummy/tmp/dragonfly/cache/body/28/c775213c7f72c870045887887893831bbb9083 +1006 -0
  136. data/spec/dummy/tmp/dragonfly/cache/body/2a/602d5bf47ce3c3e1fbd540f3659acdf8488b84 +2341 -0
  137. data/spec/dummy/tmp/dragonfly/cache/body/2c/79dceb2787a90f7da9a43673db8d1f1922a379 +641 -0
  138. data/spec/dummy/tmp/dragonfly/cache/body/2d/016dc3e8be00f46455041e5187159762a1a72b +535 -0
  139. data/spec/dummy/tmp/dragonfly/cache/body/2d/40a96b71b5c4be6ea5de082c5c468b923df113 +626 -0
  140. data/spec/dummy/tmp/dragonfly/cache/body/2f/2077afd991927df732811e002d532f34a62c86 +0 -0
  141. data/spec/dummy/tmp/dragonfly/cache/body/30/7cdb90b26de71fedb1774d7b7fe630e77cf34f +1011 -0
  142. data/spec/dummy/tmp/dragonfly/cache/body/33/43ee3681542a52fec318884c34cdc6233aec90 +2359 -0
  143. data/spec/dummy/tmp/dragonfly/cache/body/34/d994dfa8a8a2cf1dddcfcb9d7d43839f798a66 +1007 -0
  144. data/spec/dummy/tmp/dragonfly/cache/body/36/1acb61b84bbb2e3b1fe7cb28e1ca0bb2ebc147 +1721 -0
  145. data/spec/dummy/tmp/dragonfly/cache/body/37/0de185ac6803197940a4aca2ee4cb6cd97aa25 +700 -0
  146. data/spec/dummy/tmp/dragonfly/cache/body/39/36d756ac37cbfd7995a8413c5b813623f8c1d6 +496 -0
  147. data/spec/dummy/tmp/dragonfly/cache/body/39/c79f94952d16de5de0ec59089d381ace6e386e +1029 -0
  148. data/spec/dummy/tmp/dragonfly/cache/body/3f/457b87cdc17162db48461cf72c87457ebe753b +1011 -0
  149. data/spec/dummy/tmp/dragonfly/cache/body/40/d745dd4044031ccd76b4f5a8ad46e3c16ea8c0 +915 -0
  150. data/spec/dummy/tmp/dragonfly/cache/body/43/1a5a2dc62c3b453378dad049c48fcf36928f53 +2342 -0
  151. data/spec/dummy/tmp/dragonfly/cache/body/43/abfe6e68d8603f92084533b5f94fb717bc2b02 +700 -0
  152. data/spec/dummy/tmp/dragonfly/cache/body/44/65e89dffc7531e6479a00711d7bf430c56754f +2359 -0
  153. data/spec/dummy/tmp/dragonfly/cache/body/47/1092abd16e44c60537ac674b871481ca6d108e +489 -0
  154. data/spec/dummy/tmp/dragonfly/cache/body/47/befec7e863f30488d1c9a72619411e3c311eea +552 -0
  155. data/spec/dummy/tmp/dragonfly/cache/body/48/4af0743c55ececa9e2b3477a666492914d5a25 +700 -0
  156. data/spec/dummy/tmp/dragonfly/cache/body/48/5935b1ceed38545d44989a5464049018f63ecd +926 -0
  157. data/spec/dummy/tmp/dragonfly/cache/body/4a/db06a6fda9b3fbe12beb6816390a4fd61e4491 +667 -0
  158. data/spec/dummy/tmp/dragonfly/cache/body/4b/088deec20739cb75b3d8e2ca591171b342026d +862 -0
  159. data/spec/dummy/tmp/dragonfly/cache/body/4b/ea67064045b150fdd661d9b25fe1c447df7570 +703 -0
  160. data/spec/dummy/tmp/dragonfly/cache/body/50/8888bca37caef9e8ecf9434f304d1ab2cc820a +538 -0
  161. data/spec/dummy/tmp/dragonfly/cache/body/54/862500a3c1ce6a605de340ded6051d9d6c96dc +880 -0
  162. data/spec/dummy/tmp/dragonfly/cache/body/55/a3a5731c805bf0c5deda35500598030e91caf7 +2358 -0
  163. data/spec/dummy/tmp/dragonfly/cache/body/56/50f6edaa5e2fe07797333404d13fe63360f72c +0 -0
  164. data/spec/dummy/tmp/dragonfly/cache/body/56/dfa139236a6fcecf0fdd13308a17d03666d223 +2361 -0
  165. data/spec/dummy/tmp/dragonfly/cache/body/58/d135dda5118408bf76a2b381ac0d482276ee97 +546 -0
  166. data/spec/dummy/tmp/dragonfly/cache/body/59/0b00b9579bdc8d199e42d68cc83ee72ba6036a +712 -0
  167. data/spec/dummy/tmp/dragonfly/cache/body/59/c6cdda1534cfeb69aed8a295fa36aa0b34d9ac +882 -0
  168. data/spec/dummy/tmp/dragonfly/cache/body/5c/c982746925609ae2ddd24d20e9f96247006dc3 +883 -0
  169. data/spec/dummy/tmp/dragonfly/cache/body/5f/033e3fda7f0149729cdeba2807ccad0ce6ea32 +1016 -0
  170. data/spec/dummy/tmp/dragonfly/cache/body/5f/95bdb3eb07339f50a73c3e2c38d619b2321902 +2361 -0
  171. data/spec/dummy/tmp/dragonfly/cache/body/60/92cdccc969bab02d35b702148409d59276ec8e +703 -0
  172. data/spec/dummy/tmp/dragonfly/cache/body/62/d3974c45b38586ded0f6adefcefeb4e25aea08 +2357 -0
  173. data/spec/dummy/tmp/dragonfly/cache/body/63/9cff6d42d49aaded2e3201d0b311fb0c4d5af5 +872 -0
  174. data/spec/dummy/tmp/dragonfly/cache/body/65/b3251b1348841946320cd8ac140a7a10a07de5 +894 -0
  175. data/spec/dummy/tmp/dragonfly/cache/body/66/59b5c1535bed3649f05f378f9a935a9369a14f +2341 -0
  176. data/spec/dummy/tmp/dragonfly/cache/body/67/8611d272ec29fc5cb7a63a709a12f47da63fbd +538 -0
  177. data/spec/dummy/tmp/dragonfly/cache/body/68/9bc64959e48ba446c2a48a48952d4e6e422bee +2334 -0
  178. data/spec/dummy/tmp/dragonfly/cache/body/6a/0be367e94b672cef188ef8c3261ed63fa59e6d +701 -0
  179. data/spec/dummy/tmp/dragonfly/cache/body/6a/1642bac93ee93e5ca10af933c39f6db9e15508 +0 -0
  180. data/spec/dummy/tmp/dragonfly/cache/body/6a/4558d01c325e63bfe9abe3df6b1255e51a20e6 +703 -0
  181. data/spec/dummy/tmp/dragonfly/cache/body/6b/8df0f17fd3ce7a7e551e91f30909a847a2abee +734 -0
  182. data/spec/dummy/tmp/dragonfly/cache/body/6b/90cf2c21e1934876d420d2524fe5216c5e7bf1 +551 -0
  183. data/spec/dummy/tmp/dragonfly/cache/body/6d/d8a547a0125a1da2df83e6b2f4c36631a1bd2f +538 -0
  184. data/spec/dummy/tmp/dragonfly/cache/body/6e/a8d288ea6931b9277121b209ac32959b717029 +882 -0
  185. data/spec/dummy/tmp/dragonfly/cache/body/6f/b27a907116ff2fa7a668b30d49b65885a09022 +1016 -0
  186. data/spec/dummy/tmp/dragonfly/cache/body/71/01bff740c639a7b8383a5e247ece9552656acb +708 -0
  187. data/spec/dummy/tmp/dragonfly/cache/body/73/7752ee519e2ee8c13b4c9165fb98c19a874843 +882 -0
  188. data/spec/dummy/tmp/dragonfly/cache/body/74/c9b1fca6f96048f555aed33ddb5c5240839f62 +793 -0
  189. data/spec/dummy/tmp/dragonfly/cache/body/75/01f0f946848c6b910634bed2a58e748dd0a4d2 +986 -0
  190. data/spec/dummy/tmp/dragonfly/cache/body/75/15881fe428cd4b04438de4e03ba3acc7cd789e +642 -0
  191. data/spec/dummy/tmp/dragonfly/cache/body/77/02b8ae247e83a86e819b150375bd2971911635 +882 -0
  192. data/spec/dummy/tmp/dragonfly/cache/body/79/0ba4208b6b095e78b15c6f2c4ef04b9e568fdf +976 -0
  193. data/spec/dummy/tmp/dragonfly/cache/body/7a/40b3b7e48d2fb4f8dc6b9ce3b2c6414cd3db4b +638 -0
  194. data/spec/dummy/tmp/dragonfly/cache/body/7a/44fbc7caa954feca99ae14cdd31700f3bc01ca +0 -0
  195. data/spec/dummy/tmp/dragonfly/cache/body/81/1412d99f15c17d9a52618013667ddc6acbb5e7 +560 -0
  196. data/spec/dummy/tmp/dragonfly/cache/body/82/bb0ce1f6b156348edb5d054b09681adbb1541c +638 -0
  197. data/spec/dummy/tmp/dragonfly/cache/body/82/f4aef50c7d0580ce3de59af781988f8c027e31 +0 -0
  198. data/spec/dummy/tmp/dragonfly/cache/body/84/3bafbd4a01aaae5795b68c2a21561fd78e8bfb +0 -0
  199. data/spec/dummy/tmp/dragonfly/cache/body/84/61cb5340e22fb0e266e5276613f5b218b793c0 +774 -0
  200. data/spec/dummy/tmp/dragonfly/cache/body/87/452e47dc8c565d70543b6a8b3aeeeafef5ede6 +1008 -0
  201. data/spec/dummy/tmp/dragonfly/cache/body/8e/6921af9cd9a9aa0cb4a521be98d497ff7fdeaf +700 -0
  202. data/spec/dummy/tmp/dragonfly/cache/body/8e/d1fec3f23b9477057019f581847f7f8b2051c3 +0 -0
  203. data/spec/dummy/tmp/dragonfly/cache/body/8f/e7d4976bf7e183cf4f6ab9409f8503351dad3c +709 -0
  204. data/spec/dummy/tmp/dragonfly/cache/body/90/1abfe79ed8fa57b0f367b8d6cc284742d74bd9 +703 -0
  205. data/spec/dummy/tmp/dragonfly/cache/body/93/fe1fa30d5fe0cb493dd11ea6eaee9201b50cd8 +712 -0
  206. data/spec/dummy/tmp/dragonfly/cache/body/94/7a175f9de08b84499763ba6cc25f6911ef315e +913 -0
  207. data/spec/dummy/tmp/dragonfly/cache/body/98/2828d5b0867095317a017415955ef31a50dbc5 +1014 -0
  208. data/spec/dummy/tmp/dragonfly/cache/body/98/f06faf5cfff9a92b4d99d400523e1f1551742e +1007 -0
  209. data/spec/dummy/tmp/dragonfly/cache/body/99/2dab09135d5fcbaa2c2b833a8284cb56be5c26 +1014 -0
  210. data/spec/dummy/tmp/dragonfly/cache/body/99/b545fe8ab3b930d8997fd75bb08feea0c9754d +915 -0
  211. data/spec/dummy/tmp/dragonfly/cache/body/9a/ff030c94bb0fbe5d9fbb8cf6865236cb7d74b2 +217 -0
  212. data/spec/dummy/tmp/dragonfly/cache/body/9f/8083640216ee29b9e8b4f10990f33d94aa352c +2360 -0
  213. data/spec/dummy/tmp/dragonfly/cache/body/9f/f4d177f296f259ff4ef3ddb38583daaf7c4dad +1011 -0
  214. data/spec/dummy/tmp/dragonfly/cache/body/a0/13144afc0d13219dad65508b046b9e0693a22b +926 -0
  215. data/spec/dummy/tmp/dragonfly/cache/body/a1/44a32dab1df021f54bf212d2a401b7fc69a2d8 +882 -0
  216. data/spec/dummy/tmp/dragonfly/cache/body/a2/7996e882d74e2e2c590fbfee8a8842b43f5c5e +1014 -0
  217. data/spec/dummy/tmp/dragonfly/cache/body/a2/e9ac7eba6c9ac611ec0cb7f26cbe0711b4b59c +694 -0
  218. data/spec/dummy/tmp/dragonfly/cache/body/a3/cd2fc5aabd1c551bba7f290844b8d89c94ab1e +523 -0
  219. data/spec/dummy/tmp/dragonfly/cache/body/a4/1a483a32348565e7afc810f49f55c1a9cbcd5d +707 -0
  220. data/spec/dummy/tmp/dragonfly/cache/body/a5/ddf1a8e968d20390ab06c94b19eb69a1e81ad7 +908 -0
  221. data/spec/dummy/tmp/dragonfly/cache/body/a6/f516919f720c81c119adadf1693ea44e5b90fe +490 -0
  222. data/spec/dummy/tmp/dragonfly/cache/body/a8/5137398b4d62aacbb0921f50eb9f62e7ec8de4 +0 -0
  223. data/spec/dummy/tmp/dragonfly/cache/body/a8/fb555a7e2420a17ce30758861ac3de784677eb +1011 -0
  224. data/spec/dummy/tmp/dragonfly/cache/body/b0/9703b98c965449cfbff801b8482e5c2c9b1b50 +954 -0
  225. data/spec/dummy/tmp/dragonfly/cache/body/b1/4c0f9e41101026eff8ebdc3fc9eae61c25372b +700 -0
  226. data/spec/dummy/tmp/dragonfly/cache/body/b3/d870794114f8ce678eeeddb0616abbea93ec7b +562 -0
  227. data/spec/dummy/tmp/dragonfly/cache/body/b4/1d331b6f64144bdee2ab598fd7f5ed2bcb6c3c +0 -0
  228. data/spec/dummy/tmp/dragonfly/cache/body/b4/84edbbb2dae5a5fc1cbfc8c8d3517bd1466a1b +2359 -0
  229. data/spec/dummy/tmp/dragonfly/cache/body/b5/52eaf4b5bac5fcf8667e5fb74f4b1c61984b0e +537 -0
  230. data/spec/dummy/tmp/dragonfly/cache/body/b6/9ec86cf5018fe63297e409da6638450c5041d2 +0 -0
  231. data/spec/dummy/tmp/dragonfly/cache/body/b7/31c759f6bf5b6adc13874d8ccf325a1715bf33 +882 -0
  232. data/spec/dummy/tmp/dragonfly/cache/body/b8/84c73fced17e1cb4f2efc18ed4f81789e5a622 +0 -0
  233. data/spec/dummy/tmp/dragonfly/cache/body/b9/43df43ad225c99d420cdb7e5d7714c2876273f +1007 -0
  234. data/spec/dummy/tmp/dragonfly/cache/body/b9/b4cb4d1647df4ec458ef3cc18782261a46bef2 +641 -0
  235. data/spec/dummy/tmp/dragonfly/cache/body/ba/1c57461ee48afadc870fca415b0e2aeaec3f4a +882 -0
  236. data/spec/dummy/tmp/dragonfly/cache/body/be/d14e3b72d93bfc0cace752edf21f5cc2af8949 +2358 -0
  237. data/spec/dummy/tmp/dragonfly/cache/body/c1/0767685a05c93f5e79a81ec5016820d7068afd +281 -0
  238. data/spec/dummy/tmp/dragonfly/cache/body/c3/5f95670b5171f06b0c450331c20ce59d44d5bd +537 -0
  239. data/spec/dummy/tmp/dragonfly/cache/body/c3/c76755904506b55cc288baed5e8f3ae767e1f9 +908 -0
  240. data/spec/dummy/tmp/dragonfly/cache/body/c7/48859071d0c1e701557a2b59181ae9d40b4c1c +1029 -0
  241. data/spec/dummy/tmp/dragonfly/cache/body/cc/e21614b70000b7a45bf382a696dfdf2e78811f +1029 -0
  242. data/spec/dummy/tmp/dragonfly/cache/body/cd/daa343d969732d44b9018e9e8403d758c1075b +2334 -0
  243. data/spec/dummy/tmp/dragonfly/cache/body/cd/dbba7b01cfb5eabf3c3b557d3cc1c7eeac9157 +523 -0
  244. data/spec/dummy/tmp/dragonfly/cache/body/d0/654133544a02cf512cdbe78256f913d684ee32 +894 -0
  245. data/spec/dummy/tmp/dragonfly/cache/body/d4/42ed09f48e3e24cd3cd958c9e0865df054419b +1029 -0
  246. data/spec/dummy/tmp/dragonfly/cache/body/d6/1eefad56108f5a8e1fa7aa72ff9b9f9cd633fc +538 -0
  247. data/spec/dummy/tmp/dragonfly/cache/body/d6/d1ac8848c469cd9094fa75b7528e0f5b6b632e +496 -0
  248. data/spec/dummy/tmp/dragonfly/cache/body/d7/899077450ebef4fdc0e9bb929825299f54457f +697 -0
  249. data/spec/dummy/tmp/dragonfly/cache/body/d9/f0d58e806b8697218740130d2ca12b3b86d6ef +1007 -0
  250. data/spec/dummy/tmp/dragonfly/cache/body/da/378953b0532aa6da1fa92abeeae89199ef8227 +1006 -0
  251. data/spec/dummy/tmp/dragonfly/cache/body/da/7c689c2f3a69f6770b63b71a8e71b6a1a28b37 +967 -0
  252. data/spec/dummy/tmp/dragonfly/cache/body/da/e26a3a67f1a9ea2332232ea28c90082c0e3bad +963 -0
  253. data/spec/dummy/tmp/dragonfly/cache/body/dc/abdd743fd3e9d7bd5647abeb86e66a3e6f9597 +0 -0
  254. data/spec/dummy/tmp/dragonfly/cache/body/e0/85f72a9f92bfadac77ceb40b9dcce7f1d0c0b4 +712 -0
  255. data/spec/dummy/tmp/dragonfly/cache/body/e1/f71dadeca1e7e8044d7ffe33168a41cf4b915e +712 -0
  256. data/spec/dummy/tmp/dragonfly/cache/body/e3/5e3eeacd0fa04028277861a7e20aca055126bf +705 -0
  257. data/spec/dummy/tmp/dragonfly/cache/body/e7/71af29ca1fb912746c2a8c252ce2dbda293797 +0 -0
  258. data/spec/dummy/tmp/dragonfly/cache/body/eb/d3df10f28dd5eb3361f2dea07bce8f31883cb4 +562 -0
  259. data/spec/dummy/tmp/dragonfly/cache/body/f2/0000c07c049d6b02b83c134a47f79d25c8f884 +1006 -0
  260. data/spec/dummy/tmp/dragonfly/cache/body/f3/81eaa388ae0115314da5ef3dff86dde481f6ea +1011 -0
  261. data/spec/dummy/tmp/dragonfly/cache/body/f4/f597679294dfce3758a1e23f8739ddadb7a07a +905 -0
  262. data/spec/dummy/tmp/dragonfly/cache/body/f6/5638ff81bbc2e264c25be9224311d5b88e199e +696 -0
  263. data/spec/dummy/tmp/dragonfly/cache/body/f8/4c49b7e7f1df8b9bf194c8e4f238965275a470 +638 -0
  264. data/spec/dummy/tmp/dragonfly/cache/body/f8/bce7bef222715dce37713e4b658bb432746046 +642 -0
  265. data/spec/dummy/tmp/dragonfly/cache/body/fb/4bbd9bd1b55ea5c5f029a98429cbe84fecbd56 +1029 -0
  266. data/spec/dummy/tmp/dragonfly/cache/body/fe/83a325403c35319d9539703bf8b707c48cbb81 +700 -0
  267. data/spec/dummy/tmp/dragonfly/cache/meta/0b/a9c9bfcc4c3c931157c0740283f9879ffbc80e +0 -0
  268. data/spec/dummy/tmp/dragonfly/cache/meta/16/82dfe14b1caadf556cccc78e6742ecba3c8f50 +0 -0
  269. data/spec/dummy/tmp/dragonfly/cache/meta/18/2807a34d96c2dc102f1c7f2c2fe2a3dea0152a +0 -0
  270. data/spec/dummy/tmp/dragonfly/cache/meta/1b/df42876b5661f82d4041d818e787e2f58949e7 +0 -0
  271. data/spec/dummy/tmp/dragonfly/cache/meta/1d/f723c27427056dd58a506f1e4f15020442098e +0 -0
  272. data/spec/dummy/tmp/dragonfly/cache/meta/22/66939b783406813e2f0a76f3a2f29473675994 +0 -0
  273. data/spec/dummy/tmp/dragonfly/cache/meta/23/4f7740cb6118c7c530ce379339a99828a75ef3 +0 -0
  274. data/spec/dummy/tmp/dragonfly/cache/meta/26/25fc31c2b02071c5c60621d36793dc55fdb33c +0 -0
  275. data/spec/dummy/tmp/dragonfly/cache/meta/29/717968cc2fa016a4911e7161b6423235f36c87 +0 -0
  276. data/spec/dummy/tmp/dragonfly/cache/meta/2d/83e1c5e84c02b8fee05b62d483999bfaba7be0 +0 -0
  277. data/spec/dummy/tmp/dragonfly/cache/meta/2d/b7fe2b8774fa388daa3c8370f34052119b4222 +0 -0
  278. data/spec/dummy/tmp/dragonfly/cache/meta/2d/fe381b58b48b16278672bd61db736e4e920955 +0 -0
  279. data/spec/dummy/tmp/dragonfly/cache/meta/32/e0d3566d2be50daabce5a94c515f772050829b +0 -0
  280. data/spec/dummy/tmp/dragonfly/cache/meta/38/5bb4a3ceace256ca114fc14a3c5ae12ec83fb0 +0 -0
  281. data/spec/dummy/tmp/dragonfly/cache/meta/39/b52b68255f54efe8cb853fd153088f94a7661a +0 -0
  282. data/spec/dummy/tmp/dragonfly/cache/meta/3e/0173e72157b702c4926d190389540028b0ae1d +0 -0
  283. data/spec/dummy/tmp/dragonfly/cache/meta/52/a111bad2ef8c87af7f55baf0ffc5cdefc446e4 +0 -0
  284. data/spec/dummy/tmp/dragonfly/cache/meta/55/32c60f25996b8e8a9fdf7125956c5204fa8792 +0 -0
  285. data/spec/dummy/tmp/dragonfly/cache/meta/64/61f1782e6f9ec4e6416c0aec429529ea70a1a1 +0 -0
  286. data/spec/dummy/tmp/dragonfly/cache/meta/66/b6e26427e56a9f9ade00d4cf5d615679f0f7a7 +0 -0
  287. data/spec/dummy/tmp/dragonfly/cache/meta/66/f44aba1428593600ff0e47ea6aa54362e39a59 +0 -0
  288. data/spec/dummy/tmp/dragonfly/cache/meta/6d/f4ba8735866613f9b640f6a0cc8e4583eba1f9 +0 -0
  289. data/spec/dummy/tmp/dragonfly/cache/meta/78/d74c0cd05a77c0c06acb622761d30c9ea00bb3 +0 -0
  290. data/spec/dummy/tmp/dragonfly/cache/meta/7a/6033b3a3f17fbddc765d138d39de24f94f0965 +0 -0
  291. data/spec/dummy/tmp/dragonfly/cache/meta/7a/d6666861b23fcf6c7ea45d61810fdb1c14d9d0 +0 -0
  292. data/spec/dummy/tmp/dragonfly/cache/meta/80/5841ac20acdd8dd41460c8346294abc5c4dd8f +0 -0
  293. data/spec/dummy/tmp/dragonfly/cache/meta/83/5df7873207b08f78fd9d690e5a0b759242b937 +0 -0
  294. data/spec/dummy/tmp/dragonfly/cache/meta/83/696c30e03b7215b60e076bc528c8829ddcc516 +0 -0
  295. data/spec/dummy/tmp/dragonfly/cache/meta/83/b01df8c183f9586aff3f30bd22f4c24793c52b +0 -0
  296. data/spec/dummy/tmp/dragonfly/cache/meta/85/289eb541e97e28d96dacfd07c314be3beb566a +0 -0
  297. data/spec/dummy/tmp/dragonfly/cache/meta/8c/1a23bf2dd650d0327255a5fe948c325d350107 +0 -0
  298. data/spec/dummy/tmp/dragonfly/cache/meta/8f/5281faf3f227ef4bbbd3b644cc9eafc86ff9b1 +0 -0
  299. data/spec/dummy/tmp/dragonfly/cache/meta/91/0922a2bd8308a75961dac5733d4907df678f65 +0 -0
  300. data/spec/dummy/tmp/dragonfly/cache/meta/92/8e4f3f982b856114506c590c291dea7f0c29d7 +0 -0
  301. data/spec/dummy/tmp/dragonfly/cache/meta/92/99ecbc80a7e8abcc02a36d9c3365b23b1a5b1a +0 -0
  302. data/spec/dummy/tmp/dragonfly/cache/meta/98/00e4dc8c2a89849e9d3cb8dd37f8c45d744dd3 +0 -0
  303. data/spec/dummy/tmp/dragonfly/cache/meta/9d/4531b3a9ffdee2c2b2b485675e8b055a2de25f +0 -0
  304. data/spec/dummy/tmp/dragonfly/cache/meta/a2/5920380e48276ad6f8bc26fb9a4a527db839c8 +0 -0
  305. data/spec/dummy/tmp/dragonfly/cache/meta/b7/407b5584752ca5298158a78be896bf810dd4e0 +0 -0
  306. data/spec/dummy/tmp/dragonfly/cache/meta/b7/ae83f0c4d7b4849a78af8830c31ffe4b166b52 +0 -0
  307. data/spec/dummy/tmp/dragonfly/cache/meta/d2/458b4acc8a67ee57346f1f4ebfa0f0e4bb4ea3 +0 -0
  308. data/spec/dummy/tmp/dragonfly/cache/meta/d5/341018026448c1d4f56801bd7ddb8380e1a73c +0 -0
  309. data/spec/dummy/tmp/dragonfly/cache/meta/e7/6d1dc2d45d19440e781f6c5d00f39d8aeb4da1 +0 -0
  310. data/spec/dummy/tmp/dragonfly/cache/meta/ee/fe74949a8c2a0bbc077385a12944d9f98a12e0 +0 -0
  311. data/spec/dummy/tmp/dragonfly/cache/meta/ef/d71b44567b90c7f85e9bd0576e4b7e55bd3565 +0 -0
  312. data/spec/dummy/tmp/dragonfly/cache/meta/f9/67ac04386c59253bd80f4034d18af166cc5691 +0 -0
  313. data/spec/dummy/tmp/sass-cache/6e61637ec8d1d247724328e8c4a6704fe36b468e/_hacks.scssc +0 -0
  314. data/spec/dummy/tmp/sass-cache/77824dc1336af71703311a2e58b21a32c1511e63/_border-radius.scssc +0 -0
  315. data/spec/dummy/tmp/sass-cache/77824dc1336af71703311a2e58b21a32c1511e63/_box-shadow.scssc +0 -0
  316. data/spec/dummy/tmp/sass-cache/77824dc1336af71703311a2e58b21a32c1511e63/_gradient.scssc +0 -0
  317. data/spec/dummy/tmp/sass-cache/77824dc1336af71703311a2e58b21a32c1511e63/_images.scssc +0 -0
  318. data/spec/dummy/tmp/sass-cache/77824dc1336af71703311a2e58b21a32c1511e63/_inline-block.scssc +0 -0
  319. data/spec/dummy/tmp/sass-cache/77824dc1336af71703311a2e58b21a32c1511e63/_shared.scssc +0 -0
  320. data/spec/dummy/tmp/sass-cache/bc54e898614d486bf9338d646e8cd056915d4779/buttons.css.scssc +0 -0
  321. data/spec/dummy/tmp/sass-cache/bc54e898614d486bf9338d646e8cd056915d4779/redactor.css.scssc +0 -0
  322. data/spec/dummy/tmp/sass-cache/d1a1c9c63df53223abb80676ef7dcc16c1375c54/_support.scssc +0 -0
  323. metadata +605 -20
  324. data/spec/dummy/tmp/pids/server.pid +0 -1
@@ -0,0 +1,1029 @@
1
+ $.fn.ImperaviLanguages = {
2
+ ru : {
3
+ html : 'Код',
4
+
5
+ // Styles dropdown menu
6
+ styles : {
7
+ name : 'Стили',
8
+ paragraph : 'Параграф',
9
+ quote : 'Цитата',
10
+ code : 'Код',
11
+ h2 : 'Заголовок 2',
12
+ h3 : 'Заголовок 3',
13
+ h4 : 'Заголовок 4',
14
+ h5 : 'Заголовок 5',
15
+ h6 : 'Заголовок 6',
16
+ },
17
+
18
+ // Formatting dropdown menu
19
+ format : {
20
+ name : 'Формат',
21
+ bold : 'Полужирный',
22
+ italic : 'Наклонный',
23
+ sup : 'Надстрочный',
24
+ sub : 'Надстрочный',
25
+ strike : 'Зачеркнутый',
26
+ remove : 'Очистить форматирование'
27
+ },
28
+
29
+ // Lists dropdown menu
30
+ lists : {
31
+ name : 'Списки',
32
+ unordered : 'Обычный список',
33
+ ordered : 'Нумерованный список',
34
+ outdent : 'Уменьшить отступ',
35
+ indent : 'Увеличить отступ'
36
+ },
37
+
38
+ // Working with images
39
+ image : {
40
+ name : 'Изображение',
41
+ download : 'Скачать изображение',
42
+ text : 'Текст',
43
+ mailto : 'Эл. почта',
44
+ web : 'URL',
45
+ title : 'Подсказка',
46
+ buttons : {
47
+ save : 'Сохранить',
48
+ cancel : 'Отменить',
49
+ insert : 'Вставить',
50
+ remove : 'Удалить'
51
+ },
52
+ align : {
53
+ name : 'Обтекание текстом',
54
+ none : 'нет',
55
+ left : 'слева',
56
+ right : 'справа'
57
+ }
58
+ },
59
+
60
+ // Insert and format tables
61
+ table : {
62
+ name : 'Таблица',
63
+ insert : 'Вставить таблицу',
64
+ remove : 'Удалить таблицу',
65
+ row: {
66
+ name : 'Строки',
67
+ above : 'Добавить строку сверху',
68
+ below : 'Добавить строку снизу',
69
+ remove : 'Удалить строку'
70
+ },
71
+ column : {
72
+ name : 'Столбцы',
73
+ left : 'Добавить столбец слева',
74
+ right : 'Добавить столбец справа',
75
+ remove : 'Удалить столбец',
76
+ },
77
+ header : {
78
+ add : 'Добавить заголовок',
79
+ remove : 'Удалить заголовок'
80
+ }
81
+ },
82
+
83
+ // Insert video from youtube etc
84
+ video : {
85
+ name : 'Видео',
86
+ code : 'Код видео ролика'
87
+ },
88
+
89
+ // Insert or remove hyperlink to a file
90
+ file : {
91
+ name : 'Файл',
92
+ upload : 'Загрузить',
93
+ download : 'Скачать',
94
+ choose : 'Выбрать',
95
+ or_choose : 'Или выберите',
96
+ drop : 'Перетащите файл сюда'
97
+ },
98
+
99
+ // Insert or remove hyperlink
100
+ hyperlink : 'Ссылка'
101
+ }
102
+ }
103
+ ;
104
+ $.fn.ImperaviToolbarDefault = {
105
+ html : true,
106
+
107
+ // Styles dropdown menu
108
+ // TODO: User styles here. Move all to format section from here
109
+ styles : {
110
+ paragraph : true,
111
+ quote : true,
112
+ code : true,
113
+ h2 : true,
114
+ h3 : true,
115
+ h4 : true,
116
+ h5 : true,
117
+ h6 : true
118
+ },
119
+
120
+ // Formatting dropdown menu
121
+ format : {
122
+ bold : true,
123
+ italic : true,
124
+ sup : true,
125
+ sub : true,
126
+ strike : true,
127
+ remove : true
128
+ },
129
+
130
+ // Lists dropdown menu
131
+ lists : {
132
+ unordered : true,
133
+ ordered : true,
134
+ outdent : true,
135
+ indent : true
136
+ },
137
+
138
+ // Working with images
139
+ image : true,
140
+
141
+ // Insert and format tables
142
+ table : {
143
+ insert : true,
144
+ remove : true,
145
+ header : {
146
+ add : true,
147
+ remove : true
148
+ },
149
+ row : {
150
+ above : true,
151
+ below : true,
152
+ remove : true
153
+ },
154
+ column : {
155
+ left : true,
156
+ right : true,
157
+ remove : true
158
+ }
159
+ },
160
+
161
+ // Insert video from youtube etc
162
+ video : true,
163
+
164
+ // Insert or remove hyperlink to a file
165
+ file : true,
166
+
167
+ // Insert or remove hyperlink
168
+ hyperlink : true
169
+ }
170
+ ;
171
+ (function( $ ) {
172
+ $.fn.ImperaviActionDelegator = function(o) { this.initialize() }
173
+
174
+ $.fn.ImperaviActionDelegator.prototype = {
175
+ initialize: function() {},
176
+
177
+ delegateButtonClick: function(button, iframe) {
178
+ switch (button.attr('rel')) {
179
+ case 'indent':
180
+ case 'outdent':
181
+ alert('yay!')
182
+ break;
183
+ case 'video':
184
+ new $.fn.ImperaviPluginVideo
185
+ break;
186
+ case 'image':
187
+ new $.fn.ImperaviPluginImage
188
+ break;
189
+ case 'hyperlink':
190
+ new $.fn.ImperaviPluginHyperlink
191
+ break;
192
+ case 'file':
193
+ new $.fn.ImperaviPluginFile
194
+ break;
195
+ default:
196
+ return button
197
+ break;
198
+ }
199
+ }
200
+ }
201
+ })(jQuery);
202
+ // Internationalization
203
+ (function( $ ) {
204
+ $.fn.ImperaviI18n = function(o) {
205
+ var o = $.extend({
206
+ locale : 'en'
207
+ }, o)
208
+
209
+ this.initialize(o)
210
+ }
211
+
212
+ $.fn.ImperaviI18n.prototype = {
213
+ o : null,
214
+ locales : null,
215
+
216
+ initialize: function(o) {
217
+ this.o = $.extend({ locale : $.fn.ImperaviOptions().options.locale }, o)
218
+ this.locales = $.fn.ImperaviLanguages[this.o.locale]
219
+ },
220
+
221
+ t: function(key) {
222
+
223
+ }
224
+ }
225
+ })(jQuery);
226
+ (function( $ ) {
227
+ $.fn.ImperaviPluginVideo = function(o) { this.initialize(o) }
228
+
229
+ $.fn.ImperaviPluginVideo.prototype = {
230
+ initialize: function(o) {
231
+ this.o = o
232
+
233
+ this.dialog = new $.fn.ImperaviDialog({
234
+ title : 'Insert video',
235
+ width : 600,
236
+ height : 300,
237
+ onOkay : function() {
238
+ alert(this.el.find('textarea').val())
239
+ this.hide()
240
+ }
241
+ })
242
+
243
+ this.dialog.show()
244
+ this.dialog.el.addClass('imperavi-plugin-video')
245
+ this.build()
246
+ },
247
+
248
+ build: function() {
249
+ var textarea = $(document.createElement('textarea'))
250
+ this.dialog.setContent(textarea)
251
+ }
252
+ }
253
+ })(jQuery);
254
+ (function( $ ) {
255
+ $.fn.ImperaviPluginImage = function(o) { this.initialize(o) }
256
+
257
+ $.fn.ImperaviPluginImage.prototype = {
258
+ initialize: function(o) {
259
+ this.o = o
260
+
261
+ this.dialog = new $.fn.ImperaviDialog({
262
+ title : 'Insert image',
263
+ width : 800,
264
+ height : 600,
265
+ onRemove : function() {
266
+ alert('fuck yeah!')
267
+ this.hide()
268
+ },
269
+ onOkay : function() {
270
+ this.hide()
271
+ }
272
+ })
273
+
274
+ this.dialog.show()
275
+ this.dialog.el.addClass('imperavi-plugin-image')
276
+ this.build()
277
+ },
278
+
279
+ build: function() {
280
+ // Add 'remove' button
281
+ this.removeButton = this.dialog.addButton('Remove', 'remove')
282
+ this.removeButton.hide();
283
+
284
+ // Create tabs and content for tabs
285
+ this.tabsArea = this.buildTabsArea()
286
+
287
+ this.uploadTab = this.buildTab('Upload image', this.buildUploadTabContent())
288
+ .appendTo(this.tabsArea)
289
+ .addClass('current')
290
+
291
+ this.pickTab = this.buildTab('Pick image', this.buildPickTabContent())
292
+ .appendTo(this.tabsArea)
293
+
294
+ this.dialog.setContent(this.tabsArea)
295
+ this.switchTabs();
296
+ },
297
+
298
+ // Build tabs container
299
+ buildTabsArea: function() {
300
+ var article = $(document.createElement('article'))
301
+ .addClass('imperavi-tabs')
302
+
303
+ return article
304
+ },
305
+
306
+ // Add another one tab
307
+ buildTab: function(title, content) {
308
+ var section = $(document.createElement('section'))
309
+ var heading = $(document.createElement('h3'))
310
+ .html(title)
311
+ .addClass('imperavi-tab')
312
+ .appendTo(section)
313
+
314
+ var content = $(document.createElement('div'))
315
+ .appendTo(section)
316
+ .html(content)
317
+
318
+ return section
319
+ },
320
+
321
+ // Switch between tabs
322
+ switchTabs: function() {
323
+ var currentTab = this.uploadTab
324
+
325
+ this.tabsArea.on('click', '.imperavi-tab', function(e){
326
+ e.preventDefault();
327
+
328
+ if (currentTab.length) {
329
+ currentTab.removeClass('current')
330
+ }
331
+
332
+ currentTab = $(this).closest('section').addClass('current')
333
+ })
334
+ },
335
+
336
+ buildPickTabContent: function() {
337
+
338
+ },
339
+
340
+ buildUploadTabContent: function() {
341
+ // Create wrapper
342
+ var wrapper = $(document.createElement('div'))
343
+ .attr('id', 'upload-wrapper')
344
+
345
+ // Create place for thumbnail
346
+ var thumbnail = $(document.createElement('figure'))
347
+ .addClass('thumbnail')
348
+ .appendTo(wrapper)
349
+
350
+ var caption = $(document.createElement('span'))
351
+ .html('No image yet')
352
+ .appendTo(thumbnail)
353
+
354
+ // Create form
355
+ var form = $(document.createElement('form'))
356
+ .attr('enctype', 'multipart/form-data')
357
+ .attr('method', 'post')
358
+ .attr('action', '/images')
359
+ //.attr('accept-charset', 'UTF-8')
360
+ .appendTo(wrapper)
361
+
362
+ // Choose image from disk field
363
+ var imageLocal = this.buildInput('Choose image from disk', 'image[image]', 'file')
364
+ .appendTo(form)
365
+
366
+ // Image url field
367
+ var imageUrl = this.buildInput('or specify link to image', 'image[url]', 'text')
368
+ .appendTo(wrapper)
369
+
370
+ // Image align dropdown
371
+ var imagePos = this.buildAlignSelect().appendTo(wrapper)
372
+
373
+
374
+ $(imageLocal).fileupload({
375
+ dataType: 'json',
376
+ url: '/images',
377
+ done: function (e, data) {
378
+ $.each(data.result, function (index, file) {
379
+ $('<p/>').text(file.name).appendTo(document.body);
380
+ });
381
+ }
382
+ });
383
+
384
+ // Submit form
385
+ /*form.on("change", ":file", function() {
386
+ thumbnail.addClass("loading");
387
+
388
+ $.ajax(form.attr("action"), {
389
+ files : form.find(":file"),
390
+ iframe : true,
391
+ dataType : "json",
392
+ contentType : 'multipart/form-data',
393
+ type : form.attr('method')
394
+ }).always(function() {
395
+ thumbnail.removeClass("loading");
396
+ }).done(function(data) {
397
+
398
+ if (data.errors) {
399
+ // Some errors occurs
400
+ alert(data.errors) // TODO
401
+ } else {
402
+ // No errors
403
+ thumbnail.empty()
404
+
405
+ $(document.createElement('img'))
406
+ .attr('src', data.file)
407
+ .attr('width', 300)
408
+ .attr('height', 340)
409
+ .appendTo(thumbnail)
410
+ }
411
+ });
412
+ });*/
413
+
414
+ return wrapper
415
+ },
416
+
417
+ buildInput: function(title, name, type) {
418
+ var wrapper = $(document.createElement('div'))
419
+ .addClass('field')
420
+
421
+ var label = $(document.createElement('label'))
422
+ .attr('for', name)
423
+ .html(title)
424
+ .appendTo(wrapper)
425
+
426
+ var url = $(document.createElement('input'))
427
+ .attr('type', type)
428
+ .attr('name', name)
429
+ .attr('id', name)
430
+ .appendTo(wrapper)
431
+
432
+ return wrapper
433
+ },
434
+
435
+ buildAlignSelect: function() {
436
+ var wrapper = $(document.createElement('div'))
437
+ .addClass('field')
438
+
439
+ var label = $(document.createElement('label'))
440
+ .attr('for', 'image-align')
441
+ .html('Image position')
442
+ .appendTo(wrapper)
443
+
444
+ var select = $(document.createElement('select'))
445
+ .attr('id', 'image-align')
446
+ .attr('name', 'image[align]')
447
+ .appendTo(wrapper)
448
+
449
+ // Create select options
450
+ var options = {
451
+ none : 'None',
452
+ left : 'To left',
453
+ right : 'To right'
454
+ }
455
+
456
+ $.each(options, function(value, caption) {
457
+ var option = $(document.createElement('option'))
458
+ .attr('value', value)
459
+ .html(caption)
460
+ .appendTo(select)
461
+
462
+ if (value == 'left') option.attr('selected', true)
463
+ })
464
+
465
+ return wrapper
466
+ }
467
+ }
468
+ })(jQuery);
469
+ (function( $ ) {
470
+ $.fn.ImperaviPluginHyperlink = function(o) { this.initialize(o) }
471
+
472
+ $.fn.ImperaviPluginHyperlink.prototype = {
473
+ initialize: function(o) {
474
+ this.o = o
475
+
476
+ this.dialog = new $.fn.ImperaviDialog({
477
+ title : 'Insert hyperlink',
478
+ width : 450,
479
+ height : 237,
480
+ onRemove : function() {
481
+ alert('fuck yeah!')
482
+ this.hide()
483
+ },
484
+ onOkay : function() {
485
+ alert('fuck')
486
+ this.hide()
487
+ }
488
+ })
489
+
490
+ this.dialog.show()
491
+ this.dialog.el.addClass('imperavi-plugin-hyperlink')
492
+ this.dialog.addButton('Remove', 'remove')
493
+ this.build()
494
+ },
495
+
496
+ build: function() {
497
+ var wrapper = $(document.createElement('div'))
498
+ var url = this.build_input('Url', 'url').appendTo(wrapper)
499
+ var caption = this.build_input('Title', 'title').appendTo(wrapper)
500
+
501
+ this.dialog.setContent(wrapper)
502
+ },
503
+
504
+ build_input: function(title, name) {
505
+ var wrapper = $(document.createElement('div'))
506
+ .addClass('field')
507
+
508
+ var label = $(document.createElement('label'))
509
+ .attr('for', name)
510
+ .html(title)
511
+ .appendTo(wrapper)
512
+
513
+ var url = $(document.createElement('input'))
514
+ .attr('type', 'text')
515
+ .attr('name', name)
516
+ .attr('id', name)
517
+ .appendTo(wrapper)
518
+
519
+ return wrapper
520
+ }
521
+ }
522
+ })(jQuery);
523
+ (function( $ ) {
524
+ $.fn.ImperaviPluginFile = function(o) { this.initialize(o) }
525
+
526
+ $.fn.ImperaviPluginFile.prototype = {
527
+ initialize: function(o) {
528
+ this.o = o
529
+
530
+ this.dialog = new $.fn.ImperaviDialog({
531
+ title : 'Attach file',
532
+ width : 450,
533
+ height : 237,
534
+ onRemove : function() {
535
+ alert('fuck yeah!')
536
+ this.hide()
537
+ },
538
+ onOkay : function() {
539
+ alert('fuck')
540
+ this.hide()
541
+ }
542
+ })
543
+
544
+ this.dialog.show()
545
+ this.dialog.el.addClass('imperavi-plugin-file')
546
+ this.dialog.addButton('Remove', 'remove')
547
+ this.build()
548
+ },
549
+
550
+ build: function() {
551
+ var wrapper = $(document.createElement('div'))
552
+ var file = this.build_input('File', 'attachment').appendTo(wrapper)
553
+ //var caption = this.build_input('Title', 'title').appendTo(wrapper)
554
+
555
+ this.dialog.setContent(wrapper)
556
+ },
557
+
558
+ build_input: function(title, name) {
559
+ var wrapper = $(document.createElement('div'))
560
+ .addClass('field')
561
+
562
+ var label = $(document.createElement('label'))
563
+ .attr('for', name)
564
+ .html(title)
565
+ .appendTo(wrapper)
566
+
567
+ var file = $(document.createElement('input'))
568
+ .attr('type', 'file')
569
+ .attr('name', name)
570
+ .attr('id', name)
571
+ .appendTo(wrapper)
572
+
573
+ return wrapper
574
+ }
575
+ }
576
+ })(jQuery);
577
+ // TODO: add custom events
578
+ // - onShow
579
+ // - onClose
580
+ // - onBuilt
581
+ // - onContentLoaded
582
+ // - onOkay
583
+ // - onCancel
584
+
585
+ (function( $ ) {
586
+ $.fn.ImperaviDialog = function(o) {
587
+ var o = $.extend({
588
+ onOkay : function() { this.hide() },
589
+ onCancel : function() { this.hide() },
590
+ onClose : function(e) { this.close(e) },
591
+ onBuilt : function() {},
592
+ onLoad : function() {}
593
+ }, o)
594
+
595
+ this.initialize(o)
596
+ }
597
+
598
+ $.fn.ImperaviDialog.prototype = {
599
+ el : null,
600
+ o : null,
601
+ overlay : null,
602
+
603
+ initialize: function(o) {
604
+ // Retrieve user options passed to imperavi
605
+ this.o = $.extend($.fn.ImperaviOptions().options.dialog, o)
606
+ },
607
+
608
+ build: function() {
609
+ // Build dialog just once
610
+ if (this.el) return;
611
+
612
+ // Create overlay
613
+ this.overlay = new $.fn.ImperaviOverlay()
614
+
615
+ // Dialog window
616
+ this.el = $(document.createElement('div'))
617
+ .attr('id', 'imperavi-dialog')
618
+ .appendTo($('body'));
619
+
620
+ this.container = $(document.createElement('div'))
621
+ .attr('id', 'imperavi-dialog-container')
622
+ .appendTo(this.el);
623
+
624
+ // Close button
625
+ this.closeBtn = $(document.createElement('a'))
626
+ .attr('href', 'javascript:;')
627
+ .html('&times;')
628
+ .attr('id', 'imperavi-dialog-close')
629
+ .appendTo(this.container);
630
+
631
+ // Dialog title
632
+ this.title = $(document.createElement('h1'))
633
+ .attr('id', 'imperavi-dialog-title')
634
+ .appendTo(this.container);
635
+
636
+ // Dialog content
637
+ this.article = $(document.createElement('article'))
638
+ .attr('id', 'imperavi-dialog-content')
639
+ .appendTo(this.container);
640
+
641
+ // Buttons panel
642
+ this.buttons_wrapper = $(document.createElement('div'))
643
+ .attr('id', 'imperavi-dialog-buttons-wrapper')
644
+ .appendTo(this.container);
645
+
646
+ this.buttons = $(document.createElement('div'))
647
+ .attr('id', 'imperavi-dialog-buttons')
648
+ .appendTo(this.buttons_wrapper);
649
+
650
+ this.okay_button = this.addButton('Okay', 'okay')
651
+ this.cancel_button = this.addButton('Cancel', 'cancel')
652
+
653
+ // Set default size
654
+ this.setSize(this.o.width, this.o.height)
655
+
656
+ // Set default title
657
+ this.setTitle(this.o.title)
658
+
659
+ this.o.onBuilt.call(this)
660
+ },
661
+
662
+ addButton: function(caption, name) {
663
+ var callbackName = 'on' + name.charAt(0).toUpperCase() + name.slice(1)
664
+
665
+ return $(document.createElement('a'))
666
+ .attr('id', 'imperavi-dialog-' + name)
667
+ .attr('href', 'javascript:;')
668
+ .html(caption)
669
+ .click($.proxy(function(){ this.o[callbackName].call(this) }, this))
670
+ .appendTo(this.buttons);
671
+ },
672
+
673
+ addEvents: function() {
674
+ var onCloseCallback = $.proxy(function(e){ this.o.onClose.call(this, e) }, this)
675
+
676
+ $(document).keyup(function(e) { onCloseCallback(e) })
677
+ this.closeBtn.click(function(e) { onCloseCallback(e) })
678
+ this.overlay.el.click(function(e) { onCloseCallback(e) })
679
+ },
680
+
681
+ removeEvents: function() {
682
+ var onCloseCallback = $.proxy(function(e){ this.o.onClose.call(this, e) }, this)
683
+
684
+ $(document).unbind('keyup', onCloseCallback)
685
+ this.closeBtn.unbind('click', onCloseCallback)
686
+ this.overlay.el.unbind('click', onCloseCallback)
687
+ },
688
+
689
+ setSize: function(width, height) {
690
+ this.el.css({
691
+ width : width + 'px',
692
+ height : height + 'px',
693
+ marginTop : '-' + height / 2 + 'px',
694
+ marginLeft : '-' + width / 2 + 'px'
695
+ }).fadeIn('fast');
696
+
697
+ this.container.css({
698
+ width : width + 'px',
699
+ height : height + 'px',
700
+ })
701
+ },
702
+
703
+ setTitle: function(title) {
704
+ this.title.html(title)
705
+ },
706
+
707
+ setContent: function(content) {
708
+ this.article.html(content)
709
+ },
710
+
711
+ // TODO Load content via ajax
712
+ loadContent: function(url) {
713
+ this.setContent('')
714
+ this.o.onLoad.call(this)
715
+ },
716
+
717
+ cleanUp: function() {
718
+ this.removeEvents()
719
+ this.setContent('')
720
+ this.setTitle('')
721
+ },
722
+
723
+ show: function() {
724
+ this.build()
725
+ this.overlay.show()
726
+ this.el.show()
727
+ this.addEvents()
728
+ },
729
+
730
+ hide: function() {
731
+ this.el.hide()
732
+ this.overlay.hide()
733
+ this.cleanUp()
734
+ },
735
+
736
+ close: function(e) {
737
+ if (e.keyCode == 27 || e.type == 'click')
738
+ this.hide()
739
+ }
740
+ }
741
+ })(jQuery);
742
+ (function( $ ) {
743
+ $.fn.ImperaviOverlay = function(o) { this.initialize(o) }
744
+
745
+ $.fn.ImperaviOverlay.prototype = {
746
+ el : null,
747
+
748
+ initialize: function(o) {
749
+ this.o = o
750
+ },
751
+
752
+ build: function() {
753
+ if (this.el) return;
754
+
755
+ this.el = $(document.createElement('div'))
756
+ .attr('id', 'imperavi-overlay')
757
+ .appendTo($('body'));
758
+ },
759
+
760
+ show: function() {
761
+ this.build()
762
+ this.el.show()
763
+ },
764
+
765
+ hide: function() {
766
+ this.el.hide()
767
+ }
768
+ }
769
+ })(jQuery);
770
+ (function( $ ) {
771
+ $.fn.ImperaviIframe = function(textarea, o) { this.initialize(textarea, o) }
772
+
773
+ $.fn.ImperaviIframe.prototype = {
774
+ textarea : null,
775
+ wrapper : null,
776
+ el : null,
777
+
778
+ initialize: function(textarea, o) {
779
+ this.textarea = textarea
780
+ this.o = o
781
+
782
+ this.textarea.hide();
783
+
784
+ this.build()
785
+ this.populate()
786
+ this.enable(true)
787
+ },
788
+
789
+ // Build Iframe object and stuff
790
+ build: function() {
791
+ this.wrapper = $(document.createElement('div'))
792
+ .addClass('imperavi')
793
+ .insertAfter(this.textarea)
794
+
795
+ this.el = $(document.createElement('iframe'))
796
+ .appendTo(this.wrapper)
797
+ .css({ width : this.textarea.outerWidth(), height : this.textarea.outerHeight() })
798
+ },
799
+
800
+ populate: function() {
801
+ html = '<!DOCTYPE html>'
802
+ html += '<head><meta charset="utf-8" />'
803
+ //html += '<link rel="stylesheet" href="/assets/wysiwyg.css?body=1" />'
804
+ //html += '<script src="/assets/mootools.js?body=1"></script>'
805
+ html += '</head><html><body>' + this.textarea.val()
806
+ html += '</body></html>'
807
+
808
+ this.doc().open();
809
+ this.doc().write(html);
810
+ this.doc().close();
811
+ },
812
+
813
+ enableObjects: function() {
814
+ if (!$.browser.mozilla) return;
815
+
816
+ //this.doc().execCommand('styleWithCSS', false, false)
817
+ //this.doc().execCommand('enableObjectResizing', false, false)
818
+ //this.doc().execCommand('enableInlineTableEditing', false, false)
819
+ },
820
+
821
+ observe: function() {
822
+
823
+ },
824
+
825
+ enable: function(status) {
826
+ // Located here for Chrome support
827
+ this.doc().designMode = status ? 'on' : 'off';
828
+
829
+ this.el.load($.proxy(function() {
830
+ this.enableObjects();
831
+ this.observe();
832
+ }, this));
833
+ },
834
+
835
+ doc: function() {
836
+ var i = this.el.get(0)
837
+ if (i.contentDocument) return i.contentDocument
838
+ if (i.contentWindow) return i.contentWindow.document
839
+
840
+ return i.document
841
+ }
842
+ }
843
+ })(jQuery);
844
+ (function( $ ) {
845
+ $.fn.ImperaviIframeResizer = function(iframe, o) { this.initialize(iframe, o) }
846
+
847
+ $.fn.ImperaviIframeResizer.prototype = {
848
+ iframe : null,
849
+ el : null,
850
+
851
+ initialize: function(iframe, o) {
852
+ this.iframe = iframe
853
+ this.o = o
854
+
855
+ this.build()
856
+ },
857
+
858
+ build: function() {
859
+ this.el = $(document.createElement('div'))
860
+ .addClass('imperavi-resizer')
861
+ .insertAfter(this.iframe.el)
862
+
863
+ this.el.append($(document.createElement('div')))
864
+ }
865
+ }
866
+ })(jQuery);
867
+ (function( $ ) {
868
+ $.fn.ImperaviToolbar = function(iframe, o) {
869
+ var o = $.extend({
870
+ onButtonClick : function(button) {},
871
+ }, o)
872
+
873
+ this.initialize(iframe, o)
874
+ }
875
+
876
+ $.fn.ImperaviToolbar.prototype = {
877
+ iframe : null,
878
+ el : null,
879
+
880
+ initialize: function(iframe, o) {
881
+ this.iframe = iframe
882
+ this.o = o
883
+ this.x = $.fn.ImperaviToolbarDefault // TODO make it pretty
884
+ this.l = $.fn.ImperaviLanguages.ru // TODO make it pretty
885
+
886
+ this.build()
887
+ },
888
+
889
+ // Build Toolbar object
890
+ build: function() {
891
+ this.el = $(document.createElement('ul'))
892
+ .insertBefore(this.iframe.el);
893
+
894
+ $.each(this.x, $.proxy(function(key, value) {
895
+ // Buttons with dropdown
896
+ if (typeof value == 'object') {
897
+ this.el.append(this.addDropdown(key, value))
898
+ } else if (typeof value == 'boolean' && value == true) {
899
+ var title = typeof this.l[key] == 'object' ? this.l[key].name : this.l[key]
900
+ this.el.append(this.addButton(key, title, null))
901
+ }
902
+ }, this));
903
+ },
904
+
905
+ addButton: function(name, title, caption) {
906
+ var li = $(document.createElement('li')).addClass('button-' + name)
907
+ var a = $(document.createElement('a'))
908
+ .attr('href', 'javascript:;')
909
+ .attr('rel', name)
910
+ .attr('title', title)
911
+ .appendTo(li)
912
+ // This executes a custom callback on button click
913
+ .click($.proxy(function(){ this.o.onButtonClick.call(this, a) }, this))
914
+
915
+ var span = $(document.createElement('span'))
916
+ .html(caption)
917
+ .appendTo(a);
918
+
919
+ return li.append(a)
920
+ },
921
+
922
+ addDropdown: function(name, items) {
923
+ var button = this.addButton(name, this.l[name].name, null)
924
+ var ul = $(document.createElement('ul'))
925
+
926
+ button.addClass('has-dropdown')
927
+
928
+ // Add dropdown items
929
+ $.each(items, $.proxy(function(key, value) {
930
+ if (typeof value == 'object') {
931
+ var separator = true
932
+
933
+ $.each(value, $.proxy(function(key2, value2) {
934
+ if (value2 == true) {
935
+ var item = this.addButton(key2, null, this.l[name][key][key2])
936
+ if (separator) item.addClass('separator')
937
+
938
+ ul.append(item)
939
+ separator = false
940
+ }
941
+ }, this));
942
+ } else if (typeof value == 'boolean' && value == true) {
943
+ ul.append( this.addButton(key, null, this.l[name][key]) )
944
+ }
945
+ }, this));
946
+
947
+ return button.append(ul)
948
+ }
949
+ }
950
+ })(jQuery);
951
+ (function( $ ) {
952
+ $.fn.imperavi = function(o) {
953
+ // Editor options
954
+ var o = $.extend({
955
+ locale : 'ru', // TODO replace with $.fn.ImperaviLanguage
956
+ resizer : $.fn.ImperaviIframeResizer,
957
+ dialog : $.fn.ImperaviDialog,
958
+ overlay : $.fn.ImperaviOverlay,
959
+ iframe : $.fn.ImperaviIframe,
960
+ toolbar : $.fn.ImperaviToolbar,
961
+ delegator : $.fn.ImperaviActionDelegator,
962
+ options : {
963
+ dialog : {
964
+ title : 'Default title',
965
+ width : 500,
966
+ height : 300
967
+ }
968
+ }
969
+ }, o)
970
+
971
+ // Global options
972
+ $.fn.ImperaviOptions = function() { return o }
973
+
974
+ // Main object
975
+ $.fn.Imperavi = function(el) { this.initialize(el) }
976
+
977
+ $.fn.Imperavi.prototype = {
978
+ textarea : null,
979
+ iframe : null,
980
+ toolbar : null,
981
+ resizer : null,
982
+ delegator : null,
983
+
984
+ // Initialize imperavi
985
+ initialize: function(el) {
986
+ this.textarea = $(el)
987
+ this.build()
988
+ this.autosave()
989
+ },
990
+
991
+ build: function() {
992
+ // Delegate action to another object
993
+ this.delegator = new o.delegator
994
+
995
+ // Create iframe
996
+ this.iframe = new o.iframe(this.textarea, o)
997
+
998
+ // Create editor resizer
999
+ this.resizer = new o.resizer(this.iframe, o)
1000
+
1001
+ // Create toolbar
1002
+ this.toolbar = new o.toolbar(this.iframe, {
1003
+ onButtonClick : $.proxy(function(button) {
1004
+ this.delegator.delegateButtonClick(button, this.iframe)
1005
+ }, this)
1006
+ })
1007
+ },
1008
+
1009
+ autosave: function() {
1010
+ // TODO: implement
1011
+ }
1012
+ }
1013
+
1014
+ // Apply imperavi for each selected element
1015
+ return this.each(function() {
1016
+ new $.fn.Imperavi(this)
1017
+ })
1018
+ }
1019
+ })(jQuery);
1020
+ // Vendor
1021
+ // require ./imperavi/jquery.ui.widget.js
1022
+ // require ./imperavi/jquery.iframe-transport.js
1023
+ // require ./imperavi/jquery.fileupload.js
1024
+
1025
+ // Imperavi
1026
+
1027
+
1028
+
1029
+ ;