rhosync 2.0.8 → 2.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +9 -0
- data/Rakefile +1 -5
- data/doc/protocol.html +397 -156
- data/lib/rhosync/console/app/public/ThickBox.css +649 -0
- data/lib/rhosync/console/app/public/home.css +433 -0
- data/lib/rhosync/console/app/public/images/header_halo copy.jpg +0 -0
- data/lib/rhosync/console/app/public/images/header_halo.jpg +0 -0
- data/lib/rhosync/console/app/public/images/land_separator.gif +0 -0
- data/lib/rhosync/console/app/public/images/landing_header.jpg +0 -0
- data/lib/rhosync/console/app/public/images/logo_rhosync.png +0 -0
- data/lib/rhosync/console/app/public/images/rhomobile_rhohub_logo.png +0 -0
- data/lib/rhosync/console/app/public/images/tabs_separator.png +0 -0
- data/lib/rhosync/console/app/public/reset.css +76 -0
- data/lib/rhosync/console/app/public/style.css +2201 -0
- data/lib/rhosync/console/app/routes/auth.rb +1 -1
- data/lib/rhosync/console/app/routes/client.rb +1 -1
- data/lib/rhosync/console/app/routes/docs.rb +98 -55
- data/lib/rhosync/console/app/routes/home.rb +47 -8
- data/lib/rhosync/console/app/routes/timing.rb +26 -0
- data/lib/rhosync/console/app/routes/user.rb +58 -21
- data/lib/rhosync/console/app/views/client.erb +2 -2
- data/lib/rhosync/console/app/views/content.erb +14 -0
- data/lib/rhosync/console/app/views/docdata.erb +1 -1
- data/lib/rhosync/console/app/views/docs.erb +2 -2
- data/lib/rhosync/console/app/views/headermenu.erb +41 -0
- data/lib/rhosync/console/app/views/home.erb +22 -0
- data/lib/rhosync/console/app/views/index.erb +1 -1
- data/lib/rhosync/console/app/views/layout.erb +82 -7
- data/lib/rhosync/console/app/views/login.erb +26 -0
- data/lib/rhosync/console/app/views/newuser.erb +1 -1
- data/lib/rhosync/console/app/views/result.erb +1 -1
- data/lib/rhosync/console/app/views/rightboxlinks.erb +15 -0
- data/lib/rhosync/console/app/views/select_doc.erb +1 -3
- data/lib/rhosync/console/app/views/user.erb +3 -6
- data/lib/rhosync/console/app/views/users.erb +2 -4
- data/lib/rhosync/console/server.rb +6 -0
- data/lib/rhosync/jobs/bulk_data_job.rb +17 -4
- data/lib/rhosync/ping/android.rb +38 -0
- data/lib/rhosync/ping.rb +2 -1
- data/lib/rhosync/server/views/index.erb +3 -0
- data/lib/rhosync/server.rb +25 -6
- data/lib/rhosync/source_sync.rb +14 -6
- data/lib/rhosync/stats/middleware.rb +22 -0
- data/lib/rhosync/stats/record.rb +83 -0
- data/lib/rhosync/version.rb +1 -1
- data/lib/rhosync.rb +4 -2
- data/spec/ping/android_spec.rb +45 -0
- data/spec/rhosync_spec.rb +1 -0
- data/spec/server/server_spec.rb +8 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_helper.rb +4 -3
- data/spec/stats/middleware_spec.rb +32 -0
- data/spec/stats/record_spec.rb +71 -0
- metadata +31 -7
- data/lib/rhosync/monitoring/record.rb +0 -28
- data/spec/monitoring/record_spec.rb +0 -21
@@ -0,0 +1,433 @@
|
|
1
|
+
/*
|
2
|
+
Document : landing
|
3
|
+
Created on : 19/08/2010, 11:46:08 AM
|
4
|
+
Author : marman
|
5
|
+
Description:
|
6
|
+
1. General
|
7
|
+
2. Body
|
8
|
+
3. Header
|
9
|
+
*/
|
10
|
+
|
11
|
+
|
12
|
+
/**** General
|
13
|
+
****/
|
14
|
+
.container{
|
15
|
+
min-height:100%;
|
16
|
+
position:relative;
|
17
|
+
}
|
18
|
+
|
19
|
+
.wrapper{
|
20
|
+
display:block;
|
21
|
+
margin:0 auto 0;
|
22
|
+
overflow:hidden;
|
23
|
+
width:960px;
|
24
|
+
}
|
25
|
+
|
26
|
+
a{
|
27
|
+
|
28
|
+
}
|
29
|
+
|
30
|
+
p{
|
31
|
+
color:#383535;
|
32
|
+
}
|
33
|
+
|
34
|
+
h1{
|
35
|
+
|
36
|
+
}
|
37
|
+
h1.slogan{
|
38
|
+
color:#323232;
|
39
|
+
font-size:33px;
|
40
|
+
font-weight:700;
|
41
|
+
letter-spacing:-1px;
|
42
|
+
text-align:center;
|
43
|
+
text-shadow:0 1px 0 #FFFFFF;
|
44
|
+
}
|
45
|
+
|
46
|
+
.red_link{
|
47
|
+
color:#AE0302;
|
48
|
+
font-weight:bold;
|
49
|
+
text-decoration:none;
|
50
|
+
}
|
51
|
+
|
52
|
+
/**** Body
|
53
|
+
****/
|
54
|
+
html{
|
55
|
+
font-size: 12px;
|
56
|
+
background:url("images/landing_header.jpg") repeat-x scroll 0 0 transparent;
|
57
|
+
}
|
58
|
+
body{
|
59
|
+
margin:0;
|
60
|
+
padding:0;
|
61
|
+
}
|
62
|
+
|
63
|
+
/**** Header
|
64
|
+
****/
|
65
|
+
.header{
|
66
|
+
position: relative;
|
67
|
+
height: 537px;
|
68
|
+
}
|
69
|
+
.header .logos{
|
70
|
+
overflow:hidden;
|
71
|
+
position:absolute;
|
72
|
+
top:9px;
|
73
|
+
}
|
74
|
+
.header .logos a.logo_rhohub{
|
75
|
+
background:url("images/logo_rhosync.png") no-repeat scroll -56px 0 transparent;
|
76
|
+
float:left;
|
77
|
+
height:38px;
|
78
|
+
text-indent:-3000px;
|
79
|
+
width:145px;
|
80
|
+
}
|
81
|
+
.header .logos a.logo_rhomobile{
|
82
|
+
background:url("images/logo_rhosync.png") no-repeat scroll 0 0 transparent;
|
83
|
+
height:38px;
|
84
|
+
text-indent:-3000px;
|
85
|
+
float: left;
|
86
|
+
width:56px;
|
87
|
+
}
|
88
|
+
.header .logo a{
|
89
|
+
display:block;
|
90
|
+
height:100%;
|
91
|
+
}
|
92
|
+
|
93
|
+
.header_landing{
|
94
|
+
background:url("images/header_halo.jpg") no-repeat scroll 50% 0 transparent;
|
95
|
+
height: 455px;
|
96
|
+
padding-top:85px;
|
97
|
+
}
|
98
|
+
.header_landing .col_1{
|
99
|
+
float:left;
|
100
|
+
margin-right:34px;
|
101
|
+
padding-top:5px;
|
102
|
+
width:900px;
|
103
|
+
height:100%;
|
104
|
+
}
|
105
|
+
.header_landing .col_1 h1{
|
106
|
+
color:#4E4C4C;
|
107
|
+
font-size:28px;
|
108
|
+
font-weight:700;
|
109
|
+
letter-spacing:-1px;
|
110
|
+
line-height:30px;
|
111
|
+
margin-bottom:10px;
|
112
|
+
text-shadow:0 1px 0 #FFFFFF;
|
113
|
+
}
|
114
|
+
.header_landing .col_1 p{
|
115
|
+
color:#383535;
|
116
|
+
font-size:14px;
|
117
|
+
line-height:21px;
|
118
|
+
margin-bottom:20px;
|
119
|
+
text-shadow:0 1px 0 #F4F4F4;
|
120
|
+
width:325px;
|
121
|
+
}
|
122
|
+
.header_landing .app_image{
|
123
|
+
background:url("../images/misc/landing_main.jpg") no-repeat scroll 0 -5px transparent;
|
124
|
+
display:block;
|
125
|
+
float:left;
|
126
|
+
height:307px;
|
127
|
+
margin-bottom:9px;
|
128
|
+
width:621px;
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
/**** Components
|
133
|
+
****/
|
134
|
+
.land_separator{
|
135
|
+
background:url("images/bg/land_separator.gif") no-repeat scroll 0 0 transparent;
|
136
|
+
clear:both;
|
137
|
+
display:block;
|
138
|
+
height:3px;
|
139
|
+
margin-bottom:16px;
|
140
|
+
}
|
141
|
+
|
142
|
+
/**** Content
|
143
|
+
****/
|
144
|
+
|
145
|
+
.content{
|
146
|
+
|
147
|
+
}
|
148
|
+
.content ul.features{
|
149
|
+
margin-bottom:60px;
|
150
|
+
margin-top:-59px;
|
151
|
+
overflow:hidden;
|
152
|
+
}
|
153
|
+
.content ul.features li{
|
154
|
+
float:left;
|
155
|
+
height:200px;
|
156
|
+
margin-right:20px;
|
157
|
+
padding-top:221px;
|
158
|
+
position:relative;
|
159
|
+
width:304px;
|
160
|
+
}
|
161
|
+
.content ul.features li.last{
|
162
|
+
margin-right: 0;
|
163
|
+
}
|
164
|
+
.content ul.features li img{
|
165
|
+
position:absolute;
|
166
|
+
top:0;
|
167
|
+
}
|
168
|
+
.content ul.features li div.feature_text{
|
169
|
+
padding:5px 10px;
|
170
|
+
position:absolute;
|
171
|
+
top:211px;
|
172
|
+
}
|
173
|
+
.content ul.features li h2{
|
174
|
+
color:#003766;
|
175
|
+
font-size:21px;
|
176
|
+
margin-bottom:10px;
|
177
|
+
}
|
178
|
+
.content ul.features li p{
|
179
|
+
font-size:12px;
|
180
|
+
line-height:21px;
|
181
|
+
margin-top:20px;
|
182
|
+
}
|
183
|
+
|
184
|
+
|
185
|
+
/**** Buttons
|
186
|
+
****/
|
187
|
+
.delete_my_app:hover{
|
188
|
+
background-position:left bottom;
|
189
|
+
}
|
190
|
+
.delete_my_app{
|
191
|
+
background:url("../images/app_delete.png") no-repeat scroll left top transparent;
|
192
|
+
display:block;
|
193
|
+
cursor:pointer;
|
194
|
+
float:right;
|
195
|
+
height:14px;
|
196
|
+
margin-left:5px;
|
197
|
+
margin-right:5px;
|
198
|
+
width:14px;
|
199
|
+
}
|
200
|
+
a.sign_up_land{
|
201
|
+
background:url("../images/btn/sign_up_now_btn.png") no-repeat scroll 0 0 transparent;
|
202
|
+
display:block;
|
203
|
+
height:59px;
|
204
|
+
text-indent:-3000px;
|
205
|
+
width:243px;
|
206
|
+
}
|
207
|
+
a.sign_up_land:hover{
|
208
|
+
background-position: 0 -59px;
|
209
|
+
}
|
210
|
+
|
211
|
+
a.back_to_apps{
|
212
|
+
background:url("../images/btn/back_apps_btn.png") no-repeat scroll 0 0 transparent;
|
213
|
+
display:block;
|
214
|
+
height:59px;
|
215
|
+
text-indent:-3000px;
|
216
|
+
width:243px;
|
217
|
+
}
|
218
|
+
a.back_to_apps:hover{
|
219
|
+
background-position: 0 -59px;
|
220
|
+
}
|
221
|
+
|
222
|
+
#menu {
|
223
|
+
color:#CCCCCC;
|
224
|
+
float:right;
|
225
|
+
font-size:12px;
|
226
|
+
padding:0;
|
227
|
+
position:relative;
|
228
|
+
top:-19px;
|
229
|
+
}
|
230
|
+
#menu ul {
|
231
|
+
background-repeat:no-repeat;
|
232
|
+
color:#FFFFFF;
|
233
|
+
margin:27px 0 0;
|
234
|
+
padding:0;
|
235
|
+
}
|
236
|
+
#menu ul li {
|
237
|
+
display:inline;
|
238
|
+
padding:0;
|
239
|
+
}
|
240
|
+
#menu ul li#current {
|
241
|
+
-moz-border-radius:5px;
|
242
|
+
-webkit-border-radius:5px;
|
243
|
+
background:none repeat scroll 0 0 rgba(255, 255, 255, 0.15);
|
244
|
+
padding:5px 0;
|
245
|
+
text-decoration:none;
|
246
|
+
}
|
247
|
+
#menu ul li.separator{
|
248
|
+
position:relative;
|
249
|
+
top:9px;
|
250
|
+
}
|
251
|
+
#menu ul li a {
|
252
|
+
height:24px;
|
253
|
+
margin:0 auto;
|
254
|
+
padding-left:12px;
|
255
|
+
padding-right:12px;
|
256
|
+
text-align:center;
|
257
|
+
text-shadow:1px 1px 0 #000000;
|
258
|
+
}
|
259
|
+
#menu ul li a.current {
|
260
|
+
color:#FFFFFF;
|
261
|
+
padding-bottom:5px;
|
262
|
+
padding-top:5px;
|
263
|
+
}
|
264
|
+
#menu ul li a.logout {
|
265
|
+
color:#FFFFFF;
|
266
|
+
}
|
267
|
+
#menu ul li a.logout:hover{
|
268
|
+
-moz-border-radius:0px;
|
269
|
+
-webkit-border-radius:0px;
|
270
|
+
color:#c0c0c0;
|
271
|
+
text-decoration:none;
|
272
|
+
background:none;
|
273
|
+
}
|
274
|
+
#menu a:link, #menu a:visited, #menu a:active {
|
275
|
+
color:#CCCCCC;
|
276
|
+
font-weight:bold;
|
277
|
+
text-decoration:none;
|
278
|
+
}
|
279
|
+
#menu a:hover {
|
280
|
+
-moz-border-radius:5px;
|
281
|
+
-webkit-border-radius:5px;
|
282
|
+
background:none repeat scroll 0 0 rgba(255, 255, 255, 0.15);
|
283
|
+
color:#FFFFFF;
|
284
|
+
padding:5px 12px;
|
285
|
+
text-decoration:none;
|
286
|
+
}
|
287
|
+
|
288
|
+
/* Footer
|
289
|
+
============================================================ */
|
290
|
+
#footer{
|
291
|
+
background:none repeat scroll 0 0 #363736;
|
292
|
+
bottom:0;
|
293
|
+
height:80px;
|
294
|
+
margin-top:15px;
|
295
|
+
width:100%;
|
296
|
+
}
|
297
|
+
#footer a{
|
298
|
+
color:#FFFFFF;
|
299
|
+
}
|
300
|
+
#footer .footer_content{
|
301
|
+
width:962px;
|
302
|
+
margin: 0 auto;
|
303
|
+
}
|
304
|
+
#footer .footer_content p{
|
305
|
+
color:#FFFFFF;
|
306
|
+
font-size:12px;
|
307
|
+
margin-top:10px;
|
308
|
+
}
|
309
|
+
#footer .footer_content div{
|
310
|
+
padding-top:15px;
|
311
|
+
}
|
312
|
+
#footer .footer_content .foot_left{
|
313
|
+
float:left;
|
314
|
+
}
|
315
|
+
#footer .footer_content .foot_left a img{
|
316
|
+
border:none;
|
317
|
+
}
|
318
|
+
|
319
|
+
#footer .footer_content .foot_right{
|
320
|
+
float:right;
|
321
|
+
}
|
322
|
+
.ul_footer{
|
323
|
+
font-size:12px;
|
324
|
+
list-style-type:none;
|
325
|
+
margin-top:5px;
|
326
|
+
padding-left:0;
|
327
|
+
}
|
328
|
+
.ul_footer li{
|
329
|
+
color:#FFFFFF;
|
330
|
+
display:inline;
|
331
|
+
padding-right:5px;
|
332
|
+
}
|
333
|
+
.ul_footer li a{
|
334
|
+
color:#FFFFFF;
|
335
|
+
}
|
336
|
+
.ul_footer li a:hover{
|
337
|
+
text-decoration:none;
|
338
|
+
}
|
339
|
+
============================================================ */
|
340
|
+
#notice, #message{
|
341
|
+
background-color:#E8FFCE;
|
342
|
+
border:1px solid #339900;
|
343
|
+
color:#339900;
|
344
|
+
font-size:12px;
|
345
|
+
font-weight:bold;
|
346
|
+
margin-bottom:20px;
|
347
|
+
margin-top:0;
|
348
|
+
padding:15px;
|
349
|
+
}
|
350
|
+
.success{
|
351
|
+
background-color:#E8FFCE;
|
352
|
+
border:1px solid #339966;
|
353
|
+
color:#339900;
|
354
|
+
float:left;
|
355
|
+
font-size:11px;
|
356
|
+
font-weight:bold;
|
357
|
+
margin-left:150px;
|
358
|
+
margin-top:15px;
|
359
|
+
padding:6px;
|
360
|
+
text-align:center;
|
361
|
+
width:408px;
|
362
|
+
position:fixed;
|
363
|
+
z-index:1000;
|
364
|
+
left:0;
|
365
|
+
margin:auto;
|
366
|
+
right:0;
|
367
|
+
top:20px;
|
368
|
+
}
|
369
|
+
|
370
|
+
#success{
|
371
|
+
background-color:#E8FFCE;
|
372
|
+
border:1px solid #339966;
|
373
|
+
color:#339900;
|
374
|
+
float:left;
|
375
|
+
font-size:11px;
|
376
|
+
font-weight:bold;
|
377
|
+
margin-left:150px;
|
378
|
+
margin-top:15px;
|
379
|
+
padding:6px;
|
380
|
+
text-align:center;
|
381
|
+
width:408px;
|
382
|
+
position:fixed;
|
383
|
+
z-index:1000;
|
384
|
+
left:0;
|
385
|
+
margin:auto;
|
386
|
+
right:0;
|
387
|
+
top:20px;
|
388
|
+
}
|
389
|
+
.error, .failure{
|
390
|
+
background-color:#FFA3A3;
|
391
|
+
border:1px solid #FF0000;
|
392
|
+
color:#990000;
|
393
|
+
float:left;
|
394
|
+
font-size:11px;
|
395
|
+
font-weight:bold;
|
396
|
+
margin-left:150px;
|
397
|
+
margin-top:15px;
|
398
|
+
padding:6px;
|
399
|
+
text-align:center;
|
400
|
+
width:408px;
|
401
|
+
position:fixed;
|
402
|
+
z-index:1000;
|
403
|
+
left:0;
|
404
|
+
margin:auto;
|
405
|
+
right:0;
|
406
|
+
top:20px;
|
407
|
+
}
|
408
|
+
#error, #failure{
|
409
|
+
background-color:#FFA3A3;
|
410
|
+
border:1px solid #FF0000;
|
411
|
+
color:#990000;
|
412
|
+
float:left;
|
413
|
+
font-size:11px;
|
414
|
+
font-weight:bold;
|
415
|
+
margin-left:150px;
|
416
|
+
margin-top:15px;
|
417
|
+
padding:6px;
|
418
|
+
text-align:center;
|
419
|
+
width:408px;
|
420
|
+
position:fixed;
|
421
|
+
z-index:1000;
|
422
|
+
left:0;
|
423
|
+
margin:auto;
|
424
|
+
right:0;
|
425
|
+
top:20px;
|
426
|
+
}
|
427
|
+
|
428
|
+
.col_1 ul li{
|
429
|
+
margin-left: 20px;
|
430
|
+
padding-bottom: 4px;
|
431
|
+
padding-left: -2px;
|
432
|
+
list-style: circle ;
|
433
|
+
}
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,76 @@
|
|
1
|
+
/*
|
2
|
+
- Copyright (c) 2009, Koombea.com All rights reserved.
|
3
|
+
- Version: 1.0
|
4
|
+
- Reset.css - Created by: Alvaro Araujo & David Beltran
|
5
|
+
- Based on Yui and Meyer reset file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
html {
|
9
|
+
background:#FFFFFF none repeat scroll 0 0;
|
10
|
+
color:#000000;
|
11
|
+
font-size:62.5%;
|
12
|
+
font-family:Arial;
|
13
|
+
}
|
14
|
+
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, form, fieldset, legend, input, button, textarea, p, blockquote, th, td {
|
15
|
+
margin:0;
|
16
|
+
padding:0;
|
17
|
+
}
|
18
|
+
/* tables still need 'cellspacing="0"' in the markup */
|
19
|
+
table {
|
20
|
+
border-collapse:collapse;
|
21
|
+
border-spacing:0;
|
22
|
+
}
|
23
|
+
fieldset, img, button {
|
24
|
+
border:0 none;
|
25
|
+
}
|
26
|
+
address, caption, cite, code, dfn, em, th, var, optgroup {
|
27
|
+
font-style:inherit;
|
28
|
+
font-weight:inherit;
|
29
|
+
}
|
30
|
+
del, ins {
|
31
|
+
text-decoration:none;
|
32
|
+
}
|
33
|
+
ol {
|
34
|
+
list-style:decimal;
|
35
|
+
}
|
36
|
+
ol li {
|
37
|
+
list-style: decimal outside;
|
38
|
+
}
|
39
|
+
ul {
|
40
|
+
list-style:none
|
41
|
+
}
|
42
|
+
caption, th {
|
43
|
+
text-align:left;
|
44
|
+
}
|
45
|
+
h1, h2, h3, h4, h5, h6 {
|
46
|
+
font-size:100%;
|
47
|
+
font-weight:normal;
|
48
|
+
}
|
49
|
+
:focus {
|
50
|
+
outline: 0;
|
51
|
+
}
|
52
|
+
q:before, q:after {
|
53
|
+
content:'';
|
54
|
+
}
|
55
|
+
abbr, acronym {
|
56
|
+
border:0 none;
|
57
|
+
font-variant:normal;
|
58
|
+
}
|
59
|
+
sup {
|
60
|
+
vertical-align:text-top;
|
61
|
+
}
|
62
|
+
sub {
|
63
|
+
vertical-align:text-bottom;
|
64
|
+
}
|
65
|
+
legend {
|
66
|
+
color:#000;
|
67
|
+
}
|
68
|
+
input, button, textarea, select, optgroup, option {
|
69
|
+
font-family:inherit;
|
70
|
+
font-size:inherit;
|
71
|
+
font-style:inherit;
|
72
|
+
font-weight:inherit;
|
73
|
+
}
|
74
|
+
input, textarea, select {
|
75
|
+
border:1px solid #CCC;
|
76
|
+
}
|