backlog 0.37.2 → 0.41.4

Sign up to get free protection for your applications and to get access to all the features.
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
- };