Account created on 3 June 2015, almost 10 years ago
#

Merge Requests

More

Recent comments

🇩🇪Germany a.dmitriiev

Test failure:

Fatal error: Declaration of Drupal\field_validation\Plugin\Validation\Constraint\UlidConstraint::validatedBy() must be compatible with Symfony\Component\Validator\Constraint::validatedBy(): string in /builds/issue/ai-3521601/web/modules/contrib/field_validation/src/Plugin/Validation/Constraint/UlidConstraint.php on line 21

This is not relevant to the MR and moreover it is from another module.

🇩🇪Germany a.dmitriiev

a.dmitriiev changed the visibility of the branch 3521601-pass-search-api to hidden.

🇩🇪Germany a.dmitriiev

Fixed in dev versions of 1.x and 2.x

🇩🇪Germany a.dmitriiev

a.dmitriiev made their first commit to this issue’s fork.

🇩🇪Germany a.dmitriiev

Waiting for Extra Field Plus to release stable. Extra Field has done beta1 for 3.x.

🇩🇪Germany a.dmitriiev

All the comments were addressed. Please review.

🇩🇪Germany a.dmitriiev

There is the same issue when using Hux module. +1 for using interface instead.

🇩🇪Germany a.dmitriiev

Changes done in MR for this issue are now included in this issue Make MD conversion service pluggable Active

🇩🇪Germany a.dmitriiev

Thank you everyone for help, giving credits to all who was involved. Bruno's MR was the first to fix original issue, so it is being merged.

🇩🇪Germany a.dmitriiev

I have checked with the "real" recipe to use the config action to set the backend config and everything worked properly.

🇩🇪Germany a.dmitriiev

As this issue Add an admin page for module parameters Active was done without taking into account the requirement from this issue, I have implemented the admin UI in MR from this issue with a new properties and new schema.

The MR provides html to markdown converter plugins and plugin manager for it. It is possible to change the default converter in admin UI and also the settings for all converters.

🇩🇪Germany a.dmitriiev

a.dmitriiev made their first commit to this issue’s fork.

🇩🇪Germany a.dmitriiev

I have updated the post update hook, so the plugin is not enabled by default.

🇩🇪Germany a.dmitriiev

MR doesn't have all the changes from patch #58. Now the hook `content_translation_language_fallback_candidates_entity_view_alter` is in the class, so MR actually does not remove it, but patch - does.

🇩🇪Germany a.dmitriiev

I found out that ai.provider service (class AiProviderPluginManager) doesn't implement any Interface. Should there be an interface with all the public methods that are custom to this particular plugin manager?

🇩🇪Germany a.dmitriiev

Yes @snehal-chibde, you are right. Thank you for the feedback and finding this bug. I have updated the MR with the fix. Please review again.

🇩🇪Germany a.dmitriiev

smustgrave you should now have access

🇩🇪Germany a.dmitriiev

I have added the configuration page with a form. As there was only 1 setting in configuration file for enabled entity types, I have added it to the form. Moreover it seems reasonable to add some converter settings, as league/html-to-markdown is highly configurable. I tried to add all the settings that package supports. I have also injected this new conversion settings into converter service.

Please review MR.

🇩🇪Germany a.dmitriiev

a.dmitriiev made their first commit to this issue’s fork.

🇩🇪Germany a.dmitriiev

I have created a MR with the following changes:

1. The method getSetProvider from AiContentSuggestionsPluginBase class was copied to AiProviderPluginManager service as it can be used in many other places, not only in the content suggestion plugins. The method is still there in plugin base class but now uses the service internally. This was done for backwards compatibility, so there are no breaking changes as the method was also in the interface.
2. I have added the new configuration setting to "AI Content Suggestions settings" page. This is a system prompt for content suggestion that are attached to the field widget

3. For all string/text fields on "Manage form display" now there is a third party setting from ai_content_suggestions module. This setting allows to generate suggestions per field and paste the result back directly to the field it is attached to. It is possible to use tokens and also entity render tokens from this module https://www.drupal.org/project/token_entity_render for example:

4. In the result on the form you will see the following:

when the field is clicked/focused:

and then when the button is clicked there will be a dialog with suggestions one or mulitple (it depends on the prompt):

when one of the suggestions is clicked, then it is inserted directly into the field. It works for string fields, text fields and also with CKEditor fields.

🇩🇪Germany a.dmitriiev

This will be a game changer I guess, as now a lot of operations will be done with AI and having a place where the prompt can be found easily is very important if you don't know from where to start.

I have a small concern about the storage though. Maybe until it is not too late, it is better to use the content entity? There will be more flexibility, and also the machine name as id will be harder to make unique when the number of prompts will increase with time. And of course with content entity it will be easier to track who and when created/updated the prompt, maybe even have some revisions (as while you are in a search of a good prompt, it could be that you have a couple of tries and maybe it is good idea that you can come back to some nice prompt that was 2-3 attempts before) and of course it would be easier to have some access restrictions. I understand, that this will not allow to easily create prompts on module installation like it can be done with config objects, but there are other ways to provide default content, especially with recipes.

What do you think?

🇩🇪Germany a.dmitriiev

I have refactored a bit the MR and all the plugins, so that they use the base class more, as most of the plugins use the same form elements, so it was easy to generalize the behavior.

🇩🇪Germany a.dmitriiev

I have split main plugin and balloon plugin in the way, that if you want the balloon menu you need to drag a new item to toolbar. This item is invisible. If you don't need it, the behavior will still be the same.

🇩🇪Germany a.dmitriiev

I have update MR with hook_post_update instead of updating all editor instances in the same hook_update. I have also noticed that individual plugins do not have schema definition. I have added the config schema for the plugin from this MR, but also added for all existing plugins.

🇩🇪Germany a.dmitriiev

a.dmitriiev made their first commit to this issue’s fork.

🇩🇪Germany a.dmitriiev

I think as this issue prevents module features from being used, the priority should be raised to "Major", maybe even to "Critical" at some point.

🇩🇪Germany a.dmitriiev

Nothing against Spanish language, but I think for translating into other languages it will be easier with English string.

🇩🇪Germany a.dmitriiev

This is also a problem with chat assistant, as the stop sequence setting is displayed and if not set, then empty value is sent. I can confirm that fix from MR works and the request to LLM is successful

🇩🇪Germany a.dmitriiev

Updated patch, something wrong was with previous one

🇩🇪Germany a.dmitriiev

Uploading the patch also to use in composer based projects.

🇩🇪Germany a.dmitriiev

Uploading the patch, so that it can be used until the stable version is released.

🇩🇪Germany a.dmitriiev

I have also opened a MR for easier collaboration.

🇩🇪Germany a.dmitriiev

I have now another use case:

The AI content suggestions would be nice to have as ajax callback, but the required field of the entity form could be skipped during validation, because for example you want the title to be suggested by AI and it is required.

I have re-rolled the patch for Drupal 11.1.x and removed the change in WidgetBase class, as it might be out of scope. Let's first create the possibility of skipping validation of required fields in general, so that contrib or custom modules can implement this in their code.

🇩🇪Germany a.dmitriiev

I have added the delete-form link template and added the "Do not use as template" button to operations dropdown on Template overview page. Please review MR.

🇩🇪Germany a.dmitriiev

I have adjusted the template to make sure that image wrappers are not rendered if there no image.

🇩🇪Germany a.dmitriiev

Method analyzeHtml allows $url as NULL. So it is reasonable to check the variable before using it. And the other saveReport method that is executed with this variable also allows it to be NULL. So, I think the MR should be merged. RTBC.

🇩🇪Germany a.dmitriiev

I will create some more issues, that I think can improve this module. There are not so many breaking changes that were introduced in the newest version of Project Browser, so I hope the transfer will be as smooth as possible.

🇩🇪Germany a.dmitriiev

It seems that project browser 2.x changed the sorting options structure and also the Project object. I made the adjustments and tested with Drupal 11.1.

There are some other improvements needed, as at the moment the project type is hardcoded to module and the `composer` commands are not always correct in case the project is in Gitlab's subgroup. But that should be in a separate issues.

🇩🇪Germany a.dmitriiev

I have added the config folder with default settings and schema.
I have renamed ai_seo.configuration to ai_seo.settings so it follows the pattern of how normally modules name its config object.
I have made it possible to use the default AI provider and model even if no model is selected in ai_seo settings. So in case that you have already selected the default provider and model for chat operation type, there is no need to set it in ai_seo settings, unless you want to have different one just for this task. This way it is easier to start evaluating/working with ai seo functionality, as there is no need for additional step before you can start using it.

Please review MR.

🇩🇪Germany a.dmitriiev

I have also noticed the prompt fields in all plugins are also set as required even if the plugin is not enabled, so I have added the Form API States to all plugins. Please review MR:

🇩🇪Germany a.dmitriiev

+1 for the fix, as at the moment all routes return "Access denied"

The fix from the MR works.

🇩🇪Germany a.dmitriiev

I assume that darnold uses Drupal 11. For that version the ConfigFormBase needs one more argument, see change record https://www.drupal.org/node/3404140 . MR includes the fix. Please check.

🇩🇪Germany a.dmitriiev

a.dmitriiev made their first commit to this issue’s fork.

🇩🇪Germany a.dmitriiev

Fair point. The field_image is also used in Twig template. This also needs to be checked how it behaves without the field.

🇩🇪Germany a.dmitriiev

Thank you for fixing the bug. This was added to develop version of the module and will be added to the next release.

🇩🇪Germany a.dmitriiev

The module is now opt-in for security advisory policy.

🇩🇪Germany a.dmitriiev

I have updated the MR with some fixes for library dependencies and code standards, please review.

🇩🇪Germany a.dmitriiev

I converted your patch to MR, so that it is easier to review and collaborate.

Production build 0.71.5 2024