erp_app 3.0.7 → 3.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (537) hide show
  1. data/README.md +23 -0
  2. data/app/controllers/erp_app/application_controller.rb +1 -0
  3. data/app/controllers/erp_app/desktop/file_manager/base_controller.rb +33 -23
  4. data/app/controllers/erp_app/public_controller.rb +2 -3
  5. data/app/controllers/erp_app/shared/configuration_controller.rb +1 -0
  6. data/app/controllers/erp_app/shared/notes_controller.rb +1 -0
  7. data/app/controllers/erp_app/shared/profile_management_controller.rb +22 -0
  8. data/app/controllers/erp_app/widget_proxy_controller.rb +2 -1
  9. data/app/models/configuration.rb +7 -0
  10. data/app/views/erp_app/desktop/base/index.erb +2 -3
  11. data/app/views/erp_app/login/index.erb +1 -1
  12. data/app/views/erp_app/mobile/base/index.erb +1 -0
  13. data/app/views/erp_app/organizer/base/index.erb +2 -3
  14. data/config/routes.rb +1 -1
  15. data/lib/active_ext/ext_helpers/column_builder.rb +118 -118
  16. data/lib/erp_app/config.rb +8 -4
  17. data/lib/erp_app/extensions/railties/action_view/base.rb +0 -1
  18. data/lib/erp_app/extensions/railties/action_view/helpers/include_helper.rb +18 -3
  19. data/lib/erp_app/version.rb +1 -1
  20. data/lib/erp_app/widgets/base.rb +5 -4
  21. data/lib/erp_app/widgets/loader.rb +2 -2
  22. data/public/images/btn/left_panel/left_panel_16x16.png +0 -0
  23. data/public/images/btn/left_right_panel/left_right_panel_16x16.png +0 -0
  24. data/public/images/btn/right_panel/right_panel_16x16.png +0 -0
  25. data/public/images/btn/save/save_16x16.png +0 -0
  26. data/public/images/btn/save_all/save_all_16x16.png +0 -0
  27. data/public/javascripts/erp_app/ckeditor/ckeditor.js +138 -135
  28. data/public/javascripts/erp_app/ckeditor/config.js +1 -1
  29. data/public/javascripts/erp_app/ckeditor/contents.css +1 -1
  30. data/public/javascripts/erp_app/ckeditor/lang/_languages.js +1 -1
  31. data/public/javascripts/erp_app/ckeditor/lang/_translationstatus.txt +62 -59
  32. data/public/javascripts/erp_app/ckeditor/lang/af.js +2 -2
  33. data/public/javascripts/erp_app/ckeditor/lang/ar.js +2 -2
  34. data/public/javascripts/erp_app/ckeditor/lang/bg.js +2 -2
  35. data/public/javascripts/erp_app/ckeditor/lang/bn.js +2 -2
  36. data/public/javascripts/erp_app/ckeditor/lang/bs.js +2 -2
  37. data/public/javascripts/erp_app/ckeditor/lang/ca.js +2 -2
  38. data/public/javascripts/erp_app/ckeditor/lang/cs.js +2 -2
  39. data/public/javascripts/erp_app/ckeditor/lang/cy.js +2 -2
  40. data/public/javascripts/erp_app/ckeditor/lang/da.js +2 -2
  41. data/public/javascripts/erp_app/ckeditor/lang/de.js +2 -2
  42. data/public/javascripts/erp_app/ckeditor/lang/el.js +2 -2
  43. data/public/javascripts/erp_app/ckeditor/lang/en-au.js +2 -2
  44. data/public/javascripts/erp_app/ckeditor/lang/en-ca.js +2 -2
  45. data/public/javascripts/erp_app/ckeditor/lang/en-gb.js +2 -2
  46. data/public/javascripts/erp_app/ckeditor/lang/en.js +2 -2
  47. data/public/javascripts/erp_app/ckeditor/lang/eo.js +2 -2
  48. data/public/javascripts/erp_app/ckeditor/lang/es.js +2 -2
  49. data/public/javascripts/erp_app/ckeditor/lang/et.js +2 -2
  50. data/public/javascripts/erp_app/ckeditor/lang/eu.js +2 -2
  51. data/public/javascripts/erp_app/ckeditor/lang/fa.js +2 -2
  52. data/public/javascripts/erp_app/ckeditor/lang/fi.js +2 -2
  53. data/public/javascripts/erp_app/ckeditor/lang/fo.js +2 -2
  54. data/public/javascripts/erp_app/ckeditor/lang/fr-ca.js +2 -2
  55. data/public/javascripts/erp_app/ckeditor/lang/fr.js +2 -2
  56. data/public/javascripts/erp_app/ckeditor/lang/gl.js +2 -2
  57. data/public/javascripts/erp_app/ckeditor/lang/gu.js +2 -2
  58. data/public/javascripts/erp_app/ckeditor/lang/he.js +2 -2
  59. data/public/javascripts/erp_app/ckeditor/lang/hi.js +2 -2
  60. data/public/javascripts/erp_app/ckeditor/lang/hr.js +2 -2
  61. data/public/javascripts/erp_app/ckeditor/lang/hu.js +2 -2
  62. data/public/javascripts/erp_app/ckeditor/lang/id.js +6 -0
  63. data/public/javascripts/erp_app/ckeditor/lang/is.js +2 -2
  64. data/public/javascripts/erp_app/ckeditor/lang/it.js +2 -2
  65. data/public/javascripts/erp_app/ckeditor/lang/ja.js +2 -2
  66. data/public/javascripts/erp_app/ckeditor/lang/ka.js +2 -2
  67. data/public/javascripts/erp_app/ckeditor/lang/km.js +2 -2
  68. data/public/javascripts/erp_app/ckeditor/lang/ko.js +2 -2
  69. data/public/javascripts/erp_app/ckeditor/lang/lt.js +2 -2
  70. data/public/javascripts/erp_app/ckeditor/lang/lv.js +2 -2
  71. data/public/javascripts/erp_app/ckeditor/lang/mk.js +6 -0
  72. data/public/javascripts/erp_app/ckeditor/lang/mn.js +2 -2
  73. data/public/javascripts/erp_app/ckeditor/lang/ms.js +2 -2
  74. data/public/javascripts/erp_app/ckeditor/lang/nb.js +2 -2
  75. data/public/javascripts/erp_app/ckeditor/lang/nl.js +2 -2
  76. data/public/javascripts/erp_app/ckeditor/lang/no.js +2 -2
  77. data/public/javascripts/erp_app/ckeditor/lang/pl.js +2 -2
  78. data/public/javascripts/erp_app/ckeditor/lang/pt-br.js +2 -2
  79. data/public/javascripts/erp_app/ckeditor/lang/pt.js +2 -2
  80. data/public/javascripts/erp_app/ckeditor/lang/ro.js +2 -2
  81. data/public/javascripts/erp_app/ckeditor/lang/ru.js +2 -2
  82. data/public/javascripts/erp_app/ckeditor/lang/sk.js +2 -2
  83. data/public/javascripts/erp_app/ckeditor/lang/sl.js +2 -2
  84. data/public/javascripts/erp_app/ckeditor/lang/sr-latn.js +2 -2
  85. data/public/javascripts/erp_app/ckeditor/lang/sr.js +2 -2
  86. data/public/javascripts/erp_app/ckeditor/lang/sv.js +2 -2
  87. data/public/javascripts/erp_app/ckeditor/lang/th.js +2 -2
  88. data/public/javascripts/erp_app/ckeditor/lang/tr.js +2 -2
  89. data/public/javascripts/erp_app/ckeditor/lang/ug.js +6 -0
  90. data/public/javascripts/erp_app/ckeditor/lang/uk.js +2 -2
  91. data/public/javascripts/erp_app/ckeditor/lang/vi.js +2 -2
  92. data/public/javascripts/erp_app/ckeditor/lang/zh-cn.js +2 -2
  93. data/public/javascripts/erp_app/ckeditor/lang/zh.js +2 -2
  94. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +1 -1
  95. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/_translationstatus.txt +25 -0
  96. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/cs.js +6 -0
  97. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/cy.js +6 -0
  98. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/da.js +6 -0
  99. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/de.js +6 -0
  100. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/el.js +6 -0
  101. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/en.js +2 -2
  102. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/eo.js +6 -0
  103. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/fa.js +6 -0
  104. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/fi.js +6 -0
  105. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/fr.js +6 -0
  106. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/gu.js +6 -0
  107. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/he.js +2 -2
  108. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/it.js +6 -0
  109. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/mk.js +6 -0
  110. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/nb.js +6 -0
  111. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/nl.js +6 -0
  112. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/no.js +6 -0
  113. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/pt-br.js +6 -0
  114. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/ro.js +6 -0
  115. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/tr.js +6 -0
  116. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/ug.js +6 -0
  117. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/vi.js +6 -0
  118. data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/zh-cn.js +6 -0
  119. data/public/javascripts/erp_app/ckeditor/plugins/about/dialogs/about.js +1 -1
  120. data/public/javascripts/erp_app/ckeditor/plugins/adobeair/plugin.js +1 -1
  121. data/public/javascripts/erp_app/ckeditor/plugins/ajax/plugin.js +1 -1
  122. data/public/javascripts/erp_app/ckeditor/plugins/autogrow/plugin.js +2 -2
  123. data/public/javascripts/erp_app/ckeditor/plugins/bbcode/plugin.js +1 -1
  124. data/public/javascripts/erp_app/ckeditor/plugins/clipboard/dialogs/paste.js +2 -2
  125. data/public/javascripts/erp_app/ckeditor/plugins/colordialog/dialogs/colordialog.js +3 -3
  126. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/_translationstatus.txt +28 -0
  127. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/bg.js +6 -0
  128. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/cs.js +6 -0
  129. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/cy.js +6 -0
  130. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/da.js +6 -0
  131. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/de.js +6 -0
  132. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/el.js +6 -0
  133. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/en.js +1 -1
  134. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/eo.js +6 -0
  135. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/et.js +6 -0
  136. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/fa.js +6 -0
  137. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/fi.js +6 -0
  138. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/fr.js +6 -0
  139. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/gu.js +6 -0
  140. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/he.js +6 -0
  141. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/hr.js +6 -0
  142. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/it.js +6 -0
  143. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/nb.js +6 -0
  144. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/nl.js +6 -0
  145. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/no.js +6 -0
  146. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/pl.js +6 -0
  147. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/pt-br.js +6 -0
  148. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/tr.js +6 -0
  149. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/ug.js +6 -0
  150. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/uk.js +6 -0
  151. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/vi.js +6 -0
  152. data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/zh-cn.js +6 -0
  153. data/public/javascripts/erp_app/ckeditor/plugins/devtools/plugin.js +2 -2
  154. data/public/javascripts/erp_app/ckeditor/plugins/dialog/dialogDefinition.js +1 -1
  155. data/public/javascripts/erp_app/ckeditor/plugins/div/dialogs/div.js +1 -1
  156. data/public/javascripts/erp_app/ckeditor/plugins/docprops/dialogs/docprops.js +1 -1
  157. data/public/javascripts/erp_app/ckeditor/plugins/docprops/plugin.js +1 -1
  158. data/public/javascripts/erp_app/ckeditor/plugins/find/dialogs/find.js +3 -3
  159. data/public/javascripts/erp_app/ckeditor/plugins/flash/dialogs/flash.js +4 -4
  160. data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/button.js +1 -1
  161. data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/checkbox.js +1 -1
  162. data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/form.js +1 -1
  163. data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/hiddenfield.js +1 -1
  164. data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/radio.js +1 -1
  165. data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/select.js +1 -1
  166. data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/textarea.js +1 -1
  167. data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/textfield.js +1 -1
  168. data/public/javascripts/erp_app/ckeditor/plugins/iframe/dialogs/iframe.js +1 -1
  169. data/public/javascripts/erp_app/ckeditor/plugins/iframedialog/plugin.js +1 -1
  170. data/public/javascripts/erp_app/ckeditor/plugins/image/dialogs/image.js +9 -9
  171. data/public/javascripts/erp_app/ckeditor/plugins/inlineeditsave/plugin.js +40 -0
  172. data/public/javascripts/erp_app/ckeditor/plugins/link/dialogs/anchor.js +2 -2
  173. data/public/javascripts/erp_app/ckeditor/plugins/link/dialogs/link.js +5 -5
  174. data/public/javascripts/erp_app/ckeditor/plugins/liststyle/dialogs/liststyle.js +1 -1
  175. data/public/javascripts/erp_app/ckeditor/plugins/pastefromword/filter/default.js +1 -1
  176. data/public/javascripts/erp_app/ckeditor/plugins/pastetext/dialogs/pastetext.js +1 -1
  177. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/dialogs/placeholder.js +1 -1
  178. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/_translationstatus.txt +27 -0
  179. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/bg.js +6 -0
  180. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/cs.js +6 -0
  181. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/cy.js +6 -0
  182. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/da.js +6 -0
  183. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/de.js +6 -0
  184. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/el.js +6 -0
  185. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/en.js +1 -1
  186. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/eo.js +6 -0
  187. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/et.js +6 -0
  188. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/fa.js +6 -0
  189. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/fi.js +6 -0
  190. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/fr.js +6 -0
  191. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/he.js +1 -1
  192. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/hr.js +6 -0
  193. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/it.js +6 -0
  194. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/nb.js +6 -0
  195. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/nl.js +6 -0
  196. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/no.js +6 -0
  197. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/pl.js +6 -0
  198. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/pt-br.js +6 -0
  199. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/tr.js +6 -0
  200. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/ug.js +6 -0
  201. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/uk.js +6 -0
  202. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/vi.js +6 -0
  203. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/zh-cn.js +6 -0
  204. data/public/javascripts/erp_app/ckeditor/plugins/placeholder/plugin.js +2 -2
  205. data/public/javascripts/erp_app/ckeditor/plugins/preview/preview.html +10 -0
  206. data/public/javascripts/erp_app/ckeditor/plugins/scayt/dialogs/options.js +1 -1
  207. data/public/javascripts/erp_app/ckeditor/plugins/scayt/dialogs/toolbar.css +1 -1
  208. data/public/javascripts/erp_app/ckeditor/plugins/smiley/dialogs/smiley.js +1 -1
  209. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/dialogs/specialchar.js +1 -1
  210. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/_translationstatus.txt +22 -0
  211. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/cs.js +6 -0
  212. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/cy.js +6 -0
  213. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/de.js +6 -0
  214. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/el.js +6 -0
  215. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/en.js +1 -1
  216. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/eo.js +6 -0
  217. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/et.js +6 -0
  218. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/fa.js +6 -0
  219. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/fi.js +6 -0
  220. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/fr.js +6 -0
  221. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/he.js +6 -0
  222. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/hr.js +6 -0
  223. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/it.js +6 -0
  224. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/nb.js +6 -0
  225. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/nl.js +6 -0
  226. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/no.js +6 -0
  227. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/pt-br.js +6 -0
  228. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/tr.js +6 -0
  229. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/ug.js +6 -0
  230. data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/zh-cn.js +6 -0
  231. data/public/javascripts/erp_app/ckeditor/plugins/styles/styles/default.js +1 -1
  232. data/public/javascripts/erp_app/ckeditor/plugins/stylesheetparser/plugin.js +1 -1
  233. data/public/javascripts/erp_app/ckeditor/plugins/table/dialogs/table.js +5 -5
  234. data/public/javascripts/erp_app/ckeditor/plugins/tableresize/plugin.js +1 -1
  235. data/public/javascripts/erp_app/ckeditor/plugins/tabletools/dialogs/tableCell.js +3 -3
  236. data/public/javascripts/erp_app/ckeditor/plugins/templates/dialogs/templates.js +1 -1
  237. data/public/javascripts/erp_app/ckeditor/plugins/templates/templates/default.js +1 -1
  238. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/dialogs/uicolor.js +1 -1
  239. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/_translationstatus.txt +28 -0
  240. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/bg.js +6 -0
  241. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/cs.js +6 -0
  242. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/cy.js +6 -0
  243. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/da.js +6 -0
  244. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/de.js +6 -0
  245. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/el.js +6 -0
  246. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/en.js +1 -1
  247. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/eo.js +6 -0
  248. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/et.js +6 -0
  249. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/fa.js +6 -0
  250. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/fi.js +6 -0
  251. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/fr.js +6 -0
  252. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/he.js +1 -1
  253. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/hr.js +6 -0
  254. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/it.js +6 -0
  255. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/mk.js +6 -0
  256. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/nb.js +6 -0
  257. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/nl.js +6 -0
  258. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/no.js +6 -0
  259. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/pl.js +6 -0
  260. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/pt-br.js +6 -0
  261. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/tr.js +6 -0
  262. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/ug.js +6 -0
  263. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/uk.js +6 -0
  264. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/vi.js +6 -0
  265. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/zh-cn.js +6 -0
  266. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/plugin.js +2 -2
  267. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/yui/assets/yui.css +1 -1
  268. data/public/javascripts/erp_app/ckeditor/plugins/uicolor/yui/yui.js +1 -1
  269. data/public/javascripts/erp_app/ckeditor/plugins/wsc/dialogs/ciframe.html +1 -1
  270. data/public/javascripts/erp_app/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +1 -1
  271. data/public/javascripts/erp_app/ckeditor/plugins/wsc/dialogs/wsc.css +1 -1
  272. data/public/javascripts/erp_app/ckeditor/plugins/wsc/dialogs/wsc.js +1 -1
  273. data/public/javascripts/erp_app/ckeditor/plugins/xml/plugin.js +1 -1
  274. data/public/javascripts/erp_app/ckeditor/skins/kama/dialog.css +6 -6
  275. data/public/javascripts/erp_app/ckeditor/skins/kama/editor.css +1 -1
  276. data/public/javascripts/erp_app/ckeditor/skins/kama/skin.js +1 -1
  277. data/public/javascripts/erp_app/ckeditor/skins/kama/templates.css +1 -1
  278. data/public/javascripts/erp_app/ckeditor/skins/office2003/dialog.css +6 -5
  279. data/public/javascripts/erp_app/ckeditor/skins/office2003/editor.css +1 -1
  280. data/public/javascripts/erp_app/ckeditor/skins/office2003/skin.js +1 -1
  281. data/public/javascripts/erp_app/ckeditor/skins/office2003/templates.css +1 -1
  282. data/public/javascripts/erp_app/ckeditor/skins/v2/dialog.css +5 -5
  283. data/public/javascripts/erp_app/ckeditor/skins/v2/editor.css +1 -1
  284. data/public/javascripts/erp_app/ckeditor/skins/v2/skin.js +1 -1
  285. data/public/javascripts/erp_app/ckeditor/skins/v2/templates.css +1 -1
  286. data/public/javascripts/erp_app/ckeditor/themes/default/theme.js +1 -1
  287. data/public/javascripts/erp_app/ckeditor_example_config_override.js +2 -1
  288. data/public/javascripts/erp_app/codemirror/LICENSE +5 -1
  289. data/public/javascripts/erp_app/codemirror/README.md +6 -4
  290. data/public/javascripts/erp_app/codemirror/{css → doc}/baboon.png +0 -0
  291. data/public/javascripts/erp_app/codemirror/{css → doc}/baboon_vector.svg +0 -0
  292. data/public/javascripts/erp_app/codemirror/doc/compress.html +155 -0
  293. data/public/javascripts/erp_app/codemirror/{css → doc}/docs.css +0 -0
  294. data/public/javascripts/erp_app/codemirror/doc/internals.html +494 -0
  295. data/public/javascripts/erp_app/codemirror/{manual.html → doc/manual.html} +465 -167
  296. data/public/javascripts/erp_app/codemirror/doc/oldrelease.html +267 -0
  297. data/public/javascripts/erp_app/codemirror/doc/reporting.html +57 -0
  298. data/public/javascripts/erp_app/codemirror/doc/upgrade_v2.2.html +95 -0
  299. data/public/javascripts/erp_app/codemirror/keymap/emacs.js +29 -0
  300. data/public/javascripts/erp_app/codemirror/keymap/vim.js +785 -0
  301. data/public/javascripts/erp_app/codemirror/lib/codemirror.css +116 -14
  302. data/public/javascripts/erp_app/codemirror/lib/codemirror.js +2128 -1054
  303. data/public/javascripts/erp_app/codemirror/lib/util/closetag.js +164 -0
  304. data/public/javascripts/erp_app/codemirror/lib/util/dialog.css +27 -0
  305. data/public/javascripts/erp_app/codemirror/lib/util/dialog.js +67 -0
  306. data/public/javascripts/erp_app/codemirror/lib/util/foldcode.js +196 -0
  307. data/public/javascripts/erp_app/codemirror/lib/util/formatting.js +299 -0
  308. data/public/javascripts/erp_app/codemirror/lib/util/javascript-hint.js +134 -0
  309. data/public/javascripts/erp_app/codemirror/lib/util/loadmode.js +51 -0
  310. data/public/javascripts/erp_app/codemirror/lib/util/match-highlighter.js +44 -0
  311. data/public/javascripts/erp_app/codemirror/lib/util/multiplex.js +81 -0
  312. data/public/javascripts/erp_app/codemirror/lib/{overlay.js → util/overlay.js} +3 -2
  313. data/public/javascripts/erp_app/codemirror/lib/util/pig-hint.js +123 -0
  314. data/public/javascripts/erp_app/codemirror/lib/util/runmode.js +49 -0
  315. data/public/javascripts/erp_app/codemirror/lib/util/search.js +118 -0
  316. data/public/javascripts/erp_app/codemirror/lib/util/searchcursor.js +117 -0
  317. data/public/javascripts/erp_app/codemirror/lib/util/simple-hint.css +16 -0
  318. data/public/javascripts/erp_app/codemirror/lib/util/simple-hint.js +76 -0
  319. data/public/javascripts/erp_app/codemirror/lib/util/xml-hint.js +137 -0
  320. data/public/javascripts/erp_app/codemirror/mode/clike/clike.js +50 -17
  321. data/public/javascripts/erp_app/codemirror/mode/clike/index.html +4 -5
  322. data/public/javascripts/erp_app/codemirror/mode/clike/scala.html +765 -0
  323. data/public/javascripts/erp_app/codemirror/mode/clojure/clojure.js +207 -0
  324. data/public/javascripts/erp_app/codemirror/mode/clojure/index.html +66 -0
  325. data/public/javascripts/erp_app/codemirror/mode/coffeescript/coffeescript.js +101 -63
  326. data/public/javascripts/erp_app/codemirror/mode/coffeescript/index.html +9 -4
  327. data/public/javascripts/erp_app/codemirror/mode/css/css.js +4 -4
  328. data/public/javascripts/erp_app/codemirror/mode/css/index.html +3 -4
  329. data/public/javascripts/erp_app/codemirror/mode/diff/diff.js +24 -5
  330. data/public/javascripts/erp_app/codemirror/mode/diff/index.html +12 -7
  331. data/public/javascripts/erp_app/codemirror/mode/ecl/ecl.js +203 -0
  332. data/public/javascripts/erp_app/codemirror/mode/ecl/index.html +42 -0
  333. data/public/javascripts/erp_app/codemirror/mode/erlang/erlang.js +463 -0
  334. data/public/javascripts/erp_app/codemirror/mode/erlang/index.html +62 -0
  335. data/public/javascripts/erp_app/codemirror/mode/gfm/gfm.js +144 -0
  336. data/public/javascripts/erp_app/codemirror/mode/gfm/index.html +47 -0
  337. data/public/javascripts/erp_app/codemirror/mode/go/go.js +170 -0
  338. data/public/javascripts/erp_app/codemirror/mode/go/index.html +72 -0
  339. data/public/javascripts/erp_app/codemirror/mode/groovy/groovy.js +210 -0
  340. data/public/javascripts/erp_app/codemirror/mode/groovy/index.html +71 -0
  341. data/public/javascripts/erp_app/codemirror/mode/haskell/index.html +3 -3
  342. data/public/javascripts/erp_app/codemirror/mode/haxe/haxe.js +432 -0
  343. data/public/javascripts/erp_app/codemirror/mode/haxe/index.html +90 -0
  344. data/public/javascripts/erp_app/codemirror/mode/htmlembedded/htmlembedded.js +68 -0
  345. data/public/javascripts/erp_app/codemirror/mode/htmlembedded/index.html +49 -0
  346. data/public/javascripts/erp_app/codemirror/mode/htmlmixed/htmlmixed.js +8 -2
  347. data/public/javascripts/erp_app/codemirror/mode/htmlmixed/index.html +3 -4
  348. data/public/javascripts/erp_app/codemirror/mode/javascript/index.html +3 -4
  349. data/public/javascripts/erp_app/codemirror/mode/javascript/javascript.js +26 -13
  350. data/public/javascripts/erp_app/codemirror/mode/jinja2/index.html +37 -0
  351. data/public/javascripts/erp_app/codemirror/mode/jinja2/jinja2.js +42 -0
  352. data/public/javascripts/erp_app/codemirror/mode/less/index.html +618 -0
  353. data/public/javascripts/erp_app/codemirror/mode/less/less.js +232 -0
  354. data/public/javascripts/erp_app/codemirror/mode/lua/index.html +3 -3
  355. data/public/javascripts/erp_app/codemirror/mode/lua/lua.js +5 -3
  356. data/public/javascripts/erp_app/codemirror/mode/markdown/index.html +340 -0
  357. data/public/javascripts/erp_app/codemirror/mode/markdown/markdown.js +268 -0
  358. data/public/javascripts/erp_app/codemirror/mode/mysql/index.html +41 -0
  359. data/public/javascripts/erp_app/codemirror/mode/mysql/mysql.js +186 -0
  360. data/public/javascripts/erp_app/codemirror/mode/ntriples/index.html +32 -0
  361. data/public/javascripts/erp_app/codemirror/mode/ntriples/ntriples.js +172 -0
  362. data/public/javascripts/erp_app/codemirror/mode/ocaml/index.html +130 -0
  363. data/public/javascripts/erp_app/codemirror/mode/ocaml/ocaml.js +114 -0
  364. data/public/javascripts/erp_app/codemirror/mode/pascal/LICENSE +7 -0
  365. data/public/javascripts/erp_app/codemirror/mode/pascal/index.html +48 -0
  366. data/public/javascripts/erp_app/codemirror/mode/pascal/pascal.js +94 -0
  367. data/public/javascripts/erp_app/codemirror/mode/perl/LICENSE +19 -0
  368. data/public/javascripts/erp_app/codemirror/mode/perl/index.html +62 -0
  369. data/public/javascripts/erp_app/codemirror/mode/perl/perl.js +816 -0
  370. data/public/javascripts/erp_app/codemirror/mode/php/index.html +4 -5
  371. data/public/javascripts/erp_app/codemirror/mode/php/php.js +62 -27
  372. data/public/javascripts/erp_app/codemirror/mode/pig/index.html +42 -0
  373. data/public/javascripts/erp_app/codemirror/mode/pig/pig.js +172 -0
  374. data/public/javascripts/erp_app/codemirror/mode/plsql/index.html +3 -4
  375. data/public/javascripts/erp_app/codemirror/mode/plsql/plsql.js +2 -2
  376. data/public/javascripts/erp_app/codemirror/mode/properties/index.html +40 -0
  377. data/public/javascripts/erp_app/codemirror/mode/properties/properties.js +63 -0
  378. data/public/javascripts/erp_app/codemirror/mode/python/index.html +3 -4
  379. data/public/javascripts/erp_app/codemirror/mode/python/python.js +59 -42
  380. data/public/javascripts/erp_app/codemirror/mode/r/index.html +5 -5
  381. data/public/javascripts/erp_app/codemirror/mode/r/r.js +9 -2
  382. data/public/javascripts/erp_app/codemirror/mode/rpm/changes/changes.js +19 -0
  383. data/public/javascripts/erp_app/codemirror/mode/rpm/changes/index.html +53 -0
  384. data/public/javascripts/erp_app/codemirror/mode/rpm/spec/index.html +99 -0
  385. data/public/javascripts/erp_app/codemirror/mode/rpm/spec/spec.css +5 -0
  386. data/public/javascripts/erp_app/codemirror/mode/rpm/spec/spec.js +66 -0
  387. data/public/javascripts/erp_app/codemirror/mode/rst/index.html +4 -5
  388. data/public/javascripts/erp_app/codemirror/mode/rst/rst.js +15 -22
  389. data/public/javascripts/erp_app/codemirror/mode/ruby/index.html +3 -4
  390. data/public/javascripts/erp_app/codemirror/mode/ruby/ruby.js +49 -36
  391. data/public/javascripts/erp_app/codemirror/mode/rust/index.html +48 -0
  392. data/public/javascripts/erp_app/codemirror/mode/rust/rust.js +432 -0
  393. data/public/javascripts/erp_app/codemirror/mode/scheme/index.html +3 -4
  394. data/public/javascripts/erp_app/codemirror/mode/scheme/scheme.js +71 -23
  395. data/public/javascripts/erp_app/codemirror/mode/shell/index.html +50 -0
  396. data/public/javascripts/erp_app/codemirror/mode/shell/shell.js +118 -0
  397. data/public/javascripts/erp_app/codemirror/mode/smalltalk/index.html +3 -4
  398. data/public/javascripts/erp_app/codemirror/mode/smalltalk/smalltalk.js +137 -120
  399. data/public/javascripts/erp_app/codemirror/mode/smarty/index.html +82 -0
  400. data/public/javascripts/erp_app/codemirror/mode/smarty/smarty.js +148 -0
  401. data/public/javascripts/erp_app/codemirror/mode/sparql/index.html +3 -4
  402. data/public/javascripts/erp_app/codemirror/mode/stex/index.html +4 -5
  403. data/public/javascripts/erp_app/codemirror/mode/stex/stex.js +22 -7
  404. data/public/javascripts/erp_app/codemirror/mode/stex/test.html +263 -0
  405. data/public/javascripts/erp_app/codemirror/mode/tiddlywiki/index.html +140 -0
  406. data/public/javascripts/erp_app/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
  407. data/public/javascripts/erp_app/codemirror/mode/tiddlywiki/tiddlywiki.js +384 -0
  408. data/public/javascripts/erp_app/codemirror/mode/tiki/index.html +82 -0
  409. data/public/javascripts/erp_app/codemirror/mode/tiki/tiki.css +26 -0
  410. data/public/javascripts/erp_app/codemirror/mode/tiki/tiki.js +316 -0
  411. data/public/javascripts/erp_app/codemirror/mode/vb/LICENSE.txt +21 -0
  412. data/public/javascripts/erp_app/codemirror/mode/vb/index.html +88 -0
  413. data/public/javascripts/erp_app/codemirror/mode/vb/vb.js +260 -0
  414. data/public/javascripts/erp_app/codemirror/mode/vbscript/index.html +42 -0
  415. data/public/javascripts/erp_app/codemirror/mode/vbscript/vbscript.js +26 -0
  416. data/public/javascripts/erp_app/codemirror/mode/velocity/index.html +3 -3
  417. data/public/javascripts/erp_app/codemirror/mode/verilog/index.html +210 -0
  418. data/public/javascripts/erp_app/codemirror/mode/verilog/verilog.js +194 -0
  419. data/public/javascripts/erp_app/codemirror/mode/xml/index.html +7 -5
  420. data/public/javascripts/erp_app/codemirror/mode/xml/xml.js +127 -32
  421. data/public/javascripts/erp_app/codemirror/mode/xquery/LICENSE +20 -0
  422. data/public/javascripts/erp_app/codemirror/mode/xquery/index.html +222 -0
  423. data/public/javascripts/erp_app/codemirror/mode/xquery/test/index.html +27 -0
  424. data/public/javascripts/erp_app/codemirror/mode/xquery/test/testBase.js +42 -0
  425. data/public/javascripts/erp_app/codemirror/mode/xquery/test/testEmptySequenceKeyword.js +16 -0
  426. data/public/javascripts/erp_app/codemirror/mode/xquery/test/testMultiAttr.js +16 -0
  427. data/public/javascripts/erp_app/codemirror/mode/xquery/test/testNamespaces.js +91 -0
  428. data/public/javascripts/erp_app/codemirror/mode/xquery/test/testProcessingInstructions.js +16 -0
  429. data/public/javascripts/erp_app/codemirror/mode/xquery/test/testQuotes.js +19 -0
  430. data/public/javascripts/erp_app/codemirror/mode/xquery/xquery.js +448 -0
  431. data/public/javascripts/erp_app/codemirror/mode/yaml/index.html +3 -4
  432. data/public/javascripts/erp_app/codemirror/package.json +29 -0
  433. data/public/javascripts/erp_app/codemirror/test/driver.js +42 -0
  434. data/public/javascripts/erp_app/codemirror/test/index.html +55 -0
  435. data/public/javascripts/erp_app/codemirror/test/mode_test.css +22 -0
  436. data/public/javascripts/erp_app/codemirror/test/mode_test.js +164 -0
  437. data/public/javascripts/erp_app/codemirror/test/test.js +467 -0
  438. data/public/javascripts/erp_app/codemirror/theme/ambiance.css +81 -0
  439. data/public/javascripts/erp_app/codemirror/theme/blackboard.css +25 -0
  440. data/public/javascripts/erp_app/codemirror/theme/cobalt.css +18 -0
  441. data/public/javascripts/erp_app/codemirror/theme/eclipse.css +25 -0
  442. data/public/javascripts/erp_app/codemirror/theme/elegant.css +3 -2
  443. data/public/javascripts/erp_app/codemirror/theme/erlang-dark.css +21 -0
  444. data/public/javascripts/erp_app/codemirror/theme/lesser-dark.css +44 -0
  445. data/public/javascripts/erp_app/codemirror/theme/monokai.css +28 -0
  446. data/public/javascripts/erp_app/codemirror/theme/neat.css +4 -3
  447. data/public/javascripts/erp_app/codemirror/theme/night.css +2 -1
  448. data/public/javascripts/erp_app/codemirror/theme/rubyblue.css +21 -0
  449. data/public/javascripts/erp_app/codemirror/theme/vibrant-ink.css +27 -0
  450. data/public/javascripts/erp_app/codemirror/theme/xq-dark.css +46 -0
  451. data/public/javascripts/erp_app/codemirror_highlight.js +17 -0
  452. data/public/javascripts/erp_app/desktop/applications/audit_log_viewer/module.js +1 -57
  453. data/public/javascripts/erp_app/desktop/applications/control_panel/application_management_panel.js +1 -2
  454. data/public/javascripts/erp_app/desktop/applications/control_panel/module.js +1 -1
  455. data/public/javascripts/erp_app/desktop/applications/file_manager/module.js +12 -1
  456. data/public/javascripts/erp_app/desktop/ext_ux_desktop_module.js +9 -1
  457. data/public/javascripts/erp_app/jquery_support.js +6 -1
  458. data/public/javascripts/erp_app/login/window.js +1 -1
  459. data/public/javascripts/erp_app/organizer/default_menu_tree_panel.js +3 -1
  460. data/public/javascripts/erp_app/organizer/layout.js +92 -79
  461. data/public/javascripts/erp_app/organizer/preference_window.js +1 -1
  462. data/public/javascripts/erp_app/{desktop/applications/audit_log_viewer → shared/audit_log}/audit_log_grid_panel.js +1 -0
  463. data/public/javascripts/erp_app/{desktop/applications/audit_log_viewer → shared/audit_log}/audit_log_item_grid_panel.js +0 -0
  464. data/public/javascripts/erp_app/shared/audit_log/audit_log_tab_panel.js +52 -0
  465. data/public/javascripts/erp_app/shared/compass_ckeditor.js +51 -1
  466. data/public/javascripts/erp_app/shared/compass_codemirror.js +2 -8
  467. data/public/javascripts/erp_app/shared/configuration/configuration_panel.js +24 -22
  468. data/public/javascripts/erp_app/shared/dynamic_editable_grid.js +1 -0
  469. data/public/javascripts/erp_app/shared/dynamic_editable_grid_loader_panel.js +5 -1
  470. data/public/javascripts/erp_app/shared/file_manager_tree.js +358 -270
  471. data/public/javascripts/erp_app/shared/file_upload/Ext.ux.panel.UploadPanel.js +580 -0
  472. data/public/javascripts/erp_app/shared/file_upload/plupload.flash.swf +0 -0
  473. data/public/javascripts/erp_app/shared/file_upload/plupload.full.js +2 -0
  474. data/public/javascripts/erp_app/shared/file_upload/plupload.silverlight.xap +0 -0
  475. data/public/javascripts/erp_app/shared/file_upload/upload_window.js +19 -212
  476. data/public/javascripts/erp_app/{desktop/applications/control_panel → shared}/profile_management_panel.js +14 -23
  477. data/public/javascripts/erp_app/utility.js +340 -272
  478. data/public/javascripts/erp_app/widgets.js +2 -2
  479. data/public/javascripts/extjs/MultiCellSelectionModel.js +490 -0
  480. data/public/javascripts/jquery_plugins/jquery.address.min.js +21 -24
  481. data/public/stylesheets/erp_app/desktop/base.css +3 -1
  482. data/public/stylesheets/erp_app/shared/compass-ext-all.css +29 -0
  483. data/public/stylesheets/erp_app/shared/hover_finger.css +4 -0
  484. metadata +267 -71
  485. data/app/controllers/erp_app/desktop/control_panel/profile_management_controller.rb +0 -23
  486. data/app/models/extensions/party.rb +0 -39
  487. data/public/images/icons/add/Thumbs.db +0 -0
  488. data/public/images/icons/calendar/Thumbs.db +0 -0
  489. data/public/images/icons/copy/Thumbs.db +0 -0
  490. data/public/images/icons/cut/Thumbs.db +0 -0
  491. data/public/images/icons/delete/Thumbs.db +0 -0
  492. data/public/images/icons/edit/Thumbs.db +0 -0
  493. data/public/images/icons/folder/Thumbs.db +0 -0
  494. data/public/images/icons/gear/Thumbs.db +0 -0
  495. data/public/images/icons/globe/Thumbs.db +0 -0
  496. data/public/images/icons/grid/Thumbs.db +0 -0
  497. data/public/images/icons/help/Thumbs.db +0 -0
  498. data/public/images/icons/information/Thumbs.db +0 -0
  499. data/public/images/icons/key/Thumbs.db +0 -0
  500. data/public/images/icons/log_out/Thumbs.db +0 -0
  501. data/public/images/icons/mail/Thumbs.db +0 -0
  502. data/public/images/icons/new/Thumbs.db +0 -0
  503. data/public/images/icons/next/Thumbs.db +0 -0
  504. data/public/images/icons/open/Thumbs.db +0 -0
  505. data/public/images/icons/paste/Thumbs.db +0 -0
  506. data/public/images/icons/picture/Thumbs.db +0 -0
  507. data/public/images/icons/presentation/Thumbs.db +0 -0
  508. data/public/images/icons/preview/Thumbs.db +0 -0
  509. data/public/images/icons/previous/Thumbs.db +0 -0
  510. data/public/images/icons/print/Thumbs.db +0 -0
  511. data/public/images/icons/properties/Thumbs.db +0 -0
  512. data/public/images/icons/redo/Thumbs.db +0 -0
  513. data/public/images/icons/refresh/Thumbs.db +0 -0
  514. data/public/images/icons/remove/Thumbs.db +0 -0
  515. data/public/images/icons/rename/Thumbs.db +0 -0
  516. data/public/images/icons/save/Thumbs.db +0 -0
  517. data/public/images/icons/search/Thumbs.db +0 -0
  518. data/public/images/icons/send/Thumbs.db +0 -0
  519. data/public/images/icons/settings/Thumbs.db +0 -0
  520. data/public/images/icons/synchronize/Thumbs.db +0 -0
  521. data/public/images/icons/undo/Thumbs.db +0 -0
  522. data/public/images/icons/upload/Thumbs.db +0 -0
  523. data/public/images/icons/user/Thumbs.db +0 -0
  524. data/public/images/icons/zoom_in/Thumbs.db +0 -0
  525. data/public/images/icons/zoom_out/Thumbs.db +0 -0
  526. data/public/javascripts/erp_app/ckeditor/plugins/jwplayer/jwplayer/Thumbs.db +0 -0
  527. data/public/javascripts/erp_app/codemirror/lib/runmode.js +0 -27
  528. data/public/javascripts/erp_app/codemirror/mode/diff/diff.css +0 -3
  529. data/public/javascripts/erp_app/codemirror/mode/rst/rst.css +0 -75
  530. data/public/javascripts/erp_app/codemirror/mode/xmlpure/index.html +0 -60
  531. data/public/javascripts/erp_app/codemirror/mode/xmlpure/xmlpure.js +0 -481
  532. data/public/javascripts/erp_app/codemirror/theme/default.css +0 -19
  533. data/public/javascripts/erp_app/shared/file_upload/Ext.ux.AwesomeUploader.js +0 -511
  534. data/public/javascripts/erp_app/shared/file_upload/Ext.ux.AwesomeUploaderLocalization.js +0 -45
  535. data/public/javascripts/erp_app/shared/file_upload/Ext.ux.XHRUpload.js +0 -138
  536. data/public/javascripts/erp_app/tinymce/Ext.ux.TinyMCE.js +0 -689
  537. data/public/javascripts/erp_app/tinymce/center_region.js +0 -611
@@ -0,0 +1,785 @@
1
+ // Supported keybindings:
2
+ //
3
+ // Cursor movement:
4
+ // h, j, k, l
5
+ // e, E, w, W, b, B
6
+ // Ctrl-f, Ctrl-b
7
+ // Ctrl-n, Ctrl-p
8
+ // $, ^, 0
9
+ // G
10
+ // ge, gE
11
+ // gg
12
+ // f<char>, F<char>, t<char>, T<char>
13
+ // Ctrl-o, Ctrl-i TODO (FIXME - Ctrl-O wont work in Chrome)
14
+ // /, ?, n, N TODO (does not work)
15
+ // #, * TODO
16
+ //
17
+ // Entering insert mode:
18
+ // i, I, a, A, o, O
19
+ // s
20
+ // ce, cb (without support for number of actions like c3e - TODO)
21
+ // cc
22
+ // S, C TODO
23
+ // cf<char>, cF<char>, ct<char>, cT<char>
24
+ //
25
+ // Deleting text:
26
+ // x, X
27
+ // J
28
+ // dd, D
29
+ // de, db (without support for number of actions like d3e - TODO)
30
+ // df<char>, dF<char>, dt<char>, dT<char>
31
+ //
32
+ // Yanking and pasting:
33
+ // yy, Y
34
+ // p, P
35
+ // p'<char> TODO - test
36
+ // y'<char> TODO - test
37
+ // m<char> TODO - test
38
+ //
39
+ // Changing text in place:
40
+ // ~
41
+ // r<char>
42
+ //
43
+ // Visual mode:
44
+ // v, V TODO
45
+ //
46
+ // Misc:
47
+ // . TODO
48
+ //
49
+
50
+ (function() {
51
+ var count = "";
52
+ var sdir = "f";
53
+ var buf = "";
54
+ var yank = 0;
55
+ var mark = [];
56
+ var reptTimes = 0;
57
+ function emptyBuffer() { buf = ""; }
58
+ function pushInBuffer(str) { buf += str; }
59
+ function pushCountDigit(digit) { return function(cm) {count += digit;}; }
60
+ function popCount() { var i = parseInt(count, 10); count = ""; return i || 1; }
61
+ function iterTimes(func) {
62
+ for (var i = 0, c = popCount(); i < c; ++i) func(i, i == c - 1);
63
+ }
64
+ function countTimes(func) {
65
+ if (typeof func == "string") func = CodeMirror.commands[func];
66
+ return function(cm) { iterTimes(function () { func(cm); }); };
67
+ }
68
+
69
+ function iterObj(o, f) {
70
+ for (var prop in o) if (o.hasOwnProperty(prop)) f(prop, o[prop]);
71
+ }
72
+ function iterList(l, f) {
73
+ for (var i in l) f(l[i]);
74
+ }
75
+ function toLetter(ch) {
76
+ // T -> t, Shift-T -> T, '*' -> *, "Space" -> " "
77
+ if (ch.slice(0, 6) == "Shift-") {
78
+ return ch.slice(0, 1);
79
+ } else {
80
+ if (ch == "Space") return " ";
81
+ if (ch.length == 3 && ch[0] == "'" && ch[2] == "'") return ch[1];
82
+ return ch.toLowerCase();
83
+ }
84
+ }
85
+ var SPECIAL_SYMBOLS = "~`!@#$%^&*()_-+=[{}]\\|/?.,<>:;\"\'1234567890";
86
+ function toCombo(ch) {
87
+ // t -> T, T -> Shift-T, * -> '*', " " -> "Space"
88
+ if (ch == " ") return "Space";
89
+ var specialIdx = SPECIAL_SYMBOLS.indexOf(ch);
90
+ if (specialIdx != -1) return "'" + ch + "'";
91
+ if (ch.toLowerCase() == ch) return ch.toUpperCase();
92
+ return "Shift-" + ch.toUpperCase();
93
+ }
94
+
95
+ var word = [/\w/, /[^\w\s]/], bigWord = [/\S/];
96
+ function findWord(line, pos, dir, regexps) {
97
+ var stop = 0, next = -1;
98
+ if (dir > 0) { stop = line.length; next = 0; }
99
+ var start = stop, end = stop;
100
+ // Find bounds of next one.
101
+ outer: for (; pos != stop; pos += dir) {
102
+ for (var i = 0; i < regexps.length; ++i) {
103
+ if (regexps[i].test(line.charAt(pos + next))) {
104
+ start = pos;
105
+ for (; pos != stop; pos += dir) {
106
+ if (!regexps[i].test(line.charAt(pos + next))) break;
107
+ }
108
+ end = pos;
109
+ break outer;
110
+ }
111
+ }
112
+ }
113
+ return {from: Math.min(start, end), to: Math.max(start, end)};
114
+ }
115
+ function moveToWord(cm, regexps, dir, times, where) {
116
+ var cur = cm.getCursor();
117
+
118
+ for (var i = 0; i < times; i++) {
119
+ var line = cm.getLine(cur.line), startCh = cur.ch, word;
120
+ while (true) {
121
+ // If we're at start/end of line, start on prev/next respectivly
122
+ if (cur.ch == line.length && dir > 0) {
123
+ cur.line++;
124
+ cur.ch = 0;
125
+ line = cm.getLine(cur.line);
126
+ } else if (cur.ch == 0 && dir < 0) {
127
+ cur.line--;
128
+ cur.ch = line.length;
129
+ line = cm.getLine(cur.line);
130
+ }
131
+ if (!line) break;
132
+
133
+ // On to the actual searching
134
+ word = findWord(line, cur.ch, dir, regexps);
135
+ cur.ch = word[where == "end" ? "to" : "from"];
136
+ if (startCh == cur.ch && word.from != word.to) cur.ch = word[dir < 0 ? "from" : "to"];
137
+ else break;
138
+ }
139
+ }
140
+ return cur;
141
+ }
142
+ function joinLineNext(cm) {
143
+ var cur = cm.getCursor(), ch = cur.ch, line = cm.getLine(cur.line);
144
+ CodeMirror.commands.goLineEnd(cm);
145
+ if (cur.line != cm.lineCount()) {
146
+ CodeMirror.commands.goLineEnd(cm);
147
+ cm.replaceSelection(" ", "end");
148
+ CodeMirror.commands.delCharRight(cm);
149
+ }
150
+ }
151
+ function delTillMark(cm, cHar) {
152
+ var i = mark[cHar];
153
+ if (i === undefined) {
154
+ // console.log("Mark not set"); // TODO - show in status bar
155
+ return;
156
+ }
157
+ var l = cm.getCursor().line, start = i > l ? l : i, end = i > l ? i : l;
158
+ cm.setCursor(start);
159
+ for (var c = start; c <= end; c++) {
160
+ pushInBuffer("\n"+cm.getLine(start));
161
+ cm.removeLine(start);
162
+ }
163
+ }
164
+ function yankTillMark(cm, cHar) {
165
+ var i = mark[cHar];
166
+ if (i === undefined) {
167
+ // console.log("Mark not set"); // TODO - show in status bar
168
+ return;
169
+ }
170
+ var l = cm.getCursor().line, start = i > l ? l : i, end = i > l ? i : l;
171
+ for (var c = start; c <= end; c++) {
172
+ pushInBuffer("\n"+cm.getLine(c));
173
+ }
174
+ cm.setCursor(start);
175
+ }
176
+ function goLineStartText(cm) {
177
+ // Go to the start of the line where the text begins, or the end for whitespace-only lines
178
+ var cur = cm.getCursor(), firstNonWS = cm.getLine(cur.line).search(/\S/);
179
+ cm.setCursor(cur.line, firstNonWS == -1 ? line.length : firstNonWS, true);
180
+ }
181
+
182
+ function charIdxInLine(cm, cHar, motion_options) {
183
+ // Search for cHar in line.
184
+ // motion_options: {forward, inclusive}
185
+ // If inclusive = true, include it too.
186
+ // If forward = true, search forward, else search backwards.
187
+ // If char is not found on this line, do nothing
188
+ var cur = cm.getCursor(), line = cm.getLine(cur.line), idx;
189
+ var ch = toLetter(cHar), mo = motion_options;
190
+ if (mo.forward) {
191
+ idx = line.indexOf(ch, cur.ch + 1);
192
+ if (idx != -1 && mo.inclusive) idx += 1;
193
+ } else {
194
+ idx = line.lastIndexOf(ch, cur.ch);
195
+ if (idx != -1 && !mo.inclusive) idx += 1;
196
+ }
197
+ return idx;
198
+ }
199
+
200
+ function moveTillChar(cm, cHar, motion_options) {
201
+ // Move to cHar in line, as found by charIdxInLine.
202
+ var idx = charIdxInLine(cm, cHar, motion_options), cur = cm.getCursor();
203
+ if (idx != -1) cm.setCursor({line: cur.line, ch: idx});
204
+ }
205
+
206
+ function delTillChar(cm, cHar, motion_options) {
207
+ // delete text in this line, untill cHar is met,
208
+ // as found by charIdxInLine.
209
+ // If char is not found on this line, do nothing
210
+ var idx = charIdxInLine(cm, cHar, motion_options);
211
+ var cur = cm.getCursor();
212
+ if (idx !== -1) {
213
+ if (motion_options.forward) {
214
+ cm.replaceRange("", {line: cur.line, ch: cur.ch}, {line: cur.line, ch: idx});
215
+ } else {
216
+ cm.replaceRange("", {line: cur.line, ch: idx}, {line: cur.line, ch: cur.ch});
217
+ }
218
+ }
219
+ }
220
+
221
+ function enterInsertMode(cm) {
222
+ // enter insert mode: switch mode and cursor
223
+ popCount();
224
+ cm.setOption("keyMap", "vim-insert");
225
+ }
226
+
227
+ function dialog(cm, text, shortText, f) {
228
+ if (cm.openDialog) cm.openDialog(text, f);
229
+ else f(prompt(shortText, ""));
230
+ }
231
+ function showAlert(cm, text) {
232
+ if (cm.openDialog) cm.openDialog(CodeMirror.htmlEscape(text) + " <button type=button>OK</button>");
233
+ else alert(text);
234
+ }
235
+
236
+ // main keymap
237
+ var map = CodeMirror.keyMap.vim = {
238
+ // Pipe (|); TODO: should be *screen* chars, so need a util function to turn tabs into spaces?
239
+ "'|'": function(cm) {
240
+ cm.setCursor(cm.getCursor().line, popCount() - 1, true);
241
+ },
242
+ "A": function(cm) {
243
+ cm.setCursor(cm.getCursor().line, cm.getCursor().ch+1, true);
244
+ enterInsertMode(cm);
245
+ },
246
+ "Shift-A": function(cm) { CodeMirror.commands.goLineEnd(cm); enterInsertMode(cm);},
247
+ "I": function(cm) { enterInsertMode(cm);},
248
+ "Shift-I": function(cm) { goLineStartText(cm); enterInsertMode(cm);},
249
+ "O": function(cm) {
250
+ CodeMirror.commands.goLineEnd(cm);
251
+ CodeMirror.commands.newlineAndIndent(cm);
252
+ enterInsertMode(cm);
253
+ },
254
+ "Shift-O": function(cm) {
255
+ CodeMirror.commands.goLineStart(cm);
256
+ cm.replaceSelection("\n", "start");
257
+ cm.indentLine(cm.getCursor().line);
258
+ enterInsertMode(cm);
259
+ },
260
+ "G": function(cm) { cm.setOption("keyMap", "vim-prefix-g");},
261
+ "Shift-D": function(cm) {
262
+ // commented out verions works, but I left original, cause maybe
263
+ // I don't know vim enouth to see what it does
264
+ /* var cur = cm.getCursor();
265
+ var f = {line: cur.line, ch: cur.ch}, t = {line: cur.line};
266
+ pushInBuffer(cm.getRange(f, t));
267
+ */
268
+ emptyBuffer();
269
+ mark["Shift-D"] = cm.getCursor(false).line;
270
+ cm.setCursor(cm.getCursor(true).line);
271
+ delTillMark(cm,"Shift-D"); mark = [];
272
+ },
273
+
274
+ "S": function (cm) {
275
+ countTimes(function (_cm) {
276
+ CodeMirror.commands.delCharRight(_cm);
277
+ })(cm);
278
+ enterInsertMode(cm);
279
+ },
280
+ "M": function(cm) {cm.setOption("keyMap", "vim-prefix-m"); mark = [];},
281
+ "Y": function(cm) {cm.setOption("keyMap", "vim-prefix-y"); emptyBuffer(); yank = 0;},
282
+ "Shift-Y": function(cm) {
283
+ emptyBuffer();
284
+ mark["Shift-D"] = cm.getCursor(false).line;
285
+ cm.setCursor(cm.getCursor(true).line);
286
+ yankTillMark(cm,"Shift-D"); mark = [];
287
+ },
288
+ "/": function(cm) {var f = CodeMirror.commands.find; f && f(cm); sdir = "f";},
289
+ "'?'": function(cm) {
290
+ var f = CodeMirror.commands.find;
291
+ if (f) { f(cm); CodeMirror.commands.findPrev(cm); sdir = "r"; }
292
+ },
293
+ "N": function(cm) {
294
+ var fn = CodeMirror.commands.findNext;
295
+ if (fn) sdir != "r" ? fn(cm) : CodeMirror.commands.findPrev(cm);
296
+ },
297
+ "Shift-N": function(cm) {
298
+ var fn = CodeMirror.commands.findNext;
299
+ if (fn) sdir != "r" ? CodeMirror.commands.findPrev(cm) : fn.findNext(cm);
300
+ },
301
+ "Shift-G": function(cm) {
302
+ count == "" ? cm.setCursor(cm.lineCount()) : cm.setCursor(parseInt(count, 10)-1);
303
+ popCount();
304
+ CodeMirror.commands.goLineStart(cm);
305
+ },
306
+ "':'": function(cm) {
307
+ var exModeDialog = ': <input type="text" style="width: 90%"/>';
308
+ dialog(cm, exModeDialog, ':', function(command) {
309
+ if (command.match(/^\d+$/)) {
310
+ cm.setCursor(command - 1, cm.getCursor().ch);
311
+ } else {
312
+ showAlert(cm, "Bad command: " + command);
313
+ }
314
+ });
315
+ },
316
+ nofallthrough: true, style: "fat-cursor"
317
+ };
318
+
319
+ // standard mode switching
320
+ iterList(["d", "t", "T", "f", "F", "c", "r"],
321
+ function (ch) {
322
+ CodeMirror.keyMap.vim[toCombo(ch)] = function (cm) {
323
+ cm.setOption("keyMap", "vim-prefix-" + ch);
324
+ emptyBuffer();
325
+ };
326
+ });
327
+
328
+ function addCountBindings(keyMap) {
329
+ // Add bindings for number keys
330
+ keyMap["0"] = function(cm) {
331
+ count.length > 0 ? pushCountDigit("0")(cm) : CodeMirror.commands.goLineStart(cm);
332
+ };
333
+ for (var i = 1; i < 10; ++i) keyMap[i] = pushCountDigit(i);
334
+ }
335
+ addCountBindings(CodeMirror.keyMap.vim);
336
+
337
+ // main num keymap
338
+ // Add bindings that are influenced by number keys
339
+ iterObj({
340
+ "Left": "goColumnLeft", "Right": "goColumnRight",
341
+ "Down": "goLineDown", "Up": "goLineUp", "Backspace": "goCharLeft",
342
+ "Space": "goCharRight",
343
+ "X": function(cm) {CodeMirror.commands.delCharRight(cm);},
344
+ "P": function(cm) {
345
+ var cur = cm.getCursor().line;
346
+ if (buf!= "") {
347
+ if (buf[0] == "\n") CodeMirror.commands.goLineEnd(cm);
348
+ cm.replaceRange(buf, cm.getCursor());
349
+ }
350
+ },
351
+ "Shift-X": function(cm) {CodeMirror.commands.delCharLeft(cm);},
352
+ "Shift-J": function(cm) {joinLineNext(cm);},
353
+ "Shift-P": function(cm) {
354
+ var cur = cm.getCursor().line;
355
+ if (buf!= "") {
356
+ CodeMirror.commands.goLineUp(cm);
357
+ CodeMirror.commands.goLineEnd(cm);
358
+ cm.replaceSelection(buf, "end");
359
+ }
360
+ cm.setCursor(cur+1);
361
+ },
362
+ "'~'": function(cm) {
363
+ var cur = cm.getCursor(), cHar = cm.getRange({line: cur.line, ch: cur.ch}, {line: cur.line, ch: cur.ch+1});
364
+ cHar = cHar != cHar.toLowerCase() ? cHar.toLowerCase() : cHar.toUpperCase();
365
+ cm.replaceRange(cHar, {line: cur.line, ch: cur.ch}, {line: cur.line, ch: cur.ch+1});
366
+ cm.setCursor(cur.line, cur.ch+1);
367
+ },
368
+ "Ctrl-B": function(cm) {CodeMirror.commands.goPageUp(cm);},
369
+ "Ctrl-F": function(cm) {CodeMirror.commands.goPageDown(cm);},
370
+ "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown",
371
+ "U": "undo", "Ctrl-R": "redo"
372
+ }, function(key, cmd) { map[key] = countTimes(cmd); });
373
+
374
+ // empty key maps
375
+ iterList([
376
+ "vim-prefix-d'",
377
+ "vim-prefix-y'",
378
+ "vim-prefix-df",
379
+ "vim-prefix-dF",
380
+ "vim-prefix-dt",
381
+ "vim-prefix-dT",
382
+ "vim-prefix-c",
383
+ "vim-prefix-cf",
384
+ "vim-prefix-cF",
385
+ "vim-prefix-ct",
386
+ "vim-prefix-cT",
387
+ "vim-prefix-",
388
+ "vim-prefix-f",
389
+ "vim-prefix-F",
390
+ "vim-prefix-t",
391
+ "vim-prefix-T",
392
+ "vim-prefix-r",
393
+ "vim-prefix-m"
394
+ ],
395
+ function (prefix) {
396
+ CodeMirror.keyMap[prefix] = {
397
+ auto: "vim",
398
+ nofallthrough: true,
399
+ style: "fat-cursor"
400
+ };
401
+ });
402
+
403
+ CodeMirror.keyMap["vim-prefix-g"] = {
404
+ "E": countTimes(function(cm) { cm.setCursor(moveToWord(cm, word, -1, 1, "start"));}),
405
+ "Shift-E": countTimes(function(cm) { cm.setCursor(moveToWord(cm, bigWord, -1, 1, "start"));}),
406
+ "G": function (cm) { cm.setCursor({line: 0, ch: cm.getCursor().ch});},
407
+ auto: "vim", nofallthrough: true, style: "fat-cursor"
408
+ };
409
+
410
+ CodeMirror.keyMap["vim-prefix-d"] = {
411
+ "D": countTimes(function(cm) {
412
+ pushInBuffer("\n"+cm.getLine(cm.getCursor().line));
413
+ cm.removeLine(cm.getCursor().line);
414
+ cm.setOption("keyMap", "vim");
415
+ }),
416
+ "'": function(cm) {
417
+ cm.setOption("keyMap", "vim-prefix-d'");
418
+ emptyBuffer();
419
+ },
420
+ "B": function(cm) {
421
+ var cur = cm.getCursor();
422
+ var line = cm.getLine(cur.line);
423
+ var index = line.lastIndexOf(" ", cur.ch);
424
+
425
+ pushInBuffer(line.substring(index, cur.ch));
426
+ cm.replaceRange("", {line: cur.line, ch: index}, cur);
427
+ cm.setOption("keyMap", "vim");
428
+ },
429
+ nofallthrough: true, style: "fat-cursor"
430
+ };
431
+ // FIXME - does not work for bindings like "d3e"
432
+ addCountBindings(CodeMirror.keyMap["vim-prefix-d"]);
433
+
434
+ CodeMirror.keyMap["vim-prefix-c"] = {
435
+ "B": function (cm) {
436
+ countTimes("delWordLeft")(cm);
437
+ enterInsertMode(cm);
438
+ },
439
+ "C": function (cm) {
440
+ iterTimes(function (i, last) {
441
+ CodeMirror.commands.deleteLine(cm);
442
+ if (i) {
443
+ CodeMirror.commands.delCharRight(cm);
444
+ if (last) CodeMirror.commands.deleteLine(cm);
445
+ }
446
+ });
447
+ enterInsertMode(cm);
448
+ },
449
+ nofallthrough: true, style: "fat-cursor"
450
+ };
451
+
452
+ iterList(["vim-prefix-d", "vim-prefix-c", "vim-prefix-"], function (prefix) {
453
+ iterList(["f", "F", "T", "t"],
454
+ function (ch) {
455
+ CodeMirror.keyMap[prefix][toCombo(ch)] = function (cm) {
456
+ cm.setOption("keyMap", prefix + ch);
457
+ emptyBuffer();
458
+ };
459
+ });
460
+ });
461
+
462
+ var MOTION_OPTIONS = {
463
+ "t": {inclusive: false, forward: true},
464
+ "f": {inclusive: true, forward: true},
465
+ "T": {inclusive: false, forward: false},
466
+ "F": {inclusive: true, forward: false}
467
+ };
468
+
469
+ function setupPrefixBindingForKey(m) {
470
+ CodeMirror.keyMap["vim-prefix-m"][m] = function(cm) {
471
+ mark[m] = cm.getCursor().line;
472
+ };
473
+ CodeMirror.keyMap["vim-prefix-d'"][m] = function(cm) {
474
+ delTillMark(cm,m);
475
+ };
476
+ CodeMirror.keyMap["vim-prefix-y'"][m] = function(cm) {
477
+ yankTillMark(cm,m);
478
+ };
479
+ CodeMirror.keyMap["vim-prefix-r"][m] = function (cm) {
480
+ var cur = cm.getCursor();
481
+ cm.replaceRange(toLetter(m),
482
+ {line: cur.line, ch: cur.ch},
483
+ {line: cur.line, ch: cur.ch + 1});
484
+ CodeMirror.commands.goColumnLeft(cm);
485
+ };
486
+ // all commands, related to motions till char in line
487
+ iterObj(MOTION_OPTIONS, function (ch, options) {
488
+ CodeMirror.keyMap["vim-prefix-" + ch][m] = function(cm) {
489
+ moveTillChar(cm, m, options);
490
+ };
491
+ CodeMirror.keyMap["vim-prefix-d" + ch][m] = function(cm) {
492
+ delTillChar(cm, m, options);
493
+ };
494
+ CodeMirror.keyMap["vim-prefix-c" + ch][m] = function(cm) {
495
+ delTillChar(cm, m, options);
496
+ enterInsertMode(cm);
497
+ };
498
+ });
499
+ }
500
+ for (var i = 65; i < 65 + 26; i++) { // uppercase alphabet char codes
501
+ var ch = String.fromCharCode(i);
502
+ setupPrefixBindingForKey(toCombo(ch));
503
+ setupPrefixBindingForKey(toCombo(ch.toLowerCase()));
504
+ }
505
+ iterList(SPECIAL_SYMBOLS, function (ch) {
506
+ setupPrefixBindingForKey(toCombo(ch));
507
+ });
508
+ setupPrefixBindingForKey("Space");
509
+
510
+ CodeMirror.keyMap["vim-prefix-y"] = {
511
+ "Y": countTimes(function(cm) { pushInBuffer("\n"+cm.getLine(cm.getCursor().line+yank)); yank++; }),
512
+ "'": function(cm) {cm.setOption("keyMap", "vim-prefix-y'"); emptyBuffer();},
513
+ nofallthrough: true, style: "fat-cursor"
514
+ };
515
+
516
+ CodeMirror.keyMap["vim-insert"] = {
517
+ // TODO: override navigation keys so that Esc will cancel automatic indentation from o, O, i_<CR>
518
+ "Esc": function(cm) {
519
+ cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1, true);
520
+ cm.setOption("keyMap", "vim");
521
+ },
522
+ "Ctrl-N": "autocomplete",
523
+ "Ctrl-P": "autocomplete",
524
+ fallthrough: ["default"]
525
+ };
526
+
527
+ function findMatchedSymbol(cm, cur, symb) {
528
+ var line = cur.line;
529
+ var symb = symb ? symb : cm.getLine(line)[cur.ch];
530
+
531
+ // Are we at the opening or closing char
532
+ var forwards = ['(', '[', '{'].indexOf(symb) != -1;
533
+
534
+ var reverseSymb = (function(sym) {
535
+ switch (sym) {
536
+ case '(' : return ')';
537
+ case '[' : return ']';
538
+ case '{' : return '}';
539
+ case ')' : return '(';
540
+ case ']' : return '[';
541
+ case '}' : return '{';
542
+ default : return null;
543
+ }
544
+ })(symb);
545
+
546
+ // Couldn't find a matching symbol, abort
547
+ if (reverseSymb == null) return cur;
548
+
549
+ // Tracking our imbalance in open/closing symbols. An opening symbol wii be
550
+ // the first thing we pick up if moving forward, this isn't true moving backwards
551
+ var disBal = forwards ? 0 : 1;
552
+
553
+ while (true) {
554
+ if (line == cur.line) {
555
+ // First pass, do some special stuff
556
+ var currLine = forwards ? cm.getLine(line).substr(cur.ch).split('') : cm.getLine(line).substr(0,cur.ch).split('').reverse();
557
+ } else {
558
+ var currLine = forwards ? cm.getLine(line).split('') : cm.getLine(line).split('').reverse();
559
+ }
560
+
561
+ for (var index = 0; index < currLine.length; index++) {
562
+ if (currLine[index] == symb) disBal++;
563
+ else if (currLine[index] == reverseSymb) disBal--;
564
+
565
+ if (disBal == 0) {
566
+ if (forwards && cur.line == line) return {line: line, ch: index + cur.ch};
567
+ else if (forwards) return {line: line, ch: index};
568
+ else return {line: line, ch: currLine.length - index - 1 };
569
+ }
570
+ }
571
+
572
+ if (forwards) line++;
573
+ else line--;
574
+ }
575
+ }
576
+
577
+ function selectCompanionObject(cm, revSymb, inclusive) {
578
+ var cur = cm.getCursor();
579
+
580
+ var end = findMatchedSymbol(cm, cur, revSymb);
581
+ var start = findMatchedSymbol(cm, end);
582
+ start.ch += inclusive ? 1 : 0;
583
+ end.ch += inclusive ? 0 : 1;
584
+
585
+ return {start: start, end: end};
586
+ }
587
+
588
+ // These are our motion commands to be used for navigation and selection with
589
+ // certian other commands. All should return a cursor object.
590
+ var motionList = ['B', 'E', 'J', 'K', 'H', 'L', 'W', 'Shift-W', "'^'", "'$'", "'%'", 'Esc'];
591
+
592
+ motions = {
593
+ 'B': function(cm, times) { return moveToWord(cm, word, -1, times); },
594
+ 'Shift-B': function(cm, times) { return moveToWord(cm, bigWord, -1, times); },
595
+ 'E': function(cm, times) { return moveToWord(cm, word, 1, times, 'end'); },
596
+ 'Shift-E': function(cm, times) { return moveToWord(cm, bigWord, 1, times, 'end'); },
597
+ 'J': function(cm, times) {
598
+ var cur = cm.getCursor();
599
+ return {line: cur.line+times, ch : cur.ch};
600
+ },
601
+
602
+ 'K': function(cm, times) {
603
+ var cur = cm.getCursor();
604
+ return {line: cur.line-times, ch: cur.ch};
605
+ },
606
+
607
+ 'H': function(cm, times) {
608
+ var cur = cm.getCursor();
609
+ return {line: cur.line, ch: cur.ch-times};
610
+ },
611
+
612
+ 'L': function(cm, times) {
613
+ var cur = cm.getCursor();
614
+ return {line: cur.line, ch: cur.ch+times};
615
+ },
616
+ 'W': function(cm, times) { return moveToWord(cm, word, 1, times); },
617
+ 'Shift-W': function(cm, times) { return moveToWord(cm, bigWord, 1, times); },
618
+ "'^'": function(cm, times) {
619
+ var cur = cm.getCursor();
620
+ var line = cm.getLine(cur.line).split('');
621
+
622
+ // Empty line :o
623
+ if (line.length == 0) return cur;
624
+
625
+ for (var index = 0; index < line.length; index++) {
626
+ if (line[index].match(/[^\s]/)) return {line: cur.line, ch: index};
627
+ }
628
+ },
629
+ "'$'": function(cm) {
630
+ var cur = cm.getCursor();
631
+ var line = cm.getLine(cur.line);
632
+ return {line: cur.line, ch: line.length};
633
+ },
634
+ "'%'": function(cm) { return findMatchedSymbol(cm, cm.getCursor()); },
635
+ "Esc" : function(cm) {
636
+ cm.setOption('vim');
637
+ reptTimes = 0;
638
+
639
+ return cm.getCursor();
640
+ }
641
+ };
642
+
643
+ // Map our movement actions each operator and non-operational movement
644
+ motionList.forEach(function(key, index, array) {
645
+ CodeMirror.keyMap['vim-prefix-d'][key] = function(cm) {
646
+ // Get our selected range
647
+ var start = cm.getCursor();
648
+ var end = motions[key](cm, reptTimes ? reptTimes : 1);
649
+
650
+ // Set swap var if range is of negative length
651
+ if ((start.line > end.line) || (start.line == end.line && start.ch > end.ch)) var swap = true;
652
+
653
+ // Take action, switching start and end if swap var is set
654
+ pushInBuffer(cm.getRange(swap ? end : start, swap ? start : end));
655
+ cm.replaceRange("", swap ? end : start, swap ? start : end);
656
+
657
+ // And clean up
658
+ reptTimes = 0;
659
+ cm.setOption("keyMap", "vim");
660
+ };
661
+
662
+ CodeMirror.keyMap['vim-prefix-c'][key] = function(cm) {
663
+ var start = cm.getCursor();
664
+ var end = motions[key](cm, reptTimes ? reptTimes : 1);
665
+
666
+ if ((start.line > end.line) || (start.line == end.line && start.ch > end.ch)) var swap = true;
667
+ pushInBuffer(cm.getRange(swap ? end : start, swap ? start : end));
668
+ cm.replaceRange("", swap ? end : start, swap ? start : end);
669
+
670
+ reptTimes = 0;
671
+ cm.setOption('keyMap', 'vim-insert');
672
+ };
673
+
674
+ CodeMirror.keyMap['vim-prefix-y'][key] = function(cm) {
675
+ var start = cm.getCursor();
676
+ var end = motions[key](cm, reptTimes ? reptTimes : 1);
677
+
678
+ if ((start.line > end.line) || (start.line == end.line && start.ch > end.ch)) var swap = true;
679
+ pushInBuffer(cm.getRange(swap ? end : start, swap ? start : end));
680
+
681
+ reptTimes = 0;
682
+ cm.setOption("keyMap", "vim");
683
+ };
684
+
685
+ CodeMirror.keyMap['vim'][key] = function(cm) {
686
+ var cur = motions[key](cm, reptTimes ? reptTimes : 1);
687
+ cm.setCursor(cur.line, cur.ch);
688
+
689
+ reptTimes = 0;
690
+ };
691
+ });
692
+
693
+ var nums = [1,2,3,4,5,6,7,8,9];
694
+ nums.forEach(function(key, index, array) {
695
+ CodeMirror.keyMap['vim'][key] = function (cm) {
696
+ reptTimes = (reptTimes * 10) + key;
697
+ };
698
+ CodeMirror.keyMap['vim-prefix-d'][key] = function (cm) {
699
+ reptTimes = (reptTimes * 10) + key;
700
+ };
701
+ CodeMirror.keyMap['vim-prefix-y'][key] = function (cm) {
702
+ reptTimes = (reptTimes * 10) + key;
703
+ };
704
+ CodeMirror.keyMap['vim-prefix-c'][key] = function (cm) {
705
+ reptTimes = (reptTimes * 10) + key;
706
+ };
707
+ });
708
+
709
+ // Create our keymaps for each operator and make xa and xi where x is an operator
710
+ // change to the corrosponding keymap
711
+ var operators = ['d', 'y', 'c'];
712
+ operators.forEach(function(key, index, array) {
713
+ CodeMirror.keyMap['vim-prefix-'+key+'a'] = {
714
+ auto: 'vim', nofallthrough: true, style: "fat-cursor"
715
+ };
716
+ CodeMirror.keyMap['vim-prefix-'+key+'i'] = {
717
+ auto: 'vim', nofallthrough: true, style: "fat-cursor"
718
+ };
719
+
720
+ CodeMirror.keyMap['vim-prefix-'+key]['A'] = function(cm) {
721
+ reptTimes = 0;
722
+ cm.setOption('keyMap', 'vim-prefix-' + key + 'a');
723
+ };
724
+
725
+ CodeMirror.keyMap['vim-prefix-'+key]['I'] = function(cm) {
726
+ reptTimes = 0;
727
+ cm.setOption('keyMap', 'vim-prefix-' + key + 'i');
728
+ };
729
+ });
730
+
731
+ function regexLastIndexOf(string, pattern, startIndex) {
732
+ for (var i = startIndex == null ? string.length : startIndex; i >= 0; --i)
733
+ if (pattern.test(string.charAt(i))) return i;
734
+ return -1;
735
+ }
736
+
737
+ // Create our text object functions. They work similar to motions but they
738
+ // return a start cursor as well
739
+ var textObjectList = ['W', 'Shift-[', 'Shift-9', '['];
740
+ var textObjects = {
741
+ 'W': function(cm, inclusive) {
742
+ var cur = cm.getCursor();
743
+ var line = cm.getLine(cur.line);
744
+
745
+ var line_to_char = new String(line.substring(0, cur.ch));
746
+ var start = regexLastIndexOf(line_to_char, /[^a-zA-Z0-9]/) + 1;
747
+ var end = motions["E"](cm, 1) ;
748
+
749
+ end.ch += inclusive ? 1 : 0 ;
750
+ return {start: {line: cur.line, ch: start}, end: end };
751
+ },
752
+ 'Shift-[': function(cm, inclusive) { return selectCompanionObject(cm, '}', inclusive); },
753
+ 'Shift-9': function(cm, inclusive) { return selectCompanionObject(cm, ')', inclusive); },
754
+ '[': function(cm, inclusive) { return selectCompanionObject(cm, ']', inclusive); }
755
+ };
756
+
757
+ // One function to handle all operation upon text objects. Kinda funky but it works
758
+ // better than rewriting this code six times
759
+ function textObjectManipulation(cm, object, remove, insert, inclusive) {
760
+ // Object is the text object, delete object if remove is true, enter insert
761
+ // mode if insert is true, inclusive is the difference between a and i
762
+ var tmp = textObjects[object](cm, inclusive);
763
+ var start = tmp.start;
764
+ var end = tmp.end;
765
+
766
+ if ((start.line > end.line) || (start.line == end.line && start.ch > end.ch)) var swap = true ;
767
+
768
+ pushInBuffer(cm.getRange(swap ? end : start, swap ? start : end));
769
+ if (remove) cm.replaceRange("", swap ? end : start, swap ? start : end);
770
+ if (insert) cm.setOption('keyMap', 'vim-insert');
771
+ }
772
+
773
+ // And finally build the keymaps up from the text objects
774
+ for (var i = 0; i < textObjectList.length; ++i) {
775
+ var object = textObjectList[i];
776
+ (function(object) {
777
+ CodeMirror.keyMap['vim-prefix-di'][object] = function(cm) { textObjectManipulation(cm, object, true, false, false); };
778
+ CodeMirror.keyMap['vim-prefix-da'][object] = function(cm) { textObjectManipulation(cm, object, true, false, true); };
779
+ CodeMirror.keyMap['vim-prefix-yi'][object] = function(cm) { textObjectManipulation(cm, object, false, false, false); };
780
+ CodeMirror.keyMap['vim-prefix-ya'][object] = function(cm) { textObjectManipulation(cm, object, false, false, true); };
781
+ CodeMirror.keyMap['vim-prefix-ci'][object] = function(cm) { textObjectManipulation(cm, object, true, true, false); };
782
+ CodeMirror.keyMap['vim-prefix-ca'][object] = function(cm) { textObjectManipulation(cm, object, true, true, true); };
783
+ })(object)
784
+ }
785
+ })();