|
1 | 1 | @php
|
2 |
| -use BaconQrCode\Renderer\ImageRenderer; |
3 |
| -use BaconQrCode\Renderer\Image\ImagickImageBackEnd; |
4 |
| -use BaconQrCode\Renderer\RendererStyle\RendererStyle; |
5 |
| -use BaconQrCode\Writer; |
6 |
| -use BaconQrCode\Renderer\Image\SvgImageBackEnd; |
| 2 | +use SimpleSoftwareIO\QrCode\Facades\QrCode; |
7 | 3 | use App\Models\User;
|
8 | 4 | $usrhandl = Auth::user()->littlelink_name;
|
9 | 5 | @endphp
|
|
685 | 681 | </div>
|
686 | 682 | @php
|
687 | 683 | try {
|
688 |
| - $qrCodeData = url('@'.Auth::user()->littlelink_name); |
| 684 | + $redirectURL = url('').'/'.'u/'.Auth::user()->id; |
689 | 685 |
|
690 |
| - $renderer = new ImageRenderer( |
691 |
| - new RendererStyle(400), |
692 |
| - new SvgImageBackEnd() |
693 |
| - ); |
694 |
| - $writer = new Writer($renderer); |
| 686 | + if (extension_loaded('imagick')) { |
| 687 | + $imgSrc = QrCode::format('png')->size(1000)->generate($redirectURL); |
| 688 | + $imgSrc = base64_encode($imgSrc); |
| 689 | + $imgSrc = 'data:image/png;base64,' . $imgSrc; |
| 690 | + $imgType = 'png'; |
| 691 | + } else { |
| 692 | + $imgSrc = QrCode::size(1000)->generate($redirectURL); |
| 693 | + $imgSrc = base64_encode($imgSrc); |
| 694 | + $imgSrc = 'data:image/svg+xml;base64,' . $imgSrc; |
| 695 | + $imgType = 'svg'; |
| 696 | + } |
695 | 697 |
|
696 |
| - $svgImageData = $writer->writeString($qrCodeData); |
697 |
| -
|
698 |
| - $svgImageBase64 = base64_encode($svgImageData); |
699 |
| -
|
700 |
| - $imgSrc = 'data:image/svg+xml;base64,' . $svgImageBase64; |
701 |
| - } catch(exception $e) {echo '<p class="text-center pt-5">{{__("messages.QR code could not be generated")}}</p>'; if(auth()->user()->role == 'admin'){echo "<p class='ps-3'>{{__('messages.Reason:')}} <pre class='ps-4'>".$e->getMessage()."</pre></p>";}} |
| 698 | + } catch(exception $e) { |
| 699 | + $imgSrc = url('/assets/linkstack/images/themes/no-preview.png'); |
| 700 | + $imgType = NULL; |
| 701 | + } |
702 | 702 | @endphp
|
703 | 703 | <div class="modal-body">
|
704 | 704 | <div class="bd-example">
|
705 |
| - <img draggable="false" src="@php if(isset($imgSrc)){echo $imgSrc;} @endphp" style="width:100%;height:auto;" class="bd-placeholder-img img-thumbnail"> |
| 705 | + <img id="generatedImage" draggable="false" src="@php if(isset($imgSrc)){echo $imgSrc;} @endphp" style="width:100%;height:auto;" class="bd-placeholder-img img-thumbnail"> |
706 | 706 | </div>
|
707 | 707 | </div>
|
708 | 708 | <div class="modal-footer">
|
| 709 | + @if($imgType == 'png') |
| 710 | + <button type="button" class="btn btn-info" id="downloadButton">{{__('messages.Download')}}</button> |
| 711 | + @endif |
709 | 712 | <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{__('messages.Close')}}</button>
|
710 | 713 | </div>
|
711 | 714 | </div>
|
712 | 715 | </div>
|
713 | 716 | </div>
|
714 | 717 |
|
| 718 | + <script> |
| 719 | + document.addEventListener("DOMContentLoaded", function() { |
| 720 | + var downloadButton = document.getElementById("downloadButton"); |
| 721 | + var generatedImage = document.getElementById("generatedImage"); |
| 722 | + |
| 723 | + downloadButton.addEventListener("click", function() { |
| 724 | + var format = generatedImage.getAttribute("data-format") || "png"; |
| 725 | + var downloadLink = document.createElement("a"); |
| 726 | + downloadLink.href = generatedImage.src; |
| 727 | + downloadLink.download = "generated_image." + format; |
| 728 | + document.body.appendChild(downloadLink); |
| 729 | + downloadLink.click(); |
| 730 | + document.body.removeChild(downloadLink); |
| 731 | + }); |
| 732 | + }); |
| 733 | + </script> |
| 734 | + |
715 | 735 | <!-- Library Bundle Script -->
|
716 | 736 | <script src="{{asset('assets/js/core/libs.min.js')}}"></script>
|
717 | 737 |
|
|
0 commit comments