From: Brandon Harris Date: Mon, 1 Nov 2010 21:17:15 +0000 (+0000) Subject: * Added tipsy library X-Git-Tag: 1.31.0-rc.0~34134 X-Git-Url: http://git.cyclocoop.org/%7B%7B%20url_for%28%27admin_vote_add%27%29%20%7D%7D?a=commitdiff_plain;h=d00ddeef7fd54a22215289f1621ecb687e3e2c44;p=lhc%2Fweb%2Fwiklou.git * Added tipsy library * Added associated files for tooltip display * Added associated css rules for tooltip display * Updated installer's help system in (most?) places to display help as tooltips instead of show/hide system * Beginnings of visual changes (e.g., less boxes, more color) * Modified several of the installer's widget display methods * Added a couple new i18n values * Fixed small bug in installer logic: - Password validation on new users was being executed even if there wasn't a $user object --- diff --git a/includes/installer/DatabaseInstaller.php b/includes/installer/DatabaseInstaller.php index b63749520e..dc6b9fd704 100644 --- a/includes/installer/DatabaseInstaller.php +++ b/includes/installer/DatabaseInstaller.php @@ -8,7 +8,7 @@ /** * Base class for DBMS-specific installation helper classes. - * + * * @ingroup Deployment * @since 1.17 */ @@ -16,30 +16,30 @@ abstract class DatabaseInstaller { /** * The Installer object. - * + * * TODO: naming this parent is confusing, 'installer' would be clearer. - * + * * @var Installer */ public $parent; /** * The database connection. - * + * * @var DatabaseBase */ public $db; /** * Internal variables for installation. - * + * * @var array */ protected $internalDefaults = array(); /** * Array of MW configuration globals this class uses. - * + * * @var array */ protected $globalNames = array(); @@ -56,7 +56,7 @@ abstract class DatabaseInstaller { /** * Get HTML for a web form that configures this database. Configuration - * at this time should be the minimum needed to connect and test + * at this time should be the minimum needed to connect and test * whether install or upgrade is required. * * If this is called, $this->parent can be assumed to be a WebInstaller. @@ -65,7 +65,7 @@ abstract class DatabaseInstaller { /** * Set variables based on the request array, assuming it was submitted - * via the form returned by getConnectForm(). Validate the connection + * via the form returned by getConnectForm(). Validate the connection * settings by attempting to connect with them. * * If this is called, $this->parent can be assumed to be a WebInstaller. @@ -77,7 +77,7 @@ abstract class DatabaseInstaller { /** * Get HTML for a web form that retrieves settings used for installation. * $this->parent can be assumed to be a WebInstaller. - * If the DB type has no settings beyond those already configured with + * If the DB type has no settings beyond those already configured with * getConnectForm(), this should return false. */ public function getSettingsForm() { @@ -87,7 +87,7 @@ abstract class DatabaseInstaller { /** * Set variables based on the request array, assuming it was submitted via * the form return by getSettingsForm(). - * + * * @return Status */ public function submitSettingsForm() { @@ -96,7 +96,7 @@ abstract class DatabaseInstaller { /** * Connect to the database using the administrative user/password currently - * defined in the session. On success, return the connection, on failure, + * defined in the session. On success, return the connection, on failure, * return a Status object. * * This may be called multiple times, so the result should be cached. @@ -113,7 +113,7 @@ abstract class DatabaseInstaller { /** * Create database tables from scratch. - * + * * @return Status */ public function createTables() { @@ -138,7 +138,7 @@ abstract class DatabaseInstaller { /** * Get the DBMS-specific options for LocalSettings.php generation. - * + * * @return String */ public abstract function getLocalSettings(); @@ -187,19 +187,19 @@ abstract class DatabaseInstaller { */ public function getGlobalNames() { return $this->globalNames; - } + } /** * Return any table options to be applied to all tables that don't * override them. - * + * * @return Array */ public function getTableOptions() { return array(); } - /** + /** * Construct and initialise parent. * This is typically only called from Installer::getDBInstaller() */ @@ -210,7 +210,7 @@ abstract class DatabaseInstaller { /** * Convenience function. * Check if a named extension is present. - * + * * @see wfDl */ protected static function checkExtension( $name ) { @@ -266,15 +266,19 @@ abstract class DatabaseInstaller { /** * Get a labelled text box to configure a local variable. */ - public function getTextBox( $var, $label, $attribs = array() ) { + public function getTextBox( $var, $label, $attribs = array(), $helpData = "" ) { $name = $this->getName() . '_' . $var; $value = $this->getVar( $var ); + if ( !isset( $attribs ) ) { + $attribs = array(); + } return $this->parent->getTextBox( array( 'var' => $var, 'label' => $label, 'attribs' => $attribs, 'controlName' => $name, - 'value' => $value + 'value' => $value, + 'help' => $helpData ) ); } @@ -282,22 +286,26 @@ abstract class DatabaseInstaller { * Get a labelled password box to configure a local variable. * Implements password hiding. */ - public function getPasswordBox( $var, $label, $attribs = array() ) { + public function getPasswordBox( $var, $label, $attribs = array(), $helpData = "" ) { $name = $this->getName() . '_' . $var; $value = $this->getVar( $var ); + if ( !isset( $attribs ) ) { + $attribs = array(); + } return $this->parent->getPasswordBox( array( 'var' => $var, 'label' => $label, 'attribs' => $attribs, 'controlName' => $name, - 'value' => $value + 'value' => $value, + 'help' => $helpData ) ); } /** * Get a labelled checkbox to configure a local boolean variable. */ - public function getCheckBox( $var, $label, $attribs = array() ) { + public function getCheckBox( $var, $label, $attribs = array(), $helpData = "" ) { $name = $this->getName() . '_' . $var; $value = $this->getVar( $var ); return $this->parent->getCheckBox( array( @@ -306,6 +314,7 @@ abstract class DatabaseInstaller { 'attribs' => $attribs, 'controlName' => $name, 'value' => $value, + 'help' => $helpData )); } @@ -338,11 +347,11 @@ abstract class DatabaseInstaller { } /** - * Determine whether an existing installation of MediaWiki is present in - * the configured administrative connection. Returns true if there is + * Determine whether an existing installation of MediaWiki is present in + * the configured administrative connection. Returns true if there is * such a wiki, false if the database doesn't exist. * - * Traditionally, this is done by testing for the existence of either + * Traditionally, this is done by testing for the existence of either * the revision table or the cur table. * * @return Boolean @@ -366,9 +375,8 @@ abstract class DatabaseInstaller { return Xml::openElement( 'fieldset' ) . Xml::element( 'legend', array(), wfMsg( 'config-db-install-account' ) ) . - $this->getTextBox( '_InstallUser', 'config-db-username' ) . - $this->getPasswordBox( '_InstallPassword', 'config-db-password' ) . - $this->parent->getHelpBox( 'config-db-install-help' ) . + $this->getTextBox( '_InstallUser', 'config-db-username', array(), $this->parent->getHelpBox( 'config-db-install-username' ) ) . + $this->getPasswordBox( '_InstallPassword', 'config-db-password', array(), $this->parent->getHelpBox( 'config-db-install-password' ) ) . Xml::closeElement( 'fieldset' ); } @@ -389,7 +397,7 @@ abstract class DatabaseInstaller { $name = $this->getName(); $s = Xml::openElement( 'fieldset' ) . Xml::element( 'legend', array(), wfMsg( 'config-db-web-account' ) ) . - $this->getCheckBox( + $this->getCheckBox( '_SameAccount', 'config-db-web-account-same', array( 'class' => 'hideShowRadio', 'rel' => 'dbOtherAccount' ) ) . @@ -408,7 +416,7 @@ abstract class DatabaseInstaller { /** * Submit the form from getWebUserBox(). - * + * * @return Status */ public function submitWebUserBox() { diff --git a/includes/installer/MysqlInstaller.php b/includes/installer/MysqlInstaller.php index d4af144d46..362810b93b 100644 --- a/includes/installer/MysqlInstaller.php +++ b/includes/installer/MysqlInstaller.php @@ -8,7 +8,7 @@ /** * Class for setting up the MediaWiki database using MySQL. - * + * * @ingroup Deployment * @since 1.17 */ @@ -59,14 +59,11 @@ class MysqlInstaller extends DatabaseInstaller { public function getConnectForm() { return - $this->getTextBox( 'wgDBserver', 'config-db-host' ) . - $this->parent->getHelpBox( 'config-db-host-help' ) . + $this->getTextBox( 'wgDBserver', 'config-db-host', array(), $this->parent->getHelpBox( 'config-db-host-help' ) ) . Xml::openElement( 'fieldset' ) . Xml::element( 'legend', array(), wfMsg( 'config-db-wiki-settings' ) ) . - $this->getTextBox( 'wgDBname', 'config-db-name' ) . - $this->parent->getHelpBox( 'config-db-name-help' ) . - $this->getTextBox( 'wgDBprefix', 'config-db-prefix' ) . - $this->parent->getHelpBox( 'config-db-prefix-help' ) . + $this->getTextBox( 'wgDBname', 'config-db-name', array(), $this->parent->getHelpBox( 'config-db-name-help' ) ) . + $this->getTextBox( 'wgDBprefix', 'config-db-prefix', array(), $this->parent->getHelpBox( 'config-db-prefix-help' ) ) . Xml::closeElement( 'fieldset' ) . $this->getInstallUserBox(); } @@ -120,7 +117,7 @@ class MysqlInstaller extends DatabaseInstaller { $this->getVar( '_InstallPassword' ), false, false, - 0, + 0, $this->getVar( 'wgDBprefix' ) ); $status->value = $this->db; @@ -252,12 +249,12 @@ class MysqlInstaller extends DatabaseInstaller { if ( count( $parts ) != 2 ) { return false; } - $quotedUser = $conn->addQuotes( $parts[0] ) . + $quotedUser = $conn->addQuotes( $parts[0] ) . '@' . $conn->addQuotes( $parts[1] ); // The user needs to have INSERT on mysql.* to be able to CREATE USER // The grantee will be double-quoted in this query, as required - $res = $conn->select( 'INFORMATION_SCHEMA.USER_PRIVILEGES', '*', + $res = $conn->select( 'INFORMATION_SCHEMA.USER_PRIVILEGES', '*', array( 'GRANTEE' => $quotedUser ), __METHOD__ ); $insertMysql = false; $grantOptions = array_flip( $this->webUserPrivs ); @@ -273,7 +270,7 @@ class MysqlInstaller extends DatabaseInstaller { // Check for DB-specific privs for mysql.* if ( !$insertMysql ) { $row = $conn->selectRow( 'INFORMATION_SCHEMA.SCHEMA_PRIVILEGES', '*', - array( + array( 'GRANTEE' => $quotedUser, 'TABLE_SCHEMA' => 'mysql', 'PRIVILEGE_TYPE' => 'INSERT', @@ -288,7 +285,7 @@ class MysqlInstaller extends DatabaseInstaller { } // Check for DB-level grant options - $res = $conn->select( 'INFORMATION_SCHEMA.SCHEMA_PRIVILEGES', '*', + $res = $conn->select( 'INFORMATION_SCHEMA.SCHEMA_PRIVILEGES', '*', array( 'GRANTEE' => $quotedUser, 'IS_GRANTABLE' => 1, @@ -322,9 +319,9 @@ class MysqlInstaller extends DatabaseInstaller { } if ( count( $engines ) >= 2 ) { $s .= $this->getRadioSet( array( - 'var' => '_MysqlEngine', - 'label' => 'config-mysql-engine', - 'itemLabelPrefix' => 'config-mysql-', + 'var' => '_MysqlEngine', + 'label' => 'config-mysql-engine', + 'itemLabelPrefix' => 'config-mysql-', 'values' => $engines )); $s .= $this->parent->getHelpBox( 'config-mysql-engine-help' ); @@ -369,13 +366,13 @@ class MysqlInstaller extends DatabaseInstaller { if ( !$create ) { // Test the web account try { - $webConn = new Database( + $webConn = new Database( $this->getVar( 'wgDBserver' ), $this->getVar( 'wgDBuser' ), $this->getVar( 'wgDBpassword' ), false, false, - 0, + 0, $this->getVar( 'wgDBprefix' ) ); } catch ( DBConnectionError $e ) { diff --git a/includes/installer/OracleInstaller.php b/includes/installer/OracleInstaller.php index d01bb3466a..2444f909ce 100644 --- a/includes/installer/OracleInstaller.php +++ b/includes/installer/OracleInstaller.php @@ -8,7 +8,7 @@ /** * Class for setting up the MediaWiki database using Oracle. - * + * * @ingroup Deployment * @since 1.17 */ @@ -47,8 +47,7 @@ class OracleInstaller extends DatabaseInstaller { Xml::element( 'legend', array(), wfMsg( 'config-db-web-account' ) ) . Xml::openElement( 'div', array( 'id' => 'dbOtherAccount' ) ) . $this->getTextBox( 'wgDBuser', 'config-db-username' ) . - $this->getPasswordBox( 'wgDBpassword', 'config-db-password' ) . - $this->parent->getHelpBox( 'config-db-web-help' ). + $this->getPasswordBox( 'wgDBpassword', 'config-db-password', array(), $this->parent->getHelpBox( 'config-db-web-help' ) ) . $this->getCheckBox( '_CreateDBAccount', 'config-db-web-create', array( 'disabled' => true ) ). Xml::closeElement( 'div' ) . Xml::closeElement( 'fieldset' ); } @@ -57,14 +56,12 @@ class OracleInstaller extends DatabaseInstaller { $this->parent->setVar( '_InstallUser', 'sys' ); $this->parent->setVar( 'wgDBserver', '' ); return - $this->getTextBox( 'wgDBserver', 'config-db-host-oracle' ) . - $this->parent->getHelpBox( 'config-db-host-oracle-help' ) . + $this->getTextBox( 'wgDBserver', 'config-db-host-oracle', array(), $this->parent->getHelpBox( 'config-db-host-oracle-help' ) ) . Xml::openElement( 'fieldset' ) . Xml::element( 'legend', array(), wfMsg( 'config-db-wiki-settings' ) ) . $this->getTextBox( 'wgDBprefix', 'config-db-prefix' ) . $this->getTextBox( '_OracleDefTS', 'config-oracle-def-ts' ) . - $this->getTextBox( '_OracleTempTS', 'config-oracle-temp-ts' ) . - $this->parent->getHelpBox( 'config-db-oracle-help' ) . + $this->getTextBox( '_OracleTempTS', 'config-oracle-temp-ts', array(), $this->parent->getHelpBox( 'config-db-oracle-help' ) ) . Xml::closeElement( 'fieldset' ) . $this->getInstallUserBox(). $this->getWebUserBox(); diff --git a/includes/installer/PostgresInstaller.php b/includes/installer/PostgresInstaller.php index c0d967727f..a63208a590 100644 --- a/includes/installer/PostgresInstaller.php +++ b/includes/installer/PostgresInstaller.php @@ -8,7 +8,7 @@ /** * Class for setting up the MediaWiki database using Postgres. - * + * * @ingroup Deployment * @since 1.17 */ @@ -36,23 +36,20 @@ class PostgresInstaller extends DatabaseInstaller { function getConnectForm() { return - $this->getTextBox( 'wgDBserver', 'config-db-host' ) . - $this->parent->getHelpBox( 'config-db-host-help' ) . + $this->getTextBox( 'wgDBserver', 'config-db-host', array(), $this->parent->getHelpBox( 'config-db-host-help' ) ) . $this->getTextBox( 'wgDBport', 'config-db-port' ) . Xml::openElement( 'fieldset' ) . Xml::element( 'legend', array(), wfMsg( 'config-db-wiki-settings' ) ) . - $this->getTextBox( 'wgDBname', 'config-db-name' ) . - $this->parent->getHelpBox( 'config-db-name-help' ) . - $this->getTextBox( 'wgDBmwschema', 'config-db-schema' ) . + $this->getTextBox( 'wgDBname', 'config-db-name', array(), $this->parent->getHelpBox( 'config-db-name-help' ) ) . + $this->getTextBox( 'wgDBmwschema', 'config-db-schema', array(), $this->parent->getHelpBox( 'config-db-schema-help' ) ) . $this->getTextBox( 'wgDBts2schema', 'config-db-ts2-schema' ) . - $this->parent->getHelpBox( 'config-db-schema-help' ) . Xml::closeElement( 'fieldset' ) . $this->getInstallUserBox(); } function submitConnectForm() { // Get variables from the request - $newValues = $this->setVarsFromRequest( array( 'wgDBserver', 'wgDBport', + $newValues = $this->setVarsFromRequest( array( 'wgDBserver', 'wgDBport', 'wgDBname', 'wgDBmwschema', 'wgDBts2schema' ) ); // Validate them diff --git a/includes/installer/SqliteInstaller.php b/includes/installer/SqliteInstaller.php index 4dccdd1a4c..d191f6e0cb 100644 --- a/includes/installer/SqliteInstaller.php +++ b/includes/installer/SqliteInstaller.php @@ -8,7 +8,7 @@ /** * Class for setting up the MediaWiki database using SQLLite. - * + * * @ingroup Deployment * @since 1.17 */ @@ -41,10 +41,8 @@ class SqliteInstaller extends DatabaseInstaller { } public function getConnectForm() { - return $this->getTextBox( 'wgSQLiteDataDir', 'config-sqlite-dir' ) . - $this->parent->getHelpBox( 'config-sqlite-dir-help' ) . - $this->getTextBox( 'wgDBname', 'config-db-name' ) . - $this->parent->getHelpBox( 'config-sqlite-name-help' ); + return $this->getTextBox( 'wgSQLiteDataDir', 'config-sqlite-dir', array(), $this->parent->getHelpBox( 'config-sqlite-dir-help' ) ) . + $this->getTextBox( 'wgDBname', 'config-db-name', array(), $this->parent->getHelpBox( 'config-sqlite-name-help' ) ); } public function submitConnectForm() { diff --git a/includes/installer/WebInstaller.php b/includes/installer/WebInstaller.php index 9e2f19299a..5921e52d6c 100644 --- a/includes/installer/WebInstaller.php +++ b/includes/installer/WebInstaller.php @@ -605,23 +605,14 @@ class WebInstaller extends CoreInstaller { array_shift( $args ); $args = array_map( 'htmlspecialchars', $args ); $text = wfMsgReal( $msg, $args, false, false, false ); - $html = $this->parse( $text, true ); - + //$html = $this->parse( $text, true ); + $html = $text; return - "
\n" . - "
\n" . - $html . - "
\n" . - "\n" . - "\n
\n"; + "\n"; } - + /** * Output a help box. */ @@ -662,7 +653,7 @@ class WebInstaller extends CoreInstaller { * Label a control by wrapping a config-input div around it and putting a * label before it. */ - public function label( $msg, $forId, $contents ) { + public function label( $msg, $forId, $contents, $helpData = "" ) { if ( strval( $msg ) == '' ) { $labelText = ' '; } else { @@ -676,14 +667,19 @@ class WebInstaller extends CoreInstaller { } return - "
\n" . + "
\n" . + "
\n" . Xml::tags( 'label', $attributes, $labelText ) . "\n" . - $contents . + $helpData . + "
\n" . + "
\n" . + $contents . + "
\n" . "
\n"; } - + /** * Get a labelled text box to configure a variable. * @@ -694,6 +690,7 @@ class WebInstaller extends CoreInstaller { * attribs: Additional attributes for the input element (optional) * controlName: The name for the input element (optional) * value: The current value of the variable (optional) + * help: The html for the help text (optional) */ public function getTextBox( $params ) { if ( !isset( $params['controlName'] ) ) { @@ -707,7 +704,9 @@ class WebInstaller extends CoreInstaller { if ( !isset( $params['attribs'] ) ) { $params['attribs'] = array(); } - + if ( !isset( $params['help'] ) ) { + $params['help'] = ""; + } return $this->label( $params['label'], @@ -721,10 +720,11 @@ class WebInstaller extends CoreInstaller { 'class' => 'config-input-text', 'tabindex' => $this->nextTabIndex() ) - ) + ), + $params['help'] ); } - + /** * Get a labelled password box to configure a variable. * @@ -736,6 +736,7 @@ class WebInstaller extends CoreInstaller { * attribs: Additional attributes for the input element (optional) * controlName: The name for the input element (optional) * value: The current value of the variable (optional) + * help: The html for the help text (optional) */ public function getPasswordBox( $params ) { if ( !isset( $params['value'] ) ) { @@ -762,6 +763,7 @@ class WebInstaller extends CoreInstaller { * attribs: Additional attributes for the input element (optional) * controlName: The name for the input element (optional) * value: The current value of the variable (optional) + * help: The html for the help text (optional) */ public function getCheckBox( $params ) { if ( !isset( $params['controlName'] ) ) { @@ -775,7 +777,9 @@ class WebInstaller extends CoreInstaller { if ( !isset( $params['attribs'] ) ) { $params['attribs'] = array(); } - + if ( !isset( $params['help'] ) ) { + $params['help'] = ""; + } if( isset( $params['rawtext'] ) ) { $labelText = $params['rawtext']; } else { @@ -796,6 +800,7 @@ class WebInstaller extends CoreInstaller { ) . $labelText . "\n" . "\n" . + $params['help'] . "
\n"; } @@ -812,6 +817,7 @@ class WebInstaller extends CoreInstaller { * commonAttribs Attribute array applied to all items * controlName: The name for the input element (optional) * value: The current value of the variable (optional) + * help: The html for the help text (optional) */ public function getRadioSet( $params ) { if ( !isset( $params['controlName'] ) ) { @@ -825,13 +831,12 @@ class WebInstaller extends CoreInstaller { if ( !isset( $params['label'] ) ) { $label = ''; } else { - $label = $this->parse( wfMsgNoTrans( $params['label'] ) ); + $label = $params['label']; } - - $s = "\n" . - "