From 9a9479482f0abe1e5449ef0d936f48e1f89a3bac Mon Sep 17 00:00:00 2001 From: Allen Shaw Date: Wed, 6 Dec 2023 08:59:38 -0600 Subject: [PATCH] Add "Manage Premiums" to AdminUI, toward dev/core#3912 . --- CRM/Contribute/DAO/Product.php | 1 + .../ang/afsearchPremiumProducts.aff.html | 13 + .../ang/afsearchPremiumProducts.aff.json | 27 ++ .../SavedSearch_Manage_Premiums.mgd.php | 237 ++++++++++++++++++ xml/schema/Contribute/Product.xml | 6 + 5 files changed, 284 insertions(+) create mode 100644 ext/civicrm_admin_ui/ang/afsearchPremiumProducts.aff.html create mode 100644 ext/civicrm_admin_ui/ang/afsearchPremiumProducts.aff.json create mode 100644 ext/civicrm_admin_ui/managed/SavedSearch_Manage_Premiums.mgd.php diff --git a/CRM/Contribute/DAO/Product.php b/CRM/Contribute/DAO/Product.php index 9e9322baa8b7..705200d81b56 100644 --- a/CRM/Contribute/DAO/Product.php +++ b/CRM/Contribute/DAO/Product.php @@ -47,6 +47,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'add' => 'civicrm/admin/contribute/managePremiums/edit?action=add&reset=1', 'update' => 'civicrm/admin/contribute/managePremiums/edit?action=update&id=[id]&reset=1', 'delete' => 'civicrm/admin/contribute/managePremiums/edit?action=delete&id=[id]&reset=1', + 'preview' => 'civicrm/admin/contribute/managePremiums/edit?action=preview&reset=1&id=[id]', 'browse' => 'civicrm/admin/contribute/managePremiums/', ]; diff --git a/ext/civicrm_admin_ui/ang/afsearchPremiumProducts.aff.html b/ext/civicrm_admin_ui/ang/afsearchPremiumProducts.aff.html new file mode 100644 index 000000000000..d98af53af0c0 --- /dev/null +++ b/ext/civicrm_admin_ui/ang/afsearchPremiumProducts.aff.html @@ -0,0 +1,13 @@ +
+
+
+

{{:: ts('CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Premiums may be tangible items (i.e. a coffee mug or t-shirt), or they may be a membership or subscription with a pre-determined duration.') }}

+ +

{{:: ts('Use this section to enter and update all premiums that you want to offer on any of your Online Contribution pages. Then you can assign one or more premiums to a specific Contribution page from Contributions » Manage Contribution Pages » Configure » Premiums.') }}

+
+ +
+
+
+ +
diff --git a/ext/civicrm_admin_ui/ang/afsearchPremiumProducts.aff.json b/ext/civicrm_admin_ui/ang/afsearchPremiumProducts.aff.json new file mode 100644 index 000000000000..c865874c6773 --- /dev/null +++ b/ext/civicrm_admin_ui/ang/afsearchPremiumProducts.aff.json @@ -0,0 +1,27 @@ +{ + "type": "search", + "requires": null, + "entity_type": null, + "join_entity": null, + "title": "Premium Products", + "description": null, + "placement": [], + "summary_contact_type": null, + "summary_weight": null, + "icon": "fa-list-alt", + "server_route": "civicrm/admin/contribute/managePremiums", + "is_public": false, + "permission": [ + "access CiviCRM" + ], + "permission_operator": "AND", + "redirect": null, + "submit_enabled": true, + "submit_limit": null, + "create_submission": false, + "navigation": null, + "modified_date": "2023-12-06 08:54:32", + "manual_processing": null, + "allow_verification_by_email": null, + "email_confirmation_template_id": null +} diff --git a/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Premiums.mgd.php b/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Premiums.mgd.php new file mode 100644 index 000000000000..f7dfdba7dffc --- /dev/null +++ b/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Premiums.mgd.php @@ -0,0 +1,237 @@ + 'SavedSearch_Manage_Premiums', + 'entity' => 'SavedSearch', + 'cleanup' => 'unused', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Manage_Premiums', + 'label' => E::ts('Manage Premiums'), + 'api_entity' => 'Product', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'name', + 'sku', + 'price', + 'min_contribution', + 'cost', + 'financial_type_id:label', + 'is_active', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Manage_Premiums_SearchDisplay_Manage_Premiums_Table_1', + 'entity' => 'SearchDisplay', + 'cleanup' => 'unused', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Manage_Premiums_Table_1', + 'label' => E::ts('Manage Premium Products'), + 'saved_search_id.name' => 'Manage_Premiums', + 'type' => 'table', + 'settings' => [ + 'description' => E::ts('CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Premiums may be tangible items (i.e. a coffee mug or t-shirt), or they may be a membership or subscription with a pre-determined duration. Use this section to enter and update all premiums that you want to offer on any of your Online Contribution pages. Then you can assign one or more premiums to a specific Contribution page from Manage Contribution Pages » Configure » Premiums.'), + 'sort' => [ + [ + 'name', + 'ASC', + ], + ], + 'limit' => 50, + 'pager' => [ + 'expose_limit' => TRUE, + 'show_count' => TRUE, + 'hide_single' => TRUE, + ], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'name', + 'dataType' => 'String', + 'label' => E::ts('Product Name'), + 'sortable' => TRUE, + 'editable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'sku', + 'dataType' => 'String', + 'label' => E::ts('SKU'), + 'sortable' => TRUE, + 'editable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'price', + 'dataType' => 'Money', + 'label' => E::ts('Price'), + 'sortable' => TRUE, + 'editable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'min_contribution', + 'dataType' => 'Money', + 'label' => E::ts('Minimum Contribution'), + 'sortable' => TRUE, + 'editable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'cost', + 'dataType' => 'Money', + 'label' => E::ts('Cost'), + 'sortable' => TRUE, + 'editable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'financial_type_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Financial Type'), + 'sortable' => TRUE, + 'editable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'is_active', + 'dataType' => 'Boolean', + 'label' => E::ts('Enabled'), + 'sortable' => TRUE, + 'editable' => TRUE, + ], + [ + 'text' => '', + 'style' => 'default', + 'size' => 'btn-xs', + 'icon' => 'fa-bars', + 'links' => [ + [ + 'entity' => 'Product', + 'action' => 'preview', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-eye', + 'text' => E::ts('Preview'), + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + [ + 'entity' => 'Product', + 'action' => 'update', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-pencil', + 'text' => E::ts('Edit'), + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + [ + 'task' => 'enable', + 'entity' => 'Product', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-toggle-on', + 'text' => E::ts('Enable'), + 'style' => 'default', + 'path' => '', + 'action' => '', + 'condition' => [ + 'is_active', + '=', + FALSE, + ], + ], + [ + 'task' => 'disable', + 'entity' => 'Product', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-toggle-off', + 'text' => E::ts('Disable'), + 'style' => 'default', + 'path' => '', + 'action' => '', + 'condition' => [ + 'is_active', + '=', + TRUE, + ], + ], + [ + 'entity' => 'Product', + 'action' => 'delete', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-trash', + 'text' => E::ts('Delete'), + 'style' => 'danger', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + ], + 'type' => 'menu', + 'alignment' => 'text-right', + ], + ], + 'actions' => TRUE, + 'classes' => [ + 'table', + 'table-striped', + ], + 'cssRules' => [ + [ + 'disabled', + 'is_active', + '=', + FALSE, + ], + ], + 'toolbar' => [ + [ + 'path' => '', + 'icon' => 'fa-plus', + 'text' => E::ts('Add Product'), + 'style' => 'primary', + 'condition' => [], + 'task' => '', + 'entity' => 'Product', + 'action' => 'add', + 'join' => '', + 'target' => 'crm-popup', + ], + ], + ], + ], + 'match' => [ + 'saved_search_id', + 'name', + ], + ], + ], +]; diff --git a/xml/schema/Contribute/Product.xml b/xml/schema/Contribute/Product.xml index 237453035ba1..edeeeb3b81bc 100644 --- a/xml/schema/Contribute/Product.xml +++ b/xml/schema/Contribute/Product.xml @@ -6,6 +6,12 @@ able - stores "product info" for premiums and can be used for non-incentive products civicrm_product 1.4 + + civicrm/admin/contribute/managePremiums?action=add&reset=1 + civicrm/admin/contribute/managePremiums?action=preview&reset=1&id=[id] + civicrm/admin/contribute/managePremiums?action=update&reset=1&id=[id] + civicrm/admin/contribute/managePremiums?action=delete&reset=1&id=[id] + true CiviContribute name