Account created on 14 June 2018, about 6 years ago
#

Merge Requests

More

Recent comments

🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

Well, it is not a priority, so I guess we skip this now.

🇸🇰Slovakia kaszarobert

There's an even newer release for Handsontable, need to create a new issue for updating to that.

🇸🇰Slovakia kaszarobert

It turned out there's not much we can do about it. Class removing is not advised.

🇸🇰Slovakia kaszarobert

It fixed the problem on Drupal 11 alright, how about a release with a fix?

🇸🇰Slovakia kaszarobert

clarify that updating view count field will not create new revisions

🇸🇰Slovakia kaszarobert

Also, under Advanced > Contextual filters, add Content: Authored by.

🇸🇰Slovakia kaszarobert

Further clarification about searching for parent route name without the need for devel module.

🇸🇰Slovakia kaszarobert

Summary changed to be different than the title

🇸🇰Slovakia kaszarobert

Summary changed to not repeat the title

🇸🇰Slovakia kaszarobert

Clarification when the module can be used

🇸🇰Slovakia kaszarobert
+    $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?

🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

I agree. Changed the MR for using "Fixed amount off shipping" and "Percentage off shipping".

🇸🇰Slovakia kaszarobert

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}
🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

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"

🇸🇰Slovakia kaszarobert

I added the 'clear' => TRUE option to the token replace call.

🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

@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.

🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

I created a MR with simply adding the coupon code to the dataLayer.

🇸🇰Slovakia kaszarobert

kaszarobert made their first commit to this issue’s fork.

🇸🇰Slovakia kaszarobert

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

🇸🇰Slovakia kaszarobert

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

🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

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
🇸🇰Slovakia kaszarobert

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.

🇸🇰Slovakia kaszarobert

We'll wait until Drupal 11 beta1 is out when the new Drupal's API and deprecations will be finalized.

Production build 0.69.0 2024