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