diff --git a/composer.json b/composer.json
index 69bea27..3acf959 100644
--- a/composer.json
+++ b/composer.json
@@ -35,9 +35,11 @@
"drupal/consumer_image_styles": "^3.0",
"drupal/content_sync": "2.x-dev@dev",
"drupal/core-composer-scaffold": "^9.0",
+ "drupal/debug_bar": "^1.4",
"drupal/entity_clone": "^1.0",
"drupal/error_log": "^1.0",
"drupal/field_permissions": "^1.0",
+ "drupal/flag_lists": "^4.0@beta",
"drupal/genpass": "^1.x-dev",
"drupal/image_delta_formatter": "^1.x-dev",
"drupal/jsonapi_extras": "^3.7",
diff --git a/composer.lock b/composer.lock
index 24656d0..faa73ac 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "0fde84a349225b506081d88d67aa5cbc",
+ "content-hash": "72666d13bf47ed93fa6c3d45a9e17370",
"packages": [
{
"name": "alchemy/zippy",
@@ -5721,6 +5721,54 @@
"source": "https://git.drupalcode.org/project/date_range_formatter"
}
},
+ {
+ "name": "drupal/debug_bar",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://git.drupalcode.org/project/debug_bar.git",
+ "reference": "8.x-1.4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://ftp.drupal.org/files/projects/debug_bar-8.x-1.4.zip",
+ "reference": "8.x-1.4",
+ "shasum": "49046c56bcb1abdff29b561774ed8b5f29f12425"
+ },
+ "require": {
+ "drupal/core": "^8.7.0"
+ },
+ "type": "drupal-module",
+ "extra": {
+ "drupal": {
+ "version": "8.x-1.4",
+ "datestamp": "1567404482",
+ "security-coverage": {
+ "status": "covered",
+ "message": "Covered by Drupal's security advisory policy"
+ }
+ }
+ },
+ "notification-url": "https://packages.drupal.org/8/downloads",
+ "license": [
+ "GPL-2.0+"
+ ],
+ "authors": [
+ {
+ "name": "Chi",
+ "homepage": "https://www.drupal.org/user/556138"
+ }
+ ],
+ "description": "A simple toolbar with debug information.",
+ "homepage": "https://www.drupal.org/project/debug_bar",
+ "keywords": [
+ "Drupal"
+ ],
+ "support": {
+ "source": "http://cgit.drupalcode.org/debug_bar",
+ "issues": "https://www.drupal.org/project/issues/debug_bar"
+ }
+ },
{
"name": "drupal/devel",
"version": "4.0.1",
@@ -6887,6 +6935,147 @@
},
"time": "2020-09-04T17:12:31+00:00"
},
+ {
+ "name": "drupal/flag",
+ "version": "4.0.0-beta2",
+ "source": {
+ "type": "git",
+ "url": "https://git.drupalcode.org/project/flag.git",
+ "reference": "8.x-4.0-beta2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://ftp.drupal.org/files/projects/flag-8.x-4.0-beta2.zip",
+ "reference": "8.x-4.0-beta2",
+ "shasum": "6f180b6f65e0e778e6fccebd07de9f9c689f6a1f"
+ },
+ "require": {
+ "drupal/core": "^8.8 || ^9"
+ },
+ "type": "drupal-module",
+ "extra": {
+ "drupal": {
+ "version": "8.x-4.0-beta2",
+ "datestamp": "1595273815",
+ "security-coverage": {
+ "status": "not-covered",
+ "message": "Beta releases are not covered by Drupal security advisories."
+ }
+ }
+ },
+ "notification-url": "https://packages.drupal.org/8/downloads",
+ "license": [
+ "GPL-2.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Berdir",
+ "homepage": "https://www.drupal.org/user/214652"
+ },
+ {
+ "name": "fago",
+ "homepage": "https://www.drupal.org/user/16747"
+ },
+ {
+ "name": "fubhy",
+ "homepage": "https://www.drupal.org/user/761344"
+ },
+ {
+ "name": "joachim",
+ "homepage": "https://www.drupal.org/user/107701"
+ },
+ {
+ "name": "merlinofchaos",
+ "homepage": "https://www.drupal.org/user/26979"
+ },
+ {
+ "name": "mooffie",
+ "homepage": "https://www.drupal.org/user/78454"
+ },
+ {
+ "name": "quicksketch",
+ "homepage": "https://www.drupal.org/user/35821"
+ },
+ {
+ "name": "shabana.navas",
+ "homepage": "https://www.drupal.org/user/1311398"
+ },
+ {
+ "name": "socketwench",
+ "homepage": "https://www.drupal.org/user/65793"
+ }
+ ],
+ "description": "Create customized flags that users can set on entities.",
+ "homepage": "https://www.drupal.org/project/flag",
+ "support": {
+ "source": "https://git.drupalcode.org/project/flag"
+ }
+ },
+ {
+ "name": "drupal/flag_lists",
+ "version": "4.0.0-beta8",
+ "source": {
+ "type": "git",
+ "url": "https://git.drupalcode.org/project/flag_lists.git",
+ "reference": "4.0.0-beta8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://ftp.drupal.org/files/projects/flag_lists-4.0.0-beta8.zip",
+ "reference": "4.0.0-beta8",
+ "shasum": "3262bbcdb3a28db2d9fbb0c8820da98f90c3d854"
+ },
+ "require": {
+ "drupal/core": "^8 || ^9",
+ "drupal/flag": "^4.0"
+ },
+ "type": "drupal-module",
+ "extra": {
+ "drupal": {
+ "version": "4.0.0-beta8",
+ "datestamp": "1598351532",
+ "security-coverage": {
+ "status": "not-covered",
+ "message": "Beta releases are not covered by Drupal security advisories."
+ }
+ }
+ },
+ "notification-url": "https://packages.drupal.org/8/downloads",
+ "license": [
+ "GPL-2.0+"
+ ],
+ "authors": [
+ {
+ "name": "awolfey",
+ "homepage": "https://www.drupal.org/user/277371"
+ },
+ {
+ "name": "branana",
+ "homepage": "https://www.drupal.org/user/758394"
+ },
+ {
+ "name": "erikwebb",
+ "homepage": "https://www.drupal.org/user/273404"
+ },
+ {
+ "name": "queenvictoria",
+ "homepage": "https://www.drupal.org/user/856454"
+ },
+ {
+ "name": "sl27257",
+ "homepage": "https://www.drupal.org/user/15938"
+ }
+ ],
+ "description": "Flag Lists handle collection of flags",
+ "homepage": "https://www.drupal.org/project/flag_lists",
+ "keywords": [
+ "Drupal"
+ ],
+ "support": {
+ "source": "http://cgit.drupalcode.org/flag_lists",
+ "issues": "https://www.drupal.org/project/issues/flag_lists"
+ }
+ },
{
"name": "drupal/genpass",
"version": "dev-1.x",
@@ -17216,6 +17405,7 @@
"drupal/commerce_variation_cart_form": 20,
"drupal/computed_field": 10,
"drupal/content_sync": 20,
+ "drupal/flag_lists": 10,
"drupal/genpass": 20,
"drupal/image_delta_formatter": 20,
"drupal/jsonrpc": 20,
diff --git a/config/sync/block.block.header.yml b/config/sync/block.block.header.yml
index cf00e74..e84a712 100644
--- a/config/sync/block.block.header.yml
+++ b/config/sync/block.block.header.yml
@@ -23,7 +23,7 @@ settings:
follow_parent: child
level: 1
depth: 0
- expand: 0
+ expand: false
parent: 'header:'
suggestion: header
visibility: { }
diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml
index 428cc77..93e1719 100644
--- a/config/sync/core.extension.yml
+++ b/config/sync/core.extension.yml
@@ -78,6 +78,8 @@ module:
file_mdm_exif: 0
filter: 0
filter_perms: 0
+ flag: 0
+ flag_lists: 0
genpass: 0
help: 0
honeypot: 0
@@ -103,6 +105,7 @@ module:
maillog: 0
mailsystem: 0
materio_decoupled: 0
+ materio_flag: 0
materio_home: 0
materio_jsonapi: 0
materio_migrate: 0
diff --git a/config/sync/flag.flag.dossier.yml b/config/sync/flag.flag.dossier.yml
new file mode 100644
index 0000000..009e2b6
--- /dev/null
+++ b/config/sync/flag.flag.dossier.yml
@@ -0,0 +1,32 @@
+uuid: 4183b53b-30db-4b2d-b087-cb903f23fe27
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: dossier
+label: Dossier
+bundles:
+ - article
+ - materiau
+ - thematique
+entity_type: node
+global: false
+weight: 0
+flag_short: 'Flag this item'
+flag_long: ''
+flag_message: ''
+unflag_short: 'Unflag this item'
+unflag_long: ''
+unflag_message: ''
+unflag_denied_text: ''
+flag_type: 'entity:node'
+link_type: reload
+flagTypeConfig:
+ show_in_links: { }
+ show_as_field: true
+ show_on_form: false
+ show_contextual_link: true
+ extra_permissions:
+ owner: owner
+linkTypeConfig: { }
diff --git a/config/sync/flag.flag.flag_list_template_1.yml b/config/sync/flag.flag.flag_list_template_1.yml
new file mode 100644
index 0000000..a8e5791
--- /dev/null
+++ b/config/sync/flag.flag.flag_list_template_1.yml
@@ -0,0 +1,32 @@
+uuid: cc972bc9-a9d6-4715-bde0-b686a22069d2
+langcode: en
+status: true
+dependencies:
+ module:
+ - flag_lists
+ - node
+_core:
+ default_config_hash: gv5HCXt_zANnxz5g4ygaALNMnN5yQzI4jy3A7c8phFc
+id: flag_list_template_1
+label: 'Flag list template 1'
+bundles: { }
+entity_type: node
+global: false
+weight: 0
+flag_short: 'Add this item to the [flagging_collection:name] list'
+flag_long: 'Add this to your flag list'
+flag_message: 'Added to the flag list'
+unflag_short: 'Remove this item from the [flagging_collection:name] list'
+unflag_long: 'Remove this item from your flag list'
+unflag_message: 'Removed from the flag list'
+unflag_denied_text: ''
+flag_type: 'entity:node'
+link_type: ajax_link
+flagTypeConfig:
+ show_in_links: { }
+ show_as_field: true
+ show_on_form: false
+ show_contextual_link: false
+ extra_permissions:
+ owner: '0'
+linkTypeConfig: { }
diff --git a/config/sync/flag.flag.test_dossier.yml b/config/sync/flag.flag.test_dossier.yml
new file mode 100644
index 0000000..1c3ed64
--- /dev/null
+++ b/config/sync/flag.flag.test_dossier.yml
@@ -0,0 +1,33 @@
+uuid: null
+langcode: en
+status: true
+dependencies:
+ module:
+ - flag_lists
+ - node
+id: test_dossier
+label: 'test dossier'
+bundles:
+ - article
+ - materiau
+ - thematique
+entity_type: node
+global: false
+weight: 0
+flag_short: 'Flag this item'
+flag_long: ''
+flag_message: ''
+unflag_short: 'Unflag this item'
+unflag_long: ''
+unflag_message: ''
+unflag_denied_text: ''
+flag_type: 'entity:node'
+link_type: ajax_link
+flagTypeConfig:
+ show_in_links: { }
+ show_as_field: true
+ show_on_form: false
+ show_contextual_link: false
+ extra_permissions:
+ owner: owner
+linkTypeConfig: { }
diff --git a/config/sync/flag_lists.flag_for_list.dossier.yml b/config/sync/flag_lists.flag_for_list.dossier.yml
new file mode 100644
index 0000000..b403d3e
--- /dev/null
+++ b/config/sync/flag_lists.flag_for_list.dossier.yml
@@ -0,0 +1,9 @@
+uuid: null
+langcode: en
+status: true
+dependencies: { }
+id: dossier
+label: Dossier
+base_flag: dossier
+owner: root
+weight: null
diff --git a/config/sync/flag_lists.flag_for_list.flag_list_template_1.yml b/config/sync/flag_lists.flag_for_list.flag_list_template_1.yml
new file mode 100644
index 0000000..94a5557
--- /dev/null
+++ b/config/sync/flag_lists.flag_for_list.flag_list_template_1.yml
@@ -0,0 +1,11 @@
+uuid: e0111fa4-31c3-483a-918f-aca9c752190f
+langcode: en
+status: true
+dependencies: { }
+_core:
+ default_config_hash: is37xp2En_K1r0KAxyELb0cyrB6aQH5Ygr7o6tICk24
+id: flag_list_template_1
+label: 'Flag list template 1'
+base_flag: flag_list_template_1
+owner: 'Drupal Master'
+weight: null
diff --git a/config/sync/flag_lists.flagging_collection_type.flagging_collection_type_1.yml b/config/sync/flag_lists.flagging_collection_type.flagging_collection_type_1.yml
new file mode 100644
index 0000000..cbf55c2
--- /dev/null
+++ b/config/sync/flag_lists.flagging_collection_type.flagging_collection_type_1.yml
@@ -0,0 +1,8 @@
+uuid: 93164e3c-1d21-4129-bafc-e8956664f1db
+langcode: en
+status: true
+dependencies: { }
+_core:
+ default_config_hash: FgMUj7Lcs3yxNwSGpVwKZ6N00JNmxn3FndQcd-230hM
+id: flagging_collection_type_1
+label: 'Flagging collection type 1'
diff --git a/config/sync/language/fr/views.view.files.yml b/config/sync/language/fr/views.view.files.yml
index 9959956..95d3a1e 100644
--- a/config/sync/language/fr/views.view.files.yml
+++ b/config/sync/language/fr/views.view.files.yml
@@ -78,6 +78,7 @@ display:
label: 'Enregistrement du module'
count:
label: 'Nombre d''utilisations'
+ format_plural_string: !!binary MQNAY291bnQ=
title: 'Utilisation du fichier'
arguments:
fid:
diff --git a/config/sync/language/fr/views.view.my_flag_list_items.yml b/config/sync/language/fr/views.view.my_flag_list_items.yml
new file mode 100644
index 0000000..7148522
--- /dev/null
+++ b/config/sync/language/fr/views.view.my_flag_list_items.yml
@@ -0,0 +1,49 @@
+display:
+ default:
+ display_title: Maître
+ display_options:
+ exposed_form:
+ options:
+ submit_button: Appliquer
+ reset_button_label: Réinitialiser
+ exposed_sorts_label: 'Trier par'
+ sort_asc_label: Asc
+ sort_desc_label: Desc
+ pager:
+ options:
+ expose:
+ items_per_page_label: 'Éléments par page'
+ items_per_page_options_all_label: '- Tout -'
+ offset_label: Décalage
+ tags:
+ previous: ‹‹
+ next: ››
+ fields:
+ name_1:
+ separator: ', '
+ title:
+ label: Titre
+ separator: ', '
+ type:
+ label: 'Type d''entité'
+ separator: ', '
+ entity_id:
+ label: 'Identifiant (ID) de l''entité'
+ separator: ', '
+ block_1:
+ display_title: Bloc
+ display_options:
+ fields:
+ name_1:
+ separator: ', '
+ title:
+ label: Titre
+ separator: ', '
+ type:
+ label: 'Type d''entité'
+ separator: ', '
+ entity_id:
+ label: 'Identifiant (ID) de l''entité'
+ separator: ', '
+ page_1:
+ display_title: Page
diff --git a/config/sync/rest.resource.entity.flag.yml b/config/sync/rest.resource.entity.flag.yml
new file mode 100644
index 0000000..9f0a42e
--- /dev/null
+++ b/config/sync/rest.resource.entity.flag.yml
@@ -0,0 +1,18 @@
+uuid: c6b97e2c-7823-4aa3-9102-9482d78c4551
+langcode: en
+status: true
+dependencies:
+ module:
+ - flag
+ - serialization
+ - user
+id: entity.flag
+plugin_id: 'entity:flag'
+granularity: resource
+configuration:
+ methods:
+ - GET
+ formats:
+ - json
+ authentication:
+ - cookie
diff --git a/config/sync/rest.resource.entity.flag_for_list.yml b/config/sync/rest.resource.entity.flag_for_list.yml
new file mode 100644
index 0000000..0635df8
--- /dev/null
+++ b/config/sync/rest.resource.entity.flag_for_list.yml
@@ -0,0 +1,18 @@
+uuid: 619d9b48-cf3a-429a-b9e8-eae1106b05a5
+langcode: en
+status: true
+dependencies:
+ module:
+ - flag_lists
+ - serialization
+ - user
+id: entity.flag_for_list
+plugin_id: 'entity:flag_for_list'
+granularity: resource
+configuration:
+ methods:
+ - GET
+ formats:
+ - json
+ authentication:
+ - cookie
diff --git a/config/sync/rest.resource.entity.flag_list_item.yml b/config/sync/rest.resource.entity.flag_list_item.yml
new file mode 100644
index 0000000..aa4116e
--- /dev/null
+++ b/config/sync/rest.resource.entity.flag_list_item.yml
@@ -0,0 +1,21 @@
+uuid: 9b95ad99-19d6-495c-8d3b-e9b79fc390f5
+langcode: en
+status: true
+dependencies:
+ module:
+ - flag_lists
+ - serialization
+ - user
+id: entity.flag_list_item
+plugin_id: 'entity:flag_list_item'
+granularity: resource
+configuration:
+ methods:
+ - GET
+ - POST
+ - DELETE
+ - PATCH
+ formats:
+ - json
+ authentication:
+ - cookie
diff --git a/config/sync/rest.resource.entity.flagging.yml b/config/sync/rest.resource.entity.flagging.yml
new file mode 100644
index 0000000..94a5489
--- /dev/null
+++ b/config/sync/rest.resource.entity.flagging.yml
@@ -0,0 +1,21 @@
+uuid: 5ab3e66a-7ab2-42f7-988a-d60bc5cb502e
+langcode: en
+status: true
+dependencies:
+ module:
+ - flag
+ - serialization
+ - user
+id: entity.flagging
+plugin_id: 'entity:flagging'
+granularity: resource
+configuration:
+ methods:
+ - GET
+ - POST
+ - DELETE
+ - PATCH
+ formats:
+ - json
+ authentication:
+ - cookie
diff --git a/config/sync/rest.resource.entity.flagging_collection.yml b/config/sync/rest.resource.entity.flagging_collection.yml
new file mode 100644
index 0000000..c8f46fa
--- /dev/null
+++ b/config/sync/rest.resource.entity.flagging_collection.yml
@@ -0,0 +1,21 @@
+uuid: bdabf98a-bd5a-434c-b442-24de2558894c
+langcode: en
+status: true
+dependencies:
+ module:
+ - flag_lists
+ - serialization
+ - user
+id: entity.flagging_collection
+plugin_id: 'entity:flagging_collection'
+granularity: resource
+configuration:
+ methods:
+ - GET
+ - POST
+ - DELETE
+ - PATCH
+ formats:
+ - json
+ authentication:
+ - cookie
diff --git a/config/sync/rest.resource.entity.flagging_collection_type.yml b/config/sync/rest.resource.entity.flagging_collection_type.yml
new file mode 100644
index 0000000..d7fb5dc
--- /dev/null
+++ b/config/sync/rest.resource.entity.flagging_collection_type.yml
@@ -0,0 +1,18 @@
+uuid: 61a720a3-ee1e-47c4-a5d9-9fe052d020e8
+langcode: en
+status: true
+dependencies:
+ module:
+ - flag_lists
+ - serialization
+ - user
+id: entity.flagging_collection_type
+plugin_id: 'entity:flagging_collection_type'
+granularity: resource
+configuration:
+ methods:
+ - GET
+ formats:
+ - json
+ authentication:
+ - cookie
diff --git a/config/sync/system.action.flag_action.dossier_flag.yml b/config/sync/system.action.flag_action.dossier_flag.yml
new file mode 100644
index 0000000..599777b
--- /dev/null
+++ b/config/sync/system.action.flag_action.dossier_flag.yml
@@ -0,0 +1,15 @@
+uuid: 19f6415c-55ae-4d43-9804-3b6c9725eb29
+langcode: en
+status: true
+dependencies:
+ config:
+ - flag.flag.dossier
+ module:
+ - flag
+id: flag_action.dossier_flag
+label: 'Flag this item'
+type: node
+plugin: 'flag_action:dossier_flag'
+configuration:
+ flag_id: dossier
+ flag_action: flag
diff --git a/config/sync/system.action.flag_action.dossier_unflag.yml b/config/sync/system.action.flag_action.dossier_unflag.yml
new file mode 100644
index 0000000..0cf949f
--- /dev/null
+++ b/config/sync/system.action.flag_action.dossier_unflag.yml
@@ -0,0 +1,15 @@
+uuid: ee3693e6-2a01-4850-a464-099930242d42
+langcode: en
+status: true
+dependencies:
+ config:
+ - flag.flag.dossier
+ module:
+ - flag
+id: flag_action.dossier_unflag
+label: 'Unflag this item'
+type: node
+plugin: 'flag_action:dossier_unflag'
+configuration:
+ flag_id: dossier
+ flag_action: unflag
diff --git a/config/sync/system.action.flag_action.flag_list_template_1_flag.yml b/config/sync/system.action.flag_action.flag_list_template_1_flag.yml
new file mode 100644
index 0000000..faf8b6d
--- /dev/null
+++ b/config/sync/system.action.flag_action.flag_list_template_1_flag.yml
@@ -0,0 +1,17 @@
+uuid: b883b2b8-2955-4df1-987b-10a5e1488fd2
+langcode: en
+status: true
+dependencies:
+ config:
+ - flag.flag.flag_list_template_1
+ module:
+ - flag
+_core:
+ default_config_hash: LkE1QB2Y0oqjrb33mVsdE0cSy6E9wujJklHGqH91GvE
+id: flag_action.flag_list_template_1_flag
+label: 'Add this item to a list'
+type: node
+plugin: 'flag_action:flag_list_template_1_flag'
+configuration:
+ flag_id: flag_list_template_1
+ flag_action: flag
diff --git a/config/sync/system.action.flag_action.flag_list_template_1_unflag.yml b/config/sync/system.action.flag_action.flag_list_template_1_unflag.yml
new file mode 100644
index 0000000..c1204de
--- /dev/null
+++ b/config/sync/system.action.flag_action.flag_list_template_1_unflag.yml
@@ -0,0 +1,17 @@
+uuid: 657ee4d7-61e7-4466-b6d5-37270056d4ef
+langcode: en
+status: true
+dependencies:
+ config:
+ - flag.flag.flag_list_template_1
+ module:
+ - flag
+_core:
+ default_config_hash: dkSOtOrwdYQJVIAi2LOYl8XRZCqSIIIb0Hb9J-2NNug
+id: flag_action.flag_list_template_1_unflag
+label: 'Remove this item from the list'
+type: node
+plugin: 'flag_action:flag_list_template_1_unflag'
+configuration:
+ flag_id: flag_list_template_1
+ flag_action: unflag
diff --git a/config/sync/system.action.flag_action.test_dossier_flag.yml b/config/sync/system.action.flag_action.test_dossier_flag.yml
new file mode 100644
index 0000000..e7ce1ef
--- /dev/null
+++ b/config/sync/system.action.flag_action.test_dossier_flag.yml
@@ -0,0 +1,15 @@
+uuid: dbe3c645-f4b1-416c-b9b2-43bf919eb593
+langcode: en
+status: true
+dependencies:
+ config:
+ - flag.flag.test_dossier
+ module:
+ - flag
+id: flag_action.test_dossier_flag
+label: 'Flag this item'
+type: node
+plugin: 'flag_action:test_dossier_flag'
+configuration:
+ flag_id: test_dossier
+ flag_action: flag
diff --git a/config/sync/system.action.flag_action.test_dossier_unflag.yml b/config/sync/system.action.flag_action.test_dossier_unflag.yml
new file mode 100644
index 0000000..b895433
--- /dev/null
+++ b/config/sync/system.action.flag_action.test_dossier_unflag.yml
@@ -0,0 +1,15 @@
+uuid: c4aa7c16-1473-471b-81b0-3a862238bda7
+langcode: en
+status: true
+dependencies:
+ config:
+ - flag.flag.test_dossier
+ module:
+ - flag
+id: flag_action.test_dossier_unflag
+label: 'Unflag this item'
+type: node
+plugin: 'flag_action:test_dossier_unflag'
+configuration:
+ flag_id: test_dossier
+ flag_action: unflag
diff --git a/config/sync/system.action.flag_delete_flagging.yml b/config/sync/system.action.flag_delete_flagging.yml
new file mode 100644
index 0000000..71723a7
--- /dev/null
+++ b/config/sync/system.action.flag_delete_flagging.yml
@@ -0,0 +1,13 @@
+uuid: 11e49c6d-d0f0-4e79-b692-1e482ce100bc
+langcode: en
+status: true
+dependencies:
+ module:
+ - flag
+_core:
+ default_config_hash: Z9dGFmjyQgZjDwdsI-Mmgd2tZkUsjYi7cOSUPqjXPtw
+id: flag_delete_flagging
+label: 'Delete flagging'
+type: flagging
+plugin: flag_delete_flagging
+configuration: { }
diff --git a/config/sync/user.role.adherent.yml b/config/sync/user.role.adherent.yml
index 1675c64..e3c327d 100644
--- a/config/sync/user.role.adherent.yml
+++ b/config/sync/user.role.adherent.yml
@@ -8,11 +8,16 @@ weight: -3
is_admin: null
permissions:
- 'access materio search'
+ - 'add flag lists'
- 'create member profile'
+ - 'edit own flag lists'
+ - 'flag dossier other items'
+ - 'unflag dossier other items'
- 'update own commerce_license'
- 'update own member profile'
- 'use jsonrpc services'
- 'view materio_order_type commerce_order'
- 'view own commerce_license'
+ - 'view own flag lists'
- 'view own member profile'
- 'view recurring commerce_order'
diff --git a/config/sync/user.role.admin.yml b/config/sync/user.role.admin.yml
index 39ceee7..5138948 100644
--- a/config/sync/user.role.admin.yml
+++ b/config/sync/user.role.admin.yml
@@ -20,6 +20,7 @@ permissions:
- 'access site in maintenance mode'
- 'access synonyms entity autocomplete'
- 'access toolbar'
+ - 'add flag lists'
- 'administer commerce_order'
- 'administer newsletters'
- 'administer productions menu items'
@@ -85,6 +86,7 @@ permissions:
- 'edit field_memo'
- 'edit field_showroom'
- 'edit own enregistrement content'
+ - 'edit own flag lists'
- 'edit terms in assisted_research'
- 'edit terms in collectionneurs'
- 'edit terms in company'
@@ -111,6 +113,7 @@ permissions:
- 'execute views_bulk_edit all'
- 'execute workflow_node_given_state_action node'
- 'execute workflow_node_next_state_action node'
+ - 'flag dossier other items'
- 'revert any corpus_documents workflow_transition'
- 'revert any generique workflow_transition'
- 'revert article revisions'
@@ -140,6 +143,7 @@ permissions:
- 'translate static node'
- 'translate tags taxonomy_term'
- 'translate thesaurus taxonomy_term'
+ - 'unflag dossier other items'
- 'update any commerce_license'
- 'update commerce_promotion'
- 'update content translations'
@@ -164,6 +168,7 @@ permissions:
- 'view materiau revisions'
- 'view materio_order_type commerce_order'
- 'view member profile'
+ - 'view own flag lists'
- 'view own profile'
- 'view page revisions'
- 'view simplenews_issue revisions'
diff --git a/config/sync/user.role.admin_showroom.yml b/config/sync/user.role.admin_showroom.yml
index 8a7d953..6625bdc 100644
--- a/config/sync/user.role.admin_showroom.yml
+++ b/config/sync/user.role.admin_showroom.yml
@@ -8,4 +8,9 @@ weight: 0
is_admin: null
permissions:
- 'access materio search'
+ - 'add flag lists'
+ - 'edit own flag lists'
+ - 'flag dossier other items'
+ - 'unflag dossier other items'
- 'use jsonrpc services'
+ - 'view own flag lists'
diff --git a/config/sync/user.role.alpha_testeur.yml b/config/sync/user.role.alpha_testeur.yml
index 4a7722d..e136b3e 100644
--- a/config/sync/user.role.alpha_testeur.yml
+++ b/config/sync/user.role.alpha_testeur.yml
@@ -8,7 +8,12 @@ weight: -5
is_admin: null
permissions:
- 'access materio search'
+ - 'add flag lists'
- 'create member profile'
+ - 'edit own flag lists'
+ - 'flag dossier other items'
+ - 'unflag dossier other items'
- 'update own member profile'
- 'use jsonrpc services'
+ - 'view own flag lists'
- 'view own member profile'
diff --git a/config/sync/user.role.student.yml b/config/sync/user.role.student.yml
index a4e2a24..1342394 100644
--- a/config/sync/user.role.student.yml
+++ b/config/sync/user.role.student.yml
@@ -8,7 +8,12 @@ weight: -4
is_admin: null
permissions:
- 'access materio search'
+ - 'add flag lists'
- 'create member profile'
+ - 'edit own flag lists'
+ - 'flag dossier other items'
+ - 'unflag dossier other items'
- 'update own member profile'
- 'use jsonrpc services'
+ - 'view own flag lists'
- 'view own member profile'
diff --git a/config/sync/user.role.translator.yml b/config/sync/user.role.translator.yml
index f263dd9..2ade850 100644
--- a/config/sync/user.role.translator.yml
+++ b/config/sync/user.role.translator.yml
@@ -8,3 +8,8 @@ weight: -1
is_admin: null
permissions:
- 'access materio search'
+ - 'add flag lists'
+ - 'edit own flag lists'
+ - 'flag dossier other items'
+ - 'unflag dossier other items'
+ - 'view own flag lists'
diff --git a/config/sync/views.view.my_flag_list_items.yml b/config/sync/views.view.my_flag_list_items.yml
new file mode 100644
index 0000000..f989d4a
--- /dev/null
+++ b/config/sync/views.view.my_flag_list_items.yml
@@ -0,0 +1,852 @@
+uuid: bdcbca4d-9bcf-47fd-b8d9-68a721afdbe0
+langcode: en
+status: true
+dependencies:
+ config:
+ - system.menu.tools
+ module:
+ - flag_lists
+ - node
+ - user
+_core:
+ default_config_hash: y1M-Cg-Ne3EcH-8k16QBBb-q-aReeTXz-Uu99lV7P9g
+id: my_flag_list_items
+label: 'My flag list items'
+module: views
+description: 'List a users flag lists'
+tag: 'Flag lists'
+base_table: flag_list_item_field_data
+base_field: id
+display:
+ default:
+ display_plugin: default
+ id: default
+ display_title: Master
+ position: 0
+ display_options:
+ access:
+ type: perm
+ options:
+ perm: 'access content'
+ cache:
+ type: tag
+ options: { }
+ query:
+ type: views_query
+ options:
+ disable_sql_rewrite: false
+ distinct: false
+ replica: false
+ query_comment: ''
+ query_tags: { }
+ exposed_form:
+ type: basic
+ options:
+ submit_button: Apply
+ reset_button: false
+ reset_button_label: Reset
+ exposed_sorts_label: 'Sort by'
+ expose_sort_order: true
+ sort_asc_label: Asc
+ sort_desc_label: Desc
+ pager:
+ type: mini
+ options:
+ items_per_page: 10
+ offset: 0
+ id: 0
+ total_pages: null
+ expose:
+ items_per_page: false
+ items_per_page_label: 'Items per page'
+ items_per_page_options: '5, 10, 25, 50'
+ items_per_page_options_all: false
+ items_per_page_options_all_label: '- All -'
+ offset: false
+ offset_label: Offset
+ tags:
+ previous: ‹‹
+ next: ››
+ style:
+ type: table
+ options:
+ grouping:
+ -
+ field: name_1
+ rendered: true
+ rendered_strip: false
+ row_class: ''
+ default_row_class: true
+ override: true
+ sticky: false
+ caption: ''
+ summary: ''
+ description: ''
+ columns:
+ name_1: name_1
+ type: type
+ entity_id: entity_id
+ info:
+ name_1:
+ sortable: true
+ default_sort_order: asc
+ align: ''
+ separator: ''
+ empty_column: false
+ responsive: ''
+ type:
+ sortable: true
+ default_sort_order: asc
+ align: ''
+ separator: ''
+ empty_column: false
+ responsive: ''
+ entity_id:
+ sortable: true
+ default_sort_order: asc
+ align: ''
+ separator: ''
+ empty_column: false
+ responsive: ''
+ default: name_1
+ empty_table: false
+ row:
+ type: fields
+ fields:
+ name_1:
+ id: name_1
+ table: flagging_collection_field_data
+ field: name
+ relationship: flag_list
+ group_type: group
+ admin_label: ''
+ label: 'Flag list'
+ exclude: true
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: string
+ settings:
+ link_to_entity: false
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ entity_type: flagging_collection
+ entity_field: name
+ plugin_id: field
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ relationship: entity_id
+ group_type: group
+ admin_label: ''
+ label: Title
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: string
+ settings:
+ link_to_entity: true
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ entity_type: node
+ entity_field: title
+ plugin_id: field
+ type:
+ id: type
+ table: flag_list_item_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ label: 'Entity Type'
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: string
+ settings:
+ link_to_entity: false
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ entity_type: flag_list_item
+ entity_field: type
+ plugin_id: field
+ entity_id:
+ id: entity_id
+ table: flag_list_item_field_data
+ field: entity_id
+ relationship: none
+ group_type: group
+ admin_label: ''
+ label: 'Entity ID'
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: number_integer
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ entity_type: flag_list_item
+ entity_field: entity_id
+ plugin_id: field
+ filters:
+ uid_current:
+ id: uid_current
+ table: users
+ field: uid_current
+ relationship: user_id
+ group_type: group
+ admin_label: ''
+ operator: '='
+ value: '1'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ operator_limit_selection: false
+ operator_list: { }
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ entity_type: user
+ plugin_id: user_current
+ type:
+ id: type
+ table: flag_list_item_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ operator: '='
+ value: node
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ placeholder: ''
+ operator_limit_selection: false
+ operator_list: { }
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ entity_type: flag_list_item
+ entity_field: type
+ plugin_id: string
+ sorts: { }
+ title: 'My flag list items'
+ header:
+ area:
+ id: area
+ table: views
+ field: area
+ plugin_id: text
+ footer: { }
+ empty:
+ area:
+ id: area
+ table: views
+ field: area
+ relationship: none
+ group_type: group
+ admin_label: ''
+ empty: true
+ tokenize: false
+ content:
+ value: 'You don''t have any Flag List Items.'
+ format: basic_html
+ plugin_id: text
+ relationships:
+ flag_list:
+ id: flag_list
+ table: flag_list_item_field_data
+ field: flag_list
+ relationship: none
+ group_type: group
+ admin_label: 'Connected flag'
+ required: false
+ entity_type: flag_list_item
+ plugin_id: standard
+ entity_id:
+ id: entity_id
+ table: flag_list_item_field_data
+ field: entity_id
+ relationship: none
+ group_type: group
+ admin_label: 'Connected node'
+ required: false
+ entity_type: flag_list_item
+ plugin_id: standard
+ user_id:
+ id: user_id
+ table: flag_list_item_field_data
+ field: user_id
+ relationship: none
+ group_type: group
+ admin_label: User
+ required: false
+ entity_type: flag_list_item
+ entity_field: user_id
+ plugin_id: standard
+ arguments: { }
+ display_extenders: { }
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url.query_args
+ - user
+ - user.permissions
+ tags: { }
+ block_1:
+ display_plugin: block
+ id: block_1
+ display_title: Block
+ position: 2
+ display_options:
+ display_extenders: { }
+ block_description: 'My Flag Lists'
+ pager:
+ type: none
+ options:
+ offset: 0
+ defaults:
+ pager: false
+ fields: false
+ block_category: 'Flag Lists'
+ fields:
+ name_1:
+ id: name_1
+ table: flagging_collection_field_data
+ field: name
+ relationship: flag_list
+ group_type: group
+ admin_label: ''
+ label: 'Flag list'
+ exclude: true
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: string
+ settings:
+ link_to_entity: false
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ entity_type: flagging_collection
+ entity_field: name
+ plugin_id: field
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ relationship: entity_id
+ group_type: group
+ admin_label: ''
+ label: Title
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: string
+ settings:
+ link_to_entity: true
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ entity_type: node
+ entity_field: title
+ plugin_id: field
+ type:
+ id: type
+ table: flag_list_item_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ label: 'Entity Type'
+ exclude: true
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: string
+ settings:
+ link_to_entity: false
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ entity_type: flag_list_item
+ entity_field: type
+ plugin_id: field
+ entity_id:
+ id: entity_id
+ table: flag_list_item_field_data
+ field: entity_id
+ relationship: none
+ group_type: group
+ admin_label: ''
+ label: 'Entity ID'
+ exclude: true
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: number_integer
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ group_column: value
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ entity_type: flag_list_item
+ entity_field: entity_id
+ plugin_id: field
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url.query_args
+ - user
+ - user.permissions
+ tags: { }
+ page_1:
+ display_plugin: page
+ id: page_1
+ display_title: Page
+ position: 1
+ display_options:
+ display_extenders: { }
+ path: my-flag-list-items
+ menu:
+ type: normal
+ title: 'My flag list items'
+ description: 'All my flag list items'
+ expanded: false
+ parent: ''
+ weight: 0
+ context: '0'
+ menu_name: tools
+ header:
+ area:
+ id: area
+ table: views
+ field: area
+ relationship: none
+ group_type: group
+ admin_label: ''
+ empty: false
+ tokenize: false
+ content:
+ value: 'My flag lists for node''s entities on this system'
+ format: basic_html
+ plugin_id: text
+ defaults:
+ header: false
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url.query_args
+ - user
+ - user.permissions
+ tags: { }
diff --git a/web/modules/custom/materio_flag/materio_flag.info.yml b/web/modules/custom/materio_flag/materio_flag.info.yml
new file mode 100644
index 0000000..cf62fba
--- /dev/null
+++ b/web/modules/custom/materio_flag/materio_flag.info.yml
@@ -0,0 +1,7 @@
+name: Materio FLAG
+type: module
+description: Defines api behaviours for flaglist.
+core: 8.x
+package: Materio
+dependencies:
+ - drupal:flag_lists
diff --git a/web/modules/custom/materio_flag/materio_flag.module b/web/modules/custom/materio_flag/materio_flag.module
new file mode 100644
index 0000000..b3d9bbc
--- /dev/null
+++ b/web/modules/custom/materio_flag/materio_flag.module
@@ -0,0 +1 @@
+entityManager = $entity_manager;
+ // $this->languageManager = $language_manager;
+ // $this->renderer = $renderer;
+ // $this->entityTypeManager = $entity_type_manager;
+ // }
+ public function __construct(FlagListsService $flag_lists_service ) {
+ $this->flaglists = $flag_lists_service;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function create(ContainerInterface $container) {
+ return new static(
+ $container->get('flaglists'),
+ );
+ }
+
+ /**
+ * Hello.
+ *
+ * @return string
+ * Return Hello string.
+ */
+ public function getUsersFlaggingCollections() {
+
+ // $data['data'] = ['test', 'hello'];
+
+ // $data['data'] = $this->flaglists->getUsersFlaggingCollections();
+
+ // $data['#cache'] = [
+ // // 'max-age' => \Drupal\Core\Cache\Cache::PERMANENT,
+ // 'tags' => ['materio-flag-cache'],
+ // // 'contexts' => [
+ // // 'languages:language_content'
+ // // ]
+ // ];
+ // $response = new CacheableJsonResponse($data);
+ // $response->addCacheableDependency(CacheableMetadata::createFromRenderArray($data));
+ // return $response;
+
+ $colls = $this->flaglists->getUsersFlaggingCollections();
+
+ $data = [];
+ foreach ($colls as $id => $collection) {
+ $data[] = array(
+ "id" => $id,
+ "name" => $collection->getName()
+ );
+ }
+
+ return new JsonResponse($data);
+ }
+
+}
diff --git a/web/themes/custom/materiotheme/assets/dist/main.js b/web/themes/custom/materiotheme/assets/dist/main.js
index 87f30d6..4cf7ae6 100644
--- a/web/themes/custom/materiotheme/assets/dist/main.js
+++ b/web/themes/custom/materiotheme/assets/dist/main.js
@@ -601,6 +601,18 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n
/***/ }),
+/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=script&lang=js&":
+/*!***************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=script&lang=js& ***!
+ \***************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n name: \"userFlags\",\n data: function data() {\n return {};\n },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n flags: function flags(state) {\n return state.User.flags;\n }\n })),\n methods: _objectSpread({}, (0, _vuex.mapActions)({\n createFlag: 'User/createFlag'\n }), {\n onLogout: function onLogout() {\n console.log(\"UserFlags onCreateFlag\");\n this.userLogout();\n }\n })\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options");
+
+/***/ }),
+
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?vue&type=script&lang=js& ***!
@@ -609,7 +621,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n // data () {\n // return {\n // mail: \"Hello User!\"\n // }\n // },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n mail: function mail(state) {\n return state.User.mail;\n },\n isAdmin: function isAdmin(state) {\n return state.User.isAdmin;\n }\n })),\n methods: _objectSpread({}, (0, _vuex.mapActions)({\n userLogout: 'User/userLogout'\n }), {\n onLogout: function onLogout() {\n console.log('UserTools onLogout');\n this.userLogout();\n }\n })\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options");
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\nvar _UserFlags = _interopRequireDefault(__webpack_require__(/*! vuejs/components/User/UserFlags */ \"./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n components: {\n UserFlags: _UserFlags.default\n },\n // data () {\n // return {\n // mail: \"Hello User!\"\n // }\n // },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n mail: function mail(state) {\n return state.User.mail;\n },\n isAdmin: function isAdmin(state) {\n return state.User.isAdmin;\n },\n flags: function flags(state) {\n return state.User.flags;\n }\n })),\n methods: _objectSpread({}, (0, _vuex.mapActions)({\n userLogout: 'User/userLogout'\n }), {\n onLogout: function onLogout() {\n console.log(\"UserTools onLogout\");\n this.userLogout();\n }\n })\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options");
/***/ }),
@@ -950,6 +962,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
/***/ }),
+/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=template&id=0e1971fa&scoped=true&lang=html&":
+/*!***************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=template&id=0e1971fa&scoped=true&lang=html& ***!
+ \***************************************************************************************************************************************************************************************************************************************************************/
+/*! exports provided: render, staticRenderFns */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"user-flags\" } }, [\n _c(\"h4\", { staticClass: \"mdi mdi-folder-outline\" }, [_vm._v(\"My folders\")]),\n _vm._v(\" \"),\n _c(\n \"ul\",\n [\n _vm._l(_vm.flags, function(flag) {\n return _c(\"li\", { key: flag.id }, [\n _c(\"h5\", [_vm._v(_vm._s(flag.name))])\n ])\n }),\n _vm._v(\" \"),\n _c(\"li\", { ref: \"create-flag\" }, [\n _c(\n \"h5\",\n {\n staticClass: \"mdi mdi-folder-plus-outline\",\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onCreateFlag()\n }\n }\n },\n [_vm._v(\"new folder\")]\n )\n ])\n ],\n 2\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options");
+
+/***/ }),
+
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?vue&type=template&id=4e9a834e&scoped=true&lang=html&":
/*!***************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?vue&type=template&id=4e9a834e&scoped=true&lang=html& ***!
@@ -958,7 +982,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"user-tools\" } }, [\n _c(\"h4\", { staticClass: \"mdi mdi-account\" }, [_vm._v(_vm._s(_vm.mail))]),\n _vm._v(\" \"),\n _vm.isAdmin\n ? _c(\"a\", {\n staticClass: \"mdi mdi-settings\",\n attrs: { href: \"/admin/content/materials\", title: \"admin\" }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"a\", {\n staticClass: \"mdi mdi-logout\",\n attrs: { href: \"/user/logout\", title: \"logout\" },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onLogout()\n }\n }\n })\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"user-tools\" } },\n [\n _c(\"h4\", { staticClass: \"mdi mdi-account\" }, [_vm._v(_vm._s(_vm.mail))]),\n _vm._v(\" \"),\n _vm.isAdmin\n ? _c(\"a\", {\n staticClass: \"mdi mdi-settings\",\n attrs: { href: \"/admin/content/materials\", title: \"admin\" }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"a\", {\n staticClass: \"mdi mdi-logout\",\n attrs: { href: \"/user/logout\", title: \"logout\" },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onLogout()\n }\n }\n }),\n _vm._v(\" \"),\n _vm.flags ? _c(\"UserFlags\") : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options");
/***/ }),
@@ -1028,7 +1052,7 @@ eval("var g; // This works in non-strict mode\n\ng = function () {\n return thi
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval("\n\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.js\"));\n\nvar _vueInfiniteLoading = _interopRequireDefault(__webpack_require__(/*! vue-infinite-loading */ \"./node_modules/vue-infinite-loading/dist/vue-infinite-loading.js\"));\n\nvar _vueCoolLightbox = _interopRequireDefault(__webpack_require__(/*! vue-cool-lightbox */ \"./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.esm.js\"));\n\nvar _store = _interopRequireDefault(__webpack_require__(/*! vuejs/store */ \"./web/themes/custom/materiotheme/vuejs/store/index.js\"));\n\nvar _route = _interopRequireDefault(__webpack_require__(/*! vuejs/route */ \"./web/themes/custom/materiotheme/vuejs/route/index.js\"));\n\nvar _UserBlock = _interopRequireDefault(__webpack_require__(/*! vuejs/components/Block/UserBlock */ \"./web/themes/custom/materiotheme/vuejs/components/Block/UserBlock.vue\"));\n\nvar _MainContent = _interopRequireDefault(__webpack_require__(/*! vuejs/components/Content/MainContent */ \"./web/themes/custom/materiotheme/vuejs/components/Content/MainContent.vue\"));\n\nvar _SearchBlock = _interopRequireDefault(__webpack_require__(/*! vuejs/components/Block/SearchBlock */ \"./web/themes/custom/materiotheme/vuejs/components/Block/SearchBlock.vue\"));\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\n__webpack_require__(/*! theme/assets/styles/main.scss */ \"./web/themes/custom/materiotheme/assets/styles/main.scss\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n_vue.default.use(_vueInfiniteLoading.default, {\n props: {\n spinner: 'spiral' // slots.noMore: ''\n\n } // system: {\n // throttleLimit: 50,\n // /* other settings need to configure */\n // }\n\n}); // import vueVimeoPlayer from 'vue-vimeo-player'\n// Vue.use(vueVimeoPlayer)\n// import VueYouTubeEmbed from 'vue-youtube-embed'\n// Vue.use(VueYouTubeEmbed)\n\n\n_vue.default.use(_vueCoolLightbox.default);\n\n(function (Drupal, drupalSettings, drupalDecoupled) {\n var MaterioTheme = function MaterioTheme() {\n var _v_sitebranding_block, _v_user_block, _v_header_menu, _v_pagetitle_block, _v_search_block, _v_main_content;\n\n var _is_front = drupalSettings.path.isFront;\n console.log('drupalSettings', drupalSettings); // ___ _ _\n // |_ _|_ _ (_) |_\n // | || ' \\| | _|\n // |___|_||_|_|\\__|\n\n function init() {\n console.log(\"MaterioTheme init()\");\n initVues();\n }\n\n function checkNoVuePages() {\n // return drupalDecoupled.sys_path != '/cart'\n // && drupalDecoupled.sys_path.indexOf('checkout') != 1;\n if (drupalDecoupled.route_name.indexOf('commerce') == -1) {\n return true;\n } else {\n return false;\n }\n }\n\n function initVues() {\n // only launch views if we are not in commerce pages\n if (checkNoVuePages()) {\n initVRouter();\n initVSiteBrandingBlock();\n initVPagetitleBlock();\n initVHeaderMenu();\n initVMainContent();\n initVSearchBlock();\n }\n\n initVUserBlock();\n }\n\n function initVRouter() {\n // we need this to update the title and body classes while using history nav\n _route.default.beforeEach(function (to, from, next) {\n var _document$querySelect, _document$querySelect2;\n\n // console.log('router beforeEach to ', to);\n // commit new title to store\n var title = null;\n\n switch (to.name) {\n case 'home':\n title = null;\n break;\n\n case 'article':\n title = false;\n break;\n\n default:\n title = to.name;\n }\n\n if (title !== false) {\n _store.default.commit('Common/setPagetitle', title);\n } // remove all path related body classes\n\n\n var body_classes = document.querySelector('body').classList;\n var classes_to_rm = [];\n\n for (var i = 0; i < body_classes.length; i++) {\n if (body_classes[i].startsWith('path-')) {\n classes_to_rm.push(body_classes[i]);\n }\n }\n\n (_document$querySelect = document.querySelector('body').classList).remove.apply(_document$querySelect, classes_to_rm); // add new path classes to body\n\n\n var classes = [];\n\n if (to.path == '/') {\n classes.push('path-home');\n } else {\n var path_parts = to.path.replace(/^\\//, '').split('/'); // TODO: remove language relative prefix from path classes (fr, en, etc)\n\n for (var i = 0; i < path_parts.length; i++) {\n if (i == 0) {\n var c = \"path-\" + path_parts[i];\n } else if (path_parts[i] !== '') {\n var c = classes[i - 1] + '-' + path_parts[i];\n }\n\n classes.push(c);\n }\n }\n\n (_document$querySelect2 = document.querySelector('body').classList).add.apply(_document$querySelect2, classes); // trigger router\n\n\n next();\n });\n }\n\n function initVSiteBrandingBlock() {\n _v_sitebranding_block = new _vue.default({\n store: _store.default,\n router: _route.default,\n el: '#block-sitebranding',\n methods: {\n onclick: function onclick(event) {\n // console.log(\"Clicked on logo event\", event);\n var href = event.target.getAttribute('href'); // console.log(\"Clicked on logo href\", href);\n\n this.$router.push(href); // replaced by router.beforeEach\n // this.$store.commit('Common/setPagetitle', null)\n }\n }\n });\n }\n\n function initVPagetitleBlock() {\n var $blk = document.querySelector('#block-pagetitle');\n var $h2 = $blk.querySelector('h2'); // get the loaded pagetitle\n\n var title = $h2.innerText; // if not front recorde the loaded pagetitle in store\n\n if (!_is_front) {\n _store.default.commit('Common/setPagetitle', title);\n } // replace in template the pagetitle by vue binding\n\n\n $h2.innerText = '{{ pagetitle }}'; // create the vue\n\n _v_pagetitle_block = new _vue.default({\n store: _store.default,\n router: _route.default,\n el: $blk,\n computed: _objectSpread({}, (0, _vuex.mapState)({\n pagetitle: function pagetitle(state) {\n return state.Common.pagetitle;\n }\n }))\n });\n }\n\n function initVUserBlock() {\n var mount_point = drupalSettings.user.uid !== 0 ? 'block-userblock' : 'block-userlogin';\n var props = {\n title: \"\",\n loginblock: \"\"\n };\n\n switch (mount_point) {\n case 'block-userlogin':\n var $block = document.getElementById(mount_point);\n console.log('initVUserBlock login form html', $block);\n props.loginblock = $block.outerHTML.trim();\n break;\n\n case 'block-userblock':\n default:\n break;\n }\n\n _v_user_block = new _vue.default({\n store: _store.default,\n // computed: {\n // ...mapState({\n // isloggedin: state => state.User.isloggedin\n // })\n // },\n created: function created() {\n // if already loggedin, call store.user to get the user infos\n if (drupalSettings.user.uid !== 0) {\n this.$store.commit('User/setUid', drupalSettings.user.uid);\n this.$store.dispatch('User/getUser');\n }\n },\n render: function render(h) {\n return h(_UserBlock.default, {\n props: props\n });\n }\n }).$mount('#' + mount_point); // console.log('initVUserBlock', _v_user_block);\n }\n\n function initVHeaderMenu() {\n // console.log('initVHeaderMenu');\n // adding vuejs attributes has it wont work on twig template (see menu--header.html.twig)\n // not working : String contains an invalid character\n // document.querySelectorAll(`#block-header a`).forEach(link => {\n // console.log(link);\n // link.setAttribute('@click.prevent', 'onclick')\n // });\n _v_header_menu = new _vue.default({\n store: _store.default,\n router: _route.default,\n el: \"#block-header\",\n methods: {\n onclick: function onclick(event) {\n // console.log(\"Clicked on header menu link\", event);\n var href = event.target.getAttribute('href'); // let title = event.target.innerText;\n // console.log(\"Clicked on header menu link : href\", href);\n\n this.$router.push(href); // replaced by router.beforeEach\n // this.$store.commit('Common/setPagetitle', title)\n }\n }\n });\n }\n\n function initVMainContent() {\n var id = \"main-content\";\n var $main_content = document.querySelector('#' + id); // console.log('main-content', $main_content);\n\n var main_html = $main_content.innerHTML;\n _v_main_content = new _vue.default({\n store: _store.default,\n render: function render(h) {\n return h(_MainContent.default, {\n props: {\n id: id,\n html: main_html,\n isfront: drupalSettings.path.isFront\n }\n });\n }\n }).$mount('#' + id);\n }\n\n function initVSearchBlock() {\n // console.log('initVSearchBlock');\n var id = \"block-materiosapisearchblock\";\n var $search_block = document.getElementById(id);\n var formhtml = null;\n\n if ($search_block) {\n // get the search form html to pass it as template to the vue\n // we gain display speed vs async downloaded data\n formhtml = $search_block.innerHTML;\n } else {\n // else create the empty block to fill it later with async data\n $search_block = document.createElement('div');\n $search_block.setAttribute('id', id); // TODO: get region by REST\n\n var $region = document.getElementById('header-bottom');\n $region.appendChild($search_block);\n } // in any case create the vue\n\n\n _v_search_block = new _vue.default({\n store: _store.default,\n render: function render(h) {\n return h(_SearchBlock.default, {\n props: {\n blockid: id,\n formhtml: formhtml\n }\n });\n }\n }).$mount('#' + id);\n }\n\n init();\n }; // end MaterioTheme()\n\n\n var materiotheme = new MaterioTheme();\n})(Drupal, drupalSettings, drupalDecoupled);\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/assets/scripts/main.js?");
+eval("\n\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.js\"));\n\nvar _vueInfiniteLoading = _interopRequireDefault(__webpack_require__(/*! vue-infinite-loading */ \"./node_modules/vue-infinite-loading/dist/vue-infinite-loading.js\"));\n\nvar _vueCoolLightbox = _interopRequireDefault(__webpack_require__(/*! vue-cool-lightbox */ \"./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.esm.js\"));\n\nvar _store = _interopRequireDefault(__webpack_require__(/*! vuejs/store */ \"./web/themes/custom/materiotheme/vuejs/store/index.js\"));\n\nvar _route = _interopRequireDefault(__webpack_require__(/*! vuejs/route */ \"./web/themes/custom/materiotheme/vuejs/route/index.js\"));\n\nvar _UserBlock = _interopRequireDefault(__webpack_require__(/*! vuejs/components/Block/UserBlock */ \"./web/themes/custom/materiotheme/vuejs/components/Block/UserBlock.vue\"));\n\nvar _MainContent = _interopRequireDefault(__webpack_require__(/*! vuejs/components/Content/MainContent */ \"./web/themes/custom/materiotheme/vuejs/components/Content/MainContent.vue\"));\n\nvar _SearchBlock = _interopRequireDefault(__webpack_require__(/*! vuejs/components/Block/SearchBlock */ \"./web/themes/custom/materiotheme/vuejs/components/Block/SearchBlock.vue\"));\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\n__webpack_require__(/*! theme/assets/styles/main.scss */ \"./web/themes/custom/materiotheme/assets/styles/main.scss\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n_vue.default.use(_vueInfiniteLoading.default, {\n props: {\n spinner: 'spiral' // slots.noMore: ''\n\n } // system: {\n // throttleLimit: 50,\n // /* other settings need to configure */\n // }\n\n}); // import vueVimeoPlayer from 'vue-vimeo-player'\n// Vue.use(vueVimeoPlayer)\n// import VueYouTubeEmbed from 'vue-youtube-embed'\n// Vue.use(VueYouTubeEmbed)\n\n\n_vue.default.use(_vueCoolLightbox.default);\n\n(function (Drupal, drupalSettings, drupalDecoupled) {\n var MaterioTheme = function MaterioTheme() {\n var _v_sitebranding_block, _v_user_block, _v_header_menu, _v_pagetitle_block, _v_search_block, _v_main_content;\n\n var _is_front = drupalSettings.path.isFront;\n console.log('drupalSettings', drupalSettings); // ___ _ _\n // |_ _|_ _ (_) |_\n // | || ' \\| | _|\n // |___|_||_|_|\\__|\n\n function init() {\n console.log(\"MaterioTheme init()\");\n initVues();\n }\n\n function checkNoVuePages() {\n // return drupalDecoupled.sys_path != '/cart'\n // && drupalDecoupled.sys_path.indexOf('checkout') != 1;\n if (drupalDecoupled.route_name.indexOf('commerce') == -1 && drupalDecoupled.route_name.indexOf('flagging_collection') == -1 && drupalDecoupled.route_name.indexOf('user') == -1) {\n return false;\n } else {\n return true;\n }\n }\n\n function initVues() {\n // only launch views if we are not in commerce pages\n if (!checkNoVuePages()) {\n initVRouter();\n initVSiteBrandingBlock();\n initVPagetitleBlock();\n initVHeaderMenu();\n initVMainContent();\n initVSearchBlock();\n }\n\n initVUserBlock();\n }\n\n function initVRouter() {\n // we need this to update the title and body classes while using history nav\n _route.default.beforeEach(function (to, from, next) {\n var _document$querySelect, _document$querySelect2;\n\n // console.log('router beforeEach to ', to);\n // commit new title to store\n var title = null;\n\n switch (to.name) {\n case 'home':\n title = null;\n break;\n\n case 'article':\n title = false;\n break;\n\n default:\n title = to.name;\n }\n\n if (title !== false) {\n _store.default.commit('Common/setPagetitle', title);\n } // remove all path related body classes\n\n\n var body_classes = document.querySelector('body').classList;\n var classes_to_rm = [];\n\n for (var i = 0; i < body_classes.length; i++) {\n if (body_classes[i].startsWith('path-')) {\n classes_to_rm.push(body_classes[i]);\n }\n }\n\n (_document$querySelect = document.querySelector('body').classList).remove.apply(_document$querySelect, classes_to_rm); // add new path classes to body\n\n\n var classes = [];\n\n if (to.path == '/') {\n classes.push('path-home');\n } else {\n var path_parts = to.path.replace(/^\\//, '').split('/'); // TODO: remove language relative prefix from path classes (fr, en, etc)\n\n for (var i = 0; i < path_parts.length; i++) {\n if (i == 0) {\n var c = \"path-\" + path_parts[i];\n } else if (path_parts[i] !== '') {\n var c = classes[i - 1] + '-' + path_parts[i];\n }\n\n classes.push(c);\n }\n }\n\n (_document$querySelect2 = document.querySelector('body').classList).add.apply(_document$querySelect2, classes); // trigger router\n\n\n next();\n });\n }\n\n function initVSiteBrandingBlock() {\n _v_sitebranding_block = new _vue.default({\n store: _store.default,\n router: _route.default,\n el: '#block-sitebranding',\n methods: {\n onclick: function onclick(event) {\n // console.log(\"Clicked on logo event\", event);\n var href = event.target.getAttribute('href'); // console.log(\"Clicked on logo href\", href);\n\n this.$router.push(href); // replaced by router.beforeEach\n // this.$store.commit('Common/setPagetitle', null)\n }\n }\n });\n }\n\n function initVPagetitleBlock() {\n var $blk = document.querySelector('#block-pagetitle');\n var $h2 = $blk.querySelector('h2'); // get the loaded pagetitle\n\n var title = $h2.innerText; // if not front recorde the loaded pagetitle in store\n\n if (!_is_front) {\n _store.default.commit('Common/setPagetitle', title);\n } // replace in template the pagetitle by vue binding\n\n\n $h2.innerText = '{{ pagetitle }}'; // create the vue\n\n _v_pagetitle_block = new _vue.default({\n store: _store.default,\n router: _route.default,\n el: $blk,\n computed: _objectSpread({}, (0, _vuex.mapState)({\n pagetitle: function pagetitle(state) {\n return state.Common.pagetitle;\n }\n }))\n });\n }\n\n function initVUserBlock() {\n var mount_point = drupalSettings.user.uid !== 0 ? 'block-userblock' : 'block-userlogin';\n var props = {\n title: \"\",\n loginblock: \"\"\n };\n\n switch (mount_point) {\n case 'block-userlogin':\n var $block = document.getElementById(mount_point);\n console.log('initVUserBlock login form html', $block);\n props.loginblock = $block.outerHTML.trim();\n break;\n\n case 'block-userblock':\n default:\n break;\n }\n\n _v_user_block = new _vue.default({\n store: _store.default,\n // computed: {\n // ...mapState({\n // isloggedin: state => state.User.isloggedin\n // })\n // },\n created: function created() {\n // if already loggedin, call store.user to get the user infos\n if (drupalSettings.user.uid !== 0) {\n this.$store.commit('User/setUid', drupalSettings.user.uid);\n this.$store.dispatch('User/getUser');\n }\n },\n render: function render(h) {\n return h(_UserBlock.default, {\n props: props\n });\n }\n }).$mount('#' + mount_point); // console.log('initVUserBlock', _v_user_block);\n }\n\n function initVHeaderMenu() {\n // console.log('initVHeaderMenu');\n // adding vuejs attributes has it wont work on twig template (see menu--header.html.twig)\n // not working : String contains an invalid character\n // document.querySelectorAll(`#block-header a`).forEach(link => {\n // console.log(link);\n // link.setAttribute('@click.prevent', 'onclick')\n // });\n _v_header_menu = new _vue.default({\n store: _store.default,\n router: _route.default,\n el: \"#block-header\",\n methods: {\n onclick: function onclick(event) {\n // console.log(\"Clicked on header menu link\", event);\n var href = event.target.getAttribute('href'); // let title = event.target.innerText;\n // console.log(\"Clicked on header menu link : href\", href);\n\n this.$router.push(href); // replaced by router.beforeEach\n // this.$store.commit('Common/setPagetitle', title)\n }\n }\n });\n }\n\n function initVMainContent() {\n var id = \"main-content\";\n var $main_content = document.querySelector('#' + id); // console.log('main-content', $main_content);\n\n var main_html = $main_content.innerHTML;\n _v_main_content = new _vue.default({\n store: _store.default,\n render: function render(h) {\n return h(_MainContent.default, {\n props: {\n id: id,\n html: main_html,\n isfront: drupalSettings.path.isFront\n }\n });\n }\n }).$mount('#' + id);\n }\n\n function initVSearchBlock() {\n // console.log('initVSearchBlock');\n var id = \"block-materiosapisearchblock\";\n var $search_block = document.getElementById(id);\n var formhtml = null;\n\n if ($search_block) {\n // get the search form html to pass it as template to the vue\n // we gain display speed vs async downloaded data\n formhtml = $search_block.innerHTML;\n } else {\n // else create the empty block to fill it later with async data\n $search_block = document.createElement('div');\n $search_block.setAttribute('id', id); // TODO: get region by REST\n\n var $region = document.getElementById('header-bottom');\n $region.appendChild($search_block);\n } // in any case create the vue\n\n\n _v_search_block = new _vue.default({\n store: _store.default,\n render: function render(h) {\n return h(_SearchBlock.default, {\n props: {\n blockid: id,\n formhtml: formhtml\n }\n });\n }\n }).$mount('#' + id);\n }\n\n init();\n }; // end MaterioTheme()\n\n\n var materiotheme = new MaterioTheme();\n})(Drupal, drupalSettings, drupalDecoupled);\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/assets/scripts/main.js?");
/***/ }),
@@ -1763,6 +1787,42 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
/***/ }),
+/***/ "./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue":
+/*!****************************************************************************!*\
+ !*** ./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue ***!
+ \****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _UserFlags_vue_vue_type_template_id_0e1971fa_scoped_true_lang_html___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UserFlags.vue?vue&type=template&id=0e1971fa&scoped=true&lang=html& */ \"./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=template&id=0e1971fa&scoped=true&lang=html&\");\n/* harmony import */ var _UserFlags_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UserFlags.vue?vue&type=script&lang=js& */ \"./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _UserFlags_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _UserFlags_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _UserFlags_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _UserFlags_vue_vue_type_template_id_0e1971fa_scoped_true_lang_html___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _UserFlags_vue_vue_type_template_id_0e1971fa_scoped_true_lang_html___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"0e1971fa\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?");
+
+/***/ }),
+
+/***/ "./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=script&lang=js&":
+/*!*****************************************************************************************************!*\
+ !*** ./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=script&lang=js& ***!
+ \*****************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UserFlags_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../node_modules/babel-loader/lib!../../../../../../../node_modules/vue-loader/lib??vue-loader-options!./UserFlags.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UserFlags_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UserFlags_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UserFlags_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UserFlags_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UserFlags_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?");
+
+/***/ }),
+
+/***/ "./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=template&id=0e1971fa&scoped=true&lang=html&":
+/*!*********************************************************************************************************************************!*\
+ !*** ./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=template&id=0e1971fa&scoped=true&lang=html& ***!
+ \*********************************************************************************************************************************/
+/*! exports provided: render, staticRenderFns */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserFlags_vue_vue_type_template_id_0e1971fa_scoped_true_lang_html___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib??vue-loader-options!./UserFlags.vue?vue&type=template&id=0e1971fa&scoped=true&lang=html& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?vue&type=template&id=0e1971fa&scoped=true&lang=html&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserFlags_vue_vue_type_template_id_0e1971fa_scoped_true_lang_html___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserFlags_vue_vue_type_template_id_0e1971fa_scoped_true_lang_html___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?");
+
+/***/ }),
+
/***/ "./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue":
/*!****************************************************************************!*\
!*** ./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue ***!
@@ -1879,7 +1939,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _jsonAxios = __webpack_require__(/*! vuejs/api/json-axios */ \"./web/themes/custom/materiotheme/vuejs/api/json-axios.js\");\n\nvar _maAxios = __webpack_require__(/*! vuejs/api/ma-axios */ \"./web/themes/custom/materiotheme/vuejs/api/ma-axios.js\");\n\nvar _querystring = _interopRequireDefault(__webpack_require__(/*! querystring */ \"./node_modules/querystring-es3/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n namespaced: true,\n // initial state\n state: {\n keys: \"\",\n term: \"\",\n uuids: [],\n items: [],\n offset: 0,\n limit: 15,\n infos: null,\n count: 0,\n // infinteState will come from vue-infinite-loading plugin\n // implemented in vuejs/components/Content/Base.vue\n infiniteLoadingState: null\n },\n // getters\n getters: {},\n // mutations\n mutations: {\n setUuids: function setUuids(state, uuids) {\n state.uuids = state.uuids.concat(uuids);\n },\n resetUuids: function resetUuids(state) {\n state.uuids = [];\n },\n setItems: function setItems(state, items) {\n state.items = state.items.concat(items);\n },\n resetItems: function resetItems(state) {\n state.items = [];\n },\n setKeys: function setKeys(state, keys) {\n state.keys = keys;\n },\n setTerm: function setTerm(state, term) {\n state.term = term;\n },\n setInfos: function setInfos(state, infos) {\n state.infos = infos;\n },\n setCount: function setCount(state, count) {\n state.count = count;\n },\n resetOffset: function resetOffset(state) {\n state.offset = 0;\n },\n incrementOffset: function incrementOffset(state) {\n state.offset += state.limit;\n },\n setInfiniteState: function setInfiniteState(state, infiniteLoadingstate) {\n state.infiniteLoadingState = infiniteLoadingstate;\n }\n },\n // actions\n actions: {\n newSearch: function newSearch(_ref) {\n var dispatch = _ref.dispatch,\n commit = _ref.commit,\n state = _ref.state;\n console.log('Search newSearch');\n commit('resetUuids');\n commit('resetItems');\n commit('resetOffset');\n this.commit('Common/setPagetitle', state.keys);\n dispatch('getResults');\n },\n nextPage: function nextPage(_ref2, $infiniteLoadingstate) {\n var dispatch = _ref2.dispatch,\n commit = _ref2.commit,\n state = _ref2.state;\n console.log(\"Search nextPage\", $infiniteLoadingstate);\n commit('incrementOffset');\n commit('setInfiniteState', $infiniteLoadingstate);\n dispatch('getResults');\n },\n getResults: function getResults(_ref3) {\n var dispatch = _ref3.dispatch,\n commit = _ref3.commit,\n state = _ref3.state;\n var params = {\n keys: state.keys,\n term: state.term,\n offset: state.offset,\n limit: state.limit\n }; // console.log('Search getResults params', params);\n\n var q = _querystring.default.stringify(params);\n\n return _maAxios.MA.get(\"/materio_sapi/getresults?\" + q).then(function (_ref4) {\n var data = _ref4.data;\n console.log('search MA getresults data', data); // commit('setItems', data.items)\n\n commit('setInfos', data.infos);\n commit('setCount', data.count);\n commit('setUuids', data.uuids);\n dispatch('getItems', data.uuids);\n }).catch(function (error) {\n console.warn('Issue with getResults', error);\n Promise.reject(error);\n });\n },\n getItems: function getItems(_ref5, uuids) {\n var dispatch = _ref5.dispatch,\n commit = _ref5.commit,\n state = _ref5.state;\n var params = {\n // include: 'images', // no needs to include thanks to consumers_image_styles module\n 'filter[uuids-groupe][group][conjunction]': 'OR'\n };\n\n for (var i = 0; i < uuids.length; i++) {\n var uuid = uuids[i];\n params[\"filter[\".concat(uuid, \"][condition][path]\")] = 'id';\n params[\"filter[\".concat(uuid, \"][condition][value]\")] = uuid;\n params[\"filter[\".concat(uuid, \"][condition][operator]\")] = '=';\n params[\"filter[\".concat(uuid, \"][condition][memberOf]\")] = 'uuids-groupe';\n } // console.log('search JSONAPI params', params);\n\n\n var q = _querystring.default.stringify(params);\n\n return _jsonAxios.JSONAPI.get('node/materiau?' + q).then(function (_ref6) {\n var data = _ref6.data;\n console.log('search getItems data', data);\n dispatch('parseItems', {\n data: data.data,\n uuids: uuids\n }); // commit('setItems', data.items)\n }).catch(function (error) {\n console.warn('Issue with getItems', error);\n Promise.reject(error);\n });\n },\n parseItems: function parseItems(_ref7, _ref8) {\n var dispatch = _ref7.dispatch,\n commit = _ref7.commit,\n state = _ref7.state;\n var data = _ref8.data,\n uuids = _ref8.uuids;\n // data comes from jsonapi query\n // uuids comes from solr search query (we loop from uuids to conserve the search results order)\n console.log('search parseItems data, uuids', data, uuids);\n var items = []; // for (var i = 0; i < data.length; i++) {\n\n var _loop = function _loop() {\n var uuid = uuids[i]; // https://stackoverflow.com/questions/11258077/how-to-find-index-of-an-object-by-key-and-value-in-an-javascript-array\n\n var item_index = data.findIndex(function (p) {\n return p.id == uuid;\n }); // console.log('item_index', item_index);\n\n if (item_index == -1) return \"continue\";\n var item_src = data[item_index];\n var attrs = item_src.attributes;\n var relations = item_src.relationships; // get field values\n\n var item = {\n uuid: uuid,\n title: attrs.title,\n field_short_description: attrs.field_short_description,\n body: attrs.body,\n field_reference: attrs.field_reference\n }; // get images included values\n\n var img_src = relations.images.data;\n console.log('img_src', img_src); // this is a temporary deactivation of images\n // img_src = [];\n\n item.images = [];\n\n for (j = 0; j < img_src.length; j++) {\n if (img_src[j].meta.imageDerivatives) {\n item.images.push({\n title: img_src[j].meta.title,\n // meta.imageDerivatives.style.href link is provided by drupal consumers_image_styles module\n // BUG: missing all image derivative but first\n url: img_src[j].meta.imageDerivatives.links.card_medium.href\n });\n } else {\n console.warn('missing image derivative ' + j + '/' + img_src.length + ' for ' + attrs.title);\n }\n }\n\n items.push(item);\n };\n\n for (var i = 0; i < uuids.length; i++) {\n var j;\n\n var _ret = _loop();\n\n if (_ret === \"continue\") continue;\n }\n\n console.log('items', items);\n commit('setItems', items);\n\n if (state.infiniteLoadingState) {\n if (state.offset + state.limit > state.count) {\n console.log('Search infinite completed'); // tell to vue-infinite-loading plugin that there si no new page\n\n state.infiniteLoadingState.complete();\n } else {\n console.log('Search infinite loaded'); // tell to vue-infinite-loading plugin that newpage is loaded\n\n state.infiniteLoadingState.loaded();\n }\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/store/modules/search.js?");
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _restAxios = __webpack_require__(/*! vuejs/api/rest-axios */ \"./web/themes/custom/materiotheme/vuejs/api/rest-axios.js\");\n\nvar _jsonAxios = __webpack_require__(/*! vuejs/api/json-axios */ \"./web/themes/custom/materiotheme/vuejs/api/json-axios.js\");\n\nvar _maAxios = __webpack_require__(/*! vuejs/api/ma-axios */ \"./web/themes/custom/materiotheme/vuejs/api/ma-axios.js\");\n\nvar _querystring = _interopRequireDefault(__webpack_require__(/*! querystring */ \"./node_modules/querystring-es3/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n namespaced: true,\n // initial state\n state: {\n keys: \"\",\n term: \"\",\n uuids: [],\n items: [],\n offset: 0,\n limit: 15,\n infos: null,\n count: 0,\n // infinteState will come from vue-infinite-loading plugin\n // implemented in vuejs/components/Content/Base.vue\n infiniteLoadingState: null\n },\n // getters\n getters: {},\n // mutations\n mutations: {\n setUuids: function setUuids(state, uuids) {\n state.uuids = state.uuids.concat(uuids);\n },\n resetUuids: function resetUuids(state) {\n state.uuids = [];\n },\n setItems: function setItems(state, items) {\n state.items = state.items.concat(items);\n },\n resetItems: function resetItems(state) {\n state.items = [];\n },\n setKeys: function setKeys(state, keys) {\n state.keys = keys;\n },\n setTerm: function setTerm(state, term) {\n state.term = term;\n },\n setInfos: function setInfos(state, infos) {\n state.infos = infos;\n },\n setCount: function setCount(state, count) {\n state.count = count;\n },\n resetOffset: function resetOffset(state) {\n state.offset = 0;\n },\n incrementOffset: function incrementOffset(state) {\n state.offset += state.limit;\n },\n setInfiniteState: function setInfiniteState(state, infiniteLoadingstate) {\n state.infiniteLoadingState = infiniteLoadingstate;\n }\n },\n // actions\n actions: {\n newSearch: function newSearch(_ref) {\n var dispatch = _ref.dispatch,\n commit = _ref.commit,\n state = _ref.state;\n console.log('Search newSearch');\n commit('resetUuids');\n commit('resetItems');\n commit('resetOffset');\n this.commit('Common/setPagetitle', state.keys);\n dispatch('getResults');\n },\n nextPage: function nextPage(_ref2, $infiniteLoadingstate) {\n var dispatch = _ref2.dispatch,\n commit = _ref2.commit,\n state = _ref2.state;\n console.log(\"Search nextPage\", $infiniteLoadingstate);\n commit('incrementOffset');\n commit('setInfiniteState', $infiniteLoadingstate);\n dispatch('getResults');\n },\n getResults: function getResults(_ref3) {\n var dispatch = _ref3.dispatch,\n commit = _ref3.commit,\n state = _ref3.state;\n var params = {\n keys: state.keys,\n term: state.term,\n offset: state.offset,\n limit: state.limit\n }; // console.log('Search getResults params', params);\n\n var q = _querystring.default.stringify(params);\n\n return _maAxios.MA.get(\"/materio_sapi/getresults?\" + q).then(function (_ref4) {\n var data = _ref4.data;\n console.log('search MA getresults data', data); // commit('setItems', data.items)\n\n commit('setInfos', data.infos);\n commit('setCount', data.count);\n commit('setUuids', data.uuids);\n dispatch('getItems', data.uuids);\n }).catch(function (error) {\n console.warn('Issue with getResults', error);\n Promise.reject(error);\n });\n },\n getItems: function getItems(_ref5, uuids) {\n var dispatch = _ref5.dispatch,\n commit = _ref5.commit,\n state = _ref5.state;\n var params = {\n // include: 'images', // no needs to include thanks to consumers_image_styles module\n 'filter[uuids-groupe][group][conjunction]': 'OR'\n };\n\n for (var i = 0; i < uuids.length; i++) {\n var uuid = uuids[i];\n params[\"filter[\".concat(uuid, \"][condition][path]\")] = 'id';\n params[\"filter[\".concat(uuid, \"][condition][value]\")] = uuid;\n params[\"filter[\".concat(uuid, \"][condition][operator]\")] = '=';\n params[\"filter[\".concat(uuid, \"][condition][memberOf]\")] = 'uuids-groupe';\n } // console.log('search JSONAPI params', params);\n\n\n var q = _querystring.default.stringify(params);\n\n return _jsonAxios.JSONAPI.get('node/materiau?' + q).then(function (_ref6) {\n var data = _ref6.data;\n console.log('search getItems data', data);\n dispatch('parseItems', {\n data: data.data,\n uuids: uuids\n }); // commit('setItems', data.items)\n }).catch(function (error) {\n console.warn('Issue with getItems', error);\n Promise.reject(error);\n });\n },\n parseItems: function parseItems(_ref7, _ref8) {\n var dispatch = _ref7.dispatch,\n commit = _ref7.commit,\n state = _ref7.state;\n var data = _ref8.data,\n uuids = _ref8.uuids;\n // data comes from jsonapi query\n // uuids comes from solr search query (we loop from uuids to conserve the search results order)\n console.log('search parseItems data, uuids', data, uuids);\n var items = []; // for (var i = 0; i < data.length; i++) {\n\n var _loop = function _loop() {\n var uuid = uuids[i]; // https://stackoverflow.com/questions/11258077/how-to-find-index-of-an-object-by-key-and-value-in-an-javascript-array\n\n var item_index = data.findIndex(function (p) {\n return p.id == uuid;\n }); // console.log('item_index', item_index);\n\n if (item_index == -1) return \"continue\";\n var item_src = data[item_index];\n var attrs = item_src.attributes;\n var relations = item_src.relationships; // get field values\n\n var item = {\n uuid: uuid,\n title: attrs.title,\n field_short_description: attrs.field_short_description,\n body: attrs.body,\n field_reference: attrs.field_reference\n }; // get images included values\n\n var img_src = relations.images.data;\n console.log('img_src', img_src); // this is a temporary deactivation of images\n // img_src = [];\n\n item.images = [];\n\n for (j = 0; j < img_src.length; j++) {\n if (img_src[j].meta.imageDerivatives) {\n item.images.push({\n title: img_src[j].meta.title,\n // meta.imageDerivatives.style.href link is provided by drupal consumers_image_styles module\n // BUG: missing all image derivative but first\n url: img_src[j].meta.imageDerivatives.links.card_medium.href\n });\n } else {\n console.warn('missing image derivative ' + j + '/' + img_src.length + ' for ' + attrs.title);\n }\n }\n\n items.push(item);\n };\n\n for (var i = 0; i < uuids.length; i++) {\n var j;\n\n var _ret = _loop();\n\n if (_ret === \"continue\") continue;\n }\n\n console.log('items', items);\n commit('setItems', items);\n\n if (state.infiniteLoadingState) {\n if (state.offset + state.limit > state.count) {\n console.log('Search infinite completed'); // tell to vue-infinite-loading plugin that there si no new page\n\n state.infiniteLoadingState.complete();\n } else {\n console.log('Search infinite loaded'); // tell to vue-infinite-loading plugin that newpage is loaded\n\n state.infiniteLoadingState.loaded();\n }\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/store/modules/search.js?");
/***/ }),
@@ -1903,7 +1963,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _restAxios = __webpack_require__(/*! vuejs/api/rest-axios */ \"./web/themes/custom/materiotheme/vuejs/api/rest-axios.js\");\n\nvar _jsonAxios = __webpack_require__(/*! vuejs/api/json-axios */ \"./web/themes/custom/materiotheme/vuejs/api/json-axios.js\");\n\nvar _querystring = _interopRequireDefault(__webpack_require__(/*! querystring */ \"./node_modules/querystring-es3/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n namespaced: true,\n // initial state\n state: {\n uid: null,\n // username: '',\n mail: '',\n token: null,\n csrftoken: null,\n logout_token: null,\n isloggedin: false,\n isAdmin: false,\n isAdherent: false,\n canSearch: false,\n roles: []\n },\n // getters\n getters: {},\n // mutations\n mutations: {\n SetCsrftoken: function SetCsrftoken(state, token) {\n state.csrftoken = token;\n },\n setToken: function setToken(state, data) {\n state.uid = data.current_user.uid; // state.username = data.username\n\n state.mail = data.current_user.mail;\n state.token = data.csrf_token;\n state.isloggedin = true;\n state.logout_token = data.logout_token;\n },\n setUid: function setUid(state, uid) {\n state.uid = uid;\n state.isloggedin = true;\n },\n setUser: function setUser(state, data) {\n state.mail = data.mail[0].value;\n state.uuid = data.uuid[0].value;\n },\n setRoles: function setRoles(state, roles) {\n console.log(\"User setRoles\", roles);\n state.roles = [];\n\n for (var i = 0; i < roles.length; i++) {\n state.roles.push(roles[i].target_id);\n } // check if admin\n\n\n if (state.roles.indexOf('admin') != -1 || state.roles.indexOf('root') != -1) {\n // console.log('is admin');\n state.isAdmin = true;\n } // check if has access to search\n\n\n if (state.roles.indexOf('adherent') != -1) {\n // console.log('is admin');\n state.canSearch = true;\n state.isAdherent = true;\n }\n },\n setLoggedOut: function setLoggedOut(state) {\n console.log(\"setLoggedOut state\", state);\n state.uid = null;\n state.mail = '';\n state.token = null;\n state.isloggedin = false;\n state.logout_token = null;\n\n if (state.isAdmin) {\n // TODO: what if on a page where login is needed (as commerce checkout and cart)\n window.location.reload(true);\n }\n\n state.asAdmin = false;\n state.canSearch = false;\n }\n },\n // actions\n actions: {\n userRegister: function userRegister(_ref, credentials) {\n var dispatch = _ref.dispatch,\n commit = _ref.commit,\n state = _ref.state;\n return new Promise(function (resolve, reject) {\n _restAxios.REST.get('/session/token').then(function (_ref2) {\n var token = _ref2.token;\n commit('SetCsrftoken', token);\n\n _restAxios.REST.post('/user/register?_format=json', credentials, {\n 'X-CSRF-Token': state.csrftoken\n }).then(function (_ref3) {\n var data = _ref3.data;\n console.log('user REST registered', data);\n dispatch('userLogin', credentials).then(function () {\n resolve();\n });\n }).catch(function (error) {\n console.warn('Issue with register', error);\n Promise.reject(error);\n });\n });\n });\n },\n userLogin: function userLogin(_ref4, credentials) {\n var dispatch = _ref4.dispatch,\n commit = _ref4.commit,\n state = _ref4.state;\n return new Promise(function (resolve, reject) {\n dispatch('getToken', credentials).then(function () {\n dispatch('getUser').then(function (userdata) {\n console.log('User Loggedin');\n\n if (state.isAdmin) {\n window.location.reload(true);\n }\n\n resolve();\n });\n });\n });\n },\n getToken: function getToken(_ref5, credentials) {\n var dispatch = _ref5.dispatch,\n commit = _ref5.commit,\n state = _ref5.state;\n return _restAxios.REST.post('/user/login?_format=json', credentials).then(function (_ref6) {\n var data = _ref6.data;\n console.log('user REST getToken data', data);\n commit('setToken', data);\n }).catch(function (error) {\n console.warn('Issue with getToken', error);\n Promise.reject(error);\n });\n },\n getUser: function getUser(_ref7) {\n var dispatch = _ref7.dispatch,\n commit = _ref7.commit,\n state = _ref7.state;\n var params = {\n token: state.token\n };\n return _restAxios.REST.get(\"/user/\".concat(state.uid, \"?_format=json\"), params).then(function (_ref8) {\n var data = _ref8.data;\n console.log('user REST getUser data', data);\n console.log('roles', data['roles']);\n commit('setUser', data);\n\n if (data.roles) {\n commit('setRoles', data.roles);\n }\n }).catch(function (error) {\n console.warn('Issue with getUser', error);\n Promise.reject(error);\n });\n },\n userLogout: function userLogout(_ref9) {\n var commit = _ref9.commit,\n state = _ref9.state;\n\n var credentials = _querystring.default.stringify({\n token: state.token\n });\n\n _restAxios.REST.post('/user/logout', credentials).then(function (resp) {\n console.log('userLogout resp', resp);\n commit('setLoggedOut');\n }).catch(function (error) {\n console.warn('Issue with logout', error);\n Promise.reject(error);\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/store/modules/user.js?");
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _restAxios = __webpack_require__(/*! vuejs/api/rest-axios */ \"./web/themes/custom/materiotheme/vuejs/api/rest-axios.js\");\n\nvar _maAxios = __webpack_require__(/*! vuejs/api/ma-axios */ \"./web/themes/custom/materiotheme/vuejs/api/ma-axios.js\");\n\nvar _querystring = _interopRequireDefault(__webpack_require__(/*! querystring */ \"./node_modules/querystring-es3/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// import { JSONAPI } from 'vuejs/api/json-axios';\nvar _default = {\n namespaced: true,\n // initial state\n state: {\n uid: null,\n // username: '',\n mail: \"\",\n token: null,\n csrftoken: null,\n logout_token: null,\n isloggedin: false,\n isAdmin: false,\n isAdherent: false,\n canSearch: false,\n roles: [],\n flags: false\n },\n // getters\n getters: {},\n // mutations\n mutations: {\n SetCsrftoken: function SetCsrftoken(state, token) {\n state.csrftoken = token;\n },\n setToken: function setToken(state, data) {\n state.uid = data.current_user.uid; // state.username = data.username;\n\n state.mail = data.current_user.mail;\n state.token = data.csrf_token;\n state.isloggedin = true;\n state.logout_token = data.logout_token;\n },\n setUid: function setUid(state, uid) {\n state.uid = uid;\n state.isloggedin = true;\n },\n setUser: function setUser(state, data) {\n state.mail = data.mail[0].value;\n state.uuid = data.uuid[0].value;\n },\n setRoles: function setRoles(state, roles) {\n console.log(\"User setRoles\", roles);\n state.roles = [];\n\n for (var i = 0; i < roles.length; i++) {\n state.roles.push(roles[i].target_id);\n } // check if admin\n\n\n if (state.roles.indexOf(\"admin\") !== -1 || state.roles.indexOf(\"root\") !== -1) {\n // console.log('is admin');\n state.isAdmin = true;\n } // check if has access to search\n\n\n if (state.roles.indexOf(\"adherent\") !== -1) {\n // console.log('is admin');\n state.canSearch = true;\n state.isAdherent = true;\n }\n },\n setLoggedOut: function setLoggedOut(state) {\n console.log(\"setLoggedOut state\", state);\n state.uid = null;\n state.mail = \"\";\n state.token = null;\n state.isloggedin = false;\n state.logout_token = null;\n\n if (state.isAdmin) {\n // TODO: what if on a page where login is needed (as commerce checkout and cart)\n window.location.reload(true);\n }\n\n state.asAdmin = false;\n state.canSearch = false;\n },\n setFlags: function setFlags(state, flags) {\n console.log(\"User setFlags\", flags);\n state.flags = flags;\n }\n },\n // actions\n actions: {\n userRegister: function userRegister(_ref, credentials) {\n var dispatch = _ref.dispatch,\n commit = _ref.commit,\n state = _ref.state;\n return new Promise(function (resolve, reject) {\n _restAxios.REST.get(\"/session/token\").then(function (_ref2) {\n var token = _ref2.token;\n commit(\"SetCsrftoken\", token);\n\n _restAxios.REST.post(\"/user/register?_format=json\", credentials, {\n \"X-CSRF-Token\": state.csrftoken\n }).then(function (_ref3) {\n var data = _ref3.data;\n console.log(\"user REST registered\", data);\n dispatch(\"userLogin\", credentials).then(function () {\n resolve();\n });\n }).catch(function (error) {\n console.warn(\"Issue with register\", error);\n Promise.reject(error);\n });\n });\n });\n },\n userLogin: function userLogin(_ref4, credentials) {\n var dispatch = _ref4.dispatch,\n commit = _ref4.commit,\n state = _ref4.state;\n return new Promise(function (resolve, reject) {\n dispatch(\"getToken\", credentials).then(function () {\n dispatch(\"getUser\").then(function (userdata) {\n console.log(\"User Loggedin\");\n\n if (state.isAdmin) {\n window.location.reload(true);\n }\n\n resolve();\n });\n });\n });\n },\n getToken: function getToken(_ref5, credentials) {\n var dispatch = _ref5.dispatch,\n commit = _ref5.commit,\n state = _ref5.state;\n return _restAxios.REST.post(\"/user/login?_format=json\", credentials).then(function (_ref6) {\n var data = _ref6.data;\n console.log(\"user REST getToken data\", data);\n commit(\"setToken\", data);\n }).catch(function (error) {\n console.warn(\"Issue with getToken\", error);\n Promise.reject(error);\n });\n },\n getUser: function getUser(_ref7) {\n var dispatch = _ref7.dispatch,\n commit = _ref7.commit,\n state = _ref7.state;\n var params = {\n token: state.token\n };\n return _restAxios.REST.get(\"/user/\".concat(state.uid, \"?_format=json\"), params).then(function (_ref8) {\n var data = _ref8.data;\n console.log(\"user REST getUser data\", data);\n console.log(\"roles\", data.roles);\n commit(\"setUser\", data);\n\n if (data.roles) {\n commit(\"setRoles\", data.roles);\n }\n\n dispatch(\"getUserFlags\");\n }).catch(function (error) {\n console.warn(\"Issue with getUser\", error);\n Promise.reject(error);\n });\n },\n getUserFlags: function getUserFlags(_ref9) {\n var dispatch = _ref9.dispatch,\n commit = _ref9.commit,\n state = _ref9.state;\n // flags\n // REST.get('/flagging_collection/1?_format=json')\n // .then(( data ) => {\n // console.log('TEST FLAG REST data', data)\n // })\n // .catch(error => {\n // console.warn('Issue USER TEST FLAG REST', error)\n // Promise.reject(error)\n // })\n return _maAxios.MA.get(\"materio_flag/user_flagging_collections\").then(function (_ref10) {\n var data = _ref10.data;\n console.log(\"user MA getFlags data\", data);\n commit(\"setFlags\", data);\n }).catch(function (error) {\n console.warn(\"Issue USER MA getFlags\", error);\n Promise.reject(error);\n });\n },\n createFlag: function createFlag(_ref11) {\n var dispatch = _ref11.dispatch,\n commit = _ref11.commit,\n state = _ref11.state;\n // https://drupal.stackexchange.com/questions/248539/cant-get-flagging-api-to-accept-post-request\n return _restAxios.REST.post(\"/entity/flagging_collection?_format=json\").then(function (_ref12) {\n var data = _ref12.data;\n console.log(\"user REST createFlag data\", data); // commit(\"setFlags\", data);\n }).catch(function (error) {\n console.warn(\"Issue USER MA createFlag\", error);\n Promise.reject(error);\n });\n },\n userLogout: function userLogout(_ref13) {\n var commit = _ref13.commit,\n state = _ref13.state;\n\n var credentials = _querystring.default.stringify({\n token: state.token\n });\n\n _restAxios.REST.post(\"/user/logout\", credentials).then(function (resp) {\n console.log(\"userLogout resp\", resp);\n commit(\"setLoggedOut\");\n }).catch(function (error) {\n console.warn(\"Issue with logout\", error);\n Promise.reject(error);\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/store/modules/user.js?");
/***/ })
diff --git a/web/themes/custom/materiotheme/assets/scripts/main.js b/web/themes/custom/materiotheme/assets/scripts/main.js
index f4a8e84..3a77504 100644
--- a/web/themes/custom/materiotheme/assets/scripts/main.js
+++ b/web/themes/custom/materiotheme/assets/scripts/main.js
@@ -55,16 +55,18 @@ import 'theme/assets/styles/main.scss'
function checkNoVuePages(){
// return drupalDecoupled.sys_path != '/cart'
// && drupalDecoupled.sys_path.indexOf('checkout') != 1;
- if( drupalDecoupled.route_name.indexOf('commerce') == -1 ){
- return true;
- }else{
+ if( drupalDecoupled.route_name.indexOf('commerce') == -1 &&
+ drupalDecoupled.route_name.indexOf('flagging_collection') == -1 &&
+ drupalDecoupled.route_name.indexOf('user') == -1){
return false;
+ }else{
+ return true;
}
}
function initVues(){
// only launch views if we are not in commerce pages
- if(checkNoVuePages()){
+ if(!checkNoVuePages()){
initVRouter();
initVSiteBrandingBlock()
initVPagetitleBlock()
diff --git a/web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue b/web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue
new file mode 100644
index 0000000..31d1f34
--- /dev/null
+++ b/web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue
@@ -0,0 +1,47 @@
+
+
+
My folders
+
+ -
+
{{ flag.name }}
+
+ -
+
new folder
+
+
+
+
+
+
+
+
diff --git a/web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue b/web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue
index 4b50142..3d27d3f 100644
--- a/web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue
+++ b/web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue
@@ -13,13 +13,19 @@
class="mdi mdi-logout"
title="logout"
>
+