{"version":3,"file":"js/8153-9ee0091303e7facda049.chunk.js","mappings":"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","sources":["webpack://app/./app/assets/javascripts/collections/paged.js","webpack://app/./app/assets/javascripts/collections/paged_appending.js","webpack://app/./app/assets/javascripts/templates/sections/restore.jst.eco","webpack://app/./app/assets/javascripts/templates/sections/archive.jst.eco","webpack://app/./app/assets/javascripts/templates/sections/configure/oh.jst.eco","webpack://app/./app/assets/javascripts/templates/sections/configure/lms.jst.eco","webpack://app/./app/assets/javascripts/templates/sections/configure/adaptive.jst.eco","webpack://app/./app/assets/javascripts/views/sections/configure.js","webpack://app/./app/assets/javascripts/models/invitation.js","webpack://app/./app/assets/javascripts/views/sections/new_invitation.js","webpack://app/./app/assets/javascripts/templates/sections/new_invitation.jst.eco","webpack://app/./app/assets/javascripts/templates/sections/new.jst.eco","webpack://app/./app/assets/javascripts/views/sections/new_dialog.js","webpack://app/./app/assets/javascripts/helpers/section.js","webpack://app/./app/assets/javascripts/views/modules/collection_search.js","webpack://app/./app/assets/javascripts/views/query/query_filter.js","webpack://app/./app/assets/javascripts/templates/query/query_filter.jst.eco","webpack://app/./app/assets/javascripts/templates/item_selector.jst.eco","webpack://app/./app/assets/javascripts/views/item_selector.js","webpack://app/./app/assets/javascripts/views/sections/list_selector.js","webpack://app/./app/assets/javascripts/views/users/selector.js"],"sourcesContent":["import { defaults, extend, isEmpty } from 'underscore'\nimport { buildUrl } from 'helpers/url'\nimport BaseCollection from 'collections/base'\nimport Relatable from 'models/modules/relatable'\n\nexport default class PagedCollection extends BaseCollection {\n initialize (models, options) {\n super.initialize(models, options)\n this.fetching = false\n this.previousSize = 0\n }\n\n parse (resp) {\n extend(this, Relatable)\n this.page = resp.page\n this.total = resp.total\n this.pageSize = resp.pageSize\n this.params = resp.params\n this.pages = Math.ceil(this.total / this.pageSize)\n\n const models = resp.models || resp.results\n this.previousSize = models?.length || 0\n\n return models\n }\n\n fetch (options) {\n this.url = buildUrl(this.url, { page: this.page })\n return super.fetch(options)\n }\n\n reset (models, options) {\n this.previousSize = this.size()\n\n super.reset(models, options)\n if (isEmpty(models)) {\n this.initAttributes(options)\n }\n }\n\n hasNextPage () {\n return this.page < this.pages\n }\n\n hasPreviousPage () {\n return this.page > 1\n }\n\n nextPage (callback) {\n if (!this.fetching) {\n if (!this.hasNextPage()) {\n return false\n }\n\n this.page = this.page + 1\n this.fetching = true\n const { queryCnt } = this\n\n return this.fetch({\n success: () => {\n this.fetching = false\n\n const ret = { queryCnt }\n callback(ret)\n },\n error: () => {\n this.fetching = false\n },\n })\n }\n }\n\n previousPage () {\n if (!this.hasPreviousPage()) {\n return false\n }\n this.page = this.page - 1\n return this.fetch()\n }\n\n initAttributes (options = {}) {\n defaults(options, { page: 1 })\n\n this.page = options.page\n this.total = this.pageSize = this.pages = 0\n }\n}\n","/* global $ */\nimport { defaults, extend, omit } from 'underscore'\nimport Backbone from 'backbone'\nimport PagedCollection from 'collections/paged'\nimport Navigation from 'models/modules/navigation'\n\n//\n// Supports paged model retrieval, appending new pages to the collection. Triggers 'add' event\n// when new models are added, and 'reset' when the collection has been reset due to a new URL (or\n// on first load).\n//\nexport default class PagedAppendingCollection extends Backbone.Collection {\n constructor (models, options = {}) {\n defaults(options, { collectionModel: PagedCollection })\n super(models, options)\n extend(this, Navigation)\n\n this.url = options.url.replace('+', '%20')\n this.queryCnt = 0\n this.usesSynchronizeHooks = true\n options = omit(options, 'url')\n if (options.instanceModel != null) {\n options = extend(options, { model: options.instanceModel })\n }\n\n const Collection = options.collectionModel\n this.paged = new Collection(\n models,\n extend({ parse: true, model: options.instanceModel }, options)\n )\n this.paged.url = this.url\n this.paged.queryCnt = this.queryCnt\n this.paged.parentCollection = this\n this.idHash = {}\n\n if (this.paged.models) {\n this.reset(this.paged.models, extend({ silent: true }, options))\n }\n }\n\n fetch (options = {}) {\n defaults(options, { success: $.noop })\n\n this.fetched = false\n this.trigger('beforeSynchronize', this)\n\n this.queryCnt = this.queryCnt + 1\n const { success } = options\n\n options.url = this.url\n options.queryCnt = this.queryCnt\n options.success = (model, resp, options) => {\n this.fetched = true\n this.onCollectionSynced(options)\n return success()\n }\n\n this.paged.url = this.url\n this.paged.queryCnt = this.queryCnt\n this.paged.reset()\n this.reset([], { silent: true })\n\n return this.paged.fetch(options)\n }\n\n hasNextPage () {\n return this.paged.hasNextPage()\n }\n\n nextPage () {\n return this.paged.nextPage(() =>\n this.onCollectionSynced({ queryCnt: this.queryCnt })\n )\n }\n\n hasPreviousPage () {\n return this.paged.hasPreviousPage()\n }\n\n previousPage () {\n return this.paged.previousPage()\n }\n\n findById (id) {\n return this.idHash[id]\n }\n\n //\n // event handlers\n //\n onCollectionSynced (options = {}) {\n if (options.queryCnt === this.queryCnt) {\n const newModels = this.paged.toArray()\n\n // take over as parent collection\n newModels.forEach((model) => {\n this.idHash[model.id] = model\n model.collection = this\n })\n\n if (this.size() === 0) {\n this.reset(newModels, options)\n this.trigger('afterSynchronize', this)\n } else {\n this.add(newModels, { refreshSelections: false })\n this.trigger('added', newModels)\n }\n }\n }\n}\n","export default function(__obj) {\n if (!__obj) __obj = {};\n var __out = [], __capture = function(callback) {\n var out = __out, result;\n __out = [];\n callback.call(this);\n result = __out.join('');\n __out = out;\n return __safe(result);\n }, __sanitize = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else if (typeof value !== 'undefined' && value != null) {\n return __escape(value);\n } else {\n return '';\n }\n }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\n __safe = __obj.safe = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else {\n if (!(typeof value !== 'undefined' && value != null)) value = '';\n var result = new String(value);\n result.ecoSafe = true;\n return result;\n }\n };\n if (!__escape) {\n __escape = __obj.escape = function(value) {\n return ('' + value)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n };\n }\n (function() {\n (function() {\n __out.push('

If you restore this course, it will be visible again in your active courses.

\\n');\n \n if (this.showActive) {\n __out.push('\\n
\\n \\n \\n Open course to students\\n \\n
\\n
If you check this box, students will be able to do work in this course again.
\\n');\n } else if (!this.section.get('active')) {\n __out.push('\\n

This course will still be closed to students. To open it, toggle \"Open to students\" on the course\\'s Settings > Course details tab.

\\n');\n }\n \n __out.push('\\n');\n \n }).call(this);\n \n }).call(__obj);\n __obj.safe = __objSafe, __obj.escape = __escape;\n return __out.join('');\n}","export default function(__obj) {\n if (!__obj) __obj = {};\n var __out = [], __capture = function(callback) {\n var out = __out, result;\n __out = [];\n callback.call(this);\n result = __out.join('');\n __out = out;\n return __safe(result);\n }, __sanitize = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else if (typeof value !== 'undefined' && value != null) {\n return __escape(value);\n } else {\n return '';\n }\n }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\n __safe = __obj.safe = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else {\n if (!(typeof value !== 'undefined' && value != null)) value = '';\n var result = new String(value);\n result.ecoSafe = true;\n return result;\n }\n };\n if (!__escape) {\n __escape = __obj.escape = function(value) {\n return ('' + value)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n };\n }\n (function() {\n (function() {\n __out.push('

Archived courses do not appear in your active courses but can still be viewed using filters and restored when needed.

\\n');\n \n if (this.showInactive) {\n __out.push('\\n
\\n \\n \\n Close course to students\\n \\n
\\n
If you check this box, students will no longer be able to do work in this course.
\\n');\n } else if (this.section.get('active')) {\n __out.push('\\n

This course will remain open to students. To close it, turn off \"Open to students\" on the course\\'s Settings > Course details tab.

\\n');\n }\n \n __out.push('\\n');\n \n }).call(this);\n \n }).call(__obj);\n __obj.safe = __objSafe, __obj.escape = __escape;\n return __out.join('');\n}","export default function(__obj) {\n if (!__obj) __obj = {};\n var __out = [], __capture = function(callback) {\n var out = __out, result;\n __out = [];\n callback.call(this);\n result = __out.join('');\n __out = out;\n return __safe(result);\n }, __sanitize = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else if (typeof value !== 'undefined' && value != null) {\n return __escape(value);\n } else {\n return '';\n }\n }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\n __safe = __obj.safe = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else {\n if (!(typeof value !== 'undefined' && value != null)) value = '';\n var result = new String(value);\n result.ecoSafe = true;\n return result;\n }\n };\n if (!__escape) {\n __escape = __obj.escape = function(value) {\n return ('' + value)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n };\n }\n (function() {\n (function() {\n __out.push('
\\n \\n \\n OfficeHours\\n \\n
\\n\\n

OfficeHours is a virtual teaching assistant designed by educators like you to improve learning outcomes, and defend against services like Chegg.

\\n

\\n Students get research-backed learning aids like unlimited problem variations, and step-by-step solution guides.\\n\\n ');\n \n if (this.section.get('oh_included')) {\n __out.push('\\n OfficeHours is included for free with each student license.\\n ');\n } else {\n __out.push('\\n Students who pay for a monthly OfficeHours subscription can cancel at any time.\\n ');\n }\n \n __out.push('\\n

\\n

');\n \n __out.push(this.helpLink('360046781332', 'Learn more about OfficeHours'));\n \n __out.push('.

\\n\\n

OfficeHours is enabled by default for homework only. You can disable this feature on the Settings tab.

\\n');\n \n }).call(this);\n \n }).call(__obj);\n __obj.safe = __objSafe, __obj.escape = __escape;\n return __out.join('');\n}","export default function(__obj) {\n if (!__obj) __obj = {};\n var __out = [], __capture = function(callback) {\n var out = __out, result;\n __out = [];\n callback.call(this);\n result = __out.join('');\n __out = out;\n return __safe(result);\n }, __sanitize = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else if (typeof value !== 'undefined' && value != null) {\n return __escape(value);\n } else {\n return '';\n }\n }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\n __safe = __obj.safe = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else {\n if (!(typeof value !== 'undefined' && value != null)) value = '';\n var result = new String(value);\n result.ecoSafe = true;\n return result;\n }\n };\n if (!__escape) {\n __escape = __obj.escape = function(value) {\n return ('' + value)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n };\n }\n (function() {\n (function() {\n __out.push('\\n How will students access this course?\\n\\n
\\n \\n
\\n\\n
\\n \\n
\\n\\n');\n \n if (!_E.currentUser.lms_enabled) {\n __out.push('\\n \\n
\\n \\n Please have your LMS administrator contact us at support@edfinity.com if you want to integrate Edfinity with your LMS.\\n
\\n \\n');\n }\n \n __out.push('\\n\\n
\\n
\\n

How will grades be reported to ');\n \n __out.push(__sanitize(this.platformName));\n \n __out.push('?

\\n\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n ');\n \n if (_E.currentUser.lms_enabled) {\n __out.push('\\n \\n
\\n \\n
\\n Please consult our Help Center on how to link to Edfinity assignments and pass grades back to ');\n __out.push(__sanitize(this.platformName));\n __out.push('.\\n
\\n
\\n
\\n ');\n }\n \n __out.push('\\n\\n');\n \n }).call(this);\n \n }).call(__obj);\n __obj.safe = __objSafe, __obj.escape = __escape;\n return __out.join('');\n}","export default function(__obj) {\n if (!__obj) __obj = {};\n var __out = [], __capture = function(callback) {\n var out = __out, result;\n __out = [];\n callback.call(this);\n result = __out.join('');\n __out = out;\n return __safe(result);\n }, __sanitize = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else if (typeof value !== 'undefined' && value != null) {\n return __escape(value);\n } else {\n return '';\n }\n }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\n __safe = __obj.safe = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else {\n if (!(typeof value !== 'undefined' && value != null)) value = '';\n var result = new String(value);\n result.ecoSafe = true;\n return result;\n }\n };\n if (!__escape) {\n __escape = __obj.escape = function(value) {\n return ('' + value)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n };\n }\n (function() {\n (function() {\n __out.push('
\\n \\n \\n Adaptive Learning\\n \\n
\\n\\n

Our research-backed adaptive learning fills learning gaps, builds confidence, and improves performance.\\n Students will be guided to adaptive problem sets on prerequisite concepts to help them achieve mastery on assignments.\\n

\\n

');\n \n __out.push(this.helpLink('360050532411', 'Learn more about adaptive learning'));\n \n __out.push('.

\\n\\n');\n \n if (this.section.get('adaptive_ready')) {\n __out.push('\\n
\\n

\\n Adaptive Learning is enabled for this course by default (+');\n __out.push(__sanitize(this.numberToCurrency(this.section.product.get('adaptive_addon_price'))));\n __out.push('/student) for homework only. You can disable this feature on the Licenses tab.\\n

\\n');\n } else {\n __out.push('\\n
\\n
\\n \\n \\n Add Adaptive Learning  +');\n __out.push(__sanitize(this.numberToCurrency(this.section.product.get('adaptive_addon_price'))));\n __out.push('/student
(can be changed in Settings)\\n \\n
\\n
\\n');\n }\n \n __out.push('\\n');\n \n }).call(this);\n \n }).call(__obj);\n __obj.safe = __objSafe, __obj.escape = __escape;\n return __out.join('');\n}","import _templates_sections_configure_oh_ from 'templates/sections/configure/oh'\nimport _templates_sections_configure_lms_ from 'templates/sections/configure/lms'\nimport _templates_sections_configure_adaptive_ from 'templates/sections/configure/adaptive'\n/* globals JST */\nimport { defer } from 'underscore'\nimport Backbone from 'backbone'\nimport ModelBinder from 'backbone.modelbinder'\nimport { showIf } from 'helpers/view'\nimport { numberToCurrency } from 'utils/common'\nimport { helpUrl, platformName } from 'helpers/lti'\nimport { toRadio } from 'helpers/model_binder'\nimport { helpLink } from 'helpers/zendesk'\nimport { featureAccess } from 'utils/user'\nimport BaseView from 'views/base'\n\nexport default class ConfigureSection extends BaseView {\n events () {\n return {\n 'click .next': 'onNext',\n 'click .prev': 'onPrev',\n }\n }\n\n isConfigurable () {\n return this.pages.length > 0\n }\n\n initialize (options) {\n super.initialize(options)\n\n this.pages = []\n this.page = 0\n this.section = this.options.section\n this.model = new Backbone.Model()\n this.configureLms =\n !this.section.get('member') && !this.section.get('lms_linked')\n\n if (this.configureLms) {\n this.pages.push('lms')\n }\n\n if (this.section.product?.get('term_pricing')) {\n if (\n !this.section.get('adaptive_unavailable') &&\n this.section.get('adaptive_disableable')\n ) {\n this.pages.push('adaptive')\n }\n if (\n featureAccess('oh') &&\n this.section.get('oh_inform') &&\n !this.section.get('oh_unavailable')\n ) {\n this.pages.push('oh')\n }\n this.model.set({\n oh_enabled: featureAccess('oh') && !this.section.get('oh_unavailable'),\n adaptive_enabled: !this.section.get('adaptive_unavailable'),\n })\n }\n\n if (this.configureLms) {\n this.model.set({\n lms_linked: 0,\n lti_summary_grade: 0,\n })\n }\n }\n\n render () {\n let template\n\n switch (this.pages[this.page]) {\n case 'adaptive':\n template = _templates_sections_configure_adaptive_\n break\n case 'lms':\n template = _templates_sections_configure_lms_\n break\n case 'oh':\n template = _templates_sections_configure_oh_\n break\n }\n\n this.modal.getBody().html('
')\n this.$('.page').html(\n template({\n section: this.section,\n options: this.model,\n platformName: platformName(this.section.get('lms_provider')),\n helpLink,\n numberToCurrency,\n })\n )\n\n const modelBinder = new ModelBinder()\n const bindings = ModelBinder.createDefaultBindings(this.$('.bind'), 'name')\n if (this.page === 0 && this.configureLms) {\n bindings.lms_linked.converter = toRadio\n bindings.lti_summary_grade.converter = toRadio\n }\n\n modelBinder.bind(this.model, this.$('.bind'), bindings)\n this.renderButtons()\n if (this.pages.length > 1) {\n this.renderProgress()\n }\n\n if (this.page === 0 && this.configureLms) {\n this.lmsLinkedChanged()\n this.$('[name=lms_linked]').change(() => this.lmsLinkedChanged())\n }\n\n const focusEl = this.$el.find('[tabindex=0]').get(0)\n\n if (focusEl) {\n focusEl.focus()\n }\n\n return this\n }\n\n renderProgress () {\n this.$('.modal-footer-center').html(\n `Step ${this.page + 1} of ${this.pages.length}`\n )\n }\n\n renderButtons () {\n this.$('.buttons').empty()\n this.$('.modal-footer-left').empty()\n\n if (this.page !== this.pages.length - 1) {\n this.$('.buttons').append(\n ''\n )\n }\n this.$('.modal-footer-left').append(\n ''\n )\n this.$('.buttons').append(\n ''\n )\n\n this.$('.modal-footer .btn').css('width', '4rem')\n showIf(this.$('.okay'), this.page === this.pages.length - 1)\n\n // using non-standard visibility css here to keep widths constant\n if (this.page < this.pages.length - 1) {\n this.$('.next').removeClass('invisible').addClass('visible')\n } else {\n this.$('.next').removeClass('visible').addClass('invisible')\n }\n if (this.page > 0) {\n this.$('.prev').removeClass('invisible').addClass('visible')\n } else {\n this.$('.prev').removeClass('visible').addClass('invisible')\n }\n }\n\n setHelpUrl () {\n this.$('#helpUrl').attr(\n 'href',\n helpUrl(this.model.get('lms_provider'), this.model.get('ltia_linked'))\n )\n }\n\n lmsLinkedChanged () {\n defer(() => {\n this.$('.lti-only').toggleClass('d-none', !this.model.get('lms_linked'))\n })\n }\n\n //\n // event handlers\n //\n onNext (e) {\n this.page = this.page + 1\n this.render()\n }\n\n onPrev (e) {\n this.page = this.page - 1\n this.render()\n }\n}\n","import BaseModel from 'models/base'\n\nexport default class Invitation extends BaseModel {\n url () {\n return `/sections/${this.get('section_id')}/invitations`\n }\n\n parse (resp, options) {\n super.parse(resp, options)\n this.section_id = resp.section_id\n return resp\n }\n}\n","import _templates_sections_new_invitation_ from 'templates/sections/new_invitation'\n/* globals JST, $ */\nimport Clipboard from 'clipboard'\nimport { defer, isEmpty } from 'underscore'\nimport { isBlank } from 'utils/common'\nimport { flashMessage } from 'helpers/flash'\nimport { enableIf } from 'helpers/view'\nimport { dateFormat } from 'helpers/date'\nimport Invitation from 'models/invitation'\nimport BaseView from 'views/base'\nimport { helpLink } from 'helpers/zendesk'\n\nexport default class SectionNewInvitation extends BaseView {\n events () {\n return {\n 'click .send-invitation': 'onSendInvitation',\n 'keyup [name=emails]': 'onEmailChange',\n 'paste [name=emails]': 'onEmailChange',\n 'mouseup #access_code_url': 'selectUrl',\n 'click #join-instructions': 'onClickInstructions',\n }\n }\n\n initialize (options) {\n super.initialize(options)\n this.section = options.section\n }\n\n render () {\n this.$el.html(\n _templates_sections_new_invitation_({\n section: this.section,\n dateFormat,\n helpLink,\n })\n )\n this.enableSendButton(false)\n this.refreshTooltips()\n if (this.$('.copy-link').get(0) != null) {\n new Clipboard(this.$('.copy-link').get(0))\n }\n\n return this\n }\n\n emailsSpecified () {\n return !isBlank($('[name=emails]').val())\n }\n\n enableSendButton (enabled) {\n return enableIf($('.send-invitation'), enabled)\n }\n\n onSendInvitation (e) {\n if (!this.$('.send-invitation').hasClass('disabled')) {\n this.enableSendButton(false)\n\n new Invitation({ section_id: this.section.id }).save(\n { emails: $('[name=emails]').val() },\n {\n success: (model, resp, options) => {\n const { message } = resp\n flashMessage(message, 'success')\n if (isEmpty(resp.errors)) {\n this.modal.hide()\n }\n },\n\n error: (model, resp, options) => {\n const { errorEmails } = resp.responseJSON\n const message = `Please correct these badly-formed addresses: ${errorEmails}`\n flashMessage(message, 'error')\n enableIf($('.send-invitation'), true)\n this.enableSendButton(this.emailsSpecified())\n },\n }\n )\n }\n }\n\n onEmailChange (e) {\n defer(() => this.enableSendButton(this.emailsSpecified()))\n }\n\n selectUrl () {\n return $('#access_code_url').select()\n }\n\n onClickInstructions () {\n if (!this.alreadySelected) {\n $('#join-instructions').select()\n document.execCommand('copy')\n this.alreadySelected = true\n }\n }\n}\n","export default function(__obj) {\n if (!__obj) __obj = {};\n var __out = [], __capture = function(callback) {\n var out = __out, result;\n __out = [];\n callback.call(this);\n result = __out.join('');\n __out = out;\n return __safe(result);\n }, __sanitize = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else if (typeof value !== 'undefined' && value != null) {\n return __escape(value);\n } else {\n return '';\n }\n }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\n __safe = __obj.safe = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else {\n if (!(typeof value !== 'undefined' && value != null)) value = '';\n var result = new String(value);\n result.ecoSafe = true;\n return result;\n }\n };\n if (!__escape) {\n __escape = __obj.escape = function(value) {\n return ('' + value)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n };\n }\n (function() {\n (function() {\n if (this.section.isEnrollmentOpen()) {\n __out.push('\\n ');\n if (this.section.isLmsLinked()) {\n __out.push('\\n

Students access this course from your LMS

\\n

If you haven\\'t already, configure your LMS to work with Edfinity and then invite students to join from the LMS. ');\n __out.push(this.helpLink('360032290592', 'Learn more about LMS integration'));\n __out.push('.

\\n\\n
\\n

Give students these instructions on how to join

\\n \\n \\n \\n
\\n\\n \\n ');\n __out.push(this.section.lmsSyllabusInstructions());\n __out.push('\\n \\n\\n

Enroll yourself for free

\\n

To enroll yourself, visit an external link to the course or an assignment that you have created in your LMS. You will be prompted to join.

\\n ');\n } else {\n __out.push('\\n Enroll yourself for free\\n
\\n

Give students these instructions on how to join

\\n \\n \\n \\n
\\n\\n \\n ');\n __out.push(__sanitize(this.section.joinInstructions()));\n __out.push('\\n \\n\\n

Invite students via email

\\n \\n \\n ');\n }\n __out.push('\\n');\n } else {\n __out.push('\\n
\\n

Student enrollment is closed.

\\n

The last enrollment date is currently set to ');\n __out.push(__sanitize(this.dateFormat(this.section.get('last_enrollment_at'), I18n.t('time.formats.js.moment-date'))));\n __out.push('. You can change this date on the Settings tab under Course details.

\\n
\\n');\n }\n \n __out.push('\\n');\n \n }).call(this);\n \n }).call(__obj);\n __obj.safe = __objSafe, __obj.escape = __escape;\n return __out.join('');\n}","export default function(__obj) {\n if (!__obj) __obj = {};\n var __out = [], __capture = function(callback) {\n var out = __out, result;\n __out = [];\n callback.call(this);\n result = __out.join('');\n __out = out;\n return __safe(result);\n }, __sanitize = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else if (typeof value !== 'undefined' && value != null) {\n return __escape(value);\n } else {\n return '';\n }\n }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\n __safe = __obj.safe = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else {\n if (!(typeof value !== 'undefined' && value != null)) value = '';\n var result = new String(value);\n result.ecoSafe = true;\n return result;\n }\n };\n if (!__escape) {\n __escape = __obj.escape = function(value) {\n return ('' + value)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n };\n }\n (function() {\n (function() {\n if (this.templateSection != null) {\n __out.push('\\n
\\n
\\n \\n
Student data will not be copied.
\\n
\\n
\\n');\n }\n \n __out.push('\\n\\n
\\n ');\n \n if ((this.templateSection == null) && this.options.allowCopy) {\n __out.push('\\n
\\n \\n \\n Create an empty course\\n \\n
\\n\\n
\\n
\\n \\n \\n Copy an existing course. Student data will not be copied.\\n \\n
\\n
\\n\\n
\\n ');\n }\n \n __out.push('\\n\\n
\\n \\n \\n
\\n\\n ');\n \n if ((this.templateSection == null) && this.options.allowCopy) {\n __out.push('\\n \\n
\\n
\\n
\\n ');\n }\n \n __out.push('\\n\\n
\\n
\\n \\n Invite collaborators (can add later)\\n \\n
\\n
\\n\\n \\n \\n \\n \\n \\n
\\n
\\n \\n\\n
\\n
\\n \\n \\n Allow students to email you\\n \\n
\\n\\n \\n \\n \\n Keep assignment dates\\n \\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n Link to existing problems\\n \\n
\\n
\\n
Linking to existing problems applies changes automatically to all assignments (but you must still publish them). Deselecting this option duplicates problems, making changes independent for each copy.
\\n
\\n
\\n \\n\\n');\n \n }).call(this);\n \n }).call(__obj);\n __obj.safe = __objSafe, __obj.escape = __escape;\n return __out.join('');\n}","import _templates_sections_new_ from 'templates/sections/new'\n/* globals JST, $, _E */\nimport { defaults, defer, reject } from 'underscore'\nimport { showIf } from 'helpers/view'\nimport SectionListSelector from 'views/sections/list_selector'\nimport TemplateDialog from 'views/dialogs/template'\nimport UserSelector from 'views/users/selector'\n\nexport default class NewSectionDialog extends TemplateDialog {\n isCreatingNewSection () {\n return !this.options.allowCopy || this.$('#creation_1').is(':checked')\n }\n\n initialize (options) {\n this.section = options.section\n this.templateSection = options.templateSection\n\n defaults(options, {\n validate: this.validate.bind(this),\n template: _templates_sections_new_({\n section: this.section,\n templateSection: this.templateSection,\n currentSection: _E.currentSection,\n options,\n }),\n title: this.templateSection\n ? `Make a copy of ${this.templateSection.get(\n 'name'\n )}`\n : options.allowCopy\n ? 'Create or copy course'\n : 'Create course',\n buttonOk: this.templateSection ? 'Copy' : 'Create',\n })\n\n super.initialize(options)\n\n this.sectionSelect = new SectionListSelector({\n scoped: false,\n height: '137px',\n placeholder: 'Search for course to copy',\n startingSelection: this.templateSection || _E.currentSection,\n onSelection: this.onSectionSelected.bind(this),\n onReset: this.onSectionSelectionReset.bind(this),\n })\n }\n\n show () {\n super.show()\n this.modal.find('.modal-dialog').css('overflow', 'visible')\n this.modal.find('.modal-body').css('overflow-y', 'visible')\n\n defer(() => {\n if (this.templateSection == null) {\n this.modal.find('.section-selection').addClass('d-none')\n this.configureCreationFields()\n this.assign(this.sectionSelect, '#section-select-2')\n } else {\n showIf(this.modal.find('.copy-options'), false)\n }\n\n this.initSelector()\n this.toggleLinkedProblemOption(this.currentSectionMatchesUser())\n this.toggleKeepDatesOption(this.templateSection?.canCreateAssignment())\n })\n }\n\n configureCreationFields () {\n this.modal.find('[name=creation][value=0]').prop('checked', true)\n this.modal.find('#section-select').change((e) => {\n this.enableOkButton()\n })\n this.modal.find('#creation_1').click(() => {\n this.modal.find('.section-selection').addClass('d-none')\n })\n this.modal.find('#creation_2').click(() => {\n this.modal.find('.section-selection').removeClass('d-none')\n })\n\n this.modal.find('[name=creation]').change((e) => {\n const isSelecting = $(e.currentTarget).val() === '1'\n\n this.modal.find('#section-select').toggleClass('required', isSelecting)\n\n this.options.missingRequired =\n !this.modal.find('#section-id').val() && isSelecting\n this.enableOkButton()\n })\n }\n\n initSelector () {\n this.collaboratorSelector = this.addChild(\n new UserSelector({\n placeholder: 'Enter institutional emails only',\n multiple: true,\n creatable: true,\n idFn (user) {\n return user.email\n },\n filterFn: (users) =>\n users.filter((user) => user.id !== _E.currentUser.id),\n })\n )\n this.assign(this.collaboratorSelector, '#collaborator_emails-2')\n }\n\n currentSectionMatchesUser () {\n return _E.currentSection?.get('user_id') === _E.currentUser.id\n }\n\n toggleLinkedProblemOption (owned) {\n this.getBody()\n .find('.learn-more-field')\n .toggleClass('d-none', !owned)\n .toggleClass('d-flex', owned)\n }\n\n toggleKeepDatesOption (val) {\n showIf('#keep_dates-wrapper', val)\n }\n\n validate () {\n if (!this.templateSection) {\n if (this.isCreatingNewSection()) {\n this.section.set('section_id', null)\n } else {\n this.section.set('section_id', $('#section-id').val())\n }\n }\n\n const emails = this.collaboratorSelector.selectedValues\n\n if (emails.length > 0) {\n const goodEmails = reject(emails, (email) => !/^[^@]+@[^@]+$/.test(email))\n this.section.set(\n 'access',\n this.getBody().find('#collaborator_access-2').val()\n )\n this.section.set('emails', goodEmails)\n }\n\n return true\n }\n\n //\n // event handlers\n //\n onSectionSelected (selection) {\n const section = selection.item\n\n // either section.user (recent section) or section user_id array (elasticsearch)\n // owner id is always first\n const ownerId = section.user?.id || section.get('user_id')[0]\n const match = ownerId == _E.currentUser.id\n\n this.options.missingRequired = false\n this.toggleLinkedProblemOption(match)\n\n // hacky to account for recent section or query-searched section\n this.toggleKeepDatesOption(section.canCreateAssignment())\n this.modal.find('#section-id').val(section.id) // to work with button enabling\n this.enableOkButton()\n }\n\n onSectionSelectionReset () {\n this.modal.find('#section-id').val('')\n\n if (!this.isCreatingNewSection()) {\n this.options.missingRequired = true\n this.enableOkButton()\n }\n }\n}\n","import _templates_sections_restore_ from 'templates/sections/restore'\nimport _templates_sections_archive_ from 'templates/sections/archive'\n/* global $, _E, JST */\nimport { defaults, extend } from 'underscore'\nimport Backbone from 'backbone'\nimport Section from 'models/section'\nimport { flashMessage } from 'helpers/flash'\nimport { menuButton } from 'helpers/dom'\nimport { featureAccess } from 'utils/user'\nimport { confirmDelete, confirmPhrase } from 'helpers/modal'\nimport { showModelModal } from 'helpers/model'\nimport Task from 'models/task'\nimport ConfigureSection from 'views/sections/configure'\nimport SectionNewInvitation from 'views/sections/new_invitation'\nimport NewSectionDialog from 'views/sections/new_dialog'\nimport TemplateDialog from 'views/dialogs/template'\nimport BackboneDialog from 'views/dialogs/backbone'\nimport TaskView from 'views/task'\n\nexport const createSection = function (templateSection, options = {}) {\n defaults(options, {\n allowCopy: _E.currentUser.state === 'verified_educator',\n callback (success) {\n if (success) {\n // build applicable attributes based on dialog choices\n const attrs = {\n name: section.get('name'),\n lms_linked: section.get('lms_linked'),\n allow_student_emails: section.get('allow_student_emails'),\n keep_dates: section.get('keep_dates'),\n emails: section.get('emails'),\n access: section.get('access'),\n id:\n section.get('creation') == '1'\n ? section.get('section_id')\n : undefined,\n }\n\n if (section.canCreateAssignment()) {\n attrs.keep_dates = section.get('keep_dates')\n attrs.deep = section.get('linked_problems')\n }\n\n const newSection = new Section(attrs)\n\n if (newSection.id) {\n newSection.copy((section, resp) => {\n new TaskView({\n model: new Task(resp),\n message: 'Copying course...',\n success: (task) => {\n window.location = `/sections/${task.get('results').id}`\n },\n })\n })\n } else {\n newSection.save(null, {\n success () {\n window.location.href = newSection.url()\n },\n })\n }\n }\n },\n })\n\n const section = new Section({\n section_id: templateSection?.id,\n keep_dates: false,\n lms_linked: '0',\n allow_student_emails: true,\n creation: templateSection ? '1' : '0',\n linked_problems: true,\n name: templateSection?.get('name'),\n })\n const modal = new NewSectionDialog(\n extend(options, { section, templateSection })\n )\n showModelModal(section, modal, '.bind')\n}\n\nexport const configureSection = function (section) {\n const view = new ConfigureSection({ section })\n\n if (view.isConfigurable()) {\n const modal = new BackboneDialog({\n view,\n title: \"Let's get started!\",\n buttonOk: 'Done',\n buttonCancelShow: false,\n useBodyEl: false,\n overflow: 'inherit',\n callback (success) {\n // only show dialog once\n const values = extend(view.model.attributes, {\n initially_configured: true,\n oh_informed: true,\n })\n if (!section.get('member') && !values.lms_linked) {\n values.lms_provider = null\n }\n if (featureAccess('oh') && !section.get('oh_unavailable')) {\n values.oh_enabled = true\n }\n section.set(values)\n },\n })\n\n modal.show()\n }\n}\n\nexport const deleteSection = function (section, callback) {\n const msg =\n 'Are you sure you want to delete this course? This action is not reversible.'\n\n const deleteTask = () =>\n section.destroy({\n success (section, resp) {\n const task = new Task(resp)\n new TaskView({\n model: task,\n message: 'Deleting course...',\n successMessage: callback == null ? 'Course deleted' : undefined,\n success: (task) => {\n callback?.()\n section.collection?.remove(section)\n },\n })\n },\n error () {\n flashMessage(\n 'Sorry, but this course cannot be deleted. This could be due to student registrations or member sections.',\n 'error'\n )\n },\n })\n\n confirmPhrase({\n message: msg,\n callback: deleteTask,\n title: 'Delete course',\n buttonOk: 'Delete',\n phrase: 'delete',\n })\n return false\n}\n\nexport const inviteStudents = function (section) {\n const modal = new BackboneDialog({\n view: new SectionNewInvitation({ section }),\n title: 'Invite students',\n id: 'invite-students-modal',\n overflow: 'auto',\n footerShow: false,\n closeOnEnter: false,\n dialogClass: 'modal-lg',\n })\n modal.show()\n}\n\nexport const toggleVisibleSection = function (section, options = {}) {\n _E.progressBar.attachOnce(section)\n\n if (section.get('visible')) {\n const params = new Backbone.Model({\n inactive: false,\n })\n const modal = new TemplateDialog({\n template: _templates_sections_archive_({\n showInactive: section.get('active'),\n section,\n }),\n title: 'Archive course',\n buttonOk: 'Archive',\n callback: (success) => {\n if (success) {\n const saveParams = section.get('active')\n ? { visible: false, active: !params.get('inactive') }\n : { visible: false }\n\n section.save(saveParams, {\n success () {\n _E.globalEvents.trigger('toggleVisible', section)\n flashMessage(`${section.get('name')} archived`)\n },\n silent: true,\n })\n }\n },\n })\n showModelModal(params, modal)\n } else {\n const params = new Backbone.Model({\n active: false,\n })\n const modal = new TemplateDialog({\n template: _templates_sections_restore_({\n showActive: !section.get('active'),\n section,\n }),\n title: 'Restore course',\n buttonOk: 'Restore',\n callback: (success) => {\n if (success) {\n const saveParams = !section.get('active')\n ? { visible: true, active: params.get('active') }\n : { visible: true }\n\n section.save(saveParams, {\n success () {\n flashMessage(`${section.get('name')} restored`)\n _E.globalEvents.trigger('toggleVisible', section)\n },\n silent: true,\n })\n }\n },\n })\n showModelModal(params, modal)\n }\n}\n\nexport const toggleVisibleCollaboration = function (\n collaboration,\n options = {}\n) {\n _E.progressBar.attachOnce(collaboration.section)\n\n if (collaboration.get('visible')) {\n const modal = new TemplateDialog({\n template: _templates_sections_archive_({\n section: collaboration.section,\n }),\n title: 'Archive course',\n buttonOk: 'Archive',\n callback: (success) => {\n if (success) {\n collaboration.save(\n { visible: false },\n {\n success () {\n _E.globalEvents.trigger('toggleVisible', collaboration.section)\n flashMessage(`${collaboration.section.get('name')} archived`)\n },\n silent: true,\n }\n )\n }\n },\n })\n modal.show()\n } else {\n const modal = new TemplateDialog({\n template: _templates_sections_restore_({\n section: collaboration.section,\n }),\n title: 'Restore course',\n buttonOk: 'Restore',\n callback: (success) => {\n if (success) {\n collaboration.save(\n { visible: true },\n {\n success () {\n flashMessage(`${collaboration.section.get('name')} restored`)\n _E.globalEvents.trigger('toggleVisible', collaboration.section)\n },\n silent: true,\n }\n )\n }\n },\n })\n modal.show()\n }\n}\n\nexport const publishSection = (section) =>\n $.ajax({\n method: 'POST',\n dataType: 'json',\n url: `/sections/${section.id}/publish`,\n success: (resp) => {\n new TaskView({\n model: new Task(resp),\n message: 'Publishing course...',\n success: (task) => {\n flashMessage('Section published', 'success')\n },\n })\n },\n })\n\nconst stopSharingSection = function (collaboration) {\n const { section } = collaboration\n const msg = `

Are you sure you want to remove access to ${section.get(\n 'name'\n )}?

This will not affect other collaborators.

`\n const callback = function () {\n _E.progressBar.attachOnce(collaboration)\n collaboration.destroy({\n success () {\n flashMessage(\n `You no longer have access to ${section.get('name')}`,\n 'success'\n )\n section.collection.remove(section)\n },\n })\n }\n confirmDelete(msg, callback, {\n title: 'Remove access to course',\n buttonOk: 'Remove',\n })\n}\n\nexport const sectionOverflow = (section) =>\n function (buttons) {\n if (section.can('copy')) {\n buttons.addButton(\n menuButton({ icon: 'fa fa-copy', label: 'Copy' }),\n (e) => {\n createSection(section)\n return false\n }\n )\n }\n\n if (section.can('destroy')) {\n buttons.addButton(\n menuButton({ icon: 'fa fa-trash', label: 'Delete' }),\n (e) => {\n deleteSection(section)\n return false\n }\n )\n }\n\n if (section.can('archive')) {\n const visibleLabel = section.get('visible') ? 'Archive' : 'Restore'\n const visibleIcon = section.get('visible')\n ? 'fa fa-archive'\n : 'fa fa-undo'\n\n buttons.addButton(\n menuButton({ icon: visibleIcon, label: visibleLabel }),\n (e) => {\n toggleVisibleSection(section)\n return false\n }\n )\n } else if (section.collaboration) {\n const visibleLabel = section.collaboration.get('visible')\n ? 'Archive'\n : 'Restore'\n const visibleIcon = section.collaboration.get('visible')\n ? 'fa fa-archive'\n : 'fa fa-undo'\n\n buttons.addButton(\n menuButton({ icon: visibleIcon, label: visibleLabel }),\n (e) => {\n toggleVisibleCollaboration(section.collaboration)\n return false\n }\n )\n\n buttons.addButton(\n menuButton({ icon: 'fa fa-user-minus', label: 'Remove access' }),\n (e) => {\n stopSharingSection(section.collaboration)\n return false\n }\n )\n }\n }\n\nexport const renderAssignmentTemplateSelectOptions = (\n section,\n showDefault = true\n) => {\n const options = []\n\n if (!showDefault) {\n options.push('')\n }\n\n section.assignmentTemplates.each((template) => {\n options.push(`\n ${template.get('name')}${\n showDefault && template.isDefault() ? ' (default)' : ''\n }\n `)\n })\n\n return options.join('')\n}\n","import { defaults, omit, difference, throttle } from 'underscore'\nimport Backbone from 'backbone'\nimport { pluralize, isBlank } from 'utils/common'\nimport { buildUrl, getUrlParams, getPath } from 'helpers/url'\nimport { showIf } from 'helpers/view'\n\nexport default {\n initSearch (options = {}) {\n this.collection = options.collection\n this.sOptions = options\n defaults(this.sOptions, {\n navigation: true,\n baseUrl: this.collection.url,\n filteredBaseUrl: this.collection.url,\n queryParam: 'q',\n pageUrl: window.location.pathname,\n defaultParams: {},\n fixedParams: {},\n isFiltered: () => !this.hasDefaultFilters(),\n })\n this.filters = new Backbone.Model()\n this.throttledAnnounceAriaResults = throttle(\n this.announceAriaResults.bind(this),\n 2500\n )\n\n this.synchronizeFilters(this.urlParams())\n this.listenTo(this.collection, 'reset', this.onCollectionReset)\n this.listenTo(this.collection, 'sort', this.onCollectionSort)\n this.listenTo(this.filters, 'change', this.onFiltersChanged)\n this.listenTo(\n this.collection,\n 'add remove reset',\n this.toggleSearchControls\n )\n },\n\n renderSearch () {\n this.assignViews()\n this.assignFilterViews()\n this.toggleSearchControls()\n },\n\n filter (params = {}) {\n this.filters.clear({ silent: Object.keys(params).length > 0 })\n this.filters.routed = true\n this.filters.set(params)\n },\n\n synchronizeFilters (params) {\n const omitted = ['page_size']\n\n if (params.page === 1) {\n omitted.push('page')\n }\n this.filters.clear({ silent: true })\n this.filters.set(omit(params, omitted), { silent: true })\n this.filters.set(this.sOptions.fixedParams, { silent: true })\n this.sOptions.synchronizeFilters?.(params)\n },\n\n synchronizeCollection (options = {}) {\n if (this.collection.fetched && this.collection.paged) {\n this.collection.paged.fetched = !(options.clicked || options.changed)\n }\n\n // reset filters when user clicks tab explicitly\n this.fetchCollection(null, {\n routed: options.clicked ? this.sOptions.defaultParams : undefined,\n })\n },\n\n fetchCollection (params, options = {}) {\n if (params == null) {\n params = this.urlParams()\n }\n defaults(options, {\n routed: true,\n })\n\n const url = this.searchUrl(params)\n\n if (!this.collection.fetched || this.collection.url !== url) {\n if (options.routed) {\n this.synchronizeFilters(params)\n this.assignFilterViews()\n }\n this.$('.filter-alerts').html('')\n this.filters.routed = options.routed\n this.collection.url = url\n this.collection.fetch(options)\n }\n },\n\n toggleSearchControls () {\n showIf(\n this.$('.has-items'),\n this.collection.size() > 0 || this.sOptions.isFiltered?.()\n )\n this.$('.has-items').toggleClass('mb-3', this.collection.size() === 0)\n },\n\n navigate (options) {\n if (this.sOptions.navigation && !this.filters.routed && !options.routed) {\n Backbone.history.navigate(this.navigationUrl())\n }\n },\n\n urlParams (url) {\n return this.sOptions.navigation\n ? defaults(getUrlParams(url), this.sOptions.defaultParams)\n : this.sOptions.defaultParams\n },\n\n searchUrl (params) {\n const url =\n this.sOptions.filteredBaseUrl && params[this.sOptions.queryParam]\n ? this.sOptions.filteredBaseUrl\n : this.sOptions.baseUrl\n return buildUrl(getPath(url), params, ['page'])\n },\n\n navigationUrl () {\n const omitted = difference(\n ['page', 'sort', this.sOptions.queryParam, 'status'],\n Object.keys(this.filters.attributes)\n )\n return buildUrl(this.sOptions.pageUrl, this.filters.attributes, omitted)\n },\n\n hasDefaultFilters () {\n return isBlank(this.filters.get(this.sOptions.queryParam))\n },\n\n announceAriaResults () {\n const actor = this.sOptions.actor || 'result'\n const msg = pluralize(\n `${this.collection.size()} ${actor}`,\n this.collection.size()\n )\n this.$('.filter-alerts').html(msg)\n },\n\n //\n // event handlers\n //\n onCollectionReset (collection, options) {\n if (this.$el.is(':visible')) {\n this.navigate(options)\n this.synchronizeFilters(this.collection.paged?.params || this.urlParams())\n\n if (this.filters.routed) {\n this.assignFilterViews()\n }\n if (this.filters.announce) {\n this.throttledAnnounceAriaResults()\n }\n\n this.filters.routed = false\n this.filters.announce = false\n\n // this is custom behavior to get views to optionally refresh\n this.filters.trigger('reset', options)\n }\n },\n\n onCollectionSort (collection, options) {\n this.navigate(options)\n },\n\n onFiltersChanged (model, options = {}) {\n this.filters.announce = true\n options.routed = false\n this.fetchCollection(this.filters.attributes, options)\n },\n}\n","import _templates_query_query_filter_ from 'templates/query/query_filter'\n/* global $, JST */\nimport { debounce } from 'underscore'\nimport BaseView from 'views/base'\n\nexport default class QueryFilter extends BaseView {\n events () {\n return { 'keydown input': 'debouncedKeydown' }\n }\n\n initialize (options) {\n super.initialize({\n queryParam: 'q',\n minQueryLength: 2,\n ...options,\n })\n this.filters = this.options.filters\n this.debouncedKeydown = debounce(this.onKeydown, 500)\n this.listenTo(this.filters, 'change', this.onFiltersChanged)\n }\n\n render () {\n this.$el.html(\n _templates_query_query_filter_({\n placeholder: this.options.placeholder,\n filters: this.filters,\n queryParam: this.options.queryParam,\n cid: this.cid,\n })\n )\n this.$('input.query-filter').attr(\n 'aria-controls',\n this.options.ariaControls\n )\n\n return this\n }\n\n //\n // event handlers\n //\n onKeydown (e) {\n let val = $(e.currentTarget).val()\n if (val === '' || val.length < this.options.minQueryLength) {\n val = null\n }\n const prev = this.filters.get(this.options.queryParam)\n\n if (val || prev) {\n this.filters.set(this.options.queryParam, val, { unset: false })\n }\n }\n\n onFiltersChanged (filters) {\n if (filters.routed) {\n this.$('input').val(this.filters.get(this.options.queryParam))\n }\n }\n}\n","export default function(__obj) {\n if (!__obj) __obj = {};\n var __out = [], __capture = function(callback) {\n var out = __out, result;\n __out = [];\n callback.call(this);\n result = __out.join('');\n __out = out;\n return __safe(result);\n }, __sanitize = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else if (typeof value !== 'undefined' && value != null) {\n return __escape(value);\n } else {\n return '';\n }\n }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\n __safe = __obj.safe = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else {\n if (!(typeof value !== 'undefined' && value != null)) value = '';\n var result = new String(value);\n result.ecoSafe = true;\n return result;\n }\n };\n if (!__escape) {\n __escape = __obj.escape = function(value) {\n return ('' + value)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n };\n }\n (function() {\n (function() {\n __out.push('
\\n \\n \\n \\n
\\n');\n \n }).call(this);\n \n }).call(__obj);\n __obj.safe = __objSafe, __obj.escape = __escape;\n return __out.join('');\n}","export default function(__obj) {\n if (!__obj) __obj = {};\n var __out = [], __capture = function(callback) {\n var out = __out, result;\n __out = [];\n callback.call(this);\n result = __out.join('');\n __out = out;\n return __safe(result);\n }, __sanitize = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else if (typeof value !== 'undefined' && value != null) {\n return __escape(value);\n } else {\n return '';\n }\n }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\n __safe = __obj.safe = function(value) {\n if (value && value.ecoSafe) {\n return value;\n } else {\n if (!(typeof value !== 'undefined' && value != null)) value = '';\n var result = new String(value);\n result.ecoSafe = true;\n return result;\n }\n };\n if (!__escape) {\n __escape = __obj.escape = function(value) {\n return ('' + value)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n };\n }\n (function() {\n (function() {\n __out.push('
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n');\n \n }).call(this);\n \n }).call(__obj);\n __obj.safe = __objSafe, __obj.escape = __escape;\n return __out.join('');\n}","import _templates_item_selector_ from 'templates/item_selector'\n/* globals JST */\nimport { defaults, extend } from 'underscore'\nimport { buildUrl } from 'helpers/url'\nimport PagedAppending from 'collections/paged_appending'\nimport CollectionSearch from 'views/modules/collection_search'\nimport BaseView from 'views/base'\nimport ScrollingList from 'views/scrolling_list'\nimport QueryFilter from 'views/query/query_filter'\nimport ListGroupItem from 'views/list_group_item'\n\nexport default class ItemSelector extends BaseView {\n initialize (options) {\n defaults(options, {\n height: '220px',\n queryParam: 'q',\n collection: new PagedAppending([], {\n url: options.url,\n instanceModel: options.model,\n }),\n onSelection: () => {},\n onReset: () => {},\n })\n super.initialize(options)\n extend(this, CollectionSearch)\n\n this.collection = this.options.collection\n this.listenTo(this.collection, 'reset', this.options.onReset)\n this.initSearch({\n collection: this.collection,\n defaultParams: {\n sort: 'name',\n status: 'active',\n },\n fixedParams: options.fixedParams,\n filteredBaseUrl: options.filteredUrl,\n queryParam: options.queryParam,\n isFiltered: this.isFiltered.bind(this),\n navigation: options.navigation,\n })\n this.collection.url = buildUrl(\n this.collection.url,\n this.options.fixedParams\n )\n this.initViews()\n }\n\n render () {\n this.$el.html(_templates_item_selector_({ cid: this.cid }))\n this.$('.scroll-parent').height(this.options.height)\n this.renderSearch()\n this.firstFetch(this.collection, this.selectInitial.bind(this))\n\n return this\n }\n\n initViews () {\n this.listView = this.addChild(\n new ScrollingList({\n collection: this.collection,\n viewClass: ListGroupItem,\n emptyMessage: this.options.emptyMessage,\n scrollParent: '.scroll-parent',\n multiselect: false,\n preloaded: false,\n action: true,\n })\n )\n this.listenTo(this.listView.selector, 'selection', this.options.onSelection)\n\n this.queryFilter = this.addChild(\n new QueryFilter({\n filters: this.filters,\n placeholder: this.options.placeholder,\n minQueryLength: 0,\n queryParam: this.options.queryParam,\n })\n )\n }\n\n assignViews () {\n this.assign(this.listView, `#items-${this.cid}`)\n }\n\n assignFilterViews () {\n this.assign(this.queryFilter, '.item-filter')\n this.$('.search-container').addClass('w-100')\n }\n\n selectInitial () {\n if (this.options.startingSelection) {\n const item = this.listView.selector.findItem(\n this.options.startingSelection\n )\n\n if (item) {\n this.listView.selector.multiselectItem(item)\n }\n }\n }\n\n clearSelection () {\n this.listView.selector.deselectAllRows(false)\n }\n\n isFiltered () {\n return true\n }\n\n //\n // event handlers\n //\n}\n","import { defaults } from 'underscore'\nimport Section from 'models/section'\nimport ItemSelector from 'views/item_selector'\n\nexport default class SectionListSelector extends ItemSelector {\n initialize (options) {\n defaults(options, {\n url: '/sections/recent',\n filteredUrl: '/search',\n scope_action: 'create_assignment',\n scoped: true,\n navigation: false,\n fixedParams: {\n paged: 'true',\n scope: 'section',\n },\n placeholder: 'Search for a course',\n model: Section,\n queryParam: 'term',\n emptyMessage: this.emptyMessage.bind(this),\n })\n\n if (options.scoped) {\n defaults(options.fixedParams, {\n scope_action: options.scope_action,\n })\n }\n\n super.initialize(options)\n }\n\n emptyMessage () {\n return 'No courses match. Try modifying your criteria.'\n }\n}\n","/* global $ */\nimport { compact, identity, pluck } from 'underscore'\nimport React, { useState, useEffect } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { AsyncPaginate, withAsyncPaginate } from 'react-select-async-paginate'\nimport CreatableSelect from 'react-select/creatable'\nimport Base from 'views/base'\n\nconst AsyncPaginateCreatable = withAsyncPaginate(CreatableSelect)\n\nexport const userLabel = (user) => {\n const name =\n user.full_name || compact([user.first_name, user.last_name]).join(' ')\n return compact([name, emailLabel(user)]).join(' ')\n}\n\nexport const emailLabel = (user) => {\n if (user.email) {\n if (user.full_name || user.first_name || user.last_name)\n return '(' + user.email + ')'\n else return user.email\n } else {\n return null\n }\n}\n\nexport const formatCreateLabel = (inputValue) => {\n return `Add \"${inputValue}\"`\n}\n\nconst SelectorComponent = ({\n parent,\n creatable,\n defaultValue,\n onChange,\n isMulti,\n isClearable,\n placeholder,\n idFn,\n filterFn,\n}) => {\n const [value, setValue] = useState(defaultValue)\n const Component = creatable ? AsyncPaginateCreatable : AsyncPaginate\n\n const loadOptions = async (query, loadedOptions, { page }) => {\n if (query.length < 3) {\n return { options: [] }\n }\n\n const response = await $.ajax({\n url: '/users/search',\n dataType: 'json',\n delay: 500,\n data: { query, page },\n })\n\n const options = filterFn(response.results).map((value, list) => {\n return { value: idFn(value), label: userLabel(value), data: value }\n })\n\n return {\n options: options,\n hasMore: response.more,\n additional: {\n page: page + 1,\n },\n }\n }\n\n const _onChange = (newValues) => {\n setValue(newValues)\n\n if (isMulti) {\n onChange?.(pluck(newValues, 'value'))\n } else {\n onChange?.(newValues?.value)\n }\n }\n\n const noOptionsMessage = (obj) => {\n if (obj.inputValue.length < 3) return 'Please enter at least 3 characters'\n else return 'No users match.'\n }\n\n // some hacky logic to get our Backbone view to communicate value changes\n useEffect(() => {\n const handleUserChange = (user) => {\n const userData = {\n full_name: user.get('full_name'),\n email: user.get('email'),\n }\n setValue({ value: user.id, label: userLabel(userData) })\n }\n\n parent.on('set-user', handleUserChange)\n\n return () => {\n parent.off('set-user', handleUserChange)\n }\n })\n\n return (\n \n )\n}\n\nexport default class UserSelector extends Base {\n constructor (options = {}) {\n super(options)\n\n this.idFn = options.idFn ?? ((data) => data.id)\n this.filterFn = options.filterFn ?? identity\n this.selectedValues = []\n this.selectedValue = null\n }\n\n render () {\n const root = createRoot(this.el)\n const { multiple, allowClear, placeholder } = this.options\n\n root.render(\n \n )\n }\n\n setUser (user) {\n this.trigger('set-user', user)\n }\n\n //\n // event handlers\n //\n onChange (newValues) {\n if (this.options.multiple) {\n this.selectedValues = newValues\n } else {\n this.selectedValue = newValues\n $(this.el).trigger('change')\n }\n\n this.options.onChange?.(newValues)\n }\n}\n"],"names":["PagedCollection","BaseCollection","initialize","models","options","super","this","fetching","previousSize","parse","resp","extend","Relatable","page","total","pageSize","params","pages","Math","ceil","results","length","fetch","url","buildUrl","reset","size","isEmpty","initAttributes","hasNextPage","hasPreviousPage","nextPage","callback","queryCnt","success","error","previousPage","defaults","PagedAppendingCollection","Backbone","constructor","collectionModel","Navigation","replace","usesSynchronizeHooks","omit","instanceModel","model","Collection","paged","parentCollection","idHash","silent","$","noop","fetched","trigger","onCollectionSynced","findById","id","newModels","toArray","forEach","collection","add","refreshSelections","__obj","__out","__objSafe","safe","__escape","escape","value","ecoSafe","result","String","push","showActive","section","get","call","join","showInactive","helpLink","__sanitize","_E","currentUser","lms_enabled","platformName","numberToCurrency","product","ConfigureSection","BaseView","events","isConfigurable","_this$section$product","configureLms","featureAccess","set","oh_enabled","adaptive_enabled","lms_linked","lti_summary_grade","render","template","_templates_sections_configure_adaptive_","_templates_sections_configure_lms_","_templates_sections_configure_oh_","modal","getBody","html","modelBinder","ModelBinder","bindings","converter","toRadio","bind","renderButtons","renderProgress","lmsLinkedChanged","change","focusEl","$el","find","focus","empty","append","css","showIf","removeClass","addClass","setHelpUrl","attr","helpUrl","defer","toggleClass","onNext","e","onPrev","Invitation","BaseModel","section_id","SectionNewInvitation","isEnrollmentOpen","isLmsLinked","lmsSyllabusInstructions","joinInstructions","dateFormat","I18n","t","_templates_sections_new_invitation_","enableSendButton","refreshTooltips","Clipboard","emailsSpecified","isBlank","val","enabled","enableIf","onSendInvitation","hasClass","save","emails","message","flashMessage","errors","hide","responseJSON","errorEmails","onEmailChange","selectUrl","select","onClickInstructions","alreadySelected","document","execCommand","templateSection","allowCopy","NewSectionDialog","TemplateDialog","isCreatingNewSection","is","validate","_templates_sections_new_","currentSection","title","buttonOk","sectionSelect","SectionListSelector","scoped","height","placeholder","startingSelection","onSelection","onSectionSelected","onReset","onSectionSelectionReset","show","_this$templateSection","configureCreationFields","assign","initSelector","toggleLinkedProblemOption","currentSectionMatchesUser","toggleKeepDatesOption","canCreateAssignment","prop","enableOkButton","click","isSelecting","currentTarget","missingRequired","collaboratorSelector","addChild","UserSelector","multiple","creatable","idFn","user","email","filterFn","users","filter","_E$currentSection","owned","selectedValues","goodEmails","reject","test","selection","_section$user","item","match","createSection","state","attrs","name","allow_student_emails","keep_dates","access","undefined","deep","newSection","Section","copy","TaskView","Task","task","window","location","href","creation","linked_problems","showModelModal","configureSection","view","BackboneDialog","buttonCancelShow","useBodyEl","overflow","values","attributes","initially_configured","oh_informed","lms_provider","deleteSection","confirmPhrase","deleteTask","destroy","successMessage","_section$collection","remove","phrase","inviteStudents","footerShow","closeOnEnter","dialogClass","toggleVisibleSection","progressBar","attachOnce","inactive","_templates_sections_archive_","saveParams","visible","active","globalEvents","_templates_sections_restore_","toggleVisibleCollaboration","collaboration","publishSection","ajax","method","dataType","sectionOverflow","buttons","can","addButton","menuButton","icon","label","visibleLabel","visibleIcon","msg","confirmDelete","stopSharingSection","renderAssignmentTemplateSelectOptions","showDefault","assignmentTemplates","each","isDefault","initSearch","sOptions","navigation","baseUrl","filteredBaseUrl","queryParam","pageUrl","pathname","defaultParams","fixedParams","isFiltered","hasDefaultFilters","filters","throttledAnnounceAriaResults","throttle","announceAriaResults","synchronizeFilters","urlParams","listenTo","onCollectionReset","onCollectionSort","onFiltersChanged","toggleSearchControls","renderSearch","assignViews","assignFilterViews","clear","Object","keys","routed","_this$sOptions$synchr","_this$sOptions","omitted","synchronizeCollection","clicked","changed","fetchCollection","searchUrl","_this$sOptions$isFilt","_this$sOptions2","navigate","navigationUrl","getUrlParams","getPath","difference","actor","pluralize","_this$collection$page","announce","QueryFilter","_objectSpread","minQueryLength","debouncedKeydown","debounce","onKeydown","cid","_templates_query_query_filter_","ariaControls","prev","unset","ItemSelector","PagedAppending","CollectionSearch","sort","status","filteredUrl","initViews","_templates_item_selector_","firstFetch","selectInitial","listView","ScrollingList","viewClass","ListGroupItem","emptyMessage","scrollParent","multiselect","preloaded","action","selector","queryFilter","findItem","multiselectItem","clearSelection","deselectAllRows","scope_action","scope","AsyncPaginateCreatable","withAsyncPaginate","CreatableSelect","userLabel","full_name","compact","first_name","last_name","emailLabel","formatCreateLabel","inputValue","SelectorComponent","parent","defaultValue","onChange","isMulti","isClearable","_useState2","_slicedToArray","useState","setValue","Component","AsyncPaginate","useEffect","handleUserChange","userData","on","off","React","newValues","pluck","loadOptions","async","query","loadedOptions","response","delay","data","map","list","hasMore","more","additional","noOptionsMessage","obj","Base","_options$idFn","_options$filterFn","identity","selectedValue","root","createRoot","el","_this$options","allowClear","startingValue","setUser","_this$options$onChang","_this$options2"],"sourceRoot":""}