PluginProbe
Packeta / 1.4.1
Packeta v1.4.1
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / src / Packetery / Module / Order / Modal.php

Modal.php in Packeta 1.4.1, at src/Packetery/Module/Order/Modal.php

151 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class Modal
4 *
5 * @package Packetery\Module\Order
6 */
7
8 declare( strict_types=1 );
9
10
11 namespace Packetery\Module\Order;
12
13 use Packetery\Core;
14 use Packetery\Core\Entity\Order;
15 use Packetery\Module\FormFactory;
16 use PacketeryLatte\Engine;
17 use PacketeryNette\Forms\Form;
18
19 /**
20 * Class Modal
21 *
22 * @package Packetery\Module\Order
23 */
24 class Modal {
25
26 /**
27 * Latte engine.
28 *
29 * @var Engine
30 */
31 private $latteEngine;
32
33 /**
34 * Form factory.
35 *
36 * @var FormFactory
37 */
38 private $formFactory;
39
40 /**
41 * Order controller.
42 *
43 * @var ControllerRouter
44 */
45 private $orderControllerRouter;
46
47 /**
48 * Order validator.
49 *
50 * @var Core\Validator\Order
51 */
52 private $orderValidator;
53
54 /**
55 * Modal constructor.
56 *
57 * @param Engine $latteEngine Latte engine.
58 * @param FormFactory $formFactory Form factory.
59 * @param ControllerRouter $orderController Order controller.
60 * @param Core\Validator\Order $orderValidator Order validator.
61 */
62 public function __construct( Engine $latteEngine, FormFactory $formFactory, ControllerRouter $orderController, Core\Validator\Order $orderValidator ) {
63 $this->latteEngine = $latteEngine;
64 $this->formFactory = $formFactory;
65 $this->orderControllerRouter = $orderController;
66 $this->orderValidator = $orderValidator;
67 }
68
69 /**
70 * Registers order modal.
71 */
72 public function register(): void {
73 add_action( 'admin_head', [ $this, 'renderTemplate' ] );
74 }
75
76 /**
77 * Renders template.
78 */
79 public function renderTemplate(): void {
80 $nonce = wp_create_nonce( 'wp_rest' );
81 $orderSaveUrl = $this->orderControllerRouter->getRouteUrl( Controller::PATH_SAVE_MODAL );
82 $this->latteEngine->render(
83 PACKETERY_PLUGIN_DIR . '/template/order/modal-template.latte',
84 [
85 'nonce' => $nonce,
86 'orderSaveUrl' => $orderSaveUrl,
87 'form' => $this->createForm(),
88 'translations' => [
89 // translators: %s: Order number.
90 'order#%s' => __( 'Order #%s', 'packeta' ),
91 'closeModalPanel' => __( 'Close modal panel', 'packeta' ),
92 'weightIsManual' => __( 'Weight is manually set. To calculate weight remove the field content and save.', 'packeta' ),
93 ],
94 ]
95 );
96 }
97
98 /**
99 * Creates order modal form.
100 *
101 * @return Form
102 */
103 public function createForm(): Form {
104 $form = $this->formFactory->create();
105 $form->addText( 'packetery_weight', __( 'Weight', 'packeta' ) . ' (kg)' )
106 ->setRequired( false )
107 ->addRule( Form::FLOAT );
108 $form->addHidden( 'packetery_original_weight' )
109 ->setRequired( false )
110 ->addRule( Form::FLOAT );
111 $form->addText( 'packetery_width', __( 'Width (mm)', 'packeta' ) )
112 ->setRequired( false )
113 ->addRule( Form::FLOAT, __( 'Provide numeric value!', 'packeta' ) );
114 $form->addText( 'packetery_length', __( 'Length (mm)', 'packeta' ) )
115 ->setRequired( false )
116 ->addRule( Form::FLOAT, __( 'Provide numeric value!', 'packeta' ) );
117 $form->addText( 'packetery_height', __( 'Height (mm)', 'packeta' ) )
118 ->setRequired( false )
119 ->addRule( Form::FLOAT, __( 'Provide numeric value!', 'packeta' ) );
120
121 $form->addSubmit( 'submit', __( 'Save', 'packeta' ) );
122 $form->addButton( 'cancel', __( 'Cancel', 'packeta' ) );
123
124 $form->setDefaults(
125 [
126 'packetery_weight' => '{{ data.order.packetery_weight }}',
127 'packetery_original_weight' => '{{ data.order.packetery_original_weight }}',
128 'packetery_length' => '{{ data.order.packetery_length }}',
129 'packetery_width' => '{{ data.order.packetery_width }}',
130 'packetery_height' => '{{ data.order.packetery_height }}',
131 ]
132 );
133
134 return $form;
135 }
136
137 /**
138 * Returns true if size is invalid or weight not filled.
139 *
140 * @param Order $order Order entity.
141 *
142 * @return bool
143 */
144 public function showWarningIcon( Order $order ): bool {
145 $isSizeValid = $this->orderValidator->validateSize( $order );
146 $hasWeight = ( null !== $order->getFinalWeight() && $order->getFinalWeight() > 0 );
147
148 return ! ( $isSizeValid && $hasWeight );
149 }
150 }
151