Live feed

⚡️ Live updates new comments are added automatically.
🇺🇸United States chrisfromredfin Portland, Maine

I have one small nit (filename) and then this needs manual testing but then is probably ready to go.

🇺🇸United States wattdesigns

OK, so more details. I have a view with contexual filters that makes a signin sheet for a registration content type. Everything about the view works like a champ. The content type is referenced using /training/%/main and the view that I have has a path of /training/%/main/signin with the % being the node ID for the filter. Originally, I made a page display (that works) and use the path /training/%/main/signin and then made a default menu tab for it. Next, I copied that display and kept the same path, but made a menu tab for it. So if I go to /training/169/main I see no tabs, and if I go to /training/169/main/signin I get to see my view filtered by node 169 PLUS it has two menu tabs at the top. That's my best case so far.

So, next I made a module called viewstabsignin to allow for other modules for other tabs. I created a directory and called it it viewtabsignin. Next I created a file called viewstabsignin.info.yml and put it in the directory. That file is pasted below:

name: Views Tab Signin
type: module
description: My custom module for Drupal 10 to add a views tab parent menu
package: Custom
version: 1.x
core: 10.x
dependencies:
- drupal:views

Next I made a file called viewstabsignin.links.menu.yml in that directory. It includes this:

viewstabsignin.link_id:
title: Sign-in
route_name: view.registration_lists.sign-in
menu_name: signin
weight: 99

I updated the title, the route_name to match my view, the menu_name to be what I wanted it to say, and left the Weight for now.

When I upload that to my modules directory, I get white screens when trying to view modules.

That's where I'm stuck. I'll look around for a better sample info file.

🇺🇸United States chrisfromredfin Portland, Maine

Actually, each of these bullets should be its own sub-issue. If you want to collect all modal-related a11y issues, you can do a meta and do each bullet as a child; but, we need to keep scope as SMALL as possible for issues. Moving this one back to RTBC.

🇺🇸United States dafeder Philadelphia, PA

Thanks chr.fritsch. Looking forward to a D11-compatible release, for now getting by with the patch plus https://github.com/mglaman/composer-drupal-lenient

🇺🇸United States chrisfromredfin Portland, Maine

I have moved the patch into an MR. I'm leaving it Needs Work, though. I have commented on the MR.

🇦🇷Argentina ffernandezz Buenos Aires

Hi Samhaldia,

How were you able to solve this? I'm having the same problem and I thought it was a problem with the IDs that were generated.

Thank you very much

🇺🇸United States bnjmnm Ann Arbor, MI

Documenting where I'm at.

There are three test cases: ['xb/node/2', 'xb/xb_page/2', 'xb/node/3']
It will fail on the first of the three cases, regardless of order

It can pass if an arbitrary wait is added to the test right after the first step of calling cy.loadURLandWaitForXBLoaded({ url: testCase }); Here is a run where that wait is added + and has a bunch of things logged - all request times, the # and duration between re-renders of several components, and the time it takes for src to load in the preview iframes. Enough is logged that it's a bit intense, but I suspect the info we need is in there.
https://git.drupalcode.org/project/experience_builder/-/jobs/3652460

Removes the wait, fails on xb/node/2 (the first), has all the same things logged
https://git.drupalcode.org/project/experience_builder/-/jobs/3652423

Removes the wait, fails on xb/xb_page/2' (the first), has all the same things logged
https://git.drupalcode.org/project/experience_builder/-/jobs/3652698

Since it is only the first run that fails AND it is fixed with an arbitrary wait at the beginning of the test, then one possibility is slowness from a resource that is then cached thus loading quick enough for later test runs Each request is logged with duration so I’ll dig into that more.

🇵🇱Poland salmonek

To be honest I couldn't reproduce the 404 itself. The endpoint is defined in the same module as Ubb plugin. However your issue made me to realize that with your configuration (Full Screen + Templates form Plugin Pack) that plugin is not required and should be disabled in editor.
I'm attaching a patch which updates the function to determine whether any of premium plugins is enabled (Templates plugin is considered as premium, however for Drupal it's free), so it won't return false positive in case Plugin Pack's Templates are enabled. Additionally Ubb is being disabled if no premium plugins are loaded or CKEditor 5 version is below v44 (where it is completely useless).

The last thing to mention is that if you have "CKEditor 5 Full-screen Mode" and "CKEditor 5 Templates" modules enabled you can safely disable " CKEditor 5 Premium Features"

🇺🇸United States chrisfromredfin Portland, Maine

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

Automatically closed - issue fixed for 2 weeks with no activity.

🇺🇸United States chrisfromredfin Portland, Maine

Next step on this is to please read through all of Ralf's commentary in #41, identify remaining tasks, and put them IN THE ISSUE SUMMARY please!

🇺🇸United States kevinfunk

With the MR applied on my Drupal 11 site, I was able to change the order of the tabs, set a custom label, add a custom class, and disable a tab.

🇺🇸United States chrisfromredfin Portland, Maine

Adding related issue here - just to note that we _may_ at some point (and it may be a future/follow-on issue) want to change the button action text based on the source plugin. So once you've picked some we may want "Apply selected recipes" for the recipe sources, and "Install selected projects" for the modules, ex.g.

  • phenaproxima committed b7328154 on 1.0.x
    Issue #3474432 by phenaproxima, poker10, thejimbirch, mglaman, pameeela...
🇺🇸United States chrisfromredfin Portland, Maine

I am going to close this with (Outdated).

Now, all the buttons just say "Select" or "Deselect" which is The Right Thing™ - BUT, when we work out the bulk action bar at the bottom, we may want to differentiate or come up with language there. I will reference this issue on that one.

🇺🇸United States douggreen Winchester, VA

Oh wait, this will work, I just need to configure it differently. As for tests ... I apologize in advance, but I'll leave that for someone else.

🇭🇺Hungary karol haltenberger

This one is more up-to-date: https://www.drupal.org/project/iframe_video/issues/3335041 📌 Need to add drupal dependency in info.yml file. RTBC

🇨🇭Switzerland berdir Switzerland

Looks good to me, hook_process_HOOK() was removed a long time ago and doesn't exist anymore.

🇺🇸United States douggreen Winchester, VA

@anybody this solution didn't actually solve our problem, so I'm going to suggest another solution. Our user's were still banned, but after a few tries now. I think we need config that just doesn't ban based on honeypot time.

🇺🇸United States phenaproxima Massachusetts

Thanks, all. Merged into 1.x.

🇺🇸United States EHLOVader

There was a comment once, but it was removed for some reason
It would be good to add that back I think

🇩🇪Germany tobiasb Berlin

You need to install address module v1 (Which does not support Drupal core 11). I added a link.

🇺🇸United States thejimbirch Cape Cod, Massachusetts

Stellar! Marking RTBC

🇩🇪Germany Christian.wiedemann

Hi, yes getVisibleChildren is wrong because it does not unset the element if it is empty. I optimzed the check and I also add a Unit tests for differnt cases. Have a look, not sure if I match all cases. I also go one level deeper for the check if the children are array as well.

🇺🇸United States freelock Seattle

New action plugin -- this is working on a site in a custom module -- only difference is updating the namespace to eca_cache and updating the plugin id.

🇺🇸United States chrisfromredfin Portland, Maine

This looks good. Leslie and I realized while manually testing, though it's going to be a follow-up, is that on the detail modal it's showing for 0 installs - it should be hiding altogether for 0 installs like on the cards. But again, that's a new issue.

🇺🇸United States erutan

Sorry about missing that - I have phpstan running in my dev environment again though that should have been obvious.

It seems the typo from ten years ago was putting [rebuild] on a new line (as well as duplicating it), rebuild seems to just be there to help restructure the data and then isn't needed after.

elseif (!empty($values['tablefield'])) {
      $values['rebuild'] = $values['tablefield']['rebuild'];
      $values['value'] = $values['tablefield']['table'];
      unset($values['tablefield']['rebuild']);
    }

The elseif statement below it only unsets rebuild.

elseif (!empty($values['value']['tablefield'])) {
      $values['rebuild'] = $values['value']['tablefield']['rebuild'];
      $values['value'] = $values['value']['tablefield']['table'];
      unset($values['value']['tablefield']['rebuild']);
    }

Does that seem right?

🇺🇸United States firewaller

FYI this patch applies to 8.x-1.17 but introduces a regression when viewing the node's Translation Jobs tab:
Error: Class "Drupal\tmgmt\Entity\ListBuilder\Url" not found in Drupal\tmgmt\Entity\ListBuilder\JobListBuilder->getDefaultOperations() (line 41 of /opt/app-root/src/web/modules/contrib/tmgmt/src/Entity/ListBuilder/JobListBuilder.php).
I will reroll a new patch.

🇬🇧United Kingdom joachim

Couldn't this be done by adding the 'Display a specified number of items' pager to your view, and controlling which items show with that?

🇺🇸United States freelock Seattle

I'm a bit rushed at the moment, but I created an action module for a client to get this done:


namespace Drupal\eca_cache\Plugin\Action;

use Drupal\Core\Access\AccessResultInterface;
use Drupal\Core\PageCache\ResponsePolicy\KillSwitch;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Session\AccountInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\eca\Plugin\Action\ConfigurableActionBase;

/**
 * Provides a Page Cache Kill Switch action.
 *
 * @Action(
 *   id = "page_cache_kill_switch",
 *   label = @Translation("Page Cache Kill Switch"),
 *   description = @Translation("Kill the page cache for this page")
 * )
 */
final class PageCacheKillSwitch extends ConfigurableActionBase {

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition): static {
    $self = parent::create(
      $container,
      $configuration,
      $plugin_id,
      $plugin_definition
    );
    $self->KillSwitch = $container->get('page_cache_kill_switch');
    return $self;
  }

  /**
   * {@inheritdoc}
   */
  public function execute(): void {
    $this->KillSwitch->trigger();
  }

}

Automatically closed - issue fixed for 2 weeks with no activity.

  • podarok committed bfc3b7e3 on 1.0.x
    Merge branch '3492291-add-demo-content' into '1.0.x'
    
    [#3492291] fix:...
🇬🇧United Kingdom joachim

Should this part be in the NAV element, since it's not links?

  {% if display_count and current %}
    {% block count %}
      {% trans %}
        <p class="entity-pager-item-count">{{ current }} of {{ count }}</p>
      {% endtrans %}
    {% endblock %}
  {% endif %}
🇸🇪Sweden agogo

This is the custom field widget I made, if anyone else needs a temporary fix:

<?php

namespace Drupal\custom_module\Plugin\Field\FieldWidget;

use Drupal\commerce_order\Adjustment;
use Drupal\commerce_price\Price;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\WidgetBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * Plugin implementation of 'commerce_adjustment_custom'.
 *
 * @FieldWidget(
 *   id = "commerce_adjustment_custom",
 *   label = @Translation("Adjustment (Custom)"),
 *   field_types = {
 *     "commerce_adjustment"
 *   }
 * )
 */
class CustomAdjustmentWidget extends WidgetBase {

  /**
   * {@inheritdoc}
   */
  public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
    /** @var \Drupal\commerce_order\Adjustment $adjustment */
    $adjustment = $items[$delta]->value;

    $element['#type'] = 'container';
    $element['#attributes']['class'][] = 'form--inline';
    $element['#attached']['library'][] = 'commerce_price/admin';

    /** @var \Drupal\Component\Plugin\PluginManagerInterface $plugin_manager */
    $plugin_manager = \Drupal::service('plugin.manager.commerce_adjustment_type');

    $types = [
      '_none' => $this->t('- Select -'),
    ];
    foreach ($plugin_manager->getDefinitions() as $id => $definition) {
      if (!empty($definition['has_ui'])) {
        $types[$id] = $definition['label'];
      }
    }

    $element['type'] = [
      '#type' => 'select',
      '#title' => $this->t('Type'),
      '#options' => $types,
      '#weight' => 1,
      '#default_value' => ($adjustment) ? $adjustment->getType() : '_none',
    ];

    // If this is being added through the UI, the source ID should be empty,
    // and we will want to default it to custom.
    $source_id = ($adjustment) ? $adjustment->getSourceId() : NULL;
    $element['source_id'] = [
      '#type' => 'value',
      '#value' => empty($source_id) ? 'custom' : $source_id,
    ];
    // If this is being added through the UI, the adjustment should be locked.
    // UI added adjustments need to be locked to persist after an order refresh.
    $element['locked'] = [
      '#type' => 'value',
      '#value' => ($adjustment) ? $adjustment->isLocked() : TRUE,
    ];

    $element['percentage'] = [
      '#type' => 'value',
      '#value' => ($adjustment) ? $adjustment->getPercentage() : NULL,
    ];

    $states_selector_name = $this->fieldDefinition->getName() . "[$delta][type]";
    $element['definition'] = [
      '#type' => 'container',
      '#weight' => 2,
      '#states' => [
        'invisible' => [
          'select[name="' . $states_selector_name . '"]' => ['value' => '_none'],
        ],
      ],
    ];
    $element['definition']['label'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Label'),
      '#size' => 20,
      '#default_value' => ($adjustment) ? $adjustment->getLabel() : '',
    ];
    $element['definition']['amount'] = [
      '#type' => 'commerce_price',
      '#title' => $this->t('Amount'),
      '#default_value' => ($adjustment) ? $adjustment->getAmount()->toArray() : NULL,
      '#allow_negative' => TRUE,
      '#states' => [
        'optional' => [
          'select[name="' . $states_selector_name . '"]' => ['value' => '_none'],
        ],
      ],
      '#attributes' => ['class' => ['clearfix']],
    ];
    $element['definition']['included'] = [
      '#type' => 'checkbox',
      '#title' => $this->t('Included in the base price'),
      '#default_value' => ($adjustment) ? $adjustment->isIncluded() : FALSE,
    ];

    return $element;
  }

  /**
   * {@inheritdoc}
   */
  public function massageFormValues(array $values, array $form, FormStateInterface $form_state) {
    foreach ($values as $key => $value) {
      if ($value['type'] == '_none') {
        continue;
      }
      // The method can be called with invalid or incomplete data, in
      // preparation for validation. Passing such data to the Adjustment
      // object would result in an exception.
      if (empty($value['definition']['label'])) {
        $form_state->setErrorByName('adjustments[' . $key . '][definition][label]', $this->t('The adjustment label field is required.'));
        continue;
      }

      $values[$key] = new Adjustment([
        'type' => $value['type'],
        'label' => $value['definition']['label'],
        'amount' => new Price($value['definition']['amount']['number'], $value['definition']['amount']['currency_code']),
        'percentage' => !empty($value['percentage']) ? $value['percentage'] : NULL,
        'source_id' => $value['source_id'],
        'included' => $value['definition']['included'],
        'locked' => $value['locked'],
      ]);
    }
    return $values;
  }

}

🇧🇷Brazil stephencamilo curitiba

My main motivation to create this Feature Request is to change the amount of admin users per site.
Some projects need more than 3.

🇨🇦Canada awasson

Hi Bryan,

Yes, both databases are on the same server which is pretty standard for the Drupal/CiviCRM sites that I maintain. CiviCRM entities are made available to Drupal via a CiviCRM Entities module.

I've been developing in CiviCRM since Drupal 6 and prior to Drupal 9/10 we used to add a hard coded DB array to the settings.php file to tell Views about the CiviCRM database. It was the form of:

$databases['default']['default']['prefix']= [
'default' => '',
'civicrm_acl' => '`database_civicrm`.',
'civicrm_acl_cache' => '`database_civicrm`.',
'civicrm_acl_contact_cache' => '`database_civicrm`.',
'civicrm_acl_entity_role' => '`database_civicrm`.',
. . . More definitions . . .,
];

I've opened up a conversation of the mattermost channel that handles the CiviCRM Entities module to see if there is a database api method that recognizes the database that is responsible for the appropriate entities.

The actual error I get is as follows:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'database_civicrm.civicrm_event' doesn't exist: SELECT node_field_data.nid AS "nid", NULL AS "civicrm_event_start_date", NULL AS "id", :view_combined_event_listing_block_1_combined_event_listing_block_1 AS "_view_id", NULL AS "_order_0" FROM "node_field_data" "node_field_data" WHERE ("node_field_data"."status" = :db_condition_placeholder_0) AND ("node_field_data"."type" IN (:db_condition_placeholder_1)) UNION SELECT node_field_data.nid AS "nid", NULL AS "civicrm_event_start_date", NULL AS "id", :view_drupal_event_listing_default_drupal_event_listing_default AS "_view_id", NULL AS "_order_0" FROM "node_field_data" "node_field_data" WHERE ("node_field_data"."status" = :db_condition_placeholder_2) AND ("node_field_data"."type" IN (:db_condition_placeholder_3)) UNION SELECT NULL AS "nid", civicrm_event.start_date AS "civicrm_event_start_date", civicrm_event.id AS "id", :view_events_listing_default_events_listing_default AS "_view_id", civicrm_event.start_date AS "_order_0" FROM "civicrm_event" "civicrm_event" WHERE (("civicrm_event"."is_active" = :db_condition_placeholder_4) AND ("civicrm_event"."is_public" = :db_condition_placeholder_5)) AND (((DATE_FORMAT((civicrm_event.start_date + INTERVAL -25200 SECOND), '%Y-%m-%d\T%H:%i:%s') >= DATE_FORMAT(('2024-12-10T07:00:00' + INTERVAL -25200 SECOND), '%Y-%m-%d\T%H:%i:%s'))) OR ((DATE_FORMAT((civicrm_event.end_date + INTERVAL -25200 SECOND), '%Y-%m-%d\T%H:%i:%s') >= DATE_FORMAT(('2024-12-10T07:00:00' + INTERVAL -25200 SECOND), '%Y-%m-%d\T%H:%i:%s')))) ORDER BY "_order_0" ASC LIMIT 11 OFFSET 0; Array ( [:db_condition_placeholder_0] => 1 [:db_condition_placeholder_1] => drupal_event [:view_combined_event_listing_block_1_combined_event_listing_block_1] => combined_event_listing:block_1 [:db_condition_placeholder_2] => 1 [:db_condition_placeholder_3] => drupal_event [:view_drupal_event_listing_default_drupal_event_listing_default] => drupal_event_listing:default [:db_condition_placeholder_4] => 1 [:db_condition_placeholder_5] => 1 [:view_events_listing_default_events_listing_default] => events_listing:default )

If I can't find a solution that uses the database API, I'll likely just write a module and run the queries in code. Hopefully I can though because this would make a lot of Drupal/CiviCRM listings better; not just events but newsletters and other things that would benefit from being listed together.

Cheers,
Andrew

🇺🇸United States shelane

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

🇺🇸United States erindarri

I applied the diff and this merges cleanly.
GitLab pipeline is still passing.

Automatically closed - issue fixed for 2 weeks with no activity.

🇺🇸United States sassafrass

We are experiencing this issue as well. I applied the patch to 3.0.1 successfully. However, as others have noted, the block content was no longer displayed. I tried completely uninstalling, deleting all blocks and config, removed the module and code completely from my code base, and then reinstalling, applying the patch, and re-configuring, but the languages still were not displayed. We reverted everything and applied a modified block preprocess function (see: https://www.drupal.org/project/gtranslate/issues/3396734#comment-15402378 🐛 Doesn't work correctly when 2 gtranslate blocks are enabled Active ) to remove the duplicate block content being generated.

🇺🇸United States dlfaison

I installed the patch #20 (that Joseph mentioned above in the parent issue link) and the module works now without and error on All day.

Thank you all for all of the help.

🇺🇸United States wattdesigns

This was so much easier in Drupal 7. Sigh. I'm sure there's a super cool reason they changed this, but it's sure frustrating.

  • shelane committed 7dc6acbc on 4.x
    Issue #3492863 by shelane: Add Bluesky as a share button
    
🇺🇸United States sassafrass

We are experiencing this issue as well. We used a modified version of the preprocessor function in #8 🐛 Doesn't work correctly when 2 gtranslate blocks are enabled Active to address. This fixed the problem for us.

🇺🇸United States wattdesigns

I got a WSOD when I uploaded my module. Looks like my error is The 'core_version_requirement' key must be present???

🇬🇧United Kingdom joachim

There seem to be some unrelated changes in this patch.

🇨🇦Canada nikathone Ontario

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

🇬🇧United Kingdom joachim

> we can’t have a single view with different displays for those content types

AFAICT you can.

I just made a view of nodes, with 2 block displays. One block has no sort order, and the other sorts by title. I set both blocks to show on nodes, and I see two pagers, with different prev/next links and a different display count.

Could you explain more about what doesn't work?

  • jidrone committed c808f959 on 1.0.x
    Issue #3486799 by anacona16, jidrone: Flag layout - Make "Inset Media"...
🇩🇪Germany Christian.wiedemann

ah sorry, missunderstood the comment. I just opend the library but there are no stories inside the ui patterns in any test module. A test module would be great and some render tests.

Here is my list what we should change:

  • Move this hook function ui_patterns_field_config_delete(FieldConfigInterface $field_config): void TO ::UiPatternsEntitySchemaSubscriber
  • Remove ui_patterns_plugin_filter_block__ui_patterns_alter
  • Remove ui_patterns_test_theme. I think we don't need it anymore
  • Remove test components alert, close_button, prop_types_tests
  • Remove ui-patterns-actions.html.twig
  • Not sure about ui_patterns_legacy.
  • Not sure about ui_patterns_blocks.
  • Not sure about ui_patterns_field_formatters.
🇺🇸United States jrockowitz Brooklyn, NY

We could also move this code to the webform_deprecated project.

🇬🇧United Kingdom catch

catch changed the visibility of the branch lms-dropdown to hidden.

🇬🇧United Kingdom catch

catch changed the visibility of the branch 0-2-x-backports to hidden.

🇬🇧United Kingdom catch

catch changed the visibility of the branch classes-update-fix to hidden.

🇬🇧United Kingdom catch

catch changed the visibility of the branch incorrect-roles-element-name to hidden.

🇬🇧United Kingdom catch

catch changed the visibility of the branch learning-path-take-access to hidden.

🇬🇧United Kingdom catch

catch changed the visibility of the branch lp-usage-check-followup to hidden.

🇬🇧United Kingdom catch

catch changed the visibility of the branch fix-membership-group-type to hidden.

🇬🇧United Kingdom catch

catch changed the visibility of the branch lp-warnings-fix to hidden.

Production build 0.71.5 2024