diff --git a/django/contrib/admin/static/admin/css/base.css b/django/contrib/admin/static/admin/css/base.css
index 23fddaf..210e969 100644
a
|
b
|
tr.alt {
|
303 | 303 | background: white; |
304 | 304 | } |
305 | 305 | |
| 306 | th img.help-text-tooltip { |
| 307 | cursor: help; |
| 308 | } |
| 309 | |
306 | 310 | /* SORTABLE TABLES */ |
307 | 311 | |
308 | 312 | thead th a:link, thead th a:visited { |
diff --git a/django/contrib/admin/static/admin/img/icon_help.gif b/django/contrib/admin/static/admin/img/icon_help.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d7f013c99329f4e8af52025ab182baf0e0259fc6
GIT binary patch
literal 13286
zcmeI3d3e)g9LF=*K*vOmiQ<_C#A9od^jO!}cAK4LsKv>K94anL(=N76Vv^Zz9#la^
znF1cbR2W|96wi4f=uqZV1O@S`7Yc&cbcpA?>YKH+b3PCH{=t85+UIGSe15<8eLwH_
z-*@s9Z>fVVzzVP~3`-`HyL<K}cJ(B7_H0S)*|2p-M|WcN`t7Y9o8zlG=eBjKOV<Wk
zI%dsVQ!claNo|%uD=5MK_hm?qnCYv=D_M;Nzs|Cl%yJ=K!|VB=Ai9X&b)5t*_+7*d
zn~(Cz9=<`SYF7A~=Bc$@bBJ^Ji86P-GseUsa)j4dJQfLyDid=NtY50<8E~&ZCJDSB
z(LyewLVtnlV|pZo$89Fc$WbK}UP7B_i`8zo7vpA%rbx<6(q<!VXDnuhqVV)ZxbwlC
zQ}G9wX_emeaNwVdXwWp7A<1YoYKmG+k`g3ohr^+_F`JEmFse<W#>R}IIw93$f1gTT
z<rG2I1WCm8zHGhJsJRG2A1HIB*A<a71Bt4se~l(iijXl@CTSBzW;%mHCvd`e6rR;2
zrB;%{?$pY?g2G27C8Xk>8XHc7D)6zET5%uC38E&c4Nh`!Wp*mrraag(-VIdIMyk|E
zm(<cUW3_?r>;d&DXi&LN@(Y2cf0bJp+QLxgbol@%UG5}xI|FR>Z-u_lLC^ooqMyr1
zlpB?B|6chyk`MC{Uer_|lK!ViKgR?lCBkZMA;JcEGAIO`WcJ|!=a-r_$O?!lnaSz?
zsb}{0pxk7=AC&f~rf3i-xkwk%1!VvVM(IMjpbS94C|yVwlmRFhr3>kTG5`gmbRk_(
z2B2V+E~E>}02GYUg>*p~fPzuFkS-_#P%ugt(gkGz3P$Ndx}Xd|!6;ow7nA`g7^Ms8
zf-(RFqjVu%PzIo2lrE$T$^aCM(uH(E8GwROx{xj?15hwZ7t#e~018IwLb{*~K*1<o
zNEeg=DENTs%Fmws;6-rUBMQ!S<Rt(4^N-(u>-+VWpMU!Chkf7g?fvfCo^QVX>dP<o
z?EZY$&d)yG@yW*@efUA*{rBE|=k4upZQJ_h8(TKNzUj4BU+I3iYvW5VZs>gB`St6b
zTl?%YPe1i!#}kh~_UI!IuX*Uf_6P1?ec!$J+<n)owv{XHyyN!P<;#}dcIz!SFIl|k
zrW;!p-f;bb>#n_K{=BQNiqF0Bipwu+Zi+=OZPZld5?K->;n2lGLomSmxq7zlqB$2{
zaQ^IBGiRJPy|!lBxz*=P^__jznNzAJd(Wu!oL*60=5{$T#!+f7u~{u<aHhm$EG|0r
zl#@@IbmGJbgaJR{_~VW}=IHT99XalZ!m(pUk2-whVFe@d4?Se~u)N%%Lvk?8(3hJt
z92<=l>&I#I136fpx2`a6)6j}VV-{?yTe;WL(rduF`xaB!_;^=)Zm4_|Hh<(W2Nf@v
l)KZNXFDI)u8hk6p#fxhAAqyLemKEB@E}7FlePS+l+TT)>fy4j+
literal 0
HcmV?d00001
diff --git a/django/contrib/admin/templates/admin/edit_inline/tabular.html b/django/contrib/admin/templates/admin/edit_inline/tabular.html
index 29db95a..b2970c6 100644
a
|
b
|
|
9 | 9 | <thead><tr> |
10 | 10 | {% for field in inline_admin_formset.fields %} |
11 | 11 | {% if not field.widget.is_hidden %} |
12 | | <th{% if forloop.first %} colspan="2"{% endif %}{% if field.required %} class="required"{% endif %}>{{ field.label|capfirst }}</th> |
| 12 | <th{% if forloop.first %} colspan="2"{% endif %}{% if field.required %} class="required"{% endif %}> |
| 13 | {{ field.label|capfirst }} |
| 14 | {% if field.help_text %} <img class="help-text-tooltip" src="{% static "admin/img/icon_help.gif" %}" alt="({{ field.help_text|striptags }})" title="{{ field.help_text|striptags }}" />{% endif %} |
| 15 | </th> |
13 | 16 | {% endif %} |
14 | 17 | {% endfor %} |
15 | 18 | {% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?" %}</th>{% endif %} |
diff --git a/tests/regressiontests/admin_inlines/models.py b/tests/regressiontests/admin_inlines/models.py
index ee0abd1..8d9ca7c 100644
a
|
b
|
admin.site.register(Holder2, HolderAdmin, inlines=[InnerInline2])
|
103 | 103 | # only Inline media |
104 | 104 | admin.site.register(Holder3, inlines=[InnerInline3]) |
105 | 105 | |
| 106 | |
| 107 | # Models for ticket #8190 |
| 108 | |
| 109 | class Holder4(models.Model): |
| 110 | dummy = models.IntegerField() |
| 111 | |
| 112 | class Inner4Stacked(models.Model): |
| 113 | dummy = models.IntegerField(help_text="Awesome stacked help text is awesome.") |
| 114 | holder = models.ForeignKey(Holder4) |
| 115 | |
| 116 | class Inner4Tabular(models.Model): |
| 117 | dummy = models.IntegerField(help_text="Awesome tabular help text is awesome.") |
| 118 | holder = models.ForeignKey(Holder4) |
| 119 | |
| 120 | class Inner4StackedInline(admin.StackedInline): |
| 121 | model = Inner4Stacked |
| 122 | |
| 123 | class Inner4TabularInline(admin.TabularInline): |
| 124 | model = Inner4Tabular |
| 125 | |
| 126 | class Holder4Admin(admin.ModelAdmin): |
| 127 | inlines = [Inner4StackedInline, Inner4TabularInline] |
| 128 | |
| 129 | admin.site.register(Holder4, Holder4Admin) |
| 130 | |
| 131 | |
106 | 132 | # Models for #12749 |
107 | 133 | |
108 | 134 | class Person(models.Model): |
diff --git a/tests/regressiontests/admin_inlines/tests.py b/tests/regressiontests/admin_inlines/tests.py
index 067b3c5..a3223f1 100644
a
|
b
|
class TestInline(TestCase):
|
103 | 103 | # column cells |
104 | 104 | self.assertContains(response, '<p>Callable in QuestionInline</p>') |
105 | 105 | |
| 106 | def test_help_text(self): |
| 107 | """ |
| 108 | Ensure that the inlines' model field help texts are displayed when |
| 109 | using both the stacked and tabular layouts. |
| 110 | Ref #8190. |
| 111 | """ |
| 112 | response = self.client.get('/test_admin/admin/admin_inlines/holder4/add/') |
| 113 | self.assertContains(response, '<p class="help">Awesome stacked help text is awesome.</p>', 4) |
| 114 | self.assertContains(response, '<img class="help-text-tooltip" src="/static/admin/img/icon_help.gif" alt="(Awesome tabular help text is awesome.)" title="Awesome tabular help text is awesome." />', 1) |
| 115 | |
106 | 116 | class TestInlineMedia(TestCase): |
107 | 117 | fixtures = ['admin-views-users.xml'] |
108 | 118 | |