Status: | Superseded |
---|---|
Proposed branch: | lp:~seif/globaleaks/demo |
Merge into: | lp:globaleaks |
Diff against target: |
6424 lines (+4807/-996) 46 files modified
.bzrignore (+4/-0) applications/admin/cron/crontab (+1/-1) applications/globaleaks/controllers/admin.py (+37/-0) applications/globaleaks/controllers/default.py (+6/-6) applications/globaleaks/controllers/submission.py (+53/-14) applications/globaleaks/controllers/target.py (+70/-0) applications/globaleaks/controllers/tulip.py (+65/-45) applications/globaleaks/cron/crontab (+2/-1) applications/globaleaks/cron/scheduler.py (+53/-8) applications/globaleaks/cron/target_list_clean.py (+4/-0) applications/globaleaks/languages/it.py (+41/-3) applications/globaleaks/models/0.py (+5/-0) applications/globaleaks/models/datamodel.py (+20/-6) applications/globaleaks/models/db.py (+29/-140) applications/globaleaks/models/menu.py (+3/-3) applications/globaleaks/modules/logic/datamodel.py (+154/-0) applications/globaleaks/modules/logic/db.py (+67/-0) applications/globaleaks/modules/logic/globaleaks.py (+77/-0) applications/globaleaks/modules/randomizer.py (+8/-1) applications/globaleaks/static/css/base.css (+464/-548) applications/globaleaks/static/css/old.css (+918/-0) applications/globaleaks/static/css/semifixed.css (+435/-0) applications/globaleaks/static/js/AlteHaas_700.font.js (+19/-0) applications/globaleaks/static/js/cufon.js (+7/-0) applications/globaleaks/static/js/fancybox/jquery.easing-1.3.pack.js (+72/-0) applications/globaleaks/static/js/fancybox/jquery.fancybox-1.3.4.css (+359/-0) applications/globaleaks/static/js/fancybox/jquery.fancybox-1.3.4.js (+1156/-0) applications/globaleaks/static/js/fancybox/jquery.fancybox-1.3.4.pack.js (+46/-0) applications/globaleaks/static/js/fancybox/jquery.mousewheel-3.0.4.pack.js (+14/-0) applications/globaleaks/static/js/jquery.js (+1/-1) applications/globaleaks/static/js/main.js (+34/-0) applications/globaleaks/views/admin/index.html (+4/-0) applications/globaleaks/views/admin/targets.html (+68/-0) applications/globaleaks/views/default/index.html (+36/-8) applications/globaleaks/views/layout.html (+19/-15) applications/globaleaks/views/submission/index.html (+17/-20) applications/globaleaks/views/target/subscribe.html (+7/-0) applications/globaleaks/views/target/unsubscribe.html (+2/-0) applications/globaleaks/views/tulip/index.html (+4/-9) applications/globaleaks/views/tulip/status.html (+162/-31) applications/globaleaks/wizard.metadata (+0/-111) globaleaks.debian.sh (+226/-0) globaleaks.py (+0/-25) globaleaks.sh (+5/-0) startglobaleaks (+8/-0) web2py.py (+25/-0) |
To merge this branch: | bzr merge lp:~seif/globaleaks/demo |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
random globaleaks developers | Pending | ||
Review via email: mp+73816@code.launchpad.net |
This proposal has been superseded by a proposal from 2011-09-02.
Commit message
Description of the change
Clean up code
moved all globaleaks logic into modules
To post a comment you must log in.
Unmerged revisions
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file '.bzrignore' |
2 | --- .bzrignore 2011-08-28 14:30:18 +0000 |
3 | +++ .bzrignore 2011-09-02 13:53:25 +0000 |
4 | @@ -31,3 +31,7 @@ |
5 | applications/globaleaks/sessions/127.0.0.1-144deeb4-6d5c-4579-bdd3-3d9d5085abd2 |
6 | applications/globaleaks/sessions/127.0.0.1-a8551263-bc3c-430c-abb2-8711fac671c1 |
7 | applications/globaleaks/sessions/127.0.0.1-c6d5b9b3-1ec7-41c1-8d72-04c21b7a6b11 |
8 | +material/* |
9 | +applications/globaleaks/cache/cache.lock |
10 | +applications/globaleaks/cache/cache.shelve |
11 | +applications/admin/cache/* |
12 | |
13 | === removed file 'applications/admin/cache/cache.lock' |
14 | === removed file 'applications/admin/cache/cache.shelve' |
15 | Binary files applications/admin/cache/cache.shelve 2011-08-28 08:06:54 +0000 and applications/admin/cache/cache.shelve 1970-01-01 00:00:00 +0000 differ |
16 | === modified file 'applications/admin/cron/crontab' |
17 | --- applications/admin/cron/crontab 2011-08-28 08:06:54 +0000 |
18 | +++ applications/admin/cron/crontab 2011-09-02 13:53:25 +0000 |
19 | @@ -1,1 +1,1 @@ |
20 | -10 * * * * root **applications/admin/cron/expire_sessions.py |
21 | +#10 * * * * root **applications/admin/cron/expire_sessions.py |
22 | |
23 | === removed file 'applications/globaleaks/cache/cache.lock' |
24 | === removed file 'applications/globaleaks/cache/cache.shelve' |
25 | Binary files applications/globaleaks/cache/cache.shelve 2011-08-28 13:59:09 +0000 and applications/globaleaks/cache/cache.shelve 1970-01-01 00:00:00 +0000 differ |
26 | === added file 'applications/globaleaks/controllers/admin.py' |
27 | --- applications/globaleaks/controllers/admin.py 1970-01-01 00:00:00 +0000 |
28 | +++ applications/globaleaks/controllers/admin.py 2011-09-02 13:53:25 +0000 |
29 | @@ -0,0 +1,37 @@ |
30 | +# coding: utf8 |
31 | +# try something like |
32 | + |
33 | +@auth.requires_login() |
34 | +def index(): |
35 | + return dict(message="hello from admin.py") |
36 | + |
37 | +@auth.requires_login() |
38 | +def targets(): |
39 | + |
40 | + response.flash = "You are now the GlobaLeaks Node Maintainer" |
41 | + |
42 | + if(request.vars.edit and request.vars.edit.startswith("delete")): |
43 | + gl.delete_target(request.vars.edit.split(".")[1]) |
44 | + |
45 | + if(request.vars.edit and request.vars.edit.startswith("edit")): |
46 | + pass |
47 | + |
48 | + form_content = (Field('Name', requires=IS_NOT_EMPTY()), |
49 | + Field('Description', 'text', requires=IS_LENGTH(minsize=5,maxsize=50)), |
50 | + Field('email', requires=[IS_EMAIL(), IS_NOT_IN_DB(db, db.target.url)]) |
51 | + ) |
52 | + |
53 | + form = SQLFORM.factory(*form_content) |
54 | + |
55 | + targets = gl.get_targets("ANY") |
56 | + |
57 | + if "display" in request.args and not request.vars: |
58 | + return dict(form=None, list=True, targets=targets) |
59 | + |
60 | + if form.accepts(request.vars, session): |
61 | + c = request.vars |
62 | + gl.create_target(c.Name, "demo", c.Description, c.email, "demo", "demo target") |
63 | + targets = gl.get_targets("ANY") |
64 | + return dict(form=form, list=True, targets=targets) |
65 | + |
66 | + return dict(form=form, list=False, targets=targets) |
67 | |
68 | === modified file 'applications/globaleaks/controllers/default.py' |
69 | --- applications/globaleaks/controllers/default.py 2011-08-28 13:59:09 +0000 |
70 | +++ applications/globaleaks/controllers/default.py 2011-09-02 13:53:25 +0000 |
71 | @@ -1,13 +1,13 @@ |
72 | -# -*- coding: utf-8 -*- |
73 | ### required - do no delete |
74 | def user(): return dict(form=auth()) |
75 | + |
76 | def download(): return response.download(request,db) |
77 | + |
78 | def call(): |
79 | session.forget() |
80 | return service() |
81 | ### end requires |
82 | -def index(): |
83 | - return dict(message=T("Hello World, I am GlobaLeaks!")) |
84 | - |
85 | -def error(): |
86 | - return dict() |
87 | + |
88 | +def index(): return dict(message=T("Hello World, I am GlobaLeaks!")) |
89 | + |
90 | +def error(): return dict() |
91 | |
92 | === modified file 'applications/globaleaks/controllers/submission.py' |
93 | --- applications/globaleaks/controllers/submission.py 2011-08-28 20:00:22 +0000 |
94 | +++ applications/globaleaks/controllers/submission.py 2011-09-02 13:53:25 +0000 |
95 | @@ -1,30 +1,69 @@ |
96 | +import os |
97 | +from pprint import pprint |
98 | + |
99 | def index(): |
100 | + leaker_number = None |
101 | form_content = (Field('Title', requires=IS_NOT_EMPTY()), |
102 | Field('Description', 'text', requires=IS_NOT_EMPTY()), |
103 | - Field('Tags'),Field('material', 'upload', uploadfolder="uploads/"), |
104 | - Field('dislaimer', 'boolean', requires=IS_EQUAL_TO("on", error_message="Please read the disclaimer"))) |
105 | - |
106 | - form = SQLFORM.factory(*form_content) |
107 | - |
108 | + Field('material1', 'upload', uploadfolder=os.path.join(request.folder,'uploads/')), |
109 | + Field('material2', 'upload', uploadfolder=os.path.join(request.folder,'uploads/')), |
110 | + Field('material3', 'upload', uploadfolder=os.path.join(request.folder,'uploads/')), |
111 | + Field('metadata', 'boolean', requires=NOT_IMPLEMENTED("tulip-metadata-sanitization")), |
112 | + Field('disclaimer', 'boolean', requires=IS_EQUAL_TO("on", error_message="Please read the disclaimer")), |
113 | + ) |
114 | + |
115 | + form = SQLFORM.factory(*form_content,labels = {'disclaimer':'Accept and have read the disclaimer', 'metadata':'Metadata sanitization'}) |
116 | + |
117 | + form = FORM(TABLE( |
118 | + TR('Title', INPUT(_name='Title', requires=IS_NOT_EMPTY())), |
119 | + TR('Description:',TEXTAREA(_name='Description', requires=IS_NOT_EMPTY())), |
120 | + TR('Material:', INPUT(_name='material1', _type='file', _class="disabled")), |
121 | + TR('Metadata:',INPUT(_name='metadata', _type='checkbox', _class="notimplemented")), |
122 | + TR('Accept Disclaimer:', |
123 | + INPUT(_name='disclaimer', _type='checkbox', |
124 | + requires=IS_EQUAL_TO("on", error_message="Please accept the disclaimer"))), |
125 | + TR('', INPUT(_name='submit', _type='submit')))) |
126 | + |
127 | + |
128 | + |
129 | response.flash = "You are the Whistleblower" |
130 | |
131 | if form.accepts(request.vars, session): |
132 | l = request.vars |
133 | + leaker_number = randomizer.generate_tulip_receipt() |
134 | + |
135 | leak_id = gl.create_leak(l.Title, l.Description, None, None, |
136 | - {"Al Jazeera":10 , "CNN":20, "Leaker":0}, l.Tags) |
137 | + "demo", l.Tags, number=leaker_number[1]) |
138 | + |
139 | + i = 0 |
140 | |
141 | - #response.flash = 'form accepted' |
142 | + #FIXME Refactor me please |
143 | + for f in os.listdir(os.path.join(request.folder,'uploads/')): |
144 | + ext = f.split(".")[-1:][0] |
145 | + dst_folder = os.path.join(request.folder, 'material/' + str(leak_id.id) + '/') |
146 | + if not os.path.isdir(dst_folder): |
147 | + os.mkdir(dst_folder) |
148 | + os.rename(os.path.join(request.folder, 'uploads/') + f, dst_folder + str(i) + "." + ext) |
149 | + i += 1 |
150 | leak = Leak(leak_id) |
151 | |
152 | - #FIXME do this better... |
153 | - tulips = [] |
154 | + if(i>0): |
155 | + db.material.insert(leak_id=leak_id, |
156 | + url="demo", type="demo") |
157 | + |
158 | for tulip in leak.tulips: |
159 | - if tulip.target=="Leaker": |
160 | + target = gl.get_target(tulip.target) |
161 | + |
162 | + if tulip.target=="0": |
163 | leaker_tulip = tulip.url |
164 | - else: |
165 | - tulips.append((tulip.url, tulip.target)) |
166 | - |
167 | - return dict(leak_id=leak_id, tulip=leaker_tulip, form=None, tulips=tulips) |
168 | + continue |
169 | + |
170 | + if target.status == "subscribed": |
171 | + db.mail.insert(target=target.name, |
172 | + address=target.url, tulip=tulip.url) |
173 | + pretty_number = leaker_number[0][:3]+" "+leaker_number[0][3:6]+" " +leaker_number[0][6:] |
174 | + |
175 | + return dict(leak_id=leak_id, leaker_tulip=pretty_number, form=None) |
176 | elif form.errors: |
177 | response.flash = 'form has errors' |
178 | |
179 | |
180 | === added file 'applications/globaleaks/controllers/target.py' |
181 | --- applications/globaleaks/controllers/target.py 1970-01-01 00:00:00 +0000 |
182 | +++ applications/globaleaks/controllers/target.py 2011-09-02 13:53:25 +0000 |
183 | @@ -0,0 +1,70 @@ |
184 | +def index(): return dict(message="hello from target.py") |
185 | + |
186 | +def subscribe(): |
187 | + if not request.args: |
188 | + subscribe_form = SQLFORM.factory( |
189 | + Field('Name', requires=IS_NOT_EMPTY()), |
190 | + Field('Email', requires=IS_NOT_EMPTY()), |
191 | + Field('Description','text', requires=IS_NOT_EMPTY()) |
192 | + ) |
193 | + if subscribe_form.accepts(request.vars, session): |
194 | + return dict(message="Not implemented!",subscribe=None) |
195 | + |
196 | + return dict(message="Here you can subscribe as a target",subscribe=subscribe_form) |
197 | + |
198 | + if request.args: |
199 | + tulip_url = request.args[0] |
200 | + else: |
201 | + tulip_url = None |
202 | + |
203 | + try: |
204 | + tulip = Tulip(url=tulip_url) |
205 | + except: |
206 | + return dict(message="Error!",subscribe=None) |
207 | + |
208 | + if not tulip_url or tulip.target == "0": |
209 | + return dict(message="Error!",subscribe=None) |
210 | + |
211 | + else: |
212 | + target = db(db.target.id==tulip.target).select().first() |
213 | + |
214 | + if not target: |
215 | + return dict(message="Error!",subscribe=None) |
216 | + |
217 | + if target.status == "subscribed": |
218 | + return dict(message="already subscribed",subscribe=None) |
219 | + |
220 | + else: |
221 | + db.target[tulip.target].update_record(status="subscribed") |
222 | + return dict(message="subscribed",subscribe=None) |
223 | + |
224 | + return dict(message="this is logically impossible",subscribe=None) |
225 | + |
226 | +def unsubscribe(): |
227 | + if request.args: |
228 | + tulip_url = request.args[0] |
229 | + else: |
230 | + tulip_url = None |
231 | + |
232 | + try: |
233 | + tulip = Tulip(url=tulip_url) |
234 | + except: |
235 | + return dict(message="Error!") |
236 | + |
237 | + if not tulip_url or tulip.target == "0": |
238 | + return dict(message="Error!") |
239 | + |
240 | + else: |
241 | + target = db(db.target.id==tulip.target).select().first() |
242 | + |
243 | + if not target: |
244 | + return dict(message="Error!") |
245 | + |
246 | + if target.status == "unsubscribed": |
247 | + return dict(message="already unsubscribed") |
248 | + |
249 | + else: |
250 | + db.target[tulip.target].update_record(status="unsubscribed") |
251 | + return dict(message="unsubscribed") |
252 | + |
253 | + return dict(message="this is logically impossible") |
254 | |
255 | === modified file 'applications/globaleaks/controllers/tulip.py' |
256 | --- applications/globaleaks/controllers/tulip.py 2011-08-28 18:49:15 +0000 |
257 | +++ applications/globaleaks/controllers/tulip.py 2011-09-02 13:53:25 +0000 |
258 | @@ -1,17 +1,24 @@ |
259 | def index(): |
260 | - return dict(dead=False, |
261 | - leak_title=None, |
262 | - leak_tags=None, |
263 | - leak_desc=None, |
264 | - leak_material=None, |
265 | - tulip_downloads=None, |
266 | - tulip_allowed_downloads=None, |
267 | - comment=None, |
268 | - name=None, |
269 | - comment_form=None) |
270 | + import hashlib |
271 | + |
272 | + tulip_url = None |
273 | + |
274 | + form = SQLFORM.factory(Field('Receipt', requires=IS_NOT_EMPTY())) |
275 | + |
276 | + response.flash = "You are the Whistleblower" |
277 | + |
278 | + if form.accepts(request.vars, session): |
279 | + l = request.vars |
280 | + # Make the tulip work well |
281 | + leak_number = l.Receipt.replace(' ','') |
282 | + tulip_url = hashlib.sha256(leak_number).hexdigest() |
283 | + redirect("/tulip/" + tulip_url) |
284 | + |
285 | + return dict(form=form,tulip_url=None) |
286 | |
287 | def status(): |
288 | tulip_url = request.args[0] |
289 | + |
290 | try: |
291 | t = Tulip(url=tulip_url) |
292 | |
293 | @@ -20,45 +27,58 @@ |
294 | |
295 | leak = t.get_leak() |
296 | |
297 | + if t.target == "0": |
298 | + whistleblower=True |
299 | + response.flash = "You are the Whistleblower" |
300 | + else: |
301 | + whistleblower=False |
302 | + response.flash = "You are the Target" |
303 | + |
304 | dead = False |
305 | |
306 | - form = SQLFORM.factory(Field('Comment', 'text', requires=IS_NOT_EMPTY())) |
307 | + if(int(t.allowed_accesses) !=0 and int(t.accesses_counter) >= int(t.allowed_accesses)): |
308 | + dead = True |
309 | + else: |
310 | + t.accesses_counter = int(t.accesses_counter) + 1 |
311 | + |
312 | + if(int(t.allowed_downloads) !=0 and int(t.downloads_counter) >= int(t.allowed_downloads)): |
313 | + dead = True |
314 | + |
315 | + print gl.get_targets("ANY") |
316 | + return dict(err=None, |
317 | + dead=dead, |
318 | + whistleblower=whistleblower, |
319 | + tulip_url=tulip_url, |
320 | + leak_id=leak.id, |
321 | + leak_title=leak.title, |
322 | + leak_tags=leak.tags, |
323 | + leak_desc=leak.desc, |
324 | + leak_material=leak.material, |
325 | + tulip_accesses=t.accesses_counter, |
326 | + tulip_allowed_accesses=t.allowed_accesses, |
327 | + tulip_downloads=t.downloads_counter, |
328 | + tulip_allowed_downloads=t.allowed_downloads, |
329 | + name=t.target, |
330 | + targets=gl.get_targets("ANY")) |
331 | + |
332 | +def download(): |
333 | + import os |
334 | + |
335 | + tulip_url = request.args[0] |
336 | + |
337 | + try: |
338 | + t = Tulip(url=tulip_url) |
339 | + except: |
340 | + redirect("/tulip/" + tulip_url); |
341 | |
342 | if(int(t.downloads_counter) >= int(t.allowed_downloads) and int(t.allowed_downloads)!=0): |
343 | - dead = True |
344 | + redirect("/tulip/" + tulip_url); |
345 | else: |
346 | t.downloads_counter = int(t.downloads_counter) + 1 |
347 | |
348 | - if form.accepts(request.vars, session): |
349 | - response.flash = 'ok!' |
350 | - c = response.vars |
351 | - print response.vars |
352 | - |
353 | - return dict(err=None, |
354 | - dead=dead, |
355 | - leak_title=leak.title, |
356 | - leak_tags=leak.tags, |
357 | - leak_desc=leak.desc, |
358 | - leak_material=leak.material, |
359 | - tulip_downloads=t.downloads_counter, |
360 | - tulip_allowed_downloads=t.allowed_downloads, |
361 | - comment="asdads", |
362 | - name=t.target, |
363 | - comment_form=form) |
364 | - |
365 | - elif form.errors: |
366 | - response.flash = 'form has errors' |
367 | - else: |
368 | - response.flash = 'please fill the form' |
369 | - |
370 | - |
371 | - return dict(err=None, |
372 | - dead=dead, |
373 | - leak_title=leak.title, |
374 | - leak_tags=leak.tags, |
375 | - leak_desc=leak.desc, |
376 | - leak_material=leak.material, |
377 | - tulip_downloads=t.downloads_counter, |
378 | - tulip_allowed_downloads=t.allowed_downloads, |
379 | - comment_form=form, |
380 | - comment=None) |
381 | + leak = t.get_leak() |
382 | + |
383 | + response.headers['Content-Type'] = "application/octet" |
384 | + response.headers['Content-Disposition'] = 'attachment; filename="' + tulip_url + '.zip"' |
385 | + |
386 | + return response.stream(open(os.path.join(request.folder, 'material/', 'static.zip'),'rb')) |
387 | |
388 | === modified file 'applications/globaleaks/cron/crontab' |
389 | --- applications/globaleaks/cron/crontab 2011-08-28 13:59:09 +0000 |
390 | +++ applications/globaleaks/cron/crontab 2011-09-02 13:53:25 +0000 |
391 | @@ -1,2 +1,3 @@ |
392 | #crontab |
393 | -#* * * * * root *applications/init/cron/scheduler.py |
394 | +* * * * * root *applications/globaleaks/cron/scheduler.py |
395 | +0 */2 * * * root *applications/globaleaks/cron/target_list_clean.py |
396 | |
397 | === modified file 'applications/globaleaks/cron/scheduler.py' (properties changed: -x to +x) |
398 | --- applications/globaleaks/cron/scheduler.py 2011-08-28 13:59:09 +0000 |
399 | +++ applications/globaleaks/cron/scheduler.py 2011-09-02 13:53:25 +0000 |
400 | @@ -1,13 +1,58 @@ |
401 | #!/usr/bin/env python |
402 | -import time |
403 | +import time,os |
404 | +import zipfile, tempfile |
405 | |
406 | -fp = open("/tmp/test", "w") |
407 | +fp = open("/tmp/cron.log", "a+") |
408 | fp.write(time.ctime()+"\n") |
409 | -fp.write(str(dir(db))+"\n") |
410 | -fp.write(str(dir(gl))+"\n") |
411 | +""" |
412 | +if(db.auth_user): |
413 | + # XXX Remove for non demo usage |
414 | + if(not db(db.auth_user.email=="node@globaleaks.org").select().first()): |
415 | + db.auth_user.insert(first_name="Globaleaks node administrator", |
416 | + last_name="Globaleaks",email="node@globaleaks.org", |
417 | + password=db.auth_user.password.validate("testing")) |
418 | +""" |
419 | + |
420 | +new_material = db(db.leak.spooled==False).select() |
421 | + |
422 | +""" |
423 | +for mat in new_material: |
424 | + if db(db.material.leak_id==mat.id).select(): |
425 | + mat_dir = os.path.join(request.folder, 'material/') + str(mat.id) |
426 | + fp.write("mat_dir %s\n" % mat_dir) |
427 | + |
428 | + fp.write("path %s\n" % os.path.join(mat_dir, str(mat.id)+".zip")) |
429 | + zip = zipfile.ZipFile(mat_dir+".zip", 'w') |
430 | + fp.write("zip %s\n" % zip) |
431 | + |
432 | + for file in os.listdir(mat_dir): |
433 | + zip.write(mat_dir+"/"+file, file) |
434 | + |
435 | + zip.close() |
436 | + db.leak[mat.id].update_record(spooled=True) |
437 | + db.commit()""" |
438 | + |
439 | fp.close() |
440 | |
441 | - |
442 | -#db. |
443 | -#gl. |
444 | - |
445 | +mails = db(db.mail).select() |
446 | + |
447 | +for m in mails: |
448 | + message = """Hello there I am GlobaLeaks. |
449 | +There is a fresh new leak waiting for your at: |
450 | + http://%s:%s/tulip/%s |
451 | + |
452 | +Take Care, |
453 | +Random GlobaLeaks Node |
454 | + |
455 | +to unsubscribe: http://%s:%s/globaleaks/target/unsubscribe/%s |
456 | +to subscribe back: http://%s:%s/globaleaks/target/subscribe/%s |
457 | +""" % (settings.hostname, settings.port, m.tulip, |
458 | + settings.hostname, settings.port, m.tulip, |
459 | + settings.hostname, settings.port, m.tulip) |
460 | + |
461 | + mail.send(to=m.address, |
462 | + subject="GlobaLeaks notification for: " + m.target, |
463 | + message=message) |
464 | + db(db.mail.id==m.id).delete() |
465 | + |
466 | +db.commit() |
467 | |
468 | === added file 'applications/globaleaks/cron/target_list_clean.py' |
469 | --- applications/globaleaks/cron/target_list_clean.py 1970-01-01 00:00:00 +0000 |
470 | +++ applications/globaleaks/cron/target_list_clean.py 2011-09-02 13:53:25 +0000 |
471 | @@ -0,0 +1,4 @@ |
472 | +#!/usr/bin/env python |
473 | + |
474 | +db(db.target).delete() |
475 | +db.commit() |
476 | |
477 | === modified file 'applications/globaleaks/languages/it.py' |
478 | --- applications/globaleaks/languages/it.py 2011-08-28 13:59:09 +0000 |
479 | +++ applications/globaleaks/languages/it.py 2011-09-02 13:53:25 +0000 |
480 | @@ -5,9 +5,13 @@ |
481 | '%Y-%m-%d %H:%M:%S': '%d/%m/%Y %H:%M:%S', |
482 | '%s rows deleted': '%s righe ("record") cancellate', |
483 | '%s rows updated': '%s righe ("record") modificate', |
484 | +'Administrative interface': 'Interfaccia amministrativa', |
485 | +'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?', |
486 | 'Available databases and tables': 'Database e tabelle disponibili', |
487 | 'Cannot be empty': 'Non può essere vuoto', |
488 | +'Change password': 'Change password', |
489 | 'Check to delete': 'Seleziona per cancellare', |
490 | +'Check to delete:': 'Check to delete:', |
491 | 'Client IP': 'Client IP', |
492 | 'Controller': 'Controller', |
493 | 'Copyright': 'Copyright', |
494 | @@ -18,12 +22,16 @@ |
495 | 'Database': 'Database', |
496 | 'Delete:': 'Cancella:', |
497 | 'Description': 'Descrizione', |
498 | +'Documentation': 'Documentazione', |
499 | 'E-mail': 'E-mail', |
500 | 'Edit': 'Modifica', |
501 | 'Edit This App': 'Modifica questa applicazione', |
502 | 'Edit current record': 'Modifica record corrente', |
503 | +'Email non valida': 'Email non valida', |
504 | 'First name': 'Nome', |
505 | +'Group %(group_id)s created': 'Group %(group_id)s created', |
506 | 'Group ID': 'ID Gruppo', |
507 | +'Group uniquely assigned to user %(id)s': 'Group uniquely assigned to user %(id)s', |
508 | 'Hello World': 'Salve Mondo', |
509 | 'Hello World in a flash!': 'Salve Mondo in un flash!', |
510 | 'Import/Export': 'Importa/Esporta', |
511 | @@ -31,23 +39,40 @@ |
512 | 'Internal State': 'Stato interno', |
513 | 'Invalid Query': 'Richiesta (query) non valida', |
514 | 'Invalid email': 'Email non valida', |
515 | +'Invalid login': 'Invalid login', |
516 | +'Invalid password': 'Invalid password', |
517 | 'Last name': 'Cognome', |
518 | 'Layout': 'Layout', |
519 | +'Logged in': 'Logged in', |
520 | +'Logged out': 'Logged out', |
521 | +'Login': 'Login', |
522 | 'Main Menu': 'Menu principale', |
523 | 'Menu Model': 'Menu Modelli', |
524 | 'Name': 'Nome', |
525 | 'New Record': 'Nuovo elemento (record)', |
526 | +'New password': 'New password', |
527 | 'No databases in this application': 'Nessun database presente in questa applicazione', |
528 | +'Old password': 'Old password', |
529 | +'Online examples': 'Vedere gli esempi', |
530 | 'Origin': 'Origine', |
531 | 'Password': 'Password', |
532 | +"Password fields don't match": "Password fields don't match", |
533 | +'Please read the disclaimer': 'Please read the disclaimer', |
534 | 'Powered by': 'Powered by', |
535 | +'Profile': 'Profile', |
536 | +'Profile updated': 'Profile updated', |
537 | 'Query:': 'Richiesta (query):', |
538 | 'Record ID': 'Record ID', |
539 | +'Register': 'Register', |
540 | 'Registration key': 'Chiave di Registazione', |
541 | +'Registration successful': 'Registration successful', |
542 | +'Remember me (for 30 days)': 'Remember me (for 30 days)', |
543 | +'Request reset password': 'Request reset password', |
544 | 'Reset Password key': 'Resetta chiave Password ', |
545 | 'Role': 'Ruolo', |
546 | 'Rows in table': 'Righe nella tabella', |
547 | 'Rows selected': 'Righe selezionate', |
548 | +'Save profile': 'Save profile', |
549 | 'Stylesheet': 'Foglio di stile (stylesheet)', |
550 | 'Sure you want to delete this object?': 'Vuoi veramente cancellare questo oggetto?', |
551 | 'Table name': 'Nome tabella', |
552 | @@ -57,8 +82,17 @@ |
553 | 'Timestamp': 'Ora (timestamp)', |
554 | 'Update:': 'Aggiorna:', |
555 | 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Per costruire richieste (query) più complesse si usano (...)&(...) come "e" (AND), (...)|(...) come "o" (OR), e ~(...) come negazione (NOT).', |
556 | +'User %(id)s Logged-in': 'User %(id)s Logged-in', |
557 | +'User %(id)s Logged-out': 'User %(id)s Logged-out', |
558 | +'User %(id)s Password changed': 'User %(id)s Password changed', |
559 | +'User %(id)s Password reset': 'User %(id)s Password reset', |
560 | +'User %(id)s Profile updated': 'User %(id)s Profile updated', |
561 | +'User %(id)s Registered': 'User %(id)s Registered', |
562 | 'User ID': 'ID Utente', |
563 | +'Username': 'Username', |
564 | +'Verify Password': 'Verify Password', |
565 | 'View': 'Vista', |
566 | +'Welcome': 'Welcome', |
567 | 'Welcome %s': 'Benvenuto %s', |
568 | 'Welcome to web2py': 'Benvenuto su web2py', |
569 | 'Which called the function': 'che ha chiamato la funzione', |
570 | @@ -68,17 +102,17 @@ |
571 | 'appadmin is disabled because insecure channel': 'Amministrazione (appadmin) disabilitata: comunicazione non sicura', |
572 | 'cache': 'cache', |
573 | 'change password': 'Cambia password', |
574 | -'Online examples': 'Vedere gli esempi', |
575 | -'Administrative interface': "Interfaccia amministrativa", |
576 | 'customize me!': 'Personalizzami!', |
577 | 'data uploaded': 'dati caricati', |
578 | 'database': 'database', |
579 | 'database %s select': 'database %s select', |
580 | 'db': 'db', |
581 | 'design': 'progetta', |
582 | -'Documentation': 'Documentazione', |
583 | 'done!': 'fatto!', |
584 | 'edit profile': 'modifica profilo', |
585 | +'enter a value': 'enter a value', |
586 | +'enter an integer between %(min)g and %(max)g': 'enter an integer between %(min)g and %(max)g', |
587 | +'enter from %(min)g to %(max)g characters': 'enter from %(min)g to %(max)g characters', |
588 | 'export as csv file': 'esporta come file CSV', |
589 | 'hello world': 'salve mondo', |
590 | 'insert new': 'inserisci nuovo', |
591 | @@ -92,7 +126,10 @@ |
592 | 'next 100 rows': 'prossime 100 righe', |
593 | 'not authorized': 'non autorizzato', |
594 | 'or import from csv file': 'oppure importa da file CSV', |
595 | +'password': 'password', |
596 | +'please input your password again': 'please input your password again', |
597 | 'previous 100 rows': '100 righe precedenti', |
598 | +'profile': 'profile', |
599 | 'record': 'record', |
600 | 'record does not exist': 'il record non esiste', |
601 | 'record id': 'record id', |
602 | @@ -101,4 +138,5 @@ |
603 | 'state': 'stato', |
604 | 'table': 'tabella', |
605 | 'unable to parse csv file': 'non riesco a decodificare questo file CSV', |
606 | +'value already in database or empty': 'value already in database or empty', |
607 | } |
608 | |
609 | === added directory 'applications/globaleaks/material' |
610 | === added file 'applications/globaleaks/material/static.zip' |
611 | Binary files applications/globaleaks/material/static.zip 1970-01-01 00:00:00 +0000 and applications/globaleaks/material/static.zip 2011-09-02 13:53:25 +0000 differ |
612 | === modified file 'applications/globaleaks/models/0.py' |
613 | --- applications/globaleaks/models/0.py 2011-08-28 13:59:09 +0000 |
614 | +++ applications/globaleaks/models/0.py 2011-09-02 13:53:25 +0000 |
615 | @@ -17,3 +17,8 @@ |
616 | settings.login_method = 'local' |
617 | settings.login_config = '' |
618 | settings.plugins = [] |
619 | + |
620 | +settings.hostname = '127.0.0.1' |
621 | +settings.port = '8000' |
622 | + |
623 | + |
624 | |
625 | === modified file 'applications/globaleaks/models/datamodel.py' |
626 | --- applications/globaleaks/models/datamodel.py 2011-08-28 13:59:09 +0000 |
627 | +++ applications/globaleaks/models/datamodel.py 2011-09-02 13:53:25 +0000 |
628 | @@ -24,7 +24,7 @@ |
629 | db.commit() |
630 | title = property(get_title, set_title) |
631 | |
632 | - #TODO: implment get/set tags |
633 | + #TODO:implement get/set tags |
634 | def set_tags(self): |
635 | pass |
636 | def get_tags(self): |
637 | @@ -38,14 +38,14 @@ |
638 | db.commit() |
639 | desc = property(get_desc, set_desc) |
640 | |
641 | - #TODO: implment get/set material |
642 | + #TODO: implement get/set material |
643 | def get_material(self): |
644 | pass |
645 | def set_material(self, material): |
646 | pass |
647 | material = property(get_material, set_material) |
648 | |
649 | - #TODO: implment get/set targets |
650 | + #TODO: implement get/set targets |
651 | def get_targets(self): |
652 | pass |
653 | def set_targets(self, targets): |
654 | @@ -79,7 +79,7 @@ |
655 | class Tulip(object): |
656 | def __init__(self, id=None, url=None): |
657 | if url: |
658 | - self._id = db(db.tulip.uri==url).select().first().id |
659 | + self._id = db(db.tulip.url==url).select().first().id |
660 | else: |
661 | self._id = id |
662 | |
663 | @@ -91,7 +91,7 @@ |
664 | id = property(get_id, set_id) |
665 | |
666 | def get_url(self): |
667 | - return db.tulip[self.id].uri |
668 | + return db.tulip[self.id].url |
669 | def set_url(self, url): |
670 | print "Error: url is read only" |
671 | pass |
672 | @@ -103,6 +103,20 @@ |
673 | print "Error: target is read only" |
674 | pass |
675 | target = property(get_target, set_target) |
676 | + |
677 | + def get_allowed_accesses(self): |
678 | + return db.tulip[self.id].allowed_accesses |
679 | + def set_allowed_accesses(self, allowed_accesses): |
680 | + db.tulip[self.id].update_record(allowed_accessess=allowed_accesses) |
681 | + db.commit() |
682 | + allowed_accesses = property(get_allowed_accesses, set_allowed_accesses) |
683 | + |
684 | + def get_accesses_counter(self): |
685 | + return db.tulip[self.id].accesses_counter |
686 | + def set_accesses_counter(self, accesses_counter): |
687 | + db.tulip[self.id].update_record(accesses_counter=accesses_counter) |
688 | + db.commit() |
689 | + accesses_counter = property(get_accesses_counter, set_accesses_counter) |
690 | |
691 | def get_allowed_downloads(self): |
692 | return db.tulip[self.id].allowed_downloads |
693 | @@ -121,6 +135,6 @@ |
694 | def get_leak(self): |
695 | return Leak(db.tulip[self.id].leak_id) |
696 | def set_leak(self): |
697 | - #FIXME: raise error that leak of a tulip can not be changed |
698 | + print "Error: leak is read only" |
699 | pass |
700 | leak = property(get_leak, set_leak) |
701 | |
702 | === modified file 'applications/globaleaks/models/db.py' |
703 | --- applications/globaleaks/models/db.py 2011-08-28 20:00:22 +0000 |
704 | +++ applications/globaleaks/models/db.py 2011-09-02 13:53:25 +0000 |
705 | @@ -20,128 +20,8 @@ |
706 | db = DAL('sqlite://storage.sqlite') # if not, use SQLite or other DB |
707 | """ |
708 | randomizer = local_import('randomizer') |
709 | - |
710 | -class DB(DAL): |
711 | - def __init__(self): |
712 | - DAL.__init__(self, 'sqlite://storage.db') |
713 | - self.create_db() |
714 | - |
715 | - def create_db(self): |
716 | - self.define_table('target', |
717 | - Field('name'), |
718 | - Field('category'), |
719 | - Field('desc'), |
720 | - Field('uri'), |
721 | - Field('type'), |
722 | - Field('info'), |
723 | - Field('status'), |
724 | - Field('last_sent_tulip'), |
725 | - Field('last_access'), |
726 | - Field('last_download'), |
727 | - Field('tulip_counter'), |
728 | - Field('dowload_counter'), |
729 | - format='%(name)s' |
730 | - ) |
731 | - |
732 | - self.define_table('leak', |
733 | - Field('title'), |
734 | - Field('desc'), |
735 | - Field('submission_timestamp'), |
736 | - Field('leaker_id', self.target), |
737 | - format='%(name)s' |
738 | - ) |
739 | - |
740 | - self.define_table('comment', |
741 | - Field('leak_id', self.leak), |
742 | - Field('commenter_id', self.target), |
743 | - Field('comment'), |
744 | - format='%(name)s' |
745 | - ) |
746 | - |
747 | - self.define_table('material', |
748 | - Field('url', unique=True), |
749 | - Field('leak_id', self.leak), |
750 | - Field('type'), |
751 | - format='%(name)s' |
752 | - ) |
753 | - |
754 | - self.define_table('tulip', |
755 | - Field('uri', unique=True), |
756 | - Field('leak_id', self.leak), |
757 | - Field('target_id'),# self.target), |
758 | - Field('downloads_counter'), |
759 | - Field('allowed_downloads'), |
760 | - Field('expiry_time'), |
761 | - format='%(name)s' |
762 | - ) |
763 | - |
764 | -db = DB() |
765 | - |
766 | -#### |
767 | -# The main GlobaLeaks Class |
768 | -### |
769 | - |
770 | -class Globaleaks(object): |
771 | - |
772 | - def __init__(self): |
773 | - pass |
774 | - |
775 | - def create_target(self, name, category, desc, uri, type, info): |
776 | - target_id = db.target.insert(name=name, |
777 | - category=category, |
778 | - desc = desc, uri=uri, type=type, info=info, |
779 | - status=True #, last_send_tulip=None, |
780 | - #last_access=None, last_download=None, |
781 | - #tulip_counter=None, download_counter=None |
782 | - ) |
783 | - db.commit() |
784 | - return target_id |
785 | - |
786 | - def delete_target (self, id): |
787 | - db(db.target.id==id).delete() |
788 | - pass |
789 | - |
790 | - def get_targets(self): |
791 | - return db(db.target).select() |
792 | - |
793 | - |
794 | - def get_target(self, target_id): |
795 | - pass |
796 | - |
797 | - def create_leak(self, title, desc, leaker, material, targets = {}, tags=""): |
798 | - #FIXME insert new tags into DB first |
799 | - |
800 | - #Create leak and insert into DB |
801 | - leak_id = db.leak.insert(title = title, desc = desc, |
802 | - submission_timestamp = time.time(), |
803 | - leaker_id = 0) |
804 | - |
805 | - #Create a tulip for each target and insert into DB |
806 | - for target_uri, allowed_downloads in targets.iteritems(): |
807 | - db.tulip.insert(uri = randomizer.generate_tulip_url(), |
808 | - leak_id = leak_id, |
809 | - target_id = target_uri, #FIXME get target_id_properly |
810 | - downloads_counter = 0, |
811 | - allowed_downloads = allowed_downloads, |
812 | - expiry_time = 0) |
813 | - |
814 | - db.commit() |
815 | - return leak_id |
816 | - |
817 | - def get_leaks(self): |
818 | - pass |
819 | - |
820 | - def get_leak(self, leak_id): |
821 | - pass |
822 | - |
823 | - def get_tulips(self, leak_id): |
824 | - pass |
825 | - |
826 | - def get_tulip(self, tulip_id): |
827 | - pass |
828 | - |
829 | - |
830 | - |
831 | +db = local_import('logic.db').DB() |
832 | +gl = local_import('logic.globaleaks').Globaleaks(db) |
833 | |
834 | #### |
835 | # For the time being just use sqlite |
836 | @@ -167,29 +47,28 @@ |
837 | ######################################################################### |
838 | |
839 | from gluon.tools import Mail, Auth, Crud, Service, PluginManager, prettydate |
840 | -mail = Mail() # mailer |
841 | -auth = Auth(db) # authentication/authorization |
842 | -crud = Crud(db) # for CRUD helpers using auth |
843 | -service = Service() # for json, xml, jsonrpc, xmlrpc, amfrpc |
844 | -plugins = PluginManager() # for configuring plugins |
845 | - |
846 | -# mail.settings.server = 'logging' or 'smtp.gmail.com:587' # your SMTP server |
847 | -# mail.settings.sender = 'you@gmail.com' # your email |
848 | -# mail.settings.login = 'username:password' # your credentials or None |
849 | - |
850 | -auth.settings.hmac_key = 'sha512:7a716c8b015b5caca119e195533717fe9a3095d67b3f97114e30256b27392977' # before define_tables() |
851 | -auth.define_tables() # creates all needed tables |
852 | -auth.settings.mailer = mail # for user email verification |
853 | +mail = Mail() # mailer |
854 | +auth = Auth(db) # authentication/authorization |
855 | +crud = Crud(db) # for CRUD helpers using auth |
856 | +service = Service() # for json, xml, jsonrpc, xmlrpc, amfrpc |
857 | +plugins = PluginManager() # for configuring plugins |
858 | + |
859 | +mail.settings.server = 'smtp.gmail.com:587' # your SMTP server |
860 | +mail.settings.sender = 'globaleaks2011@gmail.com' # your email |
861 | +mail.settings.login = 'globaleaks2011@gmail.com:Antani1234' # your credentials or None |
862 | + |
863 | +auth.settings.hmac_key = 'sha512:7a716c8b015b5caca119e195533717fe9a3095d67b3f97114e30256b27392977' # before define_tables() |
864 | +auth.define_tables() # creates all needed tables |
865 | +auth.settings.mailer = mail # for user email verification |
866 | auth.settings.registration_requires_verification = False |
867 | auth.settings.registration_requires_approval = False |
868 | -auth.messages.verify_email = 'Click on the link http://'+request.env.http_host+URL('default','user',args=['verify_email'])+'/%(key)s to verify your email' |
869 | +auth.messages.verify_email = 'Click on the link http://' + request.env.http_host + URL('default','user',args=['verify_email']) + '/%(key)s to verify your email' |
870 | |
871 | auth.settings.reset_password_requires_verification = True |
872 | -auth.messages.reset_password = 'Click on the link http://'+request.env.http_host+URL('default','user',args=['reset_password'])+'/%(key)s to reset your password' |
873 | +auth.messages.reset_password = 'Click on the link http://' + request.env.http_host + URL('default','user',args=['reset_password']) + '/%(key)s to reset your password' |
874 | |
875 | auth.settings.table_user.email.label=T("Username") |
876 | |
877 | - |
878 | ######################################################################### |
879 | ## If you need to use OpenID, Facebook, MySpace, Twitter, Linkedin, etc. |
880 | ## register with janrain.com, uncomment and customize following |
881 | @@ -201,7 +80,6 @@ |
882 | ## other login methods are in gluon/contrib/login_methods |
883 | ######################################################################### |
884 | |
885 | - |
886 | # XXX |
887 | # Don't know |
888 | # crud.settings.auth = None # =auth to enforce authorization on crud |
889 | @@ -227,4 +105,15 @@ |
890 | # mail.settings.sender = settings.email_sender |
891 | # mail.settings.login = settings.email_login |
892 | |
893 | -gl = Globaleaks() |
894 | + |
895 | +# FIXME move to better location |
896 | +class NOT_IMPLEMENTED(object): |
897 | + def __init__(self, a, error_message='This function is not implemented: visit http://blueprints.launchpad.net/globaleaks/+spec/%s'): |
898 | + self.e = error_message % a |
899 | + def __call__(self, value): |
900 | + if value == "off" or not value: |
901 | + return (value, None) |
902 | + return (value, self.e) |
903 | + def formatter(self, value): |
904 | + return format(value) |
905 | + |
906 | |
907 | === modified file 'applications/globaleaks/models/menu.py' |
908 | --- applications/globaleaks/models/menu.py 2011-08-28 13:59:09 +0000 |
909 | +++ applications/globaleaks/models/menu.py 2011-09-02 13:53:25 +0000 |
910 | @@ -4,7 +4,7 @@ |
911 | response.meta.keywords = settings.keywords |
912 | response.meta.description = settings.description |
913 | response.menu = [ |
914 | - (T('Index'),URL('default','index')==URL(),URL('default','index'),[]), |
915 | - (T('Submission'),URL('submission', 'index')==URL(),URL('submission','index'),[]), |
916 | - (T('Tulips'),URL('tulip','index')==URL(),URL('tulip','index'),[]), |
917 | +# (T('Index'),URL('default','index')==URL(),URL('default','index'),[]), |
918 | +# (T('Submission'),URL('submission', 'index')==URL(),URL('submission','index'),[]), |
919 | +# (T('Tulips'),URL('tulip','index')==URL(),URL('tulip','index'),[]), |
920 | ] |
921 | |
922 | === added directory 'applications/globaleaks/modules/logic' |
923 | === added file 'applications/globaleaks/modules/logic/__init__.py' |
924 | === added file 'applications/globaleaks/modules/logic/datamodel.py' |
925 | --- applications/globaleaks/modules/logic/datamodel.py 1970-01-01 00:00:00 +0000 |
926 | +++ applications/globaleaks/modules/logic/datamodel.py 2011-09-02 13:53:25 +0000 |
927 | @@ -0,0 +1,154 @@ |
928 | +import time |
929 | + |
930 | +# web2py's funny way to import "local" modules |
931 | +#db = local_import('sql').db |
932 | +#randomizer = local_import('randomizer') |
933 | + |
934 | +randomizer = local_import('randomizer') |
935 | + |
936 | +class Leak(object): |
937 | + def __init__(self, id): |
938 | + self._id = id |
939 | + |
940 | + def get_id(self): |
941 | + return self._id |
942 | + def set_id(self): |
943 | + print "Error: id is read only" |
944 | + pass |
945 | + id = property(get_id, set_id) |
946 | + |
947 | + def get_title(self): |
948 | + return db.leak[self.id].title |
949 | + def set_title(self, title): |
950 | + db.leak[self.id] = dict(title = title) |
951 | + db.commit() |
952 | + title = property(get_title, set_title) |
953 | + |
954 | + #TODO:implement get/set tags |
955 | + def set_tags(self): |
956 | + pass |
957 | + def get_tags(self): |
958 | + pass |
959 | + tags = property(get_tags, set_tags) |
960 | + |
961 | + def get_desc(self): |
962 | + return db.leak[self.id].desc |
963 | + def set_desc(self, desc): |
964 | + db.leak[self.id].desc = desc |
965 | + db.commit() |
966 | + desc = property(get_desc, set_desc) |
967 | + |
968 | + #TODO: implement get/set material |
969 | + def get_material(self): |
970 | + pass |
971 | + def set_material(self, material): |
972 | + pass |
973 | + material = property(get_material, set_material) |
974 | + |
975 | + #TODO: implement get/set targets |
976 | + def get_targets(self): |
977 | + pass |
978 | + def set_targets(self, targets): |
979 | + pass |
980 | + targets = property(get_targets, set_targets) |
981 | + |
982 | + def get_submission_timestamp(self): |
983 | + return db.leak[self.id].submission_timestamp |
984 | + def set_submission_timstamp(self, timestamp): |
985 | + print "Error: submission_timestamp is read only" |
986 | + pass |
987 | + submission_timestamp = property(get_submission_timestamp, set_submission_timstamp) |
988 | + |
989 | + def get_leaker(self): |
990 | + pass |
991 | + def set_leaker(self, leaker): |
992 | + print "Error: leaker is read only" |
993 | + pass |
994 | + leaker = property(get_leaker, set_leaker) |
995 | + |
996 | + def get_tulips(self): |
997 | + for tulip_id in db(db.tulip.leak_id==self._id).select(db.tulip.id): |
998 | + yield Tulip(tulip_id["id"]) |
999 | + |
1000 | + def set_tulips(self, tulips): |
1001 | + print "Error: tulip is read only" |
1002 | + pass |
1003 | + tulips = property(get_tulips, set_tulips) |
1004 | + |
1005 | + |
1006 | +class Tulip(object): |
1007 | + def __init__(self, id=None, url=None): |
1008 | + if url: |
1009 | + self._id = db(db.tulip.url==url).select().first().id |
1010 | + else: |
1011 | + self._id = id |
1012 | + |
1013 | + def get_id(self): |
1014 | + return self._id |
1015 | + def set_id(self, id): |
1016 | + print "Error: id is read only" |
1017 | + pass |
1018 | + id = property(get_id, set_id) |
1019 | + |
1020 | + def get_url(self): |
1021 | + return db.tulip[self.id].url |
1022 | + def set_url(self, url): |
1023 | + print "Error: url is read only" |
1024 | + pass |
1025 | + url = property(get_url, set_url) |
1026 | + |
1027 | + def get_target(self): |
1028 | + return db.tulip[self.id].target_id |
1029 | + def set_target(self, target): |
1030 | + print "Error: target is read only" |
1031 | + pass |
1032 | + target = property(get_target, set_target) |
1033 | + |
1034 | + def get_allowed_accesses(self): |
1035 | + return db.tulip[self.id].allowed_accesses |
1036 | + def set_allowed_accesses(self, allowed_accesses): |
1037 | + db.tulip[self.id].update_record(allowed_accessess=allowed_accesses) |
1038 | + db.commit() |
1039 | + allowed_accesses = property(get_allowed_accesses, set_allowed_accesses) |
1040 | + |
1041 | + def get_accesses_counter(self): |
1042 | + return db.tulip[self.id].accesses_counter |
1043 | + def set_accesses_counter(self, accesses_counter): |
1044 | + db.tulip[self.id].update_record(accesses_counter=accesses_counter) |
1045 | + db.commit() |
1046 | + accesses_counter = property(get_accesses_counter, set_accesses_counter) |
1047 | + |
1048 | + def get_allowed_downloads(self): |
1049 | + return db.tulip[self.id].allowed_downloads |
1050 | + def set_allowed_downloads(self, allowed_downloads): |
1051 | + db.tulip[self.id].update_record(allowed_downloads=allowed_downloads) |
1052 | + db.commit() |
1053 | + allowed_downloads = property(get_allowed_downloads, set_allowed_downloads) |
1054 | + |
1055 | + def get_downloads_counter(self): |
1056 | + return db.tulip[self.id].downloads_counter |
1057 | + def set_downloads_counter(self, downloads_counter): |
1058 | + db.tulip[self.id].update_record(downloads_counter=downloads_counter) |
1059 | + db.commit() |
1060 | + downloads_counter = property(get_downloads_counter, set_downloads_counter) |
1061 | + |
1062 | + def get_leak(self): |
1063 | + return Leak(db.tulip[self.id].leak_id) |
1064 | + def set_leak(self): |
1065 | + print "Error: leak is read only" |
1066 | + pass |
1067 | + leak = property(get_leak, set_leak) |
1068 | + |
1069 | + |
1070 | + |
1071 | +# FIXME move to better location |
1072 | +class NOT_IMPLEMENTED(object): |
1073 | + def __init__(self, a, error_message='This function is not implemented: visit http://blueprints.launchpad.net/globaleaks/+spec/%s'): |
1074 | + self.e = error_message % a |
1075 | + def __call__(self, value): |
1076 | + if value == "off" or not value: |
1077 | + return (value, None) |
1078 | + return (value, self.e) |
1079 | + def formatter(self, value): |
1080 | + return format(value) |
1081 | + |
1082 | |
1083 | === added file 'applications/globaleaks/modules/logic/db.py' |
1084 | --- applications/globaleaks/modules/logic/db.py 1970-01-01 00:00:00 +0000 |
1085 | +++ applications/globaleaks/modules/logic/db.py 2011-09-02 13:53:25 +0000 |
1086 | @@ -0,0 +1,67 @@ |
1087 | +from gluon import DAL, Field |
1088 | + |
1089 | +class DB(DAL): |
1090 | + def __init__(self): |
1091 | + DAL.__init__(self, 'sqlite://storage.db') |
1092 | + self.create_db() |
1093 | + |
1094 | + def create_db(self): |
1095 | + self.define_table('target', |
1096 | + Field('name'), |
1097 | + Field('category'), |
1098 | + Field('desc'), |
1099 | + Field('url'), |
1100 | + Field('type'), |
1101 | + Field('info'), |
1102 | + Field('status'), |
1103 | + Field('last_sent_tulip'), |
1104 | + Field('last_access'), |
1105 | + Field('last_download'), |
1106 | + Field('tulip_counter'), |
1107 | + Field('dowload_counter'), |
1108 | + format='%(name)s' |
1109 | + ) |
1110 | + |
1111 | + self.define_table('leak', |
1112 | + Field('title'), |
1113 | + Field('desc'), |
1114 | + Field('submission_timestamp'), |
1115 | + Field('leaker_id', self.target), |
1116 | + Field('spooled', 'boolean', False), |
1117 | + format='%(name)s' |
1118 | + ) |
1119 | + |
1120 | + self.define_table('comment', |
1121 | + Field('leak_id', self.leak), |
1122 | + Field('commenter_id', self.target), |
1123 | + Field('comment'), |
1124 | + format='%(name)s' |
1125 | + ) |
1126 | + |
1127 | + self.define_table('material', |
1128 | + Field('url', unique=True), |
1129 | + Field('leak_id', self.leak), |
1130 | + Field('type'), |
1131 | + format='%(name)s' |
1132 | + ) |
1133 | + |
1134 | + self.define_table('tulip', |
1135 | + Field('url', unique=True), |
1136 | + Field('leak_id', self.leak), |
1137 | + Field('target_id'), |
1138 | + Field('allowed_accesses'), |
1139 | + Field('accesses_counter'), |
1140 | + Field('allowed_downloads'), |
1141 | + Field('downloads_counter'), |
1142 | + Field('expiry_time'), |
1143 | + format='%(name)s' |
1144 | + ) |
1145 | + |
1146 | + self.define_table('mail', |
1147 | + Field('target'), |
1148 | + Field('address'), |
1149 | + Field('tulip', unique=True), |
1150 | + format='%(name)s' |
1151 | + ) |
1152 | + |
1153 | +db = DB() |
1154 | |
1155 | === added file 'applications/globaleaks/modules/logic/globaleaks.py' |
1156 | --- applications/globaleaks/modules/logic/globaleaks.py 1970-01-01 00:00:00 +0000 |
1157 | +++ applications/globaleaks/modules/logic/globaleaks.py 2011-09-02 13:53:25 +0000 |
1158 | @@ -0,0 +1,77 @@ |
1159 | +import randomizer |
1160 | +import time |
1161 | + |
1162 | +class Globaleaks(object): |
1163 | + |
1164 | + def __init__(self, db): |
1165 | + self._db = db |
1166 | + |
1167 | + def create_target(self, name, category, desc, url, type, info): |
1168 | + target_id = self._db.target.insert(name=name, |
1169 | + category=category, |
1170 | + desc = desc, url=url, type=type, info=info, |
1171 | + status="subscribed" #, last_send_tulip=None, |
1172 | + #last_access=None, last_download=None, |
1173 | + #tulip_counter=None, download_counter=None |
1174 | + ) |
1175 | + self._db.commit() |
1176 | + return target_id |
1177 | + |
1178 | + def delete_target (self, id): |
1179 | + self._db(self._db.target.id==id).delete() |
1180 | + pass |
1181 | + |
1182 | + def get_targets(self, target_set): |
1183 | + if target_set == "ANY": |
1184 | + return self._db(self._db.target).select() |
1185 | + return self._db(self._db.target.category==target_set).select() |
1186 | + |
1187 | + def get_target(self, target_id): |
1188 | + return self._db(self._db.target.id==target_id).select().first() |
1189 | + |
1190 | + def create_leak(self, title, desc, leaker, material, target_set, tags="", number=None): |
1191 | + #FIXME insert new tags into DB first |
1192 | + |
1193 | + #Create leak and insert into DB |
1194 | + leak_id = self._db.leak.insert(title = title, desc = desc, |
1195 | + submission_timestamp = time.time(), |
1196 | + leaker_id = 0, spooled=False) |
1197 | + |
1198 | + targets = self.get_targets(target_set) |
1199 | + |
1200 | + for t in targets: |
1201 | + #Create a tulip for each target and insert into DB |
1202 | + #for target_url, allowed_downloads in targets.iteritems(): |
1203 | + self._db.tulip.insert(url = randomizer.generate_tulip_url(), |
1204 | + leak_id = leak_id, |
1205 | + target_id = t.id, #FIXME get target_id_properly |
1206 | + allowed_accesses = 0, # inf |
1207 | + accesses_counter = 0, |
1208 | + allowed_downloads = 5, |
1209 | + downloads_counter = 0, |
1210 | + expiry_time = 0) |
1211 | + |
1212 | + self._db.tulip.insert(url = number, |
1213 | + leak_id = leak_id, |
1214 | + target_id = 0, #FIXME get target_id_properly |
1215 | + allowed_accesses = 0, # inf |
1216 | + accesses_counter = 0, |
1217 | + allowed_downloads = 5, |
1218 | + downloads_counter = 0, |
1219 | + expiry_time = 0) |
1220 | + |
1221 | + self._db.commit() |
1222 | + return leak_id |
1223 | + |
1224 | + def get_leaks(self): |
1225 | + pass |
1226 | + |
1227 | + def get_leak(self, leak_id): |
1228 | + pass |
1229 | + |
1230 | + def get_tulips(self, leak_id): |
1231 | + pass |
1232 | + |
1233 | + def get_tulip(self, tulip_id): |
1234 | + pass |
1235 | + |
1236 | |
1237 | === modified file 'applications/globaleaks/modules/randomizer.py' |
1238 | --- applications/globaleaks/modules/randomizer.py 2011-08-28 13:59:09 +0000 |
1239 | +++ applications/globaleaks/modules/randomizer.py 2011-09-02 13:53:25 +0000 |
1240 | @@ -1,9 +1,16 @@ |
1241 | import random |
1242 | import hashlib, os |
1243 | |
1244 | +def generate_tulip_receipt(): |
1245 | + #FIXME is this a good idea? |
1246 | + # should i be converting the random number string to bytes? |
1247 | + number = "" |
1248 | + for i in range(0,10): |
1249 | + number += str(ord(os.urandom(1)) % 10) |
1250 | + return (number, hashlib.sha256(number).hexdigest()) |
1251 | + |
1252 | def generate_leaker_id(): |
1253 | return hashlib.sha256(os.urandom(100)).hexdigest() |
1254 | |
1255 | def generate_tulip_url(): |
1256 | return hashlib.sha256(os.urandom(100)).hexdigest() |
1257 | - |
1258 | |
1259 | === modified file 'applications/globaleaks/static/css/base.css' |
1260 | --- applications/globaleaks/static/css/base.css 2011-08-28 20:00:22 +0000 |
1261 | +++ applications/globaleaks/static/css/base.css 2011-09-02 13:53:25 +0000 |
1262 | @@ -1,556 +1,472 @@ |
1263 | -@charset "UTF-8"; |
1264 | - |
1265 | -/* This file is contains the following sections: |
1266 | - |
1267 | -Update: Revision: 20101102 by Martin Mulone |
1268 | - |
1269 | -- The new revision contains: |
1270 | -- Html5, good practice and normalization support. |
1271 | -- Diferent hacks. |
1272 | -- The normalization and some tags come from |
1273 | - diferent sites so i keep the credits and comments. |
1274 | - but the base of support html5 come from: |
1275 | - http://html5boilerplate.com/ |
1276 | - |
1277 | -- ez.css (http://www.ez-css.org/layouts) |
1278 | -- reset common tags |
1279 | -- choose default fonts |
1280 | -- choose link style |
1281 | -- add bottom line to table rows |
1282 | -- labels bold and occasionally centered |
1283 | -- make all input fields the same size |
1284 | -- add proper separation between h1-h6 and text |
1285 | -- always indent the first line and add space below paragraphs |
1286 | -- bullets and numbers style and indent |
1287 | -- form and table padding |
1288 | -- code blocks |
1289 | -- left and right padding to quoted text |
1290 | -- page layout alignment, width and padding (change this for spaces) |
1291 | -- column widths (change this to use left_sidebar and right_sidebar) |
1292 | -- backrgound images and colors (change this for colors) |
1293 | -- web2py specific (.flash, .error) |
1294 | - |
1295 | -Notice: |
1296 | -- even if you use a different layout/css you may need classes .flash and .error |
1297 | -- this is all color neutral except for #349C01 (header, links, lines) |
1298 | -- there are two backrgound images: images/background.png and images/header.png |
1299 | - |
1300 | -License: This file is released under BSD and MIT |
1301 | - |
1302 | -*/ |
1303 | - |
1304 | -/* |
1305 | - credit is left where credit is due. |
1306 | - additionally, much inspiration was taken from these projects: |
1307 | - yui.yahooapis.com/2.8.1/build/base/base.css |
1308 | - camendesign.com/design/ |
1309 | - praegnanz.de/weblog/htmlcssjs-kickstart |
1310 | -*/ |
1311 | - |
1312 | -/* |
1313 | - html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline) |
1314 | - v1.4 2009-07-27 | Authors: Eric Meyer & Richard Clark |
1315 | - html5doctor.com/html-5-reset-stylesheet/ |
1316 | -*/ |
1317 | - |
1318 | -html, body, div, span, object, iframe, |
1319 | +/* http://meyerweb.com/eric/tools/css/reset/ |
1320 | + v2.0 | 20110126 |
1321 | + License: none (public domain) |
1322 | +*/ |
1323 | + |
1324 | +html, body, div, span, applet, object, iframe, |
1325 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, |
1326 | -abbr, address, cite, code, |
1327 | -del, dfn, em, img, ins, kbd, q, samp, |
1328 | -small, strong, sub, sup, var, |
1329 | -b, i, |
1330 | +a, abbr, acronym, address, big, cite, code, |
1331 | +del, dfn, em, img, ins, kbd, q, s, samp, |
1332 | +small, strike, strong, sub, sup, tt, var, |
1333 | +b, u, i, center, |
1334 | dl, dt, dd, ol, ul, li, |
1335 | fieldset, form, label, legend, |
1336 | table, caption, tbody, tfoot, thead, tr, th, td, |
1337 | -article, aside, canvas, details, figcaption, figure, |
1338 | -footer, header, hgroup, menu, nav, section, summary, |
1339 | +article, aside, canvas, details, embed, |
1340 | +figure, figcaption, footer, header, hgroup, |
1341 | +menu, nav, output, ruby, section, summary, |
1342 | time, mark, audio, video { |
1343 | - margin:0; |
1344 | - padding:0; |
1345 | - border:0; |
1346 | - outline:0; |
1347 | - font-size:100%; |
1348 | - vertical-align:baseline; |
1349 | - background:transparent; |
1350 | -} |
1351 | - |
1352 | -article, aside, details, figcaption, figure, |
1353 | -footer, header, hgroup, menu, nav, section { |
1354 | - display:block; |
1355 | -} |
1356 | - |
1357 | -nav ul { list-style:none; } |
1358 | - |
1359 | -blockquote, q { quotes:none; } |
1360 | - |
1361 | + margin: 0; |
1362 | + padding: 0; |
1363 | + border: 0; |
1364 | + font-size: 100%; |
1365 | + font: inherit; |
1366 | + vertical-align: baseline; |
1367 | +} |
1368 | +/* HTML5 display-role reset for older browsers */ |
1369 | +article, aside, details, figcaption, figure, |
1370 | +footer, header, hgroup, menu, nav, section { |
1371 | + display: block; |
1372 | +} |
1373 | +body { |
1374 | + line-height: 1; |
1375 | +} |
1376 | +ol, ul { |
1377 | + list-style: none; |
1378 | +} |
1379 | +blockquote, q { |
1380 | + quotes: none; |
1381 | +} |
1382 | blockquote:before, blockquote:after, |
1383 | -q:before, q:after { content:''; content:none; } |
1384 | - |
1385 | -a { margin:0; padding:0; font-size:100%; vertical-align:baseline; background:transparent; } |
1386 | -a:hover { text-decoration: underline } |
1387 | - |
1388 | -ins { background-color:#ff9; color:#000; text-decoration:none; } |
1389 | - |
1390 | -mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; } |
1391 | - |
1392 | -del { text-decoration: line-through; } |
1393 | - |
1394 | -abbr[title], dfn[title] { border-bottom:1px dotted #000; cursor:help; } |
1395 | - |
1396 | -/* tables still need cellspacing="0" in the markup */ |
1397 | -table { border-collapse:collapse; border-spacing:0; } |
1398 | - |
1399 | -hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; } |
1400 | - |
1401 | -input, select { vertical-align:middle; } |
1402 | -/* END RESET CSS */ |
1403 | - |
1404 | - |
1405 | -/* |
1406 | -fonts.css from the YUI Library: developer.yahoo.com/yui/ |
1407 | - Please refer to developer.yahoo.com/yui/fonts/ for font sizing percentages |
1408 | - |
1409 | -There are three custom edits: |
1410 | - * remove arial, helvetica from explicit font stack |
1411 | - * make the line-height relative and unit-less |
1412 | - * remove the pre, code styles |
1413 | -*/ |
1414 | -body { font:13px/1.231 sans-serif; *font-size:small; } /* hack retained to preserve specificity */ |
1415 | - |
1416 | -/*table { font-size:inherit; font:100%; }*/ |
1417 | - |
1418 | -select, input, textarea, button { font:99% sans-serif; } |
1419 | - |
1420 | - |
1421 | -/* normalize monospace sizing |
1422 | - * en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome |
1423 | - */ |
1424 | -pre, code, kbd, samp { font-family: monospace, sans-serif; } |
1425 | - |
1426 | -/* |
1427 | - * minimal base styles |
1428 | - */ |
1429 | - |
1430 | -/* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */ |
1431 | -body, select, input, textarea { color:#444; } |
1432 | - |
1433 | -/* Headers (h1,h2,etc) have no default font-size or margin, |
1434 | - you'll want to define those yourself. */ |
1435 | - |
1436 | -/* www.aestheticallyloyal.com/public/optimize-legibility/ */ |
1437 | -h1,h2,h3,h4,h5,h6 { font-weight: bold; } |
1438 | - |
1439 | -/* always force a scrollbar in non-IE */ |
1440 | -html { overflow-y: scroll; } |
1441 | - |
1442 | -/* Accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */ |
1443 | -a:hover, a:active { outline: none; } |
1444 | - |
1445 | -a, a:active, a:visited { color:#607890; } |
1446 | -a:hover { color:#036; } |
1447 | - |
1448 | -ul, ol { margin-left: 1.8em; } |
1449 | -ol { list-style-type: decimal; } |
1450 | - |
1451 | -/* Remove margins for navigation lists */ |
1452 | -nav ul, nav li { margin: 0; } |
1453 | - |
1454 | -small { font-size:85%; } |
1455 | -strong, th { font-weight: bold; } |
1456 | - |
1457 | -td, td img { vertical-align:top; } |
1458 | - |
1459 | -sub { vertical-align: sub; font-size: smaller; } |
1460 | -sup { vertical-align: super; font-size: smaller; } |
1461 | - |
1462 | -pre { |
1463 | - padding: 15px; |
1464 | - |
1465 | - /* www.pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap/ */ |
1466 | - white-space: pre; /* CSS2 */ |
1467 | - white-space: pre-wrap; /* CSS 2.1 */ |
1468 | - white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */ |
1469 | - word-wrap: break-word; /* IE */ |
1470 | -} |
1471 | - |
1472 | -textarea { overflow: auto; } /* thnx ivannikolic! www.sitepoint.com/blogs/2010/08/20/ie-remove-textarea-scrollbars/ */ |
1473 | - |
1474 | -.ie6 legend, .ie7 legend { margin-left: -7px; } /* thnx ivannikolic! */ |
1475 | - |
1476 | -/* align checkboxes, radios, text inputs with their label |
1477 | - by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css */ |
1478 | -input[type="radio"] { vertical-align: text-bottom; } |
1479 | -input[type="checkbox"] { vertical-align: bottom; } |
1480 | -.ie7 input[type="checkbox"] { vertical-align: baseline; } |
1481 | -.ie6 input { vertical-align: text-bottom; } |
1482 | - |
1483 | -/* hand cursor on clickable input elements */ |
1484 | -label, input[type=button], input[type=submit], button { cursor: pointer; } |
1485 | - |
1486 | -/* webkit browsers add a 2px margin outside the chrome of form elements */ |
1487 | -button, input, select, textarea { margin: 0; } |
1488 | - |
1489 | -/* colors for form validity */ |
1490 | -input:valid, textarea:valid { } |
1491 | -input:invalid, textarea:invalid { |
1492 | - border-radius: 1px; |
1493 | - -moz-box-shadow: 0px 0px 5px red; |
1494 | - -webkit-box-shadow: 0px 0px 5px red; |
1495 | - box-shadow: 0px 0px 5px red; |
1496 | -} |
1497 | -.no-boxshadow input:invalid, |
1498 | -.no-boxshadow textarea:invalid { background-color: #f0dddd; } |
1499 | - |
1500 | - |
1501 | -/* These selection declarations have to be separate. |
1502 | - No text-shadow: twitter.com/miketaylr/status/12228805301 |
1503 | - Also: hot pink. */ |
1504 | -::-moz-selection{ background: #555; color:#fff; text-shadow: none; } |
1505 | -::selection { background:#555; color:#fff; text-shadow: none; } |
1506 | - |
1507 | -/* j.mp/webkit-tap-highlight-color */ |
1508 | -a:link { -webkit-tap-highlight-color: #555; } |
1509 | - |
1510 | - |
1511 | -/* make buttons play nice in IE: |
1512 | - www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */ |
1513 | -button { width: auto; overflow: visible; } |
1514 | - |
1515 | -/* bicubic resizing for non-native sized IMG: |
1516 | - code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ */ |
1517 | -.ie7 img { -ms-interpolation-mode: bicubic; } |
1518 | - |
1519 | -/* |
1520 | - * Non-semantic helper classes |
1521 | - */ |
1522 | - |
1523 | -/* for image replacement */ |
1524 | -.ir { display:block; text-indent:-999em; overflow:hidden; background-repeat: no-repeat; } |
1525 | - |
1526 | -/* Hide for both screenreaders and browsers |
1527 | - css-discuss.incutio.com/wiki/Screenreader_Visibility */ |
1528 | -.hidden { display:none; } |
1529 | - |
1530 | -/* Hide only visually, but have it available for screenreaders |
1531 | - www.webaim.org/techniques/css/invisiblecontent/ |
1532 | - Solution from: j.mp/visuallyhidden - Thanks Jonathan Neal! */ |
1533 | -.visuallyhidden { position:absolute !important; |
1534 | - clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ |
1535 | - clip: rect(1px, 1px, 1px, 1px); } |
1536 | - |
1537 | -/* Hide visually and from screenreaders, but maintain layout */ |
1538 | -.invisible { visibility: hidden; } |
1539 | - |
1540 | -/* >> The Magnificent CLEARFIX: Updated to prevent margin-collapsing on child elements << j.mp/bestclearfix */ |
1541 | -.clearfix:before, .clearfix:after { |
1542 | - content: "\0020"; display: block; height: 0; visibility: hidden; |
1543 | -} |
1544 | - |
1545 | -.clearfix:after { clear: both; } |
1546 | -/* Fix clearfix: blueprintcss.lighthouseapp.com/projects/15318/tickets/5-extra-margin-padding-bottom-of-page */ |
1547 | -.clearfix { zoom: 1; } |
1548 | - |
1549 | - |
1550 | -/*********** layout info (ez.css) ***********/ |
1551 | -/* 2009 -2010 (c) | ez-css.org |
1552 | - * ez-plug-min.css :: version 1.1 :: 01182010 |
1553 | - */ |
1554 | -.ez-wr:after,.ez-box:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ez-wr,.ez-box,.ez-last{display:inline-block;min-height:0}/* \*/ * html .ez-wr,* html .ez-box,* html .ez-last{height:1%}.ez-wr,.ez-box,.ez-last{display:block}/* */.ez-oh{overflow:hidden}* html .ez-oh{overflow:visible}.ez-oa{overflow:auto}.ez-dt{display:table}.ez-it{display:inline-table}.ez-tc{display:table-cell}.ez-ib{display:inline-block}.ez-fl{float:left}* html .ez-fl{margin-right:-3px}.ez-fr{float:right}* html .ez-fr{margin-left:-3px}.ez-25{width:25%}.ez-33{width:33.33%}.ez-50{width:50%}.ez-66{width:66.66%}.ez-75{width:75%}.ez-negmr{margin-right:-1px}* html .ez-negmr{margin-right:-4px}.ez-negmx{margin-right:-1px}.ez-negml{margin-left:-1px}* html .ez-negml{margin-left:-4px} |
1555 | - |
1556 | - |
1557 | -/*********** add bottom line to table rows ***********/ |
1558 | -th, td { padding: 0.1em 0.5em 0.1em 0.5em;} |
1559 | - |
1560 | -/*********** labels bold and occasionally centered ***********/ |
1561 | -label { |
1562 | - white-space: nowrap; |
1563 | -} |
1564 | -label, b, th { |
1565 | - font-weight: bold; |
1566 | -} |
1567 | -thead th { |
1568 | - text-align: center; |
1569 | - border-bottom: 1px solid #444; |
1570 | -} |
1571 | -/*********** forms and table padding ***********/ |
1572 | -form, table { |
1573 | - padding: 5px 10px 5px 10px; |
1574 | -} |
1575 | - |
1576 | -/*********** code blocks ***********/ |
1577 | -code { |
1578 | - padding: 3px 5px; |
1579 | - font-family: Andale Mono, monospace; |
1580 | - font-size: 0.9em; |
1581 | -} |
1582 | - |
1583 | -/*********** left and right padding to quoted text ***********/ |
1584 | -blockquote { |
1585 | - background: #cccccc; |
1586 | - border-left: 30px transparent; |
1587 | - border-right: 30px transparent; |
1588 | - /*padding: 5px;*/ |
1589 | -} |
1590 | - |
1591 | -input[type=text], input[type=password], textarea, select { |
1592 | - margin: 2px 15px 2px 5px; |
1593 | - width: 280px; |
1594 | - background: #fff; |
1595 | - color: #555; |
1596 | - border: 1px solid #dedede; |
1597 | - -moz-border-radius: 2px; |
1598 | - -webkit-border-radius: 2px; |
1599 | - border-radius: 2px; |
1600 | - font-size: 12px; |
1601 | -} |
1602 | - |
1603 | -input[type=text], input[type=password] { |
1604 | - height: 16px; |
1605 | -} |
1606 | - |
1607 | -select[multiple=multiple] { |
1608 | - height: 90px; |
1609 | -} |
1610 | - |
1611 | -input[type=submit], input[type=button], button { |
1612 | - margin: 0px; |
1613 | - /*width: 85px;*/ |
1614 | - height: 22px; |
1615 | - background: #eaeaea; |
1616 | - color: #555; |
1617 | - border: 1px solid #dedede; |
1618 | - -moz-border-radius: 2px; |
1619 | - -webkit-border-radius: 2px; |
1620 | - border-radius: 2px; |
1621 | -} |
1622 | - |
1623 | -fieldset { border: 1px solid #dedede; padding: 6px; } |
1624 | -legend { font-weight: bold; } |
1625 | - |
1626 | -input:focus, textarea:focus { background: #fafafa; } |
1627 | - |
1628 | -p {text-indent:30px;} |
1629 | - |
1630 | -p, blockquote { |
1631 | - margin-bottom: 10px; |
1632 | -} |
1633 | - |
1634 | -h1,h2,h3,h4,h5,h6 { line-height: 170%; } |
1635 | -h1 {font-size: 2.0em;} |
1636 | -h2 {font-size: 1.8em;} |
1637 | -h3 {font-size: 1.4em;} |
1638 | -h4 {font-size: 1.2em;} |
1639 | -h5 {font-size: 1.0em;} |
1640 | -h6 {font-size: 0.8em;} |
1641 | - |
1642 | -/*********** page layout alignment, width and padding ***********/ |
1643 | -/*body {background-color: #000;}*/ |
1644 | -#container, #header, #page, #content, #statusbar, |
1645 | -#footer, #wrapper { display:block; line-height: 170%; } |
1646 | -#wrapper {width: 900px;} |
1647 | +q:before, q:after { |
1648 | + content: ''; |
1649 | + content: none; |
1650 | +} |
1651 | +table { |
1652 | + border-collapse: collapse; |
1653 | + border-spacing: 0; |
1654 | +} |
1655 | + |
1656 | + |
1657 | + |
1658 | + |
1659 | + |
1660 | +/* Template */ |
1661 | +body { |
1662 | + background: #f3f3f3 url('/globaleaks/static/images/background.png'); |
1663 | + font-family: Arial, sans-serif; |
1664 | + color: #444; |
1665 | +} |
1666 | + |
1667 | +.clear { |
1668 | + clear: both; |
1669 | +} |
1670 | + |
1671 | +strong { |
1672 | + font-weight: bold; |
1673 | +} |
1674 | + |
1675 | +a.button { |
1676 | + color: #fff; |
1677 | + border: 0; |
1678 | + border-radius: 5px; |
1679 | + -moz-border-radius: 5px; |
1680 | + -webkit-border-radius: 5px; |
1681 | + font-weight: bold; |
1682 | + cursor: pointer; |
1683 | + padding: 10px; |
1684 | + display: block; |
1685 | + text-decoration: none; |
1686 | + text-align: center; |
1687 | + margin: 20px 0 20px 10px; |
1688 | + float: right; |
1689 | + |
1690 | +} |
1691 | + |
1692 | +a.button.whistleblower { |
1693 | + background: #0a70b4; |
1694 | + width: 200px; |
1695 | +} |
1696 | + |
1697 | +a.button.addtarget { |
1698 | + background: #444; |
1699 | + width: 100px; |
1700 | +} |
1701 | + |
1702 | +a.button.targetlist { |
1703 | + float: left; |
1704 | + color: black; |
1705 | + background: transparent; |
1706 | + width: 120px; |
1707 | +} |
1708 | + |
1709 | +a:hover.button.targetlist { |
1710 | + color: red; |
1711 | +} |
1712 | + |
1713 | +input[type=submit]{ |
1714 | + background: #444; |
1715 | + color: #fff; |
1716 | + border: 0; |
1717 | + border-radius: 5px; |
1718 | + -moz-border-radius: 5px; |
1719 | + -webkit-border-radius: 5px; |
1720 | + font-weight: bold; |
1721 | + cursor: pointer; |
1722 | + padding: 5px 10px; |
1723 | + display: block; |
1724 | + text-decoration: none; |
1725 | + text-align: center; |
1726 | + margin: 10px 0; |
1727 | + cursor: pointer; |
1728 | + font-size: 14px; |
1729 | +} |
1730 | + |
1731 | + |
1732 | +p.tulip{ |
1733 | + background: #444; |
1734 | + color: #fff; |
1735 | + border: 0; |
1736 | + border-radius: 5px; |
1737 | + -moz-border-radius: 5px; |
1738 | + -webkit-border-radius: 5px; |
1739 | + font-weight: bold; |
1740 | + padding: 20px; |
1741 | + display: block; |
1742 | + text-decoration: none; |
1743 | + text-align: center; |
1744 | + margin: 10px auto 20px auto; |
1745 | + font-size: 28px; |
1746 | + width: 300px; |
1747 | +} |
1748 | + |
1749 | + |
1750 | #container { |
1751 | - margin: 0 auto; |
1752 | - padding: 0; |
1753 | -} |
1754 | -#wrapper {margin: 0 auto;} |
1755 | -#wrapper {background-color: #fff; padding: 5px;} |
1756 | -#statusbar { margin: 5px 0px 20px 0px;} |
1757 | -#footer { |
1758 | - margin-top: 30px; |
1759 | - padding: 5px; |
1760 | -} |
1761 | -#statusbar, #footer { |
1762 | - background: #eaeaea; |
1763 | - border-top: 1px #aaa solid; |
1764 | -} |
1765 | -#logo { |
1766 | - width: 68px; |
1767 | - height: 62px; |
1768 | - background: url(../images/logo.png); |
1769 | -} |
1770 | -#appname { |
1771 | - color: #cccccc; |
1772 | -} |
1773 | - |
1774 | -#right_sidebar { width: 160px; float:right; display: none; } |
1775 | -#left_sidebar { width: 160px; float:left; display: none; } |
1776 | -#content { float: left; /*width: 740px;*//*width: 63%;*/ /*width: 640px; float:left;*/ } /* uncomment this if you are going to use sidebars */ |
1777 | - |
1778 | -.auth_navbar { |
1779 | - top: 0px; |
1780 | - float: right; |
1781 | - padding: 3px 10px 3px 10px; |
1782 | -} |
1783 | - |
1784 | -/*********** web2py specific ***********/ |
1785 | -div.flash { |
1786 | - font-weight: bold; |
1787 | - display: none; |
1788 | - position: fixed; |
1789 | - padding: 10px; |
1790 | - top: 40px; |
1791 | - right: 10px; |
1792 | - min-width: 280px; |
1793 | - opacity: 0.85; |
1794 | - margin: 0px 0px 10px 10px; |
1795 | - color: #fff; |
1796 | - vertical-align: middle; |
1797 | - cursor: pointer; |
1798 | - background: #000; |
1799 | - border: 2px solid #fff; |
1800 | - -moz-border-radius: 5px; |
1801 | - -webkit-border-radius: 5px; |
1802 | - z-index: 2; |
1803 | -} |
1804 | - |
1805 | -div.error { |
1806 | - background-color: red; |
1807 | - color: white; |
1808 | - padding: 3px; |
1809 | -} |
1810 | - |
1811 | -/*************************** |
1812 | - * CSS 3 Buttons |
1813 | - * http://github.com/michenriksen/css3buttons |
1814 | - * created by Michael Henriksen |
1815 | - * License: Unlicense |
1816 | - * |
1817 | - * *******************/ |
1818 | - |
1819 | -a.button { display: inline-block; padding: 3px 5px 3px 5px; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 12px; color: #3C3C3D; text-shadow: 1px 1px 0 #FFFFFF; background: #ECECEC url('../images/css3buttons_backgrounds.png') 0 0 no-repeat; white-space: nowrap; overflow: visible; cursor: pointer; text-decoration: none; border: 1px solid #CACACA; -webkit-border-radius: 2px; -moz-border-radius: 2px; -webkit-background-clip: padding-box; border-radius: 2px; outline: none; position: relative; zoom: 1; *display: inline; } |
1820 | -a.button.primary { font-weight: bold } |
1821 | -a.button:hover { color: #FFFFFF; border-color: #388AD4; text-decoration: none; text-shadow: -1px -1px 0 rgba(0,0,0,0.3); background-position: 0 -40px; background-color: #2D7DC5; } |
1822 | -a.button:active, |
1823 | -a.button.active { background-position: 0 -81px; border-color: #347BBA; background-color: #0F5EA2; color: #FFFFFF; text-shadow: none; } |
1824 | -a.button:active { top: 1px } |
1825 | -a.button.negative:hover { color: #FFFFFF; background-position: 0 -121px; background-color: #D84743; border-color: #911D1B; } |
1826 | -a.button.negative:active, |
1827 | -a.button.negative.active { background-position: 0 -161px; background-color: #A5211E; border-color: #911D1B; } |
1828 | -a.button.pill { -webkit-border-radius: 19px; -moz-border-radius: 19px; border-radius: 19px; padding: 2px 10px 2px 10px; } |
1829 | -a.button.left { -webkit-border-bottom-right-radius: 0px; -webkit-border-top-right-radius: 0px; -moz-border-radius-bottomright: 0px; -moz-border-radius-topright: 0px; border-bottom-right-radius: 0px; border-top-right-radius: 0px; margin-right: 0px; } |
1830 | -a.button.middle { margin-right: 0px; margin-left: 0px; -webkit-border-radius: 0px; -moz-border-radius: 0px; border-radius: 0px; border-right: none; border-left: none; } |
1831 | -a.button.right { -webkit-border-bottom-left-radius: 0px; -webkit-border-top-left-radius: 0px; -moz-border-radius-bottomleft: 0px; -moz-border-radius-topleft: 0px; border-top-left-radius: 0px; border-bottom-left-radius: 0px; margin-left: 0px; } |
1832 | -a.button.left:active, |
1833 | -a.button.middle:active, |
1834 | -a.button.right:active { top: 0px } |
1835 | -a.button.big { font-size: 16px; padding-left: 17px; padding-right: 17px; } |
1836 | -a.button span.icon { display: inline-block; width: 14px; height: 12px; margin: auto 7px auto auto; position: relative; top: 2px; background-image: url('../images/css3buttons_icons.png'); background-repeat: no-repeat; } |
1837 | -a.big.button span.icon { top: 0px } |
1838 | -a.button span.icon.book { background-position: 0 0 } |
1839 | -a.button:hover span.icon.book { background-position: 0 -15px } |
1840 | -a.button span.icon.calendar { background-position: 0 -30px } |
1841 | -a.button:hover span.icon.calendar { background-position: 0 -45px } |
1842 | -a.button span.icon.chat { background-position: 0 -60px } |
1843 | -a.button:hover span.icon.chat { background-position: 0 -75px } |
1844 | -a.button span.icon.check { background-position: 0 -90px } |
1845 | -a.button:hover span.icon.check { background-position: 0 -103px } |
1846 | -a.button span.icon.clock { background-position: 0 -116px } |
1847 | -a.button:hover span.icon.clock { background-position: 0 -131px } |
1848 | -a.button span.icon.cog { background-position: 0 -146px } |
1849 | -a.button:hover span.icon.cog { background-position: 0 -161px } |
1850 | -a.button span.icon.comment { background-position: 0 -176px } |
1851 | -a.button:hover span.icon.comment { background-position: 0 -190px } |
1852 | -a.button span.icon.cross { background-position: 0 -204px } |
1853 | -a.button:hover span.icon.cross { background-position: 0 -219px } |
1854 | -a.button span.icon.downarrow { background-position: 0 -234px } |
1855 | -a.button:hover span.icon.downarrow { background-position: 0 -249px } |
1856 | -a.button span.icon.fork { background-position: 0 -264px } |
1857 | -a.button:hover span.icon.fork { background-position: 0 -279px } |
1858 | -a.button span.icon.heart { background-position: 0 -294px } |
1859 | -a.button:hover span.icon.heart { background-position: 0 -308px } |
1860 | -a.button span.icon.home { background-position: 0 -322px } |
1861 | -a.button:hover span.icon.home { background-position: 0 -337px } |
1862 | -a.button span.icon.key { background-position: 0 -352px } |
1863 | -a.button:hover span.icon.key { background-position: 0 -367px } |
1864 | -a.button span.icon.leftarrow { background-position: 0 -382px } |
1865 | -a.button:hover span.icon.leftarrow { background-position: 0 -397px } |
1866 | -a.button span.icon.lock { background-position: 0 -412px } |
1867 | -a.button:hover span.icon.lock { background-position: 0 -427px } |
1868 | -a.button span.icon.loop { background-position: 0 -442px } |
1869 | -a.button:hover span.icon.loop { background-position: 0 -457px } |
1870 | -a.button span.icon.magnifier { background-position: 0 -472px } |
1871 | -a.button:hover span.icon.magnifier { background-position: 0 -487px } |
1872 | -a.button span.icon.mail { background-position: 0 -502px } |
1873 | -a.button:hover span.icon.mail { background-position: 0 -514px } |
1874 | -a.button span.icon.move { background-position: 0 -526px } |
1875 | -a.button:hover span.icon.move { background-position: 0 -541px } |
1876 | -a.button span.icon.pen { background-position: 0 -556px } |
1877 | -a.button:hover span.icon.pen { background-position: 0 -571px } |
1878 | -a.button span.icon.pin { background-position: 0 -586px } |
1879 | -a.button:hover span.icon.pin { background-position: 0 -601px } |
1880 | -a.button span.icon.plus { background-position: 0 -616px } |
1881 | -a.button:hover span.icon.plus { background-position: 0 -631px } |
1882 | -a.button span.icon.reload { background-position: 0 -646px } |
1883 | -a.button:hover span.icon.reload { background-position: 0 -660px } |
1884 | -a.button span.icon.rightarrow { background-position: 0 -674px } |
1885 | -a.button:hover span.icon.rightarrow { background-position: 0 -689px } |
1886 | -a.button span.icon.rss { background-position: 0 -704px } |
1887 | -a.button:hover span.icon.rss { background-position: 0 -719px } |
1888 | -a.button span.icon.tag { background-position: 0 -734px } |
1889 | -a.button:hover span.icon.tag { background-position: 0 -749px } |
1890 | -a.button span.icon.trash { background-position: 0 -764px } |
1891 | -a.button:hover span.icon.trash { background-position: 0 -779px } |
1892 | -a.button span.icon.unlock { background-position: 0 -794px } |
1893 | -a.button:hover span.icon.unlock { background-position: 0 -809px } |
1894 | -a.button span.icon.uparrow { background-position: 0 -824px } |
1895 | -a.button:hover span.icon.uparrow { background-position: 0 -839px } |
1896 | -a.button span.icon.user { background-position: 0 -854px } |
1897 | -a.button:hover span.icon.user { background-position: 0 -869px } |
1898 | - |
1899 | - |
1900 | - |
1901 | - |
1902 | - |
1903 | - |
1904 | -/***************************************************** |
1905 | - * HERE YOU CAN START TO WRITE YOUR OWN DIVS |
1906 | - */ |
1907 | - |
1908 | - |
1909 | - |
1910 | - |
1911 | - |
1912 | - |
1913 | - |
1914 | -/* |
1915 | - * Media queries for responsive design |
1916 | - */ |
1917 | - |
1918 | -@media all and (orientation:portrait) { |
1919 | - /* Style adjustments for portrait mode goes here */ |
1920 | - |
1921 | -} |
1922 | - |
1923 | -@media all and (orientation:landscape) { |
1924 | - /* Style adjustments for landscape mode goes here */ |
1925 | - |
1926 | -} |
1927 | - |
1928 | -/* Grade-A Mobile Browsers (Opera Mobile, iPhone Safari, Android Chrome) |
1929 | - Consider this: www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/ */ |
1930 | -@media screen and (max-device-width: 480px) { |
1931 | - |
1932 | - |
1933 | - /* Uncomment if you don't want iOS and WinMobile to mobile-optimize the text for you |
1934 | - j.mp/textsizeadjust |
1935 | - html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */ |
1936 | -} |
1937 | - |
1938 | - |
1939 | -/* |
1940 | - * print styles |
1941 | - * inlined to avoid required HTTP connection www.phpied.com/delay-loading-your-print-css/ |
1942 | - */ |
1943 | -@media print { |
1944 | - * { background: transparent !important; color: #444 !important; text-shadow: none !important; } |
1945 | - a, a:visited { color: #444 !important; text-decoration: underline; } |
1946 | - a:after { content: " (" attr(href) ")"; } |
1947 | - abbr:after { content: " (" attr(title) ")"; } |
1948 | - .ir a:after { content: ""; } /* Don't show links for images */ |
1949 | - pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } |
1950 | - thead { display: table-header-group; } /* css-discuss.incutio.com/wiki/Printing_Tables */ |
1951 | - tr, img { page-break-inside: avoid; } |
1952 | - @page { margin: 0.5cm; } |
1953 | - p, h2, h3 { orphans: 3; widows: 3; } |
1954 | - h2, h3{ page-break-after: avoid; } |
1955 | + background: #fff; |
1956 | + width: 880px; |
1957 | + padding: 40px; |
1958 | + margin: 20px auto 5px auto; |
1959 | + -moz-box-shadow: 0px 0px 3px #dedede; |
1960 | + -webkit-box-shadow: 5px 5px 0px #dedede; |
1961 | + box-shadow: 0px 0px 10px #d0d0d0; |
1962 | +} |
1963 | + |
1964 | +#container img.ribbon { |
1965 | + float: right; |
1966 | + margin-left: 20px; |
1967 | + margin-top: -40px; |
1968 | + margin-right: -40px; |
1969 | +} |
1970 | + |
1971 | + |
1972 | +#header { |
1973 | + padding-bottom: 40px; |
1974 | +} |
1975 | + |
1976 | +ul#navigation { |
1977 | + float: right; |
1978 | + padding: 20px; |
1979 | + background: #ededed; |
1980 | +} |
1981 | + |
1982 | +ul#navigation li { |
1983 | + float: left; |
1984 | + margin-left: 10px; |
1985 | +} |
1986 | + |
1987 | +ul#navigation li.user { |
1988 | + float: none; |
1989 | + padding-bottom: 5px; |
1990 | + font-size: 14px; |
1991 | +} |
1992 | + |
1993 | +ul#navigation a { |
1994 | + color: #444; |
1995 | + text-decoration: none; |
1996 | + text-shadow: #fff 1px 1px 1px; |
1997 | + font-weight: bold; |
1998 | + font-size: 14px; |
1999 | +} |
2000 | + |
2001 | + |
2002 | +#content h1 { |
2003 | + font-size: 32px; |
2004 | + margin-bottom: 10px; |
2005 | + text-transform: uppercase; |
2006 | + font-weight: bold; |
2007 | +} |
2008 | + |
2009 | +#content h1 span { |
2010 | + font-weight: normal; |
2011 | + text-transform: none; |
2012 | +} |
2013 | + |
2014 | +#content p.intro { |
2015 | + line-height: 20px; |
2016 | + text-align: justify; |
2017 | + margin-bottom: 20px; |
2018 | + background: #ededed; |
2019 | + padding: 20px; |
2020 | +} |
2021 | + |
2022 | +#content .box { |
2023 | + background: #444; |
2024 | + width: 340px; |
2025 | + height: 320px; |
2026 | + margin: 20px 0; |
2027 | + float: left; |
2028 | + padding: 40px; |
2029 | +} |
2030 | + |
2031 | +#content .box.box-hover { |
2032 | + background: #555; |
2033 | + transition: background-color 0.3s linear; |
2034 | + -moz-transition: background-color 0.3s linear; /* FF3.7+ */ |
2035 | + -o-transition: background-color 0.3s linear; /* Opera 10.5 */ |
2036 | + -webkit-transition: background-color 0.3s linear; /* Saf3.2+, Chrome */ |
2037 | +} |
2038 | + |
2039 | +#content .box:nth-child(even) { |
2040 | + margin-left: 40px; |
2041 | +} |
2042 | + |
2043 | +#content .box h2 { |
2044 | + text-transform: uppercase; |
2045 | + color: #fff; |
2046 | + font-weight: bold; |
2047 | + font-size: 24px; |
2048 | +} |
2049 | + |
2050 | +#content .box h2 span { |
2051 | + font-size: 48px; |
2052 | +} |
2053 | + |
2054 | +#content .box a { |
2055 | + display: block; |
2056 | + color: #fff; |
2057 | + text-decoration: none; |
2058 | + text-transform: uppercase; |
2059 | + font-weight: bold; |
2060 | + float: right; |
2061 | + margin-top: 32px; |
2062 | + background: #0a70b4; |
2063 | + padding: 10px; |
2064 | + border-radius:5px; |
2065 | + -webkit-border-radius:5px; |
2066 | + -moz-border-radius:5px; |
2067 | +} |
2068 | + |
2069 | +#content .box span.info { |
2070 | + display: block; |
2071 | + color: #fff; |
2072 | + text-decoration: none; |
2073 | + text-transform: uppercase; |
2074 | + font-weight: bold; |
2075 | + float: right; |
2076 | + margin-top: 42px; |
2077 | + font-style: italic; |
2078 | + padding-top: 0px; |
2079 | +} |
2080 | + |
2081 | +#content .box img { |
2082 | + margin-top: 30px; |
2083 | +} |
2084 | + |
2085 | + |
2086 | +#content form table td { |
2087 | + padding: 5px 5px 10px 5px; |
2088 | + vertical-align: top; |
2089 | +} |
2090 | + |
2091 | +#content form table td { |
2092 | + font-size: 13px; |
2093 | + font-weight: bold; |
2094 | +} |
2095 | + |
2096 | + |
2097 | + |
2098 | +#content form input { |
2099 | + border: 1px solid #ddd; |
2100 | + padding: 5px; |
2101 | + width: 350px; |
2102 | + font-size: 13px; |
2103 | +} |
2104 | + |
2105 | +#content form input[type=submit] { |
2106 | + width: auto; |
2107 | +} |
2108 | + |
2109 | +#content form textarea { |
2110 | + border: 1px solid #ddd; |
2111 | + padding: 5px; |
2112 | + width: 350px; |
2113 | + font-size: 13px; |
2114 | +} |
2115 | + |
2116 | +#content form .error { |
2117 | + padding: 5px; |
2118 | + width: 350px; |
2119 | + font-size: 13px; |
2120 | + color: #fff; |
2121 | + background: #e60000; |
2122 | + margin-top: 5px; |
2123 | + font-weight: bold; |
2124 | +} |
2125 | + |
2126 | +#content table.targetlist { |
2127 | + width: 100%; |
2128 | + font-size: 14px; |
2129 | +} |
2130 | + |
2131 | +#content table.targetlist th { |
2132 | + //background: #005ea3; |
2133 | + background: #444; |
2134 | + color: #fff; |
2135 | + border: 1px solid #fff; |
2136 | + border-bottom: 2px solid #fff; |
2137 | + font-weight: bold; |
2138 | + padding: 5px; |
2139 | + text-align: left; |
2140 | +} |
2141 | + |
2142 | +#content table.targetlist td { |
2143 | + border: 1px solid #fff; |
2144 | + border-bottom: 2px solid #fff; |
2145 | + padding: 5px; |
2146 | + background: #ededed; |
2147 | + text-align: left; |
2148 | +} |
2149 | + |
2150 | +#content table.targetlist tr.odd td { |
2151 | + background: #f5f5f5; |
2152 | +} |
2153 | + |
2154 | +#content table.targetlist td.delete { |
2155 | + text-align: center; |
2156 | +} |
2157 | + |
2158 | +#content table.targetlist td.delete button { |
2159 | + background: #e60000; |
2160 | + color: #fff; |
2161 | + border: 0; |
2162 | + border-radius: 3px; |
2163 | + -moz-border-radius: 3px; |
2164 | + -webkit-border-radius: 3px; |
2165 | + font-weight: bold; |
2166 | + cursor: pointer; |
2167 | +} |
2168 | + |
2169 | +#content table.targetlist .downloads { |
2170 | + width: 70px; |
2171 | + text-align: center; |
2172 | +} |
2173 | + |
2174 | +.entry { |
2175 | + width: 500px; |
2176 | + margin: 0 auto; |
2177 | + padding: 40px; |
2178 | + background: #f4f4f4; |
2179 | +} |
2180 | + |
2181 | +.entry h2, .entry h3 { |
2182 | + font-weight: bold; |
2183 | + font-size: 18px; |
2184 | + margin-bottom: 5px; |
2185 | +} |
2186 | + |
2187 | +.entry h2.title { |
2188 | + font-size: 28px; |
2189 | +} |
2190 | + |
2191 | +.entry h3 { |
2192 | + padding-top: 5px; |
2193 | +} |
2194 | + |
2195 | + |
2196 | +.entry p { |
2197 | + font-size: 14px; |
2198 | +} |
2199 | + |
2200 | +.entry li { |
2201 | + padding: 7px 0 7px 30px; |
2202 | + font-size: 14px; |
2203 | +} |
2204 | + |
2205 | +.material ul { |
2206 | + margin-bottom: 20px; |
2207 | +} |
2208 | + |
2209 | +.material li.zip { |
2210 | + background: url('/globaleaks/static/images/box_16x16.png') no-repeat left center; |
2211 | +} |
2212 | + |
2213 | +.material li.img { |
2214 | + background: url('/globaleaks/static/images/image_16x16.png') no-repeat left center; |
2215 | +} |
2216 | + |
2217 | +.material li.pdf { |
2218 | + background: url('/globaleaks/static/images/document_fill_16x16.png') no-repeat left center; |
2219 | +} |
2220 | + |
2221 | +.material a { |
2222 | + display: block; |
2223 | + color: #fff; |
2224 | + text-decoration: none; |
2225 | + text-transform: uppercase; |
2226 | + font-weight: bold; |
2227 | + font-size: 14px; |
2228 | + float: left; |
2229 | + margin: 10px 10px 0 0; |
2230 | + padding: 10px 10px 10px 30px; |
2231 | + border-radius:5px; |
2232 | + -webkit-border-radius:5px; |
2233 | + -moz-border-radius:5px; |
2234 | +} |
2235 | + |
2236 | +.material a.zip { |
2237 | + background: #0a70b4 url('/globaleaks/static/images/icon-download-zip.png') no-repeat 5px center; |
2238 | +} |
2239 | + |
2240 | +.material a.crypt { |
2241 | + background: #0a70b4 url('/globaleaks/static/images/icon-download-crypt.png') no-repeat 5px center; |
2242 | +} |
2243 | + |
2244 | +.downloads-left { |
2245 | + font-size: 18px; |
2246 | + float: left; |
2247 | + background: #444; |
2248 | + padding: 5px 10px; |
2249 | + color: #fff; |
2250 | + margin: 0 10px 10px 0; |
2251 | +} |
2252 | + |
2253 | +.downloads-left.full { |
2254 | + background: #e60000; |
2255 | +} |
2256 | + |
2257 | + |
2258 | +.total-clicks { |
2259 | + font-size: 18px; |
2260 | + float: left; |
2261 | + background: #444; |
2262 | + padding: 5px 10px; |
2263 | + color: #fff; |
2264 | +} |
2265 | + |
2266 | +.entry .material { |
2267 | + padding: 20px; |
2268 | + background: #444; |
2269 | + color: #fff; |
2270 | + margin: 20px 0; |
2271 | +} |
2272 | + |
2273 | +#footer { |
2274 | + width: 960px; |
2275 | + margin: 10px auto 20px auto; |
2276 | + font-size: 12px; |
2277 | + text-align: right; |
2278 | +} |
2279 | + |
2280 | +#footer a { |
2281 | + color: #0a70b4; |
2282 | } |
2283 | |
2284 | === added file 'applications/globaleaks/static/css/old.css' |
2285 | --- applications/globaleaks/static/css/old.css 1970-01-01 00:00:00 +0000 |
2286 | +++ applications/globaleaks/static/css/old.css 2011-09-02 13:53:25 +0000 |
2287 | @@ -0,0 +1,918 @@ |
2288 | +@charset "UTF-8"; |
2289 | + |
2290 | +/* This file is contains the following sections: |
2291 | + |
2292 | +Update: Revision: 20101102 by Martin Mulone |
2293 | + |
2294 | +- The new revision contains: |
2295 | +- Html5, good practice and normalization support. |
2296 | +- Diferent hacks. |
2297 | +- The normalization and some tags come from |
2298 | + diferent sites so i keep the credits and comments. |
2299 | + but the base of support html5 come from: |
2300 | + http://html5boilerplate.com/ |
2301 | + |
2302 | +- ez.css (http://www.ez-css.org/layouts) |
2303 | +- reset common tags |
2304 | +- choose default fonts |
2305 | +- choose link style |
2306 | +- add bottom line to table rows |
2307 | +- labels bold and occasionally centered |
2308 | +- make all input fields the same size |
2309 | +- add proper separation between h1-h6 and text |
2310 | +- always indent the first line and add space below paragraphs |
2311 | +- bullets and numbers style and indent |
2312 | +- form and table padding |
2313 | +- code blocks |
2314 | +- left and right padding to quoted text |
2315 | +- page layout alignment, width and padding (change this for spaces) |
2316 | +- column widths (change this to use left_sidebar and right_sidebar) |
2317 | +- backrgound images and colors (change this for colors) |
2318 | +- web2py specific (.flash, .error) |
2319 | + |
2320 | +Notice: |
2321 | +- even if you use a different layout/css you may need classes .flash and .error |
2322 | +- this is all color neutral except for #349C01 (header, links, lines) |
2323 | +- there are two backrgound images: images/background.png and images/header.png |
2324 | + |
2325 | +License: This file is released under BSD and MIT |
2326 | + |
2327 | +*/ |
2328 | + |
2329 | +/* |
2330 | + credit is left where credit is due. |
2331 | + additionally, much inspiration was taken from these projects: |
2332 | + yui.yahooapis.com/2.8.1/build/base/base.css |
2333 | + camendesign.com/design/ |
2334 | + praegnanz.de/weblog/htmlcssjs-kickstart |
2335 | +*/ |
2336 | + |
2337 | +/* |
2338 | + html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline) |
2339 | + v1.4 2009-07-27 | Authors: Eric Meyer & Richard Clark |
2340 | + html5doctor.com/html-5-reset-stylesheet/ |
2341 | +*/ |
2342 | + |
2343 | +html, body, div, span, object, iframe, |
2344 | +h1, h2, h3, h4, h5, h6, p, blockquote, pre, |
2345 | +abbr, address, cite, code, |
2346 | +del, dfn, em, img, ins, kbd, q, samp, |
2347 | +small, strong, sub, sup, var, |
2348 | +b, i, |
2349 | +dl, dt, dd, ol, ul, li, |
2350 | +fieldset, form, label, legend, |
2351 | +table, caption, tbody, tfoot, thead, tr, th, td, |
2352 | +article, aside, canvas, details, figcaption, figure, |
2353 | +footer, header, hgroup, menu, nav, section, summary, |
2354 | +time, mark, audio, video { |
2355 | + margin:0; |
2356 | + padding:0; |
2357 | + border:0; |
2358 | + outline:0; |
2359 | + font: inherit; |
2360 | + font-size:100%; |
2361 | + vertical-align:baseline; |
2362 | + background:transparent; |
2363 | +} |
2364 | + |
2365 | +article, aside, details, figcaption, figure, |
2366 | +footer, header, hgroup, menu, nav, section { |
2367 | + display:block; |
2368 | +} |
2369 | + |
2370 | +nav ul { list-style:none; } |
2371 | + |
2372 | +blockquote, q { quotes:none; } |
2373 | + |
2374 | +blockquote:before, blockquote:after, |
2375 | +q:before, q:after { content:''; content:none; } |
2376 | + |
2377 | +a { margin:0; padding:0; font-size:100%; vertical-align:baseline; background:transparent; } |
2378 | +a:hover { text-decoration: underline } |
2379 | + |
2380 | +ins { background-color:#ff9; color:#000; text-decoration:none; } |
2381 | + |
2382 | +mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; } |
2383 | + |
2384 | +del { text-decoration: line-through; } |
2385 | + |
2386 | +abbr[title], dfn[title] { border-bottom:1px dotted #000; cursor:help; } |
2387 | + |
2388 | +/* tables still need cellspacing="0" in the markup */ |
2389 | +table { border-collapse:collapse; border-spacing:0; } |
2390 | + |
2391 | +hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; } |
2392 | + |
2393 | +input, select { vertical-align:middle; } |
2394 | +/* END RESET CSS */ |
2395 | + |
2396 | + |
2397 | +/* |
2398 | +fonts.css from the YUI Library: developer.yahoo.com/yui/ |
2399 | + Please refer to developer.yahoo.com/yui/fonts/ for font sizing percentages |
2400 | + |
2401 | +There are three custom edits: |
2402 | + * remove arial, helvetica from explicit font stack |
2403 | + * make the line-height relative and unit-less |
2404 | + * remove the pre, code styles |
2405 | +*/ |
2406 | +body { line-height: 1; font:13px/1.231 sans-serif; *font-size:small; } /* hack retained to preserve specificity */ |
2407 | + |
2408 | +/*table { font-size:inherit; font:100%; }*/ |
2409 | + |
2410 | +select, input, textarea, button { font:99% sans-serif; } |
2411 | + |
2412 | + |
2413 | +/* normalize monospace sizing |
2414 | + * en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome |
2415 | + */ |
2416 | +pre, code, kbd, samp { font-family: monospace, sans-serif; } |
2417 | + |
2418 | +/* |
2419 | + * minimal base styles |
2420 | + */ |
2421 | + |
2422 | +/* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */ |
2423 | +body, select, input, textarea { color:#444; } |
2424 | + |
2425 | +/* Headers (h1,h2,etc) have no default font-size or margin, |
2426 | + you'll want to define those yourself. */ |
2427 | + |
2428 | +/* www.aestheticallyloyal.com/public/optimize-legibility/ */ |
2429 | +h1,h2,h3,h4,h5,h6 { font-weight: bold; } |
2430 | + |
2431 | +/* always force a scrollbar in non-IE */ |
2432 | +html { overflow-y: scroll; } |
2433 | + |
2434 | +/* Accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */ |
2435 | +a:hover, a:active { outline: none; } |
2436 | + |
2437 | +a, a:active, a:visited { color:#607890; } |
2438 | +a:hover { color:#036; } |
2439 | + |
2440 | +ul, ol { margin-left: 1.8em; } |
2441 | +ol { list-style-type: decimal; } |
2442 | + |
2443 | +/* Remove margins for navigation lists */ |
2444 | +nav ul, nav li { margin: 0; } |
2445 | + |
2446 | +small { font-size:85%; } |
2447 | +strong, th { font-weight: bold; } |
2448 | + |
2449 | +td, td img { vertical-align:top; } |
2450 | + |
2451 | +sub { vertical-align: sub; font-size: smaller; } |
2452 | +sup { vertical-align: super; font-size: smaller; } |
2453 | + |
2454 | +pre { |
2455 | + padding: 15px; |
2456 | + |
2457 | + /* www.pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap/ */ |
2458 | + white-space: pre; /* CSS2 */ |
2459 | + white-space: pre-wrap; /* CSS 2.1 */ |
2460 | + white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */ |
2461 | + word-wrap: break-word; /* IE */ |
2462 | +} |
2463 | + |
2464 | +textarea { overflow: auto; } /* thnx ivannikolic! www.sitepoint.com/blogs/2010/08/20/ie-remove-textarea-scrollbars/ */ |
2465 | + |
2466 | +.ie6 legend, .ie7 legend { margin-left: -7px; } /* thnx ivannikolic! */ |
2467 | + |
2468 | +/* align checkboxes, radios, text inputs with their label |
2469 | + by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css */ |
2470 | +input[type="radio"] { vertical-align: text-bottom; } |
2471 | +input[type="checkbox"] { vertical-align: bottom; } |
2472 | +.ie7 input[type="checkbox"] { vertical-align: baseline; } |
2473 | +.ie6 input { vertical-align: text-bottom; } |
2474 | + |
2475 | +/* hand cursor on clickable input elements */ |
2476 | +label, input[type=button], input[type=submit], button { cursor: pointer; } |
2477 | + |
2478 | +/* webkit browsers add a 2px margin outside the chrome of form elements */ |
2479 | +button, input, select, textarea { margin: 0; } |
2480 | + |
2481 | +/* colors for form validity */ |
2482 | +input:valid, textarea:valid { } |
2483 | +input:invalid, textarea:invalid { |
2484 | + border-radius: 1px; |
2485 | + -moz-box-shadow: 0px 0px 5px red; |
2486 | + -webkit-box-shadow: 0px 0px 5px red; |
2487 | + box-shadow: 0px 0px 5px red; |
2488 | +} |
2489 | +.no-boxshadow input:invalid, |
2490 | +.no-boxshadow textarea:invalid { background-color: #f0dddd; } |
2491 | + |
2492 | + |
2493 | +/* These selection declarations have to be separate. |
2494 | + No text-shadow: twitter.com/miketaylr/status/12228805301 |
2495 | + Also: hot pink. */ |
2496 | +::-moz-selection{ background: #555; color:#fff; text-shadow: none; } |
2497 | +::selection { background:#555; color:#fff; text-shadow: none; } |
2498 | + |
2499 | +/* j.mp/webkit-tap-highlight-color */ |
2500 | +a:link { -webkit-tap-highlight-color: #555; } |
2501 | + |
2502 | + |
2503 | +/* make buttons play nice in IE: |
2504 | + www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */ |
2505 | +button { width: auto; overflow: visible; } |
2506 | + |
2507 | +/* bicubic resizing for non-native sized IMG: |
2508 | + code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ */ |
2509 | +.ie7 img { -ms-interpolation-mode: bicubic; } |
2510 | + |
2511 | +/* |
2512 | + * Non-semantic helper classes |
2513 | + */ |
2514 | + |
2515 | +/* for image replacement */ |
2516 | +.ir { display:block; text-indent:-999em; overflow:hidden; background-repeat: no-repeat; } |
2517 | + |
2518 | +/* Hide for both screenreaders and browsers |
2519 | + css-discuss.incutio.com/wiki/Screenreader_Visibility */ |
2520 | +.hidden { display:none; } |
2521 | + |
2522 | +/* Hide only visually, but have it available for screenreaders |
2523 | + www.webaim.org/techniques/css/invisiblecontent/ |
2524 | + Solution from: j.mp/visuallyhidden - Thanks Jonathan Neal! */ |
2525 | +.visuallyhidden { position:absolute !important; |
2526 | + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ |
2527 | + clip: rect(1px, 1px, 1px, 1px); } |
2528 | + |
2529 | +/* Hide visually and from screenreaders, but maintain layout */ |
2530 | +.invisible { visibility: hidden; } |
2531 | + |
2532 | +/* >> The Magnificent CLEARFIX: Updated to prevent margin-collapsing on child elements << j.mp/bestclearfix */ |
2533 | +.clearfix:before, .clearfix:after { |
2534 | + content: "\0020"; display: block; height: 0; visibility: hidden; |
2535 | +} |
2536 | + |
2537 | +.clearfix:after { clear: both; } |
2538 | +/* Fix clearfix: blueprintcss.lighthouseapp.com/projects/15318/tickets/5-extra-margin-padding-bottom-of-page */ |
2539 | +.clearfix { zoom: 1; } |
2540 | + |
2541 | + |
2542 | +/*********** layout info (ez.css) ***********/ |
2543 | +/* 2009 -2010 (c) | ez-css.org |
2544 | + * ez-plug-min.css :: version 1.1 :: 01182010 |
2545 | + */ |
2546 | +.ez-wr:after,.ez-box:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ez-wr,.ez-box,.ez-last{display:inline-block;min-height:0}/* \*/ * html .ez-wr,* html .ez-box,* html .ez-last{height:1%}.ez-wr,.ez-box,.ez-last{display:block}/* */.ez-oh{overflow:hidden}* html .ez-oh{overflow:visible}.ez-oa{overflow:auto}.ez-dt{display:table}.ez-it{display:inline-table}.ez-tc{display:table-cell}.ez-ib{display:inline-block}.ez-fl{float:left}* html .ez-fl{margin-right:-3px}.ez-fr{float:right}* html .ez-fr{margin-left:-3px}.ez-25{width:25%}.ez-33{width:33.33%}.ez-50{width:50%}.ez-66{width:66.66%}.ez-75{width:75%}.ez-negmr{margin-right:-1px}* html .ez-negmr{margin-right:-4px}.ez-negmx{margin-right:-1px}.ez-negml{margin-left:-1px}* html .ez-negml{margin-left:-4px} |
2547 | + |
2548 | + |
2549 | +/*********** add bottom line to table rows ***********/ |
2550 | +th, td { padding: 0.1em 0.5em 0.1em 0.5em;} |
2551 | + |
2552 | +/*********** labels bold and occasionally centered ***********/ |
2553 | +label { |
2554 | + white-space: nowrap; |
2555 | +} |
2556 | +label, b, th { |
2557 | + font-weight: bold; |
2558 | +} |
2559 | +thead th { |
2560 | + text-align: center; |
2561 | + border-bottom: 1px solid #444; |
2562 | +} |
2563 | +/*********** forms and table padding ***********/ |
2564 | +form, table { |
2565 | + padding: 5px 10px 5px 10px; |
2566 | +} |
2567 | + |
2568 | +/*********** code blocks ***********/ |
2569 | +code { |
2570 | + padding: 3px 5px; |
2571 | + font-family: Andale Mono, monospace; |
2572 | + font-size: 0.9em; |
2573 | +} |
2574 | + |
2575 | +/*********** left and right padding to quoted text ***********/ |
2576 | +blockquote { |
2577 | + background: #cccccc; |
2578 | + border-left: 30px transparent; |
2579 | + border-right: 30px transparent; |
2580 | + /*padding: 5px;*/ |
2581 | +} |
2582 | + |
2583 | +input[type=text], input[type=password], textarea, select { |
2584 | + margin: 2px 15px 2px 5px; |
2585 | + width: 280px; |
2586 | + background: #fff; |
2587 | + color: #555; |
2588 | + border: 1px solid #dedede; |
2589 | + -moz-border-radius: 2px; |
2590 | + -webkit-border-radius: 2px; |
2591 | + border-radius: 2px; |
2592 | + font-size: 12px; |
2593 | +} |
2594 | + |
2595 | +input[type=text], input[type=password] { |
2596 | + height: 16px; |
2597 | +} |
2598 | + |
2599 | +select[multiple=multiple] { |
2600 | + height: 90px; |
2601 | +} |
2602 | + |
2603 | +input[type=submit], input[type=button], button { |
2604 | + margin: 0px; |
2605 | + /*width: 85px;*/ |
2606 | + height: 22px; |
2607 | + background: #eaeaea; |
2608 | + color: #555; |
2609 | + border: 1px solid #dedede; |
2610 | + -moz-border-radius: 2px; |
2611 | + -webkit-border-radius: 2px; |
2612 | + border-radius: 2px; |
2613 | +} |
2614 | + |
2615 | +fieldset { border: 1px solid #dedede; padding: 6px; } |
2616 | +legend { font-weight: bold; } |
2617 | + |
2618 | +input:focus, textarea:focus { background: #fafafa; } |
2619 | + |
2620 | +p {text-indent:30px;} |
2621 | + |
2622 | +p, blockquote { |
2623 | + margin-bottom: 10px; |
2624 | +} |
2625 | + |
2626 | +h1,h2,h3,h4,h5,h6 { line-height: 170%; } |
2627 | +h1 {font-size: 2.0em;} |
2628 | +h2 {font-size: 1.8em;} |
2629 | +h3 {font-size: 1.4em;} |
2630 | +h4 {font-size: 1.2em;} |
2631 | +h5 {font-size: 1.0em;} |
2632 | +h6 {font-size: 0.8em;} |
2633 | + |
2634 | +/*********** page layout alignment, width and padding ***********/ |
2635 | +/*body {background-color: #000;}*/ |
2636 | +#wrapper {width: 900px;} |
2637 | + |
2638 | +#wrapper {margin: 0 auto;} |
2639 | +#wrapper {background-color: #fff; padding: 5px;} |
2640 | +#statusbar { margin: 5px 0px 20px 0px;} |
2641 | +#footer { |
2642 | + margin-top: 30px; |
2643 | + padding: 5px; |
2644 | +} |
2645 | +#statusbar, #footer { |
2646 | + background: #eaeaea; |
2647 | + border-top: 1px #aaa solid; |
2648 | +} |
2649 | +#logo { |
2650 | + width: 68px; |
2651 | + height: 62px; |
2652 | + background: url(../images/logo.png); |
2653 | +} |
2654 | +#appname { |
2655 | + color: #cccccc; |
2656 | +} |
2657 | + |
2658 | +#right_sidebar { width: 160px; float:right; display: none; } |
2659 | +#left_sidebar { width: 160px; float:left; display: none; } |
2660 | +#content { float: left; /*width: 740px;*//*width: 63%;*/ /*width: 640px; float:left;*/ } /* uncomment this if you are going to use sidebars */ |
2661 | + |
2662 | +.auth_navbar { |
2663 | + top: 0px; |
2664 | + float: right; |
2665 | + padding: 3px 10px 3px 10px; |
2666 | +} |
2667 | + |
2668 | +/*********** web2py specific ***********/ |
2669 | +div.flash { |
2670 | + font-weight: bold; |
2671 | + display: none; |
2672 | + position: fixed; |
2673 | + padding: 10px; |
2674 | + top: 40px; |
2675 | + right: 10px; |
2676 | + min-width: 280px; |
2677 | + opacity: 0.85; |
2678 | + margin: 0px 0px 10px 10px; |
2679 | + color: #fff; |
2680 | + vertical-align: middle; |
2681 | + cursor: pointer; |
2682 | + background: #000; |
2683 | + border: 2px solid #fff; |
2684 | + -moz-border-radius: 5px; |
2685 | + -webkit-border-radius: 5px; |
2686 | + z-index: 2; |
2687 | +} |
2688 | + |
2689 | +div.error { |
2690 | + background-color: red; |
2691 | + color: white; |
2692 | + padding: 3px; |
2693 | +} |
2694 | + |
2695 | +/*************************** |
2696 | + * CSS 3 Buttons |
2697 | + * http://github.com/michenriksen/css3buttons |
2698 | + * created by Michael Henriksen |
2699 | + * License: Unlicense |
2700 | + * |
2701 | + * *******************/ |
2702 | + |
2703 | +a.button { display: inline-block; padding: 3px 5px 3px 5px; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 12px; color: #3C3C3D; text-shadow: 1px 1px 0 #FFFFFF; background: #ECECEC url('../images/css3buttons_backgrounds.png') 0 0 no-repeat; white-space: nowrap; overflow: visible; cursor: pointer; text-decoration: none; border: 1px solid #CACACA; -webkit-border-radius: 2px; -moz-border-radius: 2px; -webkit-background-clip: padding-box; border-radius: 2px; outline: none; position: relative; zoom: 1; *display: inline; } |
2704 | +a.button.primary { font-weight: bold } |
2705 | +a.button:hover { color: #FFFFFF; border-color: #388AD4; text-decoration: none; text-shadow: -1px -1px 0 rgba(0,0,0,0.3); background-position: 0 -40px; background-color: #2D7DC5; } |
2706 | +a.button:active, |
2707 | +a.button.active { background-position: 0 -81px; border-color: #347BBA; background-color: #0F5EA2; color: #FFFFFF; text-shadow: none; } |
2708 | +a.button:active { top: 1px } |
2709 | +a.button.negative:hover { color: #FFFFFF; background-position: 0 -121px; background-color: #D84743; border-color: #911D1B; } |
2710 | +a.button.negative:active, |
2711 | +a.button.negative.active { background-position: 0 -161px; background-color: #A5211E; border-color: #911D1B; } |
2712 | +a.button.pill { -webkit-border-radius: 19px; -moz-border-radius: 19px; border-radius: 19px; padding: 2px 10px 2px 10px; } |
2713 | +a.button.left { -webkit-border-bottom-right-radius: 0px; -webkit-border-top-right-radius: 0px; -moz-border-radius-bottomright: 0px; -moz-border-radius-topright: 0px; border-bottom-right-radius: 0px; border-top-right-radius: 0px; margin-right: 0px; } |
2714 | +a.button.middle { margin-right: 0px; margin-left: 0px; -webkit-border-radius: 0px; -moz-border-radius: 0px; border-radius: 0px; border-right: none; border-left: none; } |
2715 | +a.button.right { -webkit-border-bottom-left-radius: 0px; -webkit-border-top-left-radius: 0px; -moz-border-radius-bottomleft: 0px; -moz-border-radius-topleft: 0px; border-top-left-radius: 0px; border-bottom-left-radius: 0px; margin-left: 0px; } |
2716 | +a.button.left:active, |
2717 | +a.button.middle:active, |
2718 | +a.button.right:active { top: 0px } |
2719 | +a.button.big { font-size: 16px; padding-left: 17px; padding-right: 17px; } |
2720 | +a.button span.icon { display: inline-block; width: 14px; height: 12px; margin: auto 7px auto auto; position: relative; top: 2px; background-image: url('../images/css3buttons_icons.png'); background-repeat: no-repeat; } |
2721 | +a.big.button span.icon { top: 0px } |
2722 | +a.button span.icon.book { background-position: 0 0 } |
2723 | +a.button:hover span.icon.book { background-position: 0 -15px } |
2724 | +a.button span.icon.calendar { background-position: 0 -30px } |
2725 | +a.button:hover span.icon.calendar { background-position: 0 -45px } |
2726 | +a.button span.icon.chat { background-position: 0 -60px } |
2727 | +a.button:hover span.icon.chat { background-position: 0 -75px } |
2728 | +a.button span.icon.check { background-position: 0 -90px } |
2729 | +a.button:hover span.icon.check { background-position: 0 -103px } |
2730 | +a.button span.icon.clock { background-position: 0 -116px } |
2731 | +a.button:hover span.icon.clock { background-position: 0 -131px } |
2732 | +a.button span.icon.cog { background-position: 0 -146px } |
2733 | +a.button:hover span.icon.cog { background-position: 0 -161px } |
2734 | +a.button span.icon.comment { background-position: 0 -176px } |
2735 | +a.button:hover span.icon.comment { background-position: 0 -190px } |
2736 | +a.button span.icon.cross { background-position: 0 -204px } |
2737 | +a.button:hover span.icon.cross { background-position: 0 -219px } |
2738 | +a.button span.icon.downarrow { background-position: 0 -234px } |
2739 | +a.button:hover span.icon.downarrow { background-position: 0 -249px } |
2740 | +a.button span.icon.fork { background-position: 0 -264px } |
2741 | +a.button:hover span.icon.fork { background-position: 0 -279px } |
2742 | +a.button span.icon.heart { background-position: 0 -294px } |
2743 | +a.button:hover span.icon.heart { background-position: 0 -308px } |
2744 | +a.button span.icon.home { background-position: 0 -322px } |
2745 | +a.button:hover span.icon.home { background-position: 0 -337px } |
2746 | +a.button span.icon.key { background-position: 0 -352px } |
2747 | +a.button:hover span.icon.key { background-position: 0 -367px } |
2748 | +a.button span.icon.leftarrow { background-position: 0 -382px } |
2749 | +a.button:hover span.icon.leftarrow { background-position: 0 -397px } |
2750 | +a.button span.icon.lock { background-position: 0 -412px } |
2751 | +a.button:hover span.icon.lock { background-position: 0 -427px } |
2752 | +a.button span.icon.loop { background-position: 0 -442px } |
2753 | +a.button:hover span.icon.loop { background-position: 0 -457px } |
2754 | +a.button span.icon.magnifier { background-position: 0 -472px } |
2755 | +a.button:hover span.icon.magnifier { background-position: 0 -487px } |
2756 | +a.button span.icon.mail { background-position: 0 -502px } |
2757 | +a.button:hover span.icon.mail { background-position: 0 -514px } |
2758 | +a.button span.icon.move { background-position: 0 -526px } |
2759 | +a.button:hover span.icon.move { background-position: 0 -541px } |
2760 | +a.button span.icon.pen { background-position: 0 -556px } |
2761 | +a.button:hover span.icon.pen { background-position: 0 -571px } |
2762 | +a.button span.icon.pin { background-position: 0 -586px } |
2763 | +a.button:hover span.icon.pin { background-position: 0 -601px } |
2764 | +a.button span.icon.plus { background-position: 0 -616px } |
2765 | +a.button:hover span.icon.plus { background-position: 0 -631px } |
2766 | +a.button span.icon.reload { background-position: 0 -646px } |
2767 | +a.button:hover span.icon.reload { background-position: 0 -660px } |
2768 | +a.button span.icon.rightarrow { background-position: 0 -674px } |
2769 | +a.button:hover span.icon.rightarrow { background-position: 0 -689px } |
2770 | +a.button span.icon.rss { background-position: 0 -704px } |
2771 | +a.button:hover span.icon.rss { background-position: 0 -719px } |
2772 | +a.button span.icon.tag { background-position: 0 -734px } |
2773 | +a.button:hover span.icon.tag { background-position: 0 -749px } |
2774 | +a.button span.icon.trash { background-position: 0 -764px } |
2775 | +a.button:hover span.icon.trash { background-position: 0 -779px } |
2776 | +a.button span.icon.unlock { background-position: 0 -794px } |
2777 | +a.button:hover span.icon.unlock { background-position: 0 -809px } |
2778 | +a.button span.icon.uparrow { background-position: 0 -824px } |
2779 | +a.button:hover span.icon.uparrow { background-position: 0 -839px } |
2780 | +a.button span.icon.user { background-position: 0 -854px } |
2781 | +a.button:hover span.icon.user { background-position: 0 -869px } |
2782 | + |
2783 | + |
2784 | +/***************************************************** |
2785 | + * HERE YOU CAN START TO WRITE YOUR OWN DIVS |
2786 | + */ |
2787 | + |
2788 | +body { |
2789 | + background: #f3f3f3; |
2790 | + font-family: Arial, sans-serif; |
2791 | + color: #444; |
2792 | +} |
2793 | + |
2794 | +.clear { |
2795 | + clear: both; |
2796 | +} |
2797 | + |
2798 | +strong { |
2799 | + font-weight: bold; |
2800 | +} |
2801 | + |
2802 | +a.button { |
2803 | + color: #fff; |
2804 | + border: 0; |
2805 | + border-radius: 5px; |
2806 | + -moz-border-radius: 5px; |
2807 | + -webkit-border-radius: 5px; |
2808 | + font-weight: bold; |
2809 | + cursor: pointer; |
2810 | + padding: 10px; |
2811 | + display: block; |
2812 | + text-decoration: none; |
2813 | + text-align: center; |
2814 | + margin: 20px 0 20px 10px; |
2815 | + float: right; |
2816 | + |
2817 | +} |
2818 | + |
2819 | +a.button.whistblower { |
2820 | + background: #0a70b4; |
2821 | + width: 200px; |
2822 | +} |
2823 | + |
2824 | +a.button.addtarget { |
2825 | + background: #444; |
2826 | + width: 100px; |
2827 | +} |
2828 | + |
2829 | +input[type=submit]{ |
2830 | + background: #444; |
2831 | + color: #fff; |
2832 | + border: 0; |
2833 | + border-radius: 5px; |
2834 | + -moz-border-radius: 5px; |
2835 | + -webkit-border-radius: 5px; |
2836 | + font-weight: bold; |
2837 | + cursor: pointer; |
2838 | + padding: 5px 10px; |
2839 | + display: block; |
2840 | + text-decoration: none; |
2841 | + text-align: center; |
2842 | + margin: 10px 0; |
2843 | + cursor: pointer; |
2844 | + font-size: 14px; |
2845 | +} |
2846 | + |
2847 | + |
2848 | +p.tulip{ |
2849 | + background: #444; |
2850 | + color: #fff; |
2851 | + border: 0; |
2852 | + border-radius: 5px; |
2853 | + -moz-border-radius: 5px; |
2854 | + -webkit-border-radius: 5px; |
2855 | + font-weight: bold; |
2856 | + padding: 20px; |
2857 | + display: block; |
2858 | + text-decoration: none; |
2859 | + text-align: center; |
2860 | + margin: 10px 0 20px 0; |
2861 | + font-size: 24px; |
2862 | + width: 300px; |
2863 | +} |
2864 | + |
2865 | + |
2866 | +#container { |
2867 | + background: #fff; |
2868 | + width: 880px; |
2869 | + padding: 40px; |
2870 | + margin: 20px auto; |
2871 | + -moz-box-shadow: 0px 0px 3px #dedede; |
2872 | + -webkit-box-shadow: 5px 5px 0px #dedede; |
2873 | + box-shadow: 0px 0px 10px #d0d0d0; |
2874 | +} |
2875 | + |
2876 | +#container img.ribbon { |
2877 | + float: right; |
2878 | + margin-left: 20px; |
2879 | + margin-right: -20px; |
2880 | + margin-top: -45px; |
2881 | +} |
2882 | + |
2883 | + |
2884 | +#header { |
2885 | + padding-bottom: 40px; |
2886 | +} |
2887 | + |
2888 | +ul#navigation { |
2889 | + float: right; |
2890 | +} |
2891 | + |
2892 | +ul#navigation li { |
2893 | + float: left; |
2894 | + margin-left: 10px; |
2895 | +} |
2896 | + |
2897 | +ul#navigation a { |
2898 | + color: #444; |
2899 | + text-decoration: none; |
2900 | + font-weight: bold; |
2901 | + font-size: 14px; |
2902 | +} |
2903 | + |
2904 | + |
2905 | +#content h1 { |
2906 | + font-size: 28px; |
2907 | + margin-bottom: 10px; |
2908 | + text-transform: uppercase; |
2909 | + font-weight: bold; |
2910 | +} |
2911 | + |
2912 | +#content h1 span { |
2913 | + font-weight: normal; |
2914 | + text-transform: none; |
2915 | +} |
2916 | + |
2917 | +#content p.intro { |
2918 | + line-height: 18px; |
2919 | + text-align: justify; |
2920 | + margin-bottom: 20px; |
2921 | +} |
2922 | + |
2923 | +#content .box { |
2924 | + background: #444; |
2925 | + width: 320px; |
2926 | + height: 320px; |
2927 | + margin: 20px 0; |
2928 | + float: left; |
2929 | + padding: 40px; |
2930 | +} |
2931 | + |
2932 | +#content .box:nth-child(even) { |
2933 | + margin-left: 40px; |
2934 | +} |
2935 | + |
2936 | +#content .box h2 { |
2937 | + text-transform: uppercase; |
2938 | + color: #fff; |
2939 | + font-weight: bold; |
2940 | + font-size: 24px; |
2941 | +} |
2942 | + |
2943 | +#content .box h2 span { |
2944 | + font-size: 48px; |
2945 | +} |
2946 | + |
2947 | +#content .box a { |
2948 | + display: block; |
2949 | + color: #fff; |
2950 | + text-decoration: none; |
2951 | + text-transform: uppercase; |
2952 | + font-weight: bold; |
2953 | + float: right; |
2954 | + margin-top: 32px; |
2955 | + background: #0a70b4; |
2956 | + padding: 10px; |
2957 | + border-radius:5px; |
2958 | + -webkit-border-radius:5px; |
2959 | + -moz-border-radius:5px; |
2960 | +} |
2961 | + |
2962 | +#content .box span.info { |
2963 | + display: block; |
2964 | + color: #fff; |
2965 | + text-decoration: none; |
2966 | + text-transform: uppercase; |
2967 | + font-weight: bold; |
2968 | + float: right; |
2969 | + margin-top: 42px; |
2970 | + font-style: italic; |
2971 | + padding-top: 0px; |
2972 | +} |
2973 | + |
2974 | +#content .box img { |
2975 | + margin-top: 30px; |
2976 | +} |
2977 | + |
2978 | + |
2979 | +#content form table td { |
2980 | + padding: 5px 5px 10px 5px; |
2981 | + vertical-align: top; |
2982 | +} |
2983 | + |
2984 | +#content form table td.w2p_fl { |
2985 | + font-size: 13px; |
2986 | + font-weight: bold; |
2987 | +} |
2988 | + |
2989 | +#content form label { |
2990 | + font-size: 13px; |
2991 | +} |
2992 | + |
2993 | + |
2994 | +#content form input.string { |
2995 | + border: 1px solid #ddd; |
2996 | + padding: 5px; |
2997 | + width: 350px; |
2998 | + font-size: 13px; |
2999 | +} |
3000 | + |
3001 | +#content form textarea { |
3002 | + border: 1px solid #ddd; |
3003 | + padding: 5px; |
3004 | + width: 350px; |
3005 | + font-size: 13px; |
3006 | +} |
3007 | + |
3008 | +#content form .error { |
3009 | + padding: 5px; |
3010 | + width: 350px; |
3011 | + font-size: 13px; |
3012 | + color: #fff; |
3013 | + background: #e60000; |
3014 | + margin-top: 5px; |
3015 | + font-weight: bold; |
3016 | +} |
3017 | + |
3018 | +#content table.targetlist { |
3019 | + width: 100%; |
3020 | + font-size: 14px; |
3021 | +} |
3022 | + |
3023 | +#content table.targetlist th { |
3024 | + //background: #005ea3; |
3025 | + background: #444; |
3026 | + color: #fff; |
3027 | + border: 1px solid #fff; |
3028 | + border-bottom: 2px solid #fff; |
3029 | + font-weight: bold; |
3030 | + padding: 5px; |
3031 | + text-align: left; |
3032 | +} |
3033 | + |
3034 | +#content table.targetlist td { |
3035 | + border: 1px solid #fff; |
3036 | + border-bottom: 2px solid #fff; |
3037 | + padding: 5px; |
3038 | + background: #ededed; |
3039 | + text-align: left; |
3040 | +} |
3041 | + |
3042 | +#content table.targetlist tr.odd td { |
3043 | + background: #f5f5f5; |
3044 | +} |
3045 | + |
3046 | +#content table.targetlist td.delete { |
3047 | + text-align: center; |
3048 | +} |
3049 | + |
3050 | +#content table.targetlist td.delete button { |
3051 | + background: #e60000; |
3052 | + color: #fff; |
3053 | + border: 0; |
3054 | + border-radius: 3px; |
3055 | + -moz-border-radius: 3px; |
3056 | + -webkit-border-radius: 3px; |
3057 | + font-weight: bold; |
3058 | + cursor: pointer; |
3059 | +} |
3060 | + |
3061 | +#content table.targetlist .downloads { |
3062 | + width: 70px; |
3063 | + text-align: center; |
3064 | +} |
3065 | + |
3066 | +.entry { |
3067 | + width: 500px; |
3068 | + margin: 0 auto; |
3069 | + padding: 40px; |
3070 | + background: #f4f4f4; |
3071 | +} |
3072 | + |
3073 | +.entry h2, .entry h3 { |
3074 | + font-weight: bold; |
3075 | + font-size: 18px; |
3076 | + margin-bottom: 5px; |
3077 | +} |
3078 | + |
3079 | +.entry h2.title { |
3080 | + font-size: 28px; |
3081 | +} |
3082 | + |
3083 | +.entry h3 { |
3084 | + margin-bottom: 20px; |
3085 | + padding-top: 5px; |
3086 | +} |
3087 | + |
3088 | + |
3089 | +.entry p { |
3090 | + font-size: 14px; |
3091 | +} |
3092 | + |
3093 | +.entry li { |
3094 | + padding: 7px 0 7px 30px; |
3095 | + font-size: 14px; |
3096 | +} |
3097 | + |
3098 | + |
3099 | +.material li.zip { |
3100 | + background: url('/globaleaks/static/images/box_16x16.png') no-repeat left center; |
3101 | +} |
3102 | + |
3103 | +.material li.img { |
3104 | + background: url('/globaleaks/static/images/image_16x16.png') no-repeat left center; |
3105 | +} |
3106 | + |
3107 | +.material li.pdf { |
3108 | + background: url('/globaleaks/static/images/document_fill_16x16.png') no-repeat left center; |
3109 | +} |
3110 | + |
3111 | +.material a { |
3112 | + display: block; |
3113 | + color: #fff; |
3114 | + text-decoration: none; |
3115 | + text-transform: uppercase; |
3116 | + font-weight: bold; |
3117 | + font-size: 14px; |
3118 | + float: left; |
3119 | + margin: 20px 10px 0 0; |
3120 | + padding: 10px 10px 10px 30px; |
3121 | + border-radius:5px; |
3122 | + -webkit-border-radius:5px; |
3123 | + -moz-border-radius:5px; |
3124 | +} |
3125 | + |
3126 | +.material a.zip { |
3127 | + background: #0a70b4 url('/globaleaks/static/images/icon-download-zip.png') no-repeat 5px center; |
3128 | +} |
3129 | + |
3130 | +.material a.crypt { |
3131 | + background: #0a70b4 url('/globaleaks/static/images/icon-download-crypt.png') no-repeat 5px center; |
3132 | +} |
3133 | + |
3134 | +.downloads-left { |
3135 | + font-size: 18px; |
3136 | + float: left; |
3137 | + background: #444; |
3138 | + padding: 5px 10px; |
3139 | + color: #fff; |
3140 | + margin: 0 10px 10px 0; |
3141 | +} |
3142 | + |
3143 | +.downloads-left.full { |
3144 | + background: #e60000; |
3145 | +} |
3146 | + |
3147 | + |
3148 | +.total-clicks { |
3149 | + font-size: 18px; |
3150 | + float: left; |
3151 | + background: #444; |
3152 | + padding: 5px 10px; |
3153 | + color: #fff; |
3154 | +} |
3155 | + |
3156 | +.entry .material { |
3157 | + padding: 20px; |
3158 | + background: #444; |
3159 | + color: #fff; |
3160 | + margin: 20px 0; |
3161 | +} |
3162 | + |
3163 | + |
3164 | +/* |
3165 | + * Media queries for responsive design |
3166 | + */ |
3167 | + |
3168 | +@media all and (orientation:portrait) { |
3169 | + /* Style adjustments for portrait mode goes here */ |
3170 | + |
3171 | +} |
3172 | + |
3173 | +@media all and (orientation:landscape) { |
3174 | + /* Style adjustments for landscape mode goes here */ |
3175 | + |
3176 | +} |
3177 | + |
3178 | +/* Grade-A Mobile Browsers (Opera Mobile, iPhone Safari, Android Chrome) |
3179 | + Consider this: www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/ */ |
3180 | +@media screen and (max-device-width: 480px) { |
3181 | + |
3182 | + |
3183 | + /* Uncomment if you don't want iOS and WinMobile to mobile-optimize the text for you |
3184 | + j.mp/textsizeadjust |
3185 | + html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */ |
3186 | +} |
3187 | + |
3188 | + |
3189 | +/* |
3190 | + * print styles |
3191 | + * inlined to avoid required HTTP connection www.phpied.com/delay-loading-your-print-css/ |
3192 | + */ |
3193 | +@media print { |
3194 | + * { background: transparent !important; color: #444 !important; text-shadow: none !important; } |
3195 | + a, a:visited { color: #444 !important; text-decoration: underline; } |
3196 | + a:after { content: " (" attr(href) ")"; } |
3197 | + abbr:after { content: " (" attr(title) ")"; } |
3198 | + .ir a:after { content: ""; } /* Don't show links for images */ |
3199 | + pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } |
3200 | + thead { display: table-header-group; } /* css-discuss.incutio.com/wiki/Printing_Tables */ |
3201 | + tr, img { page-break-inside: avoid; } |
3202 | + @page { margin: 0.5cm; } |
3203 | + p, h2, h3 { orphans: 3; widows: 3; } |
3204 | + h2, h3{ page-break-after: avoid; } |
3205 | +} |
3206 | |
3207 | === added file 'applications/globaleaks/static/css/semifixed.css' |
3208 | --- applications/globaleaks/static/css/semifixed.css 1970-01-01 00:00:00 +0000 |
3209 | +++ applications/globaleaks/static/css/semifixed.css 2011-09-02 13:53:25 +0000 |
3210 | @@ -0,0 +1,435 @@ |
3211 | +@charset "UTF-8"; |
3212 | +html, body, div, span, object, iframe, |
3213 | +h1, h2, h3, h4, h5, h6, p, blockquote, pre, |
3214 | +abbr, address, cite, code, |
3215 | +del, dfn, em, img, ins, kbd, q, samp, |
3216 | +small, strong, sub, sup, var, |
3217 | +b, i, |
3218 | +dl, dt, dd, ol, ul, li, |
3219 | +fieldset, form, label, legend, |
3220 | +table, caption, tbody, tfoot, thead, tr, th, td, |
3221 | +article, aside, canvas, details, figcaption, figure, |
3222 | +footer, header, hgroup, menu, nav, section, summary, |
3223 | +time, mark, audio, video { |
3224 | + margin:0; |
3225 | + padding:0; |
3226 | + border:0; |
3227 | + outline:0; |
3228 | + font: inherit; |
3229 | + font-size:100%; |
3230 | + vertical-align:baseline; |
3231 | + background:transparent; |
3232 | +} |
3233 | + |
3234 | +article, aside, details, figcaption, figure, |
3235 | +footer, header, hgroup, menu, nav, section { |
3236 | + display:block; |
3237 | +} |
3238 | + |
3239 | +nav ul { list-style:none; } |
3240 | + |
3241 | +blockquote, q { quotes:none; } |
3242 | + |
3243 | +blockquote:before, blockquote:after, |
3244 | +q:before, q:after { content:''; content:none; } |
3245 | + |
3246 | +a { margin:0; padding:0; font-size:100%; vertical-align:baseline; background:transparent; } |
3247 | +a:hover { text-decoration: underline } |
3248 | + |
3249 | +ins { background-color:#ff9; color:#000; text-decoration:none; } |
3250 | + |
3251 | +mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; } |
3252 | + |
3253 | +del { text-decoration: line-through; } |
3254 | + |
3255 | +abbr[title], dfn[title] { border-bottom:1px dotted #000; cursor:help; } |
3256 | + |
3257 | +/* tables still need cellspacing="0" in the markup */ |
3258 | +table { border-collapse:collapse; border-spacing:0; } |
3259 | + |
3260 | +hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; } |
3261 | + |
3262 | +input, select { vertical-align:middle; } |
3263 | + |
3264 | +ol, ul { |
3265 | + list-style: none; |
3266 | +} |
3267 | + |
3268 | +body { line-height: 1; font:13px/1.231 sans-serif; *font-size:small; } /* hack retained to preserve specificity */ |
3269 | + |
3270 | +body { |
3271 | + background: #f3f3f3; |
3272 | + font-family: Arial, sans-serif; |
3273 | + color: #444; |
3274 | +} |
3275 | + |
3276 | +.clear { |
3277 | + clear: both; |
3278 | +} |
3279 | + |
3280 | +strong { |
3281 | + font-weight: bold; |
3282 | +} |
3283 | + |
3284 | +a.button { |
3285 | + color: #fff; |
3286 | + border: 0; |
3287 | + border-radius: 5px; |
3288 | + -moz-border-radius: 5px; |
3289 | + -webkit-border-radius: 5px; |
3290 | + font-weight: bold; |
3291 | + cursor: pointer; |
3292 | + padding: 10px; |
3293 | + display: block; |
3294 | + text-decoration: none; |
3295 | + text-align: center; |
3296 | + margin: 20px 0 20px 10px; |
3297 | + float: right; |
3298 | + |
3299 | +} |
3300 | + |
3301 | +a.button.whistblower { |
3302 | + background: #0a70b4; |
3303 | + width: 200px; |
3304 | +} |
3305 | + |
3306 | +a.button.addtarget { |
3307 | + background: #444; |
3308 | + width: 100px; |
3309 | +} |
3310 | + |
3311 | +input[type=submit]{ |
3312 | + background: #444; |
3313 | + color: #fff; |
3314 | + border: 0; |
3315 | + border-radius: 5px; |
3316 | + -moz-border-radius: 5px; |
3317 | + -webkit-border-radius: 5px; |
3318 | + font-weight: bold; |
3319 | + cursor: pointer; |
3320 | + padding: 5px 10px; |
3321 | + display: block; |
3322 | + text-decoration: none; |
3323 | + text-align: center; |
3324 | + margin: 10px 0; |
3325 | + cursor: pointer; |
3326 | + font-size: 14px; |
3327 | +} |
3328 | + |
3329 | + |
3330 | +p.tulip{ |
3331 | + background: #444; |
3332 | + color: #fff; |
3333 | + border: 0; |
3334 | + border-radius: 5px; |
3335 | + -moz-border-radius: 5px; |
3336 | + -webkit-border-radius: 5px; |
3337 | + font-weight: bold; |
3338 | + padding: 20px; |
3339 | + display: block; |
3340 | + text-decoration: none; |
3341 | + text-align: center; |
3342 | + margin: 10px 0 20px 0; |
3343 | + font-size: 24px; |
3344 | + width: 300px; |
3345 | +} |
3346 | + |
3347 | + |
3348 | +#container { |
3349 | + background: #fff; |
3350 | + width: 880px; |
3351 | + padding: 40px; |
3352 | + margin: 20px auto; |
3353 | + -moz-box-shadow: 0px 0px 3px #dedede; |
3354 | + -webkit-box-shadow: 5px 5px 0px #dedede; |
3355 | + box-shadow: 0px 0px 10px #d0d0d0; |
3356 | +} |
3357 | + |
3358 | +#container img.ribbon { |
3359 | + float: right; |
3360 | + margin-left: 20px; |
3361 | + margin-right: -20px; |
3362 | + margin-top: -45px; |
3363 | +} |
3364 | + |
3365 | + |
3366 | +#header { |
3367 | + padding-bottom: 40px; |
3368 | +} |
3369 | + |
3370 | +ul#navigation { |
3371 | + float: right; |
3372 | +} |
3373 | + |
3374 | +ul#navigation li { |
3375 | + float: left; |
3376 | + margin-left: 10px; |
3377 | +} |
3378 | + |
3379 | +ul#navigation a { |
3380 | + color: #444; |
3381 | + text-decoration: none; |
3382 | + font-weight: bold; |
3383 | + font-size: 14px; |
3384 | +} |
3385 | + |
3386 | + |
3387 | +#content h1 { |
3388 | + font-size: 28px; |
3389 | + margin-bottom: 10px; |
3390 | + text-transform: uppercase; |
3391 | + font-weight: bold; |
3392 | +} |
3393 | + |
3394 | +#content h1 span { |
3395 | + font-weight: normal; |
3396 | + text-transform: none; |
3397 | +} |
3398 | + |
3399 | +#content p.intro { |
3400 | + line-height: 18px; |
3401 | + text-align: justify; |
3402 | + margin-bottom: 20px; |
3403 | +} |
3404 | + |
3405 | +#content .box { |
3406 | + background: #444; |
3407 | + width: 320px; |
3408 | + height: 320px; |
3409 | + margin: 20px 0; |
3410 | + float: left; |
3411 | + padding: 40px; |
3412 | +} |
3413 | + |
3414 | +#content .box:nth-child(even) { |
3415 | + margin-left: 40px; |
3416 | +} |
3417 | + |
3418 | +#content .box h2 { |
3419 | + text-transform: uppercase; |
3420 | + color: #fff; |
3421 | + font-weight: bold; |
3422 | + font-size: 24px; |
3423 | +} |
3424 | + |
3425 | +#content .box h2 span { |
3426 | + font-size: 48px; |
3427 | +} |
3428 | + |
3429 | +#content .box a { |
3430 | + display: block; |
3431 | + color: #fff; |
3432 | + text-decoration: none; |
3433 | + text-transform: uppercase; |
3434 | + font-weight: bold; |
3435 | + float: right; |
3436 | + margin-top: 32px; |
3437 | + background: #0a70b4; |
3438 | + padding: 10px; |
3439 | + border-radius:5px; |
3440 | + -webkit-border-radius:5px; |
3441 | + -moz-border-radius:5px; |
3442 | +} |
3443 | + |
3444 | +#content .box span.info { |
3445 | + display: block; |
3446 | + color: #fff; |
3447 | + text-decoration: none; |
3448 | + text-transform: uppercase; |
3449 | + font-weight: bold; |
3450 | + float: right; |
3451 | + margin-top: 42px; |
3452 | + font-style: italic; |
3453 | + padding-top: 0px; |
3454 | +} |
3455 | + |
3456 | +#content .box img { |
3457 | + margin-top: 30px; |
3458 | +} |
3459 | + |
3460 | + |
3461 | +#content form table td { |
3462 | + padding: 5px 5px 10px 5px; |
3463 | + vertical-align: top; |
3464 | +} |
3465 | + |
3466 | +#content form table td.w2p_fl { |
3467 | + font-size: 13px; |
3468 | + font-weight: bold; |
3469 | +} |
3470 | + |
3471 | +#content form label { |
3472 | + font-size: 13px; |
3473 | +} |
3474 | + |
3475 | + |
3476 | +#content form input.string { |
3477 | + border: 1px solid #ddd; |
3478 | + padding: 5px; |
3479 | + width: 350px; |
3480 | + font-size: 13px; |
3481 | +} |
3482 | + |
3483 | +#content form textarea { |
3484 | + border: 1px solid #ddd; |
3485 | + padding: 5px; |
3486 | + width: 350px; |
3487 | + font-size: 13px; |
3488 | +} |
3489 | + |
3490 | +#content form .error { |
3491 | + padding: 5px; |
3492 | + width: 350px; |
3493 | + font-size: 13px; |
3494 | + color: #fff; |
3495 | + background: #e60000; |
3496 | + margin-top: 5px; |
3497 | + font-weight: bold; |
3498 | +} |
3499 | + |
3500 | +#content table.targetlist { |
3501 | + width: 100%; |
3502 | + font-size: 14px; |
3503 | +} |
3504 | + |
3505 | +#content table.targetlist th { |
3506 | + //background: #005ea3; |
3507 | + background: #444; |
3508 | + color: #fff; |
3509 | + border: 1px solid #fff; |
3510 | + border-bottom: 2px solid #fff; |
3511 | + font-weight: bold; |
3512 | + padding: 5px; |
3513 | + text-align: left; |
3514 | +} |
3515 | + |
3516 | +#content table.targetlist td { |
3517 | + border: 1px solid #fff; |
3518 | + border-bottom: 2px solid #fff; |
3519 | + padding: 5px; |
3520 | + background: #ededed; |
3521 | + text-align: left; |
3522 | +} |
3523 | + |
3524 | +#content table.targetlist tr.odd td { |
3525 | + background: #f5f5f5; |
3526 | +} |
3527 | + |
3528 | +#content table.targetlist td.delete { |
3529 | + text-align: center; |
3530 | +} |
3531 | + |
3532 | +#content table.targetlist td.delete button { |
3533 | + background: #e60000; |
3534 | + color: #fff; |
3535 | + border: 0; |
3536 | + border-radius: 3px; |
3537 | + -moz-border-radius: 3px; |
3538 | + -webkit-border-radius: 3px; |
3539 | + font-weight: bold; |
3540 | + cursor: pointer; |
3541 | +} |
3542 | + |
3543 | +#content table.targetlist .downloads { |
3544 | + width: 70px; |
3545 | + text-align: center; |
3546 | +} |
3547 | + |
3548 | +.entry { |
3549 | + width: 500px; |
3550 | + margin: 0 auto; |
3551 | + padding: 40px; |
3552 | + background: #f4f4f4; |
3553 | +} |
3554 | + |
3555 | +.entry h2, .entry h3 { |
3556 | + font-weight: bold; |
3557 | + font-size: 18px; |
3558 | + margin-bottom: 5px; |
3559 | +} |
3560 | + |
3561 | +.entry h2.title { |
3562 | + font-size: 28px; |
3563 | +} |
3564 | + |
3565 | +.entry h3 { |
3566 | + margin-bottom: 20px; |
3567 | + padding-top: 5px; |
3568 | +} |
3569 | + |
3570 | + |
3571 | +.entry p { |
3572 | + font-size: 14px; |
3573 | +} |
3574 | + |
3575 | +.entry li { |
3576 | + padding: 7px 0 7px 30px; |
3577 | + font-size: 14px; |
3578 | +} |
3579 | + |
3580 | + |
3581 | +.material li.zip { |
3582 | + background: url('/globaleaks/static/images/box_16x16.png') no-repeat left center; |
3583 | +} |
3584 | + |
3585 | +.material li.img { |
3586 | + background: url('/globaleaks/static/images/image_16x16.png') no-repeat left center; |
3587 | +} |
3588 | + |
3589 | +.material li.pdf { |
3590 | + background: url('/globaleaks/static/images/document_fill_16x16.png') no-repeat left center; |
3591 | +} |
3592 | + |
3593 | +.material a { |
3594 | + display: block; |
3595 | + color: #fff; |
3596 | + text-decoration: none; |
3597 | + text-transform: uppercase; |
3598 | + font-weight: bold; |
3599 | + font-size: 14px; |
3600 | + float: left; |
3601 | + margin: 20px 10px 0 0; |
3602 | + padding: 10px 10px 10px 30px; |
3603 | + border-radius:5px; |
3604 | + -webkit-border-radius:5px; |
3605 | + -moz-border-radius:5px; |
3606 | +} |
3607 | + |
3608 | +.material a.zip { |
3609 | + background: #0a70b4 url('/globaleaks/static/images/icon-download-zip.png') no-repeat 5px center; |
3610 | +} |
3611 | + |
3612 | +.material a.crypt { |
3613 | + background: #0a70b4 url('/globaleaks/static/images/icon-download-crypt.png') no-repeat 5px center; |
3614 | +} |
3615 | + |
3616 | +.downloads-left { |
3617 | + font-size: 18px; |
3618 | + float: left; |
3619 | + background: #444; |
3620 | + padding: 5px 10px; |
3621 | + color: #fff; |
3622 | + margin: 0 10px 10px 0; |
3623 | +} |
3624 | + |
3625 | +.downloads-left.full { |
3626 | + background: #e60000; |
3627 | +} |
3628 | + |
3629 | + |
3630 | +.total-clicks { |
3631 | + font-size: 18px; |
3632 | + float: left; |
3633 | + background: #444; |
3634 | + padding: 5px 10px; |
3635 | + color: #fff; |
3636 | +} |
3637 | + |
3638 | +.entry .material { |
3639 | + padding: 20px; |
3640 | + background: #444; |
3641 | + color: #fff; |
3642 | + margin: 20px 0; |
3643 | +} |
3644 | + |
3645 | + |
3646 | |
3647 | === added file 'applications/globaleaks/static/images/background-big.png' |
3648 | Binary files applications/globaleaks/static/images/background-big.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/background-big.png 2011-09-02 13:53:25 +0000 differ |
3649 | === added file 'applications/globaleaks/static/images/background.png' |
3650 | Binary files applications/globaleaks/static/images/background.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/background.png 2011-09-02 13:53:25 +0000 differ |
3651 | === added file 'applications/globaleaks/static/images/box_16x16.png' |
3652 | Binary files applications/globaleaks/static/images/box_16x16.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/box_16x16.png 2011-09-02 13:53:25 +0000 differ |
3653 | === added file 'applications/globaleaks/static/images/demo_node_maintainer.png' |
3654 | Binary files applications/globaleaks/static/images/demo_node_maintainer.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/demo_node_maintainer.png 2011-09-02 13:53:25 +0000 differ |
3655 | === added file 'applications/globaleaks/static/images/demo_target.png' |
3656 | Binary files applications/globaleaks/static/images/demo_target.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/demo_target.png 2011-09-02 13:53:25 +0000 differ |
3657 | === added file 'applications/globaleaks/static/images/demo_whistleblower1.png' |
3658 | Binary files applications/globaleaks/static/images/demo_whistleblower1.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/demo_whistleblower1.png 2011-09-02 13:53:25 +0000 differ |
3659 | === added file 'applications/globaleaks/static/images/document_fill_16x16.png' |
3660 | Binary files applications/globaleaks/static/images/document_fill_16x16.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/document_fill_16x16.png 2011-09-02 13:53:25 +0000 differ |
3661 | === modified file 'applications/globaleaks/static/images/globaleaks.png' |
3662 | Binary files applications/globaleaks/static/images/globaleaks.png 2011-08-28 13:59:09 +0000 and applications/globaleaks/static/images/globaleaks.png 2011-09-02 13:53:25 +0000 differ |
3663 | === added file 'applications/globaleaks/static/images/icon-admin.png' |
3664 | Binary files applications/globaleaks/static/images/icon-admin.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/icon-admin.png 2011-09-02 13:53:25 +0000 differ |
3665 | === added file 'applications/globaleaks/static/images/icon-download-crypt.png' |
3666 | Binary files applications/globaleaks/static/images/icon-download-crypt.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/icon-download-crypt.png 2011-09-02 13:53:25 +0000 differ |
3667 | === added file 'applications/globaleaks/static/images/icon-download-zip.png' |
3668 | Binary files applications/globaleaks/static/images/icon-download-zip.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/icon-download-zip.png 2011-09-02 13:53:25 +0000 differ |
3669 | === added file 'applications/globaleaks/static/images/icon-report.png' |
3670 | Binary files applications/globaleaks/static/images/icon-report.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/icon-report.png 2011-09-02 13:53:25 +0000 differ |
3671 | === added file 'applications/globaleaks/static/images/icon-target.png' |
3672 | Binary files applications/globaleaks/static/images/icon-target.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/icon-target.png 2011-09-02 13:53:25 +0000 differ |
3673 | === added file 'applications/globaleaks/static/images/icon-whistleblower.png' |
3674 | Binary files applications/globaleaks/static/images/icon-whistleblower.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/icon-whistleblower.png 2011-09-02 13:53:25 +0000 differ |
3675 | === added file 'applications/globaleaks/static/images/image_16x16.png' |
3676 | Binary files applications/globaleaks/static/images/image_16x16.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/image_16x16.png 2011-09-02 13:53:25 +0000 differ |
3677 | === added file 'applications/globaleaks/static/images/prototype.png' |
3678 | Binary files applications/globaleaks/static/images/prototype.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/prototype.png 2011-09-02 13:53:25 +0000 differ |
3679 | === added file 'applications/globaleaks/static/images/ribbon.png' |
3680 | Binary files applications/globaleaks/static/images/ribbon.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/ribbon.png 2011-09-02 13:53:25 +0000 differ |
3681 | === added file 'applications/globaleaks/static/images/whistleblower2.png' |
3682 | Binary files applications/globaleaks/static/images/whistleblower2.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/images/whistleblower2.png 2011-09-02 13:53:25 +0000 differ |
3683 | === added file 'applications/globaleaks/static/js/AlteHaas_700.font.js' |
3684 | --- applications/globaleaks/static/js/AlteHaas_700.font.js 1970-01-01 00:00:00 +0000 |
3685 | +++ applications/globaleaks/static/js/AlteHaas_700.font.js 2011-09-02 13:53:25 +0000 |
3686 | @@ -0,0 +1,19 @@ |
3687 | +/*! |
3688 | + * The following copyright notice may not be removed under any circumstances. |
3689 | + * |
3690 | + * Copyright: |
3691 | + * Copyright (c) 2007 by Yann Le Coroller. All rights reserved. |
3692 | + * |
3693 | + * Description: |
3694 | + * Copyright (c) 2007 by Yann Le Coroller. All rights reserved. |
3695 | + * |
3696 | + * Manufacturer: |
3697 | + * Yann Le Coroller |
3698 | + * |
3699 | + * Designer: |
3700 | + * Yann Le Coroller |
3701 | + * |
3702 | + * Vendor URL: |
3703 | + * http://www.kub.fr/ |
3704 | + */ |
3705 | +Cufon.registerFont({"w":200,"face":{"font-family":"AlteHaas","font-weight":700,"font-stretch":"normal","units-per-em":"360","panose-1":"2 0 8 3 0 0 0 9 0 4","ascent":"288","descent":"-72","bbox":"-6.19356 -290.188 335 78.0141","underline-thickness":"18","underline-position":"-27","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":100},"!":{"d":"43,-78v-20,-39,-19,-108,-19,-169v0,-16,29,-9,45,-9v21,39,-3,119,-5,169v0,9,-12,12,-21,9xm22,-46v6,-15,60,-17,56,5v-3,17,8,44,-16,41v-17,-2,-40,7,-40,-16r0,-30","w":100},"\"":{"d":"37,-256v19,-4,39,-1,31,22r0,83v2,13,-15,8,-27,9v-9,0,-10,-5,-10,-14r-1,-86v0,-9,1,-12,7,-14xm104,-256v19,-4,39,-1,31,22r0,82v2,13,-13,10,-26,10v-9,0,-12,-5,-11,-14r-1,-86v0,-9,1,-12,7,-14","w":166},"#":{"d":"49,-123v14,-44,-36,-4,-25,-53v7,-10,39,6,35,-23v9,-21,-9,-60,36,-52v13,12,-2,41,-2,62v0,12,14,9,25,9v20,-5,9,-38,17,-60v-1,-13,15,-11,28,-11v18,11,-9,50,3,70v17,-2,26,8,21,27v-14,11,-41,1,-35,43v2,14,36,1,24,35v-4,11,-35,-2,-32,17v-9,22,8,68,-33,59v-23,-5,11,-53,-7,-71v-40,-10,-29,34,-37,62v0,12,-19,9,-30,8v-9,-12,3,-39,3,-58v6,-24,-36,4,-28,-36v3,-19,42,5,37,-28xm82,-111v16,21,45,2,39,-27v1,-14,-14,-9,-27,-10v-14,4,-8,22,-12,37"},"$":{"d":"96,-290v26,-3,3,31,29,29v35,10,62,26,65,69v-7,10,-26,3,-43,5v-11,-8,-11,-30,-29,-32v-16,4,-4,39,-6,60v49,15,106,40,85,110v-10,32,-40,49,-79,54v-16,3,3,33,-20,31v-19,-1,4,-34,-24,-32v-43,-9,-67,-34,-72,-82v8,-9,52,-10,51,9v3,17,17,34,36,28v-1,-27,13,-76,-21,-76v-33,-12,-67,-30,-61,-78v5,-38,31,-60,71,-66v17,1,6,-25,18,-29xm79,-219v-30,3,-28,56,5,54v11,-6,6,-36,4,-52v-1,-3,-6,-4,-9,-2xm111,-44v13,16,41,-7,39,-29v-2,-18,-21,-34,-38,-26v-4,14,1,36,-1,55"},"%":{"d":"236,-251v1,-10,26,-13,30,-4r-139,254v-3,8,-12,8,-24,8v-13,0,-5,-14,-1,-17xm85,-257v78,-7,81,128,17,138v-57,9,-84,-33,-72,-89v6,-29,23,-47,55,-49xm85,-230v-29,4,-32,80,-4,86v39,9,36,-68,15,-84v-3,-2,-6,-2,-11,-2xm292,1v-57,14,-87,-28,-77,-91v7,-49,92,-61,110,-14v15,40,5,96,-33,105xm271,-108v-32,4,-32,89,3,86v31,-2,30,-79,3,-86r-6,0","w":360},"&":{"d":"162,-102v19,8,15,-39,58,-18v8,29,-36,54,-8,75v8,15,29,26,30,44v-25,-1,-57,9,-66,-14v-24,-13,-71,41,-121,12v-51,-13,-55,-102,-11,-127v11,-6,28,-14,15,-29v-32,-37,-6,-100,51,-100v77,0,93,91,36,119v-14,14,9,27,16,38xm60,-75v-8,42,68,51,77,13v-16,-16,-24,-39,-45,-49v-17,6,-28,18,-32,36xm113,-167v27,-4,36,-57,0,-58v-31,1,-24,52,0,58","w":246},"'":{"d":"37,-256v19,-3,37,-3,32,22r0,83v2,13,-15,8,-27,9v-10,1,-10,-6,-11,-14r0,-86v0,-8,1,-12,6,-14","w":100},"(":{"d":"104,-258v-39,73,-46,235,-1,312v7,12,-10,11,-22,11v-86,-49,-78,-273,-7,-328v11,1,28,-3,30,5","w":106},")":{"d":"39,63v-14,4,-43,6,-35,-10v44,-78,39,-230,0,-305v-7,-14,13,-11,28,-11v75,65,68,258,7,326","w":106},"*":{"d":"55,-146v-5,15,-28,6,-27,-8v1,-13,30,-31,8,-37v-15,-4,-34,-14,-18,-32v12,-5,21,7,33,8v21,2,-11,-49,28,-42v19,-1,-5,44,19,41v14,-8,37,-15,38,8v2,19,-49,12,-30,34v4,8,12,13,13,23v-3,10,-22,19,-27,7v-7,-8,-16,-31,-27,-16","w":146},"+":{"d":"138,-110v30,0,66,-16,61,27v-3,22,-41,7,-63,12v-30,6,22,82,-38,71v-18,-3,-5,-39,-9,-62v-4,-21,-39,-7,-63,-10v-12,-2,-7,-18,-8,-29v5,-18,39,-5,63,-9v27,-4,-20,-72,33,-72v25,0,7,39,14,62v0,6,3,10,10,10","w":216},",":{"d":"29,-55v21,3,49,-11,49,16v0,53,-7,89,-50,96v-25,-23,35,-35,12,-57v-24,5,-17,-22,-18,-45v0,-6,2,-9,7,-10","w":100},"-":{"d":"113,-120v20,-4,14,22,13,38v-1,7,-8,5,-15,5r-78,1v-18,2,-15,-20,-13,-35v0,-6,3,-9,9,-9r84,0","w":146},".":{"d":"77,-8v-8,13,-61,16,-55,-8v3,-14,-8,-41,10,-39v17,2,47,-10,46,14v0,11,1,24,-1,33","w":100},"\/":{"d":"1,2v25,-89,64,-169,92,-255v4,-12,33,-12,41,-5r-94,256v-3,11,-31,11,-39,4","w":133},"0":{"d":"85,-256v95,-11,115,74,105,168v-6,58,-43,103,-113,89v-70,-14,-80,-110,-64,-184v8,-39,29,-68,72,-73xm91,-39v60,10,55,-83,47,-137v-3,-24,-22,-49,-52,-37v-36,15,-31,89,-24,136v3,19,11,35,29,38"},"1":{"d":"35,-164v-18,-10,-9,-48,19,-39v26,-6,40,-24,49,-46v11,-4,45,-8,38,16r0,221v1,19,-27,11,-46,11v-13,-32,-1,-107,-5,-155v-6,-15,-35,-2,-55,-8"},"2":{"d":"64,-174v5,24,-42,23,-50,12v-12,-109,159,-126,175,-31v15,89,-78,94,-109,145v19,11,65,0,99,4v19,-2,11,18,13,37v-3,12,-26,7,-41,7r-131,0v-26,-4,-1,-47,6,-60v29,-52,122,-52,112,-129v-4,-33,-67,-29,-71,3"},"3":{"d":"88,-149v47,7,65,-61,17,-66v-31,-3,-41,20,-48,43v-16,5,-58,7,-40,-26v11,-70,133,-75,160,-16v14,30,-1,65,-20,78v23,15,45,41,33,82v-13,44,-65,69,-122,54v-36,-9,-62,-38,-60,-82v5,-8,43,-9,47,3v-3,44,71,59,83,15v9,-35,-12,-50,-48,-50v-11,0,-12,-31,-2,-35"},"4":{"d":"161,-118v-4,40,42,-9,33,50v-3,20,-44,-5,-33,33v9,32,-19,46,-48,30v-3,-24,14,-54,-26,-54r-75,0v-25,-58,39,-95,62,-137v22,-22,27,-65,80,-55v7,1,7,8,7,15r0,118xm52,-108v13,16,74,18,61,-18v-2,-17,2,-42,-5,-54v-22,20,-37,48,-56,72"},"5":{"d":"17,-124v13,-41,5,-106,32,-128r123,1v14,4,13,48,-9,41r-77,0v-17,1,-18,36,-15,51v60,-32,129,7,122,86v-8,92,-165,101,-183,19v-10,-22,14,-23,38,-21v16,51,115,41,92,-29v-7,-20,-27,-34,-55,-27v-17,9,-35,26,-66,16v-2,-2,-3,-5,-2,-9"},"6":{"d":"92,-166v81,-24,128,77,78,141v-29,37,-114,35,-138,-6v-42,-74,-31,-227,72,-226v48,0,74,23,82,62v-2,13,-24,5,-40,7v-16,-9,-16,-35,-44,-31v-30,4,-45,38,-41,69v13,-3,18,-12,31,-16xm64,-68v11,48,82,35,77,-16v8,-52,-71,-64,-77,-14v-4,7,-2,22,0,30"},"7":{"d":"15,-210v0,-15,-8,-42,9,-42r154,1v16,6,7,53,-7,57v-37,47,-62,104,-67,183v-1,17,-30,10,-48,10v-13,-3,-4,-26,-2,-36v10,-67,44,-117,73,-163v-17,-12,-67,-2,-99,-5v-8,0,-12,0,-13,-5"},"8":{"d":"130,1v-67,14,-136,-17,-122,-91v0,-27,31,-30,35,-49v-15,-11,-27,-24,-27,-51v0,-81,135,-80,161,-27v14,29,1,68,-20,79v19,19,49,42,35,86v-8,28,-31,46,-62,53xm114,-217v-51,-17,-72,58,-22,66v46,14,65,-55,22,-66xm57,-82v-8,54,74,65,85,20v9,-35,-18,-62,-57,-52v-16,5,-25,15,-28,32"},"9":{"d":"77,-255v126,-27,144,167,76,237v-37,38,-138,25,-139,-41v7,-12,52,-9,52,9v14,29,64,12,66,-14v1,-12,12,-27,6,-38v-19,8,-32,22,-63,18v-48,-7,-77,-49,-65,-104v8,-37,29,-59,67,-67xm89,-122v35,4,47,-18,49,-50v2,-35,-48,-59,-70,-29v-17,23,-11,76,21,79"},":":{"d":"77,-135v-8,13,-61,16,-55,-8v3,-14,-8,-41,10,-39v17,2,47,-10,46,14v0,11,1,24,-1,33xm77,-8v-8,13,-61,16,-55,-8v3,-14,-8,-41,10,-39v17,2,47,-10,46,14v0,11,1,24,-1,33","w":100},";":{"d":"77,-135v-8,13,-61,16,-55,-8v3,-14,-8,-41,10,-39v17,2,47,-10,46,14v0,11,1,24,-1,33xm29,-55v21,3,49,-11,49,16v0,53,-7,89,-50,96v-25,-23,35,-35,12,-57v-24,5,-17,-22,-18,-45v0,-6,2,-9,7,-10","w":100},"<":{"d":"197,-145v-35,23,-90,28,-121,55v35,22,84,32,119,51v10,10,5,53,-16,33r-160,-65v-4,-13,-6,-46,12,-46r162,-64v11,0,6,26,4,36","w":216},"=":{"d":"27,-111v-17,0,-11,-34,-3,-37r165,0v14,-2,10,19,9,31v-1,7,-8,6,-15,6r-156,0xm173,-71v24,-10,36,22,19,37r-163,1v-14,1,-11,-16,-11,-30v-1,-8,7,-8,15,-8r140,0","w":216},">":{"d":"19,-37v35,-23,90,-28,121,-55v-34,-22,-84,-33,-119,-51v-10,-9,-5,-54,16,-33r160,64v4,14,6,47,-12,47r-162,64v-10,-1,-6,-27,-4,-36","w":216},"?":{"d":"112,-220v-30,-5,-45,14,-48,39v-4,11,-28,4,-43,6v-27,-45,44,-108,111,-84v61,6,73,102,22,129v-15,8,-31,20,-31,42v0,17,-26,10,-42,10v-22,-39,27,-72,48,-94v7,-18,2,-45,-17,-48xm77,-55v35,-7,59,2,48,50v-9,7,-59,15,-55,-11v2,-14,-5,-37,7,-39"},"@":{"d":"206,-81v40,0,49,-59,36,-97v-14,-41,-57,-60,-113,-55v-79,7,-105,127,-51,182v27,27,85,35,126,18v14,-6,33,-30,52,-14v-23,39,-79,56,-139,48v-110,-14,-132,-186,-46,-239v89,-54,232,-4,199,117v-12,43,-65,93,-108,57v-40,34,-103,1,-92,-66v9,-51,71,-95,116,-55v7,-2,20,-20,35,-7v-3,38,-19,65,-22,103v1,6,1,8,7,8xm126,-84v46,11,73,-72,25,-84v-38,-1,-58,48,-37,78v3,3,7,5,12,6","w":288},"A":{"d":"156,-249r89,244v-8,10,-64,11,-60,-13v-8,-15,-5,-39,-28,-40r-70,0v-38,7,-3,72,-74,58v-12,2,-13,-10,-8,-18r91,-237v16,-2,55,-9,60,6xm93,-102v21,4,72,13,57,-18v-10,-21,-12,-49,-27,-65v-15,23,-24,54,-30,83","w":246,"k":{"y":6,"w":6,"v":6,"Y":27,"W":9,"V":17,"T":33}},"B":{"d":"225,-212v8,33,-11,56,-24,72v24,16,47,44,36,87v-17,67,-122,53,-205,52v-9,0,-7,-13,-7,-23r0,-221v0,-8,4,-11,10,-12v69,9,174,-19,190,45xm157,-210v-43,-11,-95,-10,-74,54v25,7,90,13,90,-24v0,-16,-5,-25,-16,-30xm95,-43v39,-2,86,7,89,-32v3,-46,-52,-42,-95,-39v-17,6,-8,38,-8,60v0,8,5,11,14,11","w":253},"C":{"d":"118,4v-134,-11,-140,-267,17,-267v64,0,113,36,111,90v-17,4,-55,7,-56,-15v-13,-21,-39,-34,-71,-25v-41,11,-52,62,-46,115v7,63,114,77,123,12v3,-19,27,-11,47,-13v20,9,-1,44,-8,56v-19,35,-62,52,-117,47","w":266},"D":{"d":"25,-236v0,-11,-1,-20,10,-21v137,-21,259,43,206,189v-16,44,-53,69,-115,68r-94,-1v-9,0,-7,-13,-7,-23r0,-212xm90,-47v83,12,117,-32,103,-111v-7,-43,-54,-60,-108,-50v-10,34,-3,110,-3,156v1,3,4,5,8,5","w":266},"E":{"d":"25,-219v2,-15,-7,-38,10,-38r174,1v13,3,6,25,7,39v-3,13,-27,7,-41,7r-86,1v-16,2,-6,32,-7,50v23,12,75,2,115,5v13,1,8,25,7,37v0,10,-16,6,-28,6r-86,0v-17,2,-6,35,-9,56v1,13,23,8,36,8r92,0v16,0,8,22,10,39v-2,15,-28,8,-43,8r-144,-1v-14,-1,-7,-27,-7,-41r0,-177","w":233},"F":{"d":"25,-231v1,-12,-4,-25,10,-25r162,0v13,1,8,27,7,42v-23,12,-71,4,-108,4v-25,0,-13,29,-15,51v-1,13,16,9,28,10r72,0v12,1,5,22,7,36v-1,10,-15,6,-26,7r-72,0v-13,0,-8,17,-9,29v-4,37,21,91,-48,77v-15,-2,-8,-30,-8,-46r0,-185","w":213,"k":{"A":20,".":57,",":57}},"G":{"d":"206,-23v-104,92,-257,-63,-168,-190v20,-29,49,-50,97,-50v62,0,102,29,111,81v3,16,-34,8,-50,7v-11,-27,-35,-49,-76,-39v-78,19,-63,196,36,171v25,-6,39,-20,44,-46v-4,-26,-70,19,-55,-45v18,-12,62,-3,95,-5v23,-1,8,37,12,57r-1,72v1,13,-16,9,-28,9v-11,0,-6,-20,-17,-22","w":273},"H":{"d":"25,-204v3,-19,-8,-49,10,-53v21,4,54,-12,46,27v4,24,-12,66,12,72r82,0v28,-6,-3,-74,17,-98v19,3,50,-13,50,16r0,231v-2,15,-32,8,-50,8v-16,-16,0,-70,-7,-105v-20,-11,-69,-3,-99,-4v-12,19,-5,64,-5,97v0,20,-23,12,-42,13v-25,1,-14,-37,-14,-60r0,-144","w":266},"I":{"d":"24,-178v5,-25,-11,-70,10,-78v18,3,46,-12,46,18r0,225v3,22,-26,10,-47,13v-15,-3,-9,-30,-9,-47r0,-131","w":106},"J":{"d":"119,-203v3,-20,-8,-50,10,-54v24,1,47,-9,46,31r-4,180v-11,66,-138,67,-158,9v-5,-14,-9,-32,-7,-50v2,-14,27,-7,44,-8v10,3,4,20,8,31v4,33,61,29,61,-8r0,-131"},"K":{"d":"25,-204v3,-19,-9,-50,10,-53v22,3,54,-11,46,29v3,22,-4,53,4,70v35,-27,62,-64,93,-95v14,-7,46,-5,65,-2v3,11,-13,17,-18,25v-23,25,-50,46,-70,74v29,56,70,97,101,149v-6,15,-75,11,-76,-10r-63,-93v-39,3,-38,53,-36,101v-2,15,-31,8,-47,8v-18,-3,-9,-39,-9,-59r0,-144","w":259},"L":{"d":"25,-219v2,-15,-7,-37,10,-38v19,3,46,-11,46,19r1,186v26,13,80,-1,118,6v12,2,4,25,6,40v-6,10,-27,6,-42,6r-132,-1v-14,-1,-7,-27,-7,-41r0,-177","w":213,"k":{"y":13,"Y":40,"W":20,"V":33,"T":33}},"M":{"d":"71,-1v-20,0,-46,9,-46,-15r2,-237v16,-5,78,-14,82,11r56,153v27,-48,34,-120,60,-166v16,-5,44,0,67,-2v10,0,9,11,9,22r0,227v-3,14,-30,7,-47,7v-18,-35,8,-120,-10,-164v-25,50,-35,112,-60,162v-17,7,-50,6,-49,-17r-54,-143v-9,37,-2,105,-4,154v0,5,-1,8,-6,8","w":326},"N":{"d":"25,-204v3,-19,-8,-49,10,-53v20,1,47,-5,53,11r96,151v12,-2,5,-28,5,-43r0,-108v1,-17,29,-10,47,-10v12,7,6,37,6,57r0,189v-3,18,-60,15,-64,-3r-91,-145v-3,-7,-9,-3,-9,2r-1,144v2,20,-27,10,-46,11v-12,-9,-6,-39,-6,-59r0,-144","w":266},"O":{"d":"213,-241v98,69,49,282,-111,242v-92,-23,-113,-176,-43,-236v33,-28,115,-34,154,-6xm75,-92v23,85,145,51,136,-35v-5,-53,-24,-94,-83,-88v-51,6,-67,69,-53,123","w":280},"P":{"d":"25,-231v0,-13,-3,-26,10,-26v86,0,202,-20,194,92v-5,64,-60,78,-137,72v-23,7,-6,52,-11,81v1,19,-30,11,-48,11v-7,0,-9,-7,-8,-15r0,-215xm81,-201v5,31,-18,65,28,65v36,0,66,-2,66,-40v0,-42,-47,-39,-88,-37v-4,2,-7,6,-6,12","w":240,"k":{"A":27,".":64,",":64}},"Q":{"d":"234,18v-16,-18,-36,-31,-66,-15v-107,15,-173,-60,-150,-169v12,-58,49,-91,117,-97v124,-11,162,142,102,227v8,20,40,38,4,55v-3,1,-5,1,-7,-1xm150,-79v32,-9,71,13,58,-75v-7,-40,-37,-69,-87,-59v-65,13,-67,146,-10,165v9,7,28,8,43,6v13,-12,-26,-23,-4,-37","w":280},"R":{"d":"228,-145v-43,27,20,61,10,124v4,11,6,23,-13,21v-17,-2,-42,4,-39,-17v-5,-44,-2,-92,-65,-84v-22,3,-47,-7,-40,28r-1,68v-7,10,-26,3,-43,5v-11,0,-12,-7,-12,-19r0,-227v-1,-8,4,-9,10,-11r151,3v42,7,66,65,42,109xm87,-141v48,5,111,4,92,-53v-9,-27,-55,-17,-91,-19v-16,6,-3,39,-7,62v0,5,2,9,6,10","w":259,"k":{"Y":13,"W":6,"V":6,"T":6}},"S":{"d":"170,-66v-4,-43,-56,-38,-92,-50v-36,-12,-71,-38,-58,-88v10,-37,43,-58,89,-58v59,0,102,19,106,73v1,16,-30,7,-48,8v-12,-20,-25,-43,-64,-38v-20,3,-34,14,-30,37v43,43,188,24,144,141v-28,75,-208,60,-208,-33v0,-18,26,-9,44,-11v18,3,10,31,29,38v23,15,84,16,88,-19","w":233},"T":{"d":"74,-209v-37,-2,-88,12,-65,-46v59,-5,140,-3,203,0v5,11,11,54,-18,45v-22,6,-56,-16,-56,24r-1,179v-3,13,-33,6,-48,6v-15,-5,-7,-37,-7,-55r-1,-147v-1,-4,-3,-6,-7,-6","w":219,"k":{"y":40,"w":40,"u":33,"s":40,"r":33,"o":40,"e":40,"c":40,"a":40,"A":33,";":40,":":40,".":40,"-":46,",":40}},"U":{"d":"242,-114v4,79,-31,117,-104,119v-81,2,-114,-38,-114,-120r0,-133v2,-17,29,-6,48,-9v14,6,7,36,8,56v5,70,-24,182,74,157v59,-15,25,-122,32,-201v2,-20,27,-9,48,-12v17,7,8,47,8,70r0,73","w":266},"V":{"d":"78,-8r-77,-245v11,-6,61,-12,59,12r52,155v14,-6,12,-27,18,-41v17,-41,25,-90,44,-128v12,-4,37,-3,50,0v-16,88,-55,168,-78,249v-10,10,-57,11,-68,-2","w":226,"k":{"y":6,"u":13,"r":13,"o":20,"i":6,"e":20,"a":20,"A":17,";":17,":":17,".":46,"-":20,",":46}},"W":{"d":"66,-9v-11,-78,-67,-179,-54,-248r36,0v34,31,21,120,51,163v22,-49,24,-114,48,-162v17,2,46,-7,50,7r42,157v5,0,4,-6,6,-8r29,-122v6,-14,1,-37,24,-35v13,2,37,-6,37,8r-55,208v-8,15,-2,44,-28,41v-17,-2,-37,4,-42,-13v-14,-49,-19,-109,-42,-150v-19,48,-26,106,-41,157v-9,9,-54,12,-61,-3","w":339,"k":{"u":6,"r":6,"o":21,"e":21,"a":13,"A":9,";":6,":":6,".":27,",":27}},"X":{"d":"86,-133v-9,-42,-77,-85,-67,-124v25,2,58,-7,63,20v13,19,23,41,39,57v21,-18,32,-47,47,-69v9,-13,45,-10,61,-4v-20,46,-58,77,-74,121r78,118v2,3,8,13,-2,13v-25,0,-63,7,-67,-18r-42,-64v-18,2,-22,31,-34,41v-16,14,-12,44,-44,42v-17,0,-49,8,-34,-16","w":240},"Y":{"d":"138,-1v-26,-2,-54,11,-46,-29v-1,-37,4,-79,-17,-98r-72,-120v-1,-17,36,-7,56,-8v22,27,37,60,55,90v26,6,36,-52,55,-71v3,-24,39,-22,68,-19v-23,83,-89,115,-89,243v0,7,-2,13,-10,12","w":240,"k":{"v":20,"u":27,"q":33,"p":27,"o":40,"i":13,"e":40,"a":33,"A":27,";":33,":":33,".":50,"-":40,",":50}},"Z":{"d":"9,-8v-9,-44,24,-64,42,-87v29,-38,63,-70,89,-111v-23,-10,-74,-1,-112,-4v-14,0,-8,-24,-8,-38v0,-7,4,-7,9,-9r185,1v17,8,5,56,-8,62r-91,108v-5,12,-36,28,-18,39r120,0v12,3,8,26,7,40v-5,12,-30,7,-47,7r-158,0v-7,-1,-9,-2,-10,-8","w":233},"[":{"d":"75,9v-4,37,44,-5,44,32v0,13,2,24,-14,24r-69,0v-13,1,-11,-10,-11,-20r0,-299v10,-20,54,-4,86,-9v16,6,12,50,-14,40v-15,-2,-22,1,-22,18r0,214","w":119},"\\":{"d":"94,-1r-94,-257v11,-12,46,-5,44,14r89,245v-4,9,-35,8,-39,-2","w":133},"]":{"d":"45,-207v0,-40,-56,13,-44,-47v11,-20,54,-5,83,-9v13,-2,11,10,11,20r0,299v-10,20,-54,4,-86,9v-16,-5,-13,-49,13,-40v15,1,23,0,23,-18r0,-214","w":119},"^":{"d":"74,-135v2,19,-36,31,-47,16v17,-47,37,-88,58,-130v25,-9,60,-2,59,24r44,97v8,13,-7,17,-24,15v-23,-2,-20,-29,-31,-45v-10,-14,-12,-26,-19,-42v-22,-7,-26,47,-40,65","w":216},"_":{"d":"18,44v-16,5,-27,-17,-9,-17r167,1v7,10,-1,16,-14,16r-144,0","w":180},"`":{"d":"67,-212v-32,15,-75,-31,-70,-47v9,-2,22,0,34,-1v19,8,31,29,36,48","w":93},"a":{"d":"111,-156v-28,-3,-37,12,-48,26v-48,15,-51,-28,-18,-46v45,-24,139,-24,141,50r3,120v-6,12,-50,10,-54,-6v-46,35,-152,11,-118,-65v14,-28,52,-28,88,-34v32,4,42,-41,6,-45xm63,-49v16,38,82,20,72,-29v-4,-18,-36,-2,-51,0v-14,1,-23,11,-21,29","w":206},"b":{"d":"71,-173v19,0,46,-26,82,-13v84,30,66,213,-44,189v-17,-4,-27,-18,-40,-16v0,18,-23,12,-43,13v-7,-2,-6,-9,-7,-18r0,-228v0,-17,25,-8,44,-10v16,12,2,55,8,83xm104,-34v44,7,59,-40,49,-82v-5,-23,-28,-44,-57,-33v-39,15,-38,108,8,115","w":219},"c":{"d":"17,-64v-14,-68,20,-127,87,-127v50,0,84,19,90,65v-6,8,-51,11,-51,-7v-24,-41,-87,-10,-79,42v-9,56,68,80,83,26v3,-10,41,-10,48,0v-9,50,-50,78,-112,67v-34,-6,-59,-32,-66,-66","w":206},"d":{"d":"157,-256v21,2,44,-11,44,19r0,226v2,17,-39,15,-48,5v-11,-22,-25,19,-55,10v-104,12,-113,-173,-23,-192v31,-6,54,8,73,16v9,-21,-8,-68,9,-84xm105,-152v-59,1,-54,117,0,119v40,1,52,-38,45,-78v-4,-24,-15,-42,-45,-41","w":219},"e":{"d":"70,-185v71,-22,130,20,125,97v-1,10,-18,6,-30,7v-32,4,-78,-7,-102,6v-2,28,21,44,51,41v26,-3,42,-40,75,-18v-8,61,-115,72,-154,27v-19,-22,-32,-71,-17,-107v10,-25,26,-45,52,-53xm66,-131v-7,12,1,20,18,18v18,-3,44,4,57,-3v6,-25,-23,-43,-51,-35v-11,3,-19,10,-24,20","w":206},"f":{"d":"0,-159v-6,-49,40,-5,32,-56v6,-31,36,-45,74,-41v18,-3,18,31,8,37v-24,-5,-42,14,-28,32v20,-1,35,2,30,28v-3,17,-41,-8,-35,26v-3,42,3,93,-4,131v-12,2,-51,10,-46,-13r-1,-130v-2,-14,-28,1,-30,-14","w":119,"k":{"f":6}},"g":{"d":"71,-8v-112,-39,-42,-237,61,-172v4,5,16,16,18,3v2,-15,24,-9,40,-9v8,0,9,8,8,17r-1,175v-3,78,-158,87,-175,15v-4,-16,23,-8,41,-10v16,11,31,33,63,22v19,-7,30,-35,21,-58v-20,10,-44,28,-76,17xm98,-44v58,10,68,-78,32,-102v-39,-26,-79,19,-63,70v5,16,13,29,31,32","w":219},"h":{"d":"20,-183v4,-35,-21,-85,41,-73v22,4,1,59,11,86v18,-4,39,-27,75,-19v64,13,41,103,47,176v2,20,-26,12,-44,12v-12,0,-5,-23,-7,-36v-3,-48,16,-123,-44,-112v-50,10,-17,98,-33,148v-17,-3,-46,13,-46,-14r0,-168","w":213},"i":{"d":"21,-249v9,-15,62,-15,51,15v6,25,-22,19,-43,18v-12,-1,-7,-19,-8,-33xm21,-176v2,-17,50,-15,50,-1r0,169v-2,13,-57,16,-50,-9r0,-159","w":92},"j":{"d":"66,-257v15,2,13,43,0,42v-29,11,-60,-17,-33,-42r33,0xm24,-166v-7,-27,29,-23,49,-17v5,62,1,137,1,203v0,39,-46,53,-79,40v2,-12,-7,-36,6,-36v17,0,27,-13,23,-31r0,-159","w":100},"k":{"d":"24,-204v3,-19,-8,-49,9,-53v22,0,49,-7,42,27v2,33,-3,73,3,103v35,-19,49,-76,113,-56v-13,30,-47,37,-59,68v21,39,49,70,70,109v-10,13,-65,9,-67,-11r-36,-58v-10,-8,-25,6,-24,26v2,29,9,59,-38,49v-24,1,-13,-38,-13,-60r0,-144","w":206},"l":{"d":"64,0v-20,-2,-44,9,-43,-16r6,-240v17,-1,45,-9,45,17r0,226v0,8,-2,11,-8,13","w":92},"m":{"d":"72,-169v18,-7,28,-21,54,-21v31,0,40,14,57,25v33,-43,123,-30,122,47r-1,112v-4,11,-28,5,-43,5v-27,-24,32,-160,-49,-148v-40,16,-19,84,-24,140v-2,14,-42,13,-50,2r-1,-116v-1,-20,-16,-32,-38,-27v-42,10,-23,84,-27,140v-1,16,-25,8,-42,10v-18,-5,-9,-41,-9,-61r0,-116v1,-14,28,-8,43,-8v6,2,3,12,8,16","w":326},"n":{"d":"68,-172v14,10,29,-25,57,-18v88,-7,68,94,68,181v0,15,-28,8,-43,8v-30,-25,32,-163,-51,-149v-46,8,-29,82,-29,139v0,18,-24,9,-42,11v-17,-7,-4,-49,-8,-73v3,-35,-6,-83,4,-111v14,-1,46,-10,44,12","w":213},"o":{"d":"37,-160v69,-71,205,-3,160,112v-22,55,-120,68,-160,23v-27,-30,-29,-105,0,-135xm67,-68v15,60,88,35,88,-25v0,-38,-20,-67,-60,-57v-30,8,-37,49,-28,82","w":219},"p":{"d":"109,-189v110,-23,131,153,49,188v-27,12,-67,4,-80,-13v-17,1,-8,44,-8,69v0,18,-27,10,-44,10v-8,-3,-7,-9,-7,-19r0,-220v-2,-17,39,-15,48,-5v-1,4,2,7,4,9v14,-5,22,-16,38,-19xm113,-33v58,3,59,-109,9,-118v-48,-8,-62,40,-51,84v5,20,16,33,42,34","w":219},"q":{"d":"16,-56v-30,-98,66,-170,133,-115v1,-18,28,-17,46,-14v6,1,5,11,5,18r0,223v-1,14,-21,9,-37,9v-30,0,-1,-59,-17,-80v-17,7,-28,20,-53,19v-46,-1,-66,-25,-77,-60xm96,-35v46,10,63,-40,51,-86v-6,-23,-31,-38,-57,-28v-38,15,-39,105,6,114","w":219},"r":{"d":"19,-176v3,-16,48,-15,48,-1v0,21,12,10,19,3v10,-10,24,-17,46,-16v12,4,14,59,-12,46v-65,-1,-45,80,-52,141v-11,5,-49,11,-49,-13r0,-160","w":140,"k":{"q":6,"o":6,"n":-6,"g":10,"e":6,"d":6,"c":6,".":33,"-":20,",":33}},"s":{"d":"13,-56v49,-24,50,39,100,25v11,-3,21,-12,17,-28v-29,-37,-123,-7,-114,-84v8,-68,149,-61,159,-2v3,19,-20,12,-39,13v-13,-13,-23,-30,-54,-24v-19,3,-17,29,0,34v43,12,111,14,99,77v-12,65,-148,66,-166,5v-1,-5,-4,-11,-2,-16","w":193},"t":{"d":"34,-135v0,-33,-41,3,-30,-45v4,-13,35,4,30,-22v2,-14,-7,-38,10,-39v15,3,43,-10,40,14v-3,26,-4,49,33,42v14,16,1,40,-27,34v-14,15,-3,64,-5,96v-1,16,15,18,31,18v21,23,-4,48,-41,38v-57,-1,-41,-76,-41,-136","w":126},"u":{"d":"20,-62v4,-44,-8,-100,6,-123v17,3,48,-11,44,16v7,52,-25,144,43,133v47,-8,25,-82,30,-140v0,-16,24,-7,41,-9v17,-2,9,27,9,42r0,134v1,15,-39,12,-47,3v1,-16,-13,-9,-19,-2v-42,29,-113,6,-107,-54","w":213},"v":{"d":"67,-2v-24,-57,-46,-121,-62,-180v10,-6,48,-10,53,7r32,103v18,5,17,-37,25,-53v9,-18,11,-41,20,-58v9,-4,25,-3,39,-3v17,25,-22,74,-26,108r-17,48v-4,15,-5,33,-26,30v-13,-1,-29,2,-38,-2","w":187,"k":{".":27,",":27}},"w":{"d":"11,-186v28,-1,52,-4,51,23v10,30,15,66,28,92v15,-20,15,-56,24,-83v5,-13,2,-36,24,-32v63,-10,37,72,65,114v21,-25,19,-81,37,-112v11,-2,53,-9,47,10r-54,168v-6,10,-25,4,-39,5v-38,-4,-20,-81,-47,-113v-17,25,-18,69,-30,102v0,17,-48,15,-58,4r-52,-163v-1,-5,-4,-15,4,-15","w":293,"k":{".":20,",":20}},"x":{"d":"64,-97v-10,-37,-46,-53,-51,-87v19,-4,55,-7,60,12v9,9,11,25,25,29v20,-11,16,-43,48,-43v16,0,43,-4,28,17v-17,23,-35,44,-47,71v17,35,46,61,60,94v-8,8,-37,4,-51,2v-17,-14,-22,-38,-39,-51v-24,19,-35,72,-91,49v15,-36,43,-58,58,-93","w":193},"y":{"d":"67,63v-28,3,-60,10,-51,-32v3,-20,64,3,48,-41r-59,-159v-1,-5,-8,-19,4,-17v29,-3,52,0,53,30r29,84v17,4,18,-37,26,-53v13,-29,5,-71,62,-61v11,2,4,14,2,20r-63,170v-10,26,-19,56,-51,59","w":186,"k":{".":27,",":27}},"z":{"d":"15,-156v1,-13,-4,-29,10,-30r138,0v32,60,-61,92,-81,144v18,9,59,1,88,4v14,1,13,38,0,38r-153,0v-17,-2,-10,-46,2,-51r79,-90v-7,-16,-46,-3,-71,-7v-7,1,-12,-2,-12,-8","w":186},"{":{"d":"30,-149v-5,-71,-2,-128,82,-114v10,2,10,33,2,39v-65,-10,-6,101,-58,125v28,14,25,57,25,103v0,16,12,21,30,21v13,-1,11,31,3,39v-52,5,-84,-7,-84,-63v0,-20,0,-42,-1,-60v-2,-26,-39,-13,-32,-46v4,-19,35,-15,33,-44","w":119},"|":{"d":"59,68v-3,15,-44,13,-38,-5r0,-330v-2,-19,14,-15,31,-15v10,1,6,16,7,27r0,323","w":80},"}":{"d":"90,-159v-7,32,20,37,32,52v7,37,-39,21,-32,73v9,67,-11,112,-82,98v-12,0,-11,-32,-2,-38v64,11,5,-100,56,-121v-2,-16,-32,-28,-23,-65v-3,-28,10,-63,-30,-63v-14,0,-13,-33,-3,-39v52,-6,88,8,84,62r0,41","w":119},"~":{"d":"38,-66v-28,-26,7,-67,47,-54v30,11,70,36,90,3v31,20,3,65,-37,57v-26,-6,-42,-28,-76,-23v-11,2,-14,16,-24,17","w":216},"\u00a0":{"w":100}}}); |
3706 | |
3707 | === added file 'applications/globaleaks/static/js/cufon.js' |
3708 | --- applications/globaleaks/static/js/cufon.js 1970-01-01 00:00:00 +0000 |
3709 | +++ applications/globaleaks/static/js/cufon.js 2011-09-02 13:53:25 +0000 |
3710 | @@ -0,0 +1,7 @@ |
3711 | +/* |
3712 | + * Copyright (c) 2009 Simo Kinnunen. |
3713 | + * Licensed under the MIT license. |
3714 | + * |
3715 | + * @version 1.09i |
3716 | + */ |
3717 | +var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E<B;++E){D=C[E].split("=",2).reverse();G.stops.push([D[1]||E/(B-1),D[0]])}return G}),quotedList:j(function(E){var D=[],C=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,B;while(B=C.exec(E)){D.push(B[3]||B[1])}return D}),recognizesMedia:j(function(G){var E=document.createElement("style"),D,C,B;E.type="text/css";E.media=G;try{E.appendChild(document.createTextNode("/**/"))}catch(F){}C=g("head")[0];C.insertBefore(E,C.firstChild);D=(E.sheet||E.styleSheet);B=D&&!D.disabled;C.removeChild(E);return B}),removeClass:function(D,C){var B=RegExp("(?:^|\\s+)"+C+"(?=\\s|$)","g");D.className=D.className.replace(B,"");return D},supports:function(D,C){var B=document.createElement("span").style;if(B[D]===undefined){return false}B[D]=C;return B[D]===C},textAlign:function(E,D,B,C){if(D.get("textAlign")=="right"){if(B>0){E=" "+E}}else{if(B<C-1){E+=" "}}return E},textShadow:j(function(F){if(F=="none"){return null}var E=[],G={},B,C=0;var D=/(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;while(B=D.exec(F)){if(B[0]==","){E.push(G);G={};C=0}else{if(B[1]){G.color=B[1]}else{G[["offX","offY","blur"][C++]]=B[2]}}}E.push(G);return E}),textTransform:(function(){var B={uppercase:function(C){return C.toUpperCase()},lowercase:function(C){return C.toLowerCase()},capitalize:function(C){return C.replace(/\b./g,function(D){return D.toUpperCase()})}};return function(E,D){var C=B[D.get("textTransform")];return C?C(E):E}})(),whiteSpace:(function(){var D={inline:1,"inline-block":1,"run-in":1};var C=/^\s+/,B=/\s+$/;return function(H,F,G,E){if(E){if(E.nodeName.toLowerCase()=="br"){H=H.replace(C,"")}}if(D[F.get("display")]){return H}if(!G.previousSibling){H=H.replace(C,"")}if(!G.nextSibling){H=H.replace(B,"")}return H}})()};n.ready=(function(){var B=!n.recognizesMedia("all"),E=false;var D=[],H=function(){B=true;for(var K;K=D.shift();K()){}};var I=g("link"),J=g("style");function C(K){return K.disabled||G(K.sheet,K.media||"screen")}function G(M,P){if(!n.recognizesMedia(P||"all")){return true}if(!M||M.disabled){return false}try{var Q=M.cssRules,O;if(Q){search:for(var L=0,K=Q.length;O=Q[L],L<K;++L){switch(O.type){case 2:break;case 3:if(!G(O.styleSheet,O.media.mediaText)){return false}break;default:break search}}}}catch(N){}return true}function F(){if(document.createStyleSheet){return true}var L,K;for(K=0;L=I[K];++K){if(L.rel.toLowerCase()=="stylesheet"&&!C(L)){return false}}for(K=0;L=J[K];++K){if(!C(L)){return false}}return true}x.ready(function(){if(!E){E=n.getStyle(document.body).isUsable()}if(B||(E&&F())){H()}else{setTimeout(arguments.callee,10)}});return function(K){if(B){K()}else{D.push(K)}}})();function s(D){var C=this.face=D.face,B={"\u0020":1,"\u00a0":1,"\u3000":1};this.glyphs=D.glyphs;this.w=D.w;this.baseSize=parseInt(C["units-per-em"],10);this.family=C["font-family"].toLowerCase();this.weight=C["font-weight"];this.style=C["font-style"]||"normal";this.viewBox=(function(){var F=C.bbox.split(/\s+/);var E={minX:parseInt(F[0],10),minY:parseInt(F[1],10),maxX:parseInt(F[2],10),maxY:parseInt(F[3],10)};E.width=E.maxX-E.minX;E.height=E.maxY-E.minY;E.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")};return E})();this.ascent=-parseInt(C.ascent,10);this.descent=-parseInt(C.descent,10);this.height=-this.ascent+this.descent;this.spacing=function(L,N,E){var O=this.glyphs,M,K,G,P=[],F=0,J=-1,I=-1,H;while(H=L[++J]){M=O[H]||this.missingGlyph;if(!M){continue}if(K){F-=G=K[H]||0;P[I]-=G}F+=P[++I]=~~(M.w||this.w)+N+(B[H]?E:0);K=M.k}P.total=F;return P}}function f(){var C={},B={oblique:"italic",italic:"oblique"};this.add=function(D){(C[D.style]||(C[D.style]={}))[D.weight]=D};this.get=function(H,I){var G=C[H]||C[B[H]]||C.normal||C.italic||C.oblique;if(!G){return null}I={normal:400,bold:700}[I]||parseInt(I,10);if(G[I]){return G[I]}var E={1:1,99:0}[I%100],K=[],F,D;if(E===undefined){E=I>400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||J<F){F=J}if(!D||J>D){D=J}K.push(J)}if(I<F){I=F}if(I>D){I=D}K.sort(function(M,L){return(E?(M>=I&&L>=I)?M<L:M>L:(M<=I&&L<=I)?M>L:M<L)?-1:1});return G[K[0]]}}function r(){function D(F,G){if(F.contains){return F.contains(G)}return F.compareDocumentPosition(G)&16}function B(G){var F=G.relatedTarget;if(!F||D(this,F)){return}C(this,G.type=="mouseover")}function E(F){C(this,F.type=="mouseenter")}function C(F,G){setTimeout(function(){var H=d.get(F).options;m.replace(F,G?h(H,H.hover):H,true)},10)}this.attach=function(F){if(F.onmouseenter===undefined){q(F,"mouseover",B);q(F,"mouseout",B)}else{q(F,"mouseenter",E);q(F,"mouseleave",E)}}}function u(){var C=[],D={};function B(H){var E=[],G;for(var F=0;G=H[F];++F){E[F]=C[D[G]]}return E}this.add=function(F,E){D[F]=C.push(E)-1};this.repeat=function(){var E=arguments.length?B(arguments):C,F;for(var G=0;F=E[G++];){m.replace(F[0],F[1],true)}}}function A(){var D={},B=0;function C(E){return E.cufid||(E.cufid=++B)}this.get=function(E){var F=C(E);return D[F]||(D[F]={})}}function a(B){var D={},C={};this.extend=function(E){for(var F in E){if(k(E,F)){D[F]=E[F]}}return this};this.get=function(E){return D[E]!=undefined?D[E]:B[E]};this.getSize=function(F,E){return C[F]||(C[F]=new n.Size(this.get(F),E))};this.isUsable=function(){return !!B}}function q(C,B,D){if(C.addEventListener){C.addEventListener(B,D,false)}else{if(C.attachEvent){C.attachEvent("on"+B,function(){return D.call(C,window.event)})}}}function v(C,B){var D=d.get(C);if(D.options){return C}if(B.hover&&B.hoverables[C.nodeName.toLowerCase()]){b.attach(C)}D.options=B;return C}function j(B){var C={};return function(D){if(!k(C,D)){C[D]=B.apply(null,arguments)}return C[D]}}function c(F,E){var B=n.quotedList(E.get("fontFamily").toLowerCase()),D;for(var C=0;D=B[C];++C){if(i[D]){return i[D].get(E.get("fontStyle"),E.get("fontWeight"))}}return null}function g(B){return document.getElementsByTagName(B)}function k(C,B){return C.hasOwnProperty(B)}function h(){var C={},B,F;for(var E=0,D=arguments.length;B=arguments[E],E<D;++E){for(F in B){if(k(B,F)){C[F]=B[F]}}}return C}function o(E,M,C,N,F,D){var K=document.createDocumentFragment(),H;if(M===""){return K}var L=N.separate;var I=M.split(p[L]),B=(L=="words");if(B&&t){if(/^\s/.test(M)){I.unshift("")}if(/\s$/.test(M)){I.push("")}}for(var J=0,G=I.length;J<G;++J){H=z[N.engine](E,B?n.textAlign(I[J],C,J,G):I[J],C,N,F,D,J<G-1);if(H){K.appendChild(H)}}return K}function l(D,M){var C=D.nodeName.toLowerCase();if(M.ignore[C]){return}var E=!M.textless[C];var B=n.getStyle(v(D,M)).extend(M);var F=c(D,B),G,K,I,H,L,J;if(!F){return}for(G=D.firstChild;G;G=I){K=G.nodeType;I=G.nextSibling;if(E&&K==3){if(H){H.appendData(G.data);D.removeChild(G)}else{H=G}if(I){continue}}if(H){D.replaceChild(o(F,n.whiteSpace(H.data,B,H,J),B,M,G,D),H);H=null}if(K==1){if(G.firstChild){if(G.nodeName.toLowerCase()=="cufon"){z[M.engine](F,null,B,M,G,D)}else{arguments.callee(G,M)}}J=G}}}var t=" ".split(/\s+/).length==0;var d=new A();var b=new r();var y=new u();var e=false;var z={},i={},w={autoDetect:false,engine:null,forceHitArea:false,hover:false,hoverables:{a:true},ignore:{applet:1,canvas:1,col:1,colgroup:1,head:1,iframe:1,map:1,optgroup:1,option:1,script:1,select:1,style:1,textarea:1,title:1,pre:1},printable:true,selector:(window.Sizzle||(window.jQuery&&function(B){return jQuery(B)})||(window.dojo&&dojo.query)||(window.Ext&&Ext.query)||(window.YAHOO&&YAHOO.util&&YAHOO.util.Selector&&YAHOO.util.Selector.query)||(window.$$&&function(B){return $$(B)})||(window.$&&function(B){return $(B)})||(document.querySelectorAll&&function(B){return document.querySelectorAll(B)})||g),separate:"words",textless:{dl:1,html:1,ol:1,table:1,tbody:1,thead:1,tfoot:1,tr:1,ul:1},textShadow:"none"};var p={words:/\s/.test("\u00a0")?/[^\S\u00a0]+/:/\s+/,characters:"",none:/^/};m.now=function(){x.ready();return m};m.refresh=function(){y.repeat.apply(y,arguments);return m};m.registerEngine=function(C,B){if(!B){return m}z[C]=B;return m.set("engine",C)};m.registerFont=function(D){if(!D){return m}var B=new s(D),C=B.family;if(!i[C]){i[C]=new f()}i[C].add(B);return m.set("fontFamily",'"'+C+'"')};m.replace=function(D,C,B){C=h(w,C);if(!C.engine){return m}if(!e){n.addClass(x.root(),"cufon-active cufon-loading");n.ready(function(){n.addClass(n.removeClass(x.root(),"cufon-loading"),"cufon-ready")});e=true}if(C.hover){C.forceHitArea=true}if(C.autoDetect){delete C.fontFamily}if(typeof C.textShadow=="string"){C.textShadow=n.textShadow(C.textShadow)}if(typeof C.color=="string"&&/^-/.test(C.color)){C.textGradient=n.gradient(C.color)}else{delete C.textGradient}if(!B){y.add(D,arguments)}if(D.nodeType||typeof D=="string"){D=[D]}n.ready(function(){for(var F=0,E=D.length;F<E;++F){var G=D[F];if(typeof G=="string"){m.replace(C.selector(G),C,true)}else{l(G,C)}}});return m};m.set=function(B,C){w[B]=C;return m};return m})();Cufon.registerEngine("vml",(function(){var e=document.namespaces;if(!e){return}e.add("cvml","urn:schemas-microsoft-com:vml");e=null;var b=document.createElement("cvml:shape");b.style.behavior="url(#default#VML)";if(!b.coordsize){return}b=null;var h=(document.documentMode||0)<8;document.write(('<style type="text/css">cufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}</style>").replace(/;/g,"!important;"));function c(i,j){return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)}function a(l,m){if(m==="0"){return 0}if(/px$/i.test(m)){return parseFloat(m)}var k=l.style.left,j=l.runtimeStyle.left;l.runtimeStyle.left=l.currentStyle.left;l.style.left=m.replace("%","em");var i=l.style.pixelLeft;l.style.left=k;l.runtimeStyle.left=j;return i}function f(l,k,j,n){var i="computed"+n,m=k[i];if(isNaN(m)){m=k.get(n);k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))}return m}var g={};function d(p){var q=p.id;if(!g[q]){var n=p.stops,o=document.createElement("cvml:fill"),i=[];o.type="gradient";o.angle=180;o.focus="0";o.method="sigma";o.color=n[0][1];for(var m=1,l=n.length-1;m<l;++m){i.push(n[m][0]*100+"% "+n[m][1])}o.colors=i.join(",");o.color2=n[l][1];g[q]=o}return g[q]}return function(ac,G,Y,C,K,ad,W){var n=(G===null);if(n){G=K.alt}var I=ac.viewBox;var p=Y.computedFontSize||(Y.computedFontSize=new Cufon.CSS.Size(c(ad,Y.get("fontSize"))+"px",ac.baseSize));var y,q;if(n){y=K;q=K.firstChild}else{y=document.createElement("cufon");y.className="cufon cufon-vml";y.alt=G;q=document.createElement("cufoncanvas");y.appendChild(q);if(C.printable){var Z=document.createElement("cufontext");Z.appendChild(document.createTextNode(G));y.appendChild(Z)}if(!W){y.appendChild(document.createElement("cvml:shape"))}}var ai=y.style;var R=q.style;var l=p.convert(I.height),af=Math.ceil(l);var V=af/l;var P=V*Cufon.CSS.fontStretch(Y.get("fontStretch"));var U=I.minX,T=I.minY;R.height=af;R.top=Math.round(p.convert(T-ac.ascent));R.left=Math.round(p.convert(U));ai.height=p.convert(ac.height)+"px";var F=Y.get("color");var ag=Cufon.CSS.textTransform(G,Y).split("");var L=ac.spacing(ag,f(ad,Y,p,"letterSpacing"),f(ad,Y,p,"wordSpacing"));if(!L.length){return null}var k=L.total;var x=-U+k+(I.width-L[L.length-1]);var ah=p.convert(x*P),X=Math.round(ah);var O=x+","+I.height,m;var J="r"+O+"ns";var u=C.textGradient&&d(C.textGradient);var o=ac.glyphs,S=0;var H=C.textShadow;var ab=-1,aa=0,w;while(w=ag[++ab]){var D=o[ag[ab]]||ac.missingGlyph,v;if(!D){continue}if(n){v=q.childNodes[aa];while(v.firstChild){v.removeChild(v.firstChild)}}else{v=document.createElement("cvml:shape");q.appendChild(v)}v.stroked="f";v.coordsize=O;v.coordorigin=m=(U-S)+","+T;v.path=(D.d?"m"+D.d+"xe":"")+"m"+m+J;v.fillcolor=F;if(u){v.appendChild(u.cloneNode(false))}var ae=v.style;ae.width=X;ae.height=af;if(H){var s=H[0],r=H[1];var B=Cufon.CSS.color(s.color),z;var N=document.createElement("cvml:shadow");N.on="t";N.color=B.color;N.offset=s.offX+","+s.offY;if(r){z=Cufon.CSS.color(r.color);N.type="double";N.color2=z.color;N.offset2=r.offX+","+r.offY}N.opacity=B.opacity||(z&&z.opacity)||1;v.appendChild(N)}S+=L[aa++]}var M=v.nextSibling,t,A;if(C.forceHitArea){if(!M){M=document.createElement("cvml:rect");M.stroked="f";M.className="cufon-vml-cover";t=document.createElement("cvml:fill");t.opacity=0;M.appendChild(t);q.appendChild(M)}A=M.style;A.width=X;A.height=af}else{if(M){q.removeChild(M)}}ai.width=Math.max(Math.ceil(p.convert(k*P)),0);if(h){var Q=Y.computedYAdjust;if(Q===undefined){var E=Y.get("lineHeight");if(E=="normal"){E="1em"}else{if(!isNaN(E)){E+="em"}}Y.computedYAdjust=Q=0.5*(a(ad,E)-parseFloat(ai.height))}if(Q){ai.marginTop=Math.ceil(Q)+"px";ai.marginBottom=Q+"px"}}return y}})());Cufon.registerEngine("canvas",(function(){var b=document.createElement("canvas");if(!b||!b.getContext||!b.getContext.apply){return}b=null;var a=Cufon.CSS.supports("display","inline-block");var e=!a&&(document.compatMode=="BackCompat"||/frameset|transitional/i.test(document.doctype.publicId));var f=document.createElement("style");f.type="text/css";f.appendChild(document.createTextNode(("cufon{text-indent:0;}@media screen,projection{cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;"+(e?"":"font-size:1px;line-height:1px;")+"}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"+(a?"cufon canvas{position:relative;}":"cufon canvas{position:absolute;}")+"}@media print{cufon{padding:0;}cufon canvas{display:none;}}").replace(/;/g,"!important;")));document.getElementsByTagName("head")[0].appendChild(f);function d(p,h){var n=0,m=0;var g=[],o=/([mrvxe])([^a-z]*)/g,k;generate:for(var j=0;k=o.exec(p);++j){var l=k[2].split(",");switch(k[1]){case"v":g[j]={m:"bezierCurveTo",a:[n+~~l[0],m+~~l[1],n+~~l[2],m+~~l[3],n+=~~l[4],m+=~~l[5]]};break;case"r":g[j]={m:"lineTo",a:[n+=~~l[0],m+=~~l[1]]};break;case"m":g[j]={m:"moveTo",a:[n=~~l[0],m=~~l[1]]};break;case"x":g[j]={m:"closePath"};break;case"e":break generate}h[g[j].m].apply(h,g[j].a)}return g}function c(m,k){for(var j=0,h=m.length;j<h;++j){var g=m[j];k[g.m].apply(k,g.a)}}return function(V,w,P,t,C,W){var k=(w===null);if(k){w=C.getAttribute("alt")}var A=V.viewBox;var m=P.getSize("fontSize",V.baseSize);var B=0,O=0,N=0,u=0;var z=t.textShadow,L=[];if(z){for(var U=z.length;U--;){var F=z[U];var K=m.convertFrom(parseFloat(F.offX));var I=m.convertFrom(parseFloat(F.offY));L[U]=[K,I];if(I<B){B=I}if(K>O){O=K}if(I>N){N=I}if(K<u){u=K}}}var Z=Cufon.CSS.textTransform(w,P).split("");var E=V.spacing(Z,~~m.convertFrom(parseFloat(P.get("letterSpacing"))||0),~~m.convertFrom(parseFloat(P.get("wordSpacing"))||0));if(!E.length){return null}var h=E.total;O+=A.width-E[E.length-1];u+=A.minX;var s,n;if(k){s=C;n=C.firstChild}else{s=document.createElement("cufon");s.className="cufon cufon-canvas";s.setAttribute("alt",w);n=document.createElement("canvas");s.appendChild(n);if(t.printable){var S=document.createElement("cufontext");S.appendChild(document.createTextNode(w));s.appendChild(S)}}var aa=s.style;var H=n.style;var j=m.convert(A.height);var Y=Math.ceil(j);var M=Y/j;var G=M*Cufon.CSS.fontStretch(P.get("fontStretch"));var J=h*G;var Q=Math.ceil(m.convert(J+O-u));var o=Math.ceil(m.convert(A.height-B+N));n.width=Q;n.height=o;H.width=Q+"px";H.height=o+"px";B+=A.minY;H.top=Math.round(m.convert(B-V.ascent))+"px";H.left=Math.round(m.convert(u))+"px";var r=Math.max(Math.ceil(m.convert(J)),0)+"px";if(a){aa.width=r;aa.height=m.convert(V.height)+"px"}else{aa.paddingLeft=r;aa.paddingBottom=(m.convert(V.height)-1)+"px"}var X=n.getContext("2d"),D=j/A.height;X.scale(D,D*M);X.translate(-u,-B);X.save();function T(){var x=V.glyphs,ab,l=-1,g=-1,y;X.scale(G,1);while(y=Z[++l]){var ab=x[Z[l]]||V.missingGlyph;if(!ab){continue}if(ab.d){X.beginPath();if(ab.code){c(ab.code,X)}else{ab.code=d("m"+ab.d,X)}X.fill()}X.translate(E[++g],0)}X.restore()}if(z){for(var U=z.length;U--;){var F=z[U];X.save();X.fillStyle=F.color;X.translate.apply(X,L[U]);T()}}var q=t.textGradient;if(q){var v=q.stops,p=X.createLinearGradient(0,A.minY,0,A.maxY);for(var U=0,R=v.length;U<R;++U){p.addColorStop.apply(p,v[U])}X.fillStyle=p}else{X.fillStyle=P.get("color")}T();return s}})()); |
3718 | \ No newline at end of file |
3719 | |
3720 | === added directory 'applications/globaleaks/static/js/fancybox' |
3721 | === added file 'applications/globaleaks/static/js/fancybox/blank.gif' |
3722 | Binary files applications/globaleaks/static/js/fancybox/blank.gif 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/blank.gif 2011-09-02 13:53:25 +0000 differ |
3723 | === added file 'applications/globaleaks/static/js/fancybox/fancy_close.png' |
3724 | Binary files applications/globaleaks/static/js/fancybox/fancy_close.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_close.png 2011-09-02 13:53:25 +0000 differ |
3725 | === added file 'applications/globaleaks/static/js/fancybox/fancy_loading.png' |
3726 | Binary files applications/globaleaks/static/js/fancybox/fancy_loading.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_loading.png 2011-09-02 13:53:25 +0000 differ |
3727 | === added file 'applications/globaleaks/static/js/fancybox/fancy_nav_left.png' |
3728 | Binary files applications/globaleaks/static/js/fancybox/fancy_nav_left.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_nav_left.png 2011-09-02 13:53:25 +0000 differ |
3729 | === added file 'applications/globaleaks/static/js/fancybox/fancy_nav_right.png' |
3730 | Binary files applications/globaleaks/static/js/fancybox/fancy_nav_right.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_nav_right.png 2011-09-02 13:53:25 +0000 differ |
3731 | === added file 'applications/globaleaks/static/js/fancybox/fancy_shadow_e.png' |
3732 | Binary files applications/globaleaks/static/js/fancybox/fancy_shadow_e.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_shadow_e.png 2011-09-02 13:53:25 +0000 differ |
3733 | === added file 'applications/globaleaks/static/js/fancybox/fancy_shadow_n.png' |
3734 | Binary files applications/globaleaks/static/js/fancybox/fancy_shadow_n.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_shadow_n.png 2011-09-02 13:53:25 +0000 differ |
3735 | === added file 'applications/globaleaks/static/js/fancybox/fancy_shadow_ne.png' |
3736 | Binary files applications/globaleaks/static/js/fancybox/fancy_shadow_ne.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_shadow_ne.png 2011-09-02 13:53:25 +0000 differ |
3737 | === added file 'applications/globaleaks/static/js/fancybox/fancy_shadow_nw.png' |
3738 | Binary files applications/globaleaks/static/js/fancybox/fancy_shadow_nw.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_shadow_nw.png 2011-09-02 13:53:25 +0000 differ |
3739 | === added file 'applications/globaleaks/static/js/fancybox/fancy_shadow_s.png' |
3740 | Binary files applications/globaleaks/static/js/fancybox/fancy_shadow_s.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_shadow_s.png 2011-09-02 13:53:25 +0000 differ |
3741 | === added file 'applications/globaleaks/static/js/fancybox/fancy_shadow_se.png' |
3742 | Binary files applications/globaleaks/static/js/fancybox/fancy_shadow_se.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_shadow_se.png 2011-09-02 13:53:25 +0000 differ |
3743 | === added file 'applications/globaleaks/static/js/fancybox/fancy_shadow_sw.png' |
3744 | Binary files applications/globaleaks/static/js/fancybox/fancy_shadow_sw.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_shadow_sw.png 2011-09-02 13:53:25 +0000 differ |
3745 | === added file 'applications/globaleaks/static/js/fancybox/fancy_shadow_w.png' |
3746 | Binary files applications/globaleaks/static/js/fancybox/fancy_shadow_w.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_shadow_w.png 2011-09-02 13:53:25 +0000 differ |
3747 | === added file 'applications/globaleaks/static/js/fancybox/fancy_title_left.png' |
3748 | Binary files applications/globaleaks/static/js/fancybox/fancy_title_left.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_title_left.png 2011-09-02 13:53:25 +0000 differ |
3749 | === added file 'applications/globaleaks/static/js/fancybox/fancy_title_main.png' |
3750 | Binary files applications/globaleaks/static/js/fancybox/fancy_title_main.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_title_main.png 2011-09-02 13:53:25 +0000 differ |
3751 | === added file 'applications/globaleaks/static/js/fancybox/fancy_title_over.png' |
3752 | Binary files applications/globaleaks/static/js/fancybox/fancy_title_over.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_title_over.png 2011-09-02 13:53:25 +0000 differ |
3753 | === added file 'applications/globaleaks/static/js/fancybox/fancy_title_right.png' |
3754 | Binary files applications/globaleaks/static/js/fancybox/fancy_title_right.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancy_title_right.png 2011-09-02 13:53:25 +0000 differ |
3755 | === added file 'applications/globaleaks/static/js/fancybox/fancybox-x.png' |
3756 | Binary files applications/globaleaks/static/js/fancybox/fancybox-x.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancybox-x.png 2011-09-02 13:53:25 +0000 differ |
3757 | === added file 'applications/globaleaks/static/js/fancybox/fancybox-y.png' |
3758 | Binary files applications/globaleaks/static/js/fancybox/fancybox-y.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancybox-y.png 2011-09-02 13:53:25 +0000 differ |
3759 | === added file 'applications/globaleaks/static/js/fancybox/fancybox.png' |
3760 | Binary files applications/globaleaks/static/js/fancybox/fancybox.png 1970-01-01 00:00:00 +0000 and applications/globaleaks/static/js/fancybox/fancybox.png 2011-09-02 13:53:25 +0000 differ |
3761 | === added file 'applications/globaleaks/static/js/fancybox/jquery.easing-1.3.pack.js' |
3762 | --- applications/globaleaks/static/js/fancybox/jquery.easing-1.3.pack.js 1970-01-01 00:00:00 +0000 |
3763 | +++ applications/globaleaks/static/js/fancybox/jquery.easing-1.3.pack.js 2011-09-02 13:53:25 +0000 |
3764 | @@ -0,0 +1,72 @@ |
3765 | +/* |
3766 | + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ |
3767 | + * |
3768 | + * Uses the built in easing capabilities added In jQuery 1.1 |
3769 | + * to offer multiple easing options |
3770 | + * |
3771 | + * TERMS OF USE - jQuery Easing |
3772 | + * |
3773 | + * Open source under the BSD License. |
3774 | + * |
3775 | + * Copyright © 2008 George McGinley Smith |
3776 | + * All rights reserved. |
3777 | + * |
3778 | + * Redistribution and use in source and binary forms, with or without modification, |
3779 | + * are permitted provided that the following conditions are met: |
3780 | + * |
3781 | + * Redistributions of source code must retain the above copyright notice, this list of |
3782 | + * conditions and the following disclaimer. |
3783 | + * Redistributions in binary form must reproduce the above copyright notice, this list |
3784 | + * of conditions and the following disclaimer in the documentation and/or other materials |
3785 | + * provided with the distribution. |
3786 | + * |
3787 | + * Neither the name of the author nor the names of contributors may be used to endorse |
3788 | + * or promote products derived from this software without specific prior written permission. |
3789 | + * |
3790 | + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY |
3791 | + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
3792 | + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
3793 | + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
3794 | + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
3795 | + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
3796 | + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
3797 | + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
3798 | + * OF THE POSSIBILITY OF SUCH DAMAGE. |
3799 | + * |
3800 | +*/ |
3801 | + |
3802 | +// t: current time, b: begInnIng value, c: change In value, d: duration |
3803 | +eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t<d/2)6 h.i.A(x,t*2,0,c,d)*.5+b;6 h.i.v(x,t*2-d,0,c,d)*.5+c*.5+b}});',62,74,'||||||return||Math|function|||||if|var|PI|jQuery|easing|pow|75|70158|else|sin|sqrt||5625|asin|||undefined|easeOutBounce|abs||def|swing|easeInBounce|525|cos|easeOutQuad|easeOutBack|easeInBack|easeInSine|easeOutElastic|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|extend|easeInElastic|easeInOutCirc|easeInOutCubic|easeOutCirc|easeInOutElastic|easeOutCubic|easeInCirc|easeInOutExpo|easeInCubic|easeOutExpo|easeInExpo||9375|easeInOutSine|easeInOutQuad|25|easeOutSine|easeInOutBack|easeInQuad|625|984375|jswing|easeInOutBounce'.split('|'),0,{})) |
3804 | + |
3805 | +/* |
3806 | + * |
3807 | + * TERMS OF USE - EASING EQUATIONS |
3808 | + * |
3809 | + * Open source under the BSD License. |
3810 | + * |
3811 | + * Copyright © 2001 Robert Penner |
3812 | + * All rights reserved. |
3813 | + * |
3814 | + * Redistribution and use in source and binary forms, with or without modification, |
3815 | + * are permitted provided that the following conditions are met: |
3816 | + * |
3817 | + * Redistributions of source code must retain the above copyright notice, this list of |
3818 | + * conditions and the following disclaimer. |
3819 | + * Redistributions in binary form must reproduce the above copyright notice, this list |
3820 | + * of conditions and the following disclaimer in the documentation and/or other materials |
3821 | + * provided with the distribution. |
3822 | + * |
3823 | + * Neither the name of the author nor the names of contributors may be used to endorse |
3824 | + * or promote products derived from this software without specific prior written permission. |
3825 | + * |
3826 | + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY |
3827 | + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
3828 | + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
3829 | + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
3830 | + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
3831 | + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
3832 | + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
3833 | + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
3834 | + * OF THE POSSIBILITY OF SUCH DAMAGE. |
3835 | + * |
3836 | + */ |
3837 | |
3838 | === added file 'applications/globaleaks/static/js/fancybox/jquery.fancybox-1.3.4.css' |
3839 | --- applications/globaleaks/static/js/fancybox/jquery.fancybox-1.3.4.css 1970-01-01 00:00:00 +0000 |
3840 | +++ applications/globaleaks/static/js/fancybox/jquery.fancybox-1.3.4.css 2011-09-02 13:53:25 +0000 |
3841 | @@ -0,0 +1,359 @@ |
3842 | +/* |
3843 | + * FancyBox - jQuery Plugin |
3844 | + * Simple and fancy lightbox alternative |
3845 | + * |
3846 | + * Examples and documentation at: http://fancybox.net |
3847 | + * |
3848 | + * Copyright (c) 2008 - 2010 Janis Skarnelis |
3849 | + * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. |
3850 | + * |
3851 | + * Version: 1.3.4 (11/11/2010) |
3852 | + * Requires: jQuery v1.3+ |
3853 | + * |
3854 | + * Dual licensed under the MIT and GPL licenses: |
3855 | + * http://www.opensource.org/licenses/mit-license.php |
3856 | + * http://www.gnu.org/licenses/gpl.html |
3857 | + */ |
3858 | + |
3859 | +#fancybox-loading { |
3860 | + position: fixed; |
3861 | + top: 50%; |
3862 | + left: 50%; |
3863 | + width: 40px; |
3864 | + height: 40px; |
3865 | + margin-top: -20px; |
3866 | + margin-left: -20px; |
3867 | + cursor: pointer; |
3868 | + overflow: hidden; |
3869 | + z-index: 1104; |
3870 | + display: none; |
3871 | +} |
3872 | + |
3873 | +#fancybox-loading div { |
3874 | + position: absolute; |
3875 | + top: 0; |
3876 | + left: 0; |
3877 | + width: 40px; |
3878 | + height: 480px; |
3879 | + background-image: url('fancybox.png'); |
3880 | +} |
3881 | + |
3882 | +#fancybox-overlay { |
3883 | + position: absolute; |
3884 | + top: 0; |
3885 | + left: 0; |
3886 | + width: 100%; |
3887 | + z-index: 1100; |
3888 | + display: none; |
3889 | +} |
3890 | + |
3891 | +#fancybox-tmp { |
3892 | + padding: 0; |
3893 | + margin: 0; |
3894 | + border: 0; |
3895 | + overflow: auto; |
3896 | + display: none; |
3897 | +} |
3898 | + |
3899 | +#fancybox-wrap { |
3900 | + position: absolute; |
3901 | + top: 0; |
3902 | + left: 0; |
3903 | + padding: 20px; |
3904 | + z-index: 1101; |
3905 | + outline: none; |
3906 | + display: none; |
3907 | +} |
3908 | + |
3909 | +#fancybox-outer { |
3910 | + position: relative; |
3911 | + width: 100%; |
3912 | + height: 100%; |
3913 | + background: #fff; |
3914 | +} |
3915 | + |
3916 | +#fancybox-content { |
3917 | + width: 0; |
3918 | + height: 0; |
3919 | + padding: 0; |
3920 | + outline: none; |
3921 | + position: relative; |
3922 | + overflow: hidden; |
3923 | + z-index: 1102; |
3924 | + border: 0px solid #fff; |
3925 | +} |
3926 | + |
3927 | +#fancybox-hide-sel-frame { |
3928 | + position: absolute; |
3929 | + top: 0; |
3930 | + left: 0; |
3931 | + width: 100%; |
3932 | + height: 100%; |
3933 | + background: transparent; |
3934 | + z-index: 1101; |
3935 | +} |
3936 | + |
3937 | +#fancybox-close { |
3938 | + position: absolute; |
3939 | + top: -15px; |
3940 | + right: -15px; |
3941 | + width: 30px; |
3942 | + height: 30px; |
3943 | + background: transparent url('fancybox.png') -40px 0px; |
3944 | + cursor: pointer; |
3945 | + z-index: 1103; |
3946 | + display: none; |
3947 | +} |
3948 | + |
3949 | +#fancybox-error { |
3950 | + color: #444; |
3951 | + font: normal 12px/20px Arial; |
3952 | + padding: 14px; |
3953 | + margin: 0; |
3954 | +} |
3955 | + |
3956 | +#fancybox-img { |
3957 | + width: 100%; |
3958 | + height: 100%; |
3959 | + padding: 0; |
3960 | + margin: 0; |
3961 | + border: none; |
3962 | + outline: none; |
3963 | + line-height: 0; |
3964 | + vertical-align: top; |
3965 | +} |
3966 | + |
3967 | +#fancybox-frame { |
3968 | + width: 100%; |
3969 | + height: 100%; |
3970 | + border: none; |
3971 | + display: block; |
3972 | +} |
3973 | + |
3974 | +#fancybox-left, #fancybox-right { |
3975 | + position: absolute; |
3976 | + bottom: 0px; |
3977 | + height: 100%; |
3978 | + width: 35%; |
3979 | + cursor: pointer; |
3980 | + outline: none; |
3981 | + background: transparent url('blank.gif'); |
3982 | + z-index: 1102; |
3983 | + display: none; |
3984 | +} |
3985 | + |
3986 | +#fancybox-left { |
3987 | + left: 0px; |
3988 | +} |
3989 | + |
3990 | +#fancybox-right { |
3991 | + right: 0px; |
3992 | +} |
3993 | + |
3994 | +#fancybox-left-ico, #fancybox-right-ico { |
3995 | + position: absolute; |
3996 | + top: 50%; |
3997 | + left: -9999px; |
3998 | + width: 30px; |
3999 | + height: 30px; |
4000 | + margin-top: -15px; |
4001 | + cursor: pointer; |
4002 | + z-index: 1102; |
4003 | + display: block; |
4004 | +} |
4005 | + |
4006 | +#fancybox-left-ico { |
4007 | + background-image: url('fancybox.png'); |
4008 | + background-position: -40px -30px; |
4009 | +} |
4010 | + |
4011 | +#fancybox-right-ico { |
4012 | + background-image: url('fancybox.png'); |
4013 | + background-position: -40px -60px; |
4014 | +} |
4015 | + |
4016 | +#fancybox-left:hover, #fancybox-right:hover { |
4017 | + visibility: visible; /* IE6 */ |
4018 | +} |
4019 | + |
4020 | +#fancybox-left:hover span { |
4021 | + left: 20px; |
4022 | +} |
4023 | + |
4024 | +#fancybox-right:hover span { |
4025 | + left: auto; |
4026 | + right: 20px; |
4027 | +} |
4028 | + |
4029 | +.fancybox-bg { |
4030 | + position: absolute; |
4031 | + padding: 0; |
4032 | + margin: 0; |
4033 | + border: 0; |
4034 | + width: 20px; |
4035 | + height: 20px; |
4036 | + z-index: 1001; |
4037 | +} |
4038 | + |
4039 | +#fancybox-bg-n { |
4040 | + top: -20px; |
4041 | + left: 0; |
4042 | + width: 100%; |
4043 | + background-image: url('fancybox-x.png'); |
4044 | +} |
4045 | + |
4046 | +#fancybox-bg-ne { |
4047 | + top: -20px; |
4048 | + right: -20px; |
4049 | + background-image: url('fancybox.png'); |
4050 | + background-position: -40px -162px; |
4051 | +} |
4052 | + |
4053 | +#fancybox-bg-e { |
4054 | + top: 0; |
4055 | + right: -20px; |
4056 | + height: 100%; |
4057 | + background-image: url('fancybox-y.png'); |
4058 | + background-position: -20px 0px; |
4059 | +} |
4060 | + |
4061 | +#fancybox-bg-se { |
4062 | + bottom: -20px; |
4063 | + right: -20px; |
4064 | + background-image: url('fancybox.png'); |
4065 | + background-position: -40px -182px; |
4066 | +} |
4067 | + |
4068 | +#fancybox-bg-s { |
4069 | + bottom: -20px; |
4070 | + left: 0; |
4071 | + width: 100%; |
4072 | + background-image: url('fancybox-x.png'); |
4073 | + background-position: 0px -20px; |
4074 | +} |
4075 | + |
4076 | +#fancybox-bg-sw { |
4077 | + bottom: -20px; |
4078 | + left: -20px; |
4079 | + background-image: url('fancybox.png'); |
4080 | + background-position: -40px -142px; |
4081 | +} |
4082 | + |
4083 | +#fancybox-bg-w { |
4084 | + top: 0; |
4085 | + left: -20px; |
4086 | + height: 100%; |
4087 | + background-image: url('fancybox-y.png'); |
4088 | +} |
4089 | + |
4090 | +#fancybox-bg-nw { |
4091 | + top: -20px; |
4092 | + left: -20px; |
4093 | + background-image: url('fancybox.png'); |
4094 | + background-position: -40px -122px; |
4095 | +} |
4096 | + |
4097 | +#fancybox-title { |
4098 | + font-family: Helvetica; |
4099 | + font-size: 12px; |
4100 | + z-index: 1102; |
4101 | +} |
4102 | + |
4103 | +.fancybox-title-inside { |
4104 | + padding-bottom: 10px; |
4105 | + text-align: center; |
4106 | + color: #333; |
4107 | + background: #fff; |
4108 | + position: relative; |
4109 | +} |
4110 | + |
4111 | +.fancybox-title-outside { |
4112 | + padding-top: 10px; |
4113 | + color: #fff; |
4114 | +} |
4115 | + |
4116 | +.fancybox-title-over { |
4117 | + position: absolute; |
4118 | + bottom: 0; |
4119 | + left: 0; |
4120 | + color: #FFF; |
4121 | + text-align: left; |
4122 | +} |
4123 | + |
4124 | +#fancybox-title-over { |
4125 | + padding: 10px; |
4126 | + background-image: url('fancy_title_over.png'); |
4127 | + display: block; |
4128 | +} |
4129 | + |
4130 | +.fancybox-title-float { |
4131 | + position: absolute; |
4132 | + left: 0; |
4133 | + bottom: -20px; |
4134 | + height: 32px; |
4135 | +} |
4136 | + |
4137 | +#fancybox-title-float-wrap { |
4138 | + border: none; |
4139 | + border-collapse: collapse; |
4140 | + width: auto; |
4141 | +} |
4142 | + |
4143 | +#fancybox-title-float-wrap td { |
4144 | + border: none; |
4145 | + white-space: nowrap; |
4146 | +} |
4147 | + |
4148 | +#fancybox-title-float-left { |
4149 | + padding: 0 0 0 15px; |
4150 | + background: url('fancybox.png') -40px -90px no-repeat; |
4151 | +} |
4152 | + |
4153 | +#fancybox-title-float-main { |
4154 | + color: #FFF; |
4155 | + line-height: 29px; |
4156 | + font-weight: bold; |
4157 | + padding: 0 0 3px 0; |
4158 | + background: url('fancybox-x.png') 0px -40px; |
4159 | +} |
4160 | + |
4161 | +#fancybox-title-float-right { |
4162 | + padding: 0 0 0 15px; |
4163 | + background: url('fancybox.png') -55px -90px no-repeat; |
4164 | +} |
4165 | + |
4166 | +/* IE6 */ |
4167 | + |
4168 | +.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); } |
4169 | + |
4170 | +.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); } |
4171 | +.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); } |
4172 | + |
4173 | +.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; } |
4174 | +.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); } |
4175 | +.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); } |
4176 | +.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); } |
4177 | + |
4178 | +.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame { |
4179 | + height: expression(this.parentNode.clientHeight + "px"); |
4180 | +} |
4181 | + |
4182 | +#fancybox-loading.fancybox-ie6 { |
4183 | + position: absolute; margin-top: 0; |
4184 | + top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'); |
4185 | +} |
4186 | + |
4187 | +#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); } |
4188 | + |
4189 | +/* IE6, IE7, IE8 */ |
4190 | + |
4191 | +.fancybox-ie .fancybox-bg { background: transparent !important; } |
4192 | + |
4193 | +.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); } |
4194 | +.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); } |
4195 | +.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); } |
4196 | +.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); } |
4197 | +.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); } |
4198 | +.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); } |
4199 | +.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); } |
4200 | +.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); } |
4201 | \ No newline at end of file |
4202 | |
4203 | === added file 'applications/globaleaks/static/js/fancybox/jquery.fancybox-1.3.4.js' |
4204 | --- applications/globaleaks/static/js/fancybox/jquery.fancybox-1.3.4.js 1970-01-01 00:00:00 +0000 |
4205 | +++ applications/globaleaks/static/js/fancybox/jquery.fancybox-1.3.4.js 2011-09-02 13:53:25 +0000 |
4206 | @@ -0,0 +1,1156 @@ |
4207 | +/* |
4208 | + * FancyBox - jQuery Plugin |
4209 | + * Simple and fancy lightbox alternative |
4210 | + * |
4211 | + * Examples and documentation at: http://fancybox.net |
4212 | + * |
4213 | + * Copyright (c) 2008 - 2010 Janis Skarnelis |
4214 | + * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. |
4215 | + * |
4216 | + * Version: 1.3.4 (11/11/2010) |
4217 | + * Requires: jQuery v1.3+ |
4218 | + * |
4219 | + * Dual licensed under the MIT and GPL licenses: |
4220 | + * http://www.opensource.org/licenses/mit-license.php |
4221 | + * http://www.gnu.org/licenses/gpl.html |
4222 | + */ |
4223 | + |
4224 | +;(function($) { |
4225 | + var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right, |
4226 | + |
4227 | + selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [], |
4228 | + |
4229 | + ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i, |
4230 | + |
4231 | + loadingTimer, loadingFrame = 1, |
4232 | + |
4233 | + titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }), |
4234 | + |
4235 | + isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest, |
4236 | + |
4237 | + /* |
4238 | + * Private methods |
4239 | + */ |
4240 | + |
4241 | + _abort = function() { |
4242 | + loading.hide(); |
4243 | + |
4244 | + imgPreloader.onerror = imgPreloader.onload = null; |
4245 | + |
4246 | + if (ajaxLoader) { |
4247 | + ajaxLoader.abort(); |
4248 | + } |
4249 | + |
4250 | + tmp.empty(); |
4251 | + }, |
4252 | + |
4253 | + _error = function() { |
4254 | + if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) { |
4255 | + loading.hide(); |
4256 | + busy = false; |
4257 | + return; |
4258 | + } |
4259 | + |
4260 | + selectedOpts.titleShow = false; |
4261 | + |
4262 | + selectedOpts.width = 'auto'; |
4263 | + selectedOpts.height = 'auto'; |
4264 | + |
4265 | + tmp.html( '<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>' ); |
4266 | + |
4267 | + _process_inline(); |
4268 | + }, |
4269 | + |
4270 | + _start = function() { |
4271 | + var obj = selectedArray[ selectedIndex ], |
4272 | + href, |
4273 | + type, |
4274 | + title, |
4275 | + str, |
4276 | + emb, |
4277 | + ret; |
4278 | + |
4279 | + _abort(); |
4280 | + |
4281 | + selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox'))); |
4282 | + |
4283 | + ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts); |
4284 | + |
4285 | + if (ret === false) { |
4286 | + busy = false; |
4287 | + return; |
4288 | + } else if (typeof ret == 'object') { |
4289 | + selectedOpts = $.extend(selectedOpts, ret); |
4290 | + } |
4291 | + |
4292 | + title = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.title) || ''; |
4293 | + |
4294 | + if (obj.nodeName && !selectedOpts.orig) { |
4295 | + selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj); |
4296 | + } |
4297 | + |
4298 | + if (title === '' && selectedOpts.orig && selectedOpts.titleFromAlt) { |
4299 | + title = selectedOpts.orig.attr('alt'); |
4300 | + } |
4301 | + |
4302 | + href = selectedOpts.href || (obj.nodeName ? $(obj).attr('href') : obj.href) || null; |
4303 | + |
4304 | + if ((/^(?:javascript)/i).test(href) || href == '#') { |
4305 | + href = null; |
4306 | + } |
4307 | + |
4308 | + if (selectedOpts.type) { |
4309 | + type = selectedOpts.type; |
4310 | + |
4311 | + if (!href) { |
4312 | + href = selectedOpts.content; |
4313 | + } |
4314 | + |
4315 | + } else if (selectedOpts.content) { |
4316 | + type = 'html'; |
4317 | + |
4318 | + } else if (href) { |
4319 | + if (href.match(imgRegExp)) { |
4320 | + type = 'image'; |
4321 | + |
4322 | + } else if (href.match(swfRegExp)) { |
4323 | + type = 'swf'; |
4324 | + |
4325 | + } else if ($(obj).hasClass("iframe")) { |
4326 | + type = 'iframe'; |
4327 | + |
4328 | + } else if (href.indexOf("#") === 0) { |
4329 | + type = 'inline'; |
4330 | + |
4331 | + } else { |
4332 | + type = 'ajax'; |
4333 | + } |
4334 | + } |
4335 | + |
4336 | + if (!type) { |
4337 | + _error(); |
4338 | + return; |
4339 | + } |
4340 | + |
4341 | + if (type == 'inline') { |
4342 | + obj = href.substr(href.indexOf("#")); |
4343 | + type = $(obj).length > 0 ? 'inline' : 'ajax'; |
4344 | + } |
4345 | + |
4346 | + selectedOpts.type = type; |
4347 | + selectedOpts.href = href; |
4348 | + selectedOpts.title = title; |
4349 | + |
4350 | + if (selectedOpts.autoDimensions) { |
4351 | + if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') { |
4352 | + selectedOpts.width = 'auto'; |
4353 | + selectedOpts.height = 'auto'; |
4354 | + } else { |
4355 | + selectedOpts.autoDimensions = false; |
4356 | + } |
4357 | + } |
4358 | + |
4359 | + if (selectedOpts.modal) { |
4360 | + selectedOpts.overlayShow = true; |
4361 | + selectedOpts.hideOnOverlayClick = false; |
4362 | + selectedOpts.hideOnContentClick = false; |
4363 | + selectedOpts.enableEscapeButton = false; |
4364 | + selectedOpts.showCloseButton = false; |
4365 | + } |
4366 | + |
4367 | + selectedOpts.padding = parseInt(selectedOpts.padding, 10); |
4368 | + selectedOpts.margin = parseInt(selectedOpts.margin, 10); |
4369 | + |
4370 | + tmp.css('padding', (selectedOpts.padding + selectedOpts.margin)); |
4371 | + |
4372 | + $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() { |
4373 | + $(this).replaceWith(content.children()); |
4374 | + }); |
4375 | + |
4376 | + switch (type) { |
4377 | + case 'html' : |
4378 | + tmp.html( selectedOpts.content ); |
4379 | + _process_inline(); |
4380 | + break; |
4381 | + |
4382 | + case 'inline' : |
4383 | + if ( $(obj).parent().is('#fancybox-content') === true) { |
4384 | + busy = false; |
4385 | + return; |
4386 | + } |
4387 | + |
4388 | + $('<div class="fancybox-inline-tmp" />') |
4389 | + .hide() |
4390 | + .insertBefore( $(obj) ) |
4391 | + .bind('fancybox-cleanup', function() { |
4392 | + $(this).replaceWith(content.children()); |
4393 | + }).bind('fancybox-cancel', function() { |
4394 | + $(this).replaceWith(tmp.children()); |
4395 | + }); |
4396 | + |
4397 | + $(obj).appendTo(tmp); |
4398 | + |
4399 | + _process_inline(); |
4400 | + break; |
4401 | + |
4402 | + case 'image': |
4403 | + busy = false; |
4404 | + |
4405 | + $.fancybox.showActivity(); |
4406 | + |
4407 | + imgPreloader = new Image(); |
4408 | + |
4409 | + imgPreloader.onerror = function() { |
4410 | + _error(); |
4411 | + }; |
4412 | + |
4413 | + imgPreloader.onload = function() { |
4414 | + busy = true; |
4415 | + |
4416 | + imgPreloader.onerror = imgPreloader.onload = null; |
4417 | + |
4418 | + _process_image(); |
4419 | + }; |
4420 | + |
4421 | + imgPreloader.src = href; |
4422 | + break; |
4423 | + |
4424 | + case 'swf': |
4425 | + selectedOpts.scrolling = 'no'; |
4426 | + |
4427 | + str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"><param name="movie" value="' + href + '"></param>'; |
4428 | + emb = ''; |
4429 | + |
4430 | + $.each(selectedOpts.swf, function(name, val) { |
4431 | + str += '<param name="' + name + '" value="' + val + '"></param>'; |
4432 | + emb += ' ' + name + '="' + val + '"'; |
4433 | + }); |
4434 | + |
4435 | + str += '<embed src="' + href + '" type="application/x-shockwave-flash" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"' + emb + '></embed></object>'; |
4436 | + |
4437 | + tmp.html(str); |
4438 | + |
4439 | + _process_inline(); |
4440 | + break; |
4441 | + |
4442 | + case 'ajax': |
4443 | + busy = false; |
4444 | + |
4445 | + $.fancybox.showActivity(); |
4446 | + |
4447 | + selectedOpts.ajax.win = selectedOpts.ajax.success; |
4448 | + |
4449 | + ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, { |
4450 | + url : href, |
4451 | + data : selectedOpts.ajax.data || {}, |
4452 | + error : function(XMLHttpRequest, textStatus, errorThrown) { |
4453 | + if ( XMLHttpRequest.status > 0 ) { |
4454 | + _error(); |
4455 | + } |
4456 | + }, |
4457 | + success : function(data, textStatus, XMLHttpRequest) { |
4458 | + var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader; |
4459 | + if (o.status == 200) { |
4460 | + if ( typeof selectedOpts.ajax.win == 'function' ) { |
4461 | + ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest); |
4462 | + |
4463 | + if (ret === false) { |
4464 | + loading.hide(); |
4465 | + return; |
4466 | + } else if (typeof ret == 'string' || typeof ret == 'object') { |
4467 | + data = ret; |
4468 | + } |
4469 | + } |
4470 | + |
4471 | + tmp.html( data ); |
4472 | + _process_inline(); |
4473 | + } |
4474 | + } |
4475 | + })); |
4476 | + |
4477 | + break; |
4478 | + |
4479 | + case 'iframe': |
4480 | + _show(); |
4481 | + break; |
4482 | + } |
4483 | + }, |
4484 | + |
4485 | + _process_inline = function() { |
4486 | + var |
4487 | + w = selectedOpts.width, |
4488 | + h = selectedOpts.height; |
4489 | + |
4490 | + if (w.toString().indexOf('%') > -1) { |
4491 | + w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px'; |
4492 | + |
4493 | + } else { |
4494 | + w = w == 'auto' ? 'auto' : w + 'px'; |
4495 | + } |
4496 | + |
4497 | + if (h.toString().indexOf('%') > -1) { |
4498 | + h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px'; |
4499 | + |
4500 | + } else { |
4501 | + h = h == 'auto' ? 'auto' : h + 'px'; |
4502 | + } |
4503 | + |
4504 | + tmp.wrapInner('<div style="width:' + w + ';height:' + h + ';overflow: ' + (selectedOpts.scrolling == 'auto' ? 'auto' : (selectedOpts.scrolling == 'yes' ? 'scroll' : 'hidden')) + ';position:relative;"></div>'); |
4505 | + |
4506 | + selectedOpts.width = tmp.width(); |
4507 | + selectedOpts.height = tmp.height(); |
4508 | + |
4509 | + _show(); |
4510 | + }, |
4511 | + |
4512 | + _process_image = function() { |
4513 | + selectedOpts.width = imgPreloader.width; |
4514 | + selectedOpts.height = imgPreloader.height; |
4515 | + |
4516 | + $("<img />").attr({ |
4517 | + 'id' : 'fancybox-img', |
4518 | + 'src' : imgPreloader.src, |
4519 | + 'alt' : selectedOpts.title |
4520 | + }).appendTo( tmp ); |
4521 | + |
4522 | + _show(); |
4523 | + }, |
4524 | + |
4525 | + _show = function() { |
4526 | + var pos, equal; |
4527 | + |
4528 | + loading.hide(); |
4529 | + |
4530 | + if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) { |
4531 | + $.event.trigger('fancybox-cancel'); |
4532 | + |
4533 | + busy = false; |
4534 | + return; |
4535 | + } |
4536 | + |
4537 | + busy = true; |
4538 | + |
4539 | + $(content.add( overlay )).unbind(); |
4540 | + |
4541 | + $(window).unbind("resize.fb scroll.fb"); |
4542 | + $(document).unbind('keydown.fb'); |
4543 | + |
4544 | + if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') { |
4545 | + wrap.css('height', wrap.height()); |
4546 | + } |
4547 | + |
4548 | + currentArray = selectedArray; |
4549 | + currentIndex = selectedIndex; |
4550 | + currentOpts = selectedOpts; |
4551 | + |
4552 | + if (currentOpts.overlayShow) { |
4553 | + overlay.css({ |
4554 | + 'background-color' : currentOpts.overlayColor, |
4555 | + 'opacity' : currentOpts.overlayOpacity, |
4556 | + 'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto', |
4557 | + 'height' : $(document).height() |
4558 | + }); |
4559 | + |
4560 | + if (!overlay.is(':visible')) { |
4561 | + if (isIE6) { |
4562 | + $('select:not(#fancybox-tmp select)').filter(function() { |
4563 | + return this.style.visibility !== 'hidden'; |
4564 | + }).css({'visibility' : 'hidden'}).one('fancybox-cleanup', function() { |
4565 | + this.style.visibility = 'inherit'; |
4566 | + }); |
4567 | + } |
4568 | + |
4569 | + overlay.show(); |
4570 | + } |
4571 | + } else { |
4572 | + overlay.hide(); |
4573 | + } |
4574 | + |
4575 | + final_pos = _get_zoom_to(); |
4576 | + |
4577 | + _process_title(); |
4578 | + |
4579 | + if (wrap.is(":visible")) { |
4580 | + $( close.add( nav_left ).add( nav_right ) ).hide(); |
4581 | + |
4582 | + pos = wrap.position(), |
4583 | + |
4584 | + start_pos = { |
4585 | + top : pos.top, |
4586 | + left : pos.left, |
4587 | + width : wrap.width(), |
4588 | + height : wrap.height() |
4589 | + }; |
4590 | + |
4591 | + equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height); |
4592 | + |
4593 | + content.fadeTo(currentOpts.changeFade, 0.3, function() { |
4594 | + var finish_resizing = function() { |
4595 | + content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish); |
4596 | + }; |
4597 | + |
4598 | + $.event.trigger('fancybox-change'); |
4599 | + |
4600 | + content |
4601 | + .empty() |
4602 | + .removeAttr('filter') |
4603 | + .css({ |
4604 | + 'border-width' : currentOpts.padding, |
4605 | + 'width' : final_pos.width - currentOpts.padding * 2, |
4606 | + 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2 |
4607 | + }); |
4608 | + |
4609 | + if (equal) { |
4610 | + finish_resizing(); |
4611 | + |
4612 | + } else { |
4613 | + fx.prop = 0; |
4614 | + |
4615 | + $(fx).animate({prop: 1}, { |
4616 | + duration : currentOpts.changeSpeed, |
4617 | + easing : currentOpts.easingChange, |
4618 | + step : _draw, |
4619 | + complete : finish_resizing |
4620 | + }); |
4621 | + } |
4622 | + }); |
4623 | + |
4624 | + return; |
4625 | + } |
4626 | + |
4627 | + wrap.removeAttr("style"); |
4628 | + |
4629 | + content.css('border-width', currentOpts.padding); |
4630 | + |
4631 | + if (currentOpts.transitionIn == 'elastic') { |
4632 | + start_pos = _get_zoom_from(); |
4633 | + |
4634 | + content.html( tmp.contents() ); |
4635 | + |
4636 | + wrap.show(); |
4637 | + |
4638 | + if (currentOpts.opacity) { |
4639 | + final_pos.opacity = 0; |
4640 | + } |
4641 | + |
4642 | + fx.prop = 0; |
4643 | + |
4644 | + $(fx).animate({prop: 1}, { |
4645 | + duration : currentOpts.speedIn, |
4646 | + easing : currentOpts.easingIn, |
4647 | + step : _draw, |
4648 | + complete : _finish |
4649 | + }); |
4650 | + |
4651 | + return; |
4652 | + } |
4653 | + |
4654 | + if (currentOpts.titlePosition == 'inside' && titleHeight > 0) { |
4655 | + title.show(); |
4656 | + } |
4657 | + |
4658 | + content |
4659 | + .css({ |
4660 | + 'width' : final_pos.width - currentOpts.padding * 2, |
4661 | + 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2 |
4662 | + }) |
4663 | + .html( tmp.contents() ); |
4664 | + |
4665 | + wrap |
4666 | + .css(final_pos) |
4667 | + .fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish ); |
4668 | + }, |
4669 | + |
4670 | + _format_title = function(title) { |
4671 | + if (title && title.length) { |
4672 | + if (currentOpts.titlePosition == 'float') { |
4673 | + return '<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">' + title + '</td><td id="fancybox-title-float-right"></td></tr></table>'; |
4674 | + } |
4675 | + |
4676 | + return '<div id="fancybox-title-' + currentOpts.titlePosition + '">' + title + '</div>'; |
4677 | + } |
4678 | + |
4679 | + return false; |
4680 | + }, |
4681 | + |
4682 | + _process_title = function() { |
4683 | + titleStr = currentOpts.title || ''; |
4684 | + titleHeight = 0; |
4685 | + |
4686 | + title |
4687 | + .empty() |
4688 | + .removeAttr('style') |
4689 | + .removeClass(); |
4690 | + |
4691 | + if (currentOpts.titleShow === false) { |
4692 | + title.hide(); |
4693 | + return; |
4694 | + } |
4695 | + |
4696 | + titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr); |
4697 | + |
4698 | + if (!titleStr || titleStr === '') { |
4699 | + title.hide(); |
4700 | + return; |
4701 | + } |
4702 | + |
4703 | + title |
4704 | + .addClass('fancybox-title-' + currentOpts.titlePosition) |
4705 | + .html( titleStr ) |
4706 | + .appendTo( 'body' ) |
4707 | + .show(); |
4708 | + |
4709 | + switch (currentOpts.titlePosition) { |
4710 | + case 'inside': |
4711 | + title |
4712 | + .css({ |
4713 | + 'width' : final_pos.width - (currentOpts.padding * 2), |
4714 | + 'marginLeft' : currentOpts.padding, |
4715 | + 'marginRight' : currentOpts.padding |
4716 | + }); |
4717 | + |
4718 | + titleHeight = title.outerHeight(true); |
4719 | + |
4720 | + title.appendTo( outer ); |
4721 | + |
4722 | + final_pos.height += titleHeight; |
4723 | + break; |
4724 | + |
4725 | + case 'over': |
4726 | + title |
4727 | + .css({ |
4728 | + 'marginLeft' : currentOpts.padding, |
4729 | + 'width' : final_pos.width - (currentOpts.padding * 2), |
4730 | + 'bottom' : currentOpts.padding |
4731 | + }) |
4732 | + .appendTo( outer ); |
4733 | + break; |
4734 | + |
4735 | + case 'float': |
4736 | + title |
4737 | + .css('left', parseInt((title.width() - final_pos.width - 40)/ 2, 10) * -1) |
4738 | + .appendTo( wrap ); |
4739 | + break; |
4740 | + |
4741 | + default: |
4742 | + title |
4743 | + .css({ |
4744 | + 'width' : final_pos.width - (currentOpts.padding * 2), |
4745 | + 'paddingLeft' : currentOpts.padding, |
4746 | + 'paddingRight' : currentOpts.padding |
4747 | + }) |
4748 | + .appendTo( wrap ); |
4749 | + break; |
4750 | + } |
4751 | + |
4752 | + title.hide(); |
4753 | + }, |
4754 | + |
4755 | + _set_navigation = function() { |
4756 | + if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) { |
4757 | + $(document).bind('keydown.fb', function(e) { |
4758 | + if (e.keyCode == 27 && currentOpts.enableEscapeButton) { |
4759 | + e.preventDefault(); |
4760 | + $.fancybox.close(); |
4761 | + |
4762 | + } else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') { |
4763 | + e.preventDefault(); |
4764 | + $.fancybox[ e.keyCode == 37 ? 'prev' : 'next'](); |
4765 | + } |
4766 | + }); |
4767 | + } |
4768 | + |
4769 | + if (!currentOpts.showNavArrows) { |
4770 | + nav_left.hide(); |
4771 | + nav_right.hide(); |
4772 | + return; |
4773 | + } |
4774 | + |
4775 | + if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) { |
4776 | + nav_left.show(); |
4777 | + } |
4778 | + |
4779 | + if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) { |
4780 | + nav_right.show(); |
4781 | + } |
4782 | + }, |
4783 | + |
4784 | + _finish = function () { |
4785 | + if (!$.support.opacity) { |
4786 | + content.get(0).style.removeAttribute('filter'); |
4787 | + wrap.get(0).style.removeAttribute('filter'); |
4788 | + } |
4789 | + |
4790 | + if (selectedOpts.autoDimensions) { |
4791 | + content.css('height', 'auto'); |
4792 | + } |
4793 | + |
4794 | + wrap.css('height', 'auto'); |
4795 | + |
4796 | + if (titleStr && titleStr.length) { |
4797 | + title.show(); |
4798 | + } |
4799 | + |
4800 | + if (currentOpts.showCloseButton) { |
4801 | + close.show(); |
4802 | + } |
4803 | + |
4804 | + _set_navigation(); |
4805 | + |
4806 | + if (currentOpts.hideOnContentClick) { |
4807 | + content.bind('click', $.fancybox.close); |
4808 | + } |
4809 | + |
4810 | + if (currentOpts.hideOnOverlayClick) { |
4811 | + overlay.bind('click', $.fancybox.close); |
4812 | + } |
4813 | + |
4814 | + $(window).bind("resize.fb", $.fancybox.resize); |
4815 | + |
4816 | + if (currentOpts.centerOnScroll) { |
4817 | + $(window).bind("scroll.fb", $.fancybox.center); |
4818 | + } |
4819 | + |
4820 | + if (currentOpts.type == 'iframe') { |
4821 | + $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + ($.browser.msie ? 'allowtransparency="true""' : '') + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content); |
4822 | + } |
4823 | + |
4824 | + wrap.show(); |
4825 | + |
4826 | + busy = false; |
4827 | + |
4828 | + $.fancybox.center(); |
4829 | + |
4830 | + currentOpts.onComplete(currentArray, currentIndex, currentOpts); |
4831 | + |
4832 | + _preload_images(); |
4833 | + }, |
4834 | + |
4835 | + _preload_images = function() { |
4836 | + var href, |
4837 | + objNext; |
4838 | + |
4839 | + if ((currentArray.length -1) > currentIndex) { |
4840 | + href = currentArray[ currentIndex + 1 ].href; |
4841 | + |
4842 | + if (typeof href !== 'undefined' && href.match(imgRegExp)) { |
4843 | + objNext = new Image(); |
4844 | + objNext.src = href; |
4845 | + } |
4846 | + } |
4847 | + |
4848 | + if (currentIndex > 0) { |
4849 | + href = currentArray[ currentIndex - 1 ].href; |
4850 | + |
4851 | + if (typeof href !== 'undefined' && href.match(imgRegExp)) { |
4852 | + objNext = new Image(); |
4853 | + objNext.src = href; |
4854 | + } |
4855 | + } |
4856 | + }, |
4857 | + |
4858 | + _draw = function(pos) { |
4859 | + var dim = { |
4860 | + width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10), |
4861 | + height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10), |
4862 | + |
4863 | + top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10), |
4864 | + left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10) |
4865 | + }; |
4866 | + |
4867 | + if (typeof final_pos.opacity !== 'undefined') { |
4868 | + dim.opacity = pos < 0.5 ? 0.5 : pos; |
4869 | + } |
4870 | + |
4871 | + wrap.css(dim); |
4872 | + |
4873 | + content.css({ |
4874 | + 'width' : dim.width - currentOpts.padding * 2, |
4875 | + 'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2 |
4876 | + }); |
4877 | + }, |
4878 | + |
4879 | + _get_viewport = function() { |
4880 | + return [ |
4881 | + $(window).width() - (currentOpts.margin * 2), |
4882 | + $(window).height() - (currentOpts.margin * 2), |
4883 | + $(document).scrollLeft() + currentOpts.margin, |
4884 | + $(document).scrollTop() + currentOpts.margin |
4885 | + ]; |
4886 | + }, |
4887 | + |
4888 | + _get_zoom_to = function () { |
4889 | + var view = _get_viewport(), |
4890 | + to = {}, |
4891 | + resize = currentOpts.autoScale, |
4892 | + double_padding = currentOpts.padding * 2, |
4893 | + ratio; |
4894 | + |
4895 | + if (currentOpts.width.toString().indexOf('%') > -1) { |
4896 | + to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10); |
4897 | + } else { |
4898 | + to.width = currentOpts.width + double_padding; |
4899 | + } |
4900 | + |
4901 | + if (currentOpts.height.toString().indexOf('%') > -1) { |
4902 | + to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10); |
4903 | + } else { |
4904 | + to.height = currentOpts.height + double_padding; |
4905 | + } |
4906 | + |
4907 | + if (resize && (to.width > view[0] || to.height > view[1])) { |
4908 | + if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') { |
4909 | + ratio = (currentOpts.width ) / (currentOpts.height ); |
4910 | + |
4911 | + if ((to.width ) > view[0]) { |
4912 | + to.width = view[0]; |
4913 | + to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10); |
4914 | + } |
4915 | + |
4916 | + if ((to.height) > view[1]) { |
4917 | + to.height = view[1]; |
4918 | + to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10); |
4919 | + } |
4920 | + |
4921 | + } else { |
4922 | + to.width = Math.min(to.width, view[0]); |
4923 | + to.height = Math.min(to.height, view[1]); |
4924 | + } |
4925 | + } |
4926 | + |
4927 | + to.top = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - to.height - 40) * 0.5)), 10); |
4928 | + to.left = parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - to.width - 40) * 0.5)), 10); |
4929 | + |
4930 | + return to; |
4931 | + }, |
4932 | + |
4933 | + _get_obj_pos = function(obj) { |
4934 | + var pos = obj.offset(); |
4935 | + |
4936 | + pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0; |
4937 | + pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0; |
4938 | + |
4939 | + pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0; |
4940 | + pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0; |
4941 | + |
4942 | + pos.width = obj.width(); |
4943 | + pos.height = obj.height(); |
4944 | + |
4945 | + return pos; |
4946 | + }, |
4947 | + |
4948 | + _get_zoom_from = function() { |
4949 | + var orig = selectedOpts.orig ? $(selectedOpts.orig) : false, |
4950 | + from = {}, |
4951 | + pos, |
4952 | + view; |
4953 | + |
4954 | + if (orig && orig.length) { |
4955 | + pos = _get_obj_pos(orig); |
4956 | + |
4957 | + from = { |
4958 | + width : pos.width + (currentOpts.padding * 2), |
4959 | + height : pos.height + (currentOpts.padding * 2), |
4960 | + top : pos.top - currentOpts.padding - 20, |
4961 | + left : pos.left - currentOpts.padding - 20 |
4962 | + }; |
4963 | + |
4964 | + } else { |
4965 | + view = _get_viewport(); |
4966 | + |
4967 | + from = { |
4968 | + width : currentOpts.padding * 2, |
4969 | + height : currentOpts.padding * 2, |
4970 | + top : parseInt(view[3] + view[1] * 0.5, 10), |
4971 | + left : parseInt(view[2] + view[0] * 0.5, 10) |
4972 | + }; |
4973 | + } |
4974 | + |
4975 | + return from; |
4976 | + }, |
4977 | + |
4978 | + _animate_loading = function() { |
4979 | + if (!loading.is(':visible')){ |
4980 | + clearInterval(loadingTimer); |
4981 | + return; |
4982 | + } |
4983 | + |
4984 | + $('div', loading).css('top', (loadingFrame * -40) + 'px'); |
4985 | + |
4986 | + loadingFrame = (loadingFrame + 1) % 12; |
4987 | + }; |
4988 | + |
4989 | + /* |
4990 | + * Public methods |
4991 | + */ |
4992 | + |
4993 | + $.fn.fancybox = function(options) { |
4994 | + if (!$(this).length) { |
4995 | + return this; |
4996 | + } |
4997 | + |
4998 | + $(this) |
4999 | + .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {}))) |
5000 | + .unbind('click.fb') |
The diff has been truncated for viewing.