From 8134075f78722f7c656ee3ef7186c8bb9e5b4803 Mon Sep 17 00:00:00 2001 From: Ondrej Exner Date: Fri, 6 Sep 2024 13:59:57 +0200 Subject: [PATCH] improve readme, improve first log --- plugins/barcode-generator/README.md | 3 +- .../barcode-generator/barcode-generator.zip | Bin 1067460 -> 1067744 bytes .../barcode-generator/src/hook_install.php | 27 ++++++++++++------ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/plugins/barcode-generator/README.md b/plugins/barcode-generator/README.md index 973c17fb..2d29e5d3 100644 --- a/plugins/barcode-generator/README.md +++ b/plugins/barcode-generator/README.md @@ -4,7 +4,8 @@ This plugin generates SVG image of one or two dimensional barcode which can be i ## Templates implementation You can add barcode image into template code e.g.: ```` -> Server must be secured with valid certificate for https request. +> Make sure you have valid SSL certificate, otherwise the barcode won't load when used in PDF or email templates. +> In PDF templates only, you can use `http://localhost/crm/...` as an alternative. ## Required parameters - `token` - Security token from the plugin configuration in the CRM diff --git a/plugins/barcode-generator/barcode-generator.zip b/plugins/barcode-generator/barcode-generator.zip index 88843a99726d523b51cd64744bc63cb2df199708..be4d00017133ffa716ada0a6274bb3d367dbc76a 100644 GIT binary patch delta 28142 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 Zt&D7&aGBcH!M$pBb49T}Usp!!{{gwzz4HJ7 delta 28530 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 z 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т!#B%EgGE` z&y2rbG1A$(CJ#R8=4j!kc|DuWK%cbep(FL}7@q`_JKueL*U)5tE{;gBsf;wUp~=FJ z5au^_Pz`HjQ?-&lHnsr+o$ypD&|W|tUx!#VnWdhL3oR>4!J7PbWB0F=Vb^mOmfAVBgoO?(G8ar#g)FFV3O^gNQ7Yt67?^c z0QcgiMnvr=4Z&jMs)W&%NhWU*R-kleG7Fndg{L$bafFsY980D#t({RwuM)Izrl13; z(=51sSpwx7&toRq9SM7|j?Q~16)9$eNk{KP;mm1^L#yv*v*3-p5-#=H!XUAv5+$YY z6(EG}<26vKcbJ)}9!dl0(GdYs zq|{?fo;{9^P@j3J-RGU}5Ldx*R^2SEBuKgW0)$fOQzrEm5YO>F(e{p~1RYMNJ+VFo zpWyskEYn-Ol=@QIc}|VRVAhepw-O|ce#6Y!wfRzX7nzPM5x<775cgb&nv@QR?XQjQdZxdi3805QN^L0<5BPnR z4pLozmdy_^yU_v@y5W#7{9P@tYBT+i?xR8C|7EGOAJ&ikAp%sUU4Dph7oN2XkEVWR zAF5Oab#zT-W=I(n96p3W{!j#ULzvAYnL!iWDb^oMm2_rCW|+-Hg8BFpGtI|?LEsAY zoQkcf@RDuS*!ojgu>ZKpiRuMl2Ib6TCZnukpydHd6RFp1J7!V3R-r8MtzJ!7>3I(B z-p#Q|n@Pjw*?@rx$|_Bz%9(ad|8h#Sbd~Iw-^(ctrO1WM#Fxhk(q%EdF0a&~b4w6^ zd>G=tR2~`Kyj0Nrq=c2?vkJWmx8SYH3RqYJT*sy(~RCD~U>WrV%w zy3O{zbmo=~C=_`Iovv1zS_Q)1_iQ#-I$Q9;M%u#%#Nzi4E@{2xYC^hw6|3?IIH-X>5PBO{ zFxR1dp6D_;1buAqxB2zrYAaX5!e2B-ohyo>joI1zDh{^)Rp!F|LopAhRA=x!$l}eO zc7{8sGsA=+ke2^ycA>w+EoQMj2THz?g04bowJqoc!9>O|6BBQ-(DGOaG5GN2Se%V^ zqt$|`RL|zoOong_xWf%>j0^P%$Lf5nksVXHi3Mv-n1YA&;fk-6kJoo1v9ipHQ1AkG zO(jHHn8?h`nwX4j@%oN1>(eZ5w5tu`cvuVl;$90G&FW`o>ro5qbk0y4Q$`5!^7dS2 zYDOTAaqAeMt_W%6CI-(VFeT1s3xMAYVP}X`{Af`mwu$*U0<@9BwlmqFHd6czwhN(H zQXA`+YaX4itt3jG2Lu^FDF-b$YDFo5#qoAflv0My9kTe5cQhhC9EFI@hqy3k6B(j0 z{S|B-!kx;b9I=$9$osb4fi+}&OYIy?Qw>TS%=6YWHw+;1pQDU61 z-Tb!=_#liP>%%i&4ca|5}7;oxW4@;5pla2Y0l!{lp8z?m>^)se3%&zo%ea!pe z_2IrAF1)NZl@5|{hX5vqM!Cp%`kH{Q>Cpf}Ts49oB=wWUXC&>5Ra`{sTv@Z)UAA8i z#^WN)s#0i20;U{Z8&Dblh6t|*Zo?Yj1h%Xp#_*E>0b{Sf1W^RIL&(#o;D2fh8fT}H{33?*b)W5lLB1m1-_owPo=C2MaODga7~l diff --git a/plugins/barcode-generator/src/hook_install.php b/plugins/barcode-generator/src/hook_install.php index 691b624c..4e642547 100644 --- a/plugins/barcode-generator/src/hook_install.php +++ b/plugins/barcode-generator/src/hook_install.php @@ -2,20 +2,31 @@ declare(strict_types=1); -use Monolog\Handler\StreamHandler; -use Monolog\Logger; use UBarcode\Service\TokenInstaller; +use Ubnt\UcrmPluginSdk\Service\PluginConfigManager; use Ubnt\UcrmPluginSdk\Service\PluginLogManager; +use Ubnt\UcrmPluginSdk\Service\UcrmOptionsManager; chdir(__DIR__); require __DIR__ . '/vendor/autoload.php'; -$logger = new Logger('UBarcode'); -$logger->pushHandler(new StreamHandler('data/plugin.log')); - -$logManager = PluginLogManager::create(); - (new TokenInstaller())->install(); -$logger->info('Security token has been generated. Use it as a part of request string.'); +$configManager = PluginConfigManager::create(); +$config = $configManager->loadConfig(); +$ucrmOptionsManager = UcrmOptionsManager::create(); +$ucrmOptions = $ucrmOptionsManager->loadOptions(); + +$logManager = PluginLogManager::create(); +$logManager->appendLog('Security token has been automatically generated. You must use it as a part of the URL.'); +$logManager->appendLog(''); +$logManager->appendLog('Example usage:'); +$logManager->appendLog( + sprintf( + '', + $ucrmOptions->ucrmPublicUrl, + $config['token'] ?? '' + ) +); +$logManager->appendLog('');