Commit Graph

1000 Commits

Author SHA1 Message Date
Tom Needham f7d8a8c571 Merge branch 'master' into migration 2012-03-31 22:44:50 +00:00
Tom Needham d20eea9761 Use ajax to download file, OC_Dialogs for errors 2012-03-31 22:41:43 +00:00
Robin Appelman 2f68b08491 fix eventsource for ie 2012-03-31 16:40:42 +02:00
Robin Appelman ebc7a6a0a6 dont send to much when scanning large folders 2012-03-31 16:28:22 +02:00
Robin Appelman 9d2f8aa717 send more progress updates when scanning large folders 2012-03-31 16:24:53 +02:00
Robin Appelman b72d7f1ab3 make sure output buffering is dissabled when using eventsource 2012-03-31 16:20:32 +02:00
Bart Visscher 20fc23c82b Move logfile determination to init function 2012-03-30 23:41:54 +02:00
Bart Visscher 3300d6ea53 checkUpgrade has to be after template initialization
The error path of checkUpgrade uses the template
2012-03-30 23:41:54 +02:00
Bart Visscher a7438189f3 Move more from base init to separate functions 2012-03-30 23:41:53 +02:00
Bart Visscher 3a4521a012 Add support for logging to syslog 2012-03-30 23:41:53 +02:00
Robin Appelman 65eee1f69d clean pre-path_hash fscache entries 2012-03-30 19:44:49 +02:00
Georg Ehrke ef1e359c7c Merge branch 'master' into sabredav_1.6 2012-03-30 18:48:30 +02:00
Robin Appelman 7552390031 add path_hash to the filesystem cache 2012-03-30 18:12:33 +02:00
Robin Appelman 523fdda399 add the option to only load apps of a specific type 2012-03-30 14:39:07 +02:00
Robin Appelman a07c6b1a2e optimizations for loadApps 2012-03-30 14:08:18 +02:00
Robin Appelman 7bc9fa765c optimizations for updateApps 2012-03-30 14:08:18 +02:00
Georg Ehrke 90286353e2 Merge branch 'master' into sabredav_1.6 2012-03-29 23:20:03 +02:00
Tom Needham 73eca66a89 Fix comments 2012-03-29 10:17:08 +00:00
Robin Appelman 60ba5508a4 add support for installing apps from a subfolder in the zip/tgz file 2012-03-29 00:11:29 +02:00
Robin Appelman d6a9af3138 add support for installing apps from tgz 2012-03-29 00:07:28 +02:00
Robin Appelman d8e9db207f add tempory folder utility to OC_Helper 2012-03-28 23:47:44 +02:00
Georg Ehrke e5c009599d remove check for variable which was set one line above - bugfix for oc-324 2012-03-28 16:38:42 +02:00
Tom Needham ef33219e4f import method returns each apps' import status 2012-03-27 21:21:14 +00:00
Tom Needham 31d268fe92 check for sqlite 2012-03-27 20:55:53 +00:00
Tom Needham 553f4533c0 look for migrate.php in appinfo folder 2012-03-27 20:45:37 +00:00
Tom Needham b201e51528 Stop error on export 2012-03-27 20:43:44 +00:00
Tom Needham c8acd4a594 Merge branch 'master' into migration 2012-03-27 20:19:38 +00:00
Georg Ehrke 536a3ecb42 Merge branch 'master' into sabredav_1.6 2012-03-27 20:54:16 +02:00
Arthur Schiwon c92fc9bf65 return path of tmp file like filestorage/common does. Fixes broken folder-/multifile-download. 2012-03-27 02:24:52 +02:00
Arthur Schiwon 24bc639222 Do not use always the same name for download-zip to avoid collisions. 2012-03-27 01:19:34 +02:00
Arthur Schiwon bcef775d6b Overwrite Download-ZIP if it already exists. We do not want to show alien content. 2012-03-27 01:18:38 +02:00
Robin Appelman 266699ddf9 fix square images not getting proper thumbnails 2012-03-27 00:42:15 +02:00
Robin Appelman 73c6db5c8e crop and resize in a single step when creating thumbnail
also so more explicit memory cleanup
2012-03-26 23:53:48 +02:00
Robin Appelman 0ba9332358 some more memory cleanup in OC_Image 2012-03-26 22:33:37 +02:00
Robin Appelman 0c19e44a61 some more memory cleanup in OC_Image 2012-03-26 22:28:51 +02:00
Georg Ehrke ac0c5ba6da Merge branch 'master' into sabredav_1.6 2012-03-25 14:02:40 +02:00
Michael Gapczynski d139e3c3cd Move Google Docs storage backend to files_remote app 2012-03-24 15:28:05 -04:00
Michael Gapczynski 26fcb35a89 Implement fopen() for Google Docs storage backend 2012-03-24 14:50:17 -04:00
Robin Appelman 109d806617 make sure we can load OC_Config when we need it 2012-03-23 18:55:26 +01:00
Frank Karlitschek 7cad6ccce0 don´t show ugly error message 2012-03-23 16:48:16 +01:00
Frank Karlitschek a191b75c31 make it possible to connect to other ocs appstores and other ocs knowledgebase servers.
also make it possible to switch the app store and the knowledgebase off completely.
2012-03-23 15:52:41 +01:00
Nils Jansen 7ed8f39744 as preperation for the sgf viewer app i added a file icon for .sgf files (saved go games), and an according mimetype. 2012-03-23 13:34:07 +01:00
Georg Ehrke 8e8c4a8edc Merge branch 'master' into sabredav_1.6 2012-03-22 20:40:04 +01:00
Tom Needham 892343c7c1 Fix instance import 2012-03-21 16:30:59 +00:00
Arthur Schiwon 7c815054c7 Config file is more appropriate here
adjust default value
2012-03-21 13:05:15 +01:00
Georg Ehrke 8f8d486f35 Merge branch 'master' into sabredav_1.6 2012-03-21 09:42:53 +01:00
Tom Needham 0fa5e196ef Try to use old uid when importing 2012-03-20 20:32:01 +00:00
Tom Needham 514c9ad8e7 Added unified import method. 2012-03-20 20:19:21 +00:00
Georg Ehrke 89c39b47bc add microsoft office mimetypes to the fixlist - bugfix for oc-357 2012-03-20 18:46:56 +01:00
Bart Visscher 632b3cbbbb Cleanup the template code for redundant code 2012-03-19 21:56:55 +01:00
Bart Visscher 3d8a09b147 Split the init function in lib/base.php a bit 2012-03-19 21:56:55 +01:00
Tom Needham 145d6f3566 Add OC_Migration_Content class to help app devs. Restructure OC_Migrate. 2012-03-19 20:44:20 +00:00
Georg Ehrke fa104fee17 fix mimetype detection 2012-03-19 12:42:33 +01:00
Arthur Schiwon b13ab2b17e enable admin to turn off ZIP downloads
user interface offers multi-file/folder downloads only if available

make function name more clear
2012-03-19 11:56:02 +01:00
Georg Ehrke 33b06c4484 Merge branch 'master' into sabredav_1.6 2012-03-19 08:33:36 +01:00
Tom Needham 77f6872ea4 Shorten export zip names 2012-03-17 17:45:39 +00:00
Tom Needham bc085c3ff4 Create new user, create new data dir, copy files, import app data 2012-03-17 16:25:14 +00:00
Tom Needham 247b25e7a9 Fix structure of export zip 2012-03-17 15:01:08 +00:00
Tom Needham 5234e66bab Add exportinfo to user exports. 2012-03-17 13:53:00 +00:00
Tom Needham 5332c319a2 Migration info is an object. Other fixes 2012-03-16 22:50:35 +00:00
Tom Needham c442a06a02 Fix export for admin and users. Added 3 admin export types 2012-03-16 21:09:36 +00:00
Arthur Schiwon a77edf88c6 check if selected files for zip archive are not too large
offer config option
2012-03-16 16:25:15 +01:00
Arthur Schiwon cfc41942e4 make Files settings work 2012-03-16 16:00:12 +01:00
Tom Needham 50233d075c Improve admin_export ui and move system export cde to OC_Migrate 2012-03-15 20:52:43 +00:00
Bartek Przybylski 0fadbee699 fix adding photo to incorrect gallery 2012-03-15 00:09:06 +01:00
Tom Needham c9be325af2 Fix zip creation. Add param to cleanUp() method. Add defaults to createExportFile() method. 2012-03-14 16:43:06 +00:00
Tom Needham a310a81053 move zip creation inside OC_Migrate 2012-03-13 23:09:43 +00:00
Tom Needham 5a50144a16 typo :/ 2012-03-13 21:29:31 +00:00
Tom Needham fa8b66ca4f Add getApps() method to return apps supporting migration 2012-03-13 21:28:53 +00:00
Tom Needham cd2f75fdad Use data dir from config.php 2012-03-13 17:27:47 +00:00
Tom Needham 0f3eebbbd9 added cleanUp() method to OC_Migrate 2012-03-13 17:18:42 +00:00
Tom Needham 4d5646a59f Find migrate.php even for disabled apps. Improve ui for user and admin migrations 2012-03-13 16:21:17 +00:00
Tom Needham d108bdc7c7 Improved import function. Added param to connectDB() to load the db from the import 2012-03-12 21:41:32 +00:00
Tom Needham 1cdb4396a4 Fix copyRows() return value. Generate app info and oc info on return 2012-03-12 18:40:14 +00:00
Thomas Tanghus d36d317bb2 Contacts: Modifications for using categories. 2012-03-12 14:13:03 +01:00
Tom Needham a2d7e9c6e8 Merge returns from insertData() 2012-03-11 22:13:50 +00:00
Tom Needham fa5a5649c6 Fix copyRows() and sqlite connection 2012-03-11 22:09:16 +00:00
Robin Appelman a85a10b378 oc_db isn't pdo 2012-03-11 21:48:52 +01:00
Bartek Przybylski f6075cc1fe gallery migration to events system 2012-03-11 16:49:42 +01:00
Tom Needham d712d7f52c Lots of fixes, improve copyRows() method and update settings page. 2012-03-10 18:18:58 +00:00
Tom Needham 3ca76d24a9 Add OC_Migrate::copyRows() method 2012-03-10 15:52:38 +00:00
Tom Needham c3dfcc5b21 First basic implementation of migration.db. 2012-03-09 23:33:11 +00:00
Bartek Przybylski b4ffaa9498 spaces to tabs replacement 2012-03-09 16:47:53 +01:00
Bartek Przybylski ca9b4e467f filescan by mimetype scan 2012-03-09 16:45:57 +01:00
Bartek Przybylski 84d6c53970 filecache search comparition fix 2012-03-09 16:28:26 +01:00
Thomas Tanghus 57c4d39b1e Fix conflict. 2012-03-07 20:57:05 +01:00
Thomas Tanghus 75323b86d1 Contacts: UI updates and ajax methods for categories. 2012-03-07 16:39:56 +01:00
Robin Appelman 9f01533710 fix for webdav when having additional storage backends mounted 2012-03-07 15:44:46 +01:00
Robin Appelman f06858689f revert an accidental change 2012-03-03 22:12:17 +01:00
Robin Appelman 72947e46d1 small improvement for is_dir 2012-03-03 21:23:35 +01:00
Robin Appelman bb97cbbb0c fix commong filestorage for files without extention 2012-03-03 21:23:35 +01:00
Robin Appelman 0f54084305 also delete childs of folders from the cache 2012-03-03 21:23:35 +01:00
Robin Appelman 2e365658c8 better handeling of files that can behave like folder (e.g. archives) 2012-03-03 21:23:35 +01:00
Tom Needham 691103acd5 Use json for migration data 2012-03-03 17:30:21 +00:00
Tom Needham 34f05ba180 Udpdate bookmarks migration provider. App version included in export. 2012-03-03 14:35:17 +00:00
Tom Needham 188a304625 Replace db on import. Update user_migration export function. 2012-03-03 13:26:01 +00:00
Robin Appelman 1794ad353d fix file_get_content on empty files for filestorage common 2012-03-03 00:57:52 +01:00
Tom Needham 86fed4c226 Update database.xml locations. Fix dbexport.xml. 2012-03-02 22:19:06 +00:00
Tom Needham 9c79de4aa0 removed duplicate function 2012-03-02 21:47:20 +00:00
Tom Needham 45ef2ecf52 Fix merge conflict 2012-03-02 21:35:48 +00:00
Jakob Sack 90e2962c91 Remove the link between the principals table and the sabre principals connector. 2012-03-02 20:37:49 +01:00
Robin Appelman 48fe85d9bd add streamwrapper that provides a callback on stream close 2012-03-02 18:42:57 +01:00
Robin Appelman e8afe4f158 add search implementation to filestorage common 2012-03-02 18:42:57 +01:00
Robin Appelman b621431c11 don't try to seach apps in hidden folders 2012-03-02 18:42:57 +01:00
Bart Visscher d1dcd7893c Search: Change provider registration to class name, for lazy loading of search providers 2012-03-01 22:59:35 +01:00
Bart Visscher 8c7b13db70 Files: Fix wrong attribute name in OC_Search_Provider_File 2012-03-01 22:59:35 +01:00
Bart Visscher 3d3190309f Simplify stripping the last part off WEBROOT and SERVERROOT for 3rdparty and app dir 2012-03-01 22:59:35 +01:00
Bart Visscher 5dcd9e20d0 Small cleanups 2012-03-01 21:00:23 +01:00
Tom Needham 33c5b3a2ef Added replaceDB method in lib/db.php 2012-03-01 19:41:14 +00:00
Robin Appelman 6ecbaf0041 load streamwrappers earlier 2012-03-01 18:44:33 +01:00
Frank Karlitschek 0b4607321f Merge branch 'master' of gitorious.org:owncloud/owncloud 2012-03-01 15:21:12 +01:00
Frank Karlitschek d29a02a65a undo the change of the webroot detection. seams to be buggy 2012-03-01 15:19:44 +01:00
Robin Appelman e76e4e7540 add touch() to all storage backands, and make parameter optional 2012-02-29 23:44:05 +01:00
Robin Appelman b23b5aae7f remove debug output 2012-02-29 23:17:49 +01:00
Michael Gapczynski baffa03fa5 Fix opendir for folders aka Google Docs collections 2012-02-29 13:18:33 -05:00
Michael Gapczynski 02f15e9a03 More work on Google Docs storage backend 2012-02-28 19:16:52 -05:00
Bartek Przybylski 2754cac21f dialogs library for apps 2012-02-28 23:02:30 +01:00
Frank Karlitschek 0a9b0ee382 change the detection of the webroot. it is simpler now and also works for app directories outside the owncloud folder. works for me and hopefully for everybody else too 2012-02-28 18:21:23 +01:00
Robin Appelman a829ce69c5 make sure the streamwrappers are registered early 2012-02-28 17:25:15 +01:00
Frank Karlitschek 5e9d268c21 never try to load an non existing template,css,img.
do propper checking, error reporting and motivate the developerto fix it ;-)
2012-02-28 16:14:12 +01:00
Robin Appelman d1c3aa3112 add test case for getLocalFile 2012-02-28 12:06:34 +01:00
Robin Appelman de37bafa5c use in-memory files for the datase scheme during installation 2012-02-28 11:39:39 +01:00
Robin Appelman 3e0bb3e7c4 use temporary file managment 2012-02-28 11:33:59 +01:00
Robin Appelman a76ff563d6 fix temporary file creation 2012-02-28 11:32:45 +01:00
Robin Appelman 273d7fb4fd fix copy/paste error in common filestorage 2012-02-28 11:16:41 +01:00
Robin Appelman 77b51f03e3 add temporary file managment 2012-02-28 11:16:19 +01:00
Michael Gapczynski d190ebee48 Initial work on Google Docs storage backend 2012-02-27 15:00:17 -05:00
Frank Karlitschek 5943af17e7 spaces -> tabs
Thanks to Jakob for reminding me
2012-02-27 18:01:43 +01:00
Robin Appelman d8d4420f22 some cleanup in filestorage 2012-02-27 12:20:37 +01:00
Robin Appelman cef230c141 extend filestorage common and provide test implementation 2012-02-27 12:04:42 +01:00
Robin Appelman e2721fc93c make OC_FileStorage abstract 2012-02-27 11:28:11 +01:00
Frank Karlitschek ab96fa67c8 first part of the abstraction work of the apps folder. more to come 2012-02-26 18:26:41 +01:00
Robin Appelman 857535403c add more valid fopen modes 2012-02-26 15:32:58 +01:00
Robin Appelman d4d09b06f8 merge master into encryption 2012-02-26 14:21:06 +01:00
Robin Appelman 62cd89da14 improved password hashing based one phpass
old passwords are automatically upgraded on login
2012-02-26 14:12:50 +01:00
Georg Ehrke 92c7b2717d add OC_Geo class 2012-02-26 13:45:20 +01:00
Robin Appelman 6c501f90bb hopefully a fix for webroot detection 2012-02-26 04:09:48 +01:00
Robin Appelman c8c3b8a63e chunked implementation for readfile
prevents memory issues when downloading large files
2012-02-26 03:54:21 +01:00
Robin Appelman fe0832746b intval() of a number seems unnecessary
and it could cause 32bit integer overflow issues
2012-02-26 03:31:04 +01:00
Robin Appelman 797e921b9a improve log browsing 2012-02-26 03:10:29 +01:00
Robin Appelman 4f627c428e some more error reporting during filesystem scan 2012-02-25 20:27:16 +01:00
Robin Appelman dda79a90cf don't limit ourselfs to 32bit integers 2012-02-25 16:51:59 +01:00
Robin Appelman ea8f71a19c Merge branch 'master' into encryption 2012-02-25 16:36:58 +01:00
Robin Appelman 8b93a9a237 add javascript bindings for OC_AppConfig 2012-02-25 16:35:40 +01:00
Georg Ehrke 097ce76fc4 Merge branch 'master' into sabredav_1.6 2012-02-25 16:29:32 +01:00
Georg Ehrke 0d2f1688e4 add empty methods updatePrincipal and searchPrincipals and change method getPrincipalByPath to work with sabredav 1.6 2012-02-25 16:26:47 +01:00
Georg Ehrke cc15852386 replace Sabre_DAV_Exception_FileNotFound with Sabre_DAV_Exception_NotFound 2012-02-25 09:35:35 +01:00
Robin Appelman 9dcf29ff51 fix bug in group mangement 2012-02-24 23:54:38 +01:00
Robin Appelman 9f5bce81b0 add a default user quota 2012-02-24 23:54:38 +01:00
Robin Appelman e039015ca1 prevent errors when a user backends gives an invalid result 2012-02-24 23:54:38 +01:00
Georg Ehrke 1d1dfcbc1a replace Sabre_VObject_Element_DateTime with Sabre_VObject_Property_DateTime 2012-02-24 22:20:40 +01:00
Georg Ehrke e082d473bb Merge branch 'master' into sabredav_1.6 2012-02-24 18:51:38 +01:00
Arthur Schiwon ca874a3ad7 remove limit from configvalue for long config values 2012-02-24 14:18:09 +01:00
Georg Ehrke eae32e05c9 Merge branch 'master' into sabredav_1.6 2012-02-23 22:12:00 +01:00
Bartek Przybylski a02d5d1a3d log typo fix 2012-02-23 19:29:11 +01:00
Georg Ehrke 3e756407a0 check if the tempfile was created successfully 2012-02-23 18:23:09 +01:00
Georg Ehrke 95fe159914 make lib/vobject.php work with sabredav 1.6 2012-02-23 17:20:03 +01:00
Frank Karlitschek a62e109e8c make the location of the 3rdparty folder flexible.
It´s automatically search in the owncloud folder and in the parent folder.
override with an option in config.php is also possible
2012-02-23 15:37:38 +01:00
Robin Appelman 2e05bd69f5 add javascript bindings for OC_AppConfig 2012-02-22 22:20:11 +01:00
Thomas Tanghus 9794e7e427 Fix merge conflict. 2012-02-22 11:20:57 +01:00
Robin Appelman c20319d377 fix incorrect information in the filecache when using encryption 2012-02-21 20:48:49 +01:00
Robin Appelman d9c7e4c333 proper mimetypes for encrypted files 2012-02-21 20:48:48 +01:00
Robin Appelman 325858e9e2 add stream wrapper for in-memory files and dont use global variables for the fakedir stream wrapper 2012-02-21 20:48:48 +01:00
Robin Appelman c121a1a1e7 implement file_put_contents with stream data using fopen 2012-02-21 20:48:48 +01:00
Robin Appelman 95459d068e non existing files can never be updated 2012-02-21 20:48:48 +01:00
Robin Appelman 1cffeefa06 move implementation of from/toTmpFile from the file storage to the filesystem 2012-02-21 20:48:48 +01:00
Robin Appelman 6658f51098 provide early file system when using webdav 2012-02-21 20:48:48 +01:00
Robin Appelman b3a974d8bb only trigger hooks for the default filesystem view 2012-02-21 20:48:48 +01:00
Robin Appelman 501678f981 always mount the root filesystem, sometimes we need the filesystem when not logged in 2012-02-21 20:48:48 +01:00
Robin Appelman f1cbb9effc initial integration of encryption 2012-02-21 20:48:48 +01:00
Robin Appelman e53e7990c4 improve get_temp_dir() implementation 2012-02-21 20:48:48 +01:00
Robin Appelman fd4b30ac6f no post hooks for fopen 2012-02-21 20:48:48 +01:00
Robin Appelman e9af218562 use streams instead of temporary files for cross-storage copy and rename 2012-02-21 20:48:48 +01:00
Robin Appelman 82394f9527 add option to dissable fileproxies 2012-02-21 20:48:47 +01:00
Robin Appelman 3d67cd51c2 encryption proxy wip 2012-02-21 20:48:47 +01:00
Robin Appelman abc749feeb make documentation reflect reality a bit better 2012-02-21 20:48:47 +01:00
Robin Appelman b6ed61eab2 pass paramters to file proxies by reference so they can be modified 2012-02-21 20:48:47 +01:00
Bart Visscher 987845c312 Move the redirect_url from linkTo function to the checkLoggedIn function 2012-02-21 20:09:24 +01:00
Alessandro Cosentino 36b7d819e5 restore redirect after checkLoggedIn 2012-02-21 10:22:17 -05:00
Thomas Tanghus be948a9baa Check for empty value in ctor and being conservative about configvalue name ;-) 2012-02-21 09:53:03 +01:00
Thomas Tanghus 7c7031df44 Forgot to assign param. 2012-02-21 00:02:27 +01:00
Bart Visscher 77ab89a7cb Review changes of OC_VCategory 2012-02-20 22:32:57 +01:00
Thomas Tanghus 430ccef09c Added OC_VCategories::rescan() 2012-02-20 13:16:51 +01:00
Thomas Tanghus 8a1b671fdd Switch from using separate db table to use OC_Preferences.
There is a limitation in that the the configvalue field in the preferences table is a varchar(255).
2012-02-19 17:00:07 +01:00
Thomas Tanghus adec09b075 Merge gitorious.org:owncloud/owncloud into vcategories 2012-02-19 13:11:13 +01:00
Thomas Tanghus 71aa36c3f1 ETags must be quoted. 2012-02-18 11:49:31 +01:00
Thomas Tanghus 0203f55fbf Added first draft of OC_VCategories. 2012-02-18 11:45:36 +01:00
Michael Gapczynski 6f1ed85f0b Temporary fix for sharing files 2012-02-17 21:56:20 -05:00
Bart Visscher 1fa05894d5 Move config.php writable test to update path
This should make it possible to use owncloud with a read-only config.php
2012-02-17 22:10:03 +01:00
Bart Visscher 45cff7b737 Move storing "last updated at" time to the app config
This way the config.php file is not changed every time you go to the
personal page. Step to make it possible to have a read-only config.php
most of the time
2012-02-17 22:10:03 +01:00
Bart Visscher bd7227bb93 Spelling fix hint text 2012-02-17 22:10:02 +01:00
Bart Visscher e8b69d45a3 Fixup use of OC_Helper::linkTo function 2012-02-17 22:07:14 +01:00
Bart Visscher f47444e1f7 Use separate function to make absolute urls 2012-02-17 22:07:14 +01:00
Bart Visscher f54c767d72 Fix parameter of OC_Response::sendFile 2012-02-17 22:07:13 +01:00
Bart Visscher bcbebe390b Document OC_Response 2012-02-17 22:07:13 +01:00
Thomas Tanghus 496c1581d7 ETags must be quoted. 2012-02-16 23:24:23 +01:00
Thomas Tanghus 0e2531ba57 Added method for loading from file handle. 2012-02-16 10:38:00 +01:00
Robin Appelman c2fb5fed02 use cached size for getting the size of a moved file 2012-02-15 14:43:06 +01:00
Frank Karlitschek 127c0c7033 Merge branch 'master' of gitorious.org:owncloud/owncloud 2012-02-14 16:34:33 +01:00
Frank Karlitschek d53ed4b40b make it possible to override every image and logo with a new version from within a theme. I think we have a very cool theming here. *self-praise* 2012-02-14 16:32:38 +01:00