Skip to content

Commit

Permalink
Upgrade more usages of interpolate
Browse files Browse the repository at this point in the history
  • Loading branch information
andy-armstrong committed Mar 13, 2016
1 parent ac1bbb3 commit 5ce548c
Show file tree
Hide file tree
Showing 16 changed files with 188 additions and 172 deletions.
1 change: 1 addition & 0 deletions cms/static/edx-pattern-library/js
1 change: 1 addition & 0 deletions cms/static/edx-ui-toolkit/js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ define([
'underscore', 'common/js/spec_helpers/ajax_helpers', 'teams/js/views/team_discussion',
'teams/js/spec_helpers/team_spec_helpers',
'xmodule_js/common_static/coffee/spec/discussion/discussion_spec_helper'
], function (_, AjaxHelpers, TeamDiscussionView, TeamSpecHelpers, DiscussionSpecHelper) {
], function(_, AjaxHelpers, TeamDiscussionView, TeamSpecHelpers, DiscussionSpecHelper) {
'use strict';
xdescribe('TeamDiscussionView', function() {
var discussionView, createDiscussionView, createPost, expandReplies, postReply;
Expand Down Expand Up @@ -30,17 +30,16 @@ define([
discussionID: TeamSpecHelpers.testTeamDiscussionID
},
true

)
);
AjaxHelpers.respondWithJson(requests, TeamSpecHelpers.createMockDiscussionResponse(threads));
return discussionView;
};

createPost = function(requests, view, title, body, threadID) {
title = title || "Test title";
body = body || "Test body";
threadID = threadID || "999";
title = title || 'Test title';
body = body || 'Test body';
threadID = threadID || '999';
view.$('.new-post-button').click();
view.$('.js-post-title').val(title);
view.$('.js-post-body textarea').val(body);
Expand All @@ -56,7 +55,7 @@ define([
true
),
interpolate(
'thread_type=discussion&title=%(title)s&body=%(body)s&anonymous=false&anonymous_to_peers=false&auto_subscribe=true',
'thread_type=discussion&title=%(title)s&body=%(body)s&anonymous=false&anonymous_to_peers=false&auto_subscribe=true', // jshint ignore:line
{
title: title.replace(/ /g, '+'),
body: body.replace(/ /g, '+')
Expand All @@ -79,11 +78,11 @@ define([
AjaxHelpers.expectRequest(
requests, 'GET',
interpolate(
'/courses/%(courseID)s/discussion/forum/%(discussionID)s/threads/%(threadID)s?ajax=1&resp_skip=0&resp_limit=25',
'/courses/%(courseID)s/discussion/forum/%(discussionID)s/threads/%(threadID)s?ajax=1&resp_skip=0&resp_limit=25', // jshint ignore:line
{
courseID: TeamSpecHelpers.testCourseID,
discussionID: TeamSpecHelpers.testTeamDiscussionID,
threadID: threadID || "999"
threadID: threadID || '999'
},
true
)
Expand All @@ -104,7 +103,7 @@ define([
'/courses/%(courseID)s/discussion/threads/%(threadID)s/reply?ajax=1',
{
courseID: TeamSpecHelpers.testCourseID,
threadID: threadID || "999"
threadID: threadID || '999'
},
true
),
Expand All @@ -115,7 +114,7 @@ define([
body: reply,
comments_count: 1
}),
"annotated_content_info": TeamSpecHelpers.createAnnotatedContentInfo()
annotated_content_info: TeamSpecHelpers.createAnnotatedContentInfo()
});
};

Expand Down Expand Up @@ -143,8 +142,8 @@ define([
it('can post a reply', function() {
var requests = AjaxHelpers.requests(this),
view = createDiscussionView(requests),
testReply = "Test reply",
testThreadID = "1";
testReply = 'Test reply',
testThreadID = '1';
expandReplies(requests, view, testThreadID);
postReply(requests, view, testReply, testThreadID);
expect(view.$('.discussion-response .response-body').text().trim()).toBe(testReply);
Expand All @@ -153,7 +152,7 @@ define([
it('can post a reply to a new post', function() {
var requests = AjaxHelpers.requests(this),
view = createDiscussionView(requests, []),
testReply = "Test reply";
testReply = 'Test reply';
createPost(requests, view);
expandReplies(requests, view);
postReply(requests, view, testReply);
Expand All @@ -166,7 +165,7 @@ define([
postTopicButton, updatedThreadElement,
updatedTitle = 'Updated title',
updatedBody = 'Updated body',
testThreadID = "1";
testThreadID = '1';
expandReplies(requests, view, testThreadID);
view.$('.action-more .icon').first().click();
view.$('.action-edit').first().click();
Expand All @@ -185,11 +184,11 @@ define([
},
true
),
'thread_type=discussion&title=&body=Updated+body&anonymous=false&anonymous_to_peers=false&auto_subscribe=true'
'thread_type=discussion&title=&body=Updated+body&anonymous=false&anonymous_to_peers=false&auto_subscribe=true' // jshint ignore:line
);
AjaxHelpers.respondWithJson(requests, {
content: TeamSpecHelpers.createMockPostResponse({
id: "999", title: updatedTitle, body: updatedBody
id: '999', title: updatedTitle, body: updatedBody
}),
annotated_content_info: TeamSpecHelpers.createAnnotatedContentInfo()
});
Expand All @@ -202,8 +201,7 @@ define([

it('cannot move a new thread to a different topic', function() {
var requests = AjaxHelpers.requests(this),
view = createDiscussionView(requests),
postTopicButton;
view = createDiscussionView(requests);
createPost(requests, view);
expandReplies(requests, view);
view.$('.action-more .icon').first().click();
Expand Down
24 changes: 13 additions & 11 deletions lms/djangoapps/teams/static/teams/js/views/instructor_tools.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
;(function (define) {
;(function(define) {
'use strict';

define(['backbone',
'underscore',
'gettext',
'teams/js/views/team_utils',
'common/js/components/utils/view_utils',
'text!teams/templates/instructor-tools.underscore'],
function (Backbone, _, gettext, TeamUtils, ViewUtils, instructorToolbarTemplate) {
'edx-ui-toolkit/js/utils/html-utils',
'text!teams/templates/instructor-tools.underscore'
],
function(Backbone, _, gettext, TeamUtils, ViewUtils, HtmlUtils, instructorToolbarTemplate) {
return Backbone.View.extend({

events: {
Expand All @@ -26,42 +28,42 @@
return this;
},

deleteTeam: function (event) {
deleteTeam: function(event) {
event.preventDefault();
ViewUtils.confirmThenRunOperation(
gettext('Delete this team?'),
gettext('Deleting a team is permanent and cannot be undone. All members are removed from the team, and team discussions can no longer be accessed.'),
gettext('Deleting a team is permanent and cannot be undone. All members are removed from the team, and team discussions can no longer be accessed.'), // jshint ignore:line
gettext('Delete'),
_.bind(this.handleDelete, this)
);
},

editMembership: function (event) {
editMembership: function(event) {
event.preventDefault();
Backbone.history.navigate(
'teams/' + this.team.get('topic_id') + '/' + this.team.id +'/edit-team/manage-members',
'teams/' + this.team.get('topic_id') + '/' + this.team.id + '/edit-team/manage-members',
{trigger: true}
);
},

handleDelete: function () {
handleDelete: function() {
var self = this,
postDelete = function () {
postDelete = function() {
self.teamEvents.trigger('teams:update', {
action: 'delete',
team: self.team
});
Backbone.history.navigate('topics/' + self.team.get('topic_id'), {trigger: true});
TeamUtils.showMessage(
interpolate(
HtmlUtils.interpolate(
gettext('Team "%(team)s" successfully deleted.'),
{team: self.team.get('name')},
true
),
'success'
);
};
this.team.destroy().then(postDelete).fail(function (response) {
this.team.destroy().then(postDelete).fail(function(response) {
// In the 404 case, this team has already been
// deleted by someone else. Since the team was
// successfully deleted anyway, just show a
Expand Down
40 changes: 22 additions & 18 deletions lms/djangoapps/teams/static/teams/js/views/team_card.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(function (define) {
(function(define) {
'use strict';
define([
'jquery',
Expand All @@ -8,17 +8,19 @@
'moment-with-locales',
'js/components/card/views/card',
'teams/js/views/team_utils',
'edx-ui-toolkit/js/utils/html-utils',
'text!teams/templates/team-membership-details.underscore',
'text!teams/templates/team-country-language.underscore',
'text!teams/templates/date.underscore'
], function (
], function(
$,
Backbone,
_,
gettext,
moment,
CardView,
TeamUtils,
HtmlUtils,
teamMembershipDetailsTemplate,
teamCountryLanguageTemplate,
dateTemplate
Expand All @@ -37,8 +39,8 @@

render: function () {
var allMemberships = _(this.memberships).sortBy(function (member) {
return new Date(member.last_activity_at);
}).reverse(),
return new Date(member.last_activity_at);
}).reverse(),
displayableMemberships = allMemberships.slice(0, 5),
maxMemberCount = this.maxTeamSize;
this.$el.html(this.template({
Expand Down Expand Up @@ -78,24 +80,23 @@
this.date = options.date;
},

render: function () {
render: function() {
var lastActivity = moment(this.date),
currentLanguage = $('html').attr('lang');
lastActivity.locale(currentLanguage);
this.$el.html(
interpolate(
HtmlUtils.interpolate(
// Translators: 'date' is a placeholder for a fuzzy, relative timestamp (see: http://momentjs.com/)
gettext("Last activity %(date)s"),
{date: this.template({date: lastActivity.format('MMMM Do YYYY, h:mm:ss a')})},
true
gettext('Last activity %(date)s'),
{date: this.template({date: lastActivity.format('MMMM Do YYYY, h:mm:ss a')})}
)
);
this.$('abbr').text(lastActivity.fromNow());
}
});

TeamCardView = CardView.extend({
initialize: function () {
initialize: function() {
CardView.prototype.initialize.apply(this, arguments);
// TODO: show last activity detail view
this.detailViews = [
Expand All @@ -107,22 +108,25 @@
}),
new TeamActivityView({date: this.model.get('last_activity_at')})
];
this.model.on('change:membership', function () {
this.model.on('change:membership', function() {
this.detailViews[0].memberships = this.model.get('membership');
}, this);
},

configuration: 'list_card',
cardClass: 'team-card',
title: function () { return this.model.get('name'); },
description: function () { return this.model.get('description'); },
details: function () { return this.detailViews; },
title: function() { return this.model.get('name'); },
description: function() { return this.model.get('description'); },
details: function() { return this.detailViews; },
actionClass: 'action-view',
actionContent: function() {
return interpolate(
gettext('View %(span_start)s %(team_name)s %(span_end)s'),
{span_start: '<span class="sr">', team_name: _.escape(this.model.get('name')), span_end: '</span>'},
true
return HtmlUtils.interpolate(
gettext('View {span_start}{team_name}{span_end}'),
{
team_name: this.model.get('name'),
span_start: HtmlUtils.HTML('<span class="sr">'),
span_end: HtmlUtils.HTML('</span>')
}
);
},
actionUrl: function () {
Expand Down
43 changes: 22 additions & 21 deletions lms/djangoapps/teams/static/teams/js/views/team_utils.js
Original file line number Diff line number Diff line change
@@ -1,70 +1,71 @@
/* Team utility methods*/
;(function (define) {
;(function(define) {
'use strict';
define(["jquery", "underscore"
], function ($, _) {
define(['jquery', 'underscore', 'edx-ui-toolkit/js/utils/html-utils'
], function($, _, HtmlUtils) {
return {

/**
* Convert a 2d array to an object equivalent with an additional blank element
*
* @param options {Array.<Array.<string>>} Two dimensional options array
* @param {Array.<Array.<string>>} options Two dimensional options array
* @returns {Object} Hash version of the input array
* @example selectorOptionsArrayToHashWithBlank([["a", "alpha"],["b","beta"]])
* // returns {"a":"alpha", "b":"beta", "":""}
*/
selectorOptionsArrayToHashWithBlank: function (options) {
selectorOptionsArrayToHashWithBlank: function(options) {
var map = _.object(options);
map[""] = "";
map[''] = '';
return map;
},

teamCapacityText: function (memberCount, maxMemberCount) {
teamCapacityText: function(memberCount, maxMemberCount) {
return interpolate(
// Translators: The following message displays the number of members on a team.
ngettext(
'%(memberCount)s / %(maxMemberCount)s Member',
'%(memberCount)s / %(maxMemberCount)s Members',
maxMemberCount
),
{memberCount: memberCount, maxMemberCount: maxMemberCount}, true
{memberCount: memberCount, maxMemberCount: maxMemberCount},
true
);
},

isUserMemberOfTeam: function(memberships, requestUsername) {
return _.isObject(
_.find(memberships, function(membership)
{
_.find(memberships, function(membership) {
return membership.user.username === requestUsername;
})
);
},

hideMessage: function () {
hideMessage: function() {
$('#teams-message').addClass('.is-hidden');
},

showMessage: function (message, type) {
var messageElement = $('#teams-message');
showMessage: function(message, type) {
var $message = $('#teams-message');
if (_.isUndefined(type)) {
type = 'warning';
}
messageElement.removeClass('is-hidden').addClass(type);
$message.removeClass('is-hidden').addClass(type);
$('.teams-content .msg-content .copy').text(message);
messageElement.focus();
$message.focus();
},

/**
* Parse `data` and show user message. If parsing fails than show `genericErrorMessage`
*/
parseAndShowMessage: function (data, genericErrorMessage, type) {
parseAndShowMessage: function(data, genericErrorMessage, type) {
var errors;
try {
var errors = JSON.parse(data.responseText);
this.showMessage(
_.isUndefined(errors.user_message) ? genericErrorMessage : errors.user_message, type
);
errors = JSON.parse(data.responseText);
this.showMessage(
_.isUndefined(errors.user_message) ? genericErrorMessage : errors.user_message, type
);
} catch (error) {
this.showMessage(genericErrorMessage, type);
this.showMessage(genericErrorMessage, type);
}
}
};
Expand Down

0 comments on commit 5ce548c

Please sign in to comment.