fat_free_crm 0.13.2 → 0.13.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of fat_free_crm might be problematic. Click here for more details.

Files changed (407) hide show
  1. checksums.yaml +5 -13
  2. data/.travis.yml +3 -3
  3. data/Gemfile +5 -2
  4. data/Gemfile.lock +137 -119
  5. data/MIT-LICENSE +1 -1
  6. data/README.md +5 -3
  7. data/app/assets/javascripts/admin/fields.js.coffee +31 -8
  8. data/app/assets/javascripts/application.js.erb +6 -10
  9. data/app/assets/javascripts/crm.js.coffee +426 -0
  10. data/app/assets/javascripts/crm_chosen.js.coffee +19 -38
  11. data/app/assets/javascripts/crm_classes.js.coffee +215 -0
  12. data/app/assets/javascripts/crm_comments.js.coffee +20 -58
  13. data/app/assets/javascripts/crm_loginout.js.coffee +27 -0
  14. data/app/assets/javascripts/crm_select2.js.coffee +29 -0
  15. data/app/assets/javascripts/crm_sortable.js.coffee +32 -0
  16. data/app/assets/javascripts/crm_tags.js.coffee +22 -0
  17. data/app/assets/javascripts/crm_textarea_autocomplete.js.coffee +33 -0
  18. data/app/assets/javascripts/datepicker.js.coffee +2 -2
  19. data/app/assets/javascripts/format_buttons.js.coffee +23 -24
  20. data/app/assets/javascripts/lists.js.coffee +45 -76
  21. data/app/assets/javascripts/pagination.js.coffee +16 -0
  22. data/app/assets/javascripts/search.js.coffee +6 -22
  23. data/app/assets/javascripts/timeago.js.coffee +21 -0
  24. data/app/assets/stylesheets/application.css.erb +0 -1
  25. data/app/assets/stylesheets/common.scss +36 -29
  26. data/app/assets/stylesheets/lists.css.scss +17 -3
  27. data/app/controllers/admin/groups_controller.rb +2 -1
  28. data/app/controllers/application_controller.rb +5 -5
  29. data/app/controllers/entities/accounts_controller.rb +1 -1
  30. data/app/controllers/entities/campaigns_controller.rb +1 -1
  31. data/app/controllers/entities/contacts_controller.rb +1 -1
  32. data/app/controllers/entities/leads_controller.rb +1 -1
  33. data/app/controllers/entities/opportunities_controller.rb +1 -1
  34. data/app/controllers/home_controller.rb +10 -7
  35. data/app/controllers/tasks_controller.rb +15 -0
  36. data/app/controllers/users_controller.rb +6 -4
  37. data/app/helpers/accounts_helper.rb +8 -5
  38. data/app/helpers/application_helper.rb +53 -39
  39. data/app/helpers/campaigns_helper.rb +1 -0
  40. data/app/helpers/leads_helper.rb +3 -3
  41. data/app/helpers/opportunities_helper.rb +15 -0
  42. data/app/helpers/remote_link_pagination_helper.rb +8 -0
  43. data/app/helpers/tags_helper.rb +2 -2
  44. data/app/helpers/tasks_helper.rb +22 -15
  45. data/app/helpers/users_helper.rb +3 -2
  46. data/app/mailers/user_mailer.rb +9 -3
  47. data/app/models/entities/account_contact.rb +1 -1
  48. data/app/models/fields/custom_field.rb +1 -1
  49. data/app/models/list.rb +1 -0
  50. data/app/models/observers/entity_observer.rb +10 -1
  51. data/app/models/observers/lead_observer.rb +2 -0
  52. data/app/models/observers/opportunity_observer.rb +2 -0
  53. data/app/models/observers/task_observer.rb +2 -0
  54. data/app/models/polymorphic/avatar.rb +2 -0
  55. data/app/models/polymorphic/comment.rb +0 -1
  56. data/app/models/polymorphic/task.rb +41 -9
  57. data/app/models/users/ability.rb +1 -0
  58. data/app/models/users/group.rb +0 -5
  59. data/app/models/users/user.rb +0 -7
  60. data/app/views/accounts/_edit.html.haml +1 -0
  61. data/app/views/accounts/_index_brief.html.haml +2 -2
  62. data/app/views/accounts/_index_long.html.haml +2 -2
  63. data/app/views/accounts/_new.html.haml +1 -0
  64. data/app/views/accounts/_sidebar_index.html.haml +1 -1
  65. data/app/views/accounts/_sidebar_show.html.haml +1 -1
  66. data/app/views/accounts/_top_section.html.haml +1 -1
  67. data/app/views/accounts/create.js.haml +9 -9
  68. data/app/views/accounts/destroy.js.haml +2 -2
  69. data/app/views/accounts/edit.js.haml +5 -5
  70. data/app/views/accounts/index.js.haml +5 -5
  71. data/app/views/accounts/new.js.haml +1 -1
  72. data/app/views/accounts/show.html.haml +1 -1
  73. data/app/views/accounts/show.js.haml +1 -1
  74. data/app/views/accounts/update.js.haml +7 -5
  75. data/app/views/admin/field_groups/_field_group.html.haml +4 -5
  76. data/app/views/admin/field_groups/confirm.js.haml +2 -2
  77. data/app/views/admin/field_groups/create.js.haml +6 -12
  78. data/app/views/admin/field_groups/destroy.js.haml +3 -3
  79. data/app/views/admin/field_groups/edit.js.haml +1 -1
  80. data/app/views/admin/field_groups/new.js.haml +1 -1
  81. data/app/views/admin/field_groups/update.js.haml +2 -2
  82. data/app/views/admin/fields/_field.html.haml +1 -1
  83. data/app/views/admin/fields/_sort_by.html.haml +3 -3
  84. data/app/views/admin/fields/create.js.haml +9 -9
  85. data/app/views/admin/fields/destroy.js.haml +4 -4
  86. data/app/views/admin/fields/edit.js.haml +2 -2
  87. data/app/views/admin/fields/index.html.haml +1 -8
  88. data/app/views/admin/fields/show.html.haml +1 -1
  89. data/app/views/admin/fields/update.js.haml +8 -8
  90. data/app/views/admin/groups/_form.html.haml +1 -3
  91. data/app/views/admin/groups/create.js.haml +8 -8
  92. data/app/views/admin/groups/destroy.js.haml +3 -3
  93. data/app/views/admin/groups/edit.js.haml +3 -3
  94. data/app/views/admin/groups/index.js.haml +2 -2
  95. data/app/views/admin/groups/new.js.haml +2 -2
  96. data/app/views/admin/groups/update.js.haml +5 -5
  97. data/app/views/admin/tags/confirm.js.haml +2 -2
  98. data/app/views/admin/tags/create.js.haml +8 -8
  99. data/app/views/admin/tags/destroy.js.haml +3 -3
  100. data/app/views/admin/tags/edit.js.haml +4 -4
  101. data/app/views/admin/tags/new.js.haml +1 -1
  102. data/app/views/admin/tags/update.js.haml +5 -5
  103. data/app/views/admin/users/_profile.html.haml +3 -4
  104. data/app/views/admin/users/confirm.js.haml +2 -2
  105. data/app/views/admin/users/create.js.haml +8 -8
  106. data/app/views/admin/users/destroy.js.haml +3 -3
  107. data/app/views/admin/users/edit.js.haml +4 -4
  108. data/app/views/admin/users/index.js.haml +2 -2
  109. data/app/views/admin/users/new.js.haml +2 -2
  110. data/app/views/admin/users/reactivate.js.haml +2 -2
  111. data/app/views/admin/users/suspend.js.haml +2 -2
  112. data/app/views/admin/users/update.js.haml +5 -5
  113. data/app/views/campaigns/_edit.html.haml +1 -0
  114. data/app/views/campaigns/_index_brief.html.haml +1 -1
  115. data/app/views/campaigns/_index_long.html.haml +1 -1
  116. data/app/views/campaigns/_new.html.haml +1 -0
  117. data/app/views/campaigns/_sidebar_index.html.haml +1 -1
  118. data/app/views/campaigns/_sidebar_show.html.haml +1 -1
  119. data/app/views/campaigns/_status.html.haml +1 -1
  120. data/app/views/campaigns/_top_section.html.haml +1 -1
  121. data/app/views/campaigns/create.js.haml +10 -10
  122. data/app/views/campaigns/destroy.js.haml +2 -2
  123. data/app/views/campaigns/edit.js.haml +6 -6
  124. data/app/views/campaigns/index.js.haml +5 -5
  125. data/app/views/campaigns/new.js.haml +1 -1
  126. data/app/views/campaigns/show.html.haml +1 -1
  127. data/app/views/campaigns/show.js.haml +1 -1
  128. data/app/views/campaigns/update.js.haml +8 -6
  129. data/app/views/comments/_edit.html.haml +1 -1
  130. data/app/views/comments/_new.html.haml +1 -1
  131. data/app/views/comments/create.js.haml +9 -9
  132. data/app/views/comments/destroy.js.haml +2 -2
  133. data/app/views/comments/edit.js.haml +3 -3
  134. data/app/views/comments/update.js.haml +5 -5
  135. data/app/views/contacts/_contacts.html.haml +1 -1
  136. data/app/views/contacts/_edit.html.haml +1 -0
  137. data/app/views/contacts/_index_brief.html.haml +2 -2
  138. data/app/views/contacts/_index_full.html.haml +2 -2
  139. data/app/views/contacts/_index_long.html.haml +2 -2
  140. data/app/views/contacts/_new.html.haml +1 -0
  141. data/app/views/contacts/_section_general.html.haml +4 -3
  142. data/app/views/contacts/_sidebar_show.html.haml +1 -1
  143. data/app/views/contacts/_top_section.html.haml +1 -1
  144. data/app/views/contacts/create.js.haml +10 -10
  145. data/app/views/contacts/destroy.js.haml +3 -3
  146. data/app/views/contacts/edit.js.haml +5 -5
  147. data/app/views/contacts/index.js.haml +5 -5
  148. data/app/views/contacts/new.js.haml +1 -1
  149. data/app/views/contacts/show.html.haml +1 -1
  150. data/app/views/contacts/show.js.haml +1 -1
  151. data/app/views/contacts/update.js.haml +8 -6
  152. data/app/views/emails/destroy.js.haml +2 -2
  153. data/app/views/entities/_basic_search.html.haml +15 -12
  154. data/app/views/entities/_permissions.html.haml +6 -11
  155. data/app/views/entities/attach.js.haml +3 -3
  156. data/app/views/entities/contacts.js.haml +2 -2
  157. data/app/views/entities/discard.js.haml +1 -1
  158. data/app/views/entities/leads.js.haml +2 -2
  159. data/app/views/entities/opportunities.js.haml +2 -2
  160. data/app/views/entities/subscription_update.js.haml +1 -1
  161. data/app/views/entities/versions.js.haml +2 -2
  162. data/app/views/fields/group.js.erb +1 -1
  163. data/app/views/home/_account.html.haml +2 -2
  164. data/app/views/home/_assets_menu.html.haml +3 -3
  165. data/app/views/home/_duration_menu.html.haml +3 -3
  166. data/app/views/home/_events_menu.html.haml +3 -3
  167. data/app/views/home/_opportunity.html.haml +2 -2
  168. data/app/views/home/_options.html.haml +0 -1
  169. data/app/views/home/_users_menu.html.haml +3 -3
  170. data/app/views/home/index.js.haml +4 -4
  171. data/app/views/home/options.js.haml +1 -1
  172. data/app/views/layouts/_about.html.haml +3 -3
  173. data/app/views/layouts/_footer.html.haml +1 -1
  174. data/app/views/layouts/_header.html.haml +1 -1
  175. data/app/views/layouts/_jumpbox.html.haml +23 -21
  176. data/app/views/layouts/_sidebar.html.haml +1 -2
  177. data/app/views/layouts/admin/application.html.haml +1 -1
  178. data/app/views/layouts/application.html.haml +3 -3
  179. data/app/views/leads/_convert.html.haml +1 -11
  180. data/app/views/leads/_convert_permissions.html.haml +4 -9
  181. data/app/views/leads/_edit.html.haml +1 -0
  182. data/app/views/leads/_index_brief.html.haml +1 -1
  183. data/app/views/leads/_index_long.html.haml +1 -1
  184. data/app/views/leads/_leads.html.haml +1 -1
  185. data/app/views/leads/_new.html.haml +1 -0
  186. data/app/views/leads/_sidebar_index.html.haml +1 -1
  187. data/app/views/leads/_sidebar_show.html.haml +1 -1
  188. data/app/views/leads/_top_section.html.haml +1 -1
  189. data/app/views/leads/convert.js.haml +5 -5
  190. data/app/views/leads/create.js.haml +9 -9
  191. data/app/views/leads/destroy.js.haml +2 -2
  192. data/app/views/leads/edit.js.haml +5 -5
  193. data/app/views/leads/index.js.haml +5 -5
  194. data/app/views/leads/new.js.haml +1 -1
  195. data/app/views/leads/promote.js.haml +7 -7
  196. data/app/views/leads/reject.js.haml +2 -2
  197. data/app/views/leads/show.html.haml +1 -1
  198. data/app/views/leads/show.js.haml +1 -1
  199. data/app/views/leads/update.js.haml +9 -7
  200. data/app/views/lists/_lists.html.haml +6 -0
  201. data/app/views/lists/_sidebar.html.haml +18 -17
  202. data/app/views/lists/create.js.haml +6 -7
  203. data/app/views/lists/destroy.js.haml +1 -1
  204. data/app/views/opportunities/_edit.html.haml +2 -1
  205. data/app/views/opportunities/_index_brief.html.haml +1 -1
  206. data/app/views/opportunities/_index_long.html.haml +1 -1
  207. data/app/views/opportunities/_new.html.haml +2 -1
  208. data/app/views/opportunities/_opportunities.html.haml +1 -1
  209. data/app/views/opportunities/_sidebar_index.html.haml +1 -1
  210. data/app/views/opportunities/_sidebar_show.html.haml +1 -1
  211. data/app/views/opportunities/_top_section.html.haml +2 -2
  212. data/app/views/opportunities/contacts.js.haml +2 -2
  213. data/app/views/opportunities/create.js.haml +10 -10
  214. data/app/views/opportunities/destroy.js.haml +3 -3
  215. data/app/views/opportunities/edit.js.haml +5 -5
  216. data/app/views/opportunities/index.html.haml +1 -1
  217. data/app/views/opportunities/index.js.haml +5 -5
  218. data/app/views/opportunities/new.js.haml +1 -1
  219. data/app/views/opportunities/show.html.haml +1 -1
  220. data/app/views/opportunities/show.js.haml +1 -1
  221. data/app/views/opportunities/update.js.haml +8 -6
  222. data/app/views/shared/_address.html.haml +1 -1
  223. data/app/views/shared/_inline_styles.html.haml +1 -1
  224. data/app/views/shared/_naming.html.haml +3 -3
  225. data/app/views/shared/_paginate.haml +2 -1
  226. data/app/views/shared/_paginate_with_per_page.html.haml +10 -12
  227. data/app/views/shared/_search.html.haml +7 -3
  228. data/app/views/shared/_select_popup.html.haml +9 -11
  229. data/app/views/shared/_tags.html.haml +5 -4
  230. data/app/views/tasks/_completed.html.haml +3 -1
  231. data/app/views/tasks/_selector.html.haml +1 -1
  232. data/app/views/tasks/_top_section.html.haml +1 -1
  233. data/app/views/tasks/complete.js.haml +7 -7
  234. data/app/views/tasks/create.js.haml +17 -17
  235. data/app/views/tasks/destroy.js.haml +2 -2
  236. data/app/views/tasks/discard.js.haml +1 -1
  237. data/app/views/tasks/edit.js.haml +4 -4
  238. data/app/views/tasks/filter.js.haml +2 -2
  239. data/app/views/tasks/new.js.haml +1 -1
  240. data/app/views/tasks/uncomplete.js.haml +12 -0
  241. data/app/views/tasks/update.js.haml +4 -4
  242. data/app/views/users/_avatar.html.haml +1 -1
  243. data/app/views/users/_languages.html.haml +3 -3
  244. data/app/views/users/_profile.html.haml +1 -1
  245. data/app/views/users/avatar.js.haml +1 -1
  246. data/app/views/users/change_password.js.haml +5 -5
  247. data/app/views/users/edit.js.haml +1 -1
  248. data/app/views/users/password.js.haml +2 -2
  249. data/app/views/users/show.html.haml +1 -1
  250. data/app/views/users/update.js.haml +5 -5
  251. data/app/views/users/upload_avatar.js.haml +3 -3
  252. data/app/views/versions/_versions.html.haml +1 -1
  253. data/config/application.rb +3 -0
  254. data/config/environments/production.rb +1 -1
  255. data/config/environments/staging.rb +58 -13
  256. data/config/initializers/locale.rb +2 -0
  257. data/config/locales/cz_fat_free_crm.yml +1 -0
  258. data/config/locales/de_fat_free_crm.yml +1 -0
  259. data/config/locales/en-GB_fat_free_crm.yml +1 -0
  260. data/config/locales/en-US_fat_free_crm.yml +2 -0
  261. data/config/locales/es_fat_free_crm.yml +1 -0
  262. data/config/locales/fr-CA_fat_free_crm.yml +1 -0
  263. data/config/locales/fr_fat_free_crm.yml +1 -0
  264. data/config/locales/it_fat_free_crm.yml +1 -0
  265. data/config/locales/ja_fat_free_crm.yml +1 -0
  266. data/config/locales/pl_fat_free_crm.yml +1 -0
  267. data/config/locales/pt-BR_fat_free_crm.yml +1 -0
  268. data/config/locales/ru_fat_free_crm.yml +444 -61
  269. data/config/locales/sv-SE_fat_free_crm.yml +1 -0
  270. data/config/locales/th_fat_free_crm.yml +1 -0
  271. data/config/locales/zh-CN_fat_free_crm.yml +1 -0
  272. data/config/routes.rb +20 -19
  273. data/config/settings.default.yml +11 -10
  274. data/fat_free_crm.gemspec +5 -4
  275. data/lib/{plugins/country_select/lib/country_select.rb → country_select.rb} +0 -0
  276. data/lib/fat_free_crm.rb +3 -1
  277. data/lib/fat_free_crm/engine.rb +2 -4
  278. data/lib/fat_free_crm/gem_dependencies.rb +1 -1
  279. data/lib/fat_free_crm/gem_ext.rb +0 -2
  280. data/lib/fat_free_crm/permissions.rb +2 -3
  281. data/lib/fat_free_crm/version.rb +1 -1
  282. data/lib/{plugins/gravatar_image_tag/lib/gravatar_image_tag.rb → gravatar_image_tag.rb} +0 -0
  283. data/lib/tasks/ffcrm/settings.rake +4 -16
  284. data/public/favicon.ico +0 -0
  285. data/spec/controllers/entities/accounts_controller_spec.rb +5 -5
  286. data/spec/controllers/entities/campaigns_controller_spec.rb +5 -5
  287. data/spec/controllers/entities/contacts_controller_spec.rb +42 -5
  288. data/spec/controllers/entities/leads_controller_spec.rb +7 -7
  289. data/spec/controllers/entities/opportunities_controller_spec.rb +5 -5
  290. data/spec/controllers/home_controller_spec.rb +3 -3
  291. data/spec/controllers/tasks_controller_spec.rb +29 -0
  292. data/spec/factories/shared_factories.rb +1 -3
  293. data/spec/features/support/selector_helpers.rb +4 -4
  294. data/spec/helpers/tasks_helper_spec.rb +10 -5
  295. data/spec/lib/permissions_spec.rb +10 -22
  296. data/spec/mailers/user_mailer_spec.rb +5 -4
  297. data/spec/models/observers/entity_observer_spec.rb +13 -8
  298. data/spec/models/polymorphic/task_spec.rb +111 -32
  299. data/spec/routing/accounts_routing_spec.rb +1 -1
  300. data/spec/routing/campaigns_routing_spec.rb +1 -1
  301. data/spec/routing/contacts_routing_spec.rb +1 -1
  302. data/spec/routing/leads_routing_spec.rb +1 -1
  303. data/spec/routing/opportunities_routing_spec.rb +1 -1
  304. data/spec/shared/controllers.rb +2 -2
  305. data/spec/spec_helper.rb +1 -0
  306. data/spec/views/accounts/create.js.haml_spec.rb +3 -3
  307. data/spec/views/accounts/index.js.haml_spec.rb +4 -4
  308. data/spec/views/accounts/update.js.haml_spec.rb +5 -5
  309. data/spec/views/admin/field_groups/create.js.haml_spec.rb +2 -2
  310. data/spec/views/admin/field_groups/edit.js.haml_spec.rb +1 -1
  311. data/spec/views/admin/field_groups/new.js.haml_spec.rb +1 -1
  312. data/spec/views/admin/field_groups/update.js.haml_spec.rb +1 -1
  313. data/spec/views/admin/users/create.js.haml_spec.rb +2 -2
  314. data/spec/views/admin/users/destroy.js.haml_spec.rb +1 -1
  315. data/spec/views/admin/users/edit.js.haml_spec.rb +1 -1
  316. data/spec/views/admin/users/index.js.haml_spec.rb +1 -1
  317. data/spec/views/admin/users/new.js.haml_spec.rb +1 -1
  318. data/spec/views/admin/users/reactivate.js.haml_spec.rb +1 -1
  319. data/spec/views/admin/users/suspend.js.haml_spec.rb +1 -1
  320. data/spec/views/admin/users/update.js.haml_spec.rb +3 -3
  321. data/spec/views/campaigns/create.js.haml_spec.rb +4 -4
  322. data/spec/views/campaigns/destroy.js.haml_spec.rb +1 -1
  323. data/spec/views/campaigns/edit.js.haml_spec.rb +4 -4
  324. data/spec/views/campaigns/index.js.haml_spec.rb +2 -2
  325. data/spec/views/campaigns/new.js.haml_spec.rb +1 -1
  326. data/spec/views/campaigns/update.js.haml_spec.rb +7 -7
  327. data/spec/views/contacts/create.js.haml_spec.rb +4 -4
  328. data/spec/views/contacts/edit.js.haml_spec.rb +4 -4
  329. data/spec/views/contacts/index.js.html_spec.rb +2 -2
  330. data/spec/views/contacts/new.js.haml_spec.rb +2 -2
  331. data/spec/views/contacts/update.js.haml_spec.rb +11 -11
  332. data/spec/views/home/index.js.haml_spec.rb +1 -1
  333. data/spec/views/home/options.js.haml_spec.rb +3 -3
  334. data/spec/views/leads/convert.js.haml_spec.rb +3 -3
  335. data/spec/views/leads/create.js.haml_spec.rb +5 -5
  336. data/spec/views/leads/destroy.js.haml_spec.rb +1 -1
  337. data/spec/views/leads/edit.js.haml_spec.rb +4 -4
  338. data/spec/views/leads/index.js.haml_spec.rb +2 -2
  339. data/spec/views/leads/new.js.haml_spec.rb +1 -1
  340. data/spec/views/leads/promote.js.haml_spec.rb +13 -13
  341. data/spec/views/leads/reject.js.haml_spec.rb +6 -6
  342. data/spec/views/leads/update.js.haml_spec.rb +11 -11
  343. data/spec/views/opportunities/create.js.haml_spec.rb +4 -4
  344. data/spec/views/opportunities/destroy.js.haml_spec.rb +1 -1
  345. data/spec/views/opportunities/edit.js.haml_spec.rb +4 -4
  346. data/spec/views/opportunities/index.js.haml_spec.rb +2 -2
  347. data/spec/views/opportunities/update.js.haml_spec.rb +11 -11
  348. data/spec/views/tasks/complete.js.haml_spec.rb +5 -5
  349. data/spec/views/tasks/create.js.haml_spec.rb +13 -13
  350. data/spec/views/tasks/destroy.js.haml_spec.rb +3 -3
  351. data/spec/views/tasks/edit.js.haml_spec.rb +4 -4
  352. data/spec/views/tasks/new.js.haml_spec.rb +2 -2
  353. data/spec/views/tasks/uncomplete.js.haml_spec.rb +44 -0
  354. data/spec/views/tasks/update.js.haml_spec.rb +17 -17
  355. data/spec/views/users/avatar.js.haml_spec.rb +1 -1
  356. data/spec/views/users/change_password.js.haml_spec.rb +4 -4
  357. data/spec/views/users/edit.js.haml_spec.rb +1 -1
  358. data/spec/views/users/password.js.haml_spec.rb +2 -2
  359. data/spec/views/users/update.js.haml_spec.rb +5 -5
  360. data/spec/views/users/upload_avatar.js.haml_spec.rb +2 -2
  361. data/vendor/assets/javascripts/ajax-chosen.jquery.coffee +166 -76
  362. data/vendor/assets/javascripts/chosen.jquery.coffee +2 -2
  363. data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-pt-BR.js +22 -0
  364. data/vendor/assets/javascripts/jquery_ui_datepicker/{jquery-ui-timepicker-sv.js → jquery-ui-timepicker-sv-SE.js} +0 -0
  365. data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-th.js +19 -0
  366. data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-fr-CA.js +21 -0
  367. data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-pt.js +21 -0
  368. data/vendor/assets/javascripts/rating.js +2 -2
  369. metadata +101 -122
  370. data/app/assets/images/facebook-close.gif +0 -0
  371. data/app/assets/javascripts/crm.js +0 -495
  372. data/app/assets/javascripts/crm_classes.js +0 -218
  373. data/app/assets/javascripts/crm_fields.js +0 -34
  374. data/app/assets/javascripts/crm_loginout.js +0 -29
  375. data/app/assets/javascripts/crm_textarea_autocomplete.js +0 -32
  376. data/app/assets/javascripts/groups.js.coffee +0 -8
  377. data/app/assets/javascripts/jquery-noconflict.js +0 -6
  378. data/app/assets/javascripts/timeago.js +0 -17
  379. data/app/views/lists/_personal_sidebar.html.haml +0 -28
  380. data/lib/fat_free_crm/gem_ext/active_model/serializers/xml/serializer/attribute.rb +0 -17
  381. data/lib/fat_free_crm/gem_ext/authlogic/session/cookies.rb +0 -16
  382. data/lib/fat_free_crm/plugin_dependencies.rb +0 -12
  383. data/lib/plugins/country_select/MIT-LICENSE +0 -20
  384. data/lib/plugins/country_select/README +0 -14
  385. data/lib/plugins/country_select/init.rb +0 -1
  386. data/lib/plugins/country_select/install.rb +0 -2
  387. data/lib/plugins/country_select/uninstall.rb +0 -2
  388. data/lib/plugins/gravatar_image_tag/Gemfile +0 -8
  389. data/lib/plugins/gravatar_image_tag/README.textile +0 -108
  390. data/lib/plugins/gravatar_image_tag/ROADMAP.textile +0 -33
  391. data/lib/plugins/gravatar_image_tag/Rakefile +0 -50
  392. data/lib/plugins/gravatar_image_tag/VERSION +0 -1
  393. data/lib/plugins/gravatar_image_tag/gravatar_image_tag.gemspec +0 -45
  394. data/lib/plugins/gravatar_image_tag/init.rb +0 -2
  395. data/lib/plugins/gravatar_image_tag/spec/gravatar_image_tag_spec.rb +0 -83
  396. data/lib/plugins/gravatar_image_tag/spec/test_helper.rb +0 -12
  397. data/lib/tasks/db/migrate.rake +0 -66
  398. data/lib/tasks/db/schema.rake +0 -20
  399. data/vendor/assets/javascripts/ajax-chosen-prototype.js +0 -2
  400. data/vendor/assets/javascripts/ajax-chosen.proto.coffee +0 -98
  401. data/vendor/assets/javascripts/chosen-prototype.js +0 -3
  402. data/vendor/assets/javascripts/chosen.proto.coffee +0 -580
  403. data/vendor/assets/javascripts/event.simulate.js +0 -64
  404. data/vendor/assets/javascripts/facebooklist.js +0 -548
  405. data/vendor/assets/javascripts/facebooklist.simulate.js +0 -28
  406. data/vendor/assets/javascripts/modalbox.js +0 -506
  407. data/vendor/assets/stylesheets/facebooklist.css +0 -47
@@ -0,0 +1,22 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
6
+ (($) ->
7
+
8
+ # The multiselect tag list has listeners to load/remove fieldsets related to tags
9
+ #----------------------------------------------------------------------------
10
+ $(document).on 'select2-selecting', "[name*='tag_list']", (event) ->
11
+ url = $(this).data('url')
12
+ asset_id = $(this).data('asset-id')
13
+ $.get(url, {
14
+ tag: event.val
15
+ asset_id: asset_id
16
+ collapsed: "no"
17
+ })
18
+
19
+ $(document).on 'select2-removing', "[name*='tag_list']", (event) ->
20
+ $("#field_groups div[data-tag='" + event.val + "']").remove()
21
+
22
+ ) jQuery
@@ -0,0 +1,33 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
6
+ (($) ->
7
+
8
+ window.crm ||= {}
9
+
10
+ crm.textarea_user_autocomplete = (el_id) ->
11
+ unless $("#areacomplete_" + el_id)[0]
12
+ $("#" + el_id).areacomplete
13
+ wordCount: 1
14
+ mode: "outter"
15
+ on:
16
+ query: (text, cb) ->
17
+
18
+ # Only autocomplete if search term starts with '@'
19
+ return [] unless text.indexOf("@") is 0
20
+ words = []
21
+ i = 0
22
+
23
+ while i < _ffcrm_users.length
24
+ name_query = text.replace("@", "").toLowerCase()
25
+ words.push _ffcrm_users[i] unless _ffcrm_users[i].toLowerCase().indexOf(name_query) is -1
26
+ i++
27
+ cb words, text.replace("@", "")
28
+
29
+ selected: (text, data) ->
30
+ username_regEx = new RegExp("\\((@[^)]+)\\)")
31
+ text.match(username_regEx)[1]
32
+
33
+ ) jQuery
@@ -5,13 +5,13 @@
5
5
  #------------------------------------------------------------------------------
6
6
  (($) ->
7
7
 
8
- $('input.date').live 'click focus', ->
8
+ $(document).on 'click focus', 'input.date', ->
9
9
  $(this).datepicker({
10
10
  showOn: 'focus',
11
11
  changeMonth: true,
12
12
  dateFormat: 'yy-mm-dd'})
13
13
 
14
- $('input.datetime').live 'click focus', ->
14
+ $(document).on 'click focus', 'input.datetime', ->
15
15
  $(this).datetimepicker({
16
16
  showOn: 'focus',
17
17
  changeMonth: true,
@@ -3,51 +3,50 @@
3
3
  # Fat Free CRM is freely distributable under the terms of MIT license.
4
4
  # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
5
  #------------------------------------------------------------------------------
6
- (($j) ->
6
+ (($) ->
7
7
 
8
- $j('a[data-view]').live 'click', ->
8
+ $(document).on 'click', 'a[data-view]', ->
9
9
 
10
- if $j(this).data('context') == 'show'
10
+ if $(this).data('context') == 'show'
11
11
  # replace the '#main' div with the new 'show' contents
12
- $j.ajax(
13
- url: $j(this).data('url'),
12
+ $.ajax(
13
+ url: $(this).data('url'),
14
14
  dataType: "script"
15
15
  data:
16
- view: $j(this).data('view')
16
+ view: $(this).data('view')
17
17
  beforeSend: ->
18
- $j('#loading').show()
18
+ $('#loading').show()
19
19
  complete: ->
20
- $j('#loading').hide()
20
+ $('#loading').hide()
21
21
  )
22
- else
22
+ else
23
23
  # update the index view by firing off the searches again
24
24
 
25
- if $j('#search .tabs li a[data-search-form="advanced_search"].active').length == 1
25
+ if $('#search .tabs li a[data-search-form="advanced_search"].active').length == 1
26
26
  # handle view change via advanced search form by setting the hidden 'view' field
27
- $j('#advanced_search_view').remove()
28
- $j("#advanced_search form input:submit").before('<input id="advanced_search_view" name="view" type="hidden" value="' + $j(this).data('view') + '">')
29
- $j("#advanced_search form input:submit").click()
27
+ $('#advanced_search_view').remove()
28
+ $("#advanced_search form input:submit").before('<input id="advanced_search_view" name="view" type="hidden" value="' + $(this).data('view') + '">')
29
+ $("#advanced_search form input:submit").click()
30
30
  else
31
31
  # basic search
32
- $j.ajax(
33
- url: $j(this).data('url'),
34
- type: "POST",
32
+ $.ajax(
33
+ url: $(this).data('url'),
35
34
  dataType: "script"
36
35
  data:
37
- view: $j(this).data('view')
38
- query: $('query').value
36
+ view: $(this).data('view')
37
+ query: $('#query').val()
39
38
  beforeSend: ->
40
- $j('#contacts').css({ opacity: 0.4 })
41
- $j('#loading').show()
39
+ $('#contacts').css({ opacity: 0.4 })
40
+ $('#loading').show()
42
41
  complete: ->
43
- $j('#contacts').css({ opacity: 1 })
44
- $j('#loading').hide()
42
+ $('#contacts').css({ opacity: 1 })
43
+ $('#loading').hide()
45
44
  )
46
45
 
47
46
  # TODO: code for when viewing a single contact, not just index
48
47
  # need to refresh the page or just the segment
49
48
 
50
- $j('a[data-view]').removeClass('active')
51
- $j(this).addClass('active')
49
+ $('a[data-view]').removeClass('active')
50
+ $(this).addClass('active')
52
51
 
53
52
  ) jQuery
@@ -4,82 +4,51 @@
4
4
  # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
5
  #------------------------------------------------------------------------------
6
6
  (($) ->
7
- class @Lists
8
- constructor: (@templates = {}) ->
9
7
 
10
- show_save_form: ->
11
- $(".save_list").show()
12
- $('.save_list #list_name').focus()
13
-
14
- show_save_personal_form: ->
15
- $(".save_peronal_list").show()
16
- $('.save_peronal_list #list_name').focus()
17
-
18
- hide_save_form: ->
19
- $(".save_list").hide()
20
-
21
- hide_save_personal_form: ->
22
- $(".save_peronal_list").hide()
23
-
24
- $(document).ready ->
25
- lists = new Lists()
26
-
27
- $(".show_lists_save_form").live "click", ->
28
- lists.show_save_form()
29
- $(".show_lists_save_form").hide()
30
- false
31
-
32
- $(".show_personal_lists_save_form").live "click", ->
33
- lists.show_save_personal_form()
34
- $(".show_personal_lists_save_form").hide()
35
- false
36
-
37
- $(".hide_lists_save_form").live "click", ->
38
- lists.hide_save_form()
39
- $(".show_lists_save_form").show()
40
- false
41
-
42
- $(".hide_lists_save_personal_form").live "click", ->
43
- lists.hide_save_personal_form()
44
- $(".show_personal_lists_save_form").show()
45
- false
46
-
47
- $("input#save_list").live "click", ->
48
- # Set value of hidden list_url field to serialized search form
49
- $("#list_url").val(window.location.pathname + '?' + $('form.ransack_search').serialize())
50
- true
51
-
52
- $("input#save_personal_list").live "click", ->
53
- # Set value of hidden list_url field to serialized search form
54
- $("#personal_list_url").val(window.location.pathname + '?' + $('form.ransack_search').serialize())
55
- true
56
-
57
- # When mouseover on li, change asset icons to delete buttons
58
- $("#lists li, #personal_lists li").live "mouseover", ->
59
- icon = $(this).find('.delete_on_hover i.fa')
60
- iconText = getIcon(icon.attr('data-controller'))
61
- icon.removeClass(iconText).addClass('fa-times-circle')
62
- $("#lists li, #personal_lists li").live "mouseout", ->
63
- icon = $(this).find('.delete_on_hover i.fa')
64
- iconText = getIcon(icon.attr('data-controller'))
65
- icon.removeClass('fa-times-circle').addClass(iconText)
66
-
67
- getIcon = (listType) ->
68
- switch (listType)
69
- when "tasks" then "fa-check-square-o"
70
- when "campaigns" then "fa-bar-chart-o"
71
- when "leads" then "fa-tasks"
72
- when "accounts" then "fa-users"
73
- when "contacts" then "fa-user"
74
- when "opportunities" then "fa-money"
75
- when "team" then "fa-globe"
76
-
77
- # When mouseover on li, change asset icons to delete buttons
78
- $("#personal_lists li").live "mouseover", ->
79
- img_el = $(this).find('.delete_on_hover img')
80
- img_el.attr('src', "/assets/delete.png")
81
- $("#personal_lists li").live "mouseout", ->
82
- img_el = $(this).find('.delete_on_hover img')
83
- img_el.attr('src', "/assets/tab_icons/" + img_el.data('controller') + "_active.png")
8
+ # Open list save form
9
+ $(document).on "click", ".lists .list_save a", ->
10
+ $list = $(this).closest('.lists')
11
+ $list.find(".list_form").show().find("[name='list[name]']").focus()
12
+ $list.find(".list_save").hide()
13
+ false
14
+
15
+ # Close list save form
16
+ $(document).on "click", ".lists .cancel", ->
17
+ $list = $(this).closest('.lists')
18
+ $list.find(".list_form").hide()
19
+ $list.find(".list_save").show()
20
+ false
21
+
22
+ # Set value of hidden list[url] field to serialized search form
23
+ $(document).on "click", ".lists .list_form [type=submit]", ->
24
+ $form = $(this).closest('form')
25
+ $form.find("[name='list[url]']").val(window.location.pathname + '?' + $('form.ransack_search').serialize())
26
+ true
27
+
28
+ # Disable submit button when form is submitted
29
+ $(document).on "submit", ".lists .list_form [type=submit]", ->
30
+ $form = $(this).closest('form')
31
+ $form.find("[type=submit]").prop('disabled', true);
32
+
33
+ # On li mouseover, change icons to delete buttons
34
+ $(document).on "mouseover", ".lists li", ->
35
+ icon = $(this).find('.delete_on_hover i.fa')
36
+ iconText = crm.get_icon(icon.attr('data-controller'))
37
+ icon.removeClass(iconText).addClass('fa-times-circle')
38
+
39
+ # On li mouseout, change asset icons back
40
+ $(document).on "mouseout", ".lists li", ->
41
+ icon = $(this).find('.delete_on_hover i.fa')
42
+ iconText = crm.get_icon(icon.attr('data-controller'))
43
+ icon.removeClass('fa-times-circle').addClass(iconText)
44
+
45
+ # On search tab click, toggle list save on/off
46
+ $(document).on 'click', '#search .tabs a', ->
47
+ search_form = $(this).data('search-form')
48
+ switch search_form
49
+ when 'basic_search'
50
+ $('.lists .list_save').hide()
51
+ when 'advanced_search'
52
+ $('.lists .list_save').show()
84
53
 
85
54
  ) jQuery
@@ -0,0 +1,16 @@
1
+ # Copyright (c) 2008-2014 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
6
+ (($) ->
7
+
8
+ $(document).on 'ajax:send', '.pagination, .per_page_options', ->
9
+ $(this).find('a').prop('disabled', true)
10
+ $(this).closest('#paginate').find('.spinner').show()
11
+
12
+ $(document).on 'ajax:complete', '.pagination, .per_page_options', ->
13
+ $(this).find('a').prop('disabled', false)
14
+ $(this).closest('#paginate').find('.spinner').hide()
15
+
16
+ ) jQuery
@@ -14,24 +14,15 @@
14
14
  $('#query').focusout (e) ->
15
15
  $(this).attr('placeholder', $(this).data('placeholder'))
16
16
 
17
- # For advanced search we show a spinner and dim the page when loading results
18
- # This method undoes that when the results are returned. Ideally, this should
19
- # be converted to jQuery (using the 'live' method)
20
- # but we have to move to jquery-ujs first as all ajax events are current
21
- # registered with prototype
22
- Event.observe document.body, 'ajax:complete', (e, el) ->
23
- if e.findElement('.ransack_search')
17
+ $(document).ajaxComplete ->
18
+ if $('.ransack_search').length
24
19
  $("#loading").hide()
25
20
  $("#advanced_search").css('opacity', 1)
26
21
 
27
- Event.observe document.body, 'ajax:failure', (e, el) ->
28
- if e.findElement('.ransack_search')
29
- $('#flash').html('An error occurred whilst trying to search') # no i18n
30
- crm.flash('error')
31
-
32
22
  # Search tabs
33
23
  # -----------------------------------------------------
34
- activate_search_form = (search_form) ->
24
+ $(document).on 'click', '#search .tabs a', ->
25
+ search_form = $(this).data('search-form')
35
26
  # Hide all
36
27
  $('#search .search_form').hide()
37
28
  $('#search .tabs li a').removeClass('active')
@@ -41,25 +32,18 @@
41
32
  # Run search for current query
42
33
  switch search_form
43
34
  when 'basic_search'
44
- $('#lists .show_lists_save_form').hide()
45
- $('#personal_lists .show_personal_lists_save_form').hide()
46
35
  query_input = $('#basic_search input#query')
47
36
  if !query_input.is('.defaultTextActive')
48
37
  value = query_input.val()
49
38
  else
50
39
  value = ""
51
40
  crm.search(value, window.controller)
52
- $('#filters').enable() # Enable filters panel (if present)
41
+ $('#filters').prop('disabled', false) # Enable filters panel (if present)
53
42
 
54
43
  when 'advanced_search'
55
- $('#lists .show_lists_save_form').show()
56
- $('#personal_lists .show_personal_lists_save_form').show()
57
44
  $("#advanced_search form input:submit").click()
58
- $('#filters').disable() # Disable filters panel (if present)
45
+ $('#filters').prop('disabled', true) # Disable filters panel (if present)
59
46
 
60
47
  return
61
48
 
62
- $("#search .tabs a").click ->
63
- activate_search_form($(this).data('search-form'))
64
-
65
49
  ) jQuery
@@ -0,0 +1,21 @@
1
+ (($) ->
2
+
3
+ # Run function on page load
4
+ $ ->
5
+ $.timeago.settings.allowFuture = true
6
+
7
+ # our modification to choose correct language
8
+ $.timeago.settings.strings = $.timeago.settings.locales[crm.language]
9
+ $("span.timeago").timeago()
10
+
11
+ # update every minute
12
+ setInterval (->
13
+ $("span.timeago").timeago()
14
+ ), 60000
15
+
16
+
17
+ # Run after $ ajax event
18
+ $(document).ajaxComplete ->
19
+ $("span.timeago").timeago()
20
+
21
+ ) jQuery
@@ -10,7 +10,6 @@
10
10
  *= require jquery-ui.custom
11
11
  *= require select2
12
12
  *= require modalbox
13
- *= require facebooklist
14
13
  *= require rails
15
14
  *= require safari
16
15
  *= require base
@@ -185,7 +185,13 @@ $sidebar_width: 210px;
185
185
  display: block;
186
186
  padding-top: 2px;
187
187
  input {
188
- margin-right: 5px; } } } } }
188
+ margin-right: 5px; } }
189
+ div.input.radio_buttons > span {
190
+ display: block;
191
+ padding-top: 2px;
192
+ label { vertical-align: middle; margin-left: 5px; }
193
+ input {
194
+ margin-left: 5px; } } } } }
189
195
 
190
196
  .remote {
191
197
  border: 5px lightblue solid;
@@ -433,7 +439,6 @@ $sidebar_width: 210px;
433
439
  padding: 8px 0px 7px 0px;
434
440
  li {
435
441
  border-bottom: 1px silver dotted;
436
- clear: both;
437
442
  color: #3f3f3f;
438
443
  font-size: 12px;
439
444
  list-style: none;
@@ -674,39 +679,12 @@ span.handle img {
674
679
  .field_group .list {
675
680
  padding-bottom: 30px; }
676
681
 
677
- #lists {
678
- .show_lists_save_form {
679
- text-align: right; }
680
- .show_lists_save_form, .save_list {
681
- margin: 10px 0 0; }
682
- .list_icon {
683
- opacity: 0.5;
684
- width: 12px; }
685
- img.input_info {
686
- vertical-align: middle; }
687
- input#save_list {
688
- margin-top: 6px; } }
689
-
690
- #personal_lists {
691
- .show_personal_lists_save_form {
692
- text-align: right; }
693
- .show_personal_lists_save_form, .save_list {
694
- margin: 10px 0 0; }
695
- .list_icon {
696
- opacity: 0.5;
697
- width: 12px; }
698
- img.input_info {
699
- vertical-align: middle; }
700
- input#save_list {
701
- margin-top: 6px; } }
702
-
703
682
  .fields .subtitle {
704
683
  cursor: move; }
705
684
 
706
685
  .fields .title {
707
686
  margin-bottom: 12px; }
708
687
 
709
-
710
688
  ul.tools {
711
689
  display: inline;
712
690
  li {
@@ -756,3 +734,32 @@ table.asset_attributes {
756
734
  border-bottom: none;
757
735
  }
758
736
  }
737
+
738
+ .spinner {
739
+ margin: 7px 4px 0px 4px;
740
+ float: right;
741
+ }
742
+
743
+ .comment .spinner {
744
+ margin: 5px 4px 0px 4px;
745
+ float: left;
746
+ }
747
+
748
+ .comment .buttons {
749
+ padding-left: 40px;
750
+ }
751
+
752
+ // Jumpbox
753
+
754
+ .ui-menu-item > a:not(.ui-state-focus) {
755
+ span.jumpbox-highlight {
756
+ background-color: lightyellow;
757
+ font-weight: bold;
758
+ }
759
+ }
760
+
761
+ .ui-state-focus {
762
+ span.jumpbox-highlight {
763
+ background-color: darkgray;
764
+ }
765
+ }