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.
- data/.yardopts +10 -0
- data/INSTALL.rdoc +330 -0
- data/LICENSE.txt +622 -0
- data/README.rdoc +98 -0
- data/VERSION +1 -0
- data/bin/rsence +25 -0
- data/bin/rsence-pre +25 -0
- data/conf/default_conf.yaml +346 -0
- data/conf/default_strings.yaml +76 -0
- data/conf/rsence_command_strings.yaml +444 -0
- data/docs/ExampleGuiPlugin.rdoc +193 -0
- data/docs/JavascriptBundles.rdoc +0 -0
- data/docs/PluginBundleInfo.rdoc +173 -0
- data/docs/PluginBundles.rdoc +96 -0
- data/docs/Values.rdoc +163 -0
- data/js/comm/autosync/autosync.js +17 -0
- data/js/comm/autosync/js.inc +0 -0
- data/js/comm/comm.js +203 -0
- data/js/comm/js.inc +0 -0
- data/js/comm/jsloader/js.inc +0 -0
- data/js/comm/jsloader/jsloader.js +112 -0
- data/js/comm/queue/js.inc +0 -0
- data/js/comm/queue/queue.js +184 -0
- data/js/comm/session/js.inc +0 -0
- data/js/comm/session/session.js +52 -0
- data/js/comm/sessionwatcher/js.inc +0 -0
- data/js/comm/sessionwatcher/sessionwatcher.js +44 -0
- data/js/comm/transporter/js.inc +0 -0
- data/js/comm/transporter/transporter.js +261 -0
- data/js/comm/urlresponder/js.inc +0 -0
- data/js/comm/urlresponder/urlresponder.js +149 -0
- data/js/comm/values/js.inc +0 -0
- data/js/comm/values/values.js +433 -0
- data/js/controls/button/button.js +72 -0
- data/js/controls/button/js.inc +0 -0
- data/js/controls/button/themes/bright/button.css +89 -0
- data/js/controls/button/themes/bright/button.html +7 -0
- data/js/controls/button/themes/bright/button_parts1-ie6.gif +0 -0
- data/js/controls/button/themes/bright/button_parts1.png +0 -0
- data/js/controls/button/themes/default/button.css +89 -0
- data/js/controls/button/themes/default/button.html +7 -0
- data/js/controls/button/themes/default/button_parts1-ie6.gif +0 -0
- data/js/controls/button/themes/default/button_parts1.png +0 -0
- data/js/controls/checkbox/checkbox.js +49 -0
- data/js/controls/checkbox/js.inc +0 -0
- data/js/controls/checkbox/themes/default/checkbox.css +69 -0
- data/js/controls/checkbox/themes/default/checkbox.html +5 -0
- data/js/controls/checkbox/themes/default/checkbox_parts1-ie6.gif +0 -0
- data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
- data/js/controls/dialogs/alert_sheet/alert_sheet.js +63 -0
- data/js/controls/dialogs/alert_sheet/js.inc +0 -0
- data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +37 -0
- data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
- data/js/controls/dialogs/sheet/js.inc +0 -0
- data/js/controls/dialogs/sheet/sheet.js +84 -0
- data/js/controls/dialogs/sheet/themes/default/sheet.css +64 -0
- data/js/controls/dialogs/sheet/themes/default/sheet.html +14 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_bg-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_dim-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts1-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts2-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_warning-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
- data/js/controls/imageview/imageview.js +109 -0
- data/js/controls/imageview/js.inc +0 -0
- data/js/controls/imageview/themes/default/blank.gif +0 -0
- data/js/controls/passwordcontrol/js.inc +0 -0
- data/js/controls/passwordcontrol/passwordcontrol.js +23 -0
- data/js/controls/passwordcontrol/themes/default/passwordcontrol.css +0 -0
- data/js/controls/passwordcontrol/themes/default/passwordcontrol.html +18 -0
- data/js/controls/progress/progressbar/js.inc +0 -0
- data/js/controls/progress/progressbar/progressbar.js +40 -0
- data/js/controls/progress/progressbar/themes/default/progressbar.css +16 -0
- data/js/controls/progress/progressbar/themes/default/progressbar.html +2 -0
- data/js/controls/progress/progressindicator/js.inc +0 -0
- data/js/controls/progress/progressindicator/progressindicator.js +44 -0
- data/js/controls/radiobutton/js.inc +0 -0
- data/js/controls/radiobutton/radiobutton.js +43 -0
- data/js/controls/radiobutton/themes/default/radiobutton.css +69 -0
- data/js/controls/radiobutton/themes/default/radiobutton.html +5 -0
- data/js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif +0 -0
- data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
- data/js/controls/sliders/slider/js.inc +0 -0
- data/js/controls/sliders/slider/slider.js +357 -0
- data/js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif +0 -0
- data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
- data/js/controls/sliders/slider/themes/default/slider.css +108 -0
- data/js/controls/sliders/slider/themes/default/slider.html +5 -0
- data/js/controls/sliders/slider/themes/default/slider_thumbs-ie6.gif +0 -0
- data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
- data/js/controls/sliders/vslider/js.inc +0 -0
- data/js/controls/sliders/vslider/themes/default/vslider.css +52 -0
- data/js/controls/sliders/vslider/themes/default/vslider.html +5 -0
- data/js/controls/sliders/vslider/themes/default/vslider_tracks-ie6.gif +0 -0
- data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
- data/js/controls/sliders/vslider/vslider.js +41 -0
- data/js/controls/stepper/js.inc +0 -0
- data/js/controls/stepper/stepper.js +213 -0
- data/js/controls/stepper/themes/default/stepper-ie6.gif +0 -0
- data/js/controls/stepper/themes/default/stepper.css +14 -0
- data/js/controls/stepper/themes/default/stepper.html +2 -0
- data/js/controls/stepper/themes/default/stepper.png +0 -0
- data/js/controls/stringview/js.inc +0 -0
- data/js/controls/stringview/stringview.js +49 -0
- data/js/controls/stringview/themes/default/stringview.css +8 -0
- data/js/controls/stringview/themes/default/stringview.html +1 -0
- data/js/controls/tab/js.inc +0 -0
- data/js/controls/tab/tab.js +280 -0
- data/js/controls/tab/themes/bright/tab.css +76 -0
- data/js/controls/tab/themes/bright/tab.html +6 -0
- data/js/controls/tab/themes/bright/tab_bg_color-ie6.gif +0 -0
- data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
- data/js/controls/tab/themes/bright/tab_border_pattern-ie6.gif +0 -0
- data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
- data/js/controls/tab/themes/bright/tab_parts1-ie6.gif +0 -0
- data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
- data/js/controls/tab/themes/default/tab.css +77 -0
- data/js/controls/tab/themes/default/tab.html +6 -0
- data/js/controls/tab/themes/default/tab_bg_color-ie6.gif +0 -0
- data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
- data/js/controls/tab/themes/default/tab_border_pattern-ie6.gif +0 -0
- data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
- data/js/controls/tab/themes/default/tab_parts1-ie6.gif +0 -0
- data/js/controls/tab/themes/default/tab_parts1.png +0 -0
- data/js/controls/textarea/js.inc +0 -0
- data/js/controls/textarea/textarea.js +24 -0
- data/js/controls/textarea/themes/default/textarea.css +21 -0
- data/js/controls/textarea/themes/default/textarea.html +18 -0
- data/js/controls/textcontrol/js.inc +0 -0
- data/js/controls/textcontrol/textcontrol.js +374 -0
- data/js/controls/textcontrol/themes/default/textcontrol.css +107 -0
- data/js/controls/textcontrol/themes/default/textcontrol.html +18 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts1-ie6.gif +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts2-ie6.gif +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts3-ie6.gif +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
- data/js/controls/uploader/js.inc +0 -0
- data/js/controls/uploader/themes/default/upload_progress.gif +0 -0
- data/js/controls/uploader/themes/default/uploader.css +108 -0
- data/js/controls/uploader/themes/default/uploader.html +27 -0
- data/js/controls/uploader/uploader.js +154 -0
- data/js/controls/validatorview/js.inc +0 -0
- data/js/controls/validatorview/themes/default/validator-ie6.gif +0 -0
- data/js/controls/validatorview/themes/default/validator.png +0 -0
- data/js/controls/validatorview/themes/default/validatorview.css +0 -0
- data/js/controls/validatorview/themes/default/validatorview.html +0 -0
- data/js/controls/validatorview/validatorview.js +62 -0
- data/js/controls/window/js.inc +0 -0
- data/js/controls/window/themes/default/window.css +219 -0
- data/js/controls/window/themes/default/window.html +17 -0
- data/js/controls/window/themes/default/window_bg_active-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_bg_active.png +0 -0
- data/js/controls/window/themes/default/window_bg_inactive-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
- data/js/controls/window/themes/default/window_buttons-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_buttons.png +0 -0
- data/js/controls/window/themes/default/window_parts1-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_parts1.png +0 -0
- data/js/controls/window/themes/default/window_parts2-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_parts2.png +0 -0
- data/js/controls/window/window.js +286 -0
- data/js/core/class/class.js +318 -0
- data/js/core/class/js.inc +0 -0
- data/js/core/elem/elem.js +1383 -0
- data/js/core/elem/js.inc +0 -0
- data/js/core/event/event.js +153 -0
- data/js/core/event/js.inc +0 -0
- data/js/core/iefix/ie_css_element.htc +5 -0
- data/js/core/iefix/ie_css_style.htc +5 -0
- data/js/core/iefix/iefix.js +359 -0
- data/js/core/iefix/js.inc +0 -0
- data/js/core/rsence_ns/js.inc +0 -0
- data/js/core/rsence_ns/rsence_ns.js +21 -0
- data/js/datetime/calendar/calendar.js +198 -0
- data/js/datetime/calendar/js.inc +0 -0
- data/js/datetime/calendar/themes/default/calendar.css +108 -0
- data/js/datetime/calendar/themes/default/calendar.html +9 -0
- data/js/datetime/calendar/themes/default/calendar_arrows-ie6.gif +0 -0
- data/js/datetime/calendar/themes/default/calendar_arrows.png +0 -0
- data/js/datetime/datetimevalue/datetimevalue.js +247 -0
- data/js/datetime/datetimevalue/js.inc +0 -0
- data/js/datetime/timesheet/js.inc +0 -0
- data/js/datetime/timesheet/themes/default/timesheet.css +30 -0
- data/js/datetime/timesheet/themes/default/timesheet.html +2 -0
- data/js/datetime/timesheet/timesheet.js +183 -0
- data/js/datetime/timesheet_item/js.inc +0 -0
- data/js/datetime/timesheet_item/themes/default/timesheet_item.css +42 -0
- data/js/datetime/timesheet_item/themes/default/timesheet_item.html +8 -0
- data/js/datetime/timesheet_item/timesheet_item.js +248 -0
- data/js/datetime/timesheet_item_edit/js.inc +0 -0
- data/js/datetime/timesheet_item_edit/timesheet_item_edit.js +274 -0
- data/js/foundation/application/application.js +208 -0
- data/js/foundation/application/js.inc +0 -0
- data/js/foundation/control/control.js +339 -0
- data/js/foundation/control/controldefaults/controldefaults.js +56 -0
- data/js/foundation/control/controldefaults/js.inc +0 -0
- data/js/foundation/control/dummyvalue/dummyvalue.js +51 -0
- data/js/foundation/control/dummyvalue/js.inc +0 -0
- data/js/foundation/control/dyncontrol/dyncontrol.js +500 -0
- data/js/foundation/control/dyncontrol/js.inc +0 -0
- data/js/foundation/control/dyncontrol/themes/default/dyncontrol.css +0 -0
- data/js/foundation/control/dyncontrol/themes/default/dyncontrol.html +0 -0
- data/js/foundation/control/eventresponder/eventresponder.js +750 -0
- data/js/foundation/control/eventresponder/js.inc +0 -0
- data/js/foundation/control/js.inc +0 -0
- data/js/foundation/control/valuematrix/js.inc +0 -0
- data/js/foundation/control/valuematrix/valuematrix.js +135 -0
- data/js/foundation/control/valueresponder/js.inc +0 -0
- data/js/foundation/control/valueresponder/valueresponder.js +79 -0
- data/js/foundation/eventmanager/eventmanager.js +991 -0
- data/js/foundation/eventmanager/js.inc +0 -0
- data/js/foundation/geom/point/js.inc +0 -0
- data/js/foundation/geom/point/point.js +202 -0
- data/js/foundation/geom/rect/js.inc +0 -0
- data/js/foundation/geom/rect/rect.js +651 -0
- data/js/foundation/json_renderer/js.inc +0 -0
- data/js/foundation/json_renderer/json_renderer.js +246 -0
- data/js/foundation/system/js.inc +0 -0
- data/js/foundation/system/system.js +381 -0
- data/js/foundation/thememanager/js.inc +0 -0
- data/js/foundation/thememanager/thememanager.js +393 -0
- data/js/foundation/value/js.inc +0 -0
- data/js/foundation/value/value.js +183 -0
- data/js/foundation/view/js.inc +0 -0
- data/js/foundation/view/markupview/js.inc +0 -0
- data/js/foundation/view/markupview/markupview.js +114 -0
- data/js/foundation/view/morphanimation/js.inc +0 -0
- data/js/foundation/view/morphanimation/morphanimation.js +237 -0
- data/js/foundation/view/view.js +1812 -0
- data/js/foundation/view/viewdefaults/js.inc +0 -0
- data/js/foundation/view/viewdefaults/viewdefaults.js +26 -0
- data/js/lists/checkboxlist/checkboxlist.js +171 -0
- data/js/lists/checkboxlist/js.inc +0 -0
- data/js/lists/listitems/js.inc +0 -0
- data/js/lists/listitems/listitems.js +88 -0
- data/js/lists/propertylist/js.inc +0 -0
- data/js/lists/propertylist/propertylist.js +326 -0
- data/js/lists/radiobuttonlist/js.inc +0 -0
- data/js/lists/radiobuttonlist/radiobuttonlist.js +116 -0
- data/js/util/reloadapp/js.inc +0 -0
- data/js/util/reloadapp/reloadapp.js +152 -0
- data/js/util/reloadapp/themes/default/reloadapp_warning-ie6.gif +0 -0
- data/js/util/reloadapp/themes/default/reloadapp_warning.png +0 -0
- data/js/util/sha/js.inc +0 -0
- data/js/util/sha/sha.js +426 -0
- data/js/views/centerview/centerview.js +75 -0
- data/js/views/centerview/js.inc +0 -0
- data/js/views/inlineview/inlineview.js +15 -0
- data/js/views/inlineview/js.inc +0 -0
- data/js/views/scrollview/js.inc +0 -0
- data/js/views/scrollview/scrollview.js +40 -0
- data/lib/conf/argv.rb +850 -0
- data/lib/conf/default.rb +219 -0
- data/lib/daemon/daemon.rb +387 -0
- data/lib/daemon/sigcomm.rb +64 -0
- data/lib/http/broker.rb +150 -0
- data/lib/http/rackup.rb +91 -0
- data/lib/http/request.rb +66 -0
- data/lib/http/response.rb +65 -0
- data/lib/plugins/dependencies.rb +285 -0
- data/lib/plugins/gui_plugin.rb +160 -0
- data/lib/plugins/guiparser.rb +123 -0
- data/lib/plugins/plugin.rb +438 -0
- data/lib/plugins/plugin_base.rb +162 -0
- data/lib/plugins/plugin_plugins.rb +81 -0
- data/lib/plugins/plugin_sqlite_db.rb +98 -0
- data/lib/plugins/pluginmanager.rb +635 -0
- data/lib/plugins/plugins.rb +169 -0
- data/lib/plugins/servlet.rb +108 -0
- data/lib/rsence.rb +32 -0
- data/lib/session/msg.rb +327 -0
- data/lib/session/sessionmanager.rb +522 -0
- data/lib/session/sessionstorage.rb +340 -0
- data/lib/transporter/transporter.rb +263 -0
- data/lib/util/gzstring.rb +9 -0
- data/lib/util/ruby19_fixes.rb +18 -0
- data/lib/values/hvalue.rb +378 -0
- data/lib/values/valuemanager.rb +172 -0
- data/plugins/client_pkg/client_pkg.rb +157 -0
- data/plugins/client_pkg/info.yaml +25 -0
- data/plugins/client_pkg/lib/client_pkg_build.rb +561 -0
- data/plugins/client_pkg/lib/client_pkg_cache.rb +50 -0
- data/plugins/client_pkg/lib/client_pkg_serve.rb +218 -0
- data/plugins/index_html/img/loading.gif +0 -0
- data/plugins/index_html/img/riassence.gif +0 -0
- data/plugins/index_html/index_html.rb +120 -0
- data/plugins/index_html/info.yaml +18 -0
- data/plugins/index_html/tmpl/index.html +15 -0
- data/plugins/main/info.yaml +18 -0
- data/plugins/main/js/main.js +84 -0
- data/plugins/main/main.rb +255 -0
- data/plugins/main/values.yaml +8 -0
- data/plugins/ticket/info.yaml +21 -0
- data/plugins/ticket/lib/common.rb +392 -0
- data/plugins/ticket/lib/favicon.rb +39 -0
- data/plugins/ticket/lib/file.rb +58 -0
- data/plugins/ticket/lib/img.rb +50 -0
- data/plugins/ticket/lib/objblob.rb +66 -0
- data/plugins/ticket/lib/rsrc.rb +34 -0
- data/plugins/ticket/lib/upload.rb +236 -0
- data/plugins/ticket/ticket.rb +333 -0
- data/setup/welcome/gui/welcome.yaml +92 -0
- data/setup/welcome/info.yaml +13 -0
- data/setup/welcome/text/welcome.html +9 -0
- data/setup/welcome/values.yaml +9 -0
- data/setup/welcome/welcome.rb +54 -0
- 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
|