I updated the install instructions on the module page.
The module itself requires Drupal 9, 10 or 11 in blizz_table_field.info.yml.
I think the problem in your case is this line:
- drupal/blizz_table_field[2.0.3, ..., 2.0.8] require bower-asset/papaparse ^5.3 -> could not be found in any version, there may be a typo in the package name.
Now, because the latest Drupal 10 compatible packages cannot be installed for your because of this, composer tries older versions of the module which are not good for the site again because they are for Drupal 8 or 9 only, and you have Drupal 10, that's why it shows that those require 'drupal/core ^9' and can't be installed.
The solution for you would be adding asset packagist manually to your composer.json to the repositories section like this:
"repositories": {
"drupal": {
"type": "composer",
"url": "https://packages.drupal.org/8"
},
"assets": {
"type": "composer",
"url": "https://asset-packagist.org"
}
},
And under the "extra" key, bower-asset and npm-asset folder needs to be set:
"installer-paths": {
"web/core": [
"type:drupal-core"
],
"web/libraries/{$name}": [
"type:drupal-library",
"type:bower-asset",
"type:npm-asset"
],
"web/modules/contrib/{$name}": [
"type:drupal-module"
],
"web/profiles/contrib/{$name}": [
"type:drupal-profile"
],
"web/themes/contrib/{$name}": [
"type:drupal-theme"
],
"drush/Commands/contrib/{$name}": [
"type:drupal-drush"
],
"web/modules/custom/{$name}": [
"type:drupal-custom-module"
],
"web/profiles/custom/{$name}": [
"type:drupal-custom-profile"
],
"web/themes/custom/{$name}": [
"type:drupal-custom-theme"
]
},
"installer-types": [
"bower-asset",
"npm-asset"
],
Similarly, how the official docs mention this: https://www.drupal.org/docs/develop/using-composer/manage-dependencies#t... →
I guess I should update the module install instructions that previous maintainers wrote with a much clearer step by step starting from drupal/recommended-project template.
Please reopen the issue if this not fixes it for you.
Just updated to 10.3.0 and suddenly this error fills the logs.
Yes, since we are doing this to the main section's classes and styles, it would be awesome if the same thing would work to the section regions as well (for example, in 2 column layout there are 2 section regions: the 1st and the 2nd columns) if possible. That way the module's behavior would be consistent to both cases.
kaszarobert → created an issue.
With the MR changes, although Upgrade Status says it is compatible, there's some major problem that needs to be dealt with under Drupal 10 during module install:
Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException: Circular reference detected for service "cache.backend.database", path: "http_kernel -> http_middleware.ajax_page_state -> http_middleware.negotiation -> http_middleware.reverse_proxy -> http_middleware.page_cache -> cache.page -> cache.backend.database -> Drupal\Component\Datetime\TimeInterface -> state -> cache.bootstrap". in Drupal\Component\DependencyInjection\Container->get() (line 149 of core/lib/Drupal/Component/DependencyInjection/Container.php).
Drupal\Component\DependencyInjection\Container->get('cache.backend.database') (Line: 98)
Drupal\Core\Cache\ChainedFastBackendFactory->get('bootstrap') (Line: 110)
Drupal\Core\Cache\CacheFactory->get('bootstrap')
call_user_func_array(Array, Array) (Line: 257)
Drupal\Component\DependencyInjection\Container->createService(Array, 'cache.bootstrap') (Line: 179)
Drupal\Component\DependencyInjection\Container->get('cache.bootstrap', 1) (Line: 438)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 239)
Drupal\Component\DependencyInjection\Container->createService(Array, 'state') (Line: 179)
Drupal\Component\DependencyInjection\Container->get('state', 1) (Line: 438)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 239)
Drupal\Component\DependencyInjection\Container->createService(Array, 'Drupal\Component\Datetime\TimeInterface') (Line: 179)
Drupal\Component\DependencyInjection\Container->get('Drupal\Component\Datetime\TimeInterface', 1) (Line: 438)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 239)
Drupal\Component\DependencyInjection\Container->createService(Array, 'cache.backend.database') (Line: 179)
Drupal\Component\DependencyInjection\Container->get('cache.backend.database') (Line: 110)
Drupal\Core\Cache\CacheFactory->get('page')
call_user_func_array(Array, Array) (Line: 257)
Drupal\Component\DependencyInjection\Container->createService(Array, 'cache.page') (Line: 179)
Drupal\Component\DependencyInjection\Container->get('cache.page', 1) (Line: 438)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 239)
Drupal\Component\DependencyInjection\Container->createService(Array, 'http_middleware.page_cache') (Line: 179)
Drupal\Component\DependencyInjection\Container->get('http_middleware.page_cache', 1) (Line: 438)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 239)
Drupal\Component\DependencyInjection\Container->createService(Array, 'http_middleware.reverse_proxy') (Line: 179)
Drupal\Component\DependencyInjection\Container->get('http_middleware.reverse_proxy', 1) (Line: 438)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 239)
Drupal\Component\DependencyInjection\Container->createService(Array, 'http_middleware.negotiation') (Line: 179)
Drupal\Component\DependencyInjection\Container->get('http_middleware.negotiation', 1) (Line: 438)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 239)
Drupal\Component\DependencyInjection\Container->createService(Array, 'http_middleware.ajax_page_state') (Line: 179)
Drupal\Component\DependencyInjection\Container->get('http_middleware.ajax_page_state', 1) (Line: 438)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 239)
Drupal\Component\DependencyInjection\Container->createService(Array, 'http_kernel') (Line: 179)
Drupal\Component\DependencyInjection\Container->get('http_kernel') (Line: 1513)
Drupal\Core\DrupalKernel->getHttpKernel() (Line: 741)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
After this error the module is enabled but the scheduled transition state and date tables are not created resulting to a broken site. Since the tables were not created, you cannot even uninstall this module because of this error:
pc@ASUS-PC:~/lando-projects/drupal10.localhost/web/modules/custom/lightning_scheduler$ lando drush pmu lightning_scheduler
In ExceptionHandler.php line 56:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'drupal10.block_content_r__48d0019ac1' doesn't exist: SELECT 1 AS "expression"
FROM
"block_content_r__48d0019ac1" "t"
WHERE "scheduled_transition_date_value" IS NOT NULL
LIMIT 1 OFFSET 0; Array
(
)
In StatementWrapperIterator.php line 113:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'drupal10.block_content_r__48d0019ac1' doesn't exist
This problem does not appear on Drupal 9 clean install. It needs to be fixed here.
This actually needs a complete rewrite for this module and since I don't have enough capacity to deal with that amount of work, we will not have this feature unless someone does it entirely.
Well, it is not a priority, so I guess we skip this now.
There's an even newer release for Handsontable, need to create a new issue for updating to that.
It turned out there's not much we can do about it. Class removing is not advised.
It fixed the problem on Drupal 11 alright, how about a release with a fix?
kaszarobert → created an issue.
clarify that updating view count field will not create new revisions
Also, under Advanced > Contextual filters, add Content: Authored by.
Further clarification about searching for parent route name without the need for devel module.
+ $variables["attributes"]["id"][] = $variables['settings']['custom_id'];
I think "id" is usually a single value, not an array since the HTML id semantically should be single value without spaces, see https://www.w3schools.com/html/html_id.asp I'm afraid the best we can do is skipping this operation and not doing anything if id is an empty string.
The style appending seems okay. Although I would strongly encourage everyone to write these styles in the theme's CSS for specific classes and set classes in layouts. It will be much more maintainable that way.
Could you also do this style appending method in region attributes?
kaszarobert → created an issue.
kaszarobert → created an issue.
kaszarobert → created an issue.
Well, if it the trimming really can be done with using field rewrites, then I agree that it's not worth complicating the form with these extra settings.
I agree. Changed the MR for using "Fixed amount off shipping" and "Percentage off shipping".
Thank you for your quick response!
kaszarobert → created an issue.
kaszarobert → created an issue.
kaszarobert → created an issue.
kaszarobert → created an issue.
Something is not right on Drupal core 11.0.0-beta1:
Location http://drupal11.localhost/admin/config/content/content_redirect_to_front_settings
Referrer http://drupal11.localhost/admin/modules
Message ArgumentCountError: Too few arguments to function Drupal\Core\Form\ConfigFormBase::__construct(), 1 passed in /app/web/modules/contrib/content_redirect_to_front/src/Form/SettingsForm.php on line 44 and exactly 2 expected in Drupal\Core\Form\ConfigFormBase->__construct() (line 41 of /app/web/core/lib/Drupal/Core/Form/ConfigFormBase.php).
Severity Error
Hostname 172.24.0.2
Operations
Backtrace
#0 /app/web/modules/contrib/content_redirect_to_front/src/Form/SettingsForm.php(44): Drupal\Core\Form\ConfigFormBase->__construct(Object(Drupal\Core\Config\ConfigFactory))
#1 /app/web/modules/contrib/content_redirect_to_front/src/Form/SettingsForm.php(53): Drupal\content_redirect_to_front\Form\SettingsForm->__construct(Object(Drupal\Core\Config\ConfigFactory), Object(Drupal\Core\Entity\EntityTypeManager), Object(Drupal\Core\Entity\EntityTypeBundleInfo))
#2 /app/web/core/lib/Drupal/Core/DependencyInjection/ClassResolver.php(36): Drupal\content_redirect_to_front\Form\SettingsForm::create(Object(Drupal\Core\DependencyInjection\Container))
#3 /app/web/core/lib/Drupal/Core/Controller/HtmlFormController.php(48): Drupal\Core\DependencyInjection\ClassResolver->getInstanceFromDefinition('\\Drupal\\content...')
#4 /app/web/core/lib/Drupal/Core/Controller/FormController.php(58): Drupal\Core\Controller\HtmlFormController->getFormObject(Object(Drupal\Core\Routing\RouteMatch), '\\Drupal\\content...')
#5 [internal function]: Drupal\Core\Controller\FormController->getContentResult(Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\RouteMatch))
#6 /app/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array)
#7 /app/web/core/lib/Drupal/Core/Render/Renderer.php(593): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#8 /app/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(121): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#9 /app/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array)
#10 /app/vendor/symfony/http-kernel/HttpKernel.php(183): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#11 /app/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#12 /app/web/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#13 /app/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 /app/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#15 /app/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#16 /app/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\big_pipe\StackMiddleware\ContentLength->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#17 /app/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#18 /app/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#19 /app/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#20 /app/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#21 /app/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#22 /app/web/core/lib/Drupal/Core/DrupalKernel.php(705): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#23 /app/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#24 {main}
kaszarobert → made their first commit to this issue’s fork.
Now that twitter.com site is being redirected and replaced with x.com, users will expect to embed new content with x.com URLs. Therefore I think this is a pretty important thing to merge this to the module ASAP.
In recent years at our company I can tell that we use trim in views mostly for creating proper product feeds for Google Merchant Center (with the help of contrib modules Commerce and Views Data Export). There Google specifies the maximal length of each field. If we specify something longer, then it rejects to read the product from our feed and we cannot create marketing campaigns for it.
Since Drupal Views module has a trimming option, these max. lengths can be set easily for single value fields, such as product title, SKU, or category. So no need for custom code to build a proper feed. Awesome. But as soon as we put there multi-value fields such as the mentioned Tags, Collection or Custom Labels, I received a ticket where they say "I set the character limit to 100 and it still doesn't trim the output, please fix it". I looked into how this works and as I wrote in the issue summary, for multi-value fields for example a 100 character limit is applied to each individual value (to Workshop
and Hotels and restaurants
etc. individually as mentioned in the issue summary), instead of the whole built output (so not for the full output Workshop, Hotels and restaurants, Office, Shopping malls, Stores, Schools, Manufacturing, Wellness and fitness, Healthcare
). If a setting is called "Trim this field to a maximum number of characters", then people expect to trim the whole field output, not the invidual field values.
As I saw, developing something like this in another module is challenging as most of the conditions and trimming logic are not something that could be easily altered or replaced as there are no hooks or Events. That's why we took this core patch approach and since I think I'm not the only one who could face this, I initiated this idea here.
One possible solution would be adding a new "Do trimming" option where by default the current behavior stays (as "During single element rendering") but users would be able to change that to "Only after all field values are rendered"
kaszarobert → created an issue.
I added the 'clear' => TRUE
option to the token replace call.
kaszarobert → created an issue.
Okay, closing this since it looks like it is not a problem with this module but with Drupal, class autoloading and caches not clearing the right way in certain PHP environments.
@newaytech usually you add patch files to composer.json because the feature branch used for MR could change in the meantime if further changes will be required by reviewers. A patch file will stay the same. I uploaded a static patch file with the same modifications as in MR.
I updated the patch with proper array index checking, method argument type checking and catching Throwable to not produce WSOD if Exception or Error is thrown.
I created a MR with simply adding the coupon code to the dataLayer.
kaszarobert → made their first commit to this issue’s fork.
kaszarobert → created an issue.
I cannot reproduce this neither in dev neither in our production environment. I tried both Apache and Nginx+PHP-FPM configurations. Looking at the error message means that the mentioned PHP class could not be autoloaded, meaning that PHP opcache, APC cache or Drupal's dependency injection container cache was not invalidated properly for some reason and the site is still not aware that there's a new class that should be autoloaded.
I also did a quick search for this problem and while others also experiencing this after other random module installations, I could not find a reliable solution to this other than calling the same cache clear function as the UI does:
https://www.drupal.org/project/drupal/issues/3225584#comment-14949206
💬
InvalidArgumentException: Class does not exist when accessing settings form after drush install module
Closed: outdated
I uploaded the patch we are using at https://www.drupal.org/project/google_tag/issues/3437889#comment-15549086 📌 Send the purchase event when an order is placed, not paid Needs review
I attach a patch with a possible solution to use just the commerce_order.place.post_transition
event. This would also fix another issue I encountered
🐛
Drupal Commerce purchase event gets sent multiple times if someone refreshes the checkout success page
Active
as it would not send a purchase event based on the checkout step multiple times anymore. But as you mentioned, this alters the module's behavior when to send purchase events to the way how
Commerce Google Tag Manager →
worked.
Then this way, I encountered a strange error when PurchaseEvent::getData
is called:
Error: Typed property Drupal\google_tag\Plugin\GoogleTag\Event\Commerce\PurchaseEvent::$transformer must not be accessed before initialization in Drupal\google_tag\Plugin\GoogleTag\Event\Commerce\PurchaseEvent->getData() (line 79 of modules/contrib/google_tag/src/Plugin/GoogleTag/Event/Commerce/PurchaseEvent.php).
google_tag_page_attachments(Array) (Line: 311)
I could not fix this with proper DI, so that's why I made those changes there.
Also, according to the CI test results, the patch is not enough as there are incompatibilities with Drupal 11 even right now:
Remaining self deprecation notices (6)
6x: Passing null to the $typedConfigManager parameter of ConfigFormBase::__construct() is deprecated in drupal:10.2.0 and must be an instance of \Drupal\Core\Config\TypedConfigManagerInterface in drupal:11.0.0. See https://www.drupal.org/node/3404140
3x in GoogleAnalyticsCounterAuthSettingsTest::testAuthSettings from Drupal\Tests\google_analytics_counter\Functional
3x in GoogleAnalyticsCounterSettingsTest::testGoogleAnalyticsCounterSettingsForm from Drupal\Tests\google_analytics_counter\Functional
kaszarobert → created an issue.
kaszarobert → created an issue.
kaszarobert → created an issue.
kaszarobert → created an issue.
I tried on latest Drupal 10, clean install, this is not happening anymore.
kaszarobert → created an issue.
kaszarobert → created an issue.
Not really. Frankly, we didn't mess around with that and we simply gave that permission to the shop owners and told them, that they should edit only product, order, content, taxonomy forms and leave the rest of the settings pages alone, and they did that.
We'll wait until Drupal 11 beta1 is out when the new Drupal's API and deprecations will be finalized.