2019.4.15 iroha Board v0.10.0 をリリースしました。
今回のリリースではこれまでになく多くの機能が追加されております。また iroha Board をカスタマイズした場合も、パッケージがアップデートしやすくなるようパッケージ領域とカスタマイズ領域の分離を行いました。
ユーザのエクスポート機能
ユーザ一覧画面の「エクスポート」ボタンにてユーザ情報をCSV形式(文字コード : Shift-JIS)でダウンロード可能となりました。
ユーザのインポート機能
CSV形式でユーザ情報を一括で登録できるようになりました。またユーザの所属グループ、受講コースも合わせて登録可能です。
CSVファイルはエクスポートしたユーザ情報ファイルをそのまま利用でき、MS-Excelでも作成可能です。(UTF-8形式には対応しておりませんのでご注意ください。)
コンテンツのコピー機能
コンテンツ一覧画面で、コピーしたいコンテンツの「複製」ボタンをクリックするだけで、コンテンツのコピーが作成されます。
コンテンツの移動機能
コンテンツ編集画面で、所属コースを変更することで、他のコースへコンテンツを移動することが可能となりました。
ランダム出題機能
テストの「出題数」を指定することで、テストに登録された問題の中から、指定した数の問題がランダムに出題されます。例えば10問、問題を用意し、5問出題するといったテストが作成可能です。「出題数」が登録された問題数以下の場合、ランダムに並べ替えのみを行い、出題します。
複数選択問題
これまでテスト問題は単一選択式しかありませんでしたが、複数選択肢問題を作成、出題できるようになりました。
テスト問題作成画面で、選択肢を登録し、Ctrlキーを押下した状態で、複数の正解が設定できます。
出題時には以下のように問題が表示されます。
パッケージとカスタマイズ領域の分離
従来、一度、iroha Board のソースをカスタマイズすると、その後、パッケージをアップデートすることが大変困難でした。そのような問題を軽減する為、v0.10.0 から新しくカスタマイズ領域を追加しました。カスタマイズ領域に同名のソースファイルが存在する場合には、そのソースファイルが優先されます。iroha Board をカスタマイズしたい場合には、まずパッケージから Custom 領域へソースファイルをコピーし、その上でソースの修正を行ってください。例えばログイン画面をカスタマイズしたい場合は、View/User/login.ctp を Custom/View/User にコピーします。独自の共通スタイルシートを追加したい場合は、webroot/css/custom.css に記述します。データベースへカスタマイズ用のフィールドの追加などを行いたい場合には、Custom/Config/custom.sql にDDLを記述し、/update を実行してください。
但しカスタマイズしたソースとパッケージのソースの互換性を保証するものではございません。カスタマイズしたソースの修正部分は明確に分かるようにし、いつでもマージできるようにしておくことお勧めいたします。
パッケージのアップデート方法
カスタマイズ後、パッケージをアップデートしたい場合には、以下の手順で行ってください。
- iroha Board のソースをダウンロードします。
- ソースを解凍し、以下のファイル、フォルダを削除します。
- Config/database.php
- webroot/index.php (ディレクトリ構成を変更している場合)
- webroot/css/custom.css
- webroot/js/custom.js
- Custom/
- 既存のサイトのソースを全てバックアップします。
- 既存のサイトに手順2のソースを上書きコピーします。
- http://(your-domain-name)/update にてテーブル定義を更新します。
但しパッケージのソースとカスタマイズしたソースの整合性が合わない場合がございます。
その場合は大変お手数ですが、パッケージのソースを再度 Custom 領域にコピーし、前回と同様の修正を行ってください。
パッケージとカスタマイズしたソースの差分は Diff ツールなどを使って視覚的に確認することが可能です。
例:WinMerge (Windows専用) https://winmergejp.bitbucket.io/
その他
- 管理者向けにコンテンツの非公開ラベルを追加
- インストーラに iroha Board で必須となる Apache / PHP のモジュールチェックを追加
- 全体的なリファクタリング、コード整理
- ユーザ一覧表示など管理画面のパフォーマンス改善
- テスト終了時の black-holed error を回避