Fixed #10573 -- Corrected autofocus problem in admin when the first widget displayed is a multiwidget. Thanks to rduffield for the report, and to Ramiro and Julien Phalip for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15452 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
a105ca5d7a
commit
74ffca17e2
|
@ -60,7 +60,7 @@
|
||||||
{% submit_row %}
|
{% submit_row %}
|
||||||
|
|
||||||
{% if adminform and add %}
|
{% if adminform and add %}
|
||||||
<script type="text/javascript">document.getElementById("{{ adminform.first_field.auto_id }}").focus();</script>
|
<script type="text/javascript">document.getElementById("{{ adminform.first_field.id_for_label }}").focus();</script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{# JavaScript for prepopulated fields #}
|
{# JavaScript for prepopulated fields #}
|
||||||
|
|
|
@ -522,3 +522,14 @@ class BoundField(StrAndUnicode):
|
||||||
return self.html_name
|
return self.html_name
|
||||||
return ''
|
return ''
|
||||||
auto_id = property(_auto_id)
|
auto_id = property(_auto_id)
|
||||||
|
|
||||||
|
def _id_for_label(self):
|
||||||
|
"""
|
||||||
|
Wrapper around the field widget's `id_for_label` class method.
|
||||||
|
Useful, for example, for focusing on this field regardless of whether
|
||||||
|
it has a single widget or a MutiWidget.
|
||||||
|
"""
|
||||||
|
widget = self.field.widget
|
||||||
|
id_ = widget.attrs.get('id') or self.auto_id
|
||||||
|
return widget.id_for_label(id_)
|
||||||
|
id_for_label = property(_id_for_label)
|
||||||
|
|
|
@ -666,6 +666,10 @@ class Answer(models.Model):
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.answer
|
return self.answer
|
||||||
|
|
||||||
|
class Reservation(models.Model):
|
||||||
|
start_date = models.DateTimeField()
|
||||||
|
price = models.IntegerField()
|
||||||
|
|
||||||
admin.site.register(Article, ArticleAdmin)
|
admin.site.register(Article, ArticleAdmin)
|
||||||
admin.site.register(CustomArticle, CustomArticleAdmin)
|
admin.site.register(CustomArticle, CustomArticleAdmin)
|
||||||
admin.site.register(Section, save_as=True, inlines=[ArticleInline])
|
admin.site.register(Section, save_as=True, inlines=[ArticleInline])
|
||||||
|
@ -701,6 +705,7 @@ admin.site.register(PlotDetails)
|
||||||
admin.site.register(CyclicOne)
|
admin.site.register(CyclicOne)
|
||||||
admin.site.register(CyclicTwo)
|
admin.site.register(CyclicTwo)
|
||||||
admin.site.register(WorkHour, WorkHourAdmin)
|
admin.site.register(WorkHour, WorkHourAdmin)
|
||||||
|
admin.site.register(Reservation)
|
||||||
|
|
||||||
# We intentionally register Promo and ChapterXtra1 but not Chapter nor ChapterXtra2.
|
# We intentionally register Promo and ChapterXtra1 but not Chapter nor ChapterXtra2.
|
||||||
# That way we cover all four cases:
|
# That way we cover all four cases:
|
||||||
|
|
|
@ -431,6 +431,29 @@ class AdminViewBasicTest(TestCase):
|
||||||
except SuspiciousOperation:
|
except SuspiciousOperation:
|
||||||
self.fail("Filters should be allowed if they are defined on a ForeignKey pointing to this model")
|
self.fail("Filters should be allowed if they are defined on a ForeignKey pointing to this model")
|
||||||
|
|
||||||
|
class AdminJavaScriptTest(AdminViewBasicTest):
|
||||||
|
def testSingleWidgetFirsFieldFocus(self):
|
||||||
|
"""
|
||||||
|
JavaScript-assisted auto-focus on first field.
|
||||||
|
"""
|
||||||
|
response = self.client.get('/test_admin/%s/admin_views/picture/add/' % self.urlbit)
|
||||||
|
self.assertContains(
|
||||||
|
response,
|
||||||
|
'<script type="text/javascript">document.getElementById("id_name").focus();</script>'
|
||||||
|
)
|
||||||
|
|
||||||
|
def testMultiWidgetFirsFieldFocus(self):
|
||||||
|
"""
|
||||||
|
JavaScript-assisted auto-focus should work if a model/ModelAdmin setup
|
||||||
|
is such that the first form field has a MultiWidget.
|
||||||
|
"""
|
||||||
|
response = self.client.get('/test_admin/%s/admin_views/reservation/add/' % self.urlbit)
|
||||||
|
self.assertContains(
|
||||||
|
response,
|
||||||
|
'<script type="text/javascript">document.getElementById("id_start_date_0").focus();</script>'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class SaveAsTests(TestCase):
|
class SaveAsTests(TestCase):
|
||||||
fixtures = ['admin-views-users.xml','admin-views-person.xml']
|
fixtures = ['admin-views-users.xml','admin-views-person.xml']
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue