afform/core - Add property 'is_dashlet'
authorTim Otten <totten@civicrm.org>
Fri, 20 Nov 2020 00:28:53 +0000 (16:28 -0800)
committerTim Otten <totten@civicrm.org>
Tue, 24 Nov 2020 08:58:19 +0000 (00:58 -0800)
ext/afform/core/CRM/Afform/AfformScanner.php
ext/afform/core/Civi/Api4/Action/Afform/Get.php
ext/afform/core/Civi/Api4/Afform.php
ext/afform/docs/crud.md
ext/afform/mock/ang/mockPage.aff.json
ext/afform/mock/tests/phpunit/api/v4/AfformTest.php

index 4ee84cbda433a2676ed8e1a80c5f849803ead7e4..97908d49323a82839a4ac0e4b590d13ba2d2e1ab 100644 (file)
@@ -132,6 +132,7 @@ class CRM_Afform_AfformScanner {
       'requires' => [],
       'title' => '',
       'description' => '',
+      'is_dashlet' => FALSE,
       'is_public' => FALSE,
       'permission' => 'access CiviCRM',
     ];
index 5923017e2a2c96a22c5df9bee4c8e7f0ff20a463..192c4cce31a33c5c1af6c81ac0b59ff1619c4224 100644 (file)
@@ -114,6 +114,7 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
         'requires' => [],
         'title' => ts('%1 block (default)', [1 => $custom['title']]),
         'description' => '',
+        'is_dashlet' => FALSE,
         'is_public' => FALSE,
         'permission' => 'access CiviCRM',
         'join' => 'Custom_' . $custom['name'],
index 3527442f4187186f026a72d6a721a03463042da9..94abb0467be5b5afbbcfd4cce6bae02bb24501ee 100644 (file)
@@ -131,6 +131,10 @@ class Afform extends Generic\AbstractEntity {
         [
           'name' => 'description',
         ],
+        [
+          'name' => 'is_dashlet',
+          'data_type' => 'Boolean',
+        ],
         [
           'name' => 'is_public',
           'data_type' => 'Boolean',
index 7ba2f3c09dbd1d6fb6e4739a0903d4d4a728c8c6..c51e70f09a3a5c96671b3b9eb47c3fcb66ed0085 100644 (file)
@@ -13,6 +13,7 @@ $ cv api4 afform.get +w name=helloWorld
         ],
         "title": "",
         "description": "",
+        "is_dashlet": false,
         "is_public": false,
         "server_route": "civicrm/hello-world",
         "layout": {
index 2bdf31cc781f78408650f25c760ef65c26989073..d24584b4948cb1e53fedbdf7a3a6c9b62e976690 100644 (file)
@@ -1 +1 @@
-{"server_route": "civicrm/mock-page", "requires":["mockBespoke"], "permission": "access Foobar" }
+{"server_route": "civicrm/mock-page", "requires":["mockBespoke"], "permission": "access Foobar", "is_dashlet": true }
index 19de132180d31787e8d7980da7e8bb8a65eedd75..d80e994395e141ca82e9c8c11c248dc94f314b7a 100644 (file)
@@ -30,8 +30,8 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
 
   public function getBasicDirectives() {
     return [
-      ['mockPage', ['title' => '', 'description' => '', 'server_route' => 'civicrm/mock-page', 'permission' => 'access Foobar']],
-      ['mockBareFile', ['title' => '', 'description' => '', 'permission' => 'access CiviCRM']],
+      ['mockPage', ['title' => '', 'description' => '', 'server_route' => 'civicrm/mock-page', 'permission' => 'access Foobar', 'is_dashlet' => TRUE]],
+      ['mockBareFile', ['title' => '', 'description' => '', 'permission' => 'access CiviCRM', 'is_dashlet' => FALSE]],
       ['mockFoo', ['title' => '', 'description' => '', 'permission' => 'access CiviCRM']],
       ['mock-weird-name', ['title' => 'Weird Name', 'description' => '', 'permission' => 'access CiviCRM']],
     ];
@@ -58,6 +58,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
     $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message);
     $this->assertEquals($get($originalMetadata, 'description'), $get($result[0], 'description'), $message);
     $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message);
+    $this->assertEquals($get($originalMetadata, 'is_dashlet'), $get($result[0], 'is_dashlet'), $message);
     $this->assertEquals($get($originalMetadata, 'permission'), $get($result[0], 'permission'), $message);
     $this->assertTrue(is_array($result[0]['layout']), $message);
     $this->assertEquals(TRUE, $get($result[0], 'has_base'), $message);
@@ -68,6 +69,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
       ->addWhere('name', '=', $formName)
       ->addValue('description', 'The temporary description')
       ->addValue('permission', 'access foo')
+      ->addValue('is_dashlet', TRUE)
       ->execute();
     $this->assertEquals($formName, $result[0]['name'], $message);
     $this->assertEquals('The temporary description', $result[0]['description'], $message);
@@ -77,6 +79,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
     $this->assertEquals($formName, $result[0]['name'], $message);
     $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message);
     $this->assertEquals('The temporary description', $get($result[0], 'description'), $message);
+    $this->assertEquals(TRUE, $get($result[0], 'is_dashlet'), $message);
     $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message);
     $this->assertEquals('access foo', $get($result[0], 'permission'), $message);
     $this->assertTrue(is_array($result[0]['layout']), $message);