mediagoblin.git
12 years agoSwitch the grid over to using a... erk... table! :)
Christopher Allan Webber [Fri, 19 Aug 2011 03:00:55 +0000 (22:00 -0500)]
Switch the grid over to using a... erk... table! :)

Also changes the gridification routine a bit.

12 years agoFeed link, as an includable template!
Christopher Allan Webber [Fri, 19 Aug 2011 02:28:00 +0000 (21:28 -0500)]
Feed link, as an includable template!

12 years agoMore useful messages about when stuff isn't there on a user's homepage.
Christopher Allan Webber [Fri, 19 Aug 2011 02:23:06 +0000 (21:23 -0500)]
More useful messages about when stuff isn't there on a user's homepage.

12 years agoGive a message if the user hasn't filled in their profile yet.
Christopher Allan Webber [Fri, 19 Aug 2011 02:16:50 +0000 (21:16 -0500)]
Give a message if the user hasn't filled in their profile yet.

12 years agoAdded an alt tag to the feed icons. Accessibility! Woo!
Christopher Allan Webber [Fri, 19 Aug 2011 00:57:49 +0000 (19:57 -0500)]
Added an alt tag to the feed icons.  Accessibility!  Woo!

12 years agoSwitch "atom feed" to "Atom feed" and made the icons and text separate links
Christopher Allan Webber [Fri, 19 Aug 2011 00:57:24 +0000 (19:57 -0500)]
Switch "atom feed" to "Atom feed" and made the icons and text separate links

Before doing the latter there was an ugly underline spanning the icon
and the text.

12 years agoFrom Jef van Schendel: "here's a spot to tell others about yourself"
Christopher Allan Webber [Fri, 19 Aug 2011 00:17:14 +0000 (19:17 -0500)]
From Jef van Schendel: "here's a spot to tell others about yourself"

This should display if the user is logged in and they don't have anything in their profile yet.

12 years agoAdded empty_space class for user profile placeholders
Jef van Schendel [Thu, 18 Aug 2011 16:17:53 +0000 (18:17 +0200)]
Added empty_space class for user profile placeholders

12 years agoFix text sizes (use relative values), remove some unnecessary text sizes, add some...
Jef van Schendel [Thu, 18 Aug 2011 15:29:38 +0000 (17:29 +0200)]
Fix text sizes (use relative values), remove some unnecessary text sizes, add some spaces here and there

12 years agoReplace the Feed icon with a transparent one, put it next to the [atom feed] links
Jef van Schendel [Thu, 18 Aug 2011 13:53:52 +0000 (15:53 +0200)]
Replace the Feed icon with a transparent one, put it next to the [atom feed] links

12 years agoNo longer center small images
Jef van Schendel [Thu, 18 Aug 2011 13:26:00 +0000 (15:26 +0200)]
No longer center small images

12 years agoRemove space at end of MediaGoblin logo link
Jef van Schendel [Thu, 18 Aug 2011 13:22:40 +0000 (15:22 +0200)]
Remove space at end of MediaGoblin logo link

12 years agoWhole bunch of changes to base.css
Jef van Schendel [Thu, 18 Aug 2011 13:18:54 +0000 (15:18 +0200)]
Whole bunch of changes to base.css

12 years agoRemoved temporary logo image, replaced it with text for now
Jef van Schendel [Tue, 16 Aug 2011 21:32:38 +0000 (23:32 +0200)]
Removed temporary logo image, replaced it with text for now

12 years agoSmall changes to media.html: changed order of uploader/date and description, added...
Jef van Schendel [Tue, 16 Aug 2011 21:24:07 +0000 (23:24 +0200)]
Small changes to media.html: changed order of uploader/date and description, added css classes

12 years agoPulled down latest translations
Christopher Allan Webber [Tue, 16 Aug 2011 13:38:36 +0000 (08:38 -0500)]
Pulled down latest translations

12 years agoPulled down latest translations
Christopher Allan Webber [Tue, 16 Aug 2011 13:18:38 +0000 (08:18 -0500)]
Pulled down latest translations

12 years agoMalicious uploads test with fake but not really image files working! :)
Christopher Allan Webber [Sun, 14 Aug 2011 14:12:43 +0000 (09:12 -0500)]
Malicious uploads test with fake but not really image files working! :)

12 years agoProcessing panel view
Christopher Allan Webber [Sun, 14 Aug 2011 12:56:10 +0000 (07:56 -0500)]
Processing panel view

Now you can view your failed and in-process media items!

12 years agoMethod to get the failure exception object for a MediaEntry, if appropriate.
Christopher Allan Webber [Sun, 14 Aug 2011 12:55:08 +0000 (07:55 -0500)]
Method to get the failure exception object for a MediaEntry, if appropriate.

12 years agoSwitch BaseProcessingFail.exception_path's separator from period to colon
Christopher Allan Webber [Sun, 14 Aug 2011 12:53:24 +0000 (07:53 -0500)]
Switch BaseProcessingFail.exception_path's separator from period to colon

Also removing .generator_error_message() which doesn't make sense
really... we need to get the message when we don't have an instance of
the exception, and this method requires an instance.

12 years agoUpdated extracted translations
Christopher Allan Webber [Sun, 14 Aug 2011 00:48:31 +0000 (19:48 -0500)]
Updated extracted translations

12 years agoConverting multi-line-string-comment to a real comment.
Christopher Allan Webber [Sat, 13 Aug 2011 17:52:56 +0000 (12:52 -0500)]
Converting multi-line-string-comment to a real comment.

12 years ago@task decorator no longer used! Removing that import.
Christopher Allan Webber [Sat, 13 Aug 2011 17:52:22 +0000 (12:52 -0500)]
@task decorator no longer used!  Removing that import.

12 years agoCapture and properly handle errors.
Christopher Allan Webber [Sat, 13 Aug 2011 17:21:06 +0000 (12:21 -0500)]
Capture and properly handle errors.

Handled in several places:

 - In the run() of the ProcessMedia itself for
   handled (BaseProcessingFail derived) errors (best to do these not
   in on_failure because the errors are highlighted in celeryd in a
   way that looks inappropriate for when the errors are well handled)
 - In ProcessMedia.on_failure() for all other errors
 - In the submit view where all exceptions are caught, media is marked
   at having failed, then the error is re-raised.  (The reason for
   this is that users running in "lazy" mode will get errors
   propagated by celery and so on_failure won't run for them.)

12 years agoProper handling of processor failures, working as hoped!
Christopher Allan Webber [Sat, 13 Aug 2011 15:59:34 +0000 (10:59 -0500)]
Proper handling of processor failures, working as hoped!

BaseProcessingFail based exceptions recorded and marked appropriately
in the database.  Other exceptions also caught and marked (or rather
not marked) appropriately in the database as well.

12 years agoAdd fail_error and fail_metadata fields to MediaEntry and relevant migration
Christopher Allan Webber [Sat, 13 Aug 2011 12:48:34 +0000 (07:48 -0500)]
Add fail_error and fail_metadata fields to MediaEntry and relevant migration

12 years agoCreate processing errors and raise BadMediaFail on failure to load the image
Christopher Allan Webber [Sat, 13 Aug 2011 00:59:19 +0000 (19:59 -0500)]
Create processing errors and raise BadMediaFail on failure to load the image

12 years agoMissing multi=True closing this migration, oops :)
Christopher Allan Webber [Fri, 12 Aug 2011 18:14:35 +0000 (13:14 -0500)]
Missing multi=True closing this migration, oops :)

12 years agoFeature #298 - Create environment tarball
Joar Wandborg [Fri, 12 Aug 2011 15:04:34 +0000 (17:04 +0200)]
Feature #298 - Create environment tarball

*   Reviewed the code and fixed some bugs

12 years agoConverting object_gallery() from a block to a macro and updating usages of it
Christopher Allan Webber [Fri, 12 Aug 2011 14:55:50 +0000 (09:55 -0500)]
Converting object_gallery() from a block to a macro and updating usages of it

The main motivation here is that this lets us pass in a specific number of col_number

12 years agoadds feature #458 -- given a column number, limits the number of items in a row ...
Karen Rustad [Wed, 3 Aug 2011 01:01:02 +0000 (18:01 -0700)]
adds feature #458 -- given a column number, limits the number of items in a row (and adds divs saying so). No CSS styling to make these demarcations visible, though

12 years agoDocument changes to storage_system_from_config
Elrond [Fri, 12 Aug 2011 11:01:41 +0000 (13:01 +0200)]
Document changes to storage_system_from_config

Chris suggested changing the docs for
storage_system_from_config:
- The only param is a config section.
- The format of that section is much simpler, no prefix.

12 years agoMerge branch 'master' into processing
Christopher Allan Webber [Fri, 12 Aug 2011 03:54:11 +0000 (22:54 -0500)]
Merge branch 'master' into processing

Conflicts:
mediagoblin/db/migrations.py

12 years agoPEP-8ing the keyword argument passing here
Christopher Allan Webber [Fri, 12 Aug 2011 03:44:47 +0000 (22:44 -0500)]
PEP-8ing the keyword argument passing here

12 years agoMerge remote branch 'remotes/gullydwarf-cfdv/b488_email_validation_assumes_active_login'
Christopher Allan Webber [Fri, 12 Aug 2011 03:44:21 +0000 (22:44 -0500)]
Merge remote branch 'remotes/gullydwarf-cfdv/b488_email_validation_assumes_active_login'

12 years agoMerge remote branch 'remotes/gullydwarf-cfdv/b372_rmdbfield_thumbnail_file'
Christopher Allan Webber [Fri, 12 Aug 2011 02:31:48 +0000 (21:31 -0500)]
Merge remote branch 'remotes/gullydwarf-cfdv/b372_rmdbfield_thumbnail_file'

12 years agoIf both the username and the email checks fail, warn about both at the same time
Christopher Allan Webber [Fri, 12 Aug 2011 01:37:21 +0000 (20:37 -0500)]
If both the username and the email checks fail, warn about both at the same time

12 years agoAlso normalize user's emails to .lower() when we accept the user.
Christopher Allan Webber [Fri, 12 Aug 2011 01:34:12 +0000 (20:34 -0500)]
Also normalize user's emails to .lower() when we accept the user.

12 years agoChecks if the email(lowercase) have been used before to register a user
Alejandro Villanueva [Tue, 14 Jun 2011 16:03:56 +0000 (11:03 -0500)]
Checks if the email(lowercase) have been used before to register a user

12 years agoMaking the users_with_username function call in the register view slightly cleaner
Christopher Allan Webber [Fri, 12 Aug 2011 01:15:55 +0000 (20:15 -0500)]
Making the users_with_username function call in the register view slightly cleaner

12 years agoMerge remote branch 'remotes/gullydwarf-cfdv/f446_use_render_divs_once_per_form'
Christopher Allan Webber [Fri, 12 Aug 2011 01:06:39 +0000 (20:06 -0500)]
Merge remote branch 'remotes/gullydwarf-cfdv/f446_use_render_divs_once_per_form'

12 years agouses render_divs for the comments form in media.html for completeness
Caleb Forbes Davis V [Fri, 12 Aug 2011 00:17:56 +0000 (19:17 -0500)]
uses render_divs for the comments form in media.html for completeness

12 years agoFeature #298 - Create environment tarball
Joar Wandborg [Fri, 12 Aug 2011 00:13:58 +0000 (02:13 +0200)]
Feature #298 - Create environment tarball

*   It's now possible to import/export your environment from/to a tarball.

    ./bin/gmg env_export [ -c mediagoblin_local.ini ] test.tar
    and
    ./bin/gmg env_import [ -c mediagoblin_local.ini ] test.tar

12 years agoMoving things around a bit/commenting in the submit view to make the workflow clearer
Christopher Allan Webber [Thu, 11 Aug 2011 16:30:26 +0000 (11:30 -0500)]
Moving things around a bit/commenting in the submit view to make the workflow clearer

12 years agoAdding slightly clearer docs to MountStorage.
Christopher Allan Webber [Thu, 11 Aug 2011 16:29:14 +0000 (11:29 -0500)]
Adding slightly clearer docs to MountStorage.

12 years agoeliminates textarea handling since rows cols not required in HTML5
Caleb Forbes Davis V [Thu, 11 Aug 2011 15:15:30 +0000 (10:15 -0500)]
eliminates textarea handling since rows cols not required in HTML5

12 years agoFeature #446 - Render the submission form using the render_divs macro
Caleb Forbes Davis V [Thu, 11 Aug 2011 05:50:16 +0000 (00:50 -0500)]
Feature #446 - Render the submission form using the render_divs macro

- Currently there are individual calls to wtforms_util.render_field_div
for each field in the media submit form, which is too verbose
- Matched the field ordering in submit/form.py to the verbose version
- hacks the correct textareafield rendering with hard-coded rows and
columns.
- TODO - figure out how to pass the textarea dimensions with **kwargs

12 years agoMerge branch 'master' into processing
Christopher Allan Webber [Thu, 11 Aug 2011 02:04:55 +0000 (21:04 -0500)]
Merge branch 'master' into processing

12 years agoGenerate the ObjectId() manually instead of via .save()
Christopher Allan Webber [Thu, 11 Aug 2011 02:03:16 +0000 (21:03 -0500)]
Generate the ObjectId() manually instead of via .save()

12 years agoWe should save the entry *after* we add the queued_task_id.
Christopher Allan Webber [Thu, 11 Aug 2011 01:26:22 +0000 (20:26 -0500)]
We should save the entry *after* we add the queued_task_id.

12 years agoMerge branch 'master' into processing
Christopher Allan Webber [Thu, 11 Aug 2011 00:53:37 +0000 (19:53 -0500)]
Merge branch 'master' into processing

12 years agoUpdating translations
Christopher Allan Webber [Wed, 10 Aug 2011 23:31:29 +0000 (18:31 -0500)]
Updating translations

12 years agoUpdating translations
Christopher Allan Webber [Wed, 10 Aug 2011 18:07:09 +0000 (13:07 -0500)]
Updating translations

12 years agoBug #372 - MediaEntry.thumbnail_file not used
Caleb Forbes Davis V [Wed, 10 Aug 2011 17:48:23 +0000 (12:48 -0500)]
Bug #372 - MediaEntry.thumbnail_file not used

- deleted the thumbnail_file from the media_entries collection
- added a migration to remove the field from previous db versions

12 years agoMinor change to indentation
Christopher Allan Webber [Wed, 10 Aug 2011 17:44:58 +0000 (12:44 -0500)]
Minor change to indentation

12 years agoOoops! We should do a fake ugettext passthrough here also.
Christopher Allan Webber [Wed, 10 Aug 2011 17:28:42 +0000 (12:28 -0500)]
Ooops!  We should do a fake ugettext passthrough here also.

12 years agoRemoving a tab. This is a tab-free zone!
Christopher Allan Webber [Wed, 10 Aug 2011 17:08:14 +0000 (12:08 -0500)]
Removing a tab.  This is a tab-free zone!

12 years agoConverting all forms to use the "fake/null" gettext conversion function
Christopher Allan Webber [Wed, 10 Aug 2011 17:07:59 +0000 (12:07 -0500)]
Converting all forms to use the "fake/null" gettext conversion function

Gettext doesn't actually get run right in the form but we do need to
wrap the strings in _() so stuff extracts :)

12 years agoMerge branch 'mergeme'
Christopher Allan Webber [Wed, 10 Aug 2011 15:51:44 +0000 (10:51 -0500)]
Merge branch 'mergeme'

12 years agoMake it so that form fields and descriptions are actually translated
Christopher Allan Webber [Wed, 10 Aug 2011 15:50:42 +0000 (10:50 -0500)]
Make it so that form fields and descriptions are actually translated

12 years agoUtilities to lazily translate strings and also fake a translation for extraction
Christopher Allan Webber [Wed, 10 Aug 2011 15:48:02 +0000 (10:48 -0500)]
Utilities to lazily translate strings and also fake a translation for extraction

12 years agoJoar updating a typo in the Swedish translations :)
Christopher Allan Webber [Tue, 9 Aug 2011 15:12:05 +0000 (10:12 -0500)]
Joar updating a typo in the Swedish translations :)

12 years agoCompiling the translations files again
Christopher Allan Webber [Tue, 9 Aug 2011 14:48:06 +0000 (09:48 -0500)]
Compiling the translations files again

12 years agoNew translations including Swedish at 100% (again! now with python strings)
Christopher Allan Webber [Tue, 9 Aug 2011 14:41:16 +0000 (09:41 -0500)]
New translations including Swedish at 100% (again! now with python strings)

12 years agoStorage Config: Finally drop debug
Elrond [Tue, 9 Aug 2011 11:40:20 +0000 (13:40 +0200)]
Storage Config: Finally drop debug

12 years agoStorage config: Drop all Backward Compatibility
Elrond [Tue, 9 Aug 2011 11:11:34 +0000 (13:11 +0200)]
Storage config: Drop all Backward Compatibility

Chris Webber says not to care about backward compatibility
at this stage. So drop the last bits.

12 years agostorage Config: Stop being backward compatible (beginning).
Elrond [Sun, 7 Aug 2011 15:41:24 +0000 (17:41 +0200)]
storage Config: Stop being backward compatible (beginning).

Chris Webber says "no backward compatibility for this".
So start removing the backward compat stuff.

12 years agoStorage Config: Use own section
Elrond [Sun, 31 Jul 2011 11:54:07 +0000 (13:54 +0200)]
Storage Config: Use own section

Instead of configuring storage X by parameters in the main
section "X_class = backend" and "X_param = value", use a
new section in the config: "[storage:X]" and use "class =
backend" and "param = value" there.

This is the beginning, it includes a try at being backward
compatible. But that try isn't really fully useful anyway.

12 years agoExtracted translatable strings from python files.
Christopher Allan Webber [Tue, 9 Aug 2011 03:56:16 +0000 (22:56 -0500)]
Extracted translatable strings from python files.

12 years agoMarked relevant strings in python views/forms for translation via ugettext
Christopher Allan Webber [Tue, 9 Aug 2011 03:53:39 +0000 (22:53 -0500)]
Marked relevant strings in python views/forms for translation via ugettext

12 years agoProvide a pass_to_ugettext method and set up gettext to default to English.
Christopher Allan Webber [Tue, 9 Aug 2011 03:51:03 +0000 (22:51 -0500)]
Provide a pass_to_ugettext method and set up gettext to default to English.

12 years agomediagoblin/translations/ directory not used, mediagoblin/i18n/ is; removing former
Christopher Allan Webber [Tue, 9 Aug 2011 03:49:35 +0000 (22:49 -0500)]
mediagoblin/translations/ directory not used, mediagoblin/i18n/ is; removing former

12 years agoWe should pass ugettext instead of gettext into the jinja template env
Christopher Allan Webber [Tue, 9 Aug 2011 03:32:28 +0000 (22:32 -0500)]
We should pass ugettext instead of gettext into the jinja template env

Otherwise we might get UnicodeDecodeErrors :)

12 years agoMerge branch 'master' of gitorious.org:mediagoblin/mediagoblin
Christopher Allan Webber [Tue, 9 Aug 2011 03:27:51 +0000 (22:27 -0500)]
Merge branch 'master' of gitorious.org:mediagoblin/mediagoblin

12 years agoOnce again compiling .po to .mo
Christopher Allan Webber [Tue, 9 Aug 2011 03:27:26 +0000 (22:27 -0500)]
Once again compiling .po to .mo

12 years agoActually I did *not* successfully check in our new languages (sr and sv); now fixed :)
Christopher Allan Webber [Tue, 9 Aug 2011 03:26:30 +0000 (22:26 -0500)]
Actually I did *not* successfully check in our new languages (sr and sv); now fixed :)

12 years agoMerge remote branch 'remotes/elrond/dev/mount_storage'
Christopher Allan Webber [Tue, 9 Aug 2011 01:12:27 +0000 (20:12 -0500)]
Merge remote branch 'remotes/elrond/dev/mount_storage'

12 years agoFeature 298 - Create environment tarball
Joar Wandborg [Tue, 9 Aug 2011 01:09:42 +0000 (03:09 +0200)]
Feature 298 - Create environment tarball

Saving changes.

12 years agoCompiled the new Swedish translations.
Christopher Allan Webber [Tue, 9 Aug 2011 00:53:40 +0000 (19:53 -0500)]
Compiled the new Swedish translations.

I know Elrond wants 'no compiled crap in our repository'
but until I have a better solution...

12 years agoSwedish translations updated to 100%
Christopher Allan Webber [Tue, 9 Aug 2011 00:52:14 +0000 (19:52 -0500)]
Swedish translations updated to 100%

12 years agoMountStorage: Improve mounting asserts
Elrond [Mon, 8 Aug 2011 19:51:11 +0000 (21:51 +0200)]
MountStorage: Improve mounting asserts

The asserts now differentiate between mounting on the same
path and mounting over a shorter path.

12 years agoMountStorage: Add docs.
Elrond [Mon, 8 Aug 2011 18:11:28 +0000 (20:11 +0200)]
MountStorage: Add docs.

12 years agoMerge remote branch 'upstream/master' into dev/mount_storage
Elrond [Mon, 8 Aug 2011 18:00:57 +0000 (20:00 +0200)]
Merge remote branch 'upstream/master' into dev/mount_storage

Conflicts:
mediagoblin/storage.py

12 years agoNew extracted strings from the templates!
Christopher Allan Webber [Mon, 8 Aug 2011 15:21:17 +0000 (10:21 -0500)]
New extracted strings from the templates!

12 years agoJust some indentation changes to the templates because I'm picky about such things :)
Christopher Allan Webber [Mon, 8 Aug 2011 15:19:21 +0000 (10:19 -0500)]
Just some indentation changes to the templates because I'm picky about such things :)

12 years agoMerge remote branch 'remotes/osamak/master'
Christopher Allan Webber [Mon, 8 Aug 2011 14:47:10 +0000 (09:47 -0500)]
Merge remote branch 'remotes/osamak/master'

Conflicts:
mediagoblin/templates/mediagoblin/user_pages/media.html

12 years agoMerge remote branch 'remotes/schendjes/master'
Christopher Allan Webber [Mon, 8 Aug 2011 14:44:00 +0000 (09:44 -0500)]
Merge remote branch 'remotes/schendjes/master'

12 years agoBug #488 - email validation assumes active login
Caleb Forbes Davis V [Mon, 8 Aug 2011 05:10:46 +0000 (00:10 -0500)]
Bug #488 - email validation assumes active login

- loads username from user object instead of session to remove
  dependency on active login

12 years agoMerge branch 'master' of git://gitorious.org/mediagoblin/mediagoblin into f298_create...
Joar Wandborg [Mon, 8 Aug 2011 01:48:27 +0000 (03:48 +0200)]
Merge branch 'master' of git://gitorious.org/mediagoblin/mediagoblin into f298_create_envball

12 years agoFeature #298 - Changed some defaults in gmg_commands.import_export
Joar Wandborg [Mon, 8 Aug 2011 01:47:17 +0000 (03:47 +0200)]
Feature #298 - Changed some defaults in gmg_commands.import_export

12 years agoAdding {% trans %} to all fixed strings in the templates
Osama Khalid [Sun, 7 Aug 2011 20:36:55 +0000 (23:36 +0300)]
Adding {% trans %} to all fixed strings in the templates

12 years agoCorrect version of the GNU MediaGoblin welcome string translated into German :)
Christopher Allan Webber [Sun, 7 Aug 2011 14:14:17 +0000 (09:14 -0500)]
Correct version of the GNU MediaGoblin welcome string translated into German :)

12 years agoChanged mediagoblin translations directory to the one we actually use.
Christopher Allan Webber [Sun, 7 Aug 2011 05:05:09 +0000 (00:05 -0500)]
Changed mediagoblin translations directory to the one we actually use.

12 years agoMediaGoblin source translation, Transifex config file, German translation test :)
Christopher Allan Webber [Sun, 7 Aug 2011 04:53:34 +0000 (23:53 -0500)]
MediaGoblin source translation, Transifex config file, German translation test :)

12 years agoTools to extract translation from python files and templates
Christopher Allan Webber [Sun, 7 Aug 2011 03:00:49 +0000 (22:00 -0500)]
Tools to extract translation from python files and templates

 - Added pybabel script to entry points
 - Added babel.ini, which we'll use to extract stuff

12 years agoFeature #298
Joar Wandborg [Sun, 7 Aug 2011 03:00:46 +0000 (05:00 +0200)]
Feature #298

*   Added some minor things to gmg_commands.import_export

12 years agoFeature #298 - Environment tarball
Joar Wandborg [Sun, 7 Aug 2011 00:58:03 +0000 (02:58 +0200)]
Feature #298 - Environment tarball

*    Added command hooks for gmg_commands.import_export
*    Added (DANGEROUSLY BLEEDING EDGE) gmg_commands.import_export

12 years agoAdded SMTP configuration options
Joar Wandborg [Sat, 6 Aug 2011 23:22:31 +0000 (01:22 +0200)]
Added SMTP configuration options

12 years agoFeature #482 - Media attachments
Joar Wandborg [Fri, 5 Aug 2011 20:08:29 +0000 (22:08 +0200)]
Feature #482 - Media attachments