Skip to content

Commit

Permalink
Fixed #19538 -- Removed window.__admin_media_prefix__ from admin temp…
Browse files Browse the repository at this point in the history
…lates.
  • Loading branch information
timgraham committed Mar 5, 2015
1 parent b4a1bb8 commit d61ebc8
Show file tree
Hide file tree
Showing 12 changed files with 94 additions and 42 deletions.
2 changes: 1 addition & 1 deletion django/contrib/admin/static/admin/css/base.css
Expand Up @@ -188,7 +188,7 @@ p.mini {
color: #999;
}

img.help-tooltip {
.help-tooltip {
cursor: help;
}

Expand Down
31 changes: 31 additions & 0 deletions django/contrib/admin/static/admin/css/widgets.css
Expand Up @@ -202,6 +202,21 @@ a.active.selector-clearall {
cursor: pointer;
}

.selector .help-icon {
background: url(../img/icon-unknown.gif) no-repeat;
display: inline-block;
height: 10px;
width: 10px;
vertical-align: middle;
}

.selector .search-label-icon {
background: url(../img/selector-search.gif) 0 2px no-repeat;
display: inline-block;
height: 18px;
width: 18px;
}

/* DATE AND TIME */

p.datetime {
Expand All @@ -226,6 +241,22 @@ table p.datetime {
padding-left: 0;
}

.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon {
background: none no-repeat;
display: inline-block;
height: 16px;
width: 16px;
vertical-align: middle;
}

.datetimeshortcuts .clock-icon {
background-image: url(../img/icon_clock.gif);
}

.datetimeshortcuts .date-icon {
background-image: url(../img/icon_calendar.gif);
}

/* URL */

p.url {
Expand Down
34 changes: 30 additions & 4 deletions django/contrib/admin/static/admin/js/SelectFilter2.js
Expand Up @@ -13,7 +13,7 @@ function findForm(node) {
}

window.SelectFilter = {
init: function(field_id, field_name, is_stacked, admin_static_prefix) {
init: function(field_id, field_name, is_stacked) {
if (field_id.match(/__prefix__/)){
// Don't initialize on empty forms.
return;
Expand Down Expand Up @@ -43,14 +43,29 @@ window.SelectFilter = {
var selector_available = quickElement('div', selector_div);
selector_available.className = 'selector-available';
var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name]));
quickElement('img', title_available, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of available %s. You may choose some by selecting them in the box below and then clicking the "Choose" arrow between the two boxes.'), [field_name]));
quickElement(
'span', title_available, '',
'class', 'help help-tooltip help-icon',
'title', interpolate(
gettext(
'This is the list of available %s. You may choose some by ' +
'selecting them in the box below and then clicking the ' +
'"Choose" arrow between the two boxes.'
),
[field_name]
)
);

var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter');
filter_p.className = 'selector-filter';

var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + "_input");

var search_selector_img = quickElement('img', search_filter_label, '', 'src', admin_static_prefix + 'img/selector-search.gif', 'class', 'help-tooltip', 'alt', '', 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]));
var search_selector_img = quickElement(
'span', search_filter_label, '',
'class', 'help-tooltip search-label-icon',
'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name])
);

filter_p.appendChild(document.createTextNode(' '));

Expand All @@ -73,7 +88,18 @@ window.SelectFilter = {
var selector_chosen = quickElement('div', selector_div);
selector_chosen.className = 'selector-chosen';
var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name]));
quickElement('img', title_chosen, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of chosen %s. You may remove some by selecting them in the box below and then clicking the "Remove" arrow between the two boxes.'), [field_name]));
quickElement(
'span', title_chosen, '',
'class', 'help help-tooltip help-icon',
'title', interpolate(
gettext(
'This is the list of chosen %s. You may remove some by ' +
'selecting them in the box below and then clicking the ' +
'"Remove" arrow between the two boxes.'
),
[field_name]
)
);

var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name'));
to_box.className = 'filtered';
Expand Down
23 changes: 10 additions & 13 deletions django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js
Expand Up @@ -16,18 +16,7 @@ var DateTimeShortcuts = {
shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts
timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch
timezoneOffset: 0,
admin_media_prefix: '',
init: function() {
// Get admin_media_prefix by grabbing it off the window object. It's
// set in the admin/base.html template, so if it's not there, someone's
// overridden the template. In that case, we'll set a clearly-invalid
// value in the hopes that someone will examine HTTP requests and see it.
if (window.__admin_media_prefix__ != undefined) {
DateTimeShortcuts.admin_media_prefix = window.__admin_media_prefix__;
} else {
DateTimeShortcuts.admin_media_prefix = '/missing-admin-media-prefix/';
}

if (window.__admin_utc_offset__ != undefined) {
var serverOffset = window.__admin_utc_offset__;
var localOffset = new Date().getTimezoneOffset() * -60;
Expand Down Expand Up @@ -115,7 +104,11 @@ var DateTimeShortcuts = {
var clock_link = document.createElement('a');
clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');');
clock_link.id = DateTimeShortcuts.clockLinkName + num;
quickElement('img', clock_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_clock.gif', 'alt', gettext('Clock'));
quickElement(
'span', clock_link, '',
'class', 'clock-icon',
'title', gettext('Choose a Time')
);
shortcuts_span.appendChild(document.createTextNode('\240'));
shortcuts_span.appendChild(now_link);
shortcuts_span.appendChild(document.createTextNode('\240|\240'));
Expand Down Expand Up @@ -217,7 +210,11 @@ var DateTimeShortcuts = {
var cal_link = document.createElement('a');
cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');');
cal_link.id = DateTimeShortcuts.calendarLinkName + num;
quickElement('img', cal_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_calendar.gif', 'alt', gettext('Calendar'));
quickElement(
'span', cal_link, '',
'class', 'date-icon',
'title', gettext('Choose a Date')
);
shortcuts_span.appendChild(document.createTextNode('\240'));
shortcuts_span.appendChild(today_link);
shortcuts_span.appendChild(document.createTextNode('\240|\240'));
Expand Down
8 changes: 4 additions & 4 deletions django/contrib/admin/static/admin/js/inlines.js
Expand Up @@ -161,11 +161,11 @@
if (typeof SelectFilter != 'undefined'){
$('.selectfilter').each(function(index, value){
var namearr = value.name.split('-');
SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix );
SelectFilter.init(value.id, namearr[namearr.length-1], false);
});
$('.selectfilterstacked').each(function(index, value){
var namearr = value.name.split('-');
SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix );
SelectFilter.init(value.id, namearr[namearr.length-1], true);
});
}
};
Expand Down Expand Up @@ -227,11 +227,11 @@
if (typeof SelectFilter != "undefined"){
$(".selectfilter").each(function(index, value){
var namearr = value.name.split('-');
SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix);
SelectFilter.init(value.id, namearr[namearr.length-1], false);
});
$(".selectfilterstacked").each(function(index, value){
var namearr = value.name.split('-');
SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix);
SelectFilter.init(value.id, namearr[namearr.length-1], true);
});
}
};
Expand Down
18 changes: 9 additions & 9 deletions django/contrib/admin/static/admin/js/inlines.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion django/contrib/admin/templates/admin/base.html
Expand Up @@ -6,7 +6,6 @@
<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
{% block extrastyle %}{% endblock %}
{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}
<script type="text/javascript">window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}";</script>
<script type="text/javascript">window.__admin_utc_offset__ = "{% filter escapejs %}{% now "Z" %}{% endfilter %}";</script>
{% block extrahead %}{% endblock %}
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
Expand Down
Expand Up @@ -23,7 +23,6 @@ <h3><b>{{ inline_admin_formset.opts.verbose_name|capfirst }}:</b>&nbsp;<span cla
(function($) {
$("#{{ inline_admin_formset.formset.prefix }}-group .inline-related").stackedFormset({
prefix: '{{ inline_admin_formset.formset.prefix }}',
adminStaticPrefix: '{% static "admin/" %}',
deleteText: "{% trans "Remove" %}",
addText: "{% blocktrans with verbose_name=inline_admin_formset.opts.verbose_name|capfirst %}Add another {{ verbose_name }}{% endblocktrans %}"
});
Expand Down
Expand Up @@ -76,7 +76,6 @@ <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
(function($) {
$("#{{ inline_admin_formset.formset.prefix }}-group .tabular.inline-related tbody tr").tabularFormset({
prefix: "{{ inline_admin_formset.formset.prefix }}",
adminStaticPrefix: '{% static "admin/" %}',
addText: "{% blocktrans with inline_admin_formset.opts.verbose_name|capfirst as verbose_name %}Add another {{ verbose_name }}{% endblocktrans %}",
deleteText: "{% trans 'Remove' %}"
});
Expand Down
4 changes: 2 additions & 2 deletions django/contrib/admin/widgets.py
Expand Up @@ -49,8 +49,8 @@ def render(self, name, value, attrs=None, choices=()):
output.append('<script type="text/javascript">addEvent(window, "load", function(e) {')
# TODO: "id_" is hard-coded here. This should instead use the correct
# API to determine the ID dynamically.
output.append('SelectFilter.init("id_%s", "%s", %s, "%s"); });</script>\n'
% (name, self.verbose_name.replace('"', '\\"'), int(self.is_stacked), static('admin/')))
output.append('SelectFilter.init("id_%s", "%s", %s); });</script>\n'
% (name, self.verbose_name.replace('"', '\\"'), int(self.is_stacked)))
return mark_safe(''.join(output))


Expand Down

0 comments on commit d61ebc8

Please sign in to comment.