From 87c2fefe092b86e7a632e260d2127100485bae1b Mon Sep 17 00:00:00 2001 From: resurtm Date: Mon, 6 May 2013 16:46:33 +0600 Subject: [PATCH 01/26] Initial MSSQL related commit. --- framework/db/Connection.php | 10 ++-- framework/db/mssql/PDO.php | 68 +++++++++++++++++++++++++++ framework/db/mssql/QueryBuilder.php | 19 ++++++++ framework/db/mssql/Schema.php | 93 +++++++++++++++++++++++++++++++++++++ framework/db/mssql/SqlsrvPDO.php | 33 +++++++++++++ 5 files changed, 219 insertions(+), 4 deletions(-) create mode 100644 framework/db/mssql/PDO.php create mode 100644 framework/db/mssql/QueryBuilder.php create mode 100644 framework/db/mssql/Schema.php create mode 100644 framework/db/mssql/SqlsrvPDO.php diff --git a/framework/db/Connection.php b/framework/db/Connection.php index 797508a..c4bf4b9 100644 --- a/framework/db/Connection.php +++ b/framework/db/Connection.php @@ -242,10 +242,10 @@ class Connection extends Component 'mysql' => 'yii\db\mysql\Schema', // MySQL 'sqlite' => 'yii\db\sqlite\Schema', // sqlite 3 'sqlite2' => 'yii\db\sqlite\Schema', // sqlite 2 - 'mssql' => 'yi\db\dao\mssql\Schema', // Mssql driver on windows hosts - 'sqlsrv' => 'yii\db\mssql\Schema', // Mssql + 'sqlsrv' => 'yii\db\mssql\Schema', // newer MSSQL driver on MS Windows hosts 'oci' => 'yii\db\oci\Schema', // Oracle driver - 'dblib' => 'yii\db\mssql\Schema', // dblib drivers on linux (and maybe others os) hosts + 'mssql' => 'yii\db\mssql\Schema', // older MSSQL driver on MS Windows hosts + 'dblib' => 'yii\db\mssql\Schema', // dblib drivers on GNU/Linux (and maybe other OSes) hosts ); /** * @var Transaction the currently active transaction @@ -351,7 +351,9 @@ class Connection extends Component $pdoClass = '\PDO'; if (($pos = strpos($this->dsn, ':')) !== false) { $driver = strtolower(substr($this->dsn, 0, $pos)); - if ($driver === 'mssql' || $driver === 'dblib' || $driver === 'sqlsrv') { + if ($driver === 'sqlsrv') { + $pdoClass = 'yii\db\mssql\SqlsrvPDO'; + } elseif ($driver === 'mssql' || $driver === 'dblib') { $pdoClass = 'yii\db\mssql\PDO'; } } diff --git a/framework/db/mssql/PDO.php b/framework/db/mssql/PDO.php new file mode 100644 index 0000000..e045d68 --- /dev/null +++ b/framework/db/mssql/PDO.php @@ -0,0 +1,68 @@ + + * @since 2.0 + */ +class PDO extends \PDO +{ + /** + * Returns last inserted ID value. + * + * @param string|null sequence the sequence name. Defaults to null. + * @return integer last inserted ID value. + */ + public function lastInsertId($sequence = null) + { + return $this->query('SELECT CAST(COALESCE(SCOPE_IDENTITY(), @@IDENTITY) AS bigint)')->fetchColumn(); + } + + /** + * Begin a transaction. + * + * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transactions. + * + * @return boolean + */ + public function beginTransaction() + { + $this->exec('BEGIN TRANSACTION'); + return true; + } + + /** + * Commit a transaction. + * + * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transactions. + * + * @return boolean + */ + public function commit() + { + $this->exec('COMMIT TRANSACTION'); + return true; + } + + /** + * Rollback a transaction. + * + * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transaction. + * + * @return boolean + */ + public function rollBack() + { + $this->exec('ROLLBACK TRANSACTION'); + return true; + } +} diff --git a/framework/db/mssql/QueryBuilder.php b/framework/db/mssql/QueryBuilder.php new file mode 100644 index 0000000..988758b --- /dev/null +++ b/framework/db/mssql/QueryBuilder.php @@ -0,0 +1,19 @@ + + * @since 2.0 + */ +class QueryBuilder extends \yii\db\QueryBuilder +{ + // TODO: mssql driver +} diff --git a/framework/db/mssql/Schema.php b/framework/db/mssql/Schema.php new file mode 100644 index 0000000..8fc8aea --- /dev/null +++ b/framework/db/mssql/Schema.php @@ -0,0 +1,93 @@ + + * @since 2.0 + */ +class Schema extends \yii\db\Schema +{ + /** + * Default schema name to be used. + */ + const DEFAULT_SCHEMA = 'dbo'; + + /** + * @var array mapping from physical column types (keys) to abstract column types (values) + */ + public $typeMap = array( + // TODO: mssql driver + ); + + /** + * @param string $name + * @return TableSchema + */ + public function loadTableSchema($name) + { + return null; + } + + /** + * Quotes a table name for use in a query. + * A simple table name has no schema prefix. + * @param string $name table name. + * @return string the properly quoted table name. + */ + public function quoteSimpleTableName($name) + { + return strpos($name, '[') !== false ? $name : '[' . $name . ']'; + } + + /** + * Quotes a column name for use in a query. + * A simple column name has no prefix. + * @param string $name column name. + * @return string the properly quoted column name. + */ + public function quoteSimpleColumnName($name) + { + return strpos($name, '[') !== false || $name === '*' ? $name : '[' . $name . ']'; + } + + /** + * Creates a query builder for the MSSQL database. + * @return QueryBuilder query builder interface. + */ + public function createQueryBuilder() + { + return new QueryBuilder($this->db); + } + + /** + * Returns all table names in the database. + * This method should be overridden by child classes in order to support this feature + * because the default implementation simply throws an exception. + * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. + * @return array all table names in the database. The names have NO the schema name prefix. + */ + protected function findTableNames($schema = '') + { + if ('' === $schema) { + $schema = self::DEFAULT_SCHEMA; + } + $sql = "SELECT TABLE_NAME FROM [INFORMATION_SCHEMA].[TABLES] WHERE TABLE_SCHEMA = :schema AND TABLE_TYPE = 'BASE TABLE'"; + $names = $this->db->createCommand($sql, array(':schema' => $schema))->queryColumn(); + if (self::DEFAULT_SCHEMA !== $schema) { + foreach ($names as $index => $name) { + $names[$index] = $schema . '.' . $name; + } + } + return $names; + } +} diff --git a/framework/db/mssql/SqlsrvPDO.php b/framework/db/mssql/SqlsrvPDO.php new file mode 100644 index 0000000..607d0e4 --- /dev/null +++ b/framework/db/mssql/SqlsrvPDO.php @@ -0,0 +1,33 @@ + + * @since 2.0 + */ +class SqlsrvPDO extends \PDO +{ + /** + * Returns last inserted ID value. + * + * SQLSRV driver supports PDO::lastInsertId() with one peculiarity: when $sequence value is null + * or empty string it returns empty string. But when parameter is not specified it's working + * as expected and returns actual last inserted ID (like the other PDO drivers). + * + * @param string|null $sequence the sequence name. Defaults to null. + * @return integer last inserted ID value. + */ + public function lastInsertId($sequence = null) + { + return !$sequence ? parent::lastInsertId() : parent::lastInsertId($sequence); + } +} From f2e6d408e3f8b4b029c8694599815047f59d3781 Mon Sep 17 00:00:00 2001 From: resurtm Date: Sat, 11 May 2013 09:40:04 +0600 Subject: [PATCH 02/26] MSSQL driver classes moved to the proper location. --- framework/db/mssql/PDO.php | 68 --------------------------- framework/db/mssql/QueryBuilder.php | 19 -------- framework/db/mssql/Schema.php | 93 ------------------------------------- framework/db/mssql/SqlsrvPDO.php | 33 ------------- 4 files changed, 213 deletions(-) delete mode 100644 framework/db/mssql/PDO.php delete mode 100644 framework/db/mssql/QueryBuilder.php delete mode 100644 framework/db/mssql/Schema.php delete mode 100644 framework/db/mssql/SqlsrvPDO.php diff --git a/framework/db/mssql/PDO.php b/framework/db/mssql/PDO.php deleted file mode 100644 index e045d68..0000000 --- a/framework/db/mssql/PDO.php +++ /dev/null @@ -1,68 +0,0 @@ - - * @since 2.0 - */ -class PDO extends \PDO -{ - /** - * Returns last inserted ID value. - * - * @param string|null sequence the sequence name. Defaults to null. - * @return integer last inserted ID value. - */ - public function lastInsertId($sequence = null) - { - return $this->query('SELECT CAST(COALESCE(SCOPE_IDENTITY(), @@IDENTITY) AS bigint)')->fetchColumn(); - } - - /** - * Begin a transaction. - * - * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transactions. - * - * @return boolean - */ - public function beginTransaction() - { - $this->exec('BEGIN TRANSACTION'); - return true; - } - - /** - * Commit a transaction. - * - * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transactions. - * - * @return boolean - */ - public function commit() - { - $this->exec('COMMIT TRANSACTION'); - return true; - } - - /** - * Rollback a transaction. - * - * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transaction. - * - * @return boolean - */ - public function rollBack() - { - $this->exec('ROLLBACK TRANSACTION'); - return true; - } -} diff --git a/framework/db/mssql/QueryBuilder.php b/framework/db/mssql/QueryBuilder.php deleted file mode 100644 index 988758b..0000000 --- a/framework/db/mssql/QueryBuilder.php +++ /dev/null @@ -1,19 +0,0 @@ - - * @since 2.0 - */ -class QueryBuilder extends \yii\db\QueryBuilder -{ - // TODO: mssql driver -} diff --git a/framework/db/mssql/Schema.php b/framework/db/mssql/Schema.php deleted file mode 100644 index 8fc8aea..0000000 --- a/framework/db/mssql/Schema.php +++ /dev/null @@ -1,93 +0,0 @@ - - * @since 2.0 - */ -class Schema extends \yii\db\Schema -{ - /** - * Default schema name to be used. - */ - const DEFAULT_SCHEMA = 'dbo'; - - /** - * @var array mapping from physical column types (keys) to abstract column types (values) - */ - public $typeMap = array( - // TODO: mssql driver - ); - - /** - * @param string $name - * @return TableSchema - */ - public function loadTableSchema($name) - { - return null; - } - - /** - * Quotes a table name for use in a query. - * A simple table name has no schema prefix. - * @param string $name table name. - * @return string the properly quoted table name. - */ - public function quoteSimpleTableName($name) - { - return strpos($name, '[') !== false ? $name : '[' . $name . ']'; - } - - /** - * Quotes a column name for use in a query. - * A simple column name has no prefix. - * @param string $name column name. - * @return string the properly quoted column name. - */ - public function quoteSimpleColumnName($name) - { - return strpos($name, '[') !== false || $name === '*' ? $name : '[' . $name . ']'; - } - - /** - * Creates a query builder for the MSSQL database. - * @return QueryBuilder query builder interface. - */ - public function createQueryBuilder() - { - return new QueryBuilder($this->db); - } - - /** - * Returns all table names in the database. - * This method should be overridden by child classes in order to support this feature - * because the default implementation simply throws an exception. - * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. - * @return array all table names in the database. The names have NO the schema name prefix. - */ - protected function findTableNames($schema = '') - { - if ('' === $schema) { - $schema = self::DEFAULT_SCHEMA; - } - $sql = "SELECT TABLE_NAME FROM [INFORMATION_SCHEMA].[TABLES] WHERE TABLE_SCHEMA = :schema AND TABLE_TYPE = 'BASE TABLE'"; - $names = $this->db->createCommand($sql, array(':schema' => $schema))->queryColumn(); - if (self::DEFAULT_SCHEMA !== $schema) { - foreach ($names as $index => $name) { - $names[$index] = $schema . '.' . $name; - } - } - return $names; - } -} diff --git a/framework/db/mssql/SqlsrvPDO.php b/framework/db/mssql/SqlsrvPDO.php deleted file mode 100644 index 607d0e4..0000000 --- a/framework/db/mssql/SqlsrvPDO.php +++ /dev/null @@ -1,33 +0,0 @@ - - * @since 2.0 - */ -class SqlsrvPDO extends \PDO -{ - /** - * Returns last inserted ID value. - * - * SQLSRV driver supports PDO::lastInsertId() with one peculiarity: when $sequence value is null - * or empty string it returns empty string. But when parameter is not specified it's working - * as expected and returns actual last inserted ID (like the other PDO drivers). - * - * @param string|null $sequence the sequence name. Defaults to null. - * @return integer last inserted ID value. - */ - public function lastInsertId($sequence = null) - { - return !$sequence ? parent::lastInsertId() : parent::lastInsertId($sequence); - } -} From 1ca7558c1df8e08486cc98600c3fee95dc2d4fb2 Mon Sep 17 00:00:00 2001 From: resurtm Date: Sat, 11 May 2013 11:34:32 +0600 Subject: [PATCH 03/26] MSSQL table metadata parsint (initial version). --- yii/db/mssql/PDO.php | 68 ++++++++++ yii/db/mssql/QueryBuilder.php | 40 ++++++ yii/db/mssql/Schema.php | 292 ++++++++++++++++++++++++++++++++++++++++++ yii/db/mssql/SqlsrvPDO.php | 33 +++++ 4 files changed, 433 insertions(+) create mode 100644 yii/db/mssql/PDO.php create mode 100644 yii/db/mssql/QueryBuilder.php create mode 100644 yii/db/mssql/Schema.php create mode 100644 yii/db/mssql/SqlsrvPDO.php diff --git a/yii/db/mssql/PDO.php b/yii/db/mssql/PDO.php new file mode 100644 index 0000000..e045d68 --- /dev/null +++ b/yii/db/mssql/PDO.php @@ -0,0 +1,68 @@ + + * @since 2.0 + */ +class PDO extends \PDO +{ + /** + * Returns last inserted ID value. + * + * @param string|null sequence the sequence name. Defaults to null. + * @return integer last inserted ID value. + */ + public function lastInsertId($sequence = null) + { + return $this->query('SELECT CAST(COALESCE(SCOPE_IDENTITY(), @@IDENTITY) AS bigint)')->fetchColumn(); + } + + /** + * Begin a transaction. + * + * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transactions. + * + * @return boolean + */ + public function beginTransaction() + { + $this->exec('BEGIN TRANSACTION'); + return true; + } + + /** + * Commit a transaction. + * + * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transactions. + * + * @return boolean + */ + public function commit() + { + $this->exec('COMMIT TRANSACTION'); + return true; + } + + /** + * Rollback a transaction. + * + * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transaction. + * + * @return boolean + */ + public function rollBack() + { + $this->exec('ROLLBACK TRANSACTION'); + return true; + } +} diff --git a/yii/db/mssql/QueryBuilder.php b/yii/db/mssql/QueryBuilder.php new file mode 100644 index 0000000..f4f2088 --- /dev/null +++ b/yii/db/mssql/QueryBuilder.php @@ -0,0 +1,40 @@ + + * @author Christophe Boulain + * @author Timur Ruziev + * @since 2.0 + */ +class QueryBuilder extends \yii\db\QueryBuilder +{ + /** + * @var array mapping from abstract column types (keys) to physical column types (values). + */ + public $typeMap = array( + Schema::TYPE_PK => 'int IDENTITY PRIMARY KEY', + Schema::TYPE_STRING => 'varchar(255)', + Schema::TYPE_TEXT => 'text', + Schema::TYPE_SMALLINT => 'smallint(6)', + Schema::TYPE_INTEGER => 'int(11)', + Schema::TYPE_BIGINT => 'bigint(20)', + Schema::TYPE_FLOAT => 'float', + Schema::TYPE_DECIMAL => 'decimal', + Schema::TYPE_DATETIME => 'datetime', + Schema::TYPE_TIMESTAMP => 'timestamp', + Schema::TYPE_TIME => 'time', + Schema::TYPE_DATE => 'date', + Schema::TYPE_BINARY => 'binary', + Schema::TYPE_BOOLEAN => 'tinyint(1)', + Schema::TYPE_MONEY => 'decimal(19,4)', + ); +} diff --git a/yii/db/mssql/Schema.php b/yii/db/mssql/Schema.php new file mode 100644 index 0000000..72171bd --- /dev/null +++ b/yii/db/mssql/Schema.php @@ -0,0 +1,292 @@ + + * @author Christophe Boulain + * @author Timur Ruziev + * @since 2.0 + */ +class Schema extends \yii\db\Schema +{ + /** + * Default schema name to be used. + */ + const DEFAULT_SCHEMA = 'dbo'; + + /** + * @var array mapping from physical column types (keys) to abstract column types (values) + */ + public $typeMap = array( + // TODO: mssql driver + ); + + /** + * Quotes a table name for use in a query. + * A simple table name has no schema prefix. + * @param string $name table name. + * @return string the properly quoted table name. + */ + public function quoteSimpleTableName($name) + { + return strpos($name, '[') !== false ? $name : '[' . $name . ']'; + } + + /** + * Quotes a column name for use in a query. + * A simple column name has no prefix. + * @param string $name column name. + * @return string the properly quoted column name. + */ + public function quoteSimpleColumnName($name) + { + return strpos($name, '[') !== false || $name === '*' ? $name : '[' . $name . ']'; + } + + /** + * Creates a query builder for the MSSQL database. + * @return QueryBuilder query builder interface. + */ + public function createQueryBuilder() + { + return new QueryBuilder($this->db); + } + + /** + * Loads the metadata for the specified table. + * @param string $name table name + * @return TableSchema driver dependent table metadata. Null if the table does not exist. + */ + public function loadTableSchema($name) + { + $table = new TableSchema(); + $this->resolveTableNames($table, $name); + $this->findPrimaryKeys($table); + + if ($this->findColumns($table)) { + $this->findConstraints($table); + return $table; + } else { + return null; + } + } + + /** + * Collects the metadata of table columns. + * @param TableSchema $table the table metadata + * @return boolean whether the table exists in the database + */ + protected function findColumns($table) + { + $columnsTableName = 'INFORMATION_SCHEMA.COLUMNS'; + $whereSql = "t1.TABLE_NAME = '" . $table->name . "'"; + if ($table->catalogName !== null) { + $columnsTableName = $table->catalogName . '.' . $columnsTableName; + $whereSql .= " AND t1.TABLE_CATALOG = '" . $table->catalogName . "'"; + } + if ($table->schemaName !== null) { + $whereSql .= " AND t1.TABLE_SCHEMA = '" . $table->schemaName . "'"; + } + $columnsTableName = $this->quoteTableName($columnsTableName); + + $sql = <<db->createCommand($sql)->queryAll(); + } catch (\Exception $e) { + return false; + } + foreach ($columns as $column) { + $column = $this->loadColumnSchema($column); + if (is_array($table->primaryKey)) { + $column->isPrimaryKey = count(preg_grep('/' . preg_quote($column->name) . '/i', $table->primaryKey)) > 0; + } else { + $column->isPrimaryKey = strcasecmp($column->name, $table->primaryKey) === 0; + } + $table->columns[$column->name] = $column; + if ($column->isPrimaryKey && $column->autoIncrement) { + $table->sequenceName = ''; + } + } + return true; + } + + /** + * Collects the primary key column details for the given table. + * @param TableSchema $table the table metadata + */ + protected function findPrimaryKeys($table) + { + $keyColumnUsageTableName = 'INFORMATION_SCHEMA.KEY_COLUMN_USAGE'; + $tableConstraintsTableName = 'INFORMATION_SCHEMA.TABLE_CONSTRAINTS'; + if ($table->catalogName !== null) { + $keyColumnUsageTableName = $table->catalogName . '.' . $keyColumnUsageTableName; + $tableConstraintsTableName = $table->catalogName . '.' . $tableConstraintsTableName; + } + $keyColumnUsageTableName = $this->quoteTableName($keyColumnUsageTableName); + $tableConstraintsTableName = $this->quoteTableName($tableConstraintsTableName); + + $sql = <<primaryKey = $this->db + ->createCommand($sql, array(':tableName' => $table->name, ':schemaName' => $table->schemaName)) + ->queryColumn(); + if (count($table->primaryKey) == 0) { + // table does not have primary key + $table->primaryKey = null; + } elseif (count($table->primaryKey) == 1) { + // table have one primary key + $table->primaryKey = $table->primaryKey[0]; + } + } + + /** + * Loads the column information into a [[ColumnSchema]] object. + * @param array $info column information + * @return ColumnSchema the column schema object + */ + protected function loadColumnSchema($info) + { + $column = new ColumnSchema(); + $column->name = $info['COLUMN_NAME']; + $column->comment = $info['Comment'] === null ? '' : $column['Comment']; + + $column->dbType = $info['DATA_TYPE']; + $column->unsigned = stripos($column->dbType, 'unsigned') !== false; + $column->allowNull = $info['IS_NULLABLE'] == 'YES'; + + $column->isPrimaryKey = null; // primary key is determined in findColumns() method + $column->autoIncrement = $info['IsIdentity'] == 1; + + $column->type = self::TYPE_STRING; + // TODO: better type infer + + $column->phpType = $this->getColumnPhpType($column); + return $column; + } + + /** + * Collects the foreign key column details for the given table. + * @param TableSchema $table the table metadata + */ + protected function findConstraints($table) + { + $referentialConstraintsTableName = 'INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS'; + $keyColumnUsageTableName = 'INFORMATION_SCHEMA.KEY_COLUMN_USAGE'; + if ($table->catalogName !== null) { + $referentialConstraintsTableName = $table->catalogName . '.' . $referentialConstraintsTableName; + $keyColumnUsageTableName = $table->catalogName . '.' . $keyColumnUsageTableName; + } + $referentialConstraintsTableName = $this->quoteTableName($referentialConstraintsTableName); + $keyColumnUsageTableName = $this->quoteTableName($keyColumnUsageTableName); + + // please refer to the following page for more details: + // http://msdn2.microsoft.com/en-us/library/aa175805(SQL.80).aspx + $sql = <<db->createCommand($sql, array(':tableName' => $table->name))->queryAll(); + $table->foreignKeys = array(); + foreach ($rows as $row) { + $table->foreignKeys[] = array($row['uq_table_name'], $row['fk_column_name'] => $row['uq_column_name']); + } + } + + /** + * Resolves the table name and schema name (if any). + * @param TableSchema $table the table metadata object + * @param string $name the table name + */ + protected function resolveTableNames($table, $name) + { + $parts = explode('.', str_replace(array('[', ']'), '', $name)); + $partCount = count($parts); + if ($partCount == 3) { + // catalog name, schema name and table name provided + $table->catalogName = $parts[0]; + $table->schemaName = $parts[1]; + $table->name = $parts[2]; + } elseif ($partCount == 2) { + // only schema name and table name provided + $table->schemaName = $parts[0]; + $table->name = $parts[1]; + } else { + // only schema name provided + $table->schemaName = static::DEFAULT_SCHEMA; + $table->name = $parts[0]; + } + } + + /** + * Returns all table names in the database. + * This method should be overridden by child classes in order to support this feature + * because the default implementation simply throws an exception. + * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. + * @return array all table names in the database. The names have NO the schema name prefix. + */ + protected function findTableNames($schema = '') + { + if ('' === $schema) { + $schema = self::DEFAULT_SCHEMA; + } + $sql = "SELECT TABLE_NAME FROM [INFORMATION_SCHEMA].[TABLES] WHERE TABLE_SCHEMA = :schema AND TABLE_TYPE = 'BASE TABLE'"; + $names = $this->db->createCommand($sql, array(':schema' => $schema))->queryColumn(); + if (self::DEFAULT_SCHEMA !== $schema) { + foreach ($names as $index => $name) { + $names[$index] = $schema . '.' . $name; + } + } + return $names; + } +} diff --git a/yii/db/mssql/SqlsrvPDO.php b/yii/db/mssql/SqlsrvPDO.php new file mode 100644 index 0000000..607d0e4 --- /dev/null +++ b/yii/db/mssql/SqlsrvPDO.php @@ -0,0 +1,33 @@ + + * @since 2.0 + */ +class SqlsrvPDO extends \PDO +{ + /** + * Returns last inserted ID value. + * + * SQLSRV driver supports PDO::lastInsertId() with one peculiarity: when $sequence value is null + * or empty string it returns empty string. But when parameter is not specified it's working + * as expected and returns actual last inserted ID (like the other PDO drivers). + * + * @param string|null $sequence the sequence name. Defaults to null. + * @return integer last inserted ID value. + */ + public function lastInsertId($sequence = null) + { + return !$sequence ? parent::lastInsertId() : parent::lastInsertId($sequence); + } +} From 58f3c323c00c161691bbf8e7fd3435b497e5d851 Mon Sep 17 00:00:00 2001 From: resurtm Date: Sat, 11 May 2013 12:22:14 +0600 Subject: [PATCH 04/26] MSSQL Schema: methods order changed, initial data type infer. --- yii/db/mssql/Schema.php | 176 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 118 insertions(+), 58 deletions(-) diff --git a/yii/db/mssql/Schema.php b/yii/db/mssql/Schema.php index 72171bd..a737070 100644 --- a/yii/db/mssql/Schema.php +++ b/yii/db/mssql/Schema.php @@ -9,7 +9,6 @@ namespace yii\db\mssql; use yii\db\TableSchema; use yii\db\ColumnSchema; -use yii\helpers\ArrayHelper; /** * Schema is the class for retrieving metadata from a MS SQL database (version 2008 and above). @@ -30,7 +29,31 @@ class Schema extends \yii\db\Schema * @var array mapping from physical column types (keys) to abstract column types (values) */ public $typeMap = array( - // TODO: mssql driver + 'tinyint' => self::TYPE_SMALLINT, + 'bit' => self::TYPE_SMALLINT, + 'smallint' => self::TYPE_SMALLINT, + 'mediumint' => self::TYPE_INTEGER, + 'int' => self::TYPE_INTEGER, + 'integer' => self::TYPE_INTEGER, + 'bigint' => self::TYPE_BIGINT, + 'float' => self::TYPE_FLOAT, + 'double' => self::TYPE_FLOAT, + 'real' => self::TYPE_FLOAT, + 'decimal' => self::TYPE_DECIMAL, + 'numeric' => self::TYPE_DECIMAL, + 'tinytext' => self::TYPE_TEXT, + 'mediumtext' => self::TYPE_TEXT, + 'longtext' => self::TYPE_TEXT, + 'text' => self::TYPE_TEXT, + 'varchar' => self::TYPE_STRING, + 'string' => self::TYPE_STRING, + 'char' => self::TYPE_STRING, + 'datetime' => self::TYPE_DATETIME, + 'year' => self::TYPE_DATE, + 'date' => self::TYPE_DATE, + 'time' => self::TYPE_TIME, + 'timestamp' => self::TYPE_TIMESTAMP, + 'enum' => self::TYPE_STRING, ); /** @@ -76,7 +99,7 @@ class Schema extends \yii\db\Schema $this->findPrimaryKeys($table); if ($this->findColumns($table)) { - $this->findConstraints($table); + $this->findForeignKeys($table); return $table; } else { return null; @@ -84,6 +107,84 @@ class Schema extends \yii\db\Schema } /** + * Resolves the table name and schema name (if any). + * @param TableSchema $table the table metadata object + * @param string $name the table name + */ + protected function resolveTableNames($table, $name) + { + $parts = explode('.', str_replace(array('[', ']'), '', $name)); + $partCount = count($parts); + if ($partCount == 3) { + // catalog name, schema name and table name provided + $table->catalogName = $parts[0]; + $table->schemaName = $parts[1]; + $table->name = $parts[2]; + } elseif ($partCount == 2) { + // only schema name and table name provided + $table->schemaName = $parts[0]; + $table->name = $parts[1]; + } else { + // only schema name provided + $table->schemaName = static::DEFAULT_SCHEMA; + $table->name = $parts[0]; + } + } + + /** + * Loads the column information into a [[ColumnSchema]] object. + * @param array $info column information + * @return ColumnSchema the column schema object + */ + protected function loadColumnSchema($info) + { + $column = new ColumnSchema(); + + $column->name = $info['COLUMN_NAME']; + $column->comment = $info['Comment'] === null ? '' : $column['Comment']; + + $column->dbType = $info['DATA_TYPE']; + $column->unsigned = stripos($column->dbType, 'unsigned') !== false; + $column->allowNull = $info['IS_NULLABLE'] == 'YES'; + + $column->isPrimaryKey = null; // primary key is determined in findColumns() method + $column->autoIncrement = $info['IsIdentity'] == 1; + + $column->type = self::TYPE_STRING; + $matches = array(); + if (preg_match('/^(\w+)(?:\(([^\)]+)\))?/', $column->dbType, $matches)) { + $type = $matches[1]; + if (isset($this->typeMap[$type])) { + $column->type = $this->typeMap[$type]; + } + if (!empty($matches[2])) { + $values = explode(',', $matches[2]); + $column->size = $column->precision = (int)$values[0]; + if (isset($values[1])) { + $column->scale = (int)$values[1]; + } + if ($column->size === 1 && ($type === 'tinyint' || $type === 'bit')) { + $column->type = 'boolean'; + } elseif ($type === 'bit') { + if ($column->size > 32) { + $column->type = 'bigint'; + } elseif ($column->size === 32) { + $column->type = 'integer'; + } + } + } + } + + $column->phpType = $this->getColumnPhpType($column); + + if ($info['COLUMN_DEFAULT'] == '(NULL)') { + $column->defaultValue = null; + } + + return $column; + } + + /** * Collects the metadata of table columns. * @param TableSchema $table the table metadata * @return boolean whether the table exists in the database @@ -177,35 +278,10 @@ SQL; } /** - * Loads the column information into a [[ColumnSchema]] object. - * @param array $info column information - * @return ColumnSchema the column schema object - */ - protected function loadColumnSchema($info) - { - $column = new ColumnSchema(); - $column->name = $info['COLUMN_NAME']; - $column->comment = $info['Comment'] === null ? '' : $column['Comment']; - - $column->dbType = $info['DATA_TYPE']; - $column->unsigned = stripos($column->dbType, 'unsigned') !== false; - $column->allowNull = $info['IS_NULLABLE'] == 'YES'; - - $column->isPrimaryKey = null; // primary key is determined in findColumns() method - $column->autoIncrement = $info['IsIdentity'] == 1; - - $column->type = self::TYPE_STRING; - // TODO: better type infer - - $column->phpType = $this->getColumnPhpType($column); - return $column; - } - - /** * Collects the foreign key column details for the given table. * @param TableSchema $table the table metadata */ - protected function findConstraints($table) + protected function findForeignKeys($table) { $referentialConstraintsTableName = 'INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS'; $keyColumnUsageTableName = 'INFORMATION_SCHEMA.KEY_COLUMN_USAGE'; @@ -244,31 +320,6 @@ SQL; } /** - * Resolves the table name and schema name (if any). - * @param TableSchema $table the table metadata object - * @param string $name the table name - */ - protected function resolveTableNames($table, $name) - { - $parts = explode('.', str_replace(array('[', ']'), '', $name)); - $partCount = count($parts); - if ($partCount == 3) { - // catalog name, schema name and table name provided - $table->catalogName = $parts[0]; - $table->schemaName = $parts[1]; - $table->name = $parts[2]; - } elseif ($partCount == 2) { - // only schema name and table name provided - $table->schemaName = $parts[0]; - $table->name = $parts[1]; - } else { - // only schema name provided - $table->schemaName = static::DEFAULT_SCHEMA; - $table->name = $parts[0]; - } - } - - /** * Returns all table names in the database. * This method should be overridden by child classes in order to support this feature * because the default implementation simply throws an exception. @@ -280,11 +331,20 @@ SQL; if ('' === $schema) { $schema = self::DEFAULT_SCHEMA; } - $sql = "SELECT TABLE_NAME FROM [INFORMATION_SCHEMA].[TABLES] WHERE TABLE_SCHEMA = :schema AND TABLE_TYPE = 'BASE TABLE'"; + + $sql = <<db->createCommand($sql, array(':schema' => $schema))->queryColumn(); - if (self::DEFAULT_SCHEMA !== $schema) { - foreach ($names as $index => $name) { - $names[$index] = $schema . '.' . $name; + if (static::DEFAULT_SCHEMA !== $schema) { + foreach ($names as $i => $name) { + $names[$i] = $schema . '.' . $name; } } return $names; From 5c101ae3141bc266e5d32b4529d0a8644c29b72a Mon Sep 17 00:00:00 2001 From: resurtm Date: Sat, 11 May 2013 14:58:35 +0600 Subject: [PATCH 05/26] Initial MSSQL tests. --- tests/unit/data/config.php | 6 + tests/unit/data/mssql.sql | 374 +++++---------------- .../framework/db/mssql/MssqlActiveRecordTest.php | 12 + tests/unit/framework/db/mssql/MssqlCommandTest.php | 31 ++ .../framework/db/mssql/MssqlConnectionTest.php | 43 +++ tests/unit/framework/db/mssql/MssqlQueryTest.php | 12 + 6 files changed, 185 insertions(+), 293 deletions(-) create mode 100644 tests/unit/framework/db/mssql/MssqlActiveRecordTest.php create mode 100644 tests/unit/framework/db/mssql/MssqlCommandTest.php create mode 100644 tests/unit/framework/db/mssql/MssqlConnectionTest.php create mode 100644 tests/unit/framework/db/mssql/MssqlQueryTest.php diff --git a/tests/unit/data/config.php b/tests/unit/data/config.php index c980c57..04db5f4 100644 --- a/tests/unit/data/config.php +++ b/tests/unit/data/config.php @@ -12,5 +12,11 @@ return array( 'dsn' => 'sqlite::memory:', 'fixture' => __DIR__ . '/sqlite.sql', ), + 'sqlsrv' => array( + 'dsn' => 'sqlsrv:Server=localhost;Database=test', + 'username' => '', + 'password' => '', + 'fixture' => __DIR__ . '/mssql.sql', + ), ) ); diff --git a/tests/unit/data/mssql.sql b/tests/unit/data/mssql.sql index 38967b2..d3bc8d2 100644 --- a/tests/unit/data/mssql.sql +++ b/tests/unit/data/mssql.sql @@ -1,306 +1,94 @@ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[categories]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) -BEGIN -CREATE TABLE [dbo].[categories]( +IF OBJECT_ID('[dbo].[tbl_order_item]', 'U') IS NOT NULL DROP TABLE [dbo].[tbl_order_item]; +IF OBJECT_ID('[dbo].[tbl_item]', 'U') IS NOT NULL DROP TABLE [dbo].[tbl_item]; +IF OBJECT_ID('[dbo].[tbl_order]', 'U') IS NOT NULL DROP TABLE [dbo].[tbl_order]; +IF OBJECT_ID('[dbo].[tbl_category]', 'U') IS NOT NULL DROP TABLE [dbo].[tbl_category]; +IF OBJECT_ID('[dbo].[tbl_customer]', 'U') IS NOT NULL DROP TABLE [dbo].[tbl_customer]; +IF OBJECT_ID('[dbo].[tbl_type]', 'U') IS NOT NULL DROP TABLE [dbo].[tbl_type]; + +CREATE TABLE [dbo].[tbl_customer] ( [id] [int] IDENTITY(1,1) NOT NULL, + [email] [varchar](128) NOT NULL, [name] [varchar](128) NOT NULL, - [parent_id] [int] NULL, - CONSTRAINT [PK_categories] PRIMARY KEY CLUSTERED -( - [id] ASC -) ON [PRIMARY] -) ON [PRIMARY] -END -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[orders]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) -BEGIN -CREATE TABLE [dbo].[orders]( - [key1] [int] NOT NULL, - [key2] [int] NOT NULL, + [address] [text], + [status] [int] DEFAULT 0, + CONSTRAINT [PK_customer] PRIMARY KEY CLUSTERED ( + [id] ASC + ) ON [PRIMARY] +); + +CREATE TABLE [dbo].[tbl_category] ( + [id] [int] IDENTITY(1,1) NOT NULL, [name] [varchar](128) NOT NULL, - CONSTRAINT [PK_orders] PRIMARY KEY CLUSTERED -( - [key1] ASC, - [key2] ASC -) ON [PRIMARY] -) ON [PRIMARY] -END -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[types]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) -BEGIN -CREATE TABLE [dbo].[types]( - [int_col] [int] NOT NULL, - [int_col2] [int] NULL CONSTRAINT [DF_types_int_col2] DEFAULT (1), - [char_col] [char](100) NOT NULL, - [char_col2] [varchar](100) NULL CONSTRAINT [DF_types_char_col2] DEFAULT ('something'), - [char_col3] [text] NULL, - [float_col] [real] NOT NULL, - [float_col2] [float] NULL CONSTRAINT [DF_types_float_col2] DEFAULT (1.23), - [blob_col] [image] NULL, - [numeric_col] [numeric](5, 2) NULL CONSTRAINT [DF_types_numeric_col] DEFAULT (33.22), - [time] [datetime] NULL CONSTRAINT [DF_types_time] DEFAULT ('2002-01-01 00:00:00'), - [bool_col] [bit] NOT NULL, - [bool_col2] [bit] NOT NULL CONSTRAINT [DF_types_bool_col2] DEFAULT (1) -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -END -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[users]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) -BEGIN -CREATE TABLE [dbo].[users]( + CONSTRAINT [PK_category] PRIMARY KEY CLUSTERED ( + [id] ASC + ) ON [PRIMARY] +); + +CREATE TABLE [dbo].[tbl_item] ( [id] [int] IDENTITY(1,1) NOT NULL, - [username] [varchar](128) NOT NULL, - [password] [varchar](128) NOT NULL, - [email] [varchar](128) NOT NULL, - CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED -( - [id] ASC -) ON [PRIMARY] -) ON [PRIMARY] -END -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[post_category]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) -BEGIN -CREATE TABLE [dbo].[post_category]( + [name] [varchar](128) NOT NULL, [category_id] [int] NOT NULL, - [post_id] [int] NOT NULL, - CONSTRAINT [PK_post_category] PRIMARY KEY CLUSTERED -( - [category_id] ASC, - [post_id] ASC -) ON [PRIMARY] -) ON [PRIMARY] -END -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[items]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) -BEGIN -CREATE TABLE [dbo].[items]( - [id] [int] IDENTITY(1,1) NOT NULL, - [name] [varchar](128) NULL, - [col1] [int] NOT NULL, - [col2] [int] NOT NULL, - CONSTRAINT [PK_items] PRIMARY KEY CLUSTERED -( - [id] ASC -) ON [PRIMARY] -) ON [PRIMARY] -END -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[comments]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) -BEGIN -CREATE TABLE [dbo].[comments]( - [id] [int] IDENTITY(1,1) NOT NULL, - [content] [text] NOT NULL, - [post_id] [int] NOT NULL, - [author_id] [int] NOT NULL, - CONSTRAINT [PK_comments] PRIMARY KEY CLUSTERED -( - [id] ASC -) ON [PRIMARY] -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -END -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[posts]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) -BEGIN -CREATE TABLE [dbo].[posts]( - [id] [int] IDENTITY(1,1) NOT NULL, - [title] [varchar](128) NOT NULL, - [create_time] [datetime] NOT NULL, - [author_id] [int] NOT NULL, - [content] [text] NULL, - CONSTRAINT [PK_posts] PRIMARY KEY CLUSTERED -( - [id] ASC -) ON [PRIMARY] -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -END -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[profiles]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) -BEGIN -CREATE TABLE [dbo].[profiles]( - [id] [int] IDENTITY(1,1) NOT NULL, - [first_name] [varchar](128) NOT NULL, - [last_name] [varchar](128) NOT NULL, - [user_id] [int] NOT NULL, - CONSTRAINT [PK_profiles] PRIMARY KEY CLUSTERED -( - [id] ASC -) ON [PRIMARY] -) ON [PRIMARY] -END -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_categories_categories]') AND type = 'F') -ALTER TABLE [dbo].[categories] WITH CHECK ADD CONSTRAINT [FK_categories_categories] FOREIGN KEY([parent_id]) -REFERENCES [dbo].[categories] ([id]) -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_post_category_categories]') AND type = 'F') -ALTER TABLE [dbo].[post_category] WITH CHECK ADD CONSTRAINT [FK_post_category_categories] FOREIGN KEY([category_id]) -REFERENCES [dbo].[categories] ([id]) -ON DELETE CASCADE -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_post_category_posts]') AND type = 'F') -ALTER TABLE [dbo].[post_category] WITH NOCHECK ADD CONSTRAINT [FK_post_category_posts] FOREIGN KEY([post_id]) -REFERENCES [dbo].[posts] ([id]) -ON DELETE CASCADE -GO -ALTER TABLE [dbo].[post_category] CHECK CONSTRAINT [FK_post_category_posts] -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_items_orders]') AND type = 'F') -ALTER TABLE [dbo].[items] WITH CHECK ADD CONSTRAINT [FK_items_orders] FOREIGN KEY([col1], [col2]) -REFERENCES [dbo].[orders] ([key1], [key2]) -ON DELETE CASCADE -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_comments_users]') AND type = 'F') -ALTER TABLE [dbo].[comments] WITH NOCHECK ADD CONSTRAINT [FK_comments_users] FOREIGN KEY([author_id]) -REFERENCES [dbo].[users] ([id]) -ON DELETE CASCADE -GO -ALTER TABLE [dbo].[comments] CHECK CONSTRAINT [FK_comments_users] -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_post_comment]') AND type = 'F') -ALTER TABLE [dbo].[comments] WITH NOCHECK ADD CONSTRAINT [FK_post_comment] FOREIGN KEY([post_id]) -REFERENCES [dbo].[posts] ([id]) -ON DELETE CASCADE -GO -ALTER TABLE [dbo].[comments] CHECK CONSTRAINT [FK_post_comment] -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_posts_users]') AND type = 'F') -ALTER TABLE [dbo].[posts] WITH NOCHECK ADD CONSTRAINT [FK_posts_users] FOREIGN KEY([author_id]) -REFERENCES [dbo].[users] ([id]) -GO -ALTER TABLE [dbo].[posts] CHECK CONSTRAINT [FK_posts_users] -GO -IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_profile_user]') AND type = 'F') -ALTER TABLE [dbo].[profiles] WITH NOCHECK ADD CONSTRAINT [FK_profile_user] FOREIGN KEY([user_id]) -REFERENCES [dbo].[users] ([id]) -ON DELETE CASCADE -GO -ALTER TABLE [dbo].[profiles] CHECK CONSTRAINT [FK_profile_user] - -INSERT INTO users (username, password, email) VALUES ('user1','pass1','email1') -GO -INSERT INTO users (username, password, email) VALUES ('user2','pass2','email2') -GO -INSERT INTO users (username, password, email) VALUES ('user3','pass3','email3') -GO + CONSTRAINT [PK_item] PRIMARY KEY CLUSTERED ( + [id] ASC + ) ON [PRIMARY] +); -INSERT INTO profiles (first_name, last_name, user_id) VALUES ('first 1','last 1',1) -GO -INSERT INTO profiles (first_name, last_name, user_id) VALUES ('first 2','last 2',2) -GO - -INSERT INTO posts (title, create_time, author_id, content) VALUES ('post 1','2000-01-01',1,'content 1') -GO -INSERT INTO posts (title, create_time, author_id, content) VALUES ('post 2','2000-01-02',2,'content 2') -GO -INSERT INTO posts (title, create_time, author_id, content) VALUES ('post 3','2000-01-03',2,'content 3') -GO -INSERT INTO posts (title, create_time, author_id, content) VALUES ('post 4','2000-01-04',2,'content 4') -GO -INSERT INTO posts (title, create_time, author_id, content) VALUES ('post 5','2000-01-05',3,'content 5') -GO +CREATE TABLE [dbo].[tbl_order] ( + [id] [int] IDENTITY(1,1) NOT NULL, + [customer_id] [int] NOT NULL, + [create_time] [int] NOT NULL, + [total] [decimal](10,0) NOT NULL, + CONSTRAINT [PK_order] PRIMARY KEY CLUSTERED ( + [id] ASC + ) ON [PRIMARY] +); -INSERT INTO comments (content, post_id, author_id) VALUES ('comment 1',1, 2) -GO -INSERT INTO comments (content, post_id, author_id) VALUES ('comment 2',1, 2) -GO -INSERT INTO comments (content, post_id, author_id) VALUES ('comment 3',1, 2) -GO -INSERT INTO comments (content, post_id, author_id) VALUES ('comment 4',2, 2) -GO -INSERT INTO comments (content, post_id, author_id) VALUES ('comment 5',2, 2) -GO -INSERT INTO comments (content, post_id, author_id) VALUES ('comment 6',3, 2) -GO -INSERT INTO comments (content, post_id, author_id) VALUES ('comment 7',3, 2) -GO -INSERT INTO comments (content, post_id, author_id) VALUES ('comment 8',3, 2) -GO -INSERT INTO comments (content, post_id, author_id) VALUES ('comment 9',3, 2) -GO -INSERT INTO comments (content, post_id, author_id) VALUES ('comment 10',5, 3) -GO +CREATE TABLE [dbo].[tbl_order_item] ( + [order_id] [int] NOT NULL, + [item_id] [int] NOT NULL, + [quantity] [int] NOT NULL, + [subtotal] [decimal](10,0) NOT NULL, + CONSTRAINT [PK_order_item] PRIMARY KEY CLUSTERED ( + [order_id] ASC, + [item_id] ASC + ) ON [PRIMARY] +); -INSERT INTO categories (name, parent_id) VALUES ('cat 1',NULL) -GO -INSERT INTO categories (name, parent_id) VALUES ('cat 2',NULL) -GO -INSERT INTO categories (name, parent_id) VALUES ('cat 3',NULL) -GO -INSERT INTO categories (name, parent_id) VALUES ('cat 4',1) -GO -INSERT INTO categories (name, parent_id) VALUES ('cat 5',1) -GO -INSERT INTO categories (name, parent_id) VALUES ('cat 6',5) -GO -INSERT INTO categories (name, parent_id) VALUES ('cat 7',5) -GO +CREATE TABLE [dbo].[tbl_type] ( + [int_col] [int] NOT NULL, + [int_col2] [int] DEFAULT '1', + [char_col] [char](100) NOT NULL, + [char_col2] [varchar](100) DEFAULT 'something', + [char_col3] [text], + [float_col] [decimal](4,3) NOT NULL, + [float_col2] [float] DEFAULT '1.23', + [blob_col] [binary], + [numeric_col] [decimal](5,2) DEFAULT '33.22', + [time] [datetime] NOT NULL DEFAULT '2002-01-01 00:00:00', + [bool_col] [tinyint] NOT NULL, + [bool_col2] [tinyint] DEFAULT '1' +); -INSERT INTO post_category (category_id, post_id) VALUES (1,1) -GO -INSERT INTO post_category (category_id, post_id) VALUES (2,1) -GO -INSERT INTO post_category (category_id, post_id) VALUES (3,1) -GO -INSERT INTO post_category (category_id, post_id) VALUES (4,2) -GO -INSERT INTO post_category (category_id, post_id) VALUES (1,2) -GO -INSERT INTO post_category (category_id, post_id) VALUES (1,3) -GO +INSERT INTO [dbo].[tbl_customer] ([email], [name], [address], [status]) VALUES ('user1@example.com', 'user1', 'address1', 1); +INSERT INTO [dbo].[tbl_customer] ([email], [name], [address], [status]) VALUES ('user2@example.com', 'user2', 'address2', 1); +INSERT INTO [dbo].[tbl_customer] ([email], [name], [address], [status]) VALUES ('user3@example.com', 'user3', 'address3', 2); +INSERT INTO [dbo].[tbl_category] ([name]) VALUES ('Books'); +INSERT INTO [dbo].[tbl_category] ([name]) VALUES ('Movies'); -INSERT INTO orders (key1,key2,name) VALUES (1,2,'order 12') -GO -INSERT INTO orders (key1,key2,name) VALUES (1,3,'order 13') -GO -INSERT INTO orders (key1,key2,name) VALUES (2,1,'order 21') -GO -INSERT INTO orders (key1,key2,name) VALUES (2,2,'order 22') -GO +INSERT INTO [dbo].[tbl_item] ([name], [category_id]) VALUES ('Agile Web Application Development with Yii1.1 and PHP5', 1); +INSERT INTO [dbo].[tbl_item] ([name], [category_id]) VALUES ('Yii 1.1 Application Development Cookbook', 1); +INSERT INTO [dbo].[tbl_item] ([name], [category_id]) VALUES ('Ice Age', 2); +INSERT INTO [dbo].[tbl_item] ([name], [category_id]) VALUES ('Toy Story', 2); +INSERT INTO [dbo].[tbl_item] ([name], [category_id]) VALUES ('Cars', 2); +INSERT INTO [dbo].[tbl_order] ([customer_id], [create_time], [total]) VALUES (1, 1325282384, 110.0); +INSERT INTO [dbo].[tbl_order] ([customer_id], [create_time], [total]) VALUES (2, 1325334482, 33.0); +INSERT INTO [dbo].[tbl_order] ([customer_id], [create_time], [total]) VALUES (2, 1325502201, 40.0); -INSERT INTO items (name,col1,col2) VALUES ('item 1',1,2) -GO -INSERT INTO items (name,col1,col2) VALUES ('item 2',1,2) -GO -INSERT INTO items (name,col1,col2) VALUES ('item 3',1,3) -GO -INSERT INTO items (name,col1,col2) VALUES ('item 4',2,2) -GO -INSERT INTO items (name,col1,col2) VALUES ('item 5',2,2) -GO +INSERT INTO [dbo].[tbl_order_item] ([order_id], [item_id], [quantity], [subtotal]) VALUES (1, 1, 1, 30.0); +INSERT INTO [dbo].[tbl_order_item] ([order_id], [item_id], [quantity], [subtotal]) VALUES (1, 2, 2, 40.0); +INSERT INTO [dbo].[tbl_order_item] ([order_id], [item_id], [quantity], [subtotal]) VALUES (2, 4, 1, 10.0); +INSERT INTO [dbo].[tbl_order_item] ([order_id], [item_id], [quantity], [subtotal]) VALUES (2, 5, 1, 15.0); +INSERT INTO [dbo].[tbl_order_item] ([order_id], [item_id], [quantity], [subtotal]) VALUES (2, 3, 1, 8.0); +INSERT INTO [dbo].[tbl_order_item] ([order_id], [item_id], [quantity], [subtotal]) VALUES (3, 2, 1, 40.0); diff --git a/tests/unit/framework/db/mssql/MssqlActiveRecordTest.php b/tests/unit/framework/db/mssql/MssqlActiveRecordTest.php new file mode 100644 index 0000000..4a41663 --- /dev/null +++ b/tests/unit/framework/db/mssql/MssqlActiveRecordTest.php @@ -0,0 +1,12 @@ +driverName = 'sqlsrv'; + parent::setUp(); + } +} diff --git a/tests/unit/framework/db/mssql/MssqlCommandTest.php b/tests/unit/framework/db/mssql/MssqlCommandTest.php new file mode 100644 index 0000000..422a00c --- /dev/null +++ b/tests/unit/framework/db/mssql/MssqlCommandTest.php @@ -0,0 +1,31 @@ +driverName = 'sqlsrv'; + parent::setUp(); + } + + function testAutoQuoting() + { + $db = $this->getConnection(false); + + $sql = 'SELECT [[id]], [[t.name]] FROM {{tbl_customer}} t'; + $command = $db->createCommand($sql); + $this->assertEquals("SELECT [id], [t].[name] FROM [tbl_customer] t", $command->sql); + } + + function testPrepareCancel() + { + $this->markTestIncomplete(); + } + + function testBindParamValue() + { + $this->markTestIncomplete(); + } +} diff --git a/tests/unit/framework/db/mssql/MssqlConnectionTest.php b/tests/unit/framework/db/mssql/MssqlConnectionTest.php new file mode 100644 index 0000000..870af0a --- /dev/null +++ b/tests/unit/framework/db/mssql/MssqlConnectionTest.php @@ -0,0 +1,43 @@ +driverName = 'sqlsrv'; + parent::setUp(); + } + + function testQuoteValue() + { + $connection = $this->getConnection(false); + $this->assertEquals(123, $connection->quoteValue(123)); + $this->assertEquals("'string'", $connection->quoteValue('string')); + $this->assertEquals("'It''s interesting'", $connection->quoteValue("It's interesting")); + } + + function testQuoteTableName() + { + $connection = $this->getConnection(false); + $this->assertEquals('[table]', $connection->quoteTableName('table')); + $this->assertEquals('[table]', $connection->quoteTableName('[table]')); + $this->assertEquals('[schema].[table]', $connection->quoteTableName('schema.table')); + $this->assertEquals('[schema].[table]', $connection->quoteTableName('schema.[table]')); + $this->assertEquals('{{table}}', $connection->quoteTableName('{{table}}')); + $this->assertEquals('(table)', $connection->quoteTableName('(table)')); + } + + function testQuoteColumnName() + { + $connection = $this->getConnection(false); + $this->assertEquals('[column]', $connection->quoteColumnName('column')); + $this->assertEquals('[column]', $connection->quoteColumnName('[column]')); + $this->assertEquals('[table].[column]', $connection->quoteColumnName('table.column')); + $this->assertEquals('[table].[column]', $connection->quoteColumnName('table.[column]')); + $this->assertEquals('[[column]]', $connection->quoteColumnName('[[column]]')); + $this->assertEquals('{{column}}', $connection->quoteColumnName('{{column}}')); + $this->assertEquals('(column)', $connection->quoteColumnName('(column)')); + } +} diff --git a/tests/unit/framework/db/mssql/MssqlQueryTest.php b/tests/unit/framework/db/mssql/MssqlQueryTest.php new file mode 100644 index 0000000..17d6681 --- /dev/null +++ b/tests/unit/framework/db/mssql/MssqlQueryTest.php @@ -0,0 +1,12 @@ +driverName = 'sqlsrv'; + parent::setUp(); + } +} From 9f66abc984d6f002f156a81f4456c471356ab5c5 Mon Sep 17 00:00:00 2001 From: Klimov Paul Date: Sat, 18 May 2013 21:33:06 +0300 Subject: [PATCH 06/26] "yii\console\controllers\AssetController" has been updated: - assetManager has been converted into virtual property - bundle dependency load has been fixed --- .../console/controllers/AssetControllerTest.php | 6 +- yii/console/controllers/AssetController.php | 115 ++++++++++++++++----- 2 files changed, 93 insertions(+), 28 deletions(-) diff --git a/tests/unit/framework/console/controllers/AssetControllerTest.php b/tests/unit/framework/console/controllers/AssetControllerTest.php index 9dc7c11..e0d7d26 100644 --- a/tests/unit/framework/console/controllers/AssetControllerTest.php +++ b/tests/unit/framework/console/controllers/AssetControllerTest.php @@ -92,7 +92,8 @@ class AssetControllerTest extends TestCase */ protected function createCompressConfig(array $bundles) { - $baseUrl = '/test'; + //$baseUrl = '/test'; + $baseUrl = ''; $config = array( 'bundles' => $this->createBundleConfig($bundles), 'targets' => array( @@ -207,6 +208,9 @@ class AssetControllerTest extends TestCase 'app' => array( 'css' => array_keys($cssFiles), 'js' => array_keys($jsFiles), + 'depends' => array( + 'yii', + ), ), );; $bundleFile = $this->testFilePath . DIRECTORY_SEPARATOR . 'bundle.php'; diff --git a/yii/console/controllers/AssetController.php b/yii/console/controllers/AssetController.php index 4cc2ffe..1f2be91 100644 --- a/yii/console/controllers/AssetController.php +++ b/yii/console/controllers/AssetController.php @@ -14,6 +14,8 @@ use yii\console\Controller; /** * This command allows you to combine and compress your JavaScript and CSS files. * + * @property array|\yii\web\AssetManager $assetManager asset manager, which will be used for assets processing. + * * @author Qiang Xue * @since 2.0 */ @@ -50,10 +52,10 @@ class AssetController extends Controller */ public $targets = array(); /** - * @var array configuration for [[yii\web\AssetManager]] instance, which will be used - * for assets publishing. + * @var array|\yii\web\AssetManager [[yii\web\AssetManager]] instance or its array configuration, which will be used + * for assets processing. */ - public $assetManager = array(); + private $_assetManager = array(); /** * @var string|callback Java Script file compressor. * If a string, it is treated as shell command template, which should contain @@ -76,6 +78,33 @@ class AssetController extends Controller public $cssCompressor = 'java -jar yuicompressor.jar {from} -o {to}'; /** + * @return \yii\web\AssetManager asset manager instance. + */ + public function getAssetManager() + { + if (!is_object($this->_assetManager)) { + $options = $this->_assetManager; + if (!isset($options['class'])) { + $options['class'] = 'yii\\web\\AssetManager'; + } + $this->_assetManager = Yii::createObject($options); + } + return $this->_assetManager; + } + + /** + * @param \yii\web\AssetManager|array $assetManager asset manager instance or its array configuration. + * @throws \yii\console\Exception on invalid argument type. + */ + public function setAssetManager($assetManager) + { + if (is_scalar($assetManager)) { + throw new Exception('"' . get_class($this) . '::assetManager" should be either object or array - "' . gettype($assetManager) . '" given.'); + } + $this->_assetManager = $assetManager; + } + + /** * Combines and compresses the asset files according to the given configuration. * During the process new asset bundle configuration file will be created. * You should replace your original asset bundle configuration with this file in order to use compressed files. @@ -114,19 +143,14 @@ class AssetController extends Controller echo "Loading configuration from '{$configFile}'...\n"; foreach (require($configFile) as $name => $value) { - if (property_exists($this, $name)) { + if (property_exists($this, $name) || $this->canSetProperty($name)) { $this->$name = $value; } else { throw new Exception("Unknown configuration option: $name"); } } - if (!isset($this->assetManager['basePath'])) { - throw new Exception("Please specify 'basePath' for the 'assetManager' option."); - } - if (!isset($this->assetManager['baseUrl'])) { - throw new Exception("Please specify 'baseUrl' for the 'assetManager' option."); - } + $this->getAssetManager(); // check asset manager configuration } /** @@ -138,27 +162,60 @@ class AssetController extends Controller protected function loadBundles($bundles, $extensions) { echo "Collecting source bundles information...\n"; + + $assetManager = $this->getAssetManager(); $result = array(); - foreach ($bundles as $name => $bundle) { - $bundle['class'] = 'yii\\web\\AssetBundle'; - $result[$name] = Yii::createObject($bundle); + + $assetManager->bundles = $bundles; + foreach ($assetManager->bundles as $name => $bundle) { + $result[$name] = $assetManager->getBundle($name); } + foreach ($extensions as $path) { $manifest = $path . '/assets.php'; if (!is_file($manifest)) { continue; } - foreach (require($manifest) as $name => $bundle) { + $assetManager->bundles = require($manifest); + foreach ($assetManager->bundles as $name => $bundle) { if (!isset($result[$name])) { - $bundle['class'] = 'yii\\web\\AssetBundle'; - $result[$name] = Yii::createObject($bundle); + $result[$name] = $assetManager->getBundle($name); } } } + + foreach ($result as $name => $bundle) { + $this->loadBundleDependency($name, $bundle, $result); + } + return $result; } /** + * Loads asset bundle dependencies recursively. + * @param string $name bundle name + * @param \yii\web\AssetBundle $bundle bundle instance + * @param array $result already loaded bundles list. + * @throws \yii\console\Exception on failure. + */ + protected function loadBundleDependency($name, $bundle, &$result) { + if (!empty($bundle->depends)) { + $assetManager = $this->getAssetManager(); + foreach ($bundle->depends as $dependencyName) { + if (!array_key_exists($dependencyName, $result)) { + $dependencyBundle = $assetManager->getBundle($dependencyName); + if ($dependencyBundle === null) { + throw new Exception("Unable to load dependency bundle '{$dependencyName}' for bundle '{$name}'."); + } else { + $result[$dependencyName] = $dependencyBundle; + $this->loadBundleDependency($dependencyName, $dependencyBundle, $result); + } + } + } + } + } + + /** * Creates full list of output asset bundles. * @param array $targets output asset bundles configuration. * @param \yii\web\AssetBundle[] $bundles list of source asset bundles. @@ -222,17 +279,13 @@ class AssetController extends Controller /** * Publishes given asset bundles. * @param \yii\web\AssetBundle[] $bundles asset bundles to be published. - * @param array $options assert manager instance configuration. */ - protected function publishBundles($bundles, $options) + protected function publishBundles($bundles) { echo "\nPublishing bundles:\n"; - if (!isset($options['class'])) { - $options['class'] = 'yii\\web\\AssetManager'; - } - $am = Yii::createObject($options); + $assetManager = $this->getAssetManager(); foreach ($bundles as $name => $bundle) { - $bundle->publish($am); + $bundle->publish($assetManager); echo " '".$name."' published.\n"; } echo "\n"; @@ -252,14 +305,20 @@ class AssetController extends Controller '{ts}' => $timestamp, )); $inputFiles = array(); - foreach ($target->depends as $name) { if (isset($bundles[$name])) { - foreach ($bundles[$name]->$type as $file) { - $inputFiles[] = $bundles[$name]->basePath . $file; + $bundle = $bundles[$name]; + foreach ($bundle->$type as $file) { + if ($bundle->sourcePath === null) { + // native : + $inputFiles[] = $bundle->basePath . $file; + } else { + // published : + $inputFiles[] = $this->getAssetManager()->basePath . $file; + } } } else { - throw new Exception("Unknown bundle: $name"); + throw new Exception("Unknown bundle: '{$name}'"); } } if ($type === 'js') { @@ -339,6 +398,8 @@ class AssetController extends Controller * Saves new asset bundles configuration. * @param \yii\web\AssetBundle[] $targets list of asset bundles to be saved. * @param string $bundleFile output file name. + * @throws \yii\console\Exception on failure. + * @return void */ protected function saveTargets($targets, $bundleFile) { From 4695362ae22783e7d70f401d80f19900cafc2be1 Mon Sep 17 00:00:00 2001 From: Klimov Paul Date: Sat, 18 May 2013 21:40:39 +0300 Subject: [PATCH 07/26] Unit test for "yii\console\controllers\AssetController" has been adjusted. --- tests/unit/framework/console/controllers/AssetControllerTest.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/unit/framework/console/controllers/AssetControllerTest.php b/tests/unit/framework/console/controllers/AssetControllerTest.php index e0d7d26..d792c9e 100644 --- a/tests/unit/framework/console/controllers/AssetControllerTest.php +++ b/tests/unit/framework/console/controllers/AssetControllerTest.php @@ -92,8 +92,7 @@ class AssetControllerTest extends TestCase */ protected function createCompressConfig(array $bundles) { - //$baseUrl = '/test'; - $baseUrl = ''; + $baseUrl = '/test'; $config = array( 'bundles' => $this->createBundleConfig($bundles), 'targets' => array( @@ -106,7 +105,7 @@ class AssetControllerTest extends TestCase ), 'assetManager' => array( 'basePath' => $this->testAssetsBasePath, - 'baseUrl' => $baseUrl, + 'baseUrl' => '', ), ); return $config; From 57e5474143d02e77b0c8279d755c58e0c8b7d91e Mon Sep 17 00:00:00 2001 From: Klimov Paul Date: Sun, 19 May 2013 15:46:24 +0300 Subject: [PATCH 08/26] Method "yii\console\controllers\AssetController::loadBundleDependency()" has been improved allowing dection of the circular dependency. --- yii/console/controllers/AssetController.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/yii/console/controllers/AssetController.php b/yii/console/controllers/AssetController.php index 1f2be91..fcf8846 100644 --- a/yii/console/controllers/AssetController.php +++ b/yii/console/controllers/AssetController.php @@ -203,12 +203,16 @@ class AssetController extends Controller $assetManager = $this->getAssetManager(); foreach ($bundle->depends as $dependencyName) { if (!array_key_exists($dependencyName, $result)) { + if ($result[$dependencyName] === false) { + throw new Exception("A circular dependency is detected for target '{$dependencyName}'."); + } $dependencyBundle = $assetManager->getBundle($dependencyName); if ($dependencyBundle === null) { throw new Exception("Unable to load dependency bundle '{$dependencyName}' for bundle '{$name}'."); } else { - $result[$dependencyName] = $dependencyBundle; + $result[$dependencyName] = false; $this->loadBundleDependency($dependencyName, $dependencyBundle, $result); + $result[$dependencyName] = $dependencyBundle; } } } From 84237dd8285dbbbfb1abda4bbbbdfcba8715812f Mon Sep 17 00:00:00 2001 From: Klimov Paul Date: Sun, 19 May 2013 15:57:49 +0300 Subject: [PATCH 09/26] E_NOTICE at "yii\console\controllers\AssetController::loadBundleDependency()" has been fixed. --- yii/console/controllers/AssetController.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/yii/console/controllers/AssetController.php b/yii/console/controllers/AssetController.php index fcf8846..fd75096 100644 --- a/yii/console/controllers/AssetController.php +++ b/yii/console/controllers/AssetController.php @@ -203,9 +203,6 @@ class AssetController extends Controller $assetManager = $this->getAssetManager(); foreach ($bundle->depends as $dependencyName) { if (!array_key_exists($dependencyName, $result)) { - if ($result[$dependencyName] === false) { - throw new Exception("A circular dependency is detected for target '{$dependencyName}'."); - } $dependencyBundle = $assetManager->getBundle($dependencyName); if ($dependencyBundle === null) { throw new Exception("Unable to load dependency bundle '{$dependencyName}' for bundle '{$name}'."); @@ -214,6 +211,10 @@ class AssetController extends Controller $this->loadBundleDependency($dependencyName, $dependencyBundle, $result); $result[$dependencyName] = $dependencyBundle; } + } else { + if ($result[$dependencyName] === false) { + throw new Exception("A circular dependency is detected for target '{$dependencyName}'."); + } } } } From 9a472c8323667f264ee4946a81c1e43eb4ff93bf Mon Sep 17 00:00:00 2001 From: Klimov Paul Date: Sun, 19 May 2013 16:17:02 +0300 Subject: [PATCH 10/26] "yii\console\controllers\AssetController::getAssetManager()" has been updated enforcing 'basePath' and 'baseUrl' config parameters. --- yii/console/controllers/AssetController.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/yii/console/controllers/AssetController.php b/yii/console/controllers/AssetController.php index fd75096..59cf1f5 100644 --- a/yii/console/controllers/AssetController.php +++ b/yii/console/controllers/AssetController.php @@ -60,7 +60,7 @@ class AssetController extends Controller * @var string|callback Java Script file compressor. * If a string, it is treated as shell command template, which should contain * placeholders {from} - source file name - and {to} - output file name. - * If an array, it is treated as PHP callback, which should perform the compression. + * Otherwise, it is treated as PHP callback, which should perform the compression. * * Default value relies on usage of "Closure Compiler" * @see https://developers.google.com/closure/compiler/ @@ -70,7 +70,7 @@ class AssetController extends Controller * @var string|callback CSS file compressor. * If a string, it is treated as shell command template, which should contain * placeholders {from} - source file name - and {to} - output file name. - * If an array, it is treated as PHP callback, which should perform the compression. + * Otherwise, it is treated as PHP callback, which should perform the compression. * * Default value relies on usage of "YUI Compressor" * @see https://github.com/yui/yuicompressor/ @@ -78,6 +78,8 @@ class AssetController extends Controller public $cssCompressor = 'java -jar yuicompressor.jar {from} -o {to}'; /** + * Returns the asset manager instance. + * @throws \yii\console\Exception on invalid configuration. * @return \yii\web\AssetManager asset manager instance. */ public function getAssetManager() @@ -87,12 +89,19 @@ class AssetController extends Controller if (!isset($options['class'])) { $options['class'] = 'yii\\web\\AssetManager'; } + if (!isset($options['basePath'])) { + throw new Exception("Please specify 'basePath' for the 'assetManager' option."); + } + if (!isset($options['baseUrl'])) { + throw new Exception("Please specify 'baseUrl' for the 'assetManager' option."); + } $this->_assetManager = Yii::createObject($options); } return $this->_assetManager; } /** + * Sets asset manager instance or configuration. * @param \yii\web\AssetManager|array $assetManager asset manager instance or its array configuration. * @throws \yii\console\Exception on invalid argument type. */ From e9700cd2d707470e0521d4c3dc9fac1741cc4a0a Mon Sep 17 00:00:00 2001 From: Klimov Paul Date: Mon, 20 May 2013 20:08:26 +0300 Subject: [PATCH 11/26] Do comments at "yii\console\controllers\AssetController::saveTargets()" has been adjusted. --- yii/console/controllers/AssetController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/yii/console/controllers/AssetController.php b/yii/console/controllers/AssetController.php index 4cfc103..ca7896c 100644 --- a/yii/console/controllers/AssetController.php +++ b/yii/console/controllers/AssetController.php @@ -407,7 +407,6 @@ class AssetController extends Controller * @param \yii\web\AssetBundle[] $targets list of asset bundles to be saved. * @param string $bundleFile output file name. * @throws \yii\console\Exception on failure. - * @return void */ protected function saveTargets($targets, $bundleFile) { From f80b0c634cfd7032bff0a1d462eb889f56b4ff5a Mon Sep 17 00:00:00 2001 From: Alexander Kochetov Date: Wed, 22 May 2013 12:05:18 +0400 Subject: [PATCH 12/26] JQuery UI bundle assets --- .../yii/jui/assets/i18n/jquery.ui.datepicker-af.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-ar-DZ.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ar.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-az.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-be.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-bg.js | 24 + .../yii/jui/assets/i18n/jquery.ui.datepicker-bs.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ca.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-cs.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-cy-GB.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-da.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-de.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-el.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-en-AU.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-en-GB.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-en-NZ.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-eo.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-es.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-et.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-eu.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-fa.js | 59 + .../yii/jui/assets/i18n/jquery.ui.datepicker-fi.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-fo.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-fr-CA.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-fr-CH.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-fr.js | 25 + .../yii/jui/assets/i18n/jquery.ui.datepicker-gl.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-he.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-hi.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-hr.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-hu.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-hy.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-id.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-is.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-it.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ja.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ka.js | 21 + .../yii/jui/assets/i18n/jquery.ui.datepicker-kk.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-km.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ko.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ky.js | 24 + .../yii/jui/assets/i18n/jquery.ui.datepicker-lb.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-lt.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-lv.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-mk.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ml.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ms.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-nb.js | 22 + .../jui/assets/i18n/jquery.ui.datepicker-nl-BE.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-nl.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-nn.js | 22 + .../yii/jui/assets/i18n/jquery.ui.datepicker-no.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-pl.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-pt-BR.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-pt.js | 22 + .../yii/jui/assets/i18n/jquery.ui.datepicker-rm.js | 21 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ro.js | 26 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ru.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-sk.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-sl.js | 24 + .../yii/jui/assets/i18n/jquery.ui.datepicker-sq.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-sr-SR.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-sr.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-sv.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-ta.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-th.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-tj.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-tr.js | 23 + .../yii/jui/assets/i18n/jquery.ui.datepicker-uk.js | 24 + .../yii/jui/assets/i18n/jquery.ui.datepicker-vi.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-zh-CN.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-zh-HK.js | 23 + .../jui/assets/i18n/jquery.ui.datepicker-zh-TW.js | 23 + framework/yii/jui/assets/jquery.ui.accordion.js | 572 ++++++ framework/yii/jui/assets/jquery.ui.autocomplete.js | 610 ++++++ framework/yii/jui/assets/jquery.ui.button.js | 419 ++++ framework/yii/jui/assets/jquery.ui.core.js | 320 +++ framework/yii/jui/assets/jquery.ui.datepicker.js | 2038 ++++++++++++++++++++ framework/yii/jui/assets/jquery.ui.dialog.js | 808 ++++++++ framework/yii/jui/assets/jquery.ui.draggable.js | 958 +++++++++ framework/yii/jui/assets/jquery.ui.droppable.js | 372 ++++ framework/yii/jui/assets/jquery.ui.effect-blind.js | 82 + .../yii/jui/assets/jquery.ui.effect-bounce.js | 113 ++ framework/yii/jui/assets/jquery.ui.effect-clip.js | 67 + framework/yii/jui/assets/jquery.ui.effect-drop.js | 65 + .../yii/jui/assets/jquery.ui.effect-explode.js | 97 + framework/yii/jui/assets/jquery.ui.effect-fade.js | 30 + framework/yii/jui/assets/jquery.ui.effect-fold.js | 76 + .../yii/jui/assets/jquery.ui.effect-highlight.js | 50 + .../yii/jui/assets/jquery.ui.effect-pulsate.js | 63 + framework/yii/jui/assets/jquery.ui.effect-scale.js | 318 +++ framework/yii/jui/assets/jquery.ui.effect-shake.js | 74 + framework/yii/jui/assets/jquery.ui.effect-slide.js | 64 + .../yii/jui/assets/jquery.ui.effect-transfer.js | 47 + framework/yii/jui/assets/jquery.ui.effect.js | 1289 +++++++++++++ framework/yii/jui/assets/jquery.ui.menu.js | 621 ++++++ framework/yii/jui/assets/jquery.ui.mouse.js | 169 ++ framework/yii/jui/assets/jquery.ui.position.js | 497 +++++ framework/yii/jui/assets/jquery.ui.progressbar.js | 145 ++ framework/yii/jui/assets/jquery.ui.resizable.js | 968 ++++++++++ framework/yii/jui/assets/jquery.ui.selectable.js | 277 +++ framework/yii/jui/assets/jquery.ui.slider.js | 672 +++++++ framework/yii/jui/assets/jquery.ui.sortable.js | 1285 ++++++++++++ framework/yii/jui/assets/jquery.ui.spinner.js | 493 +++++ framework/yii/jui/assets/jquery.ui.tabs.js | 846 ++++++++ framework/yii/jui/assets/jquery.ui.tooltip.js | 402 ++++ framework/yii/jui/assets/jquery.ui.widget.js | 521 +++++ .../assets/themes/base/images/animated-overlay.gif | Bin 0 -> 1738 bytes .../base/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../base/images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../base/images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../base/images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../base/images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../base/images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../base/images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../themes/base/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../themes/base/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../themes/base/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../themes/base/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../themes/base/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../jui/assets/themes/base/jquery.ui.accordion.css | 38 + .../assets/themes/base/jquery.ui.autocomplete.css | 16 + .../jui/assets/themes/base/jquery.ui.button.css | 114 ++ .../yii/jui/assets/themes/base/jquery.ui.core.css | 93 + .../assets/themes/base/jquery.ui.datepicker.css | 178 ++ .../jui/assets/themes/base/jquery.ui.dialog.css | 69 + .../yii/jui/assets/themes/base/jquery.ui.menu.css | 79 + .../assets/themes/base/jquery.ui.progressbar.css | 28 + .../jui/assets/themes/base/jquery.ui.resizable.css | 78 + .../assets/themes/base/jquery.ui.selectable.css | 15 + .../jui/assets/themes/base/jquery.ui.slider.css | 73 + .../jui/assets/themes/base/jquery.ui.spinner.css | 65 + .../yii/jui/assets/themes/base/jquery.ui.tabs.css | 52 + .../yii/jui/assets/themes/base/jquery.ui.theme.css | 406 ++++ .../jui/assets/themes/base/jquery.ui.tooltip.css | 19 + 136 files changed, 18468 insertions(+) create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-af.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ar-DZ.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ar.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-az.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-be.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-bg.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-bs.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ca.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-cs.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-cy-GB.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-da.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-de.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-el.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-AU.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-GB.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-NZ.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-eo.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-es.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-et.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-eu.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-fa.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-fi.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-fo.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr-CA.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr-CH.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-gl.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-he.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-hi.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-hr.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-hu.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-hy.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-id.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-is.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-it.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ja.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ka.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-kk.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-km.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ko.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ky.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-lb.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-lt.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-lv.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-mk.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ml.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ms.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-nb.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-nl-BE.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-nl.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-nn.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-no.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-pl.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-pt-BR.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-pt.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-rm.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ro.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ru.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-sk.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-sl.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-sq.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-sr-SR.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-sr.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-sv.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-ta.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-th.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-tj.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-tr.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-uk.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-vi.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-CN.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-HK.js create mode 100644 framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-TW.js create mode 100644 framework/yii/jui/assets/jquery.ui.accordion.js create mode 100644 framework/yii/jui/assets/jquery.ui.autocomplete.js create mode 100644 framework/yii/jui/assets/jquery.ui.button.js create mode 100644 framework/yii/jui/assets/jquery.ui.core.js create mode 100644 framework/yii/jui/assets/jquery.ui.datepicker.js create mode 100644 framework/yii/jui/assets/jquery.ui.dialog.js create mode 100644 framework/yii/jui/assets/jquery.ui.draggable.js create mode 100644 framework/yii/jui/assets/jquery.ui.droppable.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-blind.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-bounce.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-clip.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-drop.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-explode.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-fade.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-fold.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-highlight.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-pulsate.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-scale.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-shake.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-slide.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect-transfer.js create mode 100644 framework/yii/jui/assets/jquery.ui.effect.js create mode 100644 framework/yii/jui/assets/jquery.ui.menu.js create mode 100644 framework/yii/jui/assets/jquery.ui.mouse.js create mode 100644 framework/yii/jui/assets/jquery.ui.position.js create mode 100644 framework/yii/jui/assets/jquery.ui.progressbar.js create mode 100644 framework/yii/jui/assets/jquery.ui.resizable.js create mode 100644 framework/yii/jui/assets/jquery.ui.selectable.js create mode 100644 framework/yii/jui/assets/jquery.ui.slider.js create mode 100644 framework/yii/jui/assets/jquery.ui.sortable.js create mode 100644 framework/yii/jui/assets/jquery.ui.spinner.js create mode 100644 framework/yii/jui/assets/jquery.ui.tabs.js create mode 100644 framework/yii/jui/assets/jquery.ui.tooltip.js create mode 100644 framework/yii/jui/assets/jquery.ui.widget.js create mode 100644 framework/yii/jui/assets/themes/base/images/animated-overlay.gif create mode 100644 framework/yii/jui/assets/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-icons_222222_256x240.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-icons_2e83ff_256x240.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-icons_454545_256x240.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-icons_888888_256x240.png create mode 100644 framework/yii/jui/assets/themes/base/images/ui-icons_cd0a0a_256x240.png create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.accordion.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.autocomplete.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.button.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.core.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.datepicker.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.dialog.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.menu.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.progressbar.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.resizable.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.selectable.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.slider.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.spinner.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.tabs.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.theme.css create mode 100644 framework/yii/jui/assets/themes/base/jquery.ui.tooltip.css diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-af.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-af.js new file mode 100644 index 0000000..0922ef7 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-af.js @@ -0,0 +1,23 @@ +/* Afrikaans initialisation for the jQuery UI date picker plugin. */ +/* Written by Renier Pretorius. */ +jQuery(function($){ + $.datepicker.regional['af'] = { + closeText: 'Selekteer', + prevText: 'Vorige', + nextText: 'Volgende', + currentText: 'Vandag', + monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie', + 'Julie','Augustus','September','Oktober','November','Desember'], + monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', + 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], + dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], + dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'], + dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['af']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ar-DZ.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ar-DZ.js new file mode 100644 index 0000000..7b175af --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ar-DZ.js @@ -0,0 +1,23 @@ +/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/ +/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */ + +jQuery(function($){ + $.datepicker.regional['ar-DZ'] = { + closeText: 'إغلاق', + prevText: '<السابق', + nextText: 'التالي>', + currentText: 'اليوم', + monthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', + 'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'], + monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], + dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], + dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], + weekHeader: 'أسبوع', + dateFormat: 'dd/mm/yy', + firstDay: 6, + isRTL: true, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ar-DZ']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ar.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ar.js new file mode 100644 index 0000000..cef0f08 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ar.js @@ -0,0 +1,23 @@ +/* Arabic Translation for jQuery UI date picker plugin. */ +/* Khaled Alhourani -- me@khaledalhourani.com */ +/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */ +jQuery(function($){ + $.datepicker.regional['ar'] = { + closeText: 'إغلاق', + prevText: '<السابق', + nextText: 'التالي>', + currentText: 'اليوم', + monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران', + 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], + monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], + dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], + dayNamesMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], + weekHeader: 'أسبوع', + dateFormat: 'dd/mm/yy', + firstDay: 6, + isRTL: true, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ar']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-az.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-az.js new file mode 100644 index 0000000..a133a9e --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-az.js @@ -0,0 +1,23 @@ +/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Jamil Najafov (necefov33@gmail.com). */ +jQuery(function($) { + $.datepicker.regional['az'] = { + closeText: 'Bağla', + prevText: '<Geri', + nextText: 'İrəli>', + currentText: 'Bugün', + monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun', + 'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'], + monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun', + 'İyul','Avq','Sen','Okt','Noy','Dek'], + dayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'], + dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'], + dayNamesMin: ['B','B','Ç','С','Ç','C','Ş'], + weekHeader: 'Hf', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['az']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-be.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-be.js new file mode 100644 index 0000000..6ea12f7 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-be.js @@ -0,0 +1,23 @@ +/* Belarusian initialisation for the jQuery UI date picker plugin. */ +/* Written by Pavel Selitskas */ +jQuery(function($){ + $.datepicker.regional['be'] = { + closeText: 'Зачыніць', + prevText: '←Папяр.', + nextText: 'Наст.→', + currentText: 'Сёньня', + monthNames: ['Студзень','Люты','Сакавік','Красавік','Травень','Чэрвень', + 'Ліпень','Жнівень','Верасень','Кастрычнік','Лістапад','Сьнежань'], + monthNamesShort: ['Сту','Лют','Сак','Кра','Тра','Чэр', + 'Ліп','Жні','Вер','Кас','Ліс','Сьн'], + dayNames: ['нядзеля','панядзелак','аўторак','серада','чацьвер','пятніца','субота'], + dayNamesShort: ['ндз','пнд','аўт','срд','чцв','птн','сбт'], + dayNamesMin: ['Нд','Пн','Аў','Ср','Чц','Пт','Сб'], + weekHeader: 'Тд', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['be']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-bg.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-bg.js new file mode 100644 index 0000000..86ab885 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-bg.js @@ -0,0 +1,24 @@ +/* Bulgarian initialisation for the jQuery UI date picker plugin. */ +/* Written by Stoyan Kyosev (http://svest.org). */ +jQuery(function($){ + $.datepicker.regional['bg'] = { + closeText: 'затвори', + prevText: '<назад', + nextText: 'напред>', + nextBigText: '>>', + currentText: 'днес', + monthNames: ['Януари','Февруари','Март','Април','Май','Юни', + 'Юли','Август','Септември','Октомври','Ноември','Декември'], + monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни', + 'Юли','Авг','Сеп','Окт','Нов','Дек'], + dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'], + dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'], + dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'], + weekHeader: 'Wk', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['bg']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-bs.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-bs.js new file mode 100644 index 0000000..f08870f --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-bs.js @@ -0,0 +1,23 @@ +/* Bosnian i18n for the jQuery UI date picker plugin. */ +/* Written by Kenan Konjo. */ +jQuery(function($){ + $.datepicker.regional['bs'] = { + closeText: 'Zatvori', + prevText: '<', + nextText: '>', + currentText: 'Danas', + monthNames: ['Januar','Februar','Mart','April','Maj','Juni', + 'Juli','August','Septembar','Oktobar','Novembar','Decembar'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'], + dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'], + dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], + weekHeader: 'Wk', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['bs']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ca.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ca.js new file mode 100644 index 0000000..a10b549 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ca.js @@ -0,0 +1,23 @@ +/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */ +/* Writers: (joan.leon@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ca'] = { + closeText: 'Tanca', + prevText: 'Anterior', + nextText: 'Següent', + currentText: 'Avui', + monthNames: ['gener','febrer','març','abril','maig','juny', + 'juliol','agost','setembre','octubre','novembre','desembre'], + monthNamesShort: ['gen','feb','març','abr','maig','juny', + 'jul','ag','set','oct','nov','des'], + dayNames: ['diumenge','dilluns','dimarts','dimecres','dijous','divendres','dissabte'], + dayNamesShort: ['dg','dl','dt','dc','dj','dv','ds'], + dayNamesMin: ['dg','dl','dt','dc','dj','dv','ds'], + weekHeader: 'Set', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ca']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-cs.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-cs.js new file mode 100644 index 0000000..b96b1a5 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-cs.js @@ -0,0 +1,23 @@ +/* Czech initialisation for the jQuery UI date picker plugin. */ +/* Written by Tomas Muller (tomas@tomas-muller.net). */ +jQuery(function($){ + $.datepicker.regional['cs'] = { + closeText: 'Zavřít', + prevText: '<Dříve', + nextText: 'Později>', + currentText: 'Nyní', + monthNames: ['leden','únor','březen','duben','květen','červen', + 'červenec','srpen','září','říjen','listopad','prosinec'], + monthNamesShort: ['led','úno','bře','dub','kvě','čer', + 'čvc','srp','zář','říj','lis','pro'], + dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], + dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], + dayNamesMin: ['ne','po','út','st','čt','pá','so'], + weekHeader: 'Týd', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['cs']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-cy-GB.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-cy-GB.js new file mode 100644 index 0000000..cf3a38e --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-cy-GB.js @@ -0,0 +1,23 @@ +/* Welsh/UK initialisation for the jQuery UI date picker plugin. */ +/* Written by William Griffiths. */ +jQuery(function($){ + $.datepicker.regional['cy-GB'] = { + closeText: 'Done', + prevText: 'Prev', + nextText: 'Next', + currentText: 'Today', + monthNames: ['Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin', + 'Gorffennaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr'], + monthNamesShort: ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh', + 'Gor', 'Aws', 'Med', 'Hyd', 'Tac', 'Rha'], + dayNames: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'], + dayNamesShort: ['Sul', 'Llu', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'], + dayNamesMin: ['Su','Ll','Ma','Me','Ia','Gw','Sa'], + weekHeader: 'Wy', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['cy-GB']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-da.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-da.js new file mode 100644 index 0000000..7e42948 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-da.js @@ -0,0 +1,23 @@ +/* Danish initialisation for the jQuery UI date picker plugin. */ +/* Written by Jan Christensen ( deletestuff@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['da'] = { + closeText: 'Luk', + prevText: '<Forrige', + nextText: 'Næste>', + currentText: 'Idag', + monthNames: ['Januar','Februar','Marts','April','Maj','Juni', + 'Juli','August','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], + dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], + dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], + weekHeader: 'Uge', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['da']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-de.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-de.js new file mode 100644 index 0000000..abe75c4 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-de.js @@ -0,0 +1,23 @@ +/* German initialisation for the jQuery UI date picker plugin. */ +/* Written by Milian Wolff (mail@milianw.de). */ +jQuery(function($){ + $.datepicker.regional['de'] = { + closeText: 'Schließen', + prevText: '<Zurück', + nextText: 'Vor>', + currentText: 'Heute', + monthNames: ['Januar','Februar','März','April','Mai','Juni', + 'Juli','August','September','Oktober','November','Dezember'], + monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dez'], + dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], + dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], + dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], + weekHeader: 'KW', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['de']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-el.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-el.js new file mode 100644 index 0000000..1ac4756 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-el.js @@ -0,0 +1,23 @@ +/* Greek (el) initialisation for the jQuery UI date picker plugin. */ +/* Written by Alex Cicovic (http://www.alexcicovic.com) */ +jQuery(function($){ + $.datepicker.regional['el'] = { + closeText: 'Κλείσιμο', + prevText: 'Προηγούμενος', + nextText: 'Επόμενος', + currentText: 'Τρέχων Μήνας', + monthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος', + 'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'], + monthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν', + 'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'], + dayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'], + dayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'], + dayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'], + weekHeader: 'Εβδ', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['el']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-AU.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-AU.js new file mode 100644 index 0000000..c1a1020 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-AU.js @@ -0,0 +1,23 @@ +/* English/Australia initialisation for the jQuery UI date picker plugin. */ +/* Based on the en-GB initialisation. */ +jQuery(function($){ + $.datepicker.regional['en-AU'] = { + closeText: 'Done', + prevText: 'Prev', + nextText: 'Next', + currentText: 'Today', + monthNames: ['January','February','March','April','May','June', + 'July','August','September','October','November','December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['en-AU']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-GB.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-GB.js new file mode 100644 index 0000000..16a096e --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-GB.js @@ -0,0 +1,23 @@ +/* English/UK initialisation for the jQuery UI date picker plugin. */ +/* Written by Stuart. */ +jQuery(function($){ + $.datepicker.regional['en-GB'] = { + closeText: 'Done', + prevText: 'Prev', + nextText: 'Next', + currentText: 'Today', + monthNames: ['January','February','March','April','May','June', + 'July','August','September','October','November','December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['en-GB']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-NZ.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-NZ.js new file mode 100644 index 0000000..7819df0 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-en-NZ.js @@ -0,0 +1,23 @@ +/* English/New Zealand initialisation for the jQuery UI date picker plugin. */ +/* Based on the en-GB initialisation. */ +jQuery(function($){ + $.datepicker.regional['en-NZ'] = { + closeText: 'Done', + prevText: 'Prev', + nextText: 'Next', + currentText: 'Today', + monthNames: ['January','February','March','April','May','June', + 'July','August','September','October','November','December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['en-NZ']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-eo.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-eo.js new file mode 100644 index 0000000..39e44fc --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-eo.js @@ -0,0 +1,23 @@ +/* Esperanto initialisation for the jQuery UI date picker plugin. */ +/* Written by Olivier M. (olivierweb@ifrance.com). */ +jQuery(function($){ + $.datepicker.regional['eo'] = { + closeText: 'Fermi', + prevText: '<Anta', + nextText: 'Sekv>', + currentText: 'Nuna', + monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio', + 'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aŭg','Sep','Okt','Nov','Dec'], + dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'], + dayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'], + weekHeader: 'Sb', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['eo']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-es.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-es.js new file mode 100644 index 0000000..97a2d6e --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-es.js @@ -0,0 +1,23 @@ +/* Inicialización en español para la extensión 'UI date picker' para jQuery. */ +/* Traducido por Vester (xvester@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['es'] = { + closeText: 'Cerrar', + prevText: '<Ant', + nextText: 'Sig>', + currentText: 'Hoy', + monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', + 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], + monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun', + 'Jul','Ago','Sep','Oct','Nov','Dic'], + dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'], + dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'], + dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['es']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-et.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-et.js new file mode 100644 index 0000000..62cbea8 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-et.js @@ -0,0 +1,23 @@ +/* Estonian initialisation for the jQuery UI date picker plugin. */ +/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */ +jQuery(function($){ + $.datepicker.regional['et'] = { + closeText: 'Sulge', + prevText: 'Eelnev', + nextText: 'Järgnev', + currentText: 'Täna', + monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni', + 'Juuli','August','September','Oktoober','November','Detsember'], + monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni', + 'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'], + dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'], + dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'], + dayNamesMin: ['P','E','T','K','N','R','L'], + weekHeader: 'näd', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['et']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-eu.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-eu.js new file mode 100644 index 0000000..a71db2c --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-eu.js @@ -0,0 +1,23 @@ +/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */ +/* Karrikas-ek itzulia (karrikas@karrikas.com) */ +jQuery(function($){ + $.datepicker.regional['eu'] = { + closeText: 'Egina', + prevText: '<Aur', + nextText: 'Hur>', + currentText: 'Gaur', + monthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina', + 'uztaila','abuztua','iraila','urria','azaroa','abendua'], + monthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.', + 'uzt.','abu.','ira.','urr.','aza.','abe.'], + dayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'], + dayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'], + dayNamesMin: ['ig','al','ar','az','og','ol','lr'], + weekHeader: 'As', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['eu']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fa.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fa.js new file mode 100644 index 0000000..bb957f6 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fa.js @@ -0,0 +1,59 @@ +/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ +/* Javad Mowlanezhad -- jmowla@gmail.com */ +/* Jalali calendar should supported soon! (Its implemented but I have to test it) */ +jQuery(function($) { + $.datepicker.regional['fa'] = { + closeText: 'بستن', + prevText: '<قبلی', + nextText: 'بعدی>', + currentText: 'امروز', + monthNames: [ + 'فروردين', + 'ارديبهشت', + 'خرداد', + 'تير', + 'مرداد', + 'شهريور', + 'مهر', + 'آبان', + 'آذر', + 'دی', + 'بهمن', + 'اسفند' + ], + monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], + dayNames: [ + 'يکشنبه', + 'دوشنبه', + 'سه‌شنبه', + 'چهارشنبه', + 'پنجشنبه', + 'جمعه', + 'شنبه' + ], + dayNamesShort: [ + 'ی', + 'د', + 'س', + 'چ', + 'پ', + 'ج', + 'ش' + ], + dayNamesMin: [ + 'ی', + 'د', + 'س', + 'چ', + 'پ', + 'ج', + 'ش' + ], + weekHeader: 'هف', + dateFormat: 'yy/mm/dd', + firstDay: 6, + isRTL: true, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fa']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fi.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fi.js new file mode 100644 index 0000000..bd6d994 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fi.js @@ -0,0 +1,23 @@ +/* Finnish initialisation for the jQuery UI date picker plugin. */ +/* Written by Harri Kilpiö (harrikilpio@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['fi'] = { + closeText: 'Sulje', + prevText: '«Edellinen', + nextText: 'Seuraava»', + currentText: 'Tänään', + monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu', + 'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'], + monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä', + 'Heinä','Elo','Syys','Loka','Marras','Joulu'], + dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','La'], + dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'], + dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'], + weekHeader: 'Vk', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fi']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fo.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fo.js new file mode 100644 index 0000000..cb0e3de --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fo.js @@ -0,0 +1,23 @@ +/* Faroese initialisation for the jQuery UI date picker plugin */ +/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */ +jQuery(function($){ + $.datepicker.regional['fo'] = { + closeText: 'Lat aftur', + prevText: '<Fyrra', + nextText: 'Næsta>', + currentText: 'Í dag', + monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni', + 'Juli','August','September','Oktober','November','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', + 'Jul','Aug','Sep','Okt','Nov','Des'], + dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'], + dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'], + dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'], + weekHeader: 'Vk', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fo']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr-CA.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr-CA.js new file mode 100644 index 0000000..e208221 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr-CA.js @@ -0,0 +1,23 @@ +/* Canadian-French initialisation for the jQuery UI date picker plugin. */ +jQuery(function ($) { + $.datepicker.regional['fr-CA'] = { + closeText: 'Fermer', + prevText: 'Précédent', + nextText: 'Suivant', + currentText: 'Aujourd\'hui', + monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', + 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'], + monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin', + 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'], + dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], + dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + weekHeader: 'Sem.', + dateFormat: 'yy-mm-dd', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: '' + }; + $.datepicker.setDefaults($.datepicker.regional['fr-CA']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr-CH.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr-CH.js new file mode 100644 index 0000000..e574537 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr-CH.js @@ -0,0 +1,23 @@ +/* Swiss-French initialisation for the jQuery UI date picker plugin. */ +/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */ +jQuery(function($){ + $.datepicker.regional['fr-CH'] = { + closeText: 'Fermer', + prevText: '<Préc', + nextText: 'Suiv>', + currentText: 'Courant', + monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', + 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], + monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', + 'Jul','Aoû','Sep','Oct','Nov','Déc'], + dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], + dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], + weekHeader: 'Sm', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fr-CH']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr.js new file mode 100644 index 0000000..934afd1 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-fr.js @@ -0,0 +1,25 @@ +/* French initialisation for the jQuery UI date picker plugin. */ +/* Written by Keith Wood (kbwood{at}iinet.com.au), + Stéphane Nahmani (sholby@sholby.net), + Stéphane Raimbault */ +jQuery(function($){ + $.datepicker.regional['fr'] = { + closeText: 'Fermer', + prevText: 'Précédent', + nextText: 'Suivant', + currentText: 'Aujourd\'hui', + monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', + 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], + monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin', + 'Juil.','Août','Sept.','Oct.','Nov.','Déc.'], + dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], + dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'], + dayNamesMin: ['D','L','M','M','J','V','S'], + weekHeader: 'Sem.', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fr']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-gl.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-gl.js new file mode 100644 index 0000000..59b989a --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-gl.js @@ -0,0 +1,23 @@ +/* Galician localization for 'UI date picker' jQuery extension. */ +/* Translated by Jorge Barreiro . */ +jQuery(function($){ + $.datepicker.regional['gl'] = { + closeText: 'Pechar', + prevText: '<Ant', + nextText: 'Seg>', + currentText: 'Hoxe', + monthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño', + 'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'], + monthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ', + 'Xul','Ago','Set','Out','Nov','Dec'], + dayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'], + dayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'], + dayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['gl']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-he.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-he.js new file mode 100644 index 0000000..b9e8dee --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-he.js @@ -0,0 +1,23 @@ +/* Hebrew initialisation for the UI Datepicker extension. */ +/* Written by Amir Hardon (ahardon at gmail dot com). */ +jQuery(function($){ + $.datepicker.regional['he'] = { + closeText: 'סגור', + prevText: '<הקודם', + nextText: 'הבא>', + currentText: 'היום', + monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני', + 'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'], + monthNamesShort: ['ינו','פבר','מרץ','אפר','מאי','יוני', + 'יולי','אוג','ספט','אוק','נוב','דצמ'], + dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'], + dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'], + dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: true, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['he']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hi.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hi.js new file mode 100644 index 0000000..6c563b9 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hi.js @@ -0,0 +1,23 @@ +/* Hindi initialisation for the jQuery UI date picker plugin. */ +/* Written by Michael Dawart. */ +jQuery(function($){ + $.datepicker.regional['hi'] = { + closeText: 'बंद', + prevText: 'पिछला', + nextText: 'अगला', + currentText: 'आज', + monthNames: ['जनवरी ','फरवरी','मार्च','अप्रेल','मई','जून', + 'जूलाई','अगस्त ','सितम्बर','अक्टूबर','नवम्बर','दिसम्बर'], + monthNamesShort: ['जन', 'फर', 'मार्च', 'अप्रेल', 'मई', 'जून', + 'जूलाई', 'अग', 'सित', 'अक्ट', 'नव', 'दि'], + dayNames: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'], + dayNamesShort: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'], + dayNamesMin: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'], + weekHeader: 'हफ्ता', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['hi']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hr.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hr.js new file mode 100644 index 0000000..2fe37b6 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hr.js @@ -0,0 +1,23 @@ +/* Croatian i18n for the jQuery UI date picker plugin. */ +/* Written by Vjekoslav Nesek. */ +jQuery(function($){ + $.datepicker.regional['hr'] = { + closeText: 'Zatvori', + prevText: '<', + nextText: '>', + currentText: 'Danas', + monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj', + 'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'], + monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip', + 'Srp','Kol','Ruj','Lis','Stu','Pro'], + dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'], + dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'], + dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], + weekHeader: 'Tje', + dateFormat: 'dd.mm.yy.', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['hr']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hu.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hu.js new file mode 100644 index 0000000..b28c268 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hu.js @@ -0,0 +1,23 @@ +/* Hungarian initialisation for the jQuery UI date picker plugin. */ +/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */ +jQuery(function($){ + $.datepicker.regional['hu'] = { + closeText: 'bezár', + prevText: 'vissza', + nextText: 'előre', + currentText: 'ma', + monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', + 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', + 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'], + dayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], + dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'], + dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], + weekHeader: 'Hét', + dateFormat: 'yy.mm.dd.', + firstDay: 1, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['hu']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hy.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hy.js new file mode 100644 index 0000000..6d4eca5 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-hy.js @@ -0,0 +1,23 @@ +/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/ +jQuery(function($){ + $.datepicker.regional['hy'] = { + closeText: 'Փակել', + prevText: '<Նախ.', + nextText: 'Հաջ.>', + currentText: 'Այսօր', + monthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս', + 'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'], + monthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս', + 'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'], + dayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'], + dayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'], + dayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'], + weekHeader: 'ՇԲՏ', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['hy']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-id.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-id.js new file mode 100644 index 0000000..6327fa6 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-id.js @@ -0,0 +1,23 @@ +/* Indonesian initialisation for the jQuery UI date picker plugin. */ +/* Written by Deden Fathurahman (dedenf@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['id'] = { + closeText: 'Tutup', + prevText: '<mundur', + nextText: 'maju>', + currentText: 'hari ini', + monthNames: ['Januari','Februari','Maret','April','Mei','Juni', + 'Juli','Agustus','September','Oktober','Nopember','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', + 'Jul','Agus','Sep','Okt','Nop','Des'], + dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'], + dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'], + dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'], + weekHeader: 'Mg', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['id']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-is.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-is.js new file mode 100644 index 0000000..925341a --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-is.js @@ -0,0 +1,23 @@ +/* Icelandic initialisation for the jQuery UI date picker plugin. */ +/* Written by Haukur H. Thorsson (haukur@eskill.is). */ +jQuery(function($){ + $.datepicker.regional['is'] = { + closeText: 'Loka', + prevText: '< Fyrri', + nextText: 'Næsti >', + currentText: 'Í dag', + monthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní', + 'Júlí','Ágúst','September','Október','Nóvember','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún', + 'Júl','Ágú','Sep','Okt','Nóv','Des'], + dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'], + dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'], + dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'], + weekHeader: 'Vika', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['is']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-it.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-it.js new file mode 100644 index 0000000..a01f043 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-it.js @@ -0,0 +1,23 @@ +/* Italian initialisation for the jQuery UI date picker plugin. */ +/* Written by Antonello Pasella (antonello.pasella@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['it'] = { + closeText: 'Chiudi', + prevText: '<Prec', + nextText: 'Succ>', + currentText: 'Oggi', + monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno', + 'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], + monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu', + 'Lug','Ago','Set','Ott','Nov','Dic'], + dayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'], + dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], + dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['it']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ja.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ja.js new file mode 100644 index 0000000..4d0b63c --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ja.js @@ -0,0 +1,23 @@ +/* Japanese initialisation for the jQuery UI date picker plugin. */ +/* Written by Kentaro SATO (kentaro@ranvis.com). */ +jQuery(function($){ + $.datepicker.regional['ja'] = { + closeText: '閉じる', + prevText: '<前', + nextText: '次>', + currentText: '今日', + monthNames: ['1月','2月','3月','4月','5月','6月', + '7月','8月','9月','10月','11月','12月'], + monthNamesShort: ['1月','2月','3月','4月','5月','6月', + '7月','8月','9月','10月','11月','12月'], + dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'], + dayNamesShort: ['日','月','火','水','木','金','土'], + dayNamesMin: ['日','月','火','水','木','金','土'], + weekHeader: '週', + dateFormat: 'yy/mm/dd', + firstDay: 0, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: '年'}; + $.datepicker.setDefaults($.datepicker.regional['ja']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ka.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ka.js new file mode 100644 index 0000000..c10658d --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ka.js @@ -0,0 +1,21 @@ +/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Lado Lomidze (lado.lomidze@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ka'] = { + closeText: 'დახურვა', + prevText: '< წინა', + nextText: 'შემდეგი >', + currentText: 'დღეს', + monthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'], + monthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'], + dayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'], + dayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'], + dayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'], + weekHeader: 'კვირა', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ka']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-kk.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-kk.js new file mode 100644 index 0000000..dcd6a65 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-kk.js @@ -0,0 +1,23 @@ +/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['kk'] = { + closeText: 'Жабу', + prevText: '<Алдыңғы', + nextText: 'Келесі>', + currentText: 'Бүгін', + monthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым', + 'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'], + monthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау', + 'Шіл','Там','Қыр','Қаз','Қар','Жел'], + dayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'], + dayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'], + dayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'], + weekHeader: 'Не', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['kk']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-km.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-km.js new file mode 100644 index 0000000..f9c4e3a --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-km.js @@ -0,0 +1,23 @@ +/* Khmer initialisation for the jQuery calendar extension. */ +/* Written by Chandara Om (chandara.teacher@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['km'] = { + closeText: 'ធ្វើ​រួច', + prevText: 'មុន', + nextText: 'បន្ទាប់', + currentText: 'ថ្ងៃ​នេះ', + monthNames: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា', + 'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'], + monthNamesShort: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា', + 'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'], + dayNames: ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'], + dayNamesShort: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'], + dayNamesMin: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'], + weekHeader: 'សប្ដាហ៍', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['km']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ko.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ko.js new file mode 100644 index 0000000..af36f3d --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ko.js @@ -0,0 +1,23 @@ +/* Korean initialisation for the jQuery calendar extension. */ +/* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie. */ +jQuery(function($){ + $.datepicker.regional['ko'] = { + closeText: '닫기', + prevText: '이전달', + nextText: '다음달', + currentText: '오늘', + monthNames: ['1월','2월','3월','4월','5월','6월', + '7월','8월','9월','10월','11월','12월'], + monthNamesShort: ['1월','2월','3월','4월','5월','6월', + '7월','8월','9월','10월','11월','12월'], + dayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'], + dayNamesShort: ['일','월','화','수','목','금','토'], + dayNamesMin: ['일','월','화','수','목','금','토'], + weekHeader: 'Wk', + dateFormat: 'yy-mm-dd', + firstDay: 0, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: '년'}; + $.datepicker.setDefaults($.datepicker.regional['ko']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ky.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ky.js new file mode 100644 index 0000000..d4466b1 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ky.js @@ -0,0 +1,24 @@ +/* Kyrgyz (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Sergey Kartashov (ebishkek@yandex.ru). */ +jQuery(function($){ + $.datepicker.regional['ky'] = { + closeText: 'Жабуу', + prevText: '<Мур', + nextText: 'Кий>', + currentText: 'Бүгүн', + monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', + 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], + monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', + 'Июл','Авг','Сен','Окт','Ноя','Дек'], + dayNames: ['жекшемби', 'дүйшөмбү', 'шейшемби', 'шаршемби', 'бейшемби', 'жума', 'ишемби'], + dayNamesShort: ['жек', 'дүй', 'шей', 'шар', 'бей', 'жум', 'ише'], + dayNamesMin: ['Жк','Дш','Шш','Шр','Бш','Жм','Иш'], + weekHeader: 'Жум', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: '' + }; + $.datepicker.setDefaults($.datepicker.regional['ky']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-lb.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-lb.js new file mode 100644 index 0000000..87c79d5 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-lb.js @@ -0,0 +1,23 @@ +/* Luxembourgish initialisation for the jQuery UI date picker plugin. */ +/* Written by Michel Weimerskirch */ +jQuery(function($){ + $.datepicker.regional['lb'] = { + closeText: 'Fäerdeg', + prevText: 'Zréck', + nextText: 'Weider', + currentText: 'Haut', + monthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni', + 'Juli','August','September','Oktober','November','Dezember'], + monthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun', + 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], + dayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'], + dayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'], + dayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'], + weekHeader: 'W', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['lb']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-lt.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-lt.js new file mode 100644 index 0000000..1afaaac --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-lt.js @@ -0,0 +1,23 @@ +/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* @author Arturas Paleicikas */ +jQuery(function($){ + $.datepicker.regional['lt'] = { + closeText: 'Uždaryti', + prevText: '<Atgal', + nextText: 'Pirmyn>', + currentText: 'Šiandien', + monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis', + 'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'], + monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir', + 'Lie','Rugp','Rugs','Spa','Lap','Gru'], + dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'], + dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'], + dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'], + weekHeader: 'Wk', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['lt']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-lv.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-lv.js new file mode 100644 index 0000000..28cc102 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-lv.js @@ -0,0 +1,23 @@ +/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* @author Arturas Paleicikas */ +jQuery(function($){ + $.datepicker.regional['lv'] = { + closeText: 'Aizvērt', + prevText: 'Iepr', + nextText: 'Nāka', + currentText: 'Šodien', + monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs', + 'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn', + 'Jūl','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'], + dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'], + dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'], + weekHeader: 'Nav', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['lv']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-mk.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-mk.js new file mode 100644 index 0000000..0285325 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-mk.js @@ -0,0 +1,23 @@ +/* Macedonian i18n for the jQuery UI date picker plugin. */ +/* Written by Stojce Slavkovski. */ +jQuery(function($){ + $.datepicker.regional['mk'] = { + closeText: 'Затвори', + prevText: '<', + nextText: '>', + currentText: 'Денес', + monthNames: ['Јануари','Февруари','Март','Април','Мај','Јуни', + 'Јули','Август','Септември','Октомври','Ноември','Декември'], + monthNamesShort: ['Јан','Фев','Мар','Апр','Мај','Јун', + 'Јул','Авг','Сеп','Окт','Ное','Дек'], + dayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'], + dayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'], + dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'], + weekHeader: 'Сед', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['mk']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ml.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ml.js new file mode 100644 index 0000000..9b8f460 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ml.js @@ -0,0 +1,23 @@ +/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Saji Nediyanchath (saji89@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ml'] = { + closeText: 'ശരി', + prevText: 'മുന്നത്തെ', + nextText: 'അടുത്തത് ', + currentText: 'ഇന്ന്', + monthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍', + 'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'], + monthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍', + 'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'], + dayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], + dayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], + dayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'], + weekHeader: 'ആ', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ml']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ms.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ms.js new file mode 100644 index 0000000..e70de72 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ms.js @@ -0,0 +1,23 @@ +/* Malaysian initialisation for the jQuery UI date picker plugin. */ +/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */ +jQuery(function($){ + $.datepicker.regional['ms'] = { + closeText: 'Tutup', + prevText: '<Sebelum', + nextText: 'Selepas>', + currentText: 'hari ini', + monthNames: ['Januari','Februari','Mac','April','Mei','Jun', + 'Julai','Ogos','September','Oktober','November','Disember'], + monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun', + 'Jul','Ogo','Sep','Okt','Nov','Dis'], + dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'], + dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'], + dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'], + weekHeader: 'Mg', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ms']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nb.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nb.js new file mode 100644 index 0000000..845a505 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nb.js @@ -0,0 +1,22 @@ +/* Norwegian Bokmål initialisation for the jQuery UI date picker plugin. */ +/* Written by Bjørn Johansen (post@bjornjohansen.no). */ +jQuery(function($){ + $.datepicker.regional['nb'] = { + closeText: 'Lukk', + prevText: '«Forrige', + nextText: 'Neste»', + currentText: 'I dag', + monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], + monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], + dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'], + dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'], + dayNamesMin: ['sø','ma','ti','on','to','fr','lø'], + weekHeader: 'Uke', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: '' + }; + $.datepicker.setDefaults($.datepicker.regional['nb']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nl-BE.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nl-BE.js new file mode 100644 index 0000000..7b3cdf4 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nl-BE.js @@ -0,0 +1,23 @@ +/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */ +/* David De Sloovere @DavidDeSloovere */ +jQuery(function($){ + $.datepicker.regional['nl-BE'] = { + closeText: 'Sluiten', + prevText: '←', + nextText: '→', + currentText: 'Vandaag', + monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', + 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], + monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', + 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], + dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], + dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], + dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['nl-BE']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nl.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nl.js new file mode 100644 index 0000000..203f160 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nl.js @@ -0,0 +1,23 @@ +/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Mathias Bynens */ +jQuery(function($){ + $.datepicker.regional.nl = { + closeText: 'Sluiten', + prevText: '←', + nextText: '→', + currentText: 'Vandaag', + monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', + 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], + monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', + 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], + dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], + dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], + dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], + weekHeader: 'Wk', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional.nl); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nn.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nn.js new file mode 100644 index 0000000..b55245e --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-nn.js @@ -0,0 +1,22 @@ +/* Norwegian Nynorsk initialisation for the jQuery UI date picker plugin. */ +/* Written by Bjørn Johansen (post@bjornjohansen.no). */ +jQuery(function($){ + $.datepicker.regional['nn'] = { + closeText: 'Lukk', + prevText: '«Førre', + nextText: 'Neste»', + currentText: 'I dag', + monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], + monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], + dayNamesShort: ['sun','mån','tys','ons','tor','fre','lau'], + dayNames: ['sundag','måndag','tysdag','onsdag','torsdag','fredag','laurdag'], + dayNamesMin: ['su','må','ty','on','to','fr','la'], + weekHeader: 'Veke', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: '' + }; + $.datepicker.setDefaults($.datepicker.regional['nn']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-no.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-no.js new file mode 100644 index 0000000..d36e430 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-no.js @@ -0,0 +1,23 @@ +/* Norwegian initialisation for the jQuery UI date picker plugin. */ +/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ + +jQuery(function($){ + $.datepicker.regional['no'] = { + closeText: 'Lukk', + prevText: '«Forrige', + nextText: 'Neste»', + currentText: 'I dag', + monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], + monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], + dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'], + dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'], + dayNamesMin: ['sø','ma','ti','on','to','fr','lø'], + weekHeader: 'Uke', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: '' + }; + $.datepicker.setDefaults($.datepicker.regional['no']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-pl.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-pl.js new file mode 100644 index 0000000..0ffc515 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-pl.js @@ -0,0 +1,23 @@ +/* Polish initialisation for the jQuery UI date picker plugin. */ +/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['pl'] = { + closeText: 'Zamknij', + prevText: '<Poprzedni', + nextText: 'Następny>', + currentText: 'Dziś', + monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec', + 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'], + monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze', + 'Lip','Sie','Wrz','Pa','Lis','Gru'], + dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'], + dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'], + dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'], + weekHeader: 'Tydz', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['pl']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-pt-BR.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-pt-BR.js new file mode 100644 index 0000000..521967e --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-pt-BR.js @@ -0,0 +1,23 @@ +/* Brazilian initialisation for the jQuery UI date picker plugin. */ +/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['pt-BR'] = { + closeText: 'Fechar', + prevText: '<Anterior', + nextText: 'Próximo>', + currentText: 'Hoje', + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', + 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Out','Nov','Dez'], + dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['pt-BR']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-pt.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-pt.js new file mode 100644 index 0000000..999f20e --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-pt.js @@ -0,0 +1,22 @@ +/* Portuguese initialisation for the jQuery UI date picker plugin. */ +jQuery(function($){ + $.datepicker.regional['pt'] = { + closeText: 'Fechar', + prevText: '<Anterior', + nextText: 'Seguinte', + currentText: 'Hoje', + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', + 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Out','Nov','Dez'], + dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + weekHeader: 'Sem', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['pt']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-rm.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-rm.js new file mode 100644 index 0000000..22ed216 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-rm.js @@ -0,0 +1,21 @@ +/* Romansh initialisation for the jQuery UI date picker plugin. */ +/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */ +jQuery(function($){ + $.datepicker.regional['rm'] = { + closeText: 'Serrar', + prevText: '<Suandant', + nextText: 'Precedent>', + currentText: 'Actual', + monthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'], + monthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'], + dayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'], + dayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'], + dayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'], + weekHeader: 'emna', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['rm']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ro.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ro.js new file mode 100644 index 0000000..a988270 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ro.js @@ -0,0 +1,26 @@ +/* Romanian initialisation for the jQuery UI date picker plugin. + * + * Written by Edmond L. (ll_edmond@walla.com) + * and Ionut G. Stan (ionut.g.stan@gmail.com) + */ +jQuery(function($){ + $.datepicker.regional['ro'] = { + closeText: 'Închide', + prevText: '« Luna precedentă', + nextText: 'Luna următoare »', + currentText: 'Azi', + monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie', + 'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'], + monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', + 'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'], + dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], + dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'], + weekHeader: 'Săpt', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ro']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ru.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ru.js new file mode 100644 index 0000000..a519714 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ru.js @@ -0,0 +1,23 @@ +/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Andrew Stromnov (stromnov@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ru'] = { + closeText: 'Закрыть', + prevText: '<Пред', + nextText: 'След>', + currentText: 'Сегодня', + monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', + 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], + monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', + 'Июл','Авг','Сен','Окт','Ноя','Дек'], + dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'], + dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'], + dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], + weekHeader: 'Нед', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ru']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sk.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sk.js new file mode 100644 index 0000000..0cb76c4 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sk.js @@ -0,0 +1,23 @@ +/* Slovak initialisation for the jQuery UI date picker plugin. */ +/* Written by Vojtech Rinik (vojto@hmm.sk). */ +jQuery(function($){ + $.datepicker.regional['sk'] = { + closeText: 'Zavrieť', + prevText: '<Predchádzajúci', + nextText: 'Nasledujúci>', + currentText: 'Dnes', + monthNames: ['január','február','marec','apríl','máj','jún', + 'júl','august','september','október','november','december'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', + 'Júl','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['nedeľa','pondelok','utorok','streda','štvrtok','piatok','sobota'], + dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'], + dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'], + weekHeader: 'Ty', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sk']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sl.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sl.js new file mode 100644 index 0000000..048a47a --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sl.js @@ -0,0 +1,24 @@ +/* Slovenian initialisation for the jQuery UI date picker plugin. */ +/* Written by Jaka Jancar (jaka@kubje.org). */ +/* c = č, s = š z = ž C = Č S = Š Z = Ž */ +jQuery(function($){ + $.datepicker.regional['sl'] = { + closeText: 'Zapri', + prevText: '<Prejšnji', + nextText: 'Naslednji>', + currentText: 'Trenutni', + monthNames: ['Januar','Februar','Marec','April','Maj','Junij', + 'Julij','Avgust','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Avg','Sep','Okt','Nov','Dec'], + dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'], + dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'], + dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'], + weekHeader: 'Teden', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sl']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sq.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sq.js new file mode 100644 index 0000000..d6086a7 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sq.js @@ -0,0 +1,23 @@ +/* Albanian initialisation for the jQuery UI date picker plugin. */ +/* Written by Flakron Bytyqi (flakron@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['sq'] = { + closeText: 'mbylle', + prevText: '<mbrapa', + nextText: 'Përpara>', + currentText: 'sot', + monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor', + 'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'], + monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer', + 'Kor','Gus','Sht','Tet','Nën','Dhj'], + dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'], + dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'], + dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'], + weekHeader: 'Ja', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sq']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sr-SR.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sr-SR.js new file mode 100644 index 0000000..810d21d --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sr-SR.js @@ -0,0 +1,23 @@ +/* Serbian i18n for the jQuery UI date picker plugin. */ +/* Written by Dejan Dimić. */ +jQuery(function($){ + $.datepicker.regional['sr-SR'] = { + closeText: 'Zatvori', + prevText: '<', + nextText: '>', + currentText: 'Danas', + monthNames: ['Januar','Februar','Mart','April','Maj','Jun', + 'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Avg','Sep','Okt','Nov','Dec'], + dayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'], + dayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'], + dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], + weekHeader: 'Sed', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sr-SR']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sr.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sr.js new file mode 100644 index 0000000..1349a26 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sr.js @@ -0,0 +1,23 @@ +/* Serbian i18n for the jQuery UI date picker plugin. */ +/* Written by Dejan Dimić. */ +jQuery(function($){ + $.datepicker.regional['sr'] = { + closeText: 'Затвори', + prevText: '<', + nextText: '>', + currentText: 'Данас', + monthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун', + 'Јул','Август','Септембар','Октобар','Новембар','Децембар'], + monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун', + 'Јул','Авг','Сеп','Окт','Нов','Дец'], + dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'], + dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'], + dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'], + weekHeader: 'Сед', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sr']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sv.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sv.js new file mode 100644 index 0000000..cbb5ad1 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-sv.js @@ -0,0 +1,23 @@ +/* Swedish initialisation for the jQuery UI date picker plugin. */ +/* Written by Anders Ekdahl ( anders@nomadiz.se). */ +jQuery(function($){ + $.datepicker.regional['sv'] = { + closeText: 'Stäng', + prevText: '«Förra', + nextText: 'Nästa»', + currentText: 'Idag', + monthNames: ['Januari','Februari','Mars','April','Maj','Juni', + 'Juli','Augusti','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'], + dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'], + dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'], + weekHeader: 'Ve', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sv']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ta.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ta.js new file mode 100644 index 0000000..40431ed --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-ta.js @@ -0,0 +1,23 @@ +/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by S A Sureshkumar (saskumar@live.com). */ +jQuery(function($){ + $.datepicker.regional['ta'] = { + closeText: 'மூடு', + prevText: 'முன்னையது', + nextText: 'அடுத்தது', + currentText: 'இன்று', + monthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி', + 'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'], + monthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி', + 'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'], + dayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'], + dayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'], + dayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'], + weekHeader: 'Не', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ta']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-th.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-th.js new file mode 100644 index 0000000..aecfd27 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-th.js @@ -0,0 +1,23 @@ +/* Thai initialisation for the jQuery UI date picker plugin. */ +/* Written by pipo (pipo@sixhead.com). */ +jQuery(function($){ + $.datepicker.regional['th'] = { + closeText: 'ปิด', + prevText: '« ย้อน', + nextText: 'ถัดไป »', + currentText: 'วันนี้', + monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน', + 'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'], + monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.', + 'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'], + dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'], + dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], + dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['th']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-tj.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-tj.js new file mode 100644 index 0000000..9a20e4d --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-tj.js @@ -0,0 +1,23 @@ +/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Abdurahmon Saidov (saidovab@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['tj'] = { + closeText: 'Идома', + prevText: '<Қафо', + nextText: 'Пеш>', + currentText: 'Имрӯз', + monthNames: ['Январ','Феврал','Март','Апрел','Май','Июн', + 'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'], + monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', + 'Июл','Авг','Сен','Окт','Ноя','Дек'], + dayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'], + dayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'], + dayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'], + weekHeader: 'Хф', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['tj']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-tr.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-tr.js new file mode 100644 index 0000000..75b583a --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-tr.js @@ -0,0 +1,23 @@ +/* Turkish initialisation for the jQuery UI date picker plugin. */ +/* Written by Izzet Emre Erkan (kara@karalamalar.net). */ +jQuery(function($){ + $.datepicker.regional['tr'] = { + closeText: 'kapat', + prevText: '<geri', + nextText: 'ileri>', + currentText: 'bugün', + monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran', + 'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'], + monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz', + 'Tem','Ağu','Eyl','Eki','Kas','Ara'], + dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'], + dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], + dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], + weekHeader: 'Hf', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['tr']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-uk.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-uk.js new file mode 100644 index 0000000..2bdc82f --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-uk.js @@ -0,0 +1,24 @@ +/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ +/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['uk'] = { + closeText: 'Закрити', + prevText: '<', + nextText: '>', + currentText: 'Сьогодні', + monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень', + 'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'], + monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер', + 'Лип','Сер','Вер','Жов','Лис','Гру'], + dayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'], + dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'], + dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'], + weekHeader: 'Тиж', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['uk']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-vi.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-vi.js new file mode 100644 index 0000000..b49e7eb --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-vi.js @@ -0,0 +1,23 @@ +/* Vietnamese initialisation for the jQuery UI date picker plugin. */ +/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */ +jQuery(function($){ + $.datepicker.regional['vi'] = { + closeText: 'Đóng', + prevText: '<Trước', + nextText: 'Tiếp>', + currentText: 'Hôm nay', + monthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu', + 'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'], + monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', + 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'], + dayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'], + dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], + dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], + weekHeader: 'Tu', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['vi']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-CN.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-CN.js new file mode 100644 index 0000000..d337e4a --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-CN.js @@ -0,0 +1,23 @@ +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by Cloudream (cloudream@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-CN'] = { + closeText: '关闭', + prevText: '<上月', + nextText: '下月>', + currentText: '今天', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'], + monthNamesShort: ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'], + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['日','一','二','三','四','五','六'], + weekHeader: '周', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: '年'}; + $.datepicker.setDefaults($.datepicker.regional['zh-CN']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-HK.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-HK.js new file mode 100644 index 0000000..ef6f4e7 --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-HK.js @@ -0,0 +1,23 @@ +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by SCCY (samuelcychan@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-HK'] = { + closeText: '關閉', + prevText: '<上月', + nextText: '下月>', + currentText: '今天', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'], + monthNamesShort: ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'], + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['日','一','二','三','四','五','六'], + weekHeader: '周', + dateFormat: 'dd-mm-yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: '年'}; + $.datepicker.setDefaults($.datepicker.regional['zh-HK']); +}); diff --git a/framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-TW.js b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-TW.js new file mode 100644 index 0000000..b9105ea --- /dev/null +++ b/framework/yii/jui/assets/i18n/jquery.ui.datepicker-zh-TW.js @@ -0,0 +1,23 @@ +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by Ressol (ressol@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-TW'] = { + closeText: '關閉', + prevText: '<上月', + nextText: '下月>', + currentText: '今天', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'], + monthNamesShort: ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'], + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['日','一','二','三','四','五','六'], + weekHeader: '周', + dateFormat: 'yy/mm/dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: '年'}; + $.datepicker.setDefaults($.datepicker.regional['zh-TW']); +}); diff --git a/framework/yii/jui/assets/jquery.ui.accordion.js b/framework/yii/jui/assets/jquery.ui.accordion.js new file mode 100644 index 0000000..bdd2d53 --- /dev/null +++ b/framework/yii/jui/assets/jquery.ui.accordion.js @@ -0,0 +1,572 @@ +/*! + * jQuery UI Accordion 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/accordion/ + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function( $, undefined ) { + +var uid = 0, + hideProps = {}, + showProps = {}; + +hideProps.height = hideProps.paddingTop = hideProps.paddingBottom = + hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide"; +showProps.height = showProps.paddingTop = showProps.paddingBottom = + showProps.borderTopWidth = showProps.borderBottomWidth = "show"; + +$.widget( "ui.accordion", { + version: "1.10.3", + options: { + active: 0, + animate: {}, + collapsible: false, + event: "click", + header: "> li > :first-child,> :not(li):even", + heightStyle: "auto", + icons: { + activeHeader: "ui-icon-triangle-1-s", + header: "ui-icon-triangle-1-e" + }, + + // callbacks + activate: null, + beforeActivate: null + }, + + _create: function() { + var options = this.options; + this.prevShow = this.prevHide = $(); + this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) + // ARIA + .attr( "role", "tablist" ); + + // don't allow collapsible: false and active: false / null + if ( !options.collapsible && (options.active === false || options.active == null) ) { + options.active = 0; + } + + this._processPanels(); + // handle negative values + if ( options.active < 0 ) { + options.active += this.headers.length; + } + this._refresh(); + }, + + _getCreateEventData: function() { + return { + header: this.active, + panel: !this.active.length ? $() : this.active.next(), + content: !this.active.length ? $() : this.active.next() + }; + }, + + _createIcons: function() { + var icons = this.options.icons; + if ( icons ) { + $( "" ) + .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) + .prependTo( this.headers ); + this.active.children( ".ui-accordion-header-icon" ) + .removeClass( icons.header ) + .addClass( icons.activeHeader ); + this.headers.addClass( "ui-accordion-icons" ); + } + }, + + _destroyIcons: function() { + this.headers + .removeClass( "ui-accordion-icons" ) + .children( ".ui-accordion-header-icon" ) + .remove(); + }, + + _destroy: function() { + var contents; + + // clean up main element + this.element + .removeClass( "ui-accordion ui-widget ui-helper-reset" ) + .removeAttr( "role" ); + + // clean up headers + this.headers + .removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) + .removeAttr( "role" ) + .removeAttr( "aria-selected" ) + .removeAttr( "aria-controls" ) + .removeAttr( "tabIndex" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); + this._destroyIcons(); + + // clean up content panels + contents = this.headers.next() + .css( "display", "" ) + .removeAttr( "role" ) + .removeAttr( "aria-expanded" ) + .removeAttr( "aria-hidden" ) + .removeAttr( "aria-labelledby" ) + .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); + if ( this.options.heightStyle !== "content" ) { + contents.css( "height", "" ); + } + }, + + _setOption: function( key, value ) { + if ( key === "active" ) { + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "event" ) { + if ( this.options.event ) { + this._off( this.headers, this.options.event ); + } + this._setupEvents( value ); + } + + this._super( key, value ); + + // setting collapsible: false while collapsed; open first panel + if ( key === "collapsible" && !value && this.options.active === false ) { + this._activate( 0 ); + } + + if ( key === "icons" ) { + this._destroyIcons(); + if ( value ) { + this._createIcons(); + } + } + + // #5332 - opacity doesn't cascade to positioned elements in IE + // so we need to add the disabled class to the headers and panels + if ( key === "disabled" ) { + this.headers.add( this.headers.next() ) + .toggleClass( "ui-state-disabled", !!value ); + } + }, + + _keydown: function( event ) { + /*jshint maxcomplexity:15*/ + if ( event.altKey || event.ctrlKey ) { + return; + } + + var keyCode = $.ui.keyCode, + length = this.headers.length, + currentIndex = this.headers.index( event.target ), + toFocus = false; + + switch ( event.keyCode ) { + case keyCode.RIGHT: + case keyCode.DOWN: + toFocus = this.headers[ ( currentIndex + 1 ) % length ]; + break; + case keyCode.LEFT: + case keyCode.UP: + toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; + break; + case keyCode.SPACE: + case keyCode.ENTER: + this._eventHandler( event ); + break; + case keyCode.HOME: + toFocus = this.headers[ 0 ]; + break; + case keyCode.END: + toFocus = this.headers[ length - 1 ]; + break; + } + + if ( toFocus ) { + $( event.target ).attr( "tabIndex", -1 ); + $( toFocus ).attr( "tabIndex", 0 ); + toFocus.focus(); + event.preventDefault(); + } + }, + + _panelKeyDown : function( event ) { + if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { + $( event.currentTarget ).prev().focus(); + } + }, + + refresh: function() { + var options = this.options; + this._processPanels(); + + // was collapsed or no panel + if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { + options.active = false; + this.active = $(); + // active false only when collapsible is true + } else if ( options.active === false ) { + this._activate( 0 ); + // was active, but active panel is gone + } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + // all remaining panel are disabled + if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) { + options.active = false; + this.active = $(); + // activate previous panel + } else { + this._activate( Math.max( 0, options.active - 1 ) ); + } + // was active, active panel still exists + } else { + // make sure active index is correct + options.active = this.headers.index( this.active ); + } + + this._destroyIcons(); + + this._refresh(); + }, + + _processPanels: function() { + this.headers = this.element.find( this.options.header ) + .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ); + + this.headers.next() + .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) + .filter(":not(.ui-accordion-content-active)") + .hide(); + }, + + _refresh: function() { + var maxHeight, + options = this.options, + heightStyle = options.heightStyle, + parent = this.element.parent(), + accordionId = this.accordionId = "ui-accordion-" + + (this.element.attr( "id" ) || ++uid); + + this.active = this._findActive( options.active ) + .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ) + .removeClass( "ui-corner-all" ); + this.active.next() + .addClass( "ui-accordion-content-active" ) + .show(); + + this.headers + .attr( "role", "tab" ) + .each(function( i ) { + var header = $( this ), + headerId = header.attr( "id" ), + panel = header.next(), + panelId = panel.attr( "id" ); + if ( !headerId ) { + headerId = accordionId + "-header-" + i; + header.attr( "id", headerId ); + } + if ( !panelId ) { + panelId = accordionId + "-panel-" + i; + panel.attr( "id", panelId ); + } + header.attr( "aria-controls", panelId ); + panel.attr( "aria-labelledby", headerId ); + }) + .next() + .attr( "role", "tabpanel" ); + + this.headers + .not( this.active ) + .attr({ + "aria-selected": "false", + tabIndex: -1 + }) + .next() + .attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }) + .hide(); + + // make sure at least one header is in the tab order + if ( !this.active.length ) { + this.headers.eq( 0 ).attr( "tabIndex", 0 ); + } else { + this.active.attr({ + "aria-selected": "true", + tabIndex: 0 + }) + .next() + .attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }); + } + + this._createIcons(); + + this._setupEvents( options.event ); + + if ( heightStyle === "fill" ) { + maxHeight = parent.height(); + this.element.siblings( ":visible" ).each(function() { + var elem = $( this ), + position = elem.css( "position" ); + + if ( position === "absolute" || position === "fixed" ) { + return; + } + maxHeight -= elem.outerHeight( true ); + }); + + this.headers.each(function() { + maxHeight -= $( this ).outerHeight( true ); + }); + + this.headers.next() + .each(function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + }) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.headers.next() + .each(function() { + maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); + }) + .height( maxHeight ); + } + }, + + _activate: function( index ) { + var active = this._findActive( index )[ 0 ]; + + // trying to activate the already active panel + if ( active === this.active[ 0 ] ) { + return; + } + + // trying to collapse, simulate a click on the currently active header + active = active || this.active[ 0 ]; + + this._eventHandler({ + target: active, + currentTarget: active, + preventDefault: $.noop + }); + }, + + _findActive: function( selector ) { + return typeof selector === "number" ? this.headers.eq( selector ) : $(); + }, + + _setupEvents: function( event ) { + var events = { + keydown: "_keydown" + }; + if ( event ) { + $.each( event.split(" "), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + }); + } + + this._off( this.headers.add( this.headers.next() ) ); + this._on( this.headers, events ); + this._on( this.headers.next(), { keydown: "_panelKeyDown" }); + this._hoverable( this.headers ); + this._focusable( this.headers ); + }, + + _eventHandler: function( event ) { + var options = this.options, + active = this.active, + clicked = $( event.currentTarget ), + clickedIsActive = clicked[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : clicked.next(), + toHide = active.next(), + eventData = { + oldHeader: active, + oldPanel: toHide, + newHeader: collapsing ? $() : clicked, + newPanel: toShow + }; + + event.preventDefault(); + + if ( + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } + + options.active = collapsing ? false : this.headers.index( clicked ); + + // when the call to ._toggle() comes after the class changes + // it causes a very odd bug in IE 8 (see #6720) + this.active = clickedIsActive ? $() : clicked; + this._toggle( eventData ); + + // switch classes + // corner classes on the previously active header stay after the animation + active.removeClass( "ui-accordion-header-active ui-state-active" ); + if ( options.icons ) { + active.children( ".ui-accordion-header-icon" ) + .removeClass( options.icons.activeHeader ) + .addClass( options.icons.header ); + } + + if ( !clickedIsActive ) { + clicked + .removeClass( "ui-corner-all" ) + .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ); + if ( options.icons ) { + clicked.children( ".ui-accordion-header-icon" ) + .removeClass( options.icons.header ) + .addClass( options.icons.activeHeader ); + } + + clicked + .next() + .addClass( "ui-accordion-content-active" ); + } + }, + + _toggle: function( data ) { + var toShow = data.newPanel, + toHide = this.prevShow.length ? this.prevShow : data.oldPanel; + + // handle activating a panel during the animation for another activation + this.prevShow.add( this.prevHide ).stop( true, true ); + this.prevShow = toShow; + this.prevHide = toHide; + + if ( this.options.animate ) { + this._animate( toShow, toHide, data ); + } else { + toHide.hide(); + toShow.show(); + this._toggleComplete( data ); + } + + toHide.attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }); + toHide.prev().attr( "aria-selected", "false" ); + // if we're switching panels, remove the old header from the tab order + // if we're opening from collapsed state, remove the previous header from the tab order + // if we're collapsing, then keep the collapsing header in the tab order + if ( toShow.length && toHide.length ) { + toHide.prev().attr( "tabIndex", -1 ); + } else if ( toShow.length ) { + this.headers.filter(function() { + return $( this ).attr( "tabIndex" ) === 0; + }) + .attr( "tabIndex", -1 ); + } + + toShow + .attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }) + .prev() + .attr({ + "aria-selected": "true", + tabIndex: 0 + }); + }, + + _animate: function( toShow, toHide, data ) { + var total, easing, duration, + that = this, + adjust = 0, + down = toShow.length && + ( !toHide.length || ( toShow.index() < toHide.index() ) ), + animate = this.options.animate || {}, + options = down && animate.down || animate, + complete = function() { + that._toggleComplete( data ); + }; + + if ( typeof options === "number" ) { + duration = options; + } + if ( typeof options === "string" ) { + easing = options; + } + // fall back from options to animation in case of partial down settings + easing = easing || options.easing || animate.easing; + duration = duration || options.duration || animate.duration; + + if ( !toHide.length ) { + return toShow.animate( showProps, duration, easing, complete ); + } + if ( !toShow.length ) { + return toHide.animate( hideProps, duration, easing, complete ); + } + + total = toShow.show().outerHeight(); + toHide.animate( hideProps, { + duration: duration, + easing: easing, + step: function( now, fx ) { + fx.now = Math.round( now ); + } + }); + toShow + .hide() + .animate( showProps, { + duration: duration, + easing: easing, + complete: complete, + step: function( now, fx ) { + fx.now = Math.round( now ); + if ( fx.prop !== "height" ) { + adjust += fx.now; + } else if ( that.options.heightStyle !== "content" ) { + fx.now = Math.round( total - toHide.outerHeight() - adjust ); + adjust = 0; + } + } + }); + }, + + _toggleComplete: function( data ) { + var toHide = data.oldPanel; + + toHide + .removeClass( "ui-accordion-content-active" ) + .prev() + .removeClass( "ui-corner-top" ) + .addClass( "ui-corner-all" ); + + // Work around for rendering bug in IE (#5421) + if ( toHide.length ) { + toHide.parent()[0].className = toHide.parent()[0].className; + } + + this._trigger( "activate", null, data ); + } +}); + +})( jQuery ); diff --git a/framework/yii/jui/assets/jquery.ui.autocomplete.js b/framework/yii/jui/assets/jquery.ui.autocomplete.js new file mode 100644 index 0000000..ca53d2c --- /dev/null +++ b/framework/yii/jui/assets/jquery.ui.autocomplete.js @@ -0,0 +1,610 @@ +/*! + * jQuery UI Autocomplete 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/autocomplete/ + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.position.js + * jquery.ui.menu.js + */ +(function( $, undefined ) { + +// used to prevent race conditions with remote data sources +var requestIndex = 0; + +$.widget( "ui.autocomplete", { + version: "1.10.3", + defaultElement: "", + options: { + appendTo: null, + autoFocus: false, + delay: 300, + minLength: 1, + position: { + my: "left top", + at: "left bottom", + collision: "none" + }, + source: null, + + // callbacks + change: null, + close: null, + focus: null, + open: null, + response: null, + search: null, + select: null + }, + + pending: 0, + + _create: function() { + // Some browsers only repeat keydown events, not keypress events, + // so we use the suppressKeyPress flag to determine if we've already + // handled the keydown event. #7269 + // Unfortunately the code for & in keypress is the same as the up arrow, + // so we use the suppressKeyPressRepeat flag to avoid handling keypress + // events when we know the keydown event was used to modify the + // search term. #7799 + var suppressKeyPress, suppressKeyPressRepeat, suppressInput, + nodeName = this.element[0].nodeName.toLowerCase(), + isTextarea = nodeName === "textarea", + isInput = nodeName === "input"; + + this.isMultiLine = + // Textareas are always multi-line + isTextarea ? true : + // Inputs are always single-line, even if inside a contentEditable element + // IE also treats inputs as contentEditable + isInput ? false : + // All other element types are determined by whether or not they're contentEditable + this.element.prop( "isContentEditable" ); + + this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; + this.isNewMenu = true; + + this.element + .addClass( "ui-autocomplete-input" ) + .attr( "autocomplete", "off" ); + + this._on( this.element, { + keydown: function( event ) { + /*jshint maxcomplexity:15*/ + if ( this.element.prop( "readOnly" ) ) { + suppressKeyPress = true; + suppressInput = true; + suppressKeyPressRepeat = true; + return; + } + + suppressKeyPress = false; + suppressInput = false; + suppressKeyPressRepeat = false; + var keyCode = $.ui.keyCode; + switch( event.keyCode ) { + case keyCode.PAGE_UP: + suppressKeyPress = true; + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + suppressKeyPress = true; + this._move( "nextPage", event ); + break; + case keyCode.UP: + suppressKeyPress = true; + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + suppressKeyPress = true; + this._keyEvent( "next", event ); + break; + case keyCode.ENTER: + case keyCode.NUMPAD_ENTER: + // when menu is open and has focus + if ( this.menu.active ) { + // #6055 - Opera still allows the keypress to occur + // which causes forms to submit + suppressKeyPress = true; + event.preventDefault(); + this.menu.select( event ); + } + break; + case keyCode.TAB: + if ( this.menu.active ) { + this.menu.select( event ); + } + break; + case keyCode.ESCAPE: + if ( this.menu.element.is( ":visible" ) ) { + this._value( this.term ); + this.close( event ); + // Different browsers have different default behavior for escape + // Single press can mean undo or clear + // Double press in IE means clear the whole form + event.preventDefault(); + } + break; + default: + suppressKeyPressRepeat = true; + // search timeout should be triggered before the input value is changed + this._searchTimeout( event ); + break; + } + }, + keypress: function( event ) { + if ( suppressKeyPress ) { + suppressKeyPress = false; + if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { + event.preventDefault(); + } + return; + } + if ( suppressKeyPressRepeat ) { + return; + } + + // replicate some key handlers to allow them to repeat in Firefox and Opera + var keyCode = $.ui.keyCode; + switch( event.keyCode ) { + case keyCode.PAGE_UP: + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + this._move( "nextPage", event ); + break; + case keyCode.UP: + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + this._keyEvent( "next", event ); + break; + } + }, + input: function( event ) { + if ( suppressInput ) { + suppressInput = false; + event.preventDefault(); + return; + } + this._searchTimeout( event ); + }, + focus: function() { + this.selectedItem = null; + this.previous = this._value(); + }, + blur: function( event ) { + if ( this.cancelBlur ) { + delete this.cancelBlur; + return; + } + + clearTimeout( this.searching ); + this.close( event ); + this._change( event ); + } + }); + + this._initSource(); + this.menu = $( "