Use get_link_for_about_page utility for social sharing on dashboard

This commit is contained in:
Qubad786
2017-04-04 22:55:12 +05:00
parent da9d7b2e89
commit 8d0b6ccc0b
6 changed files with 203 additions and 15 deletions

View File

@@ -0,0 +1,28 @@
/**
* Module for emitting Course Sharing Events.
*/
(function(define) {
'use strict';
define(['jquery', 'logger'], function($, Logger) {
return function(courseId) {
$(".action-facebook[data-course-id='" + courseId + "']").on('click', function() {
// Emit an event telling that the Facebook share link was clicked.
Logger.log('edx.course.share_clicked', {
course_id: courseId,
social_media_site: 'facebook',
location: 'dashboard'
});
});
$(".action-twitter[data-course-id='" + courseId + "']").on('click', function() {
// Emit an event telling that the Twitter share link was clicked.
Logger.log('edx.course.share_clicked', {
course_id: courseId,
social_media_site: 'twitter',
location: 'dashboard'
});
});
};
});
}).call(this, define || RequireJS.define);

View File

@@ -0,0 +1,91 @@
<div class="my-courses" id="my-courses">
<header class="wrapper-header-courses">
<h2 class="header-courses">My Courses</h2>
</header>
<h2 class="hd hd-2 sr" id="courses-tab">My Courses</h2>
<ul class="listing-courses">
<li class="course-item">
<div class="course-container">
<article class="course">
<section class="details" aria-labelledby="details-heading-cs181">
<h2 class="hd hd-2 sr" id="details-heading-cs181">Course details</h2>
<div class="wrapper-course-details">
<div class="wrapper-course-actions">
<div class="course-actions">
<a href="/courses/course-v1:uog+cs181+2017_LT/info" class="enter-course archived"
data-course-key="course-v1:uog+cs181+2017_LT">View Archived Course<span
class="sr">&nbsp;Accounting for Decision-Making</span></a>
<a data-tooltip="Share on Facebook" class="action action-facebook"
title="Share on Facebook"
data-course-id="course-v1:uog+cs181+2017_LT">
<span class="sr">Facebook</span>
<span class="fa fa-facebook" aria-hidden="true"></span>
</a>
<a data-tooltip="Share on Twitter" class="action action-twitter"
title="Share on Twitter"
data-course-id="course-v1:uog+cs181+2017_LT">
<span class="sr">Twitter</span>
<span class="fa fa-twitter" aria-hidden="true"></span>
</a>
</div>
</div>
</div>
</section>
<footer class="wrapper-messages-primary"> </footer>
</article>
</div>
</li>
<li class="course-item">
<div class="course-container">
<article class="course">
<section class="details" aria-labelledby="details-heading-DemoX">
<h2 class="hd hd-2 sr" id="details-heading-DemoX">Course details</h2>
<div class="wrapper-course-details">
<div class="wrapper-course-actions">
<div class="course-actions">
<a href="/courses/course-v1:edX+DemoX+Demo_Course/info" class="enter-course"
data-course-key="course-v1:edX+DemoX+Demo_Course">View Course<span class="sr">&nbsp;edX Demonstration Course</span></a>
<a data-tooltip="Share on Facebook" class="action action-facebook"
title="Share on Facebook"
data-course-id="course-v1:edX+DemoX+Demo_Course">
<span class="sr">Facebook</span>
<span class="fa fa-facebook" aria-hidden="true"></span>
</a>
<a data-tooltip="Share on Twitter" class="action action-twitter"
title="Share on Twitter"
data-course-id="course-v1:edX+DemoX+Demo_Course">
<span class="sr">Twitter</span>
<span class="fa fa-twitter" aria-hidden="true"></span>
</a>
</div>
</div>
</div>
</section>
<footer class="wrapper-messages-primary"> </footer>
</article>
</div>
</li>
</ul>
</div>

View File

@@ -0,0 +1,58 @@
define(
['jquery', 'logger', 'js/course_sharing/course_sharing_events'],
function($, Logger, CourseSharingEvents) {
'use strict';
describe('Course sharing click eventing', function() {
var courseKey1 = 'course-v1:edX+DemoX+Demo_Course',
courseKey2 = 'course-v1:uog+cs181+2017_LT';
beforeEach(function() {
loadFixtures('js/fixtures/course_sharing/course_listings.html');
// Register course sharing eventing callbacks for both courses.
CourseSharingEvents(courseKey1);
CourseSharingEvents(courseKey2);
spyOn(Logger, 'log');
});
it('sends an event only for a course whose facebook link is clicked', function() {
$(".action-facebook[data-course-id='" + courseKey1 + "']").click();
expect(Logger.log).toHaveBeenCalledWith('edx.course.share_clicked', {
course_id: courseKey1,
social_media_site: 'facebook',
location: 'dashboard'
});
expect(Logger.log.calls.count()).toEqual(1);
Logger.log.calls.reset();
$(".action-facebook[data-course-id='" + courseKey2 + "']").click();
expect(Logger.log).toHaveBeenCalledWith('edx.course.share_clicked', {
course_id: courseKey2,
social_media_site: 'facebook',
location: 'dashboard'
});
expect(Logger.log.calls.count()).toEqual(1);
});
it('sends an event only for a course whose twitter link is clicked', function() {
$(".action-twitter[data-course-id='" + courseKey1 + "']").click();
expect(Logger.log).toHaveBeenCalledWith('edx.course.share_clicked', {
course_id: courseKey1,
social_media_site: 'twitter',
location: 'dashboard'
});
expect(Logger.log.calls.count()).toEqual(1);
Logger.log.calls.reset();
$(".action-twitter[data-course-id='" + courseKey2 + "']").click();
expect(Logger.log).toHaveBeenCalledWith('edx.course.share_clicked', {
course_id: courseKey2,
social_media_site: 'twitter',
location: 'dashboard'
});
expect(Logger.log.calls.count()).toEqual(1);
});
});
}
);

View File

@@ -687,6 +687,7 @@
'js/spec/commerce/receipt_view_spec.js',
'js/spec/components/card/card_spec.js',
'js/spec/components/header/header_spec.js',
'js/spec/course_sharing/course_sharing_events_spec.js',
'js/spec/courseware/course_home_events_spec.js',
'js/spec/courseware/link_clicked_events_spec.js',
'js/spec/courseware/updates_visibility_spec.js',