Skip to content

Commit 5f7d79e

Browse files
committed
!410 - Added remove method for modules.
1 parent b3e07b7 commit 5f7d79e

File tree

3 files changed

+88
-47
lines changed

3 files changed

+88
-47
lines changed

apps/Core/Components/Devtools/Modules/ModulesComponent.php

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -429,23 +429,17 @@ public function updateAction()
429429
);
430430
}
431431

432-
// public function removeAction()
433-
// {
434-
// if ($this->request->isPost()) {
435-
// if (!$this->checkCSRF()) {
436-
// return;
437-
// }
432+
public function removeAction()
433+
{
434+
$this->requestIsPost();
438435

439-
// $this->modulesPackage->removeModule($this->postData());
436+
$this->modulesPackage->removeModule($this->postData());
440437

441-
// $this->addResponse(
442-
// $this->modulesPackage->packagesData->responseMessage,
443-
// $this->modulesPackage->packagesData->responseCode
444-
// );
445-
// } else {
446-
// $this->addResponse('Method Not Allowed', 1);
447-
// }
448-
// }
438+
$this->addResponse(
439+
$this->modulesPackage->packagesData->responseMessage,
440+
$this->modulesPackage->packagesData->responseCode
441+
);
442+
}
449443

450444
// public function validateJsonAction()
451445
// {

apps/Core/Packages/Devtools/Modules/DevtoolsModules.php

Lines changed: 42 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -242,16 +242,22 @@ public function updateModule($data)
242242
$this->addResponse('Error updating Module', 1);
243243
}
244244

245-
// public function removeModule($data)
246-
// {
247-
// $module = $this->getById($data['id']);
245+
public function removeModule($data)
246+
{
247+
if ($data['module_type'] !== 'core') {
248+
$module = $this->modules->{$data['module_type']}->getById($data['id']);
249+
} else {
250+
$this->addResponse('Cannot remove Core!.', 1);
248251

249-
// if ($this->remove($module['id'])) {
250-
// $this->addResponse('Removed module ' . $module['name']);
251-
// } else {
252-
// $this->addResponse('Error removing module.', 1);
253-
// }
254-
// }
252+
return false;
253+
}
254+
255+
if ($this->modules->{$data['module_type']}->remove($module['id'])) {
256+
$this->addResponse('Removed module ' . $module['display_name'] . ' from DB. Remove files manually...');
257+
} else {
258+
$this->addResponse('Error removing module.', 1);
259+
}
260+
}
255261

256262
protected function checkAppType($data)
257263
{
@@ -401,7 +407,7 @@ protected function checkModuleTypeAndCategory($data)
401407
}
402408

403409
if ($data['module_type'] === 'packages') {//Possible error can happen when cloning core modules.
404-
if ($data['category'] === 'basepackages' || $data['category'] === 'providers') {
410+
if (str_starts_with($data['category'], 'basepackages') || $data['category'] === 'providers') {
405411
$data['app_type'] = 'core';
406412
}
407413
}
@@ -623,10 +629,10 @@ protected function getModuleJsonFileLocation(&$data)
623629
$moduleLocation = 'apps/' . ucfirst($data['app_type']) . '/Components/';
624630
} else if ($data['module_type'] === 'packages') {
625631
if ($data['app_type'] === 'core' &&
626-
($data['category'] === 'basepackages' ||
632+
(str_starts_with($data['category'], 'basepackages') ||
627633
$data['category'] === 'providers')
628634
) {
629-
if ($data['category'] === 'basepackages') {
635+
if (str_starts_with($data['category'], 'basepackages')) {
630636
$moduleLocation = 'system/Base/Installer/Packages/Setup/Register/Modules/Packages/Basepackages/';
631637
} else if ($data['category'] === 'providers') {
632638
$moduleLocation = 'system/Base/Installer/Packages/Setup/Register/Modules/Packages/Providers/';
@@ -641,8 +647,8 @@ protected function getModuleJsonFileLocation(&$data)
641647
}
642648

643649
if ($data['module_type'] === 'packages' &&
644-
($data['category'] === 'basepackages' ||
645-
$data['category'] === 'providers')
650+
(str_starts_with($data['category'], 'basepackages') ||
651+
$data['category'] === 'providers')
646652
) {
647653
return
648654
$moduleLocation .
@@ -709,11 +715,13 @@ protected function getNewFilesLocation($data, $public = false)
709715
$moduleLocation = 'apps/' . ucfirst($data['app_type']) . '/Components/';
710716
} else if ($data['module_type'] === 'packages') {
711717
if ($data['app_type'] === 'core' &&
712-
($data['category'] === 'basepackages' ||
718+
(str_starts_with($data['category'], 'basepackages') ||
713719
$data['category'] === 'providers')
714720
) {
715-
if ($data['category'] === 'basepackages') {
721+
if (str_starts_with($data['category'], 'basepackages')) {
716722
$moduleLocation = 'system/Base/Providers/BasepackagesServiceProvider/Packages/';
723+
} else if ($data['category'] === 'basepackages_apis') {
724+
$moduleLocation = 'system/Base/Providers/BasepackagesServiceProvider/Packages/ApiClientServices/Apis/';
717725
} else if ($data['category'] === 'providers') {
718726
$moduleLocation = 'system/Base/Providers/';
719727
}
@@ -733,10 +741,9 @@ protected function getNewFilesLocation($data, $public = false)
733741
}
734742

735743
if ($data['module_type'] === 'packages' &&
736-
($data['category'] === 'basepackages' ||
737-
$data['category'] === 'providers')
744+
(str_starts_with($data['category'], 'basepackages') || $data['category'] === 'providers')
738745
) {
739-
if ($data['category'] === 'basepackages') {
746+
if (str_starts_with($data['category'], 'basepackages')) {
740747
$pathArr = preg_split('/(?=[A-Z])/', $data['name'], -1, PREG_SPLIT_NO_EMPTY);
741748

742749
unset($pathArr[$this->helper->lastKey($pathArr)]);
@@ -883,13 +890,15 @@ protected function generateNewPackagesFiles($moduleFilesLocation, $data)
883890
$file = str_replace('"PACKAGENAME"', $data['name'], $file);
884891
$file = str_replace('"PACKAGENAMELC"', strtolower($data['name']), $file);
885892

886-
if ($data['category'] === 'basepackages') {
893+
if (str_starts_with($data['category'], 'basepackages')) {
887894
$fileName = $moduleFilesLocation . $this->helper->last(preg_split('/(?=[A-Z])/', $data['name'], -1, PREG_SPLIT_NO_EMPTY)) . '.php';
888895
} else {
889896
$fileName = $moduleFilesLocation . $data['name'] . '.php';
890897
}
898+
891899
try {
892900
$this->localContent->write($fileName, $file);
901+
893902
array_push($this->newFiles, $fileName);
894903
} catch (FilesystemException | UnableToWriteFile $exception) {
895904
$this->addResponse('Unable to write module component file');
@@ -912,7 +921,8 @@ protected function generateNewPackagesInstallFiles($data, $moduleFilesLocation)
912921
return false;
913922
}
914923

915-
if ($data['category'] === 'basepackages' || $data['category'] === 'providers') {
924+
if (str_starts_with($data['category'], 'basepackages') || $data['category'] === 'providers') {
925+
// str_starts_with($data['category'], 'basepackages')
916926
$moduleFilesLocation = $this->getModuleJsonFileLocation($data);
917927
$moduleFilesLocation = str_replace('Register/Modules/Packages', 'Schema', $moduleFilesLocation);
918928
$moduleFilesLocation = rtrim(str_replace('package.json', '', $moduleFilesLocation), '/');
@@ -949,7 +959,7 @@ protected function generateNewPackagesInstallFiles($data, $moduleFilesLocation)
949959
return false;
950960
}
951961

952-
if ($data['category'] !== 'basepackages' && $data['category'] !== 'providers') {
962+
if ($data['category'] !== str_starts_with($data['category'], 'basepackages') && $data['category'] !== 'providers') {
953963
$moduleFilesLocation = str_replace('/Schema', '', ucfirst($moduleFilesLocation));
954964
$fileName = $moduleFilesLocation . '/' . 'Package.php';
955965
$moduleFilesLocationClass = str_replace('/', '\\', ucfirst($moduleFilesLocation));
@@ -982,10 +992,10 @@ protected function generateNewPackagesModelFiles($data, $moduleFilesLocation)
982992
return false;
983993
}
984994

985-
if ($data['category'] === 'basepackages' || $data['category'] === 'providers') {
995+
if (str_starts_with($data['category'], 'basepackages') || $data['category'] === 'providers') {
986996
$nameArr = preg_split('/(?=[A-Z])/', $data['name'], -1, PREG_SPLIT_NO_EMPTY);
987997

988-
if ($data['category'] === 'basepackages') {
998+
if (str_starts_with($data['category'], 'basepackages')) {
989999
$moduleFilesLocation = 'system/Base/Providers/BasepackagesServiceProvider/Packages/Model/';
9901000

9911001
if (count($nameArr) === 1) {
@@ -2041,7 +2051,7 @@ public function generateModuleClass($data)
20412051

20422052
if ($data['category'] === 'providers') {
20432053
$class .= 'System\Base\Providers\\' . ucfirst($data['name']) . 'ServiceProvider' . '\\' . ucfirst($data['name']);
2044-
} else if ($data['category'] === 'basepackages') {
2054+
} else if (str_starts_with($data['category'], 'basepackages')) {
20452055
$class .= 'System\Base\Providers\BasepackagesServiceProvider\Packages\\' . ucfirst($data['name']);
20462056
} else {
20472057
$name = lcfirst($data['name']);
@@ -2207,11 +2217,14 @@ public function getAvailableApis($getAll = false, $returnApis = true)
22072217
foreach ($apisArr as $api) {
22082218
if ($api['category'] === 'repos') {
22092219
$useApi = $this->basepackages->apiClientServices->useApi($api['id'], true);
2210-
$apiConfig = $useApi->getApiConfig();
22112220

2212-
$apis[$api['id']]['id'] = $apiConfig['id'];
2213-
$apis[$api['id']]['name'] = $apiConfig['name'];
2214-
$apis[$api['id']]['data']['url'] = $apiConfig['repo_url'];
2221+
if ($useApi) {
2222+
$apiConfig = $useApi->getApiConfig();
2223+
2224+
$apis[$api['id']]['id'] = $apiConfig['id'];
2225+
$apis[$api['id']]['name'] = $apiConfig['name'];
2226+
$apis[$api['id']]['data']['url'] = $apiConfig['repo_url'];
2227+
}
22152228
}
22162229
}
22172230
}

apps/Core/Views/Default/html/devtools/modules/select.html

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,14 @@
170170
'position' : 'left',
171171
'disabled' : true
172172
],
173+
'remove-module' : [
174+
'title' : 'Remove Module',
175+
'size' : 'xs',
176+
'type' : 'danger',
177+
'icon' : 'trash',
178+
'position' : 'left',
179+
'disabled' : true
180+
],
173181
'generate-new-release' : [
174182
'title' : 'Generate New Release',
175183
'size' : 'xs',
@@ -192,7 +200,7 @@
192200
</div>
193201
</div>
194202
<script>
195-
/* globals BazContentLoader Pace BazCore */
203+
/* globals BazContentLoader Pace BazCore PNotify */
196204
var dataCollectionComponent, dataCollectionSection, dataCollectionSectionForm;
197205

198206
if (!window['dataCollection']['{{componentId}}']) {
@@ -231,7 +239,7 @@
231239
id = e.params.data.id;
232240
label = $(e.params.data.element).parents('optgroup').attr('label').toLowerCase();
233241

234-
$('#{{componentId}}-{{sectionId}}-edit-module').attr('disabled', false);
242+
$('#{{componentId}}-{{sectionId}}-edit-module, #{{componentId}}-{{sectionId}}-remove-module').attr('disabled', false);
235243

236244
if (label !== 'bundles' && label !== 'apptypes') {
237245
$('#{{componentId}}-{{sectionId}}-clone-module').attr('disabled', false);
@@ -245,7 +253,7 @@
245253

246254
if (label === 'core') {
247255
$('#{{componentId}}-{{sectionId}}-generate-new-release').attr('disabled', false);
248-
$('#{{componentId}}-{{sectionId}}-clone-module').attr('disabled', true);
256+
$('#{{componentId}}-{{sectionId}}-clone-module, #{{componentId}}-{{sectionId}}-remove-module').attr('disabled', true);
249257
} else if (label !== 'core') {
250258
if ($('#{{componentId}}-{{sectionId}}-include_core_modules')[0].checked === false) {
251259
$('#{{componentId}}-{{sectionId}}-generate-new-release').attr('disabled', false);
@@ -284,6 +292,32 @@
284292
}
285293
});
286294

295+
$('#{{componentId}}-{{sectionId}}-remove-module').off();
296+
$('#{{componentId}}-{{sectionId}}-remove-module').click(function() {
297+
var postData = { };
298+
postData[$('#security-token').attr('name')] = $('#security-token').val();
299+
postData['id'] = id;
300+
postData['module_type'] = label;
301+
302+
$.post('{{links.url("devtools/modules/remove")}}', postData, function(response) {
303+
if (response.tokenKey && response.token) {
304+
$('#security-token').attr('name', response.tokenKey);
305+
$('#security-token').val(response.token);
306+
}
307+
308+
if (response.responseCode == 0) {
309+
PNotify.success({'text': response.responseMessage});
310+
if ($('#{{componentId}}-{{sectionId}}-include_core_modules')[0].checked === true) {
311+
dataCollectionSectionForm['funcs']['loadAjax'](null, null, true);
312+
} else {
313+
dataCollectionSectionForm['funcs']['loadAjax'](null, null, false);
314+
}
315+
} else {
316+
PNotify.error({'text': response.responseMessage});
317+
}
318+
}, 'json');
319+
});
320+
287321
$('#{{componentId}}-{{sectionId}}-generate-new-release').off();
288322
$('#{{componentId}}-{{sectionId}}-generate-new-release').click(function() {
289323
if ($('#{{componentId}}-{{sectionId}}-include_core_modules')[0].checked === true) {

0 commit comments

Comments
 (0)