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 = array( 'name' => $selectname );
|
||||||
}
|
}
|
||||||
$attribs['style'] = 'width: 100%';
|
$attribs['style'] = 'width: 100%';
|
||||||
$out .= wfElement( 'select', $attribs, null );
|
$out .= wfOpenElement( 'select', $attribs );
|
||||||
|
|
||||||
foreach( $groups as $group ) {
|
foreach( $groups as $group ) {
|
||||||
$attribs = array( 'value' => $group );
|
$attribs = array( 'value' => $group );
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,7 @@ class Xml {
|
||||||
public static function element( $element, $attribs = null, $contents = '') {
|
public static function element( $element, $attribs = null, $contents = '') {
|
||||||
$out = '<' . $element;
|
$out = '<' . $element;
|
||||||
if( !is_null( $attribs ) ) {
|
if( !is_null( $attribs ) ) {
|
||||||
foreach( $attribs as $name => $val ) {
|
$out .= self::expandAttributes( $attribs );
|
||||||
$out .= ' ' . $name . '="' . Sanitizer::encodeAttribute( $val ) . '"';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if( is_null( $contents ) ) {
|
if( is_null( $contents ) ) {
|
||||||
$out .= '>';
|
$out .= '>';
|
||||||
|
|
@ -35,6 +33,25 @@ class Xml {
|
||||||
return $out;
|
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
|
* Format an XML element as with self::element(), but run text through the
|
||||||
* UtfNormal::cleanUp() validator first to ensure that no invalid UTF-8
|
* UtfNormal::cleanUp() validator first to ensure that no invalid UTF-8
|
||||||
|
|
@ -57,8 +74,12 @@ class Xml {
|
||||||
return self::element( $element, $attribs, $contents );
|
return self::element( $element, $attribs, $contents );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shortcuts
|
/** This open an XML element */
|
||||||
public static function openElement( $element, $attribs = null ) { return self::element( $element, $attribs, null ); }
|
public static function openElement( $element, $attribs = null ) {
|
||||||
|
return '<' . $element . self::expandAttributes( $attribs ) . '>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shortcut
|
||||||
public static function closeElement( $element ) { return "</$element>"; }
|
public static function closeElement( $element ) { return "</$element>"; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -66,7 +87,7 @@ class Xml {
|
||||||
* content you have is already valid xml.
|
* content you have is already valid xml.
|
||||||
*/
|
*/
|
||||||
public static function tags( $element, $attribs = null, $contents ) {
|
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