9 次代码提交 2c6e2b6230 ... 8b2c26774f

作者 SHA1 备注 提交日期
  bach 8b2c26774f user_materio user_block cache max-age 0 9 月之前
  bach 5c40959059 fixed user logout bug 10 月之前
  bach 81ab0ccfd7 fixed user logout bug 10 月之前
  bach b5fc279340 patched pwa for empty <p> in head 10 月之前
  bach f9c28306e6 updated some contrib modules 10 月之前
  bach 1096ac5408 updated some contrib modules, pwa themecolor setting 10 月之前
  bach 7759cc5637 updated some contrib modules 10 月之前
  bach 8d488a4ef0 updated core 10 月之前
  bach 0054045a33 updated commerce modules (<p> in header bug fix), patched advancedqueue 10 月之前

+ 7 - 1
composer.json

@@ -68,6 +68,7 @@
         "drupal/advancedqueue": "^1.1",
         "drupal/allowed_formats": "^3.0",
         "drupal/amswap": "^3.0",
+        "drupal/asset_cache_bust": "^1.0",
         "drupal/audiofield": "^1.10",
         "drupal/auto_entitylabel": "^3.1",
         "drupal/better_messages": "^2.0@alpha",
@@ -113,6 +114,7 @@
         "drupal/jsonapi_extras": "^3.21",
         "drupal/login_history": "^2.0",
         "drupal/login_tracker": "^2.0",
+        "drupal/logout_token": "^1.0",
         "drupal/mailjet": "^4.0",
         "drupal/maillog": "^1.1",
         "drupal/masquerade": "^2.0",
@@ -258,7 +260,8 @@
             },
             "drupal/pwa": {
               "Manifest doesn't have a maskable icon https://www.drupal.org/project/pwa/issues/3165433": "https://www.drupal.org/files/issues/2024-03-10/manifest-doesnt-have-a-maskable-icon-error-3165433-20.patch",
-              "Undefined array key name https://www.drupal.org/project/pwa/issues/3422906": "https://www.drupal.org/files/issues/2024-02-21/pwa-3422906-3.patch"
+              "Undefined array key name https://www.drupal.org/project/pwa/issues/3422906": "https://www.drupal.org/files/issues/2024-02-21/pwa-3422906-3.patch",
+              "The module adds white space at the top of the olivero theme https://www.drupal.org/project/pwa/issues/3427753" : "https://www.drupal.org/files/issues/2024-04-03/pwa-pwa_extras-decode_entities.patch"
             },
             "drupal/toolbar_theme": {
               "Automated Drupal 9 compatibility fixes https://www.drupal.org/project/toolbar_themes/issues/3149099": "https://www.drupal.org/files/issues/2020-06-06/toolbar_themes.1.x-dev.rector.patch"
@@ -280,6 +283,9 @@
             },
             "drupal/term_reference_tree": {
               "Term Reference Tree: Re-implement Track List https://www.drupal.org/project/term_reference_tree/issues/3064280": "https://www.drupal.org/files/issues/2024-08-26/term_reference_tree-3064280_bring_back_tracklist-22.patch"
+            },
+            "drupal/advancedqueue": {
+              "Issue with configuration schema advancedqueue.backend.[id] https://www.drupal.org/project/advancedqueue/issues/3469869": "https://git.drupalcode.org/project/advancedqueue/-/commit/a8864851cdfa40c9e38a3f5f64885baf1937375e.patch"
             }
         },
         "archived-patches": {

文件差异内容过多而无法显示
+ 235 - 180
composer.lock


+ 3 - 0
config/sync/core.entity_form_display.commerce_order.recurring.default.yml

@@ -6,6 +6,7 @@ dependencies:
     - commerce_order.commerce_order_type.recurring
     - field.field.commerce_order.recurring.billing_period
     - field.field.commerce_order.recurring.billing_schedule
+    - field.field.commerce_order.recurring.commerce_recurring_queued
     - field.field.commerce_order.recurring.field_mailjet_campaign_id
   module:
     - commerce_order
@@ -64,6 +65,8 @@ hidden:
   billing_period: true
   billing_schedule: true
   cart: true
+  commerce_recurring_queued: true
+  customer_comments: true
   ip_address: true
   mail: true
   order_number: true

+ 1 - 1
config/sync/core.entity_form_display.workflow_transition.workflow.default.yml

@@ -34,7 +34,7 @@ content:
       autocomplete_route_name: autocomplete_deluxe.autocomplete
       size: 60
       selection_handler: default
-      limit: 10
+      match_limit: 10
       min_length: 0
       delimiter: ''
       not_found_message_allow: false

+ 12 - 2
config/sync/core.entity_view_display.commerce_order.recurring.default.yml

@@ -6,6 +6,7 @@ dependencies:
     - commerce_order.commerce_order_type.recurring
     - field.field.commerce_order.recurring.billing_period
     - field.field.commerce_order.recurring.billing_schedule
+    - field.field.commerce_order.recurring.commerce_recurring_queued
     - field.field.commerce_order.recurring.field_mailjet_campaign_id
   module:
     - commerce_order
@@ -75,13 +76,21 @@ content:
     weight: 3
     region: content
   coupons:
-    label: above
     type: entity_reference_label
+    label: above
     settings:
       link: true
-    region: content
+    third_party_settings: {  }
     weight: 12
+    region: content
+  customer_comments:
+    type: string
+    label: above
+    settings:
+      link_to_entity: false
     third_party_settings: {  }
+    weight: 13
+    region: content
   field_mailjet_campaign_id:
     type: number_integer
     label: above
@@ -156,6 +165,7 @@ content:
 hidden:
   billing_profile: true
   billing_schedule: true
+  commerce_recurring_queued: true
   order_number: true
   search_api_excerpt: true
   store_id: true

+ 12 - 2
config/sync/core.entity_view_display.commerce_order.recurring.user.yml

@@ -7,6 +7,7 @@ dependencies:
     - core.entity_view_mode.commerce_order.user
     - field.field.commerce_order.recurring.billing_period
     - field.field.commerce_order.recurring.billing_schedule
+    - field.field.commerce_order.recurring.commerce_recurring_queued
     - field.field.commerce_order.recurring.field_mailjet_campaign_id
   module:
     - commerce_order
@@ -75,13 +76,21 @@ content:
     weight: 4
     region: content
   coupons:
-    label: above
     type: entity_reference_label
+    label: above
     settings:
       link: true
-    region: content
+    third_party_settings: {  }
     weight: 13
+    region: content
+  customer_comments:
+    type: string
+    label: above
+    settings:
+      link_to_entity: false
     third_party_settings: {  }
+    weight: 14
+    region: content
   mail:
     type: email_mailto
     label: inline
@@ -155,6 +164,7 @@ content:
 hidden:
   balance: true
   billing_schedule: true
+  commerce_recurring_queued: true
   field_mailjet_campaign_id: true
   ip_address: true
   search_api_excerpt: true

+ 1 - 0
config/sync/core.extension.yml

@@ -124,6 +124,7 @@ module:
   locale: 0
   login_history: 0
   login_tracker: 0
+  logout_token: 0
   mailjet: 0
   mailjet_commerce: 0
   mailjet_event: 0

+ 23 - 0
config/sync/field.field.commerce_order.recurring.commerce_recurring_queued.yml

@@ -0,0 +1,23 @@
+uuid: 149949ee-88a4-4807-97b8-ce17ea87fbaf
+langcode: en
+status: true
+dependencies:
+  config:
+    - commerce_order.commerce_order_type.recurring
+    - field.storage.commerce_order.commerce_recurring_queued
+id: commerce_order.recurring.commerce_recurring_queued
+field_name: commerce_recurring_queued
+entity_type: commerce_order
+bundle: recurring
+label: Queued
+description: ''
+required: false
+translatable: false
+default_value:
+  -
+    value: 0
+default_value_callback: ''
+settings:
+  on_label: 'Yes'
+  off_label: 'No'
+field_type: boolean

+ 18 - 0
config/sync/field.storage.commerce_order.commerce_recurring_queued.yml

@@ -0,0 +1,18 @@
+uuid: 69712edc-46a8-4945-aa76-be9d9d77d5c2
+langcode: en
+status: true
+dependencies:
+  module:
+    - commerce_order
+id: commerce_order.commerce_recurring_queued
+field_name: commerce_recurring_queued
+entity_type: commerce_order
+type: boolean
+settings: {  }
+module: core
+locked: true
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false

+ 1 - 0
config/sync/language/fr/pwa.config.yml

@@ -2,3 +2,4 @@ description: "L'inspiration par la matière"
 lang: fr
 start_url: /
 scope: /
+dir: auto

+ 1 - 1
config/sync/pwa.config.yml

@@ -11,7 +11,7 @@ dir: auto
 orientation: portrait
 categories:
   - design
-theme_color: '#ffffff'
+theme_color: '#69cecd'
 background_color: '#ffffff'
 display: standalone
 cross_origin: false

+ 17 - 0
config/sync/ultimate_cron.job.commerce_promotion_cron.yml

@@ -0,0 +1,17 @@
+uuid: 36f7c233-67e6-4847-88e3-327be6752439
+langcode: en
+status: true
+dependencies:
+  module:
+    - commerce_promotion
+title: 'Default cron handler'
+id: commerce_promotion_cron
+weight: 0
+module: commerce_promotion
+callback: commerce_promotion_cron
+scheduler:
+  id: simple
+launcher:
+  id: serial
+logger:
+  id: database

+ 1 - 1
config/sync/views.view.commerce_user_orders.yml

@@ -108,7 +108,7 @@ display:
             alter_text: false
             text: ''
             make_link: true
-            path: 'user/{{ arguments.uid }}/orders/{{ order_id }}'
+            path: 'user/{{ raw_arguments.uid }}/orders/{{ order_id }}'
             absolute: false
             external: false
             replace_spaces: false

+ 7 - 0
web/modules/custom/materio_user/src/Plugin/Block/UserBlock.php

@@ -50,6 +50,11 @@ class UserBlock extends BlockBase   implements ContainerFactoryPluginInterface{
    */
   public function build() {
     $build = [];
+    
+    $build['#cache'] = [
+      'max-age' => 0,
+    ];
+    
     // dpm($this->user);
     if($this->user->id()){
       $user_url = Url::fromRoute('entity.user.canonical', ['user' => $this->user->id()]);
@@ -76,6 +81,8 @@ class UserBlock extends BlockBase   implements ContainerFactoryPluginInterface{
           )
         )
       );
+
+      
     }
     return $build;
   }

文件差异内容过多而无法显示
+ 0 - 0
web/themes/custom/materiotheme/assets/dist/main.js


二进制
web/themes/custom/materiotheme/assets/dist/main.js.gz


+ 8 - 8
web/themes/custom/materiotheme/materiotheme.theme

@@ -151,14 +151,14 @@ function materiotheme_preprocess_html(&$vars) {
   $vars['page']['#attached']['html_head'][] = [$ms, '$ms'];
 
   // <meta name="theme-color" content="#ffffff">
-  $tc = array(
-    '#tag' => 'meta',
-    '#attributes' => array(
-      'name' => 'theme-color',
-      'content' => "#69ccce"
-    ),
-  );
-  $vars['page']['#attached']['html_head'][] = [$tc, '$tc'];
+  // $tc = array(
+  //   '#tag' => 'meta',
+  //   '#attributes' => array(
+  //     'name' => 'theme-color',
+  //     'content' => "#69ccce"
+  //   ),
+  // );
+  // $vars['page']['#attached']['html_head'][] = [$tc, '$tc'];
 
   // <meta http-equiv="pragma" content="no-cache" />
   $pragma = array(

+ 1 - 1
web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue

@@ -13,7 +13,7 @@
       class="mdi mdi-settings"
       title="admin"
     ></a>
-    <a href="/user/logout"
+    <a href="#"
       @click.prevent="onLogout()"
       class="mdi mdi-logout"
       title="logout"

+ 43 - 24
web/themes/custom/materiotheme/vuejs/store/modules/user.js

@@ -41,6 +41,9 @@ export default {
       console.log('SetCsrftoken', token)
       state.csrf_token = token
     },
+    SetLogouttoken (state, token) {
+      state.logout_token = token
+    },
     setToken (state, data) {
       console.log('setToken', data)
       state.uid = data.current_user.uid
@@ -183,10 +186,10 @@ export default {
     },
     userLogin ({ dispatch, commit, state }, credentials) {
       return new Promise((resolve, reject) => {
-        dispatch('getToken', credentials)
+        dispatch('postUserLogin', credentials)
           // TODO: catch failed login
           .then((response) => {
-            console.log('userLogin dispatch getToken response', response)
+            console.log('userLogin dispatch postUserLogin response', response)
 
             if (response.status === 200) {
               commit('setToken', response.data)
@@ -211,18 +214,18 @@ export default {
               })
             } else {
               commit('setLoginMessage', response.data.message)
-              console.warn('Issue with getToken', response)
+              console.warn('Issue with postUserLogin', response)
               console.log('user loggein failed')
               Promise.reject(new Error('user loggein failed'))
             }
           })
           .catch(error => {
-            console.warn('Issue with Dispatch getToken', error)
+            console.warn('Issue with Dispatch postUserLogin', error)
             Promise.reject(error)
           })
       })
     },
-    getToken ({ dispatch, commit, state }, credentials) {
+    postUserLogin ({ dispatch, commit, state }, credentials) {
       return REST.post('/user/login?_format=json',
         credentials,
         {
@@ -237,24 +240,34 @@ export default {
           console.log('csrftoken', data)
           commit('SetCsrftoken', data)
           console.log('state.csrf_token', state.csrf_token)
-          const params = {
-            token: state.csrf_token
-          }
-          REST.get(`/user/${state.uid}?_format=json`, params)
+          // INFO this endpoiunt needs https://www.drupal.org/project/logout_token
+          REST.get('/session/logout/token')
             .then(({ data }) => {
-              console.log('user REST getUser data', data)
-              console.log('roles', data.roles)
-              // with session_limit, only here we are certain that the user is logged
-              commit('setUser', data)
-              if (data.roles) {
-                commit('setRoles', data.roles)
+              console.log('logout_token', data)
+              commit('SetLogouttoken', data)
+              const params = {
+                token: state.csrf_token
               }
-              // console.log('customer_profiles', data.customer_profiles.length)
-              // if (data.customer_profiles.length) {
-              //   dispatch('getUserProfiles', data.customer_profiles[data.customer_profiles.length - 1].target_id)
-              // }
-              dispatch('getUserFlagColls')
-              resolve()
+              REST.get(`/user/${state.uid}?_format=json`, params)
+                .then(({ data }) => {
+                  console.log('user REST getUser data', data)
+                  console.log('roles', data.roles)
+                  // with session_limit, only here we are certain that the user is logged
+                  commit('setUser', data)
+                  if (data.roles) {
+                    commit('setRoles', data.roles)
+                  }
+                  // console.log('customer_profiles', data.customer_profiles.length)
+                  // if (data.customer_profiles.length) {
+                  //   dispatch('getUserProfiles', data.customer_profiles[data.customer_profiles.length - 1].target_id)
+                  // }
+                  dispatch('getUserFlagColls')
+                  resolve()
+                })
+                .catch(error => {
+                  console.warn('Issue with getUser', error)
+                  Promise.reject(error)
+                })
             })
             .catch(error => {
               console.warn('Issue with getUser', error)
@@ -424,10 +437,16 @@ export default {
       commit('closeFlagColl')
     },
     userLogout ({ commit, state }) {
-      const credentials = qs.stringify({
-        token: state.csrf_token
+      const params = qs.stringify({
+        // format: 'json'
+        // token: state.logout_token
       })
-      REST.post('/user/logout', credentials)
+      const config = {
+        headers: {
+          'X-CSRF-Token': state.csrf_token
+        }
+      }
+      REST.post('/user/logout?format=json&token=' + state.logout_token, params, config)
         .then(resp => {
           console.log('userLogout resp', resp)
           commit('setLoggedOut')

部分文件因为文件数量过多而无法显示