Uploaded image for project: 'phpBB3'
  1. phpBB3
  2. PHPBB3-7073

XHTML validation issues in ACP

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Resolution: Fixed
    • 3.0.x
    • 3.0.1
    • ACP
    • None
    • PHP Environment:
      Database:

    Description

      I found some pages in the ACP which use invalid XHTML, here is a list of those:
      [list: 3bi6vjn1]

      • Maintenance > Database Restore: When the list of backups is empty:

        Error Line 208, Column 54: end tag for "select" which is not finished.

        <dd><select id="file" name="file"
        size="10"></select></dd>

      • Permissions > Admin roles > Edit a admin role ("Standard Admin" in my
        case):
        127 errors, better check yourself .
      • Forums > Prune forums:

        Warning Line 208, Column 18: reference to nonexistent ID "forum".

        <dt><label for="forum">Select a forum:</label></dt>

      • General > Authentication:
        1. Warning Line 250, Column 234: character "&" is the first character
          of a delimiter but occurred as data.

        …p> would result in the use of
        <samp>(&(uid=$username)(objectClass=posixGroup)

        Line 250, Column > 80: XML Parsing Error: xmlParseEntityRef: no name.

        …er filter:</label><br /><span>Optionally you can further limit the
        searched o…

      • Posting > BBCodes when the list of custom BBCodes is empty:
        1. Error Line 217, Column 9: end tag for "tbody" which is not finished.

        </tbody>

        (same for "Word censoring" and "Topic icons")

      • Posting > Manage extension groups > Edit a extension group:
        1. Error Line 281, Column 52: there is no attribute "name".

        …mg src="./../images/spacer.gif" name="image_upload_icon" alt=""
        title="" />&n

        Styles > Styles > Click on "install" on an uninstalled style:
        Line 213, Column 13: ID "name" already defined.

        <dd><b id="name">© 2005 phpBB Group</b></dd>

        Line 212, Column 18: reference to nonexistent ID "copyright".

        <dt><label for="copyright">Copyright:</label></dt>

        (same for "Themes" and "Imagesets")

      • Posting > Topic Icons > Edit an topic icon:
        1. Error Line 262, Column 26: character "[" is not allowed in the value of attribute "id".

        <td><select id="order[smile/mrgreen.gif]" name="order[smile/mrgreen.gif]">

        I created a patch that fixes all mentioned issues and makes the pages XHTML conform:

        Index: language/en/acp/board.php
        ===================================================================
        --- language/en/acp/board.php	(revision 8425)
        +++ language/en/acp/board.php	(working copy)
        @@ -323,7 +323,7 @@
         	'LDAP_USER'						=> 'LDAP user <var>dn</var>',
         	'LDAP_USER_EXPLAIN'				=> 'Leave blank to use anonymous binding. If filled in phpBB uses the specified distinguished name on login attempts to find the correct user, e.g. <samp>uid=Username,ou=MyUnit,o=MyCompany,c=US</samp>. Required for Active Directory Servers.',
         	'LDAP_USER_FILTER'				=> 'LDAP user filter',
        -	'LDAP_USER_FILTER_EXPLAIN'		=> 'Optionally you can further limit the searched objects with additional filters. For example <samp>objectClass=posixGroup</samp> would result in the use of <samp>(&(uid=$username)(objectClass=posixGroup))</samp>',
        +	'LDAP_USER_FILTER_EXPLAIN'		=> 'Optionally you can further limit the searched objects with additional filters. For example <samp>objectClass=posixGroup</samp> would result in the use of <samp>(&amp;(uid=$username)(objectClass=posixGroup))</samp>',
         ));
         
         // Server Settings
        Index: language/en/acp/common.php
        ===================================================================
        --- language/en/acp/common.php	(revision 8425)
        +++ language/en/acp/common.php	(working copy)
        @@ -126,6 +126,8 @@
         	'ACP_MOD_LOGS'				=> 'Moderator log',
         	'ACP_MOD_ROLES'				=> 'Moderator roles',
         
        +	'ACP_NO_ITEMS'				=> 'There are no items.',
        +
         	'ACP_ORPHAN_ATTACHMENTS'	=> 'Orphaned attachments',
         
         	'ACP_PERMISSIONS'			=> 'Permissions',
        Index: adm/style/acp_database.html
        ===================================================================
        --- adm/style/acp_database.html	(revision 8425)
        +++ adm/style/acp_database.html	(working copy)
        @@ -11,17 +11,19 @@
         	
         	<fieldset>
         		<legend>{L_RESTORE_OPTIONS}</legend>
        +	<!-- IF .files -->
         	<dl>
         		<dt><label for="file">{L_SELECT_FILE}:</label></dt>
         		<dd><select id="file" name="file" size="10"><!-- BEGIN files --><option value="{files.FILE}"<!-- IF files.S_LAST_ROW --> selected="selected"<!-- ENDIF -->>{files.NAME}</option><!-- END files --></select></dd>
         	</dl>
         
        -	<!-- IF .files -->
         		<p class="submit-buttons">
         			<input class="button1" type="submit" id="submit" name="submit" value="{L_START_RESTORE}" />&nbsp;
         			<input class="button2" type="submit" id="delete" name="delete" value="{L_DELETE_BACKUP}" />&nbsp;
         			<input class="button2" type="submit" id="download" name="download" value="{L_DOWNLOAD_BACKUP}" />
         		</p>
        +	<!-- ELSE -->
        +		<p>{L_ACP_NO_ITEMS}</p>
         	<!-- ENDIF -->
         		{S_FORM_TOKEN}
         	</fieldset>
        Index: adm/style/acp_attachments.html
        ===================================================================
        --- adm/style/acp_attachments.html	(revision 8425)
        +++ adm/style/acp_attachments.html	(working copy)
        @@ -192,7 +192,7 @@
         			<dd><select name="upload_icon" id="upload_icon" onchange="update_image(this.options[selectedIndex].value);">
         					<option value="no_image"<!-- IF S_NO_IMAGE --> selected="selected"<!-- ENDIF -->>{L_NO_IMAGE}</option>{S_FILENAME_LIST}
         			</select></dd>
        -			<dd>&nbsp;<img <!-- IF S_NO_IMAGE -->src="{PHPBB_ROOT_PATH}images/spacer.gif"<!-- ELSE -->src="{UPLOAD_ICON_SRC}"<!-- ENDIF --> name="image_upload_icon" alt="" title="" />&nbsp;</dd>
        +			<dd>&nbsp;<img <!-- IF S_NO_IMAGE -->src="{PHPBB_ROOT_PATH}images/spacer.gif"<!-- ELSE -->src="{UPLOAD_ICON_SRC}"<!-- ENDIF --> alt="" title="" />&nbsp;</dd>
         		</dl>
         		<dl>
         			<dt><label for="extgroup_filesize">{L_MAX_EXTGROUP_FILESIZE}:</label></dt>
        Index: adm/style/acp_words.html
        ===================================================================
        --- adm/style/acp_words.html	(revision 8425)
        +++ adm/style/acp_words.html	(working copy)
        @@ -62,6 +62,10 @@
         		<td style="text-align: center;">{words.REPLACEMENT}</td>
         		<td>&nbsp;<a href="{words.U_EDIT}">{ICON_EDIT}</a>&nbsp;&nbsp;<a href="{words.U_DELETE}">{ICON_DELETE}</a>&nbsp;</td>
         	</tr>
        +	<!-- BEGINELSE -->
        +		<tr class="row1">
        +			<td colspan="3" style="text-align: center;">{L_ACP_NO_ITEMS}</td>
        +		</tr>
         	<!-- END words -->
         	</tbody>
         	</table>
        Index: adm/style/acp_icons.html
        ===================================================================
        --- adm/style/acp_icons.html	(revision 8425)
        +++ adm/style/acp_icons.html	(working copy)
        @@ -117,9 +117,9 @@
         			<!-- ENDIF -->
         		</td>
         		<!-- IF ID or S_ADD -->
        -			<td><select id="order[{items.IMG}]" name="order[{items.IMG}]">
        -				<optgroup id="order_disp[{items.IMG}]" label="{L_DISPLAY_POSTING}" <!-- IF not items.POSTING_CHECKED -->disabled="disabled" class="disabled-options" <!-- ENDIF -->>{S_ORDER_LIST_DISPLAY}</optgroup>
        -				<optgroup id="order_no_disp[{items.IMG}]" label="{L_DISPLAY_POSTING_NO}" <!-- IF  items.POSTING_CHECKED -->disabled="disabled" class="disabled-options" <!-- ENDIF -->>{S_ORDER_LIST_UNDISPLAY}</optgroup>
        +				<td><select id="order[{items.IMG}]">
        +				<optgroup id="order_disp[{items.IMG}]" <!-- IF not items.POSTING_CHECKED -->disabled="disabled" class="disabled-options" <!-- ENDIF -->>{S_ORDER_LIST_DISPLAY}</optgroup>
        +				<optgroup id="order_no_disp[{items.IMG}]" <!-- IF  items.POSTING_CHECKED -->disabled="disabled" class="disabled-options" <!-- ENDIF -->>{S_ORDER_LIST_UNDISPLAY}</optgroup>
         			</select></td>
         		<!-- ENDIF -->	
         		<!-- IF S_ADD -->
        @@ -248,6 +248,10 @@
         				&nbsp;<a href="{items.U_EDIT}">{ICON_EDIT}</a> <a href="{items.U_DELETE}">{ICON_DELETE}</a>
         			</td>
         		</tr>
        +	<!-- BEGINELSE -->
        +		<tr>
        +			<td class="row1" colspan="{COLSPAN}" style="text-align: center;">{L_ACP_NO_ITEMS}</td>
        +		</tr>
         	<!-- END items -->
         	</tbody>
         	</table>
        Index: adm/style/acp_permission_roles.html
        ===================================================================
        --- adm/style/acp_permission_roles.html	(revision 8425)
        +++ adm/style/acp_permission_roles.html	(working copy)
        @@ -30,8 +30,7 @@
         
         	<form id="acp_roles" method="post" action="{U_ACTION}">
         
        -	<br />
        -	<a href="#acl">&raquo; {L_SET_ROLE_PERMISSIONS}</a>
        +	<p><a href="#acl">&raquo; {L_SET_ROLE_PERMISSIONS}</a></p>
         
         	<fieldset>
         		<legend>{L_ROLE_DETAILS}</legend>
        @@ -57,10 +56,9 @@
         
         	<!-- ENDIF -->
         
        -	<a name="acl"></a>
        +	<p><a name="acl"></a></p>
         
        -	<a href="#maincontent">&raquo; {L_BACK_TO_TOP}</a><br />
        -	<br /><br />
        +	<p><a href="#maincontent">&raquo; {L_BACK_TO_TOP}</a></p>
         
         	<h1>{L_ACL_TYPE}</h1>
         
        @@ -107,9 +105,9 @@
         						<!-- IF auth.mask.S_ROW_COUNT is even --><tr class="row4"><!-- ELSE --><tr class="row3"><!-- ENDIF -->
         						<th class="permissions-name<!-- IF auth.mask.S_ROW_COUNT is even --> row4<!-- ELSE --> row3<!-- ENDIF -->">{auth.mask.PERMISSION}</th>
         							
        -						<td class="permissions-yes"><label for="{auth.mask.FIELD_NAME}_y"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="setting[{auth.mask.FIELD_NAME}]_y" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></label></td>
        -						<td class="permissions-no"><label for="{auth.mask.FIELD_NAME}_u"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="setting[{auth.mask.FIELD_NAME}]_u" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_NO --> checked="checked"<!-- ENDIF --> value="-1" /></label></td>
        -						<td class="permissions-never"><label for="{auth.mask.FIELD_NAME}_n"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="setting[{auth.mask.FIELD_NAME}]_n" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_NEVER --> checked="checked"<!-- ENDIF --> value="0" /></label></td>
        +						<td class="permissions-yes"><label for="{auth.mask.FIELD_NAME}_y"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="{auth.mask.FIELD_NAME}_y" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></label></td>
        +						<td class="permissions-no"><label for="{auth.mask.FIELD_NAME}_u"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="{auth.mask.FIELD_NAME}_u" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_NO --> checked="checked"<!-- ENDIF --> value="-1" /></label></td>
        +						<td class="permissions-never"><label for="{auth.mask.FIELD_NAME}_n"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="{auth.mask.FIELD_NAME}_n" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_NEVER --> checked="checked"<!-- ENDIF --> value="0" /></label></td>
         					</tr>
         					<!-- END mask -->
         					</tbody>
        @@ -119,8 +117,8 @@
         			</div>
         			<!-- END auth -->
         		</div>
        -
         	</fieldset>
        +	<p><a href="#maincontent">&raquo; {L_BACK_TO_TOP}</a></p>
         
         	<fieldset class="quick">
         		<input type="submit" class="button1" name="submit" value="{L_SUBMIT}" />
        @@ -128,9 +126,6 @@
         	</fieldset>
         	</form>
         
        -	<a href="#maincontent">&raquo; {L_BACK_TO_TOP}</a><br />
        -	<br />
        -
         <!-- ELSE -->
         
         	<h1>{L_TITLE}</h1>
        Index: adm/style/acp_bbcodes.html
        ===================================================================
        --- adm/style/acp_bbcodes.html	(revision 8425)
        +++ adm/style/acp_bbcodes.html	(working copy)
        @@ -103,6 +103,10 @@
         			<td style="text-align: center;">{bbcodes.BBCODE_TAG}</td>
         			<td style="text-align: right; width: 40px;"><a href="{bbcodes.U_EDIT}">{ICON_EDIT}</a> <a href="{bbcodes.U_DELETE}">{ICON_DELETE}</a></td>
         		</tr>
        +	<!-- BEGINELSE -->
        +		<tr class="row1">
        +			<td colspan="2" style="text-align: center;">{L_ACP_NO_ITEMS}</td>
        +		</tr>
         	<!-- END bbcodes -->
         	</tbody>
         	</table>
        Index: adm/style/acp_styles.html
        ===================================================================
        --- adm/style/acp_styles.html	(revision 8425)
        +++ adm/style/acp_styles.html	(working copy)
        @@ -459,7 +459,7 @@
         	</dl>
         	<dl>
         		<dt><label for="copyright">{L_COPYRIGHT}:</label></dt>
        -		<dd><!-- IF S_INSTALL --><b id="name">{COPYRIGHT}</b><!-- ELSE --><input type="text" id="copyright" name="copyright" value="{COPYRIGHT}" /><!-- ENDIF --></dd>
        +		<dd><!-- IF S_INSTALL --><b id="copyright">{COPYRIGHT}</b><!-- ELSE --><input type="text" id="copyright" name="copyright" value="{COPYRIGHT}" /><!-- ENDIF --></dd>
         	</dl>
         	<!-- IF S_STYLE and not S_BASIS -->
         		<dl>
        Index: adm/style/acp_prune_forums.html
        ===================================================================
        --- adm/style/acp_prune_forums.html	(revision 8425)
        +++ adm/style/acp_prune_forums.html	(working copy)
        @@ -43,8 +43,8 @@
         		<legend>{L_SELECT_FORUM}</legend>
         		<p>{L_LOOK_UP_FORUMS_EXPLAIN}</p>
         	<dl>
        -		<dt><label for="forum">{L_LOOK_UP_FORUM}:</label></dt>
        -		<dd><select name="f[]" multiple="multiple" size="10">{S_FORUM_OPTIONS}</select></dd>
        +		<dt><label for="forums">{L_LOOK_UP_FORUM}:</label></dt>
        +		<dd><select name="f[]" id="forums" multiple="multiple" size="10">{S_FORUM_OPTIONS}</select></dd>
         		<dd><label><input type="checkbox" class="radio" name="all_forums" value="1" /> {L_ALL_FORUMS}</label></dd>
         	</dl>
         	

      Attachments

        Activity

          People

            Acyd Burn Meik Sievertsen [X] (Inactive)
            Schumi Schumi
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: