Tiny Issue インストール

複数プロジェクト対応の課題管理システム Tiny Issue をインストールしました。

インストール自体は、ホームページにあるように、以下の手順で行います。

  • Create a MySQL Database
  • Make /uploads/ write-able (CHMOD 777)
  • Open /install/ in your browser
  • Delete or rename /install/
mcrypt 拡張モジュールを必要とするので、入っていない場合はインストールする必要があります。

/instal/ にアクセスして、データベース情報等を入力すると config.app.php が表示されるのでコピーしてドキュメントルートに保存します。

スタイルシートがあたらない

管理者アカウントを作成するとログイン画面に移動します。この時、スタイルシートがあたっていないような画面が表示されます。

スタイルシートのあたっていないログイン画面

ソースを確認すると、スタイルシートの指定が http://tinyissue.oo-foo.com/http://tinyissue.oo-foo.com/app/assets/css/login.css となっているので、スタイルシートが読み込めていません。
ソースを探っていくと、
if (filter_var($asset['source'], FILTER_VALIDATE_URL) === false)
の判定がおかしいのが原因で、Gallery インストール と同じくPHP5.3.2のバグに引っかかっています。
filter_var(xxx, FILTER_VALIDATE_URL)
を使用しているのは3ヶ所で、galleryと同じ様に修正
Index: app/laravel/asset.php
===================================================================
--- app/laravel/asset.php	(old)
+++ app/laravel/asset.php	(new)
@@ -251,7 +251,8 @@
 		// If the bundle source is not a complete URL, we will go ahead and prepend
 		// the bundle's asset path to the source provided with the asset. This will
 		// ensure that we attach the correct path to the asset.
-		if (filter_var($asset['source'], FILTER_VALIDATE_URL) === false)
+//		if (filter_var($asset['source'], FILTER_VALIDATE_URL) === false)
+		if (preg_match('/^s?https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=>+\$,%#]+/', $asset['source']) === 0)
 		{
 			$asset['source'] = $this->path($asset['source']);
 		}
Index: app/laravel/url.php
===================================================================
--- app/laravel/url.php	(old)
+++ app/laravel/url.php	(new)
@@ -117,7 +117,8 @@
 	 */
 	public static function to($url = '', $https = false)
 	{
-		if (filter_var($url, FILTER_VALIDATE_URL) !== false) return $url;
+//		if (filter_var($url, FILTER_VALIDATE_URL) !== false) return $url;
+		if (preg_match('/^s?https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=>+\$,%#]+/', $url) !== 0) return $url;

 		$root = static::base().'/'.Config::get('application.index');

Index: app/laravel/validator.php
===================================================================
--- app/laravel/validator.php	(old)
+++ app/laravel/validator.php	(new)
@@ -546,7 +546,8 @@
 	 */
 	protected function validate_url($attribute, $value)
 	{
-		return filter_var($value, FILTER_VALIDATE_URL) !== false;
+//		return filter_var($value, FILTER_VALIDATE_URL) !== false;
+		return (preg_match('/^s?https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=>+\$,%#]+/', $asset['source']) !== 0);
 	}

 	/**

修正したログイン画面。
ログイン画面 正常版

文字化け対応

日本語が通るか確認のため、ユーザー名を日本語にして「日本語プロジェクト」というプロジェクトを作成。
日本語プロジェクトを作成
ユーザー名は日本語OKですが、プロジェクト名が文字化けしてしまいます。テーブル定義を確認したところ以下の様にUTF-8になっていて、問題なさそうに見えますが
Tiny Issue テーブル定義
projectテーブルの定義(install/mysql-structure.php)を確認したところ以下の様になっています。
	"# Create Projects Table
CREATE TABLE IF NOT EXISTS `projects` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `name` varchar(255) character set latin1 default NULL,
  `status` tinyint(2) default '1',
  `created_at` datetime default NULL,
  `updated_at` datetime default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
ユーザーテーブル(users)以外のテーブルは、文字が入るカラムにすべて”character set latin1″が指定されているため文字化けします。
まだデータを入れていない状態なので、文字コードを変更してデータベースを作り直します。
データベースを空にして、リネームしていたinstallを戻し、”character set latin1″を削除した install/mysql-structure.php をアップロードして、/install/にアクセスすると config.app.php は既にあるので、テーブルが作成されて管理者アカウント入力画面になります。

「日本語プロジェクト」を作成して、文字化けしない事を確認。