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,149 @@
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
+ ** 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
+ //var//RSence.COMM
21
+ COMM.URLResponder = HApplication.extend({
22
+ constructor: function(){
23
+ this.urlMatchers = [];
24
+ this.urlCallBacks = [];
25
+ this.defaultCallBacks = [];
26
+ this.prevCallBacks = [];
27
+ this.prevMatchStrs = [];
28
+ this.base(1, 'URLResponder');
29
+ this.value = 0;
30
+ },
31
+
32
+ // sets the view to show when there is
33
+ // no matches (like a virtual 404)
34
+ setDefaultResponder: function(_callBack){
35
+ this.defaultCallBacks = [ _callBack ];
36
+ this.refresh();
37
+ },
38
+
39
+ addDefaultResponder: function(_callBack){
40
+ this.defaultCallBacks.push( _callBack );
41
+ this.refresh();
42
+ },
43
+
44
+ delDefaultResponder: function(_callBack){
45
+ this.defaultCallBacks.splice(this.defaultCallbacks.indexOf(_callBack),1);
46
+ this.refresh();
47
+ },
48
+
49
+ // Removes responder
50
+ // - matchStr is an url that the callBack will
51
+ // respond to
52
+ // - callBack is the component registered
53
+ delResponder: function(_matchStr,_callBack){
54
+ _callBack.hide();
55
+ if(this.prevCallBacks.indexOf(_callBack) !== -1){
56
+ this.prevCallBacks.splice(this.prevCallBacks.indexOf(_callBack),1);
57
+ this.prevMatchStrs.splice(this.prevMatchStrs.indexOf(_matchStr),1);
58
+ }
59
+ var i=0, _urlMatch, _urlCallBack;
60
+ for(;i<this.urlMatchers.length;i++){
61
+ _urlMatch = this.urlMatchers[i].test(_matchStr);
62
+ if(_urlMatch){
63
+ this.urlMatchers.splice(i,1);
64
+ this.urlCallBacks.splice(i,1);
65
+ return 1;
66
+ }
67
+ }
68
+ this.refresh();
69
+ return 0;
70
+ },
71
+
72
+ // Adds responder
73
+ // - matchRegExp is the regular expression
74
+ // that matches the anchor part of the uri
75
+ // - callBack is the component that will receive hide/show calls
76
+ // - activate is a flag that tells the view to be immediately
77
+ // activate (and the previous one to deactivate)
78
+ addResponder: function(_matchRegExp,_callBack,_activate){
79
+ this.urlMatchers.push(new RegExp(_matchRegExp));
80
+ this.urlCallBacks.push(_callBack);
81
+ this.checkMatch(this.value);
82
+ if(_activate!==undefined){
83
+ window.location.href=_activate;
84
+ }
85
+ this.refresh();
86
+ },
87
+
88
+ // Checks the matchStr agains regular expressions
89
+ checkMatch: function(_matchStr){
90
+ if(this.prevMatchStrs.indexOf( _matchStr ) !== -1 ){
91
+ return 0;
92
+ }
93
+ var i=0, _urlMatch, _urlCallBacks=[], _urlCallBack;
94
+ for(;i<this.urlMatchers.length;i++){
95
+ _urlMatch = this.urlMatchers[i].test(_matchStr);
96
+ if(_urlMatch){
97
+ _urlCallBacks.push(this.urlCallBacks[i]);
98
+ }
99
+ }
100
+ if(_urlCallBacks.length !== 0){
101
+ for(i=0;i<_urlCallBacks.length;i++){
102
+ _urlCallBack = _urlCallBacks[i];
103
+ _urlCallBack.show();
104
+ if(this.prevMatchStrs.indexOf(_matchStr)!==-1){
105
+ this.prevMatchStrs.push( _matchStr );
106
+ }
107
+ }
108
+ var _prevCallBack;
109
+ for(i=0;i<this.prevCallBacks.length;i++){
110
+ _prevCallBack = this.prevCallBacks[i];
111
+ if(_urlCallBacks.indexOf(_prevCallBack) === -1){
112
+ this.prevCallBacks[i].hide();
113
+ }
114
+ }
115
+ this.prevCallBacks = _urlCallBacks;
116
+ return 1;
117
+ }
118
+ if(this.defaultCallBacks.length !== 0){
119
+ if(this.prevCallBacks.length !== 0){
120
+ for(i=0;i<this.prevCallBacks.length;i++){
121
+ this.prevCallBacks[i].hide();
122
+ }
123
+ }
124
+ this.prevCallBacks = [];
125
+ for(i=0;i<this.defaultCallBacks.length;i++){
126
+ this.defaultCallBacks[i].show();
127
+ this.prevCallBacks.push( this.defaultCallBacks[i] );
128
+ }
129
+ }
130
+ return -1;
131
+ },
132
+
133
+ refresh: function(){
134
+ var _value = this.value;
135
+ if(_value.length === 0){ return; }
136
+ if(window.location.href !== _value){
137
+ window.location.href = _value;
138
+ }
139
+ this.checkMatch( _value );
140
+ },
141
+
142
+ onIdle: function(){
143
+ if(!this['valueObj']){return;}
144
+ var _href = window.location.href;
145
+ if(_href!==this.value){
146
+ this.setValue(_href);
147
+ }
148
+ }
149
+ });
File without changes
@@ -0,0 +1,433 @@
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
+ ** Manages data value synchronization.
11
+ **
12
+ ** Keeps track of all +HValue+ instances present.
13
+ ***/
14
+ //var//RSence.COMM
15
+ COMM.Values = HClass.extend({
16
+
17
+ /** No constructor, singleton class.
18
+ **/
19
+ constructor: null,
20
+
21
+ /** An +Object+ containing all values by key.
22
+ **/
23
+ values: {},
24
+
25
+ /** A list of value keys whose value has changed. To be synchronized asap.
26
+ **/
27
+ tosync: [],
28
+
29
+ /** = Description
30
+ * Creates a new +HValue+ instance. Its main purpose is to act as the main
31
+ * client-side value creation interface for the server representation of
32
+ * +HValue+.
33
+ *
34
+ * = Parameters
35
+ * +_id+:: The unique id of the +HValue+ instance (set by the server)
36
+ * +_data:: The initial data of the +HValue+ instance (set by the server)
37
+ *
38
+ **/
39
+ create: function(_id,_data){
40
+ HValue.nu(_id,_data);
41
+ },
42
+
43
+ /** = Description
44
+ * Binds a +HValue+ instance created externally to +self.values+.
45
+ * Called from +HValue+ upon construction.
46
+ *
47
+ * = Parameters
48
+ * +_id+:: The unique id of the +HValue+ instance (set by the server)
49
+ * +_value+:: The +HValue+ instance itself.
50
+ *
51
+ **/
52
+ add: function(_id,_value){
53
+ this.values[_id] = _value;
54
+ },
55
+
56
+ /** = Description
57
+ * Sets the data of the +HValue+ instance by +_Id+.
58
+ *
59
+ * = Parameters
60
+ * +_id+:: The unique id of the +HValue+ instance (set by the server)
61
+ * +_data+:: The new data, any Object type supported by JSON.
62
+ *
63
+ **/
64
+ set: function(_id,_data){
65
+ this.values[_id].set(_data);
66
+ },
67
+
68
+ /** = Description
69
+ * Sets and decodes the +_data+. Main value setter interface
70
+ * for the server representation of +HValue+.
71
+ *
72
+ * = Parameters
73
+ * +_id+:: The unique id of the +HValue+ instance (set by the server)
74
+ * +_data+:: The new data from the server, to be decoded.
75
+ *
76
+ **/
77
+ s: function(_id,_data){
78
+ var _this = this;
79
+ _data = _this.decode(_data);
80
+ _this.values[_id].s(_data);
81
+ },
82
+
83
+ /** = Description
84
+ * Deletes a +HValue+ instance by +_id+.
85
+ *
86
+ * = Parameters
87
+ * +_id+:: The unique id of the +HValue+ instance (set by the server)
88
+ *
89
+ **/
90
+ del: function(_id){
91
+ var _this = this,
92
+ _values = _this.values,
93
+ _value = _values[_id],
94
+ _views = _value.views,
95
+ _viewsLen = _views.lengt,
96
+ i = 0,
97
+ _view;
98
+ for(;i<_viewsLen;i++){
99
+ _view = _views[i];
100
+ _view.valueObj = HDummyValue.nu(0,_value.value);
101
+ }
102
+ _value.views = [];
103
+ delete _values[_id];
104
+ },
105
+
106
+ /** = Description
107
+ * Marks the +HValue+ instance as changed and tries to send it
108
+ * immediately, unless COMM.Transporter has an ongoing transfer.
109
+ * Usually called by the +HValue+ instance internally.
110
+ *
111
+ * = Parameters
112
+ * +_value+:: The +HValue+ instanche that changed.
113
+ *
114
+ **/
115
+ changed: function(_value){
116
+ var _this = this;
117
+ if(_this.tosync.indexOf(_value.id)===-1){
118
+ _this.tosync.push(_value.id);
119
+ var _transporter = COMM.Transporter;
120
+ if(!_transporter.busy){
121
+ _transporter.sync();
122
+ }
123
+ }
124
+ },
125
+
126
+ // List of primitive object types.
127
+ _builtins: [
128
+ 'b', // boolean
129
+ 'n', // number
130
+ 's' // string
131
+ ],
132
+
133
+ /** = Description
134
+ * Use this method to detect the type of the object given.
135
+ *
136
+ * Returns the type of the object given as a character code. Returns false,
137
+ * if unknown or unsupported objcet type.
138
+ *
139
+ * = Returns
140
+ * _One of the following:_
141
+ * - 'a': Array
142
+ * - 'h': Hash (Generic Object)
143
+ * - 'd': Date
144
+ * - 'b': Boolean (true/false)
145
+ * - 'n': Number (integers and floats)
146
+ * - 's': String
147
+ *
148
+ **/
149
+ type: function(_obj){
150
+ if(_obj === null || _obj === undefined){
151
+ console.log('null or undefined obj:',_obj);
152
+ return '-';
153
+ }
154
+ var _type = (typeof _obj).slice(0,1);
155
+ if(this._builtins.indexOf(_type)!==-1){
156
+ return _type;
157
+ }
158
+ else if(_type==='o'){
159
+ if(_obj.constructor === Array){
160
+ return 'a'; // array
161
+ }
162
+ else if(_obj.constructor === Object){
163
+ return 'h'; // hash
164
+ }
165
+ else if(_obj.constructor === Date){
166
+ return 'd'; // date
167
+ }
168
+ return false;
169
+ }
170
+ return false;
171
+ },
172
+
173
+ // Returns an encoded version of the array _arr as a string
174
+ _encodeArr: function(_arr){
175
+ var _str = '[',
176
+ _output = [],
177
+ _len = _arr.length,
178
+ _this = this,
179
+ _item,
180
+ i = 0;
181
+ for(;i<_len;i++){
182
+ _item = _this.encode(_arr[i]);
183
+ _output.push( _item );
184
+ }
185
+ _str += _output.join(',')+']';
186
+ return _str;
187
+ },
188
+
189
+ // Returns a decoded array with decoded content of array _arr
190
+ _decodeArr: function(_arr){
191
+ var _output = [],
192
+ _len = _arr.length,
193
+ _this = this,
194
+ _item,
195
+ i = 0;
196
+ for(;i<_len;i++){
197
+ _item = _this.decode(_arr[i]);
198
+ _output.push( _item );
199
+ }
200
+ return _output;
201
+ },
202
+
203
+ // Returns an encoded version of the Hash (Object) _hash as a string
204
+ _encodeHash: function(_hash){
205
+ var _str = '{',
206
+ _output = [],
207
+ _this = this,
208
+ _key,
209
+ _value;
210
+ for(_key in _hash){
211
+ _value = _hash[_key];
212
+ _output.push( _this.encode( _key ) + ':' + _this.encode( _value ) );
213
+ }
214
+ _str += _output.join(',')+'}';
215
+ return _str;
216
+ },
217
+
218
+ // Returns a decoded version of the Hash (Object) _hash
219
+ _decodeHash: function(_hash){
220
+ var _output = {},
221
+ _this = this,
222
+ _key,
223
+ _value;
224
+ for(_key in _hash){
225
+ _value = _hash[_key];
226
+ _output[_this.decode(_key)] = _this.decode(_value);
227
+ }
228
+ return _output;
229
+ },
230
+
231
+ // Regular expression match/replace pairs for string escaping.
232
+ _stringSubstitutions: [
233
+ [(/\\/g), '\\\\'],
234
+ //[(/\b/g), '\\b'],
235
+ [(/\t/g), '\\t'],
236
+ [(/\n/g), '\\n'],
237
+ [(/\f/g), '\\f'],
238
+ [(/\r/g), '\\r'],
239
+ [(/"/g), '\\"']
240
+ ],
241
+
242
+ // Quotes a string (escapes quotation marks and places quotes around)
243
+ _quoteString: function(_str){
244
+ var _this = this,
245
+ _substitutions = _this._stringSubstitutions,
246
+ i = 0, _len = _substitutions.length,
247
+ _line, _from, _to, _output = '';
248
+ for(;i<_len;i++){
249
+ _line = _substitutions[i];
250
+ _from = _line[0];
251
+ _to = _line[1];
252
+ _str = _str.replace( _from, _to );
253
+ }
254
+ return '"' + _str + '"';
255
+ },
256
+
257
+ // Encodes the native character set to url-encoded unicode.
258
+ // Likely causes issues with non-ascii strings, shouldn't be called (for now).
259
+ _encodeString: function(_str){
260
+ console.log( 'WARNING: encodeString called with string: ',_str );
261
+ var _outStr;
262
+ try {
263
+ _outStr = unescape( encodeURIComponent( _str ) );
264
+ }
265
+ catch(e) {
266
+ _outStr = _str;
267
+ }
268
+ return _outStr;
269
+ },
270
+
271
+ // Decodes the url-encoded unicode to the native character set
272
+ _decodeString: function(_str){
273
+ var _outStr;
274
+ try {
275
+ _outStr = decodeURIComponent( escape( _str ) );
276
+ }
277
+ catch(e) {
278
+ _outStr = _str;
279
+ }
280
+ return _outStr;
281
+ },
282
+
283
+ /** = Description
284
+ * Encodes an object to a ascii string (special characters url-encoded).
285
+ *
286
+ * = Parameters
287
+ * +_obj+:: Any object
288
+ *
289
+ * = Returns
290
+ * A +String+ representation of the +_obj+
291
+ *
292
+ **/
293
+ encode: function(_obj){
294
+ var _str, _type, _this = this;
295
+ if(_obj === null){
296
+ return 'null';
297
+ }
298
+ else if(_obj !== undefined){
299
+ _type = _this.type(_obj);
300
+ if(!_type){
301
+ return 'null';
302
+ }
303
+ switch(_type){
304
+ case 'b': _str = String(_obj); break;
305
+ case 'n': _str = String(_obj); break;
306
+ case 's': _str = _this._quoteString(_obj); break;
307
+ // Might need further investigation, but _encodeString is disabled for now:
308
+ // case 's': _str = _this._quoteString(_this._encodeString(_obj)); break;
309
+ case 'd': _str = '"@'+String(_obj.getTime()/1000)+'"'; break;
310
+ case 'a': _str = _this._encodeArr(_obj); break;
311
+ case 'h': _str = _this._encodeHash(_obj); break;
312
+ default: _str = 'null'; break;
313
+ }
314
+ }
315
+ else {
316
+ return 'null';
317
+ }
318
+ return _str;
319
+ },
320
+
321
+ /** = Description
322
+ * Decodes a JSON object. Decodes url-encoded strings contained.
323
+ *
324
+ * = Parameters
325
+ * +_ibj+:: A raw object with special characters url-encoded.
326
+ *
327
+ * = Returns
328
+ * An version of the object with the contained strings decoded to unicode.
329
+ *
330
+ **/
331
+ decode: function(_ibj){
332
+ var _obj, _type, _this = this;
333
+ if(_ibj !== null && _ibj !== undefined){
334
+ _type = _this.type(_ibj);
335
+ if(!_type){
336
+ return null;
337
+ }
338
+ switch(_type){
339
+ case 'b': _obj = _ibj; break;
340
+ case 'n': _obj = _ibj; break;
341
+ case 's': _obj = _this._decodeString(_ibj); break;
342
+ case 'd': _obj = _ibj; break;
343
+ case 'a': _obj = _this._decodeArr(_ibj); break;
344
+ case 'h': _obj = _this._decodeHash(_ibj); break;
345
+ default: _obj = null; break;
346
+ }
347
+ }
348
+ else {
349
+ return null;
350
+ }
351
+ return _obj;
352
+ },
353
+
354
+ /** = Description
355
+ * Makes a deep copy of the object.
356
+ *
357
+ * When you use assignment of a js object, only primitive object types
358
+ * (strings, numbers and booleans) are copied. This method makes a deep
359
+ * (nested) clone of the input object.
360
+ *
361
+ * = Parameters
362
+ * +_obj+:: Any object.
363
+ *
364
+ * = Returns
365
+ * A copy of the object.
366
+ *
367
+ **/
368
+ clone: function( _obj, _shallow ){
369
+ if(_obj === null || _obj === undefined){
370
+ console.log('null or undefined obj:',_obj);
371
+ return _obj;
372
+ }
373
+ var _item,
374
+ _cloned;
375
+ if( _obj instanceof Array ){
376
+ _cloned = [];
377
+ for( _item = 0; _item < _obj.length; _item ++ ){
378
+ if(_shallow){
379
+ _cloned[ _item ] = _obj[ _item ];
380
+ }
381
+ else {
382
+ _cloned[ _item ] = this.clone( _obj[ _item ] );
383
+ }
384
+ }
385
+ return _cloned;
386
+ }
387
+ else if( _obj instanceof Object ){
388
+ _cloned = {};
389
+ for( _item in _obj ){
390
+ if(_shallow){
391
+ _cloned[ _item ] = _obj[ _item ];
392
+ }
393
+ else {
394
+ _cloned[ _item ] = this.clone( _obj[ _item ] );
395
+ }
396
+ }
397
+ return _cloned;
398
+ }
399
+ else {
400
+ return _obj;
401
+ }
402
+ },
403
+
404
+ /** = Description
405
+ * Returns an URI-encoded string representation of all the changed values to
406
+ * synchronize to the server.
407
+ *
408
+ * = Returns
409
+ * An encoded string representation of values to synchronize.
410
+ **/
411
+ sync: function(){
412
+ if(this.tosync.length===0){
413
+ return false;
414
+ }
415
+ var _syncValues = {},
416
+ _this = this,
417
+ _values = _this.values,
418
+ _tosync = _this.tosync,
419
+ _len = _tosync.length,
420
+ i = 0, _id, _value;
421
+ for(;i<_len;i++){
422
+ _id = _tosync.shift();
423
+ _value = _values[_id].value;
424
+ _syncValues[_id] = _value;
425
+ }
426
+ return encodeURIComponent(_this.encode(_syncValues));
427
+ }
428
+ });
429
+
430
+ // Backwards compatibility assignment for code that still
431
+ // uses HVM as a reference of the Value Manager:
432
+ HVM = COMM.Values;
433
+
@@ -0,0 +1,72 @@
1
+ /* RSence
2
+ * Copyright 2008 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
+ ** Simple button component, designed to be extended for any
12
+ ** actual functionality above regular HControl.
13
+ ** It's limited to 24px height by the default theme, because
14
+ ** it's much simpler to render that way.
15
+ ***/
16
+ var//RSence.Controls
17
+ HButton = HControl.extend({
18
+
19
+ componentName: 'button',
20
+
21
+ /** = Description
22
+ * setStyle function for button.
23
+ *
24
+ **/
25
+ setStyle: function(_name, _value){
26
+ ELEM.setStyle(this.markupElemIds.label,_name,_value);
27
+ return this;
28
+ }
29
+
30
+ });
31
+
32
+
33
+ /*** = Description
34
+ ** Simple HButton extension, operates on its value so it's useful
35
+ ** for sending button clicks to the server and the like.
36
+ ** For the value responder, reset the value to 0 when read to make
37
+ ** the button clickable again.
38
+ **
39
+ ** = Value states
40
+ ** +0+:: Enabled, clickable
41
+ ** +1+:: Disabled, clicked
42
+ ** +Other+:: Disabled, not clickable, not clicked
43
+ ***/
44
+ var//RSence.Controls
45
+ HClickButton = HButton.extend({
46
+
47
+ defaultEvents: {
48
+ click: true
49
+ },
50
+
51
+ /** = Description
52
+ * Sets the button enabled if this.value is 0.
53
+ *
54
+ **/
55
+ refreshValue: function(){
56
+ this.setEnabled( this.value === 0 );
57
+ },
58
+ /** = Description
59
+ * Click method, sets the value to disabled if the button is enabled.
60
+ *
61
+ **/
62
+ click: function(){
63
+ if(this.enabled){
64
+ this.setValue(1);
65
+ }
66
+ }
67
+
68
+ });
69
+
70
+ var//RSence.Controls
71
+ HClickValueButton = HClickButton;
72
+
File without changes