riddick 0.0.1

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.
@@ -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