Skip to content

Commit 8355e20

Browse files
committed
Merge branch 'improve-action-builder' into doryphore-dev
2 parents 7d8c337 + a7d9c19 commit 8355e20

File tree

16 files changed

+269
-158
lines changed

16 files changed

+269
-158
lines changed

.eslintrc.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ module.exports = {
3333
'func-names': ['error', 'never'],
3434
'space-before-function-paren': ['error', 'never'],
3535
'lines-between-class-members': ['error', 'always', { exceptAfterSingleLine: true }],
36-
'no-new': 'off'
36+
'no-new': 'off',
37+
'no-restricted-syntax': 'off',
38+
'guard-for-in': 'off'
3739
},
3840
ignorePatterns: [
3941
'vendor/',

docs/actions/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ actions:
6060
description: Une description courte
6161
hint: Le champ XX doit être présent... # Information importante à savoir si on utilise cette action
6262
isWrapper: true # rajouter cette ligne pour les actions qui doivent se fermer avec un {{end elem="action"}}
63+
onlyAdd: true # rajouter cette ligne pour les actions qui n'ont pas vocation à être éditées avec l'action-builder
64+
onlyEdit: true # rajouter cette ligne pour les actions qui n'ont pas vocation à être ajouter via l'action-builder
6365
wrappedContentExample: 'Teeest' # si l'action est un wrapper, le texte à inclure dans l'action à titre d'exemple
6466
properties:
6567
# La liste des paramètres de l'action.
@@ -77,6 +79,7 @@ advanced: true # sera masqué tant que l'utilisateur ne coche pas la case "param
7779
hint: Mon Texte # Indications
7880
icon: leaf # nom d'une icone fantwesome
7981
doclink: https://... # Lien vers une documentation en ligne
82+
mapped: false # Utilisé uniquement pour générer d'autres options, ne pas reporter ce param dans le code généré
8083
showif: colorfield # Ce paramètre sera visible uniquement lorsque le paramètre colorfield n'est pas vide
8184
showif:
8285
format: portrait # Uniquement visible quand le paramètre "format" est égal à "portait"

docs/actions/bazarliste.yaml

Lines changed: 53 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -43,36 +43,6 @@ actions:
4343
- bazartableau
4444
type: checkbox
4545
advanced: true
46-
champ:
47-
label: _t(AB_bazar_commons2_champ_label)
48-
type: form-field
49-
extraFields:
50-
- id_typeannonce
51-
- date_creation_fiche
52-
- date_maj_fiche
53-
default:
54-
advanced: true
55-
showExceptFor:
56-
- bazarcarto
57-
- bazargogocarto
58-
- bazartimeline
59-
- bazarannuaire
60-
- bazarcalendar
61-
- bazarcarousel
62-
ordre:
63-
label: _t(AB_bazar_commons2_ordre_label)
64-
type: list
65-
default: asc
66-
advanced: true
67-
options:
68-
asc: _t(AB_bazar_commons2_ordre_option_asc)
69-
desc: _t(AB_bazar_commons2_ordre_option_desc)
70-
showExceptFor:
71-
- bazarcarto
72-
- bazargogocarto
73-
- bazartimeline
74-
- bazarannuaire
75-
- bazarcalendar
7646
pagination:
7747
label: _t(AB_bazar_commons_pagination_label)
7848
hint: _t(AB_bazar_commons_pagination_hint)
@@ -246,12 +216,6 @@ actions:
246216
type: checkbox
247217
advanced: true
248218
default: 'false'
249-
250-
251-
# query:
252-
# advanced: true
253-
# label: _t(AB_bazar_commons2_query_label)
254-
# type: text
255219
datefilter:
256220
label: _t(AB_bazar_commons2_filter_on_date)
257221
type: list
@@ -282,6 +246,59 @@ actions:
282246
showif: facettes
283247
showExceptFor:
284248
- bazargogocarto
249+
champ:
250+
intro: <h3>_t(AB_bazar_sort)</h3>
251+
label: _t(AB_bazar_facettes_field_label)
252+
type: form-field
253+
extraFields:
254+
- id_typeannonce
255+
- date_creation_fiche
256+
- date_maj_fiche
257+
default:
258+
advanced: true
259+
showExceptFor:
260+
- bazarcarto
261+
- bazargogocarto
262+
- bazartimeline
263+
- bazarannuaire
264+
- bazarcalendar
265+
- bazarcarousel
266+
ordre:
267+
label: _t(AB_bazar_commons2_ordre_label)
268+
type: list
269+
default: asc
270+
advanced: true
271+
options:
272+
asc: _t(AB_bazar_commons2_ordre_option_asc)
273+
desc: _t(AB_bazar_commons2_ordre_option_desc)
274+
showExceptFor:
275+
- bazarcarto
276+
- bazargogocarto
277+
- bazartimeline
278+
- bazarannuaire
279+
- bazarcalendar
280+
sortfields:
281+
advanced: true
282+
intro: <center><h4>_t(AB_bazar_sort_dynamique)</h4></center>
283+
type: sort-fields
284+
btn-label-add: _t(AB_bazar_sort_add_field)
285+
subproperties:
286+
field:
287+
label: _t(AB_bazar_facettes_field_label)
288+
type: form-field
289+
extraFields:
290+
- date_creation_fiche
291+
- date_maj_fiche
292+
title:
293+
label: _t(AB_bazar_facettes_title_label)
294+
type: text
295+
showExceptFor:
296+
- bazarcarto
297+
- bazargogocarto
298+
- bazartimeline
299+
- bazarannuaire
300+
- bazarcalendar
301+
- bazarcarousel
285302

286303
# -----------------
287304
# Liste des Actions

docs/actions/col.yaml

Lines changed: 0 additions & 23 deletions
This file was deleted.

docs/actions/lang/actionsbuilder_fr.inc.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
'AB_bazar_commons_search_label_dynamic' => 'Recherche dynamique',
2424
'AB_bazar_commons_subproperty_id_label' => 'Valeur',
2525
'AB_bazar_commons_title' => 'Affichage',
26-
'AB_bazar_commons2_champ_label' => 'Champ pour le tri',
26+
'AB_bazar_commons2_champ_label' => 'Champ pour le tri par défaut',
2727
'AB_bazar_commons2_champ_hint' => "Il est possible d'effectuer des requètes avancées, pour en savoir plus",
2828
'AB_bazar_commons2_filter_index' => "'bf_date_debut_evenement' doit être défini.",
2929
'AB_bazar_commons2_filter_on_date' => 'Filtrer sur les dates',
@@ -40,7 +40,7 @@
4040
'AB_bazar_commons2_groupsexpanded_label' => 'Affichage initial des facettes',
4141
'AB_bazar_commons2_groupsexpanded_false' => 'Uniquement la première dépliée',
4242
'AB_bazar_commons2_groupsexpanded_true' => 'Toutes Dépliées',
43-
'AB_bazar_commons2_ordre_label' => 'Ordre de classement',
43+
'AB_bazar_commons2_ordre_label' => 'Ordre',
4444
'AB_bazar_commons2_ordre_option_asc' => 'Croissant',
4545
'AB_bazar_commons2_ordre_option_desc' => 'Décroissant',
4646
'AB_bazar_commons2_nb_label' => 'Limitation',
@@ -57,6 +57,9 @@
5757
'AB_bazar_facettes_title_label' => 'Titre',
5858
'AB_bazar_bf_date_debut_evenement_label' => 'Champ pour la date de début',
5959
'AB_bazar_bf_date_fin_evenement_label' => 'Champ pour la date de fin',
60+
'AB_bazar_sort' => 'Trier les données',
61+
'AB_bazar_sort_dynamique' => "Tri dynamique",
62+
'AB_bazar_sort_add_field' => 'Ajouter un tri dynamique',
6063
// Bazarcarto
6164
'AB_bazarcarto_label' => 'Cartographie',
6265
'AB_bazarcarto_description' => 'Les fiches seront sous forme de marqueur.',
@@ -290,7 +293,7 @@
290293
'AB_management_despam_label' => 'Nettoyer les pages récemment vandalisées',
291294
'AB_management_despam_hint' => 'Liste les dernières versions des pages récemment créées pour pouvoir choisir celles à supprimer',
292295
'AB_management_despam_hint_details' => 'Ceci permet de rétablir les pages vandalisées ou de supprimer les nouvelles pages créées'
293-
. ' par des spams. ATTENTION : la suppression des pages choisies sera DÉFINITITVE.',
296+
. ' par des spams. ATTENTION : la suppression des pages choisies sera DÉFINITITVE.',
294297
'AB_management_editconfig_label' => 'Modifier des paramètres du fichier de configuration',
295298
'AB_management_adminbackups_label' => 'Gestion des sauvegardes',
296299
'AB_management_commentstable_label' => 'Table des commentaires',

docs/fr/prise-en-main.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -363,15 +363,19 @@ Mise en forme propose 6 possibilités :
363363
- `type="collapsible` : permet de laisser ouvert le panel lorque la page sera chargé.
364364

365365
- **Afficher plusieurs colonnes** : permet de créer plusieurs colonnes dans une page ou une partie de page, très utile pour des mises en page avancées.
366-
- cette action ne bénificie pas encore d'aide au codage. Pour ajouter ou supprimer des colonnes à votre tableau, il suffira d'ajouter ou supprimer le code suivant) avant {{end elem="grid"}}.
367366

368-
```yeswiki
369-
{{col size="3"}}
370-
Texte de la colonne à changer par la suite
371-
{{end elem="col"}}
372-
```
367+
```yeswiki
368+
{{grid}}
369+
{{col size="3"}}
370+
Texte de la colonne à changer par la suite
371+
{{end elem="col"}}
372+
{{col size="9"}}
373+
Texte de la colonne à changer par la suite
374+
{{end elem="col"}}
375+
{{end elem="grid"}}
376+
```
373377

374-
!> important : la somme des size (largeur) de vos colonnes doit être égal à 12, cela veut dire que vous pouvez faire 12 colonnes de size 1 ou 3 colonnes de size 4 et bien sur mixer les possibilités (une de 6 et deux de 3)
378+
!> important : la somme des size (largeur) de vos colonnes doit être égal à 12, cela veut dire que vous pouvez faire 12 colonnes de size 1 ou 3 colonnes de size 4 et bien sur mixer les possibilités (une de 6 et deux de 3)
375379

376380
### Syndication / Flux RSS
377381

tools/aceditor/presentation/javascripts/aceditor.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ class Aceditor {
5353
setupAceditorKeyBindings(this.$aceContainer, this.$toolbar)
5454
this.initToolbar()
5555
this.initEditionHelpers()
56-
console.log(this)
5756
this.editor.ace.setOptions({ placeholder: this.$textarea.attr('placeholder') })
5857
this.editor.on('blur', () => {
5958
this.flyingButton.hide()
@@ -117,11 +116,8 @@ class Aceditor {
117116
switch (cursor.groupType) {
118117
case 'yw-action': {
119118
const actionName = cursor.groupData['action-name']
120-
if (
121-
this.actionsBuilder.allAvailableActionsWithBackward.includes(
122-
actionName
123-
)
124-
) {
119+
if (this.actionsBuilder.allAvailableActionsWithBackward.includes(actionName)) {
120+
if (this.actionsBuilder.getActionConfiguration(actionName).onlyAdd) return
125121
this.$toolbar.find('.component-action-list').addClass('only-edit')
126122
this.flyingButton.show().onClick(() => {
127123
this.actionsBuilder.open(this.editor, { action: cursor.groupTextWithoutMarkup })

tools/aceditor/presentation/javascripts/actions-builder-app.js

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ import InputHelper from './components/InputHelper.js'
22
import InputHidden from './components/InputHidden.js'
33
import InputText from './components/InputText.js'
44
import InputPageList from './components/InputPageList.js'
5+
import InputNavLinks from './components/InputNavLinks.js'
56
import InputCheckbox from './components/InputCheckbox.js'
67
import InputList from './components/InputList.js'
78
import InputDivider from './components/InputDivider.js'
89
import InputIcon from './components/InputIcon.js'
910
import InputColor from './components/InputColor.js'
1011
import InputFormField from './components/InputFormField.js'
1112
import InputFacette from './components/InputFacette.js'
13+
import InputSortFields from './components/InputSortFields.js'
1214
import InputReaction from './components/InputReaction.js'
1315
import InputIconMapping from './components/InputIconMapping.js'
1416
import InputColorMapping from './components/InputColorMapping.js'
@@ -32,9 +34,11 @@ const components = {
3234
InputHidden,
3335
InputDivider,
3436
InputFacette,
37+
InputSortFields,
3538
InputReaction,
3639
InputIconMapping,
3740
InputColorMapping,
41+
InputNavLinks,
3842
InputGeo,
3943
InputClass,
4044
InputCorrespondance,
@@ -116,7 +120,7 @@ export const app = {
116120
this.configPanels.forEach((panel) => { result = { ...result, ...panel.params.properties } })
117121
return result
118122
},
119-
wikiCodeBase() {
123+
wikiCodeStart() {
120124
let actionId = this.selectedActionId
121125
if (this.isBazarListeAction) actionId = 'bazarliste'
122126
let result = `{{${actionId}`
@@ -126,18 +130,45 @@ export const app = {
126130
result += ' }}'
127131
return result
128132
},
133+
wikiCodeDefaultContent() {
134+
let content = this.selectedAction.wrappedContentExample
135+
if (this.selectedActionId === 'tabs' && this.actionParams.titles) {
136+
content = this.actionParams.titles.split(',')
137+
.map((tabName) => this.selectedAction.wrappedContentExample.replace('{tabName}', tabName))
138+
.join('\n')
139+
}
140+
if (this.selectedActionId === 'accordion') {
141+
content = '\n'
142+
for (let i = 0; i < this.values.nb; i++) {
143+
content += `${this.selectedAction.wrappedContentExample}\n`
144+
}
145+
}
146+
if (this.selectedActionId === 'grid') {
147+
content = '\n'
148+
const size = 12 / this.values.nb
149+
for (let i = 0; i < this.values.nb; i++) {
150+
content += `${this.selectedAction.wrappedContentExample.replace('{size}', size)}\n`
151+
}
152+
}
153+
if (!['label', 'accordion', 'grid'].includes(this.selectedActionId)) content = `\n${content}\n`
154+
return content
155+
},
156+
wikiCodeEnd() {
157+
return `{{end elem="${this.selectedActionId}"}}`
158+
},
129159
wikiCode() {
130-
let result = this.wikiCodeBase
160+
let result = this.wikiCodeStart
131161
if (this.selectedAction.isWrapper && !this.isEditingExistingAction) {
132-
result += `\n${this.selectedAction.wrappedContentExample}{{end elem="${this.selectedActionId}"}}`
162+
result += this.wikiCodeDefaultContent
163+
result += this.wikiCodeEnd
133164
}
134165
return result
135166
},
136167
wikiCodeForIframe() {
137-
let result = this.wikiCodeBase
168+
let result = this.wikiCodeStart
138169
if (this.selectedAction.isWrapper && result) {
139-
result += `${this.selectedAction.wrappedContentExample}\n`
140-
result += `{{end elem="${this.selectedActionId}"}}`
170+
result += this.wikiCodeDefaultContent
171+
result += this.wikiCodeEnd
141172
}
142173
return result
143174
}
@@ -159,7 +190,9 @@ export const app = {
159190
// use a fake dom to parse wiki code attributes
160191
const fakeDom = $(`<${this.currentSelectedAction}/>`)[0]
161192

162-
for (const attribute of fakeDom.attributes) Vue.set(this.values, attribute.name, attribute.value)
193+
for (const attribute of fakeDom.attributes) {
194+
Vue.set(this.values, attribute.name, attribute.value)
195+
}
163196

164197
const newActionId = fakeDom.tagName.toLowerCase()
165198
this.selectedActionId = newActionId
@@ -319,7 +352,8 @@ export const app = {
319352
const config = this.selectedActionAllConfigs[key]
320353
const value = this.values[key]
321354
if (result.hasOwnProperty(key) || value === undefined || config && config.default && `${value}` == `${config.default}`
322-
|| typeof value == 'object' || config && !this.checkConfigDisplay(config)) { continue }
355+
|| typeof value == 'object' || config && config.mapped === false
356+
|| config && !this.checkConfigDisplay(config)) { continue }
323357
result[key] = value
324358
}
325359
// Adds values from special components

tools/aceditor/presentation/javascripts/actions-builder.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ export default class {
2828
return this.allAvailableActions.concat(Object.keys(ACTIONS_BACKWARD_COMPATIBILITY))
2929
}
3030

31+
getActionConfiguration(actionName) {
32+
for (const group of Object.values(actionsBuilderData.action_groups)) {
33+
if (group.actions[actionName]) {
34+
return group.actions[actionName]
35+
}
36+
}
37+
return {}
38+
}
39+
3140
open(editor, options) {
3241
// Handle backward compat
3342
if (options.action) {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import InputMultiInput from './InputMultiInput.js'
2+
import InputPageList from './InputPageList.js'
3+
4+
export default {
5+
mixins: [InputMultiInput],
6+
components: { InputPageList },
7+
methods: {
8+
parseNewValues(newValues) {
9+
this.elements = []
10+
const links = newValues.links ? newValues.links.split(',') : [window.wiki.pageTag, '']
11+
const titles = newValues.titles ? newValues.titles.split(',') : [window.wiki.pageTag, '']
12+
for (let i = 0; i < links.length; i++) {
13+
this.elements.push({
14+
link: links[i],
15+
title: titles[i]
16+
})
17+
}
18+
},
19+
getValues() {
20+
return {
21+
links: this.elements.map((g) => g.link).filter((e) => e != '').join(','),
22+
titles: this.elements.map((g) => g.title).filter((e) => e != '').join(',')
23+
}
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)