Fields drag n drop
[civicrm-core.git] / ext / afform / gui / afform_gui.php
CommitLineData
6bc5e930
TO
1<?php
2
3require_once 'afform_gui.civix.php';
4use CRM_AfformGui_ExtensionUtil as E;
5
6/**
7 * Implements hook_civicrm_config().
8 *
9 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config
10 */
11function afform_gui_civicrm_config(&$config) {
12 _afform_gui_civix_civicrm_config($config);
13}
14
15/**
16 * Implements hook_civicrm_xmlMenu().
17 *
18 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_xmlMenu
19 */
20function afform_gui_civicrm_xmlMenu(&$files) {
21 _afform_gui_civix_civicrm_xmlMenu($files);
22}
23
24/**
25 * Implements hook_civicrm_install().
26 *
27 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install
28 */
29function afform_gui_civicrm_install() {
30 _afform_gui_civix_civicrm_install();
31}
32
33/**
34 * Implements hook_civicrm_postInstall().
35 *
36 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_postInstall
37 */
38function afform_gui_civicrm_postInstall() {
39 _afform_gui_civix_civicrm_postInstall();
40}
41
42/**
43 * Implements hook_civicrm_uninstall().
44 *
45 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall
46 */
47function afform_gui_civicrm_uninstall() {
48 _afform_gui_civix_civicrm_uninstall();
49}
50
51/**
52 * Implements hook_civicrm_enable().
53 *
54 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable
55 */
56function afform_gui_civicrm_enable() {
57 _afform_gui_civix_civicrm_enable();
58}
59
60/**
61 * Implements hook_civicrm_disable().
62 *
63 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable
64 */
65function afform_gui_civicrm_disable() {
66 _afform_gui_civix_civicrm_disable();
67}
68
69/**
70 * Implements hook_civicrm_upgrade().
71 *
72 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_upgrade
73 */
74function afform_gui_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) {
75 return _afform_gui_civix_civicrm_upgrade($op, $queue);
76}
77
78/**
79 * Implements hook_civicrm_managed().
80 *
81 * Generate a list of entities to create/deactivate/delete when this module
82 * is installed, disabled, uninstalled.
83 *
84 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_managed
85 */
86function afform_gui_civicrm_managed(&$entities) {
87 _afform_gui_civix_civicrm_managed($entities);
88}
89
90/**
91 * Implements hook_civicrm_caseTypes().
92 *
93 * Generate a list of case-types.
94 *
95 * Note: This hook only runs in CiviCRM 4.4+.
96 *
97 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_caseTypes
98 */
99function afform_gui_civicrm_caseTypes(&$caseTypes) {
100 _afform_gui_civix_civicrm_caseTypes($caseTypes);
101}
102
103/**
104 * Implements hook_civicrm_angularModules().
105 *
106 * Generate a list of Angular modules.
107 *
108 * Note: This hook only runs in CiviCRM 4.5+. It may
109 * use features only available in v4.6+.
110 *
111 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_angularModules
112 */
113function afform_gui_civicrm_angularModules(&$angularModules) {
114 _afform_gui_civix_civicrm_angularModules($angularModules);
115}
116
117/**
118 * Implements hook_civicrm_alterSettingsFolders().
119 *
120 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders
121 */
122function afform_gui_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) {
123 _afform_gui_civix_civicrm_alterSettingsFolders($metaDataFolders);
124}
125
126/**
127 * Implements hook_civicrm_entityTypes().
128 *
129 * Declare entity types provided by this module.
130 *
131 * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_entityTypes
132 */
133function afform_gui_civicrm_entityTypes(&$entityTypes) {
134 _afform_gui_civix_civicrm_entityTypes($entityTypes);
135}
136
7620445e
TO
137/**
138 * Implements hook_civicrm_themes().
139 */
140function afform_gui_civicrm_themes(&$themes) {
141 _afform_gui_civix_civicrm_themes($themes);
142}
143
6bc5e930 144/**
c820e08c
CW
145 * Implements hook_civicrm_pageRun().
146 */
147function afform_gui_civicrm_pageRun(&$page) {
148 if (get_class($page) == 'CRM_Afform_Page_AfformBase' && $page->get('afModule') == 'afGuiAdmin') {
149 Civi::resources()->addScriptUrl(Civi::service('asset_builder')->getUrl('af-gui-vars.js'));
150 }
151}
6bc5e930
TO
152
153/**
c820e08c 154 * Implements hook_civicrm_buildAsset().
6bc5e930 155 *
c820e08c
CW
156 * Loads metadata to send to the gui editor.
157 */
158function afform_gui_civicrm_buildAsset($asset, $params, &$mimeType, &$content) {
159 if ($asset !== 'af-gui-vars.js') {
160 return;
161 }
162
163 // Things that can't be handled by afform. TODO: Need a better way to do this. Maybe add core metadata about what each entity is for, and filter on that.
164 $entityBlacklist = [
165 'ACL',
166 'ActionSchedule',
167 'ActivityContact',
168 'Afform%',
169 'CaseContact',
170 'EntityTag',
171 'GroupContact',
172 'GroupNesting',
173 'GroupOrganization',
174 'Setting',
175 'System',
176 'UF%',
177 ];
178 $entityApi = Civi\Api4\Entity::get()
179 ->setCheckPermissions(FALSE)
180 ->setSelect(['name', 'description']);
181 foreach ($entityBlacklist as $nono) {
182 $entityApi->addWhere('name', 'NOT LIKE', $nono);
183 }
184
a064e90d 185 $contactFields = Civi\Api4\Contact::getFields()
c820e08c
CW
186 ->setCheckPermissions(FALSE)
187 ->setIncludeCustom(TRUE)
188 ->setLoadOptions(TRUE)
65c9e7ae
CW
189 ->setAction('create')
190 ->setSelect(['name', 'title', 'input_type', 'input_attrs', 'options'])
c820e08c
CW
191 ->execute();
192
a064e90d
CW
193 $contactSettings = [
194 'data' => [],
195 ];
196
c820e08c
CW
197 $mimeType = 'text/javascript';
198 $content = "CRM.afformAdminData={";
199 $content .= 'entities:' . json_encode((array) $entityApi->execute(), JSON_UNESCAPED_SLASHES) . ',';
a064e90d
CW
200 $content .= 'fields:' . json_encode(['Contact' => (array) $contactFields], JSON_UNESCAPED_SLASHES) . ',';
201 $content .= 'settings:' . json_encode(['Contact' => $contactSettings], JSON_UNESCAPED_SLASHES);
c820e08c
CW
202 $content .= '}';
203}