I have one small nit (filename) and then this needs manual testing but then is probably ready to go.
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.
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.
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
Automatically closed - issue fixed for 2 weeks with no activity.
I have moved the patch into an MR. I'm leaving it Needs Work, though. I have commented on the MR.
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
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.
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"
chrisfromredfin → made their first commit to this issue’s fork.
Automatically closed - issue fixed for 2 weeks with no activity.
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!
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.
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 6660e8b0 on 1.0.x
Issue #3492820 by phenaproxima, rajab natshah, anup04sust: The "...
-
phenaproxima →
committed b7328154 on 1.0.x
Issue #3474432 by phenaproxima, poker10, thejimbirch, mglaman, pameeela...
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.
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.
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
Looks good to me, hook_process_HOOK() was removed a long time ago and doesn't exist anymore.
@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.
Thanks, all. Merged into 1.x.
-
phenaproxima →
committed 4c3fe673 on 1.x
Issue #3474432 by phenaproxima, poker10, thejimbirch, mglaman, pameeela...
There was a comment once, but it was removed for some reason
It would be good to add that back I think
richarda253 → created an issue.
You need to install address module v1 (Which does not support Drupal core 11). I added a link.
Thanks.
Stellar! Marking RTBC
Patch for 8.x-1.17 attached.
Still interested.
Still interested.
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.
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.
freelock → opened merge request !460
thanks!
chrisfromredfin → credited leslieg → .
-
chrisfromredfin →
committed 7928200f on 2.0.x authored by
omkar-pd →
Issue #3477314 by shalini_jha, lostcarpark, omkar-pd, chrisfromredfin,...
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.
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?
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.
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?
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.
freelock → created an issue.
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 %}
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;
}
}
agogo → created an issue.
My main motivation to create this Feature Request is to change the amount of admin users per site.
Some projects need more than 3.
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
jonathandealmeida → created an issue.
Thank you.
-
shelane →
committed 8bc051a5 on 4.x authored by
joachim desarmenien →
Issue #3477719 by joachim desarmenien: Populate copy link's popup on...
I applied the diff and this merges cleanly.
GitLab pipeline is still passing.
Automatically closed - issue fixed for 2 weeks with no activity.
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.
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.
Closing in favour of 🐛 properties that support tokens should say in the UI Active .
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.
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.
christian.wiedemann → made their first commit to this issue’s fork.
I got a WSOD when I uploaded my module. Looks like my error is The 'core_version_requirement' key must be present???
There seem to be some unrelated changes in this patch.
nikathone → made their first commit to this issue’s fork.
> 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?
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.
shelane → opened merge request !24
catch → opened merge request !52
We could also move this code to the webform_deprecated project.
catch → changed the visibility of the branch incorrect-roles-element-name to hidden.
catch → changed the visibility of the branch learning-path-take-access to hidden.
catch → changed the visibility of the branch lp-usage-check-followup to hidden.
catch → changed the visibility of the branch fix-membership-group-type to hidden.