The Comments module adds the ability to include comments to any resource which can be commentable by users.
The Comments component is exposed as a Rails helper:
<%= comments_for @commentable %>
In order to use the helper in your templates you need to include the comments helpers in your application helper:
include Decidim::Comments::CommentsHelper
Finally, add the comments javascript module via Sprockets like this:
//= require decidim/comments/comments
Add this line to your application's Gemfile.
gem 'decidim-comments'
And then execute:
bundle
The technology stack used in this module is the following:
For the backend side:
- Ruby on Rails
- GraphQL
For the frontend side:
- Typescript (introduced in #1001)
- React
- Apollo
The frontend code can be found in the folder app/frontend
instead of app/assets
. We are using Webpack to build the React application so we are keeping the React files in a separate folder and then including the bundle.js
file using sprockets as usual.
You need to execute npm start
in a separate terminal, in the decidim
root folder while you are developing this module. When you are finished you can build the project for production like this: npm run build:prod
. We are checking in the bundle into the repository.
You can execute npm test
to run the javascript test suite or you can run npm run test:watch
to listen for file changes.
Since we are using Typescript we can generate interfaces and types from our schema using the following command:
npm run graphql:generate_schema_types
This command will create a file called app/frontend/support/schema.ts
that can be used to strict type checking in our components.
In order for this to work your Rails server must be running at localhost:3000
, if you're using a different host you can set it with DECIDIM_HOST
:
DECIDIM_HOST=myhost:3000 npm run graphql:generate_schema_types
See Decidim.
See Decidim.