civicrm-core.git
3 years agoMerge pull request #18497 from eileenmcnaughton/open_primary
Seamus Lee [Thu, 17 Sep 2020 01:43:04 +0000 (11:43 +1000)]
Merge pull request #18497 from eileenmcnaughton/open_primary

dev/core#2039 [NFC] Code cleanup in test class

3 years agoMerge pull request #18496 from eileenmcnaughton/nfc
Eileen McNaughton [Thu, 17 Sep 2020 01:29:30 +0000 (13:29 +1200)]
Merge pull request #18496 from eileenmcnaughton/nfc

dev/core#2039 [NFC] Minor cleanup in tests

3 years agoMerge pull request #18495 from eileenmcnaughton/email_add
Eileen McNaughton [Thu, 17 Sep 2020 01:15:59 +0000 (13:15 +1200)]
Merge pull request #18495 from eileenmcnaughton/email_add

dev/core#2046 Rationalise add vs create on email BAO

3 years ago[NFC] Code cleanup in test class
eileen [Thu, 17 Sep 2020 00:28:52 +0000 (12:28 +1200)]
[NFC] Code cleanup in test class

3 years agoMerge pull request #18494 from eileenmcnaughton/test_clean
Seamus Lee [Thu, 17 Sep 2020 00:08:45 +0000 (10:08 +1000)]
Merge pull request #18494 from eileenmcnaughton/test_clean

dev/core#2039 [NFC] Test cleanup to stop calling Email::add action

3 years ago[NFC] Minor cleanup in tests
eileen [Wed, 16 Sep 2020 23:54:48 +0000 (11:54 +1200)]
[NFC] Minor cleanup in tests

3 years agoMerge pull request #18484 from eileenmcnaughton/ref
colemanw [Wed, 16 Sep 2020 23:54:06 +0000 (19:54 -0400)]
Merge pull request #18484 from eileenmcnaughton/ref

dev/core#2043 remove pass-by-ref

3 years agoMerge pull request #18491 from totten/master-ref-gendata
Eileen McNaughton [Wed, 16 Sep 2020 22:40:24 +0000 (10:40 +1200)]
Merge pull request #18491 from totten/master-ref-gendata

(REF) GenerateData - Make it possible to call this via PHP

3 years agodev/core#2046 Rationalise add vs create on email BAO
eileen [Wed, 16 Sep 2020 20:51:17 +0000 (08:51 +1200)]
dev/core#2046 Rationalise add vs create on email BAO

This folds the 2 functions into one, deprecating add

3 years ago[NFC] Test cleanup to stop calling Email::add action which does not handle primary
eileen [Wed, 16 Sep 2020 20:36:34 +0000 (08:36 +1200)]
[NFC] Test cleanup to stop calling Email::add action which does not handle primary

Note I feel like we should further
1) move the contents of email add into create
2) make add a deprecated wrapper for create

Whatever the vision of different add vs create functions it didn't turn out in practice and seems to
only generate confusion. We recommend apiv4 as the preferred create methodology

3 years agodev/core#2043 remove pass-by-ref
eileen [Wed, 16 Sep 2020 02:44:40 +0000 (14:44 +1200)]
dev/core#2043 remove pass-by-ref

Also shortening of if clause

3 years agoMerge pull request #18470 from JKingsnorth/dev/core#2027-2
Eileen McNaughton [Wed, 16 Sep 2020 19:19:03 +0000 (07:19 +1200)]
Merge pull request #18470 from JKingsnorth/dev/core#2027-2

dev/core#2027 Add/update to UK county list

3 years agoMerge pull request #18423 from eileenmcnaughton/afform
colemanw [Wed, 16 Sep 2020 14:44:23 +0000 (10:44 -0400)]
Merge pull request #18423 from eileenmcnaughton/afform

dev/core#2000 Move afform into core extensions

3 years agodev/core#2027 Add/update to UK county list
John Kingsnorth [Wed, 16 Sep 2020 11:11:06 +0000 (12:11 +0100)]
dev/core#2027 Add/update to UK county list

3 years ago(REF) GenerateData - Allow external control randomness
Tim Otten [Wed, 16 Sep 2020 09:58:36 +0000 (02:58 -0700)]
(REF) GenerateData - Allow external control randomness

3 years ago(REF) GenerateData - Use overrideable 'echo'. Use exceptions.
Tim Otten [Wed, 16 Sep 2020 08:08:03 +0000 (01:08 -0700)]
(REF) GenerateData - Use overrideable 'echo'. Use exceptions.

This removes elements of GenerateData which perform direct output to the user. there
are basically two cases:

1. Outputting advisory/status info (e.g. "echo"). This now goes through a method, which
   can be overriden/replaced.

2. Displaying errors from DAO-calls. Now-a-days, DAO-calls can raise their own exceptions,
   so we don't need to sprinkle it without error-outputs.

3 years ago(REF) GenerateData - Extract method 'generateAll()'
Tim Otten [Wed, 16 Sep 2020 07:39:14 +0000 (00:39 -0700)]
(REF) GenerateData - Extract method 'generateAll()'

3 years agoGenerateData - Make the generated sample data more stable (wrt shuffle+array_rand)
Tim Otten [Wed, 16 Sep 2020 09:28:11 +0000 (02:28 -0700)]
GenerateData - Make the generated sample data more stable (wrt shuffle+array_rand)

3 years agoGenerateData - Make the generated sample data more stable (wrt time)
Tim Otten [Wed, 16 Sep 2020 09:27:15 +0000 (02:27 -0700)]
GenerateData - Make the generated sample data more stable (wrt time)

3 years agoGenerateData - Make the generated sample data more stable (wrt mt_rand)
Tim Otten [Wed, 16 Sep 2020 07:30:56 +0000 (00:30 -0700)]
GenerateData - Make the generated sample data more stable (wrt mt_rand)

3 years ago(REF) GenerateData - Extract method 'randomInt()'
Tim Otten [Wed, 16 Sep 2020 07:25:18 +0000 (00:25 -0700)]
(REF) GenerateData - Extract method 'randomInt()'

This it easier to have one random number generator used for all 'randomFoo()' functions.

3 years ago(REF) Extract `CRM_Core_CodeGen_GenerateData` - Fix path reference
Tim Otten [Wed, 16 Sep 2020 07:58:19 +0000 (00:58 -0700)]
(REF) Extract `CRM_Core_CodeGen_GenerateData` - Fix path reference

When this class moved to a new folder, the relative paths changed.

3 years agoMerge pull request #18486 from eileenmcnaughton/part
Monish Deb [Wed, 16 Sep 2020 07:29:11 +0000 (12:59 +0530)]
Merge pull request #18486 from eileenmcnaughton/part

dev/event#42 [Ref] Separate url path calculation into the relevant classes

3 years ago(REF) Extract `CRM_Core_CodeGen_GenerateData`
Tim Otten [Wed, 16 Sep 2020 07:00:50 +0000 (00:00 -0700)]
(REF) Extract `CRM_Core_CodeGen_GenerateData`

This moves the class from `sql/GenerateData.php` to `CRM/Core/CodeGen/GenerateData.php`, which makes
it easier to reference in other workflows.

3 years agoMerge pull request #18480 from eileenmcnaughton/dom_org
Seamus Lee [Wed, 16 Sep 2020 05:57:44 +0000 (15:57 +1000)]
Merge pull request #18480 from eileenmcnaughton/dom_org

dev/core#2039 Set is_primary to 1 on email, address for domain contacts

3 years agoMerge pull request #18487 from civicrm/5.30
Seamus Lee [Wed, 16 Sep 2020 05:51:04 +0000 (15:51 +1000)]
Merge pull request #18487 from civicrm/5.30

5.30

3 years ago[Ref] Separate url path calculation into the relevant classes
eileen [Wed, 16 Sep 2020 03:53:39 +0000 (15:53 +1200)]
[Ref] Separate url path calculation into the relevant classes

3 years agoMerge pull request #18482 from seamuslee001/5.30
Eileen McNaughton [Wed, 16 Sep 2020 04:17:47 +0000 (16:17 +1200)]
Merge pull request #18482 from seamuslee001/5.30

release-notes/5.29.1.md

3 years agoMerge pull request #18478 from seamuslee001/api_v4_fin_acl_test
Eileen McNaughton [Wed, 16 Sep 2020 04:17:04 +0000 (16:17 +1200)]
Merge pull request #18478 from seamuslee001/api_v4_fin_acl_test

[NFC] Enable APIv4 testing on the Fin ACL Extension Line Item test

3 years agoMerge pull request #18464 from eileenmcnaughton/urlparamms
Monish Deb [Wed, 16 Sep 2020 03:41:41 +0000 (09:11 +0530)]
Merge pull request #18464 from eileenmcnaughton/urlparamms

[REF] Start the process of separating the search action from the participant form

3 years agoMerge pull request #18463 from eileenmcnaughton/searchhhook
Monish Deb [Wed, 16 Sep 2020 03:11:10 +0000 (08:41 +0530)]
Merge pull request #18463 from eileenmcnaughton/searchhhook

dev/core#2017 remove unused SearchTaskHookSample.php

3 years agoRegenerate sql
eileen [Wed, 16 Sep 2020 02:03:04 +0000 (14:03 +1200)]
Regenerate sql

3 years agodev/core#2039 Set is_primary to 1 on email, address for domain contacts
eileen [Wed, 16 Sep 2020 00:52:52 +0000 (12:52 +1200)]
dev/core#2039 Set is_primary to 1 on email, address for domain contacts

I'm digging into the places where the code handles is_primary due to duplicate handling/ queries
- see https://lab.civicrm.org/dev/core/-/issues/2039

One distraction is that the domain contact's address & email are not marked is_primary. This
doesn't make sense to me as they ARE a contact in the DB

3 years agoPhpcs fix
eileen [Thu, 10 Sep 2020 20:34:50 +0000 (08:34 +1200)]
Phpcs fix

3 years agoRemove commented out line
eileen [Thu, 10 Sep 2020 03:47:37 +0000 (15:47 +1200)]
Remove commented out line

3 years agoRemove more commented out code that is upsetting CI
eileen [Thu, 10 Sep 2020 03:41:36 +0000 (15:41 +1200)]
Remove more commented out code that is upsetting CI

3 years agoRemove more commented out function
eileen [Thu, 10 Sep 2020 03:09:37 +0000 (15:09 +1200)]
Remove more commented out function

3 years agoStyle fixes
eileen [Thu, 10 Sep 2020 01:18:00 +0000 (13:18 +1200)]
Style fixes

I removed the commented out functions rather than figuring out how to style them right

3 years agoMisc style fix
eileen [Wed, 9 Sep 2020 21:31:53 +0000 (09:31 +1200)]
Misc style fix

3 years agoRe-run civix upgrader
eileen [Wed, 9 Sep 2020 21:31:41 +0000 (09:31 +1200)]
Re-run civix upgrader

3 years agoRe-run civix
eileen [Wed, 9 Sep 2020 21:17:02 +0000 (09:17 +1200)]
Re-run civix

3 years agoUpdate API factory functions with checkPermissions
Coleman Watts [Fri, 17 Jul 2020 14:07:09 +0000 (10:07 -0400)]
Update API factory functions with checkPermissions

3 years agoUse standard api for getFields
Coleman Watts [Wed, 12 Feb 2020 16:21:16 +0000 (11:21 -0500)]
Use standard api for getFields

3 years agoUpdate API docblock.
Coleman Watts [Sat, 1 Feb 2020 16:44:44 +0000 (11:44 -0500)]
Update API docblock.

3 years agoUse built-in php function to do what we were trying to do with str_replace
Coleman Watts [Fri, 31 Jan 2020 16:40:26 +0000 (11:40 -0500)]
Use built-in php function to do what we were trying to do with str_replace

3 years agoCode comment
Coleman Watts [Fri, 31 Jan 2020 16:39:40 +0000 (11:39 -0500)]
Code comment

3 years agoRevert "Reinstate parsing of data from the form"
Coleman Watts [Fri, 17 Jan 2020 00:49:47 +0000 (19:49 -0500)]
Revert "Reinstate parsing of data from the form"

This reverts commit d31206f9e08703ae4f11b7e34673d7ece92b1630.

3 years agoSupport is_primary fields and boolean options.
Coleman Watts [Thu, 16 Jan 2020 15:53:24 +0000 (10:53 -0500)]
Support is_primary fields and boolean options.

Civi 5.23 changes boolean options to be real true and false instead of '1' and '0'
so added version bump to keep in step.

3 years agoMore efficient select options handling
Coleman Watts [Fri, 10 Jan 2020 17:59:49 +0000 (12:59 -0500)]
More efficient select options handling

The afField.getOptions function was causing infinite recursion by recreating the boolean options array every time.
Passing this variable by refernce solves the problem, and adding "track by" to the ng-repeat follows best-practices for efficiency.

3 years agoReinstate parsing of data from the form
eileen [Fri, 10 Jan 2020 01:09:34 +0000 (14:09 +1300)]
Reinstate parsing of data from the form

This means that data can be set in an embedded form e.g

 <af-entity data='{name_a : options.name_a,  name_b : options.name_b, is_name_b_nickname: options.is_name_b_nickname, is_name_b_inferior: options.is_name_b_inferior}' .... />

In this case the options.name_as comes from the directive that instantiates this afform

3 years agoIncrement suggested version to reflect info.xml
eileen [Fri, 10 Jan 2020 01:05:28 +0000 (14:05 +1300)]
Increment suggested version to reflect info.xml

Arguably afform still works on older versions but breaking changes have happened & if people
use it on older you want a buyer-beware type feeling

3 years agoRelease v0.4
Coleman Watts [Thu, 9 Jan 2020 20:11:15 +0000 (15:11 -0500)]
Release v0.4

3 years agoLoosen restrictions on file names - allow underscores
Coleman Watts [Wed, 8 Jan 2020 13:23:03 +0000 (08:23 -0500)]
Loosen restrictions on file names - allow underscores

3 years agoUse api to get directive/module names
Coleman Watts [Wed, 8 Jan 2020 13:20:54 +0000 (08:20 -0500)]
Use api to get directive/module names

3 years agoRename custom blocks and optimize api get by file/module/directive name
Coleman Watts [Tue, 7 Jan 2020 22:35:33 +0000 (17:35 -0500)]
Rename custom blocks and optimize api get by file/module/directive name

3 years agoApi - output module_name & directive_name
Coleman Watts [Mon, 6 Jan 2020 22:45:01 +0000 (17:45 -0500)]
Api - output module_name & directive_name

3 years agoLoad join blocks primary first
Coleman Watts [Sun, 5 Jan 2020 19:47:35 +0000 (14:47 -0500)]
Load join blocks primary first

3 years agoGUI - improve menu button appearance
Coleman Watts [Sun, 5 Jan 2020 03:30:17 +0000 (22:30 -0500)]
GUI - improve menu button appearance

3 years agoGUI - simplify menus; only add items from palette
Coleman Watts [Sun, 5 Jan 2020 03:29:20 +0000 (22:29 -0500)]
GUI - simplify menus; only add items from palette

3 years agoImprove drag-n-drop placeholder & validation
Coleman Watts [Sun, 5 Jan 2020 02:10:11 +0000 (21:10 -0500)]
Improve drag-n-drop placeholder & validation

3 years agoFix loading fields for contact type blocks
Coleman Watts [Sat, 4 Jan 2020 20:13:00 +0000 (15:13 -0500)]
Fix loading fields for contact type blocks

3 years agoRename blocks & require form name
Coleman Watts [Sat, 4 Jan 2020 01:42:59 +0000 (20:42 -0500)]
Rename blocks & require form name

3 years agoGUI - Add block fields to field palette
Coleman Watts [Fri, 3 Jan 2020 20:40:39 +0000 (15:40 -0500)]
GUI - Add block fields to field palette

3 years agoGUI - Implement Save Block feature
Coleman Watts [Fri, 3 Jan 2020 03:01:19 +0000 (22:01 -0500)]
GUI - Implement Save Block feature

3 years agoImplement Address block with chainSelect state/county
Coleman Watts [Tue, 31 Dec 2019 17:45:00 +0000 (12:45 -0500)]
Implement Address block with chainSelect state/county

3 years agoGUI - present Individual/Organization/Household as seperate entities
Coleman Watts [Mon, 30 Dec 2019 04:29:18 +0000 (23:29 -0500)]
GUI - present Individual/Organization/Household as seperate entities

Also adds per-contact-type default name blocks.

3 years agoRefactor af-block directive into af-repeat and af-join
Coleman Watts [Fri, 27 Dec 2019 19:55:49 +0000 (14:55 -0500)]
Refactor af-block directive into af-repeat and af-join

This allows mix-n-match between blocks and repeatable things, allowing
entity fieldsets to be repeated, as well as arbitrary non-repeatable blocks.

3 years agoImplement afform blocks for multi-value custom groups
Coleman Watts [Fri, 20 Dec 2019 20:47:02 +0000 (15:47 -0500)]
Implement afform blocks for multi-value custom groups

3 years agoImplement afform blocks for Email, Phone, IM, Website
Coleman Watts [Tue, 10 Dec 2019 20:03:42 +0000 (15:03 -0500)]
Implement afform blocks for Email, Phone, IM, Website

Blocks are reusable, repeatable afforms that extend other entities

3 years agoUpdate git clone url
eileen [Thu, 2 Jan 2020 18:57:18 +0000 (18:57 +0000)]
Update git clone url

Note other updates around installation still needed

3 years agoFix #10 add prefix to new afforms to prevent name conflicts
Coleman Watts [Sat, 28 Dec 2019 01:23:30 +0000 (20:23 -0500)]
Fix #10 add prefix to new afforms to prevent name conflicts

3 years agoRemove unnecessary registerField process
Coleman Watts [Sun, 22 Dec 2019 01:10:49 +0000 (20:10 -0500)]
Remove unnecessary registerField process

3 years agoGUI - set default permission for new forms
Coleman Watts [Sat, 21 Dec 2019 00:51:51 +0000 (19:51 -0500)]
GUI - set default permission for new forms

3 years agoUpdate docs to reflect less metadata in default afform scope
Coleman Watts [Fri, 20 Dec 2019 12:18:45 +0000 (07:18 -0500)]
Update docs to reflect less metadata in default afform scope

3 years agoAfformScanner - Just use the long cache
Tim Otten [Fri, 20 Dec 2019 07:53:13 +0000 (23:53 -0800)]
AfformScanner - Just use the long cache

The long cache didn't exist when this class was first created, but it seems
better suited. #knockonwood

3 years agoAfformScanner - Simplify cache. Fix CLI/web sync bug.
Tim Otten [Fri, 20 Dec 2019 07:41:10 +0000 (23:41 -0800)]
AfformScanner - Simplify cache. Fix CLI/web sync bug.

Example bug:

1. Find a packaged (non-overriden) form - e.g. `mockPage`
2. Run `cv api4 Afform.update +w name=mockPage +v permissions='*always allow*'
3. Run `curl http://localhost/civicrm/mock-page`
4. Observe: the page-load fails even though the permissions say it should work

The call to `Afform.update` should trigger a cache-clear, but it only fixes
on the CLI...  because the CLI and web have different runtime IDs.

The runtime-id was included preventively in anticipation that oddball
multisite arrangements might need to store these things separately.  But I
think it's overdone, because the runtime-ID factors in things like
`SCRIPT_FILENAME` which has no bearing on the whether to use the same cache.

Let's KISS and *if* there's any kind of multisite issue, then we can revisit.

3 years agoToward #6 - use API instead of scanner to retrieve afforms
Coleman Watts [Fri, 20 Dec 2019 02:24:08 +0000 (21:24 -0500)]
Toward #6 - use API instead of scanner to retrieve afforms

3 years agoGUI - dropdown select for permissions field
Coleman Watts [Thu, 19 Dec 2019 13:28:58 +0000 (08:28 -0500)]
GUI - dropdown select for permissions field

3 years ago(NFC) Expand docblock for afform_civicrm_permission_check()
Tim Otten [Thu, 19 Dec 2019 06:47:10 +0000 (22:47 -0800)]
(NFC) Expand docblock for afform_civicrm_permission_check()

3 years agoafform_{html,gui} - Allow editing the `permission` via web UI
Tim Otten [Thu, 19 Dec 2019 04:23:41 +0000 (20:23 -0800)]
afform_{html,gui} - Allow editing the `permission` via web UI

3 years agoafform_{html,gui} - Require "administer CiviCRM" to open editor
Tim Otten [Thu, 19 Dec 2019 04:23:14 +0000 (20:23 -0800)]
afform_{html,gui} - Require "administer CiviCRM" to open editor

3 years ago(REF) AfformSaveTrait - Extract helper $isChanged
Tim Otten [Thu, 19 Dec 2019 04:12:54 +0000 (20:12 -0800)]
(REF) AfformSaveTrait - Extract helper $isChanged

I was originally expecting to need to flush the menu whenever the
`permission` changed.  That's not necessary now (because the true permission
check is deferred until it's needed), but the cleanup may still be helpful
in the future (e.g.  if we enable nav-menu integration or change the way
permissions are implemented).

3 years agoAfform.{prefill,submit} - APIs should respect `permission`
Tim Otten [Thu, 19 Dec 2019 05:43:05 +0000 (21:43 -0800)]
Afform.{prefill,submit} - APIs should respect `permission`

3 years agoAfformUsageTest - Add a basic test case of prefill/submit APIs
Tim Otten [Thu, 19 Dec 2019 05:42:24 +0000 (21:42 -0800)]
AfformUsageTest - Add a basic test case of prefill/submit APIs

3 years agoEnforce customizable `permission` for server routes. Add E2E test for server-routes.
Tim Otten [Thu, 19 Dec 2019 04:11:52 +0000 (20:11 -0800)]
Enforce customizable `permission` for server routes. Add E2E test for server-routes.

3 years agoAfform.get - Fix warning/test-failure when trying to load non-existent record
Tim Otten [Thu, 19 Dec 2019 04:56:49 +0000 (20:56 -0800)]
Afform.get - Fix warning/test-failure when trying to load non-existent record

3 years agoafform_mock - The extra dep should be a real module
Tim Otten [Thu, 19 Dec 2019 03:03:53 +0000 (19:03 -0800)]
afform_mock - The extra dep should be a real module

Using a real Angular module means that the page can be opened in an E2E test.

3 years agoStore 'permission' property for each form
Tim Otten [Thu, 19 Dec 2019 01:59:46 +0000 (17:59 -0800)]
Store 'permission' property for each form

3 years agoinfo.xml - Bump minimum version. Needs revised hook_civicrm_angularModules.
Tim Otten [Thu, 12 Dec 2019 23:58:29 +0000 (15:58 -0800)]
info.xml - Bump minimum version. Needs revised hook_civicrm_angularModules.

3 years agoGenerate partials via callback
Tim Otten [Thu, 12 Dec 2019 23:48:42 +0000 (15:48 -0800)]
Generate partials via callback

Technically, it's two changes:

1. Changing `snippets` to `partialsCallback` to reduce the amount of upfront IO/memory.
2. Changing the mocked-up filename to start with `~/theAngModule/`. So modules implemented in
   afform look more look other modules. Makes it work with `cv ang:html:list` and `cv ang:html:show`.

3 years agoRename modelListCtrl => afform
Coleman Watts [Thu, 12 Dec 2019 13:14:03 +0000 (08:14 -0500)]
Rename modelListCtrl => afform

3 years agoFix afform partial name
Coleman Watts [Wed, 11 Dec 2019 03:22:03 +0000 (22:22 -0500)]
Fix afform partial name

ng-include was failing with ~afform* but works with ~/afform*

3 years agoUse dynamic snippet for afform module layout.
Coleman Watts [Wed, 11 Dec 2019 03:01:16 +0000 (22:01 -0500)]
Use dynamic snippet for afform module layout.

3 years agoRemove redundant afformStandalone file
Coleman Watts [Wed, 11 Dec 2019 14:44:23 +0000 (09:44 -0500)]
Remove redundant afformStandalone file

3 years agoMerge afField module into af module
Coleman Watts [Wed, 11 Dec 2019 14:38:50 +0000 (09:38 -0500)]
Merge afField module into af module

3 years agoGUI - Add option to hide field labels
Coleman Watts [Wed, 11 Dec 2019 14:05:21 +0000 (09:05 -0500)]
GUI - Add option to hide field labels

3 years agoafform_gui - Tweak nav label
Tim Otten [Tue, 10 Dec 2019 21:07:35 +0000 (13:07 -0800)]
afform_gui - Tweak nav label

3 years agoFix ngRepeat syntax error
Coleman Watts [Tue, 10 Dec 2019 20:10:49 +0000 (15:10 -0500)]
Fix ngRepeat syntax error

3 years agoafform_gui, afform_html - Refresh after reverting
Tim Otten [Tue, 10 Dec 2019 06:21:04 +0000 (22:21 -0800)]
afform_gui, afform_html - Refresh after reverting

3 years agoafform_gui, afform_html - Adjust "Revert" button based on actual status
Tim Otten [Tue, 10 Dec 2019 06:12:01 +0000 (22:12 -0800)]
afform_gui, afform_html - Adjust "Revert" button based on actual status