rsence-pre 2.2.0.38 → 2.2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/INSTALL.rdoc +1 -1
- data/VERSION +1 -1
- data/conf/default_conf.yaml +0 -4
- data/conf/rsence_command_strings.yaml +1 -1
- data/js/comm/queue/queue.js +17 -8
- data/js/comm/transporter/transporter.js +117 -93
- data/js/comm/values/values.js +2 -2
- data/js/controls/button/themes/bright/button_parts1.png +0 -0
- data/js/controls/button/themes/default/button_parts1.png +0 -0
- data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
- data/js/controls/dialogs/sheet/sheet.js +1 -1
- data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
- data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
- data/js/controls/searchfield/themes/default/searchfield.css +3 -3
- data/js/controls/searchfield/themes/default/searchfield_parts1.png +0 -0
- data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
- data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
- data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
- data/js/controls/tab/tab.js +4 -3
- data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
- data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
- data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
- data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
- data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
- data/js/controls/tab/themes/default/tab_parts1.png +0 -0
- data/js/controls/textcontrol/textcontrol.js +3 -1
- data/js/controls/textcontrol/themes/default/textcontrol.css +1 -1
- data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
- data/js/controls/validatorview/themes/default/validator.png +0 -0
- data/js/controls/window/themes/default/window.css +66 -54
- data/js/controls/window/themes/default/window.html +6 -2
- data/js/controls/window/themes/default/window_bg_active.png +0 -0
- data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
- data/js/controls/window/themes/default/window_buttons.png +0 -0
- data/js/controls/window/themes/default/window_parts1.png +0 -0
- data/js/controls/window/themes/default/window_parts2.png +0 -0
- data/js/controls/window/window.js +167 -40
- data/js/core/class/class.js +10 -0
- data/js/core/elem/elem.coffee +54 -27
- data/js/core/event/event.js +2 -2
- data/js/datetime/calendar/calendar.coffee +24 -8
- data/js/datetime/calendar/themes/default/calendar.html +2 -2
- data/js/datetime/calendar/themes/default/calendar_arrows.png +0 -0
- data/js/datetime/calendar/themes/default/calendar_bg.png +0 -0
- data/js/datetime/calendar/themes/default/calendar_parts1.png +0 -0
- data/js/datetime/calendar/themes/default/calendar_parts2.png +0 -0
- data/js/datetime/timesheet_item/themes/default/timesheet_item_icons.png +0 -0
- data/js/datetime/timesheet_item/timesheet_item.js +1 -1
- data/js/foundation/application/application.js +28 -7
- data/js/foundation/control/eventresponder/eventresponder.js +7 -4
- data/js/foundation/eventmanager/eventmanager.js +28 -3
- data/js/foundation/geom/rect/rect.js +83 -46
- data/js/foundation/json_renderer/json_renderer.js +5 -5
- data/js/foundation/thememanager/thememanager.js +3 -0
- data/js/foundation/view/markupview/markupview.js +13 -13
- data/js/foundation/view/view.js +209 -56
- data/js/lists/propertylist/propertylist.js +33 -31
- data/js/menus/minimenu/minimenu.js +23 -6
- data/js/menus/minimenu/themes/default/minimenu.png +0 -0
- data/js/menus/minimenuitem/minimenuitem.js +11 -1
- data/js/menus/minimenuitem/themes/default/minimenuitem_checkmark.png +0 -0
- data/js/menus/popupmenu/themes/default/popupmenu.png +0 -0
- data/js/util/reloadapp/themes/default/reloadapp_warning.png +0 -0
- data/lib/rsence/argv/startup_argv.rb +1 -1
- data/lib/rsence/daemon.rb +2 -2
- data/lib/rsence/default_config.rb +2 -2
- data/lib/rsence/http/broker.rb +2 -4
- data/lib/rsence/msg.rb +1 -0
- data/lib/rsence/plugins/plugin.rb +11 -4
- data/lib/rsence/sessionmanager.rb +99 -37
- data/lib/rsence/sessionstorage.rb +29 -15
- data/lib/rsence/transporter.rb +3 -5
- data/plugins/client_pkg/client_pkg.rb +7 -8
- data/plugins/client_pkg/lib/client_pkg_build.rb +212 -95
- data/plugins/client_pkg/lib/client_pkg_cache.rb +1 -1
- data/plugins/main/main.rb +5 -1
- data/plugins/ticket/ticket.rb +9 -1
- metadata +72 -66
data/INSTALL.rdoc
CHANGED
@@ -132,7 +132,7 @@ This not only enables SessionStorage (persistent sessions between RSence restart
|
|
132
132
|
* *json*[http://flori.github.com/json]:: Library for bi-directional JSON[http://json.org] conversion.
|
133
133
|
* *yaml*[http://yaml4r.sourceforge.net/doc]:: Library for handling YAML[http://www.yaml.org] files
|
134
134
|
* *randgen*:: C-optimized random string generator developed for RSence specifically
|
135
|
-
* *
|
135
|
+
* *jsminc*:: C-optimized Javascript whitespace removal library; Ryan Fitzgerald's Ruby wrapper for Douglas Crockford's jsmin.c
|
136
136
|
* *jscompress*:: C-optimized Javascript compression and obfuscation library developed for RSence specifically
|
137
137
|
* *html_min*:: C-optimized HTML whitespace removal library developed for RSence specifically
|
138
138
|
* *cssmin*:: CSS whitespace removal library
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.2.0.
|
1
|
+
2.2.2.0.pre
|
data/conf/default_conf.yaml
CHANGED
@@ -154,10 +154,6 @@
|
|
154
154
|
# Defaults to false, will be the default in a future version.
|
155
155
|
:clone_cookie_sessions: true
|
156
156
|
#
|
157
|
-
# This limits the amount of cloned targets of a source session.
|
158
|
-
# NOTE: This has no effect yet, the code is not implemented.
|
159
|
-
:max_cloned_sessions: 10
|
160
|
-
#
|
161
157
|
# This option overrides the default session timeout.
|
162
158
|
# Don't set this to less than the expected poll interval,
|
163
159
|
# otherwise the session might expire before the previous
|
@@ -39,7 +39,7 @@
|
|
39
39
|
:plugin_directory_not_a_directory: |
|
40
40
|
Plugin directory not a directory, expected:
|
41
41
|
<%%= plugin_path.inspect %>
|
42
|
-
:
|
42
|
+
:warn_no_directory_creating: |
|
43
43
|
Warning! No <%%= dir_name %> directory in project, creating:
|
44
44
|
<%%= dir_path.inspect %>
|
45
45
|
:invalid_environment: |
|
data/js/comm/queue/queue.js
CHANGED
@@ -72,6 +72,22 @@ COMM.Queue = HApplication.extend({
|
|
72
72
|
JS_EXEC_FAIL: 'Failed to execute the Javascript function: ',
|
73
73
|
REASON: ' Reason:'
|
74
74
|
},
|
75
|
+
|
76
|
+
/** Basic queue item exception reporter. Override with your own, if needed.
|
77
|
+
**/
|
78
|
+
clientException: function( _exception, _item ){
|
79
|
+
var
|
80
|
+
_strs = this.STRINGS,
|
81
|
+
_errorText = [
|
82
|
+
_strs.ERR_PREFIX,
|
83
|
+
_strs.JS_EXEC_FAIL,
|
84
|
+
_exception.name+'->'+_exception.message,
|
85
|
+
_strs.REASON,
|
86
|
+
_exception
|
87
|
+
].join('');
|
88
|
+
console.log( _errorText );
|
89
|
+
return _errorText;
|
90
|
+
},
|
75
91
|
|
76
92
|
/** = Description
|
77
93
|
* Flushes the queue until stopped.
|
@@ -112,14 +128,7 @@ COMM.Queue = HApplication.extend({
|
|
112
128
|
|
113
129
|
// Displays an error message in the Javascript console, if failure.
|
114
130
|
catch(e){
|
115
|
-
|
116
|
-
console.log([
|
117
|
-
_strs.ERR_PREFIX,
|
118
|
-
_strs.JS_EXEC_FAIL,
|
119
|
-
_item,
|
120
|
-
_strs.REASON,
|
121
|
-
e
|
122
|
-
].join(''));
|
131
|
+
this.clientException( e, _item );
|
123
132
|
}
|
124
133
|
}
|
125
134
|
},
|
@@ -116,7 +116,7 @@ COMM.Transporter = HApplication.extend({
|
|
116
116
|
_valueId = _values['del'][i];
|
117
117
|
_valueManager.del( _valueId );
|
118
118
|
}
|
119
|
-
}
|
119
|
+
}
|
120
120
|
},
|
121
121
|
|
122
122
|
/** = Description
|
@@ -138,13 +138,15 @@ COMM.Transporter = HApplication.extend({
|
|
138
138
|
_this.failure(resp);
|
139
139
|
return;
|
140
140
|
}
|
141
|
-
var
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
141
|
+
var
|
142
|
+
_responseArray = _this.parseResponseArray(resp.X.responseText),
|
143
|
+
i = 2,
|
144
|
+
_responseArrayLen = _responseArray.length,
|
145
|
+
_sesKey = _responseArray[0],
|
146
|
+
_values = _responseArray[1],
|
147
|
+
_session = COMM.Session,
|
148
|
+
_queue = COMM.Queue,
|
149
|
+
_errorText;
|
148
150
|
if(_sesKey === ''){
|
149
151
|
console.log('Invalid session, error message should follow...');
|
150
152
|
}
|
@@ -157,11 +159,10 @@ COMM.Transporter = HApplication.extend({
|
|
157
159
|
_queue.pushEval( _responseArray[i] );
|
158
160
|
}
|
159
161
|
catch(e) {
|
160
|
-
|
161
|
-
_this._clientEvalError = e+" - "+e.description+' - '+_responseArray[i];
|
162
|
+
_this._clientEvalError = _queue.clientException( e, _responseArray[i] );
|
162
163
|
}
|
163
164
|
}
|
164
|
-
if(_this._serverInterruptView){
|
165
|
+
if(_this._serverInterruptView && _sesKey !== '' ){
|
165
166
|
_this._serverInterruptView.die();
|
166
167
|
_this._serverInterruptView = false;
|
167
168
|
}
|
@@ -187,6 +188,110 @@ COMM.Transporter = HApplication.extend({
|
|
187
188
|
_queue.push(function(){jsLoader.load('servermessage');});
|
188
189
|
_queue.push(function(){ReloadApp.nu(_title,_message);});
|
189
190
|
},
|
191
|
+
|
192
|
+
setInterruptAnim: function(_customMessage,_customColor){
|
193
|
+
var _this = COMM.Transporter;
|
194
|
+
if(!_this._serverInterruptView){
|
195
|
+
_this._serverInterruptView = HView.extend({
|
196
|
+
_setCustomMessage: function(_text){
|
197
|
+
ELEM.setHTML(this._messageDiv,_text);
|
198
|
+
},
|
199
|
+
_setCustomColor: function(_color){
|
200
|
+
this.setStyle('background-color',_color);
|
201
|
+
},
|
202
|
+
_setFailedResp: function(_resp){
|
203
|
+
if( _resp !== undefined && typeof _resp !== 'string' ){
|
204
|
+
this._failedResp = _resp;
|
205
|
+
}
|
206
|
+
this._errorIndex++;
|
207
|
+
return this;
|
208
|
+
},
|
209
|
+
_retry: function(){
|
210
|
+
this._retryIndex++;
|
211
|
+
var _resp = this._failedResp;
|
212
|
+
COMM.request(
|
213
|
+
_resp.url,
|
214
|
+
_resp.options
|
215
|
+
);
|
216
|
+
},
|
217
|
+
onIdle: function(){
|
218
|
+
var _currentDate = new Date().getTime();
|
219
|
+
this.bringToFront();
|
220
|
+
if( this._errorIndex > 0 &&
|
221
|
+
(this._retryIndex !== this._errorIndex) &&
|
222
|
+
(this._lastError + 2000 < _currentDate) &&
|
223
|
+
this._failedResp ){
|
224
|
+
this._lastError = _currentDate;
|
225
|
+
this._retry();
|
226
|
+
}
|
227
|
+
this.base();
|
228
|
+
},
|
229
|
+
_errorIndex: 0,
|
230
|
+
_retryIndex: 0,
|
231
|
+
_lastError: new Date().getTime(),
|
232
|
+
die: function(){
|
233
|
+
var _app = this.app;
|
234
|
+
HSystem.reniceApp(_app.appId,this._origPriority);
|
235
|
+
this.base();
|
236
|
+
_app.sync();
|
237
|
+
},
|
238
|
+
drawSubviews: function(){
|
239
|
+
var _style = [
|
240
|
+
['padding-left', '8px'],
|
241
|
+
['background-color', '#600'],
|
242
|
+
['text-align','center'],
|
243
|
+
['color', '#fff'],
|
244
|
+
['font-size', '16px'],
|
245
|
+
['opacity', 0.85]
|
246
|
+
], i = 0;
|
247
|
+
for( ; i<_style.length; i++ ){
|
248
|
+
this.setStyle( _style[i][0], _style[i][1] );
|
249
|
+
}
|
250
|
+
this._messageDiv = ELEM.make(this.elemId);
|
251
|
+
ELEM.setHTML(this._messageDiv,this.app.serverLostMessage);
|
252
|
+
this._origPriority = HSystem.appPriorities[this.appId];
|
253
|
+
if(HSystem.appPriorities[this.appId]<10){
|
254
|
+
HSystem.reniceApp(this.appId,10);
|
255
|
+
}
|
256
|
+
this._anim = HView.extend({
|
257
|
+
_animIndex: 0,
|
258
|
+
_anim: function(){
|
259
|
+
var _targetRect,
|
260
|
+
_width = ELEM.getSize(this.parent.elemId)[0];
|
261
|
+
this._animIndex++;
|
262
|
+
if(this._animIndex%2===0){
|
263
|
+
_targetRect = HRect.nu(0,0,80,20);
|
264
|
+
}
|
265
|
+
else {
|
266
|
+
_targetRect = HRect.nu(_width-80,0,_width,20);
|
267
|
+
}
|
268
|
+
this.animateTo(_targetRect,2000);
|
269
|
+
},
|
270
|
+
onAnimationEnd: function(){
|
271
|
+
if(this.drawn){
|
272
|
+
this._anim();
|
273
|
+
}
|
274
|
+
}
|
275
|
+
}
|
276
|
+
).nu( [0,0,80,20], this ).setStyle('background-color','#fff').setStyle('opacity',0.8)._anim();
|
277
|
+
}
|
278
|
+
}).nu([0,0,200,20,0,null],_this);
|
279
|
+
if( typeof _customMessage !== 'string' ){
|
280
|
+
_this._serverInterruptView._setFailedResp(_customMessage);
|
281
|
+
}
|
282
|
+
}
|
283
|
+
if( _customMessage !== undefined ) {
|
284
|
+
if( typeof _customMessage === 'string' ){
|
285
|
+
_this._serverInterruptView._setCustomMessage(_customMessage);
|
286
|
+
}
|
287
|
+
}
|
288
|
+
if( !_this.stop ){
|
289
|
+
_this._serverInterruptView._setFailedResp();
|
290
|
+
}
|
291
|
+
if( _customColor !== undefined ){
|
292
|
+
_this._serverInterruptView._setCustomColor(_customColor);
|
293
|
+
}
|
294
|
+
},
|
190
295
|
|
191
296
|
/** Called by the XMLHttpRequest, when there was a failure in communication.
|
192
297
|
**/
|
@@ -195,88 +300,7 @@ COMM.Transporter = HApplication.extend({
|
|
195
300
|
// server didn't respond, likely network issue.. retry.
|
196
301
|
if(_resp.X.status===0){
|
197
302
|
console.log(_this.serverLostMessage);
|
198
|
-
|
199
|
-
_this._serverInterruptView = HView.extend({
|
200
|
-
_setFailedResp: function(_resp){
|
201
|
-
if(_resp!==undefined){
|
202
|
-
this._failedResp = _resp;
|
203
|
-
}
|
204
|
-
this._errorIndex++;
|
205
|
-
return this;
|
206
|
-
},
|
207
|
-
_retry: function(){
|
208
|
-
this._retryIndex++;
|
209
|
-
var _resp = this._failedResp;
|
210
|
-
COMM.request(
|
211
|
-
_resp.url,
|
212
|
-
_resp.options
|
213
|
-
);
|
214
|
-
},
|
215
|
-
onIdle: function(){
|
216
|
-
var _currentDate = new Date().getTime();
|
217
|
-
this.bringToFront();
|
218
|
-
if( this._errorIndex > 0 &&
|
219
|
-
(this._retryIndex !== this._errorIndex) &&
|
220
|
-
(this._lastError + 2000 < _currentDate) &&
|
221
|
-
this._failedResp ){
|
222
|
-
this._lastError = _currentDate;
|
223
|
-
this._retry();
|
224
|
-
}
|
225
|
-
this.base();
|
226
|
-
},
|
227
|
-
_errorIndex: 0,
|
228
|
-
_retryIndex: 0,
|
229
|
-
_lastError: new Date().getTime(),
|
230
|
-
die: function(){
|
231
|
-
var _app = this.app;
|
232
|
-
HSystem.reniceApp(_app.appId,this._origPriority);
|
233
|
-
this.base();
|
234
|
-
_app.sync();
|
235
|
-
},
|
236
|
-
drawSubviews: function(){
|
237
|
-
var _style = [
|
238
|
-
['padding-left', '8px'],
|
239
|
-
['background-color', '#600'],
|
240
|
-
['text-align','center'],
|
241
|
-
['color', '#fff'],
|
242
|
-
['font-size', '16px'],
|
243
|
-
['opacity', 0.85]
|
244
|
-
], i = 0;
|
245
|
-
for( ; i<_style.length; i++ ){
|
246
|
-
this.setStyle( _style[i][0], _style[i][1] );
|
247
|
-
}
|
248
|
-
this.setHTML(this.app.serverLostMessage);
|
249
|
-
this._origPriority = HSystem.appPriorities[this.appId];
|
250
|
-
if(HSystem.appPriorities[this.appId]<10){
|
251
|
-
HSystem.reniceApp(this.appId,10);
|
252
|
-
}
|
253
|
-
this._anim = HView.extend({
|
254
|
-
_animIndex: 0,
|
255
|
-
_anim: function(){
|
256
|
-
var _targetRect,
|
257
|
-
_width = ELEM.getSize(this.parent.elemId)[0];
|
258
|
-
this._animIndex++;
|
259
|
-
if(this._animIndex%2===0){
|
260
|
-
_targetRect = HRect.nu(0,0,80,20);
|
261
|
-
}
|
262
|
-
else {
|
263
|
-
_targetRect = HRect.nu(_width-80,0,_width,20);
|
264
|
-
}
|
265
|
-
this.animateTo(_targetRect,2000);
|
266
|
-
},
|
267
|
-
onAnimationEnd: function(){
|
268
|
-
if(this.drawn){
|
269
|
-
this._anim();
|
270
|
-
}
|
271
|
-
}
|
272
|
-
}
|
273
|
-
).nu( [0,0,80,20], this ).setStyle('background-color','#fff').setStyle('opacity',0.8)._anim();
|
274
|
-
}
|
275
|
-
}).nu([0,0,200,20,0,null],_this)._setFailedResp(_resp);
|
276
|
-
}
|
277
|
-
else {
|
278
|
-
_this._serverInterruptView._setFailedResp();
|
279
|
-
}
|
303
|
+
_this.setInterruptAnim(_resp);
|
280
304
|
}
|
281
305
|
else {
|
282
306
|
_this.failMessage('Transporter Error','Transporter was unable to complete the synchronization request.');
|
data/js/comm/values/values.js
CHANGED
@@ -66,7 +66,7 @@ COMM.Values = HClass.extend({
|
|
66
66
|
},
|
67
67
|
|
68
68
|
/** = Description
|
69
|
-
* Sets and decodes the +_data+. Main value setter interface
|
69
|
+
* Sets and decodes the +_data+. Main value setter interface
|
70
70
|
* for the server representation of +HValue+.
|
71
71
|
*
|
72
72
|
* = Parameters
|
@@ -328,7 +328,7 @@ COMM.Values = HClass.extend({
|
|
328
328
|
}
|
329
329
|
catch(e){
|
330
330
|
console.log('invalid json:',_obj);
|
331
|
-
return "{}"
|
331
|
+
return "{}";
|
332
332
|
}
|
333
333
|
},
|
334
334
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -8,12 +8,12 @@
|
|
8
8
|
background-color: transparent;
|
9
9
|
vertical-align: middle;
|
10
10
|
border: 0px;
|
11
|
-
left: 18px; top:
|
11
|
+
left: 18px; top: 0px;
|
12
12
|
line-height: 18px;
|
13
13
|
text-overflow: ellipsis;
|
14
14
|
white-space: nowrap;
|
15
15
|
overflow: hidden;
|
16
|
-
#{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.opera)?'padding-left:2px;width:
|
16
|
+
#{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.ie9||BROWSER_TYPE.opera)?'padding-left:2px;width:85% !important;height:90% !important;':BROWSER_TYPE.ie6?'right:3px;height:16px;':'padding:2px;padding-top:4px;right:3px;height:22px;width:auto;'}
|
17
17
|
}
|
18
18
|
|
19
19
|
.default .searchfield_input:focus {
|
@@ -27,7 +27,7 @@
|
|
27
27
|
|
28
28
|
.default .searchfield_input_parent {
|
29
29
|
position: absolute;
|
30
|
-
#{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.ie9||BROWSER_TYPE.opera)?'left:0;padding-left:1px;top:0;right:4px;bottom:0;':BROWSER_TYPE.ie6?'left:2px;top:1px;right:1px;height:20px;':'left:-2px;top:-2px;right:-2px;height:
|
30
|
+
#{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.ie9||BROWSER_TYPE.opera)?'left:0;padding-left:1px;top:0;right:4px;bottom:0;':BROWSER_TYPE.ie6?'left:2px;top:1px;right:1px;height:20px;':'left:-2px;top:-2px;right:-2px;height:24px;'}
|
31
31
|
}
|
32
32
|
|
33
33
|
.default .searchfield_fade,
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/js/controls/tab/tab.js
CHANGED
@@ -120,14 +120,14 @@ HTab = HControl.extend({
|
|
120
120
|
if(this.selectIdx!==-1){
|
121
121
|
var _tabSelectElemId = this.tabLabels[this.selectIdx],
|
122
122
|
_tabSelectViewId = this.tabs[this.selectIdx];
|
123
|
-
ELEM.
|
123
|
+
ELEM.delClassName(_tabSelectElemId,'item-fg');
|
124
124
|
ELEM.addClassName(_tabSelectElemId,'item-bg');
|
125
125
|
HSystem.views[_tabSelectViewId].hide();
|
126
126
|
}
|
127
127
|
if(_tabIdx!==-1){
|
128
128
|
var _tabLabelElemId = this.tabLabels[_tabIdx],
|
129
129
|
_tabViewId = this.tabs[_tabIdx];
|
130
|
-
ELEM.
|
130
|
+
ELEM.delClassName(_tabLabelElemId,'item-bg');
|
131
131
|
ELEM.addClassName(_tabLabelElemId,'item-fg');
|
132
132
|
HSystem.views[_tabViewId].show();
|
133
133
|
}
|
@@ -174,7 +174,8 @@ HTab = HControl.extend({
|
|
174
174
|
ELEM.setAttr(_tabLabelElemId,'href','javascript:HSystem.views['+this.viewId+'].selectTab('+_tabIdx+');');
|
175
175
|
}
|
176
176
|
else if (this.tabTriggerLink && !(BROWSER_TYPE.ie7 || BROWSER_TYPE.ie6)){
|
177
|
-
|
177
|
+
var _this = this;
|
178
|
+
Event.observe( ELEM.get(_tabLabelElemId), 'click', function(){ _this.selectTab(_tabIdx); } );
|
178
179
|
}
|
179
180
|
else {
|
180
181
|
this.tabTriggerLink = false;
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -29,6 +29,7 @@ HTextControl = HControl.extend({
|
|
29
29
|
controlDefaults: (HControlDefaults.extend({
|
30
30
|
refreshOnBlur: true,
|
31
31
|
refreshOnInput: true,
|
32
|
+
refreshOnIdle: true,
|
32
33
|
focusOnCreate: false
|
33
34
|
})),
|
34
35
|
|
@@ -158,7 +159,8 @@ HTextControl = HControl.extend({
|
|
158
159
|
return true;
|
159
160
|
},
|
160
161
|
|
161
|
-
|
162
|
+
idle: function(){
|
163
|
+
if( !this.options.refreshOnIdle ){ return; }
|
162
164
|
this.hasTextFocus && this._updateValueFromField();
|
163
165
|
try{
|
164
166
|
this.base();
|
@@ -9,7 +9,7 @@
|
|
9
9
|
vertical-align: middle;
|
10
10
|
border: 0px;
|
11
11
|
left: 0px; top: 0px;
|
12
|
-
#{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.opera)?'padding-left:2px;width:100% !important;height:90% !important;':BROWSER_TYPE.ie6?'right:4px;bottom:2px;':'padding:2px;right:0px;bottom:0px;width:auto;height:auto;'}
|
12
|
+
#{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.ie9||BROWSER_TYPE.opera)?'padding-left:2px;width:100% !important;height:90% !important;':BROWSER_TYPE.ie6?'right:4px;bottom:2px;':'padding:2px;right:0px;bottom:0px;width:auto;height:auto;'}
|
13
13
|
}
|
14
14
|
|
15
15
|
.default .textcontrol_input:focus {
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|