Account created on 26 June 2008, over 16 years ago
#

Recent comments

🇨🇦Canada Jaypan

I see that tarball support has been removed from Drupal core as of 10.4.0 :

🇨🇦Canada Jaypan

It sounds like it's best to just use the calculator class to round. Thanks for the explanations!

🇨🇦Canada Jaypan

Thank you :) I wondered if anyone cared, it's nice to know someone found it useful!

🇨🇦Canada Jaypan

Thanks, I didn't know round was the better option. It would be nice to have a Price::round() helper method then. Is there any reason to not add that to Price? I'll put together a PR if there is no reason to not have it.

🇨🇦Canada Jaypan

Somehow the base table is missing from the database. Try uninstalling and re-installing the Media module.

🇨🇦Canada Jaypan

Preprocess functions are how you make variables available to templates. First, you need the template base theme (you can figure this out by enabling template debugging in services.php, then examining the HTML comments). If the template you are working with is user.html.twig, you can implement hook_preproces_user(). Eg:

function HOOK_preprocess_user(&$vars) {
  $vars['some_module_setting'] = \Drupal::config('some_module')->get('setting');
}

Every key of $vars becomes a twig variable, so you can now use in in the user.twig.html template:

{{ some_module_setting }}
🇨🇦Canada Jaypan

This file is missing: libraries/bootstrap/dist/js/bootstrap.bundle.min.js

I'd guess something happened to your libraries folder.

🇨🇦Canada Jaypan

Either the path to the images is wrong, or the image files don't exist on that path. You'll have to debug to determine which.

🇨🇦Canada Jaypan

Nice response, that's a good summary.

🇨🇦Canada Jaypan

if I make a D11 site right now using the legacy template, there should be no problems, right?

You'll have to deal with the troubles that come from trying to change that template to a different one  in the future. Also, any time you choose a less traveled path, you'll find less support when you run into issues you need support for. Few people are using tarballs or the legacy template, so if/when you run into issues with these, there aren't a lot of people who can provide support, particularly as the people who provide support generally stay on the beaten path (the supported Drupal Composer template).

🇨🇦Canada Jaypan

I'm in shared hosting, and a custom location of the document root is not allowed.

If this is what is stopping you from using Composer, you can change the webroot location in composer.json to whatever your actual webroot is.

🇨🇦Canada Jaypan

I've verified it is indeed the "Measurement ID" and not the property ID (an integer). It's a bit of a nightmare to find in the analytics control panel. Start with the gear at the bottom left, and started digging around for this ID.

🇨🇦Canada Jaypan

Reported as spam.

🇨🇦Canada Jaypan

Reported as spam.

🇨🇦Canada Jaypan

Above post is reported as spam.

🇨🇦Canada Jaypan

I'd hypothesize that Drupal relies on these at a very deep Symfony level, which is why core won't work when they are disabled. That said, the super globals aren't used in Drupal development for, as the thread you linked to mentions, the Syfmony Request object is used instead, as super global values are stored on that object in ParameterBags, and retrieved from there.

🇨🇦Canada Jaypan

I've reported it as spam.

🇨🇦Canada Jaypan

The best way to determine if it's secure is to hire a penetration tester, point at the code you want tested, and have them test it.

🇨🇦Canada Jaypan

Depending on your budget you can also hire penetration testers to test the code. You can point them at the section of your system you want to test and they will try to hack it for you and give you any feedback.

🇨🇦Canada Jaypan

There are few differences between any of Drupal versions 8 and above, so if you find a tutorial for any of them, it will mostly be relevant to other versions, with maybe minor changes.

🇨🇦Canada Jaypan

You do not need drupal/core in composer.json, drupal/core-recommended has drupal/core as a dependency.

🇨🇦Canada Jaypan

Is your name and location relevant to the problem?

🇨🇦Canada Jaypan

I believe you need to declare the default configuration in an override of defaultConfiguration() in your plugin, declaring the keys.

🇨🇦Canada Jaypan

It's not behind, Drupal 7 is still supported.

🇨🇦Canada Jaypan

Instead of this:

$response->addCommand(
  new ReplaceCommand(
    "#edit-names",
    $renderer->render($form['name_container']['names'])
  )
);

Try just returning the array without rendering it:

$response->addCommand(
  new ReplaceCommand(
    "#edit-names",
    $form['name_container']['names']
  )
);
🇨🇦Canada Jaypan

For a test, I'd jack up the memory and see if it loads. If it still doesn't load, you have a problem in your code, creating some kind of loop or something. If it does load, then you have some code using excessive memory and it will require debugging to determine what process is working hard.

🇨🇦Canada Jaypan

This is the perfect opportunity to use a JavaScript debugger in the JavaScript console. All main browsers have one. You start putting breakpoints in the code, and figure out where it is not working, to narrow down the exact problem.

Watch a video or two on YouTube, it's not hard to learn to use a debugger, then you can give more specific information as toward which line of code is not passing, and why not.

🇨🇦Canada Jaypan

When you say it is not working on what system what are you expecting it to do, and what is it actually doing?

🇨🇦Canada Jaypan

The problem is that your forms  all end up with the same Form ID, as node forms are not set up to use a unique form ID for every instance, but rather only differ by content type, and action. EntityForm::getFormId():

public function getFormId() {
    $form_id = $this->entity
        ->getEntityTypeId();
    if ($this->entity
        ->getEntityType()
        ->hasKey('bundle')) {
        $form_id .= '_' . $this->entity
            ->bundle();
    }
    if ($this->operation != 'default') {
        $form_id = $form_id . '_' . $this->operation;
    }
    return $form_id . '_form';
}

If you want to fix your issue, it will take a bit of work.

1. Extend the NodeForm class, and override getFormId. You'll need to add something to ensure it returns a unique value for every instance - likely appending the Node ID or something.

2. Implement hook_entity_type_alter(), and set the form class for nodes to your class:

use Drupal\example\Form\FormOverrideClass;

function hook_entity_type_alter(array &$entity_types) {
    
    /** @var \Drupal\Core\Entity\EntityTypeInterface[] $entity_types */
    $entity_types['node']->setFormClass(FormOverrideClass::class);
}
🇨🇦Canada Jaypan

As I understand it, companies that block VPNs rely on services that are constantly working to determine what IP addresses the VPNs are using. You would need to sign up for one of those services and integrate with Drupal.

🇨🇦Canada Jaypan

It's probably bots looking for attack vectors. But instead they're getting 'page not found', because those pages don't exist.

The list of 'page not found' errors is so you can figure out if you've got bad links, or deleted content on your site that people are visiting, so that you can decide if you want to create the pages for better SEO or user experience or what not.

🇨🇦Canada Jaypan

it only affects sites that do not have a default site configuration

That's not exactly correct, as that would be pretty much every Drupal site, since the default would be Drupal out of the box. From the page:

Under certain uncommon site configurations

And:

The issue is mitigated by the fact that several non-default site configurations must exist simultaneously for this to occur.

While it didn't go into what these configurations would be, as long as you follow the upgrade instructions, you won't have to worry about it.

You can see the actual code that was changed here: https://git.drupalcode.org/project/drupal/-/commit/4a0028124e76440761a5d...

🇨🇦Canada Jaypan

I experimented with this a bit and I found Cypress is very complicated to set up within DDEV if you want to see the tests actually executing in front of your eyes. It has to be able to talk to an X11 server running on the host machine, which has to be set up in a particular way and...sheesh. And that was just on a Mac. I don't know how onerous it would be on Windows.

I set up Cypress to use 'ddev drush' as the Drush command, and it has worked well.

🇨🇦Canada Jaypan

As a huge proponent of Cypress, I am very happy to see this. I, without any knowledge of this action, put forth a a presentation proposal for Drupalcon 2025 to present Cypress and Drupal, so if my presentation is accepted, this will be excellent information to also relay as part of the presentation.

🇨🇦Canada Jaypan

Try updating it, or disabling it, it's something in that module that is causing your issue.

You may also want to search for other people with that error in the issue queue for the module.

🇨🇦Canada Jaypan

Yes. Although I couldn't provide additional assistance on how to do it as a Drupal guy and not a Hardware guy, but I work with Drupal in containers all the time, and Google is almost definitely not going to be configurable in the way you need it to be, if you have the knowledge on how to do it.

🇨🇦Canada Jaypan

I would use the ECA module to set up a rule that deletes the entity after 10 minutes, and then ensure you have cron running on your site every minute. Finally I'd use the Ultimate Cron module and fine tune the frequency at which the various cron implementations on the system should run, setting ECA to 1 minute, but likely reducing all the others to some less frequent value depending on the process.

🇨🇦Canada Jaypan

This seems well suited as a bug report in the issue queue for the module, where I would think you'd be more likely to find assistance for it.

🇨🇦Canada Jaypan

usage of Drupal\Core\Render\Markup::create. Is it safe?

I don't think it is. From the Markup documentation:

This object should only be constructed with a known safe string. If there is any risk that the string contains user-entered data that has not been filtered first, it must not be used.

🇨🇦Canada Jaypan

I was thinking you could use the code from that module as a starting point.

🇨🇦Canada Jaypan

Unfortunately I don't have experience with this module, so I can't assist there, but I see there is a module someone is working on for your exact situation, with an alpha version: https://www.drupal.org/project/paragraphs_migration

Maybe you can use that code as a starting base.

🇨🇦Canada Jaypan
  1. Create a view listing Downtimes
  2. Create a contextual reference on the entity reference field referencing the Character
  3. Under the 'What do do when the argument is not present', select 'use node ID from URL' (note - texts probably are not exact, I'm going on memory)

Note that step 3 is based on Character entity being a Node. If it's some other type of entity, you'll need to adjust step 3.

This will filter the Downtimes to show only those with a Character ID of the page the block is dropped on to. This means it will only work on Character pages, since the Character has to be part of the page context.

🇨🇦Canada Jaypan

Is your reference from the Character to the Downtime, or from the Downtime to the Character?

🇨🇦Canada Jaypan

What are the issues you are facing? Can you not do the migration of paragraphs the same as you did with terms? They are essentially the same thing - a content entity reference field on the main entity.

🇨🇦Canada Jaypan

Thank you, that was much clearer. It seems Wombatbuddy has answered your question.

🇨🇦Canada Jaypan

There is no official update to the PHP supported versions for PHP 8.4, so I suspect it hasn't been tested yet, and I'd guess it probably won't be until 8.4 has been released.

🇨🇦Canada Jaypan

I would start with D10 right now. D12 will be released in 2026, meaning Drupal 10 will have support until then. Hopefully your provider will have upgraded their Maria DB version by then, if not you should have a  backup plan to move to a host that provides an updated version of the DB.

🇨🇦Canada Jaypan

How are you attaching these handlers to the form?

🇨🇦Canada Jaypan

There isn't even an alpha release for Drupal 12 yet, so you're probably worrying yourself a little needlessly at the moment.

🇨🇦Canada Jaypan

You will want to set up config splits with the Config split module, and use the Config API to manage your configuration between environments. Using the official Drupal template includes .gitignore files that are pretty good starting points, so that anything that shows up when running git status, probably needs to be committed.

These two tutorials I wrote in a former life are good starting points, and still 95% relevant even on Drupal 10:

https://www.morpht.com/blog/drupal-8-configuration-part-1-configuration-api

https://www.morpht.com/blog/drupal-and-composer-part-1-understanding-com...

🇨🇦Canada Jaypan

You'll need to clearly explain:

1) What you are trying to do overall  - IE what is the functionality you are building?

2) The steps you  have taken to achieve this goal

3) What you expect to happen

4) What is actually happening

Right now as your post is written, the answers to these questions are not clear, and having these answers will make it easier to provide support.

🇨🇦Canada Jaypan

This isn't a Drupal question at all. You'd probably have more success on a Docker forum.

🇨🇦Canada Jaypan

It's extremely rare in Drupal you ever need to work directly with the session. If you need session-like storage, you can use the tempstore.private service.

In forms however, you can store values in the form state, using $form_state->set(), and retrieve values with $form_state->get().

🇨🇦Canada Jaypan

It's extremely rare in Drupal you ever need to work directly with the session. If you need session-like storage, you can use the tempstore.private service.

In forms however, you can store values in the form state, using $form_state->set(), and retrieve values with $form_state->get().

🇨🇦Canada Jaypan

That would be great!

🇨🇦Canada Jaypan

You can use the Migrate API to create your own migration, but it requires understanding how to code in Drupal.

🇨🇦Canada Jaypan

You only posted the backtrace, not the error.

🇨🇦Canada Jaypan

Until it comes back, this may help you move forward with Composer: https://www.morpht.com/blog/drupal-and-composer-part-1-understanding-com...

🇨🇦Canada Jaypan

Look in the Drupal logs at Admin -> reports -> recent log messages to get the actual error message.

🇨🇦Canada Jaypan

You need to also show us the error.

🇨🇦Canada Jaypan

I took a look at your code. Your problem is in the #ajax callback. Your arguments are incorrect, ajax callbacks receive the $form and $form_state arguments. Next, the callback  must return one of the three types listed here . Almost always you will return an element of the $form object that is passed to the ajax callback.

🇨🇦Canada Jaypan

Well, you have to uninstall on the uninstall tab. And those modules will also list any modules that depend on them.

🇨🇦Canada Jaypan

Maybe you installed a module that depends on Groups, you'll need to uninstall that first.

This can be determined by going to the Admin -> Extend page, finding the groups module, expanding the collapsed data, and seeing if any dependencies are listed.

🇨🇦Canada Jaypan

.scss files are compiled into .css files. When this compilation happens, an additional file is created with the .css.map extension. This file maps the values in the .css file to the locations in the .scss files, so that when you are using an HTML/CSS inspector, the CSS inspector will show you the path to CSS declaration in the .scss file, rather than the .css file. The .css file is what the browser actually reads however. So, your site will work fine if you do not include the .css.map file, but if you include it, debugging CSS becomes easier.

If the file is missing, you can regenerate it by recompiling your .scss files into .css, which will create the .css.map file.

🇨🇦Canada Jaypan

You can't post screenshots to images that are not hosted on Drupal.org. Only links to screenshots on other sites.

🇨🇦Canada Jaypan

Your screenshot didn't come through. But if you have existing groups, you won't be able to uninstall it, so delete any groups you may have then try again. Or post the error you are seeing.

🇨🇦Canada Jaypan

Display Suite is pretty much legacy these days. Layout Builder is where you're at.  I believe DXPR has switched to using layout builder, but provides much more than just layout builder, it gives a bunch of a handy tools. I personally use Layout Builder now, used Display Suite in the past, and would use DXPR, although I don't currently.

🇨🇦Canada Jaypan

I'm ignoring your spam Darshan.

🇨🇦Canada Jaypan

Empty the database, and delete sites/default/settings.php, then you should be able to start again.

🇨🇦Canada Jaypan

Is cpd_con a custom module? I'm not seeing it for download on Drupal.org, and that's the module where your error is showing.

🇨🇦Canada Jaypan

Many threads here on the forums get left without any answer, and without the context of understanding the community, it can leave new users confused and feel abandoned. I didn't have a solution to your issue, so I thought I'd give you the lay of the land so you could at least understand why, if no one comes along with an answer to your issue. Hopefully someone will come along and assist with the information you need. When people do have the answer, they are generally generous in providing it.

🇨🇦Canada Jaypan

The Drupal community is on ckeditor, which is well tied into Drupal, and over the years I've seen very few people ever mentioning Gutenberg in the forums, so I would imagine you're on your own for the most part with support for that.

Drupal is much, much more powerful than Wordpress (whereas Wordpress is much, much more user friendly for people managing simple sites). Trying to work WP concepts into Drupal is going to create more problems for you than learning the Drupal way things are done.

And finally, if WordPress is meeting your needs, then there probably isn't really a need to switch to Drupal. As awesome as it is, it introduces a lot of complexity (which is what actually makes it awesome). A site that can be done in WordPress is probably best done in WordPress, as it will be easier to operate and maintain.

🇨🇦Canada Jaypan

Not the answer you are looking for, but the FAQ module may be an alternative.

🇨🇦Canada Jaypan

What main security updates could I miss if it's not for SQL injections?

Whichever security exploits come out after the security updates stop for the unsupported version. It's impossible to know what those are, or someone would have already fixed them. Such is the nature of security exploits.

An un-updated project will eventually stop working, whether it gets left behind as the servers that the site runs on stop supporting the technology the site requires to run, or when the site gets hacked because it's not being security patched. The only question is how long until one of these things happen, and the only real way to mitigate the risk from these is to keep your site updated.

🇨🇦Canada Jaypan

Security updates.

🇨🇦Canada Jaypan

Duplicate of https://www.drupal.org/project/message/issues/2916602 📌 Create access control handler and create permision Needs review

🇨🇦Canada Jaypan

I would install drush and run 'drush ws' to get some output.

🇨🇦Canada Jaypan

Drupal uses MySQL, PostreSQL and SQLLite as the database backends, and all of these are relational databases. So Drupal is already using a relational database under the hood, you don't need to do anything.

On top of this, since Drupal 8, it's very, very rare to ever directly touch the database for anything, as Drupal has methods to do everything, and database management happens under the hood without a requirement to touch the database. On the contrary, doing stuff directly with the database is an easy way to screw up your Drupal site, as it bypasses APIs that do important stuff.

🇨🇦Canada Jaypan

I have also reported them in the past and now.

🇨🇦Canada Jaypan

It's spam. I don't respond to his posts for that reason. He's trying to build SEO on his name.

🇨🇦Canada Jaypan

Adding a patch that is very rudimentary that creates gnode permissions for view any, and view own, for both entities and entity relations.
Very limited testing so far, but it seems to work.

🇨🇦Canada Jaypan

What steps did you take?

🇨🇦Canada Jaypan

How did you remove it manually?

🇨🇦Canada Jaypan

We would need to see the actual #ajax code and callback to be able to help.

🇨🇦Canada Jaypan

I think it probably is, though that's an educated guess. But I think if you point  multiple domains at the same Drupal root, and configured sites.php to route the domains, you should be able to do it.

It's been a few years since I worked on multisite, or on shared hosting though.

🇨🇦Canada Jaypan

The first place to start is looking in the Drupal logs at Admin -> Reports -> Recent log messsages.

🇨🇦Canada Jaypan

Drupal 8 and 9 are no longer supported, so the unsupported module versions are no shown on the page. They are still available through Composer, or if you need to download it, you can click the 'View all releases' link on the module page.

🇨🇦Canada Jaypan

Drupal has a flow of core -> module -> theme. You are working against the flow, which is why you cannot do this, it has to happen at the theme level.

🇨🇦Canada Jaypan

What do you mean?

Production build 0.71.5 2024