>
> If an XBlock requires some configuration in "course_view", config data
> will be stored as course-scoped fields (new feature); UI to set them up
> will be shown in Studio on "Pages" UI (???). This will likely require
> secondary "studio_course_view" (similar to existing studio_view)


As a long term goal, I think it'd make sense for most of those
course-scoped settings to be marked for inclusion in an auto-generated
editor UI (just as XModule usage fields are today, or XBlock fields with
StudioEditableXBlockMixin), and then we could replace the existing Studio
"Advanced Settings" page with a new UI that iterates over all enabled block
types and displays an editor for their scope-scoped fields (at least the
ones that also have User scope NONE).

The only concern I have about this implementation is that jquery.xblock
> dependent solution won't be able to use such course_views, as there are no
> actual XBlock created - we'll have to adapt jquery.xblock and/or APIs that
> back it up on edx-platform side.


That's a good point. We need to figure out what URL would represent the
request "Hey LMS, please render the *course_view* of XBlock type
*discussion* in course *CourseID* and return the result as JSON". The most
analogous current URL is the render-xblock-usage-as-JSON URL, which is
 "courses/{course_key}/xblock/{usage_key}/view/{optional_view_name}". So
the question is if that view should have a UsageKey (almost definitely not,
though conceivably we could have a usage key with a standard block ID like
"course"). I think a reasonable option would be to use a BlockTypeKey, so
the URL to get the course_view as JSON would be
"courses/{course_key}/xblock/{block_type_key}/view/{view_name}", e.g.
"courses/course-v1:org+course+run/xblock/block-type-v1:xblock.v1:discussion/view/course_view".
I think the other option is a new type of Opaque Key that contains a course
ID and a block type but no ID - however I don't want to contribute to the
proliferation of key types if we don't have to.

Since the return value of that API would presumably be identical, I hope it
wouldn't be too hard to adapt jquery.xblock to be compatible.


--
Braden
@OpenCraft <http://opencraft.com/>

On Tue, Jul 12, 2016 at 5:16 AM, <eug...@opencraft.com> wrote:

> Ok, the discussion is kind of stopped here, so I'm going to sum up main
> points:
>
>    - Looks like "course_view" + course-scoped fields provide more value
>    in general, while my initial suggestion is tailored to single use case,
>    seems simpler to implement, but maybe slightly harder to maintain.
>    - Since discussions (my primary use case) are going to be rewritten
>    soon it seems to make more sense to follow "course_view" approach.
>    - Additional benefit is that "course_view" are relatively orthogonal
>    to discussion rewrite, so we won't step on each other toes implementing
>    them in parallel.
>
> So, suggested implementation is as follows (Braden and David, correct me
> if I'm wrong):
>
>    - XBlocks will provide special "course_view".
>    - LMS and Studio will use that view to render XBlock content as
>    "course tab" page.
>    - XBlocks providing course_view will be automatically displayed as tab
>    when they are enabled in Advanced Settings - it won't require course
>    authors to actually add an instance somewhere. However, they will be
>    displayed in "Pages" UI, and allow hiding the tab.
>    - If an XBlock requires some configuration in "course_view", config
>    data will be stored as course-scoped fields (new feature); UI to set them
>    up will be shown in Studio on "Pages" UI (???). This will likely require
>    secondary "studio_course_view" (similar to existing studio_view)
>
> The only concern I have about this implementation is that jquery.xblock
> dependent solution won't be able to use such course_views, as there are no
> actual XBlock created - we'll have to adapt jquery.xblock and/or APIs that
> back it up on edx-platform side.
>
> Regards,
> Eugeny
> @Opencraft <http://opencraft.com>
>
> On Wednesday, July 6, 2016 at 7:47:06 PM UTC+3, Braden MacDonald wrote:
>>
>> I think that we can get much of the same effect in a simpler way by using
>>> the course scope for explicit default values stored under a different field
>>> name or names (e.g. a course scoped field named "defaults"). That way, we
>>> don't have to worry about weird inheritance interactions at all, or
>>> wondering where the value of a certain field really came from.
>>
>>
>> I agree. I didn't say this explicitly, but I was assuming that we would
>> use some sort of namespacing like that to avoid conflicts between different
>> types of scopes. We wouldn't want confusion or any chance of
>> unintentionally overriding field values.
>>
>> As a side note, one thing I want to be careful of in this discussion is
>>> the "Tab" naming convention.
>>>
>>
>> +1, which is why I do prefer "course_view" instead of "course_tab_view".
>>
>> Though it's worth pointing out as well that some people are interested in
>> using XBlocks in contexts that are not courses, such as content libraries,
>> XBlock SDK workbench scenarios, "microcourses", LTI consumers, blog posts,
>> etc. But I know that these semantic questions are part of the reason we
>> haven't had course-scoped fields yet, so I'm in favor of creating something
>> simple for the main use case (courses) rather than trying to make something
>> really generic and complex.
>>
>> --
>> Braden
>> @OpenCraft <http://opencraft.com/>
>>
>> On Wed, Jul 6, 2016 at 9:21 AM, David Ormsbee <da...@edx.org> wrote:
>>
>>> On Thu, Jun 30, 2016 at 3:04 PM, Braden MacDonald <bra...@opencraft.com>
>>> wrote:
>>>>
>>>> What I think would be much better would be if the LTI XBlock could just
>>>> declare a course-scoped field called "lti_providers" which contains a list
>>>> of LTI providers (name, URL, credentials). Then authors configure that
>>>> once, and it gets applied to all LTI Consumer XBlocks in the course, with
>>>> no duplication of data and no need to authors to enter things like the
>>>> "URL" or "lti_id" every time they want to add another instance of an LTI
>>>> tool in the course.
>>>>
>>>
>>> Huge +1 for a course scope. The CourseModule is a dumping ground of all
>>> kinds of settings info for different block types, just because there is no
>>> other place to store that kind of information today.
>>>
>>> I also completely agree with your points about favoring a course view
>>> for the data migration aspect.
>>>
>>> I think it would also be important to allow the default value of a
>>>> normal usage-scope field to be inherited (default is the same for all
>>>> blocks of that type in a course), but still overridable per usage. This
>>>> would allow instructors to do things like say "All problems in this course
>>>> should allow 5 attempts", but change that on a per-block basis as
>>>> necessary. Currently, AFAIK, there is no way for instructors to change some
>>>> setting like that for all blocks in a course.
>>>>
>>>
>>> I'd shy away from having content and usage scoped fields arbitrarily
>>> inherit from course scoped ones. While it's a powerful idea, I think that
>>> there's potential for confusion there, particularly when interacting with
>>> fields that are inherited from parent to child already. Right now, if you
>>> set "max_attempts" to 5 on the root course module by editing the XML, it
>>> will inherit down into all of the leaves. Allowing arbitrary overrides
>>> might mean that a Capa problem gets a max_attempts attribute set on it
>>> because it was inherited down from a sequence that had a course-scoped
>>> field of the same name. It also adds complexity because for the first time,
>>> we'd have the same field name mapping to multiple scopes.
>>>
>>> I think that we can get much of the same effect in a simpler way by
>>> using the course scope for explicit default values stored under a different
>>> field name or names (e.g. a course scoped field named "defaults"). That
>>> way, we don't have to worry about weird inheritance interactions at all, or
>>> wondering where the value of a certain field really came from.
>>>
>>> All that being said, I really feel like grading policy stuff should be
>>> in its own API (say a runtime service), just because it would help us with
>>> more dynamic content. But that's another big discussion, and probably not
>>> something we're going to get around to for a while.
>>>
>>> As a side note, one thing I want to be careful of in this discussion is
>>> the "Tab" naming convention. Tabs are a UI implementation detail, and they
>>> don't necessarily carry over to things like Mobile. When we talk about
>>> tabs, we're talking about a number of logically different things: the root
>>> of the courseware DAG, things that are still course content but aren't
>>> necessarily under the root, course level block views that don't directly
>>> tie to def/usage scoped fields, admin functionality like the instructor
>>> dashboard, etc. It would be good if we could refine our vocabulary for
>>> these concepts, and not constrain ourselves to a UX decision made during
>>> the prototype days of 2012.
>>>
>>> Take care.
>>>
>>> Dave
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "General Open edX discussion" group.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/edx-code/CAO_oFPyeCRUCjL%2BjC3AcjUaD_sMR245TcDt%2Bjot0eDyBsTgy0w%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/edx-code/CAO_oFPyeCRUCjL%2BjC3AcjUaD_sMR245TcDt%2Bjot0eDyBsTgy0w%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "General Open edX discussion" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/edx-code/633dbbae-4ffc-4fb2-a2d5-04fc4c07e627%40googlegroups.com
> <https://groups.google.com/d/msgid/edx-code/633dbbae-4ffc-4fb2-a2d5-04fc4c07e627%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"General Open edX discussion" group.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/edx-code/CAEyJbEbOBU26GuvxGnfMP%2BkTfY%3DDwEU_e9e6fVbgp3nGDX2FxQ%40mail.gmail.com.

Reply via email to