backlog 0.37.2 → 0.41.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. checksums.yaml +7 -0
  2. data/History.txt +128 -0
  3. data/README.txt +4 -2
  4. data/bin/backlog +1 -1
  5. data/lib/array_helper.rb +4 -4
  6. data/{vendor/plugins → lib}/backlog_jira/README +0 -0
  7. data/{vendor/plugins → lib}/backlog_jira/Rakefile +0 -0
  8. data/{vendor/plugins → lib}/backlog_jira/generators/backlog_jira/backlog_jira_generator.rb +0 -0
  9. data/{vendor/plugins → lib}/backlog_jira/generators/backlog_jira/templates/migration.rb +0 -0
  10. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/history_model_generator.rb +0 -0
  11. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/fixtures.yml +0 -0
  12. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/functional_test.rb +0 -0
  13. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/model.rb +0 -0
  14. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/unit_test.rb +0 -0
  15. data/lib/backlog_jira/init.rb +66 -0
  16. data/{vendor/plugins → lib}/backlog_jira/install.rb +0 -0
  17. data/{vendor/plugins → lib}/backlog_jira/lib/backlog_jira.rb +0 -0
  18. data/{vendor/plugins → lib}/backlog_jira/lib/tasks/backlog_jira_tasks.rake +0 -0
  19. data/{vendor/plugins → lib}/backlog_jira/test/backlog_jira_test.rb +0 -0
  20. data/{vendor/plugins → lib}/backlog_jira/uninstall.rb +0 -0
  21. data/lib/big_decimal_yaml_fix.rb +16 -25
  22. data/lib/tasks/backup.rake +18 -18
  23. data/lib/time_extras.rb +6 -6
  24. data/lib/user_system.rb +41 -38
  25. data/lib/version_from_history.rb +2 -2
  26. metadata +196 -749
  27. data/Capfile +0 -2
  28. data/Gemfile +0 -34
  29. data/Gemfile.lock +0 -139
  30. data/MODIFICATIONS.txt +0 -13
  31. data/Manifest.txt +0 -0
  32. data/README_LOGIN_SUGAR +0 -194
  33. data/Rakefile +0 -73
  34. data/Rakefile~ +0 -73
  35. data/Screenshot.png +0 -0
  36. data/app/controllers/absences_controller.rb +0 -67
  37. data/app/controllers/application_controller.rb +0 -185
  38. data/app/controllers/application_controller.rb.rails2 +0 -186
  39. data/app/controllers/customers_controller.rb +0 -51
  40. data/app/controllers/dashboard_controller.rb +0 -17
  41. data/app/controllers/estimates_controller.rb +0 -49
  42. data/app/controllers/groups_controller.rb +0 -65
  43. data/app/controllers/parties_controller.rb +0 -33
  44. data/app/controllers/periods_controller.rb +0 -242
  45. data/app/controllers/projects_controller.rb +0 -185
  46. data/app/controllers/public_holidays_controller.rb +0 -70
  47. data/app/controllers/search_controller.rb +0 -15
  48. data/app/controllers/task_files_controller.rb +0 -19
  49. data/app/controllers/tasks_controller.rb +0 -305
  50. data/app/controllers/user_controller.rb +0 -251
  51. data/app/controllers/welcome_controller.rb +0 -29
  52. data/app/controllers/work_locks_controller.rb +0 -88
  53. data/app/controllers/works_controller.rb +0 -383
  54. data/app/helpers/absences_helper.rb +0 -2
  55. data/app/helpers/application_helper.rb +0 -119
  56. data/app/helpers/application_helper.rb.rails2 +0 -118
  57. data/app/helpers/customers_helper.rb +0 -2
  58. data/app/helpers/dashboard_helper.rb +0 -2
  59. data/app/helpers/estimates_helper.rb +0 -2
  60. data/app/helpers/groups_helper.rb +0 -2
  61. data/app/helpers/parties_helper.rb +0 -2
  62. data/app/helpers/periods_helper.rb +0 -57
  63. data/app/helpers/projects_helper.rb +0 -74
  64. data/app/helpers/public_holidays_helper.rb +0 -2
  65. data/app/helpers/search_helper.rb +0 -2
  66. data/app/helpers/task_files_helper.rb +0 -2
  67. data/app/helpers/tasks_helper.rb +0 -2
  68. data/app/helpers/user_helper.rb +0 -53
  69. data/app/helpers/welcome_helper.rb +0 -2
  70. data/app/helpers/work_locks_helper.rb +0 -2
  71. data/app/helpers/works_helper.rb +0 -5
  72. data/app/mailers/user_notify.rb +0 -76
  73. data/app/models/absence.rb +0 -27
  74. data/app/models/chart.rb +0 -5
  75. data/app/models/clock.rb +0 -14
  76. data/app/models/configuration.rb +0 -2
  77. data/app/models/customer.rb +0 -2
  78. data/app/models/estimate.rb +0 -17
  79. data/app/models/group.rb +0 -16
  80. data/app/models/party.rb +0 -27
  81. data/app/models/period.rb +0 -251
  82. data/app/models/project.rb +0 -49
  83. data/app/models/public_holiday.rb +0 -13
  84. data/app/models/report_filter.rb +0 -29
  85. data/app/models/search_result.rb +0 -8
  86. data/app/models/sidebar.rb +0 -41
  87. data/app/models/task.rb +0 -425
  88. data/app/models/task_file.rb +0 -7
  89. data/app/models/task_notify.rb +0 -27
  90. data/app/models/user.rb +0 -146
  91. data/app/models/work.rb +0 -191
  92. data/app/models/work_lock.rb +0 -11
  93. data/app/models/work_lock_nagger.rb +0 -60
  94. data/app/models/work_lock_notify.rb +0 -43
  95. data/app/models/works_report_filter.rb +0 -27
  96. data/app/views/absences/_form.rhtml +0 -10
  97. data/app/views/absences/edit.rhtml +0 -9
  98. data/app/views/absences/list.rhtml +0 -25
  99. data/app/views/absences/new.rhtml +0 -8
  100. data/app/views/absences/show.rhtml +0 -8
  101. data/app/views/customers/_form.rhtml +0 -7
  102. data/app/views/customers/_name_list.rhtml +0 -5
  103. data/app/views/customers/edit.rhtml +0 -9
  104. data/app/views/customers/list.rhtml +0 -28
  105. data/app/views/customers/new.rhtml +0 -8
  106. data/app/views/customers/show.rhtml +0 -8
  107. data/app/views/dashboard/show.rhtml +0 -24
  108. data/app/views/display_notice.rjs +0 -1
  109. data/app/views/groups/_form.rhtml +0 -7
  110. data/app/views/groups/edit.rhtml +0 -57
  111. data/app/views/groups/list.rhtml +0 -26
  112. data/app/views/groups/new.rhtml +0 -7
  113. data/app/views/groups/set_member.rjs +0 -1
  114. data/app/views/layouts/_headers.rhtml +0 -24
  115. data/app/views/layouts/_left_top.rhtml +0 -33
  116. data/app/views/layouts/_notice.rhtml +0 -12
  117. data/app/views/layouts/_shortcuts.rhtml +0 -22
  118. data/app/views/layouts/_shortcuts_js.rhtml +0 -19
  119. data/app/views/layouts/mwrt002.html.erb +0 -44
  120. data/app/views/layouts/wide.rhtml +0 -23
  121. data/app/views/periods/_burn_down_chart.rhtml +0 -9
  122. data/app/views/periods/_form.rhtml +0 -74
  123. data/app/views/periods/_link.rhtml +0 -3
  124. data/app/views/periods/_show_active.rhtml +0 -61
  125. data/app/views/periods/_sidebar_block.rhtml +0 -11
  126. data/app/views/periods/_title.rhtml +0 -18
  127. data/app/views/periods/edit.rhtml +0 -10
  128. data/app/views/periods/finish_task.rjs +0 -4
  129. data/app/views/periods/move_task_to_period.rjs +0 -4
  130. data/app/views/periods/new.rhtml +0 -9
  131. data/app/views/periods/order.rjs +0 -0
  132. data/app/views/periods/reopen_task.rjs +0 -6
  133. data/app/views/periods/show.rhtml +0 -56
  134. data/app/views/projects/_buttons.rhtml +0 -4
  135. data/app/views/projects/_form.rhtml +0 -44
  136. data/app/views/projects/_name_list.rhtml +0 -5
  137. data/app/views/projects/edit.rhtml +0 -14
  138. data/app/views/projects/finish_task.rjs +0 -3
  139. data/app/views/projects/list.rhtml +0 -16
  140. data/app/views/projects/move_task_to_period.rjs +0 -3
  141. data/app/views/projects/new.rhtml +0 -11
  142. data/app/views/projects/reopen_task.rjs +0 -3
  143. data/app/views/projects/show.rhtml +0 -39
  144. data/app/views/public_holidays/_form.rhtml +0 -7
  145. data/app/views/public_holidays/edit.rhtml +0 -9
  146. data/app/views/public_holidays/list.rhtml +0 -25
  147. data/app/views/public_holidays/new.rhtml +0 -8
  148. data/app/views/public_holidays/show.rhtml +0 -8
  149. data/app/views/redirect.rjs +0 -1
  150. data/app/views/search/results.rhtml +0 -40
  151. data/app/views/task_notify/invite.en.html.erb +0 -13
  152. data/app/views/task_notify/invite.no.html.erb +0 -13
  153. data/app/views/tasks/_backlog_header.rhtml +0 -17
  154. data/app/views/tasks/_completed.rhtml +0 -18
  155. data/app/views/tasks/_fields_header.rhtml +0 -13
  156. data/app/views/tasks/_form.rhtml +0 -125
  157. data/app/views/tasks/_invite.rjs +0 -1
  158. data/app/views/tasks/_period_header.rhtml +0 -1
  159. data/app/views/tasks/_task.rhtml +0 -116
  160. data/app/views/tasks/_update.rjs +0 -2
  161. data/app/views/tasks/edit.rhtml +0 -81
  162. data/app/views/tasks/grab.rhtml +0 -9
  163. data/app/views/tasks/invite.rhtml +0 -9
  164. data/app/views/tasks/list.rhtml +0 -77
  165. data/app/views/tasks/list_started.rhtml +0 -62
  166. data/app/views/tasks/new.rhtml +0 -10
  167. data/app/views/tasks/notes.rhtml +0 -12
  168. data/app/views/tasks/start_work.rjs +0 -1
  169. data/app/views/tasks/update_estimate.rjs +0 -3
  170. data/app/views/user/_edit.rhtml +0 -31
  171. data/app/views/user/_password.rhtml +0 -21
  172. data/app/views/user/change_password.rhtml +0 -19
  173. data/app/views/user/delete.rhtml +0 -14
  174. data/app/views/user/edit.rhtml +0 -154
  175. data/app/views/user/forgot_password.rhtml +0 -19
  176. data/app/views/user/login.rhtml +0 -33
  177. data/app/views/user/logout.rhtml +0 -8
  178. data/app/views/user/set_group.rjs +0 -1
  179. data/app/views/user/signup.rhtml +0 -15
  180. data/app/views/user/toggle_work_lock_monitoring.rjs +0 -2
  181. data/app/views/user/welcome.rhtml +0 -8
  182. data/app/views/user_notify/change_password.en.html.erb +0 -10
  183. data/app/views/user_notify/change_password.no.html.erb +0 -10
  184. data/app/views/user_notify/forgot_password.en.html.erb +0 -11
  185. data/app/views/user_notify/forgot_password.no.html.erb +0 -11
  186. data/app/views/user_notify/monitoring.en.html.erb +0 -3
  187. data/app/views/user_notify/monitoring.no.html.erb +0 -3
  188. data/app/views/user_notify/monitoring_invitation.en.html.erb +0 -7
  189. data/app/views/user_notify/monitoring_invitation.no.html.erb +0 -7
  190. data/app/views/user_notify/signup.en.html.erb +0 -12
  191. data/app/views/user_notify/signup.no.html.erb +0 -12
  192. data/app/views/work_lock_notify/lock.en.html.erb +0 -7
  193. data/app/views/work_lock_notify/lock.no.html.erb +0 -7
  194. data/app/views/work_lock_notify/nag.en.html.erb +0 -6
  195. data/app/views/work_lock_notify/nag.no.html.erb +0 -7
  196. data/app/views/work_locks/_form.rhtml +0 -10
  197. data/app/views/work_locks/edit.rhtml +0 -9
  198. data/app/views/work_locks/list.rhtml +0 -25
  199. data/app/views/work_locks/new.rhtml +0 -8
  200. data/app/views/work_locks/show.rhtml +0 -8
  201. data/app/views/works/_buttons.rhtml +0 -2
  202. data/app/views/works/_description_list.rhtml +0 -5
  203. data/app/views/works/_form.rhtml +0 -107
  204. data/app/views/works/_new_row.rhtml +0 -141
  205. data/app/views/works/_row.rhtml +0 -115
  206. data/app/views/works/_row_field.rhtml +0 -17
  207. data/app/views/works/_task_id_list.rhtml +0 -5
  208. data/app/views/works/_weekly_work_sheet_buttons.rhtml +0 -22
  209. data/app/views/works/daily_work_sheet.rhtml +0 -108
  210. data/app/views/works/edit.rhtml +0 -11
  211. data/app/views/works/list.rhtml +0 -148
  212. data/app/views/works/list_excel.rhtml +0 -114
  213. data/app/views/works/new.rhtml +0 -12
  214. data/app/views/works/show.rhtml +0 -10
  215. data/app/views/works/timeliste.rhtml +0 -884
  216. data/app/views/works/update_new_row.rjs +0 -28
  217. data/app/views/works/update_row.rjs +0 -18
  218. data/app/views/works/update_time.rjs +0 -3
  219. data/app/views/works/weekly_work_sheet.rhtml +0 -64
  220. data/app/views/works/weekly_work_sheet_details.rhtml +0 -102
  221. data/backlog.gemspec +0 -44
  222. data/config.ru +0 -4
  223. data/config/application.rb +0 -11
  224. data/config/boot.rb +0 -13
  225. data/config/database.yml +0 -15
  226. data/config/database.yml~ +0 -17
  227. data/config/environment.rb +0 -100
  228. data/config/environments/development.rb +0 -30
  229. data/config/environments/development.rb.rails2 +0 -26
  230. data/config/environments/production.rb +0 -33
  231. data/config/environments/test.rb +0 -24
  232. data/config/environments/user_environment.rb +0 -21
  233. data/config/initializers/backtrace_silencers.rb +0 -7
  234. data/config/initializers/inflections.rb +0 -10
  235. data/config/initializers/jdbc.rb +0 -7
  236. data/config/initializers/mime_types.rb +0 -5
  237. data/config/initializers/secret_token.rb +0 -7
  238. data/config/initializers/session_store.rb +0 -8
  239. data/config/locales/en.yml +0 -200
  240. data/config/locales/no.yml +0 -193
  241. data/config/mime_types.yaml +0 -1
  242. data/config/routes.rb +0 -5
  243. data/config/war.rb +0 -27
  244. data/config/warble.rb +0 -84
  245. data/cruise_build.sh +0 -14
  246. data/cruise_config.rb +0 -5
  247. data/db/migrate/001_create_tasks.rb +0 -22
  248. data/db/migrate/003_add_estimation_points.rb +0 -16
  249. data/db/migrate/004_add_period.rb +0 -63
  250. data/db/migrate/005_add_field_work_started_at.rb +0 -9
  251. data/db/migrate/006_works_data_fix.rb +0 -13
  252. data/db/migrate/007_add_task_created_at.rb +0 -23
  253. data/db/migrate/008_add_backlog_options.rb +0 -13
  254. data/db/migrate/009_add_subtasks.rb +0 -29
  255. data/db/migrate/010_add_work_start.rb +0 -9
  256. data/db/migrate/011_login_sugar.rb +0 -21
  257. data/db/migrate/012_add_resolution.rb +0 -12
  258. data/db/migrate/013_create_estimates.rb +0 -20
  259. data/db/migrate/014_add_customer_option.rb +0 -11
  260. data/db/migrate/015_add_user_option.rb +0 -33
  261. data/db/migrate/016_add_invoicable_flag.rb +0 -11
  262. data/db/migrate/017_increase_backlog_name_limit.rb +0 -10
  263. data/db/migrate/018_create_groups.rb +0 -118
  264. data/db/migrate/019_remove_unique_index_for_period_position.rb +0 -9
  265. data/db/migrate/020_create_task_files.rb +0 -17
  266. data/db/migrate/021_create_work_accounts.rb +0 -111
  267. data/db/migrate/022_remove_track_done_flag.rb +0 -9
  268. data/db/migrate/023_add_indices_for_burn_down_chart.rb +0 -13
  269. data/db/migrate/024_add_sprint_option.rb +0 -10
  270. data/db/migrate/025_add_simple_auditing_of_tasks.rb +0 -11
  271. data/db/migrate/026_add_users_to_tasks.rb +0 -14
  272. data/db/migrate/027_create_work_locks.rb +0 -25
  273. data/db/migrate/028_create_absences.rb +0 -34
  274. data/db/migrate/029_add_work_comments.rb +0 -9
  275. data/db/migrate/030_create_public_holidays.rb +0 -11
  276. data/db/migrate/031_expand_work_done_precision.rb +0 -9
  277. data/db/migrate/20100720124707_merge_work_account_into_backlog.rb +0 -74
  278. data/db/migrate/20101006092700_rename_backlogs_to_projects.rb +0 -22
  279. data/db/migrate/20101006092700_rename_backlogs_to_projects.rb~ +0 -22
  280. data/db/schema.rb +0 -159
  281. data/db/seeds.rb +0 -7
  282. data/db/test.db +0 -0
  283. data/etc/backlog.conf +0 -32
  284. data/ext/mkrf_conf.rb +0 -26
  285. data/lib/class_table_inheritance.rb +0 -224
  286. data/lib/postgresql-8.2-504.jdbc4.jar +0 -0
  287. data/lib/tasks/jdbc.rake +0 -8
  288. data/lib/url_for_fix.rb +0 -30
  289. data/nbproject/private/config.properties +0 -0
  290. data/nbproject/private/private.properties +0 -1
  291. data/nbproject/private/private.xml +0 -4
  292. data/nbproject/private/rake-t.txt +0 -95
  293. data/nbproject/project.properties +0 -4
  294. data/nbproject/project.xml +0 -9
  295. data/public/404.html +0 -26
  296. data/public/422.html +0 -26
  297. data/public/500.html +0 -26
  298. data/public/Frav/303/246rsskjema.xls +0 -0
  299. data/public/applets/bsf.jar +0 -0
  300. data/public/applets/jruby.jar +0 -0
  301. data/public/favicon.ico +0 -0
  302. data/public/images/add.png +0 -0
  303. data/public/images/add.svg +0 -70
  304. data/public/images/ajax-loading.gif +0 -0
  305. data/public/images/appunti_architetto_franc_01.svg +0 -92
  306. data/public/images/arrow-down.gif +0 -0
  307. data/public/images/arrow-up.gif +0 -0
  308. data/public/images/arrow07_2.png +0 -0
  309. data/public/images/arrow07_4.png +0 -0
  310. data/public/images/arrow_down.png +0 -0
  311. data/public/images/arrow_down.svg +0 -59
  312. data/public/images/arrow_left.png +0 -0
  313. data/public/images/arrow_left.svg +0 -59
  314. data/public/images/arrow_right.png +0 -0
  315. data/public/images/arrow_right.svg +0 -59
  316. data/public/images/arrow_up.png +0 -0
  317. data/public/images/arrow_up.svg +0 -59
  318. data/public/images/black-70.png +0 -0
  319. data/public/images/black.png +0 -0
  320. data/public/images/blank.jpg +0 -0
  321. data/public/images/blank.png +0 -0
  322. data/public/images/cestino_pieno_architetto_01.svg +0 -470
  323. data/public/images/checkmark.png +0 -0
  324. data/public/images/checkmark_org.png +0 -0
  325. data/public/images/clipboard.png +0 -0
  326. data/public/images/clipboard.svg +0 -62
  327. data/public/images/construction_hammer_jon__01.svg +0 -116
  328. data/public/images/delete.png +0 -0
  329. data/public/images/email.png +0 -0
  330. data/public/images/email_grey.png +0 -0
  331. data/public/images/eraser.png +0 -0
  332. data/public/images/eraser_org.png +0 -0
  333. data/public/images/ernes_stop.png +0 -0
  334. data/public/images/ernes_stop_org.png +0 -0
  335. data/public/images/flag_red.png +0 -0
  336. data/public/images/flag_yellow.png +0 -0
  337. data/public/images/grab.png +0 -0
  338. data/public/images/grab_gray.png +0 -0
  339. data/public/images/group.png +0 -0
  340. data/public/images/hammer.png +0 -0
  341. data/public/images/header.jpg +0 -0
  342. data/public/images/nextlabel.gif +0 -0
  343. data/public/images/pagebak.jpg +0 -0
  344. data/public/images/paper3.svg +0 -54
  345. data/public/images/period.png +0 -0
  346. data/public/images/period_org.png +0 -0
  347. data/public/images/person.org.png +0 -0
  348. data/public/images/prevlabel.gif +0 -0
  349. data/public/images/question.svg +0 -56
  350. data/public/images/rails.png +0 -0
  351. data/public/images/refresh.png +0 -0
  352. data/public/images/rmagick.gif +0 -0
  353. data/public/images/rmagick_270.gif +0 -0
  354. data/public/images/tabella_architetto_franc_01.svg +0 -105
  355. data/public/images/task.png +0 -0
  356. data/public/images/text-x-generic.png +0 -0
  357. data/public/images/user group.png +0 -0
  358. data/public/images/user.png +0 -0
  359. data/public/images/view_fullscreen.png +0 -0
  360. data/public/images/work_account.png +0 -0
  361. data/public/javascripts/application.js +0 -2
  362. data/public/javascripts/builder.js +0 -136
  363. data/public/javascripts/controls.js +0 -965
  364. data/public/javascripts/dragdrop.js +0 -974
  365. data/public/javascripts/effects.js +0 -1123
  366. data/public/javascripts/lightwindow.js +0 -1921
  367. data/public/javascripts/prototype.js +0 -6001
  368. data/public/javascripts/rails.js +0 -175
  369. data/public/javascripts/ruby.js +0 -46
  370. data/public/javascripts/scriptaculous.js +0 -58
  371. data/public/javascripts/slider.js +0 -275
  372. data/public/javascripts/sound.js +0 -55
  373. data/public/javascripts/unittest.js +0 -568
  374. data/public/javascripts/zapatec/utils/transport.js +0 -2217
  375. data/public/javascripts/zapatec/utils/utils.js +0 -1799
  376. data/public/javascripts/zapatec/utils/zapatec.js +0 -90
  377. data/public/javascripts/zapatec/utils/zpeventdriven.js +0 -212
  378. data/public/javascripts/zapatec/utils/zpwidget.js +0 -729
  379. data/public/javascripts/zapatec/zpcal/lang/calendar-no.js +0 -124
  380. data/public/javascripts/zapatec/zpcal/src/calendar-core.js +0 -2878
  381. data/public/javascripts/zapatec/zpcal/src/calendar-date-core.js +0 -348
  382. data/public/javascripts/zapatec/zpcal/src/calendar-setup.js +0 -360
  383. data/public/javascripts/zapatec/zpcal/src/calendar.js +0 -35
  384. data/public/robots.txt +0 -5
  385. data/public/stylesheets/backlog.css +0 -135
  386. data/public/stylesheets/lightwindow.css +0 -376
  387. data/public/stylesheets/mwrt002.css +0 -54
  388. data/public/stylesheets/mwrt002MAC.css +0 -3
  389. data/public/stylesheets/mwrt002NN.css +0 -3
  390. data/public/stylesheets/scaffold.css +0 -74
  391. data/public/stylesheets/user.css +0 -74
  392. data/public/stylesheets/zpcal/themes/green.css +0 -153
  393. data/public/stylesheets/zpcal/themes/layouts/layout-2d.css +0 -134
  394. data/public/stylesheets/zpcal/themes/layouts/layout-common.css +0 -74
  395. data/public/stylesheets/zpcal/themes/menuarrow.gif +0 -0
  396. data/public/stylesheets/zpcal/themes/scroller-down.gif +0 -0
  397. data/public/stylesheets/zpcal/themes/scroller-up.gif +0 -0
  398. data/script/rails +0 -6
  399. data/test/client/login.rb +0 -23
  400. data/test/client/login_test.rb +0 -64
  401. data/test/client/setup.rb +0 -25
  402. data/test/fixtures/absences.yml +0 -11
  403. data/test/fixtures/configurations.yml +0 -5
  404. data/test/fixtures/customers.yml +0 -7
  405. data/test/fixtures/estimates.yml +0 -10
  406. data/test/fixtures/groups.yml +0 -6
  407. data/test/fixtures/groups_users.yml +0 -3
  408. data/test/fixtures/parties.yml +0 -32
  409. data/test/fixtures/periods.yml +0 -24
  410. data/test/fixtures/projects.yml +0 -8
  411. data/test/fixtures/public_holidays.yml +0 -7
  412. data/test/fixtures/task_files.yml +0 -13
  413. data/test/fixtures/tasks.yml +0 -82
  414. data/test/fixtures/users.yml +0 -59
  415. data/test/fixtures/work_lock_subscriptions.yml +0 -7
  416. data/test/fixtures/work_locks.yml +0 -11
  417. data/test/fixtures/works.yml +0 -47
  418. data/test/functional/absences_controller_test.rb +0 -93
  419. data/test/functional/customers_controller_test.rb +0 -93
  420. data/test/functional/dashboard_controller_test.rb +0 -18
  421. data/test/functional/estimates_controller_test.rb +0 -40
  422. data/test/functional/groups_controller_test.rb +0 -120
  423. data/test/functional/parties_controller_test.rb +0 -35
  424. data/test/functional/periods_controller_test.rb +0 -297
  425. data/test/functional/projects_controller_test.rb +0 -152
  426. data/test/functional/public_holidays_controller_test.rb +0 -93
  427. data/test/functional/search_controller_test.rb +0 -24
  428. data/test/functional/task_files_controller_test.rb +0 -29
  429. data/test/functional/tasks_controller_test.rb +0 -229
  430. data/test/functional/user_controller_test.rb +0 -261
  431. data/test/functional/welcome_controller_test.rb +0 -62
  432. data/test/functional/work_locks_controller_test.rb +0 -93
  433. data/test/functional/works_controller_test.rb +0 -220
  434. data/test/integration/user_system_test.rb +0 -95
  435. data/test/mocks/test/clock.rb +0 -14
  436. data/test/performance/browsing_test.rb +0 -9
  437. data/test/performance/common.rb +0 -91
  438. data/test/performance/jetty_test.rb +0 -15
  439. data/test/performance/server_test.rb +0 -17
  440. data/test/test_helper.rb +0 -119
  441. data/test/test_helper.rb~ +0 -121
  442. data/test/unit/absence_test.rb +0 -29
  443. data/test/unit/big_decimal_yaml_fix_test.rb +0 -15
  444. data/test/unit/configuration_test.rb +0 -10
  445. data/test/unit/customer_test.rb +0 -10
  446. data/test/unit/estimate_test.rb +0 -10
  447. data/test/unit/group_test.rb +0 -10
  448. data/test/unit/party_test.rb +0 -10
  449. data/test/unit/period_test.rb +0 -9
  450. data/test/unit/public_holiday_test.rb +0 -10
  451. data/test/unit/task_file_test.rb +0 -10
  452. data/test/unit/task_test.rb +0 -73
  453. data/test/unit/time_of_day_test.rb +0 -23
  454. data/test/unit/user_test.rb +0 -148
  455. data/test/unit/work_lock_subscription_test.rb +0 -10
  456. data/test/unit/work_lock_test.rb +0 -10
  457. data/test/unit/work_test.rb +0 -81
  458. data/vendor/plugins/acts_as_list/README +0 -23
  459. data/vendor/plugins/acts_as_list/init.rb +0 -3
  460. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +0 -256
  461. data/vendor/plugins/acts_as_list/test/list_test.rb +0 -332
  462. data/vendor/plugins/acts_as_tree/README +0 -26
  463. data/vendor/plugins/acts_as_tree/Rakefile +0 -22
  464. data/vendor/plugins/acts_as_tree/init.rb +0 -1
  465. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +0 -96
  466. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  467. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +0 -219
  468. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  469. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  470. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  471. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  472. data/vendor/plugins/assert_cookie/MIT-LICENSE +0 -7
  473. data/vendor/plugins/assert_cookie/README +0 -6
  474. data/vendor/plugins/assert_cookie/Rakefile +0 -21
  475. data/vendor/plugins/assert_cookie/init.rb +0 -1
  476. data/vendor/plugins/assert_cookie/lib/assert_cookie.rb +0 -73
  477. data/vendor/plugins/assert_cookie/meta.yml +0 -7
  478. data/vendor/plugins/assert_cookie/test/test_assert_cookie.rb +0 -124
  479. data/vendor/plugins/assert_cookie/test/test_helper.rb +0 -31
  480. data/vendor/plugins/auto_complete/README +0 -23
  481. data/vendor/plugins/auto_complete/Rakefile +0 -22
  482. data/vendor/plugins/auto_complete/init.rb +0 -2
  483. data/vendor/plugins/auto_complete/lib/auto_complete.rb +0 -47
  484. data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +0 -143
  485. data/vendor/plugins/auto_complete/test/auto_complete_test.rb +0 -67
  486. data/vendor/plugins/backlog_jira/init.rb +0 -66
  487. data/vendor/plugins/dynamic_form/MIT-LICENSE +0 -20
  488. data/vendor/plugins/dynamic_form/README +0 -13
  489. data/vendor/plugins/dynamic_form/Rakefile +0 -10
  490. data/vendor/plugins/dynamic_form/dynamic_form.gemspec +0 -12
  491. data/vendor/plugins/dynamic_form/init.rb +0 -1
  492. data/vendor/plugins/dynamic_form/lib/action_view/helpers/dynamic_form.rb +0 -300
  493. data/vendor/plugins/dynamic_form/lib/action_view/locale/en.yml +0 -8
  494. data/vendor/plugins/dynamic_form/lib/dynamic_form.rb +0 -5
  495. data/vendor/plugins/dynamic_form/test/dynamic_form_i18n_test.rb +0 -42
  496. data/vendor/plugins/dynamic_form/test/dynamic_form_test.rb +0 -370
  497. data/vendor/plugins/dynamic_form/test/test_helper.rb +0 -9
  498. data/vendor/plugins/has_history/README +0 -12
  499. data/vendor/plugins/has_history/Rakefile +0 -22
  500. data/vendor/plugins/has_history/generators/history_migration/history_migration_generator.rb +0 -30
  501. data/vendor/plugins/has_history/generators/history_migration/templates/migration.rb +0 -14
  502. data/vendor/plugins/has_history/generators/history_model/history_model_generator.rb +0 -39
  503. data/vendor/plugins/has_history/generators/history_model/templates/fixtures.yml +0 -17
  504. data/vendor/plugins/has_history/generators/history_model/templates/functional_test.rb +0 -129
  505. data/vendor/plugins/has_history/generators/history_model/templates/migration.rb +0 -14
  506. data/vendor/plugins/has_history/generators/history_model/templates/model.rb +0 -4
  507. data/vendor/plugins/has_history/generators/history_model/templates/unit_test.rb +0 -75
  508. data/vendor/plugins/has_history/init.rb +0 -5
  509. data/vendor/plugins/has_history/install.rb +0 -1
  510. data/vendor/plugins/has_history/lib/has_history.rb +0 -178
  511. data/vendor/plugins/has_history/lib/tasks/has_history_tasks.rake +0 -4
  512. data/vendor/plugins/has_history/test/has_history_test.rb +0 -31
  513. data/vendor/plugins/has_history/test/ignorant_master.rb +0 -3
  514. data/vendor/plugins/has_history/test/ignorant_master_history.rb +0 -4
  515. data/vendor/plugins/has_history/test/lone_master.rb +0 -42
  516. data/vendor/plugins/has_history/test/paired_master.rb +0 -5
  517. data/vendor/plugins/has_history/test/paired_master_history.rb +0 -5
  518. data/vendor/plugins/has_history/test/test_helper.rb +0 -154
  519. data/vendor/plugins/has_history/uninstall.rb +0 -1
  520. data/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +0 -432
  521. data/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +0 -297
  522. data/vendor/plugins/rails_time/MIT-LICENSE +0 -20
  523. data/vendor/plugins/rails_time/README +0 -28
  524. data/vendor/plugins/rails_time/init.rb +0 -2
  525. data/vendor/plugins/rails_time/lib/activerecord_time_extension.rb +0 -28
  526. data/vendor/plugins/rails_time/lib/time_of_day.rb +0 -88
  527. data/vendor/plugins/rails_time/test/database.yml +0 -18
  528. data/vendor/plugins/rails_time/test/debug.log +0 -1
  529. data/vendor/plugins/rails_time/test/rails_time_test.rb +0 -122
  530. data/vendor/plugins/rails_time/test/schema.rb +0 -10
  531. data/vendor/plugins/rails_time/test/test_helper.rb +0 -17
  532. data/vendor/plugins/verification/MIT-LICENSE +0 -20
  533. data/vendor/plugins/verification/README +0 -34
  534. data/vendor/plugins/verification/Rakefile +0 -22
  535. data/vendor/plugins/verification/init.rb +0 -3
  536. data/vendor/plugins/verification/lib/action_controller/verification.rb +0 -132
  537. data/vendor/plugins/verification/test/test_helper.rb +0 -18
  538. data/vendor/plugins/verification/test/verification_test.rb +0 -270
  539. data/vendor/plugins/will_paginate/LICENSE +0 -18
  540. data/vendor/plugins/will_paginate/README +0 -138
  541. data/vendor/plugins/will_paginate/Rakefile +0 -27
  542. data/vendor/plugins/will_paginate/init.rb +0 -4
  543. data/vendor/plugins/will_paginate/lib/will_paginate.rb +0 -61
  544. data/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +0 -132
  545. data/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb +0 -80
  546. data/vendor/plugins/will_paginate/lib/will_paginate/finder.rb +0 -181
  547. data/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb +0 -206
  548. data/vendor/plugins/will_paginate/test/array_pagination_test.rb +0 -131
  549. data/vendor/plugins/will_paginate/test/boot.rb +0 -23
  550. data/vendor/plugins/will_paginate/test/console +0 -9
  551. data/vendor/plugins/will_paginate/test/finder_test.rb +0 -290
  552. data/vendor/plugins/will_paginate/test/fixtures/admin.rb +0 -3
  553. data/vendor/plugins/will_paginate/test/fixtures/developer.rb +0 -11
  554. data/vendor/plugins/will_paginate/test/fixtures/developers_projects.yml +0 -13
  555. data/vendor/plugins/will_paginate/test/fixtures/project.rb +0 -15
  556. data/vendor/plugins/will_paginate/test/fixtures/projects.yml +0 -7
  557. data/vendor/plugins/will_paginate/test/fixtures/replies.yml +0 -34
  558. data/vendor/plugins/will_paginate/test/fixtures/reply.rb +0 -5
  559. data/vendor/plugins/will_paginate/test/fixtures/schema.rb +0 -38
  560. data/vendor/plugins/will_paginate/test/fixtures/topic.rb +0 -4
  561. data/vendor/plugins/will_paginate/test/fixtures/topics.yml +0 -30
  562. data/vendor/plugins/will_paginate/test/fixtures/user.rb +0 -2
  563. data/vendor/plugins/will_paginate/test/fixtures/users.yml +0 -35
  564. data/vendor/plugins/will_paginate/test/helper.rb +0 -25
  565. data/vendor/plugins/will_paginate/test/lib/activerecord_test_case.rb +0 -23
  566. data/vendor/plugins/will_paginate/test/lib/activerecord_test_connector.rb +0 -67
  567. data/vendor/plugins/will_paginate/test/lib/load_fixtures.rb +0 -13
  568. data/vendor/plugins/will_paginate/test/pagination_test.rb +0 -240
@@ -1,90 +0,0 @@
1
- /**
2
- * @fileoverview Loads generic modules required for all widgets.
3
- *
4
- * <pre>
5
- * Copyright (c) 2004-2006 by Zapatec, Inc.
6
- * http://www.zapatec.com
7
- * 1700 MLK Way, Berkeley, California,
8
- * 94709, U.S.A.
9
- * All rights reserved.
10
- * </pre>
11
- */
12
-
13
- /* $Id: zapatec.js 4908 2006-10-25 15:19:32Z alex $ */
14
-
15
- if (typeof Zapatec == 'undefined') {
16
- /**
17
- * Namespace definition.
18
- * @constructor
19
- */
20
- Zapatec = function() {};
21
- }
22
-
23
- /**
24
- * Zapatec Suite version.
25
- * @private
26
- */
27
- Zapatec.version = '2.1';
28
-
29
- /**
30
- * Path to main Zapatec script.
31
- * @private
32
- */
33
- Zapatec.zapatecPath = function() {
34
- // Get all script elements
35
- var arrScripts = document.getElementsByTagName('script');
36
- // Find the script in the list
37
- for (var iScript = arrScripts.length - 1; iScript >= 0; iScript--) {
38
- var strSrc = arrScripts[iScript].getAttribute('src');
39
- if (!strSrc) {
40
- continue;
41
- }
42
- var arrTokens = strSrc.split('/');
43
- // Remove last token
44
- var strLastToken;
45
- if (Array.prototype.pop) {
46
- strLastToken = arrTokens.pop();
47
- } else {
48
- // IE 5
49
- strLastToken = arrTokens[arrTokens.length - 1];
50
- arrTokens.length -= 1;
51
- }
52
- if (strLastToken.indexOf('zapatec.js') == 0) {
53
- return arrTokens.length ? arrTokens.join('/') + '/' : '';
54
- }
55
- }
56
- // Not found
57
- return '';
58
- } ();
59
-
60
- // For backward compatibility
61
- if (Zapatec.version == '2.1.comp') {
62
- Zapatec.zapatecPath = Zapatec.zapatecPath.replace(/utils\/$/, '../utils/');
63
- }
64
-
65
- /**
66
- * Simply writes script tag to the document.
67
- *
68
- * <pre>
69
- * If special Zapatec.doNotInclude flag is set, this function does nothing.
70
- * </pre>
71
- *
72
- * @private
73
- * @param {string} strSrc Src attribute value of the script element
74
- * @param {string} strId Optional. Id of the script element
75
- */
76
- Zapatec.include = function(strSrc, strId) {
77
- // Check flag
78
- if (Zapatec.doNotInclude) {
79
- return;
80
- }
81
- // Include file
82
- document.write('<script type="text/javascript" src="' +
83
- strSrc + (typeof strId == 'string' ? '" id="' + strId : '') + '"></script>');
84
- };
85
-
86
- // Include required scripts
87
- Zapatec.include(Zapatec.zapatecPath + 'utils.js', 'Zapatec.Utils');
88
- Zapatec.include(Zapatec.zapatecPath + 'zpeventdriven.js', 'Zapatec.EventDriven');
89
- Zapatec.include(Zapatec.zapatecPath + 'transport.js', 'Zapatec.Transport');
90
- Zapatec.include(Zapatec.zapatecPath + 'zpwidget.js', 'Zapatec.Widget');
@@ -1,212 +0,0 @@
1
- // $Id: zpeventdriven.js 4322 2006-09-04 08:49:33Z shacka $
2
- /**
3
- * @fileoverview Zapatec EventDriven library. Base EventDriven class. Contains
4
- * functions to handle events and basic methods for event-driven class.
5
- *
6
- * <pre>
7
- * Copyright (c) 2004-2006 by Zapatec, Inc.
8
- * http://www.zapatec.com
9
- * 1700 MLK Way, Berkeley, California,
10
- * 94709, U.S.A.
11
- * All rights reserved.
12
- * </pre>
13
- */
14
-
15
- if (typeof Zapatec == 'undefined') {
16
- /**
17
- * @ignore Namespace definition.
18
- */
19
- Zapatec = {};
20
- }
21
-
22
- /**
23
- * Base event-driven class.
24
- *
25
- * @constructor
26
- */
27
- Zapatec.EventDriven = function() {};
28
-
29
- /**
30
- * Initializes object.
31
- */
32
- Zapatec.EventDriven.prototype.init = function() {
33
- // Holds events of this object
34
- this.events = {};
35
- };
36
-
37
- /**
38
- * Adds event listener.
39
- *
40
- * @param {string} strEvent Event name
41
- * @param {function} funcListener Event listener
42
- * @param {function} first If true funcListener will be put as the first one
43
- */
44
- Zapatec.EventDriven.prototype.
45
- addEventListener = function(strEvent, funcListener, first) {
46
- if (typeof funcListener != "function") {
47
- return false;
48
- }
49
- if (!this.events[strEvent]) {
50
- this.events[strEvent] = {
51
- listeners: []
52
- };
53
- }
54
- if (!first) {
55
- this.events[strEvent].listeners.push(funcListener);
56
- } else {
57
- this.events[strEvent].listeners.unshift(funcListener);
58
- }
59
- };
60
-
61
- /**
62
- * Removes event listener.
63
- *
64
- * @param {string} strEvent Event name
65
- * @param {function} funcListener Event listener
66
- */
67
- Zapatec.EventDriven.prototype.
68
- removeEventListener = function(strEvent, funcListener) {
69
- if (!this.events[strEvent]) {
70
- return;
71
- }
72
- var arrListeners = this.events[strEvent].listeners;
73
- for (var iListener = 0; iListener < arrListeners.length; iListener++) {
74
- if (arrListeners[iListener] == funcListener) {
75
- arrListeners.splice(iListener, 1);
76
- return;
77
- }
78
- }
79
- };
80
-
81
- /**
82
- * Checks if the event exists.
83
- *
84
- * @param {string} strEvent Event name
85
- * @return Exists
86
- * @type boolean
87
- */
88
- Zapatec.EventDriven.prototype.isEvent = function(strEvent) {
89
- if (this.events[strEvent]) {
90
- return true;
91
- }
92
- return false;
93
- };
94
-
95
- /**
96
- * Removes all listeners for the event.
97
- *
98
- * @param {string} strEvent Event name
99
- */
100
- Zapatec.EventDriven.prototype.removeEvent = function(strEvent) {
101
- if (this.events[strEvent]) {
102
- var undef;
103
- this.events[strEvent] = undef;
104
- }
105
- };
106
-
107
- /**
108
- * Fires event. Takes in one mandatory argument strEvent and optionally
109
- * any number of other arguments that should be passed to the listeners.
110
- *
111
- * @param {string} strEvent Event name
112
- */
113
- Zapatec.EventDriven.prototype.fireEvent = function(strEvent) {
114
- if (!this.events[strEvent]) {
115
- return;
116
- }
117
- var arrListeners = this.events[strEvent].listeners;
118
- for (var iListener = 0; iListener < arrListeners.length; iListener++) {
119
- // Remove first argument
120
- var arrArgs = [].slice.call(arguments, 1);
121
- // Call in scope of this object
122
- arrListeners[iListener].apply(this, arrArgs);
123
- }
124
- };
125
-
126
- /**
127
- * Holds static events.
128
- * @private
129
- */
130
- Zapatec.EventDriven.events = {};
131
-
132
- /**
133
- * Adds event listener to static event.
134
- *
135
- * @param {string} strEvent Event name
136
- * @param {function} funcListener Event listener
137
- */
138
- Zapatec.EventDriven.addEventListener = function(strEvent, funcListener) {
139
- if (typeof funcListener != "function") {
140
- return false;
141
- }
142
- if (!Zapatec.EventDriven.events[strEvent]) {
143
- Zapatec.EventDriven.events[strEvent] = {
144
- listeners: []
145
- };
146
- }
147
- Zapatec.EventDriven.events[strEvent].listeners.push(funcListener);
148
- };
149
-
150
- /**
151
- * Removes event listener from static event.
152
- *
153
- * @param {string} strEvent Event name
154
- * @param {function} funcListener Event listener
155
- */
156
- Zapatec.EventDriven.removeEventListener = function(strEvent, funcListener) {
157
- if (!Zapatec.EventDriven.events[strEvent]) {
158
- return;
159
- }
160
- var arrListeners = Zapatec.EventDriven.events[strEvent].listeners;
161
- for (var iListener = 0; iListener < arrListeners.length; iListener++) {
162
- if (arrListeners[iListener] == funcListener) {
163
- arrListeners.splice(iListener, 1);
164
- return;
165
- }
166
- }
167
- };
168
-
169
- /**
170
- * Checks if the static event exists.
171
- *
172
- * @param {string} strEvent Event name
173
- * @return Exists
174
- * @type boolean
175
- */
176
- Zapatec.EventDriven.isEvent = function(strEvent) {
177
- if (Zapatec.EventDriven.events[strEvent]) {
178
- return true;
179
- }
180
- return false;
181
- };
182
-
183
- /**
184
- * Removes all listeners for the static event.
185
- *
186
- * @param {string} strEvent Event name
187
- */
188
- Zapatec.EventDriven.removeEvent = function(strEvent) {
189
- if (Zapatec.EventDriven.events[strEvent]) {
190
- var undef;
191
- Zapatec.EventDriven.events[strEvent] = undef;
192
- }
193
- };
194
-
195
- /**
196
- * Fires static event. Takes in one mandatory argument strEvent and optionally
197
- * any number of other arguments that should be passed to the listeners.
198
- *
199
- * @param {string} strEvent Event name
200
- */
201
- Zapatec.EventDriven.fireEvent = function(strEvent) {
202
- if (!Zapatec.EventDriven.events[strEvent]) {
203
- return;
204
- }
205
- var arrListeners = Zapatec.EventDriven.events[strEvent].listeners;
206
- for (var iListener = 0; iListener < arrListeners.length; iListener++) {
207
- // Remove first argument
208
- var arrArgs = [].slice.call(arguments, 1);
209
- // Call listener
210
- arrListeners[iListener].apply(arrListeners[iListener], arrArgs);
211
- }
212
- };
@@ -1,729 +0,0 @@
1
- /**
2
- * @fileoverview Zapatec Widget library. Base Widget class.
3
- *
4
- * <pre>
5
- * Copyright (c) 2004-2006 by Zapatec, Inc.
6
- * http://www.zapatec.com
7
- * 1700 MLK Way, Berkeley, California,
8
- * 94709, U.S.A.
9
- * All rights reserved.
10
- * </pre>
11
- */
12
-
13
- /* $Id: zpwidget.js 4907 2006-10-25 15:09:26Z andrew $ */
14
-
15
- if (typeof Zapatec == 'undefined') {
16
- /**
17
- * @ignore Namespace definition.
18
- */
19
- Zapatec = {};
20
- }
21
-
22
- /**
23
- * Base widget class.
24
- *
25
- * <pre>
26
- * Defines following config options:
27
- *
28
- * <b>theme</b> [string] Theme name that will be used to display the widget.
29
- * Corresponding CSS file will be picked and added into the HTML document
30
- * automatically. Case insensitive. Default: "default".
31
- * May also contain relative or absolute URL of themes directory.
32
- * E.g. "../themes/default.css" or "http://my.web.host/themes/default.css".
33
- *
34
- * <b>themePath</b> [string] Relative or absolute URL to themes directory.
35
- * Trailing slash is required. Default: path to child widget's file +
36
- * "../themes/". You may also include path into "theme" option instead of using
37
- * "themePath" option.
38
- *
39
- * <b>asyncTheme</b> [boolean] Load theme asynchronously. This means that script
40
- * execution will not be suspended until theme is loaded. Theme will be applied
41
- * once it is loaded. Default: false.
42
- *
43
- * <b>source</b> Depends on "sourceType" option. Possible sources:
44
- * -----------------------------------------------------------------------------
45
- * sourceType | source
46
- * ---------------|-------------------------------------------------------------
47
- * 1) "html" | [object or string] HTMLElement or its id.
48
- * 2) "html/text" | [string] HTML fragment.
49
- * 3) "html/url" | [string] URL of HTML fragment.
50
- * 4) "json" | [object or string] JSON object or string (http://json.org).
51
- * 5) "json/url" | [string] URL of JSON data source.
52
- * 6) "xml" | [object or string] XMLDocument object or XML string.
53
- * 7) "xml/url" | [string] URL of XML data source.
54
- * -----------------------------------------------------------------------------
55
- *
56
- * <b>sourceType</b> [string] Used together with "source" option to specify how
57
- * source should be processed. Possible source types:
58
- * "html", "html/text", "html/url", "json", "json/url", "xml", "xml/url".
59
- * JSON format is described at http://www.json.org.
60
- *
61
- * <b>callbackSource</b> [function] May be used instead of "source" and
62
- * "sourceType" config options to get source depending on passed arguments.
63
- * Receives object with passed arguments. Must return following object:
64
- * {
65
- * source: [object or string] see table above for possible sources,
66
- * sourceType: [string] see table above for possible source types
67
- * }
68
- *
69
- * <b>asyncSource</b> [boolean] Load source asynchronously. This means that
70
- * script execution will not be suspended until source is loaded. Source will be
71
- * processed once it is loaded. Default: true.
72
- *
73
- * <b>reliableSource</b> [boolean] Used together with "json" or "json/url"
74
- * sourceType to skip JSON format verification. It saves a lot of time for large
75
- * data sets. Default: true.
76
- *
77
- * <b>eventListeners</b> [object] Associative array with event listeners:
78
- * {
79
- * [string] event name: [function] event listener,
80
- * ...
81
- * }
82
- * </pre>
83
- *
84
- * @constructor
85
- * @extends Zapatec.EventDriven
86
- * @param {object} objArgs User configuration
87
- */
88
- Zapatec.Widget = function(objArgs) {
89
- // User configuration
90
- this.config = {};
91
- // Call constructor of superclass
92
- Zapatec.Widget.SUPERconstructor.call(this);
93
- // Initialize object
94
- this.init(objArgs);
95
- };
96
-
97
- // Inherit EventDriven
98
- Zapatec.inherit(Zapatec.Widget, Zapatec.EventDriven);
99
-
100
- /**
101
- * @private Holds path to this file.
102
- */
103
- Zapatec.Widget.path = Zapatec.getPath('Zapatec.Widget');
104
-
105
- /**
106
- * Initializes object.
107
- *
108
- * <pre>
109
- * Important: Before calling this method, define config options for the widget.
110
- * Initially "this.config" object should contain all config options with their
111
- * default values. Then values of config options will be changed with user
112
- * configuration in this method. Config options provided by user that were not
113
- * found in "this.config" object will be ignored.
114
- * </pre>
115
- *
116
- * @param {object} objArgs User configuration
117
- */
118
- Zapatec.Widget.prototype.init = function(objArgs) {
119
- // Call parent method
120
- Zapatec.Widget.SUPERclass.init.call(this);
121
- // Add this widget to the list
122
- if (typeof this.id == 'undefined') {
123
- this.id = Zapatec.Widget.all.length;
124
- Zapatec.Widget.all.push(this);
125
- }
126
- // Configure
127
- this.configure(objArgs);
128
- // Add custom event listeners
129
- this.addUserEventListeners();
130
- // Add standard event listeners
131
- this.addStandardEventListeners();
132
- // Load theme
133
- this.loadTheme();
134
- };
135
-
136
- /**
137
- * Reconfigures the widget with new config options after it was initialized.
138
- * May be used to change look or behavior of the widget after it has loaded
139
- * the data. In the argument pass only values for changed config options.
140
- * There is no need to pass config options that were not changed.
141
- *
142
- * <pre>
143
- * Note: "eventListeners" config option is ignored by this method because it is
144
- * useful only on initialization. To add event listener after the widget was
145
- * initialized, use addEventListener method instead.
146
- * </pre>
147
- *
148
- * @param {object} objArgs Changes to user configuration
149
- */
150
- Zapatec.Widget.prototype.reconfigure = function(objArgs) {
151
- // Configure
152
- this.configure(objArgs);
153
- // Load theme
154
- this.loadTheme();
155
- };
156
-
157
- /**
158
- * Configures widget.
159
- *
160
- * @param {object} objArgs User configuration
161
- */
162
- Zapatec.Widget.prototype.configure = function(objArgs) {
163
- // Default configuration
164
- this.defineConfigOption('theme', 'default');
165
- if (typeof this.constructor.path != 'undefined') {
166
- this.defineConfigOption('themePath', this.constructor.path + '../themes/');
167
- } else {
168
- this.defineConfigOption('themePath', '../themes/');
169
- }
170
- this.defineConfigOption('asyncTheme', false);
171
- this.defineConfigOption('source');
172
- this.defineConfigOption('sourceType');
173
- this.defineConfigOption('callbackSource');
174
- this.defineConfigOption('asyncSource', true);
175
- this.defineConfigOption('reliableSource', true);
176
- this.defineConfigOption('eventListeners', {});
177
- // Get user configuration
178
- if (objArgs) {
179
- for (var strOption in objArgs) {
180
- if (typeof this.config[strOption] != 'undefined') {
181
- this.config[strOption] = objArgs[strOption];
182
- } else {
183
- Zapatec.Log({
184
- description: "Unknown config option: " + strOption
185
- });
186
- }
187
- }
188
- }
189
- };
190
-
191
- /**
192
- * Returns current configuration of the widget.
193
- *
194
- * @return Current configuration
195
- * @type object
196
- */
197
- Zapatec.Widget.prototype.getConfiguration = function() {
198
- return this.config;
199
- };
200
-
201
- /**
202
- * @private Array to access any widget on the page by its id number.
203
- */
204
- Zapatec.Widget.all = [];
205
-
206
- /**
207
- * Finds a widget by id.
208
- *
209
- * @param {number} Widget id
210
- * @return Widget or undefined if not found
211
- * @type object
212
- */
213
- Zapatec.Widget.getWidgetById = function(iId) {
214
- return Zapatec.Widget.all[iId];
215
- };
216
-
217
- /**
218
- * @private Defines config option if it is not defined yet. Sets default value
219
- * of new config option. If default value is not specified, it is set to null.
220
- *
221
- * @param {string} strOption Config option name
222
- * @param {any} val Optional. Config option default value
223
- */
224
- Zapatec.Widget.prototype.defineConfigOption = function(strOption, val) {
225
- if (typeof this.config[strOption] == 'undefined') {
226
- if (typeof val == 'undefined') {
227
- this.config[strOption] = null;
228
- } else {
229
- this.config[strOption] = val;
230
- }
231
- }
232
- };
233
-
234
- /**
235
- * Adds custom event listeners.
236
- */
237
- Zapatec.Widget.prototype.addUserEventListeners = function() {
238
- for (var strEvent in this.config.eventListeners) {
239
- if (this.config.eventListeners.hasOwnProperty(strEvent)) {
240
- this.addEventListener(strEvent, this.config.eventListeners[strEvent]);
241
- }
242
- }
243
- };
244
-
245
- /**
246
- * Adds standard event listeners.
247
- */
248
- Zapatec.Widget.prototype.addStandardEventListeners = function() {
249
- this.addEventListener('loadThemeError', Zapatec.Widget.loadThemeError);
250
- };
251
-
252
- /**
253
- * Displays the reason why the theme was not loaded.
254
- * @private
255
- */
256
- Zapatec.Widget.loadThemeError = function(objError) {
257
- var strDescription = "Can't load theme.";
258
- if (objError && objError.errorDescription) {
259
- strDescription += ' ' + objError.errorDescription;
260
- }
261
- Zapatec.Log({
262
- description: strDescription
263
- });
264
- };
265
-
266
- /**
267
- * Loads specified theme.
268
- */
269
- Zapatec.Widget.prototype.loadTheme = function() {
270
- // Correct theme config option
271
- if (typeof this.config.theme == 'string' && this.config.theme.length) {
272
- // Remove path
273
- var iPos = this.config.theme.lastIndexOf('/');
274
- if (iPos >= 0) {
275
- iPos++; // Go to first char of theme name
276
- this.config.themePath = this.config.theme.substring(0, iPos);
277
- this.config.theme = this.config.theme.substring(iPos);
278
- }
279
- // Remove file extension
280
- iPos = this.config.theme.lastIndexOf('.');
281
- if (iPos >= 0) {
282
- this.config.theme = this.config.theme.substring(0, iPos);
283
- }
284
- // Make lower case
285
- this.config.theme = this.config.theme.toLowerCase();
286
- } else {
287
- this.config.theme = '';
288
- }
289
- // Load theme
290
- if(this.config.theme){
291
- this.fireEvent('loadThemeStart');
292
- this.themeLoaded = false;
293
- var objWidget = this;
294
- var strUrl = this.config.themePath + this.config.theme + '.css';
295
- Zapatec.Transport.loadCss({
296
- // URL of theme file
297
- url: strUrl,
298
- // Suspend script execution until theme is loaded or error received
299
- async: this.config.asyncTheme,
300
- // Onload event handler
301
- onLoad: function() {
302
- objWidget.fireEvent('loadThemeEnd');
303
- objWidget.themeLoaded = true;
304
- objWidget.hideLoader();
305
- },
306
- onError: function(objError) {
307
- objWidget.fireEvent('loadThemeEnd');
308
- objWidget.fireEvent('loadThemeError', objError);
309
- objWidget.themeLoaded = true;
310
- objWidget.hideLoader();
311
- }
312
- });
313
- }
314
- }
315
- /**
316
- * Forms class name from theme name and provided prefix and suffix.
317
- *
318
- * <pre>
319
- * Arguments object format:
320
- * {
321
- * prefix: [string, optional] prefix,
322
- * suffix: [string, optional] suffix
323
- * }
324
- * E.g. if this.config.theme == 'default' and following object provided
325
- * {
326
- * prefix: 'zpWidget',
327
- * suffix: 'Container'
328
- * },
329
- * class name will be 'zpWidgetDefaultContainer'.
330
- * </pre>
331
- *
332
- * @param objArgs [object] Arguments object
333
- * @return Class name
334
- * @type string
335
- */
336
- Zapatec.Widget.prototype.getClassName = function(objArgs) {
337
- var arrClassName = [];
338
- if (objArgs && objArgs.prefix) {
339
- arrClassName.push(objArgs.prefix);
340
- }
341
- if (this.config.theme != '') {
342
- arrClassName.push(this.config.theme.charAt(0).toUpperCase());
343
- arrClassName.push(this.config.theme.substr(1));
344
- }
345
- if (objArgs && objArgs.suffix) {
346
- arrClassName.push(objArgs.suffix);
347
- }
348
- return arrClassName.join('');
349
- };
350
-
351
- /**
352
- * @private if theme for current widget is not loaded yet - this method will
353
- * hide widget container and show progress bar instead of it.
354
- */
355
- Zapatec.Widget.prototype.showLoader = function(message){
356
- if(this.container != null && this.config.theme && !this.themeLoaded){
357
- // if window content is not fulle loaded - progress bar can resize
358
- // incorrectly
359
- if(!Zapatec.windowLoaded){
360
- var self = this;
361
- Zapatec.Utils.addEvent(window, "load", function(){self.showLoader(message)});
362
- return null;
363
- }
364
-
365
- if(typeof(Zapatec.Progress) == 'undefined'){
366
- var self = this;
367
-
368
- Zapatec.Transport.loadJS({
369
- module: 'progress',
370
- onLoad: function() {
371
- // if theme is already loaded - do not show progress bar
372
- if(self.themeLoaded){
373
- return null;
374
- }
375
-
376
- self.showLoader(message);
377
- }
378
- });
379
-
380
- return null;
381
- }
382
-
383
- this.loader = new Zapatec.Progress({
384
- container: this.container,
385
- themePath: Zapatec.zapatecPath + "../zpextra/themes/progress/"
386
- });
387
-
388
- this.loader.start(message || 'loading');
389
- this.container.style.visibility = 'hidden';
390
- }
391
- }
392
-
393
- /**
394
- * @private Hides progressbar created using #showLoader and shows widget.
395
- * This method will be called automatically on theme loading.
396
- */
397
- Zapatec.Widget.prototype.hideLoader = function(){
398
- if(this.loader && this.loader.isActive()){
399
- this.container.style.visibility = '';
400
- this.loader.stop();
401
- }
402
- }
403
-
404
- /**
405
- * Shows widget using given effects and animation speed. You need to define
406
- * this.container to use this method.
407
- * @param {object} effects list of effects to apply
408
- * @param {number} animSpeed possible values - 1..100. Bigger value - more fast animation.
409
- * @param {function} onFinish Function to call on effect end.
410
- */
411
- Zapatec.Widget.prototype.showContainer = function(effects, animSpeed, onFinish){
412
- return this.showHideContainer(effects, animSpeed, onFinish, true);
413
- }
414
-
415
- /**
416
- * Hides widget using given effects and animation speed. You need to define
417
- * this.container to use this method.
418
- * @param {object} effects list of effects to apply
419
- * @param {number} animSpeed possible values - 1..100. Bigger value - more fast animation.
420
- */
421
- Zapatec.Widget.prototype.hideContainer = function(effects, animSpeed, onFinish){
422
- return this.showHideContainer(effects, animSpeed, onFinish, false);
423
- }
424
-
425
- /**
426
- * Show/hides widget using given effects and animation speed. You need to define
427
- * this.container to use this method.
428
- * @param {object} effects list of effects to apply
429
- * @param {number} animSpeed possible values - 1..100. Bigger value - more fast animation.
430
- * @param {boolean} show if true - show widget. Otherwise - hide.
431
- */
432
- Zapatec.Widget.prototype.showHideContainer = function(effects, animSpeed, onFinish, show){
433
- if(this.container == null){
434
- return null;
435
- }
436
-
437
- if(typeof(Zapatec.Effects) == 'undefined'){
438
- var self = this;
439
-
440
- Zapatec.Transport.loadJS({
441
- url: Zapatec.Widget.path + '../../zpeffects/src/effects.js',
442
- onLoad: function() {
443
- self.showHideContainer(effects, animSpeed, onFinish, show);
444
- }
445
- });
446
-
447
- return false;
448
- }
449
-
450
- if(animSpeed == null && isNaN(parseInt(animSpeed))){
451
- animSpeed = 5;
452
- }
453
-
454
- if(effects == null || effects.length == 0){
455
- if(show){
456
- this.container.style.display = this.originalContainerDisplay;
457
- this.originalContainerDisplay = null;
458
- } else {
459
- this.originalContainerDisplay = this.container.style.display;
460
- this.container.style.display = 'none';
461
- }
462
-
463
- if (onFinish) {
464
- onFinish();
465
- }
466
- } else {
467
- if(show){
468
- Zapatec.Effects.show(this.container, animSpeed, effects, onFinish);
469
- } else {
470
- Zapatec.Effects.hide(this.container, animSpeed, effects, onFinish);
471
- }
472
- }
473
-
474
- return true;
475
- }
476
-
477
- /**
478
- * Loads data from the specified source.
479
- *
480
- * <pre>
481
- * If source is URL, fires following events:
482
- * <ul>
483
- * <li><i>fetchSourceStart</i> when Zapatec.Transport#fetch is called</li>
484
- * <li><i>fetchSourceEnd</i> when Zapatec.Transport#fetch returns result or
485
- * error</li>
486
- * <li><i>fetchSourceError</i> when Zapatec.Transport#fetch returns error.
487
- * fetchSourceError event listener receives object returned by
488
- * Zapatec.Transport#fetch</li>
489
- * </ul>
490
- *
491
- * Fires following events:
492
- * <ul>
493
- * <li><i>loadDataStart</i> when data parsing is started</li>
494
- * <li><i>loadDataEnd</i> when data parsing is ended or error occured during
495
- * fetch</li>
496
- * </ul>
497
- * </pre>
498
- *
499
- * @param {object} objArgs Arguments object passed to callbackSource function
500
- */
501
- Zapatec.Widget.prototype.loadData = function(objArgs) {
502
- // Get source using callback function
503
- if (typeof this.config.callbackSource == 'function') {
504
- var objSource = this.config.callbackSource(objArgs);
505
- if (objSource) {
506
- if (typeof objSource.source != 'undefined') {
507
- this.config.source = objSource.source;
508
- }
509
- if (typeof objSource.sourceType != 'undefined') {
510
- this.config.sourceType = objSource.sourceType;
511
- }
512
- }
513
- }
514
- // Process source
515
- if (this.config.source != null && this.config.sourceType != null) {
516
- var strSourceType = this.config.sourceType.toLowerCase();
517
- if (strSourceType == 'html') {
518
- this.fireEvent('loadDataStart');
519
- this.loadDataHtml(Zapatec.Widget.getElementById(this.config.source));
520
- this.fireEvent('loadDataEnd');
521
- } else if (strSourceType == 'html/text') {
522
- this.fireEvent('loadDataStart');
523
- this.loadDataHtmlText(this.config.source);
524
- this.fireEvent('loadDataEnd');
525
- } else if (strSourceType == 'html/url') {
526
- this.fireEvent('fetchSourceStart');
527
- // Fetch source
528
- var objWidget = this;
529
- Zapatec.Transport.fetch({
530
- // URL of the source
531
- url: this.config.source,
532
- // Suspend script execution until source is loaded or error received
533
- async: this.config.asyncSource,
534
- // Onload event handler
535
- onLoad: function(objRequest) {
536
- objWidget.fireEvent('fetchSourceEnd');
537
- objWidget.fireEvent('loadDataStart');
538
- objWidget.loadDataHtmlText(objRequest.responseText);
539
- objWidget.fireEvent('loadDataEnd');
540
- },
541
- // Onerror event handler
542
- onError: function(objError) {
543
- objWidget.fireEvent('fetchSourceEnd');
544
- objWidget.fireEvent('loadDataEnd');
545
- objWidget.fireEvent('fetchSourceError', objError);
546
- }
547
- });
548
- } else if (strSourceType == 'json') {
549
- this.fireEvent('loadDataStart');
550
- if (typeof this.config.source == 'object') {
551
- this.loadDataJson(this.config.source);
552
- } else if (this.config.reliableSource) {
553
- this.loadDataJson(eval(this.config.source));
554
- } else {
555
- this.loadDataJson(Zapatec.Transport.parseJson({
556
- strJson: this.config.source
557
- }));
558
- }
559
- this.fireEvent('loadDataEnd');
560
- } else if (strSourceType == 'json/url') {
561
- this.fireEvent('fetchSourceStart');
562
- // Fetch source
563
- var objWidget = this;
564
- Zapatec.Transport.fetchJsonObj({
565
- // URL of the source
566
- url: this.config.source,
567
- // Suspend script execution until source is loaded or error received
568
- async: this.config.asyncSource,
569
- // Skip JSON format verification
570
- reliable: this.config.reliableSource,
571
- // Onload event handler
572
- onLoad: function(objResult) {
573
- objWidget.fireEvent('fetchSourceEnd');
574
- objWidget.fireEvent('loadDataStart');
575
- objWidget.loadDataJson(objResult);
576
- objWidget.fireEvent('loadDataEnd');
577
- },
578
- // Onerror event handler
579
- onError: function(objError) {
580
- objWidget.fireEvent('fetchSourceEnd');
581
- objWidget.fireEvent('loadDataEnd');
582
- objWidget.fireEvent('fetchSourceError', objError);
583
- }
584
- });
585
- } else if (strSourceType == 'xml') {
586
- this.fireEvent('loadDataStart');
587
- if (typeof this.config.source == 'object') {
588
- this.loadDataXml(this.config.source);
589
- } else {
590
- this.loadDataXml(Zapatec.Transport.parseXml({
591
- strXml: this.config.source
592
- }));
593
- }
594
- this.fireEvent('loadDataEnd');
595
- } else if (strSourceType == 'xml/url') {
596
- this.fireEvent('fetchSourceStart');
597
- // Fetch source
598
- var objWidget = this;
599
- Zapatec.Transport.fetchXmlDoc({
600
- // URL of the source
601
- url: this.config.source,
602
- // Suspend script execution until source is loaded or error received
603
- async: this.config.asyncSource,
604
- // Onload event handler
605
- onLoad: function(objResult) {
606
- objWidget.fireEvent('fetchSourceEnd');
607
- objWidget.fireEvent('loadDataStart');
608
- objWidget.loadDataXml(objResult);
609
- objWidget.fireEvent('loadDataEnd');
610
- },
611
- // Onerror event handler
612
- onError: function(objError) {
613
- objWidget.fireEvent('fetchSourceEnd');
614
- objWidget.fireEvent('loadDataEnd');
615
- objWidget.fireEvent('fetchSourceError', objError);
616
- }
617
- });
618
- }
619
- } else {
620
- this.fireEvent('loadDataStart');
621
- this.loadDataHtml(Zapatec.Widget.getElementById(this.config.source));
622
- this.fireEvent('loadDataEnd');
623
- }
624
- };
625
-
626
- /**
627
- * Loads data from the HTML source. Override this in child class.
628
- *
629
- * @param {object} objSource Source HTMLElement object
630
- */
631
- Zapatec.Widget.prototype.loadDataHtml = function(objSource) {};
632
-
633
- /**
634
- * Loads data from the HTML fragment source.
635
- *
636
- * @param {string} strSource Source HTML fragment
637
- */
638
- Zapatec.Widget.prototype.loadDataHtmlText = function(strSource) {
639
- // Parse HTML fragment
640
- var objTempContainer = Zapatec.Transport.parseHtml(strSource);
641
- // Load data
642
- this.loadDataHtml(objTempContainer.firstChild);
643
- };
644
-
645
- /**
646
- * Loads data from the JSON source. Override this in child class.
647
- *
648
- * @param {object} objSource Source JSON object
649
- */
650
- Zapatec.Widget.prototype.loadDataJson = function(objSource) {};
651
-
652
- /**
653
- * Loads data from the XML source. Override this in child class.
654
- *
655
- * @param {object} objSource Source XMLDocument object
656
- */
657
- Zapatec.Widget.prototype.loadDataXml = function(objSource) {
658
- };
659
-
660
- /**
661
- * Finds a widget by id and calls specified method with specified arguments and
662
- * returns value from the method.
663
- *
664
- * @param {number} iWidgetId Widget id
665
- * @param {string} strMethod Method name
666
- * @param {any} any Any number of arguments
667
- * @return Value returned from the method
668
- * @type any
669
- */
670
- Zapatec.Widget.callMethod = function(iWidgetId, strMethod) {
671
- // Get Widget object
672
- var objWidget = Zapatec.Widget.getWidgetById(iWidgetId);
673
- if (objWidget && typeof objWidget[strMethod] == 'function') {
674
- // Remove first two arguments
675
- var arrArgs = [].slice.call(arguments, 2);
676
- // Call method
677
- return objWidget[strMethod].apply(objWidget, arrArgs);
678
- }
679
- };
680
-
681
- /**
682
- * Converts element id to reference.
683
- *
684
- * @param {string} element Element id
685
- * @return Reference to element
686
- * @type object
687
- */
688
- Zapatec.Widget.getElementById = function(element) {
689
- if (typeof element == 'string') {
690
- return document.getElementById(element);
691
- }
692
- return element;
693
- };
694
-
695
- /**
696
- * Returns style attribute of the specified element.
697
- *
698
- * @param {object} element Element
699
- * @return Style attribute value
700
- * @type string
701
- */
702
- Zapatec.Widget.getStyle = function(element) {
703
- var style = element.getAttribute('style') || '';
704
- if (typeof style == 'string') {
705
- return style;
706
- }
707
- return style.cssText;
708
- };
709
-
710
- /**
711
- * Emulates "window.event" for certain events in Mozilla. To be able to access
712
- * Event object when event handler is set using element attribute, e.g.
713
- * &lt;a onclick="eventHandler()"&gt;.
714
- *
715
- * @param {object} arrEventNames array of event names where "window.event" is
716
- * needed, e.g. ['click', 'dblclick'].
717
- */
718
- Zapatec.Widget.emulateWindowEvent = function(arrEventNames) {
719
- if (document.addEventListener) {
720
- // Set up emulation for certain events
721
- for (var iEvent = 0; iEvent < arrEventNames.length; iEvent++) {
722
- document.addEventListener(arrEventNames[iEvent], function (objEvent) {
723
- if (objEvent) {
724
- window.event = objEvent;
725
- }
726
- }, true);
727
- }
728
- }
729
- };