Edgewall Software

Ticket #7445: 7445-xhtml-validation-2-r7384.patch

File 7445-xhtml-validation-2-r7384.patch, 22.9 KB (added by Remy Blank <remy.blank@…>, 4 months ago)

Same patch, but with ticket form id set to propertyform instead of propform

  • trac/admin/templates/admin_basics.html

    diff --git a/trac/admin/templates/admin_basics.html b/trac/admin/templates/admin_basics.html
    a b  
    1212  <body> 
    1313    <h2>Basic Settings</h2> 
    1414 
    15     <form class="mod" id="modbasic" method="post"> 
     15    <form class="mod" id="modbasic" method="post" action=""> 
    1616      <fieldset> 
    1717        <legend>Project</legend> 
    1818        <div class="field"> 
  • trac/admin/templates/admin_components.html

    diff --git a/trac/admin/templates/admin_components.html b/trac/admin/templates/admin_components.html
    a b  
    2929    </py:def> 
    3030 
    3131    <py:choose test="view"> 
    32       <form py:when="'detail'" class="mod" id="modcomp" method="post"> 
     32      <form py:when="'detail'" class="mod" id="modcomp" method="post" action=""> 
    3333        <fieldset> 
    3434          <legend>Modify Component:</legend> 
    3535          <div class="field"> 
     
    5858      </form> 
    5959 
    6060      <py:otherwise> 
    61         <form class="addnew" id="addcomponent" method="post"> 
     61        <form class="addnew" id="addcomponent" method="post" action=""> 
    6262          <fieldset> 
    6363            <legend>Add Component:</legend> 
    6464            <div class="field"> 
     
    7272        </form> 
    7373 
    7474        <py:choose> 
    75           <form py:when="components" id="component_table" method="POST"> 
     75          <form py:when="components" id="component_table" method="post" action=""> 
    7676            <table class="listing" id="complist"> 
    7777              <thead> 
    7878                <tr><th class="sel">&nbsp;</th> 
  • trac/admin/templates/admin_enums.html

    diff --git a/trac/admin/templates/admin_enums.html b/trac/admin/templates/admin_enums.html
    a b  
    1313    <h2>Manage $label_plural</h2> 
    1414 
    1515    <py:choose test="view"> 
    16       <form py:when="'detail'" class="mod" id="modenum" method="post"> 
     16      <form py:when="'detail'" class="mod" id="modenum" method="post" action=""> 
    1717        <fieldset> 
    1818          <legend>Modify $label_singular</legend> 
    1919          <div class="field"> 
     
    2727      </form> 
    2828 
    2929      <py:otherwise> 
    30         <form class="addnew" id="addenum" method="post"> 
     30        <form class="addnew" id="addenum" method="post" action=""> 
    3131          <fieldset> 
    3232            <legend>Add $label_singular</legend> 
    3333            <div class="field"> 
     
    4040        </form> 
    4141 
    4242        <py:choose> 
    43           <form py:when="enums" id="enumtable" method="POST"> 
     43          <form py:when="enums" id="enumtable" method="post" action=""> 
    4444            <table class="listing" id="enumlist"> 
    4545              <thead> 
    4646                <tr><th class="sel">&nbsp;</th> 
  • trac/admin/templates/admin_logging.html

    diff --git a/trac/admin/templates/admin_logging.html b/trac/admin/templates/admin_logging.html
    a b  
    2020  <body> 
    2121    <h2>Logging</h2> 
    2222 
    23     <form class="mod" id="modlog" method="post"> 
     23    <form class="mod" id="modlog" method="post" action=""> 
    2424      <fieldset> 
    2525        <legend>Configuration</legend> 
    2626        <div class="field"> 
  • trac/admin/templates/admin_milestones.html

    diff --git a/trac/admin/templates/admin_milestones.html b/trac/admin/templates/admin_milestones.html
    a b  
    1313    <h2>Manage Milestones</h2> 
    1414 
    1515    <py:choose test="view"> 
    16       <form py:when="'detail'" class="mod" method="post" id="modifymilestone"> 
     16      <form py:when="'detail'" class="mod" method="post" id="modifymilestone" action=""> 
    1717        <fieldset> 
    1818          <legend>Modify Milestone:</legend> 
    1919          <div class="field"> 
     
    6969 
    7070      <py:otherwise> 
    7171 
    72         <form class="addnew" id="addmilestone" method="post"> 
     72        <form class="addnew" id="addmilestone" method="post" action=""> 
    7373          <fieldset> 
    7474            <legend>Add Milestone:</legend> 
    7575            <div class="field"> 
     
    9292        </form> 
    9393 
    9494        <py:choose> 
    95           <form py:when="milestones" id="milestone_table" method="POST"> 
     95          <form py:when="milestones" id="milestone_table" method="post" action=""> 
    9696            <table class="listing" id="millist"> 
    9797              <thead> 
    9898                <tr><th class="sel">&nbsp;</th> 
  • trac/admin/templates/admin_plugins.html

    diff --git a/trac/admin/templates/admin_plugins.html b/trac/admin/templates/admin_plugins.html
    a b  
    1616  <body> 
    1717    <h2>Manage Plugins</h2> 
    1818 
    19     <form id="addplug" class="addnew" method="post" enctype="multipart/form-data"> 
     19    <form id="addplug" class="addnew" method="post" enctype="multipart/form-data" action=""> 
    2020      <fieldset> 
    2121        <legend>Install Plugin:</legend> 
    2222        <div class="field"> 
     
    4040      </fieldset> 
    4141    </form> 
    4242 
    43     <form py:for="idx, plugin in enumerate(plugins)" method="post"> 
     43    <form py:for="idx, plugin in enumerate(plugins)" method="post" action=""> 
    4444      <div class="plugin"> 
    4545        <h3>${plugin.name} ${plugin.version}</h3> 
    4646        <div class="uninstall buttons"> 
  • trac/admin/templates/admin_versions.html

    diff --git a/trac/admin/templates/admin_versions.html b/trac/admin/templates/admin_versions.html
    a b  
    1313    <h2>Manage Versions</h2> 
    1414 
    1515    <py:choose test="view"> 
    16       <form py:when="'detail'" class="mod" id="modifyversion" method="post"> 
     16      <form py:when="'detail'" class="mod" id="modifyversion" method="post" action=""> 
    1717        <fieldset> 
    1818          <legend>Modify Version:</legend> 
    1919          <div class="field"> 
     
    4848      </form> 
    4949 
    5050      <py:otherwise> 
    51         <form class="addnew" id="addversion" method="post"> 
     51        <form class="addnew" id="addversion" method="post" action=""> 
    5252          <fieldset> 
    5353            <legend>Add Version:</legend> 
    5454            <div class="field"> 
     
    6969        </form> 
    7070 
    7171        <py:choose> 
    72           <form py:when="versions" id="version_table" method="POST"> 
     72          <form py:when="versions" id="version_table" method="post" action=""> 
    7373            <table class="listing" id="verlist"> 
    7474              <thead> 
    7575                <tr><th class="sel">&nbsp;</th> 
  • trac/templates/about.html

    diff --git a/trac/templates/about.html b/trac/templates/about.html
    a b  
    99    <title>About Trac</title> 
    1010    <link rel="stylesheet" type="text/css" href="${chrome.htdocs_location}css/about.css" /> 
    1111    <script type="text/javascript"> 
     12      //<![CDATA[ 
    1213      jQuery(document).ready(function ($) { 
    1314        $("#systeminfo table").append("<tr><th>jQuery:</th><td>"+$().jquery+"</td></tr>"); 
    1415      }); 
     16      //]]> 
    1517    </script> 
    1618  </head> 
    1719 
  • trac/templates/history_view.html

    diff --git a/trac/templates/history_view.html b/trac/templates/history_view.html
    a b  
    1515      <h1>Change History for <a href="${url_of(resource)}">${name_of(resource)}</a></h1> 
    1616 
    1717      <form py:if="history" class="printableform" method="get" action=""> 
    18         <input type="hidden" name="action" value="diff" /> 
    1918        <div class="buttons"> 
     19          <input type="hidden" name="action" value="diff" /> 
    2020          <input type="submit" value="View changes" /> 
    2121        </div> 
    2222        <table id="fieldhist" class="listing" summary="Change history"> 
  • trac/templates/theme.html

    diff --git a/trac/templates/theme.html b/trac/templates/theme.html
    a b  
    3535    <div id="main"> 
    3636      <div id="ctxtnav" class="nav"> 
    3737        <h2>Context Navigation</h2> 
    38           <ul> 
     38          <ul py:if="chrome.ctxtnav"> 
    3939            <li py:for="i, elm in enumerate(chrome.ctxtnav)" class="${i == 0 and 'first ' or None}${i+1 == len(chrome.ctxtnav) and 'last' or None}">$elm</li> 
    4040          </ul> 
    4141        <hr /> 
  • trac/tests/functional/tester.py

    diff --git a/trac/tests/functional/tester.py b/trac/tests/functional/tester.py
    a b  
    7272        tc.notfind(internal_error) 
    7373        if summary == None: 
    7474            summary = random_sentence(4) 
    75         tc.formvalue('propform', 'field_summary', summary) 
    76         tc.formvalue('propform', 'field_description', random_page()) 
     75        tc.formvalue('propertyform', 'field_summary', summary) 
     76        tc.formvalue('propertyform', 'field_description', random_page()) 
    7777        if info: 
    7878            for field, value in info.items(): 
    79                 tc.formvalue('propform', 'field_%s' % field, value) 
     79                tc.formvalue('propertyform', 'field_%s' % field, value) 
    8080        tc.submit('submit') 
    8181        # we should be looking at the newly created ticket 
    8282        tc.url(self.url + '/ticket/%s' % (self.ticketcount + 1)) 
     
    148148        self.go_to_ticket(ticketid) 
    149149        if comment is None: 
    150150            comment = random_sentence() 
    151         tc.formvalue('propform', 'comment', comment) 
     151        tc.formvalue('propertyform', 'comment', comment) 
    152152        tc.submit("submit") 
    153153        # Verify we're where we're supposed to be. 
    154154        tc.url(self.url + '/ticket/%s#comment:.*' % ticketid) 
     
    351351    def ticket_set_milestone(self, ticketid, milestone): 
    352352        """Set the milestone on a given ticket""" 
    353353        self.go_to_ticket(ticketid) 
    354         tc.formvalue('propform', 'milestone', milestone) 
     354        tc.formvalue('propertyform', 'milestone', milestone) 
    355355        tc.submit('submit') 
    356356        # TODO: verify the change occurred. 
    357357 
  • trac/ticket/templates/milestone_delete.html

    diff --git a/trac/ticket/templates/milestone_delete.html b/trac/ticket/templates/milestone_delete.html
    a b  
    2121      <h1>Delete Milestone ${milestone.name}</h1> 
    2222 
    2323    <form id="edit" action="" method="post"> 
    24       <input type="hidden" name="action" value="delete" /> 
    25       <p><strong>Are you sure you want to delete this milestone?</strong></p> 
    26       <input type="checkbox" id="retarget" name="retarget" checked="checked" /> 
    27       <label for="target">Retarget associated tickets to milestone</label> 
    28       <select name="target" id="target"> 
    29         <option value="">None</option> 
    30         <option py:for="m in milestones" 
    31                 py:if="m.name != milestone.name">${m.name}</option> 
    32       </select> 
     24      <div> 
     25        <input type="hidden" name="action" value="delete" /> 
     26        <p><strong>Are you sure you want to delete this milestone?</strong></p> 
     27        <input type="checkbox" id="retarget" name="retarget" checked="checked" /> 
     28        <label for="target">Retarget associated tickets to milestone</label> 
     29        <select name="target" id="target"> 
     30          <option value="">None</option> 
     31          <option py:for="m in milestones" 
     32                  py:if="m.name != milestone.name">${m.name}</option> 
     33        </select> 
     34      </div> 
    3335      <div class="buttons"> 
    3436       <input type="submit" name="cancel" value="Cancel" /> 
    3537       <input type="submit" value="Delete milestone" /> 
  • trac/ticket/templates/milestone_edit.html

    diff --git a/trac/ticket/templates/milestone_edit.html b/trac/ticket/templates/milestone_edit.html
    a b  
    3838      </py:choose> 
    3939 
    4040      <form id="edit" action="" method="post"> 
    41         <input type="hidden" name="id" value="${milestone.name}" /> 
    42         <input type="hidden" name="action" value="edit" /> 
    4341        <div class="field"> 
     42          <input type="hidden" name="id" value="${milestone.name}" /> 
     43          <input type="hidden" name="action" value="edit" /> 
    4444          <label>Name of the milestone:<br /> 
    4545            <input type="text" id="name" name="name" size="32" value="${milestone.name or req.args.get('name')}" /> 
    4646          </label> 
  • trac/ticket/templates/milestone_view.html

    diff --git a/trac/ticket/templates/milestone_view.html b/trac/ticket/templates/milestone_view.html
    a b  
    5050                      value="${group.name}" py:content="group.label" 
    5151                      selected="${grouped_by == group.name or None}" /> 
    5252            </select> 
    53             <noscript><input type="submit" value="Update" /></noscript> 
     53            <input type="submit" value="Update" class="noscript" /> 
     54            <script type="text/javascript"> 
     55              jQuery(document).ready(function ($) { $(".noscript").attr("style", "display: none"); }); 
     56            </script> 
    5457          </legend> 
    55           <table summary="Shows the milestone completion status grouped by ${grouped_by}"> 
     58          <table py:if="groups" summary="Shows the milestone completion status grouped by ${grouped_by}"> 
    5659            <tr py:for="group in groups"> 
    5760              <th scope="row" py:choose=""> 
    5861                <i py:when="not group.name"><a href="${group.stats_href}">(none)</a></i> 
     
    8386                  attachments.can_create" 
    8487           class="buttons"> 
    8588        <form py:if="'MILESTONE_MODIFY' in perm(milestone.resource)" method="get" action="" id="editmilestone"> 
    86           <input type="hidden" name="action" value="edit" /> 
    87           <input type="submit" value="Edit milestone" /> 
     89          <div> 
     90            <input type="hidden" name="action" value="edit" /> 
     91            <input type="submit" value="Edit milestone" /> 
     92          </div> 
    8893        </form> 
    8994        <form py:if="'MILESTONE_DELETE' in perm(milestone.resource)" method="get" action="" id="deletemilestone"> 
    90           <input type="hidden" name="action" value="delete" /> 
    91           <input type="submit" value="Delete milestone" /> 
     95          <div> 
     96            <input type="hidden" name="action" value="delete" /> 
     97            <input type="submit" value="Delete milestone" /> 
     98          </div> 
    9299        </form> 
    93100        ${attach_file_form(attachments)} 
    94101      </div> 
  • trac/ticket/templates/report_delete.html

    diff --git a/trac/ticket/templates/report_delete.html b/trac/ticket/templates/report_delete.html
    a b  
    1313    <div id="content" class="report"> 
    1414      <h1>$report.title</h1> 
    1515      <form action="${href.report()}" method="post"> 
    16         <input type="hidden" name="id" value="$report.id"/> 
    17         <input type="hidden" name="action" value="delete" /> 
    1816        <p><strong>Are you sure you want to delete this report?</strong></p> 
    1917        <div class="buttons"> 
     18          <input type="hidden" name="id" value="$report.id"/> 
     19          <input type="hidden" name="action" value="delete" /> 
    2020          <input type="submit" name="cancel" value="Cancel"/> 
    2121          <input type="submit" value="Delete report"/> 
    2222        </div> 
  • trac/ticket/templates/ticket.html

    diff --git a/trac/ticket/templates/ticket.html b/trac/ticket/templates/ticket.html
    a b  
    177177              <!--! Quote the description (only for existing tickets) --> 
    178178              <form py:if="ticket.exists and ticket.description and 
    179179                           'TICKET_APPEND' in perm(ticket.resource)" 
    180                 name="addreply" 
     180                id="addreply" 
    181181                method="get" action="#comment"> 
    182182                <div class="inlinebuttons"> 
    183183                  <input type="hidden" name="replyto" value="description" /> 
     
    237237                   ('TICKET_APPEND' in perm(ticket.resource) or 
    238238                    'TICKET_CHGPROP' in perm(ticket.resource) or 
    239239                    ('TICKET_CREATE' in perm(ticket.resource) and not ticket.id))" 
    240             action="${ticket.exists and href.ticket(ticket.id) or href.newticket()}" method="post" name="propform" id="propertyform"> 
     240            action="${ticket.exists and href.ticket(ticket.id) or href.newticket()}" method="post" id="propertyform"> 
    241241        <h3 py:if="ticket.exists"><a id="edit" onfocus="$('#comment').get(0).focus()"> 
    242242            Add/Change #${ticket.id} ($ticket.summary)</a></h3> 
    243243        <div py:if="authname == 'anonymous'" class="field"> 
  • trac/ticket/tests/functional.py

    diff --git a/trac/ticket/tests/functional.py b/trac/ticket/tests/functional.py
    a b  
    915915            self._tester.login('admin') 
    916916            ticket_id = self._tester.create_ticket() 
    917917            self._tester.go_to_ticket(ticket_id) 
    918             tc.formvalue('propform', 'action', 'reassign') 
     918            tc.formvalue('propertyform', 'action', 'reassign') 
    919919            tc.find('reassign_reassign_owner') 
    920             tc.formvalue('propform', 'action_reassign_reassign_owner', 'user') 
     920            tc.formvalue('propertyform', 'action_reassign_reassign_owner', 'user') 
    921921            tc.submit('submit') 
    922922        finally: 
    923923            # Undo the config change for now since this (failing) 
     
    10301030        Open ticket, component changed, owner not changed""" 
    10311031        ticketid = self._tester.create_ticket("regression test 5497a") 
    10321032        self._tester.go_to_ticket(ticketid) 
    1033         tc.formvalue('propform', 'field-component', 'regression5497') 
     1033        tc.formvalue('propertyform', 'field-component', 'regression5497') 
    10341034        tc.submit('submit') 
    10351035        tc.find(regex_owned_by('user')) 
    10361036 
     
    10401040        Open ticket, component changed, owner changed""" 
    10411041        ticketid = self._tester.create_ticket("regression test 5497b") 
    10421042        self._tester.go_to_ticket(ticketid) 
    1043         tc.formvalue('propform', 'field-component', 'regression5497') 
    1044         tc.formvalue('propform', 'action', 'reassign') 
    1045         tc.formvalue('propform', 'action_reassign_reassign_owner', 'admin') 
     1043        tc.formvalue('propertyform', 'field-component', 'regression5497') 
     1044        tc.formvalue('propertyform', 'action', 'reassign') 
     1045        tc.formvalue('propertyform', 'action_reassign_reassign_owner', 'admin') 
    10461046        tc.submit('submit') 
    10471047        tc.notfind(regex_owned_by('user')) 
    10481048        tc.find(regex_owned_by('admin')) 
     
    10781078        # leave ids[0] as new 
    10791079        # make ids[1] be assigned 
    10801080        self._tester.go_to_ticket(ids[1]) 
    1081         tc.formvalue('propform', 'action', 'reassign') 
    1082         tc.formvalue('propform', 'action_reassign_reassign_owner', 'admin') 
     1081        tc.formvalue('propertyform', 'action', 'reassign') 
     1082        tc.formvalue('propertyform', 'action_reassign_reassign_owner', 'admin') 
    10831083        tc.submit('submit') 
    10841084        # make ids[2] be accepted 
    10851085        self._tester.go_to_ticket(ids[2]) 
    1086         tc.formvalue('propform', 'action', 'accept') 
     1086        tc.formvalue('propertyform', 'action', 'accept') 
    10871087        tc.submit('submit') 
    10881088        # make ids[3] be closed 
    10891089        self._tester.go_to_ticket(ids[3]) 
    1090         tc.formvalue('propform', 'action', 'resolve') 
    1091         tc.formvalue('propform', 'action_resolve_resolve_resolution', 'fixed') 
     1090        tc.formvalue('propertyform', 'action', 'resolve') 
     1091        tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed') 
    10921092        tc.submit('submit') 
    10931093        # make ids[4] be reopened 
    10941094        self._tester.go_to_ticket(ids[4]) 
    1095         tc.formvalue('propform', 'action', 'resolve') 
    1096         tc.formvalue('propform', 'action_resolve_resolve_resolution', 'fixed') 
     1095        tc.formvalue('propertyform', 'action', 'resolve') 
     1096        tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed') 
    10971097        tc.submit('submit') 
    10981098        # FIXME: we have to wait a second to avoid "IntegrityError: columns 
    10991099        # ticket, time, field are not unique" 
    11001100        time.sleep(1) 
    1101         tc.formvalue('propform', 'action', 'reopen') 
     1101        tc.formvalue('propertyform', 'action', 'reopen') 
    11021102        tc.submit('submit') 
    11031103        tc.show() 
    11041104        tc.notfind("Python Traceback") 
     
    11681168        self._tester.create_ticket(summary='RegressionTestTicket6048b') 
    11691169        self._tester.go_to_ticket(ticket_id) 
    11701170        tc.find('delete ticket') 
    1171         tc.formvalue('propform', 'action', 'delete') 
     1171        tc.formvalue('propertyform', 'action', 'delete') 
    11721172        tc.submit('submit') 
    11731173 
    11741174        self._tester.go_to_ticket(ticket_id) 
     
    12241224        # create a ticket, then preview resolving the ticket twice 
    12251225        ticket_id = self._tester.create_ticket("RegressionTestTicket6879 a") 
    12261226        self._tester.go_to_ticket(ticket_id) 
    1227         tc.formvalue('propform', 'action', 'resolve') 
    1228         tc.formvalue('propform', 'action_resolve_resolve_resolution', 'fixed') 
     1227        tc.formvalue('propertyform', 'action', 'resolve') 
     1228        tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed') 
    12291229        tc.submit('preview') 
    1230         tc.formvalue('propform', 'action', 'resolve') 
     1230        tc.formvalue('propertyform', 'action', 'resolve') 
    12311231        tc.submit('preview') 
    12321232 
    12331233 
     
    12411241        # create a ticket, then preview resolving the ticket twice 
    12421242        ticket_id = self._tester.create_ticket("RegressionTestTicket6879 b") 
    12431243        self._tester.go_to_ticket(ticket_id) 
    1244         tc.formvalue('propform', 'action', 'resolve') 
    1245         tc.formvalue('propform', 'action_resolve_resolve_resolution', 'fixed') 
     1244        tc.formvalue('propertyform', 'action', 'resolve') 
     1245        tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed') 
    12461246        tc.submit('preview') 
    1247         tc.formvalue('propform', 'action', 'resolve') 
     1247        tc.formvalue('propertyform', 'action', 'resolve') 
    12481248        tc.submit('submit') 
    12491249 
    12501250 
  • trac/wiki/templates/wiki_delete.html

    diff --git a/trac/wiki/templates/wiki_delete.html b/trac/wiki/templates/wiki_delete.html
    a b  
    2121      "> 
    2222      <h1>Delete $range <a href="$current_href">$page.name</a></h1> 
    2323      <form action="$current_href" method="post"> 
    24         <input type="hidden" name="action" value="delete" /> 
    2524        <p> 
     25          <input type="hidden" name="action" value="delete" /> 
    2626          <strong>Are you sure you want to ${not range and 'completely' or ''} delete $range this page?</strong> 
    2727          <br /> 
    2828          <py:if test="num_versions == 1"> 
  • trac/wiki/templates/wiki_diff.html

    diff --git a/trac/wiki/templates/wiki_diff.html b/trac/wiki/templates/wiki_diff.html
    a b  
    99    <form py:if="'WIKI_DELETE' in perm(page.resource) and 
    1010                 (not changes[0].diffs or new_version == latest_version)" 
    1111      method="get" action="${href.wiki(page.name)}"> 
    12       <input type="hidden" name="action" value="delete" /> 
    13       <input type="hidden" name="version" value="$new_version" /> 
    14       <input type="hidden" name="old_version" value="$old_version" /> 
    15       <input type="submit" name="delete_version" value="Delete ${ 
    16         new_version - old_version &gt; 1 and 'version %d to ' % (old_version+1) or '' 
    17         }version $new_version" /> 
     12      <div> 
     13        <input type="hidden" name="action" value="delete" /> 
     14        <input type="hidden" name="version" value="$new_version" /> 
     15        <input type="hidden" name="old_version" value="$old_version" /> 
     16        <input type="submit" name="delete_version" value="Delete ${ 
     17          new_version - old_version &gt; 1 and 'version %d to ' % (old_version+1) or '' 
     18          }version $new_version" /> 
     19      </div> 
    1820    </form> 
    1921  </div></py:match> 
    2022  <py:with vars="resource = page.resource">