From d9e494e6db6f3dfb8284505c73aa24aca24b71b7 Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Sat, 22 Jun 2019 19:34:21 +0200 Subject: [PATCH] completed computed field_reference dev --- composer.json | 1 + composer.lock | 66 +++++++++- config/devel/devel.settings.yml | 6 + ...ity_form_display.node.materiau.default.yml | 33 ++--- config/sync/core.extension.yml | 3 +- config/sync/modules_weight.settings.yml | 3 + .../custom/materio_id/materio_id.module | 118 ++++++++---------- 7 files changed, 145 insertions(+), 85 deletions(-) create mode 100644 config/devel/devel.settings.yml create mode 100644 config/sync/modules_weight.settings.yml diff --git a/composer.json b/composer.json index 7a54af33..6343b11b 100644 --- a/composer.json +++ b/composer.json @@ -46,6 +46,7 @@ "drupal/migrate_plus": "4.x-dev", "drupal/migrate_tools": "4.x-dev", "drupal/mimemail": "1.x-dev", + "drupal/modules_weight": "^1.8", "drupal/restui": "^1.16", "drupal/search_api_autocomplete": "^1.2", "drupal/search_api_page": "1.x-dev", diff --git a/composer.lock b/composer.lock index d797002b..c5d81808 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": "e67674c8f819a51a74785fddb76fb1d5", + "content-hash": "7e10b3f48a875330ee707d7cee2bac93", "packages": [ { "name": "alchemy/zippy", @@ -8130,6 +8130,70 @@ }, "time": "2019-05-08T04:46:52+00:00" }, + { + "name": "drupal/modules_weight", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/modules_weight.git", + "reference": "8.x-1.8" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/modules_weight-8.x-1.8.zip", + "reference": "8.x-1.8", + "shasum": "6861c4def64d489fda24ce6a1914ea970ccb7143" + }, + "require": { + "drupal/core": "~8.6" + }, + "type": "drupal-module", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + }, + "drupal": { + "version": "8.x-1.8", + "datestamp": "1557514985", + "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": "Adrian Cid Almaguer (adriancid)", + "homepage": "https://www.drupal.org/u/adriancid", + "email": "adriancid@gmail.com", + "role": "Maintainer" + }, + { + "name": "Ma'moun Othman (artofeclipse)", + "homepage": "https://www.drupal.org/u/artofeclipse", + "role": "Maintainer" + }, + { + "name": "josebc", + "homepage": "https://www.drupal.org/user/1376836" + } + ], + "description": "Allows to change the modules execution order.", + "homepage": "https://www.drupal.org/project/modules_weight", + "keywords": [ + "Drupal", + "Modules", + "Order" + ], + "support": { + "source": "http://cgit.drupalcode.org/modules_weight", + "issues": "https://www.drupal.org/project/issues/modules_weight" + } + }, { "name": "drupal/pagerer", "version": "1.4.0", diff --git a/config/devel/devel.settings.yml b/config/devel/devel.settings.yml new file mode 100644 index 00000000..5270fa51 --- /dev/null +++ b/config/devel/devel.settings.yml @@ -0,0 +1,6 @@ +page_alter: false +raw_names: false +error_handlers: + - 0 +rebuild_theme: true +devel_dumper: default diff --git a/config/sync/core.entity_form_display.node.materiau.default.yml b/config/sync/core.entity_form_display.node.materiau.default.yml index b3935872..da00c809 100644 --- a/config/sync/core.entity_form_display.node.materiau.default.yml +++ b/config/sync/core.entity_form_display.node.materiau.default.yml @@ -25,6 +25,7 @@ dependencies: - image.style.thumbnail - node.type.materiau module: + - computed_field - cshs - field_group - file @@ -90,7 +91,7 @@ third_party_settings: - field_materiau_images - field_video parent_name: group_htabs - weight: 10 + weight: 11 format_type: tab format_settings: id: '' @@ -105,7 +106,7 @@ third_party_settings: - field_manufacturer - field_distributor parent_name: group_htabs - weight: 11 + weight: 12 format_type: tab format_settings: id: '' @@ -119,7 +120,7 @@ third_party_settings: children: - field_attachments parent_name: group_htabs - weight: 12 + weight: 13 format_type: tab format_settings: id: '' @@ -134,7 +135,7 @@ third_party_settings: - field_linked_materials - field_linked_articles parent_name: group_htabs - weight: 13 + weight: 14 format_type: tab format_settings: id: '' @@ -148,7 +149,7 @@ third_party_settings: children: - field_samples parent_name: group_htabs - weight: 14 + weight: 15 format_type: tab format_settings: id: '' @@ -170,7 +171,6 @@ third_party_settings: weight: 1 format_type: tab format_settings: - label: Internal formatter: open description: '' required_fields: true @@ -200,7 +200,7 @@ content: type: file_generic region: content field_distributor: - weight: 16 + weight: 17 settings: match_operator: CONTAINS size: 60 @@ -209,7 +209,7 @@ content: type: entity_reference_autocomplete region: content field_famille: - weight: 26 + weight: 17 settings: { } third_party_settings: { } type: options_select @@ -250,7 +250,7 @@ content: type: image_image region: content field_memo: - weight: 31 + weight: 20 settings: rows: 5 placeholder: '' @@ -258,11 +258,17 @@ content: type: string_textarea region: content field_migration: - weight: 33 + weight: 22 settings: { } third_party_settings: { } type: workflow_default region: content + field_reference: + type: computed_string_widget + weight: 4 + region: content + settings: { } + third_party_settings: { } field_samples: weight: 34 settings: { } @@ -302,14 +308,14 @@ content: type: video_embed_field_textfield region: content field_workflow: - weight: 32 + weight: 21 settings: { } third_party_settings: { } type: workflow_default region: content langcode: type: language_select - weight: 29 + weight: 18 region: content settings: include_locked: true @@ -329,7 +335,7 @@ content: placeholder: '' third_party_settings: { } translation: - weight: 30 + weight: 19 region: content settings: { } third_party_settings: { } @@ -342,7 +348,6 @@ hidden: created: true field_index: true field_localisation_old: true - field_reference: true promote: true status: true sticky: true diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index 34a4e228..a4d7fcb4 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -91,7 +91,6 @@ module: maillog: 0 mailsystem: 0 materio_home: 0 - materio_id: 0 materio_jsonapi: 0 materio_migrate: 0 materio_samples: 0 @@ -107,6 +106,7 @@ module: migrate_plus: 0 migrate_tools: 0 mimemail: 0 + modules_weight: 0 node: 0 options: 0 page_cache: 0 @@ -164,6 +164,7 @@ module: pathauto: 1 content_translation: 10 views: 10 + materio_id: 11 figli_starter_kit: 1000 theme: stable: 0 diff --git a/config/sync/modules_weight.settings.yml b/config/sync/modules_weight.settings.yml new file mode 100644 index 00000000..9be891cf --- /dev/null +++ b/config/sync/modules_weight.settings.yml @@ -0,0 +1,3 @@ +show_system_modules: true +_core: + default_config_hash: IMfcudoEwt2voUZwyBZA8OhzYCIGxe94CylyRFodjxc diff --git a/web/modules/custom/materio_id/materio_id.module b/web/modules/custom/materio_id/materio_id.module index a44c0436..91119208 100644 --- a/web/modules/custom/materio_id/materio_id.module +++ b/web/modules/custom/materio_id/materio_id.module @@ -2,62 +2,36 @@ function computed_field_field_index_compute($entity_type_manager, $entity, $fields, $delta){ - // drush_print($entity->field_index->value); + // ksm($entity_type_manager); + // ksm($entity); + // ksm($fields); + // ksm($delta); + $famille = $entity->get('field_famille')->getValue()[0]['value']; + + // $entity->isNew(); ?? + // TODO: what if familly change ? if (!empty($entity->field_index->value)) { // the node is not new return $entity->field_index->value; } - - // TODO: finish the job - /* FROM D7 - - // dsm('-- computed --'); - // dsm($entity_field, '$entity_field'); - // dsm($entity_type, '$entity_type'); - // dsm($entity, '$entity'); - // dsm($field, '$field'); - // dsm($instance, '$instance'); - // dsm($items, '$items'); - - // dsm($entity_field[0]['value'], 'entity_field value'); - - if (!empty($entity_field[0]['value'])) { // the node is not new - - return $entity_field[0]['value']; + + // the node is new + // get all same entities in same family + $query = \Drupal::entityQuery($entity->getEntityTypeId()) + ->condition('type', $entity->bundle()) + ->condition('field_famille', $famille) + ->sort('field_index', 'DESC') + ->range(0,1); + + $nids = $query->execute(); + + if(is_array($nids)){ + $last = entity_load($entity->getEntityTypeId(), array_pop($nids)); + // get identifiants fo these entities + $index = $last->get('field_index')->getValue()[0]['value'] + 1; + }else{ + $index = '1'; } - else { // the node is new - // get all same entities in same family - $query = new EntityFieldQuery(); - $query - ->entityCondition('entity_type', $entity_type) - ->entityCondition('bundle', $entity->type) - ->fieldCondition('field_famille', 'value', $entity->field_famille['und'][0]['value']); - $result = $query->execute(); - if(is_array($result[$entity_type])){ - $entities = entity_load($entity_type, array_keys($result[$entity_type])); - - // get identifiants fo these entities - $ids = array(); - foreach ($entities as $id => $e) { - $identifiant = field_view_field($entity_type, $e, 'field_identifiant'); - $ids[] = $identifiant[0]['#markup'] ? intval($identifiant[0]['#markup']) : 0; - } - sort($ids); - - $value = strval(array_pop($ids) + 1); - }else{ - $value = '1'; - } - - // parse the value to a string as 0023 or 4458 or 0001 - $value_parts = str_split($value); - while (count($value_parts) < 4) { - array_unshift($value_parts, "0"); - } - - // record the result - $entity_field[0]['value'] = implode('', $value_parts); - } - */ + return $index; } @@ -69,26 +43,32 @@ function computed_field_field_reference_compute($entity_type_manager, $entity, $ if (!empty($entity->field_reference->value)) { // the node is not new return $entity->field_reference->value; } - - // TODO: finish the job - /* FROM D7 - - // dsm('-- computed --'); - // dsm($entity_field, '$entity_field'); - // dsm($entity_type, '$entity_type'); - // dsm($entity, '$entity'); - // dsm($field, '$field'); - // dsm($instance, '$instance'); - // dsm($items, '$items'); - if (!empty($entity_field[0]['value'])) { // the node is not new - return $entity_field[0]['value']; + // the node is new + // parse the value to a string as 0023 or 4458 or 0001 + $index_parts = str_split($entity->field_index->value); + while (count($index_parts) < 4) { + array_unshift($index_parts, "0"); } - else { // the node is new - $entity_field[0]['value'] = $entity->field_famille['und'][0]['value'].'-'.$entity->field_identifiant['und'][0]['value']; - } - */ + return $entity->field_famille->value.'-'.implode('', $index_parts); } // function computed_field_field_reference_materio_display($field, $entity_field_item, $entity_lang = "en", $langcode = "en") { // return $entity_field_item['value']; // } + +/** + * Implements hook_form_alter(). + */ +function materio_id_form_node_materiau_edit_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) { + // dsm($form_id); + $node = $form_state->getFormObject()->getEntity(); + $ref = $node->field_reference->value; + // dsm($ref); + if($ref != ''){ + $string = $form['#title']->getUntranslatedString() . ' (@ref)'; + // dsm($string); + $args = $form['#title']->getArguments() + array('@ref'=>$ref); + // ksm($args); + $form['#title'] = t($string, $args); + } +}