Переглянути джерело

try to change edit action to console

andre 4 роки тому
батько
коміт
dde630f1b1
2 змінених файлів з 109 додано та 0 видалено
  1. 107 0
      app/UI/Vms/Buttons/ManageButton.php
  2. 2 0
      app/UI/Vms/Pages/VmsDataTable.php

+ 107 - 0
app/UI/Vms/Buttons/ManageButton.php

@@ -0,0 +1,107 @@
+<?php
+/* * ********************************************************************
+*  ProxmoxVPS Product developed. (27.03.19)
+* *
+*
+*  CREATED BY MODULESGARDEN       ->       http://modulesgarden.com
+*  CONTACT                        ->       contact@modulesgarden.com
+*
+*
+* This software is furnished under a license and may be used and copied
+* only  in  accordance  with  the  terms  of such  license and with the
+* inclusion of the above copyright notice.  This software  or any other
+* copies thereof may not be provided or otherwise made available to any
+* other person.  No title to and  ownership of the  software is  hereby
+* transferred.
+*
+*
+* ******************************************************************** */
+
+namespace ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Vms\Buttons;
+
+use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Vms\Modals\MigrateModal;
+use ModulesGarden\Servers\ProxmoxCloudVps\Core\Helper\BuildUrl;
+use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Interfaces\AdminArea;
+use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Interfaces\ClientArea;
+use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Buttons\ButtonDataTableModalAction;
+
+class ManageButton extends ButtonDataTableModalAction implements ClientArea
+{
+    protected $icon           = 'lu-zmdi lu-zmdi-globe-alt';
+
+    public function initContent()
+    {
+        $this->initIds('redirectButton');
+        $this->setDisableByColumnValue("vmid", 0);
+        $url ="clientarea.php?action=productdetails&id={$this->getWhmcsParamByKey('serviceid')}&modop=custom&a=management&mg-page=vm";
+        $this->setRawUrl($url)
+            ->setRedirectParams(['vm' => ':id']);
+    }
+
+    public function afterInitContent()
+    {
+        $this->htmlAttributes['@click.middle'] = 'redirect($event, ' . $this->parseCustomParams() . ', true)';
+        $this->htmlAttributes['@click'] = 'redirect($event, ' . $this->parseCustomParams() . ')';
+    }
+
+    public function setRawUrl($url)
+    {
+        $this->rawUrl = $url;
+
+        return $this;
+    }
+
+    protected function parseCustomParams()
+    {
+        if (count($this->redirectParams) === 0 && $this->rawUrl === null)
+        {
+            return '{}';
+        }
+
+        return $this->parseListTOJsString($this->redirectParams);
+    }
+
+    protected function parseListTOJsString($params)
+    {
+        $jsString = '{';
+
+        if ($this->rawUrl !== null)
+        {
+            $params['rawUrl'] = $this->rawUrl;
+        }
+
+        foreach ($params as $key => $value)
+        {
+            $jsString .= ' ' . str_replace('-', '__', $key) . ': ' . (is_array($value) ? ($this->parseListTOJsString($value) . ',') : ("'" . (string) $value) . "',");
+        }
+
+        $jsString = trim($jsString, ',') . ' } ';
+
+        return $jsString;
+    }
+
+    public function setRedirectParams($paramsList)
+    {
+        $this->redirectParams = $paramsList;
+
+        $this->updateHtmlAttributesByRedirectParams();
+
+        return $this;
+    }
+
+    protected function updateHtmlAttributesByRedirectParams()
+    {
+        foreach ($this->redirectParams as $key => $value)
+        {
+            $this->updateHtmlAttribute($key, $value);
+        }
+    }
+
+    protected function updateHtmlAttribute($key, $value)
+    {
+        if (strpos($value, ':') === 0)
+        {
+            $this->addHtmlAttribute(':data-' . $key , 'dataRow.' . trim($value, ':'));
+        }
+    }
+}

+ 2 - 0
app/UI/Vms/Pages/VmsDataTable.php

@@ -27,6 +27,7 @@ use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
 use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Vms\Buttons\CreateButton;
 use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Vms\Buttons\DeleteButton;
 use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Vms\Buttons\ConsoleButton;
+use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Vms\Buttons\ManageButton;
 use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Vms\Buttons\ImportButton;
 use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Vms\Buttons\MigrateButton;
 use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Interfaces\AdminArea;
@@ -80,6 +81,7 @@ class VmsDataTable extends DataTable implements ClientArea, AdminArea
         if(!$isAdmin){
             //edit
             $this->addActionButton(new ConsoleButton());
+            $this->addActionButton(new ManageButton());
         }
         //delete
         $this->addActionButton(new DeleteButton());