On Fri, Jun 13, 2008 at 6:38 AM, Brian Rosner <[EMAIL PROTECTED]> wrote:
>
> Hello,
>
> I need to draw some quick attention to media handling in newforms-
> admin. Ticket #7129 [1] was opened with the intension of the old
> admin's behavior with the js inner Admin option. The trunk
> documentation states:
>
> If you use relative URLs — URLs that don't start with http:// or / —
> then the admin site will automatically prefix these links with
> settings.ADMIN_MEDIA_PREFIX.
>
> However with the use of the new Media class the default behavior of
> relative paths will prepend settings.MEDIA_URL. I am wondering if the
> change to force an explicit prepend of ADMIN_MEDIA_PREFIX is now the
> requirement on newforms-admin? Should the admin handle media slightly
> different or should there be note in the docs about this? When the
> media handling code landed there wasn't any docs in regard to the
> admin specific handling of media, it was just implied from the regular
> media handling code for newforms.

It has been a while, but I believe my thinking went something like this:

A media definition is a media definition, no matter where it appears.
All media should follow the same set of rules, no matter whether it is
in admin or not - after all, admin is just another application.

Admin defines a bunch of widgets that have media requirements, and it
will often make sense for those media files to be served from a
different path to the other media for the site. ADMIN_MEDIA_PREFIX
exists as a configuration setting for the admin app to describe where
those media files can be found.

All the internal admin media definitions force prepend
ADMIN_MEDIA_PREFIX. ADMIN_MEDIA_PREFIX will generally be an absolute
URL, so the MEDIA_URL won't be prepended. However, this setup does
allow you to easily serve /media/mymedia and /media/admin by
specifying a relative ADMIN_MEDIA_PREFIX of 'admin' on a base
MEDIA_URL of '/media/'.

Ticket #7129 is the point at which this approach starts to fail - a
user defined Media block that needs to reference an admin media
script. Trunk makes a special case of admin media definitions (or
rather, it does deal with media anywhere but admin), so this has never
been an issue before.

My gut feeling is that this particular problem won't be a particularly
common occurrence, and a lot less common than in trunk. The most
common reason I can think of to reference admin media is to use the
admin widgets, but the widgets wrap their own media. This only leaves
utility scripts like getElementBySelector.js. In many cases, these
scripts will get inherited from the base media definition, so there
won't be a need to explicitly reference them anyway. For the remaining
cases, I can't say I have any particular problem requiring people to
specify ADMIN_MEDIA_PREFIX + 'js/getElementBySelector.js' if they want
to reference these files - after all, this is what the file is called.

The upshot of this approach is that the requirement to prepend would
be the same whether you were defining an admin media definition or a
media definition for any other form in your application. IMHO,
consistency between Admin behaviour and normal behaviour is a good
thing. Yes, it is a slight change from trunk, but I think it is a
change that makes sense in terms of the new generic media handling
framework. Put me down as +1 to documenting this as a change from
trunk->newforms admin.

If we _do_ want to maintain the old trunk behaviour, one solution
might be to allow a 'prefix' setting on Media definitions. By default,
the prefix is MEDIA_URL, but the default Media definition for
ModelAdmin defines the prefix as ADMIN_MEDIA_PREFIX. User extensions
of ModelAdmin would then inherit the prefix definition, and #7129
could be avoided. Other applications with similar needs could define
their own prefix settings, so we're not introducing an admin-specific
behaviour.

Yours,
Russ Magee %-)

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to