You are right, it's something new. I added a fix in this new release:
https://www.drupal.org/project/ebt_core/releases/1.4.35 â
You need to update EBT Accordion module with dependencies:
composer update drupal/ebt_accordion -W
Hi victorvico1966, it was fixed in EBT Core module, you need to update EBT Accordion module with dependencies (or update EBT Core module):
composer update drupal/ebt_accordion -W
Hi Dave, what Field Widget are you using for Paragraph field: Stable Paragraph, Legacy Paragraph, Layout Paragraph, Mercury? Drupal can load a lot of by relationship, so for Layout Paragraph it should be limited:
https://www.drupal.org/project/ept_columns/issues/3450536#comment-15616377
đ
EPT Columns/container won't load
Closed: cannot reproduce
Try this field widget for paragraph:
https://www.drupal.org/project/layout_paragraphs â
Also, could you check that EPT Columns are not selected for other paragraph fields, EPT Columns inside EPT Columns also can cause the error:
Nested Paragraph References: A common cause in Drupal Paragraphs is when a paragraph type references another paragraph type, and a circular dependency is inadvertently created (e.g., Paragraph A contains Paragraph B, and Paragraph B also contains Paragraph A). This can lead to an infinite loop during rendering or saving.
This works for me on Drupal 10.5.1
Hi tehmilcho, thank you for your research, I added your snippets in 1.0.1 release. Dates are stored as UTC in Drupal database, but it doesn't use Sitewide timezone to bring it in UTC. It uses User timezone:
/admin/config/regional/settings
/user/1/edit
And I think it's OK for count down functionality when User and Sitewide timezone are the same. But I still need to investigate how to display it right for the case when User have different timezone, than Sitewide. Maybe it's already OK for this case too. I close this ticket for now and continue investigation by myself.
I thought about different cases. If you are only one editor on the site, than Sitewide timezone will work fine. But if you have events in different cities and users will add own events, when it will be needed to get timezone from User settings. I will try to add your snippet and add User specific timezone first.
You need to update EPT Core module or EPT Hero with dependencies:
composer update drupal/ept_hero -W
Hi, syawillim, thank you for your report! I wanted to do it a long time ago. I updated code for EBT/EPT modules:
https://drupalbook.org/ebt/demo/hero
https://drupalbook.org/ebt/demo/image
https://drupalbook.org/ept/demo/hero
https://drupalbook.org/ept/demo/image
I need to investigate this situation with Timezone, it's not clear for me now where is source of truth for timezone. It can be changed on Server, Sitewide, User specific, Field Storage/Instance/Formatter specific.
But then preprocess will not be working. Did you face this problem on Drupal 11 after upgrade from Drupal 10? I'm still waiting to upgrade from Drupal 10 to Drupal 11 cause of CKEditor 5 plugins, but eventually I will upgrade my site drupalbook.org and test all EBT/EPT modules with Drupal 11 too.
I see.. there are two places with block_content:
$variables['elements']['content']['#block_content']
$variables['content']['#block_content']
I added validation for both of them:
https://www.drupal.org/project/ebt_basic_button/releases/1.4.12 â
Hi thomas kaisuka, thank you for your report, I added additional validation for field_ebt_settings:
https://www.drupal.org/project/ebt_basic_button/releases/1.4.11 â
https://drupalbook.org/ebt/demo/basic-button
Hi heatherwoz, albertho425, thank you for your MR! I merged it and released Glightbox 1.0.18:
https://www.drupal.org/project/glightbox/releases/1.0.18 â
It looks fine for me:
https://drupalbook.org/ept/demo/video-and-image-gallery
https://drupalbook.org/ept/demo/image-gallery
Hi heatherwoz, albertho425, I added data-alt attribute in links with text from Caption. I'm not sure if you need additional separate field for alt attribute. Usually it should be enough to have something meaningful in alt="" attribute. And I removed aria-label from tag, it's not button or , so "title" attribute is enough for that. You can try dev version of the module or I will add a new module version later on this week.
Added validation for field_ept_settings, field_ebt_settings fields exist for all EBT/EPT modules.
Hi heatherwoz, I checked Responsive image with Content Type > Media (multiple values) > Image field and description is working:
But you are right, I cloned Colorbox module and moved 'data-gbox-img-attributes' instead of 'data-cbox-img-attributes' from Colorbox:
GLightbox uses data-glightbox attribute with 'title' and 'description' values:
https://github.com/biati-digital/glightbox?tab=readme-ov-file#examples
I need to know your struction of content type, images can be in different nested entity types, for example:
Content type > Paragraph field > Media > Image
Content type > Paragraph field (gallery) > Pagraph field (gallery item) > Media > Image
Content type > Paragraph field > Image
Content type > Paragraph field (gallery) > Pagraph field (gallery item) > Image
It's impossible to predict all possible structures and nested levels for images, so I fetched few most common structures for captions.
https://www.drupal.org/project/glightbox/issues/3487478
đ
Allow caption tokens from parent (paragraph entity)
Active
https://www.drupal.org/project/glightbox/issues/3511270
đ
Allow caption tokens paragraph access if there is a parent paragraph
Active
https://www.drupal.org/project/glightbox/issues/3492657
đ
Create a service for caption calculation
Active
If you describe your structure, I will add your case as well.
Hi , thank you for your report! I added 4.x version for Field group module in composer.json.
I added commit in 1.4.x dev branch with my phone, but I can't test the changes for now to release these changes. Obviously I need to add this validation for all EBT modules.
Good catch, david-urban! I added a new release with a fix:
https://www.drupal.org/project/glightbox/releases/1.0.17 â
Hi kenrbnsn, GLightbox module has a new dependency DOMpurify, use option -W (--with-all-dependencies) to update the module with new dependency:
composer update drupal/gLightbox -W
Here is the same problem for another module:
https://www.drupal.org/project/ebt_hero/issues/3530929
đ
Call to a member function getValue() on null
Active
I don't have my laptop with me so I can apply your patch only from phone.
Hi Thomas Kaisuka, use hasField() method to check ebt_settings field exists. I didn't reproduce this problem yet, and it's possible for to reproduce only if remove the field manually.
greggles â credited levmyshkin â .
Hi Shane Birley, thank you for your patch! I applied it and released EBT Hero 1.4.4:
https://www.drupal.org/project/ebt_hero/releases/1.4.4 â
I'm not sure how to reproduce it, it means that you have EPT Hero block type, but without EBT Settings field. Did you remove it manually or it wasn't installed with EBT Hero module?
I added Image Size (image styles) field in EPT settings, so it's possible to choose Image style for each carousel separately.
ept-basic-button class is needed for styling buttons. There is only way to override template in your custom theme/module:
https://www.drupal.org/project/ept_slideshow/issues/3406887#comment-1568...
đŹ
How to override slideshow item template file?
Fixed
Create a new template:
paragraph--ept-hero--default--custom.html.twig
And copy content from paragraph--ept-hero--default.html.twig template. Then you will be able to remove default classes there.
This module allows to ignore fields for Entity Share process:
https://www.drupal.org/project/entity_share_bypass_fields â
Hi cheope, Token module doesn't support Link module out-of-the-box for now, but you can add it with this patch:
https://www.drupal.org/project/token/issues/3112449
â¨
Token for link field URL
Needs work
Hi drupaldope, EPT Image gallery doesn't have carousel functional, here are few EPT modules for carousel/slide images:
https://www.drupal.org/project/ept_carousel â
https://www.drupal.org/project/ept_slick_slider â
https://www.drupal.org/project/ept_slideshow â
Maybe you mean slideshow in lightbox popup, I think it was fixed for Glightbox integration module:
https://www.drupal.org/project/glightbox â
https://www.drupal.org/project/glightbox/issues/3441105
đŹ
Galleries per paragraph
Active
There are new options for selection gallery for field, paragraph or for entire page:
/admin/structure/media/manage/image/display/ept_image_gallery - EPT Image Gallery
/admin/structure/media/manage/image/display/ebt_image_gallery - EBT Image Gallery
About wrong ratio when first row is not full of images:
It's possible to select Style 2 Columns for gallery where is small number of images. But for the case for 2+ columns and only two columns, I fixed CSS:
I pushed updates in new release:
https://www.drupal.org/project/ept_image_gallery/releases/1.4.5 â
Ough..., sorry, I forgot to test multiple classes. I removed twig |clean_class filter, because we have class validation in edit form. So it must be fine now.
https://www.drupal.org/project/ept_hero/releases/1.4.7 â
Hey gmarez8, it's not tricky to generate CSS at all, you can check how DOM Box and Background color work and you can extend Field Widget with any fields with Drupal Form API. You get values from Drupal Form API and insert them in template preprocess and output in template as variable. A little bit messy, but when where will be a lot of code I will refactore it with plugins. For now it's OK to do it straightforward in functional way.
I can add these fields as well and make configuration form to enable this functionality in EPT Core if it's needed on site:
https://www.drupal.org/project/ept_core â
It's not hard to implement gradient generator like this:
https://www.w3schools.com/colors/colors_gradient.asp
Or find jquery/javascript library for generating gradient and include it with EPT Core.
Also, as an option, you can add Custom CSS field, generate gradient on another service and insert it:
https://cssgradient.io/
Hi john_b, it looks like a conflict with other jQuery UI library. jQuery UI Tabs checks IDs on the page and if ui-id-1 ID already exists, then it tries next one ui-id-2. Check what element already uses ui-id-1, I can't find a way to define these tabs IDs, because it's not provided in jQuery UI tabs documentation:
https://api.jqueryui.com/
https://jqueryui.com/tabs/
It's somewhere inside jQuery UI API. I can only suggest to use nth-child() for CSS and add custom anchor in HTML. Also jQuery UI Tabs provides API to open needed tabs on page loading, there is also setting in EBT Settings.
I have no idea how to make jQuery UI Tabs more consistant, I asked ChatGPT, but it also doesn't have any ideas.
Hi gmarez8, I added fields for all wrappers in 'Elements additional classes' fieldset:
You can update module and use bootstrap classes for the wrappers:
https://www.drupal.org/project/ept_hero/releases/1.4.6 â
I see what you mean, usually on commercial project, I use different predefined variants. I create predefined styles and separate them with View Modes, then you need to create own template for each view mode with all needed classes. It's possible to choose view mode and edit page using Paragraph View Mode or Paragraphs View Modes modules:
https://www.drupal.org/project/paragraph_view_mode â
https://www.drupal.org/project/paragraphs_viewmode â
Here is article about overriding EPT templates:
https://www.drupal.org/project/ept_slideshow/issues/3406887
đŹ
How to override slideshow item template file?
Fixed
Then you don't need to select 15 classes on edit form and select only Variant (predefined View Mode). It looks harder to implement and create content. But if you will see from Content Editor perspective, it's easier to select Variant instead of remembering Bootstrap Grid classes. It's easier to switch from Bootstrap to Tailwind or own Desing System when all classses are stored in templates than go through all pages and change classes manually.
In the case you have only 20-30 pages and you need to create dozens of these sites quickly and you will create pages by yourself. This approach with fields for all elements will work. I agree it's worth it then. OK, let's try to achieve this. I will add collapsed fieldset with textfields for additional classes and pass them in the template:
<div class="bg-inner {{ bg_inner_classes }}"></div>
<div class="ept-container {{ ept_container_classes }}">
Feel free to re-open this ticket if will need any help with extending Field Widget.
Hi gmarez8, you can install Fences module:
https://www.drupal.org/project/fences â
It allows to add additional classes for all fields wrappers.
I have additional module for Bootstrap Buttons:
https://www.drupal.org/project/ept_bootstrap_button â
Here is a bunch of Bootstrap Paragraphs:
https://www.drupal.org/project/drowl_paragraphs_bs â
I'm not sure what exactly you want to do with additional classes. All EPT paragraphs has or can have Additional Classes setting. It's possible to extend Field Widget for EPT Settings field and add any number of additional fields. But then it will look too messy for editors.
If you could specify what exactly want to extand with classes (First, Second buttons) then I will extend Hero Field Widget for EPT settings field.
levmyshkin â created an issue.
Whatâs blowing up?
Drupal 11 ships with jQuery 4.0.0-beta. One of the breaking changes in jQuery 4 is that the long-deprecated helper jQuery.isFunction() (and the alias $.isFunction) has been removed. The minified Waypoints 4.0.1 library that your theme/module loads still calls that helper. In the compressed file the call appears as t.isFunction, where t is the local reference to jQuery. Because the method no longer exists, the browser throws:
Uncaught TypeError: t.isFunction is not a function
right where Waypoints tries to register a waypoint.
Fix options:
1. Patch Waypoints (recommended)
Replace every occurence of $.isFunction(âŚ) with typeof ⌠=== 'function'
2. Add a one-line polyfill Before Waypoints loads, inject js
js if (typeof jQuery.isFunction !== 'function') { jQuery.isFunction = obj => typeof obj === 'function'; }
3. Use jQuery Migrate 4 plugin Load the official migrate plugin that re-adds removed helpers.
Quick Drupal-specific patch
Create my_module/js/jquery4-polyfills.js:
/**
* Tiny polyfills for libraries that still expect jQuery < 4.
*/
(( $, Drupal, drupalSettings ) => {
if (typeof $.isFunction !== 'function') {
$.isFunction = obj => typeof obj === 'function';
}
})(jQuery, Drupal, drupalSettings);
Then add this library to your theme/modulesâ libraries.yml before the Waypoints library to guarantee it is evaluated first.
Long-term
Track the âDeprecated t.isFunction call on D11â issue in the jQuery Waypoints queue; once a new release lands, remove your patch/polyfill.
Drupal
Audit any other contributed or custom scripts for calls to $.isFunction, $.isNumeric, $.trim, jQuery.type, etc.âall of them vanished in jQuery 4. Drupalâs upgrade status report will flag many of these automatically.
Drupal
Once Waypoints (and any similar libraries) are patched, Drupal 11 + jQuery 4 will run without the âisFunctionâ crash.
Hi Shane Birley, thank you for your report and patch! I applied it and released 1.4.6 version for EBT Countdown.
Working for me.
I found the problem:
* - clear: A boolean flag indicating that tokens should be removed from the
* final text if no replacement value can be generated.
It was set as FALSE, I changed it to TRUE and pushed changes in a new release:
https://www.drupal.org/project/glightbox/releases/1.0.15 â
Hello n-i, it must be media:* entity is not accessible in tokens. This field media:field_description is in media entity or in parent paragraph?
I updated logic for getting values from parent entities:
https://www.drupal.org/project/glightbox/issues/3511270
đ
Allow caption tokens paragraph access if there is a parent paragraph
Active
You don't need to update levmyshkin/glightbox library manually if you already have composer. Just run:
composer drupal/glightbox -W
or
composer drupal/glightbox --with-all-dependencies
It will update library from github automatically. As I see glightbox.min.css file was updated in 3.2.1 version:
https://github.com/levmyshkin/glightbox/releases/tag/3.2.1
https://github.com/levmyshkin/glightbox/blob/master/dist/css/glightbox.m...
Hi jennypanighetti, thank you for your report! I think it was made on purpose, because GLightbox is popup slider. But I agree, it's redundant functionality for one image popup. I added opacity: 0 for disabled arrows and released 3.2.1 version for GLightbox fork:
https://github.com/levmyshkin/glightbox/releases/tag/3.2.1
Hi marianrk, thank you for your patch! I updated slick.js file on levmyshkin/slick repository and created a new release for Slick Slider library:
https://github.com/levmyshkin/slick/releases/tag/v1.8.3
To update Slick Slider use command:
composer update drupal/ebt_slick_slider --with-all-dependencies
You need to change this template:
modules/contrib/ept_tiles/templates/paragraph--ept-tiles-item--default.html.twig
{#
/**
* @file
* Default theme implementation to display a paragraph.
*
* Available variables:
* - paragraph: Full paragraph entity.
* Only method names starting with "get", "has", or "is" and a few common
* methods such as "id", "label", and "bundle" are available. For example:
* - paragraph.getCreatedTime() will return the paragraph creation timestamp.
* - paragraph.id(): The paragraph ID.
* - paragraph.bundle(): The type of the paragraph, for example, "image" or "text".
* - paragraph.getOwnerId(): The user ID of the paragraph author.
* See Drupal\paragraphs\Entity\Paragraph for a full list of public properties
* and methods for the paragraph object.
* - content: All paragraph items. Use {{ content }} to print them all,
* or print a subset such as {{ content.field_example }}. Use
* {{ content|without('field_example') }} to temporarily suppress the printing
* of a given child element.
* - attributes: HTML attributes for the containing element.
* The attributes.class element may contain one or more of the following
* classes:
* - paragraphs: The current template type (also known as a "theming hook").
* - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an
* "Image" it would result in "paragraphs--type--image". Note that the machine
* name will often be in a short form of the human readable label.
* - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a
* preview would result in: "paragraphs--view-mode--preview", and
* default: "paragraphs--view-mode--default".
* - view_mode: View mode; for example, "preview" or "full".
* - logged_in: Flag for authenticated user status. Will be true when the
* current user is a logged-in member.
* - is_admin: Flag for admin user status. Will be true when the current user
* is an administrator.
*
* @see template_preprocess_paragraph()
*
* @ingroup themeable
*/
#}
{%
set classes = [
'block',
'ept-paragraph',
'ept-paragraph-tiles-item',
'paragraph--type--' ~ paragraph.bundle|clean_class,
'ept-paragraph--type--' ~ paragraph.bundle|clean_class,
view_mode ? 'paragraph--view-mode--' ~ view_mode|clean_class,
not paragraph.isPublished() ? 'paragraph--unpublished',
'paragraph-id-' ~ paragraph.id(),
]
%}
{% block paragraph %}
<div{{ attributes.addClass(classes) }}>
{% if paragraph.field_ept_clickable_tile.value and content.field_ept_tiles_link|render %}
<a href="{{ content.field_ept_tiles_link.0['#url'] }}" class="ept-tile"
{% if link_in_a_new_tab %}
target="_blank"
{% endif %}>
{% endif %}
<div class="inner">
{% block content %}
{% if paragraph.field_ept_clickable_tile.value %}
{{ content|without('field_ept_tiles_link', 'field_ept_clickable_tile', 'field_ept_settings') }}
{% else %}
{{ content|without('field_ept_clickable_tile', 'field_ept_settings') }}
{% endif %}
{% endblock %}
</div>
{% if paragraph.field_ept_clickable_tile.value and content.field_ept_tiles_link|render %}
</a>
{% endif %}
</div>
{% endblock paragraph %}
{{ styles|raw }}
There are some updates to hide EPT Settings fields:
{{ content|without('field_ept_clickable_tile', 'field_ept_settings') }}
And display generated styles from Design Options:
{{ styles|raw }}
If you installed module with composer, it's possible to patch this module, but it will be easier to override twig template in your custom theme:
paragraph--ept-tiles-item--default--custom.html.twig
Hi pcambra, I moved calculation for caption in separate service:
$formatter_service = \Drupal::service('glightbox.formatter');
$caption = $formatter_service->getCaption($variables);
I thought about alter hooks first, but caption will be rewritten anyway if alter will be before calculation. And for alter hook after calculation, it will get already replaced tokens. Maybe two alter hooks before and after calculation could help, but I don't know about all the cases for captions. I found that devs still use Image field without Media and maybe different another problems will buble up later.
Hi Renato, thank you for your MR! Looks good for me.
Hi Renato, thank you for your MR! Looks good for me.