rsence-pre 2.1.0.1.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. data/.yardopts +10 -0
  2. data/INSTALL.rdoc +330 -0
  3. data/LICENSE.txt +622 -0
  4. data/README.rdoc +98 -0
  5. data/VERSION +1 -0
  6. data/bin/rsence +25 -0
  7. data/bin/rsence-pre +25 -0
  8. data/conf/default_conf.yaml +346 -0
  9. data/conf/default_strings.yaml +76 -0
  10. data/conf/rsence_command_strings.yaml +444 -0
  11. data/docs/ExampleGuiPlugin.rdoc +193 -0
  12. data/docs/JavascriptBundles.rdoc +0 -0
  13. data/docs/PluginBundleInfo.rdoc +173 -0
  14. data/docs/PluginBundles.rdoc +96 -0
  15. data/docs/Values.rdoc +163 -0
  16. data/js/comm/autosync/autosync.js +17 -0
  17. data/js/comm/autosync/js.inc +0 -0
  18. data/js/comm/comm.js +203 -0
  19. data/js/comm/js.inc +0 -0
  20. data/js/comm/jsloader/js.inc +0 -0
  21. data/js/comm/jsloader/jsloader.js +112 -0
  22. data/js/comm/queue/js.inc +0 -0
  23. data/js/comm/queue/queue.js +184 -0
  24. data/js/comm/session/js.inc +0 -0
  25. data/js/comm/session/session.js +52 -0
  26. data/js/comm/sessionwatcher/js.inc +0 -0
  27. data/js/comm/sessionwatcher/sessionwatcher.js +44 -0
  28. data/js/comm/transporter/js.inc +0 -0
  29. data/js/comm/transporter/transporter.js +261 -0
  30. data/js/comm/urlresponder/js.inc +0 -0
  31. data/js/comm/urlresponder/urlresponder.js +149 -0
  32. data/js/comm/values/js.inc +0 -0
  33. data/js/comm/values/values.js +433 -0
  34. data/js/controls/button/button.js +72 -0
  35. data/js/controls/button/js.inc +0 -0
  36. data/js/controls/button/themes/bright/button.css +89 -0
  37. data/js/controls/button/themes/bright/button.html +7 -0
  38. data/js/controls/button/themes/bright/button_parts1-ie6.gif +0 -0
  39. data/js/controls/button/themes/bright/button_parts1.png +0 -0
  40. data/js/controls/button/themes/default/button.css +89 -0
  41. data/js/controls/button/themes/default/button.html +7 -0
  42. data/js/controls/button/themes/default/button_parts1-ie6.gif +0 -0
  43. data/js/controls/button/themes/default/button_parts1.png +0 -0
  44. data/js/controls/checkbox/checkbox.js +49 -0
  45. data/js/controls/checkbox/js.inc +0 -0
  46. data/js/controls/checkbox/themes/default/checkbox.css +69 -0
  47. data/js/controls/checkbox/themes/default/checkbox.html +5 -0
  48. data/js/controls/checkbox/themes/default/checkbox_parts1-ie6.gif +0 -0
  49. data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
  50. data/js/controls/dialogs/alert_sheet/alert_sheet.js +63 -0
  51. data/js/controls/dialogs/alert_sheet/js.inc +0 -0
  52. data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +37 -0
  53. data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
  54. data/js/controls/dialogs/sheet/js.inc +0 -0
  55. data/js/controls/dialogs/sheet/sheet.js +84 -0
  56. data/js/controls/dialogs/sheet/themes/default/sheet.css +64 -0
  57. data/js/controls/dialogs/sheet/themes/default/sheet.html +14 -0
  58. data/js/controls/dialogs/sheet/themes/default/sheet_bg-ie6.gif +0 -0
  59. data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
  60. data/js/controls/dialogs/sheet/themes/default/sheet_dim-ie6.gif +0 -0
  61. data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
  62. data/js/controls/dialogs/sheet/themes/default/sheet_parts1-ie6.gif +0 -0
  63. data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
  64. data/js/controls/dialogs/sheet/themes/default/sheet_parts2-ie6.gif +0 -0
  65. data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
  66. data/js/controls/dialogs/sheet/themes/default/sheet_warning-ie6.gif +0 -0
  67. data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
  68. data/js/controls/imageview/imageview.js +109 -0
  69. data/js/controls/imageview/js.inc +0 -0
  70. data/js/controls/imageview/themes/default/blank.gif +0 -0
  71. data/js/controls/passwordcontrol/js.inc +0 -0
  72. data/js/controls/passwordcontrol/passwordcontrol.js +23 -0
  73. data/js/controls/passwordcontrol/themes/default/passwordcontrol.css +0 -0
  74. data/js/controls/passwordcontrol/themes/default/passwordcontrol.html +18 -0
  75. data/js/controls/progress/progressbar/js.inc +0 -0
  76. data/js/controls/progress/progressbar/progressbar.js +40 -0
  77. data/js/controls/progress/progressbar/themes/default/progressbar.css +16 -0
  78. data/js/controls/progress/progressbar/themes/default/progressbar.html +2 -0
  79. data/js/controls/progress/progressindicator/js.inc +0 -0
  80. data/js/controls/progress/progressindicator/progressindicator.js +44 -0
  81. data/js/controls/radiobutton/js.inc +0 -0
  82. data/js/controls/radiobutton/radiobutton.js +43 -0
  83. data/js/controls/radiobutton/themes/default/radiobutton.css +69 -0
  84. data/js/controls/radiobutton/themes/default/radiobutton.html +5 -0
  85. data/js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif +0 -0
  86. data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
  87. data/js/controls/sliders/slider/js.inc +0 -0
  88. data/js/controls/sliders/slider/slider.js +357 -0
  89. data/js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif +0 -0
  90. data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
  91. data/js/controls/sliders/slider/themes/default/slider.css +108 -0
  92. data/js/controls/sliders/slider/themes/default/slider.html +5 -0
  93. data/js/controls/sliders/slider/themes/default/slider_thumbs-ie6.gif +0 -0
  94. data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
  95. data/js/controls/sliders/vslider/js.inc +0 -0
  96. data/js/controls/sliders/vslider/themes/default/vslider.css +52 -0
  97. data/js/controls/sliders/vslider/themes/default/vslider.html +5 -0
  98. data/js/controls/sliders/vslider/themes/default/vslider_tracks-ie6.gif +0 -0
  99. data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
  100. data/js/controls/sliders/vslider/vslider.js +41 -0
  101. data/js/controls/stepper/js.inc +0 -0
  102. data/js/controls/stepper/stepper.js +213 -0
  103. data/js/controls/stepper/themes/default/stepper-ie6.gif +0 -0
  104. data/js/controls/stepper/themes/default/stepper.css +14 -0
  105. data/js/controls/stepper/themes/default/stepper.html +2 -0
  106. data/js/controls/stepper/themes/default/stepper.png +0 -0
  107. data/js/controls/stringview/js.inc +0 -0
  108. data/js/controls/stringview/stringview.js +49 -0
  109. data/js/controls/stringview/themes/default/stringview.css +8 -0
  110. data/js/controls/stringview/themes/default/stringview.html +1 -0
  111. data/js/controls/tab/js.inc +0 -0
  112. data/js/controls/tab/tab.js +280 -0
  113. data/js/controls/tab/themes/bright/tab.css +76 -0
  114. data/js/controls/tab/themes/bright/tab.html +6 -0
  115. data/js/controls/tab/themes/bright/tab_bg_color-ie6.gif +0 -0
  116. data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
  117. data/js/controls/tab/themes/bright/tab_border_pattern-ie6.gif +0 -0
  118. data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
  119. data/js/controls/tab/themes/bright/tab_parts1-ie6.gif +0 -0
  120. data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
  121. data/js/controls/tab/themes/default/tab.css +77 -0
  122. data/js/controls/tab/themes/default/tab.html +6 -0
  123. data/js/controls/tab/themes/default/tab_bg_color-ie6.gif +0 -0
  124. data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
  125. data/js/controls/tab/themes/default/tab_border_pattern-ie6.gif +0 -0
  126. data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
  127. data/js/controls/tab/themes/default/tab_parts1-ie6.gif +0 -0
  128. data/js/controls/tab/themes/default/tab_parts1.png +0 -0
  129. data/js/controls/textarea/js.inc +0 -0
  130. data/js/controls/textarea/textarea.js +24 -0
  131. data/js/controls/textarea/themes/default/textarea.css +21 -0
  132. data/js/controls/textarea/themes/default/textarea.html +18 -0
  133. data/js/controls/textcontrol/js.inc +0 -0
  134. data/js/controls/textcontrol/textcontrol.js +374 -0
  135. data/js/controls/textcontrol/themes/default/textcontrol.css +107 -0
  136. data/js/controls/textcontrol/themes/default/textcontrol.html +18 -0
  137. data/js/controls/textcontrol/themes/default/textcontrol_parts1-ie6.gif +0 -0
  138. data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
  139. data/js/controls/textcontrol/themes/default/textcontrol_parts2-ie6.gif +0 -0
  140. data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
  141. data/js/controls/textcontrol/themes/default/textcontrol_parts3-ie6.gif +0 -0
  142. data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
  143. data/js/controls/uploader/js.inc +0 -0
  144. data/js/controls/uploader/themes/default/upload_progress.gif +0 -0
  145. data/js/controls/uploader/themes/default/uploader.css +108 -0
  146. data/js/controls/uploader/themes/default/uploader.html +27 -0
  147. data/js/controls/uploader/uploader.js +154 -0
  148. data/js/controls/validatorview/js.inc +0 -0
  149. data/js/controls/validatorview/themes/default/validator-ie6.gif +0 -0
  150. data/js/controls/validatorview/themes/default/validator.png +0 -0
  151. data/js/controls/validatorview/themes/default/validatorview.css +0 -0
  152. data/js/controls/validatorview/themes/default/validatorview.html +0 -0
  153. data/js/controls/validatorview/validatorview.js +62 -0
  154. data/js/controls/window/js.inc +0 -0
  155. data/js/controls/window/themes/default/window.css +219 -0
  156. data/js/controls/window/themes/default/window.html +17 -0
  157. data/js/controls/window/themes/default/window_bg_active-ie6.gif +0 -0
  158. data/js/controls/window/themes/default/window_bg_active.png +0 -0
  159. data/js/controls/window/themes/default/window_bg_inactive-ie6.gif +0 -0
  160. data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
  161. data/js/controls/window/themes/default/window_buttons-ie6.gif +0 -0
  162. data/js/controls/window/themes/default/window_buttons.png +0 -0
  163. data/js/controls/window/themes/default/window_parts1-ie6.gif +0 -0
  164. data/js/controls/window/themes/default/window_parts1.png +0 -0
  165. data/js/controls/window/themes/default/window_parts2-ie6.gif +0 -0
  166. data/js/controls/window/themes/default/window_parts2.png +0 -0
  167. data/js/controls/window/window.js +286 -0
  168. data/js/core/class/class.js +318 -0
  169. data/js/core/class/js.inc +0 -0
  170. data/js/core/elem/elem.js +1383 -0
  171. data/js/core/elem/js.inc +0 -0
  172. data/js/core/event/event.js +153 -0
  173. data/js/core/event/js.inc +0 -0
  174. data/js/core/iefix/ie_css_element.htc +5 -0
  175. data/js/core/iefix/ie_css_style.htc +5 -0
  176. data/js/core/iefix/iefix.js +359 -0
  177. data/js/core/iefix/js.inc +0 -0
  178. data/js/core/rsence_ns/js.inc +0 -0
  179. data/js/core/rsence_ns/rsence_ns.js +21 -0
  180. data/js/datetime/calendar/calendar.js +198 -0
  181. data/js/datetime/calendar/js.inc +0 -0
  182. data/js/datetime/calendar/themes/default/calendar.css +108 -0
  183. data/js/datetime/calendar/themes/default/calendar.html +9 -0
  184. data/js/datetime/calendar/themes/default/calendar_arrows-ie6.gif +0 -0
  185. data/js/datetime/calendar/themes/default/calendar_arrows.png +0 -0
  186. data/js/datetime/datetimevalue/datetimevalue.js +247 -0
  187. data/js/datetime/datetimevalue/js.inc +0 -0
  188. data/js/datetime/timesheet/js.inc +0 -0
  189. data/js/datetime/timesheet/themes/default/timesheet.css +30 -0
  190. data/js/datetime/timesheet/themes/default/timesheet.html +2 -0
  191. data/js/datetime/timesheet/timesheet.js +183 -0
  192. data/js/datetime/timesheet_item/js.inc +0 -0
  193. data/js/datetime/timesheet_item/themes/default/timesheet_item.css +42 -0
  194. data/js/datetime/timesheet_item/themes/default/timesheet_item.html +8 -0
  195. data/js/datetime/timesheet_item/timesheet_item.js +248 -0
  196. data/js/datetime/timesheet_item_edit/js.inc +0 -0
  197. data/js/datetime/timesheet_item_edit/timesheet_item_edit.js +274 -0
  198. data/js/foundation/application/application.js +208 -0
  199. data/js/foundation/application/js.inc +0 -0
  200. data/js/foundation/control/control.js +339 -0
  201. data/js/foundation/control/controldefaults/controldefaults.js +56 -0
  202. data/js/foundation/control/controldefaults/js.inc +0 -0
  203. data/js/foundation/control/dummyvalue/dummyvalue.js +51 -0
  204. data/js/foundation/control/dummyvalue/js.inc +0 -0
  205. data/js/foundation/control/dyncontrol/dyncontrol.js +500 -0
  206. data/js/foundation/control/dyncontrol/js.inc +0 -0
  207. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.css +0 -0
  208. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.html +0 -0
  209. data/js/foundation/control/eventresponder/eventresponder.js +750 -0
  210. data/js/foundation/control/eventresponder/js.inc +0 -0
  211. data/js/foundation/control/js.inc +0 -0
  212. data/js/foundation/control/valuematrix/js.inc +0 -0
  213. data/js/foundation/control/valuematrix/valuematrix.js +135 -0
  214. data/js/foundation/control/valueresponder/js.inc +0 -0
  215. data/js/foundation/control/valueresponder/valueresponder.js +79 -0
  216. data/js/foundation/eventmanager/eventmanager.js +991 -0
  217. data/js/foundation/eventmanager/js.inc +0 -0
  218. data/js/foundation/geom/point/js.inc +0 -0
  219. data/js/foundation/geom/point/point.js +202 -0
  220. data/js/foundation/geom/rect/js.inc +0 -0
  221. data/js/foundation/geom/rect/rect.js +651 -0
  222. data/js/foundation/json_renderer/js.inc +0 -0
  223. data/js/foundation/json_renderer/json_renderer.js +246 -0
  224. data/js/foundation/system/js.inc +0 -0
  225. data/js/foundation/system/system.js +381 -0
  226. data/js/foundation/thememanager/js.inc +0 -0
  227. data/js/foundation/thememanager/thememanager.js +393 -0
  228. data/js/foundation/value/js.inc +0 -0
  229. data/js/foundation/value/value.js +183 -0
  230. data/js/foundation/view/js.inc +0 -0
  231. data/js/foundation/view/markupview/js.inc +0 -0
  232. data/js/foundation/view/markupview/markupview.js +114 -0
  233. data/js/foundation/view/morphanimation/js.inc +0 -0
  234. data/js/foundation/view/morphanimation/morphanimation.js +237 -0
  235. data/js/foundation/view/view.js +1812 -0
  236. data/js/foundation/view/viewdefaults/js.inc +0 -0
  237. data/js/foundation/view/viewdefaults/viewdefaults.js +26 -0
  238. data/js/lists/checkboxlist/checkboxlist.js +171 -0
  239. data/js/lists/checkboxlist/js.inc +0 -0
  240. data/js/lists/listitems/js.inc +0 -0
  241. data/js/lists/listitems/listitems.js +88 -0
  242. data/js/lists/propertylist/js.inc +0 -0
  243. data/js/lists/propertylist/propertylist.js +326 -0
  244. data/js/lists/radiobuttonlist/js.inc +0 -0
  245. data/js/lists/radiobuttonlist/radiobuttonlist.js +116 -0
  246. data/js/util/reloadapp/js.inc +0 -0
  247. data/js/util/reloadapp/reloadapp.js +152 -0
  248. data/js/util/reloadapp/themes/default/reloadapp_warning-ie6.gif +0 -0
  249. data/js/util/reloadapp/themes/default/reloadapp_warning.png +0 -0
  250. data/js/util/sha/js.inc +0 -0
  251. data/js/util/sha/sha.js +426 -0
  252. data/js/views/centerview/centerview.js +75 -0
  253. data/js/views/centerview/js.inc +0 -0
  254. data/js/views/inlineview/inlineview.js +15 -0
  255. data/js/views/inlineview/js.inc +0 -0
  256. data/js/views/scrollview/js.inc +0 -0
  257. data/js/views/scrollview/scrollview.js +40 -0
  258. data/lib/conf/argv.rb +850 -0
  259. data/lib/conf/default.rb +219 -0
  260. data/lib/daemon/daemon.rb +387 -0
  261. data/lib/daemon/sigcomm.rb +64 -0
  262. data/lib/http/broker.rb +150 -0
  263. data/lib/http/rackup.rb +91 -0
  264. data/lib/http/request.rb +66 -0
  265. data/lib/http/response.rb +65 -0
  266. data/lib/plugins/dependencies.rb +285 -0
  267. data/lib/plugins/gui_plugin.rb +160 -0
  268. data/lib/plugins/guiparser.rb +123 -0
  269. data/lib/plugins/plugin.rb +438 -0
  270. data/lib/plugins/plugin_base.rb +162 -0
  271. data/lib/plugins/plugin_plugins.rb +81 -0
  272. data/lib/plugins/plugin_sqlite_db.rb +98 -0
  273. data/lib/plugins/pluginmanager.rb +635 -0
  274. data/lib/plugins/plugins.rb +169 -0
  275. data/lib/plugins/servlet.rb +108 -0
  276. data/lib/rsence.rb +32 -0
  277. data/lib/session/msg.rb +327 -0
  278. data/lib/session/sessionmanager.rb +522 -0
  279. data/lib/session/sessionstorage.rb +340 -0
  280. data/lib/transporter/transporter.rb +263 -0
  281. data/lib/util/gzstring.rb +9 -0
  282. data/lib/util/ruby19_fixes.rb +18 -0
  283. data/lib/values/hvalue.rb +378 -0
  284. data/lib/values/valuemanager.rb +172 -0
  285. data/plugins/client_pkg/client_pkg.rb +157 -0
  286. data/plugins/client_pkg/info.yaml +25 -0
  287. data/plugins/client_pkg/lib/client_pkg_build.rb +561 -0
  288. data/plugins/client_pkg/lib/client_pkg_cache.rb +50 -0
  289. data/plugins/client_pkg/lib/client_pkg_serve.rb +218 -0
  290. data/plugins/index_html/img/loading.gif +0 -0
  291. data/plugins/index_html/img/riassence.gif +0 -0
  292. data/plugins/index_html/index_html.rb +120 -0
  293. data/plugins/index_html/info.yaml +18 -0
  294. data/plugins/index_html/tmpl/index.html +15 -0
  295. data/plugins/main/info.yaml +18 -0
  296. data/plugins/main/js/main.js +84 -0
  297. data/plugins/main/main.rb +255 -0
  298. data/plugins/main/values.yaml +8 -0
  299. data/plugins/ticket/info.yaml +21 -0
  300. data/plugins/ticket/lib/common.rb +392 -0
  301. data/plugins/ticket/lib/favicon.rb +39 -0
  302. data/plugins/ticket/lib/file.rb +58 -0
  303. data/plugins/ticket/lib/img.rb +50 -0
  304. data/plugins/ticket/lib/objblob.rb +66 -0
  305. data/plugins/ticket/lib/rsrc.rb +34 -0
  306. data/plugins/ticket/lib/upload.rb +236 -0
  307. data/plugins/ticket/ticket.rb +333 -0
  308. data/setup/welcome/gui/welcome.yaml +92 -0
  309. data/setup/welcome/info.yaml +13 -0
  310. data/setup/welcome/text/welcome.html +9 -0
  311. data/setup/welcome/values.yaml +9 -0
  312. data/setup/welcome/welcome.rb +54 -0
  313. metadata +407 -0
@@ -0,0 +1,198 @@
1
+ /* RSence
2
+ * Copyright 2009 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+ /*** = Description
10
+ ** Use HCalendar to display a month calendar that displays days as columns
11
+ ** and weeks as rows. Its value is a date/time number specified in seconds
12
+ ** since or before epoch (1970-01-01 00:00:00 UTC).
13
+ ***/
14
+ var//RSence.DateTime
15
+ HCalendar = HControl.extend({
16
+ componentName: 'calendar',
17
+ weekdays_localized: ['Wk','Mon','Tue','Wed','Thu','Fri','Sat','Sun'],
18
+ defaultEvents: {
19
+ mouseWheel: true
20
+ },
21
+ /** = Description
22
+ * Calls HCalendar#nextMonth or HCalendar#prevMonth based on delta
23
+ * of mouseWheel.
24
+ *
25
+ **/
26
+ mouseWheel: function(_delta){
27
+ if ( _delta < 0 ) {
28
+ this.nextMonth();
29
+ }
30
+ else {
31
+ this.prevMonth();
32
+ }
33
+ },
34
+
35
+ /** = Description
36
+ * Refreshes weekdays.
37
+ *
38
+ **/
39
+ refreshLabel: function(){
40
+ if(!this['markupElemIds']){
41
+ return;
42
+ }
43
+ var _weekdays_localized = this.weekdays_localized,
44
+ _weekdays_width = Math.floor(this.rect.width/_weekdays_localized.length),
45
+ _weekdays_html = [],
46
+ i = 0,
47
+ _weekdays_html_pre = ['<div style="width:'+_weekdays_width+'px;left:','px">'],
48
+ _weekdays_html_suf = '</div>';
49
+ for(;i<_weekdays_localized.length;i++){
50
+ _weekdays_html.push([
51
+ _weekdays_html_pre.join(i*_weekdays_width),
52
+ _weekdays_localized[i],
53
+ _weekdays_html_suf
54
+ ].join('') );
55
+ }
56
+ ELEM.setHTML(this.markupElemIds.label, _weekdays_html.join(''));
57
+ },
58
+
59
+ /** = Description
60
+ * Checks the date range for the month which the date given as input belongs.
61
+ *
62
+ * = Parameters
63
+ * +_date+:: A Date instance to check date range from
64
+ *
65
+ * = Returns
66
+ * Array of [0] first week's date and [1] last week's date.
67
+ *
68
+ **/
69
+ calendarDateRange: function(_date){
70
+ var _date_begin = this.firstDateOfMonth(_date),
71
+ _date_end = this.lastDateOfMonth(_date),
72
+ _firstWeeksDate = this.firstDateOfWeek(_date_begin),
73
+ _lastWeeksDate = this.lastDateOfWeek(_date_end),
74
+ _week_begin = this.week(_firstWeeksDate),
75
+ _week_end = this.week(_lastWeeksDate),
76
+ _weeks = _week_end-_week_begin;
77
+ if((_weeks===5) && (_firstWeeksDate.getDate() !== 1)){
78
+ _lastWeeksDate = new Date( _lastWeeksDate.getTime() + this.msWeek );
79
+ }
80
+ else if((_weeks===5) && (_firstWeeksDate.getDate() === 1)){
81
+ _firstWeeksDate = new Date( _firstWeeksDate.getTime() - this.msWeek );
82
+ }
83
+ else if(_weeks===4){
84
+ _firstWeeksDate = new Date( _firstWeeksDate.getTime() - this.msWeek );
85
+ _lastWeeksDate = new Date( _lastWeeksDate.getTime() + this.msWeek );
86
+ }
87
+ return [
88
+ _firstWeeksDate,
89
+ _lastWeeksDate
90
+ ];
91
+ },
92
+
93
+ /** = Description
94
+ * Refreshes the calendar.
95
+ *
96
+ **/
97
+ refreshValue: function(){
98
+ var _date = this.date();
99
+ this.drawCalendar(_date);
100
+ },
101
+
102
+ /** = Description
103
+ * Draws the next month on calendar.
104
+ *
105
+ **/
106
+ nextMonth: function(){
107
+ var _date = new Date( this.viewMonth[0], this.viewMonth[1]+1, 1 );
108
+ this.drawCalendar( new Date(_date.getTime() - this.tzMs(_date)) );
109
+ },
110
+
111
+ /** = Description
112
+ * Draws the previous month on calendar.
113
+ *
114
+ **/
115
+ prevMonth: function(){
116
+ var _date = new Date( this.viewMonth[0], this.viewMonth[1]-1, 1 );
117
+ this.drawCalendar( new Date(_date.getTime() - this.tzMs(_date)) );
118
+ },
119
+ viewMonth: [1970,0],
120
+
121
+ /** = Description
122
+ * Draws the calendar with the date open given as input.
123
+ *
124
+ * = Parameters
125
+ * +_date+:: The date on which calendar UI is opened at.
126
+ *
127
+ **/
128
+ drawCalendar: function(_date){
129
+ _date = (_date instanceof Date)?_date:this.date();
130
+ var _calendarDateRange = this.calendarDateRange(_date),
131
+ _monthFirst = this.firstDateOfMonth(_date),
132
+ _monthLast = this.lastDateOfMonth(_date),
133
+ _firstDate = _calendarDateRange[0],
134
+ _lastDate = _calendarDateRange[1],
135
+ _column_count = this.weekdays_localized.length,
136
+ _column_width = Math.floor((this.rect.width-1)/_column_count),
137
+ _row_height = Math.floor((this.rect.height-1-35)/6),
138
+ _week_html_pre = ['<div class="calendar_weeks_week_row" style="width:'+(this.rect.width-3)+'px;height:'+_row_height+'px;top:','px">'],
139
+ _week_html_suf = '</div>',
140
+ _col_html_pre = ['<a href="javascript:void(HSystem.views['+this.viewId+'].setValue(','));" class="calendar_weeks_week_col','" style="width:'+_column_width+'px;height:'+_row_height+'px;line-height:'+_row_height+'px;left:','px">'],
141
+ _col_html_suf = '</a>',
142
+ _col_week_pre = '<div class="calendar_weeks_week_col_wk" style="width:'+_column_width+'px;height:'+_row_height+'px;line-height:'+_row_height+'px;left:0px">',
143
+ _col_week_suf = '</div>',
144
+ _month_html = [],
145
+ _week_html,
146
+ _col_html,
147
+ _row = 0,
148
+ _col,
149
+ _colMs,
150
+ _colSecs,
151
+ _colDate,
152
+ _extraCssClass;
153
+ for(; _row<6; _row++){
154
+ _week_html = [];
155
+ for(_col = 0; _col<8; _col++){
156
+ _colDate = new Date(_firstDate.getTime()+((_row*this.msWeek)+((_col-1)*this.msDay)));
157
+ _colMs = _colDate.getTime();
158
+ if(_col===0){
159
+ _col_html = [
160
+ _col_week_pre,
161
+ this.week(_colDate),
162
+ _col_week_suf
163
+ ].join('');
164
+ }
165
+ else {
166
+ _colSecs = Math.round(_colMs/1000);
167
+ if((this.value >= _colSecs) && (this.value < (_colSecs+86400))){
168
+ _extraCssClass = '_'+'sel';
169
+ }
170
+ else{
171
+ _extraCssClass = (_colDate<_monthFirst || _colDate > _monthLast)?'_'+'no':'_'+'yes';
172
+ }
173
+ _col_html = [
174
+ _col_html_pre[0],
175
+ _colSecs,
176
+ _col_html_pre[1],
177
+ _extraCssClass,
178
+ _col_html_pre[2],
179
+ (_col*_column_width),
180
+ _col_html_pre[3],
181
+ this.mday(_colDate),
182
+ _col_html_suf
183
+ ].join('');
184
+ }
185
+ _week_html.push(_col_html);
186
+ }
187
+ _month_html.push([
188
+ _week_html_pre.join(_row*_row_height),
189
+ _week_html.join(''),
190
+ _week_html_suf
191
+ ].join('') );
192
+ }
193
+ ELEM.setHTML(this.markupElemIds.value, _month_html.join(''));
194
+ ELEM.setHTML(this.markupElemIds.state, this.monthName(_date)+'&nbsp;'+this.year(_date));
195
+ this.viewMonth = [_monthFirst.getUTCFullYear(),_monthFirst.getUTCMonth()];
196
+ }
197
+ });
198
+ HCalendar.implement(HDateTime);
File without changes
@@ -0,0 +1,108 @@
1
+ .calendar_control {
2
+ position: absolute;
3
+ left: 0px; top: 0px; right: 1px; bottom: 1px;
4
+ border: 1px solid #999;
5
+ }
6
+ .calendar_head {
7
+ position: absolute;
8
+ left: 0px; top: 0px; right: 0px; height: 20px;
9
+ }
10
+ .calendar_head_prev_month,
11
+ .calendar_head_next_month {
12
+ position: absolute;
13
+ top: 2px; width: 16px; height: 16px;
14
+ font-size: 0; line-height: 0;
15
+ line-height: 20px;
16
+ cursor: pointer;
17
+ background-image: #{this.getCssFilePath('calendar_arrows.png')};
18
+ }
19
+ .calendar_head_prev_month {
20
+ background-position: 0px 0px;
21
+ left: 2px;
22
+ }
23
+ .calendar_head_next_month {
24
+ background-position: -16px 0px;
25
+ right: 2px;
26
+ }
27
+ .calendar_head_prev_month:hover {
28
+ background-position: 0px -16px;
29
+ }
30
+ .calendar_head_next_month:hover {
31
+ background-position: -16px -16px;
32
+ }
33
+ .calendar_head_prev_month:active,
34
+ .calendar_head_next_month:active {
35
+ background-color: #fff;
36
+ }
37
+ .calender_head_month_year {
38
+ position: absolute;
39
+ top: 0px; left: 20px; right: 20px; height: 20px;
40
+ color: #000;
41
+ font-family: Arial, sans-serif;
42
+ font-weight: bold;
43
+ font-size: 13px;
44
+ line-height: 20px;
45
+ vertical-align: middle;
46
+ text-align: center;
47
+ }
48
+ .calendar_weekdays {
49
+ position: absolute;
50
+ top: 20px; left: 0px; right: 0px; height: 15px;
51
+ }
52
+ .calendar_weekdays div {
53
+ position: absolute;
54
+ top: 0px; height: 15px; width: 25px;
55
+ color: #000;
56
+ font-family: Arial, sans-serif;
57
+ font-size: 11px;
58
+ line-height: 15px;
59
+ vertical-align: middle;
60
+ text-align: center;
61
+ }
62
+ .calendar_weeks {
63
+ position: absolute;
64
+ top: 34px; left: 0px; right: 2px; bottom: 2px;
65
+ }
66
+ .calendar_weeks_week_row {
67
+ position: absolute;
68
+ left: 0px; right: 0px;
69
+ }
70
+ .calendar_weeks_week_col_no,
71
+ .calendar_weeks_week_col_sel,
72
+ .calendar_weeks_week_col_wk,
73
+ .calendar_weeks_week_col_yes {
74
+ position: absolute;
75
+ text-decoration: none;
76
+ top: 0px;
77
+ font-family: Arial, sans-serif;
78
+ font-size: 15px;
79
+ vertical-align: middle;
80
+ text-align: center;
81
+ cursor: pointer;
82
+ }
83
+ .calendar_weeks_week_col_wk {
84
+ color: #000;
85
+ cursor: default;
86
+ }
87
+ .calendar_weeks_week_col_no {
88
+ color: #666;
89
+ border-left: 1px solid #999;
90
+ border-top: 1px solid #999;
91
+ }
92
+ .calendar_weeks_week_col_no:hover {
93
+ background-color: #fff;
94
+ color: #000;
95
+ }
96
+ .calendar_weeks_week_col_yes,
97
+ .calendar_weeks_week_col_sel {
98
+ color: #000;
99
+ background-color: #ddd;
100
+ font-weight: bold;
101
+ border-left: 1px solid #666;
102
+ border-top: 1px solid #666;
103
+ }
104
+ .calendar_weeks_week_col_sel,
105
+ .calendar_weeks_week_col_yes:hover {
106
+ background-color: #fff;
107
+ }
108
+
@@ -0,0 +1,9 @@
1
+ <div class="calendar_control" id="control#{_ID}">
2
+ <div class="calendar_head">
3
+ <div class="calendar_head_prev_month" onclick="HSystem.views[#{this.viewId}].prevMonth();"></div>
4
+ <div class="calender_head_month_year" id="state#{_ID}"></div>
5
+ <div class="calendar_head_next_month" onclick="HSystem.views[#{this.viewId}].nextMonth();"></div>
6
+ </div>
7
+ <div class="calendar_weekdays" id="label#{_ID}"></div>
8
+ <div class="calendar_weeks" id="value#{_ID}"></div>
9
+ </div>
@@ -0,0 +1,247 @@
1
+ /* RSence
2
+ * Copyright 2009 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+
10
+ /*** = Description
11
+ ** Auxiliary class for time handling.
12
+ ***/
13
+ var//RSence.DateTime
14
+ HDateTime = HClass.extend({
15
+ msWeek: 604800000,
16
+ msDay: 86400000,
17
+ msHour: 3600000,
18
+ msMinute: 60000,
19
+ months_localized: [
20
+ 'January', 'February', 'March', 'April', 'May', 'June', 'July',
21
+ 'August', 'September', 'October', 'November', 'December'
22
+ ],
23
+
24
+ /** = Description
25
+ * Returns month name of the given date.
26
+ *
27
+ * = Parameters
28
+ * +_date+:: Date to return month name from.
29
+ *
30
+ * = Returns
31
+ * Month name
32
+ *
33
+ **/
34
+ monthName: function(_date){
35
+ _date = (_date instanceof Date)?_date:this.date();
36
+ return this.months_localized[_date.getUTCMonth()];
37
+ },
38
+
39
+ /** = Description
40
+ * Returns week number for date given as input.
41
+ *
42
+ * = Parameters
43
+ * +_date+:: Date to return week number from.
44
+ *
45
+ * = Returns
46
+ * Number of the week.
47
+ *
48
+ **/
49
+ week: function(_date){
50
+ _date = (_date instanceof Date)?_date:this.date();
51
+ var _firstDateOfYear = this.firstDateOfYear(_date),
52
+ _firstWeekOfYear = this.firstDateOfWeek(_firstDateOfYear);
53
+ if(_firstWeekOfYear.getUTCDate()<=28){
54
+ _firstWeekOfYear = new Date(_firstWeekOfYear.getTime()+this.msWeek-this.tzMs(_firstWeekOfYear));
55
+ }
56
+ var _week = Math.ceil(
57
+ ( ( ( _date.getTime() - _firstWeekOfYear - this.tzMs(_date) ) / this.msDay ) + _firstDateOfYear.getUTCDay() + 1 ) / 7
58
+ );
59
+ if((_week === 53) && (this.firstDateOfWeek(this.lastDateOfYear(_date)).getUTCDate() > 28 )){
60
+ _week = 1;
61
+ }
62
+ return _week;
63
+ },
64
+
65
+ /** = Description
66
+ * Returns day of the month for the date given as input.
67
+ *
68
+ * = Parameters
69
+ * +_date+:: Date to return day of the month.
70
+ *
71
+ * = Returns
72
+ * Day of the month
73
+ *
74
+ **/
75
+ mday: function(_date){
76
+ _date = (_date instanceof Date)?_date:this.date();
77
+ return _date.getUTCDate();
78
+ },
79
+
80
+ /** = Description
81
+ * Returns month number for the date given as input.
82
+ * Note that months are numbered from 0 to 11.
83
+ *
84
+ * = Parameters
85
+ * +_date+:: Date to return month number from.
86
+ *
87
+ * = Returns
88
+ * Number of the month 0 (January) to 11 (December).
89
+ *
90
+ **/
91
+ month: function(_date){
92
+ _date = (_date instanceof Date)?_date:this.date();
93
+ return _date.getUTCMonth();
94
+ },
95
+
96
+ /** = Description
97
+ * Returns year for given date.
98
+ *
99
+ * = Parameters
100
+ * +_date+:: Date to return year from.
101
+ *
102
+ * = Returns
103
+ * Year
104
+ *
105
+ **/
106
+ year: function(_date){
107
+ _date = (_date instanceof Date)?_date:this.date();
108
+ return _date.getUTCFullYear();
109
+ },
110
+
111
+ /** = Description
112
+ * Returns the timezone offset in milliseconds.
113
+ *
114
+ * = Parameters
115
+ * +_date+:: The date to get timezone offset from.
116
+ *
117
+ * = Returns
118
+ * Timezone offset in milliseconds.
119
+ *
120
+ **/
121
+ tzMs: function(_date){
122
+ return _date.getTimezoneOffset()*this.msMinute;
123
+ },
124
+
125
+ /** = Description
126
+ * Returns a Date instance for epoch given in seconds.
127
+ *
128
+ * = Parameters
129
+ * +epoch_seconds+:: Point of time given in seconds
130
+ * since 1 January 1970 00:00:00 UTC.
131
+ *
132
+ * = Returns
133
+ * Date object
134
+ *
135
+ **/
136
+ date: function(epoch_seconds){
137
+ epoch_seconds = (typeof epoch_seconds === 'number')?epoch_seconds:this.value;
138
+ var _date = new Date(epoch_seconds*1000);
139
+ return _date;
140
+ },
141
+
142
+ /** = Description
143
+ * Returns a Date object with first millisecond of the year.
144
+ *
145
+ * = Parameters
146
+ * +_date+:: The date to get the first millisecond of the same year.
147
+ *
148
+ * = Returns
149
+ * The Date object for the first millisecond of the year
150
+ *
151
+ **/
152
+ firstDateOfYear: function(_date){
153
+ _date = (_date instanceof Date)?_date:this.date();
154
+ var _date1 = new Date( _date.getUTCFullYear(), 0, 1 ),
155
+ _date2 = new Date( _date1.getTime() - this.tzMs(_date1) );
156
+ return _date2;
157
+ },
158
+
159
+ /** = Description
160
+ * Get last millisecond of the input given date's year as a Date object.
161
+ *
162
+ * = Parameters
163
+ * +_date+:: The last millisecond of the year on the date given.
164
+ *
165
+ * = Returns
166
+ * Last millisecond of the year as a Date object.
167
+ *
168
+ **/
169
+ lastDateOfYear: function(_date){
170
+ _date = (_date instanceof Date)?_date:this.date();
171
+ var _date1 = new Date( new Date( _date.getUTCFullYear()+1, 0, 1 ) - 1 ),
172
+ _date2 = new Date( _date1.getTime() - this.tzMs(_date1) );
173
+ return _date2;
174
+ },
175
+
176
+ /** = Description
177
+ * Returns the first millisecond of the input given date's month.
178
+ *
179
+ * = Parameters
180
+ * +_date+:: The date to get the first millisecond of the month
181
+ *
182
+ * = Returns
183
+ * The first millisecond on the given date's month as a Date object.
184
+ *
185
+ **/
186
+ firstDateOfMonth: function(_date){
187
+ _date = (_date instanceof Date)?_date:this.date();
188
+ var _date1 = new Date( _date.getUTCFullYear(), _date.getUTCMonth(), 1 ),
189
+ _date2 = new Date( _date1.getTime() - this.tzMs(_date1) );
190
+ return _date2;
191
+ },
192
+
193
+ /** = Description
194
+ * Returns the last millisecond of the input given date's month.
195
+ *
196
+ * = Parameters
197
+ * +_date+:: The date to get the last millisecond of the month.
198
+ *
199
+ * = Returns
200
+ * The last millisecond of the given date's month as a Date object.
201
+ *
202
+ **/
203
+ lastDateOfMonth: function(_date){
204
+ _date = (_date instanceof Date)?_date:this.date();
205
+ var _date1 = new Date( new Date( _date.getUTCFullYear(), _date.getUTCMonth()+1, 1 ) - 1 ),
206
+ _date2 = new Date( _date1.getTime() - this.tzMs(_date1) );
207
+ return _date2;
208
+ },
209
+
210
+ /** = Description
211
+ * Returns the first millisecond when the week starts for date given as input.
212
+ *
213
+ * = Parameters
214
+ * +_date+:: The date to get the first millisecond.
215
+ *
216
+ * = Returns
217
+ * Date for the first millisecond of the week.
218
+ *
219
+ **/
220
+ firstDateOfWeek: function(_date){
221
+ _date = (_date instanceof Date)?_date:this.date();
222
+ var _wday = _date.getUTCDay();
223
+ if(_wday===0){
224
+ _wday = 7;
225
+ }
226
+ var _dateMs = ((_wday-1)*this.msDay),
227
+ _date1 = new Date( _date.getTime() - _dateMs ),
228
+ _date2 = new Date( _date1.getTime() );
229
+ return _date2;
230
+ },
231
+
232
+ /** = Description
233
+ * Returns the last millisecond of the week for the given date.
234
+ *
235
+ * = Parameters
236
+ * +_date+:: The date to get the last millisecond
237
+ *
238
+ * = Returns
239
+ * The last millisecond of the week as a Date object.
240
+ *
241
+ **/
242
+ lastDateOfWeek: function(_date){
243
+ var _firstDateOfWeek = this.firstDateOfWeek(_date),
244
+ _lastDateOfWeek = new Date( _firstDateOfWeek.getTime() + this.msWeek - this.msDay - 1 );
245
+ return _lastDateOfWeek;
246
+ }
247
+ });
File without changes
File without changes
@@ -0,0 +1,30 @@
1
+ .timesheet_hours_col {
2
+ position: absolute;
3
+ top: 0px; left: 0px; width: 32px;
4
+ font-family: Arial, sans-serif;
5
+ font-size: 11px;
6
+ color: #666;
7
+ vertical-align: middle;
8
+ text-align: right;
9
+ }
10
+ .timesheet_hours_row {
11
+ position: absolute;
12
+ left: 0px; width: 32px;
13
+ }
14
+ .timesheet_lines_col {
15
+ position: absolute;
16
+ top: 0px; left: 36px; right: 0px;
17
+ border-left: 1px solid #aaa;
18
+ border-bottom: 1px solid #aaa;
19
+ border-right: 1px solid #aaa;
20
+ }
21
+ .timesheet_lines_row0,
22
+ .timesheet_lines_row1 {
23
+ position: absolute;
24
+ left: 0px; right: 0px; height: 1px;
25
+ line-height: 1px; font-size: 0px;
26
+ background-color: #ccc;
27
+ }
28
+ .timesheet_lines_row0 {
29
+ background-color: #aaa;
30
+ }
@@ -0,0 +1,2 @@
1
+ <div class="timesheet_hours_col" id="label#{_ID}"></div>
2
+ <div class="timesheet_lines_col" id="state#{_ID}"></div>