From f795d9f8362f7a1d2dd267e626781cd6dbc4afd1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:57:00 +0500 Subject: [PATCH 1/6] fix(deps): update dependency tinymce to v5.10.7 (#570) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index bf9bd524e..ff853399c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "redux": "4.1.2", "regenerator-runtime": "0.13.9", "timeago.js": "4.0.2", - "tinymce": "5.10.2", + "tinymce": "5.10.7", "yup": "0.31.1" }, "devDependencies": { @@ -22177,9 +22177,9 @@ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, "node_modules/tinymce": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.10.2.tgz", - "integrity": "sha512-5QhnZ6c8F28fYucLLc00MM37fZoAZ4g7QCYzwIl38i5TwJR5xGqzOv6YMideyLM4tytCzLCRwJoQen2LI66p5A==" + "version": "5.10.7", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.10.7.tgz", + "integrity": "sha512-9UUjaO0R7FxcFo0oxnd1lMs7H+D0Eh+dDVo5hKbVe1a+VB0nit97vOqlinj+YwgoBDt6/DSCUoWqAYlLI8BLYA==" }, "node_modules/tmpl": { "version": "1.0.5", diff --git a/package.json b/package.json index 0bbee652f..2fc4ca8dc 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "redux": "4.1.2", "regenerator-runtime": "0.13.9", "timeago.js": "4.0.2", - "tinymce": "5.10.2", + "tinymce": "5.10.7", "yup": "0.31.1" }, "devDependencies": { From 69e0689ab9333b0e33ddc78815f96f49c35a5257 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 16:18:23 +0500 Subject: [PATCH 2/6] fix(deps): update dependency @edx/frontend-platform to v4.6.3 (#566) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff853399c..13d613ea9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@edx/brand": "npm:@edx/brand-openedx@1.1.0", "@edx/frontend-component-footer": "12.1.0", "@edx/frontend-component-header": "4.3.0", - "@edx/frontend-platform": "4.6.0", + "@edx/frontend-platform": "4.6.3", "@edx/paragon": "20.44.0", "@reduxjs/toolkit": "1.8.0", "@tinymce/tinymce-react": "3.13.1", @@ -3373,9 +3373,9 @@ } }, "node_modules/@edx/frontend-platform": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@edx/frontend-platform/-/frontend-platform-4.6.0.tgz", - "integrity": "sha512-NZ1I3BgUZl7bqvDwSnnL+LxqZOdOUGZU55KiwvknqiKU8RS5Lx9tc4arp+NcX1u58xy/Xbinv+mriSO6PPxQNQ==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@edx/frontend-platform/-/frontend-platform-4.6.3.tgz", + "integrity": "sha512-vvmg2rWfjdOD9BKcHiFlV3n4kVGqMGUYS0UrIk8Dx7BYbb7It03q/twe5b2D3PHQwvNCTei9EgX8+Tn1QhkXBA==", "dependencies": { "@cospired/i18n-iso-languages": "4.1.0", "@formatjs/intl-pluralrules": "4.3.3", @@ -3402,8 +3402,8 @@ "transifex-utils.js": "i18n/scripts/transifex-utils.js" }, "peerDependencies": { - "@edx/frontend-build": ">= 8.1.0", - "@edx/paragon": ">= 10.0.0 < 21.0.0", + "@edx/frontend-build": ">= 8.1.0 || ^12.9.0-alpha.1", + "@edx/paragon": ">= 10.0.0 < 22.0.0", "prop-types": "^15.7.2", "react": "^16.9.0 || ^17.0.0", "react-dom": "^16.9.0 || ^17.0.0", diff --git a/package.json b/package.json index 2fc4ca8dc..38fcf54ad 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@edx/brand": "npm:@edx/brand-openedx@1.1.0", "@edx/frontend-component-footer": "12.1.0", "@edx/frontend-component-header": "4.3.0", - "@edx/frontend-platform": "4.6.0", + "@edx/frontend-platform": "4.6.3", "@edx/paragon": "20.44.0", "@reduxjs/toolkit": "1.8.0", "@tinymce/tinymce-react": "3.13.1", From 3a6a783f21f74def754b86bc9d7a6ba41d2c2cf7 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Fri, 20 Oct 2023 15:59:01 -0400 Subject: [PATCH 3/6] chore: Update to the new version of brand-openedx in the new scope. (#585) Part of https://github.com/openedx/axim-engineering/issues/23 This updates the `@edx/brand` alias to point to the `brand-openedx` package at the `openedx` scope. This does not impact imports because this package is used via an alias. --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 13d613ea9..9988c8b5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "license": "AGPL-3.0", "dependencies": { - "@edx/brand": "npm:@edx/brand-openedx@1.1.0", + "@edx/brand": "npm:@openedx/brand-openedx@^1.2.2", "@edx/frontend-component-footer": "12.1.0", "@edx/frontend-component-header": "4.3.0", "@edx/frontend-platform": "4.6.3", @@ -1857,10 +1857,10 @@ } }, "node_modules/@edx/brand": { - "name": "@edx/brand-openedx", - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@edx/brand-openedx/-/brand-openedx-1.1.0.tgz", - "integrity": "sha512-ne2ZKF1r0akkt0rEzCAQAk4cTDTI2GiWCpc+T7ldQpw9X57OnUB16dKsFNe40C9uEjL5h3Ps/ZsFM5dm4cIkEQ==" + "name": "@openedx/brand-openedx", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@openedx/brand-openedx/-/brand-openedx-1.2.2.tgz", + "integrity": "sha512-mBvxR7aB9290j9+h3d/9G8VkG1b8ecLSmlxc0vskfm7DL/fKUzFmHAj3PI7Z4kkwCQOL4QT5mJHJKC0ZFf7qvQ==" }, "node_modules/@edx/browserslist-config": { "version": "1.2.0", diff --git a/package.json b/package.json index 38fcf54ad..14e0f9a68 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "url": "https://github.com/openedx/frontend-app-discussions/issues" }, "dependencies": { - "@edx/brand": "npm:@edx/brand-openedx@1.1.0", + "@edx/brand": "npm:@openedx/brand-openedx@^1.2.2", "@edx/frontend-component-footer": "12.1.0", "@edx/frontend-component-header": "4.3.0", "@edx/frontend-platform": "4.6.3", From 5db3a18cb7afe26b9f3089a07de55766c98d36f4 Mon Sep 17 00:00:00 2001 From: Emad Rad Date: Tue, 24 Oct 2023 12:59:09 +0330 Subject: [PATCH 4/6] fix: Persian language (#555) * fix: corrected typos comfirm -> confirm varaint -> variant Privilaged -> Privileged courseare, coursweare -> courseware Discssion -> Discussion dimentions -> dimensions * refactor: clean up language codes --- Makefile | 2 +- src/discussions/common/ActionsDropdown.jsx | 2 +- src/discussions/common/Confirmation.jsx | 14 ++++++------ src/discussions/common/HoverCard.jsx | 8 +++---- src/discussions/data/hooks.test.jsx | 4 ++-- src/discussions/data/selectors.js | 2 +- .../discussions-home/DiscussionSidebar.jsx | 4 ++-- .../discussions-home/DiscussionsHome.jsx | 2 +- .../DiscussionsRestrictionBanner.jsx | 4 ++-- .../discussions-home/FeedbackWrapper.jsx | 4 ++-- .../empty-posts/EmptyPosts.test.jsx | 2 +- src/discussions/learners/LearnersView.jsx | 4 ++-- .../post-comments/comments/CommentsView.jsx | 6 ++--- .../comments/comment/Comment.jsx | 14 ++++++------ .../post-comments/comments/comment/Reply.jsx | 6 ++--- src/discussions/posts/PostsList.jsx | 4 ++-- .../posts/post-actions-bar/PostActionsBar.jsx | 12 +++++----- .../posts/post-editor/PostEditor.test.jsx | 4 ++-- src/discussions/posts/post/LikeButton.jsx | 4 ++-- src/discussions/posts/post/Post.jsx | 6 ++--- src/discussions/posts/post/PostFooter.jsx | 4 ++-- src/discussions/tours/data/api.js | 2 +- src/discussions/tours/data/thunks.js | 4 ++-- src/i18n/index.js | 22 +++++++++---------- src/index.scss | 10 ++++----- 25 files changed, 75 insertions(+), 75 deletions(-) diff --git a/Makefile b/Makefile index 6aef42c40..652eae3ca 100755 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ export TRANSIFEX_RESOURCE = frontend-app-discussions transifex_resource = frontend-app-discussions -transifex_langs = "ar,fr,es_419,zh_CN,tr_TR,pl,fr_CA,fr_FR,de_DE,it_IT,pt_PT,uk,ru,hi,cs,es_AR,es_ES,fa_IR" +transifex_langs = "ar,cs,de_DE,es_419,es_AR,es_ES,fa_IR,fr,fr_CA,fr_FR,hi,it_IT,pl,pt_PT,tr_TR,uk,ru,zh_CN" intl_imports = ./node_modules/.bin/intl-imports.js transifex_utils = ./node_modules/.bin/transifex-utils.js diff --git a/src/discussions/common/ActionsDropdown.jsx b/src/discussions/common/ActionsDropdown.jsx index f699473c2..110219d3d 100644 --- a/src/discussions/common/ActionsDropdown.jsx +++ b/src/discussions/common/ActionsDropdown.jsx @@ -68,7 +68,7 @@ const ActionsDropdown = ({ disabled={disabled} size={iconSize} ref={buttonRef} - iconClassNames={dropDownIconSize ? 'dropdown-icon-dimentions' : ''} + iconClassNames={dropDownIconSize ? 'dropdown-icon-dimensions' : ''} />
{ @@ -30,10 +30,10 @@ const Confirmation = ({ - + {intl.formatMessage(messages.confirmationCancel)} - @@ -45,16 +45,16 @@ const Confirmation = ({ Confirmation.propTypes = { isOpen: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, - comfirmAction: PropTypes.func.isRequired, + confirmAction: PropTypes.func.isRequired, title: PropTypes.string.isRequired, description: PropTypes.string.isRequired, - closeButtonVaraint: PropTypes.string, + closeButtonVariant: PropTypes.string, confirmButtonVariant: PropTypes.string, confirmButtonText: PropTypes.string, }; Confirmation.defaultProps = { - closeButtonVaraint: 'default', + closeButtonVariant: 'default', confirmButtonVariant: 'primary', confirmButtonText: '', }; diff --git a/src/discussions/common/HoverCard.jsx b/src/discussions/common/HoverCard.jsx index 05c51cbe2..62eab556f 100644 --- a/src/discussions/common/HoverCard.jsx +++ b/src/discussions/common/HoverCard.jsx @@ -31,7 +31,7 @@ const HoverCard = ({ const intl = useIntl(); const { enableInContextSidebar } = useContext(DiscussionContext); const { isClosed } = useContext(PostCommentsContext); - const isUserPrivilagedInPostingRestriction = useUserPostingEnabled(); + const isUserPrivilegedInPostingRestriction = useUserPostingEnabled(); return (
- {isUserPrivilagedInPostingRestriction && ( + {isUserPrivilegedInPostingRestriction && (
@@ -90,7 +90,7 @@ const CommentsView = ({ endorsed }) => { {handleDefinition(messages.responseCount, unEndorsedCommentsIds.length)} {unEndorsedCommentsIds.length === 0 &&
} {handleComments(unEndorsedCommentsIds, false)} - {(isUserPrivilagedInPostingRestriction && !!unEndorsedCommentsIds.length && !isClosed) && ( + {(isUserPrivilegedInPostingRestriction && !!unEndorsedCommentsIds.length && !isClosed) && (
{!addingResponse && (
) : ( - !isClosed && isUserPrivilagedInPostingRestriction && (inlineReplies.length >= 5) && ( + !isClosed && isUserPrivilegedInPostingRestriction && (inlineReplies.length >= 5) && (
diff --git a/src/discussions/posts/post-editor/PostEditor.test.jsx b/src/discussions/posts/post-editor/PostEditor.test.jsx index 6c8851b5e..1c8bda181 100644 --- a/src/discussions/posts/post-editor/PostEditor.test.jsx +++ b/src/discussions/posts/post-editor/PostEditor.test.jsx @@ -118,7 +118,7 @@ describe('PostEditor', () => { expect(screen.queryAllByRole('radio')).toHaveLength(2); // 2 categories with 4 subcategories each expect(screen.queryAllByText(/category-\d-topic \d/)).toHaveLength(8); - // 3 non courseare topics + // 3 non courseware topics expect(screen.queryAllByText(/ncw-topic \d/)).toHaveLength(3); expect(screen.queryByText('cohort', { exact: false })).not.toBeInTheDocument(); expect(screen.queryByText('Post anonymously')).not.toBeInTheDocument(); @@ -199,7 +199,7 @@ describe('PostEditor', () => { await renderComponent(); // Initially the user can't select a cohort expect(screen.queryByRole('combobox', { name: /cohort visibility/i })).not.toBeInTheDocument(); - // All coursweare topics are divided + // All courseware topics are divided [1, 2].forEach(catId => { [1, 2, 3, 4].forEach((topicId) => { act(() => { diff --git a/src/discussions/posts/post/LikeButton.jsx b/src/discussions/posts/post/LikeButton.jsx index 6adee2de8..afc4b1a60 100644 --- a/src/discussions/posts/post/LikeButton.jsx +++ b/src/discussions/posts/post/LikeButton.jsx @@ -31,10 +31,10 @@ const LikeButton = ({ count, onClick, voted }) => {
diff --git a/src/discussions/posts/post/Post.jsx b/src/discussions/posts/post/Post.jsx index 0911dc762..1f7ee1f92 100644 --- a/src/discussions/posts/post/Post.jsx +++ b/src/discussions/posts/post/Post.jsx @@ -138,8 +138,8 @@ const Post = ({ handleAddResponseButton }) => { title={intl.formatMessage(messages.deletePostTitle)} description={intl.formatMessage(messages.deletePostDescription)} onClose={hideDeleteConfirmation} - comfirmAction={handleDeleteConfirmation} - closeButtonVaraint="tertiary" + confirmAction={handleDeleteConfirmation} + closeButtonVariant="tertiary" confirmButtonText={intl.formatMessage(messages.deleteConfirmationDelete)} /> {!abuseFlagged && ( @@ -148,7 +148,7 @@ const Post = ({ handleAddResponseButton }) => { title={intl.formatMessage(messages.reportPostTitle)} description={intl.formatMessage(messages.reportPostDescription)} onClose={hideReportConfirmation} - comfirmAction={handleReportConfirmation} + confirmAction={handleReportConfirmation} confirmButtonVariant="danger" /> )} diff --git a/src/discussions/posts/post/PostFooter.jsx b/src/discussions/posts/post/PostFooter.jsx index e57ac8bc4..131e60bcd 100644 --- a/src/discussions/posts/post/PostFooter.jsx +++ b/src/discussions/posts/post/PostFooter.jsx @@ -56,8 +56,8 @@ const PostFooter = ({ return true; }} iconAs={Icon} - iconClassNames="follow-icon-dimentions" - className="post-footer-icon-dimentions" + iconClassNames="follow-icon-dimensions" + className="post-footer-icon-dimensions" alt="Follow" /> diff --git a/src/discussions/tours/data/api.js b/src/discussions/tours/data/api.js index e01bafe59..938f66584 100644 --- a/src/discussions/tours/data/api.js +++ b/src/discussions/tours/data/api.js @@ -9,7 +9,7 @@ export const getDiscussionTourUrl = () => `${getConfig().LMS_BASE_URL}/api/user_ * This function makes an HTTP GET request to the API to retrieve a list of tours for the authenticated user. * @returns {Promise} - A promise that resolves to the API response data. */ -export async function getDiscssionTours() { +export async function getDiscussionTours() { const { data } = await getAuthenticatedHttpClient() .get(getDiscussionTourUrl()); return data; diff --git a/src/discussions/tours/data/thunks.js b/src/discussions/tours/data/thunks.js index 7cebe0548..aa6fa4e6d 100644 --- a/src/discussions/tours/data/thunks.js +++ b/src/discussions/tours/data/thunks.js @@ -1,7 +1,7 @@ import { camelCaseObject } from '@edx/frontend-platform'; import { logError } from '@edx/frontend-platform/logging'; -import { getDiscssionTours, updateDiscussionTour } from './api'; +import { getDiscussionTours, updateDiscussionTour } from './api'; import { discussionsTourRequest, discussionsToursRequestError, @@ -21,7 +21,7 @@ export function fetchDiscussionTours() { return async (dispatch) => { try { dispatch(discussionsTourRequest()); - const data = await getDiscssionTours(); + const data = await getDiscussionTours(); dispatch(fetchUserDiscussionsToursSuccess(camelCaseObject(normaliseTourData(data)))); } catch (error) { dispatch(discussionsToursRequestError()); diff --git a/src/i18n/index.js b/src/i18n/index.js index 480344a79..70e91f4ed 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -3,9 +3,8 @@ import { messages as headerMessages } from '@edx/frontend-component-header'; import { messages as paragonMessages } from '@edx/paragon'; import arMessages from './messages/ar.json'; -// no need to import en messages-- they are in the defaultMessage field import csMessages from './messages/cs.json'; -import deMessages from './messages/de_DE.json'; +import deDEMessages from './messages/de_DE.json'; import es419Messages from './messages/es_419.json'; import esARMessages from './messages/es_AR.json'; import esESMessages from './messages/es_ES.json'; @@ -20,27 +19,28 @@ import ptPTMessages from './messages/pt_PT.json'; import ruMessages from './messages/ru.json'; import trTRMessages from './messages/tr_TR.json'; import ukMessages from './messages/uk.json'; -import zhcnMessages from './messages/zh_CN.json'; +import zhCNMessages from './messages/zh_CN.json'; +// no need to import en messages-- they are in the defaultMessage field const appMessages = { ar: arMessages, - de: deMessages, + cs: csMessages, + 'de-de': deDEMessages, 'es-419': es419Messages, + 'es-ar': esARMessages, + 'es-es': esESMessages, + 'fa-ir': faIRMessages, fr: frMessages, 'fr-ca': frCAMessages, 'fr-fr': frFRMessages, + hi: hiMessages, 'it-it': itITMessages, pl: plMessages, - 'tr-tr': trTRMessages, - 'zh-cn': zhcnMessages, 'pt-pt': ptPTMessages, + 'tr-tr': trTRMessages, uk: ukMessages, ru: ruMessages, - hi: hiMessages, - cs: csMessages, - 'es-AR': esARMessages, - 'es-ES': esESMessages, - 'fa-IR': faIRMessages, + 'zh-cn': zhCNMessages, }; export default [ diff --git a/src/index.scss b/src/index.scss index 8fdbb139f..613e10cd7 100755 --- a/src/index.scss +++ b/src/index.scss @@ -69,22 +69,22 @@ $fa-font-path: "~font-awesome/fonts"; font-family: "Inter"; } -.post-footer-icon-dimentions { +.post-footer-icon-dimensions { width: 32px !important; height: 32px !important; } -.like-icon-dimentions { +.like-icon-dimensions { width: 21px !important; height: 23px !important; } -.follow-icon-dimentions { +.follow-icon-dimensions { width: 21px !important; height: 24px !important; } -.dropdown-icon-dimentions { +.dropdown-icon-dimensions { width: 20px !important; height: 21px !important; } @@ -469,7 +469,7 @@ header { } } -.spinner-dimentions { +.spinner-dimensions { height: 24px !important; width: 24px !important; } From 4068b9e46a358e4967f4b38a56922387e98106bc Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Mon, 23 Oct 2023 09:49:23 -0400 Subject: [PATCH 5/6] docs: Update the security e-mail address. This repository is now managed by the Axim Collaborative and security issues with it should be reported to security@openedx.org instead of security@edx.org This work is being done as a part of https://github.com/openedx/wg-security/issues/16 --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 5450c5920..98de2c00e 100644 --- a/README.rst +++ b/README.rst @@ -66,7 +66,7 @@ The assigned maintainers for this component and other project details may be fou Reporting Security Issues ------------------------- -Please do not report security issues in public. Please email security@edx.org. +Please do not report security issues in public. Please email security@openedx.org. Project Structure ----------------- From 67700e897465076c84795748131ada9e4b62d08e Mon Sep 17 00:00:00 2001 From: Mashal Malik <107556986+Mashal-m@users.noreply.github.com> Date: Tue, 31 Oct 2023 17:30:05 +0500 Subject: [PATCH 6/6] refactor: updated README file to reflect template changes (#592) --- README.rst | 62 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/README.rst b/README.rst index 98de2c00e..3dc551062 100644 --- a/README.rst +++ b/README.rst @@ -1,3 +1,7 @@ +######################## +frontend-app-discussions +######################## + |Codecov| |license| .. |Codecov| image:: https://codecov.io/gh/openedx/frontend-app-discussions/branch/master/graph/badge.svg?token=3z7XvuzTq3 @@ -5,16 +9,34 @@ .. |license| image:: https://img.shields.io/badge/license-AGPL-informational :target: https://github.com/openedx/frontend-app-discussions/blob/master/LICENSE -frontend-app-discussions -======================== - -Introduction ------------- +******** +Purpose +******** This repository is a React-based micro frontend for the Open edX discussion forums. +*************** Getting Started ---------------- +*************** + +Prerequisites +============= + +The `devstack`_ is currently recommended as a development environment for your +new MFE. If you start it with ``make dev.up.lms`` that should give you +everything you need as a companion to this frontend. + +Note that it is also possible to use `Tutor`_ to develop an MFE. You can refer +to the `relevant tutor-mfe documentation`_ to get started using it. + +.. _Devstack: https://github.com/openedx/devstack + +.. _Tutor: https://github.com/overhangio/tutor + +.. _relevant tutor-mfe documentation: https://github.com/overhangio/tutor-mfe#mfe-development + +Cloning and Startup +=================== 1. Clone your new repo: @@ -31,7 +53,7 @@ Getting Started The dev server is running at `http://localhost:2002 `_. Getting Help ------------- +============ Please tag **@openedx/edx-infinity ** on any PRs or issues. Thanks. If you're having trouble, we have discussion forums at https://discuss.openedx.org where you can connect with others in the community. @@ -44,7 +66,8 @@ For more information about these options, see the `Getting Help`_ page. .. _Getting Help: https://openedx.org/getting-help How to Contribute ------------------ +================= + Details about how to become a contributor to the Open edX project may be found in the wiki at `How to contribute`_ .. _How to contribute: https://edx.readthedocs.io/projects/edx-developer-guide/en/latest/process/index.html @@ -55,13 +78,13 @@ can find it it at `PULL_REQUEST_TEMPLATE.md `_. Build Process Notes -------------------- +=================== **Production Build** The production build is created with ``npm run build``. +License +======= + +The code in this repository is licensed under the AGPLv3 unless otherwise +noted. + +Please see `LICENSE `_ for details. + Internationalization --------------------- +==================== Please see `edx/frontend-platform's i18n module `_ for documentation on internationalization. The documentation explains how to use it, and the `How To `_ has more detail. + +Reporting Security Issues +========================= + +Please do not report security issues in public. Please email security@openedx.org. \ No newline at end of file