*
* @param $element String element name
* @param $attribs array of attributes
- * @param $contents content of the element
+ * @param $contents String content of the element
* @return string
*/
public static function tags( $element, $attribs = null, $contents ) {
/**
* Shortcut to make a span element
- * @param $text content of the element, will be escaped
- * @param $class class name of the span element
+ * @param $text String content of the element, will be escaped
+ * @param $class String class name of the span element
* @param $attribs other attributes
* @return string
*/
/**
* Convenience function to build an HTML text input field
- * @param $name value of the name attribute
+ * @param $name String value of the name attribute
* @param $size value of the size attribute
* @param $value value of the value attribute
* @param $attribs other attributes
/**
* Convenience function to build an HTML checkbox
- * @param $name value of the name attribute
- * @param $checked Whether the checkbox is checked or not
- * @param $attribs other attributes
+ * @param $name String value of the name attribute
+ * @param $checked Bool Whether the checkbox is checked or not
+ * @param $attribs Array other attributes
* @return string HTML
*/
public static function check( $name, $checked=false, $attribs=array() ) {
* Convenience function to build an HTML form label
* @param $label String text of the label
* @param $id
- * @param $attribs Array, other attributes
+ * @param $attribs Array an attribute array. This will usuall be
+ * the same array as is passed to the corresponding input element,
+ * so this function will cherry-pick appropriate attributes to
+ * apply to the label as well; currently only class is applied.
* @return string HTML
*/
public static function label( $label, $id, $attribs=array() ) {
* @param $name Mixed: Name and id for the drop-down
* @param $class Mixed: CSS classes for the drop-down
* @param $other Mixed: Text for the "Other reasons" option
- * @param $list Mixed: Correctly formatted text to be used to generate the options
+ * @param $list Mixed: Correctly formatted text (newline delimited) to be used to generate the options
* @param $selected Mixed: Option which should be pre-selected
* @param $tabindex Mixed: Value of the tabindex attribute
* @return string
$s .= self::encodeJsVar( $elt );
}
$s .= ']';
+ } elseif ( $value instanceof XmlJsCode ) {
+ $s = $value->value;
} elseif ( is_object( $value ) || is_array( $value ) ) {
// Objects and associative arrays
$s = '{';
return $s;
}
+ /**
+ * Create a call to a JavaScript function. The supplied arguments will be
+ * encoded using Xml::encodeJsVar().
+ *
+ * @param $name String The name of the function to call, or a JavaScript expression
+ * which evaluates to a function object which is called.
+ * @param $args Array of arguments to pass to the function.
+ * @since 1.17
+ */
+ public static function encodeJsCall( $name, $args ) {
+ $s = "$name(";
+ $first = true;
+ foreach ( $args as $arg ) {
+ if ( $first ) {
+ $first = false;
+ } else {
+ $s .= ', ';
+ }
+ $s .= Xml::encodeJsVar( $arg );
+ }
+ $s .= ");\n";
+ return $s;
+ }
+
/**
* Check if a string is well-formed XML.
/**
* Generate a form (without the opening form element).
* Output optionally includes a submit button.
- * @param $fields Associative array, key is message corresponding to a description for the field (colon is in the message), value is appropriate input.
- * @param $submitLabel A message containing a label for the submit button.
+ * @param $fields Array Associative array, key is message corresponding to a description for the field (colon is in the message), value is appropriate input.
+ * @param $submitLabel String A message containing a label for the submit button.
* @return string HTML form.
*/
public static function buildForm( $fields, $submitLabel = null ) {
}
}
+
+/**
+ * A wrapper class which causes Xml::encodeJsVar() and Xml::encodeJsCall() to
+ * interpret a given string as being a JavaScript expression, instead of string
+ * data.
+ *
+ * Example:
+ *
+ * Xml::encodeJsVar( new XmlJsCode( 'a + b' ) );
+ *
+ * Returns "a + b".
+ * @since 1.17
+ */
+class XmlJsCode {
+ public $value;
+
+ function __construct( $value ) {
+ $this->value = $value;
+ }
+}