riddick 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,384 @@
1
+ /* @group Base */
2
+ .chzn-container {
3
+ font-size: 13px;
4
+ position: relative;
5
+ display: inline-block;
6
+ zoom: 1;
7
+ *display: inline;
8
+ }
9
+ .chzn-container .chzn-drop {
10
+ background: #fff;
11
+ border: 1px solid #aaa;
12
+ border-top: 0;
13
+ position: absolute;
14
+ top: 29px;
15
+ left: 0;
16
+ -webkit-box-shadow: 0 4px 5px rgba(0,0,0,.15);
17
+ -moz-box-shadow : 0 4px 5px rgba(0,0,0,.15);
18
+ box-shadow : 0 4px 5px rgba(0,0,0,.15);
19
+ z-index: 1010;
20
+ }
21
+ /* @end */
22
+
23
+ /* @group Single Chosen */
24
+ .chzn-container-single .chzn-single {
25
+ background-color: #ffffff;
26
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0 );
27
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
28
+ background-image: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
29
+ background-image: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
30
+ background-image: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
31
+ background-image: linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
32
+ -webkit-border-radius: 5px;
33
+ -moz-border-radius : 5px;
34
+ border-radius : 5px;
35
+ -moz-background-clip : padding;
36
+ -webkit-background-clip: padding-box;
37
+ background-clip : padding-box;
38
+ border: 1px solid #aaaaaa;
39
+ -webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
40
+ -moz-box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
41
+ box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
42
+ display: block;
43
+ overflow: hidden;
44
+ white-space: nowrap;
45
+ position: relative;
46
+ height: 23px;
47
+ line-height: 24px;
48
+ padding: 0 0 0 8px;
49
+ color: #444444;
50
+ text-decoration: none;
51
+ }
52
+ .chzn-container-single .chzn-default {
53
+ color: #999;
54
+ }
55
+ .chzn-container-single .chzn-single span {
56
+ margin-right: 26px;
57
+ display: block;
58
+ overflow: hidden;
59
+ white-space: nowrap;
60
+ -o-text-overflow: ellipsis;
61
+ -ms-text-overflow: ellipsis;
62
+ text-overflow: ellipsis;
63
+ }
64
+ .chzn-container-single .chzn-single abbr {
65
+ display: block;
66
+ position: absolute;
67
+ right: 26px;
68
+ top: 6px;
69
+ width: 12px;
70
+ height: 13px;
71
+ font-size: 1px;
72
+ background: url('chosen-sprite.png') right top no-repeat;
73
+ }
74
+ .chzn-container-single .chzn-single abbr:hover {
75
+ background-position: right -11px;
76
+ }
77
+ .chzn-container-single.chzn-disabled .chzn-single abbr:hover {
78
+ background-position: right top;
79
+ }
80
+ .chzn-container-single .chzn-single div {
81
+ position: absolute;
82
+ right: 0;
83
+ top: 0;
84
+ display: block;
85
+ height: 100%;
86
+ width: 18px;
87
+ }
88
+ .chzn-container-single .chzn-single div b {
89
+ background: url('chosen-sprite.png') no-repeat 0 0;
90
+ display: block;
91
+ width: 100%;
92
+ height: 100%;
93
+ }
94
+ .chzn-container-single .chzn-search {
95
+ padding: 3px 4px;
96
+ position: relative;
97
+ margin: 0;
98
+ white-space: nowrap;
99
+ z-index: 1010;
100
+ }
101
+ .chzn-container-single .chzn-search input {
102
+ background: #fff url('chosen-sprite.png') no-repeat 100% -22px;
103
+ background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-gradient(linear, 0 0, 0 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
104
+ background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
105
+ background: url('chosen-sprite.png') no-repeat 100% -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
106
+ background: url('chosen-sprite.png') no-repeat 100% -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
107
+ background: url('chosen-sprite.png') no-repeat 100% -22px, linear-gradient(#eeeeee 1%, #ffffff 15%);
108
+ margin: 1px 0;
109
+ padding: 4px 20px 4px 5px;
110
+ outline: 0;
111
+ border: 1px solid #aaa;
112
+ font-family: sans-serif;
113
+ font-size: 1em;
114
+ }
115
+ .chzn-container-single .chzn-drop {
116
+ -webkit-border-radius: 0 0 4px 4px;
117
+ -moz-border-radius : 0 0 4px 4px;
118
+ border-radius : 0 0 4px 4px;
119
+ -moz-background-clip : padding;
120
+ -webkit-background-clip: padding-box;
121
+ background-clip : padding-box;
122
+ }
123
+ /* @end */
124
+
125
+ .chzn-container-single-nosearch .chzn-search input {
126
+ position: absolute;
127
+ left: -9000px;
128
+ }
129
+
130
+ /* @group Multi Chosen */
131
+ .chzn-container-multi .chzn-choices {
132
+ background-color: #fff;
133
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
134
+ background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
135
+ background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
136
+ background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
137
+ background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
138
+ border: 1px solid #aaa;
139
+ margin: 0;
140
+ padding: 0;
141
+ cursor: text;
142
+ overflow: hidden;
143
+ height: auto !important;
144
+ height: 1%;
145
+ position: relative;
146
+ }
147
+ .chzn-container-multi .chzn-choices li {
148
+ float: left;
149
+ list-style: none;
150
+ }
151
+ .chzn-container-multi .chzn-choices .search-field {
152
+ white-space: nowrap;
153
+ margin: 0;
154
+ padding: 0;
155
+ }
156
+ .chzn-container-multi .chzn-choices .search-field input {
157
+ color: #666;
158
+ background: transparent !important;
159
+ border: 0 !important;
160
+ font-family: sans-serif;
161
+ font-size: 100%;
162
+ height: 15px;
163
+ padding: 5px;
164
+ margin: 1px 0;
165
+ outline: 0;
166
+ -webkit-box-shadow: none;
167
+ -moz-box-shadow : none;
168
+ box-shadow : none;
169
+ }
170
+ .chzn-container-multi .chzn-choices .search-field .default {
171
+ color: #999;
172
+ }
173
+ .chzn-container-multi .chzn-choices .search-choice {
174
+ -webkit-border-radius: 3px;
175
+ -moz-border-radius : 3px;
176
+ border-radius : 3px;
177
+ -moz-background-clip : padding;
178
+ -webkit-background-clip: padding-box;
179
+ background-clip : padding-box;
180
+ background-color: #e4e4e4;
181
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0 );
182
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
183
+ background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
184
+ background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
185
+ background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
186
+ background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
187
+ -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
188
+ -moz-box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
189
+ box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
190
+ color: #333;
191
+ border: 1px solid #aaaaaa;
192
+ line-height: 13px;
193
+ padding: 3px 20px 3px 5px;
194
+ margin: 3px 0 3px 5px;
195
+ position: relative;
196
+ cursor: default;
197
+ }
198
+ .chzn-container-multi .chzn-choices .search-choice-focus {
199
+ background: #d4d4d4;
200
+ }
201
+ .chzn-container-multi .chzn-choices .search-choice .search-choice-close {
202
+ display: block;
203
+ position: absolute;
204
+ right: 3px;
205
+ top: 4px;
206
+ width: 12px;
207
+ height: 13px;
208
+ font-size: 1px;
209
+ background: url('chosen-sprite.png') right top no-repeat;
210
+ }
211
+ .chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover {
212
+ background-position: right -11px;
213
+ }
214
+ .chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close {
215
+ background-position: right -11px;
216
+ }
217
+ /* @end */
218
+
219
+ /* @group Results */
220
+ .chzn-container .chzn-results {
221
+ margin: 0 4px 4px 0;
222
+ max-height: 240px;
223
+ padding: 0 0 0 4px;
224
+ position: relative;
225
+ overflow-x: hidden;
226
+ overflow-y: auto;
227
+ -webkit-overflow-scrolling: touch;
228
+ }
229
+ .chzn-container-multi .chzn-results {
230
+ margin: -1px 0 0;
231
+ padding: 0;
232
+ }
233
+ .chzn-container .chzn-results li {
234
+ display: none;
235
+ line-height: 15px;
236
+ padding: 5px 6px;
237
+ margin: 0;
238
+ list-style: none;
239
+ }
240
+ .chzn-container .chzn-results .active-result {
241
+ cursor: pointer;
242
+ display: list-item;
243
+ }
244
+ .chzn-container .chzn-results .highlighted {
245
+ background-color: #3875d7;
246
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3875d7', endColorstr='#2a62bc', GradientType=0 );
247
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
248
+ background-image: -webkit-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
249
+ background-image: -moz-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
250
+ background-image: -o-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
251
+ background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
252
+ color: #fff;
253
+ }
254
+ .chzn-container .chzn-results li em {
255
+ background: #feffde;
256
+ font-style: normal;
257
+ }
258
+ .chzn-container .chzn-results .highlighted em {
259
+ background: transparent;
260
+ }
261
+ .chzn-container .chzn-results .no-results {
262
+ background: #f4f4f4;
263
+ display: list-item;
264
+ }
265
+ .chzn-container .chzn-results .group-result {
266
+ cursor: default;
267
+ color: #999;
268
+ font-weight: bold;
269
+ }
270
+ .chzn-container .chzn-results .group-option {
271
+ padding-left: 15px;
272
+ }
273
+ .chzn-container-multi .chzn-drop .result-selected {
274
+ display: none;
275
+ }
276
+ .chzn-container .chzn-results-scroll {
277
+ background: white;
278
+ margin: 0 4px;
279
+ position: absolute;
280
+ text-align: center;
281
+ width: 321px; /* This should by dynamic with js */
282
+ z-index: 1;
283
+ }
284
+ .chzn-container .chzn-results-scroll span {
285
+ display: inline-block;
286
+ height: 17px;
287
+ text-indent: -5000px;
288
+ width: 9px;
289
+ }
290
+ .chzn-container .chzn-results-scroll-down {
291
+ bottom: 0;
292
+ }
293
+ .chzn-container .chzn-results-scroll-down span {
294
+ background: url('chosen-sprite.png') no-repeat -4px -3px;
295
+ }
296
+ .chzn-container .chzn-results-scroll-up span {
297
+ background: url('chosen-sprite.png') no-repeat -22px -3px;
298
+ }
299
+ /* @end */
300
+
301
+ /* @group Active */
302
+ .chzn-container-active .chzn-single {
303
+ -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);
304
+ -moz-box-shadow : 0 0 5px rgba(0,0,0,.3);
305
+ box-shadow : 0 0 5px rgba(0,0,0,.3);
306
+ border: 1px solid #5897fb;
307
+ }
308
+ .chzn-container-active .chzn-single-with-drop {
309
+ border: 1px solid #aaa;
310
+ -webkit-box-shadow: 0 1px 0 #fff inset;
311
+ -moz-box-shadow : 0 1px 0 #fff inset;
312
+ box-shadow : 0 1px 0 #fff inset;
313
+ background-color: #eee;
314
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0 );
315
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
316
+ background-image: -webkit-linear-gradient(top, #eeeeee 20%, #ffffff 80%);
317
+ background-image: -moz-linear-gradient(top, #eeeeee 20%, #ffffff 80%);
318
+ background-image: -o-linear-gradient(top, #eeeeee 20%, #ffffff 80%);
319
+ background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
320
+ -webkit-border-bottom-left-radius : 0;
321
+ -webkit-border-bottom-right-radius: 0;
322
+ -moz-border-radius-bottomleft : 0;
323
+ -moz-border-radius-bottomright: 0;
324
+ border-bottom-left-radius : 0;
325
+ border-bottom-right-radius: 0;
326
+ }
327
+ .chzn-container-active .chzn-single-with-drop div {
328
+ background: transparent;
329
+ border-left: none;
330
+ }
331
+ .chzn-container-active .chzn-single-with-drop div b {
332
+ background-position: -18px 1px;
333
+ }
334
+ .chzn-container-active .chzn-choices {
335
+ -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);
336
+ -moz-box-shadow : 0 0 5px rgba(0,0,0,.3);
337
+ box-shadow : 0 0 5px rgba(0,0,0,.3);
338
+ border: 1px solid #5897fb;
339
+ }
340
+ .chzn-container-active .chzn-choices .search-field input {
341
+ color: #111 !important;
342
+ }
343
+ /* @end */
344
+
345
+ /* @group Disabled Support */
346
+ .chzn-disabled {
347
+ cursor: default;
348
+ opacity:0.5 !important;
349
+ }
350
+ .chzn-disabled .chzn-single {
351
+ cursor: default;
352
+ }
353
+ .chzn-disabled .chzn-choices .search-choice .search-choice-close {
354
+ cursor: default;
355
+ }
356
+
357
+ /* @group Right to Left */
358
+ .chzn-rtl { text-align: right; }
359
+ .chzn-rtl .chzn-single { padding: 0 8px 0 0; overflow: visible; }
360
+ .chzn-rtl .chzn-single span { margin-left: 26px; margin-right: 0; direction: rtl; }
361
+
362
+ .chzn-rtl .chzn-single div { left: 3px; right: auto; }
363
+ .chzn-rtl .chzn-single abbr {
364
+ left: 26px;
365
+ right: auto;
366
+ }
367
+ .chzn-rtl .chzn-choices .search-field input { direction: rtl; }
368
+ .chzn-rtl .chzn-choices li { float: right; }
369
+ .chzn-rtl .chzn-choices .search-choice { padding: 3px 5px 3px 19px; margin: 3px 5px 3px 0; }
370
+ .chzn-rtl .chzn-choices .search-choice .search-choice-close { left: 4px; right: auto; background-position: right top;}
371
+ .chzn-rtl.chzn-container-single .chzn-results { margin: 0 0 4px 4px; padding: 0 4px 0 0; }
372
+ .chzn-rtl .chzn-results .group-option { padding-left: 0; padding-right: 15px; }
373
+ .chzn-rtl.chzn-container-active .chzn-single-with-drop div { border-right: none; }
374
+ .chzn-rtl .chzn-search input {
375
+ background: #fff url('chosen-sprite.png') no-repeat -38px -22px;
376
+ background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-gradient(linear, 0 0, 0 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
377
+ background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
378
+ background: url('chosen-sprite.png') no-repeat -38px -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
379
+ background: url('chosen-sprite.png') no-repeat -38px -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
380
+ background: url('chosen-sprite.png') no-repeat -38px -22px, linear-gradient(#eeeeee 1%, #ffffff 15%);
381
+ padding: 4px 5px 4px 20px;
382
+ direction: rtl;
383
+ }
384
+ /* @end */
@@ -0,0 +1,77 @@
1
+ require 'riddick'
2
+
3
+ module Riddick
4
+ class Server < Sinatra::Base
5
+ Riddick::Backends.simple.init_translations
6
+
7
+ helpers do
8
+ def url(*parts)
9
+ [request.script_name, parts].join('/').squeeze '/'
10
+ end
11
+
12
+ def root_url
13
+ url '/'
14
+ end
15
+
16
+ def default_url
17
+ url 'default'
18
+ end
19
+
20
+ def my_url
21
+ url 'my'
22
+ end
23
+
24
+ def set_url
25
+ url 'set'
26
+ end
27
+
28
+ def del_url(k)
29
+ url('del') + "?k=#{URI.escape k}"
30
+ end
31
+
32
+ def truncate(v, l = 30)
33
+ s = v.to_s
34
+ s.size > l ? s.first(l) + '...' : s
35
+ end
36
+ end
37
+
38
+ get '/' do
39
+ predefined = Riddick::Backends.simple.translations
40
+ custom = Riddick::Backends.key_value.translations
41
+ @translations = predefined.merge custom
42
+ erb :index
43
+ end
44
+
45
+ get '/default' do
46
+ @translations = Riddick::Backends.simple.translations
47
+ erb :index
48
+ end
49
+
50
+ get '/my' do
51
+ @translations = Riddick::Backends.key_value.translations
52
+ erb :index
53
+ end
54
+
55
+ post '/set' do
56
+ k, v = params[:k], params[:v]
57
+ if k && v && !k.empty? && !v.empty?
58
+ Riddick::Backends.store_translation k, v
59
+ session[:flash_success] = 'Translation successfully stored!'
60
+ else
61
+ session[:flash_error] = 'Error: either path or translation is empty!'
62
+ end
63
+ redirect my_url
64
+ end
65
+
66
+ get '/del' do
67
+ k = params[:k]
68
+ if k && !k.empty?
69
+ Riddick::Backends.delete_translation k
70
+ session[:flash_success] = 'Translation successfully deleted!'
71
+ else
72
+ session[:flash_error] = 'Error: no such key or key not found!'
73
+ end
74
+ redirect(request.referer || root_url)
75
+ end
76
+ end
77
+ end