From fcbf3ce37ca8f90a3e36d524a3274ffc063a40e3 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 14 Apr 2024 15:26:02 +0200 Subject: Adding upstream version 0.10.2+dfsg1. Signed-off-by: Daniel Baumann --- application/controllers/ConfigController.php | 30 +++++++++ application/forms/ChromeBinaryForm.php | 94 +++++++++++++++++++++++++++ application/views/scripts/config/chrome.phtml | 6 ++ 3 files changed, 130 insertions(+) create mode 100644 application/controllers/ConfigController.php create mode 100644 application/forms/ChromeBinaryForm.php create mode 100644 application/views/scripts/config/chrome.phtml (limited to 'application') diff --git a/application/controllers/ConfigController.php b/application/controllers/ConfigController.php new file mode 100644 index 0000000..7b5130b --- /dev/null +++ b/application/controllers/ConfigController.php @@ -0,0 +1,30 @@ +assertPermission('config/modules'); + + parent::init(); + } + + public function chromeAction() + { + $form = (new ChromeBinaryForm()) + ->setIniConfig(Config::module('pdfexport')); + + $form->handleRequest(); + + $this->view->tabs = $this->Module()->getConfigTabs()->activate('chrome'); + $this->view->form = $form; + } +} diff --git a/application/forms/ChromeBinaryForm.php b/application/forms/ChromeBinaryForm.php new file mode 100644 index 0000000..c72d933 --- /dev/null +++ b/application/forms/ChromeBinaryForm.php @@ -0,0 +1,94 @@ +setName('pdfexport_binary'); + $this->setSubmitLabel($this->translate('Save Changes')); + } + + public function createElements(array $formData) + { + $this->addElement('text', 'chrome_binary', [ + 'label' => $this->translate('Local Binary'), + 'placeholder' => '/usr/bin/google-chrome', + 'validators' => [new Zend_Validate_Callback(function ($value) { + $chrome = (new HeadlessChrome()) + ->setBinary($value); + + try { + $version = $chrome->getVersion(); + } catch (Exception $e) { + $this->getElement('chrome_binary')->addError($e->getMessage()); + return true; + } + + if ($version < 59) { + $this->getElement('chrome_binary')->addError(sprintf( + $this->translate( + 'Chrome/Chromium supporting headless mode required' + . ' which is provided since version 59. Version detected: %s' + ), + $version + )); + } + + return true; + })] + ]); + + $this->addElement('checkbox', 'chrome_force_temp_storage', [ + 'label' => $this->translate('Force local temp storage') + ]); + + $this->addElement('text', 'chrome_host', [ + 'label' => $this->translate('Remote Host'), + 'validators' => [new Zend_Validate_Callback(function ($value) { + if ($value === null) { + return true; + } + + $port = $this->getValue('chrome_port') ?: 9222; + + $chrome = (new HeadlessChrome()) + ->setRemote($value, $port); + + try { + $version = $chrome->getVersion(); + } catch (Exception $e) { + $this->getElement('chrome_host')->addError($e->getMessage()); + return true; + } + + if ($version < 59) { + $this->getElement('chrome_host')->addError(sprintf( + $this->translate( + 'Chrome/Chromium supporting headless mode required' + . ' which is provided since version 59. Version detected: %s' + ), + $version + )); + } + + return true; + })] + ]); + + $this->addElement('number', 'chrome_port', [ + 'label' => $this->translate('Remote Port'), + 'placeholder' => 9222, + 'min' => 1, + 'max' => 65535 + ]); + } +} diff --git a/application/views/scripts/config/chrome.phtml b/application/views/scripts/config/chrome.phtml new file mode 100644 index 0000000..46daf07 --- /dev/null +++ b/application/views/scripts/config/chrome.phtml @@ -0,0 +1,6 @@ +
+ +
+
+ +
-- cgit v1.2.3