Some fixes to avoid Xml::element call with null content when we actually want
to open a XML element. It should help fix bug #5312 later on. * XML attributes rendering now made by private Xml::expandAttributes() method * Xml::openElement() and Xml::tags() no more rely on Xml::element() with a null content. * Fix wfElement() call with null content when we actually open an element.
This commit is contained in:
parent
e02aa36b7f
commit
84a27cc33e
2 changed files with 28 additions and 7 deletions
|
|
@ -134,7 +134,7 @@ function HTMLSelectGroups($selectname, $selectmsg, $selected=array(), $multiple=
|
|||
$attribs = array( 'name' => $selectname );
|
||||
}
|
||||
$attribs['style'] = 'width: 100%';
|
||||
$out .= wfElement( 'select', $attribs, null );
|
||||
$out .= wfOpenElement( 'select', $attribs );
|
||||
|
||||
foreach( $groups as $group ) {
|
||||
$attribs = array( 'value' => $group );
|
||||
|
|
|
|||
|
|
@ -19,9 +19,7 @@ class Xml {
|
|||
public static function element( $element, $attribs = null, $contents = '') {
|
||||
$out = '<' . $element;
|
||||
if( !is_null( $attribs ) ) {
|
||||
foreach( $attribs as $name => $val ) {
|
||||
$out .= ' ' . $name . '="' . Sanitizer::encodeAttribute( $val ) . '"';
|
||||
}
|
||||
$out .= self::expandAttributes( $attribs );
|
||||
}
|
||||
if( is_null( $contents ) ) {
|
||||
$out .= '>';
|
||||
|
|
@ -35,6 +33,25 @@ class Xml {
|
|||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given an array of ('attributename' => 'value'), it generates the code
|
||||
* to set the XML attributes : attributename="value".
|
||||
* The values are passed to Sanitizer::encodeAttribute.
|
||||
* Return null if no attributes given.
|
||||
* @param $attribs Array of attributes for an XML element
|
||||
*/
|
||||
private static function expandAttributes( $attribs ) {
|
||||
if( is_null( $attribs ) ) {
|
||||
return null;
|
||||
} else {
|
||||
$out = '';
|
||||
foreach( $attribs as $name => $val ) {
|
||||
$out .= ' ' . $name . '="' . Sanitizer::encodeAttribute( $val ) . '"';
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Format an XML element as with self::element(), but run text through the
|
||||
* UtfNormal::cleanUp() validator first to ensure that no invalid UTF-8
|
||||
|
|
@ -57,8 +74,12 @@ class Xml {
|
|||
return self::element( $element, $attribs, $contents );
|
||||
}
|
||||
|
||||
// Shortcuts
|
||||
public static function openElement( $element, $attribs = null ) { return self::element( $element, $attribs, null ); }
|
||||
/** This open an XML element */
|
||||
public static function openElement( $element, $attribs = null ) {
|
||||
return '<' . $element . self::expandAttributes( $attribs ) . '>';
|
||||
}
|
||||
|
||||
// Shortcut
|
||||
public static function closeElement( $element ) { return "</$element>"; }
|
||||
|
||||
/**
|
||||
|
|
@ -66,7 +87,7 @@ class Xml {
|
|||
* content you have is already valid xml.
|
||||
*/
|
||||
public static function tags( $element, $attribs = null, $contents ) {
|
||||
return self::element( $element, $attribs, null ) . $contents . "</$element>";
|
||||
return self::openElement( $element, $attribs ) . $contents . "</$element>";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue