Skip to content

Commit ec46eb8

Browse files
committed
Version 4.9
2 parents 153913d + 6a8f1ae commit ec46eb8

8 files changed

Lines changed: 285 additions & 145 deletions

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
# (MODX)EvolutionCMS.plugins.ManagerManager.mm_ddMultipleFields changelog
22

33

4+
## Version 4.9 (2022-05-26)
5+
* \+ Parameters → `$params->columns[i]['alias']`:
6+
* \+ The new optional parameter. Provides the ability to set a custom result key for each column instead of simple numeric index.
7+
* \+ The widget also supports changing indexes to aliases for TVs already filled with existing values.
8+
* \* Missed icon in the “add” button has been fixed. Many thanks to @byscrimm.
9+
* \+ Composer.json:
10+
* \+ `support` → `chat`.
11+
* \+ `authors` → author → `homepage`.
12+
13+
414
## Version 4.8.6 (2021-10-04)
515
* \* Improved working with deprecated `id` columns.
616
* \* Improved working with invalid JSON field values.

CHANGELOG_ru.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
# (MODX)EvolutionCMS.plugins.ManagerManager.mm_ddMultipleFields changelog
22

33

4+
## Версия 4.9 (2022-05-26)
5+
* \+ Параметры → `$params->columns[i]['alias']`:
6+
* \+ Новый необязательный параметр. Обеспечивает возможность задать произвольный ключ каждой колонки в результатах вместо простого нумерованного индекса.
7+
* \+ Виджет также поддерживает изменение индексов на псевдонимы для TV, уже заполненных существующими значениями.
8+
* \* Исправлено отображение иконки на кнопке «Добавить». Большое спасибо @byscrimm.
9+
* \+ Composer.json:
10+
* \+ `support` → `chat`.
11+
* \+ `authors` → author → `homepage`.
12+
13+
414
## Версия 4.8.6 (2021-10-04)
515
* \* Улучшена работа с устаревшими колонками типа `id`.
616
* \* Улучшена работа с невалидным JSON в значении полей.

README.md

Lines changed: 60 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@ Capabilities:
1717
* [(MODX)EvolutionCMS.plugins.ManagerManager](https://code.divandesign.biz/modx/managermanager) >= 0.7
1818

1919

20-
## Documentation
21-
22-
23-
### Installation
20+
## Installation
2421

2522
To install you must unzip the archive to `/assets/plungins/managermanager/widgets/ddmultiplefields/`.
2623

@@ -34,7 +31,7 @@ You may also read this documentation:
3431
Type of TV must be `textarea`.
3532

3633

37-
### Parameters description
34+
## Parameters description
3835

3936
* `$params`
4037
* Desctription: Parameters, the pass-by-name style is used.
@@ -75,6 +72,11 @@ Type of TV must be `textarea`.
7572
* Valid values: `string`
7673
* Default value: `''`
7774

75+
* `$params->columns[i]['alias']`
76+
* Desctription: An unique column alias. If empty, just numeric index will be used.
77+
* Valid values: `string`
78+
* Default value: —
79+
7880
* `$params->columns[i]['width']`
7981
* Desctription: Column width, px.
8082
* Valid values: `integer`
@@ -147,43 +149,43 @@ Type of TV must be `textarea`.
147149
* **Required**
148150

149151

150-
### CMS events
152+
## CMS events
151153

152154
* `OnDocFormPrerender`
153155
* `OnDocFormRender`
154156

155157

156-
### Output format
158+
## Output format
157159

158160
The widget saves value to a TV as JSON object with the following structure:
159161

160162
```json
161163
{
162164
"1590412453247": {
163165
"0": "First row, first column value",
164-
"1": "First row, second column value"
166+
"customAlias": "First row, second column value"
165167
},
166168
"1590412497589": {
167169
"0": "Second row, first column value",
168-
"1": "Second row, Second column value"
170+
"customAlias": "Second row, Second column value"
169171
}
170172
}
171173
```
172174

173175
Where:
174176
* `1590412453247`, `1590412497589` — the unique auto generated row IDs (JS `(new Date).getTime()` is used while creating rows).
175-
* `0`, `1` — column numbers.
177+
* `0`, `customAlias` — column index or alias (if set).
176178

177179
Rows objects with empty column values will not be saved.
178180
If all columns and all rows are empty, an empty string (`''`) will be saved instead of an empty JSON ojbect (`'{}'`).
179181

180182
It is strongly recommend to use [(MODX)EvolutionCMS.snippets.ddGetMultipleField](https://code.divandesign.biz/modx/ddgetmultiplefield) >= 3.5 for rendering TVs on site.
181183

182184

183-
### Examples
185+
## Examples
184186

185187

186-
#### Make the TV `someImages` available for adding several number of images
188+
### Make the TV `someImages` available for adding several number of images
187189

188190
Create the TV `someImages`, set it's type equal to `textarea`.
189191

@@ -200,7 +202,7 @@ mm_ddMultipleFields([
200202
```
201203

202204

203-
#### Create 2 columns: images with titles
205+
### Create 2 columns: images with titles
204206

205207
```php
206208
mm_ddMultipleFields([
@@ -219,7 +221,50 @@ mm_ddMultipleFields([
219221
```
220222

221223

222-
#### Table of employees contacts
224+
### Using column aliases (`$params->columns[i]['alias']`)
225+
226+
```php
227+
mm_ddMultipleFields([
228+
'fields' => 'photos',
229+
'columns' => [
230+
[
231+
'type' => 'image',
232+
'title' => 'Photo',
233+
'alias' => 'src'
234+
],
235+
[
236+
'type' => 'text',
237+
'title' => 'Title'
238+
'alias' => 'alt'
239+
],
240+
//In the same time we can use columns without aliases, numeric index will be used in this case
241+
[
242+
'type' => 'textarea'
243+
'title' => 'Notes'
244+
]
245+
]
246+
]);
247+
```
248+
249+
Will be save something like this:
250+
251+
```json
252+
{
253+
"1590412453247": {
254+
"src": "assets/images/ElonMusk.jpg",
255+
"alt": "Elon Reeve Musk",
256+
"2": "Business magnate and investor"
257+
},
258+
"1590412497589": {
259+
"src": "assets/images/YuryDud.jpg",
260+
"alt": "Yury Aleksandrovich Dud",
261+
"2": "Russian journalist and YouTuber"
262+
}
263+
}
264+
```
265+
266+
267+
### Table of employees contacts
223268

224269
Create the TV `employees`, set it's type equal to `textarea`.
225270

@@ -251,7 +296,7 @@ mm_ddMultipleFields([
251296
```
252297

253298

254-
#### `<select>` column type
299+
### `<select>` column type
255300

256301
```php
257302
mm_ddMultipleFields([

README_ru.md

Lines changed: 60 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@
1717
* [(MODX)EvolutionCMS.plugins.ManagerManager](https://code.divandesign.ru/modx/managermanager) >= 0.7
1818

1919

20-
## Документация
21-
22-
23-
### Установка
20+
## Установка
2421

2522
Для установки распакуйте архив в `/assets/plungins/managermanager/widgets/ddmultiplefields/`.
2623

@@ -34,7 +31,7 @@
3431
Тип TV, к которой применяется виджет, должен быть `textarea`.
3532

3633

37-
### Описание параметров
34+
## Описание параметров
3835

3936
* `$params`
4037
* Описание: Параметры, используется стиль именованных параметров.
@@ -75,6 +72,11 @@
7572
* Допустимые значения: `string`
7673
* Значение по умолчанию: `''`
7774

75+
* `$params->columns[i]['alias']`
76+
* Описание: Псевдоним колонки (должен быть уникальным в пределах поля). Если не задан, будет использован обычный нумерованный индекс.
77+
* Допустимые значения: `string`
78+
* Значение по умолчанию: —
79+
7880
* `$params->columns[i]['width']`
7981
* Описание: Ширина колонки в px.
8082
* Допустимые значения: `integer`
@@ -147,43 +149,43 @@
147149
* **Required**
148150

149151

150-
### События CMS
152+
## События CMS
151153

152154
* `OnDocFormPrerender`
153155
* `OnDocFormRender`
154156

155157

156-
### Формат вывода
158+
## Формат вывода
157159

158160
Виджет сохраняет значение в TV в виде объекта JSON со следующей структурой:
159161

160162
```json
161163
{
162164
"1590412453247": {
163165
"0": "First row, first column value",
164-
"1": "First row, second column value"
166+
"customAlias": "First row, second column value"
165167
},
166168
"1590412497589": {
167169
"0": "Second row, first column value",
168-
"1": "Second row, Second column value"
170+
"customAlias": "Second row, Second column value"
169171
}
170172
}
171173
```
172174

173175
Где:
174176
* `1590412453247`, `1590412497589` — уникальные автоматически сгенерированные ID строк (используется `(new Date).getTime()` в JS при создании строк).
175-
* `0`, `1` — номера колонок.
177+
* `0`, `customAlias` — индекс или псевдоним (если задан) колонки.
176178

177179
Объекты строк с пустыми значениями колонок не будут сохранены.
178180
Если все строки и все колонки пустые, будет сохранена пустая строка (`''`) вместо пустого JSON объекта (`'{}'`).
179181

180182
Настоятельно рекомендуется использовать [(MODX)EvolutionCMS.snippets.ddGetMultipleField](https://code.divandesign.ru/modx/ddgetmultiplefield) >= 3.5 для вывода TV на сайте.
181183

182184

183-
### Примеры
185+
## Примеры
184186

185187

186-
#### Сделать возможность добавления нескольких изобрежний в TV `someImages`
188+
### Сделать возможность добавления нескольких изобрежний в TV `someImages`
187189

188190
Создаём TV `someImages`, выставляем тип `textarea`.
189191

@@ -200,7 +202,7 @@ mm_ddMultipleFields([
200202
```
201203

202204

203-
#### Создать 2 колонки: изображения и заголовки
205+
### Создать 2 колонки: изображения и заголовки
204206

205207
```php
206208
mm_ddMultipleFields([
@@ -219,7 +221,50 @@ mm_ddMultipleFields([
219221
```
220222

221223

222-
#### Таблица контактов сотрудников
224+
### Использование псеводнимов колонок (`$params->columns[i]['alias']`)
225+
226+
```php
227+
mm_ddMultipleFields([
228+
'fields' => 'photos',
229+
'columns' => [
230+
[
231+
'type' => 'image',
232+
'title' => 'Фото',
233+
'alias' => 'src'
234+
],
235+
[
236+
'type' => 'text',
237+
'title' => 'Подпись'
238+
'alias' => 'alt'
239+
],
240+
//И здесь же мы можем задавать колонки без псевдонимов, в этом случае будет просто использован нумерованный индекс
241+
[
242+
'type' => 'textarea'
243+
'title' => 'Заметки'
244+
]
245+
]
246+
]);
247+
```
248+
249+
Сохранит что-то такое:
250+
251+
```json
252+
{
253+
"1590412453247": {
254+
"src": "assets/images/ElonMusk.jpg",
255+
"alt": "Илон Рив Маск",
256+
"2": "Бизнес-магнат и инвестор"
257+
},
258+
"1590412497589": {
259+
"src": "assets/images/YuryDud.jpg",
260+
"alt": "Юрий Александрович Дудь",
261+
"2": "Российский журналист и Ютубер"
262+
}
263+
}
264+
```
265+
266+
267+
### Таблица контактов сотрудников
223268

224269
Создаём TV `employees`, выставляем тип `textarea`.
225270

@@ -251,7 +296,7 @@ mm_ddMultipleFields([
251296
```
252297

253298

254-
#### Колонка типа `<select>`
299+
### Колонка типа `<select>`
255300

256301
```php
257302
mm_ddMultipleFields([

composer.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dd/evolutioncms-plugins-managermanager-mm_ddmultiplefields",
3-
"version": "4.8.6",
3+
"version": "4.9.0",
44
"description": "Widget for plugin ManagerManager that allows you to add any number of fields values (TV) in one document (values are written in field as a JSON object). For example: a few images.",
55
"keywords": [
66
"modx",
@@ -20,6 +20,9 @@
2020
"multiple field"
2121
],
2222
"homepage": "https://code.divandesign.biz/modx/mm_ddmultiplefields",
23+
"support": {
24+
"chat": "https://t.me/dd_code"
25+
},
2326
"authors": [
2427
{
2528
"name": "DD Group",
@@ -36,22 +39,27 @@
3639
{
3740
"name": "Alexey Davydov",
3841
"email": "davalemic@DivanDesign.ru",
42+
"homepage": "https://github.com/davalemic",
3943
"role": "Developer"
4044
},
4145
{
4246
"name": "Vladislav Lavrov",
47+
"homepage": "https://github.com/Tornek",
4348
"role": "Developer"
4449
},
4550
{
4651
"name": "Andrey Demchenko",
52+
"homepage": "https://github.com/deversjkee",
4753
"role": "Developer"
4854
},
4955
{
5056
"name": "Andrey Dunaev",
57+
"homepage": "https://github.com/svolochev",
5158
"role": "Developer"
5259
},
5360
{
5461
"name": "Pavel Unzhakov",
62+
"homepage": "https://github.com/psthmn",
5563
"role": "Developer"
5664
}
5765
],

ddmultiplefields.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@
6666
vertical-align: middle;
6767
text-align: center;
6868
}
69+
.ddMultipleField tr td.ddMultipleField_row_col:last-child button.fa-plus {
70+
font-weight: 900;
71+
}
6972

7073
.ddMultipleField tr td.ddSortHandle {
7174
border-right: none;

0 commit comments

Comments
 (0)