rsence-pre 2.1.0.1.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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
|