Skip to content

Commit 71b16cf

Browse files
authored
Merge pull request #59 from magento-obsessive-owls/cms-team-2-sprint-8
[CMS Team 2 - Sprint 8] Buttons Delete and Maps Configuration
2 parents 5466f2f + f68ff63 commit 71b16cf

File tree

206 files changed

+6915
-2655
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

206 files changed

+6915
-2655
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
namespace Magento\PageBuilder\Model\Config\Source;
10+
11+
/**
12+
* Options provider for countries list
13+
*
14+
* @api
15+
*/
16+
class Country implements \Magento\Framework\Option\ArrayInterface
17+
{
18+
/**
19+
* @var \Magento\Directory\Model\ResourceModel\Country\Collection
20+
*/
21+
private $countryCollection;
22+
23+
/**
24+
* @var array
25+
*/
26+
private $options;
27+
28+
/**
29+
* @param \Magento\Directory\Model\ResourceModel\Country\Collection $countryCollection
30+
*/
31+
public function __construct(\Magento\Directory\Model\ResourceModel\Country\Collection $countryCollection)
32+
{
33+
$this->countryCollection = $countryCollection;
34+
}
35+
36+
/**
37+
* Return options array
38+
*
39+
* @return array
40+
*/
41+
public function toOptionArray(): array
42+
{
43+
if (!$this->options) {
44+
$this->options = $this->countryCollection->loadData()->toOptionArray(false);
45+
foreach ($this->options as $optionIndex => $optionData) {
46+
$this->options[$optionIndex]['value'] = $optionData['label'];
47+
}
48+
}
49+
50+
return $this->options;
51+
}
52+
}

app/code/Magento/PageBuilder/Setup/DataConverter/Renderer/Map.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,22 +46,21 @@ public function render(array $itemData, array $additionalData = [])
4646
'data-role' => 'map',
4747
'data-appearance' => 'default',
4848
'class' => $eavData['css_classes'] ?? '',
49-
'data-markers' => '[]',
49+
'data-show-controls' => 'true',
50+
'data-position' => '{}',
5051
];
5152

5253
if (isset($eavData['map'])) {
5354
$map = explode(',', $eavData['map']);
54-
$rootElementAttributes['data-markers'] = '[{&quot;lat&quot;:'
55+
$rootElementAttributes['data-position'] = '{&quot;lat&quot;:'
5556
. $map[0]
5657
. ',&quot;lng&quot;:'
5758
. $map[1]
58-
. '}]';
59-
$rootElementAttributes['data-zoom'] = $map[2];
59+
. '}';
6060
}
6161

6262
if (isset($itemData['formData'])) {
6363
$formData = $itemData['formData'];
64-
$formData['width'] = $eavData['map_width'] ?? '100%';
6564
$formData['height'] = $eavData['map_height'] ?? '300px';
6665

6766
$style = $this->styleExtractor->extractStyle($formData);

app/code/Magento/PageBuilder/Setup/Patch/Data/MigrateToPageBuilder.php

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,33 +25,33 @@ class MigrateToPageBuilder implements DataPatchInterface
2525
private $moduleDataSetup;
2626

2727
/**
28-
* @var MoveImages $moveImages
28+
* @var \Magento\Framework\App\State
2929
*/
30-
private $moveImages;
30+
private $appState;
3131

3232
/**
33-
* @var \Magento\Framework\App\State
33+
* @var MoveImages $moveImages
3434
*/
35-
private $appState;
35+
private $moveImages;
3636

3737
/**
3838
* Constructor
3939
*
4040
* @param \Magento\PageBuilder\Setup\ConvertBlueFootToPageBuilderFactory $convertBlueFootToPageBuilderFactory
4141
* @param ModuleDataSetupInterface $moduleDataSetup
42-
* @param MoveImages $moveImages
4342
* @param \Magento\Framework\App\State $appState
43+
* @param MoveImages $moveImages
4444
*/
4545
public function __construct(
4646
\Magento\PageBuilder\Setup\ConvertBlueFootToPageBuilderFactory $convertBlueFootToPageBuilderFactory,
4747
ModuleDataSetupInterface $moduleDataSetup,
48-
MoveImages $moveImages,
49-
\Magento\Framework\App\State $appState
48+
\Magento\Framework\App\State $appState,
49+
MoveImages $moveImages
5050
) {
5151
$this->convertBlueFootToPageBuilderFactory = $convertBlueFootToPageBuilderFactory;
5252
$this->moduleDataSetup = $moduleDataSetup;
53-
$this->moveImages = $moveImages;
5453
$this->appState = $appState;
54+
$this->moveImages = $moveImages;
5555
}
5656

5757
/**
@@ -70,6 +70,7 @@ public function apply()
7070
\Magento\Framework\App\Area::AREA_ADMINHTML,
7171
[$convertBlueFootToPageBuilder, 'convert']
7272
);
73+
$this->convertBlueFootToPageBuilderFactory->create(['setup' => $this->moduleDataSetup])->convert();
7374
$this->moveImages->move();
7475
}
7576
}

app/code/Magento/PageBuilder/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"magento/module-search": "*",
1414
"magento/module-newsletter": "*",
1515
"magento/module-wishlist": "*",
16+
"magento/module-directory": "*",
1617
"php": "~7.1.3||~7.2.0"
1718
},
1819
"type": "magento2-module",

app/code/Magento/PageBuilder/docs/content-type-configuration.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ The following is an example of a content type configuration in `view/adminhtml/p
167167
</data_mapping>
168168
<preview_template>Magento_PageBuilder/content-type/banner/poster/preview</preview_template>
169169
<render_template>Magento_PageBuilder/content-type/banner/poster/master</render_template>
170-
<reader>Magento_PageBuilder/js/master-format/read/configurable</reader>
170+
<reader>Magento_PageBuilder/js/component/format/read/configurable</reader>
171171
</appearance>
172172
<appearance name="collage-left">
173173
<!-- Collage left appearance configuration -->
@@ -235,7 +235,7 @@ It controls the templates, how data is read from the master format, and how to a
235235
| `render_template` | Template used to render the content type to the master format |
236236
| `reader` | Reads data for the content type from the master format |
237237

238-
The default reader is `Magento_PageBuilder/js/master-format/read/configurable`.
238+
The default reader is `Magento_PageBuilder/js/component/format/read/configurable`.
239239
It reads data based on the configuration specified in `data_mapping`.
240240

241241
**Example:**
@@ -244,7 +244,7 @@ It reads data based on the configuration specified in `data_mapping`.
244244
<data_mapping/>
245245
<preview_template>Magento_PageBuilder/content-type/banner/poster/preview</preview_template>
246246
<render_template>Magento_PageBuilder/content-type/banner/poster/master</render_template>
247-
<reader>Magento_PageBuilder/js/master-format/read/configurable</reader>
247+
<reader>Magento_PageBuilder/js/component/format/read/configurable</reader>
248248
</appearance>
249249
```
250250

app/code/Magento/PageBuilder/docs/master-format.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -872,9 +872,16 @@ HTML content.
872872
Attributes
873873
1. data-role [map]
874874
2. data-appearance [default]
875-
3. data-markers
875+
3. data-position
876876
4. data-zoom
877-
5. class
877+
5. data-location-name
878+
6. data-address
879+
7. data-city
880+
8. data-zipcode
881+
9. data-country
882+
10. data-comment
883+
11. data-show-controls
884+
12. class
878885

879886
Inline styles
880887
1. text-align

app/code/Magento/PageBuilder/etc/di.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,6 @@
343343
<argument name="additionalEavAttributes" xsi:type="array">
344344
<item name="map" xsi:type="string">map</item>
345345
<item name="map_height" xsi:type="string">map_height</item>
346-
<item name="map_width" xsi:type="string">map_width</item>
347346
</argument>
348347
</arguments>
349348
</virtualType>

app/code/Magento/PageBuilder/view/adminhtml/ui_component/pagebuilder_base_form.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
<collapsible>true</collapsible>
2525
</settings>
2626
<field name="text_align" sortOrder="10" formElement="select">
27+
<argument name="data" xsi:type="array">
28+
<item name="config" xsi:type="array">
29+
<item name="default" xsi:type="string">default</item>
30+
</item>
31+
</argument>
2732
<settings>
2833
<dataType>text</dataType>
2934
<label translate="true">Alignment</label>

app/code/Magento/PageBuilder/view/adminhtml/ui_component/pagebuilder_map_form.xml

Lines changed: 139 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,7 @@
1818
</deps>
1919
<namespace>pagebuilder_map_form</namespace>
2020
</settings>
21-
<dataSource name="pagebuilder_map_form_data_source">
22-
<argument name="data" xsi:type="array">
23-
<item name="js_config" xsi:type="array">
24-
<item name="component" xsi:type="string">Magento_PageBuilder/js/form/provider</item>
25-
</item>
26-
</argument>
21+
<dataSource name="pagebuilder_map_form_data_source" component="Magento_PageBuilder/js/form/provider">
2722
<dataProvider name="pagebuilder_map_form_data_source" class="Magento\PageBuilder\Model\ContentBlock\DataProvider">
2823
<settings>
2924
<requestFieldName/>
@@ -70,42 +65,168 @@
7065
<fieldset name="general" sortOrder="20">
7166
<settings>
7267
<label/>
68+
<collapsible>true</collapsible>
69+
<opened>true</opened>
7370
</settings>
7471
<field name="position" sortOrder="1" formElement="input" component="Magento_PageBuilder/js/form/element/map">
7572
<settings>
7673
<label translate="true">Position</label>
7774
<notice translate="true">You can move the pin by clicking or dragging it where you want. To alter the zoom please use the controls.</notice>
7875
</settings>
7976
</field>
80-
<field name="width" formElement="input">
77+
<field name="location_name" sortOrder="20" formElement="input">
78+
<settings>
79+
<dataType>text</dataType>
80+
<label translate="true">Location Name</label>
81+
<dataScope>location_name</dataScope>
82+
<validation>
83+
<rule name="required-entry" xsi:type="boolean">true</rule>
84+
</validation>
85+
</settings>
86+
</field>
87+
<container name="coordinates" component="Magento_Ui/js/form/components/group" sortOrder="30" >
8188
<argument name="data" xsi:type="array">
89+
<item name="type" xsi:type="string">group</item>
8290
<item name="config" xsi:type="array">
83-
<item name="source" xsi:type="string">block</item>
84-
<item name="default" xsi:type="string">100%</item>
91+
<item name="breakLine" xsi:type="boolean">false</item>
92+
<item name="required" xsi:type="boolean">true</item>
93+
<item name="additionalClasses" xsi:type="string">admin__control-grouped</item>
94+
<item name="label" translate="true" xsi:type="string">Coordinates</item>
8595
</item>
8696
</argument>
97+
<field name="position[lat]" formElement="input">
98+
<settings>
99+
<dataScope>position.lat</dataScope>
100+
<dataType>text</dataType>
101+
<additionalClasses>
102+
<class name="admin__field-small">true</class>
103+
</additionalClasses>
104+
<validation>
105+
<rule name="required-entry" xsi:type="boolean">true</rule>
106+
<rule name="validate-number" xsi:type="boolean">true</rule>
107+
<rule name="validate-number-range" xsi:type="string">-85.05-85.05</rule>
108+
</validation>
109+
<placeholder translate="true">Latitude</placeholder>
110+
</settings>
111+
</field>
112+
<field name="position[lng]" formElement="input">
113+
<settings>
114+
<dataScope>position.lng</dataScope>
115+
<dataType>text</dataType>
116+
<additionalClasses>
117+
<class name="admin__field-small">true</class>
118+
</additionalClasses>
119+
<validation>
120+
<rule name="required-entry" xsi:type="boolean">true</rule>
121+
<rule name="validate-number" xsi:type="boolean">true</rule>
122+
<rule name="validate-number-range" xsi:type="string">-180.05-180.05</rule>
123+
</validation>
124+
<placeholder translate="true">Longitude</placeholder>
125+
</settings>
126+
</field>
127+
</container>
128+
<field name="address" sortOrder="40" formElement="input">
129+
<settings>
130+
<dataType>text</dataType>
131+
<label translate="true">Street Address</label>
132+
<dataScope>address</dataScope>
133+
</settings>
134+
</field>
135+
<field name="city" sortOrder="50" formElement="input">
87136
<settings>
88137
<dataType>text</dataType>
89-
<label translate="true">Width</label>
90-
<dataScope>width</dataScope>
91-
<addAfter translate="true">px or %</addAfter>
92-
<notice translate="true">Example: 50px or 100%</notice>
138+
<label translate="true">City</label>
139+
<dataScope>city</dataScope>
93140
</settings>
94141
</field>
95-
<field name="height" formElement="input">
142+
<field name="zipcode" sortOrder="60" formElement="input">
143+
<settings>
144+
<dataType>text</dataType>
145+
<label translate="true">Zip/Postal Code</label>
146+
<dataScope>zipcode</dataScope>
147+
</settings>
148+
</field>
149+
<field name="country" component="Magento_Ui/js/form/element/ui-select" sortOrder="70" formElement="select">
150+
<argument name="data" xsi:type="array">
151+
<item name="config" xsi:type="array">
152+
<item name="filterOptions" xsi:type="boolean">true</item>
153+
<item name="multiple" xsi:type="boolean">false</item>
154+
<item name="showCheckbox" xsi:type="boolean">false</item>
155+
<item name="disableLabel" xsi:type="boolean">true</item>
156+
<item name="isRemoveSelectedIcon" xsi:type="boolean">false</item>
157+
<item name="levelsVisibility" xsi:type="number">1</item>
158+
</item>
159+
</argument>
160+
<settings>
161+
<elementTmpl>ui/grid/filters/elements/ui-select</elementTmpl>
162+
<label translate="true">Country</label>
163+
<dataScope>country</dataScope>
164+
<componentType>field</componentType>
165+
</settings>
166+
<formElements>
167+
<select>
168+
<settings>
169+
<options class="Magento\PageBuilder\Model\Config\Source\Country"/>
170+
</settings>
171+
</select>
172+
</formElements>
173+
</field>
174+
<field name="comment" sortOrder="80" formElement="textarea">
175+
<settings>
176+
<label translate="true">Comment</label>
177+
<dataType>text</dataType>
178+
<dataScope>comment</dataScope>
179+
</settings>
180+
</field>
181+
</fieldset>
182+
<fieldset name="map_settings" sortOrder="30">
183+
<settings>
184+
<label translate="true">Map Settings</label>
185+
<collapsible>true</collapsible>
186+
<opened>true</opened>
187+
</settings>
188+
<field name="height" sortOrder="10" formElement="input">
96189
<argument name="data" xsi:type="array">
97190
<item name="config" xsi:type="array">
98191
<item name="source" xsi:type="string">block</item>
99-
<item name="default" xsi:type="string">300px</item>
192+
<item name="default" xsi:type="string">300</item>
100193
</item>
101194
</argument>
102195
<settings>
103196
<dataType>text</dataType>
104-
<label translate="true">Height</label>
197+
<label translate="true">Map Height</label>
105198
<dataScope>height</dataScope>
106-
<addAfter translate="true">px or %</addAfter>
107-
<notice translate="true">Example: 50px or 100%</notice>
199+
<addAfter translate="true">px</addAfter>
200+
<additionalClasses>
201+
<class name="admin__field-small">true</class>
202+
</additionalClasses>
203+
<validation>
204+
<rule name="validate-number" xsi:type="boolean">true</rule>
205+
</validation>
108206
</settings>
109207
</field>
208+
<field name="show_controls" sortOrder="20" formElement="checkbox">
209+
<argument name="data" xsi:type="array">
210+
<item name="config" xsi:type="array">
211+
<item name="default" xsi:type="string">true</item>
212+
</item>
213+
</argument>
214+
<settings>
215+
<dataType>boolean</dataType>
216+
<label translate="true">Show Controls</label>
217+
<dataScope>show_controls</dataScope>
218+
</settings>
219+
<formElements>
220+
<checkbox>
221+
<settings>
222+
<valueMap>
223+
<map name="false" xsi:type="string">false</map>
224+
<map name="true" xsi:type="string">true</map>
225+
</valueMap>
226+
<prefer>toggle</prefer>
227+
</settings>
228+
</checkbox>
229+
</formElements>
230+
</field>
110231
</fieldset>
111232
</form>

0 commit comments

Comments
 (0)