Extension.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace Dcat\Admin\Models\Repositories;
  3. use Dcat\Admin\Admin;
  4. use Dcat\Admin\Form;
  5. use Dcat\Admin\Grid;
  6. use Dcat\Admin\Repositories\Repository;
  7. use Dcat\Admin\Show;
  8. use Dcat\Admin\Support\Composer;
  9. use Dcat\Admin\Extension as AbstractExtension;
  10. class Extension extends Repository
  11. {
  12. public function get(Grid\Model $model)
  13. {
  14. $data = [];
  15. foreach (Admin::getExtensions() as $class) {
  16. $data[] = $this->each($class::make());
  17. }
  18. return $data;
  19. }
  20. /**
  21. * @param AbstractExtension $extension
  22. * @return array
  23. */
  24. protected function each(AbstractExtension $extension)
  25. {
  26. $property = Composer::parse($extension->composerJson());
  27. $config = (array)config('admin-extensions.'.$extension->getName());
  28. return [
  29. 'id' => $extension::NAME,
  30. 'alias' => $extension->getName(),
  31. 'name' => $property->name,
  32. 'version' => Composer::getVersion($property->name),
  33. 'description' => $property->description,
  34. 'authors' => $property->authors,
  35. 'require' => $property->require,
  36. 'require_dev' => $property->require_dev,
  37. 'homepage' => $property->homepage,
  38. 'enable' => $extension::enabled(),
  39. 'config' => (array)$extension->config(),
  40. 'imported' => $config['imported'] ?? false,
  41. 'imported_at' => $config['imported_at'] ?? null,
  42. ];
  43. }
  44. public function edit(Form $form): array
  45. {
  46. return [];
  47. }
  48. public function update(Form $form)
  49. {
  50. $id = $form->builder()->getResourceId();
  51. $extension = Admin::getExtensions()[$id] ?? null;
  52. if (!$extension) {
  53. return false;
  54. }
  55. $attributes = $form->getUpdates();
  56. $enable = (bool)($attributes['enable'] ?? false);
  57. Admin::enableExtenstion($extension, $enable);
  58. return true;
  59. }
  60. /**
  61. * Get data before update.
  62. *
  63. * @param Form $form
  64. * @return array
  65. */
  66. public function getDataWhenUpdating(Form $form): array
  67. {
  68. return [];
  69. }
  70. public function detail(Show $show): array
  71. {
  72. return [];
  73. }
  74. public function destroy(Form $form, array $deletingData)
  75. {
  76. }
  77. public function store(Form $form)
  78. {
  79. }
  80. public function getDataWhenDeleting(Form $form): array
  81. {
  82. return [];
  83. }
  84. }