├── .gitignore
├── INSTALL
├── LICENSE
├── README.md
├── contrib
├── django-invitation.zip
├── pip-requirements.txt
└── ubuntu
│ ├── README
│ ├── fordropweb.init
│ └── start_fordropweb.sh
├── django_fordrop
├── __init__.py
├── admin.py
├── api_v1.py
├── forms.py
├── middleware.py
├── models.py
├── tests.py
└── views.py
├── fordropweb
├── __init__.py
├── static
│ ├── bootstrap
│ │ ├── css
│ │ │ ├── bootstrap-responsive.css
│ │ │ ├── bootstrap-responsive.min.css
│ │ │ ├── bootstrap.css
│ │ │ └── bootstrap.min.css
│ │ ├── img
│ │ │ ├── glyphicons-halflings-white.png
│ │ │ └── glyphicons-halflings.png
│ │ └── js
│ │ │ ├── bootstrap.js
│ │ │ └── bootstrap.min.js
│ ├── css
│ │ ├── style.css
│ │ └── timeline.css
│ ├── img
│ │ ├── favicon.ico
│ │ ├── placeholder.png
│ │ └── thumbs_up.png
│ ├── js
│ │ ├── fd_timeline.js
│ │ ├── jquery-1.7.2.min.js
│ │ └── timeline_2.3.1
│ │ │ ├── CHANGES.txt
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.txt
│ │ │ ├── timeline_ajax
│ │ │ ├── content
│ │ │ │ └── history.html
│ │ │ ├── images
│ │ │ │ ├── bubble-arrow-point-down.png
│ │ │ │ ├── bubble-arrow-point-left.png
│ │ │ │ ├── bubble-arrow-point-right.png
│ │ │ │ ├── bubble-arrow-point-up.png
│ │ │ │ ├── bubble-bottom-left.png
│ │ │ │ ├── bubble-bottom-right.png
│ │ │ │ ├── bubble-bottom.png
│ │ │ │ ├── bubble-left.png
│ │ │ │ ├── bubble-right.png
│ │ │ │ ├── bubble-top-left.png
│ │ │ │ ├── bubble-top-right.png
│ │ │ │ ├── bubble-top.png
│ │ │ │ ├── close-button.png
│ │ │ │ ├── copy.png
│ │ │ │ ├── message-bottom-left.png
│ │ │ │ ├── message-bottom-right.png
│ │ │ │ ├── message-left.png
│ │ │ │ ├── message-right.png
│ │ │ │ ├── message-top-left.png
│ │ │ │ └── message-top-right.png
│ │ │ ├── scripts
│ │ │ │ └── signal.js
│ │ │ ├── simile-ajax-api.js
│ │ │ ├── simile-ajax-bundle.js
│ │ │ └── styles
│ │ │ │ ├── graphics-ie6.css
│ │ │ │ └── graphics.css
│ │ │ └── timeline_js
│ │ │ ├── images
│ │ │ ├── blue-circle.png
│ │ │ ├── bubble-bottom-arrow.png
│ │ │ ├── bubble-bottom-left.png
│ │ │ ├── bubble-bottom-right.png
│ │ │ ├── bubble-bottom.png
│ │ │ ├── bubble-left-arrow.png
│ │ │ ├── bubble-left.png
│ │ │ ├── bubble-right-arrow.png
│ │ │ ├── bubble-right.png
│ │ │ ├── bubble-top-arrow.png
│ │ │ ├── bubble-top-left.png
│ │ │ ├── bubble-top-right.png
│ │ │ ├── bubble-top.png
│ │ │ ├── close-button.png
│ │ │ ├── copyright-vertical.png
│ │ │ ├── copyright.png
│ │ │ ├── dark-blue-circle.png
│ │ │ ├── dark-green-circle.png
│ │ │ ├── dark-red-circle.png
│ │ │ ├── dull-blue-circle.png
│ │ │ ├── dull-green-circle.png
│ │ │ ├── dull-red-circle.png
│ │ │ ├── gray-circle.png
│ │ │ ├── green-circle.png
│ │ │ ├── message-bottom-left.png
│ │ │ ├── message-bottom-right.png
│ │ │ ├── message-left.png
│ │ │ ├── message-right.png
│ │ │ ├── message-top-left.png
│ │ │ ├── message-top-right.png
│ │ │ ├── progress-running.gif
│ │ │ ├── red-circle.png
│ │ │ └── top-bubble.png
│ │ │ ├── scripts
│ │ │ └── l10n
│ │ │ │ ├── cs
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ ├── de
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ ├── en
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ ├── es
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ ├── fr
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ ├── it
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ ├── nl
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ ├── ru
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ ├── se
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ ├── tr
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ ├── vi
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ │ └── zh
│ │ │ │ ├── labellers.js
│ │ │ │ └── timeline.js
│ │ │ ├── timeline-api.js
│ │ │ ├── timeline-bundle.css
│ │ │ └── timeline-bundle.js
│ └── pubsubbox
│ │ ├── css
│ │ ├── bootstrap-2.0.2.min.css
│ │ ├── bootstrap-responsive-2.0.2.min.css
│ │ └── pubsubbox.css
│ │ ├── img
│ │ ├── glyphicons-halflings-white.png
│ │ ├── glyphicons-halflings.png
│ │ └── spinner.gif
│ │ └── js
│ │ ├── bootstrap-2.0.2.min.js
│ │ ├── bootstrap-modal-2.0.2.js
│ │ ├── bootstrap-transition-2.0.2.js
│ │ ├── config.js.example
│ │ ├── jquery-1.7.1.min.js
│ │ ├── jquery-ui-1.8.16.min.js
│ │ ├── jquery.ui.touch-punch.min.js
│ │ ├── pubsubbox.js
│ │ └── strophe-1.0.2.min.js
├── templates
│ ├── 404.html
│ ├── base.html
│ ├── collection_base.html
│ ├── collection_timeline.html
│ ├── edit_profile.html
│ ├── explore.html
│ ├── file.html
│ ├── index.html
│ ├── invitation
│ │ ├── invitation_complete.html
│ │ ├── invitation_email.txt
│ │ ├── invitation_email_subject.txt
│ │ ├── invitation_form.html
│ │ └── wrong_invitation_key.html
│ ├── profile.html
│ ├── pubsubbox.html
│ ├── registration
│ │ ├── activate.html
│ │ ├── activation_complete.html
│ │ ├── activation_email.txt
│ │ ├── activation_email_subject.txt
│ │ ├── login.html
│ │ ├── logout.html
│ │ ├── password_change_done.html
│ │ ├── password_change_form.html
│ │ ├── registration_complete.html
│ │ └── registration_form.html
│ ├── request_invite.html
│ ├── search.html
│ ├── thanks.html
│ ├── welcome_step_0.html
│ ├── welcome_step_1.html
│ ├── welcome_step_2.html
│ └── welcome_step_3.html
├── urls.py
└── wsgi.py
└── manage.py
/.gitignore:
--------------------------------------------------------------------------------
1 | *.db
2 | *.pyc
3 | .idea
4 | fordropweb/static/cache
5 | fordropweb/static/avatars
6 | settings.py
7 | fordrop_settings.py
8 | config.js
9 |
--------------------------------------------------------------------------------
/INSTALL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/INSTALL
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2010, KTH Royal Institute of Technology
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5 |
6 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8 | * The name of the KTH Royal Institute of Technology may not be used to endorse or promote products derived from this software without specific prior written permission.
9 |
10 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
11 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
12 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
13 | IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | fordrop – Forensic Dropbox
2 | ----------------
3 |
4 | Building the federated social CERT
5 | Information sharing has proven both important and difficult in the field of
6 | computer forensic analysis. The ability to identify occurrences of electronic
7 | evidence across organization boundaries and making this information accessible
8 | and searchable for a larger community is one of the challenges fordrop is trying to
9 | address. By building a social platform where decentralization, federation and
10 | crowd sourcing are central pieces, fordrop makes it easy and safe to share this
11 | information with your fellow investigators. Fordrop enables crowd-sourcing for IT-
12 | forensics.
13 |
14 |
15 | Installation
16 | ------------
17 |
18 | These are the raw steps that is required to install all the dependencies.
19 | Better documentation is on it's way!
20 |
21 | apt-get install build-essential
22 | apt-get install python-dev
23 | apt-get install libjpeg62-dev
24 | apt-get install unzip
25 | apt-get install openjdk-6-jdk
26 | apt-get install nginx
27 | easy_install pip
28 | pip install virtualenv
29 | mkdir /opt/virtenvs && cd /opt/virtenvs
30 | virtualenv fordrop
31 | source /opt/virtenvs/fordrop/bin/activate
32 | cd /tmp
33 | wget http://downloads.sourceforge.net/project/jpype/JPype/0.5.4/JPype-0.5.4.2.zip
34 | unzip JPype-0.5.4.2.zip
35 | pip install JPype-0.5.4.2/
36 | pip install -r /opt/fordrop-web/requirements/fordrop.pip
37 | pip install gunicorn
38 | pip install PIL
39 | mkdir /etc/nginx/ssl && cd /etc/nginx/ssl
40 | openssl genrsa -des3 -out server.key 1024
41 | openssl rsa -in server.key -out server.key.insecure
42 | mv server.key.insecure server.key
43 | openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
44 | cp /opt/fordrop-web/contrib/fordrop-web.upstart /etc/init/fordrop-web.conf
45 | cp /opt/fordrop-web/contrib/fordrop-web.nginx /etc/nginx/sites-availible/fordrop-web
46 | ln -s /etc/nginx/sites-availible/fordrop-web /etc/nginx/sites-enabled/fordrop-web
47 | service fordrop-web start
48 | /etc/init.d/nginx restart
--------------------------------------------------------------------------------
/contrib/django-invitation.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/contrib/django-invitation.zip
--------------------------------------------------------------------------------
/contrib/pip-requirements.txt:
--------------------------------------------------------------------------------
1 | Django==1.4
2 | PIL==1.1.7
3 | django-registration==0.8
4 | django-taggit==0.9.3
5 | fordrop==0.1.1
6 | gunicorn==0.14.2
7 | requests==0.11.2
8 | sleekxmpp==1.0
9 | sorl-thumbnail==11.12
--------------------------------------------------------------------------------
/contrib/ubuntu/README:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/contrib/ubuntu/README
--------------------------------------------------------------------------------
/contrib/ubuntu/fordropweb.init:
--------------------------------------------------------------------------------
1 | description "fordrop Web"
2 | start on runlevel [2345]
3 | stop on runlevel [06]
4 | respawn
5 | respawn limit 10 5
6 | exec /opt/start_fordropweb.sh
--------------------------------------------------------------------------------
/contrib/ubuntu/start_fordropweb.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 | LOGFILE=/var/log/fordropweb.log
4 | LOGDIR=$(dirname $LOGFILE)
5 | NUM_WORKERS=1
6 | # user/group to run as
7 | USER=www-data
8 | GROUP=www-data
9 | cd /opt/fordropweb/fordropweb
10 | source /opt/virtual_envs/fordropweb/bin/activate
11 | test -d $LOGDIR || mkdir -p $LOGDIR
12 | exec /opt/virtual_envs/fordropweb/bin/gunicorn_django -w $NUM_WORKERS \
13 | --user=$USER --group=$GROUP --log-level=debug \
14 | --log-file=$LOGFILE 2>>$LOGFILE
--------------------------------------------------------------------------------
/django_fordrop/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/django_fordrop/__init__.py
--------------------------------------------------------------------------------
/django_fordrop/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 | from models import File, FileComment, Collection, UserProfile, UserSettings, PubSubNode
3 |
4 | admin.site.register(File)
5 | admin.site.register(FileComment)
6 | admin.site.register(Collection)
7 | admin.site.register(UserProfile)
8 | admin.site.register(UserSettings)
9 | admin.site.register(PubSubNode)
--------------------------------------------------------------------------------
/django_fordrop/api_v1.py:
--------------------------------------------------------------------------------
1 | from django.contrib.auth.models import User
2 | from tastypie.authorization import Authorization
3 | from tastypie.authentication import ApiKeyAuthentication, Authentication
4 | from tastypie import fields
5 | from tastypie.constants import ALL
6 | from tastypie.resources import ModelResource
7 | from django_fordrop.models import File, FileComment, UserProfile
8 |
9 | class UserResource(ModelResource):
10 | resource_name = 'user'
11 | class Meta:
12 | queryset = User.objects.all()
13 | fields = ['username', 'is_active']
14 | authorization = Authorization()
15 | authentication = ApiKeyAuthentication()
16 |
17 | class FileResource(ModelResource):
18 | resource_name = 'file'
19 | user = fields.ForeignKey(UserResource, 'user')
20 | class Meta:
21 | queryset = File.objects.all()
22 | filtering = {
23 | "uuid": ALL
24 | }
25 | authorization = Authorization()
26 | authentication = ApiKeyAuthentication()
27 |
28 | class FileCommentResource(ModelResource):
29 | resource_name = 'filecomment'
30 | file = fields.ForeignKey(FileResource, 'file', full=True)
31 | class Meta:
32 | queryset = FileComment.objects.all()
33 | authorization = Authorization()
34 | authentication = ApiKeyAuthentication()
35 |
36 | class UserProfileResource(ModelResource):
37 | user = fields.ForeignKey(UserResource, 'user', full=True)
38 | class Meta:
39 | queryset = UserProfile.objects.all()
40 | excludes = ['id']
41 | filtering = {
42 | "uuid": ALL
43 | }
44 | authorization = Authorization()
45 | authentication = ApiKeyAuthentication()
46 |
--------------------------------------------------------------------------------
/django_fordrop/forms.py:
--------------------------------------------------------------------------------
1 | from django import forms
2 | from django_fordrop.models import UserProfile, UserSettings
3 | from models import File, FileComment, CollectionComment, Collection
4 |
5 | class FileCommentForm(forms.ModelForm):
6 | class Meta:
7 | model = FileComment
8 | fields = ('content',)
9 |
10 | class FileTagForm(forms.ModelForm):
11 | class Meta:
12 | model = File
13 | fields = ('tags',)
14 |
15 | class CollectionTagForm(forms.ModelForm):
16 | class Meta:
17 | model = Collection
18 | fields = ('tags',)
19 |
20 | class CollectionCommentForm(forms.ModelForm):
21 | class Meta:
22 | model = CollectionComment
23 | fields = ('content',)
24 |
25 | class CollectionForm(forms.ModelForm):
26 | class Meta:
27 | model = Collection
28 | fields = ('title', 'tags', 'description')
29 |
30 | class UploadFileForm(forms.ModelForm):
31 | file = forms.FileField(required=True)
32 | #url = forms.CharField(required=False)
33 | #hash = forms.CharField(required=False)
34 | class Meta:
35 | model = File
36 | fields = ('description', 'tags')
37 |
38 | class UserProfileForm(forms.ModelForm):
39 | class Meta:
40 | model = UserProfile
41 | exclude = ('user', 'uuid')
42 |
43 | class UserSettingsForm(forms.ModelForm):
44 | class Meta:
45 | model = UserSettings
46 | exclude = ('user')
47 |
48 | class RequestInviteForm(forms.Form):
49 | email = forms.fields.EmailField(label="")
50 |
--------------------------------------------------------------------------------
/django_fordrop/middleware.py:
--------------------------------------------------------------------------------
1 | from django.contrib import messages
2 | from django.http import HttpResponseRedirect
3 |
4 | class FirstLoginMiddleware(object):
5 | def process_request(self, request):
6 | if request.user.is_authenticated() and "dont_check_first_login" not in request.session:
7 | request.session["dont_check_first_login"] = True
8 | profile = request.user.profile
9 | if profile.is_first_login:
10 | profile.is_first_login = False
11 | profile.name = request.user.username
12 | profile.save()
13 | return HttpResponseRedirect("/welcome")
14 |
15 |
--------------------------------------------------------------------------------
/django_fordrop/tests.py:
--------------------------------------------------------------------------------
1 | """
2 | This file demonstrates writing tests using the unittest module. These will pass
3 | when you run "manage.py test".
4 |
5 | Replace this with more appropriate tests for your application.
6 | """
7 |
8 | from django.test import TestCase
9 |
10 |
11 | class SimpleTest(TestCase):
12 | def test_basic_addition(self):
13 | """
14 | Tests that 1 + 1 always equals 2.
15 | """
16 | self.assertEqual(1 + 1, 2)
17 |
--------------------------------------------------------------------------------
/fordropweb/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/__init__.py
--------------------------------------------------------------------------------
/fordropweb/static/bootstrap/css/bootstrap-responsive.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Responsive v2.0.1
3 | *
4 | * Copyright 2012 Twitter, Inc
5 | * Licensed under the Apache License v2.0
6 | * http://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * Designed and built with all the love in the world @twitter by @mdo and @fat.
9 | */
10 | .clearfix {
11 | *zoom: 1;
12 | }
13 | .clearfix:before, .clearfix:after {
14 | display: table;
15 | content: "";
16 | }
17 | .clearfix:after {
18 | clear: both;
19 | }
20 | .hidden {
21 | display: none;
22 | visibility: hidden;
23 | }
24 | @media (max-width: 480px) {
25 | .nav-collapse {
26 | -webkit-transform: translate3d(0, 0, 0);
27 | }
28 | .page-header h1 small {
29 | display: block;
30 | line-height: 18px;
31 | }
32 | input[class*="span"],
33 | select[class*="span"],
34 | textarea[class*="span"],
35 | .uneditable-input {
36 | display: block;
37 | width: 100%;
38 | min-height: 28px;
39 | /* Make inputs at least the height of their button counterpart */
40 |
41 | /* Makes inputs behave like true block-level elements */
42 |
43 | -webkit-box-sizing: border-box;
44 | /* Older Webkit */
45 |
46 | -moz-box-sizing: border-box;
47 | /* Older FF */
48 |
49 | -ms-box-sizing: border-box;
50 | /* IE8 */
51 |
52 | box-sizing: border-box;
53 | /* CSS3 spec*/
54 |
55 | }
56 | .input-prepend input[class*="span"], .input-append input[class*="span"] {
57 | width: auto;
58 | }
59 | input[type="checkbox"], input[type="radio"] {
60 | border: 1px solid #ccc;
61 | }
62 | .form-horizontal .control-group > label {
63 | float: none;
64 | width: auto;
65 | padding-top: 0;
66 | text-align: left;
67 | }
68 | .form-horizontal .controls {
69 | margin-left: 0;
70 | }
71 | .form-horizontal .control-list {
72 | padding-top: 0;
73 | }
74 | .form-horizontal .form-actions {
75 | padding-left: 10px;
76 | padding-right: 10px;
77 | }
78 | .modal {
79 | position: absolute;
80 | top: 10px;
81 | left: 10px;
82 | right: 10px;
83 | width: auto;
84 | margin: 0;
85 | }
86 | .modal.fade.in {
87 | top: auto;
88 | }
89 | .modal-header .close {
90 | padding: 10px;
91 | margin: -10px;
92 | }
93 | .carousel-caption {
94 | position: static;
95 | }
96 | }
97 | @media (max-width: 767px) {
98 | .container {
99 | width: auto;
100 | padding: 0 20px;
101 | }
102 | .row-fluid {
103 | width: 100%;
104 | }
105 | .row {
106 | margin-left: 0;
107 | }
108 | .row > [class*="span"], .row-fluid > [class*="span"] {
109 | float: none;
110 | display: block;
111 | width: auto;
112 | margin: 0;
113 | }
114 | }
115 | @media (min-width: 768px) and (max-width: 979px) {
116 | .row {
117 | margin-left: -20px;
118 | *zoom: 1;
119 | }
120 | .row:before, .row:after {
121 | display: table;
122 | content: "";
123 | }
124 | .row:after {
125 | clear: both;
126 | }
127 | [class*="span"] {
128 | float: left;
129 | margin-left: 20px;
130 | }
131 | .span1 {
132 | width: 42px;
133 | }
134 | .span2 {
135 | width: 104px;
136 | }
137 | .span3 {
138 | width: 166px;
139 | }
140 | .span4 {
141 | width: 228px;
142 | }
143 | .span5 {
144 | width: 290px;
145 | }
146 | .span6 {
147 | width: 352px;
148 | }
149 | .span7 {
150 | width: 414px;
151 | }
152 | .span8 {
153 | width: 476px;
154 | }
155 | .span9 {
156 | width: 538px;
157 | }
158 | .span10 {
159 | width: 600px;
160 | }
161 | .span11 {
162 | width: 662px;
163 | }
164 | .span12, .container {
165 | width: 724px;
166 | }
167 | .offset1 {
168 | margin-left: 82px;
169 | }
170 | .offset2 {
171 | margin-left: 144px;
172 | }
173 | .offset3 {
174 | margin-left: 206px;
175 | }
176 | .offset4 {
177 | margin-left: 268px;
178 | }
179 | .offset5 {
180 | margin-left: 330px;
181 | }
182 | .offset6 {
183 | margin-left: 392px;
184 | }
185 | .offset7 {
186 | margin-left: 454px;
187 | }
188 | .offset8 {
189 | margin-left: 516px;
190 | }
191 | .offset9 {
192 | margin-left: 578px;
193 | }
194 | .offset10 {
195 | margin-left: 640px;
196 | }
197 | .offset11 {
198 | margin-left: 702px;
199 | }
200 | .row-fluid {
201 | width: 100%;
202 | *zoom: 1;
203 | }
204 | .row-fluid:before, .row-fluid:after {
205 | display: table;
206 | content: "";
207 | }
208 | .row-fluid:after {
209 | clear: both;
210 | }
211 | .row-fluid > [class*="span"] {
212 | float: left;
213 | margin-left: 2.762430939%;
214 | }
215 | .row-fluid > [class*="span"]:first-child {
216 | margin-left: 0;
217 | }
218 | .row-fluid > .span1 {
219 | width: 5.801104972%;
220 | }
221 | .row-fluid > .span2 {
222 | width: 14.364640883%;
223 | }
224 | .row-fluid > .span3 {
225 | width: 22.928176794%;
226 | }
227 | .row-fluid > .span4 {
228 | width: 31.491712705%;
229 | }
230 | .row-fluid > .span5 {
231 | width: 40.055248616%;
232 | }
233 | .row-fluid > .span6 {
234 | width: 48.618784527%;
235 | }
236 | .row-fluid > .span7 {
237 | width: 57.182320438000005%;
238 | }
239 | .row-fluid > .span8 {
240 | width: 65.74585634900001%;
241 | }
242 | .row-fluid > .span9 {
243 | width: 74.30939226%;
244 | }
245 | .row-fluid > .span10 {
246 | width: 82.87292817100001%;
247 | }
248 | .row-fluid > .span11 {
249 | width: 91.436464082%;
250 | }
251 | .row-fluid > .span12 {
252 | width: 99.999999993%;
253 | }
254 | input.span1, textarea.span1, .uneditable-input.span1 {
255 | width: 32px;
256 | }
257 | input.span2, textarea.span2, .uneditable-input.span2 {
258 | width: 94px;
259 | }
260 | input.span3, textarea.span3, .uneditable-input.span3 {
261 | width: 156px;
262 | }
263 | input.span4, textarea.span4, .uneditable-input.span4 {
264 | width: 218px;
265 | }
266 | input.span5, textarea.span5, .uneditable-input.span5 {
267 | width: 280px;
268 | }
269 | input.span6, textarea.span6, .uneditable-input.span6 {
270 | width: 342px;
271 | }
272 | input.span7, textarea.span7, .uneditable-input.span7 {
273 | width: 404px;
274 | }
275 | input.span8, textarea.span8, .uneditable-input.span8 {
276 | width: 466px;
277 | }
278 | input.span9, textarea.span9, .uneditable-input.span9 {
279 | width: 528px;
280 | }
281 | input.span10, textarea.span10, .uneditable-input.span10 {
282 | width: 590px;
283 | }
284 | input.span11, textarea.span11, .uneditable-input.span11 {
285 | width: 652px;
286 | }
287 | input.span12, textarea.span12, .uneditable-input.span12 {
288 | width: 714px;
289 | }
290 | }
291 | @media (max-width: 979px) {
292 | body {
293 | padding-top: 0;
294 | }
295 | .navbar-fixed-top {
296 | position: static;
297 | margin-bottom: 18px;
298 | }
299 | .navbar-fixed-top .navbar-inner {
300 | padding: 5px;
301 | }
302 | .navbar .container {
303 | width: auto;
304 | padding: 0;
305 | }
306 | .navbar .brand {
307 | padding-left: 10px;
308 | padding-right: 10px;
309 | margin: 0 0 0 -5px;
310 | }
311 | .navbar .nav-collapse {
312 | clear: left;
313 | }
314 | .navbar .nav {
315 | float: none;
316 | margin: 0 0 9px;
317 | }
318 | .navbar .nav > li {
319 | float: none;
320 | }
321 | .navbar .nav > li > a {
322 | margin-bottom: 2px;
323 | }
324 | .navbar .nav > .divider-vertical {
325 | display: none;
326 | }
327 | .navbar .nav .nav-header {
328 | color: #999999;
329 | text-shadow: none;
330 | }
331 | .navbar .nav > li > a, .navbar .dropdown-menu a {
332 | padding: 6px 15px;
333 | font-weight: bold;
334 | color: #999999;
335 | -webkit-border-radius: 3px;
336 | -moz-border-radius: 3px;
337 | border-radius: 3px;
338 | }
339 | .navbar .dropdown-menu li + li a {
340 | margin-bottom: 2px;
341 | }
342 | .navbar .nav > li > a:hover, .navbar .dropdown-menu a:hover {
343 | background-color: #222222;
344 | }
345 | .navbar .dropdown-menu {
346 | position: static;
347 | top: auto;
348 | left: auto;
349 | float: none;
350 | display: block;
351 | max-width: none;
352 | margin: 0 15px;
353 | padding: 0;
354 | background-color: transparent;
355 | border: none;
356 | -webkit-border-radius: 0;
357 | -moz-border-radius: 0;
358 | border-radius: 0;
359 | -webkit-box-shadow: none;
360 | -moz-box-shadow: none;
361 | box-shadow: none;
362 | }
363 | .navbar .dropdown-menu:before, .navbar .dropdown-menu:after {
364 | display: none;
365 | }
366 | .navbar .dropdown-menu .divider {
367 | display: none;
368 | }
369 | .navbar-form, .navbar-search {
370 | float: none;
371 | padding: 9px 15px;
372 | margin: 9px 0;
373 | border-top: 1px solid #222222;
374 | border-bottom: 1px solid #222222;
375 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
376 | -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
377 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
378 | }
379 | .navbar .nav.pull-right {
380 | float: none;
381 | margin-left: 0;
382 | }
383 | .navbar-static .navbar-inner {
384 | padding-left: 10px;
385 | padding-right: 10px;
386 | }
387 | .btn-navbar {
388 | display: block;
389 | }
390 | .nav-collapse {
391 | overflow: hidden;
392 | height: 0;
393 | }
394 | }
395 | @media (min-width: 980px) {
396 | .nav-collapse.collapse {
397 | height: auto !important;
398 | }
399 | }
400 | @media (min-width: 1200px) {
401 | .row {
402 | margin-left: -30px;
403 | *zoom: 1;
404 | }
405 | .row:before, .row:after {
406 | display: table;
407 | content: "";
408 | }
409 | .row:after {
410 | clear: both;
411 | }
412 | [class*="span"] {
413 | float: left;
414 | margin-left: 30px;
415 | }
416 | .span1 {
417 | width: 70px;
418 | }
419 | .span2 {
420 | width: 170px;
421 | }
422 | .span3 {
423 | width: 270px;
424 | }
425 | .span4 {
426 | width: 370px;
427 | }
428 | .span5 {
429 | width: 470px;
430 | }
431 | .span6 {
432 | width: 570px;
433 | }
434 | .span7 {
435 | width: 670px;
436 | }
437 | .span8 {
438 | width: 770px;
439 | }
440 | .span9 {
441 | width: 870px;
442 | }
443 | .span10 {
444 | width: 970px;
445 | }
446 | .span11 {
447 | width: 1070px;
448 | }
449 | .span12, .container {
450 | width: 1170px;
451 | }
452 | .offset1 {
453 | margin-left: 130px;
454 | }
455 | .offset2 {
456 | margin-left: 230px;
457 | }
458 | .offset3 {
459 | margin-left: 330px;
460 | }
461 | .offset4 {
462 | margin-left: 430px;
463 | }
464 | .offset5 {
465 | margin-left: 530px;
466 | }
467 | .offset6 {
468 | margin-left: 630px;
469 | }
470 | .offset7 {
471 | margin-left: 730px;
472 | }
473 | .offset8 {
474 | margin-left: 830px;
475 | }
476 | .offset9 {
477 | margin-left: 930px;
478 | }
479 | .offset10 {
480 | margin-left: 1030px;
481 | }
482 | .offset11 {
483 | margin-left: 1130px;
484 | }
485 | .row-fluid {
486 | width: 100%;
487 | *zoom: 1;
488 | }
489 | .row-fluid:before, .row-fluid:after {
490 | display: table;
491 | content: "";
492 | }
493 | .row-fluid:after {
494 | clear: both;
495 | }
496 | .row-fluid > [class*="span"] {
497 | float: left;
498 | margin-left: 2.564102564%;
499 | }
500 | .row-fluid > [class*="span"]:first-child {
501 | margin-left: 0;
502 | }
503 | .row-fluid > .span1 {
504 | width: 5.982905983%;
505 | }
506 | .row-fluid > .span2 {
507 | width: 14.529914530000001%;
508 | }
509 | .row-fluid > .span3 {
510 | width: 23.076923077%;
511 | }
512 | .row-fluid > .span4 {
513 | width: 31.623931624%;
514 | }
515 | .row-fluid > .span5 {
516 | width: 40.170940171000005%;
517 | }
518 | .row-fluid > .span6 {
519 | width: 48.717948718%;
520 | }
521 | .row-fluid > .span7 {
522 | width: 57.264957265%;
523 | }
524 | .row-fluid > .span8 {
525 | width: 65.81196581200001%;
526 | }
527 | .row-fluid > .span9 {
528 | width: 74.358974359%;
529 | }
530 | .row-fluid > .span10 {
531 | width: 82.905982906%;
532 | }
533 | .row-fluid > .span11 {
534 | width: 91.45299145300001%;
535 | }
536 | .row-fluid > .span12 {
537 | width: 100%;
538 | }
539 | input.span1, textarea.span1, .uneditable-input.span1 {
540 | width: 60px;
541 | }
542 | input.span2, textarea.span2, .uneditable-input.span2 {
543 | width: 160px;
544 | }
545 | input.span3, textarea.span3, .uneditable-input.span3 {
546 | width: 260px;
547 | }
548 | input.span4, textarea.span4, .uneditable-input.span4 {
549 | width: 360px;
550 | }
551 | input.span5, textarea.span5, .uneditable-input.span5 {
552 | width: 460px;
553 | }
554 | input.span6, textarea.span6, .uneditable-input.span6 {
555 | width: 560px;
556 | }
557 | input.span7, textarea.span7, .uneditable-input.span7 {
558 | width: 660px;
559 | }
560 | input.span8, textarea.span8, .uneditable-input.span8 {
561 | width: 760px;
562 | }
563 | input.span9, textarea.span9, .uneditable-input.span9 {
564 | width: 860px;
565 | }
566 | input.span10, textarea.span10, .uneditable-input.span10 {
567 | width: 960px;
568 | }
569 | input.span11, textarea.span11, .uneditable-input.span11 {
570 | width: 1060px;
571 | }
572 | input.span12, textarea.span12, .uneditable-input.span12 {
573 | width: 1160px;
574 | }
575 | .thumbnails {
576 | margin-left: -30px;
577 | }
578 | .thumbnails > li {
579 | margin-left: 30px;
580 | }
581 | }
582 |
--------------------------------------------------------------------------------
/fordropweb/static/bootstrap/css/bootstrap-responsive.min.css:
--------------------------------------------------------------------------------
1 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
2 | .clearfix:after{clear:both;}
3 | .hidden{display:none;visibility:hidden;}
4 | @media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:767px){.container{width:auto;padding:0 20px;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .span1{width:42px;} .span2{width:104px;} .span3{width:166px;} .span4{width:228px;} .span5{width:290px;} .span6{width:352px;} .span7{width:414px;} .span8{width:476px;} .span9{width:538px;} .span10{width:600px;} .span11{width:662px;} .span12,.container{width:724px;} .offset1{margin-left:82px;} .offset2{margin-left:144px;} .offset3{margin-left:206px;} .offset4{margin-left:268px;} .offset5{margin-left:330px;} .offset6{margin-left:392px;} .offset7{margin-left:454px;} .offset8{margin-left:516px;} .offset9{margin-left:578px;} .offset10{margin-left:640px;} .offset11{margin-left:702px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid>.span1{width:5.801104972%;} .row-fluid>.span2{width:14.364640883%;} .row-fluid>.span3{width:22.928176794%;} .row-fluid>.span4{width:31.491712705%;} .row-fluid>.span5{width:40.055248616%;} .row-fluid>.span6{width:48.618784527%;} .row-fluid>.span7{width:57.182320438000005%;} .row-fluid>.span8{width:65.74585634900001%;} .row-fluid>.span9{width:74.30939226%;} .row-fluid>.span10{width:82.87292817100001%;} .row-fluid>.span11{width:91.436464082%;} .row-fluid>.span12{width:99.999999993%;} input.span1,textarea.span1,.uneditable-input.span1{width:32px;} input.span2,textarea.span2,.uneditable-input.span2{width:94px;} input.span3,textarea.span3,.uneditable-input.span3{width:156px;} input.span4,textarea.span4,.uneditable-input.span4{width:218px;} input.span5,textarea.span5,.uneditable-input.span5{width:280px;} input.span6,textarea.span6,.uneditable-input.span6{width:342px;} input.span7,textarea.span7,.uneditable-input.span7{width:404px;} input.span8,textarea.span8,.uneditable-input.span8{width:466px;} input.span9,textarea.span9,.uneditable-input.span9{width:528px;} input.span10,textarea.span10,.uneditable-input.span10{width:590px;} input.span11,textarea.span11,.uneditable-input.span11{width:652px;} input.span12,textarea.span12,.uneditable-input.span12{width:714px;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav .nav-header{color:#999999;text-shadow:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .span1{width:70px;} .span2{width:170px;} .span3{width:270px;} .span4{width:370px;} .span5{width:470px;} .span6{width:570px;} .span7{width:670px;} .span8{width:770px;} .span9{width:870px;} .span10{width:970px;} .span11{width:1070px;} .span12,.container{width:1170px;} .offset1{margin-left:130px;} .offset2{margin-left:230px;} .offset3{margin-left:330px;} .offset4{margin-left:430px;} .offset5{margin-left:530px;} .offset6{margin-left:630px;} .offset7{margin-left:730px;} .offset8{margin-left:830px;} .offset9{margin-left:930px;} .offset10{margin-left:1030px;} .offset11{margin-left:1130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid>.span1{width:5.982905983%;} .row-fluid>.span2{width:14.529914530000001%;} .row-fluid>.span3{width:23.076923077%;} .row-fluid>.span4{width:31.623931624%;} .row-fluid>.span5{width:40.170940171000005%;} .row-fluid>.span6{width:48.717948718%;} .row-fluid>.span7{width:57.264957265%;} .row-fluid>.span8{width:65.81196581200001%;} .row-fluid>.span9{width:74.358974359%;} .row-fluid>.span10{width:82.905982906%;} .row-fluid>.span11{width:91.45299145300001%;} .row-fluid>.span12{width:100%;} input.span1,textarea.span1,.uneditable-input.span1{width:60px;} input.span2,textarea.span2,.uneditable-input.span2{width:160px;} input.span3,textarea.span3,.uneditable-input.span3{width:260px;} input.span4,textarea.span4,.uneditable-input.span4{width:360px;} input.span5,textarea.span5,.uneditable-input.span5{width:460px;} input.span6,textarea.span6,.uneditable-input.span6{width:560px;} input.span7,textarea.span7,.uneditable-input.span7{width:660px;} input.span8,textarea.span8,.uneditable-input.span8{width:760px;} input.span9,textarea.span9,.uneditable-input.span9{width:860px;} input.span10,textarea.span10,.uneditable-input.span10{width:960px;} input.span11,textarea.span11,.uneditable-input.span11{width:1060px;} input.span12,textarea.span12,.uneditable-input.span12{width:1160px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}}
5 |
--------------------------------------------------------------------------------
/fordropweb/static/bootstrap/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/bootstrap/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/fordropweb/static/bootstrap/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/bootstrap/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/fordropweb/static/css/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fff;
3 | color: #333;
4 | }
5 |
6 | #header {
7 | /*
8 | background: #333;
9 | height:45px;
10 | padding-top:15px;
11 | */
12 | width:100%;
13 | height: 80px;
14 | background-image: -moz-linear-gradient(top, #333333 0%, #111111 100%);
15 | background-image: -o-linear-gradient(top, #333333 0%, #111111 100%);
16 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #333333), color-stop(1, #111111));
17 | background-image: -webkit-linear-gradient(top, #333333 0%, #111111 100%);
18 | background-image: linear-gradient(to bottom, #333333 0%, #111111 100%);
19 | padding-top:20px;
20 | }
21 |
22 | .shadow2 {
23 | -moz-box-shadow: 10px 10px 50px #333;
24 | -webkit-box-shadow: 10px 10px 50px #333;
25 | box-shadow: 1px 1px 20px #333;
26 | }
27 |
28 | .left {
29 | float:left;
30 | }
31 |
32 | .right {
33 | float:right;
34 | }
35 |
36 | textarea {
37 | width:260px;
38 | }
39 |
40 | .quiet {
41 | color:#999;
42 | }
43 |
44 | .shadow {
45 | box-shadow: 1px 1px 3px #888;
46 | }
47 |
48 | .well.comment {
49 | background:#fff;
50 | left:auto;
51 | }
52 |
53 | .well.share {
54 | background: #fff;
55 | border:1px solid silver;
56 | left:auto;
57 | }
58 |
59 | .well.collection {
60 | background: #fff;
61 | border:1px solid silver;
62 | }
63 |
64 | .small {
65 | font-size:0.9em;
66 | }
67 |
68 | #timeline {
69 | height: 250px;
70 | border: 1px solid silver;
71 | background: #fff;
72 | }
73 |
74 | .nav-tabs > .active > a, .nav-tabs > .active > a:hover {
75 | background-color: #f5f5f5;
76 | }
77 |
78 | .hero-unit.hero-white {
79 | background: #fff;
80 | padding:30px;
81 | }
--------------------------------------------------------------------------------
/fordropweb/static/css/timeline.css:
--------------------------------------------------------------------------------
1 | .timeline-band-0 .timeline-ether-bg {
2 | background-color: whiteSmoke;
3 | }
4 |
--------------------------------------------------------------------------------
/fordropweb/static/img/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/img/favicon.ico
--------------------------------------------------------------------------------
/fordropweb/static/img/placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/img/placeholder.png
--------------------------------------------------------------------------------
/fordropweb/static/img/thumbs_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/img/thumbs_up.png
--------------------------------------------------------------------------------
/fordropweb/static/js/fd_timeline.js:
--------------------------------------------------------------------------------
1 | var tl;
2 | function onLoad() {
3 | var eventSource = new Timeline.DefaultEventSource();
4 | var bandInfos = [
5 | Timeline.createBandInfo({
6 | eventSource: eventSource,
7 | date: date,
8 | width: "85%",
9 | intervalUnit: Timeline.DateTime.HOUR,
10 | intervalPixels: 100
11 | }),
12 | Timeline.createBandInfo({
13 | overview: true,
14 | eventSource: eventSource,
15 | date: date,
16 | width: "15%",
17 | intervalUnit: Timeline.DateTime.DAY,
18 | intervalPixels: 200
19 | })
20 |
21 | ];
22 | bandInfos[1].syncWith = 0;
23 | bandInfos[1].highlight = true;
24 | tl = Timeline.create(document.getElementById("timeline"), bandInfos);
25 | Timeline.loadJSON(jsonurl, function(data, url) { eventSource.loadJSON(data, url); });
26 | }
27 |
28 | var resizeTimerID = null;
29 | function onResize() {
30 | if (resizeTimerID == null) {
31 | resizeTimerID = window.setTimeout(function() {
32 | resizeTimerID = null;
33 | tl.layout();
34 | }, 500);
35 | }
36 | }
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/LICENSE.txt:
--------------------------------------------------------------------------------
1 | /*
2 | * (c) Copyright The SIMILE Project 2006. All rights reserved.
3 | *
4 | * Redistribution and use in source and binary forms, with or without
5 | * modification, are permitted provided that the following conditions
6 | * are met:
7 | *
8 | * 1. Redistributions of source code must retain the above copyright
9 | * notice, this list of conditions and the following disclaimer.
10 | *
11 | * 2. Redistributions in binary form must reproduce the above copyright
12 | * notice, this list of conditions and the following disclaimer in the
13 | * documentation and/or other materials provided with the distribution.
14 | *
15 | * 3. The name of the author may not be used to endorse or promote products
16 | * derived from this software without specific prior written permission.
17 | *
18 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 | *
29 | * Note: JQuery, www.jquery.com is included in the Ajax section of this
30 | * distribution. It is covered by its own license:
31 | *
32 | * Copyright (c) 2008 John Resig (jquery.com)
33 | * Dual licensed under the MIT (MIT-LICENSE.txt)
34 | * and GPL (GPL-LICENSE.txt) licenses.
35 | */
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/README.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/README.txt
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/content/history.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Dummy Page for Keeping Track of History
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-arrow-point-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-arrow-point-down.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-arrow-point-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-arrow-point-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-arrow-point-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-arrow-point-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-arrow-point-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-arrow-point-up.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-bottom-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-bottom-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-bottom-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-bottom-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-bottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-bottom.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-top-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-top-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-top-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-top-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/bubble-top.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/close-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/close-button.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/copy.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-bottom-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-bottom-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-bottom-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-bottom-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-top-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-top-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-top-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_ajax/images/message-top-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/scripts/signal.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * This file is used to detect that all outstanding
3 | * javascript files have been loaded. You can put
4 | * a function reference into SimileAjax_onLoad
5 | * to have it executed once all javascript files
6 | * have loaded.
7 | *==================================================
8 | */
9 | (function() {
10 | var substring = SimileAjax.urlPrefix + "scripts/signal.js";
11 | var heads = document.documentElement.getElementsByTagName("head");
12 | for (var h = 0; h < heads.length; h++) {
13 | var node = heads[h].firstChild;
14 | while (node != null) {
15 | if (node.nodeType == 1 && node.tagName.toLowerCase() == "script") {
16 | var url = node.src;
17 | var i = url.indexOf(substring);
18 | if (i >= 0) {
19 | heads[h].removeChild(node); // remove it so we won't hit it again
20 |
21 | var count = parseInt(url.substr(url.indexOf(substring) + substring.length + 1));
22 | SimileAjax.loadingScriptsCount -= count;
23 | if (SimileAjax.loadingScriptsCount == 0) {
24 | var f = null;
25 | if (typeof SimileAjax_onLoad == "string") {
26 | f = eval(SimileAjax_onLoad);
27 | SimileAjax_onLoad = null;
28 | } else if (typeof SimileAjax_onLoad == "function") {
29 | f = SimileAjax_onLoad;
30 | SimileAjax_onLoad = null;
31 | }
32 |
33 | if (f != null) {
34 | f();
35 | }
36 | }
37 | return;
38 | }
39 | }
40 | node = node.nextSibling;
41 | }
42 | }
43 | })();
44 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/simile-ajax-api.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Simile Ajax API
3 | *
4 | * Include this file in your HTML file as follows:
5 | *
6 | *
7 | *
8 | *==================================================
9 | */
10 |
11 | if (typeof SimileAjax == "undefined") {
12 | var SimileAjax = {
13 | loaded: false,
14 | loadingScriptsCount: 0,
15 | error: null,
16 | params: { bundle:"true" }
17 | };
18 |
19 | SimileAjax.Platform = new Object();
20 | /*
21 | HACK: We need these 2 things here because we cannot simply append
22 | a ");
56 | return;
57 | } catch (e) {
58 | // fall through
59 | }
60 | }
61 |
62 | var script = doc.createElement("script");
63 | if (onerror) {
64 | try { script.innerHTML = onerror; } catch(e) {}
65 | script.setAttribute("onerror", onerror);
66 | }
67 | if (charset) {
68 | script.setAttribute("charset", charset);
69 | }
70 | script.type = "text/javascript";
71 | script.language = "JavaScript";
72 | script.src = url;
73 | return getHead(doc).appendChild(script);
74 | };
75 | SimileAjax.includeJavascriptFiles = function(doc, urlPrefix, filenames) {
76 | for (var i = 0; i < filenames.length; i++) {
77 | SimileAjax.includeJavascriptFile(doc, urlPrefix + filenames[i]);
78 | }
79 | SimileAjax.loadingScriptsCount += filenames.length;
80 | SimileAjax.includeJavascriptFile(doc, SimileAjax.urlPrefix + "scripts/signal.js?" + filenames.length);
81 | };
82 | SimileAjax.includeCssFile = function(doc, url) {
83 | if (doc.body == null) {
84 | try {
85 | doc.write(" ");
86 | return;
87 | } catch (e) {
88 | // fall through
89 | }
90 | }
91 |
92 | var link = doc.createElement("link");
93 | link.setAttribute("rel", "stylesheet");
94 | link.setAttribute("type", "text/css");
95 | link.setAttribute("href", url);
96 | getHead(doc).appendChild(link);
97 | };
98 | SimileAjax.includeCssFiles = function(doc, urlPrefix, filenames) {
99 | for (var i = 0; i < filenames.length; i++) {
100 | SimileAjax.includeCssFile(doc, urlPrefix + filenames[i]);
101 | }
102 | };
103 |
104 | /**
105 | * Append into urls each string in suffixes after prefixing it with urlPrefix.
106 | * @param {Array} urls
107 | * @param {String} urlPrefix
108 | * @param {Array} suffixes
109 | */
110 | SimileAjax.prefixURLs = function(urls, urlPrefix, suffixes) {
111 | for (var i = 0; i < suffixes.length; i++) {
112 | urls.push(urlPrefix + suffixes[i]);
113 | }
114 | };
115 |
116 | /**
117 | * Parse out the query parameters from a URL
118 | * @param {String} url the url to parse, or location.href if undefined
119 | * @param {Object} to optional object to extend with the parameters
120 | * @param {Object} types optional object mapping keys to value types
121 | * (String, Number, Boolean or Array, String by default)
122 | * @return a key/value Object whose keys are the query parameter names
123 | * @type Object
124 | */
125 | SimileAjax.parseURLParameters = function(url, to, types) {
126 | to = to || {};
127 | types = types || {};
128 |
129 | if (typeof url == "undefined") {
130 | url = location.href;
131 | }
132 | var q = url.indexOf("?");
133 | if (q < 0) {
134 | return to;
135 | }
136 | url = (url+"#").slice(q+1, url.indexOf("#")); // toss the URL fragment
137 |
138 | var params = url.split("&"), param, parsed = {};
139 | var decode = window.decodeURIComponent || unescape;
140 | for (var i = 0; param = params[i]; i++) {
141 | var eq = param.indexOf("=");
142 | var name = decode(param.slice(0,eq));
143 | var old = parsed[name];
144 | if (typeof old == "undefined") {
145 | old = [];
146 | } else if (!(old instanceof Array)) {
147 | old = [old];
148 | }
149 | parsed[name] = old.concat(decode(param.slice(eq+1)));
150 | }
151 | for (var i in parsed) {
152 | if (!parsed.hasOwnProperty(i)) continue;
153 | var type = types[i] || String;
154 | var data = parsed[i];
155 | if (!(data instanceof Array)) {
156 | data = [data];
157 | }
158 | if (type === Boolean && data[0] == "false") {
159 | to[i] = false; // because Boolean("false") === true
160 | } else {
161 | to[i] = type.apply(this, data);
162 | }
163 | }
164 | return to;
165 | };
166 |
167 | (function() {
168 | var javascriptFiles = [
169 | "jquery-1.2.6.min.js",
170 | "platform.js",
171 | "debug.js",
172 | "xmlhttp.js",
173 | "json.js",
174 | "dom.js",
175 | "graphics.js",
176 | "date-time.js",
177 | "string.js",
178 | "html.js",
179 | "data-structure.js",
180 | "units.js",
181 |
182 | "ajax.js",
183 | "history.js",
184 | "window-manager.js"
185 | ];
186 | var cssFiles = [
187 | "graphics.css"
188 | ];
189 |
190 | if (typeof SimileAjax_urlPrefix == "string") {
191 | SimileAjax.urlPrefix = SimileAjax_urlPrefix;
192 | } else {
193 | var url = SimileAjax.findScript(document, "simile-ajax-api.js");
194 | if (url == null) {
195 | SimileAjax.error = new Error("Failed to derive URL prefix for Simile Ajax API code files");
196 | return;
197 | }
198 |
199 | SimileAjax.urlPrefix = url.substr(0, url.indexOf("simile-ajax-api.js"));
200 | }
201 |
202 | SimileAjax.parseURLParameters(url, SimileAjax.params, {bundle:Boolean});
203 | if (SimileAjax.params.bundle) {
204 | SimileAjax.includeJavascriptFiles(document, SimileAjax.urlPrefix, [ "simile-ajax-bundle.js" ]);
205 | } else {
206 | SimileAjax.includeJavascriptFiles(document, SimileAjax.urlPrefix + "scripts/", javascriptFiles);
207 | }
208 | SimileAjax.includeCssFiles(document, SimileAjax.urlPrefix + "styles/", cssFiles);
209 |
210 | SimileAjax.loaded = true;
211 | })();
212 | }
213 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/styles/graphics-ie6.css:
--------------------------------------------------------------------------------
1 | .simileAjax-bubble-border-left-pngNotTranslucent {
2 | filter: expression(
3 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-left.png', sizingMethod='crop')"
4 | );
5 | }
6 |
7 | .simileAjax-bubble-border-right-pngNotTranslucent {
8 | filter: expression(
9 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-right.png', sizingMethod='crop')"
10 | );
11 | }
12 |
13 | .simileAjax-bubble-border-top-pngNotTranslucent {
14 | filter: expression(
15 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-top.png', sizingMethod='crop')"
16 | );
17 | }
18 |
19 | .simileAjax-bubble-border-bottom-pngNotTranslucent {
20 | filter: expression(
21 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-bottom.png', sizingMethod='crop')"
22 | );
23 | }
24 |
25 | .simileAjax-bubble-border-top-left-pngNotTranslucent {
26 | filter: expression(
27 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-top-left.png', sizingMethod='crop')"
28 | );
29 | }
30 |
31 | .simileAjax-bubble-border-top-right-pngNotTranslucent {
32 | filter: expression(
33 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-top-right.png', sizingMethod='crop')"
34 | );
35 | }
36 |
37 | .simileAjax-bubble-border-bottom-left-pngNotTranslucent {
38 | filter: expression(
39 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-bottom-left.png', sizingMethod='crop')"
40 | );
41 | }
42 |
43 | .simileAjax-bubble-border-bottom-right-pngNotTranslucent {
44 | filter: expression(
45 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-bottom-right.png', sizingMethod='crop')"
46 | );
47 | }
48 |
49 | .simileAjax-bubble-arrow-point-left-pngNotTranslucent {
50 | filter: expression(
51 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-arrow-point-left.png', sizingMethod='crop')"
52 | );
53 | }
54 |
55 | .simileAjax-bubble-arrow-point-right-pngNotTranslucent {
56 | filter: expression(
57 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-arrow-point-right.png', sizingMethod='crop')"
58 | );
59 | }
60 |
61 | .simileAjax-bubble-arrow-point-up-pngNotTranslucent {
62 | filter: expression(
63 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-arrow-point-up.png', sizingMethod='crop')"
64 | );
65 | }
66 |
67 | .simileAjax-bubble-arrow-point-down-pngNotTranslucent {
68 | filter: expression(
69 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/bubble-arrow-point-down.png', sizingMethod='crop')"
70 | );
71 | }
72 |
73 | .simileAjax-bubble-close-pngNotTranslucent {
74 | filter: expression(
75 | "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + SimileAjax.urlPrefix + "images/close-button.png', sizingMethod='crop')"
76 | );
77 | }
78 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_ajax/styles/graphics.css:
--------------------------------------------------------------------------------
1 | div.simileAjax-bubble-container {
2 | margin: 0px;
3 | padding: 0px;
4 | border: none;
5 | position: absolute;
6 | z-index: 1000;
7 | }
8 |
9 | div.simileAjax-bubble-innerContainer {
10 | margin: 0px;
11 | padding: 0px;
12 | border: none;
13 | position: relative;
14 | width: 100%;
15 | height: 100%;
16 | overflow: visible;
17 | }
18 |
19 | div.simileAjax-bubble-contentContainer {
20 | margin: 0px;
21 | padding: 0px;
22 | border: none;
23 | position: absolute;
24 | left: 0px;
25 | top: 0px;
26 | width: 100%;
27 | height: 100%;
28 | overflow: auto;
29 | background: white;
30 | }
31 |
32 | div.simileAjax-bubble-border-left {
33 | position: absolute;
34 | left: -50px;
35 | top: 0px;
36 | width: 50px;
37 | height: 100%;
38 | }
39 | div.simileAjax-bubble-border-left-pngTranslucent {
40 | background: url(../images/bubble-left.png) top right repeat-y;
41 | }
42 |
43 | div.simileAjax-bubble-border-right {
44 | position: absolute;
45 | right: -50px;
46 | top: 0px;
47 | width: 50px;
48 | height: 100%;
49 | }
50 | .simileAjax-bubble-border-right-pngTranslucent {
51 | background: url(../images/bubble-right.png) top left repeat-y;
52 | }
53 |
54 | div.simileAjax-bubble-border-top {
55 | position: absolute;
56 | top: -50px;
57 | left: 0px;
58 | width: 100%;
59 | height: 50px;
60 | }
61 | .simileAjax-bubble-border-top-pngTranslucent {
62 | background: url(../images/bubble-top.png) bottom left repeat-x;
63 | }
64 |
65 | div.simileAjax-bubble-border-bottom {
66 | position: absolute;
67 | bottom: -50px;
68 | left: 0px;
69 | width: 100%;
70 | height: 50px;
71 | }
72 | .simileAjax-bubble-border-bottom-pngTranslucent {
73 | background: url(../images/bubble-bottom.png) top left repeat-x;
74 | }
75 |
76 | div.simileAjax-bubble-border-top-left {
77 | position: absolute;
78 | top: -50px;
79 | left: -50px;
80 | width: 50px;
81 | height: 50px;
82 | }
83 | .simileAjax-bubble-border-top-left-pngTranslucent {
84 | background: url(../images/bubble-top-left.png) bottom right no-repeat;
85 | }
86 |
87 | div.simileAjax-bubble-border-top-right {
88 | position: absolute;
89 | top: -50px;
90 | right: -50px;
91 | width: 50px;
92 | height: 50px;
93 | }
94 | .simileAjax-bubble-border-top-right-pngTranslucent {
95 | background: url(../images/bubble-top-right.png) bottom left no-repeat;
96 | }
97 |
98 | div.simileAjax-bubble-border-bottom-left {
99 | position: absolute;
100 | bottom: -50px;
101 | left: -50px;
102 | width: 50px;
103 | height: 50px;
104 | }
105 | .simileAjax-bubble-border-bottom-left-pngTranslucent {
106 | background: url(../images/bubble-bottom-left.png) top right no-repeat;
107 | }
108 |
109 | div.simileAjax-bubble-border-bottom-right {
110 | position: absolute;
111 | bottom: -50px;
112 | right: -50px;
113 | width: 50px;
114 | height: 50px;
115 | }
116 | .simileAjax-bubble-border-bottom-right-pngTranslucent {
117 | background: url(../images/bubble-bottom-right.png) top left no-repeat;
118 | }
119 |
120 | div.simileAjax-bubble-arrow-point-left {
121 | position: absolute;
122 | left: -100px;
123 | width: 100px;
124 | height: 49px;
125 | }
126 | .simileAjax-bubble-arrow-point-left-pngTranslucent {
127 | background: url(../images/bubble-arrow-point-left.png) center right no-repeat;
128 | }
129 |
130 | div.simileAjax-bubble-arrow-point-right {
131 | position: absolute;
132 | right: -100px;
133 | width: 100px;
134 | height: 49px;
135 | }
136 | .simileAjax-bubble-arrow-point-right-pngTranslucent {
137 | background: url(../images/bubble-arrow-point-right.png) center left no-repeat;
138 | }
139 |
140 | div.simileAjax-bubble-arrow-point-up {
141 | position: absolute;
142 | top: -100px;
143 | width: 49px;
144 | height: 100px;
145 | }
146 | .simileAjax-bubble-arrow-point-up-pngTranslucent {
147 | background: url(../images/bubble-arrow-point-up.png) bottom center no-repeat;
148 | }
149 |
150 | div.simileAjax-bubble-arrow-point-down {
151 | position: absolute;
152 | bottom: -100px;
153 | width: 49px;
154 | height: 100px;
155 | }
156 | .simileAjax-bubble-arrow-point-down-pngTranslucent {
157 | background: url(../images/bubble-arrow-point-down.png) bottom center no-repeat;
158 | }
159 |
160 |
161 | div.simileAjax-bubble-close {
162 | position: absolute;
163 | right: -10px;
164 | top: -12px;
165 | width: 16px;
166 | height: 16px;
167 | cursor: pointer;
168 | }
169 | .simileAjax-bubble-close-pngTranslucent {
170 | background: url(../images/close-button.png) no-repeat;
171 | }
172 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/blue-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/blue-circle.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-bottom-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-bottom-arrow.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-bottom-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-bottom-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-bottom-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-bottom-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-bottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-bottom.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-left-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-left-arrow.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-right-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-right-arrow.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-top-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-top-arrow.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-top-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-top-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-top-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-top-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/bubble-top.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/close-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/close-button.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/copyright-vertical.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/copyright-vertical.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/copyright.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/copyright.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dark-blue-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dark-blue-circle.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dark-green-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dark-green-circle.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dark-red-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dark-red-circle.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dull-blue-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dull-blue-circle.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dull-green-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dull-green-circle.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dull-red-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/dull-red-circle.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/gray-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/gray-circle.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/green-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/green-circle.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-bottom-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-bottom-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-bottom-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-bottom-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-top-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-top-left.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-top-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/message-top-right.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/progress-running.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/progress-running.gif
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/red-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/red-circle.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/images/top-bubble.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/images/top-bubble.png
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/cs/labellers.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/cs/labellers.js
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/cs/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["cs"] = {
7 | wikiLinkLabel: "Diskuze"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/de/labellers.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Localization of labellers.js
3 | *==================================================
4 | */
5 |
6 | Timeline.GregorianDateLabeller.monthNames["de"] = [
7 | "Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"
8 | ];
9 |
10 | Timeline.GregorianDateLabeller.labelIntervalFunctions["de"] = function(date, intervalUnit) {
11 | var text;
12 | var emphasized = false;
13 |
14 | var date2 = Timeline.DateTime.removeTimeZoneOffset(date, this._timeZone);
15 |
16 | switch(intervalUnit) {
17 | case Timeline.DateTime.DAY:
18 | case Timeline.DateTime.WEEK:
19 | text = date2.getUTCDate() + ". " +
20 | Timeline.GregorianDateLabeller.getMonthName(date2.getUTCMonth(), this._locale);
21 | break;
22 | default:
23 | return this.defaultLabelInterval(date, intervalUnit);
24 | }
25 |
26 | return { text: text, emphasized: emphasized };
27 | };
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/de/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["de"] = {
7 | wikiLinkLabel: "Diskutieren"
8 | };
9 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/en/labellers.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Localization of labellers.js
3 | *==================================================
4 | */
5 |
6 | Timeline.GregorianDateLabeller.monthNames["en"] = [
7 | "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
8 | ];
9 |
10 | Timeline.GregorianDateLabeller.dayNames["en"] = [
11 | "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
12 | ];
13 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/en/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["en"] = {
7 | wikiLinkLabel: "Discuss"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/es/labellers.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Localization of labellers.js
3 | *==================================================
4 | */
5 |
6 | Timeline.GregorianDateLabeller.monthNames["es"] = [
7 | "Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"
8 | ];
9 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/es/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["es"] = {
7 | wikiLinkLabel: "Discute"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/fr/labellers.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Localization of labellers.js
3 | *==================================================
4 | */
5 |
6 | Timeline.GregorianDateLabeller.monthNames["fr"] = [
7 | "jan", "fev", "mar", "avr", "mai", "jui", "jui", "aou", "sep", "oct", "nov", "dec"
8 | ];
9 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/fr/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["fr"] = {
7 | wikiLinkLabel: "Discute"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/it/labellers.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Localization of labellers.js
3 | *==================================================
4 | */
5 |
6 | Timeline.GregorianDateLabeller.monthNames["it"] = [
7 | "Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"
8 | ];
9 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/it/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["it"] = {
7 | wikiLinkLabel: "Discuti"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/nl/labellers.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Localization of labellers.js
3 | *==================================================
4 | */
5 |
6 | /* The Dutch do not capitalize months
7 | */
8 |
9 | Timeline.GregorianDateLabeller.monthNames["nl"] = [
10 | "jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"
11 | ];
12 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/nl/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["nl"] = {
7 | wikiLinkLabel: "Discussieer"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/ru/labellers.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Localization of labellers.js
3 | *
4 | * UTF-8 encoded
5 | *==================================================
6 | */
7 |
8 | Timeline.GregorianDateLabeller.monthNames["ru"] = [
9 | "Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"
10 | ];
11 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/ru/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["ru"] = {
7 | wikiLinkLabel: "обсудите"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/se/labellers.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Localization of labellers.js
3 | *==================================================
4 | */
5 |
6 | Timeline.GregorianDateLabeller.monthNames["se"] = [
7 | "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"
8 | ];
9 |
10 | Timeline.GregorianDateLabeller.dayNames["se"] = [
11 | "Sön", "Mån", "Tis", "Ons", "Tors", "Fre", "Lör"
12 | ];
13 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/se/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["se"] = {
7 | wikiLinkLabel: "Discuss"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/tr/labellers.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Localization of labellers.js
3 | *==================================================
4 | */
5 |
6 | Timeline.GregorianDateLabeller.monthNames["tr"] = [
7 | "Ock", "Şbt", "Mrt", "Nsn", "Mys", "Hzr", "Tem", "Ağs", "Eyl", "Ekm", "Ksm", "Arl"
8 | ];
9 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/tr/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["tr"] = {
7 | wikiLinkLabel: "Tartış"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/vi/labellers.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/vi/labellers.js
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/vi/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["vi"] = {
7 | wikiLinkLabel: "Bàn luận"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/zh/labellers.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Localization of labellers.js
3 | *==================================================
4 | */
5 |
6 | Timeline.GregorianDateLabeller.monthNames["zh"] = [
7 | "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
8 | ];
9 |
10 | Timeline.GregorianDateLabeller.labelIntervalFunctions["zh"] = function(date, intervalUnit) {
11 | var text;
12 | var emphasized = false;
13 |
14 | var date2 = Timeline.DateTime.removeTimeZoneOffset(date, this._timeZone);
15 |
16 | switch(intervalUnit) {
17 | case Timeline.DateTime.DAY:
18 | case Timeline.DateTime.WEEK:
19 | text = Timeline.GregorianDateLabeller.getMonthName(date2.getUTCMonth(), this._locale) +
20 | date2.getUTCDate() + "日";
21 | break;
22 | default:
23 | return this.defaultLabelInterval(date, intervalUnit);
24 | }
25 |
26 | return { text: text, emphasized: emphasized };
27 | };
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/scripts/l10n/zh/timeline.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Common localization strings
3 | *==================================================
4 | */
5 |
6 | Timeline.strings["zh"] = {
7 | wikiLinkLabel: "讨论"
8 | };
9 |
10 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/timeline-api.js:
--------------------------------------------------------------------------------
1 | /*==================================================
2 | * Timeline API
3 | *
4 | * This file will load all the Javascript files
5 | * necessary to make the standard timeline work.
6 | * It also detects the default locale.
7 | *
8 | * To run from the MIT copy of Timeline:
9 | * Include this file in your HTML file as follows:
10 | *
11 | *
13 | *
14 | *
15 | * To host the Timeline files on your own server:
16 | * 1) Install the Timeline and Simile-Ajax files onto your webserver using
17 | * timeline_libraries.zip or timeline_source.zip
18 | *
19 | * 2) Set global js variables used to send parameters to this script:
20 | * Timeline_ajax_url -- url for simile-ajax-api.js
21 | * Timeline_urlPrefix -- url for the *directory* that contains timeline-api.js
22 | * Include trailing slash
23 | * Timeline_parameters='bundle=true'; // you must set bundle to true if you are using
24 | * // timeline_libraries.zip since only the
25 | * // bundled libraries are included
26 | *
27 | * eg your html page would include
28 | *
29 | *
34 | *
37 | *
38 | * SCRIPT PARAMETERS
39 | * This script auto-magically figures out locale and has defaults for other parameters
40 | * To set parameters explicity, set js global variable Timeline_parameters or include as
41 | * parameters on the url using GET style. Eg the two next lines pass the same parameters:
42 | * Timeline_parameters='bundle=true'; // pass parameter via js variable
43 | * ");
271 | } catch (e) {
272 | createScriptElement();
273 | }
274 | } else {
275 | createScriptElement();
276 | }
277 | } else {
278 | loadMe();
279 | }
280 | })();
281 |
--------------------------------------------------------------------------------
/fordropweb/static/js/timeline_2.3.1/timeline_js/timeline-bundle.css:
--------------------------------------------------------------------------------
1 |
2 |
3 | /*------------------- Horizontal / Vertical lines ----------------*/
4 |
5 | /* style for ethers */
6 | .timeline-ether-lines{border-color:#666; border-style:dotted; position:absolute;}
7 | .timeline-horizontal .timeline-ether-lines{border-width:0 0 0 1px; height:100%; top: 0; width: 1px;}
8 | .timeline-vertical .timeline-ether-lines{border-width:1px 0 0; height:1px; left: 0; width: 100%;}
9 |
10 |
11 |
12 | /*---------------- Weekends ---------------------------*/
13 | .timeline-ether-weekends{
14 | position:absolute;
15 | background-color:#FFFFE0;
16 | }
17 |
18 | .timeline-vertical .timeline-ether-weekends{left:0;width:100%;}
19 | .timeline-horizontal .timeline-ether-weekends{top:0; height:100%;}
20 |
21 |
22 | /*-------------------------- HIGHLIGHT DECORATORS -------------------*/
23 | /* Used for decorators, not used for Timeline Highlight */
24 | .timeline-highlight-decorator,
25 | .timeline-highlight-point-decorator{
26 | position:absolute;
27 | overflow:hidden;
28 | }
29 |
30 | /* Width of horizontal decorators and Height of vertical decorators is
31 | set in the decorator function params */
32 | .timeline-horizontal .timeline-highlight-point-decorator,
33 | .timeline-horizontal .timeline-highlight-decorator{
34 | top:0;
35 | height:100%;
36 | }
37 |
38 | .timeline-vertical .timeline-highlight-point-decorator,
39 | .timeline-vertical .timeline-highlight-decorator{
40 | width:100%;
41 | left:0;
42 | }
43 |
44 | .timeline-highlight-decorator{background-color:#FFC080;}
45 | .timeline-highlight-point-decorator{background-color:#ff5;}
46 |
47 |
48 | /*---------------------------- LABELS -------------------------*/
49 | .timeline-highlight-label {
50 | position:absolute; overflow:hidden; font-size:200%;
51 | font-weight:bold; color:#999; }
52 |
53 |
54 | /*---------------- VERTICAL LABEL -------------------*/
55 | .timeline-horizontal .timeline-highlight-label {top:0; height:100%;}
56 | .timeline-horizontal .timeline-highlight-label td {vertical-align:middle;}
57 | .timeline-horizontal .timeline-highlight-label-start {text-align:right;}
58 | .timeline-horizontal .timeline-highlight-label-end {text-align:left;}
59 |
60 |
61 | /*---------------- HORIZONTAL LABEL -------------------*/
62 | .timeline-vertical .timeline-highlight-label {left:0;width:100%;}
63 | .timeline-vertical .timeline-highlight-label td {vertical-align:top;}
64 | .timeline-vertical .timeline-highlight-label-start {text-align:center;}
65 | .timeline-vertical .timeline-highlight-label-end {text-align:center;}
66 |
67 |
68 | /*-------------------------------- DATE LABELS --------------------------------*/
69 | .timeline-date-label {
70 | position: absolute;
71 | border: solid #aaa;
72 | color: #aaa;
73 | width: 5em;
74 | height: 1.5em;}
75 | .timeline-date-label-em {color: #000;}
76 |
77 | /* horizontal */
78 | .timeline-horizontal .timeline-date-label{padding-left:2px;}
79 | .timeline-horizontal .timeline-date-label{border-width:0 0 0 1px;}
80 | .timeline-horizontal .timeline-date-label-em{height:2em}
81 |
82 | /* vertical */
83 | .timeline-vertical .timeline-date-label{padding-top:2px;}
84 | .timeline-vertical .timeline-date-label{border-width:1px 0 0;}
85 | .timeline-vertical .timeline-date-label-em{width:7em}
86 |
87 |
88 | /*------------------------------- Ether.highlight -------------------------*/
89 | .timeline-ether-highlight{position:absolute; background-color:#fff;}
90 | .timeline-horizontal .timeline-ether-highlight{top:2px;}
91 | .timeline-vertical .timeline-ether-highlight{left:2px;}
92 |
93 |
94 | /*------------------------------ EVENTS ------------------------------------*/
95 | .timeline-event-icon, .timeline-event-label,.timeline-event-tape{
96 | position:absolute;
97 | cursor:pointer;
98 | }
99 |
100 | .timeline-event-tape,
101 | .timeline-small-event-tape,
102 | .timeline-small-event-icon{
103 | background-color:#58A0DC;
104 | overflow:hidden;
105 | }
106 |
107 | .timeline-small-event-tape,
108 | .timeline-small-event-icon{
109 | position:absolute;
110 | }
111 |
112 | .timeline-small-event-icon{width:1px; height:6px;}
113 |
114 |
115 | /*--------------------------------- TIMELINE-------------------------*/
116 | .timeline-ether-bg{width:100%; height:100%;}
117 | .timeline-band-0 .timeline-ether-bg{background-color:#eee}
118 | .timeline-band-1 .timeline-ether-bg{background-color:#ddd}
119 | .timeline-band-2 .timeline-ether-bg{background-color:#ccc}
120 | .timeline-band-3 .timeline-ether-bg{background-color:#aaa}
121 | .timeline-duration-event {
122 | position: absolute;
123 | overflow: hidden;
124 | border: 1px solid blue;
125 | }
126 |
127 | .timeline-instant-event2 {
128 | position: absolute;
129 | overflow: hidden;
130 | border-left: 1px solid blue;
131 | padding-left: 2px;
132 | }
133 |
134 | .timeline-instant-event {
135 | position: absolute;
136 | overflow: hidden;
137 | }
138 |
139 | .timeline-event-bubble-title {
140 | font-weight: bold;
141 | border-bottom: 1px solid #888;
142 | margin-bottom: 0.5em;
143 | }
144 |
145 | .timeline-event-bubble-body {
146 | }
147 |
148 | .timeline-event-bubble-wiki {
149 | margin: 0.5em;
150 | text-align: right;
151 | color: #A0A040;
152 | }
153 | .timeline-event-bubble-wiki a {
154 | color: #A0A040;
155 | }
156 |
157 | .timeline-event-bubble-time {
158 | color: #aaa;
159 | }
160 |
161 | .timeline-event-bubble-image {
162 | float: right;
163 | padding-left: 5px;
164 | padding-bottom: 5px;
165 | }.timeline-container {
166 | position: relative;
167 | overflow: hidden;
168 | }
169 |
170 | .timeline-copyright {
171 | position: absolute;
172 | bottom: 0px;
173 | left: 0px;
174 | z-index: 1000;
175 | cursor: pointer;
176 | }
177 |
178 | .timeline-message-container {
179 | position: absolute;
180 | top: 30%;
181 | left: 35%;
182 | right: 35%;
183 | z-index: 1000;
184 | display: none;
185 | }
186 | .timeline-message {
187 | font-size: 120%;
188 | font-weight: bold;
189 | text-align: center;
190 | }
191 | .timeline-message img {
192 | vertical-align: middle;
193 | }
194 |
195 | .timeline-band {
196 | position: absolute;
197 | background: #eee;
198 | z-index: 10;
199 | }
200 |
201 | .timeline-band-inner {
202 | position: relative;
203 | width: 100%;
204 | height: 100%;
205 | }
206 |
207 | .timeline-band-input {
208 | position: absolute;
209 | width: 1em;
210 | height: 1em;
211 | overflow: hidden;
212 | z-index: 0;
213 | }
214 | .timeline-band-input input{
215 | width: 0;
216 | }
217 |
218 | .timeline-band-layer {
219 | position: absolute;
220 | width: 100%;
221 | height: 100%;
222 | }
223 |
224 | .timeline-band-layer-inner {
225 | position: relative;
226 | width: 100%;
227 | height: 100%;
228 | }
229 |
230 |
--------------------------------------------------------------------------------
/fordropweb/static/pubsubbox/css/bootstrap-responsive-2.0.2.min.css:
--------------------------------------------------------------------------------
1 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
2 | .clearfix:after{clear:both;}
3 | .hide-text{overflow:hidden;text-indent:100%;white-space:nowrap;}
4 | .input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
5 | .hidden{display:none;visibility:hidden;}
6 | .visible-phone{display:none;}
7 | .visible-tablet{display:none;}
8 | .visible-desktop{display:block;}
9 | .hidden-phone{display:block;}
10 | .hidden-tablet{display:block;}
11 | .hidden-desktop{display:none;}
12 | @media (max-width:767px){.visible-phone{display:block;} .hidden-phone{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (min-width:768px) and (max-width:979px){.visible-tablet{display:block;} .hidden-tablet{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top{margin-left:-20px;margin-right:-20px;} .container{width:auto;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;} .thumbnails [class*="span"]{width:auto;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:99.999999993%;} .row-fluid > .span11{width:91.436464082%;} .row-fluid > .span10{width:82.87292817100001%;} .row-fluid > .span9{width:74.30939226%;} .row-fluid > .span8{width:65.74585634900001%;} .row-fluid > .span7{width:57.182320438000005%;} .row-fluid > .span6{width:48.618784527%;} .row-fluid > .span5{width:40.055248616%;} .row-fluid > .span4{width:31.491712705%;} .row-fluid > .span3{width:22.928176794%;} .row-fluid > .span2{width:14.364640883%;} .row-fluid > .span1{width:5.801104972%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:714px;} input.span11, textarea.span11, .uneditable-input.span11{width:652px;} input.span10, textarea.span10, .uneditable-input.span10{width:590px;} input.span9, textarea.span9, .uneditable-input.span9{width:528px;} input.span8, textarea.span8, .uneditable-input.span8{width:466px;} input.span7, textarea.span7, .uneditable-input.span7{width:404px;} input.span6, textarea.span6, .uneditable-input.span6{width:342px;} input.span5, textarea.span5, .uneditable-input.span5{width:280px;} input.span4, textarea.span4, .uneditable-input.span4{width:218px;} input.span3, textarea.span3, .uneditable-input.span3{width:156px;} input.span2, textarea.span2, .uneditable-input.span2{width:94px;} input.span1, textarea.span1, .uneditable-input.span1{width:32px;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav .nav-header{color:#999999;text-shadow:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:100%;} .row-fluid > .span11{width:91.45299145300001%;} .row-fluid > .span10{width:82.905982906%;} .row-fluid > .span9{width:74.358974359%;} .row-fluid > .span8{width:65.81196581200001%;} .row-fluid > .span7{width:57.264957265%;} .row-fluid > .span6{width:48.717948718%;} .row-fluid > .span5{width:40.170940171000005%;} .row-fluid > .span4{width:31.623931624%;} .row-fluid > .span3{width:23.076923077%;} .row-fluid > .span2{width:14.529914530000001%;} .row-fluid > .span1{width:5.982905983%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:1160px;} input.span11, textarea.span11, .uneditable-input.span11{width:1060px;} input.span10, textarea.span10, .uneditable-input.span10{width:960px;} input.span9, textarea.span9, .uneditable-input.span9{width:860px;} input.span8, textarea.span8, .uneditable-input.span8{width:760px;} input.span7, textarea.span7, .uneditable-input.span7{width:660px;} input.span6, textarea.span6, .uneditable-input.span6{width:560px;} input.span5, textarea.span5, .uneditable-input.span5{width:460px;} input.span4, textarea.span4, .uneditable-input.span4{width:360px;} input.span3, textarea.span3, .uneditable-input.span3{width:260px;} input.span2, textarea.span2, .uneditable-input.span2{width:160px;} input.span1, textarea.span1, .uneditable-input.span1{width:60px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}}
13 |
--------------------------------------------------------------------------------
/fordropweb/static/pubsubbox/css/pubsubbox.css:
--------------------------------------------------------------------------------
1 | #roster, #roster2 {
2 | background: #fff;
3 | top: 0px;
4 | width: 100%;
5 | height: 290px;
6 | font-size: 11px;
7 | border-image: initial;
8 | overflow: auto;
9 | }
10 |
11 | #activities {
12 | padding-top:30px;
13 | }
14 |
15 | .contact {
16 | height: 40px;
17 | width:140px;
18 | display: block;
19 | color: #333;
20 | text-decoration: none;
21 | padding: 10px 10px;
22 | box-shadow: 1px 1px 3px #888;
23 | background: #fff;
24 | margin-right:20px;
25 | margin-top:10px;
26 | margin-bottom:10px;
27 | border-radius: 6px;
28 | cursor: pointer;
29 | border: 1px solid #fff;
30 | }
31 |
32 | .add-contact {
33 | height: 40px;
34 | width:140px;
35 | display: block;
36 | color: #333;
37 | text-decoration: none;
38 | padding: 10px 10px;
39 | background: #f5f5f5;
40 | margin-right:20px;
41 | margin-top:10px;
42 | margin-bottom:10px;
43 | border:1px dashed silver;
44 | border-radius: 6px;
45 | text-align: center;
46 | }
47 |
48 | .roster-menu-item {
49 | height: 10px;
50 | display: block;
51 | color: #333;
52 | text-decoration: none;
53 | padding: 10px 10px;
54 | border-bottom: groove 2px #555;
55 | text-shadow: 1px 1px #222;
56 | -moz-text-shadow: 1px 1px #222;
57 | -webkit-text-shadow: 1px 1px #222;
58 | }
59 |
60 | #nodes, #discovery, #activities, #notification {
61 | margin:0px auto;
62 | top:230px;
63 | left:10px;
64 | padding-top:15px;
65 | }
66 |
67 | #foo {
68 | top:230px;
69 | text-align: center;
70 | color:#777;
71 | background: #fff;
72 | padding:15px;
73 | border-bottom: 1px dashed silver;
74 | }
75 |
76 | #login-spinner {
77 | margin-top:200px;
78 | text-align: center;
79 | }
80 |
81 | .node {
82 | width:100px;
83 | height:100px;
84 | padding:5px;
85 | text-align:center;
86 | background: #fff;
87 | margin-right:20px;
88 | margin-top:20px;
89 | border:1px solid silver;
90 | }
91 |
92 | .add-node {
93 | width:100px;
94 | height:100px;
95 | padding:5px;
96 | text-align:center;
97 | border:1px dashed silver;
98 | margin-right:20px;
99 | margin-top:20px;
100 | background: #f5f5f5;
101 | }
102 |
103 | .hide {
104 | display: none;
105 | }
106 |
107 | .left {
108 | float:left;
109 | }
110 |
111 | .right {
112 | float:right;
113 | }
114 |
115 | .quiet {
116 | color:#666;
117 | font-size: 0.9em;
118 | }
119 |
120 | canvas {
121 | background: #444;
122 | }
123 |
--------------------------------------------------------------------------------
/fordropweb/static/pubsubbox/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/pubsubbox/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/fordropweb/static/pubsubbox/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/pubsubbox/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/fordropweb/static/pubsubbox/img/spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/berggren/fordropweb/eb290335462c3be8dd1c4b8011339a40c7135310/fordropweb/static/pubsubbox/img/spinner.gif
--------------------------------------------------------------------------------
/fordropweb/static/pubsubbox/js/bootstrap-modal-2.0.2.js:
--------------------------------------------------------------------------------
1 | /* =========================================================
2 | * bootstrap-modal.js v2.0.2
3 | * http://twitter.github.com/bootstrap/javascript.html#modals
4 | * =========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================= */
19 |
20 |
21 | !function( $ ){
22 |
23 | "use strict"
24 |
25 | /* MODAL CLASS DEFINITION
26 | * ====================== */
27 |
28 | var Modal = function ( content, options ) {
29 | this.options = options
30 | this.$element = $(content)
31 | .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
32 | }
33 |
34 | Modal.prototype = {
35 |
36 | constructor: Modal
37 |
38 | , toggle: function () {
39 | return this[!this.isShown ? 'show' : 'hide']()
40 | }
41 |
42 | , show: function () {
43 | var that = this
44 |
45 | if (this.isShown) return
46 |
47 | $('body').addClass('modal-open')
48 |
49 | this.isShown = true
50 | this.$element.trigger('show')
51 |
52 | escape.call(this)
53 | backdrop.call(this, function () {
54 | var transition = $.support.transition && that.$element.hasClass('fade')
55 |
56 | !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position
57 |
58 | that.$element
59 | .show()
60 |
61 | if (transition) {
62 | that.$element[0].offsetWidth // force reflow
63 | }
64 |
65 | that.$element.addClass('in')
66 |
67 | transition ?
68 | that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
69 | that.$element.trigger('shown')
70 |
71 | })
72 | }
73 |
74 | , hide: function ( e ) {
75 | e && e.preventDefault()
76 |
77 | if (!this.isShown) return
78 |
79 | var that = this
80 | this.isShown = false
81 |
82 | $('body').removeClass('modal-open')
83 |
84 | escape.call(this)
85 |
86 | this.$element
87 | .trigger('hide')
88 | .removeClass('in')
89 |
90 | $.support.transition && this.$element.hasClass('fade') ?
91 | hideWithTransition.call(this) :
92 | hideModal.call(this)
93 | }
94 |
95 | }
96 |
97 |
98 | /* MODAL PRIVATE METHODS
99 | * ===================== */
100 |
101 | function hideWithTransition() {
102 | var that = this
103 | , timeout = setTimeout(function () {
104 | that.$element.off($.support.transition.end)
105 | hideModal.call(that)
106 | }, 500)
107 |
108 | this.$element.one($.support.transition.end, function () {
109 | clearTimeout(timeout)
110 | hideModal.call(that)
111 | })
112 | }
113 |
114 | function hideModal( that ) {
115 | this.$element
116 | .hide()
117 | .trigger('hidden')
118 |
119 | backdrop.call(this)
120 | }
121 |
122 | function backdrop( callback ) {
123 | var that = this
124 | , animate = this.$element.hasClass('fade') ? 'fade' : ''
125 |
126 | if (this.isShown && this.options.backdrop) {
127 | var doAnimate = $.support.transition && animate
128 |
129 | this.$backdrop = $('
')
130 | .appendTo(document.body)
131 |
132 | if (this.options.backdrop != 'static') {
133 | this.$backdrop.click($.proxy(this.hide, this))
134 | }
135 |
136 | if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
137 |
138 | this.$backdrop.addClass('in')
139 |
140 | doAnimate ?
141 | this.$backdrop.one($.support.transition.end, callback) :
142 | callback()
143 |
144 | } else if (!this.isShown && this.$backdrop) {
145 | this.$backdrop.removeClass('in')
146 |
147 | $.support.transition && this.$element.hasClass('fade')?
148 | this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
149 | removeBackdrop.call(this)
150 |
151 | } else if (callback) {
152 | callback()
153 | }
154 | }
155 |
156 | function removeBackdrop() {
157 | this.$backdrop.remove()
158 | this.$backdrop = null
159 | }
160 |
161 | function escape() {
162 | var that = this
163 | if (this.isShown && this.options.keyboard) {
164 | $(document).on('keyup.dismiss.modal', function ( e ) {
165 | e.which == 27 && that.hide()
166 | })
167 | } else if (!this.isShown) {
168 | $(document).off('keyup.dismiss.modal')
169 | }
170 | }
171 |
172 |
173 | /* MODAL PLUGIN DEFINITION
174 | * ======================= */
175 |
176 | $.fn.modal = function ( option ) {
177 | return this.each(function () {
178 | var $this = $(this)
179 | , data = $this.data('modal')
180 | , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
181 | if (!data) $this.data('modal', (data = new Modal(this, options)))
182 | if (typeof option == 'string') data[option]()
183 | else if (options.show) data.show()
184 | })
185 | }
186 |
187 | $.fn.modal.defaults = {
188 | backdrop: true
189 | , keyboard: true
190 | , show: true
191 | }
192 |
193 | $.fn.modal.Constructor = Modal
194 |
195 |
196 | /* MODAL DATA-API
197 | * ============== */
198 |
199 | $(function () {
200 | $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
201 | var $this = $(this), href
202 | , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
203 | , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
204 |
205 | e.preventDefault()
206 | $target.modal(option)
207 | })
208 | })
209 |
210 | }( window.jQuery );
--------------------------------------------------------------------------------
/fordropweb/static/pubsubbox/js/bootstrap-transition-2.0.2.js:
--------------------------------------------------------------------------------
1 | /* ===================================================
2 | * bootstrap-transition.js v2.0.2
3 | * http://twitter.github.com/bootstrap/javascript.html#transitions
4 | * ===================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================== */
19 |
20 | !function( $ ) {
21 |
22 | $(function () {
23 |
24 | "use strict"
25 |
26 | /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
27 | * ======================================================= */
28 |
29 | $.support.transition = (function () {
30 | var thisBody = document.body || document.documentElement
31 | , thisStyle = thisBody.style
32 | , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
33 |
34 | return support && {
35 | end: (function () {
36 | var transitionEnd = "TransitionEnd"
37 | if ( $.browser.webkit ) {
38 | transitionEnd = "webkitTransitionEnd"
39 | } else if ( $.browser.mozilla ) {
40 | transitionEnd = "transitionend"
41 | } else if ( $.browser.opera ) {
42 | transitionEnd = "oTransitionEnd"
43 | }
44 | return transitionEnd
45 | }())
46 | }
47 | })()
48 |
49 | })
50 |
51 | }( window.jQuery );
--------------------------------------------------------------------------------
/fordropweb/static/pubsubbox/js/config.js.example:
--------------------------------------------------------------------------------
1 | var XMPPConfig = {
2 | pubsubservice: 'pubsub.example.com',
3 | debug: false
4 | };
--------------------------------------------------------------------------------
/fordropweb/static/pubsubbox/js/jquery.ui.touch-punch.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | * jQuery UI Touch Punch 0.2.2
3 | *
4 | * Copyright 2011, Dave Furfero
5 | * Dual licensed under the MIT or GPL Version 2 licenses.
6 | *
7 | * Depends:
8 | * jquery.ui.widget.js
9 | * jquery.ui.mouse.js
10 | */
11 | (function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery);
--------------------------------------------------------------------------------
/fordropweb/templates/404.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% block content %}
3 |
4 |
5 |
6 |
7 |
Hey, this page does not exist.
8 |
9 |
10 |
11 | {% endblock %}
--------------------------------------------------------------------------------
/fordropweb/templates/base.html:
--------------------------------------------------------------------------------
1 | {% load thumbnail %}
2 |
3 |
4 |
5 | fordrop
6 |
7 |
8 |
9 |
10 | {% block extrahead %}{% endblock %}
11 |
12 |
13 |
51 |
52 |
53 |
54 | {% if messages %}
55 |
56 |
57 | {% for message in messages %}
58 | {% ifequal message.tags "info" %}
59 |
60 | {% endifequal %}
61 | {% ifequal message.tags "success" %}
62 |
63 | {% endifequal %}
64 | {% ifequal message.tags "warning" %}
65 |
66 | {% endifequal %}
67 | {% ifequal message.tags "error" %}
68 |
69 | {% endifequal %}
70 | {{ message|safe }}
71 |
72 | {% endfor %}
73 |
74 |
75 | {% endif %}
76 | {% block content %}{% endblock %}
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/fordropweb/templates/collection_base.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% block extrahead %}
3 |
13 | {% endblock %}
14 | {% block content %}
15 |
16 |
17 |
{{ collection.title }}
18 | {% if user in collection.followers.all %}
19 |
22 | {% else %}
23 |
26 | {% endif %}
27 |
28 |
{{ collection.followers.all|length }} follower{{ collection.followers.all|pluralize }}
29 | {% if collection.tags.all %}
30 |
Tracking
31 | {% else %}
32 |
Tracking nothing
33 | {% endif %}
34 | {% for tag in collection.tags.all %}
35 |
{{ tag }}
36 | {% endfor %}
37 | {% if user in collection.followers.all %}
38 |
Edit
39 |
40 |
41 |
44 |
45 | {% endif %}
46 | {% if collection.nodes.all %}
47 |
Shared with
48 | {% else %}
49 |
Shared with none
50 | {% endif %}
51 | {% for node in collection.nodes.all %}
52 |
{{ node.name }}
53 | {% endfor %}
54 |
55 |
56 |
57 | {% block collection_content %}{% endblock %}
58 | {% endblock %}
--------------------------------------------------------------------------------
/fordropweb/templates/collection_timeline.html:
--------------------------------------------------------------------------------
1 | {% extends 'collection_base.html' %}
2 | {% load thumbnail %}
3 |
4 | {% block extrahead %}
5 |
15 | {% if collection %}
16 |
21 |
22 |
23 |
24 |
27 |
31 |
32 |
33 | {% endif %}
34 | {% endblock %}
35 |
36 | {% block extrabody %}onload="onLoad();" onresize="onResize();"{% endblock %}
37 |
38 | {% block collection_content %}
39 |
40 |
41 | {% if collection.description %}
42 | {{ collection.description|linebreaksbr }}
43 |
44 | {% endif %}
45 |
46 |
47 |
48 |
49 |
50 |
51 | {% if not collection.comments %}
52 |
53 | Comments
54 |
60 |
61 |
62 | {% else %}
63 |
64 |
Comments
65 |
66 | {% for comment in collection.comments reversed %}
67 |
68 | {% if comment.user.profile.avatar %}
69 | {% thumbnail comment.user.profile.avatar "30x30" crop="center" as im %}
70 |
71 | {% endthumbnail %}
72 | {% else %}
73 | {% thumbnail "img/placeholder.png" "30x30" crop="center" as im %}
74 |
75 | {% endthumbnail %}
76 | {% endif %}
77 |
78 |
85 | {% endfor %}
86 |
87 |
88 |
{% csrf_token %}
89 |
90 |
93 |
94 |
95 | {% endif %}
96 |
97 | {% if not collection.files %}
98 |
99 | No files tracked yet
100 |
101 | {% else %}
102 |
103 |
{{ collection.files|length }} tracked files
104 | {% for file in collection.files reversed %}
105 |
106 |
107 | {% if file.user.profile.avatar %}
108 | {% thumbnail file.user.profile.avatar "60x60" crop="center" as im %}
109 |
110 | {% endthumbnail %}
111 | {% else %}
112 | {% thumbnail "img/placeholder.png" "60x60" crop="center" as im %}
113 |
114 | {% endthumbnail %}
115 | {% endif %}
116 |
117 |
{{ file.sha1 }}
118 |
{{ file.time_updated|timesince }} ago by {{ file.user.profile.name }}
119 |
120 | {% if file.description %}
121 |
122 | {{ file.description|truncatewords:"30" }}
123 | {{ file.user.profile.name }}
124 |
125 | {% endif %}
126 |
127 | {% for tag in file.tags.all %}
128 |
{{ tag }}
129 | {% endfor %}
130 |
131 | {{ file.comments|length }} comment
132 |
133 |
160 |
161 | {% if file.comments %}
162 |
181 | {% endif %}
182 |
{% csrf_token %}
183 |
184 |
187 |
188 |
189 | {% endfor %}
190 |
191 | {% endif %}
192 |
193 |
194 |
195 |
196 |
197 | {% endblock %}
198 |
--------------------------------------------------------------------------------
/fordropweb/templates/edit_profile.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% load thumbnail %}
3 |
4 | {% block content %}
5 |
6 |
7 |
Edit profile
8 |
39 |
40 |
41 |
42 |
Settings
43 |
44 |
{% csrf_token %}
45 | Email me when:
46 | Make sure you have entered you email address
47 | {{ settingsform.notify_comment_on_file }} Somebody comments on one of my files or in a file I commented in
48 |
49 | {{ settingsform.notify_comment_on_collection }} Somebody comments in one of the collections I am following
50 |
51 | {{ settingsform.notify_same_file }} Somebody reports the same file as me
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | {% endblock %}
--------------------------------------------------------------------------------
/fordropweb/templates/explore.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% load thumbnail %}
3 | {% block content %}
4 |
9 |
10 |
11 |
12 |
There are {{ files|length }} files reported and {{ collections|length }} collections bringing {{ users|length }} people closer together
13 |
14 |
15 |
19 |
20 |
21 |
22 | {% for collection in collections reversed %}
23 |
24 |
25 | {{ collection.title }}
26 | {{ collection.time_updated|timesince }} ago
27 |
28 | {% if user in collection.followers.all %}
29 |
{% csrf_token %}
30 | Unfollow
31 |
32 | {% else %}
33 |
{% csrf_token %}
34 | Follow
35 |
36 | {% endif %}
37 | {% if collection.description %}
38 |
39 | {{ collection.description|truncatewords:"30" }}
40 | {% endif %}
41 |
42 |
{{ collection.followers.all|length }} follower{{ collection.followers.all|pluralize }}
43 |
Tracking {{ collection.files|length }} files
44 |
45 | {% endfor %}
46 |
47 |
48 |
49 | {% for user in users %}
50 |
51 |
52 | {% if user.profile.avatar %}
53 | {% thumbnail user.profile.avatar "60x60" crop="center" as im %}
54 |
55 | {% endthumbnail %}
56 | {% else %}
57 | {% thumbnail "img/placeholder.png" "60x60" crop="center" as im %}
58 |
59 | {% endthumbnail %}
60 | {% endif %}
61 |
62 |
63 |
{{ user.profile.name }}
64 |
65 |
{{ user.profile.location }}
66 |
{{ user.profile.web }}
67 |
68 | {{ profile_user.profile.bio }}
69 |
70 |
71 |
72 | {% endfor %}
73 |
74 |
75 |
76 |
77 |
78 |
79 | {% endblock %}
--------------------------------------------------------------------------------
/fordropweb/templates/file.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% load thumbnail %}
3 |
4 | {% block extrahead %}
5 |
12 | {% endblock %}
13 |
14 | {% block content %}
15 |
16 |
17 |
{{ file.sha1 }}
18 | {% if not is_reporter %}
{% endif %}
19 |
20 | {% if file.description %}
21 | {{ file.description|linebreaksbr }}
22 |
23 | {% endif %}
24 |
25 | Filename {{ file.filename }}
26 | md5 {{ file.md5 }}
27 | sha1 {{ file.sha1 }}
28 | sha256 {{ file.sha256 }}
29 | Tags
30 | {% for tag in file.tags.all %}
31 | {{ tag }}
32 | {% endfor %}
33 | Edit tags
34 |
35 |
36 |
{% csrf_token %}
37 | {{ tagform.tags }}
38 |
39 |
40 |
41 | {% if file.collections %}
42 | Collections
43 | {% if file.collections %}
44 | {% for collection in file.collections %}
45 | {{ collection }}
46 | {% endfor %}
47 | {% endif %}
48 |
49 | {% endif %}
50 | Reporters
51 | {% for f in file.get_reporters %}
52 | {% if f.profile.avatar %}
53 | {% thumbnail f.profile.avatar "30x30" crop="center" as im %}
54 |
55 | {% endthumbnail %}
56 | {% else %}
57 | {% thumbnail "img/placeholder.png" "30x30" crop="center" as im %}
58 |
59 | {% endthumbnail %}
60 | {% endif %}
61 | {{ f.profile.name }}
62 | {% endfor %}
63 |
64 | Shared with
65 | {% for node in file.nodes.all %}
66 | {{ node.name }}
67 | {% endfor %}
68 |
69 |
70 |
71 |
72 |
73 | {% if not file.comments %}
74 |
75 | Comments
76 |
{% csrf_token %}
77 |
78 |
81 |
82 |
83 |
84 | {% else %}
85 |
86 |
Comments
87 |
88 | {% for comment in file.comments %}
89 |
90 | {% if comment.user.profile.avatar %}
91 | {% thumbnail comment.user.profile.avatar "30x30" crop="center" as im %}
92 |
93 | {% endthumbnail %}
94 | {% else %}
95 | {% thumbnail "img/placeholder.png" "30x30" crop="center" as im %}
96 |
97 | {% endthumbnail %}
98 | {% endif %}
99 |
100 |
101 | {{ comment.user.profile.name }}
102 | {{ comment.time_created|timesince }} ago
103 |
104 | {{ comment.content|linebreaksbr }}
105 |
106 |
107 | {% endfor %}
108 |
109 |
110 |
{% csrf_token %}
111 |
112 |
115 |
116 |
117 | {% endif %}
118 |
119 |
120 |
Related
121 | {% for obj in file.tags.similar_objects %}
122 | {% if obj.filename %}
123 |
124 |
{{ obj.sha1 }}
125 |
{{ obj.time_updated|timesince }} ago
126 |
127 | {% if obj.description %}
128 |
129 | {{ obj.description|linebreaksbr|truncatewords:"15" }}
130 | {{ obj.user.profile.name }}
131 |
132 | {% endif %}
133 |
134 | {% for tag in obj.tags.all %}
135 |
{{ tag }}
136 | {% endfor %}
137 |
138 | {% if obj.collections %}
139 |
140 | {% for collection in obj.collections %}
141 |
{{ collection.title }}
142 | {% endfor %}
143 | {% endif %}
144 |
145 | {% elif obj.title %}
146 |
147 |
148 | {{ obj.title }}
149 | {{ obj.time_updated|timesince }} ago
150 |
151 |
152 | {% if user in obj.followers.all %}
153 |
{% csrf_token %}
154 | Unfollow
155 |
156 | {% else %}
157 |
{% csrf_token %}
158 | Follow
159 |
160 | {% endif %}
161 | {% if obj.description %}
162 |
163 | {{ obj.description|truncatewords:"15" }}
164 | {% endif %}
165 |
166 |
{{ obj.followers.all|length }} follower{{ obj.followers.all|pluralize }}
167 |
168 | {% for tag in obj.tags.all %}
169 |
{{ tag }}
170 | {% endfor %}
171 |
172 |
173 |
174 | {% endif %}
175 | {% endfor %}
176 |
177 |
178 |
179 |
180 |
181 | {% endblock %}
182 |
--------------------------------------------------------------------------------
/fordropweb/templates/index.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% load thumbnail %}
3 | {% block extrahead %}
4 |
14 | {% endblock %}
15 | {% block content %}
16 |
17 |
18 | {% if files %}
19 |
The things you care about
20 |
Share your stuff
21 |
22 |
46 |
47 | {% for activity in activities %}
48 | {% ifequal activity.object.get_type 'file' %}
49 |
50 |
51 | {% if activity.object.user.profile.avatar %}
52 | {% thumbnail activity.object.user.profile.avatar "60x60" crop="center" as im %}
53 |
54 | {% endthumbnail %}
55 | {% else %}
56 | {% thumbnail "img/placeholder.png" "30x30" crop="center" as im %}
57 |
58 | {% endthumbnail %}
59 | {% endif %}
60 |
61 |
62 |
{{ activity.object.sha1 }}
63 |
Reported {{ activity.object.time_created|timesince }} ago by {{ activity.object.user.profile.name }}
64 |
65 | {% if activity.object.description %}
66 |
67 | {{ activity.object.description|linebreaksbr }}
68 | {{ activity.object.user.profile.name }}
69 |
70 | {% endif %}
71 | {% if activity.object.tags.all %}
72 |
73 | {% for tag in activity.object.tags.all %}
74 |
{{ tag }}
75 | {% endfor %}
76 | {% endif %}
77 | {% if activity.object.collections %}
78 |
79 | {% for collection in activity.object.collections %}
80 |
{{ collection.title }}
81 | {% endfor %}
82 | {% endif %}
83 |
84 |
85 | {{ activity.object.comments|length }} comment{{ activity.object.comments|pluralize }} {% if activity.object.comments %} {% endif %}
86 |
87 |
114 | {% if activity.object.comments %}
115 |
116 |
135 | {% else %}
136 |
137 | {% endif %}
138 |
{% csrf_token %}
139 |
140 |
143 |
144 |
145 | {% endifequal %}
146 |
147 | {% ifequal activity.object.get_type 'collection' %}
148 |
149 |
{{ activity.object.title }}
150 |
Last activity {{ activity.object.time_updated|timesince }} ago
151 | {% if activity.object.comments %}
152 |
153 |
172 | {% endif %}
173 |
174 | {% endifequal %}
175 |
176 | {% endfor %}
177 |
178 | {% else %}
179 |
180 |
188 |
213 |
214 | {% endif %}
215 |
216 |
217 |
218 |
Collaborate
219 |
New collection
220 |
221 |
245 | {% for collection in collections reversed %}
246 |
247 |
248 | {{ collection.title }}
249 | {{ collection.time_updated|timesince }} ago
250 |
251 |
252 | {% if user in collection.followers.all %}
253 |
{% csrf_token %}
254 | Unfollow
255 |
256 | {% else %}
257 |
{% csrf_token %}
258 | Follow
259 |
260 | {% endif %}
261 | {% if collection.description %}
262 |
263 | {{ collection.description|truncatewords:"30" }}
264 | {% endif %}
265 |
266 |
{{ collection.followers.all|length }} follower{{ collection.followers.all|pluralize }}
267 |
Tracking {{ collection.files|length }} files
268 |
269 | {% endfor %}
270 |
271 |
272 | {% endblock %}
--------------------------------------------------------------------------------
/fordropweb/templates/invitation/invitation_complete.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/fordropweb/templates/invitation/invitation_email.txt:
--------------------------------------------------------------------------------
1 | Hi,
2 |
3 | You have been invited to fordrop. The following link will take you to the registration form.
4 | https://{{ site.domain }}/accounts/register/?invitation_key={{ invitation_key.key }}
5 |
6 | Welcome to fordrop!
--------------------------------------------------------------------------------
/fordropweb/templates/invitation/invitation_email_subject.txt:
--------------------------------------------------------------------------------
1 | You got an invite to fordrop!
--------------------------------------------------------------------------------
/fordropweb/templates/invitation/invitation_form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
Invite a friend
15 |
16 |
Invite a friend to join fordrop
17 |
18 |
{% csrf_token %}
19 | {{ form.as_table }}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/fordropweb/templates/invitation/wrong_invitation_key.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
Hey, you need an invite
15 |
16 |
In order to register an account you need to get an invite.
17 |
18 | Request invite
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/fordropweb/templates/profile.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% load thumbnail %}
3 |
4 | {% block content %}
5 |
6 |
7 |
8 |
9 | {% if profile_user.profile.avatar %}
10 | {% thumbnail profile_user.profile.avatar "100x100" crop="center" as im %}
11 |
12 | {% endthumbnail %}
13 | {% else %}
14 | {% thumbnail "img/placeholder.png" "100x100" crop="center" as im %}
15 |
16 | {% endthumbnail %}
17 | {% endif %}
18 |
19 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | {% if not files %}
43 |
No files by {{ profile_user.profile.name }}
44 | {% else %}
45 |
Files by {{ profile_user.profile.name }}
46 | {% endif %}
47 | {% for file in files %}
48 |
49 |
{{ file.sha1 }}
50 |
{{ file.time_updated|timesince }} ago by {{ file.user.profile.name }}
51 |
52 | {% if file.description %}
53 |
{{ file.description|linebreaksbr|truncatewords:"15" }}
54 | {% endif %}
55 |
56 | {% if file.tags.all %}
57 |
58 | {% for tag in file.tags.all %}
59 |
{{ tag }}
60 | {% endfor %}
61 | {% endif %}
62 |
63 | {% if file.collections %}
64 |
65 | {% for collection in file.collections %}
66 |
{{ collection.title }}
67 | {% endfor %}
68 | {% endif %}
69 | {{ file.comments|length }} comment
70 |
71 | {% endfor %}
72 |
73 |
74 |
75 | {% if not collections %}
76 |
{{ profile_user.profile.name }} is not following anything
77 | {% else %}
78 |
{{ profile_user.profile.name }} is following
79 | {% endif %}
80 | {% for collection in collections reversed %}
81 |
82 |
83 | {{ collection.title }}
84 | {{ collection.time_updated|timesince }} ago
85 |
86 |
87 | {% if collection.description %}
88 |
89 | {{ collection.description|truncatewords:"30" }}
90 | {% endif %}
91 |
92 |
{{ collection.users.all|length }} follower{{ collection.users.all|pluralize }}
93 |
Tracking {{ collection.files|length }} files
94 |
95 |
96 | {% endfor %}
97 |
98 |
99 |
100 |
101 | {% endblock %}
--------------------------------------------------------------------------------
/fordropweb/templates/pubsubbox.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 |
3 | {% block extrahead %}
4 |
5 |
6 |
7 |
11 |
12 |
19 |
20 |
21 | {% endblock %}
22 |
23 | {% block content %}
24 |
25 |
26 |
27 |
43 |
44 |
45 |
Connecting..
46 |
47 |
48 |
49 |
60 |
61 |
66 |
67 |
Back Drag people to groups
68 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | Discover all the boxes you are authorized to subscribe to. This works by sending out a discovery query to all the different domains in your contactlist, and the result is presented here.
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
99 |
100 |
101 | Create a new box! Drag&drop contacts into the box to start sharing.
102 |
103 |
104 | Name your new box
105 |
106 |
107 |
108 |
111 |
112 |
113 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | {% endblock %}
--------------------------------------------------------------------------------
/fordropweb/templates/registration/activate.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Activation failed
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/fordropweb/templates/registration/activation_complete.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
Account is activated
15 |
16 |
You have now successfully created a fordrop account. Please login and start using fordrop.
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/fordropweb/templates/registration/activation_email.txt:
--------------------------------------------------------------------------------
1 | Hi,
2 |
3 | To complete the sign-up process, please follow this link:
4 | https://{{ site.domain }}{% url registration_activate activation_key %}
5 |
6 | The link will be valid for {{ expiration_days }} days.
7 | If you have not sign up for an account on {{ site.domain }} please disregard this email.
8 |
9 | Welcome to fordrop!
--------------------------------------------------------------------------------
/fordropweb/templates/registration/activation_email_subject.txt:
--------------------------------------------------------------------------------
1 | Activate your fordrop account
--------------------------------------------------------------------------------
/fordropweb/templates/registration/login.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
29 |
30 |
--------------------------------------------------------------------------------
/fordropweb/templates/registration/logout.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
Until next time
15 |
16 |
Click here to login again
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/fordropweb/templates/registration/password_change_done.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 |
3 | {% block content %}
4 |
Password changed successfully!
5 |
6 |
Back to profile
7 | {% endblock %}
8 |
--------------------------------------------------------------------------------
/fordropweb/templates/registration/password_change_form.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 |
3 | {% block content %}
4 |
Change your password
5 |
6 |
7 |
{% csrf_token %}
8 | {{ form.old_password.errors }}
9 | {{ form.old_password }}
10 | Old password
11 |
12 | {{ form.new_password1.errors }}
13 | {{ form.new_password1 }}
14 | New password
15 |
16 | {{ form.new_password2.errors }}
17 | {{ form.new_password2 }}
18 | New password again
19 |
20 |
21 |
22 |
23 | {% endblock %}
24 |
--------------------------------------------------------------------------------
/fordropweb/templates/registration/registration_complete.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
You are soon done!
15 |
16 |
We have sent you an email to your specified email address, please follow the instructions in that email to complete your account creation.
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/fordropweb/templates/registration/registration_form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
fordrop - sign up
15 |
16 |
17 |
{% csrf_token %}
18 | {{ form.as_table }}
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/fordropweb/templates/request_invite.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Enter your email to request an invite
15 |
16 |
17 |
{% csrf_token %}
18 | {% for field in form %}
19 | {{ field.errors }}
20 | {{ field }}
21 | {% endfor %}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/fordropweb/templates/search.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% block content %}
3 |
4 |
5 |
6 | {% for obj in result %}
7 | {% ifequal obj.get_type 'file' %}
8 |
9 |
{{ obj.sha1 }}
10 |
{{ obj.time_updated|timesince }} ago by {{ obj.user.profile.name }}
11 |
12 | {% if obj.description %}
13 |
{{ obj.description|linebreaksbr|truncatewords:"15" }}
14 | {% endif %}
15 |
16 | {% if obj.tags.all %}
17 |
18 | {% for tag in obj.tags.all %}
19 |
{{ tag }}
20 | {% endfor %}
21 | {% endif %}
22 |
23 | {% if obj.collections %}
24 |
25 | {% for collection in obj.collections %}
26 |
{{ collection.title }}
27 | {% endfor %}
28 | {% endif %}
29 | {{ obj.comments|length }} comment
30 |
31 | {% endifequal %}
32 |
33 | {% ifequal obj.get_type 'collection' %}
34 |
35 |
{{ obj.title }}
36 |
{{ obj.time_updated|timesince }} ago by {{ obj.user.profile.name }}
37 |
38 | {% if obj.description %}
39 |
{{ obj.description|linebreaksbr|truncatewords:"15" }}
40 | {% endif %}
41 |
42 | {% if obj.tags.all %}
43 |
44 | {% for tag in obj.tags.all %}
45 |
{{ tag }}
46 | {% endfor %}
47 | {% endif %}
48 |
49 | {{ obj.comments|length }} comment
50 |
51 | {% endifequal %}
52 |
53 |
54 |
55 | {% endfor %}
56 |
57 |
58 | {% endblock %}
--------------------------------------------------------------------------------
/fordropweb/templates/thanks.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
fordrop
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
Thanks, keep an eye on your inbox.
15 |
16 |
17 | Return
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/fordropweb/templates/welcome_step_0.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% load thumbnail %}
3 |
4 | {% block content %}
5 |
6 |
Welcome to fordrop
7 |
8 |
This is fordrop, a collaborative way of doing forensic investigations. Connect with other fordrop systems and exchange information through the federated backend. Read more on fordrop.org .
9 |
10 |
Get started!
11 |
12 | {% endblock %}
13 |
--------------------------------------------------------------------------------
/fordropweb/templates/welcome_step_1.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% load thumbnail %}
3 |
4 | {% block content %}
5 |
6 |
Give your profile some love
7 |
8 |
Fill this out if you want a fancy profile page
9 |
10 |
{% csrf_token %}
11 |
12 |
38 |
39 |
40 | Tell us something about you
41 | {{ form.bio }}
42 |
43 |
44 | Save and continue
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | {% endblock %}
53 |
--------------------------------------------------------------------------------
/fordropweb/templates/welcome_step_2.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% load thumbnail %}
3 |
4 | {% block content %}
5 |
6 |
Do you like notifications?
7 |
8 |
Here you have the possibility to turn on email notification for different actions.
9 |
10 |
11 |
{% csrf_token %}
12 | Email me when:
13 | Make sure you have entered you email address
14 | {{ settingsform.notify_comment_on_file }} Somebody comments on one of my files or a file I commented in
15 |
16 | {{ settingsform.notify_comment_on_collection }} Somebody comments in one of the collections I am following
17 |
18 | {{ settingsform.notify_same_file }} Somebody reports the same file as me
19 |
20 |
21 | Save and continue
22 |
23 |
24 |
25 |
26 |
27 | {% endblock %}
28 |
--------------------------------------------------------------------------------
/fordropweb/templates/welcome_step_3.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %}
2 | {% load thumbnail %}
3 |
4 | {% block content %}
5 |
6 |
Ok, let's play
7 |
8 |
In fordrop you upload metadata about content. That content could be information about a binary, a URL or maybe just a hash of something. You can share these reports with others by the help of the federated backend in fordrop. The power comes with the comments and tags. You tag your uploaded data, and then you can create fordrop collections. These collections are groups of tracked tags that will enable you to aggregate information and conversation around a set of reports and build timelines of events.
9 |
10 |
Start
11 |
12 | {% endblock %}
13 |
--------------------------------------------------------------------------------
/fordropweb/urls.py:
--------------------------------------------------------------------------------
1 | from django.conf.urls import patterns, include, url
2 | from django.contrib import admin
3 | from tastypie.api import Api
4 | from django_fordrop.api_v1 import FileResource, FileCommentResource, UserResource, UserProfileResource
5 | from django.views.generic.simple import direct_to_template
6 |
7 | admin.autodiscover()
8 |
9 | v1_api = Api(api_name='v1')
10 | v1_api.register(FileResource())
11 | v1_api.register(FileCommentResource())
12 | v1_api.register(UserResource())
13 | v1_api.register(UserProfileResource())
14 |
15 | urlpatterns = patterns('',
16 | url(r'^$', 'django_fordrop.views.index', name='index'),
17 | url(r'^explore/$', 'django_fordrop.views.explore', name='explore'),
18 | url(r'^welcome/$', 'django_fordrop.views.welcome', name='welcome'),
19 | url(r'^welcome/(?P[0-9]+)$', 'django_fordrop.views.welcome'),
20 | url(r'^share/file$', 'django_fordrop.views.file_share', name='share_file'),
21 | url(r'^search/$', 'django_fordrop.views.search', name='search'),
22 | url(r'^file/(?P[0-9]+)$', 'django_fordrop.views.file', name='file'),
23 | url(r'^file/(?P[0-9]+)/comment$', 'django_fordrop.views.file_comment', name='file_comment'),
24 | url(r'^file/(?P[0-9]+)/tag$', 'django_fordrop.views.file_tag', name='file_tag'),
25 | url(r'^file/(?P[0-9]+)/clone$', 'django_fordrop.views.file_clone', name='file_clone'),
26 | url(r'^collection$', 'django_fordrop.views.collection', name='collection'),
27 | url(r'^collection/(?P[0-9]+)$', 'django_fordrop.views.collection_timeline', name='collection_timeline'),
28 | url(r'^collection/(?P[0-9]+)/timeline$', 'django_fordrop.views.timeline_json', name='timeline'),
29 | url(r'^collection/(?P[0-9]+)/comment$', 'django_fordrop.views.collection_comment', name='collection_comment'),
30 | url(r'^collection/(?P[0-9]+)/tag$', 'django_fordrop.views.collection_tag', name='collection_tag'),
31 | url(r'^collection/(?P[0-9]+)/follow$', 'django_fordrop.views.collection_follow', name='collection_follow'),
32 | url(r'^collection/(?P[0-9]+)/unfollow$', 'django_fordrop.views.collection_unfollow', name='collection_unfollow'),
33 | url(r'^profile/$', 'django_fordrop.views.profile', name='profile'),
34 | url(r'^profile/(?P[0-9]+)$', 'django_fordrop.views.profile', name='profile'),
35 | url(r'^profile/edit/$', 'django_fordrop.views.edit_profile', name='edit_profile'),
36 | url(r'^profile/settings/edit/$', 'django_fordrop.views.edit_settings', name='edit_settings'),
37 | url(r'^federation/$', 'django_fordrop.views.federation', name='federation'),
38 | url(r'federation/node/add/$', 'django_fordrop.views.add_pubsub_node', name='add_pubsub_node'),
39 | url(r'^api/', include(v1_api.urls)),
40 | url(r'^accounts/change_password/$', 'django.contrib.auth.views.password_change', {'post_change_redirect' : '/accounts/change_password/done/'}),
41 | url(r'^accounts/change_password/done/$', 'django.contrib.auth.views.password_change_done'),
42 | url(r'^accounts/', include('invitation.urls')),
43 | url(r'^accounts/', include('registration.backends.default.urls')),
44 | url(r'^accounts/request-invite/$', 'django_fordrop.views.request_invite', name='request_invite'),
45 | url(r'^accounts/thanks/$', direct_to_template, {'template': 'thanks.html'}),
46 |
47 | # Uncomment the next line to enable the admin:
48 | url(r'^admin/', include(admin.site.urls)),
49 | (r'^site_media/(?P.*)$', 'django.views.static.serve', {'document_root': '/home/jbn/s/code/fordropweb/fordropweb/static', 'show_indexes': True}),
50 | )
51 |
--------------------------------------------------------------------------------
/fordropweb/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for fordropweb project.
3 |
4 | This module contains the WSGI application used by Django's development server
5 | and any production WSGI deployments. It should expose a module-level variable
6 | named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
7 | this application via the ``WSGI_APPLICATION`` setting.
8 |
9 | Usually you will have the standard Django WSGI application here, but it also
10 | might make sense to replace the whole Django WSGI application with a custom one
11 | that later delegates to the Django one. For example, you could introduce WSGI
12 | middleware here, or combine a Django application with an application of another
13 | framework.
14 |
15 | """
16 | import os
17 |
18 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fordropweb.settings")
19 |
20 | # This application object is used by any WSGI server configured to use this
21 | # file. This includes Django's development server, if the WSGI_APPLICATION
22 | # setting points here.
23 | from django.core.wsgi import get_wsgi_application
24 | application = get_wsgi_application()
25 |
26 | # Apply WSGI middleware here.
27 | # from helloworld.wsgi import HelloWorldApplication
28 | # application = HelloWorldApplication(application)
29 |
--------------------------------------------------------------------------------
/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import os
3 | import sys
4 |
5 | if __name__ == "__main__":
6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fordropweb.settings")
7 |
8 | from django.core.management import execute_from_command_line
9 |
10 | execute_from_command_line(sys.argv)
11 |
--------------------------------------------------------------------------------
135 | {% if file.comments %} 136 |
151 | {{ comment.time_created|timesince }} ago 152 |
153 | {{ comment.content|linebreaksbr }} 154 |
155 |