Commit Graph

84 Commits

Author SHA1 Message Date
Navin Karkera
1cd73d1b96 feat: support for syncing units from libraries to courses (#36553)
* feat: library unit sync
* feat: create component link only for component xblocks
* feat: container link model
* feat: update downstream api views
* feat: delete extra components in container on sync (not working)
* fix: duplicate definitions of LibraryXBlockMetadata
* test: add a new integration test suite for syncing
* feat: partially implement container+child syncing
* fix: blockserializer wasn't always serializing all HTML block fields
* feat: handle reorder, addition and deletion of components in sync

Updates children components of unit in course based on upstream unit,
deletes removed component, adds new ones and updates order as per
upstream.

* feat: return unit upstreamInfo and disallow edits to units in courses that are sourced from a library (#773)
* feat: Add upstream_info to unit
* feat: disallow edits to units in courses that are sourced from a library (#774)

---------

Co-authored-by: Jillian Vogel <jill@opencraft.com>
Co-authored-by: Rômulo Penido <romulo.penido@gmail.com>

* docs: capitalization of XBlock

Co-authored-by: David Ormsbee <dave@axim.org>

* refactor: (minor) change python property name to reflect type better

* fix: lots of "Tried to inspect a missing...upstream link" warnings

when viewing a unit in Studio

* docs: mention potential REST API for future refactor

* fix: check if upstream actually exists before making unit read-only

* chore: fix camel-case var

* fix: test failure when mocked XBlock doesn't have UpstreamSyncMixin

---------

Co-authored-by: Braden MacDonald <braden@opencraft.com>
Co-authored-by: Chris Chávez <xnpiochv@gmail.com>
Co-authored-by: Jillian Vogel <jill@opencraft.com>
Co-authored-by: Rômulo Penido <romulo.penido@gmail.com>
Co-authored-by: Braden MacDonald <mail@bradenm.com>
Co-authored-by: David Ormsbee <dave@axim.org>
2025-04-24 11:41:47 -07:00
Kyle McCormick
8e9f94424d feat!: Flip Studio MFE Waffle Flags to be On-By-Default (#36495)
This makes nearly all of Studio React-by-default by replacing the
"opt-in-to-React" flags with a set of parallel
"opt-out-of-React-and-use-the-legacy-experience" flags. Here is the
mapping:

* `contentstore.new_studio_mfe.use_new_unit_page` ->
  `!legacy_studio.unit_editor`
* `new_core_editors.use_new_problem_editor` ->
  `!legacy_studio.problem_editor`
* `new_core_editors.use_new_text_editor` ->
  `!legacy_studio.text_editor`
* `new_core_editors.use_new_video_editor` ->
  `!legacy_studio.video_editor`
* `new_studio_mfe.use_new_home_page` ->
  `!legacy_studio.home`
* `contentstore.new_studio_mfe.use_new_custom_pages` ->
  `!legacy_studio.custom_pages`
* `contentstore.new_studio_mfe.use_new_schedule_details_page` ->
  `!legacy_studio.schedule_details`
* `contentstore.new_studio_mfe.use_new_advanced_settings_page` ->
  `!legacy_studio.advanced_settings`
* `contentstore.new_studio_mfe.use_new_grading_page` ->
  `!legacy_studio.grading`
* `contentstore.new_studio_mfe.use_new_updates_page` ->
  `!legacy_studio.updates`
* `contentstore.new_studio_mfe.use_new_import_page` ->
  `!legacy_studio.import`
* `contentstore.new_studio_mfe.use_new_export_page` ->
  `!legacy_studio.export`
* `contentstore.new_studio_mfe.use_new_files_uploads_page` ->
  `!legacy_studio.files_uploads`
* `contentstore.new_studio_mfe.use_new_course_outline_page` ->
  `!legacy_studio.course_outline`
* `contentstore.new_studio_mfe.use_new_course_team_page` ->
  `!legacy_studio.course_team`
* `contentstore.new_studio_mfe.use_new_certificates_page` ->
  `!legacy_studio.certificates`
* `contentstore.new_studio_mfe.use_new_textbooks_page` ->
  `!legacy_studio.textbooks`
* `contentstore.new_studio_mfe.use_new_group_configurations_page` ->
  `!legacy_studio.configurations`

Part of: https://github.com/openedx/edx-platform/issues/36275
2025-04-24 12:34:35 -04:00
Ihor Romaniuk
8aeaaf4e21 feat: [FC-0070] add message events and styles to the library content page (#35785)
This introduces improvements for XBlock interactions within iframes:

* Add default styles for Library Content that renders in the iframe in the new Studio unit page
* When the `isIframeEmbed` option is enabled, the XBlock sends a `postMessage` to the parent window. When sending such a message, the standard link transition is cancelled and the transition is carried out in the MFE.
2025-01-16 14:05:26 -03:00
Navin Karkera
49330a222a feat: post message on preview library block changes (#35861)
Posts message with library xblock changes info instead of displaying a modal if the unit is rendered in an iframe.
2024-11-19 19:07:28 +00:00
Braden MacDonald
9e28ba92ec feat: minimal UI for the Problem Bank block 2024-10-22 17:27:04 -07:00
Braden MacDonald
83827a3dc2 feat: Confirmation modal to preview and accept v2 library updates (#35669) 2024-10-18 12:21:16 -07:00
Kyle McCormick
795d039581 feat: Upstream Sync with Content Library Blocks (#34925)
This introdues the idea of "upstream" and "downstream" content,
where downstreams (like course components) can pull content updates from
upstreams (like learning core-backed content library blocks). This
supports the upcoming Content Libraries Relaunch Beta for Sumac.
New features include:

* A new XBlockMixin: UpstreamSyncMixin.
* A new CMS Python API: cms.lib.xblock.upstream_sync
* A new CMS JSON API: /api/contentstore/v2/downstreams
* A temporary, very basic UI for syncing from Content Library blocks

Implements:
https://github.com/kdmccormick/edx-platform/blob/kdmccormick/upstream-proto/docs/decisions/0020-upstream-block.rst

Co-authored-by: Braden MacDonald <braden@opencraft.com>
2024-10-17 16:02:26 +00:00
Rômulo Penido
b42da7429f feat: Enable taxonomy/tagging feature in MFE by default (#34633)
* feat: make tagging feature enabled by default

* fix: use the correct flag for tagging enabled

* fix: make compatible with other changes from master

* fix: more compatibility fixes

* fix: show tag counts at all levels of the outline, not just units

* chore: typo

* test: fix counts in test suite now that tagging is on by default

---------

Co-authored-by: Braden MacDonald <braden@opencraft.com>
Co-authored-by: Yusuf Musleh <yusuf@opencraft.com>
2024-05-09 18:57:05 +05:30
Kristin Aoki
6c54c8fd15 fix: infinite load for library content block view (#34412)
* fix: hide view button when block is not configured

* fix: remove script for load timer if no children or library

* fix: remove print message

* fix: NoneType error is tests
2024-03-25 11:04:16 -04:00
Chris Chávez
5838d68efc feat: Tagging UX refinements - refresh tag count on edit (#34059)
* style: drawer-cover color updated for all tagging drawers
* feat: Update TagList component when a tag is updated on Manage tags drawer
* feat: Refactor TagCount to be able to refresh the count
* feat: Sync tag count in units
2024-01-25 10:33:47 -08:00
Rômulo Penido
f2606ca62c fix: capitalization of "Manage Tags" menu item in Studio (#34072) 2024-01-18 12:04:07 -08:00
Chris Chávez
90879d167f feat: Tag count in components on Studio Unit page(#33928) 2024-01-12 09:35:23 -08:00
Chris Chávez
6763928d60 style: UX Refinements on tagging components (#33884) 2023-12-13 11:28:27 -08:00
Kristin Aoki
9bf18b1e23 feat: add url to usage location (#33855) 2023-12-07 11:19:35 -05:00
Chris Chávez
f72710e261 feat: Display tags on the Unit page in Studio (feature-flagged) - Take 2 (#33761) 2023-11-21 12:12:17 -08:00
Kyle McCormick
e800ae7622 feat: provisionally support V2 libraries in LibraryContentBlock (randomized only) (#33263)
Refactors and reworks the LibraryContentBlock so that its
sync-from-library operations are asynchronous and work with
V2 content libraries. This also required us to make
library_content block duplication asynchronous, as that
involves syncing from the source library.

For the sake of clarity, this PR includes two major method renames:

* update_children(...) -> sync_from_library(...)
* refresh_library(...) -> sync_from_library(upgrade_to_latest=True, ...)

an an XBlock HTTP handler rename:

  /refresh_children -> /upgrade_and_sync

There are still a couple issues with import or duplication
of library_content blocks referencing V2 libraries other than
latest. These will be resolved in an upcoming PR.

Part of: https://openedx.atlassian.net/wiki/spaces/COMM/pages/3820617729/Spec+Memo+Content+Library+Authoring+Experience+V2
Follow-up work: https://github.com/openedx/edx-platform/issues/33640

Co-authored-by: Connor Haugh <chaugh@2u.com>
Co-authored-by: Eugene Dyudyunov <evgen.dyudyunov@raccoongang.com>
2023-11-20 15:58:10 +00:00
Rebecca Graber
c66ed87f65 Revert "feat: Tag List on Unit page (feature-flagged) (#33645)" (#33740)
This reverts commit 104d42c67a.
2023-11-17 20:12:47 +00:00
Chris Chávez
104d42c67a feat: Tag List on Unit page (feature-flagged) (#33645) 2023-11-17 10:03:28 -08:00
Yusuf Musleh
0a636918c3 fix: Hide Copy menu button in ContentLibrary (#33276)
Since the Copy/Paste functionality has not been implemented for
ContentLibraries yet, the "Copy to Clipboard" button should not appear
in both the ContentLibrary page.
2023-09-26 10:23:48 -07:00
Yusuf Musleh
39e042cfbd feat: Remove component-level copy/paste feature flag (#32980)
This is so that the feature is on by default.
2023-08-18 09:54:48 -07:00
Jesper Hodge
a6c57811cd feat add xblock api endpoint (#32282)
* feat: add xblock endpoint for updating an xblock

fix: remove debugger

feat: make function call more generic

refactor: just use request.json for request data as before

refactor: extract method

fix: revert wrong method change

fix: refactor correct method

feat: use handle_xblock method so that we can do more than update xblocks

fix: usage_key_string defaults to None

add all CRUD operations

fix usage key parameter

refactor: create /views folder

refactor: move xblock view functions to xblock_services

fix: tests

fix: tests

refactor: move xblock API endpoint to contentstore

* docs: add explanatory comment to new xblock_service

* feat: add feature flag for enabling content editing api

* feat: raise 404 if studio content api is disabled

* tests: test xblock endpoint

* test: make all post tests work

* test: check that xblock_handler receives correct args

* refactor: create util mixin for course factories with staff

* refactor: extract course staff authorization tests

* refactor: extract tests to api view testcase class

* test: add get tests

* test: fix tests

* test: fix tests

* test: fix tests

* test: add all crud tests

* fix: refactor to fix tests

* fix: merge conflict

* fix: merge conflict

* fix: tests after merge

* fix: json request decorator

* fix: lint

* fix: lint

* fix: lint

* fix: lint

* fix: new test files

* fix: lint

* fix: lint and apply PR suggestions

* fix: lint

* fix: lint

* fix: lint

* fix: lint

* fix: lint

* fix: lint
2023-06-15 14:17:49 -04:00
Braden MacDonald
b70252db94 fix: Update text of new clipboard menu, hide it in libraries (#32339)
* fix: Use clearer name for the new "Copy" action ("Copy to Clipboard")

* fix: Don't show the new copy menu in content libraries (not yet supported)
2023-06-01 11:36:53 -07:00
XnpioChV
c1b701309b feat: Waffleflag added to enable the new video editor flow 2023-05-04 16:24:06 -05:00
Braden MacDonald
6805654d40 feat: New actions menu for components in Studio (behind waffle flag) (#31853) 2023-03-03 10:09:27 -08:00
Jesper Hodge
50b0390f12 fix: TNL-10267 video blocks load wrong editor (#31468)
* fix: video editor button redirect

* fix: remove debugging statements

* fix: remove unnecessary comments
2022-12-22 16:19:40 -05:00
Raymond Zhou
d1394922ae feat: change text xblock title to 'Text' v2 (#30578) 2022-06-13 14:13:08 -04:00
connorhaugh
c9dce91b9a feat: studio redirect to new editors (#30523) 2022-06-07 16:30:40 -04:00
connorhaugh
2e13033fbe Revert "Feat change default title for text xblock to be 'text'" 2022-06-01 10:52:09 -04:00
rayzhou-bit
109e68ca94 feat: html xblock default title is now 'Text' 2022-05-03 12:21:56 -04:00
connorhaugh
4d834b977f feat: add flags to studio for editors work (#29536)
Description
In order to support ongoing editor work we need to open blocks in the course_authoring MFE from studio. We are gating that rollout behind a flag. This work does that for each of the new blocks, as well as provides urls to do so.

Supporting information
List of flags:
new_core_editors.use_new_text_editor
new_core_editors.use_new_video_editor
new_core_editors.use_new_problem_editor

Documentation of those flags:
Planned Removal Work: https://openedx.atlassian.net/browse/TNL-9370
2021-12-21 10:55:23 -05:00
Jawayria
70ae3e531a fix: replace 'ugettext' with 'gettext' in cms 2021-12-13 20:30:32 +05:00
Kyle McCormick
538dbf696b Import CMS code using fully qualified module names
or, using proper the proper Python 3 relative imports
(e.g., 'from .views import x') which are standard and
unambiguous.
2020-10-19 09:34:31 -04:00
Calen Pennington
07a15c681f Reapply the XBlock RequireJS -> Webpack changes
This reverts commit 105db2cf59, reversing
changes made to 447457594f.
2018-06-27 22:27:07 -04:00
Eric Fischer
e72549cdbe Revert "Merge pull request #18340 from cpennington/fix-studio-xblock-rendering"
This reverts commit 9a70ca78a5, reversing
changes made to efd5b9abbd.

Hopefully fixes EDUCATOR-3053
2018-06-15 13:18:27 -04:00
Calen Pennington
8b35756699 Fix studio xblock failing renders (due to asset hashing loop) 2018-06-07 15:52:26 -04:00
Calen Pennington
be3c7e05c5 Reapply "Switch container factory to webpack"
This reverts commit 18d93b00ba.
2018-06-07 15:52:05 -04:00
Calen Pennington
18d93b00ba Revert "Switch container factory to webpack" 2018-06-07 13:46:47 -04:00
Calen Pennington
0abe75a7c6 Re-apply the changes to convert XBlocks to Webpack
Reapplies edx/edx-platform#17509

This reverts commit 0f7e2373d0.
2018-06-06 12:52:12 -04:00
Calen Pennington
0f7e2373d0 Revert "Switch container factory to webpack" 2018-05-29 16:01:38 -04:00
Calen Pennington
ee6360543b Convert webpackified factories to es6 modules with global exports, and remove the invoke_page_factory pattern 2018-05-29 12:21:46 -04:00
Calen Pennington
12a082cf83 Convert xblock_validation.js to webpack 2018-05-29 12:19:05 -04:00
Calen Pennington
d08e199f79 Load XBlocks with webpack rather than RequireJS 2018-05-29 12:19:05 -04:00
Sofiya Semenova
d888498038 EDUCATOR-699 Modify deleted group warning on the unit/container page
EDUCATOR-1001 Fix language for visibility editor and validation to include units
2017-07-27 20:55:07 +00:00
Jeff LaJoie
1c90220462 EDUCATOR-434: Extends Course Outline Unit settings to allow Group Access configuration 2017-07-19 14:17:38 -04:00
Sarah Fischmann
eafb79defc Added lang attribute in LMS and Studio; added language col to course_overviews
Added course level lang attribute for LMS

added lang attribute to Studio

fixed error when trying to get language attribute on course that does not exist

simplified code

added lang attribure to more places in LMS, added migration for language attribute in course_overview

fixing contraints in the database for language attribute

added lang attribute to several more places in LMS and Studio

added lang attribute to discussion and custom pages; cleaned up code

fixed issue that was causing test failures

moved lang attribute higher in tree in two places
2017-06-13 14:42:29 -04:00
cahrens
106ac3a136 Change visibility to access.
EDUCATOR-396
2017-05-31 14:10:56 -04:00
cahrens
6e416310b9 Show messages about component visibility.
TNL-6746
2017-04-13 11:33:57 -04:00
Mushtaq Ali
485ffb1b68 restrict move action 2017-03-01 19:29:59 +05:00
muhammad-ammar
c7dc83c378 Move modal show course outline with breadcrumb
TNL-6060
2017-03-01 19:25:57 +05:00
muhammad-ammar
1b011af7e2 move dialog
TNL-6047
2017-03-01 19:21:38 +05:00