rsence 2.0.0.0.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 (311) hide show
  1. data/INSTALL.rdoc +295 -0
  2. data/LICENSE +622 -0
  3. data/README.rdoc +24 -0
  4. data/VERSION +1 -0
  5. data/bin/build_client.rb +254 -0
  6. data/bin/help +6 -0
  7. data/bin/launch.rb +120 -0
  8. data/bin/rdoc.sh +2 -0
  9. data/bin/restart +6 -0
  10. data/bin/rsence +120 -0
  11. data/bin/run +6 -0
  12. data/bin/run.rb +6 -0
  13. data/bin/save +6 -0
  14. data/bin/start +6 -0
  15. data/bin/status +6 -0
  16. data/bin/stop +6 -0
  17. data/conf/config.ru +5 -0
  18. data/conf/default_conf.yaml +337 -0
  19. data/conf/default_strings.yaml +77 -0
  20. data/conf/local_conf.yaml +14 -0
  21. data/conf/unicorn.conf +78 -0
  22. data/js/comm/comm/autosync/autosync.js +18 -0
  23. data/js/comm/comm/autosync/js.inc +0 -0
  24. data/js/comm/comm/comm.js +195 -0
  25. data/js/comm/comm/js.inc +0 -0
  26. data/js/comm/comm/queue/js.inc +0 -0
  27. data/js/comm/comm/queue/queue.js +183 -0
  28. data/js/comm/comm/session/js.inc +0 -0
  29. data/js/comm/comm/session/session.js +51 -0
  30. data/js/comm/comm/sessionwatcher/js.inc +0 -0
  31. data/js/comm/comm/sessionwatcher/sessionwatcher.js +43 -0
  32. data/js/comm/comm/transporter/js.inc +0 -0
  33. data/js/comm/comm/transporter/transporter.js +257 -0
  34. data/js/comm/comm/urlresponder/js.inc +0 -0
  35. data/js/comm/comm/urlresponder/urlresponder.js +148 -0
  36. data/js/comm/comm/values/js.inc +0 -0
  37. data/js/comm/comm/values/values.js +432 -0
  38. data/js/comm/jsloader/js.inc +0 -0
  39. data/js/comm/jsloader/jsloader.js +114 -0
  40. data/js/comm/reloadapp/js.inc +0 -0
  41. data/js/comm/reloadapp/reloadapp.js +150 -0
  42. data/js/comm/reloadapp/themes/default/reloadapp_warning-ie6.gif +0 -0
  43. data/js/comm/reloadapp/themes/default/reloadapp_warning.png +0 -0
  44. data/js/comm/sha/js.inc +0 -0
  45. data/js/comm/sha/sha.js +432 -0
  46. data/js/comm/values/value/js.inc +0 -0
  47. data/js/comm/values/value/value.js +182 -0
  48. data/js/comm/values/valuematrix/js.inc +0 -0
  49. data/js/comm/values/valuematrix/valuematrix.js +138 -0
  50. data/js/controls/button/button.js +57 -0
  51. data/js/controls/button/js.inc +0 -0
  52. data/js/controls/button/themes/bright/button.css +89 -0
  53. data/js/controls/button/themes/bright/button.html +7 -0
  54. data/js/controls/button/themes/bright/button_parts1-ie6.gif +0 -0
  55. data/js/controls/button/themes/bright/button_parts1.png +0 -0
  56. data/js/controls/button/themes/default/button.css +89 -0
  57. data/js/controls/button/themes/default/button.html +7 -0
  58. data/js/controls/button/themes/default/button_parts1-ie6.gif +0 -0
  59. data/js/controls/button/themes/default/button_parts1.png +0 -0
  60. data/js/controls/checkbox/checkbox.js +47 -0
  61. data/js/controls/checkbox/js.inc +0 -0
  62. data/js/controls/checkbox/themes/default/checkbox.css +69 -0
  63. data/js/controls/checkbox/themes/default/checkbox.html +5 -0
  64. data/js/controls/checkbox/themes/default/checkbox_parts1-ie6.gif +0 -0
  65. data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
  66. data/js/controls/datetime/calendar/calendar.js +197 -0
  67. data/js/controls/datetime/calendar/js.inc +0 -0
  68. data/js/controls/datetime/calendar/themes/default/calendar.css +108 -0
  69. data/js/controls/datetime/calendar/themes/default/calendar.html +9 -0
  70. data/js/controls/datetime/calendar/themes/default/calendar_arrows-ie6.gif +0 -0
  71. data/js/controls/datetime/calendar/themes/default/calendar_arrows.png +0 -0
  72. data/js/controls/datetime/datetimevalue/datetimevalue.js +246 -0
  73. data/js/controls/datetime/datetimevalue/js.inc +0 -0
  74. data/js/controls/datetime/timesheet/js.inc +0 -0
  75. data/js/controls/datetime/timesheet/themes/default/timesheet.css +30 -0
  76. data/js/controls/datetime/timesheet/themes/default/timesheet.html +2 -0
  77. data/js/controls/datetime/timesheet/timesheet.js +182 -0
  78. data/js/controls/datetime/timesheet_item/js.inc +0 -0
  79. data/js/controls/datetime/timesheet_item/themes/default/timesheet_item.css +42 -0
  80. data/js/controls/datetime/timesheet_item/themes/default/timesheet_item.html +8 -0
  81. data/js/controls/datetime/timesheet_item/timesheet_item.js +247 -0
  82. data/js/controls/datetime/timesheet_item_edit/js.inc +0 -0
  83. data/js/controls/datetime/timesheet_item_edit/timesheet_item_edit.js +274 -0
  84. data/js/controls/dialogs/alert_sheet/alert_sheet.js +62 -0
  85. data/js/controls/dialogs/alert_sheet/js.inc +0 -0
  86. data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +36 -0
  87. data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
  88. data/js/controls/dialogs/sheet/js.inc +0 -0
  89. data/js/controls/dialogs/sheet/sheet.js +83 -0
  90. data/js/controls/dialogs/sheet/themes/default/sheet.css +64 -0
  91. data/js/controls/dialogs/sheet/themes/default/sheet.html +14 -0
  92. data/js/controls/dialogs/sheet/themes/default/sheet_bg-ie6.gif +0 -0
  93. data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
  94. data/js/controls/dialogs/sheet/themes/default/sheet_dim-ie6.gif +0 -0
  95. data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
  96. data/js/controls/dialogs/sheet/themes/default/sheet_parts1-ie6.gif +0 -0
  97. data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
  98. data/js/controls/dialogs/sheet/themes/default/sheet_parts2-ie6.gif +0 -0
  99. data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
  100. data/js/controls/dialogs/sheet/themes/default/sheet_warning-ie6.gif +0 -0
  101. data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
  102. data/js/controls/imageview/imageview.js +108 -0
  103. data/js/controls/imageview/js.inc +0 -0
  104. data/js/controls/imageview/themes/default/blank.gif +0 -0
  105. data/js/controls/lists/checkboxlist/checkboxlist.js +170 -0
  106. data/js/controls/lists/checkboxlist/js.inc +0 -0
  107. data/js/controls/lists/listitems/js.inc +0 -0
  108. data/js/controls/lists/listitems/listitems.js +65 -0
  109. data/js/controls/lists/radiobuttonlist/js.inc +0 -0
  110. data/js/controls/lists/radiobuttonlist/radiobuttonlist.js +126 -0
  111. data/js/controls/passwordcontrol/js.inc +0 -0
  112. data/js/controls/passwordcontrol/passwordcontrol.js +22 -0
  113. data/js/controls/passwordcontrol/themes/default/passwordcontrol.css +0 -0
  114. data/js/controls/passwordcontrol/themes/default/passwordcontrol.html +18 -0
  115. data/js/controls/progress/progressbar/js.inc +0 -0
  116. data/js/controls/progress/progressbar/progressbar.js +36 -0
  117. data/js/controls/progress/progressbar/themes/default/progressbar.css +16 -0
  118. data/js/controls/progress/progressbar/themes/default/progressbar.html +2 -0
  119. data/js/controls/progress/progressindicator/js.inc +0 -0
  120. data/js/controls/progress/progressindicator/progressindicator.js +43 -0
  121. data/js/controls/radiobutton/js.inc +0 -0
  122. data/js/controls/radiobutton/radiobutton.js +41 -0
  123. data/js/controls/radiobutton/themes/default/radiobutton.css +69 -0
  124. data/js/controls/radiobutton/themes/default/radiobutton.html +5 -0
  125. data/js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif +0 -0
  126. data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
  127. data/js/controls/sliders/slider/js.inc +0 -0
  128. data/js/controls/sliders/slider/slider.js +356 -0
  129. data/js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif +0 -0
  130. data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
  131. data/js/controls/sliders/slider/themes/default/slider.css +108 -0
  132. data/js/controls/sliders/slider/themes/default/slider.html +5 -0
  133. data/js/controls/sliders/slider/themes/default/slider_thumbs-ie6.gif +0 -0
  134. data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
  135. data/js/controls/sliders/vslider/js.inc +0 -0
  136. data/js/controls/sliders/vslider/themes/default/vslider.css +52 -0
  137. data/js/controls/sliders/vslider/themes/default/vslider.html +5 -0
  138. data/js/controls/sliders/vslider/themes/default/vslider_tracks-ie6.gif +0 -0
  139. data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
  140. data/js/controls/sliders/vslider/vslider.js +40 -0
  141. data/js/controls/stepper/js.inc +0 -0
  142. data/js/controls/stepper/stepper.js +212 -0
  143. data/js/controls/stepper/themes/default/stepper-ie6.gif +0 -0
  144. data/js/controls/stepper/themes/default/stepper.css +14 -0
  145. data/js/controls/stepper/themes/default/stepper.html +2 -0
  146. data/js/controls/stepper/themes/default/stepper.png +0 -0
  147. data/js/controls/stringview/js.inc +0 -0
  148. data/js/controls/stringview/stringview.js +49 -0
  149. data/js/controls/stringview/themes/default/stringview.css +8 -0
  150. data/js/controls/stringview/themes/default/stringview.html +1 -0
  151. data/js/controls/tab/js.inc +0 -0
  152. data/js/controls/tab/tab.js +276 -0
  153. data/js/controls/tab/themes/bright/tab.css +76 -0
  154. data/js/controls/tab/themes/bright/tab.html +6 -0
  155. data/js/controls/tab/themes/bright/tab_bg_color-ie6.gif +0 -0
  156. data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
  157. data/js/controls/tab/themes/bright/tab_border_pattern-ie6.gif +0 -0
  158. data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
  159. data/js/controls/tab/themes/bright/tab_parts1-ie6.gif +0 -0
  160. data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
  161. data/js/controls/tab/themes/default/tab.css +77 -0
  162. data/js/controls/tab/themes/default/tab.html +6 -0
  163. data/js/controls/tab/themes/default/tab_bg_color-ie6.gif +0 -0
  164. data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
  165. data/js/controls/tab/themes/default/tab_border_pattern-ie6.gif +0 -0
  166. data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
  167. data/js/controls/tab/themes/default/tab_parts1-ie6.gif +0 -0
  168. data/js/controls/tab/themes/default/tab_parts1.png +0 -0
  169. data/js/controls/textarea/js.inc +0 -0
  170. data/js/controls/textarea/textarea.js +23 -0
  171. data/js/controls/textarea/themes/default/textarea.css +21 -0
  172. data/js/controls/textarea/themes/default/textarea.html +18 -0
  173. data/js/controls/textcontrol/js.inc +0 -0
  174. data/js/controls/textcontrol/textcontrol.js +372 -0
  175. data/js/controls/textcontrol/themes/default/textcontrol.css +107 -0
  176. data/js/controls/textcontrol/themes/default/textcontrol.html +18 -0
  177. data/js/controls/textcontrol/themes/default/textcontrol_parts1-ie6.gif +0 -0
  178. data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
  179. data/js/controls/textcontrol/themes/default/textcontrol_parts2-ie6.gif +0 -0
  180. data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
  181. data/js/controls/textcontrol/themes/default/textcontrol_parts3-ie6.gif +0 -0
  182. data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
  183. data/js/controls/uploader/js.inc +0 -0
  184. data/js/controls/uploader/themes/default/upload_progress.gif +0 -0
  185. data/js/controls/uploader/themes/default/uploader.css +108 -0
  186. data/js/controls/uploader/themes/default/uploader.html +27 -0
  187. data/js/controls/uploader/uploader.js +153 -0
  188. data/js/controls/validatorview/js.inc +0 -0
  189. data/js/controls/validatorview/themes/default/validator-ie6.gif +0 -0
  190. data/js/controls/validatorview/themes/default/validator.png +0 -0
  191. data/js/controls/validatorview/themes/default/validatorview.css +0 -0
  192. data/js/controls/validatorview/themes/default/validatorview.html +0 -0
  193. data/js/controls/validatorview/validatorview.js +55 -0
  194. data/js/controls/window/js.inc +0 -0
  195. data/js/controls/window/themes/default/window.css +219 -0
  196. data/js/controls/window/themes/default/window.html +17 -0
  197. data/js/controls/window/themes/default/window_bg_active-ie6.gif +0 -0
  198. data/js/controls/window/themes/default/window_bg_active.png +0 -0
  199. data/js/controls/window/themes/default/window_bg_inactive-ie6.gif +0 -0
  200. data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
  201. data/js/controls/window/themes/default/window_buttons-ie6.gif +0 -0
  202. data/js/controls/window/themes/default/window_buttons.png +0 -0
  203. data/js/controls/window/themes/default/window_parts1-ie6.gif +0 -0
  204. data/js/controls/window/themes/default/window_parts1.png +0 -0
  205. data/js/controls/window/themes/default/window_parts2-ie6.gif +0 -0
  206. data/js/controls/window/themes/default/window_parts2.png +0 -0
  207. data/js/controls/window/window.js +284 -0
  208. data/js/core/class/class.js +317 -0
  209. data/js/core/class/js.inc +0 -0
  210. data/js/core/elem/elem.js +1376 -0
  211. data/js/core/elem/js.inc +0 -0
  212. data/js/core/event/event.js +1021 -0
  213. data/js/core/event/js.inc +0 -0
  214. data/js/core/iefix/ie_css_element.htc +5 -0
  215. data/js/core/iefix/ie_css_style.htc +5 -0
  216. data/js/core/iefix/iefix.js +359 -0
  217. data/js/core/iefix/js.inc +0 -0
  218. data/js/debugg/debugg.js +43 -0
  219. data/js/debugg/js.inc +0 -0
  220. data/js/foundation/application/application.js +209 -0
  221. data/js/foundation/application/js.inc +0 -0
  222. data/js/foundation/control/control.js +342 -0
  223. data/js/foundation/control/controldefaults/controldefaults.js +59 -0
  224. data/js/foundation/control/controldefaults/js.inc +0 -0
  225. data/js/foundation/control/dummyvalue/dummyvalue.js +50 -0
  226. data/js/foundation/control/dummyvalue/js.inc +0 -0
  227. data/js/foundation/control/dyncontrol/dyncontrol.js +494 -0
  228. data/js/foundation/control/dyncontrol/js.inc +0 -0
  229. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.css +0 -0
  230. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.html +0 -0
  231. data/js/foundation/control/eventresponder/eventresponder.js +713 -0
  232. data/js/foundation/control/eventresponder/js.inc +0 -0
  233. data/js/foundation/control/js.inc +0 -0
  234. data/js/foundation/control/valueresponder/js.inc +0 -0
  235. data/js/foundation/control/valueresponder/valueresponder.js +77 -0
  236. data/js/foundation/geom/point/js.inc +0 -0
  237. data/js/foundation/geom/point/point.js +202 -0
  238. data/js/foundation/geom/rect/js.inc +0 -0
  239. data/js/foundation/geom/rect/rect.js +610 -0
  240. data/js/foundation/json_renderer/js.inc +0 -0
  241. data/js/foundation/json_renderer/json_renderer.js +231 -0
  242. data/js/foundation/system/js.inc +0 -0
  243. data/js/foundation/system/system.js +369 -0
  244. data/js/foundation/thememanager/js.inc +0 -0
  245. data/js/foundation/thememanager/thememanager.js +387 -0
  246. data/js/foundation/view/js.inc +0 -0
  247. data/js/foundation/view/markupview/js.inc +0 -0
  248. data/js/foundation/view/markupview/markupview.js +113 -0
  249. data/js/foundation/view/morphanimation/js.inc +0 -0
  250. data/js/foundation/view/morphanimation/morphanimation.js +236 -0
  251. data/js/foundation/view/view.js +1804 -0
  252. data/js/foundation/view/viewdefaults/js.inc +0 -0
  253. data/js/foundation/view/viewdefaults/viewdefaults.js +25 -0
  254. data/js/views/centerview/centerview.js +45 -0
  255. data/js/views/centerview/js.inc +0 -0
  256. data/js/views/inlineview/inlineview.js +14 -0
  257. data/js/views/inlineview/js.inc +0 -0
  258. data/js/views/scrollview/js.inc +0 -0
  259. data/js/views/scrollview/scrollview.js +39 -0
  260. data/lib/conf/default.rb +220 -0
  261. data/lib/conf/wizard.rb +303 -0
  262. data/lib/daemon/daemon.rb +293 -0
  263. data/lib/http/broker.rb +102 -0
  264. data/lib/http/rackup.rb +88 -0
  265. data/lib/http/request.rb +69 -0
  266. data/lib/http/response.rb +63 -0
  267. data/lib/plugins/gui_plugin.rb +129 -0
  268. data/lib/plugins/guiparser.rb +114 -0
  269. data/lib/plugins/plugin.rb +652 -0
  270. data/lib/plugins/plugin_plugins.rb +47 -0
  271. data/lib/plugins/plugin_sqlite_db.rb +72 -0
  272. data/lib/plugins/plugin_util.rb +96 -0
  273. data/lib/plugins/pluginmanager.rb +517 -0
  274. data/lib/plugins/servlet.rb +69 -0
  275. data/lib/session/msg.rb +291 -0
  276. data/lib/session/sessionmanager.rb +491 -0
  277. data/lib/session/sessionstorage.rb +314 -0
  278. data/lib/transporter/transporter.rb +254 -0
  279. data/lib/util/gzstring.rb +5 -0
  280. data/lib/values/hvalue.rb +323 -0
  281. data/lib/values/valuemanager.rb +152 -0
  282. data/plugins/client_pkg/client_pkg.rb +186 -0
  283. data/plugins/client_pkg/info.yaml +25 -0
  284. data/plugins/client_pkg/lib/client_pkg_build.rb +569 -0
  285. data/plugins/client_pkg/lib/client_pkg_cache.rb +50 -0
  286. data/plugins/client_pkg/lib/client_pkg_serve.rb +210 -0
  287. data/plugins/client_pkg/log/build_log +0 -0
  288. data/plugins/index_html/img/loading.gif +0 -0
  289. data/plugins/index_html/img/riassence.gif +0 -0
  290. data/plugins/index_html/index_html.rb +150 -0
  291. data/plugins/index_html/tmpl/index.html +22 -0
  292. data/plugins/index_html/tmpl/startup_index.html +29 -0
  293. data/plugins/legacy/disabled +0 -0
  294. data/plugins/legacy/disabled- +0 -0
  295. data/plugins/legacy/info.yaml +22 -0
  296. data/plugins/legacy/legacy.rb +15 -0
  297. data/plugins/main/js/riassence_ns.js +87 -0
  298. data/plugins/main/main.rb +234 -0
  299. data/plugins/main/values.yaml +8 -0
  300. data/plugins/ticketservices/lib/common.rb +300 -0
  301. data/plugins/ticketservices/lib/favicon.rb +38 -0
  302. data/plugins/ticketservices/lib/file.rb +58 -0
  303. data/plugins/ticketservices/lib/img.rb +50 -0
  304. data/plugins/ticketservices/lib/objblob.rb +66 -0
  305. data/plugins/ticketservices/lib/rsrc.rb +34 -0
  306. data/plugins/ticketservices/lib/upload.rb +206 -0
  307. data/plugins/ticketservices/ticketservices.rb +268 -0
  308. data/var/db/.git_include +0 -0
  309. data/var/log/.git_include +0 -0
  310. data/var/run/.git_include +0 -0
  311. metadata +390 -0
File without changes
@@ -0,0 +1,51 @@
1
+ /* Riassence Framework
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
+ ** COMM.Session is the session key manager.
11
+ **
12
+ ** COMM.Session is used by COMM.Transporter to generate key hashes for
13
+ ** the session management of COMM.Transporter's keys.
14
+ **
15
+ ** The server expects this exact algorithm and refuses to serve unless
16
+ ** the SHA1 hash sum of the keys matches.
17
+ **
18
+ ** Uses a +SHAClass+ instance for generation.
19
+ **
20
+ ** +COMM.Queue+ runs as a single instance, dan't try to reconstruct it.
21
+ ***/
22
+ COMM.Session = HClass.extend({
23
+
24
+ /** The constructor takes no arguments.
25
+ **/
26
+ constructor: function(){
27
+ var _this = this;
28
+ _this.sha = SHAClass.nu(8);
29
+ _this.sha_key = _this.sha.hexSHA1(((new Date().getTime())*Math.random()*1000).toString());
30
+ _this.ses_key = '0:.o.:'+_this.sha_key;
31
+ _this.req_num = 0;
32
+ },
33
+
34
+ /** = Description
35
+ * Generates a new SHA1 sum using a combination of
36
+ * the previous sum and the +_newKey+ given.
37
+ *
38
+ * Sets +self.ses_key+ and +self.sha_key+
39
+ *
40
+ * = Parameters:
41
+ * +_newKey+:: A key set by the server.
42
+ *
43
+ **/
44
+ newKey: function(_sesKey){
45
+ var _this = this,
46
+ _shaKey = _this.sha.hexSHA1(_sesKey+_this.sha_key);
47
+ _this.req_num++;
48
+ _this.ses_key = _this.req_num+':.o.:'+_shaKey;
49
+ _this.sha_key = _shaKey;
50
+ }
51
+ }).nu();
File without changes
@@ -0,0 +1,43 @@
1
+ /* Riassence Framework
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
+ ** The single instance of this class is constructed after the first
12
+ ** handshake request with the server by the 'main' plugin.
13
+ **
14
+ ** It has dual functionality:
15
+ ** - It tells the the client time.
16
+ ** It's available as the server HValue instance
17
+ ** +msg.session[:main][:client_time]+ from
18
+ ** any Plugin instance.
19
+ ** - It polls the server on regular intervals.
20
+ ** The polling interval is defined by the server
21
+ ** as the _timeoutSecs constructor parameter.
22
+ **
23
+ ***/
24
+ COMM.SessionWatcher = HApplication.extend({
25
+ constructor: function( _timeoutSecs, _sesTimeoutValueId ){
26
+
27
+ // onIdle is called when HSystem's ticker count % 100 == 0
28
+ // this means it's 5 seconds with HSystemTickerInterval 50
29
+ this.base(10, 'SesWatcher');
30
+
31
+ // gets the HValue represented by
32
+ // sesTimeoutValueId (:client_time in server)
33
+ this.sesTimeoutValue = HVM.values[_sesTimeoutValueId];
34
+ this.timeoutSecs = _timeoutSecs;
35
+ },
36
+
37
+ // Tells the server the client's current time
38
+ onIdle: function(){
39
+ if((new Date().getTime() - this.sesTimeoutValue.value) > this.timeoutSecs ){
40
+ this.sesTimeoutValue.set( new Date().getTime() );
41
+ }
42
+ }
43
+ });
File without changes
@@ -0,0 +1,257 @@
1
+ /* Riassence Framework
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
+ ** Implements the client-server interface.
11
+ **
12
+ ** COMM.Transporter manages the client side of the server-client-server
13
+ ** data synchronization and the server-client command channel.
14
+ **
15
+ ** It uses COMM.Session for session key handling, COMM.Queue for command
16
+ ** queuing and COMM.Values for data value management.
17
+ **
18
+ ** COMM.Transporter operates in a fully automatic mode and starts when
19
+ ** the document has been loaded.
20
+ **
21
+ ** Don't call any of its methods from your code.
22
+ ***/
23
+ COMM.Transporter = HApplication.extend({
24
+
25
+ /** Sets up the default settings upon construction.
26
+ **/
27
+ constructor: function(){
28
+ var _this = this;
29
+ this.serverLostMessage = 'Server Connection Lost: Reconnecting...';
30
+ _this.label = 'Transporter';
31
+ _this.url = false;
32
+ _this.busy = false;
33
+ _this.stop = true;
34
+ _this._serverInterruptView = false;
35
+ _this._clientEvalError = false;
36
+ _this._busyFlushTimeout = false;
37
+ _this.base(1);
38
+ },
39
+
40
+ /** Tries to (re)connect to the server as often as possible,
41
+ * mandated essentially by the priority of its
42
+ * HApplication instance.
43
+ **/
44
+ onIdle: function(){
45
+ this.sync();
46
+ },
47
+
48
+ /** (Re)sets the priority of itself, effects how
49
+ * frequently +onIdle+ is called.
50
+ * Usually set by the server.
51
+ **/
52
+ poll: function(_pri){
53
+ HSystem.reniceApp(this.appId,_pri);
54
+ },
55
+
56
+ /** Returns the last transaction error of itself. Used by +sync+
57
+ * to report js errors to the server.
58
+ * If no error, returns an empty string.
59
+ **/
60
+ getClientEvalError: function(){
61
+ var _this = COMM.Transporter;
62
+ return _this._clientEvalError?'&err_msg=' +
63
+ COMM.Values._encodeString(_this._clientEvalError):'';
64
+ },
65
+
66
+ /** = Description
67
+ * Handles synchronization responses.
68
+ *
69
+ * Upon a successful request, this method is called by
70
+ * the onSuccess event of the XMLHttpRequest.
71
+ *
72
+ * It splits up the response string and passes the response
73
+ * messages to COMM.Queue for execution.
74
+ *
75
+ * Parameters:
76
+ * +resp+:: The response object.
77
+ *
78
+ **/
79
+ success: function(resp){
80
+ var _this = COMM.Transporter;
81
+ if(!resp.X.responseText){
82
+ _this.failure(resp);
83
+ return;
84
+ }
85
+ var _responseArray = eval(resp.X.responseText),
86
+ i = 1,
87
+ _responseArrayLen = _responseArray.length,
88
+ _sesKey = _responseArray[0],
89
+ _session = COMM.Session,
90
+ _queue = COMM.Queue;
91
+ if(_sesKey === ''){
92
+ console.log('Invalid session, error message should follow...');
93
+ }
94
+ else {
95
+ _session.newKey(_sesKey);
96
+ }
97
+ for(;i<_responseArrayLen;i++){
98
+ try {
99
+ _queue.pushEval( _responseArray[i] );
100
+ }
101
+ catch(e) {
102
+ console.log( 'clientError:'+e+" - "+e.description+' - '+_responseArray[i]);
103
+ _this._clientEvalError = e+" - "+e.description+' - '+_responseArray[i];
104
+ }
105
+ }
106
+ if(_this._serverInterruptView){
107
+ _this._serverInterruptView.die();
108
+ _this._serverInterruptView = false;
109
+ }
110
+ _queue.push( function(){COMM.Transporter.flushBusy();} );
111
+ _queue.flush();
112
+ },
113
+
114
+ /** Sets the +busy+ flag to false and resynchronizes immediately,
115
+ * if COMM.Values contain any unsynchronized values.
116
+ **/
117
+ flushBusy: function(){
118
+ var _this = COMM.Transporter;
119
+ _this.busy = false;
120
+ COMM.Values.tosync.length !== 0 && _this.sync();
121
+ },
122
+ failMessage: function(_title,_message){
123
+ var _this = COMM.Transporter,
124
+ _queue = COMM.Queue;
125
+ console.log('failMessage?');
126
+ _this.stop = true;
127
+ _queue.push(function(){jsLoader.load('default_theme');});
128
+ _queue.push(function(){jsLoader.load('controls');});
129
+ _queue.push(function(){jsLoader.load('servermessage');});
130
+ _queue.push(function(){ReloadApp.nu(_title,_message);});
131
+ },
132
+
133
+ /** Called by the XMLHttpRequest, when there was a failure in communication.
134
+ **/
135
+ failure: function(_resp){
136
+ var _this = COMM.Transporter;
137
+ // server didn't respond, likely network issue.. retry.
138
+ if(_resp.X.status===0){
139
+ console.log(_this.serverLostMessage);
140
+ if(!_this._serverInterruptView){
141
+ _this._serverInterruptView = HView.extend({
142
+ _setFailedResp: function(_resp){
143
+ if(_resp!==undefined){
144
+ this._failedResp = _resp;
145
+ }
146
+ this._errorIndex++;
147
+ return this;
148
+ },
149
+ _retry: function(){
150
+ this._retryIndex++;
151
+ var _resp = this._failedResp;
152
+ COMM.request(
153
+ _resp.url,
154
+ _resp.options
155
+ );
156
+ },
157
+ onIdle: function(){
158
+ var _currentDate = new Date().getTime();
159
+ this.bringToFront();
160
+ if( this._errorIndex > 0 &&
161
+ (this._retryIndex !== this._errorIndex) &&
162
+ (this._lastError + 2000 < _currentDate) &&
163
+ this._failedResp ){
164
+ this._lastError = _currentDate;
165
+ this._retry();
166
+ }
167
+ this.base();
168
+ },
169
+ _errorIndex: 0,
170
+ _retryIndex: 0,
171
+ _lastError: new Date().getTime(),
172
+ die: function(){
173
+ var _app = this.app;
174
+ HSystem.reniceApp(_app.appId,this._origPriority);
175
+ this.base();
176
+ _app.sync();
177
+ },
178
+ drawSubviews: function(){
179
+ var _style = [
180
+ ['padding-left', '8px'],
181
+ ['background-color', '#600'],
182
+ ['text-align','center'],
183
+ ['color', '#fff'],
184
+ ['font-size', '16px'],
185
+ ['opacity', 0.85]
186
+ ], i = 0;
187
+ for( ; i<_style.length; i++ ){
188
+ this.setStyle( _style[i][0], _style[i][1] );
189
+ }
190
+ this.setHTML(this.app.serverLostMessage);
191
+ this._origPriority = HSystem.appPriorities[this.appId];
192
+ if(HSystem.appPriorities[this.appId]<10){
193
+ HSystem.reniceApp(this.appId,10);
194
+ }
195
+ this._anim = HView.extend({
196
+ _animIndex: 0,
197
+ _anim: function(){
198
+ var _targetRect,
199
+ _width = ELEM.getSize(this.parent.elemId)[0];
200
+ this._animIndex++;
201
+ if(this._animIndex%2===0){
202
+ _targetRect = HRect.nu(0,0,80,20);
203
+ }
204
+ else {
205
+ _targetRect = HRect.nu(_width-80,0,_width,20);
206
+ }
207
+ this.animateTo(_targetRect,2000);
208
+ },
209
+ onAnimationEnd: function(){
210
+ if(this.drawn){
211
+ this._anim();
212
+ }
213
+ }
214
+ }
215
+ ).nu( [0,0,80,20], this ).setStyle('background-color','#fff').setStyle('opacity',0.8)._anim();
216
+ }
217
+ }).nu([0,0,200,20,0,null],_this)._setFailedResp(_resp);
218
+ }
219
+ else {
220
+ _this._serverInterruptView._setFailedResp();
221
+ }
222
+ }
223
+ else {
224
+ _this.failMessage('Transporter Error','Transporter was unable to complete the synchronization request.');
225
+ }
226
+ },
227
+
228
+ /** Starts requests.
229
+ **/
230
+ sync: function(){
231
+ if(this.stop){
232
+ // console.log('sync stop');
233
+ return;
234
+ }
235
+ if(this.busy){
236
+ // console.log('sync busy');
237
+ return;
238
+ }
239
+ // console.log('sync.');
240
+ this.busy = true;
241
+ var _this = this,
242
+ _values = COMM.Values.sync(),
243
+ _sesKey = 'ses_key='+COMM.Session.ses_key,
244
+ _errorMessage = _this.getClientEvalError(),
245
+ _body = [_sesKey,_errorMessage,_values?'&values='+_values:''].join('');
246
+ COMM.request(
247
+ _this.url, {
248
+ _this: _this,
249
+ onSuccess: COMM.Transporter.success,
250
+ onFailure: COMM.Transporter.failure,
251
+ method: 'POST',
252
+ async: true,
253
+ body: _body
254
+ }
255
+ );
256
+ }
257
+ }).nu();
File without changes
@@ -0,0 +1,148 @@
1
+ /* Riassence Framework
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
+ ** This application registers url responders to hide/show
11
+ ** certain views automatically whenever the anchor
12
+ ** part of the url is changed.
13
+ **
14
+ ** It is bound to the server HValue instance
15
+ ** +msg.session[:main][:location_href]+ by
16
+ ** the 'main' plugin. By default it runs with
17
+ ** a client-side-only HValue instance until then.
18
+ **
19
+ ***/
20
+ COMM.URLResponder = HApplication.extend({
21
+ constructor: function(){
22
+ this.urlMatchers = [];
23
+ this.urlCallBacks = [];
24
+ this.defaultCallBacks = [];
25
+ this.prevCallBacks = [];
26
+ this.prevMatchStrs = [];
27
+ this.base(1, 'URLResponder');
28
+ this.value = 0;
29
+ },
30
+
31
+ // sets the view to show when there is
32
+ // no matches (like a virtual 404)
33
+ setDefaultResponder: function(_callBack){
34
+ this.defaultCallBacks = [ _callBack ];
35
+ this.refresh();
36
+ },
37
+
38
+ addDefaultResponder: function(_callBack){
39
+ this.defaultCallBacks.push( _callBack );
40
+ this.refresh();
41
+ },
42
+
43
+ delDefaultResponder: function(_callBack){
44
+ this.defaultCallBacks.splice(this.defaultCallbacks.indexOf(_callBack),1);
45
+ this.refresh();
46
+ },
47
+
48
+ // Removes responder
49
+ // - matchStr is an url that the callBack will
50
+ // respond to
51
+ // - callBack is the component registered
52
+ delResponder: function(_matchStr,_callBack){
53
+ _callBack.hide();
54
+ if(this.prevCallBacks.indexOf(_callBack) !== -1){
55
+ this.prevCallBacks.splice(this.prevCallBacks.indexOf(_callBack),1);
56
+ this.prevMatchStrs.splice(this.prevMatchStrs.indexOf(_matchStr),1);
57
+ }
58
+ var i=0, _urlMatch, _urlCallBack;
59
+ for(;i<this.urlMatchers.length;i++){
60
+ _urlMatch = this.urlMatchers[i].test(_matchStr);
61
+ if(_urlMatch){
62
+ this.urlMatchers.splice(i,1);
63
+ this.urlCallBacks.splice(i,1);
64
+ return 1;
65
+ }
66
+ }
67
+ this.refresh();
68
+ return 0;
69
+ },
70
+
71
+ // Adds responder
72
+ // - matchRegExp is the regular expression
73
+ // that matches the anchor part of the uri
74
+ // - callBack is the component that will receive hide/show calls
75
+ // - activate is a flag that tells the view to be immediately
76
+ // activate (and the previous one to deactivate)
77
+ addResponder: function(_matchRegExp,_callBack,_activate){
78
+ this.urlMatchers.push(new RegExp(_matchRegExp));
79
+ this.urlCallBacks.push(_callBack);
80
+ this.checkMatch(this.value);
81
+ if(_activate!==undefined){
82
+ window.location.href=_activate;
83
+ }
84
+ this.refresh();
85
+ },
86
+
87
+ // Checks the matchStr agains regular expressions
88
+ checkMatch: function(_matchStr){
89
+ if(this.prevMatchStrs.indexOf( _matchStr ) !== -1 ){
90
+ return 0;
91
+ }
92
+ var i=0, _urlMatch, _urlCallBacks=[], _urlCallBack;
93
+ for(;i<this.urlMatchers.length;i++){
94
+ _urlMatch = this.urlMatchers[i].test(_matchStr);
95
+ if(_urlMatch){
96
+ _urlCallBacks.push(this.urlCallBacks[i]);
97
+ }
98
+ }
99
+ if(_urlCallBacks.length !== 0){
100
+ for(i=0;i<_urlCallBacks.length;i++){
101
+ _urlCallBack = _urlCallBacks[i];
102
+ _urlCallBack.show();
103
+ if(this.prevMatchStrs.indexOf(_matchStr)!==-1){
104
+ this.prevMatchStrs.push( _matchStr );
105
+ }
106
+ }
107
+ var _prevCallBack;
108
+ for(i=0;i<this.prevCallBacks.length;i++){
109
+ _prevCallBack = this.prevCallBacks[i];
110
+ if(_urlCallBacks.indexOf(_prevCallBack) === -1){
111
+ this.prevCallBacks[i].hide();
112
+ }
113
+ }
114
+ this.prevCallBacks = _urlCallBacks;
115
+ return 1;
116
+ }
117
+ if(this.defaultCallBacks.length !== 0){
118
+ if(this.prevCallBacks.length !== 0){
119
+ for(i=0;i<this.prevCallBacks.length;i++){
120
+ this.prevCallBacks[i].hide();
121
+ }
122
+ }
123
+ this.prevCallBacks = [];
124
+ for(i=0;i<this.defaultCallBacks.length;i++){
125
+ this.defaultCallBacks[i].show();
126
+ this.prevCallBacks.push( this.defaultCallBacks[i] );
127
+ }
128
+ }
129
+ return -1;
130
+ },
131
+
132
+ refresh: function(){
133
+ var _value = this.value;
134
+ if(_value.length === 0){ return; }
135
+ if(window.location.href !== _value){
136
+ window.location.href = _value;
137
+ }
138
+ this.checkMatch( _value );
139
+ },
140
+
141
+ onIdle: function(){
142
+ if(!this['valueObj']){return;}
143
+ var _href = window.location.href;
144
+ if(_href!==this.value){
145
+ this.setValue(_href);
146
+ }
147
+ }
148
+ });