feat: allow blocks lower than units to be bookmarked
Adds support to jump/scroll to blocks lower than units if bookmarked. It also fixes an issue with bookmark visit url function where it was not passing query params.
This commit is contained in:
committed by
Farhaan Bukhsh
parent
1573c7b07f
commit
aeddb8a922
@@ -62,7 +62,7 @@ from openedx.core.djangolib.markup import HTML
|
|||||||
<div class="vert-mod">
|
<div class="vert-mod">
|
||||||
% for idx, item in enumerate(items):
|
% for idx, item in enumerate(items):
|
||||||
% if item['content']:
|
% if item['content']:
|
||||||
<div class="vert vert-${idx}" data-id="${item['id']}">
|
<div class="vert vert-${idx}" data-id="${item['id']}" id="${item['id']}">
|
||||||
${HTML(item['content'])}
|
${HTML(item['content'])}
|
||||||
</div>
|
</div>
|
||||||
%endif
|
%endif
|
||||||
|
|||||||
@@ -1,20 +1,37 @@
|
|||||||
(function(define) {
|
(function(define) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
define(['backbone'], function(Backbone) {
|
define(['backbone'], function(Backbone) {
|
||||||
return Backbone.Model.extend({
|
return Backbone.Model.extend({
|
||||||
idAttribute: 'id',
|
idAttribute: 'id',
|
||||||
defaults: {
|
defaults: {
|
||||||
course_id: '',
|
course_id: '',
|
||||||
usage_id: '',
|
usage_id: '',
|
||||||
display_name: '',
|
display_name: '',
|
||||||
path: [],
|
path: [],
|
||||||
created: ''
|
created: ''
|
||||||
},
|
},
|
||||||
|
|
||||||
blockUrl: function() {
|
blockUrl: function() {
|
||||||
return '/courses/' + this.get('course_id') + '/jump_to/' + this.get('usage_id');
|
var path = this.get('path');
|
||||||
}
|
var url = '/courses/' + this.get('course_id') + '/jump_to/' + this.get('usage_id');
|
||||||
});
|
var params = new URLSearchParams();
|
||||||
|
var usage_id = this.get('usage_id');
|
||||||
|
// Confirm that current usage_id does not correspond to current unit
|
||||||
|
// path contains an array of parent blocks to the bookmarked block.
|
||||||
|
// Units only have two parents i.e. section and subsections.
|
||||||
|
// Below condition is only satisfied if a block lower than unit is bookmarked.
|
||||||
|
if (path.length > 2 && usage_id !== path[path.length - 1]) {
|
||||||
|
params.append('jumpToId', usage_id);
|
||||||
|
}
|
||||||
|
if (params.size > 0) {
|
||||||
|
// Pass nested block details via query parameters for it to be passed to learning mfe
|
||||||
|
// The learning mfe should pass it back to unit xblock via iframe url params.
|
||||||
|
// This would allow us to scroll to the child xblock.
|
||||||
|
url = url + '?' + params.toString();
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
}(define || RequireJS.define));
|
}(define || RequireJS.define));
|
||||||
|
|||||||
@@ -20,6 +20,12 @@
|
|||||||
this.bookmarkId = options.bookmarkId;
|
this.bookmarkId = options.bookmarkId;
|
||||||
this.bookmarked = options.bookmarked;
|
this.bookmarked = options.bookmarked;
|
||||||
this.usageId = options.usageId;
|
this.usageId = options.usageId;
|
||||||
|
if (options.bookmarkedText) {
|
||||||
|
this.bookmarkedText = options.bookmarkedText;
|
||||||
|
}
|
||||||
|
if (options.bookmarkText) {
|
||||||
|
this.bookmarkText = options.bookmarkText;
|
||||||
|
}
|
||||||
this.setBookmarkState(this.bookmarked);
|
this.setBookmarkState(this.bookmarked);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -78,9 +78,7 @@
|
|||||||
component_type: componentType,
|
component_type: componentType,
|
||||||
component_usage_id: componentUsageId
|
component_usage_id: componentUsageId
|
||||||
}
|
}
|
||||||
).always(function() {
|
);
|
||||||
window.location.href = event.currentTarget.pathname;
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user