diff --git a/cms/djangoapps/contentstore/features/help.feature b/cms/djangoapps/contentstore/features/help.feature deleted file mode 100644 index 567a2f2526..0000000000 --- a/cms/djangoapps/contentstore/features/help.feature +++ /dev/null @@ -1,53 +0,0 @@ -@shard_1 -Feature: CMS.Help - As a course author, I am able to access online help - - Scenario: Users can access online help on course listing page - Given There are no courses - And I am logged into Studio - Then I should see online help for "get_started" - - - Scenario: Users can access online help within a course - Given I have opened a new course in Studio - - And I click the course link in Studio Home - Then I should see online help for "outline" - - And I go to the course updates page - Then I should see online help for "updates" - - And I go to the pages page - Then I should see online help for "pages" - - And I go to the files and uploads page - Then I should see online help for "files" - - And I go to the textbooks page - Then I should see online help for "textbooks" - - And I select Schedule and Details - Then I should see online help for "setting_up" - - And I am viewing the grading settings - Then I should see online help for "grading" - - And I am viewing the course team settings - Then I should see online help for "course-team" - - And I select the Advanced Settings - Then I should see online help for "index" - - And I select Checklists from the Tools menu - Then I should see online help for "checklist" - - And I go to the import page - Then I should see online help for "import" - - And I go to the export page - Then I should see online help for "export" - - - Scenario: Users can access online help on the unit page - Given I am in Studio editing a new unit - Then I should see online help for "units" diff --git a/cms/djangoapps/contentstore/features/help.py b/cms/djangoapps/contentstore/features/help.py deleted file mode 100644 index f169e72057..0000000000 --- a/cms/djangoapps/contentstore/features/help.py +++ /dev/null @@ -1,24 +0,0 @@ -# pylint: disable=missing-docstring -# pylint: disable=redefined-outer-name -# pylint: disable=unused-argument - -from nose.tools import assert_false # pylint: disable=no-name-in-module -from lettuce import step, world - - -@step(u'I should see online help for "([^"]*)"$') -def see_online_help_for(step, page_name): - # make sure the online Help link exists on this page and contains the expected page name - elements_found = world.browser.find_by_xpath( - '//li[contains(@class, "nav-account-help")]//a[contains(@href, "{page_name}")]'.format( - page_name=page_name - ) - ) - assert_false(elements_found.is_empty()) - - # make sure the PDF link on the sock of this page exists - # for now, the PDF link stays constant for all the pages so we just check for "pdf" - elements_found = world.browser.find_by_xpath( - '//section[contains(@class, "sock")]//li[contains(@class, "js-help-pdf")]//a[contains(@href, "pdf")]' - ) - assert_false(elements_found.is_empty()) diff --git a/cms/envs/aws.py b/cms/envs/aws.py index 84d8947fbf..cc3d974377 100644 --- a/cms/envs/aws.py +++ b/cms/envs/aws.py @@ -204,8 +204,6 @@ LOGGING = get_logger_config(LOG_DIR, PLATFORM_NAME = ENV_TOKENS.get('PLATFORM_NAME', 'edX') STUDIO_NAME = ENV_TOKENS.get('STUDIO_NAME', 'edX Studio') STUDIO_SHORT_NAME = ENV_TOKENS.get('STUDIO_SHORT_NAME', 'Studio') -TENDER_DOMAIN = ENV_TOKENS.get('TENDER_DOMAIN', TENDER_DOMAIN) -TENDER_SUBDOMAIN = ENV_TOKENS.get('TENDER_SUBDOMAIN', TENDER_SUBDOMAIN) # Event Tracking if "TRACKING_IGNORE_URL_PATTERNS" in ENV_TOKENS: diff --git a/cms/envs/bok_choy.py b/cms/envs/bok_choy.py index ee671b084c..94f90d46ad 100644 --- a/cms/envs/bok_choy.py +++ b/cms/envs/bok_choy.py @@ -98,6 +98,9 @@ FEATURES['LICENSING'] = True FEATURES['ENABLE_MOBILE_REST_API'] = True # Enable video bumper in Studio FEATURES['ENABLE_VIDEO_BUMPER'] = True # Enable video bumper in Studio settings +# Enable partner support link in Studio footer +FEATURES['PARTNER_SUPPORT_EMAIL'] = 'partner-support@example.com' + ########################### Entrance Exams ################################# FEATURES['ENTRANCE_EXAMS'] = True diff --git a/cms/envs/common.py b/cms/envs/common.py index 304ac08b1a..df23cb0022 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -619,18 +619,6 @@ REQUIRE_ENVIRONMENT = "node" DEBUG_TOOLBAR_PATCH_SETTINGS = False -################################# TENDER ###################################### - -# If you want to enable Tender integration (http://tenderapp.com/), -# put in the subdomain where Tender hosts tender_widget.js. For example, -# if you want to use the URL https://example.tenderapp.com/tender_widget.js, -# you should use "example". -TENDER_SUBDOMAIN = None -# If you want to have a vanity domain that points to Tender, put that here. -# For example, "help.myapp.com". Otherwise, should should be your full -# tenderapp domain name: for example, "example.tenderapp.com". -TENDER_DOMAIN = None - ################################# CELERY ###################################### # Message configuration diff --git a/cms/envs/test.py b/cms/envs/test.py index 16133ac8ef..1d7e585f22 100644 --- a/cms/envs/test.py +++ b/cms/envs/test.py @@ -94,9 +94,6 @@ STATICFILES_STORAGE = 'pipeline.storage.NonPackagingPipelineStorage' STATIC_URL = "/static/" PIPELINE_ENABLED = False -TENDER_DOMAIN = "help.edge.edx.org" -TENDER_SUBDOMAIN = "edxedge" - # Update module store settings per defaults for tests update_module_store_settings( MODULESTORE, diff --git a/cms/static/cms/js/build.js b/cms/static/cms/js/build.js index dc9abfdc5b..1b290554b5 100644 --- a/cms/static/cms/js/build.js +++ b/cms/static/cms/js/build.js @@ -83,7 +83,6 @@ 'gettext': 'empty:', 'xmodule': 'empty:', 'mathjax': 'empty:', - 'tender': 'empty:', 'youtube': 'empty:' }, diff --git a/cms/static/cms/js/require-config.js b/cms/static/cms/js/require-config.js index c64ac7f9c1..4e5be98dfc 100644 --- a/cms/static/cms/js/require-config.js +++ b/cms/static/cms/js/require-config.js @@ -70,14 +70,6 @@ require.config({ // end of Annotation tool files // externally hosted files - "tender": [ - // if TENDER_SUBDOMAIN is defined, use that; otherwise, use a dummy value - // (the application JS will never `require(['tender'])` if it's not defined) - "//" + (typeof TENDER_SUBDOMAIN === "string" ? TENDER_SUBDOMAIN : "example") + ".tenderapp.com/tender_widget", - // if tender fails to load, fallback on a local file - // so that require doesn't fall over - "js/src/tender_fallback" - ], "mathjax": "//cdn.mathjax.org/mathjax/2.4-latest/MathJax.js?config=TeX-MML-AM_HTMLorMML-full&delayStartupUntil=configured", "youtube": [ // youtube URL does not end in ".js". We add "?noext" to the path so @@ -172,9 +164,6 @@ require.config({ deps: ["backbone"], exports: "Backbone.Paginator" }, - "tender": { - exports: 'Tender' - }, "youtube": { exports: "YT" }, diff --git a/cms/static/coffee/spec/main.coffee b/cms/static/coffee/spec/main.coffee index 0fcf7f6e2e..5454bea202 100644 --- a/cms/static/coffee/spec/main.coffee +++ b/cms/static/coffee/spec/main.coffee @@ -53,7 +53,6 @@ requirejs.config({ "mathjax": "//cdn.mathjax.org/mathjax/2.4-latest/MathJax.js?config=TeX-MML-AM_HTMLorMML-full&delayStartupUntil=configured", "youtube": "//www.youtube.com/player_api?noext", - "tender": "//api.tenderapp.com/tender_widget", "coffee/src/ajax_prefix": "xmodule_js/common_static/coffee/src/ajax_prefix", "js/spec/test_utils": "js/spec/test_utils", diff --git a/cms/static/coffee/spec/main_squire.coffee b/cms/static/coffee/spec/main_squire.coffee index 1feee91414..866e8d1a12 100644 --- a/cms/static/coffee/spec/main_squire.coffee +++ b/cms/static/coffee/spec/main_squire.coffee @@ -44,7 +44,6 @@ requirejs.config({ "mathjax": "//cdn.mathjax.org/mathjax/2.4-latest/MathJax.js?config=TeX-MML-AM_HTMLorMML-full&delayStartupUntil=configured", "youtube": "//www.youtube.com/player_api?noext", - "tender": "//api.tenderapp.com/tender_widget.js" "coffee/src/ajax_prefix": "xmodule_js/common_static/coffee/src/ajax_prefix" } diff --git a/cms/static/js/base.js b/cms/static/js/base.js index 5d937ef83f..4ab1c9a505 100644 --- a/cms/static/js/base.js +++ b/cms/static/js/base.js @@ -61,9 +61,6 @@ domReady(function() { // general link management - smooth scrolling page links $('a[rel*="view"][href^="#"]').bind('click', smoothScrollLink); - // tender feedback window scrolling - $('a.show-tender').bind('click', smoothScrollTop); - IframeUtils.iframeBinding(); // disable ajax caching in IE so that backbone fetches work diff --git a/cms/static/sass/_build.scss b/cms/static/sass/_build.scss index 303861279e..2253926702 100644 --- a/cms/static/sass/_build.scss +++ b/cms/static/sass/_build.scss @@ -37,7 +37,6 @@ @import 'elements/header'; @import 'elements/footer'; @import 'elements/sock'; -@import 'elements/tender-widget'; @import 'elements/system-feedback'; // alerts, notifications, states @import 'elements/system-help'; // help UI @import 'elements/modal'; // interstitial UI, dialogs, modal windows diff --git a/cms/static/sass/elements/_sock.scss b/cms/static/sass/elements/_sock.scss index 92e2fa9bb9..4ed0e06f69 100644 --- a/cms/static/sass/elements/_sock.scss +++ b/cms/static/sass/elements/_sock.scss @@ -86,6 +86,7 @@ .action-item { @include float(left); @include margin-right($baseline/2); + margin-bottom: ($baseline/2); &:last-child { @include margin-right(0); diff --git a/cms/static/sass/elements/_tender-widget.scss b/cms/static/sass/elements/_tender-widget.scss deleted file mode 100644 index 61d968c88e..0000000000 --- a/cms/static/sass/elements/_tender-widget.scss +++ /dev/null @@ -1,273 +0,0 @@ -// tender help/support widget -// ==================== - -// UI: hiding the default tender help "tag" element -#tender_toggler { - display: none; -} - -#tender_frame, #tender_window { - background-image: none !important; - background: none; -} - -#tender_window { - border-radius: 3px; - box-shadow: 0 2px 3px $shadow; - height: ($baseline*35) !important; - background: $white !important; - border: 2px solid $blue; -} - -#tender_window { - padding: 0 !important; -} - -#tender_frame { - background: $white; -} - -#tender_closer { - color: $white-t2 !important; - text-transform: uppercase; - top: 16px !important; - - &:hover { - color: $white !important; - } -} - -// ==================== - -// tender style overrides - not rendered through here, but an archive is needed -#tender_frame iframe html { - font-size: 62.5%; -} - -.widget-layout { - font-family: 'Open Sans', sans-serif; -} - -.widget-layout .search, -.widget-layout .tabs, -.widget-layout .footer, -.widget-layout .header h1 a { - display: none; -} - -.widget-layout .header { - background: rgb(0, 159, 230); - padding: ($baseline/2) $baseline; -} - -.widget-layout h1, .widget-layout h2, .widget-layout h3, .widget-layout h4, .widget-layout h5, .widget-layout h6, .widget-layout label { - @extend %t-strong; -} - -.widget-layout .header h1 { - @extend %t-title4; -} - -.widget-layout .content { - overflow: auto; - height: auto !important; - padding: 20px; -} - -.widget-layout .flash { - margin: -10px 0 15px 0; - padding: 10px 20px !important; - background-image: none !important; -} - -.widget-layout .flash-error { - background: rgb(178, 6, 16) !important; - color: rgb(255,255,255) !important; -} - -.widget-layout label { - @extend %t-copy-sub1; - @extend %t-strong; - margin-bottom: ($baseline/4); - color: #4c4c4c; -} - -.widget-layout input[type="text"], .widget-layout textarea { - @extend %t-copy-base; - padding: 10px; - color: rgb(0,0,0) !important; - border: 1px solid #b0b6c2; - border-radius: 2px; - background-color: #edf1f5; - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #edf1f5),color-stop(100%, #fdfdfe)); - background-image: -webkit-linear-gradient(top, #edf1f5,#fdfdfe); - background-image: -moz-linear-gradient(top, #edf1f5,#fdfdfe); - background-image: -ms-linear-gradient(top, #edf1f5,#fdfdfe); - background-image: -o-linear-gradient(top, #edf1f5,#fdfdfe); - background-image: linear-gradient(top, #edf1f5,#fdfdfe); - background-color: #edf1f5; - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset; - -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset; - box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset; -} - -.widget-layout input[type="text"]:focus, .widget-layout textarea:focus { - background-color: #fffcf1; - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fffcf1),color-stop(100%, #fffefd)); - background-image: -webkit-linear-gradient(top, #fffcf1,#fffefd); - background-image: -moz-linear-gradient(top, #fffcf1,#fffefd); - background-image: -ms-linear-gradient(top, #fffcf1,#fffefd); - background-image: -o-linear-gradient(top, #fffcf1,#fffefd); - background-image: linear-gradient(top, #fffcf1,#fffefd); - outline: 0; -} - -.widget-layout textarea { - width: 97%; -} - -.widget-layout p.note { - text-align: right !important; - display: inline-block !important; - position: absolute !important; - right: -130px !important; - top: -5px !important; - font-size: 13px !important; - opacity: 0.80; -} - -.widget-layout .form-actions { - margin: 15px 0; - border: none; - padding: 0; -} - -.widget-layout dl.form { - float: none; - width: 100%; - border-bottom: 1px solid $gray-l5; - margin-bottom: ($baseline/2); - padding-bottom: ($baseline/2); -} - -.widget-layout dl.form:last-child { - border: none; - padding-bottom: 0; - margin-bottom: $baseline; -} - -.widget-layout dl.form dt, .widget-layout dl.form dd { - display: inline-block; - vertical-align: middle; -} - -.widget-layout dl.form dt { - margin-right: ($baseline*0.75); - width: 70px; -} - -.widget-layout dl.form dd { - width: 65%; - position: relative; -} - -// specific elements -.widget-layout #discussion_body { - -} - -.widget-layout #discussion_body:before { - @extend %t-copy-sub1; - @extend %t-strong; - content: "What Question or Feedback Would You Like to Share?"; - display: block; - margin-bottom: ($baseline/4); - color: #4c4c4c; -} - - -.widget-layout dl#brain_buster_captcha { - float: none; - width: 100%; - border-top: 1px solid $gray-l5; - margin-top: ($baseline/2); - padding-top: ($baseline/2); -} - -.widget-layout dl#brain_buster_captcha dd { - display: block !important; -} - -.widget-layout dl#brain_buster_captcha #captcha_answer { - border-color: #333; -} - -.widget-layout dl#brain_buster_captcha dd label { - @extend %t-strong; - display: block; - margin: 0 15px 5px 0 !important; -} - -.widget-layout dl#brain_buster_captcha dd #captcha_answer { - display: block; - width: 97%; -} - -.widget-layout .form-actions .btn-post_topic { - @extend %t-copy-base; - @extend %t-strong; - display: block; - width: 100%; - height: auto !important; - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.3) inset,0 0 0 $transparent; - -moz-box-shadow: 0 1px 0 rgba(255,255,255,0.3) inset,0 0 0 $transparent; - box-shadow: 0 1px 0 rgba(255,255,255,0.3) inset,0 0 0 $transparent; - -webkit-transition-property: background-color,0.15s; - -moz-transition-property: background-color,0.15s; - -ms-transition-property: background-color,0.15s; - -o-transition-property: background-color,0.15s; - transition-property: background-color,0.15s; - -webkit-transition-duration: box-shadow,0.15s; - -moz-transition-duration: box-shadow,0.15s; - -ms-transition-duration: box-shadow,0.15s; - -o-transition-duration: box-shadow,0.15s; - transition-duration: box-shadow,0.15s; - -webkit-transition-timing-function: ease-out; - -moz-transition-timing-function: ease-out; - -ms-transition-timing-function: ease-out; - -o-transition-timing-function: ease-out; - transition-timing-function: ease-out; - -webkit-transition-delay: 0; - -moz-transition-delay: 0; - -ms-transition-delay: 0; - -o-transition-delay: 0; - transition-delay: 0; - border: 1px solid #34854c; - border-radius: 3px; - background-color: rgba(255,255,255,0.3); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255,255,255,0.3)),color-stop(100%, rgba(255,255,255,0))); - background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.3),rgba(255,255,255,0)); - background-image: -moz-linear-gradient(top, rgba(255,255,255,0.3),rgba(255,255,255,0)); - background-image: -ms-linear-gradient(top, rgba(255,255,255,0.3),rgba(255,255,255,0)); - background-image: -o-linear-gradient(top, rgba(255,255,255,0.3),rgba(255,255,255,0)); - background-image: linear-gradient(top, rgba(255,255,255,0.3),rgba(255,255,255,0)); - background-color: #25b85a; - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.3) inset; - -moz-box-shadow: 0 1px 0 rgba(255,255,255,0.3) inset; - box-shadow: 0 1px 0 rgba(255,255,255,0.3) inset; - color: $white; - text-align: center; - margin-top: $baseline; - padding: ($baseline/2) $baseline; -} - -.widget-layout .form-actions #private-discussion-opt { - float: none; - text-align: left; - margin: 0 0 15px 0; -} - -.widget-layout .form-actions .btn-post_topic:hover, .widget-layout .form-actions .btn-post_topic:active { - background-color: #16ca57; - color: $white; -} diff --git a/cms/templates/activation_invalid.html b/cms/templates/activation_invalid.html index 60a7954a56..fd9e5a9e5f 100644 --- a/cms/templates/activation_invalid.html +++ b/cms/templates/activation_invalid.html @@ -24,16 +24,6 @@ )}

- - diff --git a/cms/templates/base.html b/cms/templates/base.html index 7d8cda30da..eca989ad37 100644 --- a/cms/templates/base.html +++ b/cms/templates/base.html @@ -42,7 +42,6 @@ import json @@ -65,7 +64,6 @@ import json <%include file="widgets/sock.html" args="online_help_token=online_help_token" /> % endif <%include file="widgets/footer.html" /> - <%include file="widgets/tender.html" />
diff --git a/cms/templates/error.html b/cms/templates/error.html index 99191a3d4d..cebe726544 100644 --- a/cms/templates/error.html +++ b/cms/templates/error.html @@ -14,15 +14,8 @@ from django.conf import settings <%! -if settings.TENDER_DOMAIN: - help_link_start = ''.format( - domain=settings.TENDER_DOMAIN, - title=_("Use our feedback tool, Tender, to share your feedback") - ), - help_link_end = '' -else: - help_link_start = ''.format(email=settings.TECH_SUPPORT_EMAIL) - help_link_end = '' +help_link_start = ''.format(email=settings.TECH_SUPPORT_EMAIL) +help_link_end = '' %> <%block name="content"> diff --git a/cms/templates/index.html b/cms/templates/index.html index 0834383dd1..472156038c 100644 --- a/cms/templates/index.html +++ b/cms/templates/index.html @@ -496,13 +496,6 @@ ${_("Getting Started with {studio_name}").format(studio_name=settings.STUDIO_NAME)} - % if settings.TENDER_DOMAIN: -
  • - - ${_("Request help with {studio_name}").format(studio_name=settings.STUDIO_NAME)} - -
  • - % endif @@ -530,14 +523,8 @@ <%! from django.conf import settings -if settings.TENDER_DOMAIN: - help_link_start = ''.format( - domain=settings.TENDER_DOMAIN, - ) - help_link_end = '' -else: - help_link_start = ''.format(email=settings.TECH_SUPPORT_EMAIL) - help_link_end = '' +help_link_start = ''.format(email=settings.TECH_SUPPORT_EMAIL) +help_link_end = '' %>

    ${_("Your request to author courses in {studio_name} has been denied. Please {link_start}contact {platform_name} Staff with further questions{link_end}.").format( studio_name=settings.STUDIO_NAME, @@ -573,16 +560,6 @@ else:

    ${_('Need help?')}

    ${_('Please check your Junk or Spam folders in case our email isn\'t in your INBOX. Still can\'t find the verification email? Request help via the link below.')}

    - -
      - % if settings.TENDER_DOMAIN: -
    1. - - ${_("Request help with your {studio_name} account").format(studio_name=settings.STUDIO_NAME)} - -
    2. - % endif -
    diff --git a/cms/templates/login.html b/cms/templates/login.html index 0a2e036654..5e99961f63 100644 --- a/cms/templates/login.html +++ b/cms/templates/login.html @@ -45,20 +45,6 @@ from django.utils.translation import ugettext as _ - - % if settings.TENDER_DOMAIN: - - % endif diff --git a/cms/templates/widgets/footer.html b/cms/templates/widgets/footer.html index 4ddfd3763b..8c1e21fbbf 100644 --- a/cms/templates/widgets/footer.html +++ b/cms/templates/widgets/footer.html @@ -19,11 +19,6 @@ from django.core.urlresolvers import reverse - % if settings.TENDER_DOMAIN and user.is_authenticated(): - - % endif diff --git a/cms/templates/widgets/sock.html b/cms/templates/widgets/sock.html index 55f588d4e2..3d222fd9ed 100644 --- a/cms/templates/widgets/sock.html +++ b/cms/templates/widgets/sock.html @@ -20,46 +20,56 @@ from django.core.urlresolvers import reverse
    -

    ${_("{studio_name} Documentation").format(studio_name=settings.STUDIO_NAME)}

    + <%! + from django.conf import settings -
    -

    ${_("You can click Help in the upper right corner of any page to get more information about the page you're on. You can also use the links below to download the Building and Running an {platform_name} Course PDF file, to go to the {platform_name} Author Support site, or to enroll in edX101.").format(platform_name=settings.PLATFORM_NAME)}

    -
    + is_edx_domain = settings.FEATURES.get('IS_EDX_DOMAIN', False) + partner_email = settings.FEATURES.get('PARTNER_SUPPORT_EMAIL', '') - -
    - - % if settings.TENDER_DOMAIN: -
    -

    ${_("Request help with {studio_name}").format(studio_name=settings.STUDIO_NAME)}

    - -
    -

    ${_("Have problems, questions, or suggestions about {studio_name}?").format(studio_name=settings.STUDIO_NAME)}

    -
    + links = [{ + 'href': 'http://docs.edx.org', + 'sr_mouseover_text': _('Access documentation on http://docs.edx.org'), + 'text': _('edX Documentation'), + 'condition': True + }, { + 'href': 'https://partners.edx.org', + 'sr_mouseover_text': _('Access Course Staff Support on the Partner Portal to submit or review support tickets'), + 'text': _('edX Partner Portal'), + 'condition': is_edx_domain + }, { + 'href': 'https://open.edx.org', + 'sr_mouseover_text': _('Access the Open edX Portal'), + 'text': _('Open edX Portal'), + 'condition': not is_edx_domain + }, { + 'href': 'https://www.edx.org/course/overview-creating-edx-course-edx-edx101#.VO4eaLPF-n1', + 'sr_mouseover_text': _('Enroll in edX101: Overview of Creating an edX Course'), + 'text': _('Enroll in edX101'), + 'condition': True + }, { + 'href': 'https://www.edx.org/course/creating-course-edx-studio-edx-studiox', + 'sr_mouseover_text': _('Enroll in StudioX: Creating a Course with edX Studio'), + 'text': _('Enroll in StudioX'), + 'condition': True + }, { + 'href': 'mailto:{email}'.format(email=partner_email), + 'sr_mouseover_text': _('Send an email to {email}').format(email=partner_email), + 'text': _('Contact Us'), + 'condition': 'PARTNER_SUPPORT_EMAIL' in settings.FEATURES + }] + %>
    - % endif diff --git a/cms/templates/widgets/tender.html b/cms/templates/widgets/tender.html deleted file mode 100644 index bf8b9e20de..0000000000 --- a/cms/templates/widgets/tender.html +++ /dev/null @@ -1,20 +0,0 @@ -% if settings.TENDER_SUBDOMAIN and user.is_authenticated(): - -% endif diff --git a/common/static/js/src/tender_fallback.js b/common/static/js/src/tender_fallback.js deleted file mode 100644 index 1df3b2f106..0000000000 --- a/common/static/js/src/tender_fallback.js +++ /dev/null @@ -1 +0,0 @@ -console.error("Can't load Tender -- anything that relies on it will fail"); diff --git a/common/test/acceptance/pages/studio/utils.py b/common/test/acceptance/pages/studio/utils.py index cd2607af35..f3c28712dd 100644 --- a/common/test/acceptance/pages/studio/utils.py +++ b/common/test/acceptance/pages/studio/utils.py @@ -4,6 +4,7 @@ Utility methods useful for Studio page tests. from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys from bok_choy.javascript import js_defined +from bok_choy.promise import EmptyPromise from ..common.utils import click_css, wait_for_notification @@ -199,3 +200,17 @@ def verify_ordering(test_class, page, expected_orderings): blocks_checked.add(expected) break test_class.assertEqual(len(blocks_checked), len(xblocks)) + + +def click_studio_help(page): + """Click the Studio help link in the page footer.""" + page.q(css='.cta-show-sock').click() + EmptyPromise( + lambda: page.q(css='.support .list-actions a').results[0].text != '', + 'Support section opened' + ).fulfill() + + +def studio_help_links(page): + """Return the list of Studio help links in the page footer.""" + return page.q(css='.support .list-actions a').results diff --git a/common/test/acceptance/tests/studio/test_studio_help.py b/common/test/acceptance/tests/studio/test_studio_help.py new file mode 100644 index 0000000000..4561019396 --- /dev/null +++ b/common/test/acceptance/tests/studio/test_studio_help.py @@ -0,0 +1,46 @@ +""" +Test the Studio help links. +""" + +from .base_studio_test import StudioCourseTest +from ...pages.studio.index import DashboardPage +from ...pages.studio.utils import click_studio_help, studio_help_links + + +class StudioHelpTest(StudioCourseTest): + """Tests for Studio help.""" + + def test_studio_help_links(self): + """Test that the help links are present and have the correct content.""" + page = DashboardPage(self.browser) + page.visit() + click_studio_help(page) + links = studio_help_links(page) + expected_links = [{ + 'href': u'http://docs.edx.org/', + 'text': u'edX Documentation', + 'sr_text': u'Access documentation on http://docs.edx.org' + }, { + 'href': u'https://open.edx.org/', + 'text': u'Open edX Portal', + 'sr_text': u'Access the Open edX Portal' + }, { + 'href': u'https://www.edx.org/course/overview-creating-edx-course-edx-edx101#.VO4eaLPF-n1', + 'text': u'Enroll in edX101', + 'sr_text': u'Enroll in edX101: Overview of Creating an edX Course' + }, { + 'href': u'https://www.edx.org/course/creating-course-edx-studio-edx-studiox', + 'text': u'Enroll in StudioX', + 'sr_text': u'Enroll in StudioX: Creating a Course with edX Studio' + }, { + 'href': u'mailto:partner-support@example.com', + 'text': u'Contact Us', + 'sr_text': 'Send an email to partner-support@example.com' + }] + for expected, actual in zip(expected_links, links): + self.assertEqual(expected['href'], actual.get_attribute('href')) + self.assertEqual(expected['text'], actual.text) + self.assertEqual( + expected['sr_text'], + actual.find_element_by_xpath('following-sibling::span').text + ) diff --git a/lms/static/js/spec/main.js b/lms/static/js/spec/main.js index 9fac876357..199d7f5acd 100644 --- a/lms/static/js/spec/main.js +++ b/lms/static/js/spec/main.js @@ -50,7 +50,6 @@ 'domReady': 'xmodule_js/common_static/js/vendor/domReady', 'mathjax': '//cdn.mathjax.org/mathjax/2.4-latest/MathJax.js?config=TeX-MML-AM_HTMLorMML-full&delayStartupUntil=configured', 'youtube': '//www.youtube.com/player_api?noext', - 'tender': '//api.tenderapp.com/tender_widget', 'coffee/src/ajax_prefix': 'xmodule_js/common_static/coffee/src/ajax_prefix', 'coffee/src/instructor_dashboard/student_admin': 'coffee/src/instructor_dashboard/student_admin', 'xmodule_js/common_static/js/test/add_ajax_prefix': 'xmodule_js/common_static/js/test/add_ajax_prefix',