diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..592d72f
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,59 @@
+on:
+ push:
+ # Sequence of patterns matched against refs/tags
+ tags:
+ - '3*'
+
+name: create_release
+
+jobs:
+ build:
+ name: create_release
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Slack Notification on Start
+ uses: rtCamp/action-slack-notify@v2.2.0
+ env:
+ SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_RELEASE }}
+ SLACK_CHANNEL: notify-nc3-release
+ SLACK_TITLE: "${{ github.repository }}"
+ SLACK_COLOR: "#f0ad4e"
+ SLACK_MESSAGE: "Start Job"
+
+ - name: Create Release
+ id: create_release
+ uses: actions/create-release@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
+ with:
+ tag_name: ${{ github.ref }}
+ release_name: ${{ github.ref }}
+ body: |
+ NetCommons ${{ github.ref }} released.
+ draft: false
+ prerelease: false
+
+ # テスト成功時はこちらのステップが実行される
+ - name: Slack Notification on Finish
+ uses: rtCamp/action-slack-notify@v2.2.0
+ if: success()
+ env:
+ SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_RELEASE }}
+ SLACK_CHANNEL: notify-nc3-release
+ SLACK_TITLE: "${{ github.repository }}"
+ SLACK_COLOR: good
+ SLACK_MESSAGE: "Job Success"
+
+ # テスト失敗時はこちらのステップが実行される
+ - name: Slack Notification on Failure
+ uses: rtCamp/action-slack-notify@v2.2.0
+ if: failure()
+ env:
+ SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_RELEASE }}
+ SLACK_CHANNEL: notify-nc3-tests
+ SLACK_TITLE: "${{ github.repository }}"
+ SLACK_COLOR: danger
+ SLACK_MESSAGE: "Job Failure"
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644
index 0000000..6da4321
--- /dev/null
+++ b/.github/workflows/tests.yml
@@ -0,0 +1,168 @@
+on:
+ push:
+ branches:
+ - main
+ - master
+ pull_request:
+ branches:
+ - main
+ - master
+
+name: tests
+
+jobs:
+ setup:
+ name: setup
+ runs-on: ubuntu-latest
+ steps:
+ - name: Slack Notification on Start
+ uses: rtCamp/action-slack-notify@v2.2.0
+ if: env.SLACK_WEBHOOK != ''
+ env:
+ SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_TESTS }}
+ SLACK_CHANNEL: notify-nc3-tests
+ SLACK_TITLE: "${{ github.repository }}"
+ SLACK_COLOR: "#f0ad4e"
+
+ tests:
+ name: tests
+ needs: setup
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ php: [ '7.1', '7.2', '7.3', '7.4' ]
+ mysql: [ '5.7', '8.0' ]
+
+ env:
+ NC3_BUILD_DIR: "/opt/nc3"
+ NC3_DOCKER_DIR: "/opt/docker"
+ NC3_GIT_URL: "git://github.com/NetCommons3/NetCommons3.git"
+ NC3_GIT_BRANCH: "master"
+ PLUGIN_BUILD_DIR: ${{ github.workspace }}
+ PHP_VERSION: ${{ matrix.php }}
+ MYSQL_VERSION: ${{ matrix.mysql }}
+ MYSQL_ROOT_PASSWORD: root
+ MYSQL_DATABASE: cakephp_test
+ COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Fix up git URLs
+ run: echo -e '[url "https://github.com/"]\n insteadOf = "git://github.com/"' >> ~/.gitconfig
+
+ - name: environment
+ run: |
+ echo "GITHUB_WORKSPACE=${GITHUB_WORKSPACE}"
+ echo "PLUGIN_BUILD_DIR=${PLUGIN_BUILD_DIR}"
+ echo "PHP_VERSION=${PHP_VERSION}"
+ echo "MYSQL_VERSION=${MYSQL_VERSION}"
+ ls -al ${PLUGIN_BUILD_DIR}
+
+ - name: docker-compose install
+ run: |
+ curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
+ chmod +x ~/docker-compose
+ sudo mv ~/docker-compose /usr/local/bin/docker-compose
+ docker-compose --version
+
+ - name: git clone nc3
+ run: git clone -b ${NC3_GIT_BRANCH} ${NC3_GIT_URL} ${NC3_BUILD_DIR}
+
+ - name: git clone nc3_docker
+ run: git clone https://github.com/NetCommons3/nc3app-docker.git ${NC3_DOCKER_DIR}
+
+ - name: docker-compose start
+ run: |
+ cd ${NC3_DOCKER_DIR}
+ docker-compose up -d
+ docker-compose start
+
+ - run: docker ps
+
+ - name: check libraries
+ run: |
+ cd ${NC3_DOCKER_DIR}
+ docker-compose exec -T nc3app bash /opt/scripts/start-on-docker.sh
+
+ - name: nc3 build
+ run: |
+ cd ${NC3_DOCKER_DIR}
+ docker-compose exec -T nc3app bash /opt/scripts/app-build.sh
+
+ - name: phpcs (PHP CodeSniffer)
+ if: always()
+ run: |
+ cd ${NC3_DOCKER_DIR}
+ docker-compose exec -T nc3app bash /opt/scripts/phpcs.sh
+
+ - name: phpmd (PHP Mess Detector)
+ if: always()
+ run: |
+ cd ${NC3_DOCKER_DIR}
+ docker-compose exec -T nc3app bash /opt/scripts/phpmd.sh
+
+ - name: phpcpd (PHP Copy/Paste Detector)
+ if: always()
+ run: |
+ cd ${NC3_DOCKER_DIR}
+ docker-compose exec -T nc3app bash /opt/scripts/phpcpd.sh
+
+ - name: gjslint (JavaScript Style Check)
+ if: always()
+ run: |
+ cd ${NC3_DOCKER_DIR}
+ docker-compose exec -T nc3app bash /opt/scripts/gjslint.sh
+
+ - name: phpdoc (PHP Documentor)
+ if: always()
+ run: |
+ cd ${NC3_DOCKER_DIR}
+ docker-compose exec -T nc3app bash /opt/scripts/phpdoc.sh
+
+ - name: phpunit (PHP UnitTest)
+ if: always()
+ run: |
+ cd ${NC3_DOCKER_DIR}
+ docker-compose exec -T nc3app bash /opt/scripts/phpunit.sh
+ sudo -s chmod a+w -R ${NC3_BUILD_DIR}/build
+
+# - name: push coveralls
+# env:
+# COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+# COVERALLS_FLAG_NAME: ${{ matrix.php }}
+# run: |
+# cd ${NC3_BUILD_DIR}
+# ls -la ${NC3_BUILD_DIR}
+# vendors/bin/php-coveralls --coverage_clover=build/logs/clover.xml -v
+
+ - name: docker-compose remove
+ if: always()
+ run: |
+ cd ${NC3_DOCKER_DIR}
+ docker-compose rm -f
+
+ # テスト失敗時はこちらのステップが実行される
+ - name: Slack Notification on Failure
+ uses: rtCamp/action-slack-notify@v2.2.0
+ if: env.SLACK_WEBHOOK != '' && failure()
+ env:
+ SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_TESTS }}
+ SLACK_CHANNEL: notify-nc3-tests
+ SLACK_TITLE: "${{ github.repository }}(php${{ matrix.php }}, mysql${{ matrix.mysql }})"
+ SLACK_COLOR: danger
+
+ teardown:
+ name: teardown
+ runs-on: ubuntu-latest
+ needs: tests
+ steps:
+ # テスト成功時はこちらのステップが実行される
+ - name: Slack Notification on Success
+ uses: rtCamp/action-slack-notify@v2.2.0
+ if: env.SLACK_WEBHOOK != '' && success()
+ env:
+ SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_TESTS }}
+ SLACK_CHANNEL: notify-nc3-tests
+ SLACK_TITLE: "${{ github.repository }}"
+ SLACK_COLOR: good
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 74c5adc..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-language: php
-
-php:
- - 7.0
- - 7.1
- - 7.2
- - 7.3.24
- - 7.4
-
-sudo: false
-dist: trusty
-
-env:
- - NETCOMMONS_VERSION=master DB=mysql
-
-matrix:
- allow_failures:
- # PHP 7.4 testing is allowed to fail because the GD extension and ZipArchive is not packaged on Travis CI yet.
- # See https://travis-ci.community/t/some-extensions-are-missing-in-php-7-4-0-zip-gmp-sodium/6320/9
- - php: 7.4
-
-before_script:
- - export NETCOMMONS_BUILD_DIR=`dirname $TRAVIS_BUILD_DIR`/NetCommons3
- - git clone git://github.com/NetCommons3/NetCommons3 $NETCOMMONS_BUILD_DIR
- - cd $NETCOMMONS_BUILD_DIR
- - git checkout $NETCOMMONS_VERSION
- - travis_wait . tools/build/plugins/cakephp/travis/pre.sh
- - . tools/build/plugins/cakephp/travis/environment.sh
-
-script:
- - . tools/build/plugins/cakephp/travis/main.sh
-
-after_script:
- - . tools/build/plugins/cakephp/travis/post.sh
-
-notifications:
- email:
- recipients:
- - netcommons3@googlegroups.com
- on_success: never # default: change
- on_failure: always # default: always
diff --git a/Controller/QuizEditController.php b/Controller/QuizEditController.php
index db634dd..27fd02c 100644
--- a/Controller/QuizEditController.php
+++ b/Controller/QuizEditController.php
@@ -425,7 +425,6 @@ protected function _getActionUrl($method) {
if (Current::isSettingMode()) {
$urlArray['q_mode'] = 'setting';
}
- $this->log($urlArray, 'debug');
return NetCommonsUrl::actionUrl($urlArray);
}
diff --git a/Model/QuizAnswerSummaryCsv.php b/Model/QuizAnswerSummaryCsv.php
index a016288..4471e72 100644
--- a/Model/QuizAnswerSummaryCsv.php
+++ b/Model/QuizAnswerSummaryCsv.php
@@ -14,6 +14,7 @@
App::uses('QuizzesAppModel', 'Quizzes.Model');
App::uses('QuizAnswerSummary', 'Quizzes.Model');
+App::uses('NetCommonsTime', 'NetCommons.Utility');
/**
* Summary for QuizAnswerSummary Model
@@ -60,6 +61,13 @@ class QuizAnswerSummaryCsv extends QuizAnswerSummary {
public $hasMany = array(
);
+/**
+ * 日時を変換するクラス
+ *
+ * @var NetCommonsTime
+ */
+ private $__NetCommonsTime;
+
/**
* Constructor. Binds the model's database table to the object.
*
@@ -77,6 +85,7 @@ public function __construct($id = false, $table = null, $ds = null) {
'Quiz' => 'Quizzes.Quiz',
'QuizAnswer' => 'Quizzes.QuizAnswer',
]);
+ $this->__NetCommonsTime = new NetCommonsTime();
}
/**
@@ -301,7 +310,10 @@ protected function _getRows($quiz, $sampScore, $summary, $answers) {
$cols = array();
$cols[] = $this->_getUserName($quiz, $summary);
- $cols[] = $summary['QuizAnswerSummaryCsv']['answer_finish_time'];
+ $cols[] = $this->__NetCommonsTime->dateFormat(
+ $summary['QuizAnswerSummaryCsv']['answer_finish_time'],
+ 'Y-m-d H:i:s'
+ );
$cols[] = $summary['QuizAnswerSummaryCsv']['elapsed_second'];
$cols[] = $summary['QuizAnswerSummaryCsv']['answer_number'];
$cols[] = $summary['QuizAnswerSummaryCsv']['summary_score'];
diff --git a/README.md b/README.md
index 8833808..fdc6fce 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,6 @@
-# Quizzes
+Quizzes
==============
-Quizzes for NetCommons3
-
-[](https://travis-ci.org/NetCommons3/Quizzes)
-[](https://coveralls.io/r/NetCommons3/Quizzes?branch=master)
-
-| dependencies | status |
-| ------------- | ------ |
-| composer.json | [/badge.png)](https://www.versioneye.com/user/projects/(573071b919f62a000efc072c)) |
-
+[](https://github.com/NetCommons3/Quizzes/actions/workflows/tests.yml)
+[](https://coveralls.io/r/NetCommons3/Quizzes?branch=master)
+[](https://packagist.org/packages/netcommons/quizzes)
diff --git a/Test/Case/Model/QuizAnswerSummaryCsv/GetAnswerSummaryCsvTest.php b/Test/Case/Model/QuizAnswerSummaryCsv/GetAnswerSummaryCsvTest.php
index fc31f92..ba52fa7 100644
--- a/Test/Case/Model/QuizAnswerSummaryCsv/GetAnswerSummaryCsvTest.php
+++ b/Test/Case/Model/QuizAnswerSummaryCsv/GetAnswerSummaryCsvTest.php
@@ -118,28 +118,28 @@ public function dataProviderGet() {
__d('quizzes', 'Score')
), // header
array(
- '非会員', '2016-06-10 06:35:02', '10', '1', '0', '40', '', __d('quizzes', 'Ungraded'),
+ '非会員', '2016-06-10 15:35:02', '10', '1', '0', '40', '', __d('quizzes', 'Ungraded'),
), // data1
array(
- '非会員', '2016-06-10 06:36:46', '77', '1', '8', '59', '正解で部分点でお願いします', 8,
+ '非会員', '2016-06-10 15:36:46', '77', '1', '8', '59', '正解で部分点でお願いします', 8,
), // data2
array(
- '非会員', '2016-06-10 06:37:26', '24', '1', '10', '64', '正解で満点でお願いします', 10,
+ '非会員', '2016-06-10 15:37:26', '24', '1', '10', '64', '正解で満点でお願いします', 10,
), // data3
array(
- '非会員', '2016-06-10 06:38:17', '30', '1', '2', '45', '間違い部分点でお願いします', 2,
+ '非会員', '2016-06-10 15:38:17', '30', '1', '2', '45', '間違い部分点でお願いします', 2,
), // data4
array(
- '非会員', '2016-06-10 06:39:14', '35', '1', '0', '40', '間違いで0点でお願いします', 0,
+ '非会員', '2016-06-10 15:39:14', '35', '1', '0', '40', '間違いで0点でお願いします', 0,
), // data5
array(
- 'Editor', '2016-06-10 06:47:11', '27', '1', '0', '40', '未採点のままにしてください', __d('quizzes', 'Ungraded'),
+ 'Editor', '2016-06-10 15:47:11', '27', '1', '0', '40', '未採点のままにしてください', __d('quizzes', 'Ungraded'),
), // data6
array(
- 'Editor', '2016-06-10 06:47:56', '26', '2', '10', '64', '正解満点でお願いします', 10,
+ 'Editor', '2016-06-10 15:47:56', '26', '2', '10', '64', '正解満点でお願いします', 10,
), // data6
array(
- 'Editor', '2016-06-10 06:48:55', '27', '3', '4', '49', '間違い部分点でお願いします', 4,
+ 'Editor', '2016-06-10 15:48:55', '27', '3', '4', '49', '間違い部分点でお願いします', 4,
), // data6
);
$expect2 = array(
@@ -169,7 +169,7 @@ public function dataProviderGet() {
__d('quizzes', 'Score')
), // header
array(
- '非会員', '2016-06-10 06:20:53', '14', '1', '10', '50.0', '新規選択肢1', 10,
+ '非会員', '2016-06-10 15:20:53', '14', '1', '10', '50.0', '新規選択肢1', 10,
), // data2
);
return array(
@@ -179,4 +179,4 @@ public function dataProviderGet() {
);
}
-}
\ No newline at end of file
+}
diff --git a/VERSION.txt b/VERSION.txt
index 4772543..86fb650 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1 +1 @@
-3.3.2
+3.3.7
diff --git a/View/Elements/QuizEdit/EditQuestion/hidden_page_info_set.ctp b/View/Elements/QuizEdit/EditQuestion/hidden_page_info_set.ctp
index 34e040e..ecebfbb 100644
--- a/View/Elements/QuizEdit/EditQuestion/hidden_page_info_set.ctp
+++ b/View/Elements/QuizEdit/EditQuestion/hidden_page_info_set.ctp
@@ -15,5 +15,3 @@
array('ng-value' => 'page.pageSequence'));
echo $this->NetCommonsForm->hidden('QuizPage.{{pageIndex}}.key',
array('ng-value' => 'page.key'));
- $this->NetCommonsForm->hidden('QuizPage.{{pageIndex}}.page_title',
- array('ng-value' => 'page.pageTitle'));
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 2c79648..dd3d730 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -3,9 +3,6 @@
-
-
-
app/Plugin/Quizzes
@@ -23,5 +20,6 @@
+