andre 5 месяцев назад
Родитель
Сommit
568825ffff

+ 1 - 1
app/UI/Client/Setting/Modals/InfoModal.php

@@ -28,7 +28,7 @@ class InfoModal extends BaseEditModal implements ClientArea
             return $this;
         }
         $this->addActionButton(new BaseCancelButton());
-        $this->addActionButton(new BaseRedirectButton());
+        $this->addActionButton(new BaseRedirectButton('cart.php?a=add&domain=transfer&sld='));
         return $this;
     }
 }

+ 81 - 0
core/UI/Widget/Buttons/ModalActionButtons/BaseRedirectButton.php

@@ -19,5 +19,86 @@ class BaseRedirectButton extends BaseContainer
 //        '@click.middle' => 'redirect($event,, true)',
 //        '@click' => 'redirect($event,, )'
     ];
+
+    protected $rawUrl = null;
+    protected $redirectParams = [];
+
+    public function initContent()
+    {
+        $this->htmlAttributes['@click.middle'] = 'redirect($event, ' . $this->parseCustomParams() . ', true)';
+        $this->htmlAttributes['@click'] = 'redirect($event, ' . $this->parseCustomParams() . ')';
+
+    }
+
+    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 setRawUrl($url)
+    {
+        $this->rawUrl = $url;
+        
+        return $this;
+    }
+    
+    public function addRedirectParam($key, $value)
+    {
+        $this->redirectParams[$key] = $value;
+        
+        $this->updateHtmlAttributesByRedirectParams();
+        
+        return $this;
+    }
+    
+    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, ':'));
+        }
+    }
 }
 
+