JhumanJ / OpnForm

Beautiful Open-Source Form Builder
https://opnform.com
GNU Affero General Public License v3.0
2.26k stars 303 forks source link

Apply Mentions everywhere #595

Closed chiragchhatrala closed 1 month ago

chiragchhatrala commented 1 month ago

Summary by CodeRabbit

Release Notes

coderabbitai[bot] commented 1 month ago

Walkthrough

The changes introduced in this pull request encompass the addition of a new console command for migrating email notifications, modifications to existing classes and components related to email and submission integrations, and the removal of outdated files. Key enhancements include the introduction of a MentionParser for better handling of mentions in email content and the restructuring of validation rules for URLs. Additionally, new Vue components have been created to support mention functionality in user interfaces, while several existing components and tests have been updated or deleted to reflect these changes.

Changes

File Path Change Summary
api/app/Console/Commands/EmailNotificationMigration.php Added EmailNotificationMigration class with methods for migrating email notifications.
api/app/Http/Controllers/Forms/PublicFormController.php Updated redirect URL handling in answer method to validate URLs using MentionParser.
api/app/Requests/UserFormRequest.php Modified validation rules for redirect_url to allow nullable strings.
api/app/Integrations/Handlers/DiscordIntegration.php Updated getWebhookData method to improve message formatting using MentionParser.
api/app/Integrations/Handlers/EmailIntegration.php Significant changes to validation rules and recipient handling logic in handle method.
api/app/Integrations/Handlers/SlackIntegration.php Enhanced getWebhookData method for message formatting.
api/app/Integrations/Handlers/SubmissionConfirmationIntegration.php Deleted class responsible for confirmation emails.
api/app/Mail/Forms/SubmissionConfirmationMail.php Deleted class for handling confirmation emails.
api/app/Notifications/Forms/FormEmailNotification.php Renamed from FormSubmissionNotification with updated constructor and methods for email handling.
api/app/Open/MentionParser.php Added MentionParser class for parsing mentions in HTML content.
api/app/Service/HtmlPurifier/OpenFormsHtmlDefinition.php Added OpenFormsHtmlDefinition class for custom HTMLPurifier attributes.
api/config/purify.php Updated to use OpenFormsHtmlDefinition for HTMLPurifier configuration.
api/resources/data/forms/integrations.json Removed "submission_confirmation" integration from configuration.
api/resources/views/mail/form/confirmation-submission-notification.blade.php Deleted Blade template for confirmation emails.
api/resources/views/mail/form/email-notification.blade.php Introduced new Blade template for email notifications.
api/resources/views/mail/form/submission-notification.blade.php Deleted Blade template for submission notifications.
api/tests/Feature/Forms/ConfirmationEmailTest.php Deleted tests for confirmation email functionality.
api/tests/Feature/Forms/CustomSmtpTest.php Updated test case to reflect broader email functionality.
api/tests/Feature/Forms/EmailNotificationTest.php Added tests for FormEmailNotification functionality.
api/tests/Unit/EmailNotificationMigrationTest.php Introduced unit tests for EmailNotificationMigration command.
api/tests/Unit/Service/Forms/MentionParserTest.php Added unit tests for MentionParser functionality.
client/components/forms/MentionInput.vue Added new Vue component for mention input.
client/components/forms/RichTextAreaInput.client.vue Replaced VueEditor with QuillyEditor component.
client/components/forms/TextBlock.vue Introduced new Vue component for text blocks.
client/components/forms/components/FormSubmissionFormatter.js Added class for formatting form submission data.
client/components/forms/components/MentionDropdown.vue Added Vue component for mention dropdown functionality.
client/components/forms/components/QuillyEditor.vue Added Vue component for Quill rich text editor.
client/components/open/forms/OpenCompleteForm.vue Introduced <TextBlock> component and modified form submission handling.
client/composables/useParseMention.js Added function for processing HTML content with mentions.
client/data/forms/integrations.json Removed "submission_confirmation" integration from JSON configuration.
client/lib/quill/quillMentionExtension.js Added custom mention extension for Quill editor.
client/package.json Updated dependencies, adding Quill and removing Vue3 editor.

Possibly related PRs

🐰 "In the fields where the data flows,
A new command for emails grows.
With mentions parsed and rules refined,
Our forms now better intertwined.
Hooray for changes, bright and bold,
In rabbit's burrow, stories told!" 🐇


📜 Recent review details **Configuration used: CodeRabbit UI** **Review profile: CHILL**
📥 Commits Files that changed from the base of the PR and between 38d34765c0d42177ff8c77c52644df6714a6ec5f and b155c98dc0c433c28d13894bb65a58a912d34271.
📒 Files selected for processing (1) * api/app/Console/Commands/EmailNotificationMigration.php (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1) * api/app/Console/Commands/EmailNotificationMigration.php
--- Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
❤️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
🪧 Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , please review it.` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.