diff --git a/.gitattributes b/.gitattributes index 475f5f2..05f339a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,3 +4,4 @@ /.gitignore export-ignore /.travis.yml export-ignore /.scrutinizer.yml export-ignore +/.codecov.yml export-ignore diff --git a/.travis.yml b/.travis.yml index b0e69e4..193e93f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,8 @@ matrix: env: DB=PGSQL PHPUNIT_TEST=1 - php: 7.1 env: DB=MYSQL PHPUNIT_COVERAGE_TEST=1 + - php: 7.2 + env: DB=MYSQL PHPUNIT_TEST=1 before_script: # Init PHP diff --git a/README.md b/README.md index 4ea268d..240457f 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,8 @@ # MultiForm Module [![Build Status](https://travis-ci.org/silverstripe/silverstripe-multiform.svg?branch=master)](https://travis-ci.org/silverstripe/silverstripe-multiform) -[![Latest Stable Version](https://poser.pugx.org/silverstripe/multiform/version.svg)](https://github.com/silverstripe/silverstripe-multiform/releases) -[![Latest Unstable Version](https://poser.pugx.org/silverstripe/multiform/v/unstable.svg)](https://packagist.org/packages/silverstripe/multiform) -[![Total Downloads](https://poser.pugx.org/silverstripe/multiform/downloads.svg)](https://packagist.org/packages/silverstripe/multiform) -[![License](https://poser.pugx.org/silverstripe/multiform/license.svg)](https://github.com/silverstripe/silverstripe-multiform/blob/master/license.md) +[![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/silverstripe/silverstripe-multiform.svg)](https://scrutinizer-ci.com/g/silverstripe/silverstripe-multiform/?branch=master) +[![Code Coverage](https://img.shields.io/codecov/c/github/silverstripe/silverstripe-multiform.svg)](https://codecov.io/gh/silverstripe/silverstripe-multiform) ## Introduction @@ -22,11 +20,12 @@ individual implementation can be customized to the project requirements. ## Requirements -SilverStripe 4.0+. For SilverStripe 3 support please use `1.3` or below. +* SilverStripe ^4.0 + +**Note:** For a SilverStripe 3.x compatible version, please use [the 1.x release line](https://github.com/silverstripe/silverstripe-multiform/tree/1.3). ## What it does do - * Abstracts fields, actions and validation to each individual step. * Maintains flow control automatically, so it knows which steps are ahead and behind. It also can retrieve an entire step process from start to finish, useful @@ -84,7 +83,7 @@ SilverStripe site using this command (while in the directory where your site is currently located) ``` -composer require "silverstripe/multiform:*" +composer require silverstripe/multiform ``` ### 2. Create subclass of MultiForm @@ -96,7 +95,8 @@ For the above example, our multi-form will be called *SurveyForm* ```php use SilverStripe\MultiForm\Forms\MultiForm; -class SurveyForm extends MultiForm { +class SurveyForm extends MultiForm +{ } ``` @@ -173,8 +173,7 @@ Keep in mind that our multi-form also requires an end point. This step is the final one, and needs to have another variable set to let the multi-form system know this is the final step. -So, if we assume that the last step in our process is -SurveyFormOrganisationDetailsStep, then we can do something like this: +So, if we assume that the last step in our process is OrganisationDetailsStep, then we can do something like this: ```php use SilverStripe\MultiForm\Models\MultiFormStep; @@ -182,6 +181,8 @@ use SilverStripe\MultiForm\Models\MultiFormStep; class OrganisationDetailsStep extends MultiFormStep { private static $is_final_step = true; + + ... } ``` @@ -328,10 +329,10 @@ template. ### 7. Loading values from other steps -There are several use cases were you want to pre-populate a value based -based on the submission value of another step. There are two methods supporting this: +There are several use cases where you want to pre-populate a value based on the submission value of another step. +There are two methods supporting this: -* `getValueFromOtherStep()` load any submitted value from another step from the session +* `getValueFromOtherStep()` loads any submitted value from another step from the session * `copyValueFromOtherStep()` saves you the repeated work of adding the same lines of code again and again. Here is an example of how to populate the email address from step 1 in step2 : @@ -410,26 +411,26 @@ class SurveyForm extends MultiForm "SessionID = {$this->session->ID}" ); - if($steps) { - foreach($steps as $step) { + if ($steps) { + foreach ($steps as $step) { if($step->class == PersonalDetailsStep::class) { $member = Member::create(); $data = $step->loadData(); - if($data) { + if ($data) { $member->update($data); $member->write(); } } - if($step->class == OrganisationDetailsStep::class) { + if ($step->class == OrganisationDetailsStep::class) { $organisation = Organisation::create(); $data = $step->loadData(); - if($data) { + if ($data) { $organisation->update($data); - if($member && $member->ID) { + if ($member && $member->ID) { $organisation->MemberID = $member->ID; } @@ -460,9 +461,9 @@ use SilverStripe\ORM\DataObject; class Organisation extends DataObject { - private static $db = array( + private static $db = [ // Add your Organisation fields here - ); + ]; } ``` #### Warning @@ -530,7 +531,7 @@ class MyStep extends MultiFormStep public function getNextStep() { $data = $this->loadData(); - if($data['Gender'] == 'Male') { + if(isset($data['Gender']) && $data['Gender'] == 'Male') { return TestThirdCase1Step::class; } else { return TestThirdCase2Step::class; @@ -594,7 +595,7 @@ class SurveyForm extends MultiForm $steps = MultiFormStep::get()->filter(['SessionID' => $this->session->ID]); if($steps) { - foreach($steps as $step) { + foreach ($steps as $step) { // Shows the step data (unserialized by loadData) Debug::show($step->loadData()); } @@ -632,7 +633,7 @@ after their creation. You can run the task from the URL, by using http://mysite.com/dev/tasks/MultiFormPurgeTask?flush=1 -MultiFormPurgeTask is a subclass of *BuildTask*, so can be , so can be run using the [SilverStripe CLI tools](http://doc.silverstripe.org/framework/en/topics/commandline). +MultiFormPurgeTask is a subclass of *BuildTask*, so can be run using the [SilverStripe CLI tools](http://doc.silverstripe.org/framework/en/topics/commandline). One way of automatically running this on a UNIX based machine is by cron. diff --git a/composer.json b/composer.json index 52f0695..556de16 100644 --- a/composer.json +++ b/composer.json @@ -1,11 +1,12 @@ { "name": "silverstripe/multiform", "description": "SilverStripe forms with multiple steps, flow control and state persistence", - "type": "silverstripe-module", + "type": "silverstripe-vendormodule", "keywords": [ "silverstripe", "forms" ], + "license": "BSD-3-Clause", "authors": [ { "name": "Ingo Schommer", @@ -17,12 +18,12 @@ } ], "require": { - "silverstripe/framework": "^4@dev" + "silverstripe/framework": "^4" }, "require-dev": { "phpunit/phpunit": "^5.7", "squizlabs/php_codesniffer": "^3.0", - "silverstripe/versioned": "^1@dev" + "silverstripe/versioned": "^1" }, "extra": { "branch-alias": { @@ -35,7 +36,6 @@ "SilverStripe\\MultiForm\\Tests\\": "tests/" } }, - "license": "BSD-3-Clause", "minimum-stability": "dev", "prefer-stable": true } diff --git a/lang/en.yml b/lang/en.yml index a50a0d9..2ed298d 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -1,11 +1,18 @@ en: - SilverStripe\MultiForm\MultiForm: + SilverStripe\MultiForm\Models\MultiFormSession: + PLURALNAME: 'Multi Form Sessions' + PLURALS: + one: 'A Multi Form Session' + other: '{count} Multi Form Sessions' + SINGULARNAME: 'Multi Form Session' + SilverStripe\MultiForm\Models\MultiFormStep: BACK: Back NEXT: Next - SUBMIT: Submit - SilverStripe\MultiForm\MultiFormSession: - PLURALNAME: 'Multi Form Sessions' - SINGULARNAME: 'Multi Form Session' - SilverStripe\MultiForm\MultiFormStep: PLURALNAME: 'Multi Form Steps' + PLURALS: + one: 'A Multi Form Step' + other: '{count} Multi Form Steps' SINGULARNAME: 'Multi Form Step' + SUBMIT: Submit + SilverStripe\MultiForm\MultiForm: + ProgressPercent: 'You''ve completed {percent}% ({completedSteps}/{totalSteps})' diff --git a/license.md b/license.md index 8794670..30758eb 100644 --- a/license.md +++ b/license.md @@ -1,4 +1,4 @@ -Copyright (c) 2017, SilverStripe Limited +Copyright (c) 2018, SilverStripe Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 0000000..1b984f8 --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,9 @@ + + + CodeSniffer ruleset for SilverStripe coding conventions. + + + + + + diff --git a/src/Forms/MultiForm.php b/src/Forms/MultiForm.php index f7eb628..70ec2c3 100644 --- a/src/Forms/MultiForm.php +++ b/src/Forms/MultiForm.php @@ -25,7 +25,7 @@ use SilverStripe\ORM\DataObject; * you have to allow the following methods: * * - * private static $allowed_actions = array('next','prev'); + * private static $allowed_actions = ['next','prev']; * * */