Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
c28d7cd5
Commit
c28d7cd5
authored
7 years ago
by
Qubad786
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add utm parameters to course sharing url
parent
70e13407
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
46 additions
and
7 deletions
+46
-7
common/djangoapps/util/course.py
+25
-0
common/test/acceptance/tests/lms/test_lms_dashboard.py
+5
-3
lms/djangoapps/mobile_api/users/serializers.py
+2
-1
lms/djangoapps/mobile_api/users/tests.py
+7
-0
lms/djangoapps/mobile_api/users/views.py
+1
-0
lms/templates/dashboard/_dashboard_course_listing.html
+6
-3
No files found.
common/djangoapps/util/course.py
View file @
c28d7cd5
...
...
@@ -2,10 +2,35 @@
Utility methods related to course
"""
import
logging
import
urllib
from
django.conf
import
settings
log
=
logging
.
getLogger
(
__name__
)
COURSE_SHARING_UTM_PARAMETERS
=
{
'facebook'
:
{
'utm_medium'
:
'social-post'
,
'utm_campaign'
:
'social-sharing'
,
'utm_source'
:
'facebook'
,
},
'twitter'
:
{
'utm_medium'
:
'social-post'
,
'utm_campaign'
:
'social-sharing'
,
'utm_source'
:
'twitter'
,
},
}
def
get_encoded_course_sharing_utm_params
():
"""
Returns encoded Course Sharing UTM Parameters.
"""
return
{
utm_source
:
urllib
.
urlencode
(
utm_params
)
for
utm_source
,
utm_params
in
COURSE_SHARING_UTM_PARAMETERS
.
iteritems
()
}
def
get_link_for_about_page
(
course
):
"""
...
...
This diff is collapsed.
Click to expand it.
common/test/acceptance/tests/lms/test_lms_dashboard.py
View file @
c28d7cd5
...
...
@@ -153,7 +153,8 @@ class LmsDashboardPageTest(BaseLmsDashboardTest):
Validate the behavior of the social sharing feature
"""
twitter_widget
=
self
.
dashboard_page
.
get_course_social_sharing_widget
(
'twitter'
)
twitter_url
=
"https://twitter.com/intent/tweet?text=Testing+feature
%3
A
%20
http
%3
A
%2
F
%2
Fcustom
%2
Fcourse
%2
Furl"
twitter_url
=
(
"https://twitter.com/intent/tweet?text=Testing+feature
%3
A
%20
http
%3
A
%2
F
%2
Fcustom
%2
Fcourse
%2
Furl"
"
%3
Futm_campaign
%3
Dsocial-sharing
%26
utm_medium
%3
Dsocial-post
%26
utm_source
%3
Dtwitter"
)
self
.
assertEqual
(
twitter_widget
.
attrs
(
'title'
)[
0
],
'Share on Twitter'
)
self
.
assertEqual
(
twitter_widget
.
attrs
(
'data-tooltip'
)[
0
],
'Share on Twitter'
)
self
.
assertEqual
(
twitter_widget
.
attrs
(
'aria-haspopup'
)[
0
],
'true'
)
...
...
@@ -163,8 +164,9 @@ class LmsDashboardPageTest(BaseLmsDashboardTest):
self
.
assertIn
(
twitter_url
,
twitter_widget
.
attrs
(
'onclick'
)[
0
])
facebook_widget
=
self
.
dashboard_page
.
get_course_social_sharing_widget
(
'facebook'
)
facebook_url
=
(
'https://www.facebook.com/sharer/sharer.php?'
'u=http
%3
A
%2
F
%2
Fcustom
%2
Fcourse
%2
Furl"e=I
%27
m+taking'
)
facebook_url
=
(
"https://www.facebook.com/sharer/sharer.php?u=http
%3
A
%2
F
%2
Fcustom
%2
Fcourse
%2
Furl
%3
F"
"utm_campaign
%3
Dsocial-sharing
%26
utm_medium
%3
Dsocial-post
%26
utm_source
%3
Dfacebook&"
"quote=I
%27
m+taking+Test"
)
self
.
assertEqual
(
facebook_widget
.
attrs
(
'title'
)[
0
],
'Share on Facebook'
)
self
.
assertEqual
(
facebook_widget
.
attrs
(
'data-tooltip'
)[
0
],
'Share on Facebook'
)
self
.
assertEqual
(
facebook_widget
.
attrs
(
'aria-haspopup'
)[
0
],
'true'
)
...
...
This diff is collapsed.
Click to expand it.
lms/djangoapps/mobile_api/users/serializers.py
View file @
c28d7cd5
...
...
@@ -8,7 +8,7 @@ from rest_framework.reverse import reverse
from
certificates.api
import
certificate_downloadable_status
from
courseware.access
import
has_access
from
student.models
import
CourseEnrollment
,
User
from
util.course
import
get_link_for_about_page
from
util.course
import
get_link_for_about_page
,
get_encoded_course_sharing_utm_params
class
CourseOverviewField
(
serializers
.
RelatedField
):
...
...
@@ -53,6 +53,7 @@ class CourseOverviewField(serializers.RelatedField):
},
'course_image'
:
course_overview
.
course_image_url
,
'course_about'
:
get_link_for_about_page
(
course_overview
),
'course_sharing_utm_parameters'
:
get_encoded_course_sharing_utm_params
(),
'course_updates'
:
reverse
(
'course-updates-list'
,
kwargs
=
{
'course_id'
:
course_id
},
...
...
This diff is collapsed.
Click to expand it.
lms/djangoapps/mobile_api/users/tests.py
View file @
c28d7cd5
...
...
@@ -486,6 +486,13 @@ class TestCourseEnrollmentSerializer(MobileAPITestCase, MilestonesTestCaseMixin)
self
.
assertEqual
(
serialized
[
'course'
][
'number'
],
self
.
course
.
id
.
course
)
self
.
assertEqual
(
serialized
[
'course'
][
'org'
],
self
.
course
.
id
.
org
)
# Assert utm parameters
expected_utm_parameters
=
{
'twitter'
:
'utm_campaign=social-sharing&utm_medium=social-post&utm_source=twitter'
,
'facebook'
:
'utm_campaign=social-sharing&utm_medium=social-post&utm_source=facebook'
}
self
.
assertEqual
(
serialized
[
'course'
][
'course_sharing_utm_parameters'
],
expected_utm_parameters
)
def
test_with_display_overrides
(
self
):
self
.
course
.
display_coursenumber
=
"overridden_number"
self
.
course
.
display_organization
=
"overridden_org"
...
...
This diff is collapsed.
Click to expand it.
lms/djangoapps/mobile_api/users/views.py
View file @
c28d7cd5
...
...
@@ -229,6 +229,7 @@ class UserCourseEnrollmentsList(generics.ListAPIView):
including any access errors.
* course_about: The URL to the course about page.
* course_sharing_utm_parameters: Encoded UTM parameters to be included in course sharing url
* course_handouts: The URI to get data for course handouts.
* course_image: The path to the course image.
* course_updates: The URI to get data for course updates.
...
...
This diff is collapsed.
Click to expand it.
lms/templates/dashboard/_dashboard_course_listing.html
View file @
c28d7cd5
...
...
@@ -19,7 +19,7 @@ from student.helpers import (
VERIFY_STATUS_NEED_TO_REVERIFY
,
DISABLE_UNENROLL_CERT_STATES
,
)
from
util
.
course
import
get_link_for_about_page
from
util
.
course
import
get_link_for_about_page
,
get_encoded_course_sharing_utm_params
%
>
<
%
...
...
@@ -151,13 +151,15 @@ from util.course import get_link_for_about_page
% if share_settings:
<
%
share_url =
get_link_for_about_page(course_overview)
encoded_utm_parameters =
get_encoded_course_sharing_utm_params()
share_window_name =
'shareWindow'
share_window_config =
'toolbar=no, location=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'
%
>
% if share_settings.get('DASHBOARD_FACEBOOK', False):
<
%
facebook_share_url =
"{url}?{utm_params}"
.
format
(
url=
share_url,
utm_params=
encoded_utm_parameters['facebook'])
share_text =
_("I'm
taking
{
course_name
}
online
with
edX
.
org
.
Check
it
out
!").
format
(
course_name=
course_overview.display_name_with_default)
query_params =
urllib.urlencode((('u',
share_url
),
('
quote
',
share_text
.
encode
('
utf-8
')),))
query_params =
urllib.urlencode((('u',
facebook_
share_url
),
('
quote
',
share_text
.
encode
('
utf-8
')),))
facebook_url =
'https://www.facebook.com/sharer/sharer.php?{query}'
.
format
(
query=
query_params)
%
>
<a
...
...
@@ -176,9 +178,10 @@ from util.course import get_link_for_about_page
% endif
% if share_settings.get('DASHBOARD_TWITTER', False):
<
%
twitter_share_url =
"{url}?{utm_params}"
.
format
(
url=
share_url,
utm_params=
encoded_utm_parameters['twitter'])
default_share_text =
_("I'm
taking
{
course_name
}
online
with
@
edxonline
.
Check
it
out
!").
format
(
course_name=
course_overview.display_name_with_default)
share_text =
urllib.quote_plus(share_settings.get('DASHBOARD_TWITTER_TEXT',
default_share_text
.
encode
('
utf-8
')))
twitter_url =
'https://twitter.com/intent/tweet?text='
+
share_text
+
'%
20
'
+
urllib
.
quote_plus
(
share_url
)
twitter_url =
'https://twitter.com/intent/tweet?text='
+
share_text
+
'%
20
'
+
urllib
.
quote_plus
(
twitter_
share_url
)
%
>
<a
data-tooltip=
"${_('Share on Twitter')}"
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment