OptionsTable.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxCloudVps\Packages\WhmcsService\UI\ConfigurableOption;
  3. use ModulesGarden\Servers\ProxmoxCloudVps\Core\App\Packages\PackageManager;
  4. use ModulesGarden\Servers\ProxmoxCloudVps\Core\Traits\Lang;
  5. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\DataTable\DataTable;
  6. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\DataTable\Column;
  7. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\DataTable\DataProviders\Providers\ArrayDataProvider;
  8. use ModulesGarden\Servers\ProxmoxCloudVps\Packages\WhmcsService\Config\Enum;
  9. use ModulesGarden\Servers\ProxmoxCloudVps\Packages\WhmcsService\Config\PackageConfiguration;
  10. use ModulesGarden\Servers\ProxmoxCloudVps\Packages\WhmcsService\Product;
  11. use ModulesGarden\Servers\ProxmoxCloudVps\Packages\WhmcsService\UI\ConfigurableOption\Buttons\AddOption;
  12. use ModulesGarden\Servers\ProxmoxCloudVps\Packages\WhmcsService\UI\ConfigurableOption\Buttons\OptionDetails;
  13. class OptionsTable extends DataTable
  14. {
  15. use Lang;
  16. protected $id = 'configOptionsTable';
  17. protected $name = 'configOptionsTable';
  18. protected $title = 'configOptionsTableTitle';
  19. protected $searchable = false;
  20. protected $isViewTopBody = false;
  21. protected $isViewFooter = false;
  22. protected $actionIdColumnName = 'optionname';
  23. public function initContent()
  24. {
  25. $this->addColumn(new Column(Enum::OPTION_NAME));
  26. $this->addColumn(new Column('status'));
  27. $this->addActionButton(AddOption::class);
  28. $this->addActionButton(OptionDetails::class);
  29. }
  30. public function loadData()
  31. {
  32. $packageManager = new PackageManager();
  33. $config = $packageManager->getPackageConfiguration(PackageConfiguration::getPackageName());
  34. $optionsList = $config->{Enum::CONFIGURABLE_OPTIONS};
  35. $product = new Product($this->getRequestValue('id'));
  36. foreach ($optionsList as $key => $option)
  37. {
  38. $exists = $product->doesConfigurableOptionExist($option['optionname']);
  39. $optionsList[$key]['exists'] = $exists;
  40. $optionsList[$key]['gid'] = $product->getOptionGroupId($option['optionname']);
  41. $optionsList[$key]['status'] = $exists ? '<span class="lu-label lu-label--success lu-label--status">' . $this->translate('active') . '</span>'
  42. : '<span class="lu-label lu-label--default lu-label--status">' . $this->translate('inactive') . '</span>';
  43. }
  44. $dataProvieder = new ArrayDataProvider();
  45. $dataProvieder->setData($optionsList);
  46. $this->setDataProvider($dataProvieder);
  47. }
  48. protected function translate($phrase)
  49. {
  50. $this->loadLang();
  51. return $this->lang->absoluteTranslate($this->id, 'status', $phrase);
  52. }
  53. }