web/test/unittest_reledit.py
branchstable
changeset 6283 c827fa795a6b
parent 6246 62e25fac41cd
child 6340 470d8e828fda
equal deleted inserted replaced
6282:556b1b1a2c5a 6283:c827fa795a6b
    31         self.toto = self.req.create_entity('Personne', nom=u'Toto')
    31         self.toto = self.req.create_entity('Personne', nom=u'Toto')
    32 
    32 
    33 class ClickAndEditFormTC(ReleditMixinTC, CubicWebTC):
    33 class ClickAndEditFormTC(ReleditMixinTC, CubicWebTC):
    34 
    34 
    35     def test_default_config(self):
    35     def test_default_config(self):
    36         reledit = {'title': """<div id="title-subject-917-reledit" onmouseout="jQuery('#title-subject-917').addClass('hidden')" onmouseover="jQuery('#title-subject-917').removeClass('hidden')" class="releditField"><div id="title-subject-917-value" class="editableFieldValue">cubicweb-world-domination</div><div id="title-subject-917" class="editableField hidden"><div id="title-subject-917-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, 917, &#39;title&#39;, &#39;subject&#39;, &#39;title-subject-917&#39;, false, &#39;&#39;, &#39;&amp;lt;title not specified&amp;gt;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
    36         reledit = {'title': """<div id="title-subject-%(eid)s-reledit" onmouseout="jQuery('#title-subject-%(eid)s').addClass('hidden')" onmouseover="jQuery('#title-subject-%(eid)s').removeClass('hidden')" class="releditField"><div id="title-subject-%(eid)s-value" class="editableFieldValue">cubicweb-world-domination</div><div id="title-subject-%(eid)s" class="editableField hidden"><div id="title-subject-%(eid)s-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, %(eid)s, &#39;title&#39;, &#39;subject&#39;, &#39;title-subject-%(eid)s&#39;, false, &#39;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
    37                    'long_desc': """<div id="long_desc-subject-917-reledit" onmouseout="jQuery('#long_desc-subject-917').addClass('hidden')" onmouseover="jQuery('#long_desc-subject-917').removeClass('hidden')" class="releditField"><div id="long_desc-subject-917-value" class="editableFieldValue">&lt;long_desc not specified&gt;</div><div id="long_desc-subject-917" class="editableField hidden"><div id="long_desc-subject-917-add" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;edition&#39;, 917, &#39;long_desc&#39;, &#39;subject&#39;, &#39;long_desc-subject-917&#39;, false, &#39;incontext&#39;, &#39;&amp;lt;long_desc not specified&amp;gt;&#39;);" title="click to add a value"><img title="click to add a value" src="data/plus.png" alt="click to add a value"/></div></div></div>""",
    37                    'long_desc': """<div id="long_desc-subject-%(eid)s-reledit" onmouseout="jQuery('#long_desc-subject-%(eid)s').addClass('hidden')" onmouseover="jQuery('#long_desc-subject-%(eid)s').removeClass('hidden')" class="releditField"><div id="long_desc-subject-%(eid)s-value" class="editableFieldValue">&lt;not specified&gt;</div><div id="long_desc-subject-%(eid)s" class="editableField hidden"><div id="long_desc-subject-%(eid)s-add" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;edition&#39;, %(eid)s, &#39;long_desc&#39;, &#39;subject&#39;, &#39;long_desc-subject-%(eid)s&#39;, false, &#39;autolimited&#39;);" title="click to add a value"><img title="click to add a value" src="data/plus.png" alt="click to add a value"/></div></div></div>""",
    38                    'manager': """<div id="manager-subject-917-reledit" onmouseout="jQuery('#manager-subject-917').addClass('hidden')" onmouseover="jQuery('#manager-subject-917').removeClass('hidden')" class="releditField"><div id="manager-subject-917-value" class="editableFieldValue">&lt;manager not specified&gt;</div><div id="manager-subject-917" class="editableField hidden"><div id="manager-subject-917-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, 917, &#39;manager&#39;, &#39;subject&#39;, &#39;manager-subject-917&#39;, false, &#39;incontext&#39;, &#39;&amp;lt;manager not specified&amp;gt;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
    38                    'manager': """<div id="manager-subject-%(eid)s-reledit" onmouseout="jQuery('#manager-subject-%(eid)s').addClass('hidden')" onmouseover="jQuery('#manager-subject-%(eid)s').removeClass('hidden')" class="releditField"><div id="manager-subject-%(eid)s-value" class="editableFieldValue">&lt;not specified&gt;</div><div id="manager-subject-%(eid)s" class="editableField hidden"><div id="manager-subject-%(eid)s-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, %(eid)s, &#39;manager&#39;, &#39;subject&#39;, &#39;manager-subject-%(eid)s&#39;, false, &#39;autolimited&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
    39                    'composite_card11_2ttypes': """&lt;composite_card11_2ttypes not specified&gt;""",
    39                    'composite_card11_2ttypes': """&lt;not specified&gt;""",
    40                    'concerns': """&lt;concerns_object not specified&gt;"""}
    40                    'concerns': """&lt;not specified&gt;"""}
    41 
    41 
    42         for rschema, ttypes, role in self.proj.e_schema.relation_definitions(includefinal=True):
    42         for rschema, ttypes, role in self.proj.e_schema.relation_definitions(includefinal=True):
    43             if rschema not in reledit:
    43             if rschema not in reledit:
    44                 continue
    44                 continue
    45             rtype = rschema.type
    45             rtype = rschema.type
    46             self.assertTextEquals(reledit[rtype], self.proj.view('reledit', rtype=rtype, role=role), rtype)
    46             self.assertTextEquals(reledit[rtype] % {'eid': self.proj.eid}, self.proj.view('reledit', rtype=rtype, role=role), rtype)
    47 
    47 
    48     def test_default_forms(self):
    48     def test_default_forms(self):
    49         doreledit = {'title': """<div id="title-subject-917-reledit" onmouseout="jQuery('#title-subject-917').addClass('hidden')" onmouseover="jQuery('#title-subject-917').removeClass('hidden')" class="releditField"><div id="title-subject-917-value" class="editableFieldValue">cubicweb-world-domination</div><form action="http://testing.fr/cubicweb/validateform?__onsuccess=window.parent.cw.reledit.onSuccess" method="post" enctype="application/x-www-form-urlencoded" id="title-subject-917-form" onsubmit="return freezeFormButtons(&#39;title-subject-917-form&#39;);" class="releditForm" cubicweb:target="eformframe">
    49         doreledit = {'title': """<div id="title-subject-%(eid)s-reledit" onmouseout="jQuery('#title-subject-%(eid)s').addClass('hidden')" onmouseover="jQuery('#title-subject-%(eid)s').removeClass('hidden')" class="releditField"><div id="title-subject-%(eid)s-value" class="editableFieldValue">cubicweb-world-domination</div><form action="http://testing.fr/cubicweb/validateform?__onsuccess=window.parent.cw.reledit.onSuccess" method="post" enctype="application/x-www-form-urlencoded" id="title-subject-%(eid)s-form" onsubmit="return freezeFormButtons(&#39;title-subject-%(eid)s-form&#39;);" class="releditForm" cubicweb:target="eformframe">
    50 <fieldset>
    50 <fieldset>
    51 <input name="__form_id" type="hidden" value="base" />
    51 <input name="__form_id" type="hidden" value="base" />
    52 <input name="__errorurl" type="hidden" value="http://testing.fr/cubicweb/view?rql=Blop&amp;vid=blop#title-subject-917-form" />
    52 <input name="__errorurl" type="hidden" value="http://testing.fr/cubicweb/view?rql=Blop&amp;vid=blop#title-subject-%(eid)s-form" />
    53 <input name="__domid" type="hidden" value="title-subject-917-form" />
    53 <input name="__domid" type="hidden" value="title-subject-%(eid)s-form" />
    54 <input name="__type:917" type="hidden" value="Project" />
    54 <input name="__type:%(eid)s" type="hidden" value="Project" />
    55 <input name="eid" type="hidden" value="917" />
    55 <input name="eid" type="hidden" value="%(eid)s" />
    56 <input name="__maineid" type="hidden" value="917" />
    56 <input name="__maineid" type="hidden" value="%(eid)s" />
    57 <input name="__reledit|default_value" type="hidden" value="&amp;lt;title not specified&amp;gt;" />
       
    58 <input name="__reledit|vid" type="hidden" value="" />
    57 <input name="__reledit|vid" type="hidden" value="" />
    59 <input name="__reledit|rtype" type="hidden" value="title" />
    58 <input name="__reledit|rtype" type="hidden" value="title" />
    60 <input name="__reledit|divid" type="hidden" value="title-subject-917" />
    59 <input name="__reledit|divid" type="hidden" value="title-subject-%(eid)s" />
    61 <input name="__reledit|formid" type="hidden" value="base" />
    60 <input name="__reledit|formid" type="hidden" value="base" />
    62 <input name="__reledit|reload" type="hidden" value="false" />
    61 <input name="__reledit|reload" type="hidden" value="false" />
    63 <input name="__reledit|role" type="hidden" value="subject" />
    62 <input name="__reledit|role" type="hidden" value="subject" />
    64 <input name="__reledit|eid" type="hidden" value="917" />
    63 <input name="__reledit|eid" type="hidden" value="%(eid)s" />
    65 <input name="_cw_edited_fields:917" type="hidden" value="title-subject,__type" />
    64 <input name="_cw_edited_fields:%(eid)s" type="hidden" value="title-subject,__type" />
    66 <fieldset class="default">
    65 <fieldset class="default">
    67 <table class="">
    66 <table class="">
    68 <tr class="title_subject_row">
    67 <tr class="title_subject_row">
    69 <td
    68 <td
    70 >
    69 >
    71 <input id="title-subject:917" maxlength="32" name="title-subject:917" size="32" tabindex="1" type="text" value="cubicweb-world-domination" />
    70 <input id="title-subject:%(eid)s" maxlength="32" name="title-subject:%(eid)s" size="32" tabindex="1" type="text" value="cubicweb-world-domination" />
    72 </td></tr>
    71 </td></tr>
    73 </table></fieldset>
    72 </table></fieldset>
    74 <table class="buttonbar">
    73 <table class="buttonbar">
    75 <tr>
    74 <tr>
    76 
    75 
    77 <td><button class="validateButton" tabindex="2" type="submit" value="button_ok"><img alt="OK_ICON" src="http://crater:8080/data/ok.png" />button_ok</button></td>
    76 <td><button class="validateButton" tabindex="2" type="submit" value="button_ok"><img alt="OK_ICON" src="http://testing.fr/cubicweb/data/ok.png" />button_ok</button></td>
    78 
    77 
    79 <td><button class="validateButton" onclick="cw.reledit.cleanupAfterCancel(&#39;title-subject-917&#39;)" tabindex="3" type="button" value="button_cancel"><img alt="CANCEL_ICON" src="http://crater:8080/data/cancel.png" />button_cancel</button></td>
    78 <td><button class="validateButton" onclick="cw.reledit.cleanupAfterCancel(&#39;title-subject-%(eid)s&#39;)" tabindex="3" type="button" value="button_cancel"><img alt="CANCEL_ICON" src="http://testing.fr/cubicweb/data/cancel.png" />button_cancel</button></td>
    80 
    79 
    81 </tr></table>
    80 </tr></table>
    82 </fieldset>
    81 </fieldset>
    83 </form><div id="title-subject-917" class="editableField hidden"><div id="title-subject-917-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, 917, &#39;title&#39;, &#39;subject&#39;, &#39;title-subject-917&#39;, false, &#39;&#39;, &#39;&amp;lt;title not specified&amp;gt;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
    82 </form><div id="title-subject-%(eid)s" class="editableField hidden"><div id="title-subject-%(eid)s-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, %(eid)s, &#39;title&#39;, &#39;subject&#39;, &#39;title-subject-%(eid)s&#39;, false, &#39;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
    84 
    83 
    85                      'long_desc': """<div id="long_desc-subject-917-reledit" onmouseout="jQuery('#long_desc-subject-917').addClass('hidden')" onmouseover="jQuery('#long_desc-subject-917').removeClass('hidden')" class="releditField"><div id="long_desc-subject-917-value" class="editableFieldValue">&lt;long_desc not specified&gt;</div><form action="http://testing.fr/cubicweb/validateform?__onsuccess=window.parent.cw.reledit.onSuccess" method="post" enctype="application/x-www-form-urlencoded" id="long_desc-subject-917-form" onsubmit="return freezeFormButtons(&#39;long_desc-subject-917-form&#39;);" class="releditForm" cubicweb:target="eformframe">
    84                      'long_desc': """<div id="long_desc-subject-%(eid)s-reledit" onmouseout="jQuery('#long_desc-subject-%(eid)s').addClass('hidden')" onmouseover="jQuery('#long_desc-subject-%(eid)s').removeClass('hidden')" class="releditField"><div id="long_desc-subject-%(eid)s-value" class="editableFieldValue">&lt;not specified&gt;</div><form action="http://testing.fr/cubicweb/validateform?__onsuccess=window.parent.cw.reledit.onSuccess" method="post" enctype="application/x-www-form-urlencoded" id="long_desc-subject-%(eid)s-form" onsubmit="return freezeFormButtons(&#39;long_desc-subject-%(eid)s-form&#39;);" class="releditForm" cubicweb:target="eformframe">
    86 <fieldset>
    85 <fieldset>
    87 <input name="__form_id" type="hidden" value="edition" />
    86 <input name="__form_id" type="hidden" value="edition" />
    88 <input name="__errorurl" type="hidden" value="http://testing.fr/cubicweb/view?rql=Blop&amp;vid=blop#long_desc-subject-917-form" />
    87 <input name="__errorurl" type="hidden" value="http://testing.fr/cubicweb/view?rql=Blop&amp;vid=blop#long_desc-subject-%(eid)s-form" />
    89 <input name="__domid" type="hidden" value="long_desc-subject-917-form" />
    88 <input name="__domid" type="hidden" value="long_desc-subject-%(eid)s-form" />
    90 <input name="__type:A" type="hidden" value="Blog" />
    89 <input name="__type:A" type="hidden" value="Blog" />
    91 <input name="eid" type="hidden" value="A" />
    90 <input name="eid" type="hidden" value="A" />
    92 <input name="__maineid" type="hidden" value="A" />
    91 <input name="__maineid" type="hidden" value="A" />
    93 <input name="__linkto" type="hidden" value="long_desc:917:object" />
    92 <input name="__linkto" type="hidden" value="long_desc:%(eid)s:object" />
    94 <input name="__message" type="hidden" value="entity linked" />
    93 <input name="__message" type="hidden" value="entity linked" />
    95 <input name="__reledit|default_value" type="hidden" value="&amp;lt;long_desc not specified&amp;gt;" />
    94 <input name="__reledit|vid" type="hidden" value="autolimited" />
    96 <input name="__reledit|vid" type="hidden" value="incontext" />
       
    97 <input name="__reledit|rtype" type="hidden" value="long_desc" />
    95 <input name="__reledit|rtype" type="hidden" value="long_desc" />
    98 <input name="__reledit|divid" type="hidden" value="long_desc-subject-917" />
    96 <input name="__reledit|divid" type="hidden" value="long_desc-subject-%(eid)s" />
    99 <input name="__reledit|formid" type="hidden" value="edition" />
    97 <input name="__reledit|formid" type="hidden" value="edition" />
   100 <input name="__reledit|reload" type="hidden" value="false" />
    98 <input name="__reledit|reload" type="hidden" value="false" />
   101 <input name="__reledit|role" type="hidden" value="subject" />
    99 <input name="__reledit|role" type="hidden" value="subject" />
   102 <input name="__reledit|eid" type="hidden" value="917" />
   100 <input name="__reledit|eid" type="hidden" value="%(eid)s" />
   103 <input name="_cw_edited_fields:A" type="hidden" value="title-subject,rss_url-subject,__type,description-subject" />
   101 <input name="_cw_edited_fields:A" type="hidden" value="title-subject,rss_url-subject,__type,description-subject" />
   104 <fieldset class="default">
   102 <fieldset class="default">
   105 <table class="attributeForm">
   103 <table class="attributeForm">
   106 <tr class="title_subject_row">
   104 <tr class="title_subject_row">
   107 <th class="labelCol"><label class="required" for="title-subject:A">title</label></th>
   105 <th class="labelCol"><label class="required" for="title-subject:A">title</label></th>
   123 </td></tr>
   121 </td></tr>
   124 </table></fieldset>
   122 </table></fieldset>
   125 <table class="buttonbar">
   123 <table class="buttonbar">
   126 <tr>
   124 <tr>
   127 
   125 
   128 <td><button class="validateButton" tabindex="7" type="submit" value="button_ok"><img alt="OK_ICON" src="http://crater:8080/data/ok.png" />button_ok</button></td>
   126 <td><button class="validateButton" tabindex="7" type="submit" value="button_ok"><img alt="OK_ICON" src="http://testing.fr/cubicweb/data/ok.png" />button_ok</button></td>
   129 
   127 
   130 <td><button class="validateButton" onclick="cw.reledit.cleanupAfterCancel(&#39;long_desc-subject-917&#39;)" tabindex="8" type="button" value="button_cancel"><img alt="CANCEL_ICON" src="http://crater:8080/data/cancel.png" />button_cancel</button></td>
   128 <td><button class="validateButton" onclick="cw.reledit.cleanupAfterCancel(&#39;long_desc-subject-%(eid)s&#39;)" tabindex="8" type="button" value="button_cancel"><img alt="CANCEL_ICON" src="http://testing.fr/cubicweb/data/cancel.png" />button_cancel</button></td>
   131 
   129 
   132 </tr></table>
   130 </tr></table>
   133 </fieldset>
   131 </fieldset>
   134 </form><div id="long_desc-subject-917" class="editableField hidden"><div id="long_desc-subject-917-add" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;edition&#39;, 917, &#39;long_desc&#39;, &#39;subject&#39;, &#39;long_desc-subject-917&#39;, false, &#39;incontext&#39;, &#39;&amp;lt;long_desc not specified&amp;gt;&#39;);" title="click to add a value"><img title="click to add a value" src="data/plus.png" alt="click to add a value"/></div></div></div>""",
   132 </form><div id="long_desc-subject-%(eid)s" class="editableField hidden"><div id="long_desc-subject-%(eid)s-add" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;edition&#39;, %(eid)s, &#39;long_desc&#39;, &#39;subject&#39;, &#39;long_desc-subject-%(eid)s&#39;, false, &#39;autolimited&#39;);" title="click to add a value"><img title="click to add a value" src="data/plus.png" alt="click to add a value"/></div></div></div>""",
   135 
   133 
   136                      'manager': """<div id="manager-subject-917-reledit" onmouseout="jQuery('#manager-subject-917').addClass('hidden')" onmouseover="jQuery('#manager-subject-917').removeClass('hidden')" class="releditField"><div id="manager-subject-917-value" class="editableFieldValue">&lt;manager not specified&gt;</div><form action="http://testing.fr/cubicweb/validateform?__onsuccess=window.parent.cw.reledit.onSuccess" method="post" enctype="application/x-www-form-urlencoded" id="manager-subject-917-form" onsubmit="return freezeFormButtons(&#39;manager-subject-917-form&#39;);" class="releditForm" cubicweb:target="eformframe">
   134                      'manager': """<div id="manager-subject-%(eid)s-reledit" onmouseout="jQuery('#manager-subject-%(eid)s').addClass('hidden')" onmouseover="jQuery('#manager-subject-%(eid)s').removeClass('hidden')" class="releditField"><div id="manager-subject-%(eid)s-value" class="editableFieldValue">&lt;not specified&gt;</div><form action="http://testing.fr/cubicweb/validateform?__onsuccess=window.parent.cw.reledit.onSuccess" method="post" enctype="application/x-www-form-urlencoded" id="manager-subject-%(eid)s-form" onsubmit="return freezeFormButtons(&#39;manager-subject-%(eid)s-form&#39;);" class="releditForm" cubicweb:target="eformframe">
   137 <fieldset>
   135 <fieldset>
   138 <input name="__form_id" type="hidden" value="base" />
   136 <input name="__form_id" type="hidden" value="base" />
   139 <input name="__errorurl" type="hidden" value="http://testing.fr/cubicweb/view?rql=Blop&amp;vid=blop#manager-subject-917-form" />
   137 <input name="__errorurl" type="hidden" value="http://testing.fr/cubicweb/view?rql=Blop&amp;vid=blop#manager-subject-%(eid)s-form" />
   140 <input name="__domid" type="hidden" value="manager-subject-917-form" />
   138 <input name="__domid" type="hidden" value="manager-subject-%(eid)s-form" />
   141 <input name="__type:917" type="hidden" value="Project" />
   139 <input name="__type:%(eid)s" type="hidden" value="Project" />
   142 <input name="eid" type="hidden" value="917" />
   140 <input name="eid" type="hidden" value="%(eid)s" />
   143 <input name="__maineid" type="hidden" value="917" />
   141 <input name="__maineid" type="hidden" value="%(eid)s" />
   144 <input name="__linkto" type="hidden" value="long_desc:917:object" />
   142 <input name="__linkto" type="hidden" value="long_desc:%(eid)s:object" />
   145 <input name="__message" type="hidden" value="entity linked" />
   143 <input name="__message" type="hidden" value="entity linked" />
   146 <input name="__reledit|default_value" type="hidden" value="&amp;lt;manager not specified&amp;gt;" />
   144 <input name="__reledit|vid" type="hidden" value="autolimited" />
   147 <input name="__reledit|vid" type="hidden" value="incontext" />
       
   148 <input name="__reledit|rtype" type="hidden" value="manager" />
   145 <input name="__reledit|rtype" type="hidden" value="manager" />
   149 <input name="__reledit|divid" type="hidden" value="manager-subject-917" />
   146 <input name="__reledit|divid" type="hidden" value="manager-subject-%(eid)s" />
   150 <input name="__reledit|formid" type="hidden" value="base" />
   147 <input name="__reledit|formid" type="hidden" value="base" />
   151 <input name="__reledit|reload" type="hidden" value="false" />
   148 <input name="__reledit|reload" type="hidden" value="false" />
   152 <input name="__reledit|role" type="hidden" value="subject" />
   149 <input name="__reledit|role" type="hidden" value="subject" />
   153 <input name="__reledit|eid" type="hidden" value="917" />
   150 <input name="__reledit|eid" type="hidden" value="%(eid)s" />
   154 <input name="_cw_edited_fields:917" type="hidden" value="manager-subject,__type" />
   151 <input name="_cw_edited_fields:%(eid)s" type="hidden" value="manager-subject,__type" />
   155 <fieldset class="default">
   152 <fieldset class="default">
   156 <table class="">
   153 <table class="">
   157 <tr class="manager_subject_row">
   154 <tr class="manager_subject_row">
   158 <td
   155 <td
   159 >
   156 >
   160 <select id="manager-subject:917" name="manager-subject:917" size="1" tabindex="9">
   157 <select id="manager-subject:%(eid)s" name="manager-subject:%(eid)s" size="1" tabindex="9">
   161 <option value="__cubicweb_internal_field__"></option>
   158 <option value="__cubicweb_internal_field__"></option>
   162 <option value="919">Toto</option>
   159 <option value="%(toto)s">Toto</option>
   163 </select>
   160 </select>
   164 </td></tr>
   161 </td></tr>
   165 </table></fieldset>
   162 </table></fieldset>
   166 <table class="buttonbar">
   163 <table class="buttonbar">
   167 <tr>
   164 <tr>
   168 
   165 
   169 <td><button class="validateButton" tabindex="10" type="submit" value="button_ok"><img alt="OK_ICON" src="http://crater:8080/data/ok.png" />button_ok</button></td>
   166 <td><button class="validateButton" tabindex="10" type="submit" value="button_ok"><img alt="OK_ICON" src="http://testing.fr/cubicweb/data/ok.png" />button_ok</button></td>
   170 
   167 
   171 <td><button class="validateButton" onclick="cw.reledit.cleanupAfterCancel(&#39;manager-subject-917&#39;)" tabindex="11" type="button" value="button_cancel"><img alt="CANCEL_ICON" src="http://crater:8080/data/cancel.png" />button_cancel</button></td>
   168 <td><button class="validateButton" onclick="cw.reledit.cleanupAfterCancel(&#39;manager-subject-%(eid)s&#39;)" tabindex="11" type="button" value="button_cancel"><img alt="CANCEL_ICON" src="http://testing.fr/cubicweb/data/cancel.png" />button_cancel</button></td>
   172 
   169 
   173 </tr></table>
   170 </tr></table>
   174 </fieldset>
   171 </fieldset>
   175 </form><div id="manager-subject-917" class="editableField hidden"><div id="manager-subject-917-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, 917, &#39;manager&#39;, &#39;subject&#39;, &#39;manager-subject-917&#39;, false, &#39;incontext&#39;, &#39;&amp;lt;manager not specified&amp;gt;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
   172 </form><div id="manager-subject-%(eid)s" class="editableField hidden"><div id="manager-subject-%(eid)s-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, %(eid)s, &#39;manager&#39;, &#39;subject&#39;, &#39;manager-subject-%(eid)s&#39;, false, &#39;autolimited&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
   176                      'composite_card11_2ttypes': """&lt;composite_card11_2ttypes not specified&gt;""",
   173                      'composite_card11_2ttypes': """&lt;not specified&gt;""",
   177                      'concerns': """&lt;concerns_object not specified&gt;"""
   174                      'concerns': """&lt;not specified&gt;"""
   178             }
   175             }
   179         for rschema, ttypes, role in self.proj.e_schema.relation_definitions(includefinal=True):
   176         for rschema, ttypes, role in self.proj.e_schema.relation_definitions(includefinal=True):
   180             if rschema not in doreledit:
   177             if rschema not in doreledit:
   181                 continue
   178                 continue
   182             rtype = rschema.type
   179             rtype = rschema.type
   183             self.assertTextEquals(doreledit[rtype],
   180             self.assertTextEquals(doreledit[rtype] % {'eid': self.proj.eid, 'toto': self.toto.eid},
   184                                   self.proj.view('doreledit', rtype=rtype, role=role,
   181                                   self.proj.view('doreledit', rtype=rtype, role=role,
   185                                                  formid='edition' if rtype == 'long_desc' else 'base'),
   182                                                  formid='edition' if rtype == 'long_desc' else 'base'),
   186                                   rtype)
   183                                   rtype)
   187 
   184 
   188 class ClickAndEditFormUICFGTC(ReleditMixinTC, CubicWebTC):
   185 class ClickAndEditFormUICFGTC(ReleditMixinTC, CubicWebTC):
   193         self.proj.set_relations(manager=self.toto)
   190         self.proj.set_relations(manager=self.toto)
   194 
   191 
   195     def test_with_uicfg(self):
   192     def test_with_uicfg(self):
   196         old_rctl = reledit_ctrl._tagdefs.copy()
   193         old_rctl = reledit_ctrl._tagdefs.copy()
   197         reledit_ctrl.tag_attribute(('Project', 'title'),
   194         reledit_ctrl.tag_attribute(('Project', 'title'),
   198                                    {'default_value': '<title is required>', 'reload': True})
   195                                    {'novalue_label': '<title is required>', 'reload': True})
   199         reledit_ctrl.tag_subject_of(('Project', 'long_desc', '*'),
   196         reledit_ctrl.tag_subject_of(('Project', 'long_desc', '*'),
   200                                     {'reload': True, 'edit_target': 'rtype',
   197                                     {'reload': True, 'edit_target': 'rtype',
   201                                      'default_value': u'<long_desc is required>'})
   198                                      'novalue_label': u'<long_desc is required>'})
   202         reledit_ctrl.tag_subject_of(('Project', 'manager', '*'),
   199         reledit_ctrl.tag_subject_of(('Project', 'manager', '*'),
   203                                    {'edit_target': 'related'})
   200                                    {'edit_target': 'related'})
   204         reledit_ctrl.tag_subject_of(('Project', 'composite_card11_2ttypes', '*'),
   201         reledit_ctrl.tag_subject_of(('Project', 'composite_card11_2ttypes', '*'),
   205                                    {'edit_target': 'related'})
   202                                    {'edit_target': 'related'})
   206         reledit_ctrl.tag_object_of(('Ticket', 'concerns', 'Project'),
   203         reledit_ctrl.tag_object_of(('Ticket', 'concerns', 'Project'),
   207                                    {'edit_target': 'rtype'})
   204                                    {'edit_target': 'rtype'})
   208         reledit = {
   205         reledit = {
   209             'title': """<div id="title-subject-917-reledit" onmouseout="jQuery('#title-subject-917').addClass('hidden')" onmouseover="jQuery('#title-subject-917').removeClass('hidden')" class="releditField"><div id="title-subject-917-value" class="editableFieldValue">cubicweb-world-domination</div><div id="title-subject-917" class="editableField hidden"><div id="title-subject-917-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, 917, &#39;title&#39;, &#39;subject&#39;, &#39;title-subject-917&#39;, true, &#39;&#39;, &#39;&lt;title is required&gt;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
   206             'title': """<div id="title-subject-%(eid)s-reledit" onmouseout="jQuery('#title-subject-%(eid)s').addClass('hidden')" onmouseover="jQuery('#title-subject-%(eid)s').removeClass('hidden')" class="releditField"><div id="title-subject-%(eid)s-value" class="editableFieldValue">cubicweb-world-domination</div><div id="title-subject-%(eid)s" class="editableField hidden"><div id="title-subject-%(eid)s-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, %(eid)s, &#39;title&#39;, &#39;subject&#39;, &#39;title-subject-%(eid)s&#39;, true, &#39;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
   210             'long_desc': """<div id="long_desc-subject-917-reledit" onmouseout="jQuery('#long_desc-subject-917').addClass('hidden')" onmouseover="jQuery('#long_desc-subject-917').removeClass('hidden')" class="releditField"><div id="long_desc-subject-917-value" class="editableFieldValue"><long_desc is required></div><div id="long_desc-subject-917" class="editableField hidden"><div id="long_desc-subject-917-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, 917, &#39;long_desc&#39;, &#39;subject&#39;, &#39;long_desc-subject-917&#39;, true, &#39;incontext&#39;, &#39;&lt;long_desc is required&gt;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
   207             'long_desc': """<div id="long_desc-subject-%(eid)s-reledit" onmouseout="jQuery('#long_desc-subject-%(eid)s').addClass('hidden')" onmouseover="jQuery('#long_desc-subject-%(eid)s').removeClass('hidden')" class="releditField"><div id="long_desc-subject-%(eid)s-value" class="editableFieldValue">&lt;long_desc is required&gt;</div><div id="long_desc-subject-%(eid)s" class="editableField hidden"><div id="long_desc-subject-%(eid)s-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, %(eid)s, &#39;long_desc&#39;, &#39;subject&#39;, &#39;long_desc-subject-%(eid)s&#39;, true, &#39;autolimited&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>""",
   211             'manager': """<div id="manager-subject-917-reledit" onmouseout="jQuery('#manager-subject-917').addClass('hidden')" onmouseover="jQuery('#manager-subject-917').removeClass('hidden')" class="releditField"><div id="manager-subject-917-value" class="editableFieldValue"><a href="http://testing.fr/cubicweb/personne/919" title="">Toto</a></div><div id="manager-subject-917" class="editableField hidden"><div id="manager-subject-917-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;edition&#39;, 917, &#39;manager&#39;, &#39;subject&#39;, &#39;manager-subject-917&#39;, false, &#39;incontext&#39;, &#39;&amp;lt;manager not specified&amp;gt;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div><div id="manager-subject-917-delete" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;deleteconf&#39;, 917, &#39;manager&#39;, &#39;subject&#39;, &#39;manager-subject-917&#39;, false, &#39;incontext&#39;, &#39;&amp;lt;manager not specified&amp;gt;&#39;);" title="click to delete this value"><img title="click to delete this value" src="data/cancel.png" alt="click to delete this value"/></div></div></div>""",
   208             'manager': """<div id="manager-subject-%(eid)s-reledit" onmouseout="jQuery('#manager-subject-%(eid)s').addClass('hidden')" onmouseover="jQuery('#manager-subject-%(eid)s').removeClass('hidden')" class="releditField"><div id="manager-subject-%(eid)s-value" class="editableFieldValue"><a href="http://testing.fr/cubicweb/personne/%(toto)s" title="">Toto</a></div><div id="manager-subject-%(eid)s" class="editableField hidden"><div id="manager-subject-%(eid)s-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;edition&#39;, %(eid)s, &#39;manager&#39;, &#39;subject&#39;, &#39;manager-subject-%(eid)s&#39;, false, &#39;autolimited&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div><div id="manager-subject-%(eid)s-delete" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;deleteconf&#39;, %(eid)s, &#39;manager&#39;, &#39;subject&#39;, &#39;manager-subject-%(eid)s&#39;, false, &#39;autolimited&#39;);" title="click to delete this value"><img title="click to delete this value" src="data/cancel.png" alt="click to delete this value"/></div></div></div>""",
   212             'composite_card11_2ttypes': """&lt;composite_card11_2ttypes not specified&gt;""",
   209             'composite_card11_2ttypes': """&lt;not specified&gt;""",
   213             'concerns': """<div id="concerns-object-917-reledit" onmouseout="jQuery('#concerns-object-917').addClass('hidden')" onmouseover="jQuery('#concerns-object-917').removeClass('hidden')" class="releditField"><div id="concerns-object-917-value" class="editableFieldValue"><a href="http://testing.fr/cubicweb/ticket/918" title="">write the code</a></div><div id="concerns-object-917" class="editableField hidden"><div id="concerns-object-917-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, 917, &#39;concerns&#39;, &#39;object&#39;, &#39;concerns-object-917&#39;, false, &#39;csv&#39;, &#39;&amp;lt;concerns_object not specified&amp;gt;&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>"""
   210             'concerns': """<div id="concerns-object-%(eid)s-reledit" onmouseout="jQuery('#concerns-object-%(eid)s').addClass('hidden')" onmouseover="jQuery('#concerns-object-%(eid)s').removeClass('hidden')" class="releditField"><div id="concerns-object-%(eid)s-value" class="editableFieldValue"><a href="http://testing.fr/cubicweb/ticket/%(tick)s" title="">write the code</a></div><div id="concerns-object-%(eid)s" class="editableField hidden"><div id="concerns-object-%(eid)s-update" class="editableField" onclick="cw.reledit.loadInlineEditionForm(&#39;base&#39;, %(eid)s, &#39;concerns&#39;, &#39;object&#39;, &#39;concerns-object-%(eid)s&#39;, false, &#39;autolimited&#39;);" title="click to edit this field"><img title="click to edit this field" src="data/pen_icon.png" alt="click to edit this field"/></div></div></div>"""
   214             }
   211             }
   215         for rschema, ttypes, role in self.proj.e_schema.relation_definitions(includefinal=True):
   212         for rschema, ttypes, role in self.proj.e_schema.relation_definitions(includefinal=True):
   216             if rschema not in reledit:
   213             if rschema not in reledit:
   217                 continue
   214                 continue
   218             rtype = rschema.type
   215             rtype = rschema.type
   219             self.assertTextEquals(reledit[rtype],
   216             self.assertTextEquals(reledit[rtype] % {'eid': self.proj.eid, 'toto': self.toto.eid, 'tick': self.tick.eid},
   220                                   self.proj.view('reledit', rtype=rtype, role=role),
   217                                   self.proj.view('reledit', rtype=rtype, role=role),
   221                                   rtype)
   218                                   rtype)
   222         reledit_ctrl.clear()
   219         reledit_ctrl.clear()
   223         reledit_ctrl._tagdefs.update(old_rctl)
   220         reledit_ctrl._tagdefs.update(old_rctl)