translation_cms 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1221) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +20 -0
  3. data/Rakefile +24 -0
  4. data/app/assets/images/cabinet/affilate_finish.jpg +0 -0
  5. data/app/assets/images/cabinet/arrows_icon.png +0 -0
  6. data/app/assets/images/cabinet/arrows_silver.png +0 -0
  7. data/app/assets/images/cabinet/art_icon.png +0 -0
  8. data/app/assets/images/cabinet/asc_icon.png +0 -0
  9. data/app/assets/images/cabinet/bell_icon.png +0 -0
  10. data/app/assets/images/cabinet/business_icon.png +0 -0
  11. data/app/assets/images/cabinet/calendar_close_icon.png +0 -0
  12. data/app/assets/images/cabinet/calendar_icon.png +0 -0
  13. data/app/assets/images/cabinet/chat_icon_green.png +0 -0
  14. data/app/assets/images/cabinet/chat_icon_white.png +0 -0
  15. data/app/assets/images/cabinet/checkbox.png +0 -0
  16. data/app/assets/images/cabinet/checkbox_view.png +0 -0
  17. data/app/assets/images/cabinet/communication_status_icon.png +0 -0
  18. data/app/assets/images/cabinet/delete.png +0 -0
  19. data/app/assets/images/cabinet/delete_file.png +0 -0
  20. data/app/assets/images/cabinet/delete_silver.png +0 -0
  21. data/app/assets/images/cabinet/desc_icon.png +0 -0
  22. data/app/assets/images/cabinet/devider.png +0 -0
  23. data/app/assets/images/cabinet/discount_around.jpg +0 -0
  24. data/app/assets/images/cabinet/discount_around.png +0 -0
  25. data/app/assets/images/cabinet/discount_banner.png +0 -0
  26. data/app/assets/images/cabinet/discount_devider.png +0 -0
  27. data/app/assets/images/cabinet/discount_devider_mobile.png +0 -0
  28. data/app/assets/images/cabinet/discount_icon1.png +0 -0
  29. data/app/assets/images/cabinet/discount_icon2.png +0 -0
  30. data/app/assets/images/cabinet/discount_line.png +0 -0
  31. data/app/assets/images/cabinet/discount_lines.png +0 -0
  32. data/app/assets/images/cabinet/discount_repeat.jpg +0 -0
  33. data/app/assets/images/cabinet/discount_repeat_mobile.jpg +0 -0
  34. data/app/assets/images/cabinet/discount_repeat_mobile.png +0 -0
  35. data/app/assets/images/cabinet/done_icon.png +0 -0
  36. data/app/assets/images/cabinet/edit_icon.png +0 -0
  37. data/app/assets/images/cabinet/extras_arrow.png +0 -0
  38. data/app/assets/images/cabinet/extras_arrow_mobile.png +0 -0
  39. data/app/assets/images/cabinet/extras_cabinet1.png +0 -0
  40. data/app/assets/images/cabinet/extras_cabinet10.png +0 -0
  41. data/app/assets/images/cabinet/extras_cabinet11.png +0 -0
  42. data/app/assets/images/cabinet/extras_cabinet12.png +0 -0
  43. data/app/assets/images/cabinet/extras_cabinet2.png +0 -0
  44. data/app/assets/images/cabinet/extras_cabinet3.png +0 -0
  45. data/app/assets/images/cabinet/extras_cabinet4.png +0 -0
  46. data/app/assets/images/cabinet/extras_cabinet5.png +0 -0
  47. data/app/assets/images/cabinet/extras_cabinet6.png +0 -0
  48. data/app/assets/images/cabinet/extras_cabinet7.png +0 -0
  49. data/app/assets/images/cabinet/extras_cabinet8.png +0 -0
  50. data/app/assets/images/cabinet/extras_cabinet9.png +0 -0
  51. data/app/assets/images/cabinet/facebook_icon.png +0 -0
  52. data/app/assets/images/cabinet/feedback_arrow.png +0 -0
  53. data/app/assets/images/cabinet/feedback_arrow_top.png +0 -0
  54. data/app/assets/images/cabinet/feedback_fail_icon.png +0 -0
  55. data/app/assets/images/cabinet/feedback_ok_icon.png +0 -0
  56. data/app/assets/images/cabinet/file_finish_icon.png +0 -0
  57. data/app/assets/images/cabinet/file_uploader_icon.png +0 -0
  58. data/app/assets/images/cabinet/general_icon.png +0 -0
  59. data/app/assets/images/cabinet/gplus_icon.png +0 -0
  60. data/app/assets/images/cabinet/issues_arrow.png +0 -0
  61. data/app/assets/images/cabinet/legal_icon.png +0 -0
  62. data/app/assets/images/cabinet/linkedin_icon.png +0 -0
  63. data/app/assets/images/cabinet/list_check.png +0 -0
  64. data/app/assets/images/cabinet/medicine_icon.png +0 -0
  65. data/app/assets/images/cabinet/menu_bg_mobile.png +0 -0
  66. data/app/assets/images/cabinet/menu_icon_close.png +0 -0
  67. data/app/assets/images/cabinet/menu_icon_open.png +0 -0
  68. data/app/assets/images/cabinet/none_cion.png +0 -0
  69. data/app/assets/images/cabinet/none_icon.png +0 -0
  70. data/app/assets/images/cabinet/not_found_green_icon.png +0 -0
  71. data/app/assets/images/cabinet/not_found_icon.png +0 -0
  72. data/app/assets/images/cabinet/notification_green.png +0 -0
  73. data/app/assets/images/cabinet/personal_icon.png +0 -0
  74. data/app/assets/images/cabinet/plus_icon.png +0 -0
  75. data/app/assets/images/cabinet/popup_close.png +0 -0
  76. data/app/assets/images/cabinet/procced_status_icon.png +0 -0
  77. data/app/assets/images/cabinet/progress_line.png +0 -0
  78. data/app/assets/images/cabinet/progress_line_line.png +0 -0
  79. data/app/assets/images/cabinet/scientific_icon.png +0 -0
  80. data/app/assets/images/cabinet/search_icon.png +0 -0
  81. data/app/assets/images/cabinet/select_two_arrows.png +0 -0
  82. data/app/assets/images/cabinet/settings_choice_icon.png +0 -0
  83. data/app/assets/images/cabinet/settings_devider.png +0 -0
  84. data/app/assets/images/cabinet/settings_success_icon.png +0 -0
  85. data/app/assets/images/cabinet/stars.png +0 -0
  86. data/app/assets/images/cabinet/success_status_icon.png +0 -0
  87. data/app/assets/images/cabinet/tabs_check.png +0 -0
  88. data/app/assets/images/cabinet/technical_icon.png +0 -0
  89. data/app/assets/images/cabinet/tooltip_icon.png +0 -0
  90. data/app/assets/images/cabinet/twitter_icon.png +0 -0
  91. data/app/assets/images/cabinet/upload_icon.png +0 -0
  92. data/app/assets/images/cabinet/work_scheme1.png +0 -0
  93. data/app/assets/images/cabinet/work_scheme2.png +0 -0
  94. data/app/assets/images/cabinet/work_scheme3.png +0 -0
  95. data/app/assets/images/cabinet/work_scheme_devider.png +0 -0
  96. data/app/assets/images/cabinet/work_scheme_devider_mobile.png +0 -0
  97. data/app/assets/images/defaults/attachment.png +0 -0
  98. data/app/assets/images/defaults/testimonial_pic_thumb.png +0 -0
  99. data/app/assets/images/fancybox/blank.gif +0 -0
  100. data/app/assets/images/fancybox/fancybox_loading.gif +0 -0
  101. data/app/assets/images/fancybox/fancybox_overlay.png +0 -0
  102. data/app/assets/images/fancybox/fancybox_sprite.png +0 -0
  103. data/app/assets/images/sprite_button.psd +0 -0
  104. data/app/assets/images/sunrise/widgets/accordion.jpg +0 -0
  105. data/app/assets/images/sunrise/widgets/affilate_commission.jpg +0 -0
  106. data/app/assets/images/sunrise/widgets/affilate_scheme.jpg +0 -0
  107. data/app/assets/images/sunrise/widgets/button_order.jpg +0 -0
  108. data/app/assets/images/ui-kit/best_bagde.png +0 -0
  109. data/app/assets/images/ui-kit/buttonset_line.png +0 -0
  110. data/app/assets/images/ui-kit/delete_icon.png +0 -0
  111. data/app/assets/images/ui-kit/error_icon.png +0 -0
  112. data/app/assets/images/ui-kit/gift.png +0 -0
  113. data/app/assets/images/ui-kit/payment_icons.png +0 -0
  114. data/app/assets/images/ui-kit/select-spinner.gif +0 -0
  115. data/app/assets/images/ui-kit/select.png +0 -0
  116. data/app/assets/images/ui-kit/tooltip.png +0 -0
  117. data/app/assets/images/ui-kit/uniform_bg_input.png +0 -0
  118. data/app/assets/images/ui-kit/uniform_bg_input_focus.png +0 -0
  119. data/app/assets/images/ui-kit/uniform_sprite.png +0 -0
  120. data/app/assets/images/ui-kit/valid_icon.png +0 -0
  121. data/app/assets/javascripts/ZeroClipboard.js +1031 -0
  122. data/app/assets/javascripts/account/affilate_program.js.coffee +70 -0
  123. data/app/assets/javascripts/account/affiliate.js +5 -0
  124. data/app/assets/javascripts/account/payments.js.coffee +73 -0
  125. data/app/assets/javascripts/account/profile.js.coffee +30 -0
  126. data/app/assets/javascripts/app/application.js +27 -0
  127. data/app/assets/javascripts/app/controllers/application_controller.js.coffee +6 -0
  128. data/app/assets/javascripts/app/controllers/checkouts_controller.js.coffee +101 -0
  129. data/app/assets/javascripts/app/controllers/contacts_controller.js.coffee +83 -0
  130. data/app/assets/javascripts/app/controllers/features_controller.js.coffee +159 -0
  131. data/app/assets/javascripts/app/controllers/feedbacks_controller.js.coffee +66 -0
  132. data/app/assets/javascripts/app/controllers/free_quote_controller.js.coffee +110 -0
  133. data/app/assets/javascripts/app/controllers/language_drop_controller.js.coffee +87 -0
  134. data/app/assets/javascripts/app/controllers/languages_controller.js.coffee +150 -0
  135. data/app/assets/javascripts/app/controllers/login_holder_controller.js.coffee +78 -0
  136. data/app/assets/javascripts/app/controllers/orders_controller.js.coffee +837 -0
  137. data/app/assets/javascripts/app/controllers/payments_controller.js.coffee +135 -0
  138. data/app/assets/javascripts/app/controllers/prices_controller.js.coffee +207 -0
  139. data/app/assets/javascripts/app/controllers/referrals_controller.js.coffee +306 -0
  140. data/app/assets/javascripts/app/controllers/registrations_controller.js.coffee +125 -0
  141. data/app/assets/javascripts/app/controllers/settings_controller.js.coffee +561 -0
  142. data/app/assets/javascripts/app/controllers/show_order_controller.js.coffee +102 -0
  143. data/app/assets/javascripts/app/controllers/steps_prices_controller.js.coffee +197 -0
  144. data/app/assets/javascripts/app/controllers/sunrise_prices_controller.js.coffee +204 -0
  145. data/app/assets/javascripts/app/controllers/tickets_controller.js.coffee +115 -0
  146. data/app/assets/javascripts/app/directives/application_directive.js.coffee +1 -0
  147. data/app/assets/javascripts/app/directives/boxcom_uploader.js.coffee +56 -0
  148. data/app/assets/javascripts/app/directives/buttonset.js.coffee +43 -0
  149. data/app/assets/javascripts/app/directives/can_be_blank.js.coffee +16 -0
  150. data/app/assets/javascripts/app/directives/check_box_list.js.coffee +33 -0
  151. data/app/assets/javascripts/app/directives/check_discount.js.coffee +50 -0
  152. data/app/assets/javascripts/app/directives/check_email.js.coffee +15 -0
  153. data/app/assets/javascripts/app/directives/check_error.js.coffee +73 -0
  154. data/app/assets/javascripts/app/directives/check_extra_symbols.js.coffee +14 -0
  155. data/app/assets/javascripts/app/directives/check_full_phone.js.coffee +56 -0
  156. data/app/assets/javascripts/app/directives/check_service_type.js.coffee +17 -0
  157. data/app/assets/javascripts/app/directives/check_writer.js.coffee +26 -0
  158. data/app/assets/javascripts/app/directives/count_words.js.coffee +19 -0
  159. data/app/assets/javascripts/app/directives/country_flag.js.coffee +9 -0
  160. data/app/assets/javascripts/app/directives/datetime_picker.js.coffee +114 -0
  161. data/app/assets/javascripts/app/directives/def_value.js.coffee +12 -0
  162. data/app/assets/javascripts/app/directives/discount.js.coffee +121 -0
  163. data/app/assets/javascripts/app/directives/display_error.js.coffee +91 -0
  164. data/app/assets/javascripts/app/directives/dropbox_uploader.js.coffee +54 -0
  165. data/app/assets/javascripts/app/directives/enter.js.coffee +11 -0
  166. data/app/assets/javascripts/app/directives/equals.js.coffee +14 -0
  167. data/app/assets/javascripts/app/directives/file_uploader.js.coffee +136 -0
  168. data/app/assets/javascripts/app/directives/files_required.js.coffee +50 -0
  169. data/app/assets/javascripts/app/directives/gdrive_uploader.js.coffee +97 -0
  170. data/app/assets/javascripts/app/directives/inclusion.js.coffee +24 -0
  171. data/app/assets/javascripts/app/directives/language_cell.js.coffee +71 -0
  172. data/app/assets/javascripts/app/directives/limit_input.js.coffee +35 -0
  173. data/app/assets/javascripts/app/directives/nano_scroller.js.coffee +30 -0
  174. data/app/assets/javascripts/app/directives/ng-alias.js.coffee +8 -0
  175. data/app/assets/javascripts/app/directives/ng-bind-lazy.js.coffee +27 -0
  176. data/app/assets/javascripts/app/directives/ng-check-item.js.coffee +83 -0
  177. data/app/assets/javascripts/app/directives/ng-disabled-with.js.coffee +29 -0
  178. data/app/assets/javascripts/app/directives/ng-focus-on.js.coffee +19 -0
  179. data/app/assets/javascripts/app/directives/ng-options-class.js.coffee +27 -0
  180. data/app/assets/javascripts/app/directives/ng-overlay.js.coffee +18 -0
  181. data/app/assets/javascripts/app/directives/ng-owl.js.coffee +52 -0
  182. data/app/assets/javascripts/app/directives/ng-rating.js.coffee +84 -0
  183. data/app/assets/javascripts/app/directives/ng-select2.js.coffee +101 -0
  184. data/app/assets/javascripts/app/directives/ng-shave.js.coffee +32 -0
  185. data/app/assets/javascripts/app/directives/ng-show-remote-check.js.coffee +11 -0
  186. data/app/assets/javascripts/app/directives/ng-showpassword.js.coffee +52 -0
  187. data/app/assets/javascripts/app/directives/notification_field.js.coffee +25 -0
  188. data/app/assets/javascripts/app/directives/only_numbers.js.coffee +19 -0
  189. data/app/assets/javascripts/app/directives/order.js.coffee +6 -0
  190. data/app/assets/javascripts/app/directives/popup_holder.js.coffee +8 -0
  191. data/app/assets/javascripts/app/directives/popup_open.js.coffee +10 -0
  192. data/app/assets/javascripts/app/directives/presence.js.coffee +13 -0
  193. data/app/assets/javascripts/app/directives/scroll-to.js.coffee +15 -0
  194. data/app/assets/javascripts/app/directives/select.js +1268 -0
  195. data/app/assets/javascripts/app/directives/simple_file_uploader.js.coffee +61 -0
  196. data/app/assets/javascripts/app/directives/spinner.js.coffee +33 -0
  197. data/app/assets/javascripts/app/directives/stick_in_parent.js.coffee +15 -0
  198. data/app/assets/javascripts/app/directives/tooltip_ster.js.coffee +38 -0
  199. data/app/assets/javascripts/app/directives/uitabs.js.coffee +10 -0
  200. data/app/assets/javascripts/app/directives/uncheckable.js.coffee +31 -0
  201. data/app/assets/javascripts/app/directives/uniform.js.coffee +18 -0
  202. data/app/assets/javascripts/app/directives/weburl_uploader.js.coffee +55 -0
  203. data/app/assets/javascripts/app/filters/application_filter.js.coffee +1 -0
  204. data/app/assets/javascripts/app/filters/currency_sup.js.coffee +10 -0
  205. data/app/assets/javascripts/app/filters/extention.js.coffee +8 -0
  206. data/app/assets/javascripts/app/filters/formatted_hours.js.coffee +63 -0
  207. data/app/assets/javascripts/app/filters/human_size.js.coffee +12 -0
  208. data/app/assets/javascripts/app/filters/props_filter.js.coffee +24 -0
  209. data/app/assets/javascripts/app/main.js.coffee +33 -0
  210. data/app/assets/javascripts/app/services/account_service.js.coffee +54 -0
  211. data/app/assets/javascripts/app/services/application_service.js.coffee +5 -0
  212. data/app/assets/javascripts/app/services/assignment_type.js.coffee +25 -0
  213. data/app/assets/javascripts/app/services/check_auth_service.js.coffee +123 -0
  214. data/app/assets/javascripts/app/services/component_type.js.coffee +42 -0
  215. data/app/assets/javascripts/app/services/contact_service.js.coffee +14 -0
  216. data/app/assets/javascripts/app/services/country_code_service.js.coffee +32 -0
  217. data/app/assets/javascripts/app/services/customer_mode.js.coffee +17 -0
  218. data/app/assets/javascripts/app/services/data_service.js.coffee +209 -0
  219. data/app/assets/javascripts/app/services/discount_service.js.coffee +62 -0
  220. data/app/assets/javascripts/app/services/feature_badge.js.coffee +35 -0
  221. data/app/assets/javascripts/app/services/feature_type.js.coffee +33 -0
  222. data/app/assets/javascripts/app/services/feedback_service.js.coffee +346 -0
  223. data/app/assets/javascripts/app/services/file_keeper.js.coffee +266 -0
  224. data/app/assets/javascripts/app/services/language_type.js.coffee +10 -0
  225. data/app/assets/javascripts/app/services/locale_service.js.coffee +14 -0
  226. data/app/assets/javascripts/app/services/order_data_service.js.coffee +126 -0
  227. data/app/assets/javascripts/app/services/order_logic.js.coffee +273 -0
  228. data/app/assets/javascripts/app/services/order_part_service.js.coffee +17 -0
  229. data/app/assets/javascripts/app/services/order_price_service.js.coffee +974 -0
  230. data/app/assets/javascripts/app/services/paginate_array_service.js.coffee +44 -0
  231. data/app/assets/javascripts/app/services/price_type.js.coffee +86 -0
  232. data/app/assets/javascripts/app/services/pusher_service.js.coffee +38 -0
  233. data/app/assets/javascripts/app/services/rate_type.js.coffee +45 -0
  234. data/app/assets/javascripts/app/services/report_service.js.coffee +29 -0
  235. data/app/assets/javascripts/app/services/restore_password_service.js.coffee +63 -0
  236. data/app/assets/javascripts/app/services/uploader_manager.js.coffee +20 -0
  237. data/app/assets/javascripts/app/services/user_location_service.js.coffee +47 -0
  238. data/app/assets/javascripts/app/services/utils.js.coffee +56 -0
  239. data/app/assets/javascripts/app/services/validation_modifier.js.coffee +94 -0
  240. data/app/assets/javascripts/app/services/writer_service.js.coffee +23 -0
  241. data/app/assets/javascripts/app/vendor/angular-locale_en.js +143 -0
  242. data/app/assets/javascripts/app/vendor/angular-locale_ru.js +143 -0
  243. data/app/assets/javascripts/app/vendor/angular-locale_uk.js +143 -0
  244. data/app/assets/javascripts/app/vendor/angular-sanitize.min.js +15 -0
  245. data/app/assets/javascripts/app/vendor/angular-timer.min.js +8 -0
  246. data/app/assets/javascripts/app/vendor/angular.min.js +250 -0
  247. data/app/assets/javascripts/app/vendor/moment.js +2856 -0
  248. data/app/assets/javascripts/app/vendor/moment/moment_ru.js +168 -0
  249. data/app/assets/javascripts/app/vendor/moment/moment_uk.js +152 -0
  250. data/app/assets/javascripts/app/vendor/ngProgress.js +234 -0
  251. data/app/assets/javascripts/app/vendor/numeral.js +525 -0
  252. data/app/assets/javascripts/app/vendor/purl.js +267 -0
  253. data/app/assets/javascripts/app/vendor/show_password.js.coffee +61 -0
  254. data/app/assets/javascripts/check_auth_tmpl.js.coffee +69 -0
  255. data/app/assets/javascripts/ckeditor/config.js +119 -0
  256. data/app/assets/javascripts/ckeditor/contents.css +23 -0
  257. data/app/assets/javascripts/ckeditor/plugins/autogrow/plugin.js +178 -0
  258. data/app/assets/javascripts/ckeditor/plugins/autogrow/samples/autogrow.html +99 -0
  259. data/app/assets/javascripts/highcharts/application.js +7 -0
  260. data/app/assets/javascripts/highcharts/highcharts-more.js +50 -0
  261. data/app/assets/javascripts/highcharts/highcharts.js +270 -0
  262. data/app/assets/javascripts/highcharts/modules/canvas-tools.js +133 -0
  263. data/app/assets/javascripts/highcharts/modules/canvas-tools.src.js +3113 -0
  264. data/app/assets/javascripts/highcharts/modules/data.js +16 -0
  265. data/app/assets/javascripts/highcharts/modules/data.src.js +537 -0
  266. data/app/assets/javascripts/highcharts/modules/export-csv.js +237 -0
  267. data/app/assets/javascripts/highcharts/modules/exporting.js +22 -0
  268. data/app/assets/javascripts/highcharts/modules/exporting.src.js +703 -0
  269. data/app/assets/javascripts/highcharts/modules/funnel.js +12 -0
  270. data/app/assets/javascripts/highcharts/modules/funnel.src.js +284 -0
  271. data/app/assets/javascripts/highcharts/themes/dark-blue.js +254 -0
  272. data/app/assets/javascripts/highcharts/themes/dark-green.js +255 -0
  273. data/app/assets/javascripts/highcharts/themes/gray.js +257 -0
  274. data/app/assets/javascripts/highcharts/themes/grid.js +103 -0
  275. data/app/assets/javascripts/highcharts/themes/skies.js +89 -0
  276. data/app/assets/javascripts/i18n/translations.js +4 -0
  277. data/app/assets/javascripts/payments/application.js +14 -0
  278. data/app/assets/javascripts/payments/transactions.js.coffee +3 -0
  279. data/app/assets/javascripts/sharingpopup.js.coffee +45 -0
  280. data/app/assets/javascripts/site_utils.js.coffee +18 -0
  281. data/app/assets/javascripts/sourcebuster.js +865 -0
  282. data/app/assets/javascripts/sunrise/adds.js.coffee +74 -0
  283. data/app/assets/javascripts/sunrise/plugins.js +5 -0
  284. data/app/assets/javascripts/sunrise/statistics.js.coffee +576 -0
  285. data/app/assets/javascripts/utils/cookie_policy.js.coffee +85 -0
  286. data/app/assets/javascripts/utils/copyright_link.js.coffee +32 -0
  287. data/app/assets/javascripts/utils/force_redirect.js.coffee +57 -0
  288. data/app/assets/javascripts/utils/lazy.raw_accordion.js.coffee +19 -0
  289. data/app/assets/javascripts/utils/load_more_btn.js.coffee +51 -0
  290. data/app/assets/javascripts/utils/owl_carousel_pipe.js.coffee +11 -0
  291. data/app/assets/javascripts/utils/simple_quiz.js.coffee +78 -0
  292. data/app/assets/javascripts/writers/application.js +2 -0
  293. data/app/assets/javascripts/writers/lazy_router.js.coffee +58 -0
  294. data/app/assets/javascripts/writers/writers_filter.js.coffee +80 -0
  295. data/app/assets/stylesheets/cabinet.css +3 -0
  296. data/app/assets/stylesheets/cabinet/_variables.scss +69 -0
  297. data/app/assets/stylesheets/cabinet/base.scss +14 -0
  298. data/app/assets/stylesheets/cabinet/desktop/_layout.scss +544 -0
  299. data/app/assets/stylesheets/cabinet/desktop/_main.scss +42 -0
  300. data/app/assets/stylesheets/cabinet/desktop/parts/_affilate_program.scss +771 -0
  301. data/app/assets/stylesheets/cabinet/desktop/parts/_balance.scss +62 -0
  302. data/app/assets/stylesheets/cabinet/desktop/parts/_discounts.scss +245 -0
  303. data/app/assets/stylesheets/cabinet/desktop/parts/_extras.scss +139 -0
  304. data/app/assets/stylesheets/cabinet/desktop/parts/_feedbacks.scss +1939 -0
  305. data/app/assets/stylesheets/cabinet/desktop/parts/_generated_discount.scss +258 -0
  306. data/app/assets/stylesheets/cabinet/desktop/parts/_issues.scss +578 -0
  307. data/app/assets/stylesheets/cabinet/desktop/parts/_my_order.scss +524 -0
  308. data/app/assets/stylesheets/cabinet/desktop/parts/_new_order.scss +1422 -0
  309. data/app/assets/stylesheets/cabinet/desktop/parts/_order_view.scss +984 -0
  310. data/app/assets/stylesheets/cabinet/desktop/parts/_payments.scss +298 -0
  311. data/app/assets/stylesheets/cabinet/desktop/parts/_settings.scss +317 -0
  312. data/app/assets/stylesheets/cabinet/desktop/popups/_affilate_program.scss +112 -0
  313. data/app/assets/stylesheets/cabinet/desktop/popups/_amex.scss +35 -0
  314. data/app/assets/stylesheets/cabinet/desktop/popups/_attention.scss +53 -0
  315. data/app/assets/stylesheets/cabinet/desktop/popups/_choose_language.scss +174 -0
  316. data/app/assets/stylesheets/cabinet/desktop/popups/_feedback.scss +265 -0
  317. data/app/assets/stylesheets/cabinet/desktop/popups/_settings.scss +145 -0
  318. data/app/assets/stylesheets/cabinet/desktop/popups/_uploader.scss +612 -0
  319. data/app/assets/stylesheets/cabinet/desktop/ui/_datepicker.scss +157 -0
  320. data/app/assets/stylesheets/cabinet/desktop/ui/_forms.scss +424 -0
  321. data/app/assets/stylesheets/cabinet/desktop/ui/_nanoscroller.scss +83 -0
  322. data/app/assets/stylesheets/cabinet/desktop/ui/_popups.scss +42 -0
  323. data/app/assets/stylesheets/cabinet/desktop/ui/_radio_buttons.scss +579 -0
  324. data/app/assets/stylesheets/cabinet/desktop/ui/_rating.scss +59 -0
  325. data/app/assets/stylesheets/cabinet/desktop/ui/_select2.scss +596 -0
  326. data/app/assets/stylesheets/cabinet/desktop/ui/_spinner.scss +91 -0
  327. data/app/assets/stylesheets/cabinet/desktop/ui/_table.scss +324 -0
  328. data/app/assets/stylesheets/cabinet/desktop/ui/_tabs.scss +164 -0
  329. data/app/assets/stylesheets/cabinet/desktop/ui/_tooltipster.scss +34 -0
  330. data/app/assets/stylesheets/cabinet/desktop/widgets/_chat.scss +195 -0
  331. data/app/assets/stylesheets/cabinet/desktop/widgets/_life_time.scss +136 -0
  332. data/app/assets/stylesheets/cabinet/desktop/widgets/_one_time.scss +141 -0
  333. data/app/assets/stylesheets/cabinet/desktop/widgets/_order_summary.scss +339 -0
  334. data/app/assets/stylesheets/cabinet/desktop/widgets/_payments_security.scss +60 -0
  335. data/app/assets/stylesheets/cabinet/mixins/_border-radius.scss +25 -0
  336. data/app/assets/stylesheets/cabinet/mixins/_box-shadow.scss +11 -0
  337. data/app/assets/stylesheets/cabinet/mixins/_buttons.scss +116 -0
  338. data/app/assets/stylesheets/cabinet/mixins/_fonts.scss +24 -0
  339. data/app/assets/stylesheets/cabinet/mixins/_gradients.scss +13 -0
  340. data/app/assets/stylesheets/cabinet/mixins/_pagination.scss +79 -0
  341. data/app/assets/stylesheets/cabinet/mixins/_rating.scss +134 -0
  342. data/app/assets/stylesheets/cabinet/mixins/_resize_uniform.scss +37 -0
  343. data/app/assets/stylesheets/cabinet/mixins/_transition.scss +5 -0
  344. data/app/assets/stylesheets/cabinet/mixins/base.scss +9 -0
  345. data/app/assets/stylesheets/cabinet/mobile/_base.scss +35 -0
  346. data/app/assets/stylesheets/cabinet/mobile/_layout.scss +50 -0
  347. data/app/assets/stylesheets/cabinet/mobile/_main.scss +33 -0
  348. data/app/assets/stylesheets/cabinet/mobile/components/_nav.scss +331 -0
  349. data/app/assets/stylesheets/cabinet/mobile/parts/_affilate_program.scss +515 -0
  350. data/app/assets/stylesheets/cabinet/mobile/parts/_discounts.scss +194 -0
  351. data/app/assets/stylesheets/cabinet/mobile/parts/_extras.scss +121 -0
  352. data/app/assets/stylesheets/cabinet/mobile/parts/_feedbacks.scss +494 -0
  353. data/app/assets/stylesheets/cabinet/mobile/parts/_generated_discount.scss +122 -0
  354. data/app/assets/stylesheets/cabinet/mobile/parts/_issues.scss +327 -0
  355. data/app/assets/stylesheets/cabinet/mobile/parts/_my_order.scss +342 -0
  356. data/app/assets/stylesheets/cabinet/mobile/parts/_new_order.scss +550 -0
  357. data/app/assets/stylesheets/cabinet/mobile/parts/_order_view.scss +344 -0
  358. data/app/assets/stylesheets/cabinet/mobile/parts/_payments.scss +198 -0
  359. data/app/assets/stylesheets/cabinet/mobile/parts/_settings.scss +158 -0
  360. data/app/assets/stylesheets/cabinet/mobile/popups/_affilate_program.scss +65 -0
  361. data/app/assets/stylesheets/cabinet/mobile/popups/_amex.scss +13 -0
  362. data/app/assets/stylesheets/cabinet/mobile/popups/_attention.scss +19 -0
  363. data/app/assets/stylesheets/cabinet/mobile/popups/_choose_language.scss +42 -0
  364. data/app/assets/stylesheets/cabinet/mobile/popups/_feedback.scss +131 -0
  365. data/app/assets/stylesheets/cabinet/mobile/popups/_settings.scss +66 -0
  366. data/app/assets/stylesheets/cabinet/mobile/popups/_uploader.scss +144 -0
  367. data/app/assets/stylesheets/cabinet/mobile/ui/_datepicker.scss +69 -0
  368. data/app/assets/stylesheets/cabinet/mobile/ui/_forms.scss +171 -0
  369. data/app/assets/stylesheets/cabinet/mobile/ui/_radio_buttons.scss +217 -0
  370. data/app/assets/stylesheets/cabinet/mobile/ui/_select2.scss +94 -0
  371. data/app/assets/stylesheets/cabinet/mobile/ui/_spinner.scss +94 -0
  372. data/app/assets/stylesheets/cabinet/mobile/ui/_table.scss +108 -0
  373. data/app/assets/stylesheets/cabinet/mobile/ui/_tabs.scss +34 -0
  374. data/app/assets/stylesheets/cabinet/mobile/widgets/_chat.scss +92 -0
  375. data/app/assets/stylesheets/cabinet/mobile/widgets/_life_time.scss +70 -0
  376. data/app/assets/stylesheets/cabinet/mobile/widgets/_one_time.scss +81 -0
  377. data/app/assets/stylesheets/cabinet/tablet/_layout.scss +46 -0
  378. data/app/assets/stylesheets/cabinet/tablet/_main.scss +29 -0
  379. data/app/assets/stylesheets/cabinet/tablet/parts/_affilate_program.scss +121 -0
  380. data/app/assets/stylesheets/cabinet/tablet/parts/_discounts.scss +39 -0
  381. data/app/assets/stylesheets/cabinet/tablet/parts/_extras.scss +56 -0
  382. data/app/assets/stylesheets/cabinet/tablet/parts/_feedbacks.scss +456 -0
  383. data/app/assets/stylesheets/cabinet/tablet/parts/_issues.scss +66 -0
  384. data/app/assets/stylesheets/cabinet/tablet/parts/_my_order.scss +76 -0
  385. data/app/assets/stylesheets/cabinet/tablet/parts/_new_order.scss +12 -0
  386. data/app/assets/stylesheets/cabinet/tablet/parts/_order_view.scss +66 -0
  387. data/app/assets/stylesheets/cabinet/tablet/parts/_settings.scss +6 -0
  388. data/app/assets/stylesheets/cabinet/tablet/popups/_uploader.scss +6 -0
  389. data/app/assets/stylesheets/cabinet/tablet/ui/_table.scss +50 -0
  390. data/app/assets/stylesheets/cabinet/tablet/ui/_tabs.scss +17 -0
  391. data/app/assets/stylesheets/cabinet/tablet/widgets/_chat.scss +74 -0
  392. data/app/assets/stylesheets/cabinet/tablet/widgets/_order_summary.scss +61 -0
  393. data/app/assets/stylesheets/ngProgress.css +28 -0
  394. data/app/assets/stylesheets/payments/application.css +0 -0
  395. data/app/assets/stylesheets/sunrise/manage_sample.scss +78 -0
  396. data/app/assets/stylesheets/sunrise/plugins.scss +140 -0
  397. data/app/assets/stylesheets/ui-kit/default/base.scss +578 -0
  398. data/app/assets/stylesheets/ui-kit/default/buttonset.scss +294 -0
  399. data/app/assets/stylesheets/ui-kit/default/errors.scss +37 -0
  400. data/app/assets/stylesheets/ui-kit/default/form_elements.scss +59 -0
  401. data/app/assets/stylesheets/ui-kit/default/mixins/base.scss +12 -0
  402. data/app/assets/stylesheets/ui-kit/default/mixins/helpers/_border_box.scss +5 -0
  403. data/app/assets/stylesheets/ui-kit/default/mixins/helpers/_border_radius.scss +21 -0
  404. data/app/assets/stylesheets/ui-kit/default/mixins/helpers/_box_shadow.scss +5 -0
  405. data/app/assets/stylesheets/ui-kit/default/mixins/helpers/_button.scss +6 -0
  406. data/app/assets/stylesheets/ui-kit/default/mixins/helpers/_gradient.scss +61 -0
  407. data/app/assets/stylesheets/ui-kit/default/mixins/helpers/_inline_block.scss +6 -0
  408. data/app/assets/stylesheets/ui-kit/default/mixins/helpers/_input.scss +19 -0
  409. data/app/assets/stylesheets/ui-kit/default/mixins/helpers/_opacity.scss +12 -0
  410. data/app/assets/stylesheets/ui-kit/default/mixins/helpers/_sizing.scss +8 -0
  411. data/app/assets/stylesheets/ui-kit/default/mixins/helpers/_text.scss +11 -0
  412. data/app/assets/stylesheets/ui-kit/default/prices.scss +307 -0
  413. data/app/assets/stylesheets/ui-kit/default/select.scss +420 -0
  414. data/app/assets/stylesheets/ui-kit/default/spinner.scss +107 -0
  415. data/app/assets/stylesheets/ui-kit/default/tabs.scss +77 -0
  416. data/app/assets/stylesheets/ui-kit/default/tooltip.scss +41 -0
  417. data/app/assets/stylesheets/ui-kit/default/uniform.scss +465 -0
  418. data/app/assets/stylesheets/ui-kit/default/uploader.scss +86 -0
  419. data/app/assets/stylesheets/ui-kit/default/variables.scss +418 -0
  420. data/app/assets/stylesheets/widgets.css +0 -0
  421. data/app/assets/swf/ZeroClipboard.swf +0 -0
  422. data/app/cells/composite/company_about.html.slim +6 -0
  423. data/app/cells/composite/company_cooperate.html.slim +7 -0
  424. data/app/cells/composite/company_location.html.slim +42 -0
  425. data/app/cells/composite/company_recent_posts.html.slim +19 -0
  426. data/app/cells/composite/company_testimonials.html.slim +16 -0
  427. data/app/cells/composite/company_values.html.slim +7 -0
  428. data/app/cells/composite/full.html.slim +9 -0
  429. data/app/cells/composite/page.html.slim +1 -0
  430. data/app/cells/composite/posts_block.html.slim +19 -0
  431. data/app/cells/composite/support_block.html.slim +12 -0
  432. data/app/cells/composite/welcome_calculator.html.slim +147 -0
  433. data/app/cells/composite/welcome_customers_testimonials.html.slim +16 -0
  434. data/app/cells/composite/welcome_our_achivements.html.slim +9 -0
  435. data/app/cells/composite/welcome_our_services.html.slim +21 -0
  436. data/app/cells/composite/welcome_our_translators.html.slim +6 -0
  437. data/app/cells/composite/welcome_ready_to_start.html.slim +6 -0
  438. data/app/cells/composite/welcome_slider.html.slim +20 -0
  439. data/app/cells/composite/welcome_why_choose_us.html.slim +10 -0
  440. data/app/cells/composite_cell.rb +150 -0
  441. data/app/cells/shared/_feature.html.erb +6 -0
  442. data/app/cells/shared/check_auth.html.slim +72 -0
  443. data/app/cells/shared/discount.html.slim +3 -0
  444. data/app/cells/shared/features.html.erb +14 -0
  445. data/app/cells/shared/footer_info.html.slim +18 -0
  446. data/app/cells/shared/footer_links.html.slim +5 -0
  447. data/app/cells/shared/footer_menu.html.slim +5 -0
  448. data/app/cells/shared/footer_services.html.slim +12 -0
  449. data/app/cells/shared/locale_menu.html.slim +11 -0
  450. data/app/cells/shared/menu.html.slim +32 -0
  451. data/app/cells/shared/phones.html.slim +11 -0
  452. data/app/cells/shared/phones_contacts.html.slim +11 -0
  453. data/app/cells/shared/phones_footer.html.slim +9 -0
  454. data/app/cells/shared/promo.html.slim +14 -0
  455. data/app/cells/shared/remote_link.html.slim +3 -0
  456. data/app/cells/shared/security_text.html.slim +7 -0
  457. data/app/cells/shared/submenu.html.slim +6 -0
  458. data/app/cells/shared_cell.rb +127 -0
  459. data/app/cells/widgets/_extra_feature.html.slim +10 -0
  460. data/app/cells/widgets/accordion.html.slim +10 -0
  461. data/app/cells/widgets/affilate_commission.html.slim +26 -0
  462. data/app/cells/widgets/affilate_scheme.html.slim +13 -0
  463. data/app/cells/widgets/cookie_policy.html.slim +12 -0
  464. data/app/cells/widgets/discounts.html.slim +6 -0
  465. data/app/cells/widgets/language_drop.html.slim +57 -0
  466. data/app/cells/widgets/parts/_badges.html.slim +5 -0
  467. data/app/cells/widgets/parts/_extras.html.slim +29 -0
  468. data/app/cells/widgets/parts/_features.html.slim +28 -0
  469. data/app/cells/widgets/parts/_order_summary.html.slim +158 -0
  470. data/app/cells/widgets/parts/_subscribe.html.slim +5 -0
  471. data/app/cells/widgets/parts/_testimonials.html.slim +23 -0
  472. data/app/cells/widgets/parts/_top_languages.html.slim +15 -0
  473. data/app/cells/widgets/prices.html.slim +4 -0
  474. data/app/cells/widgets/sidebar.html.slim +6 -0
  475. data/app/cells/widgets/single_part.html.slim +1 -0
  476. data/app/cells/widgets/tweet.html.slim +5 -0
  477. data/app/cells/widgets_cell.rb +90 -0
  478. data/app/controllers/account/attachments_controller.rb +121 -0
  479. data/app/controllers/account/base_controller.rb +22 -0
  480. data/app/controllers/account/credits_controller.rb +22 -0
  481. data/app/controllers/account/discounts_controller.rb +31 -0
  482. data/app/controllers/account/extras_controller.rb +9 -0
  483. data/app/controllers/account/feedbacks_controller.rb +109 -0
  484. data/app/controllers/account/notes_controller.rb +27 -0
  485. data/app/controllers/account/orders_controller.rb +64 -0
  486. data/app/controllers/account/passwords_controller.rb +22 -0
  487. data/app/controllers/account/phone_verifications_controller.rb +37 -0
  488. data/app/controllers/account/profiles_controller.rb +76 -0
  489. data/app/controllers/account/referrals_controller.rb +97 -0
  490. data/app/controllers/account/sessions_controller.rb +21 -0
  491. data/app/controllers/account/tickets_controller.rb +79 -0
  492. data/app/controllers/account/transactions_controller.rb +39 -0
  493. data/app/controllers/account/votes_controller.rb +21 -0
  494. data/app/controllers/account/writers_controller.rb +26 -0
  495. data/app/controllers/application_controller.rb +244 -0
  496. data/app/controllers/auth/base_controller.rb +31 -0
  497. data/app/controllers/auth/confirmations_controller.rb +49 -0
  498. data/app/controllers/auth/passwords_controller.rb +99 -0
  499. data/app/controllers/auth/sessions_controller.rb +67 -0
  500. data/app/controllers/company_controller.rb +18 -0
  501. data/app/controllers/contacts_controller.rb +18 -0
  502. data/app/controllers/data_controller.rb +110 -0
  503. data/app/controllers/downloads_controller.rb +21 -0
  504. data/app/controllers/exchange_rates_controller.rb +18 -0
  505. data/app/controllers/feature_rates_controller.rb +14 -0
  506. data/app/controllers/feedbacks_controller.rb +22 -0
  507. data/app/controllers/feeds_controller.rb +25 -0
  508. data/app/controllers/fileuploads_controller.rb +116 -0
  509. data/app/controllers/formats_controller.rb +18 -0
  510. data/app/controllers/free_quote_controller.rb +25 -0
  511. data/app/controllers/landings_controller.rb +28 -0
  512. data/app/controllers/languages_controller.rb +17 -0
  513. data/app/controllers/orders_controller.rb +39 -0
  514. data/app/controllers/pages_controller.rb +36 -0
  515. data/app/controllers/payments/base_controller.rb +44 -0
  516. data/app/controllers/payments/checkouts_controller.rb +40 -0
  517. data/app/controllers/payments/integrations_controller.rb +58 -0
  518. data/app/controllers/payments/transactions_controller.rb +47 -0
  519. data/app/controllers/paypal_controller.rb +33 -0
  520. data/app/controllers/posts_controller.rb +62 -0
  521. data/app/controllers/prices_controller.rb +15 -0
  522. data/app/controllers/questions_controller.rb +20 -0
  523. data/app/controllers/registrations_controller.rb +68 -0
  524. data/app/controllers/services_controller.rb +33 -0
  525. data/app/controllers/subscribers_controller.rb +42 -0
  526. data/app/controllers/sunrise/widgets_controller.rb +9 -0
  527. data/app/controllers/testimonials_controller.rb +65 -0
  528. data/app/controllers/welcome_controller.rb +25 -0
  529. data/app/controllers/writers_controller.rb +59 -0
  530. data/app/forms/account/billing_form.rb +39 -0
  531. data/app/forms/account/features_form.rb +37 -0
  532. data/app/forms/account/feedback_form.rb +31 -0
  533. data/app/forms/account/filter_form.rb +16 -0
  534. data/app/forms/account/mailing_form.rb +39 -0
  535. data/app/forms/account/note_form.rb +24 -0
  536. data/app/forms/account/profile_email_form.rb +17 -0
  537. data/app/forms/account/profile_form.rb +33 -0
  538. data/app/forms/account/profile_password_form.rb +20 -0
  539. data/app/forms/account/ticket_form.rb +36 -0
  540. data/app/forms/account/ticket_note_form.rb +111 -0
  541. data/app/forms/account/violation_form.rb +30 -0
  542. data/app/forms/affiliate_program/member_form.rb +35 -0
  543. data/app/forms/affiliate_program/registration_form.rb +29 -0
  544. data/app/forms/application_form.rb +57 -0
  545. data/app/forms/auth/password_new_form.rb +18 -0
  546. data/app/forms/auth/password_update_form.rb +26 -0
  547. data/app/forms/auth/session_form.rb +20 -0
  548. data/app/forms/contacts_form.rb +25 -0
  549. data/app/forms/form_data/account.rb +12 -0
  550. data/app/forms/form_data/base.rb +12 -0
  551. data/app/forms/form_data/customer.rb +37 -0
  552. data/app/forms/form_data/order.rb +56 -0
  553. data/app/forms/free_quote_form.rb +69 -0
  554. data/app/forms/order_form.rb +125 -0
  555. data/app/forms/payment_form.rb +20 -0
  556. data/app/forms/phone/confirmation_form.rb +28 -0
  557. data/app/forms/phone/verification_form.rb +22 -0
  558. data/app/forms/registration_form.rb +53 -0
  559. data/app/forms/subscribe_form.rb +26 -0
  560. data/app/helpers/account/dashboard_helper.rb +30 -0
  561. data/app/helpers/account/discounts_helper.rb +121 -0
  562. data/app/helpers/account/notes_helper.rb +4 -0
  563. data/app/helpers/account/orders_helper.rb +35 -0
  564. data/app/helpers/account/passwords_helper.rb +4 -0
  565. data/app/helpers/account/profiles_helper.rb +4 -0
  566. data/app/helpers/account/referrals_helper.rb +61 -0
  567. data/app/helpers/account/settings_helper.rb +4 -0
  568. data/app/helpers/account/tickets_helper.rb +19 -0
  569. data/app/helpers/application_helper.rb +350 -0
  570. data/app/helpers/auth/confirmations_helper.rb +4 -0
  571. data/app/helpers/auths_helper.rb +4 -0
  572. data/app/helpers/custom_helper.rb +20 -0
  573. data/app/helpers/evaluations_helper.rb +10 -0
  574. data/app/helpers/exchange_rates_helper.rb +14 -0
  575. data/app/helpers/feedbacks_helper.rb +4 -0
  576. data/app/helpers/meta_helper.rb +125 -0
  577. data/app/helpers/microdata_helper.rb +62 -0
  578. data/app/helpers/orders_helper.rb +4 -0
  579. data/app/helpers/pages_helper.rb +52 -0
  580. data/app/helpers/pagination_helper.rb +26 -0
  581. data/app/helpers/payments/integrations_helper.rb +12 -0
  582. data/app/helpers/payments/transactions_helper.rb +18 -0
  583. data/app/helpers/posts_helper.rb +4 -0
  584. data/app/helpers/prices_helper.rb +10 -0
  585. data/app/helpers/questions_helper.rb +4 -0
  586. data/app/helpers/samples_helper.rb +4 -0
  587. data/app/helpers/services_helper.rb +7 -0
  588. data/app/helpers/subscribers_helper.rb +4 -0
  589. data/app/helpers/sunrise/structure_helper.rb +25 -0
  590. data/app/helpers/sunrise/widgets_helper.rb +43 -0
  591. data/app/helpers/testimonials_helper.rb +32 -0
  592. data/app/helpers/welcome_helper.rb +4 -0
  593. data/app/helpers/writers_helper.rb +31 -0
  594. data/app/inputs/order_form_builder.rb +17 -0
  595. data/app/mailers/notifications.rb +23 -0
  596. data/app/models/affiliate_program/gender_type.rb +26 -0
  597. data/app/models/affiliate_program/marital_status.rb +26 -0
  598. data/app/models/ckeditor/asset.rb +47 -0
  599. data/app/models/ckeditor/attachment_file.rb +26 -0
  600. data/app/models/ckeditor/picture.rb +26 -0
  601. data/app/models/company_location.rb +35 -0
  602. data/app/models/content_storage.rb +69 -0
  603. data/app/models/content_widget.rb +43 -0
  604. data/app/models/cooperate_company.rb +22 -0
  605. data/app/models/country_phone.rb +25 -0
  606. data/app/models/defaults/ability.rb +23 -0
  607. data/app/models/defaults/meta_tag.rb +22 -0
  608. data/app/models/defaults/month.rb +30 -0
  609. data/app/models/defaults/position_type.rb +16 -0
  610. data/app/models/defaults/role_type.rb +10 -0
  611. data/app/models/defaults/settings.rb +40 -0
  612. data/app/models/defaults/structure.rb +130 -0
  613. data/app/models/defaults/structure_type.rb +44 -0
  614. data/app/models/defaults/user.rb +42 -0
  615. data/app/models/defaults/xml_import_type.rb +26 -0
  616. data/app/models/enums/account_type.rb +27 -0
  617. data/app/models/enums/author_role.rb +23 -0
  618. data/app/models/enums/category_type.rb +30 -0
  619. data/app/models/enums/certificate_type.rb +31 -0
  620. data/app/models/enums/commission_type.rb +39 -0
  621. data/app/models/enums/content_storage_type.rb +70 -0
  622. data/app/models/enums/coupon_type.rb +21 -0
  623. data/app/models/enums/customer_mode.rb +27 -0
  624. data/app/models/enums/dashboard_order_group.rb +61 -0
  625. data/app/models/enums/department_feature_type.rb +23 -0
  626. data/app/models/enums/discounts_page_type.rb +55 -0
  627. data/app/models/enums/extra_icon_type.rb +30 -0
  628. data/app/models/enums/feature_badge.rb +30 -0
  629. data/app/models/enums/feature_type.rb +67 -0
  630. data/app/models/enums/feedbacks_page_type.rb +44 -0
  631. data/app/models/enums/industry_type.rb +32 -0
  632. data/app/models/enums/language_type.rb +26 -0
  633. data/app/models/enums/lifetime_type.rb +58 -0
  634. data/app/models/enums/order_event_type.rb +22 -0
  635. data/app/models/enums/order_form_component.rb +21 -0
  636. data/app/models/enums/order_notification_type.rb +27 -0
  637. data/app/models/enums/payment_type.rb +86 -0
  638. data/app/models/enums/price_type.rb +58 -0
  639. data/app/models/enums/profile_page_type.rb +70 -0
  640. data/app/models/enums/report_type.rb +22 -0
  641. data/app/models/enums/service_type.rb +28 -0
  642. data/app/models/enums/sort_order.rb +43 -0
  643. data/app/models/enums/subscription_category.rb +24 -0
  644. data/app/models/enums/ticket_limit.rb +44 -0
  645. data/app/models/enums/tickets_page_type.rb +44 -0
  646. data/app/models/enums/transaction_type.rb +58 -0
  647. data/app/models/enums/urgency_type.rb +92 -0
  648. data/app/models/enums/vote_type.rb +27 -0
  649. data/app/models/enums/widget_type.rb +43 -0
  650. data/app/models/enums/writer_activity_state.rb +40 -0
  651. data/app/models/enums/writer_sort_type.rb +43 -0
  652. data/app/models/extra_feature.rb +62 -0
  653. data/app/models/feature.rb +20 -0
  654. data/app/models/features.rb +7 -0
  655. data/app/models/features/base.rb +23 -0
  656. data/app/models/features/extra_feature.rb +28 -0
  657. data/app/models/features/feature_type.rb +22 -0
  658. data/app/models/features/free_feature.rb +29 -0
  659. data/app/models/feedback_reason.rb +19 -0
  660. data/app/models/formats.rb +7 -0
  661. data/app/models/formats/category.rb +34 -0
  662. data/app/models/formats/color_theme.rb +23 -0
  663. data/app/models/formats/item.rb +32 -0
  664. data/app/models/formats/service.rb +54 -0
  665. data/app/models/location_email.rb +21 -0
  666. data/app/models/location_phone.rb +21 -0
  667. data/app/models/media/asset.rb +54 -0
  668. data/app/models/media/attachment_file.rb +31 -0
  669. data/app/models/media/avatar.rb +31 -0
  670. data/app/models/media/cover.rb +31 -0
  671. data/app/models/media/free_quote_file.rb +38 -0
  672. data/app/models/media/icon.rb +31 -0
  673. data/app/models/media/logo.rb +31 -0
  674. data/app/models/media/paper.rb +87 -0
  675. data/app/models/media/picked_file.rb +34 -0
  676. data/app/models/media/picture.rb +31 -0
  677. data/app/models/media/ref_material.rb +46 -0
  678. data/app/models/media/satellite_asset.rb +48 -0
  679. data/app/models/media/slide_cover.rb +31 -0
  680. data/app/models/media/testimonial_pic.rb +31 -0
  681. data/app/models/media/ticket_file.rb +46 -0
  682. data/app/models/popular_language.rb +20 -0
  683. data/app/models/post.rb +127 -0
  684. data/app/models/question.rb +32 -0
  685. data/app/models/question_category.rb +22 -0
  686. data/app/models/recurrent_discount.rb +49 -0
  687. data/app/models/service_feature.rb +18 -0
  688. data/app/models/service_info.rb +92 -0
  689. data/app/models/site_activity.rb +82 -0
  690. data/app/models/testimonial.rb +82 -0
  691. data/app/models/widget.rb +32 -0
  692. data/app/models/xml_import.rb +44 -0
  693. data/app/observers/cacher_observer.rb +28 -0
  694. data/app/observers/settings_observer.rb +23 -0
  695. data/app/observers/structure_observer.rb +23 -0
  696. data/app/sunrise/sunrise_company_location.rb +45 -0
  697. data/app/sunrise/sunrise_content_storage.rb +26 -0
  698. data/app/sunrise/sunrise_cooperate_company.rb +22 -0
  699. data/app/sunrise/sunrise_country_phone.rb +23 -0
  700. data/app/sunrise/sunrise_extra.rb +34 -0
  701. data/app/sunrise/sunrise_extra_feature.rb +20 -0
  702. data/app/sunrise/sunrise_feedback_reason.rb +24 -0
  703. data/app/sunrise/sunrise_format_category.rb +56 -0
  704. data/app/sunrise/sunrise_format_item.rb +29 -0
  705. data/app/sunrise/sunrise_format_service.rb +54 -0
  706. data/app/sunrise/sunrise_free_feature.rb +20 -0
  707. data/app/sunrise/sunrise_navigation.rb +32 -0
  708. data/app/sunrise/sunrise_page.rb +32 -0
  709. data/app/sunrise/sunrise_popular_language.rb +19 -0
  710. data/app/sunrise/sunrise_post.rb +41 -0
  711. data/app/sunrise/sunrise_question.rb +19 -0
  712. data/app/sunrise/sunrise_question_category.rb +17 -0
  713. data/app/sunrise/sunrise_site_activity.rb +29 -0
  714. data/app/sunrise/sunrise_structure.rb +51 -0
  715. data/app/sunrise/sunrise_testimonial.rb +40 -0
  716. data/app/sunrise/sunrise_user.rb +52 -0
  717. data/app/sunrise/sunrise_writing_directory.rb +27 -0
  718. data/app/sunrise/sunrise_xml_import.rb +21 -0
  719. data/app/uploaders/attachment_file_uploader.rb +7 -0
  720. data/app/uploaders/avatar_uploader.rb +25 -0
  721. data/app/uploaders/ckeditor_attachment_file_uploader.rb +17 -0
  722. data/app/uploaders/ckeditor_picture_uploader.rb +33 -0
  723. data/app/uploaders/cover_uploader.rb +29 -0
  724. data/app/uploaders/icon_uploader.rb +17 -0
  725. data/app/uploaders/logo_uploader.rb +21 -0
  726. data/app/uploaders/paper_uploader.rb +10 -0
  727. data/app/uploaders/picked_file_uploader.rb +11 -0
  728. data/app/uploaders/picture_uploader.rb +21 -0
  729. data/app/uploaders/public_acl_uploader.rb +10 -0
  730. data/app/uploaders/ref_material_uploader.rb +12 -0
  731. data/app/uploaders/slide_cover_uploader.rb +17 -0
  732. data/app/uploaders/testimonial_pic_uploader.rb +21 -0
  733. data/app/uploaders/ticket_file_uploader.rb +12 -0
  734. data/app/validators/email_validator.rb +35 -0
  735. data/app/views/account/_no_records.html.slim +8 -0
  736. data/app/views/account/_submenu.html.slim +68 -0
  737. data/app/views/account/discounts/_discount.html.slim +28 -0
  738. data/app/views/account/discounts/_lifetime_items.html.slim +33 -0
  739. data/app/views/account/discounts/_personal_coupon.html.slim +23 -0
  740. data/app/views/account/discounts/_progress.html.slim +31 -0
  741. data/app/views/account/discounts/_ticket.html.slim +7 -0
  742. data/app/views/account/discounts/index.html.slim +39 -0
  743. data/app/views/account/extras/_feature.html.slim +38 -0
  744. data/app/views/account/extras/index.html.slim +10 -0
  745. data/app/views/account/feedbacks/_form.html.slim +68 -0
  746. data/app/views/account/feedbacks/_pending_order.html.slim +28 -0
  747. data/app/views/account/feedbacks/_popups.html.slim +204 -0
  748. data/app/views/account/feedbacks/_static_feedback.html.slim +16 -0
  749. data/app/views/account/feedbacks/_table_mobile.html.slim +53 -0
  750. data/app/views/account/feedbacks/_writer.html.slim +295 -0
  751. data/app/views/account/feedbacks/create.json.rabl +16 -0
  752. data/app/views/account/feedbacks/index.html.slim +45 -0
  753. data/app/views/account/feedbacks/orders.json.rabl +45 -0
  754. data/app/views/account/feedbacks/show.html.slim +109 -0
  755. data/app/views/account/feedbacks/show.js.erb +2 -0
  756. data/app/views/account/notes/_form.html.slim +34 -0
  757. data/app/views/account/notes/_note.html.slim +16 -0
  758. data/app/views/account/notes/_widget.html.slim +30 -0
  759. data/app/views/account/notes/create.js.erb +9 -0
  760. data/app/views/account/notes/create.json.rabl +18 -0
  761. data/app/views/account/orders/_attachment.html.slim +14 -0
  762. data/app/views/account/orders/_details.html.slim +73 -0
  763. data/app/views/account/orders/_features.html.slim +64 -0
  764. data/app/views/account/orders/_material.html.slim +36 -0
  765. data/app/views/account/orders/_notes.html.slim +4 -0
  766. data/app/views/account/orders/_reference_materials.html.slim +105 -0
  767. data/app/views/account/orders/index.html.slim +46 -0
  768. data/app/views/account/orders/index.xlsx.xrb +20 -0
  769. data/app/views/account/orders/index_parts/_canceled.html.slim +17 -0
  770. data/app/views/account/orders/index_parts/_canceled_record.html.slim +20 -0
  771. data/app/views/account/orders/index_parts/_completed.html.slim +19 -0
  772. data/app/views/account/orders/index_parts/_completed_record.html.slim +54 -0
  773. data/app/views/account/orders/index_parts/_payment_record.html.slim +12 -0
  774. data/app/views/account/orders/index_parts/_payment_record_mobile.html.slim +25 -0
  775. data/app/views/account/orders/index_parts/_payments.html.slim +63 -0
  776. data/app/views/account/orders/index_parts/_price_with_vat_tips.html.slim +8 -0
  777. data/app/views/account/orders/index_parts/_processing.html.slim +17 -0
  778. data/app/views/account/orders/index_parts/_processing_record.html.slim +37 -0
  779. data/app/views/account/orders/part.json.rabl +37 -0
  780. data/app/views/account/orders/show.html.slim +217 -0
  781. data/app/views/account/phone_verifications/create.json.rabl +4 -0
  782. data/app/views/account/phone_verifications/update.json.rabl +3 -0
  783. data/app/views/account/profiles/_fields_about.html.slim +317 -0
  784. data/app/views/account/profiles/_fields_billing.html.slim +231 -0
  785. data/app/views/account/profiles/_fields_mailing.html.slim +60 -0
  786. data/app/views/account/profiles/_popups.html.slim +78 -0
  787. data/app/views/account/profiles/destroy.js.erb +6 -0
  788. data/app/views/account/profiles/edit.html.slim +30 -0
  789. data/app/views/account/profiles/export.js.erb +3 -0
  790. data/app/views/account/profiles/gdpr/_account_delete_confirmation.html.slim +11 -0
  791. data/app/views/account/profiles/gdpr/_account_deleted.html.slim +11 -0
  792. data/app/views/account/profiles/gdpr/_export_in_progress.html.slim +1 -0
  793. data/app/views/account/profiles/gdpr/_panel.html.slim +51 -0
  794. data/app/views/account/referrals/_code.html.slim +21 -0
  795. data/app/views/account/referrals/_commission.html.slim +14 -0
  796. data/app/views/account/referrals/_datepicker.html.slim +35 -0
  797. data/app/views/account/referrals/_form.html.slim +358 -0
  798. data/app/views/account/referrals/_menu.html.slim +10 -0
  799. data/app/views/account/referrals/_popups.html.slim +50 -0
  800. data/app/views/account/referrals/_social.html.slim +14 -0
  801. data/app/views/account/referrals/_table.html.slim +58 -0
  802. data/app/views/account/referrals/_table_mobile.html.slim +23 -0
  803. data/app/views/account/referrals/cash_out.json.rabl +6 -0
  804. data/app/views/account/referrals/data.json.rabl +29 -0
  805. data/app/views/account/referrals/index.html.slim +28 -0
  806. data/app/views/account/sessions/profile.json.rabl +13 -0
  807. data/app/views/account/sessions/show.json.rabl +13 -0
  808. data/app/views/account/tickets/_note.html.slim +25 -0
  809. data/app/views/account/tickets/_note_form.html.slim +16 -0
  810. data/app/views/account/tickets/_ticket.html.slim +9 -0
  811. data/app/views/account/tickets/create.json.rabl +11 -0
  812. data/app/views/account/tickets/create_note.js.erb +19 -0
  813. data/app/views/account/tickets/data.json.rabl +10 -0
  814. data/app/views/account/tickets/index.html.slim +42 -0
  815. data/app/views/account/tickets/new.html.slim +137 -0
  816. data/app/views/account/tickets/show.html.slim +63 -0
  817. data/app/views/account/transactions/add_features.json.rabl +11 -0
  818. data/app/views/account/transactions/features.json.rabl +44 -0
  819. data/app/views/account/transactions/pending_features.json.rabl +34 -0
  820. data/app/views/account/transactions/update.json.rabl +11 -0
  821. data/app/views/bloggers/_blogger.html.slim +22 -0
  822. data/app/views/content_widgets/button_order.html.slim +1 -0
  823. data/app/views/data/check_discount.json.rabl +3 -0
  824. data/app/views/data/countries.json.rabl +10 -0
  825. data/app/views/data/feedback_reasons.json.rabl +3 -0
  826. data/app/views/data/languages.json.rabl +17 -0
  827. data/app/views/data/payment_rates.json.rabl +10 -0
  828. data/app/views/data/rate_convertions.json.rabl +8 -0
  829. data/app/views/data/rate_currencies.json.rabl +6 -0
  830. data/app/views/data/rates.json.rabl +121 -0
  831. data/app/views/extras/_extra_feature.html.slim +20 -0
  832. data/app/views/feedbacks/_form.html.slim +115 -0
  833. data/app/views/feedbacks/create.js.erb +5 -0
  834. data/app/views/feeds/index.atom.builder +14 -0
  835. data/app/views/fileuploads/_uploader_default.html.slim +209 -0
  836. data/app/views/fileuploads/_uploader_web_file.html.slim +90 -0
  837. data/app/views/fileuploads/_uploader_web_link.html.slim +96 -0
  838. data/app/views/fileuploads/check.json.rabl +12 -0
  839. data/app/views/fileuploads/destroy.json.rabl +3 -0
  840. data/app/views/fileuploads/upload.json.rabl +27 -0
  841. data/app/views/free_quote/_form.html.slim +173 -0
  842. data/app/views/free_quote/_header_form.html.slim +138 -0
  843. data/app/views/free_quote/create.json.rabl +5 -0
  844. data/app/views/kaminari/cabinet_default/_first_page.html.slim +10 -0
  845. data/app/views/kaminari/cabinet_default/_gap.html.slim +9 -0
  846. data/app/views/kaminari/cabinet_default/_last_page.html.slim +10 -0
  847. data/app/views/kaminari/cabinet_default/_next_page.html.slim +10 -0
  848. data/app/views/kaminari/cabinet_default/_page.html.slim +16 -0
  849. data/app/views/kaminari/cabinet_default/_paginator.html.slim +30 -0
  850. data/app/views/kaminari/cabinet_default/_per_page.html.slim +34 -0
  851. data/app/views/kaminari/cabinet_default/_prev_page.html.slim +10 -0
  852. data/app/views/kaminari/table_pagination/_first_page.html.slim +10 -0
  853. data/app/views/kaminari/table_pagination/_gap.html.slim +9 -0
  854. data/app/views/kaminari/table_pagination/_last_page.html.slim +10 -0
  855. data/app/views/kaminari/table_pagination/_next_page.html.slim +10 -0
  856. data/app/views/kaminari/table_pagination/_page.html.slim +12 -0
  857. data/app/views/kaminari/table_pagination/_paginator.html.slim +21 -0
  858. data/app/views/kaminari/table_pagination/_per_page.html.slim +33 -0
  859. data/app/views/kaminari/table_pagination/_prev_page.html.slim +10 -0
  860. data/app/views/languages/_form.html.slim +61 -0
  861. data/app/views/notifications/new_feedback.text.erb +7 -0
  862. data/app/views/notifications/new_testimonial.text.erb +7 -0
  863. data/app/views/orders/_form.html.slim +25 -0
  864. data/app/views/orders/_form_customer.html.slim +303 -0
  865. data/app/views/orders/_popup_choose_languages.html.slim +57 -0
  866. data/app/views/orders/_popups.html.slim +26 -0
  867. data/app/views/orders/_step_1.html.slim +456 -0
  868. data/app/views/orders/_step_2.html.slim +197 -0
  869. data/app/views/orders/_step_3.html.slim +96 -0
  870. data/app/views/orders/_uploader.html.slim +15 -0
  871. data/app/views/orders/create.json.rabl +10 -0
  872. data/app/views/pages/_discount_diagram_item.html.slim +6 -0
  873. data/app/views/pages/_ticket.html.slim +6 -0
  874. data/app/views/pages/discounts.html.slim +36 -0
  875. data/app/views/payments/checkouts/show.html.slim +51 -0
  876. data/app/views/payments/integrations/_affiliate_terms.html.slim +14 -0
  877. data/app/views/payments/integrations/_ecommerce.html.slim +42 -0
  878. data/app/views/payments/integrations/_evaluation_terms.html.slim +2 -0
  879. data/app/views/payments/integrations/_fail_terms.html.slim +6 -0
  880. data/app/views/payments/integrations/_success_terms.html.slim +5 -0
  881. data/app/views/payments/integrations/_wire_transfer_terms.html.slim +15 -0
  882. data/app/views/payments/integrations/affiliate.html.slim +16 -0
  883. data/app/views/payments/integrations/fail.html.slim +17 -0
  884. data/app/views/payments/integrations/providers/credit_card.html.erb +45 -0
  885. data/app/views/payments/integrations/providers/paypal.html.erb +45 -0
  886. data/app/views/payments/integrations/providers/wire_transfer.html.slim +17 -0
  887. data/app/views/payments/integrations/success.html.slim +39 -0
  888. data/app/views/payments/transactions/_details.html.slim +72 -0
  889. data/app/views/payments/transactions/_form.html.slim +40 -0
  890. data/app/views/payments/transactions/_menu.html.slim +12 -0
  891. data/app/views/payments/transactions/_payment.html.slim +54 -0
  892. data/app/views/payments/transactions/features.json.rabl +21 -0
  893. data/app/views/payments/transactions/show.html.slim +112 -0
  894. data/app/views/payments/transactions/show.json.rabl +44 -0
  895. data/app/views/payments/transactions/update.json.rabl +10 -0
  896. data/app/views/prices/_form.html.slim +117 -0
  897. data/app/views/registrations/_form.html.slim +14 -0
  898. data/app/views/registrations/_form_fields.html.slim +233 -0
  899. data/app/views/registrations/create.json.rabl +7 -0
  900. data/app/views/share/_affiliate_meta.html.slim +4 -0
  901. data/app/views/shared/404.text.erb +2 -0
  902. data/app/views/shared/_open_graph.html.slim +22 -0
  903. data/app/views/shared/json_microdata/_about_company.json.erb +14 -0
  904. data/app/views/shared/json_microdata/_about_us.json.erb +25 -0
  905. data/app/views/shared/json_microdata/_blog.json.erb +24 -0
  906. data/app/views/shared/json_microdata/_breadcrumbs.json.erb +14 -0
  907. data/app/views/sunrise/manager/_field.html.slim +43 -0
  908. data/app/views/sunrise/manager/_price_form.html.slim +121 -0
  909. data/app/views/sunrise/manager/samples/_form.html.slim +54 -0
  910. data/app/views/sunrise/manager/samples/_helper.html.slim +219 -0
  911. data/app/views/sunrise/manager/samples/edit.html.slim +2 -0
  912. data/app/views/sunrise/manager/samples/new.html.slim +2 -0
  913. data/app/views/sunrise/manager/show.html.slim +47 -0
  914. data/app/views/sunrise/manager/structures/tree/_record.html.erb +24 -0
  915. data/app/views/sunrise/settings/_form.html.erb +35 -0
  916. data/app/views/sunrise/shared/_parent.html.slim +8 -0
  917. data/app/views/sunrise/widgets/_header.html.erb +9 -0
  918. data/app/views/sunrise/widgets/index.html.slim +65 -0
  919. data/app/views/uploader/files/_container.html.erb +58 -0
  920. data/app/views/uploader/files/_download.html.erb +30 -0
  921. data/app/views/uploader/files/_upload.html.erb +9 -0
  922. data/app/views/uploader/ticket_files/_container.html.erb +101 -0
  923. data/app/views/uploader/ticket_files/_download.html.erb +28 -0
  924. data/app/views/uploader/ticket_files/_upload.html.erb +10 -0
  925. data/config/locales/de.yml +16 -0
  926. data/config/locales/defaults/de.yml +17 -0
  927. data/config/locales/defaults/es.yml +214 -0
  928. data/config/locales/devise/de.yml +60 -0
  929. data/config/locales/devise/en.yml +59 -0
  930. data/config/locales/devise/es.yml +55 -0
  931. data/config/locales/devise/ru.yml +64 -0
  932. data/config/locales/devise/uk.yml +62 -0
  933. data/config/locales/en.yml +1640 -0
  934. data/config/locales/es.yml +16 -0
  935. data/config/locales/ru.yml +1510 -0
  936. data/config/locales/sunrise/de.yml +318 -0
  937. data/config/locales/sunrise/en.yml +536 -0
  938. data/config/locales/sunrise/es.yml +318 -0
  939. data/config/locales/sunrise/uk.yml +550 -0
  940. data/config/locales/uk.yml +1515 -0
  941. data/config/routes.rb +292 -0
  942. data/db/crm_db.mwb +0 -0
  943. data/db/crm_db.mwb.bak +0 -0
  944. data/db/migrate/20130701092429_create_assets.sunrise.rb +33 -0
  945. data/db/migrate/20130701092430_create_structures.sunrise.rb +31 -0
  946. data/db/migrate/20130701092431_create_users.sunrise.rb +62 -0
  947. data/db/migrate/20130701092432_create_settings.sunrise.rb +20 -0
  948. data/db/migrate/20130701092447_create_page_parts.page_parts_engine.rb +23 -0
  949. data/db/migrate/20130701092458_create_meta_tags.meta_manager_engine.rb +24 -0
  950. data/db/migrate/20130701092511_create_activities.rb +26 -0
  951. data/db/migrate/20130701140534_create_questions.rb +16 -0
  952. data/db/migrate/20130702133335_create_posts.rb +22 -0
  953. data/db/migrate/20130702155825_create_categories.rb +13 -0
  954. data/db/migrate/20130703074532_setup_hstore.rb +11 -0
  955. data/db/migrate/20130703074618_create_samples.rb +19 -0
  956. data/db/migrate/20130703101316_create_testimonials.rb +17 -0
  957. data/db/migrate/20130705091058_create_feedbacks.rb +14 -0
  958. data/db/migrate/20130708111050_create_xml_imports.rb +13 -0
  959. data/db/migrate/20130715144809_create_ckeditor_assets.rb +28 -0
  960. data/db/migrate/20130719063432_add_samples_fields.rb +15 -0
  961. data/db/migrate/20130719065006_create_papper_styles.rb +12 -0
  962. data/db/migrate/20130719065026_create_academic_levels.rb +12 -0
  963. data/db/migrate/20130719075738_create_question_types.rb +11 -0
  964. data/db/migrate/20130719130021_create_subject_areas.rb +14 -0
  965. data/db/migrate/20140411000000_create_features.rb +15 -0
  966. data/db/migrate/20140411000001_create_site_activities.rb +21 -0
  967. data/db/migrate/20140416000001_add_site_activities_fields.rb +8 -0
  968. data/db/migrate/20140801000001_create_country_phones.rb +15 -0
  969. data/db/migrate/20140806000001_create_widgets.rb +19 -0
  970. data/db/migrate/201408110000001_add_testimonials_fields.rb +8 -0
  971. data/db/migrate/20140818000001_add_assets_public_token_field.rb +10 -0
  972. data/db/migrate/20140925454500_create_extra_features.rb +17 -0
  973. data/db/migrate/20141022454500_create_extra_feature_item.rb +19 -0
  974. data/db/migrate/20141226133000_create_bloggers.rb +21 -0
  975. data/db/migrate/20150603111900_create_writing_directories.rb +22 -0
  976. data/db/migrate/20150723180200_create_site_votes.rb +14 -0
  977. data/db/migrate/20151103143600_add_posts_is_no_widgets_field.rb +7 -0
  978. data/lib/carrierwave/config.rb +36 -0
  979. data/lib/carrierwave/storage/translation_crm.rb +42 -0
  980. data/lib/carrierwave/translation_crm.rb +16 -0
  981. data/lib/json_api_client/utils.rb +29 -0
  982. data/lib/tasks/data.rake +21 -0
  983. data/lib/tasks/fake.rake +277 -0
  984. data/lib/tasks/test.rake +13 -0
  985. data/lib/translation_cms.rb +277 -0
  986. data/lib/translation_cms/api/attachment.rb +23 -0
  987. data/lib/translation_cms/api/base.rb +88 -0
  988. data/lib/translation_cms/api/cancel_reason.rb +8 -0
  989. data/lib/translation_cms/api/category.rb +20 -0
  990. data/lib/translation_cms/api/certificate.rb +20 -0
  991. data/lib/translation_cms/api/clear_cache.rb +20 -0
  992. data/lib/translation_cms/api/customer.rb +187 -0
  993. data/lib/translation_cms/api/customer_notification.rb +49 -0
  994. data/lib/translation_cms/api/customers/affiliate_program/base.rb +14 -0
  995. data/lib/translation_cms/api/customers/affiliate_program/commission.rb +15 -0
  996. data/lib/translation_cms/api/customers/affiliate_program/member.rb +31 -0
  997. data/lib/translation_cms/api/customers/base.rb +11 -0
  998. data/lib/translation_cms/api/customers/billing_address.rb +52 -0
  999. data/lib/translation_cms/api/customers/department.rb +24 -0
  1000. data/lib/translation_cms/api/customers/discounts/base.rb +13 -0
  1001. data/lib/translation_cms/api/customers/discounts/coupon.rb +23 -0
  1002. data/lib/translation_cms/api/customers/discounts/lifetime.rb +20 -0
  1003. data/lib/translation_cms/api/customers/discounts/personal_coupon.rb +21 -0
  1004. data/lib/translation_cms/api/customers/feature.rb +53 -0
  1005. data/lib/translation_cms/api/customers/feedback.rb +11 -0
  1006. data/lib/translation_cms/api/customers/feedback_order_feedback.rb +13 -0
  1007. data/lib/translation_cms/api/customers/feedbacks/base.rb +13 -0
  1008. data/lib/translation_cms/api/customers/feedbacks/order.rb +16 -0
  1009. data/lib/translation_cms/api/customers/feedbacks/writer.rb +47 -0
  1010. data/lib/translation_cms/api/customers/letter_type.rb +23 -0
  1011. data/lib/translation_cms/api/customers/note.rb +35 -0
  1012. data/lib/translation_cms/api/customers/notification.rb +26 -0
  1013. data/lib/translation_cms/api/customers/order.rb +86 -0
  1014. data/lib/translation_cms/api/customers/payment.rb +56 -0
  1015. data/lib/translation_cms/api/customers/payment_transaction.rb +24 -0
  1016. data/lib/translation_cms/api/customers/personal_coupon.rb +10 -0
  1017. data/lib/translation_cms/api/customers/phone_verifications.rb +14 -0
  1018. data/lib/translation_cms/api/customers/profile.rb +47 -0
  1019. data/lib/translation_cms/api/customers/reference_material.rb +28 -0
  1020. data/lib/translation_cms/api/customers/subject_query.rb +16 -0
  1021. data/lib/translation_cms/api/customers/ticket.rb +69 -0
  1022. data/lib/translation_cms/api/customers/ticket_note.rb +25 -0
  1023. data/lib/translation_cms/api/customers/violation.rb +11 -0
  1024. data/lib/translation_cms/api/customers/writer.rb +26 -0
  1025. data/lib/translation_cms/api/discounts/base.rb +11 -0
  1026. data/lib/translation_cms/api/discounts/lifetime.rb +18 -0
  1027. data/lib/translation_cms/api/discounts/ticket.rb +15 -0
  1028. data/lib/translation_cms/api/free_quote.rb +8 -0
  1029. data/lib/translation_cms/api/industry_expertise.rb +20 -0
  1030. data/lib/translation_cms/api/language.rb +32 -0
  1031. data/lib/translation_cms/api/logger.rb +16 -0
  1032. data/lib/translation_cms/api/materials/attachment.rb +97 -0
  1033. data/lib/translation_cms/api/materials/base.rb +23 -0
  1034. data/lib/translation_cms/api/materials/text.rb +10 -0
  1035. data/lib/translation_cms/api/materials/ticket_attachment.rb +20 -0
  1036. data/lib/translation_cms/api/materials/weburl.rb +10 -0
  1037. data/lib/translation_cms/api/order.rb +109 -0
  1038. data/lib/translation_cms/api/order_event.rb +22 -0
  1039. data/lib/translation_cms/api/order_feature.rb +26 -0
  1040. data/lib/translation_cms/api/order_package.rb +47 -0
  1041. data/lib/translation_cms/api/order_translation.rb +13 -0
  1042. data/lib/translation_cms/api/paginator.rb +30 -0
  1043. data/lib/translation_cms/api/password.rb +12 -0
  1044. data/lib/translation_cms/api/payment.rb +50 -0
  1045. data/lib/translation_cms/api/payments/checkout.rb +12 -0
  1046. data/lib/translation_cms/api/profile/base.rb +12 -0
  1047. data/lib/translation_cms/api/profile/confirmation.rb +10 -0
  1048. data/lib/translation_cms/api/profile/control.rb +19 -0
  1049. data/lib/translation_cms/api/profile/export.rb +41 -0
  1050. data/lib/translation_cms/api/rates/base.rb +14 -0
  1051. data/lib/translation_cms/api/rates/certificate.rb +19 -0
  1052. data/lib/translation_cms/api/rates/commission.rb +31 -0
  1053. data/lib/translation_cms/api/rates/currency.rb +30 -0
  1054. data/lib/translation_cms/api/rates/feature.rb +32 -0
  1055. data/lib/translation_cms/api/rates/language.rb +13 -0
  1056. data/lib/translation_cms/api/rates/service.rb +82 -0
  1057. data/lib/translation_cms/api/rates/urgency.rb +13 -0
  1058. data/lib/translation_cms/api/rates/work_capacity.rb +15 -0
  1059. data/lib/translation_cms/api/real_ip.rb +19 -0
  1060. data/lib/translation_cms/api/report.rb +19 -0
  1061. data/lib/translation_cms/api/request.rb +39 -0
  1062. data/lib/translation_cms/api/requestor.rb +16 -0
  1063. data/lib/translation_cms/api/satellite_attachment.rb +12 -0
  1064. data/lib/translation_cms/api/satellite_secret.rb +31 -0
  1065. data/lib/translation_cms/api/service.rb +34 -0
  1066. data/lib/translation_cms/api/session.rb +21 -0
  1067. data/lib/translation_cms/api/setting.rb +23 -0
  1068. data/lib/translation_cms/api/subscriber.rb +10 -0
  1069. data/lib/translation_cms/api/translator.rb +11 -0
  1070. data/lib/translation_cms/api/uploader.rb +59 -0
  1071. data/lib/translation_cms/api/writer.rb +58 -0
  1072. data/lib/translation_cms/api/writer_language.rb +15 -0
  1073. data/lib/translation_cms/api_struct.rb +11 -0
  1074. data/lib/translation_cms/authenticatable.rb +79 -0
  1075. data/lib/translation_cms/authenticate.rb +45 -0
  1076. data/lib/translation_cms/country.rb +53 -0
  1077. data/lib/translation_cms/engine.rb +96 -0
  1078. data/lib/translation_cms/failure_app.rb +13 -0
  1079. data/lib/translation_cms/google_drive/document.rb +111 -0
  1080. data/lib/translation_cms/handle_invalid_percent_encoding.rb +43 -0
  1081. data/lib/translation_cms/hooks/storage.rb +30 -0
  1082. data/lib/translation_cms/humanize_fields.rb +104 -0
  1083. data/lib/translation_cms/import/base.rb +74 -0
  1084. data/lib/translation_cms/import/post.rb +50 -0
  1085. data/lib/translation_cms/inline_asset.rb +34 -0
  1086. data/lib/translation_cms/order_form.rb +50 -0
  1087. data/lib/translation_cms/paypal_express.rb +59 -0
  1088. data/lib/translation_cms/routers/blogger_router.rb +32 -0
  1089. data/lib/translation_cms/routers/free_quote_router.rb +30 -0
  1090. data/lib/translation_cms/routers/landing_pages_router.rb +31 -0
  1091. data/lib/translation_cms/routers/posts_router.rb +37 -0
  1092. data/lib/translation_cms/routers/redirect_router.rb +26 -0
  1093. data/lib/translation_cms/routers/service_router.rb +38 -0
  1094. data/lib/translation_cms/routers/specific_pages_router.rb +39 -0
  1095. data/lib/translation_cms/routers/testimonials_router.rb +27 -0
  1096. data/lib/translation_cms/routers/writer_router.rb +45 -0
  1097. data/lib/translation_cms/slug.rb +20 -0
  1098. data/lib/translation_cms/spec_helper.rb +46 -0
  1099. data/lib/translation_cms/strategies/access_token.rb +25 -0
  1100. data/lib/translation_cms/strategies/migration_token.rb +29 -0
  1101. data/lib/translation_cms/sync_asset_destroyer.rb +55 -0
  1102. data/lib/translation_cms/taggable.rb +71 -0
  1103. data/lib/translation_cms/utils.rb +77 -0
  1104. data/lib/translation_cms/version.rb +5 -0
  1105. data/lib/translation_cms/white_list.rb +726 -0
  1106. data/spec/controllers/auth/confirmations_controller_spec.rb +19 -0
  1107. data/spec/controllers/auth/passwords_controller_spec.rb +68 -0
  1108. data/spec/controllers/auth/sessions_controller_spec.rb +28 -0
  1109. data/spec/controllers/company_controller_spec.rb +31 -0
  1110. data/spec/controllers/contacts_controller_spec.rb +31 -0
  1111. data/spec/controllers/formats_controller_spec.rb +31 -0
  1112. data/spec/controllers/languages_controller_spec.rb +31 -0
  1113. data/spec/controllers/pages_controller_spec.rb +51 -0
  1114. data/spec/controllers/posts_controller_spec.rb +67 -0
  1115. data/spec/controllers/prices_controller_spec.rb +31 -0
  1116. data/spec/controllers/questions_controller_spec.rb +44 -0
  1117. data/spec/controllers/services_controller_spec.rb +79 -0
  1118. data/spec/controllers/subscribers_controller_spec.rb +49 -0
  1119. data/spec/controllers/testimonials_contoller_spec.rb +31 -0
  1120. data/spec/controllers/welcome_controller_spec.rb +64 -0
  1121. data/spec/controllers/writers_controller_spec.rb +53 -0
  1122. data/spec/factories/account.rb +32 -0
  1123. data/spec/factories/country_phone.rb +8 -0
  1124. data/spec/factories/customer.rb +32 -0
  1125. data/spec/factories/feature.rb +8 -0
  1126. data/spec/factories/order.rb +14 -0
  1127. data/spec/factories/post.rb +11 -0
  1128. data/spec/factories/question.rb +8 -0
  1129. data/spec/factories/returning_customer.rb +37 -0
  1130. data/spec/factories/structure.rb +111 -0
  1131. data/spec/factories/testimonial.rb +15 -0
  1132. data/spec/factories/user.rb +15 -0
  1133. data/spec/factories/webmocks/academic_levels.json +86 -0
  1134. data/spec/factories/webmocks/account/activities.json +14 -0
  1135. data/spec/factories/webmocks/account/affilate_commisions.json +11 -0
  1136. data/spec/factories/webmocks/account/affilate_program.json +19 -0
  1137. data/spec/factories/webmocks/account/auth.json +28 -0
  1138. data/spec/factories/webmocks/account/auth_fail.json +5 -0
  1139. data/spec/factories/webmocks/account/changed_profile.json +15 -0
  1140. data/spec/factories/webmocks/account/completed_orders.json +211 -0
  1141. data/spec/factories/webmocks/account/confirm_email.json +1 -0
  1142. data/spec/factories/webmocks/account/confirmation_second_step.json +28 -0
  1143. data/spec/factories/webmocks/account/credits.json +22 -0
  1144. data/spec/factories/webmocks/account/customer.json +16 -0
  1145. data/spec/factories/webmocks/account/discount_lifetimes.json +32 -0
  1146. data/spec/factories/webmocks/account/discount_tickets.json +18 -0
  1147. data/spec/factories/webmocks/account/discounts.json +1 -0
  1148. data/spec/factories/webmocks/account/feedbacks.json +11 -0
  1149. data/spec/factories/webmocks/account/not_completed_orders.json +178 -0
  1150. data/spec/factories/webmocks/account/not_registered_affiliate.json +1 -0
  1151. data/spec/factories/webmocks/account/note.json +20 -0
  1152. data/spec/factories/webmocks/account/order.json +192 -0
  1153. data/spec/factories/webmocks/account/password_update.json +10 -0
  1154. data/spec/factories/webmocks/account/payment.json +60 -0
  1155. data/spec/factories/webmocks/account/posted_feedback.json +9 -0
  1156. data/spec/factories/webmocks/account/profile_update.json +14 -0
  1157. data/spec/factories/webmocks/account/session.json +16 -0
  1158. data/spec/factories/webmocks/account/transactions.json +22 -0
  1159. data/spec/factories/webmocks/account/user_scenario_order.json +193 -0
  1160. data/spec/factories/webmocks/account/votes.json +4 -0
  1161. data/spec/factories/webmocks/assigment_types.json +579 -0
  1162. data/spec/factories/webmocks/customer.json +55 -0
  1163. data/spec/factories/webmocks/discount.json +13 -0
  1164. data/spec/factories/webmocks/evaluations.json +16 -0
  1165. data/spec/factories/webmocks/feature_rates.json +158 -0
  1166. data/spec/factories/webmocks/feedback.json +8 -0
  1167. data/spec/factories/webmocks/industry_expertises.json +119 -0
  1168. data/spec/factories/webmocks/invalid_customer.json +15 -0
  1169. data/spec/factories/webmocks/languages.json +59 -0
  1170. data/spec/factories/webmocks/order.json +16 -0
  1171. data/spec/factories/webmocks/paper_formats.json +52 -0
  1172. data/spec/factories/webmocks/payment_types.json +20 -0
  1173. data/spec/factories/webmocks/payments/features.json +62 -0
  1174. data/spec/factories/webmocks/prices.json +21252 -0
  1175. data/spec/factories/webmocks/random_feature.json +8 -0
  1176. data/spec/factories/webmocks/rates.json +224 -0
  1177. data/spec/factories/webmocks/resume_prices.json +18024 -0
  1178. data/spec/factories/webmocks/services.json +206 -0
  1179. data/spec/factories/webmocks/skills.json +32 -0
  1180. data/spec/factories/webmocks/subscriber.json +10 -0
  1181. data/spec/factories/webmocks/subscriber_error.json +11 -0
  1182. data/spec/factories/webmocks/testimonials.json +8 -0
  1183. data/spec/factories/webmocks/work_services.json +212 -0
  1184. data/spec/factories/webmocks/writer.json +3 -0
  1185. data/spec/factories/webmocks/writer_feedbacks.json +192 -0
  1186. data/spec/factories/webmocks/writer_levels.json +50 -0
  1187. data/spec/factories/webmocks/writer_profile.json +87 -0
  1188. data/spec/factories/webmocks/writers.json +48 -0
  1189. data/spec/features/user_story_spec.rb +121 -0
  1190. data/spec/models/company_location_spec.rb +21 -0
  1191. data/spec/models/cooperate_company_spec.rb +19 -0
  1192. data/spec/models/country_phone_spec.rb +21 -0
  1193. data/spec/models/formats/category_spec.rb +19 -0
  1194. data/spec/models/formats/item_spec.rb +19 -0
  1195. data/spec/models/formats/service_spec.rb +19 -0
  1196. data/spec/models/location_phone_spec.rb +20 -0
  1197. data/spec/models/taggable_item_spec.rb +80 -0
  1198. data/spec/spec_helper.rb +92 -0
  1199. data/spec/support/json_helper.rb +11 -0
  1200. data/spec/support/webmock_helper.rb +10 -0
  1201. data/spec/support/webmocks.rb +292 -0
  1202. data/vendor/assets/javascripts/countable.js +408 -0
  1203. data/vendor/assets/javascripts/cssrelpreload.js +43 -0
  1204. data/vendor/assets/javascripts/jquery.ba-throttle-debounce.js +252 -0
  1205. data/vendor/assets/javascripts/jquery.browser.js +193 -0
  1206. data/vendor/assets/javascripts/jquery.rating.js +376 -0
  1207. data/vendor/assets/javascripts/jquery.sticky-kit.min.js +9 -0
  1208. data/vendor/assets/javascripts/jquery.tooltipster.min.js +1 -0
  1209. data/vendor/assets/javascripts/loadCSS.js +79 -0
  1210. data/vendor/assets/javascripts/mustache.min.js +1 -0
  1211. data/vendor/assets/javascripts/placeholders.min.js +25 -0
  1212. data/vendor/assets/javascripts/readmore.min.js +11 -0
  1213. data/vendor/assets/javascripts/select2.full.js +6281 -0
  1214. data/vendor/assets/javascripts/select2.full.min.js +3 -0
  1215. data/vendor/assets/javascripts/shave.js +7 -0
  1216. data/vendor/assets/javascripts/social-likes.js +665 -0
  1217. data/vendor/assets/javascripts/tooltipster.bundle.min.js +2 -0
  1218. data/vendor/assets/stylesheets/select2.css +482 -0
  1219. data/vendor/assets/stylesheets/select2.min.css +1 -0
  1220. data/vendor/assets/stylesheets/tooltipster.bundle.min.css +1 -0
  1221. metadata +2486 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cf6e98d9ccfcfe444220e55e1b76c0096d138ef1414b51ea406e50a32c6799f7
4
+ data.tar.gz: c1cef17a411571df4d61bff29986d315e487cda3cf1607394b014920c94799e7
5
+ SHA512:
6
+ metadata.gz: 91b8ae43bf2c66d9068d307c991e79815abe690ea20ecf111a23e80ff0426c22092d84c0378930ea8a6edcc3a465f1f341ca3aaaf231901e652bcc3793cd479d
7
+ data.tar.gz: a81714d360e3a7040ef7d5896e6b97896860716a0ccf3d727576d0fe05d31d0fdc8b1e959be97ca4e6b8f72c6a169d8bd747a4145e84664a0d57977b139ae690
@@ -0,0 +1,20 @@
1
+ == Migrations
2
+
3
+ bundle exec rake translation_cms:install:migrations
4
+
5
+ == Tests
6
+
7
+ Run all tests:
8
+ RAILS_ENV=test bundle exec spring rake test_specs
9
+
10
+ Run specific tests:
11
+ RAILS_ENV=test bundle exec spring rake test_specs[writers]
12
+
13
+ == API
14
+
15
+ All documentation for API see here - dev.crmwordpoint.com/docs/version1/index.html
16
+
17
+ == Bundle (1.17.3)
18
+
19
+ gem install bundler -v 1.17.3 --no-rdoc --no-ri
20
+ bundle _1.17.3_ install
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rake'
4
+ require 'rake/testtask'
5
+ require 'rdoc/task'
6
+
7
+ # desc 'Default: run unit tests.'
8
+ # task default: :test
9
+ # desc 'Test the sunrise plugin.'
10
+ # Rake::TestTask.new(:test) do |t|
11
+ # t.libs << 'lib'
12
+ # t.libs << 'test'
13
+ # t.pattern = 'test/**/*_test.rb'
14
+ # t.verbose = true
15
+ # end
16
+
17
+ desc 'Generate documentation for the sunrise plugin.'
18
+ Rake::RDocTask.new(:rdoc) do |rdoc|
19
+ rdoc.rdoc_dir = 'rdoc'
20
+ rdoc.title = 'Sunrise CMS'
21
+ rdoc.options << '--line-numbers' << '--inline-source'
22
+ rdoc.rdoc_files.include('README.rdoc')
23
+ rdoc.rdoc_files.include('lib/**/*.rb')
24
+ end
@@ -0,0 +1,1031 @@
1
+ /*!
2
+ * ZeroClipboard
3
+ * The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
4
+ * Copyright (c) 2014 Jon Rohan, James M. Greene
5
+ * Licensed MIT
6
+ * http://zeroclipboard.org/
7
+ * v1.3.5
8
+ */
9
+ (function(window) {
10
+ "use strict";
11
+ var currentElement;
12
+ var flashState = {
13
+ bridge: null,
14
+ version: "0.0.0",
15
+ disabled: null,
16
+ outdated: null,
17
+ ready: null
18
+ };
19
+ var _clipData = {};
20
+ var clientIdCounter = 0;
21
+ var _clientMeta = {};
22
+ var elementIdCounter = 0;
23
+ var _elementMeta = {};
24
+ var _amdModuleId = null;
25
+ var _cjsModuleId = null;
26
+ var _swfPath = function() {
27
+ var i, jsDir, tmpJsPath, jsPath, swfPath = "ZeroClipboard.swf";
28
+ if (document.currentScript && (jsPath = document.currentScript.src)) {} else {
29
+ var scripts = document.getElementsByTagName("script");
30
+ if ("readyState" in scripts[0]) {
31
+ for (i = scripts.length; i--; ) {
32
+ if (scripts[i].readyState === "interactive" && (jsPath = scripts[i].src)) {
33
+ break;
34
+ }
35
+ }
36
+ } else if (document.readyState === "loading") {
37
+ jsPath = scripts[scripts.length - 1].src;
38
+ } else {
39
+ for (i = scripts.length; i--; ) {
40
+ tmpJsPath = scripts[i].src;
41
+ if (!tmpJsPath) {
42
+ jsDir = null;
43
+ break;
44
+ }
45
+ tmpJsPath = tmpJsPath.split("#")[0].split("?")[0];
46
+ tmpJsPath = tmpJsPath.slice(0, tmpJsPath.lastIndexOf("/") + 1);
47
+ if (jsDir == null) {
48
+ jsDir = tmpJsPath;
49
+ } else if (jsDir !== tmpJsPath) {
50
+ jsDir = null;
51
+ break;
52
+ }
53
+ }
54
+ if (jsDir !== null) {
55
+ jsPath = jsDir;
56
+ }
57
+ }
58
+ }
59
+ if (jsPath) {
60
+ jsPath = jsPath.split("#")[0].split("?")[0];
61
+ swfPath = jsPath.slice(0, jsPath.lastIndexOf("/") + 1) + swfPath;
62
+ }
63
+ return swfPath;
64
+ }();
65
+ var _camelizeCssPropName = function() {
66
+ var matcherRegex = /\-([a-z])/g, replacerFn = function(match, group) {
67
+ return group.toUpperCase();
68
+ };
69
+ return function(prop) {
70
+ return prop.replace(matcherRegex, replacerFn);
71
+ };
72
+ }();
73
+ var _getStyle = function(el, prop) {
74
+ var value, camelProp, tagName, possiblePointers, i, len;
75
+ if (window.getComputedStyle) {
76
+ value = window.getComputedStyle(el, null).getPropertyValue(prop);
77
+ } else {
78
+ camelProp = _camelizeCssPropName(prop);
79
+ if (el.currentStyle) {
80
+ value = el.currentStyle[camelProp];
81
+ } else {
82
+ value = el.style[camelProp];
83
+ }
84
+ }
85
+ if (prop === "cursor") {
86
+ if (!value || value === "auto") {
87
+ tagName = el.tagName.toLowerCase();
88
+ if (tagName === "a") {
89
+ return "pointer";
90
+ }
91
+ }
92
+ }
93
+ return value;
94
+ };
95
+ var _elementMouseOver = function(event) {
96
+ if (!event) {
97
+ event = window.event;
98
+ }
99
+ var target;
100
+ if (this !== window) {
101
+ target = this;
102
+ } else if (event.target) {
103
+ target = event.target;
104
+ } else if (event.srcElement) {
105
+ target = event.srcElement;
106
+ }
107
+ ZeroClipboard.activate(target);
108
+ };
109
+ var _addEventHandler = function(element, method, func) {
110
+ if (!element || element.nodeType !== 1) {
111
+ return;
112
+ }
113
+ if (element.addEventListener) {
114
+ element.addEventListener(method, func, false);
115
+ } else if (element.attachEvent) {
116
+ element.attachEvent("on" + method, func);
117
+ }
118
+ };
119
+ var _removeEventHandler = function(element, method, func) {
120
+ if (!element || element.nodeType !== 1) {
121
+ return;
122
+ }
123
+ if (element.removeEventListener) {
124
+ element.removeEventListener(method, func, false);
125
+ } else if (element.detachEvent) {
126
+ element.detachEvent("on" + method, func);
127
+ }
128
+ };
129
+ var _addClass = function(element, value) {
130
+ if (!element || element.nodeType !== 1) {
131
+ return element;
132
+ }
133
+ if (element.classList) {
134
+ if (!element.classList.contains(value)) {
135
+ element.classList.add(value);
136
+ }
137
+ return element;
138
+ }
139
+ if (value && typeof value === "string") {
140
+ var classNames = (value || "").split(/\s+/);
141
+ if (element.nodeType === 1) {
142
+ if (!element.className) {
143
+ element.className = value;
144
+ } else {
145
+ var className = " " + element.className + " ", setClass = element.className;
146
+ for (var c = 0, cl = classNames.length; c < cl; c++) {
147
+ if (className.indexOf(" " + classNames[c] + " ") < 0) {
148
+ setClass += " " + classNames[c];
149
+ }
150
+ }
151
+ element.className = setClass.replace(/^\s+|\s+$/g, "");
152
+ }
153
+ }
154
+ }
155
+ return element;
156
+ };
157
+ var _removeClass = function(element, value) {
158
+ if (!element || element.nodeType !== 1) {
159
+ return element;
160
+ }
161
+ if (element.classList) {
162
+ if (element.classList.contains(value)) {
163
+ element.classList.remove(value);
164
+ }
165
+ return element;
166
+ }
167
+ if (value && typeof value === "string" || value === undefined) {
168
+ var classNames = (value || "").split(/\s+/);
169
+ if (element.nodeType === 1 && element.className) {
170
+ if (value) {
171
+ var className = (" " + element.className + " ").replace(/[\n\t]/g, " ");
172
+ for (var c = 0, cl = classNames.length; c < cl; c++) {
173
+ className = className.replace(" " + classNames[c] + " ", " ");
174
+ }
175
+ element.className = className.replace(/^\s+|\s+$/g, "");
176
+ } else {
177
+ element.className = "";
178
+ }
179
+ }
180
+ }
181
+ return element;
182
+ };
183
+ var _getZoomFactor = function() {
184
+ var rect, physicalWidth, logicalWidth, zoomFactor = 1;
185
+ if (typeof document.body.getBoundingClientRect === "function") {
186
+ rect = document.body.getBoundingClientRect();
187
+ physicalWidth = rect.right - rect.left;
188
+ logicalWidth = document.body.offsetWidth;
189
+ zoomFactor = Math.round(physicalWidth / logicalWidth * 100) / 100;
190
+ }
191
+ return zoomFactor;
192
+ };
193
+ var _getDOMObjectPosition = function(obj, defaultZIndex) {
194
+ var info = {
195
+ left: 0,
196
+ top: 0,
197
+ width: 0,
198
+ height: 0,
199
+ zIndex: _getSafeZIndex(defaultZIndex) - 1
200
+ };
201
+ if (obj.getBoundingClientRect) {
202
+ var rect = obj.getBoundingClientRect();
203
+ var pageXOffset, pageYOffset, zoomFactor;
204
+ if ("pageXOffset" in window && "pageYOffset" in window) {
205
+ pageXOffset = window.pageXOffset;
206
+ pageYOffset = window.pageYOffset;
207
+ } else {
208
+ zoomFactor = _getZoomFactor();
209
+ pageXOffset = Math.round(document.documentElement.scrollLeft / zoomFactor);
210
+ pageYOffset = Math.round(document.documentElement.scrollTop / zoomFactor);
211
+ }
212
+ var leftBorderWidth = document.documentElement.clientLeft || 0;
213
+ var topBorderWidth = document.documentElement.clientTop || 0;
214
+ info.left = rect.left + pageXOffset - leftBorderWidth;
215
+ info.top = rect.top + pageYOffset - topBorderWidth;
216
+ info.width = "width" in rect ? rect.width : rect.right - rect.left;
217
+ info.height = "height" in rect ? rect.height : rect.bottom - rect.top;
218
+ }
219
+ return info;
220
+ };
221
+ var _cacheBust = function(path, options) {
222
+ var cacheBust = options == null || options && options.cacheBust === true && options.useNoCache === true;
223
+ if (cacheBust) {
224
+ return (path.indexOf("?") === -1 ? "?" : "&") + "noCache=" + new Date().getTime();
225
+ } else {
226
+ return "";
227
+ }
228
+ };
229
+ var _vars = function(options) {
230
+ var i, len, domain, str = [], domains = [], trustedOriginsExpanded = [];
231
+ if (options.trustedOrigins) {
232
+ if (typeof options.trustedOrigins === "string") {
233
+ domains.push(options.trustedOrigins);
234
+ } else if (typeof options.trustedOrigins === "object" && "length" in options.trustedOrigins) {
235
+ domains = domains.concat(options.trustedOrigins);
236
+ }
237
+ }
238
+ if (options.trustedDomains) {
239
+ if (typeof options.trustedDomains === "string") {
240
+ domains.push(options.trustedDomains);
241
+ } else if (typeof options.trustedDomains === "object" && "length" in options.trustedDomains) {
242
+ domains = domains.concat(options.trustedDomains);
243
+ }
244
+ }
245
+ if (domains.length) {
246
+ for (i = 0, len = domains.length; i < len; i++) {
247
+ if (domains.hasOwnProperty(i) && domains[i] && typeof domains[i] === "string") {
248
+ domain = _extractDomain(domains[i]);
249
+ if (!domain) {
250
+ continue;
251
+ }
252
+ if (domain === "*") {
253
+ trustedOriginsExpanded = [ domain ];
254
+ break;
255
+ }
256
+ trustedOriginsExpanded.push.apply(trustedOriginsExpanded, [ domain, "//" + domain, window.location.protocol + "//" + domain ]);
257
+ }
258
+ }
259
+ }
260
+ if (trustedOriginsExpanded.length) {
261
+ str.push("trustedOrigins=" + encodeURIComponent(trustedOriginsExpanded.join(",")));
262
+ }
263
+ if (typeof options.jsModuleId === "string" && options.jsModuleId) {
264
+ str.push("jsModuleId=" + encodeURIComponent(options.jsModuleId));
265
+ }
266
+ return str.join("&");
267
+ };
268
+ var _inArray = function(elem, array, fromIndex) {
269
+ if (typeof array.indexOf === "function") {
270
+ return array.indexOf(elem, fromIndex);
271
+ }
272
+ var i, len = array.length;
273
+ if (typeof fromIndex === "undefined") {
274
+ fromIndex = 0;
275
+ } else if (fromIndex < 0) {
276
+ fromIndex = len + fromIndex;
277
+ }
278
+ for (i = fromIndex; i < len; i++) {
279
+ if (array.hasOwnProperty(i) && array[i] === elem) {
280
+ return i;
281
+ }
282
+ }
283
+ return -1;
284
+ };
285
+ var _prepClip = function(elements) {
286
+ if (typeof elements === "string") throw new TypeError("ZeroClipboard doesn't accept query strings.");
287
+ if (!elements.length) return [ elements ];
288
+ return elements;
289
+ };
290
+ var _dispatchCallback = function(func, context, args, async) {
291
+ if (async) {
292
+ window.setTimeout(function() {
293
+ func.apply(context, args);
294
+ }, 0);
295
+ } else {
296
+ func.apply(context, args);
297
+ }
298
+ };
299
+ var _getSafeZIndex = function(val) {
300
+ var zIndex, tmp;
301
+ if (val) {
302
+ if (typeof val === "number" && val > 0) {
303
+ zIndex = val;
304
+ } else if (typeof val === "string" && (tmp = parseInt(val, 10)) && !isNaN(tmp) && tmp > 0) {
305
+ zIndex = tmp;
306
+ }
307
+ }
308
+ if (!zIndex) {
309
+ if (typeof _globalConfig.zIndex === "number" && _globalConfig.zIndex > 0) {
310
+ zIndex = _globalConfig.zIndex;
311
+ } else if (typeof _globalConfig.zIndex === "string" && (tmp = parseInt(_globalConfig.zIndex, 10)) && !isNaN(tmp) && tmp > 0) {
312
+ zIndex = tmp;
313
+ }
314
+ }
315
+ return zIndex || 0;
316
+ };
317
+ var _deprecationWarning = function(deprecatedApiName, debugEnabled) {
318
+ if (deprecatedApiName && debugEnabled !== false && typeof console !== "undefined" && console && (console.warn || console.log)) {
319
+ var deprecationWarning = "`" + deprecatedApiName + "` is deprecated. See docs for more info:\n" + " https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md#deprecations";
320
+ if (console.warn) {
321
+ console.warn(deprecationWarning);
322
+ } else {
323
+ console.log(deprecationWarning);
324
+ }
325
+ }
326
+ };
327
+ var _extend = function() {
328
+ var i, len, arg, prop, src, copy, target = arguments[0] || {};
329
+ for (i = 1, len = arguments.length; i < len; i++) {
330
+ if ((arg = arguments[i]) != null) {
331
+ for (prop in arg) {
332
+ if (arg.hasOwnProperty(prop)) {
333
+ src = target[prop];
334
+ copy = arg[prop];
335
+ if (target === copy) {
336
+ continue;
337
+ }
338
+ if (copy !== undefined) {
339
+ target[prop] = copy;
340
+ }
341
+ }
342
+ }
343
+ }
344
+ }
345
+ return target;
346
+ };
347
+ var _extractDomain = function(originOrUrl) {
348
+ if (originOrUrl == null || originOrUrl === "") {
349
+ return null;
350
+ }
351
+ originOrUrl = originOrUrl.replace(/^\s+|\s+$/g, "");
352
+ if (originOrUrl === "") {
353
+ return null;
354
+ }
355
+ var protocolIndex = originOrUrl.indexOf("//");
356
+ originOrUrl = protocolIndex === -1 ? originOrUrl : originOrUrl.slice(protocolIndex + 2);
357
+ var pathIndex = originOrUrl.indexOf("/");
358
+ originOrUrl = pathIndex === -1 ? originOrUrl : protocolIndex === -1 || pathIndex === 0 ? null : originOrUrl.slice(0, pathIndex);
359
+ if (originOrUrl && originOrUrl.slice(-4).toLowerCase() === ".swf") {
360
+ return null;
361
+ }
362
+ return originOrUrl || null;
363
+ };
364
+ var _determineScriptAccess = function() {
365
+ var _extractAllDomains = function(origins, resultsArray) {
366
+ var i, len, tmp;
367
+ if (origins != null && resultsArray[0] !== "*") {
368
+ if (typeof origins === "string") {
369
+ origins = [ origins ];
370
+ }
371
+ if (typeof origins === "object" && "length" in origins) {
372
+ for (i = 0, len = origins.length; i < len; i++) {
373
+ if (origins.hasOwnProperty(i)) {
374
+ tmp = _extractDomain(origins[i]);
375
+ if (tmp) {
376
+ if (tmp === "*") {
377
+ resultsArray.length = 0;
378
+ resultsArray.push("*");
379
+ break;
380
+ }
381
+ if (_inArray(tmp, resultsArray) === -1) {
382
+ resultsArray.push(tmp);
383
+ }
384
+ }
385
+ }
386
+ }
387
+ }
388
+ }
389
+ };
390
+ var _accessLevelLookup = {
391
+ always: "always",
392
+ samedomain: "sameDomain",
393
+ never: "never"
394
+ };
395
+ return function(currentDomain, configOptions) {
396
+ var asaLower, allowScriptAccess = configOptions.allowScriptAccess;
397
+ if (typeof allowScriptAccess === "string" && (asaLower = allowScriptAccess.toLowerCase()) && /^always|samedomain|never$/.test(asaLower)) {
398
+ return _accessLevelLookup[asaLower];
399
+ }
400
+ var swfDomain = _extractDomain(configOptions.moviePath);
401
+ if (swfDomain === null) {
402
+ swfDomain = currentDomain;
403
+ }
404
+ var trustedDomains = [];
405
+ _extractAllDomains(configOptions.trustedOrigins, trustedDomains);
406
+ _extractAllDomains(configOptions.trustedDomains, trustedDomains);
407
+ var len = trustedDomains.length;
408
+ if (len > 0) {
409
+ if (len === 1 && trustedDomains[0] === "*") {
410
+ return "always";
411
+ }
412
+ if (_inArray(currentDomain, trustedDomains) !== -1) {
413
+ if (len === 1 && currentDomain === swfDomain) {
414
+ return "sameDomain";
415
+ }
416
+ return "always";
417
+ }
418
+ }
419
+ return "never";
420
+ };
421
+ }();
422
+ var _objectKeys = function(obj) {
423
+ if (obj == null) {
424
+ return [];
425
+ }
426
+ if (Object.keys) {
427
+ return Object.keys(obj);
428
+ }
429
+ var keys = [];
430
+ for (var prop in obj) {
431
+ if (obj.hasOwnProperty(prop)) {
432
+ keys.push(prop);
433
+ }
434
+ }
435
+ return keys;
436
+ };
437
+ var _deleteOwnProperties = function(obj) {
438
+ if (obj) {
439
+ for (var prop in obj) {
440
+ if (obj.hasOwnProperty(prop)) {
441
+ delete obj[prop];
442
+ }
443
+ }
444
+ }
445
+ return obj;
446
+ };
447
+ var _safeActiveElement = function() {
448
+ try {
449
+ return document.activeElement;
450
+ } catch (err) {}
451
+ return null;
452
+ };
453
+ var _detectFlashSupport = function() {
454
+ var hasFlash = false;
455
+ if (typeof flashState.disabled === "boolean") {
456
+ hasFlash = flashState.disabled === false;
457
+ } else {
458
+ if (typeof ActiveXObject === "function") {
459
+ try {
460
+ if (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) {
461
+ hasFlash = true;
462
+ }
463
+ } catch (error) {}
464
+ }
465
+ if (!hasFlash && navigator.mimeTypes["application/x-shockwave-flash"]) {
466
+ hasFlash = true;
467
+ }
468
+ }
469
+ return hasFlash;
470
+ };
471
+ function _parseFlashVersion(flashVersion) {
472
+ return flashVersion.replace(/,/g, ".").replace(/[^0-9\.]/g, "");
473
+ }
474
+ function _isFlashVersionSupported(flashVersion) {
475
+ return parseFloat(_parseFlashVersion(flashVersion)) >= 10;
476
+ }
477
+ var ZeroClipboard = function(elements, options) {
478
+ if (!(this instanceof ZeroClipboard)) {
479
+ return new ZeroClipboard(elements, options);
480
+ }
481
+ this.id = "" + clientIdCounter++;
482
+ _clientMeta[this.id] = {
483
+ instance: this,
484
+ elements: [],
485
+ handlers: {}
486
+ };
487
+ if (elements) {
488
+ this.clip(elements);
489
+ }
490
+ if (typeof options !== "undefined") {
491
+ _deprecationWarning("new ZeroClipboard(elements, options)", _globalConfig.debug);
492
+ ZeroClipboard.config(options);
493
+ }
494
+ this.options = ZeroClipboard.config();
495
+ if (typeof flashState.disabled !== "boolean") {
496
+ flashState.disabled = !_detectFlashSupport();
497
+ }
498
+ if (flashState.disabled === false && flashState.outdated !== true) {
499
+ if (flashState.bridge === null) {
500
+ flashState.outdated = false;
501
+ flashState.ready = false;
502
+ _bridge();
503
+ }
504
+ }
505
+ };
506
+ ZeroClipboard.prototype.setText = function(newText) {
507
+ if (newText && newText !== "") {
508
+ _clipData["text/plain"] = newText;
509
+ if (flashState.ready === true && flashState.bridge && typeof flashState.bridge.setText === "function") {
510
+ flashState.bridge.setText(newText);
511
+ } else {
512
+ flashState.ready = false;
513
+ }
514
+ }
515
+ return this;
516
+ };
517
+ ZeroClipboard.prototype.setSize = function(width, height) {
518
+ if (flashState.ready === true && flashState.bridge && typeof flashState.bridge.setSize === "function") {
519
+ flashState.bridge.setSize(width, height);
520
+ } else {
521
+ flashState.ready = false;
522
+ }
523
+ return this;
524
+ };
525
+ var _setHandCursor = function(enabled) {
526
+ if (flashState.ready === true && flashState.bridge && typeof flashState.bridge.setHandCursor === "function") {
527
+ flashState.bridge.setHandCursor(enabled);
528
+ } else {
529
+ flashState.ready = false;
530
+ }
531
+ };
532
+ ZeroClipboard.prototype.destroy = function() {
533
+ this.unclip();
534
+ this.off();
535
+ delete _clientMeta[this.id];
536
+ };
537
+ var _getAllClients = function() {
538
+ var i, len, client, clients = [], clientIds = _objectKeys(_clientMeta);
539
+ for (i = 0, len = clientIds.length; i < len; i++) {
540
+ client = _clientMeta[clientIds[i]].instance;
541
+ if (client && client instanceof ZeroClipboard) {
542
+ clients.push(client);
543
+ }
544
+ }
545
+ return clients;
546
+ };
547
+ ZeroClipboard.version = "1.3.5";
548
+ var _globalConfig = {
549
+ swfPath: _swfPath,
550
+ trustedDomains: window.location.host ? [ window.location.host ] : [],
551
+ cacheBust: true,
552
+ forceHandCursor: false,
553
+ zIndex: 999999999,
554
+ debug: true,
555
+ title: null,
556
+ autoActivate: true
557
+ };
558
+ ZeroClipboard.config = function(options) {
559
+ if (typeof options === "object" && options !== null) {
560
+ _extend(_globalConfig, options);
561
+ }
562
+ if (typeof options === "string" && options) {
563
+ if (_globalConfig.hasOwnProperty(options)) {
564
+ return _globalConfig[options];
565
+ }
566
+ return;
567
+ }
568
+ var copy = {};
569
+ for (var prop in _globalConfig) {
570
+ if (_globalConfig.hasOwnProperty(prop)) {
571
+ if (typeof _globalConfig[prop] === "object" && _globalConfig[prop] !== null) {
572
+ if ("length" in _globalConfig[prop]) {
573
+ copy[prop] = _globalConfig[prop].slice(0);
574
+ } else {
575
+ copy[prop] = _extend({}, _globalConfig[prop]);
576
+ }
577
+ } else {
578
+ copy[prop] = _globalConfig[prop];
579
+ }
580
+ }
581
+ }
582
+ return copy;
583
+ };
584
+ ZeroClipboard.destroy = function() {
585
+ ZeroClipboard.deactivate();
586
+ for (var clientId in _clientMeta) {
587
+ if (_clientMeta.hasOwnProperty(clientId) && _clientMeta[clientId]) {
588
+ var client = _clientMeta[clientId].instance;
589
+ if (client && typeof client.destroy === "function") {
590
+ client.destroy();
591
+ }
592
+ }
593
+ }
594
+ var htmlBridge = _getHtmlBridge(flashState.bridge);
595
+ if (htmlBridge && htmlBridge.parentNode) {
596
+ htmlBridge.parentNode.removeChild(htmlBridge);
597
+ flashState.ready = null;
598
+ flashState.bridge = null;
599
+ }
600
+ };
601
+ ZeroClipboard.activate = function(element) {
602
+ if (currentElement) {
603
+ _removeClass(currentElement, _globalConfig.hoverClass);
604
+ _removeClass(currentElement, _globalConfig.activeClass);
605
+ }
606
+ currentElement = element;
607
+ _addClass(element, _globalConfig.hoverClass);
608
+ _reposition();
609
+ var newTitle = _globalConfig.title || element.getAttribute("title");
610
+ if (newTitle) {
611
+ var htmlBridge = _getHtmlBridge(flashState.bridge);
612
+ if (htmlBridge) {
613
+ htmlBridge.setAttribute("title", newTitle);
614
+ }
615
+ }
616
+ var useHandCursor = _globalConfig.forceHandCursor === true || _getStyle(element, "cursor") === "pointer";
617
+ _setHandCursor(useHandCursor);
618
+ };
619
+ ZeroClipboard.deactivate = function() {
620
+ var htmlBridge = _getHtmlBridge(flashState.bridge);
621
+ if (htmlBridge) {
622
+ htmlBridge.style.left = "0px";
623
+ htmlBridge.style.top = "-9999px";
624
+ htmlBridge.removeAttribute("title");
625
+ }
626
+ if (currentElement) {
627
+ _removeClass(currentElement, _globalConfig.hoverClass);
628
+ _removeClass(currentElement, _globalConfig.activeClass);
629
+ currentElement = null;
630
+ }
631
+ };
632
+ var _bridge = function() {
633
+ var flashBridge, len;
634
+ var container = document.getElementById("global-zeroclipboard-html-bridge");
635
+ if (!container) {
636
+ var opts = ZeroClipboard.config();
637
+ opts.jsModuleId = typeof _amdModuleId === "string" && _amdModuleId || typeof _cjsModuleId === "string" && _cjsModuleId || null;
638
+ var allowScriptAccess = _determineScriptAccess(window.location.host, _globalConfig);
639
+ var flashvars = _vars(opts);
640
+ var swfUrl = _globalConfig.moviePath + _cacheBust(_globalConfig.moviePath, _globalConfig);
641
+ var html = ' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="' + swfUrl + '"/> <param name="allowScriptAccess" value="' + allowScriptAccess + '"/> <param name="scale" value="exactfit"/> <param name="loop" value="false"/> <param name="menu" value="false"/> <param name="quality" value="best" /> <param name="bgcolor" value="#ffffff"/> <param name="wmode" value="transparent"/> <param name="flashvars" value="' + flashvars + '"/> <embed src="' + swfUrl + '" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowScriptAccess="' + allowScriptAccess + '" allowFullScreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="' + flashvars + '" scale="exactfit"> </embed> </object>';
642
+ container = document.createElement("div");
643
+ container.id = "global-zeroclipboard-html-bridge";
644
+ container.setAttribute("class", "global-zeroclipboard-container");
645
+ container.style.position = "absolute";
646
+ container.style.left = "0px";
647
+ container.style.top = "-9999px";
648
+ container.style.width = "15px";
649
+ container.style.height = "15px";
650
+ container.style.zIndex = "" + _getSafeZIndex(_globalConfig.zIndex);
651
+ document.body.appendChild(container);
652
+ container.innerHTML = html;
653
+ }
654
+ flashBridge = document["global-zeroclipboard-flash-bridge"];
655
+ if (flashBridge && (len = flashBridge.length)) {
656
+ flashBridge = flashBridge[len - 1];
657
+ }
658
+ flashState.bridge = flashBridge || container.children[0].lastElementChild;
659
+ };
660
+ var _getHtmlBridge = function(flashBridge) {
661
+ var isFlashElement = /^OBJECT|EMBED$/;
662
+ var htmlBridge = flashBridge && flashBridge.parentNode;
663
+ while (htmlBridge && isFlashElement.test(htmlBridge.nodeName) && htmlBridge.parentNode) {
664
+ htmlBridge = htmlBridge.parentNode;
665
+ }
666
+ return htmlBridge || null;
667
+ };
668
+ var _reposition = function() {
669
+ if (currentElement) {
670
+ var pos = _getDOMObjectPosition(currentElement, _globalConfig.zIndex);
671
+ var htmlBridge = _getHtmlBridge(flashState.bridge);
672
+ if (htmlBridge) {
673
+ htmlBridge.style.top = pos.top + "px";
674
+ htmlBridge.style.left = pos.left + "px";
675
+ htmlBridge.style.width = pos.width + "px";
676
+ htmlBridge.style.height = pos.height + "px";
677
+ htmlBridge.style.zIndex = pos.zIndex + 1;
678
+ }
679
+ if (flashState.ready === true && flashState.bridge && typeof flashState.bridge.setSize === "function") {
680
+ flashState.bridge.setSize(pos.width, pos.height);
681
+ } else {
682
+ flashState.ready = false;
683
+ }
684
+ }
685
+ return this;
686
+ };
687
+ ZeroClipboard.prototype.on = function(eventName, func) {
688
+ var i, len, events, added = {}, handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers;
689
+ if (typeof eventName === "string" && eventName) {
690
+ events = eventName.toLowerCase().split(/\s+/);
691
+ } else if (typeof eventName === "object" && eventName && typeof func === "undefined") {
692
+ for (i in eventName) {
693
+ if (eventName.hasOwnProperty(i) && typeof i === "string" && i && typeof eventName[i] === "function") {
694
+ this.on(i, eventName[i]);
695
+ }
696
+ }
697
+ }
698
+ if (events && events.length) {
699
+ for (i = 0, len = events.length; i < len; i++) {
700
+ eventName = events[i].replace(/^on/, "");
701
+ added[eventName] = true;
702
+ if (!handlers[eventName]) {
703
+ handlers[eventName] = [];
704
+ }
705
+ handlers[eventName].push(func);
706
+ }
707
+ if (added.noflash && flashState.disabled) {
708
+ _receiveEvent.call(this, "noflash", {});
709
+ }
710
+ if (added.wrongflash && flashState.outdated) {
711
+ _receiveEvent.call(this, "wrongflash", {
712
+ flashVersion: flashState.version
713
+ });
714
+ }
715
+ if (added.load && flashState.ready) {
716
+ _receiveEvent.call(this, "load", {
717
+ flashVersion: flashState.version
718
+ });
719
+ }
720
+ }
721
+ return this;
722
+ };
723
+ ZeroClipboard.prototype.off = function(eventName, func) {
724
+ var i, len, foundIndex, events, perEventHandlers, handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers;
725
+ if (arguments.length === 0) {
726
+ events = _objectKeys(handlers);
727
+ } else if (typeof eventName === "string" && eventName) {
728
+ events = eventName.split(/\s+/);
729
+ } else if (typeof eventName === "object" && eventName && typeof func === "undefined") {
730
+ for (i in eventName) {
731
+ if (eventName.hasOwnProperty(i) && typeof i === "string" && i && typeof eventName[i] === "function") {
732
+ this.off(i, eventName[i]);
733
+ }
734
+ }
735
+ }
736
+ if (events && events.length) {
737
+ for (i = 0, len = events.length; i < len; i++) {
738
+ eventName = events[i].toLowerCase().replace(/^on/, "");
739
+ perEventHandlers = handlers[eventName];
740
+ if (perEventHandlers && perEventHandlers.length) {
741
+ if (func) {
742
+ foundIndex = _inArray(func, perEventHandlers);
743
+ while (foundIndex !== -1) {
744
+ perEventHandlers.splice(foundIndex, 1);
745
+ foundIndex = _inArray(func, perEventHandlers, foundIndex);
746
+ }
747
+ } else {
748
+ handlers[eventName].length = 0;
749
+ }
750
+ }
751
+ }
752
+ }
753
+ return this;
754
+ };
755
+ ZeroClipboard.prototype.handlers = function(eventName) {
756
+ var prop, copy = null, handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers;
757
+ if (handlers) {
758
+ if (typeof eventName === "string" && eventName) {
759
+ return handlers[eventName] ? handlers[eventName].slice(0) : null;
760
+ }
761
+ copy = {};
762
+ for (prop in handlers) {
763
+ if (handlers.hasOwnProperty(prop) && handlers[prop]) {
764
+ copy[prop] = handlers[prop].slice(0);
765
+ }
766
+ }
767
+ }
768
+ return copy;
769
+ };
770
+ var _dispatchClientCallbacks = function(eventName, context, args, async) {
771
+ var handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers[eventName];
772
+ if (handlers && handlers.length) {
773
+ var i, len, func, originalContext = context || this;
774
+ for (i = 0, len = handlers.length; i < len; i++) {
775
+ func = handlers[i];
776
+ context = originalContext;
777
+ if (typeof func === "string" && typeof window[func] === "function") {
778
+ func = window[func];
779
+ }
780
+ if (typeof func === "object" && func && typeof func.handleEvent === "function") {
781
+ context = func;
782
+ func = func.handleEvent;
783
+ }
784
+ if (typeof func === "function") {
785
+ _dispatchCallback(func, context, args, async);
786
+ }
787
+ }
788
+ }
789
+ return this;
790
+ };
791
+ ZeroClipboard.prototype.clip = function(elements) {
792
+ elements = _prepClip(elements);
793
+ for (var i = 0; i < elements.length; i++) {
794
+ if (elements.hasOwnProperty(i) && elements[i] && elements[i].nodeType === 1) {
795
+ if (!elements[i].zcClippingId) {
796
+ elements[i].zcClippingId = "zcClippingId_" + elementIdCounter++;
797
+ _elementMeta[elements[i].zcClippingId] = [ this.id ];
798
+ if (_globalConfig.autoActivate === true) {
799
+ _addEventHandler(elements[i], "mouseover", _elementMouseOver);
800
+ }
801
+ } else if (_inArray(this.id, _elementMeta[elements[i].zcClippingId]) === -1) {
802
+ _elementMeta[elements[i].zcClippingId].push(this.id);
803
+ }
804
+ var clippedElements = _clientMeta[this.id].elements;
805
+ if (_inArray(elements[i], clippedElements) === -1) {
806
+ clippedElements.push(elements[i]);
807
+ }
808
+ }
809
+ }
810
+ return this;
811
+ };
812
+ ZeroClipboard.prototype.unclip = function(elements) {
813
+ var meta = _clientMeta[this.id];
814
+ if (meta) {
815
+ var clippedElements = meta.elements;
816
+ var arrayIndex;
817
+ if (typeof elements === "undefined") {
818
+ elements = clippedElements.slice(0);
819
+ } else {
820
+ elements = _prepClip(elements);
821
+ }
822
+ for (var i = elements.length; i--; ) {
823
+ if (elements.hasOwnProperty(i) && elements[i] && elements[i].nodeType === 1) {
824
+ arrayIndex = 0;
825
+ while ((arrayIndex = _inArray(elements[i], clippedElements, arrayIndex)) !== -1) {
826
+ clippedElements.splice(arrayIndex, 1);
827
+ }
828
+ var clientIds = _elementMeta[elements[i].zcClippingId];
829
+ if (clientIds) {
830
+ arrayIndex = 0;
831
+ while ((arrayIndex = _inArray(this.id, clientIds, arrayIndex)) !== -1) {
832
+ clientIds.splice(arrayIndex, 1);
833
+ }
834
+ if (clientIds.length === 0) {
835
+ if (_globalConfig.autoActivate === true) {
836
+ _removeEventHandler(elements[i], "mouseover", _elementMouseOver);
837
+ }
838
+ delete elements[i].zcClippingId;
839
+ }
840
+ }
841
+ }
842
+ }
843
+ }
844
+ return this;
845
+ };
846
+ ZeroClipboard.prototype.elements = function() {
847
+ var meta = _clientMeta[this.id];
848
+ return meta && meta.elements ? meta.elements.slice(0) : [];
849
+ };
850
+ var _getAllClientsClippedToElement = function(element) {
851
+ var elementMetaId, clientIds, i, len, client, clients = [];
852
+ if (element && element.nodeType === 1 && (elementMetaId = element.zcClippingId) && _elementMeta.hasOwnProperty(elementMetaId)) {
853
+ clientIds = _elementMeta[elementMetaId];
854
+ if (clientIds && clientIds.length) {
855
+ for (i = 0, len = clientIds.length; i < len; i++) {
856
+ client = _clientMeta[clientIds[i]].instance;
857
+ if (client && client instanceof ZeroClipboard) {
858
+ clients.push(client);
859
+ }
860
+ }
861
+ }
862
+ }
863
+ return clients;
864
+ };
865
+ _globalConfig.hoverClass = "zeroclipboard-is-hover";
866
+ _globalConfig.activeClass = "zeroclipboard-is-active";
867
+ _globalConfig.trustedOrigins = null;
868
+ _globalConfig.allowScriptAccess = null;
869
+ _globalConfig.useNoCache = true;
870
+ _globalConfig.moviePath = "ZeroClipboard.swf";
871
+ ZeroClipboard.detectFlashSupport = function() {
872
+ _deprecationWarning("ZeroClipboard.detectFlashSupport", _globalConfig.debug);
873
+ return _detectFlashSupport();
874
+ };
875
+ ZeroClipboard.dispatch = function(eventName, args) {
876
+ if (typeof eventName === "string" && eventName) {
877
+ var cleanEventName = eventName.toLowerCase().replace(/^on/, "");
878
+ if (cleanEventName) {
879
+ var clients = currentElement && _globalConfig.autoActivate === true ? _getAllClientsClippedToElement(currentElement) : _getAllClients();
880
+ for (var i = 0, len = clients.length; i < len; i++) {
881
+ _receiveEvent.call(clients[i], cleanEventName, args);
882
+ }
883
+ }
884
+ }
885
+ };
886
+ ZeroClipboard.prototype.setHandCursor = function(enabled) {
887
+ _deprecationWarning("ZeroClipboard.prototype.setHandCursor", _globalConfig.debug);
888
+ enabled = typeof enabled === "boolean" ? enabled : !!enabled;
889
+ _setHandCursor(enabled);
890
+ _globalConfig.forceHandCursor = enabled;
891
+ return this;
892
+ };
893
+ ZeroClipboard.prototype.reposition = function() {
894
+ _deprecationWarning("ZeroClipboard.prototype.reposition", _globalConfig.debug);
895
+ return _reposition();
896
+ };
897
+ ZeroClipboard.prototype.receiveEvent = function(eventName, args) {
898
+ _deprecationWarning("ZeroClipboard.prototype.receiveEvent", _globalConfig.debug);
899
+ if (typeof eventName === "string" && eventName) {
900
+ var cleanEventName = eventName.toLowerCase().replace(/^on/, "");
901
+ if (cleanEventName) {
902
+ _receiveEvent.call(this, cleanEventName, args);
903
+ }
904
+ }
905
+ };
906
+ ZeroClipboard.prototype.setCurrent = function(element) {
907
+ _deprecationWarning("ZeroClipboard.prototype.setCurrent", _globalConfig.debug);
908
+ ZeroClipboard.activate(element);
909
+ return this;
910
+ };
911
+ ZeroClipboard.prototype.resetBridge = function() {
912
+ _deprecationWarning("ZeroClipboard.prototype.resetBridge", _globalConfig.debug);
913
+ ZeroClipboard.deactivate();
914
+ return this;
915
+ };
916
+ ZeroClipboard.prototype.setTitle = function(newTitle) {
917
+ _deprecationWarning("ZeroClipboard.prototype.setTitle", _globalConfig.debug);
918
+ newTitle = newTitle || _globalConfig.title || currentElement && currentElement.getAttribute("title");
919
+ if (newTitle) {
920
+ var htmlBridge = _getHtmlBridge(flashState.bridge);
921
+ if (htmlBridge) {
922
+ htmlBridge.setAttribute("title", newTitle);
923
+ }
924
+ }
925
+ return this;
926
+ };
927
+ ZeroClipboard.setDefaults = function(options) {
928
+ _deprecationWarning("ZeroClipboard.setDefaults", _globalConfig.debug);
929
+ ZeroClipboard.config(options);
930
+ };
931
+ ZeroClipboard.prototype.addEventListener = function(eventName, func) {
932
+ _deprecationWarning("ZeroClipboard.prototype.addEventListener", _globalConfig.debug);
933
+ return this.on(eventName, func);
934
+ };
935
+ ZeroClipboard.prototype.removeEventListener = function(eventName, func) {
936
+ _deprecationWarning("ZeroClipboard.prototype.removeEventListener", _globalConfig.debug);
937
+ return this.off(eventName, func);
938
+ };
939
+ ZeroClipboard.prototype.ready = function() {
940
+ _deprecationWarning("ZeroClipboard.prototype.ready", _globalConfig.debug);
941
+ return flashState.ready === true;
942
+ };
943
+ var _receiveEvent = function(eventName, args) {
944
+ eventName = eventName.toLowerCase().replace(/^on/, "");
945
+ var cleanVersion = args && args.flashVersion && _parseFlashVersion(args.flashVersion) || null;
946
+ var element = currentElement;
947
+ var performCallbackAsync = true;
948
+ switch (eventName) {
949
+ case "load":
950
+ if (cleanVersion) {
951
+ if (!_isFlashVersionSupported(cleanVersion)) {
952
+ _receiveEvent.call(this, "onWrongFlash", {
953
+ flashVersion: cleanVersion
954
+ });
955
+ return;
956
+ }
957
+ flashState.outdated = false;
958
+ flashState.ready = true;
959
+ flashState.version = cleanVersion;
960
+ }
961
+ break;
962
+
963
+ case "wrongflash":
964
+ if (cleanVersion && !_isFlashVersionSupported(cleanVersion)) {
965
+ flashState.outdated = true;
966
+ flashState.ready = false;
967
+ flashState.version = cleanVersion;
968
+ }
969
+ break;
970
+
971
+ case "mouseover":
972
+ _addClass(element, _globalConfig.hoverClass);
973
+ break;
974
+
975
+ case "mouseout":
976
+ if (_globalConfig.autoActivate === true) {
977
+ ZeroClipboard.deactivate();
978
+ }
979
+ break;
980
+
981
+ case "mousedown":
982
+ _addClass(element, _globalConfig.activeClass);
983
+ break;
984
+
985
+ case "mouseup":
986
+ _removeClass(element, _globalConfig.activeClass);
987
+ break;
988
+
989
+ case "datarequested":
990
+ if (element) {
991
+ var targetId = element.getAttribute("data-clipboard-target"), targetEl = !targetId ? null : document.getElementById(targetId);
992
+ if (targetEl) {
993
+ var textContent = targetEl.value || targetEl.textContent || targetEl.innerText;
994
+ if (textContent) {
995
+ this.setText(textContent);
996
+ }
997
+ } else {
998
+ var defaultText = element.getAttribute("data-clipboard-text");
999
+ if (defaultText) {
1000
+ this.setText(defaultText);
1001
+ }
1002
+ }
1003
+ }
1004
+ performCallbackAsync = false;
1005
+ break;
1006
+
1007
+ case "complete":
1008
+ _deleteOwnProperties(_clipData);
1009
+ if (element && element !== _safeActiveElement() && element.focus) {
1010
+ element.focus();
1011
+ }
1012
+ break;
1013
+ }
1014
+ var context = element;
1015
+ var eventArgs = [ this, args ];
1016
+ return _dispatchClientCallbacks.call(this, eventName, context, eventArgs, performCallbackAsync);
1017
+ };
1018
+ if (typeof define === "function" && define.amd) {
1019
+ define([ "require", "exports", "module" ], function(require, exports, module) {
1020
+ _amdModuleId = module && module.id || null;
1021
+ return ZeroClipboard;
1022
+ });
1023
+ } else if (typeof module === "object" && module && typeof module.exports === "object" && module.exports && typeof window.require === "function") {
1024
+ _cjsModuleId = module.id || null;
1025
+ module.exports = ZeroClipboard;
1026
+ } else {
1027
+ window.ZeroClipboard = ZeroClipboard;
1028
+ }
1029
+ })(function() {
1030
+ return this;
1031
+ }());