Marcel Klehr
78e64ffea8
Mimic, replace or work around removed npm utils.
2012-10-28 18:34:20 +01:00
Marcel Klehr
e447a6fade
Make sure npm is initialized before requiring things ( fix #1092 )
2012-10-28 18:02:49 +01:00
Peter 'Pita' Martischka
9537892c61
wrap spec files with a describe
2012-10-27 17:29:17 +01:00
Peter 'Pita' Martischka
cac27c864a
load list of spec files from the server
2012-10-27 17:05:26 +01:00
Peter 'Pita' Martischka
cc7ddddd2f
redirect from frontend to frontend/
2012-10-27 16:41:17 +01:00
Peter 'Pita' Martischka
f59b643aa6
Merge branch 'develop' of github.com:Pita/etherpad-lite into feature/frontend-tests
2012-10-27 16:32:37 +01:00
Randy
399080ad73
Add IIS config file
2012-10-25 10:22:28 -07:00
Randy
596e20e123
Add default port of process.env.PORT if port isnt specified in settings.json
2012-10-25 10:21:34 -07:00
John McLear
2ecd5719fc
Merge pull request #1073 from Pita/librejs-header
...
Add LibreJS Licensing information to headers of HTML templates
2012-10-25 06:53:38 -07:00
John McLear
a01768fc46
Merge pull request #1086 from neurolit/patch_relative_static_links
...
Templates: relative links instead of absolute ones for /static directory
2012-10-25 06:52:16 -07:00
John McLear
58d559b962
fix marcels trailing ,
2012-10-25 05:24:42 -07:00
John McLear
9582881278
Merge pull request #1088 from marcelklehr/fix/update-npm
...
Update npm
2012-10-25 05:21:11 -07:00
John McLear
0e9695bfb0
Merge pull request #1089 from marcelklehr/legal/extend-collaboraters
...
Add myself to the list of contributers
2012-10-25 05:20:49 -07:00
Marcel Klehr
ff2824ae7a
Add "Marcel Klehr" to contributers list
2012-10-25 13:45:40 +02:00
Marcel Klehr
1bc9d61027
Update npm ( fix #1012 )
2012-10-25 13:38:28 +02:00
0ip
cb760aae52
Fix broken layout (Chrome Mobile)
2012-10-25 14:37:41 +03:00
neurolit
526610e2e7
Templates: relative links instead of absolute ones for /static directory
...
…irector
Two links were absolute ("/static/...") instead of relative
("../static"). The image was not loaded with sites behind reverse
proxies and subdirectory.
2012-10-24 19:48:13 +02:00
Chia-liang Kao
8199bf8377
Do not assume window object exists
2012-10-23 15:21:05 +08:00
johnyma22
a770910a3a
Add LibreJS Licensing information to headers of HTML templates
2012-10-17 17:53:28 +01:00
John McLear
429651874f
Merge pull request #1072 from marcelklehr/fix/timeslider-links-regexp
...
Fix #1067 Corrected exports links regexp
2012-10-16 13:36:20 -07:00
Marcel Klehr
6c89187f95
Fix #1067 Corrected exports links regexp
2012-10-16 20:46:27 +02:00
John McLear
b7d0751b18
couch, level, mongo, postgres, redis DB support
...
Support for additional underlying databases
2012-10-15 13:09:55 +02:00
John McLear
c45739becb
Update src/package.json
...
Bump version #
2012-10-11 23:38:56 +02:00
NAGOYA, Yoshihiko
957a0aa873
fix Pita/etherpad-lite #1032
...
refact inInternationalComposition
2012-10-12 01:12:15 +09:00
John McLear
d7ec050f34
Merge pull request #1035 from amtep/develop
...
Guard against malicious clients in USERINFO_UPDATE handling
2012-10-11 08:27:27 -07:00
Marcel Klehr
bedc51d2e3
Merge pull request #1057 from dmitryuv/sync-processing
...
fix for error handling in the callback code
2012-10-11 08:08:47 -07:00
Marcel Klehr
b0099a4aba
Add plugin-specific sections in settings.json
...
Settings for specific plugins are written down as below:
{
...
"ep_pluginname": {
"foo":"bar"
}
...
}
2012-10-11 16:22:40 +02:00
Dmitry
dbcdc2f956
fix for error handling in callback code
...
The callback code does not follow error handling guidelines, thus always
receiving NULL instead of results array.
2012-10-11 18:07:45 +04:00
Marcel Klehr
1461c4e19a
Merge pull request #1056 from dmitryuv/sync-processing
...
Fix variable name in handleMessageHook
2012-10-11 07:05:51 -07:00
Dmitry
0fa954c1a0
fixed variable name in handleMessageHook
...
the code would never work as expected with this type
2012-10-11 17:51:57 +04:00
Chad Weider
9d1274abaf
Drop method deprecated in Express 3.x.
2012-10-09 01:32:21 -07:00
Peter 'Pita' Martischka
ca6ebd6151
major restructering of the front end test framework
2012-10-08 00:34:29 +02:00
John McLear
90373964d3
Remove two instances of the same function name
...
Both functions did the same thing, the first function was buggy. Might be worth someone looking through the history of this file and pointing out when I made this heinous error ;)
2012-10-06 02:36:51 +02:00
John McLear
db1a1a0e3e
Merge pull request #1034 from d-a-n/develop
...
Added hooks for pad events create/edit/load/remove
2012-10-05 17:28:40 -07:00
johnyma22
5c54b2c681
attempt to move onClick away from HTML.. This is required
2012-10-04 21:16:58 +01:00
John McLear
a1280fd917
Merge pull request #1004 from yourcelf/develop
...
Add `userColor` query param to set initial color
2012-10-04 10:57:16 -07:00
johnyma22
c74aed986e
Merge branch 'develop' of github.com:Pita/etherpad-lite into feature/frontend-tests
2012-10-04 18:55:57 +01:00
johnyma22
a97c63b809
Fix issue caused by broken async update
2012-10-04 18:53:02 +01:00
John McLear
66475f32f3
Merge pull request #1003 from Pita/express-v3
...
Upgrade Express to v3 [proposal]
2012-10-03 06:25:44 -07:00
d-a-n
a521a12583
Changed pad_id to padID to follow projct standards.
2012-10-03 15:50:43 +03:00
d-a-n
358e481731
Changed pad hook names to follow naming conventions. Arguments will now be passed as hash.
2012-10-03 13:41:40 +03:00
Marcel Klehr
2684a1d295
Merge branch 'develop' into express-v3
...
Conflicts:
src/node/hooks/express/errorhandling.js
2012-10-03 10:09:00 +02:00
Chad Weider
b29fc11e9d
Upgrade to Yajsml bug fix.
2012-10-02 19:57:23 -07:00
Richard Braakman
85b44119ae
USERINFO_UPDATE: construct a new message for broadcast
...
The server was reusing the client's message when broadcasting userinfo
updates. This would allow a malicious client to insert arbitrary fields
into a message that the other clients would trust as coming from the
server. For example, adding "disconnect" or renaming other authors.
This commit fixes it by having the server construct a new message with
known fields before broadcasting.
2012-10-02 23:27:30 +03:00
d-a-n
64a3d60b94
Added pad hooks (create, load, edit, remove)
2012-10-02 22:30:13 +03:00
Marcel Klehr
7656001cb5
Don't shut down the whole server, if error handling middleware is called.
...
The errors passed to error handling middleware aren't that severe, so it's fine to just stay alive...
2012-10-02 20:11:18 +02:00
John McLear
56453409a5
Update src/static/js/pad_editbar.js
...
Somehow </iframe> was no more. Now it is back.. Oh boy.
2012-10-02 02:19:44 +02:00
Peter 'Pita' Martischka
ba4ebbba3b
Setted up an enviroment for frontend tests, first steps
2012-10-02 00:35:43 +01:00
John McLear
7f6a81b0ed
Merge pull request #1006 from cweider/ace-cleanup
...
Ace cleanup
2012-10-01 13:05:10 -07:00
Richard Braakman
2e72a1e489
Prevent server crash in handleClientReady
...
The client might have disconnected between callbacks so don't try to
write to the session before checking this. The main callback of this
function now has a single check at its top.
Removed a redundant check halfway through the callback.
Also normalized use of client.id for the session index instead of a mix of
client.id and sessionId.
Added some explanatory comments.
2012-09-28 23:23:00 +03:00
Richard Braakman
413ddb393e
Add some explanatory comments to handleUserChanges()
2012-09-28 22:49:20 +03:00
Richard Braakman
7aaef01346
Prettify session handling in handleUserChanges
...
Also add a comment to explain what's going on with thisSession.
No changes in behavior.
2012-09-27 23:07:00 +03:00
Richard Braakman
f1b4206cad
Fix crash when client submits changeset based on too-old revision
...
We had a problem with the server running out of stack space if a client
submitted a changeset based on a revision more than about 1000 revs old.
(944 was our cutoff but yours may vary). This happened in the wild with
about 30 people editing via flaky wifi. A disconnected client would try
to submit a fairly old changeset when reconnecting, and a few minutes
was enough for 30 people to generate that many revs.
The stack kept growing because pad.getRevisionChangeset was being answered
from the cache, so no I/O interrupted the callback chain. (This was seen with
mysql, I don't know about other backends.)
This patch forces a nextTick every 200 revisions to solve this problem.
2012-09-26 03:01:59 +03:00
Richard Braakman
e16008b371
Fix sessioninfos race that can cause crash during USER_CHANGES handling
...
When stress testing etherpad-lite we occasionally got this error:
TypeError: Cannot read property 'author' of undefined
at /home/etherpad/etherpad-lite/src/node/handler/PadMessageHandler.js:556:47
handleUserChanges was accessing sessioninfos[client.id].author in a callback,
after spending some time in the loop that updates the changeset to the
latest revision. It's possible for a disconnect request to be processed
during that loop so the session might no longer be there.
This patch fixes it by looking up the author at the start of the function.
2012-09-26 03:01:59 +03:00
Marcel Klehr
0c9c1f514f
Fix socket.io auth: Use connect to parse signed cookies (migrate to express v3)
2012-09-22 16:03:40 +02:00
Marcel Klehr
0f436d5916
Migrate error handling middleware to express v3
2012-09-22 15:22:15 +02:00
Marcel Klehr
794c3d1afe
Set secret on cookieParser (migrate to express v3)
2012-09-22 14:05:41 +02:00
Marcel Klehr
71579d1478
Fix res.send (migrate to express v3)
2012-09-22 13:51:39 +02:00
Chad Weider
622819ba93
Make intialization of Ace2Inner analogous to other page controllers.
2012-09-21 22:09:55 -07:00
Chad Weider
9f5946c942
Reformat Ace2Editor frame boot scripts.
2012-09-21 22:09:55 -07:00
Chad Weider
fa65f889ec
Consolidate Ace2Editor frame's boot script.
2012-09-21 22:09:55 -07:00
Chad Weider
49915dfeb8
Upgrade to Yajsml with another Windows backslash fix.
2012-09-21 22:09:44 -07:00
Marcel Klehr
ff7cf991c9
Upgrade log4js to v0.5
2012-09-21 21:39:08 +02:00
Marcel Klehr
4416210471
Differentiate between http server and express app
2012-09-21 17:12:22 +02:00
Marcel Klehr
a72ade4494
Fix async.forEach in MultiSession code
2012-09-19 17:48:26 +02:00
Marcel Klehr
b9da0e187e
Revert "Fixed foreach loop on session IDs, was breaking EP on single session in cookie."
...
This reverts commit 443a71bc9c
.
modified: src/node/db/SecurityManager.js
2012-09-19 17:42:36 +02:00
John McLear
0883043eb9
Merge pull request #1014 from marcelklehr/feature/list-all-groups
...
Add listAllGroups API endpoint
2012-09-18 15:36:19 -07:00
johnyma22
443a71bc9c
Fixed foreach loop on session IDs, was breaking EP on single session in cookie.
2012-09-18 16:30:26 +01:00
John McLear
923b51033b
List 12 plugins instead of 4
...
4 was a bit stingy :) 12 is a bit more friendly from a UX persepctive.
2012-09-18 15:54:08 +02:00
Marcel Klehr
f8f002adc0
Add listAllGroups API endpoint
...
Adds a database key that lists all groups
2012-09-17 23:03:56 +02:00
Charlie DeTar
53113644a0
Require userColor to be valid css hex
...
The utility functions colorutils.js assume that background colors are in
CSS hex format, so require userColor to do the same, rather than
allowing inputs like "red" and "rgba(...)", to insure that inversion
checks will succeed.
2012-09-17 10:59:12 -04:00
Marcel Klehr
bbc8848af3
Still support API endpoints of v1 in v1.1
2012-09-17 16:29:39 +02:00
Charlie DeTar
bc6e495e8c
Use 'transparent' as reference to validate css
...
Use 'transparent' instead of 'white' as a reference color for validating
CSS color values. Presumably, a user setting a userColor wants some
color other than 'transparent' if they are setting it (they could always
duplicate the background's color if not).
2012-09-17 00:19:57 -04:00
Chad Weider
a0177e5d3c
Remember, the class
symbol is reserved in some environments.
...
Fixes issue introduced in 9be69ef258
.
2012-09-16 18:07:55 -07:00
Charlie DeTar
afc90604bf
Add userColor
query param to set initial color
...
Add a URL parameter which sets the initial color for a user, e.g.:
http://example.com/p/mypad?userColor=%2300ff00
Sanitize the given color value to ensure that it's a valid css value
(could be any supported CSS color format -- #fff, rgba(), "red", etc).
Shortly after rejoining a pad, the server responds with a USER_NEWINFO
message which may contain an old color value; however, this message
arrives after we have set and sent the new color value to the server.
To avoid this race condition, if the query parameter has been set,
ignore the color value in a USER_NEWINFO message which matches our user
ID.
2012-09-15 17:48:04 -04:00
John McLear
6f37de2fae
Update src/package.json
...
Bump to v 1.1.2
2012-09-14 17:33:45 +02:00
John McLear
e9e3ea305b
Merge pull request #992 from gedion/develop
...
Added hooks and made some ace functions available to editorInfo Object
2012-09-14 04:51:17 -07:00
John McLear
ba8177fc6f
Merge pull request #999 from lepidum/develop
...
Fixed international composition issues (e.g., Japanese Input method)
2012-09-14 04:50:08 -07:00
NAGOYA, Yoshihiko
71c9444694
fix for InternationalComposition(e.g., Japanese Input)
...
moved inInternationalComposition from Ace2Inner to top window
fix bindTheEventHandlers() because ie9 implement CompositionEvent
when inInternationalComposition, NEW_CHANGES msg and ACCEPT_COMMIT msg
are pushed msgQueue.
when handleUserChanges(), apply msgQueue.
2012-09-13 23:37:26 +09:00
Marcel Klehr
ad16c0d0d4
Bump API version to v1.1
2012-09-13 16:13:54 +02:00
johnyma22
c8b6d3b4f3
attempt to put correct init in right place but could be wrong
2012-09-12 19:38:53 +01:00
johnyma22
603f251824
error handling and close is removed in express 3
2012-09-12 19:34:33 +01:00
John McLear
d44c7f0bb5
Merge pull request #994 from cweider/parent-plugins
...
Parent plugins
2012-09-12 04:52:38 -07:00
John McLear
389e0d09b0
Merge pull request #740 from cweider/plugin-cleanup
...
Plugin cleanup
2012-09-12 04:52:23 -07:00
Chad Weider
feeab5c1b2
Fix cache headers for missing files.
2012-09-11 22:27:14 -07:00
Chad Weider
b691606c4e
Replace ParentRequire hack.
...
Instead of hacking with the internals of require, make client_plugins aware
and capable of sharing behavior.
2012-09-11 21:16:47 -07:00
Chad Weider
1258ed3a0d
Split client and server plugin functionality.
...
There is virtually no shared code for the client, extract it into its own
module and do away with the switches.
2012-09-11 21:16:47 -07:00
Chad Weider
9394495364
Inject plugins into hooks.
2012-09-11 21:16:47 -07:00
Chad Weider
3631f0ece3
Inject special normalization behavior.
2012-09-11 21:16:47 -07:00
Chad Weider
e375b6212a
Static functions are static.
2012-09-11 21:16:47 -07:00
Chad Weider
b0d71df604
Fix worthless indentation.
2012-09-11 21:16:47 -07:00
Gedion
a25feed1c2
fixed indentation
2012-09-11 17:49:58 -05:00
Gedion
3364eb131e
fixed comments
2012-09-11 17:02:53 -05:00
Gedion
9be69ef258
fixed plugins
2012-09-11 16:21:14 -05:00
Marcel Klehr
d05d587f21
Don't break if there is no session cookie.
2012-09-11 20:59:19 +02:00
John McLear
a4bd92c184
Merge pull request #983 from Pita/feature/multiple-api-versions
...
Add support for multiple api versions
2012-09-11 11:29:24 -07:00
Chad Weider
03bcd07741
Use packaged version of Tinycon.
2012-09-09 18:18:59 -07:00
Chad Weider
1541237654
Use packaged version of UNorm.
2012-09-09 18:18:59 -07:00
Chad Weider
19a7208c97
Clean up requires.
2012-09-09 18:18:59 -07:00
Chad Weider
0da4acfdb5
Use packaged edition of async.
2012-09-09 18:18:59 -07:00
Chad Weider
8e735b0841
Use packaged edition of underscore.
2012-09-09 18:18:59 -07:00
Chad Weider
b47f6ae905
Use packaged edition of security module.
2012-09-09 18:18:59 -07:00
Chad Weider
c4fa2ecddb
Don't prefix libraries that are prefixed by '$'. #hack
2012-09-09 18:18:58 -07:00
Chad Weider
3b40850195
Add index paths in tar processing.
2012-09-09 18:18:58 -07:00
Chad Weider
a5653c7192
Clean up tar file processing.
2012-09-09 18:18:58 -07:00
Chad Weider
b8faf1f78b
Serve libraries from node_modules.
2012-09-09 18:18:58 -07:00
Chad Weider
766c301a44
Only files should be treated as being existant.
2012-09-09 18:13:37 -07:00
John McLear
32b4729305
Merge pull request #987 from cweider/loopback-avoidance
...
Windows server fixes
2012-09-09 15:50:42 -07:00
Chad Weider
a97b83babc
Another workaround for Windows paths.
2012-09-09 14:42:32 -07:00
Chad Weider
3b5ea88bf5
If the file was not found this should be nothing.
2012-09-09 14:42:32 -07:00
Chad Weider
3312387b08
Drop embedding of modules.
...
With loopback removed, embedding concatenated resources doesn't happen. It
was a marginal feature to begin with so it will not be missed.
2012-09-09 14:40:20 -07:00
Marcel Klehr
ea0f7cb2e9
Add support for multiple api versions
2012-09-09 18:20:16 +02:00
Gedion
c37c48cd12
added hooks and made some functions available to editor info object in ace
2012-09-08 13:45:33 -05:00
Gedion
6d1cba2259
added hooks to contentcollector.js
2012-09-08 12:11:04 -05:00
Gedion
a2c8d21240
added hooks to contentcollector.js
2012-09-08 12:03:13 -05:00
John McLear
453b6473a0
Merge pull request #984 from lepidum/develop
...
Fixed ESC key handling issue of Firefox 15
2012-09-07 06:23:57 -07:00
John McLear
3cbd59c769
Update src/node/db/AuthorManager.js
2012-09-04 22:47:56 +02:00
John McLear
7e79bf3462
Update src/node/handler/APIHandler.js
2012-09-04 17:26:08 +02:00
John McLear
21dcce2296
Update src/node/db/AuthorManager.js
2012-09-04 17:25:19 +02:00
John McLear
40a7b43799
Update src/node/db/API.js
2012-09-04 17:23:33 +02:00
John McLear
c5be2eb418
Merge pull request #977 from cweider/loopback-avoidance
...
Loopback avoidance
2012-09-03 14:56:55 -07:00
Chad Weider
6e796eb5fb
Make exception case for require kernel obvious.
2012-09-03 14:41:26 -07:00
Chad Weider
02c22d7b89
Remove loopback from Minify.
2012-09-03 14:38:28 -07:00
Chad Weider
024a26f272
Minify publishes its own mock request thing.
2012-09-03 14:37:26 -07:00
Chad Weider
4413d498d8
Minify is a named function.
2012-09-03 14:35:36 -07:00
John McLear
de7934d9fb
Merge pull request #958 from Wikinaut/fix-ie8-native-xmlhttp-support-disabled-issues
...
Fix ie8 native xmlhttp support disabled issues
2012-09-03 06:35:52 -07:00
Marcel Klehr
dad83d9b77
Document multi-session cookie feature
2012-09-02 19:51:40 +02:00
NAGOYA, Yoshihiko
55cf1cabb5
fix prevent ESC key patch
2012-08-30 13:24:35 +09:00
NAGOYA, Yoshihiko
521e76ae44
prevent ESC key
2012-08-30 12:00:27 +09:00
Wikinaut
67088e5b7f
upd version resolve
2012-08-18 01:03:18 +02:00
Wikinaut
e82588c332
use socket.io with jsonp-polling. several browsers tested. fixes IE8 issues
2012-08-18 00:47:13 +02:00
Mark Holmquist
f9469ef256
Add in padUsers HTTP API call
...
I needed the list of users this time, so I got it. There are docs
and everything.
2012-08-17 13:39:16 -07:00
Wikinaut
da30c8983a
fix issue #955 : upd resolve library to 0.2.3
2012-08-17 00:45:02 +02:00
Wikinaut
85f5eb38e4
fix for all IE8 issues when IE8 setting NATIVE XMLHHTP SUPPORT is disabled
2012-08-16 01:00:36 +02:00
Daniel Perez Alvarez
699aa299f8
Normalize inserted text using UNorm
...
For some reason, the client was sending the server a Unicode-normalized
version of inserted strings. So if for example we inserted the string
'ä' (i.e. \x61\xCC\x88) into the document, what would be sent to the
server would be 'ä' (i.e. \xC3\xA4).
This wouldn't be a problem on its own. BUT JavaScript reports that the
length of the first string is 2, while the length of the second one is
1.
So the command that was being sent to the server was 'Z:1>2*0+1$ä', when
it should really be 'Z:1>1*0+1$ä'. When the `checkRep` method checks the
length of the inserted string, it finds an inconsistency, and
disconnects the client.
We now normalize the inserted string before the command is generated, so
the length is always correct.
2012-08-13 17:09:02 +01:00
Daniel Perez Alvarez
48f1545777
Add Unicode normalization library
2012-08-13 17:06:25 +01:00
John McLear
71d6d520e8
Merge pull request #939 from marcelklehr/fix/group2sessions-bug
...
Create group2sessions.sessionIDs if it doesn't exist yet.
2012-08-12 09:10:29 -07:00
John McLear
a5f6815e65
Merge pull request #899 from marcelklehr/fix/show-onload-errors
...
Display errors occuring on page load to the user.
2012-08-12 08:55:24 -07:00
John McLear
14c874b80e
Merge pull request #903 from marcelklehr/feature/hook-loadSettings2
...
[API hook] loadSettings
2012-08-12 08:54:31 -07:00
John McLear
85191ca798
Merge pull request #905 from marcelklehr/feature/hook-documentReady
...
Add a documentReady client hook
2012-08-12 08:54:03 -07:00
John McLear
132278a9d6
Merge pull request #928 from marcelklehr/fix/update-socket-io
...
Update socket.io
2012-08-12 08:53:18 -07:00
John McLear
ba6acd822e
Merge pull request #929 from MarkTraceur/hook/http/send-clients-message
...
Add in an HTTP API call to send a custom message type.
2012-08-12 08:53:07 -07:00
John McLear
1eb63535ca
Merge pull request #931 from MarkTraceur/hook/plugin/handleClientMessage
...
Add in a plugin hook "handleClientMessage_<MSG_NAME>"
2012-08-12 08:52:53 -07:00
John McLear
a42b2440ba
Merge pull request #943 from gedion/develop
...
Add a hook for utils/ExportHtml.js
2012-08-12 08:48:10 -07:00
Gedion
e9b22e8ac3
fix indentation
2012-08-11 15:44:42 -05:00
gedion
4d11e49878
Update src/node/utils/ExportHtml.js
...
Added a hook for utils/ExportHtml.js
2012-08-11 13:08:28 -05:00
Gedion
df7d7769c8
Added a hook for util/ExportHtml.js
2012-08-11 13:02:01 -05:00
Mark Holmquist
44878bc0a3
Add in a plugin hook "handleClientMessage_<MSG_NAME>"
...
The new hook will accept only the message named in the hook call.
It will be used primarily for adding new message handlers, but it
can alse be used to handle existing message types.
2012-08-10 09:51:18 -07:00
Marcel Klehr
d9d28369b2
Create author2sessions.sessionIDs if it doesn't exist yet.
2012-08-10 16:20:07 +02:00
Marcel Klehr
d6a0cfc398
Create group2sessions.sessionIDs if it doesn't exist yet.
2012-08-09 11:15:26 +02:00