From 9aec6b026c44d7f50479b2ceee477f5cade8b526 Mon Sep 17 00:00:00 2001 From: Jessie Rushing Date: Fri, 22 Mar 2019 13:25:40 -0700 Subject: [PATCH 01/14] updated event tracking page --- .../integrating/event-tracking-metrics.md | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/docs/source/integrating/event-tracking-metrics.md b/docs/source/integrating/event-tracking-metrics.md index d0ca131ad..e3e881a07 100644 --- a/docs/source/integrating/event-tracking-metrics.md +++ b/docs/source/integrating/event-tracking-metrics.md @@ -3,9 +3,19 @@ title: Tracking Talk Events and Metrics permalink: /integrating/event-tracking-metrics/ --- -Talk supports event emitting via Redux, Apollo and GraphQL. This means that common actions taken within Talk, such as successfully posting a comment, posting a reaction, or changing a setting, are automatically emitted from Talk. To send these events to your analytics tool of choice, however, will require some integration on your part. +Talk supports event emitting. This means that common actions taken within Talk, such as successfully posting a comment, posting a reaction, or changing a setting, are automatically emitted from Talk. To send these events to your analytics tool of choice, you’ll need to configure your Talk embed to process them. -First, we want to uncomment the tracking code in `article.ejs` (https://github.com/coralproject/talk/blob/93bda87ad061a2dc5eb8dc5b65a579a20efb76f7/views/article.ejs#L34). This will enable events to be sent via the Talk embed that is on your article pages. This will start a stream of events to the browser console, so that you can see which events are available. +The following example demonstrates how the event emitter works on a sample article page generated by Talk. When you’re ready to capture and handle events from your actual site, add the events property along with your event handling functions to your Talk embed script. + +## Example Using Local Development Instance of Talk +If you have Talk running in a local development environment you can follow these steps to first view all of the events emitted by Talk, and then capture the `PostComment.success` event and send it to a third party analytics provider. + + +First, with Talk running, ensure that you can access the `/dev/assets` endpoint and create a random article (i.e.: `localhost:3000/dev/assets`). + + +Then in Talk, uncomment the events code in `/views/dev/article.njk` +(https://github.com/coralproject/talk/blob/master/views/dev/article.njk#L32). This will enable events to be sent via the Talk embed that is on the sample article page. This will start a stream of events to the browser console, so that you can see which events are available. ``` events: function(events) { @@ -16,7 +26,10 @@ First, we want to uncomment the tracking code in `article.ejs` (https://github.c }, ``` -Now, we want to add our code that sends the events to our analytics system. In this case, we're sending the `PostComment.success` event. The particular way you send this will depend on what tool you're using. Refer to your tool's API and docs to determine this. +Save your changes to `article.njk`, restart Talk, and try refreshing your article in a browser with development console open. You should see the console log the list of Talk’s events. + + +Next, we want to add our code that sends the events to our analytics system. In this example, we're sending the `PostComment.success` event. The particular way you send this will depend on what tool you're using. Refer to your tool's API and docs to determine this. ``` events: function(events) { @@ -29,5 +42,3 @@ Now, we want to add our code that sends the events to our analytics system. In t }, ``` You can continue this process for any specific events you'd like to track. You can also remove the `console.log` to stop events being emitted to the browser and instead only send the events to your analytics tool. - -PR for Reference: https://github.com/coralproject/talk/pull/785 From 80150983052535cc252058555f8fac5215b9724d Mon Sep 17 00:00:00 2001 From: Andrew Losowsky Date: Wed, 27 Mar 2019 18:43:12 -0400 Subject: [PATCH 02/14] Changed 'Mozilla' to 'Vox Media' in the sidebar (#2245) * Changed 'Mozilla' to 'Vox Media' in the sidebar * Delete moz-logo-bw-rgb.svg --- docs/themes/coral/layout/partial/sidebar.swig | 6 ++--- .../coral/source/images/moz-logo-bw-rgb.svg | 22 ------------------- 2 files changed, 3 insertions(+), 25 deletions(-) delete mode 100644 docs/themes/coral/source/images/moz-logo-bw-rgb.svg diff --git a/docs/themes/coral/layout/partial/sidebar.swig b/docs/themes/coral/layout/partial/sidebar.swig index 9d0a335d6..a24c2803e 100644 --- a/docs/themes/coral/layout/partial/sidebar.swig +++ b/docs/themes/coral/layout/partial/sidebar.swig @@ -29,8 +29,8 @@

Don't see what you're looking for? We're upgrading the docs, check out our old docs.

-

The Coral Project from Mozilla

-
{{ image_tag('images/moz-logo-bw-rgb.svg') }}
+

The Coral Project by Vox Media

+
- \ No newline at end of file + diff --git a/docs/themes/coral/source/images/moz-logo-bw-rgb.svg b/docs/themes/coral/source/images/moz-logo-bw-rgb.svg deleted file mode 100644 index 08f06e057..000000000 --- a/docs/themes/coral/source/images/moz-logo-bw-rgb.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - From c7ccf0313233fbc8d07b11f3bc04bca647b5a610 Mon Sep 17 00:00:00 2001 From: Andrew Losowsky Date: Thu, 28 Mar 2019 00:34:58 -0400 Subject: [PATCH 03/14] Updated Vox Media Logo on Documentation (#2244) * added Vox Media logo * fix: added logo * fix: cleanup --- README.md | 2 +- docs/themes/coral/layout/partial/sidebar.swig | 5 ++--- docs/themes/coral/source/css/talk.scss | 8 ++++++-- docs/themes/coral/source/images/coralproject.png | Bin 0 -> 3598 bytes 4 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 docs/themes/coral/source/images/coralproject.png diff --git a/README.md b/README.md index e7776865f..bcfa291c7 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Online comments are broken. Our open-source commenting platform, Talk, rethinks how moderation, comment display, and conversation function, creating the opportunity for safer, smarter discussions around your work. [Read more about Talk here](https://coralproject.net/talk). -Built with <3 by The Coral Project, a part of [Vox Media](https://www.voxmedia.com/a/go-deeper/about). +Built with <3 by The Coral Project, a part of [Vox Media](https://www.voxmedia.com/). ## Getting Started diff --git a/docs/themes/coral/layout/partial/sidebar.swig b/docs/themes/coral/layout/partial/sidebar.swig index a24c2803e..03088a24a 100644 --- a/docs/themes/coral/layout/partial/sidebar.swig +++ b/docs/themes/coral/layout/partial/sidebar.swig @@ -28,9 +28,8 @@
-

Don't see what you're looking for? We're upgrading the docs, check out our old docs.

-

The Coral Project by Vox Media

- +

Made by The Coral Project by Vox Media.

+
{{ image_tag('images/coralproject.png') }}
diff --git a/docs/themes/coral/source/css/talk.scss b/docs/themes/coral/source/css/talk.scss index f3b0c24e8..dfd673fcb 100644 --- a/docs/themes/coral/source/css/talk.scss +++ b/docs/themes/coral/source/css/talk.scss @@ -344,9 +344,13 @@ a.brand { padding: $content_gutter $content_gutter 60px; } -.mozilla { - width: 50%; +.voxmedia { + // width: 50%; margin: 0 0 $sidebar_gutter; + + > img { + width: 100%; + } } .sidebar { diff --git a/docs/themes/coral/source/images/coralproject.png b/docs/themes/coral/source/images/coralproject.png new file mode 100644 index 0000000000000000000000000000000000000000..886aeac189a495a0c459017de0287a521cd608b3 GIT binary patch literal 3598 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 literal 0 HcmV?d00001 From ef1fd9c1594a5cac421c427b05932f4df4e44e51 Mon Sep 17 00:00:00 2001 From: Mendel Konikov Date: Mon, 1 Apr 2019 17:14:04 -0400 Subject: [PATCH 04/14] Clarify that Reliable commenter is also not yet in use (#2253) --- docs/source/02-02-advanced-configuration.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/source/02-02-advanced-configuration.md b/docs/source/02-02-advanced-configuration.md index 0c70fad91..c3975d1cb 100644 --- a/docs/source/02-02-advanced-configuration.md +++ b/docs/source/02-02-advanced-configuration.md @@ -499,8 +499,9 @@ Could be read as: pre-moderated once in order to post freely again. If they instead get rejected again, then they must have two of their comments approved in order to get added back to the queue. -- At the moment of writing, behavior is not attached to the flagging - reliability, but it is recorded. +- At the moment of writing, behavior is not attached to reliable commenters + as well as the flagging reliability and unreliability. Regardless, + all of these scores are recorded for future implementation. ## TALK_DISABLE_IGNORE_FLAGS_AGAINST_STAFF From ea34c936d095dce1848b2e2967cbe8a453c9d16a Mon Sep 17 00:00:00 2001 From: immber Date: Mon, 1 Apr 2019 15:23:22 -0700 Subject: [PATCH 05/14] DOCS || CORL-290 || Add Custom SSO Plugin Recipe (#2249) * updated auth strategies * added custom auth plugin recipe * fixed format on TALK_SMTP_FROM_ADDRESS * cleaned up formatting a bit * added CDN to checklist * Update docs/source/01-05-pre-launch-checklist.md Co-Authored-By: immber * Update docs/source/integrating/authentication.md Co-Authored-By: immber * added links to plugins --- docs/source/01-05-pre-launch-checklist.md | 5 +++ docs/source/02-02-advanced-configuration.md | 12 ++++-- docs/source/04-05-plugin-recipes.md | 6 +++ docs/source/integrating/authentication.md | 45 ++++++++++----------- 4 files changed, 42 insertions(+), 26 deletions(-) diff --git a/docs/source/01-05-pre-launch-checklist.md b/docs/source/01-05-pre-launch-checklist.md index f07953eb6..73432bc02 100644 --- a/docs/source/01-05-pre-launch-checklist.md +++ b/docs/source/01-05-pre-launch-checklist.md @@ -13,6 +13,9 @@ permalink: /pre-launch-checklist/ - [ ] Do you have a domain name for Talk? - **Recommended**: You should host Talk on a subdomain on your main site (e.g. if your site is mysitefornews.org, you should serve Talk from a subdomain like talk.mysitefornews.org) to avoid issues with third-party cookie sharing. + +- [ ] Do you have a Content Delivery Network (CDN) to improve performance and reduce load on your Talk servers? + - [ ] Do you have a MongoDB instance? - A MongoDB [Docker instance](/talk/installation-from-docker/) hosted alongside Talk? @@ -28,9 +31,11 @@ permalink: /pre-launch-checklist/ - [ ] Do you want to provide single sign-on (SSO) by integrating with an external auth system? - See [Authenticating with Talk](/talk/integrating/authentication/) + - [ ] Do you want to integrate Talk with your CMS to automate embedding Talk Comment Stream into your site? - See [CMS Integration](/talk/integrating/cms-integration/) + - [ ] Do you want to use Social sign-on? - Facebook - Install [talk-plugin-facebook-auth](/talk/plugin/talk-plugin-facebook-auth/) diff --git a/docs/source/02-02-advanced-configuration.md b/docs/source/02-02-advanced-configuration.md index c3975d1cb..48552f51a 100644 --- a/docs/source/02-02-advanced-configuration.md +++ b/docs/source/02-02-advanced-configuration.md @@ -416,13 +416,19 @@ cannot. You would use this option in the latter situation. ## TALK_SMTP_FROM_ADDRESS -The email address to send emails from using the SMTP provider in the format: +The email address to send emails from using the SMTP provider. You can include the name and email address or only provide the email. ```plain -TALK_SMTP_FROM_ADDRESS="The Coral Project" +TALK_SMTP_FROM_ADDRESS="The Coral Project" support@coralproject.net + +``` +or + +```plain +TALK_SMTP_FROM_ADDRESS=support@coralproject.net + ``` -Including the name and email address. ## TALK_SMTP_HOST diff --git a/docs/source/04-05-plugin-recipes.md b/docs/source/04-05-plugin-recipes.md index 9dddf255d..09d21a257 100644 --- a/docs/source/04-05-plugin-recipes.md +++ b/docs/source/04-05-plugin-recipes.md @@ -47,3 +47,9 @@ Source: [talk-recipes/tree/master/plugins/author-name](https://github.com/coralp Enables the ability to hover over a commenter’s name and add plugin functionality there. The Member Since plugin that is provided in this recipe is an example of this. + +## recipe-custom-auth + +Source: [talk-recipes/tree/master/plugins/custom-auth](https://github.com/coralproject/talk-recipes/tree/master/plugins/custom-auth) + +Example code for creating, and updating Users in Talk from JWT data provided by your custom SSO authentication service. diff --git a/docs/source/integrating/authentication.md b/docs/source/integrating/authentication.md index 05f88449e..ff38f761b 100644 --- a/docs/source/integrating/authentication.md +++ b/docs/source/integrating/authentication.md @@ -3,25 +3,18 @@ title: Authenticating with Talk permalink: /integrating/authentication/ --- -Out of the box Talk supports account registration with username and password, as well as features like forgot password. +### Authentication Strategies -You can also integrate Talk with any external authentication service that will enable -seamless single sign-on (SSO) for users within your organization. There are a few -methods of doing so: +Talk comes with built in user management features like account registration with username/email and password, as well as features like resetting a forgotten password. -1. Passport Middleware -2. Custom Token Integration +There are four strategies to choose from when it comes to user authentication: -Both methods work, but there are product decisions that will affect the overall -choice. +#### Talk Email Authentication +Best when you want Talk to manage all user registration, creation and authentication. Requires the least amount of setup and configuration. Users register by creating a Username (must be unique across users, no spaces or special chars), Email, and Password and are stored in Talk’s database. Optionally - you can require an email verification step at time of account creation. *Plugins required: [talk-plugin-local-auth](/talk/plugin/talk-plugin-local-auth), [talk-plugin-auth](/talk/plugin/talk-plugin-auth)* -## Passport Middleware +#### Social Sign-in (FaceBook or Google via Passport Middleware) -You would choose the **Passport Middleware** route when you are OK using an auth -that is triggered from inside Talk that is not connected to an external auth -state (you don't use the auth anywhere else now). - -Plugins are available for the following 3rd party authentication providers: +Allows users to use existing social media account to sign in to Talk. Requires you to setup API keys with social sign on provider, and configure your API keys in Talk. Users register and login via a *“Sign in with ….”*, but are not required to set user details such as password or email address. *Plugins required: [talk-plugin-auth](/talk/plugin/talk-plugin-auth), plus at least one of the following:* * [Facebook](/talk/plugin/talk-plugin-facebook-auth/) * [Google](/talk/plugin/talk-plugin-google-auth/) @@ -29,15 +22,20 @@ Plugins are available for the following 3rd party authentication providers: _FAQ: Can I create a Twitter auth plugin?_ This is currently not possible because Talk uses passport.js which does not support Twitter's oAuth2 requirements. -## Custom Token Integration +#### Social Sign-in with Email Association +This strategy is actually a combination of the first two. Talk’s built in Email Authentication is augmented by also allowing registration with a social account. Users with social accounts are prompted to associate an email address with their social profile to enable notifications. *Plugins required: [talk-plugin-auth](/talk/plugin/talk-plugin-auth), [talk-plugin-local-auth](/talk/plugin/talk-plugin-local-auth), [talk-plugin-facebook-auth](/talk/plugin/talk-plugin-facebook-auth/), and or [talk-plugin-google-auth](/talk/plugin/talk-plugin-google-auth/)* + +#### Custom SSO Token Integration +When you want users to authenticate via your existing identity system, and be automatically registered/logged into Talk. Users register, login, and manage their user details on your existing site, your user database maintains the source of truth for all user information. Users are created and updated in Talk via jwt tokens passed from your auth service to Talk. *Required Plugins: requires custom plugin development, as well as disabling talk-plugin-auth, and talk-plugin-local-auth* + +## Setting Up Custom SSO Token Integration You can integrate Talk with any authentication service to enable single sign-on for users. The steps to do that are: 1. Create a service that generates [JWT tokens](https://jwt.io/introduction/). -2. Push the token into the embed. -3. Implement the [`tokenUserNotFound`](#implement-tokenusernotfound) hook to - process the token. +2. Include the JWT token in your Talk embed script +3. Create a custom plugin to generate and authenticate Talk users from the jwt token ### Create JWT Token @@ -67,7 +65,7 @@ The generated JWT must contain the following claims: ### Generate a key to sign the JWT Optionally you can use https://github.com/coralproject/coralcert to generate a key with which to sign the JWTs and specify the secret as an environment variable. -### Push token into embed +### Include token in embed We're assuming that your CMS is capable of authenticating a user account, or at least having the user's details available to send off to the token creation @@ -83,15 +81,17 @@ Coral.Talk.render(document.getElementById('coralStreamEmbed'), { }); ``` -Which will pass down the token to Talk and will fire the next steps +Which will pass down the token to Talk and will fire the `tokenUserNotFound` hook to complete the auth flow. -### Implement `tokenUserNotFound` +### Create a Custom Plugin to Generate Talk Users This is the only piece of code you'll have to write that lives inside Talk. The role of this code is to live as a plugin and provide Talk with a way of taking the token that you gave it, and turning into a user. +Your custom plugin will need to include a `tokenUserNotFound` function that will handle creating a user in Talk from the claims provided on the JWT, refer to [`tokenUserNotFound`](/talk/api/server/#tokenusernotfound) for reference. + Using the example application we were working with in the JWT issuing step above, we'll need to ensure that the configuration is consistent in-between both Talk and the JWT issuer. Namely, the following environment variables from our @@ -108,5 +108,4 @@ example issuer and Talk must match: reference, the basic takeaway is that the secret used to sign the tokens issued by the issuer must be able to be verified by Talk. -For an example of implementing the plugin, refer to [`tokenUserNotFound`](/talk/api/server/#tokenusernotfound) -reference. +For an example of implementing the plugin, check out our [SSO Custom Auth Recipe](https://github.com/coralproject/talk-recipes/tree/master/plugins/custom-auth) From 2ec66007d9a5164fb88c0d394e43cba762765c5d Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Fri, 5 Apr 2019 21:42:17 +0000 Subject: [PATCH 06/14] feat: added docs for featured comments tab (#2259) --- plugins/talk-plugin-featured-comments/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/talk-plugin-featured-comments/README.md b/plugins/talk-plugin-featured-comments/README.md index be47eaf37..eb5e3e63e 100644 --- a/plugins/talk-plugin-featured-comments/README.md +++ b/plugins/talk-plugin-featured-comments/README.md @@ -16,4 +16,15 @@ if there are any featured comments on that story. When paired with the [talk-plugin-moderator-actions](/talk/plugin/talk-plugin-moderator-actions) plugin, moderators will have the option of featuring comments from the comment -stream. \ No newline at end of file +stream. + +## Default Comments Tab + +You can also change the default tab when rendering the comment stream to the +featured tab so when a user reaches a comment stream, they will see the featured +comments first by setting the [TALK_DEFAULT_STREAM_TAB](/talk/advanced-configuration/#talk-default-stream-tab) +variable to `talk-plugin-featured-comments`. + +This is a **Build Variable** and must be consumed during build. If using the +[Docker-onbuild](/talk/installation-from-docker/#onbuild) +image you can specify it with `--build-arg TALK_DEFAULT_STREAM_TAB=talk-plugin-featured-comments`. From cd4ae47958520394980601fb560a701a18abe5c7 Mon Sep 17 00:00:00 2001 From: Kim Gardner Date: Mon, 8 Apr 2019 18:01:42 +0100 Subject: [PATCH 07/14] [Docs] Initial list of events you can track from Talk (#2262) * Initial list of events you can track from Talk * Remove duplicates * Remove more duplicates --- .../integrating/event-tracking-metrics.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/source/integrating/event-tracking-metrics.md b/docs/source/integrating/event-tracking-metrics.md index e3e881a07..849a02e94 100644 --- a/docs/source/integrating/event-tracking-metrics.md +++ b/docs/source/integrating/event-tracking-metrics.md @@ -42,3 +42,25 @@ Next, we want to add our code that sends the events to our analytics system. In }, ``` You can continue this process for any specific events you'd like to track. You can also remove the `console.log` to stop events being emitted to the browser and instead only send the events to your analytics tool. + +## Metrics List + +Note: This is not an exhaustive list, but should get you started. + +``` +mutation.CreateRespectAction.success +mutation.CreateLikeAction.success +mutation.PostComment.success +mutation.PostFlag.success +mutation.EditComment.success + +action.CORAL_STREAM_SET_ACTIVE_TAB +action.SHOW_SIGNIN_DIALOG +action.FOCUS_SIGNIN_DIALOG +action.TALK_FRAMEWORK_HANDLE_SUCCESSFUL_LOGIN +action.HIDE_SIGNIN_DIALOG +action.TALK_VIEWING_OPTIONS_OPEN_MENU +action.TALK_VIEWING_OPTIONS_CLOSE_MENU +action.CORAL_STREAM_SET_SORT +action.SET_ACTIVE_REPLY_BOX +``` From 738542ab99ee3752e08221928a2829f07843f56d Mon Sep 17 00:00:00 2001 From: cpoonolly Date: Thu, 11 Apr 2019 22:42:17 +0700 Subject: [PATCH 08/14] Cherry seeing if he can fix stuff! (#2254) --- client/coral-admin/src/routes/Community/containers/People.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/coral-admin/src/routes/Community/containers/People.js b/client/coral-admin/src/routes/Community/containers/People.js index 57fb7fa8e..771f1d433 100644 --- a/client/coral-admin/src/routes/Community/containers/People.js +++ b/client/coral-admin/src/routes/Community/containers/People.js @@ -140,8 +140,11 @@ const LOAD_MORE_QUERY = gql` $limit: Int $cursor: Cursor $value: String + $state: UserStateInput ) { - users(query: { value: $value, limit: $limit, cursor: $cursor }) { + users( + query: { value: $value, limit: $limit, cursor: $cursor, state: $state } + ) { hasNextPage endCursor nodes { From 6611f8b6367ee26f003d2d479688e075e5cfee6c Mon Sep 17 00:00:00 2001 From: Kim Gardner Date: Thu, 11 Apr 2019 16:50:10 +0100 Subject: [PATCH 09/14] Fix email copy typo (#2267) --- locales/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/en.yml b/locales/en.yml index dc5653ed1..bf204ba98 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -219,7 +219,7 @@ en: subject: 'Your account has been banned' confirm: confirm_email: 'Confirm Email' - has_been_requested: 'A email confirmation has been requested for the following account:' + has_been_requested: 'An email confirmation has been requested for the following account:' if_you_did_not: 'If you did not request this, you can safely ignore this email.' subject: 'Email Confirmation' to_confirm: 'To confirm the account, please visit the following link:' From 9319bb4e1f1b1de90e9d5fbc7feb58b75bc5a93c Mon Sep 17 00:00:00 2001 From: Kim Gardner Date: Mon, 15 Apr 2019 10:06:09 +0100 Subject: [PATCH 10/14] Remove unnecessary Talk branding (#2271) * Remove Talk copy from Login view * Remove favicon from base template and only use it for admin view --- views/admin.njk | 3 +++ views/login.njk | 2 +- views/templates/base.njk | 3 --- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/views/admin.njk b/views/admin.njk index 1b60f6e76..f2161c971 100644 --- a/views/admin.njk +++ b/views/admin.njk @@ -2,6 +2,9 @@ {% block title %}Talk Admin{% endblock %} +{# Favicon Configuration #} +{% include "partials/favicon.njk" %} + {% block css %} diff --git a/views/login.njk b/views/login.njk index 7198dbdff..90ff874a7 100644 --- a/views/login.njk +++ b/views/login.njk @@ -1,6 +1,6 @@ {% extends "templates/base.njk" %} -{% block title %}Talk - Login{% endblock %} +{% block title %}Login{% endblock %} {% block css %} diff --git a/views/templates/base.njk b/views/templates/base.njk index 3a5331a1d..edad4d545 100644 --- a/views/templates/base.njk +++ b/views/templates/base.njk @@ -6,9 +6,6 @@ {% block meta %}{% endblock %} - {# Favicon Configuration #} - {% include "partials/favicon.njk" %} - {# CSP and security headers #} {% block security %}{% endblock %} From 1c2ff7d2aececc2323ed2e3f2209f18d47802b04 Mon Sep 17 00:00:00 2001 From: Kim Gardner Date: Tue, 16 Apr 2019 19:54:44 +0100 Subject: [PATCH 11/14] Update default plugins and docs (#2265) * Update default plugins * Update plugin docs with missing plugin * Fixed broken link in docs * Update Code of Conduct in docs * Fix mixup that both plugins are moderation-actions * fix: adapt server tests to use the rich text plugin * fix: e2e * fix: sync docs --- CODE_OF_CONDUCT.md | 9 +++--- ...tifications-category-moderation-actions.md | 18 ++++++++++++ plugins.default.json | 28 +++++++++++++++---- plugins/talk-plugin-comment-content/README.md | 3 +- .../talk-plugin-featured-comments/README.md | 2 +- .../talk-plugin-moderation-actions/README.md | 6 ++-- .../README.md | 3 +- .../README.md | 1 + .../README.md | 3 +- .../README.md | 1 + .../README.md | 3 +- .../README.md | 3 +- plugins/talk-plugin-notifications/README.md | 3 +- plugins/talk-plugin-offtopic/README.md | 3 +- plugins/talk-plugin-rich-text/README.md | 1 + test/e2e/page_objects/embedStream.js | 2 +- test/server/graph/mutations/createComment.js | 3 +- test/server/graph/mutations/editComment.js | 26 +++++++++++++++-- 18 files changed, 90 insertions(+), 28 deletions(-) create mode 100644 docs/source/plugin/talk-plugin-notifications-category-moderation-actions.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index d066d7657..320aac987 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,6 +1,7 @@ -# Mozilla Community Participation Guidelines +# Vox Media Code of Conduct -## Version 2.3 - Updated May 16, 2017 +## Introduction -The heart of Mozilla is people. We put people first and do our best to recognize, appreciate and respect the diversity of our global contributors. The Mozilla Project welcomes contributions from everyone who shares our goals and wants to contribute in a healthy and constructive manner within our community. As such, we have adopted this code of conduct and require all those who participate to agree and adhere to these Community Participation Guidelines in order to help us create a safe and positive community experience for all. -https://www.mozilla.org/en-US/about/governance/policies/participation/ +This code of conduct governs the environment of the Vox Product team. We created it not because we anticipate bad behavior, but because we believe that articulating our values and obligations to one another reinforces the already exceptional level of respect among the team and because having a code provides us with clear avenues to correct our culture should it ever stray from that course. We make this code public in the hopes of contributing to the ongoing conversation about inclusion in the tech, design, and media communities and encourage other teams to fork it and make it their own. To our team, we commit to enforce and evolve this code as our team grows. + +Read the rest here: http://code-of-conduct.voxmedia.com/ diff --git a/docs/source/plugin/talk-plugin-notifications-category-moderation-actions.md b/docs/source/plugin/talk-plugin-notifications-category-moderation-actions.md new file mode 100644 index 000000000..05e47d30f --- /dev/null +++ b/docs/source/plugin/talk-plugin-notifications-category-moderation-actions.md @@ -0,0 +1,18 @@ +--- +title: talk-plugin-notifications-category-moderation-actions +permalink: /plugin/talk-plugin-notifications-category-moderation-actions/ +layout: plugin +plugin: + name: talk-plugin-notifications-moderation-actions + default: true + depends: + - name: talk-plugin-notifications + provides: + - Server + - Client +--- + +When a comment that is initially withheld from publication and is then approved or rejected, the user will receive a notification email. + +Configuration: +`TALK_MODERATION_NOTIFICATION_TYPES`. This plugin requires values to be set. Available options: `APPROVED`, `REJECTED` as a single string (comma separated). diff --git a/plugins.default.json b/plugins.default.json index 0fbc6e658..9c412b24f 100644 --- a/plugins.default.json +++ b/plugins.default.json @@ -1,26 +1,42 @@ { "server": [ - "talk-plugin-featured-comments", "talk-plugin-local-auth", + "talk-plugin-featured-comments", + "talk-plugin-respect", + "talk-plugin-rich-text", "talk-plugin-profile-data", - "talk-plugin-respect" + "talk-plugin-notifications", + "talk-plugin-notifications-category-featured", + "talk-plugin-notifications-category-moderation-actions", + "talk-plugin-notifications-category-reply", + "talk-plugin-notifications-category-staff", + "talk-plugin-notifications-digest-hourly", + "talk-plugin-notifications-digest-daily" ], "client": [ "talk-plugin-auth", + "talk-plugin-local-auth", "talk-plugin-author-menu", "talk-plugin-featured-comments", "talk-plugin-flag-details", - "talk-plugin-ignore-user", - "talk-plugin-local-auth", "talk-plugin-member-since", "talk-plugin-moderation-actions", "talk-plugin-permalink", - "talk-plugin-profile-data", "talk-plugin-respect", + "talk-plugin-rich-text", + "talk-plugin-viewing-options", "talk-plugin-sort-most-replied", "talk-plugin-sort-most-respected", "talk-plugin-sort-newest", "talk-plugin-sort-oldest", - "talk-plugin-viewing-options" + "talk-plugin-profile-data", + "talk-plugin-notifications", + "talk-plugin-notifications-category-featured", + "talk-plugin-notifications-category-moderation-actions", + "talk-plugin-notifications-category-reply", + "talk-plugin-notifications-category-staff", + "talk-plugin-notifications-digest-hourly", + "talk-plugin-notifications-digest-daily", + "talk-plugin-ignore-user" ] } diff --git a/plugins/talk-plugin-comment-content/README.md b/plugins/talk-plugin-comment-content/README.md index 20da06181..b95778861 100644 --- a/plugins/talk-plugin-comment-content/README.md +++ b/plugins/talk-plugin-comment-content/README.md @@ -4,7 +4,6 @@ permalink: /plugin/talk-plugin-comment-content/ layout: plugin plugin: name: talk-plugin-comment-content - default: true provides: - Client --- @@ -12,4 +11,4 @@ plugin: Pluginizes the text of a comment to support custom treatment of this text. This plugin currently parses the given text to see if it contains a link, and makes them clickable using -[react-linkify](https://www.npmjs.com/package/react-linkify). \ No newline at end of file +[react-linkify](https://www.npmjs.com/package/react-linkify). diff --git a/plugins/talk-plugin-featured-comments/README.md b/plugins/talk-plugin-featured-comments/README.md index eb5e3e63e..a31992efc 100644 --- a/plugins/talk-plugin-featured-comments/README.md +++ b/plugins/talk-plugin-featured-comments/README.md @@ -14,7 +14,7 @@ Enables the ability for Moderators to feature and un-feature comments via the Stream and the Admin. Featured comments show in a first-place tab on the Stream if there are any featured comments on that story. -When paired with the [talk-plugin-moderator-actions](/talk/plugin/talk-plugin-moderator-actions) +When paired with the [talk-plugin-moderation-actions](/talk/plugin/talk-plugin-moderation-actions) plugin, moderators will have the option of featuring comments from the comment stream. diff --git a/plugins/talk-plugin-moderation-actions/README.md b/plugins/talk-plugin-moderation-actions/README.md index 866c2abf7..18ba40c55 100644 --- a/plugins/talk-plugin-moderation-actions/README.md +++ b/plugins/talk-plugin-moderation-actions/README.md @@ -1,9 +1,9 @@ --- -title: talk-plugin-moderator-actions -permalink: /plugin/talk-plugin-moderator-actions/ +title: talk-plugin-moderation-actions +permalink: /plugin/talk-plugin-moderation-actions/ layout: plugin plugin: - name: talk-plugin-moderator-actions + name: talk-plugin-moderation-actions default: true provides: - Client diff --git a/plugins/talk-plugin-notifications-category-featured/README.md b/plugins/talk-plugin-notifications-category-featured/README.md index 21dc4e4d6..94c147386 100644 --- a/plugins/talk-plugin-notifications-category-featured/README.md +++ b/plugins/talk-plugin-notifications-category-featured/README.md @@ -4,6 +4,7 @@ permalink: /plugin/talk-plugin-notifications-category-featured/ layout: plugin plugin: name: talk-plugin-notifications-category-featured + default: true depends: - name: talk-plugin-notifications - name: talk-plugin-featured-comments @@ -14,4 +15,4 @@ plugin: When a comment is featured (via the [talk-plugin-featured-comments](/talk/plugin/talk-plugin-featured-comments) -plugin), the user will receive a notification email. \ No newline at end of file +plugin), the user will receive a notification email. diff --git a/plugins/talk-plugin-notifications-category-moderation-actions/README.md b/plugins/talk-plugin-notifications-category-moderation-actions/README.md index 62485037b..f5154bdbc 100644 --- a/plugins/talk-plugin-notifications-category-moderation-actions/README.md +++ b/plugins/talk-plugin-notifications-category-moderation-actions/README.md @@ -4,6 +4,7 @@ permalink: /plugin/talk-plugin-notifications-moderation-actions/ layout: plugin plugin: name: talk-plugin-notifications-moderation-actions + default: true depends: - name: talk-plugin-notifications provides: diff --git a/plugins/talk-plugin-notifications-category-reply/README.md b/plugins/talk-plugin-notifications-category-reply/README.md index 968615d5a..360793f24 100644 --- a/plugins/talk-plugin-notifications-category-reply/README.md +++ b/plugins/talk-plugin-notifications-category-reply/README.md @@ -4,6 +4,7 @@ permalink: /plugin/talk-plugin-notifications-category-reply/ layout: plugin plugin: name: talk-plugin-notifications-category-reply + default: true depends: - name: talk-plugin-notifications provides: @@ -12,4 +13,4 @@ plugin: --- Replies made to each user will trigger an email to be sent with the notification -details if enabled. \ No newline at end of file +details if enabled. diff --git a/plugins/talk-plugin-notifications-category-staff/README.md b/plugins/talk-plugin-notifications-category-staff/README.md index b9db42641..c5c0e0f55 100644 --- a/plugins/talk-plugin-notifications-category-staff/README.md +++ b/plugins/talk-plugin-notifications-category-staff/README.md @@ -4,6 +4,7 @@ permalink: /plugin/talk-plugin-notifications-category-staff/ layout: plugin plugin: name: talk-plugin-notifications-category-staff + default: true depends: - name: talk-plugin-notifications provides: diff --git a/plugins/talk-plugin-notifications-digest-daily/README.md b/plugins/talk-plugin-notifications-digest-daily/README.md index c0d2a210f..4cfbfeebc 100644 --- a/plugins/talk-plugin-notifications-digest-daily/README.md +++ b/plugins/talk-plugin-notifications-digest-daily/README.md @@ -4,6 +4,7 @@ permalink: /plugin/talk-plugin-notifications-digest-daily/ layout: plugin plugin: name: talk-plugin-notifications-digest-daily + default: true depends: - name: talk-plugin-notifications provides: @@ -13,4 +14,4 @@ plugin: Enables a digesting option for users to digest their notifications on an `DAILY` basis, where the notification batching occurs every day at midnight in the -`America/New_York` timezone. \ No newline at end of file +`America/New_York` timezone. diff --git a/plugins/talk-plugin-notifications-digest-hourly/README.md b/plugins/talk-plugin-notifications-digest-hourly/README.md index 1a0c20f51..72b2770c9 100644 --- a/plugins/talk-plugin-notifications-digest-hourly/README.md +++ b/plugins/talk-plugin-notifications-digest-hourly/README.md @@ -4,6 +4,7 @@ permalink: /plugin/talk-plugin-notifications-digest-hourly/ layout: plugin plugin: name: talk-plugin-notifications-digest-hourly + default: true depends: - name: talk-plugin-notifications provides: @@ -13,4 +14,4 @@ plugin: Enables a digesting option for users to digest their notifications on an `HOURLY` basis, where the notification batching occurs every hour in the -`America/New_York` timezone. \ No newline at end of file +`America/New_York` timezone. diff --git a/plugins/talk-plugin-notifications/README.md b/plugins/talk-plugin-notifications/README.md index c43ed4e97..6aa81e1e8 100644 --- a/plugins/talk-plugin-notifications/README.md +++ b/plugins/talk-plugin-notifications/README.md @@ -4,6 +4,7 @@ permalink: /plugin/talk-plugin-notifications/ layout: plugin plugin: name: talk-plugin-notifications + default: true provides: - Server - Client @@ -28,4 +29,4 @@ line by adjusting the translation, Talk's default behavior is to add a prefix before the subject of each email sent. This is always set to the [TALK-EMAIL-SUBJECT-PREFIX](/talk/advanced-configuration/#TALK-EMAIL-SUBJECT-PREFIX) configuration variable. You should change this parameter if you want to affect -how the subject is rendered. \ No newline at end of file +how the subject is rendered. diff --git a/plugins/talk-plugin-offtopic/README.md b/plugins/talk-plugin-offtopic/README.md index baa163f1e..96eea4c7a 100644 --- a/plugins/talk-plugin-offtopic/README.md +++ b/plugins/talk-plugin-offtopic/README.md @@ -4,11 +4,10 @@ permalink: /plugin/talk-plugin-offtopic/ layout: plugin plugin: name: talk-plugin-offtopic - default: true provides: - Server - Client --- Allows the comment authors to tag their comment as `Off-Topic` which will add a -visible badge on the frontend to other users that their comment is off-topic. \ No newline at end of file +visible badge on the frontend to other users that their comment is off-topic. diff --git a/plugins/talk-plugin-rich-text/README.md b/plugins/talk-plugin-rich-text/README.md index cac44438e..3d165743d 100644 --- a/plugins/talk-plugin-rich-text/README.md +++ b/plugins/talk-plugin-rich-text/README.md @@ -4,6 +4,7 @@ permalink: /plugin/talk-plugin-rich-text/ layout: plugin plugin: name: talk-plugin-rich-text + default: true provides: - Client - Server diff --git a/test/e2e/page_objects/embedStream.js b/test/e2e/page_objects/embedStream.js index 42dedefba..44c297a3d 100644 --- a/test/e2e/page_objects/embedStream.js +++ b/test/e2e/page_objects/embedStream.js @@ -97,7 +97,7 @@ module.exports = { elements: { logoutButton: '.talk-stream-userbox-logout', signInButton: '#coralSignInButton', - commentBoxTextarea: '.talk-plugin-commentbox-textarea', + commentBoxTextarea: '.talk-plugin-rich-text-content', commentBoxPostButton: '.talk-plugin-commentbox-button', firstComment: '.talk-stream-comment.talk-stream-comment-level-0', firstCommentContent: diff --git a/test/server/graph/mutations/createComment.js b/test/server/graph/mutations/createComment.js index 345f845c5..c50922c8f 100644 --- a/test/server/graph/mutations/createComment.js +++ b/test/server/graph/mutations/createComment.js @@ -16,7 +16,7 @@ describe('graph.mutations.createComment', () => { beforeEach(() => SettingsService.init()); const query = ` - mutation CreateComment($input: CreateCommentInput = {asset_id: 123, body: "Here's my comment!"}) { + mutation CreateComment($input: CreateCommentInput = {asset_id: 123, body: "Here's my comment!", richTextBody: "Here's my comment!"}) { createComment(input: $input) { comment { id @@ -293,6 +293,7 @@ describe('graph.mutations.createComment', () => { input: { asset_id: '123', body, + richTextBody: 'This is such a nice comment!', }, }); diff --git a/test/server/graph/mutations/editComment.js b/test/server/graph/mutations/editComment.js index 7ce8d865a..cf3962ad6 100644 --- a/test/server/graph/mutations/editComment.js +++ b/test/server/graph/mutations/editComment.js @@ -39,10 +39,12 @@ describe('graph.mutations.editComment', () => { it('a user can edit their own comment', async () => { const context = new Context({ user }); const testStartedAt = new Date(); + const body = `hello there! ${String(Math.random()).slice(2)}`; const comment = await CommentsService.publicCreate({ asset_id: asset.id, author_id: user.id, - body: `hello there! ${String(Math.random()).slice(2)}`, + body, + richTextBody: body, }); // body_history should be there @@ -58,6 +60,7 @@ describe('graph.mutations.editComment', () => { asset_id: asset.id, edit: { body: newBody, + richTextBody: newBody, }, }); if (response.errors && response.errors.length) { @@ -86,10 +89,12 @@ describe('graph.mutations.editComment', () => { }); it("A user can't edit their comment outside of the edit comment time window", async () => { + const body = `hello there! ${String(Math.random()).slice(2)}`; const comment = await CommentsService.publicCreate({ asset_id: asset.id, author_id: user.id, - body: `hello there! ${String(Math.random()).slice(2)}`, + body, + richTextBody: body, }); const now = new Date(); @@ -103,6 +108,7 @@ describe('graph.mutations.editComment', () => { asset_id: asset.id, edit: { body: newBody, + richTextBody: newBody, }, }); if (response.errors && response.errors.length > 0) { @@ -120,10 +126,12 @@ describe('graph.mutations.editComment', () => { }); it("A user can't edit someone else's comment", async () => { + const body = `hello there! ${String(Math.random()).slice(2)}`; const comment = await CommentsService.publicCreate({ asset_id: asset.id, author_id: user.id, - body: `hello there! ${String(Math.random()).slice(2)}`, + body, + richTextBody: body, }); const ctx = Context.forSystem(); @@ -140,6 +148,7 @@ describe('graph.mutations.editComment', () => { asset_id: asset.id, edit: { body: newBody, + richTextBody: newBody, }, }); expect(response.errors).to.be.empty; @@ -162,6 +171,7 @@ describe('graph.mutations.editComment', () => { asset_id: asset.id, edit: { body: newBody, + richTextBody: newBody, }, }); if (response.errors && response.errors.length > 0) { @@ -182,10 +192,12 @@ describe('graph.mutations.editComment', () => { }, beforeEdit: { body: 'I was offensive and thus REJECTED', + richTextBody: 'I was offensive and thus REJECTED', status: 'REJECTED', }, edit: { body: 'I have been edited to be less offensive', + richTextBody: 'I have been edited to be less offensive', }, error: true, }, @@ -200,10 +212,12 @@ describe('graph.mutations.editComment', () => { }, beforeEdit: { body: "I'm a perfectly acceptable comment", + richTextBody: "I'm a perfectly acceptable comment", status: 'ACCEPTED', }, edit: { body: `I have been sneakily edited to add a banned word: ${bannedWord}`, + richTextBody: `I have been sneakily edited to add a banned word: ${bannedWord}`, }, afterEdit: { status: 'REJECTED', @@ -220,10 +234,12 @@ describe('graph.mutations.editComment', () => { }, beforeEdit: { body: `I'm a rejected comment with bad word ${bannedWord}`, + richTextBody: `I'm a rejected comment with bad word ${bannedWord}`, status: 'REJECTED', }, edit: { body: 'I have been edited to remove the bad word', + richTextBody: 'I have been edited to remove the bad word', }, error: true, }, @@ -236,10 +252,13 @@ describe('graph.mutations.editComment', () => { }, beforeEdit: { body: "I'm a perfectly acceptable comment", + richTextBody: "I'm a perfectly acceptable comment", status: 'ACCEPTED', }, edit: { body: 'I have been edited to add a link: https://coralproject.net/', + richTextBody: + 'I have been edited to add a link: https://coralproject.net/', }, afterEdit: { status: 'SYSTEM_WITHHELD', @@ -266,6 +285,7 @@ describe('graph.mutations.editComment', () => { asset_id: asset.id, edit: { body: newBody, + richTextBody: newBody, }, }); From 1d1822c08659d016f02cc03d038162353869e62d Mon Sep 17 00:00:00 2001 From: Kim Gardner Date: Wed, 17 Apr 2019 17:54:58 +0100 Subject: [PATCH 12/14] Bump version 4.8.4 (#2266) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6870ad1e5..2f76efbff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "talk", - "version": "4.8.3", + "version": "4.8.4", "description": "A better commenting experience from Mozilla, The New York Times, and the Washington Post. https://coralproject.net", "main": "app.js", "private": true, From 441422542cdbc5510b14c2a30cfa57a40e41d68c Mon Sep 17 00:00:00 2001 From: Kim Gardner Date: Tue, 23 Apr 2019 00:41:34 +0100 Subject: [PATCH 13/14] Fix broken links and update info (#2277) --- CONTRIBUTING.md | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1ee0ce6b4..74a883a24 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,7 +18,7 @@ There are at least three ways to contribute to Talk: Conversation surrounding contributions begins in [issues](https://github.com/coralproject/talk/issues). -### When should I Create an Issue? +### When should I create an issue? File an issue as soon as you have an idea of something you'd like to contribute. We would love to hear what you're thinking and help refine the idea to make it into the Talk ecosystem. @@ -30,9 +30,9 @@ Please file issues if: ### What should I include? -Coral has adopted an iterative, agile development philosophy. All contributions that make it into the Talk repository should start with a story or this form: +Coral has adopted an iterative, agile development philosophy. All contributions that make it into the Talk repository should start with a user story in this form: -> As a [type of person] I'd like to be able to [do something] so that I can [get some result]. +> As a [type of Coral user] I'd like to [do something] so that I can [get some result/value]. This exercise does two things: @@ -71,23 +71,3 @@ If you'd like to discuss a contribution, please [file an issue](https://github.c Talk's translations are stored in `.yml` files [here](https://github.com/coralproject/talk/tree/master/locales). Translations can be submitted via pull request. If you do not use github, you can use 'en.yml' as a template and [email](https://coralproject.net/contact) the translations to us. We can import it into the repository. - -## I want to contribute but I'm not sure what to do! - -If you want to contribute but don't have a clear idea of exactly what that may be, here are some resources that may help: - -### Product Roadmap - -Please visit our product roadmap here: https://www.pivotaltracker.com/n/projects/1863625. If you'd like to take on any of our scheduled tasks we'd be forever grateful! - -### Discussion Forum - -If you'd like to discuss what we're up to, please visit or [community](https://community.coralproject.net/) or [contact us](https://coralproject.net/contact). - -### Integrations - -Have a favorite analytics engine? Data science service? CMS? Auth platform? Deployment platform or pipeline? Pet project? Consider building a plugin to integrate them! - -### Favorite Features? - -Do you have a favorite feature of an existing platform that's not yet been done in Talk? Sounds like Talk needs that feature. \ No newline at end of file From a6653152e4a8f74e57d4a336dff9d919649a71f6 Mon Sep 17 00:00:00 2001 From: Andrew Losowsky Date: Tue, 23 Apr 2019 18:08:48 -0400 Subject: [PATCH 14/14] added info box (#2281) * added info box * fix: styles --- docs/source/01-01-talk-quickstart.md | 15 ++++++++++++--- docs/themes/coral/source/css/talk.scss | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/docs/source/01-01-talk-quickstart.md b/docs/source/01-01-talk-quickstart.md index 6c5ecb5d1..7a20377d4 100644 --- a/docs/source/01-01-talk-quickstart.md +++ b/docs/source/01-01-talk-quickstart.md @@ -5,9 +5,18 @@ permalink: / Online comments are broken. Our open-source Talk tool rethinks how moderation, comment display, and conversation function, creating the opportunity for safer, -smarter discussions around your work. Read more about our product features and -goals [here](https://coralproject.net/talk). The -documentation available here is pertaining to the technical details for +smarter discussions around your work. + +More than 60 newsrooms use Talk to run their on-site communities, including the Washington Post, the Wall Street Journal, and IGN. + +[Read more about our product features and +goals here](https://coralproject.net/talk). + +
+ We offer hosting and support packages for Talk. [Contact us for more information.](https://coralproject.net/pricing/) +
+ +The documentation available here is pertaining to the technical details for installing, configuring, and deploying Talk. Talk is a [Node](https://nodejs.org/) application with diff --git a/docs/themes/coral/source/css/talk.scss b/docs/themes/coral/source/css/talk.scss index dfd673fcb..10b2951f3 100644 --- a/docs/themes/coral/source/css/talk.scss +++ b/docs/themes/coral/source/css/talk.scss @@ -465,3 +465,22 @@ a.brand { background: rgb(0, 102, 176); color: #fff; } + +.callout { + background-color: $coral_button_background; + color: white; + margin: 20px 0; + padding: 20px; + text-align: center; + + a { + @extend .coral-link; + color: #FFF; + border-color: #FFF; + + &:hover { + color: #FFF; + border-color: darken(#FFF, 5%); + } + } +}