diff --git a/cms/djangoapps/contentstore/tests/test_contentstore.py b/cms/djangoapps/contentstore/tests/test_contentstore.py
index 27865abfa4..659bd9eca5 100644
--- a/cms/djangoapps/contentstore/tests/test_contentstore.py
+++ b/cms/djangoapps/contentstore/tests/test_contentstore.py
@@ -1289,11 +1289,6 @@ class ContentStoreTest(ContentStoreTestCase):
test_get_html('advanced_settings_handler')
test_get_html('textbooks_list_handler')
- # go look at a subsection page
- subsection_key = course_key.make_usage_key('sequential', 'test_sequence')
- resp = self.client.get_html(get_url('subsection_handler', subsection_key))
- self.assertEqual(resp.status_code, 200)
-
# go look at the Edit page
unit_key = course_key.make_usage_key('vertical', 'test_vertical')
resp = self.client.get_html(get_url('container_handler', unit_key))
diff --git a/cms/djangoapps/contentstore/views/component.py b/cms/djangoapps/contentstore/views/component.py
index 0da0a25e82..7ca319fe13 100644
--- a/cms/djangoapps/contentstore/views/component.py
+++ b/cms/djangoapps/contentstore/views/component.py
@@ -17,7 +17,6 @@ from xmodule.modulestore.django import modulestore
from xblock.core import XBlock
from xblock.django.request import webob_to_django_response, django_to_webob_request
from xblock.exceptions import NoSuchHandlerError
-from xblock.fields import Scope
from xblock.plugin import PluginMissingError
from xblock.runtime import Mixologist
@@ -25,7 +24,6 @@ from contentstore.utils import get_lms_link_for_item
from contentstore.views.helpers import get_parent_xblock, is_unit, xblock_type_display_name
from contentstore.views.item import create_xblock_info
-from models.settings.course_grading import CourseGradingModel
from opaque_keys.edx.keys import UsageKey
from .access import has_course_access
@@ -33,7 +31,6 @@ from django.utils.translation import ugettext as _
__all__ = ['OPEN_ENDED_COMPONENT_TYPES',
'ADVANCED_COMPONENT_POLICY_KEY',
- 'subsection_handler',
'container_handler',
'component_handler'
]
diff --git a/cms/static/coffee/spec/views/overview_spec.coffee b/cms/static/coffee/spec/views/overview_spec.coffee
deleted file mode 100644
index 333e369bc2..0000000000
--- a/cms/static/coffee/spec/views/overview_spec.coffee
+++ /dev/null
@@ -1,99 +0,0 @@
-define ["js/views/overview", "js/views/feedback_notification", "js/spec_helpers/create_sinon", "js/base", "date", "jquery.timepicker"],
-(Overview, Notification, create_sinon) ->
-
- describe "Course Overview", ->
- beforeEach ->
- appendSetFixtures """
-
-
- """
-
- appendSetFixtures """
-
- """
-
- spyOn(Overview, 'saveSetSectionScheduleDate').andCallThrough()
- # Have to do this here, as it normally gets bound in document.ready()
- $('a.action-save').click(Overview.saveSetSectionScheduleDate)
- $('a.delete-section-button').click(deleteSection)
- $(".edit-subsection-publish-settings .start-date").datepicker()
-
- @notificationSpy = spyOn(Notification.Mini.prototype, 'show').andCallThrough()
- window.analytics = jasmine.createSpyObj('analytics', ['track'])
- window.course_location_analytics = jasmine.createSpy()
-
- afterEach ->
- delete window.analytics
- delete window.course_location_analytics
- @notificationSpy.reset()
-
- it "should save model when save is clicked", ->
- $('a.edit-release-date').click()
- $('a.action-save').click()
- expect(Overview.saveSetSectionScheduleDate).toHaveBeenCalled()
-
- it "should show a confirmation on save", ->
- $('a.edit-release-date').click()
- $('a.action-save').click()
- expect(@notificationSpy).toHaveBeenCalled()
-
- # Fails sporadically in Jenkins.
-# it "should delete model when delete is clicked", ->
-# $('a.delete-section-button').click()
-# $('a.action-primary').click()
-# expect(@requests[0].url).toEqual('/delete_item')
-
- it "should not delete model when cancel is clicked", ->
- requests = create_sinon["requests"](this)
-
- $('a.delete-section-button').click()
- $('a.action-secondary').click()
- expect(requests.length).toEqual(0)
-
- # Fails sporadically in Jenkins.
-# it "should show a confirmation on delete", ->
-# $('a.delete-section-button').click()
-# $('a.action-primary').click()
-# expect(@notificationSpy).toHaveBeenCalled()
diff --git a/cms/static/js/base.js b/cms/static/js/base.js
index 12ca7b7c87..4b813caf8d 100644
--- a/cms/static/js/base.js
+++ b/cms/static/js/base.js
@@ -1,34 +1,19 @@
require(["domReady", "jquery", "underscore", "gettext", "js/views/feedback_notification", "js/views/feedback_prompt",
- "js/utils/date_utils", "js/utils/module", "js/utils/handle_iframe_binding", "js/utils/change_on_enter", "jquery.ui",
- "jquery.leanModal", "jquery.form", "jquery.smoothScroll"],
- function(domReady, $, _, gettext, NotificationView, PromptView, DateUtils, ModuleUtils, IframeUtils, TriggerChangeEventOnEnter)
+ "js/utils/date_utils", "js/utils/module", "js/utils/handle_iframe_binding",
+ "jquery.ui", "jquery.leanModal", "jquery.form", "jquery.smoothScroll"],
+ function(domReady, $, _, gettext, NotificationView, PromptView, DateUtils, ModuleUtils, IframeUtils)
{
var $body;
-var $newComponentItem;
-var $changedInput;
-var $spinner;
-var $newComponentTypePicker;
-var $newComponentTemplatePickers;
-var $newComponentButton;
domReady(function() {
$body = $('body');
- $newComponentItem = $('.new-component-item');
- $newComponentTypePicker = $('.new-component');
- $newComponentTemplatePickers = $('.new-component-templates');
- $newComponentButton = $('.new-component-button');
- $spinner = $('
');
-
$body.on('click', '.embeddable-xml-input', function() {
$(this).select();
});
- $('body').addClass('js');
-
- $('.unit .item-actions .delete-unit-button').bind('click', deleteUnit);
- $('.new-unit-item').bind('click', createNewUnit);
+ $body.addClass('js');
// lean/simple modal
$('a[rel*=modal]').leanModal({
@@ -69,7 +54,10 @@ domReady(function() {
});
// general link management - new window/tab
- $('a[rel="external"]').attr('title', gettext('This link will open in a new browser window/tab')).bind('click', linkNewWindow);
+ $('a[rel="external"]').attr({
+ title: gettext('This link will open in a new browser window/tab'),
+ target: '_blank'
+ });
// general link management - lean modal window
$('a[rel="modal"]').attr('title', gettext('This link will open in a modal window')).leanModal({
@@ -86,36 +74,6 @@ domReady(function() {
// tender feedback window scrolling
$('a.show-tender').bind('click', smoothScrollTop);
- // autosave when leaving input field
- $body.on('change', '.subsection-display-name-input', saveSubsection);
- $('.subsection-display-name-input').each(function() {
- this.val = $(this).val();
- });
- $("#start_date, #start_time, #due_date, #due_time").change(autosaveInput).keyup(TriggerChangeEventOnEnter)
- $('.sync-date, .remove-date').bind('click', autosaveInput);
-
- // expand/collapse methods for optional date setters
- $('.set-date').bind('click', showDateSetter);
- $('.remove-date').bind('click', removeDateSetter);
-
- $('.delete-section-button').bind('click', deleteSection);
- $('.delete-subsection-button').bind('click', deleteSubsection);
-
- $('.sync-date').bind('click', syncReleaseDate);
-
- // section date setting
- $('.set-publish-date').bind('click', setSectionScheduleDate);
- $('.edit-section-start-cancel').bind('click', cancelSetSectionScheduleDate);
-
- $body.on('change', '.edit-subsection-publish-settings .start-date', function() {
- if ($('.edit-subsection-publish-settings').find('.start-time').val() == '') {
- $('.edit-subsection-publish-settings').find('.start-time').val('12:00am');
- }
- });
- $('.edit-subsection-publish-settings').on('change', '.start-date, .start-time', function() {
- $('.edit-subsection-publish-settings').find('.save-button').show();
- });
-
IframeUtils.iframeBinding();
});
@@ -143,183 +101,6 @@ function smoothScrollTop(e) {
});
}
-function linkNewWindow(e) {
- window.open($(e.target).attr('href'));
- e.preventDefault();
-}
-
-function syncReleaseDate(e) {
- e.preventDefault();
- $(this).closest('.notice').hide();
- $("#start_date").val("");
- $("#start_time").val("");
-}
-
-
-function autosaveInput(e) {
- var self = this;
- if (this.saveTimer) {
- clearTimeout(this.saveTimer);
- }
-
- this.saveTimer = setTimeout(function() {
- $changedInput = $(e.target);
- saveSubsection();
- self.saveTimer = null;
- }, 500);
-}
-
-function saveSubsection() {
- // Spinner is no longer used by subsection name, but is still used by date and time pickers on the right.
- if ($changedInput && !$changedInput.hasClass('no-spinner')) {
- $spinner.css({
- 'position': 'absolute',
- 'top': Math.floor($changedInput.position().top + ($changedInput.outerHeight() / 2) + 3),
- 'left': $changedInput.position().left + $changedInput.outerWidth() - 24,
- 'margin-top': '-10px'
- });
- $changedInput.after($spinner);
- $spinner.show();
- }
-
- var locator = $('.subsection-body').data('locator');
-
- // pull all 'normalized' metadata editable fields on page
- var metadata_fields = $('input[data-metadata-name]');
-
- var metadata = {};
- for (var i = 0; i < metadata_fields.length; i++) {
- var el = metadata_fields[i];
- metadata[$(el).data("metadata-name")] = el.value;
- }
-
- // get datetimes for start and due, stick into metadata
- _(["start", "due"]).each(function(name) {
-
- var datetime = DateUtils.getDate(
- document.getElementById(name+"_date"),
- document.getElementById(name+"_time")
- );
- // if datetime is null, we want to set that in metadata anyway;
- // its an indication to the server to clear the datetime in the DB
- metadata[name] = datetime;
- });
-
- $.ajax({
- url: ModuleUtils.getUpdateUrl(locator),
- type: "PUT",
- dataType: "json",
- contentType: "application/json",
- data: JSON.stringify({
- 'metadata': metadata
- }),
- success: function() {
- $spinner.delay(500).fadeOut(150);
- $changedInput = null;
- }
- });
-}
-
-
-function createNewUnit(e) {
- e.preventDefault();
-
- var parent = $(this).data('parent');
- var category = $(this).data('category');
-
- analytics.track('Created a Unit', {
- 'course': course_location_analytics,
- 'parent_locator': parent
- });
-
-
- $.postJSON(ModuleUtils.getUpdateUrl(), {
- 'parent_locator': parent,
- 'category': category,
- 'display_name': 'New Unit'
- },
-
- function(data) {
- // redirect to the edit page
- window.location = "/container/" + data['locator'];
- });
-}
-
-function deleteUnit(e) {
- e.preventDefault();
- _deleteItem($(this).parents('li.courseware-unit'), 'Unit');
-}
-
-function deleteSubsection(e) {
- e.preventDefault();
- _deleteItem($(this).parents('li.courseware-subsection'), 'Subsection');
-}
-
-function deleteSection(e) {
- e.preventDefault();
- _deleteItem($(this).parents('section.courseware-section'), 'Section');
-}
-
-function _deleteItem($el, type) {
- var confirm = new PromptView.Warning({
- title: gettext('Delete this ' + type + '?'),
- message: gettext('Deleting this ' + type + ' is permanent and cannot be undone.'),
- actions: {
- primary: {
- text: gettext('Yes, delete this ' + type),
- click: function(view) {
- view.hide();
-
- var locator = $el.data('locator');
-
- analytics.track('Deleted an Item', {
- 'course': course_location_analytics,
- 'id': locator
- });
-
- var deleting = new NotificationView.Mini({
- title: gettext('Deleting…')
- });
- deleting.show();
-
- $.ajax({
- type: 'DELETE',
- url: ModuleUtils.getUpdateUrl(locator),
- success: function () {
- $el.remove();
- deleting.hide();
- }
- });
- }
- },
- secondary: {
- text: gettext('Cancel'),
- click: function(view) {
- view.hide();
- }
- }
- }
- });
- confirm.show();
-}
-
-function showDateSetter(e) {
- e.preventDefault();
- var $block = $(this).closest('.due-date-input');
- $(this).hide();
- $block.find('.date-setter').show();
-}
-
-function removeDateSetter(e) {
- e.preventDefault();
- var $block = $(this).closest('.due-date-input');
- $block.find('.date-setter').hide();
- $block.find('.set-date').show();
- // clear out the values
- $block.find('.date').val('');
- $block.find('.time').val('');
-}
-
function hideNotification(e) {
(e).preventDefault();
$(this).closest('.wrapper-notification').removeClass('is-shown').addClass('is-hiding').attr('aria-hidden', 'true');
@@ -330,18 +111,4 @@ function hideAlert(e) {
$(this).closest('.wrapper-alert').removeClass('is-shown');
}
-function setSectionScheduleDate(e) {
- e.preventDefault();
- $(this).closest("h4").hide();
- $(this).parent().siblings(".datepair").show();
-}
-
-function cancelSetSectionScheduleDate(e) {
- e.preventDefault();
- $(this).closest(".datepair").hide();
- $(this).parent().siblings("h4").show();
-}
-
- window.deleteSection = deleteSection;
-
}); // end require()
diff --git a/cms/static/sass/style-app-extend1.scss b/cms/static/sass/style-app-extend1.scss
index 347855a929..bdcf8f79d1 100644
--- a/cms/static/sass/style-app-extend1.scss
+++ b/cms/static/sass/style-app-extend1.scss
@@ -42,7 +42,6 @@
@import 'views/outline';
@import 'views/settings';
@import 'views/static-pages';
-@import 'views/subsection';
@import 'views/unit';
@import 'views/container';
@import 'views/users';
diff --git a/cms/static/sass/views/_subsection.scss b/cms/static/sass/views/_subsection.scss
deleted file mode 100644
index c64a9f79c1..0000000000
--- a/cms/static/sass/views/_subsection.scss
+++ /dev/null
@@ -1,511 +0,0 @@
-// studio - views - course subsection
-// ====================
-
-.view-subsection {
-
- .main-wrapper {
- margin-top: ($baseline*2);
- }
-
- .unit-settings {
- .window-contents {
- padding: 10px 20px;
- }
-
- .datepair {
-
- .field {
- display: inline-block;
- margin-right: ($baseline/4);
- width: 45%;
-
- &:last-child {
- margin-right: 0;
- }
-
- label, input {
- display: block;
- text-align: left;
- }
-
- input {
- width: 100%;
- }
-
- label {
- @extend %t-title8;
- margin-bottom: ($baseline/4);
- }
- }
- }
-
- .unit-actions {
- border-bottom: none;
- padding-bottom: 0;
- }
-
- .published-alert {
- display: none;
- padding: 10px;
- border: 1px solid #edbd3c;
- border-radius: 3px;
- background: #fbf6e1;
- font-size: 14px;
- line-height: 1.4;
-
- div {
- margin-top: 15px;
- }
- }
-
- input[type="radio"] {
- margin-right: 7px;
- }
-
- .status {
- font-size: 12px;
-
- strong {
- font-weight: 700;
- }
- }
-
- .preview-button, .view-button {
- @include white-button;
- margin-bottom: 10px;
- }
-
- .publish-button {
- @include orange-button;
- }
-
- .delete-button {
- @include blue-button;
- }
-
- .delete-draft {
- display: inline-block;
- }
-
- .delete-button,
- .preview-button,
- .publish-button,
- .view-button {
- font-size: 11px;
- margin-top: 10px;
- padding: 6px 15px 8px;
- }
- }
-
- .unit-history {
- &.collapsed {
- h4 {
- border-bottom: none;
- border-radius: 3px;
- }
-
- .window-contents {
- display: none;
- }
- }
-
- ol {
- border: 1px solid #ced2db;
-
- li {
- display: block;
- padding: 6px 8px 8px 10px;
- background: #edf1f5;
- font-size: 12px;
-
- &:hover {
- background: #fffcf1;
-
- .item-actions {
- display: block;
- }
- }
-
- &.checked {
- background: #d1dae3;
- }
-
- .item-actions {
- display: none;
- }
-
- input[type="radio"] {
- margin-right: 7px;
- }
- }
- }
- }
-
- .unit-location {
- .url {
- width: 100%;
- margin-bottom: 10px;
- box-shadow: none;
- }
-
- .draft-tag,
- .hidden-tag,
- .private-tag,
- .has-new-draft-tag {
- font-size: 8px;
- }
-
- .window-contents > ol {
- @include tree-view;
-
- .section-item {
- display: inline-block;
- width: 100%;
- font-size: 11px;
- padding: 2px 8px 4px;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- @include box-sizing(border-box);
- }
-
- ol {
- .section-item {
- padding-left: 20px;
- }
-
- .new-unit-item {
- margin-left: 20px;
- }
- }
-
- ol ol {
- .section-item {
- padding-left: 34px;
- }
-
- .new-unit-item {
- margin: 0 0 10px 41px;
- }
- }
- }
- }
-
- .subsection-body {
- padding: 32px 40px;
- @include clearfix;
-
- > div {
- margin-bottom: 40px;
- }
-
- input {
- font-size: 14px;
- }
- }
-
- .subsection-name-input {
- label {
- display: block;
- }
-
- input {
- width: 100%;
- font-size: 20px;
- }
- }
-
- .scheduled-date-input,
- .due-date-input {
- @include clearfix;
-
- .date-input,
- .time-input {
- display: inline-block;
- width: 100px;
- }
-
- .inherits-check {
- label {
- font-size: 13px;
- }
- }
-
- .notice {
- @extend %t-copy-sub2;
- margin-top: 6px;
- color: #999;
- }
- }
-
- .due-date-input {
- label {
- display: inline-block !important;
- margin-right: 10px;
- }
-
- a {
- font-size: 11px;
- font-weight: bold;
- text-transform: uppercase;
- }
-
- .date-setter {
- @include clearfix;
- display: none;
- }
-
- .remove-date {
- display: block;
- margin-top: ($baseline/4);
- }
- }
-
- .row.visibility {
- label {
- display: inline-block !important;
- margin-right: 10px;
- line-height: 21px;
- }
-
- a {
- display: inline-block;
- height: 31px;
- margin-right: 8px;
- vertical-align: middle;
- font-size: 11px;
- font-weight: 700;
- line-height: 31px;
- text-transform: uppercase;
- }
-
- .large-toggle {
- width: 41px;
- background: url(../img/large-toggles.png) no-repeat;
- background-position: 0 -50px;
-
- .hidden {
- background-position: 0 -5px;
- }
- }
- }
-
- .sortable-unit-list {
-
- .courseware-unit {
- @include font-size(13);
- @include clearfix();
- margin: -1px 0 0 0;
-
- .section-item {
- @include transition(background $tmg-avg ease-in-out 0);
- @include font-size(13);
- position: relative;
- display: block;
- padding: 6px 8px 8px 16px;
-
- &:hover {
- background: $blue-l5;
- }
- }
-
- .public-item {
- color: $black;
- }
-
- .private-item {
- color: $gray-l1;
- }
-
- .draft-item {
- color: $yellow-d1;
- }
-
- .draft-item:after,
- .public-item:after,
- .private-item:after {
- @include font-size(9);
- margin-left: 3px;
- font-weight: 600;
- text-transform: uppercase;
- }
-
- .draft-item:after {
- content: "- draft";
- }
-
- .private-item:after {
- content: "- private";
- }
- }
-
- .actions-list {
- display: inline-block;
- margin-bottom: 0;
- }
-
- .actions-item {
- @include font-size(13);
- display: inline-block;
- padding: 0 4px;
- vertical-align: middle;
-
- .action {
- min-width: ($baseline*.75);
- color: $gray-l2;
-
- &:hover,
- &.is-set {
- color: $blue;
- visibility: visible;
- }
-
- //reset old drag handle style
- &.drag-handle {
- float: none;
- margin: 0;
- background: transparent url(../img/drag-handles.png) right 5px no-repeat;
- text-align: center;
- }
- }
- }
-
- .new-unit-item {
- @extend %ui-btn-flat-outline;
- width: 100%;
- margin: 0 0 ($baseline/2) 0;
- border: 1px solid $gray-l3;
- padding: ($baseline/2) 0;
- color: $gray-l2;
-
- &:hover {
- box-shadow: none;
- background-image: none;
- }
- }
- }
-
- .gradable {
-
- label {
- @extend %t-title8;
- display: inline-block;
- vertical-align: top;
- }
-
- .gradable-status {
- position: relative;
- top: -4px;
- display: inline-block;
- margin-left: 10px;
- width: 65%;
-
- .status-label {
- margin: 0;
- padding: 0;
- background: transparent;
- color: $blue;
- border: none;
- font-size: 11px;
- font-weight: bold;
- text-transform: uppercase;
- }
-
- .menu-toggle {
- z-index: 100;
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 20px;
- background: transparent;
-
- &:hover, &.is-active {
- color: $blue;
- }
- }
-
- .menu {
- @include transition(opacity $tmg-f2 linear 0s);
- z-index: 1;
- position: absolute;
- top: -12px;
- left: -7px;
- display: none;
- width: 100%;
- margin: 0;
- padding: 8px 12px;
- opacity: 0.0;
- background: $white;
- border: 1px solid $mediumGrey;
- font-size: 12px;
- border-radius: 4px;
- box-shadow: 0 1px 2px rgba(0, 0, 0, .2);
-
-
- li {
- margin-bottom: 3px;
- padding-bottom: 3px;
- border-bottom: 1px solid $lightGrey;
-
- &:last-child {
- margin-bottom: 0;
- padding-bottom: 0;
- border: none;
- }
- }
-
- a {
-
- &.is-selected {
- font-weight: bold;
- }
- }
- }
-
- // dropdown state
- &.is-active {
-
- .menu {
- z-index: 10000;
- display: block;
- opacity: 1.0;
- }
-
- .menu-toggle {
- z-index: 1000;
- }
- }
-
- // set state
- &.is-set {
-
- .menu-toggle {
- color: $blue;
- }
-
- .status-label {
- display: block;
- color: $blue;
- }
- }
- }
- }
-
- // UI: DnD - specific elems/cases - units
- .courseware-unit {
-
- .draggable-drop-indicator-before {
- top: 0;
- }
-
- .draggable-drop-indicator-after {
- bottom: 0;
- }
- }
-
- // UI: DnD - specific elems/cases - empty parents initial drop indicator
- .draggable-drop-indicator-initial {
- display: none;
- }
-}
diff --git a/cms/templates/container.html b/cms/templates/container.html
index 1981e3191e..d8a7f745c9 100644
--- a/cms/templates/container.html
+++ b/cms/templates/container.html
@@ -17,7 +17,6 @@ from django.utils.translation import ugettext as _
<%block name="bodyclass">is-signedin course container view-container%block>
<%namespace name='static' file='static_content.html'/>
-<%namespace name="units" file="widgets/units.html" />
<%!
templates = ["basic-modal", "modal-button", "edit-xblock-modal",
diff --git a/cms/templates/edit_subsection.html b/cms/templates/edit_subsection.html
deleted file mode 100644
index bfe5c812dd..0000000000
--- a/cms/templates/edit_subsection.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<%inherit file="base.html" />
-<%def name="online_help_token()"><% return "subsection" %>%def>
-<%!
- import logging
- from util.date_utils import get_default_time_display, almost_same_datetime
- from django.utils.translation import ugettext as _
- from django.core.urlresolvers import reverse
-%>
-<%block name="title">${_("CMS Subsection")}%block>
-<%block name="bodyclass">is-signedin course view-subsection%block>
-
-
-<%namespace name="units" file="widgets/units.html" />
-<%namespace name='static' file='static_content.html'/>
-
-<%block name="content">
-
-
-
-
-
- ${_("Display Name:")}
-
-
-
-
- ${_("Units:")}
- ${units.enum_units(subsection, subsection_units=subsection_units)}
-
-
-
-
-
-
-
-
-%block>
-
-<%block name="jsextra">
-
-
-
-%block>
diff --git a/cms/templates/ux/reference/container.html b/cms/templates/ux/reference/container.html
index bb679d0110..14234905ea 100644
--- a/cms/templates/ux/reference/container.html
+++ b/cms/templates/ux/reference/container.html
@@ -11,7 +11,6 @@
<%block name="bodyclass">is-signedin course uploads view-container%block>
<%namespace name='static' file='../../static_content.html'/>
-<%namespace name="units" file="../../widgets/units.html" />
<%block name="content">
diff --git a/cms/templates/widgets/units.html b/cms/templates/widgets/units.html
deleted file mode 100644
index b874034a06..0000000000
--- a/cms/templates/widgets/units.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<%! from django.utils.translation import ugettext as _ %>
-<%! from contentstore.views.helpers import xblock_studio_url %>
-
-
-<%def name="enum_units(subsection, actions=True, selected=None, sortable=True, subsection_units=None)">
-
- <%
- if subsection_units is None:
- subsection_units = subsection.get_children()
- %>
- % for unit in subsection_units:
-
-
- <%include file="_ui-dnd-indicator-before.html" />
-
- <%
- unit_state = 'draft' # Note: this is a hack since this HTML file is being removed in bulk-publishing
- if unit.location == selected:
- selected_class = 'editing'
- else:
- selected_class = ''
- %>
-
-
- <%include file="_ui-dnd-indicator-after.html" />
-
- % endfor
-
- <%include file="_ui-dnd-indicator-initial.html" />
-
-
- ${_("New Unit")}
-
-
-
-%def>
diff --git a/cms/urls.py b/cms/urls.py
index e352d42ae2..46e22e3408 100644
--- a/cms/urls.py
+++ b/cms/urls.py
@@ -74,7 +74,6 @@ urlpatterns += patterns(
),
url(r'^course/{}?$'.format(settings.COURSE_KEY_PATTERN), 'course_handler', name='course_handler'),
url(r'^course_notifications/{}/(?P
\d+)?$'.format(settings.COURSE_KEY_PATTERN), 'course_notifications_handler'),
- url(r'^subsection/{}$'.format(settings.USAGE_KEY_PATTERN), 'subsection_handler'),
url(r'^container/{}$'.format(settings.USAGE_KEY_PATTERN), 'container_handler'),
url(r'^checklists/{}/(?P\d+)?$'.format(settings.COURSE_KEY_PATTERN), 'checklists_handler'),
url(r'^orphan/{}$'.format(settings.COURSE_KEY_PATTERN), 'orphan_handler'),
diff --git a/common/djangoapps/terrain/ui_helpers.py b/common/djangoapps/terrain/ui_helpers.py
index 6574cd3855..76f51594d3 100644
--- a/common/djangoapps/terrain/ui_helpers.py
+++ b/common/djangoapps/terrain/ui_helpers.py
@@ -46,7 +46,7 @@ REQUIREJS_WAIT = {
# Note that calling your org, course number, or display name, 'course' will mess this up
re.compile('^Course Outline \|'): [
"js/base", "js/models/course", "js/models/location", "js/models/section",
- "js/views/overview", "js/views/section_edit"],
+ "js/views/section_edit"],
# Dashboard
re.compile('^My Courses \|'): [
diff --git a/lms/static/js/verify_student/photocapture.js b/lms/static/js/verify_student/photocapture.js
index 3be1e57b16..7fa10fdc33 100644
--- a/lms/static/js/verify_student/photocapture.js
+++ b/lms/static/js/verify_student/photocapture.js
@@ -258,11 +258,6 @@ function objectTagForFlashCamera(name) {
}
}
-function linkNewWindow(e) {
- window.open($(e.target).attr('href'));
- e.preventDefault();
-}
-
function waitForFlashLoad(func, flash_object) {
if(!flash_object.hasOwnProperty('percentLoaded') || flash_object.percentLoaded() < 100){
setTimeout(function() {
@@ -334,6 +329,9 @@ $(document).ready(function() {
analytics.pageview("Capture Face Photo");
initSnapshotHandler(["photo_id", "face"], hasHtml5CameraSupport);
- $('a[rel="external"]').attr('title', gettext('This link will open in a new browser window/tab')).bind('click', linkNewWindow);
+ $('a[rel="external"]').attr({
+ title: gettext('This link will open in a new browser window/tab'),
+ target: '_blank'
+ });
});