<?php
-# Copyright © 2009 Aryeh Gregor
-# http://www.mediawiki.org/
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-# http://www.gnu.org/copyleft/gpl.html
+/**
+ * Collection of methods to generate HTML content
+ *
+ * Copyright © 2009 Aryeh Gregor
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
/**
* This class is a collection of static functions that serve two purposes:
* Returns "</$element>", except if $wgWellFormedXml is off, in which case
* it returns the empty string when that's guaranteed to be safe.
*
+ * @since 1.17
* @param $element string Name of the element, e.g., 'a'
* @return string A closing tag, if required
*/
$ret = '';
$attribs = (array)$attribs;
foreach ( $attribs as $key => $value ) {
- if ( $value === false ) {
+ if ( $value === false || is_null( $value ) ) {
continue;
}
}
/**
- * Convenience function to produce an input element with type=hidden, like
- * Xml::hidden.
+ * Convenience function to produce an input element with type=hidden
*
* @param $name string name attribute
* @param $value string value attribute
global $wgHtml5;
$attribs['name'] = $name;
if ( !$wgHtml5 ) {
- if ( !isset( $attribs['cols'] ) )
+ if ( !isset( $attribs['cols'] ) ) {
$attribs['cols'] = "";
- if ( !isset( $attribs['rows'] ) )
+ }
+ if ( !isset( $attribs['rows'] ) ) {
$attribs['rows'] = "";
+ }
}
return self::element( 'textarea', $attribs, $value );
}
$ret .= "<?xml version=\"1.0\" encoding=\"$wgOutputEncoding\" ?" . ">\n";
}
- global $wgHtml5, $wgHtml5Version, $wgWellFormedXml, $wgDocType, $wgDTD;
+ global $wgHtml5, $wgHtml5Version, $wgDocType, $wgDTD;
global $wgXhtmlNamespaces, $wgXhtmlDefaultNamespace;
if ( $wgHtml5 ) {
- if ( $wgWellFormedXml ) {
- # Unknown elements and attributes are okay in XML, but unknown
- # named entities are well-formedness errors and will break XML
- # parsers. Thus we need a doctype that gives us appropriate
- # entity definitions. The HTML5 spec permits four legacy
- # doctypes as obsolete but conforming, so let's pick one of
- # those, although it makes our pages look like XHTML1 Strict.
- # Isn't compatibility great?
- $ret .= "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
- } else {
- # Much saner.
- $ret .= "<!doctype html>\n";
- }
+ $ret .= "<!DOCTYPE html>\n";
if ( $wgHtml5Version ) {
$attribs['version'] = $wgHtml5Version;
}
$attribs["xmlns:$tag"] = $ns;
}
}
- return $ret . Html::openElement( 'html', $attribs ) . "\n";
+ $html = Html::openElement( 'html', $attribs );
+ if ( $html ) {
+ $html .= "\n";
+ }
+ $ret .= $html;
+ return $ret;
}
/**
*/
public static function isXmlMimeType( $mimetype ) {
switch ( $mimetype ) {
- case 'text/xml':
- case 'application/xhtml+xml':
- case 'application/xml':
- return true;
- default:
- return false;
+ case 'text/xml':
+ case 'application/xhtml+xml':
+ case 'application/xml':
+ return true;
+ default:
+ return false;
}
}
}