spiderfw 0.5.19 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (255) hide show
  1. data/CHANGELOG +7 -0
  2. data/VERSION +1 -1
  3. data/apps/core/auth/lib/rbac.rb +7 -2
  4. data/apps/core/auth/models/mixins/rbac_provider.rb +66 -4
  5. data/apps/core/components/assets.rb +63 -33
  6. data/apps/core/components/public/js/jquery/{jquery-1.4.3.js → jquery-1.5.2.js} +2617 -1126
  7. data/apps/core/components/public/js/jquery/jquery-tools-1.2.5/overlay/overlay.apple.js +155 -0
  8. data/apps/core/components/public/js/jquery/jquery-tools-1.2.5/overlay/overlay.js +293 -0
  9. data/apps/core/components/public/js/jquery/jquery-tools-1.2.5/scrollable/scrollable.js +335 -0
  10. data/apps/core/components/public/js/jquery/jquery-tools-1.2.5/tabs/tabs.css +59 -0
  11. data/apps/core/components/public/js/jquery/jquery-tools-1.2.5/tabs/tabs.js +283 -0
  12. data/apps/core/components/public/js/jquery/jquery-tools-1.2.5/toolbox/toolbox.expose.js +224 -0
  13. data/apps/core/components/public/js/jquery/jquery-tools-1.2.5/tooltip/tooltip.dynamic.js +150 -0
  14. data/apps/core/components/public/js/jquery/jquery-tools-1.2.5/tooltip/tooltip.js +343 -0
  15. data/apps/core/components/public/js/jquery/jquery-tools-1.2.5/tooltip/tooltip.slide.js +78 -0
  16. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/button_bg.png +0 -0
  17. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/datepicker.gif +0 -0
  18. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/icon_sprite.png +0 -0
  19. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/progress_bar.gif +0 -0
  20. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/slider_h_bg.gif +0 -0
  21. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/slider_handles.png +0 -0
  22. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/slider_v_bg.gif +0 -0
  23. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/tab_bg.gif +0 -0
  24. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/the_gradient.gif +0 -0
  25. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-anim_basic_16x16.gif +0 -0
  26. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  27. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  28. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-bg_flat_10_000000_40x100.png +0 -0
  29. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  30. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  31. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  32. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  33. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  34. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  35. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-icons_222222_256x240.png +0 -0
  36. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-icons_228ef1_256x240.png +0 -0
  37. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-icons_ef8c08_256x240.png +0 -0
  38. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-icons_ffd27a_256x240.png +0 -0
  39. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/images/ui-icons_ffffff_256x240.png +0 -0
  40. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4 → jquery-ui-1.8.11}/css/Aristo/jquery-ui.custom.css +0 -0
  41. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-af.js +0 -0
  42. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/i18n/jquery.ui.datepicker-ar-DZ.js +23 -0
  43. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-ar.js +7 -8
  44. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-az.js +0 -0
  45. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-bg.js +0 -0
  46. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-bs.js +0 -0
  47. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-ca.js +0 -0
  48. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-cs.js +0 -0
  49. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-da.js +0 -0
  50. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-de.js +0 -0
  51. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-el.js +0 -0
  52. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/i18n/jquery.ui.datepicker-en-AU.js +23 -0
  53. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-en-GB.js +0 -0
  54. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/i18n/jquery.ui.datepicker-en-NZ.js +23 -0
  55. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-eo.js +0 -0
  56. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-es.js +0 -0
  57. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-et.js +0 -0
  58. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-eu.js +0 -0
  59. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-fa.js +0 -0
  60. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-fi.js +0 -0
  61. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-fo.js +0 -0
  62. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-fr-CH.js +0 -0
  63. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-fr.js +12 -10
  64. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/i18n/jquery.ui.datepicker-gl.js +23 -0
  65. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-he.js +0 -0
  66. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-hr.js +0 -0
  67. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-hu.js +1 -1
  68. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-hy.js +0 -0
  69. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-id.js +0 -0
  70. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-is.js +0 -0
  71. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-it.js +0 -0
  72. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-ja.js +0 -0
  73. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-ko.js +0 -0
  74. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/i18n/jquery.ui.datepicker-kz.js +23 -0
  75. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-lt.js +0 -0
  76. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-lv.js +0 -0
  77. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/i18n/jquery.ui.datepicker-ml.js +23 -0
  78. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-ms.js +0 -0
  79. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-nl.js +0 -0
  80. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/i18n/jquery.ui.datepicker-no.js +23 -0
  81. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-pl.js +0 -0
  82. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-pt-BR.js +0 -0
  83. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/i18n/jquery.ui.datepicker-pt.js +22 -0
  84. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/i18n/jquery.ui.datepicker-rm.js +21 -0
  85. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-ro.js +0 -0
  86. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-ru.js +1 -1
  87. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-sk.js +0 -0
  88. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-sl.js +0 -0
  89. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-sq.js +0 -0
  90. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-sr-SR.js +0 -0
  91. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-sr.js +0 -0
  92. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-sv.js +0 -0
  93. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-ta.js +0 -0
  94. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-th.js +1 -1
  95. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/i18n/jquery.ui.datepicker-tj.js +23 -0
  96. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-tr.js +0 -0
  97. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-uk.js +0 -0
  98. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-vi.js +0 -0
  99. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-zh-CN.js +0 -0
  100. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-zh-HK.js +0 -0
  101. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/i18n/jquery.ui.datepicker-zh-TW.js +0 -0
  102. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.blind.js +3 -3
  103. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.bounce.js +3 -3
  104. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.clip.js +3 -3
  105. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.core.js +48 -15
  106. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.drop.js +3 -3
  107. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.explode.js +2 -2
  108. data/apps/core/components/public/js/jquery/jquery-ui-1.8.11/ui/jquery.effects.fade.js +32 -0
  109. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.fold.js +3 -3
  110. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.highlight.js +2 -2
  111. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.pulsate.js +2 -2
  112. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.scale.js +4 -4
  113. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.shake.js +3 -3
  114. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.slide.js +4 -4
  115. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.effects.transfer.js +2 -2
  116. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.accordion.js +33 -20
  117. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.autocomplete.js +104 -42
  118. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.button.js +35 -13
  119. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.core.js +111 -84
  120. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.datepicker.js +87 -46
  121. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.dialog.js +105 -75
  122. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.draggable.js +17 -15
  123. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.droppable.js +5 -5
  124. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.mouse.js +16 -11
  125. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.position.js +51 -32
  126. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.progressbar.js +24 -10
  127. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.resizable.js +7 -7
  128. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.selectable.js +3 -3
  129. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.slider.js +9 -7
  130. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.sortable.js +22 -20
  131. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.tabs.js +15 -14
  132. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → jquery-ui-1.8.11}/ui/jquery.ui.widget.js +50 -25
  133. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → plugins/bsmselect}/GPL-LICENSE.txt +1 -1
  134. data/apps/core/components/public/js/jquery/{jquery-ui-1.8.4/development-bundle → plugins/bsmselect}/MIT-LICENSE.txt +3 -7
  135. data/apps/core/components/public/js/jquery/plugins/bsmselect/README.md +185 -0
  136. data/apps/core/components/public/js/jquery/plugins/bsmselect/css/jquery.bsmselect.css +64 -0
  137. data/apps/core/components/public/js/jquery/plugins/bsmselect/js/jquery.bsmselect.compatibility.js +60 -0
  138. data/apps/core/components/public/js/jquery/plugins/bsmselect/js/jquery.bsmselect.js +381 -0
  139. data/apps/core/components/public/js/jquery/plugins/bsmselect/js/jquery.bsmselect.sortable.js +49 -0
  140. data/apps/core/components/public/js/plugins/sortable.js +16 -7
  141. data/apps/core/components/public/js/spider.js +60 -41
  142. data/apps/core/components/widgets/admin/admin.shtml +1 -1
  143. data/apps/core/components/widgets/list/list.shtml +2 -2
  144. data/apps/core/components/widgets/month_calendar/month_calendar.shtml +23 -20
  145. data/apps/core/components/widgets/switcher/switcher.rb +77 -21
  146. data/apps/core/components/widgets/switcher/templates/default.shtml +8 -0
  147. data/apps/core/components/widgets/switcher/templates/table.shtml +15 -0
  148. data/apps/core/components/widgets/table/table.rb +4 -1
  149. data/apps/core/components/widgets/table/table.shtml +10 -8
  150. data/apps/core/forms/public/css/form.css +9 -1
  151. data/apps/core/forms/public/date_time.js +14 -2
  152. data/apps/core/forms/public/input.js +1 -1
  153. data/apps/core/forms/public/select.js +4 -3
  154. data/apps/core/forms/tags/element_row.erb +11 -2
  155. data/apps/core/forms/widgets/inputs/date_time/date_time.rb +9 -0
  156. data/apps/core/forms/widgets/inputs/date_time/date_time.shtml +1 -1
  157. data/apps/core/forms/widgets/inputs/html_area/html_area.shtml +2 -2
  158. data/apps/core/forms/widgets/inputs/input/input.rb +0 -3
  159. data/apps/core/forms/widgets/inputs/select/select.shtml +2 -2
  160. data/apps/messenger/backends/email/sendmail.rb +20 -0
  161. data/apps/messenger/backends/email/smtp.rb +12 -14
  162. data/apps/messenger/backends/email/test.rb +20 -0
  163. data/apps/messenger/config/options.rb +9 -9
  164. data/apps/messenger/config/test.config.yml +2 -0
  165. data/apps/messenger/controllers/mixins/messenger_helper.rb +41 -15
  166. data/apps/messenger/lib/email_backend.rb +10 -0
  167. data/apps/messenger/messenger.rb +45 -26
  168. data/apps/messenger/test/features/attachments.feature +26 -0
  169. data/apps/messenger/test/features/messenger_helper.feature +31 -0
  170. data/apps/messenger/test/features/sending_email.feature +10 -0
  171. data/apps/messenger/test/features/step_definitions/common_steps.rb +11 -0
  172. data/apps/messenger/test/features/step_definitions/email_steps.rb +98 -0
  173. data/apps/messenger/test/features/support/env.rb +11 -0
  174. data/apps/messenger/test/files/test_file1.txt +1 -0
  175. data/apps/messenger/test/lib/controllers/mail_test_controller.rb +34 -0
  176. data/apps/messenger/test/templates/email/multipart.html.erb +1 -0
  177. data/apps/messenger/test/templates/email/multipart.txt.erb +1 -0
  178. data/apps/messenger/test/templates/email/simple.erb +1 -0
  179. data/apps/messenger/test/templates/email/vars.erb +1 -0
  180. data/lib/spiderfw/cmd/cmd.rb +4 -0
  181. data/lib/spiderfw/cmd/commands/webserver.rb +12 -59
  182. data/lib/spiderfw/config/configuration.rb +4 -0
  183. data/lib/spiderfw/config/options/spider.rb +25 -8
  184. data/lib/spiderfw/controller/controller.rb +10 -4
  185. data/lib/spiderfw/controller/first_responder.rb +6 -20
  186. data/lib/spiderfw/controller/http_controller.rb +2 -1
  187. data/lib/spiderfw/controller/mixins/http_mixin.rb +12 -1
  188. data/lib/spiderfw/controller/mixins/visual.rb +3 -16
  189. data/lib/spiderfw/env.rb +1 -1
  190. data/lib/spiderfw/http/server.rb +178 -2
  191. data/lib/spiderfw/model/base_model.rb +142 -111
  192. data/lib/spiderfw/model/data_type.rb +15 -0
  193. data/lib/spiderfw/model/datatypes/decimal.rb +8 -0
  194. data/lib/spiderfw/model/datatypes/pk.rb +29 -0
  195. data/lib/spiderfw/model/datatypes.rb +1 -0
  196. data/lib/spiderfw/model/element.rb +5 -1
  197. data/lib/spiderfw/model/extended_models/managed.rb +1 -1
  198. data/lib/spiderfw/model/junction.rb +23 -0
  199. data/lib/spiderfw/model/mappers/db_mapper.rb +96 -80
  200. data/lib/spiderfw/model/mappers/document_mapper.rb +315 -0
  201. data/lib/spiderfw/model/mappers/mapper.rb +164 -75
  202. data/lib/spiderfw/model/mixins/list.rb +1 -0
  203. data/lib/spiderfw/model/mixins/versioned.rb +63 -27
  204. data/lib/spiderfw/model/model.rb +36 -9
  205. data/lib/spiderfw/model/query_funcs.rb +3 -0
  206. data/lib/spiderfw/model/query_set.rb +21 -1
  207. data/lib/spiderfw/model/storage/base_storage.rb +259 -6
  208. data/lib/spiderfw/model/storage/{db/db_connection_pool.rb → connection_pool.rb} +25 -21
  209. data/lib/spiderfw/model/storage/db/adapters/mysql.rb +25 -5
  210. data/lib/spiderfw/model/storage/db/adapters/oracle.rb +1 -1
  211. data/lib/spiderfw/model/storage/db/connectors/jdbc_oracle.rb +2 -2
  212. data/lib/spiderfw/model/storage/db/connectors/oci8.rb +3 -4
  213. data/lib/spiderfw/model/storage/db/db_storage.rb +18 -219
  214. data/lib/spiderfw/model/storage/document/adapters/mongodb.rb +307 -0
  215. data/lib/spiderfw/model/storage/document/document.rb +7 -0
  216. data/lib/spiderfw/model/storage/document/document_storage.rb +34 -0
  217. data/lib/spiderfw/model/storage.rb +23 -11
  218. data/lib/spiderfw/model/unit_of_work.rb +45 -22
  219. data/lib/spiderfw/spider.rb +660 -0
  220. data/lib/spiderfw/templates/blocks/html.rb +4 -2
  221. data/lib/spiderfw/templates/blocks/run.rb +1 -1
  222. data/lib/spiderfw/templates/blocks/tag_if.rb +1 -1
  223. data/lib/spiderfw/templates/blocks/widget.rb +1 -1
  224. data/lib/spiderfw/templates/layout.rb +29 -5
  225. data/lib/spiderfw/templates/template.rb +72 -7
  226. data/lib/spiderfw/templates/template_blocks.rb +1 -1
  227. data/lib/spiderfw/test/capybara.rb +7 -0
  228. data/lib/spiderfw/test/cucumber.rb +12 -0
  229. data/lib/spiderfw/test/page_object.rb +29 -0
  230. data/lib/spiderfw/test/spec.rb +20 -0
  231. data/lib/spiderfw/test/stubs/mapper_stub.rb +18 -0
  232. data/lib/spiderfw/test/stubs/storage_stub.rb +23 -0
  233. data/lib/spiderfw/test/unit.rb +23 -0
  234. data/lib/spiderfw/test.rb +89 -0
  235. data/lib/spiderfw/utils/json.rb +6 -0
  236. data/lib/spiderfw/utils/logger.rb +17 -4
  237. data/lib/spiderfw/utils/loggers/apache_commons_logger.rb +61 -0
  238. data/lib/spiderfw/utils/monkey/date_time.rb +2 -2
  239. data/lib/spiderfw/utils/monkey/module.rb +3 -1
  240. data/lib/spiderfw/utils/profiling.rb +2 -2
  241. data/lib/spiderfw/widget/widget.rb +31 -13
  242. data/lib/spiderfw.rb +1 -597
  243. data/spider.gemspec +9 -10
  244. metadata +193 -132
  245. data/apps/admin/_init.rb +0 -9
  246. data/apps/admin/controllers/admin_controller.rb +0 -12
  247. data/apps/admin/widgets/dashboard_widget/dashboard_widget.rb +0 -8
  248. data/apps/core/components/public/js/jquery/jquery-ui-1.8.4/development-bundle/AUTHORS.txt +0 -30
  249. data/apps/core/components/public/js/jquery/jquery-ui-1.8.4/development-bundle/ui/i18n/jquery-ui-i18n.js +0 -1176
  250. data/apps/core/components/public/js/jquery/jquery-ui-1.8.4/development-bundle/ui/i18n/jquery.ui.datepicker-no.js +0 -23
  251. data/apps/core/components/public/js/jquery/jquery-ui-1.8.4/development-bundle/version.txt +0 -1
  252. data/apps/core/components/public/js/jquery/plugins/asmselect/jquery.asmselect.css +0 -64
  253. data/apps/core/components/public/js/jquery/plugins/asmselect/jquery.asmselect.js +0 -407
  254. data/apps/core/components/widgets/switcher/switcher.shtml +0 -17
  255. data/apps/master/po/master.pot +0 -400
@@ -1,7 +1,7 @@
1
1
  /*
2
- * jQuery UI Draggable 1.8.4
2
+ * jQuery UI Draggable @VERSION
3
3
  *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
5
  * Dual licensed under the MIT or GPL Version 2 licenses.
6
6
  * http://jquery.org/license
7
7
  *
@@ -192,8 +192,8 @@ $.widget("ui.draggable", $.ui.mouse, {
192
192
  this.dropped = false;
193
193
  }
194
194
 
195
- //if the original element is removed, don't bother to continue
196
- if(!this.element[0] || !this.element[0].parentNode)
195
+ //if the original element is removed, don't bother to continue if helper is set to "original"
196
+ if((!this.element[0] || !this.element[0].parentNode) && this.options.helper == "original")
197
197
  return false;
198
198
 
199
199
  if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
@@ -317,7 +317,9 @@ $.widget("ui.draggable", $.ui.mouse, {
317
317
  _cacheMargins: function() {
318
318
  this.margins = {
319
319
  left: (parseInt(this.element.css("marginLeft"),10) || 0),
320
- top: (parseInt(this.element.css("marginTop"),10) || 0)
320
+ top: (parseInt(this.element.css("marginTop"),10) || 0),
321
+ right: (parseInt(this.element.css("marginRight"),10) || 0),
322
+ bottom: (parseInt(this.element.css("marginBottom"),10) || 0)
321
323
  };
322
324
  },
323
325
 
@@ -333,10 +335,10 @@ $.widget("ui.draggable", $.ui.mouse, {
333
335
  var o = this.options;
334
336
  if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
335
337
  if(o.containment == 'document' || o.containment == 'window') this.containment = [
336
- 0 - this.offset.relative.left - this.offset.parent.left,
337
- 0 - this.offset.relative.top - this.offset.parent.top,
338
- $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
339
- ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
338
+ (o.containment == 'document' ? 0 : $(window).scrollLeft()) - this.offset.relative.left - this.offset.parent.left,
339
+ (o.containment == 'document' ? 0 : $(window).scrollTop()) - this.offset.relative.top - this.offset.parent.top,
340
+ (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
341
+ (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
340
342
  ];
341
343
 
342
344
  if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {
@@ -345,10 +347,10 @@ $.widget("ui.draggable", $.ui.mouse, {
345
347
  var over = ($(ce).css("overflow") != 'hidden');
346
348
 
347
349
  this.containment = [
348
- co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
349
- co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
350
- co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
351
- co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
350
+ co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0),
351
+ co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0),
352
+ co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,
353
+ co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom
352
354
  ];
353
355
  } else if(o.containment.constructor == Array) {
354
356
  this.containment = o.containment;
@@ -459,7 +461,7 @@ $.widget("ui.draggable", $.ui.mouse, {
459
461
  });
460
462
 
461
463
  $.extend($.ui.draggable, {
462
- version: "1.8.4"
464
+ version: "@VERSION"
463
465
  });
464
466
 
465
467
  $.ui.plugin.add("draggable", "connectToSortable", {
@@ -475,7 +477,7 @@ $.ui.plugin.add("draggable", "connectToSortable", {
475
477
  instance: sortable,
476
478
  shouldRevert: sortable.options.revert
477
479
  });
478
- sortable._refreshItems(); //Do a one-time refresh at start to refresh the containerCache
480
+ sortable.refreshPositions(); // Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).
479
481
  sortable._trigger("activate", event, uiSortable);
480
482
  }
481
483
  });
@@ -1,7 +1,7 @@
1
1
  /*
2
- * jQuery UI Droppable 1.8.4
2
+ * jQuery UI Droppable @VERSION
3
3
  *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
5
  * Dual licensed under the MIT or GPL Version 2 licenses.
6
6
  * http://jquery.org/license
7
7
  *
@@ -147,7 +147,7 @@ $.widget("ui.droppable", {
147
147
  });
148
148
 
149
149
  $.extend($.ui.droppable, {
150
- version: "1.8.4"
150
+ version: "@VERSION"
151
151
  });
152
152
 
153
153
  $.ui.intersect = function(draggable, droppable, toleranceMode) {
@@ -212,11 +212,11 @@ $.ui.ddmanager = {
212
212
  for (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item
213
213
  m[i].visible = m[i].element.css("display") != "none"; if(!m[i].visible) continue; //If the element is not visible, continue
214
214
 
215
+ if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables
216
+
215
217
  m[i].offset = m[i].element.offset();
216
218
  m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };
217
219
 
218
- if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables
219
-
220
220
  }
221
221
 
222
222
  },
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * jQuery UI Mouse 1.8.4
2
+ * jQuery UI Mouse @VERSION
3
3
  *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
5
  * Dual licensed under the MIT or GPL Version 2 licenses.
6
6
  * http://jquery.org/license
7
7
  *
@@ -26,8 +26,8 @@ $.widget("ui.mouse", {
26
26
  return self._mouseDown(event);
27
27
  })
28
28
  .bind('click.'+this.widgetName, function(event) {
29
- if(self._preventClickEvent) {
30
- self._preventClickEvent = false;
29
+ if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
30
+ $.removeData(event.target, self.widgetName + '.preventClickEvent');
31
31
  event.stopImmediatePropagation();
32
32
  return false;
33
33
  }
@@ -75,6 +75,11 @@ $.widget("ui.mouse", {
75
75
  }
76
76
  }
77
77
 
78
+ // Click event may never have fired (Gecko & Opera)
79
+ if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {
80
+ $.removeData(event.target, this.widgetName + '.preventClickEvent');
81
+ }
82
+
78
83
  // these delegates are required to keep context
79
84
  this._mouseMoveDelegate = function(event) {
80
85
  return self._mouseMove(event);
@@ -86,18 +91,14 @@ $.widget("ui.mouse", {
86
91
  .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
87
92
  .bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
88
93
 
89
- // preventDefault() is used to prevent the selection of text here -
90
- // however, in Safari, this causes select boxes not to be selectable
91
- // anymore, so this fix is needed
92
- ($.browser.safari || event.preventDefault());
93
-
94
+ event.preventDefault();
94
95
  event.originalEvent.mouseHandled = true;
95
96
  return true;
96
97
  },
97
98
 
98
99
  _mouseMove: function(event) {
99
100
  // IE mouseup check - mouseup happened when mouse was out of window
100
- if ($.browser.msie && !event.button) {
101
+ if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {
101
102
  return this._mouseUp(event);
102
103
  }
103
104
 
@@ -122,7 +123,11 @@ $.widget("ui.mouse", {
122
123
 
123
124
  if (this._mouseStarted) {
124
125
  this._mouseStarted = false;
125
- this._preventClickEvent = (event.target == this._mouseDownEvent.target);
126
+
127
+ if (event.target == this._mouseDownEvent.target) {
128
+ $.data(event.target, this.widgetName + '.preventClickEvent', true);
129
+ }
130
+
126
131
  this._mouseStop(event);
127
132
  }
128
133
 
@@ -1,7 +1,7 @@
1
1
  /*
2
- * jQuery UI Position 1.8.4
2
+ * jQuery UI Position @VERSION
3
3
  *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
5
  * Dual licensed under the MIT or GPL Version 2 licenses.
6
6
  * http://jquery.org/license
7
7
  *
@@ -12,9 +12,8 @@
12
12
  $.ui = $.ui || {};
13
13
 
14
14
  var horizontalPositions = /left|center|right/,
15
- horizontalDefault = "center",
16
15
  verticalPositions = /top|center|bottom/,
17
- verticalDefault = "center",
16
+ center = "center",
18
17
  _position = $.fn.position,
19
18
  _offset = $.fn.offset;
20
19
 
@@ -27,21 +26,23 @@ $.fn.position = function( options ) {
27
26
  options = $.extend( {}, options );
28
27
 
29
28
  var target = $( options.of ),
29
+ targetElem = target[0],
30
30
  collision = ( options.collision || "flip" ).split( " " ),
31
31
  offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ],
32
32
  targetWidth,
33
33
  targetHeight,
34
34
  basePosition;
35
35
 
36
- if ( options.of.nodeType === 9 ) {
36
+ if ( targetElem.nodeType === 9 ) {
37
37
  targetWidth = target.width();
38
38
  targetHeight = target.height();
39
39
  basePosition = { top: 0, left: 0 };
40
- } else if ( options.of.scrollTo && options.of.document ) {
40
+ // TODO: use $.isWindow() in 1.9
41
+ } else if ( targetElem.setTimeout ) {
41
42
  targetWidth = target.width();
42
43
  targetHeight = target.height();
43
44
  basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
44
- } else if ( options.of.preventDefault ) {
45
+ } else if ( targetElem.preventDefault ) {
45
46
  // force left top to allow flipping
46
47
  options.at = "left top";
47
48
  targetWidth = targetHeight = 0;
@@ -58,13 +59,13 @@ $.fn.position = function( options ) {
58
59
  var pos = ( options[this] || "" ).split( " " );
59
60
  if ( pos.length === 1) {
60
61
  pos = horizontalPositions.test( pos[0] ) ?
61
- pos.concat( [verticalDefault] ) :
62
+ pos.concat( [center] ) :
62
63
  verticalPositions.test( pos[0] ) ?
63
- [ horizontalDefault ].concat( pos ) :
64
- [ horizontalDefault, verticalDefault ];
64
+ [ center ].concat( pos ) :
65
+ [ center, center ];
65
66
  }
66
- pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : horizontalDefault;
67
- pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : verticalDefault;
67
+ pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : center;
68
+ pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : center;
68
69
  options[ this ] = pos;
69
70
  });
70
71
 
@@ -82,13 +83,13 @@ $.fn.position = function( options ) {
82
83
 
83
84
  if ( options.at[0] === "right" ) {
84
85
  basePosition.left += targetWidth;
85
- } else if (options.at[0] === horizontalDefault ) {
86
+ } else if ( options.at[0] === center ) {
86
87
  basePosition.left += targetWidth / 2;
87
88
  }
88
89
 
89
90
  if ( options.at[1] === "bottom" ) {
90
91
  basePosition.top += targetHeight;
91
- } else if ( options.at[1] === verticalDefault ) {
92
+ } else if ( options.at[1] === center ) {
92
93
  basePosition.top += targetHeight / 2;
93
94
  }
94
95
 
@@ -99,23 +100,35 @@ $.fn.position = function( options ) {
99
100
  var elem = $( this ),
100
101
  elemWidth = elem.outerWidth(),
101
102
  elemHeight = elem.outerHeight(),
102
- position = $.extend( {}, basePosition );
103
+ marginLeft = parseInt( $.curCSS( this, "marginLeft", true ) ) || 0,
104
+ marginTop = parseInt( $.curCSS( this, "marginTop", true ) ) || 0,
105
+ collisionWidth = elemWidth + marginLeft +
106
+ ( parseInt( $.curCSS( this, "marginRight", true ) ) || 0 ),
107
+ collisionHeight = elemHeight + marginTop +
108
+ ( parseInt( $.curCSS( this, "marginBottom", true ) ) || 0 ),
109
+ position = $.extend( {}, basePosition ),
110
+ collisionPosition;
103
111
 
104
112
  if ( options.my[0] === "right" ) {
105
113
  position.left -= elemWidth;
106
- } else if ( options.my[0] === horizontalDefault ) {
114
+ } else if ( options.my[0] === center ) {
107
115
  position.left -= elemWidth / 2;
108
116
  }
109
117
 
110
118
  if ( options.my[1] === "bottom" ) {
111
119
  position.top -= elemHeight;
112
- } else if ( options.my[1] === verticalDefault ) {
120
+ } else if ( options.my[1] === center ) {
113
121
  position.top -= elemHeight / 2;
114
122
  }
115
123
 
116
124
  // prevent fractions (see #5280)
117
- position.left = parseInt( position.left );
118
- position.top = parseInt( position.top );
125
+ position.left = Math.round( position.left );
126
+ position.top = Math.round( position.top );
127
+
128
+ collisionPosition = {
129
+ left: position.left - marginLeft,
130
+ top: position.top - marginTop
131
+ };
119
132
 
120
133
  $.each( [ "left", "top" ], function( i, dir ) {
121
134
  if ( $.ui.position[ collision[i] ] ) {
@@ -124,6 +137,9 @@ $.fn.position = function( options ) {
124
137
  targetHeight: targetHeight,
125
138
  elemWidth: elemWidth,
126
139
  elemHeight: elemHeight,
140
+ collisionPosition: collisionPosition,
141
+ collisionWidth: collisionWidth,
142
+ collisionHeight: collisionHeight,
127
143
  offset: offset,
128
144
  my: options.my,
129
145
  at: options.at
@@ -142,41 +158,44 @@ $.ui.position = {
142
158
  fit: {
143
159
  left: function( position, data ) {
144
160
  var win = $( window ),
145
- over = position.left + data.elemWidth - win.width() - win.scrollLeft();
146
- position.left = over > 0 ? position.left - over : Math.max( 0, position.left );
161
+ over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft();
162
+ position.left = over > 0 ? position.left - over : Math.max( position.left - data.collisionPosition.left, position.left );
147
163
  },
148
164
  top: function( position, data ) {
149
165
  var win = $( window ),
150
- over = position.top + data.elemHeight - win.height() - win.scrollTop();
151
- position.top = over > 0 ? position.top - over : Math.max( 0, position.top );
166
+ over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop();
167
+ position.top = over > 0 ? position.top - over : Math.max( position.top - data.collisionPosition.top, position.top );
152
168
  }
153
169
  },
154
170
 
155
171
  flip: {
156
172
  left: function( position, data ) {
157
- if ( data.at[0] === "center" ) {
173
+ if ( data.at[0] === center ) {
158
174
  return;
159
175
  }
160
176
  var win = $( window ),
161
- over = position.left + data.elemWidth - win.width() - win.scrollLeft(),
177
+ over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(),
162
178
  myOffset = data.my[ 0 ] === "left" ?
163
179
  -data.elemWidth :
164
180
  data.my[ 0 ] === "right" ?
165
181
  data.elemWidth :
166
182
  0,
183
+ atOffset = data.at[ 0 ] === "left" ?
184
+ data.targetWidth :
185
+ -data.targetWidth,
167
186
  offset = -2 * data.offset[ 0 ];
168
- position.left += position.left < 0 ?
169
- myOffset + data.targetWidth + offset :
187
+ position.left += data.collisionPosition.left < 0 ?
188
+ myOffset + atOffset + offset :
170
189
  over > 0 ?
171
- myOffset - data.targetWidth + offset :
190
+ myOffset + atOffset + offset :
172
191
  0;
173
192
  },
174
193
  top: function( position, data ) {
175
- if ( data.at[1] === "center" ) {
194
+ if ( data.at[1] === center ) {
176
195
  return;
177
196
  }
178
197
  var win = $( window ),
179
- over = position.top + data.elemHeight - win.height() - win.scrollTop(),
198
+ over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(),
180
199
  myOffset = data.my[ 1 ] === "top" ?
181
200
  -data.elemHeight :
182
201
  data.my[ 1 ] === "bottom" ?
@@ -186,8 +205,8 @@ $.ui.position = {
186
205
  data.targetHeight :
187
206
  -data.targetHeight,
188
207
  offset = -2 * data.offset[ 1 ];
189
- position.top += position.top < 0 ?
190
- myOffset + data.targetHeight + offset :
208
+ position.top += data.collisionPosition.top < 0 ?
209
+ myOffset + atOffset + offset :
191
210
  over > 0 ?
192
211
  myOffset + atOffset + offset :
193
212
  0;
@@ -1,7 +1,7 @@
1
1
  /*
2
- * jQuery UI Progressbar 1.8.4
2
+ * jQuery UI Progressbar @VERSION
3
3
  *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
5
  * Dual licensed under the MIT or GPL Version 2 licenses.
6
6
  * http://jquery.org/license
7
7
  *
@@ -15,11 +15,11 @@
15
15
 
16
16
  $.widget( "ui.progressbar", {
17
17
  options: {
18
- value: 0
18
+ value: 0,
19
+ max: 100
19
20
  },
20
21
 
21
22
  min: 0,
22
- max: 100,
23
23
 
24
24
  _create: function() {
25
25
  this.element
@@ -27,13 +27,14 @@ $.widget( "ui.progressbar", {
27
27
  .attr({
28
28
  role: "progressbar",
29
29
  "aria-valuemin": this.min,
30
- "aria-valuemax": this.max,
30
+ "aria-valuemax": this.options.max,
31
31
  "aria-valuenow": this._value()
32
32
  });
33
33
 
34
34
  this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" )
35
35
  .appendTo( this.element );
36
36
 
37
+ this.oldValue = this._value();
37
38
  this._refreshValue();
38
39
  },
39
40
 
@@ -63,7 +64,9 @@ $.widget( "ui.progressbar", {
63
64
  if ( key === "value" ) {
64
65
  this.options.value = value;
65
66
  this._refreshValue();
66
- this._trigger( "change" );
67
+ if ( this._value() === this.options.max ) {
68
+ this._trigger( "complete" );
69
+ }
67
70
  }
68
71
 
69
72
  $.Widget.prototype._setOption.apply( this, arguments );
@@ -75,20 +78,31 @@ $.widget( "ui.progressbar", {
75
78
  if ( typeof val !== "number" ) {
76
79
  val = 0;
77
80
  }
78
- return Math.min( this.max, Math.max( this.min, val ) );
81
+ return Math.min( this.options.max, Math.max( this.min, val ) );
82
+ },
83
+
84
+ _percentage: function() {
85
+ return 100 * this._value() / this.options.max;
79
86
  },
80
87
 
81
88
  _refreshValue: function() {
82
89
  var value = this.value();
90
+ var percentage = this._percentage();
91
+
92
+ if ( this.oldValue !== value ) {
93
+ this.oldValue = value;
94
+ this._trigger( "change" );
95
+ }
96
+
83
97
  this.valueDiv
84
- .toggleClass( "ui-corner-right", value === this.max )
85
- .width( value + "%" );
98
+ .toggleClass( "ui-corner-right", value === this.options.max )
99
+ .width( percentage.toFixed(0) + "%" );
86
100
  this.element.attr( "aria-valuenow", value );
87
101
  }
88
102
  });
89
103
 
90
104
  $.extend( $.ui.progressbar, {
91
- version: "1.8.4"
105
+ version: "@VERSION"
92
106
  });
93
107
 
94
108
  })( jQuery );
@@ -1,7 +1,7 @@
1
1
  /*
2
- * jQuery UI Resizable 1.8.4
2
+ * jQuery UI Resizable @VERSION
3
3
  *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
5
  * Dual licensed under the MIT or GPL Version 2 licenses.
6
6
  * http://jquery.org/license
7
7
  *
@@ -322,10 +322,10 @@ $.widget("ui.resizable", $.ui.mouse, {
322
322
 
323
323
  if(this._helper) {
324
324
  var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
325
- soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
326
- soffsetw = ista ? 0 : self.sizeDiff.width;
325
+ soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
326
+ soffsetw = ista ? 0 : self.sizeDiff.width;
327
327
 
328
- var s = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },
328
+ var s = { width: (self.helper.width() - soffsetw), height: (self.helper.height() - soffseth) },
329
329
  left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
330
330
  top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;
331
331
 
@@ -519,7 +519,7 @@ $.widget("ui.resizable", $.ui.mouse, {
519
519
  });
520
520
 
521
521
  $.extend($.ui.resizable, {
522
- version: "1.8.4"
522
+ version: "@VERSION"
523
523
  });
524
524
 
525
525
  /*
@@ -595,7 +595,7 @@ $.ui.plugin.add("resizable", "alsoResize", {
595
595
  // reset position for Opera - no need to verify it was changed
596
596
  el.css({ position: el.data("resizable-alsoresize").position });
597
597
  });
598
- }
598
+ };
599
599
 
600
600
  if (self._revertToRelativePosition) {
601
601
  self._revertToRelativePosition = false;
@@ -1,7 +1,7 @@
1
1
  /*
2
- * jQuery UI Selectable 1.8.4
2
+ * jQuery UI Selectable @VERSION
3
3
  *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
5
  * Dual licensed under the MIT or GPL Version 2 licenses.
6
6
  * http://jquery.org/license
7
7
  *
@@ -260,7 +260,7 @@ $.widget("ui.selectable", $.ui.mouse, {
260
260
  });
261
261
 
262
262
  $.extend($.ui.selectable, {
263
- version: "1.8.4"
263
+ version: "@VERSION"
264
264
  });
265
265
 
266
266
  })(jQuery);
@@ -1,7 +1,7 @@
1
1
  /*
2
- * jQuery UI Slider 1.8.4
2
+ * jQuery UI Slider @VERSION
3
3
  *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
5
  * Dual licensed under the MIT or GPL Version 2 licenses.
6
6
  * http://jquery.org/license
7
7
  *
@@ -309,7 +309,9 @@ $.widget( "ui.slider", $.ui.mouse, {
309
309
  ( parseInt( closestHandle.css("marginTop"), 10 ) || 0)
310
310
  };
311
311
 
312
- this._slide( event, index, normValue );
312
+ if ( !this.handles.hasClass( "ui-state-hover" ) ) {
313
+ this._slide( event, index, normValue );
314
+ }
313
315
  this._animateOff = true;
314
316
  return true;
315
317
  },
@@ -583,14 +585,14 @@ $.widget( "ui.slider", $.ui.mouse, {
583
585
 
584
586
  // returns the step-aligned value that val is closest to, between (inclusive) min and max
585
587
  _trimAlignValue: function( val ) {
586
- if ( val < this._valueMin() ) {
588
+ if ( val <= this._valueMin() ) {
587
589
  return this._valueMin();
588
590
  }
589
- if ( val > this._valueMax() ) {
591
+ if ( val >= this._valueMax() ) {
590
592
  return this._valueMax();
591
593
  }
592
594
  var step = ( this.options.step > 0 ) ? this.options.step : 1,
593
- valModStep = val % step,
595
+ valModStep = (val - this._valueMin()) % step;
594
596
  alignValue = val - valModStep;
595
597
 
596
598
  if ( Math.abs(valModStep) * 2 >= step ) {
@@ -674,7 +676,7 @@ $.widget( "ui.slider", $.ui.mouse, {
674
676
  });
675
677
 
676
678
  $.extend( $.ui.slider, {
677
- version: "1.8.4"
679
+ version: "@VERSION"
678
680
  });
679
681
 
680
682
  }(jQuery));
@@ -1,7 +1,7 @@
1
1
  /*
2
- * jQuery UI Sortable 1.8.4
2
+ * jQuery UI Sortable @VERSION
3
3
  *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
5
  * Dual licensed under the MIT or GPL Version 2 licenses.
6
6
  * http://jquery.org/license
7
7
  *
@@ -49,8 +49,8 @@ $.widget("ui.sortable", $.ui.mouse, {
49
49
  //Get the items
50
50
  this.refresh();
51
51
 
52
- //Let's determine if the items are floating
53
- this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) : false;
52
+ //Let's determine if the items are being displayed horizontally
53
+ this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;
54
54
 
55
55
  //Let's determine the parent's offset
56
56
  this.offset = this.element.offset();
@@ -360,7 +360,7 @@ $.widget("ui.sortable", $.ui.mouse, {
360
360
 
361
361
  if(this.dragging) {
362
362
 
363
- this._mouseUp();
363
+ this._mouseUp({ target: null });
364
364
 
365
365
  if(this.options.helper == "original")
366
366
  this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
@@ -378,21 +378,23 @@ $.widget("ui.sortable", $.ui.mouse, {
378
378
 
379
379
  }
380
380
 
381
- //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
382
- if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
383
- if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove();
384
-
385
- $.extend(this, {
386
- helper: null,
387
- dragging: false,
388
- reverting: false,
389
- _noFinalSort: null
390
- });
381
+ if (this.placeholder) {
382
+ //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
383
+ if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
384
+ if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove();
391
385
 
392
- if(this.domPosition.prev) {
393
- $(this.domPosition.prev).after(this.currentItem);
394
- } else {
395
- $(this.domPosition.parent).prepend(this.currentItem);
386
+ $.extend(this, {
387
+ helper: null,
388
+ dragging: false,
389
+ reverting: false,
390
+ _noFinalSort: null
391
+ });
392
+
393
+ if(this.domPosition.prev) {
394
+ $(this.domPosition.prev).after(this.currentItem);
395
+ } else {
396
+ $(this.domPosition.parent).prepend(this.currentItem);
397
+ }
396
398
  }
397
399
 
398
400
  return this;
@@ -1065,7 +1067,7 @@ $.widget("ui.sortable", $.ui.mouse, {
1065
1067
  });
1066
1068
 
1067
1069
  $.extend($.ui.sortable, {
1068
- version: "1.8.4"
1070
+ version: "@VERSION"
1069
1071
  });
1070
1072
 
1071
1073
  })(jQuery);