@windward/integrations 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/components/Content/Blocks/ExternalIntegration/LtiConsumer.vue +3 -3
- package/components/Content/Blocks/ExternalIntegration/ScormConsumer.vue +34 -0
- package/components/ExternalIntegration/Driver/Lti1p1/ManageConsumer.vue +10 -8
- package/components/ExternalIntegration/Driver/Lti1p1/ManageConsumers.vue +2 -2
- package/components/ExternalIntegration/Driver/Lti1p1/ManageProvider.vue +8 -5
- package/components/ExternalIntegration/Driver/Lti1p1/ManageProviders.vue +3 -2
- package/components/ExternalIntegration/Driver/Lti1p3/ManageConsumer.vue +8 -6
- package/components/ExternalIntegration/Driver/Lti1p3/ManageConsumers.vue +2 -2
- package/components/ExternalIntegration/Driver/Lti1p3/ManageProvider.vue +27 -5
- package/components/ExternalIntegration/Driver/Lti1p3/ManageProviders.vue +4 -3
- package/components/ExternalIntegration/Driver/Lti1p3/ViewConsumer.vue +6 -5
- package/components/ExternalIntegration/Driver/ManageScorm.vue +45 -0
- package/components/ExternalIntegration/Driver/Scorm/ManageConsumer.vue +76 -0
- package/components/ExternalIntegration/Driver/Scorm/ManageConsumers.vue +233 -0
- package/components/ExternalIntegration/Driver/Scorm/ManageProvider.vue +475 -0
- package/components/ExternalIntegration/Driver/Scorm/ManageProviders.vue +299 -0
- package/components/LLM/GenerateContent/BlockQuestionGenerateButton.vue +34 -3
- package/components/SecretField.vue +57 -34
- package/components/Settings/ExternalIntegration/LtiConsumerSettings.vue +2 -2
- package/components/Settings/ExternalIntegration/ManageCourseIntegrationSettings.vue +6 -6
- package/components/Settings/ExternalIntegration/ScormConsumerSettings.vue +42 -0
- package/helpers/ExternalIntegration/ScormHelper.ts +155 -0
- package/i18n/en-US/components/external_integration/driver/lti1p3.ts +4 -1
- package/i18n/en-US/components/external_integration/driver/scorm.ts +14 -0
- package/i18n/en-US/components/external_integration/index.ts +3 -1
- package/i18n/en-US/components/llm/generate_content/generate_questions.ts +7 -0
- package/i18n/en-US/pages/course/external_integration/index.ts +1 -1
- package/i18n/en-US/pages/login/index.ts +2 -0
- package/i18n/en-US/pages/login/lti.ts +2 -0
- package/i18n/en-US/pages/login/scorm.ts +28 -0
- package/i18n/en-US/shared/content_blocks.ts +1 -0
- package/i18n/en-US/shared/settings.ts +1 -0
- package/i18n/es-ES/components/external_integration/driver/lti1p3.ts +4 -1
- package/i18n/es-ES/components/external_integration/driver/scorm.ts +15 -0
- package/i18n/es-ES/components/external_integration/index.ts +3 -1
- package/i18n/es-ES/components/llm/generate_content/generate_questions.ts +7 -0
- package/i18n/es-ES/pages/course/external_integration/index.ts +1 -1
- package/i18n/es-ES/pages/login/index.ts +2 -0
- package/i18n/es-ES/pages/login/lti.ts +2 -0
- package/i18n/es-ES/pages/login/scorm.ts +29 -0
- package/i18n/es-ES/shared/content_blocks.ts +1 -0
- package/i18n/es-ES/shared/settings.ts +1 -0
- package/i18n/sv-SE/components/external_integration/driver/lti1p3.ts +4 -1
- package/i18n/sv-SE/components/external_integration/driver/scorm.ts +14 -0
- package/i18n/sv-SE/components/external_integration/index.ts +3 -1
- package/i18n/sv-SE/components/llm/generate_content/generate_questions.ts +7 -0
- package/i18n/sv-SE/pages/course/external_integration/index.ts +1 -1
- package/i18n/sv-SE/pages/login/index.ts +2 -0
- package/i18n/sv-SE/pages/login/lti.ts +2 -0
- package/i18n/sv-SE/pages/login/scorm.ts +29 -0
- package/i18n/sv-SE/shared/content_blocks.ts +2 -1
- package/i18n/sv-SE/shared/settings.ts +1 -0
- package/models/ExternalIntegration/{LtiConsumer.ts → Consumer.ts} +2 -2
- package/models/ExternalIntegration/{LtiProvider.ts → Provider.ts} +2 -2
- package/package.json +2 -1
- package/pages/course/externalIntegration/index.vue +4 -0
- package/pages/login/scorm/error.vue +102 -0
- package/pages/login/scorm/promptEmail.vue +180 -0
- package/plugin.js +111 -7
- package/test/Components/ExternalIntegration/ManageScorm.spec.js +19 -0
- package/test/Components/ExternalIntegration/Scorm/ManageConsumer.spec.js +19 -0
- package/test/Components/ExternalIntegration/Scorm/ManageConsumers.spec.js +19 -0
- package/test/Components/ExternalIntegration/Scorm/ManageProvider.spec.js +19 -0
- package/test/Components/ExternalIntegration/Scorm/ManageProviders.spec.js +19 -0
- package/test/mocks.js +12 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import _ from 'lodash'
|
|
2
|
+
import { jwtDecode } from 'jwt-decode'
|
|
3
|
+
|
|
4
|
+
export default class ScormHelper {
|
|
5
|
+
private _app: any
|
|
6
|
+
private _config: any = {
|
|
7
|
+
incompleteUntilPassed: false,
|
|
8
|
+
masteryScore: 70,
|
|
9
|
+
hasMasteryScore: false,
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
constructor(app: any) {
|
|
13
|
+
this._app = app
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public getLaunchConfig() {
|
|
17
|
+
const tokenStrat = _.get(this._app, '$auth.strategy.token', null)
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
if (tokenStrat !== null) {
|
|
21
|
+
const token = tokenStrat.get()
|
|
22
|
+
|
|
23
|
+
if (token) {
|
|
24
|
+
const decodedToken = jwtDecode(token)
|
|
25
|
+
|
|
26
|
+
// Set the SCORM config
|
|
27
|
+
this._config.incompleteUntilPassed = _.get(
|
|
28
|
+
decodedToken,
|
|
29
|
+
'scorm-incomplete-until-passed',
|
|
30
|
+
false
|
|
31
|
+
)
|
|
32
|
+
this._config.hasMasteryScore = _.get(
|
|
33
|
+
decodedToken,
|
|
34
|
+
'scorm-has-mastery-score',
|
|
35
|
+
false
|
|
36
|
+
)
|
|
37
|
+
this._config.masteryScore = _.get(
|
|
38
|
+
decodedToken,
|
|
39
|
+
'scorm-mastery-score',
|
|
40
|
+
70
|
|
41
|
+
)
|
|
42
|
+
} else {
|
|
43
|
+
console.error('Could not resolve user token')
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
} catch (e) {
|
|
47
|
+
console.error('Could not decode token', e)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return this._config
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public trackEnrollment(enrollment: any) {
|
|
54
|
+
const payload = {
|
|
55
|
+
type: 'load:enrollment',
|
|
56
|
+
launch_config: this.getLaunchConfig(),
|
|
57
|
+
id: enrollment.id,
|
|
58
|
+
percent_complete: _.get(
|
|
59
|
+
enrollment,
|
|
60
|
+
'course_progress.progress_percent',
|
|
61
|
+
0
|
|
62
|
+
),
|
|
63
|
+
grade_avg_score_percent:
|
|
64
|
+
enrollment.final_user_grades_avg_score_percent,
|
|
65
|
+
grade_progress: _.get(
|
|
66
|
+
enrollment,
|
|
67
|
+
'course_progress.metadata.grade_progress',
|
|
68
|
+
{ total_graded: 0, total_grades: 0, total_passed: 0 }
|
|
69
|
+
),
|
|
70
|
+
created_at: enrollment.created_at,
|
|
71
|
+
updated_at: enrollment.updated_at,
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
window.parent.postMessage(payload, '*')
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public trackProgress(courseUserTracking: any) {
|
|
78
|
+
if (!window || !window.parent) {
|
|
79
|
+
console.warn('Cannot find window.parent for SCORM tracking')
|
|
80
|
+
return
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const payload = {
|
|
84
|
+
type: 'update:tracking',
|
|
85
|
+
launch_config: this.getLaunchConfig(),
|
|
86
|
+
url: null,
|
|
87
|
+
course_content: {
|
|
88
|
+
id: null,
|
|
89
|
+
name: '',
|
|
90
|
+
duration: null,
|
|
91
|
+
created_at: null,
|
|
92
|
+
updated_at: null,
|
|
93
|
+
},
|
|
94
|
+
course: {
|
|
95
|
+
id: null,
|
|
96
|
+
duration: null,
|
|
97
|
+
created_at: null,
|
|
98
|
+
updated_at: null,
|
|
99
|
+
},
|
|
100
|
+
percent_complete: _.get(
|
|
101
|
+
this._app,
|
|
102
|
+
"store.getters['enrollment/get'].course_progress.progress_percent",
|
|
103
|
+
0
|
|
104
|
+
),
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
for (const key of Object.keys(courseUserTracking)) {
|
|
108
|
+
const event = courseUserTracking[key]
|
|
109
|
+
|
|
110
|
+
if (event && event.trackable_type === 'course') {
|
|
111
|
+
payload.course.id = event.trackable_id
|
|
112
|
+
payload.course.duration = event.duration
|
|
113
|
+
payload.course.created_at = event.created_at
|
|
114
|
+
payload.course.updated_at = event.updated_at
|
|
115
|
+
}
|
|
116
|
+
if (event && event.trackable_type === 'coursecontent') {
|
|
117
|
+
const pageTitle = this._app.$ContentService.getContentName(
|
|
118
|
+
event.trackable_id
|
|
119
|
+
)
|
|
120
|
+
const url =
|
|
121
|
+
'/course/' +
|
|
122
|
+
_.get(
|
|
123
|
+
this._app,
|
|
124
|
+
"store.getters['course/get'].id",
|
|
125
|
+
'undefined'
|
|
126
|
+
) +
|
|
127
|
+
'/section/' +
|
|
128
|
+
_.get(
|
|
129
|
+
this._app,
|
|
130
|
+
"store.getters['enrollment/get'].course_section_id",
|
|
131
|
+
'undefined'
|
|
132
|
+
) +
|
|
133
|
+
'/content/' +
|
|
134
|
+
event.trackable_id
|
|
135
|
+
|
|
136
|
+
payload.url = url
|
|
137
|
+
payload.course_content.id = event.trackable_id
|
|
138
|
+
payload.course_content.name = pageTitle.trim()
|
|
139
|
+
payload.course_content.duration = event.duration
|
|
140
|
+
payload.course_content.created_at = event.created_at
|
|
141
|
+
payload.course_content.updated_at = event.updated_at
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Make sure the payload was actually successfully filled
|
|
146
|
+
if (payload.course.id && payload.course_content.id) {
|
|
147
|
+
window.parent.postMessage(payload, '*')
|
|
148
|
+
} else {
|
|
149
|
+
console.error(
|
|
150
|
+
'Could not send data to SCORM player. The payload has missing data!',
|
|
151
|
+
payload
|
|
152
|
+
)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -2,7 +2,8 @@ export default {
|
|
|
2
2
|
key: 'Key',
|
|
3
3
|
issuer: 'Issuer',
|
|
4
4
|
tool_public_keyset_url: 'Tool Keyset Url',
|
|
5
|
-
tool_oidc_auth_endpoint: 'Tool OpenID Connect Endpoint',
|
|
5
|
+
tool_oidc_auth_endpoint: 'Tool OpenID Connect Login Endpoint',
|
|
6
|
+
launch_url: 'Launch / Redirect Url',
|
|
6
7
|
login_hint: 'login hint',
|
|
7
8
|
platform_id: 'Platform Identifier',
|
|
8
9
|
platform_name: 'Platform Name',
|
|
@@ -12,6 +13,8 @@ export default {
|
|
|
12
13
|
platform_oauth2_audience: 'Platform Oauth2 audience',
|
|
13
14
|
tool_client_id: 'Tool Client ID',
|
|
14
15
|
platform_deployment_id: 'Deployment ID',
|
|
16
|
+
disabled_fields_in_new_tool:
|
|
17
|
+
'The below information will be provided by the host LMS after this link is initially created.',
|
|
15
18
|
enable_button_feedback:
|
|
16
19
|
'Link can only be enabled once platform client identifier and and keyset urls are set !',
|
|
17
20
|
parameter_name: 'Custom Parameter Name',
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
download_package: 'Download Package',
|
|
3
|
+
new: 'New Scorm Package',
|
|
4
|
+
edit: 'Edit Scorm Package',
|
|
5
|
+
edit_display: 'Edit',
|
|
6
|
+
version: 'SCORM Version',
|
|
7
|
+
has_mastery_score: 'Apply SCORM mastery score',
|
|
8
|
+
mastery_score: 'SCORM mastery score',
|
|
9
|
+
anonymize_users: 'Anonymize SCORM users',
|
|
10
|
+
email_prompt: 'Prompt for real email address on initial access',
|
|
11
|
+
incomplete_until_passed:
|
|
12
|
+
'Set SCO status=incomplete until the student passes?',
|
|
13
|
+
compress_cmi_suspend_data: 'Compress cmi.suspend_data in the partner LMS',
|
|
14
|
+
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import lti1p1 from './driver/lti1p1'
|
|
2
2
|
import lti1p3 from './driver/lti1p3'
|
|
3
|
+
import scorm from './driver/scorm'
|
|
3
4
|
import providerTarget from './provider_target'
|
|
4
5
|
export default {
|
|
5
|
-
driver: { lti1p1, lti1p3 },
|
|
6
|
+
driver: { lti1p1, lti1p3, scorm },
|
|
6
7
|
provider_target: providerTarget,
|
|
7
8
|
|
|
8
9
|
provider_panel_title:
|
|
@@ -14,6 +15,7 @@ export default {
|
|
|
14
15
|
target_url: 'Target Url',
|
|
15
16
|
launch_url: 'Launch Url',
|
|
16
17
|
security_level: 'Security Level',
|
|
18
|
+
version: 'Version',
|
|
17
19
|
|
|
18
20
|
send_grades: 'Send grades to host LMS',
|
|
19
21
|
grade_sync: 'Grade Sync',
|
|
@@ -41,6 +41,11 @@ export default {
|
|
|
41
41
|
content_mismatch_word_jumble_support:
|
|
42
42
|
'Consider adding content with clear vocabulary terms, glossary words, or key concepts that can be unscrambled.',
|
|
43
43
|
|
|
44
|
+
content_mismatch_crossword:
|
|
45
|
+
'Content not suitable for crossword games.',
|
|
46
|
+
content_mismatch_crossword_support:
|
|
47
|
+
'Consider adding content with glossary terms or concise key vocabulary that can be turned into crossword words with short clues.',
|
|
48
|
+
|
|
44
49
|
content_mismatch_multiple_choice:
|
|
45
50
|
'Content not suitable for multiple-choice questions.',
|
|
46
51
|
content_mismatch_multiple_choice_support:
|
|
@@ -68,6 +73,7 @@ export default {
|
|
|
68
73
|
button_label_word_jumble: 'Generate Items',
|
|
69
74
|
button_label_seven_strikes: 'Generate Items',
|
|
70
75
|
button_label_multiple_choice: 'Generate Questions',
|
|
76
|
+
button_label_crossword: 'Generate Items',
|
|
71
77
|
|
|
72
78
|
replace_existing_flashcard: 'Replace existing flashcards',
|
|
73
79
|
replace_existing_bucket_game: 'Replace existing buckets',
|
|
@@ -75,6 +81,7 @@ export default {
|
|
|
75
81
|
replace_existing_sorting_game: 'Replace existing items',
|
|
76
82
|
replace_existing_word_jumble: 'Replace existing words',
|
|
77
83
|
replace_existing_multiple_choice: 'Replace existing questions',
|
|
84
|
+
replace_existing_crossword: 'Replace existing crossword items',
|
|
78
85
|
replace_existing: 'Replace Existing',
|
|
79
86
|
|
|
80
87
|
replaces_content: 'Replaces current block content.',
|
|
@@ -4,6 +4,8 @@ export default {
|
|
|
4
4
|
missing_title: 'The below fields are missing:',
|
|
5
5
|
error_title: 'The below errors occurred:',
|
|
6
6
|
error: {
|
|
7
|
+
invalid_launch_request: 'The launch request was invalid',
|
|
8
|
+
tool_disabled: 'This LTI package is disabled',
|
|
7
9
|
unknown: 'An unknown communication error occurred',
|
|
8
10
|
organization: 'Invalid organization',
|
|
9
11
|
tool: 'Invalid tool id',
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
scorm_error: 'SCORM Errors',
|
|
3
|
+
email_required: 'Email required to continue',
|
|
4
|
+
launch_error: 'SCORM package failed to launch',
|
|
5
|
+
missing_title: 'The below fields are missing:',
|
|
6
|
+
error_title: 'The below errors occurred:',
|
|
7
|
+
enter_email:
|
|
8
|
+
'Please enter your email address below to complete your account setup. Your email address will only be used to facilitate course-related communication, such as course content questions and technical support.',
|
|
9
|
+
privacy_policy: 'For more information, please see our privacy policy.',
|
|
10
|
+
error: {
|
|
11
|
+
missing_data:
|
|
12
|
+
'Could not load due to missing data. Missing student id and/or student name.',
|
|
13
|
+
missing_api: 'Could not access the LMS SCORM API.',
|
|
14
|
+
invalid_launch_request: 'The launch request was invalid',
|
|
15
|
+
tool_disabled: 'This SCORM package is disabled',
|
|
16
|
+
unknown: 'An unknown communication error occurred',
|
|
17
|
+
organization: 'Invalid organization',
|
|
18
|
+
tool: 'Invalid tool id',
|
|
19
|
+
tool_organization: 'This tool does not belong to this organization',
|
|
20
|
+
oauth: 'Invalid OAuth. Check your key and secret.',
|
|
21
|
+
},
|
|
22
|
+
missing: {
|
|
23
|
+
course_id: 'The course id is missing or invalid.',
|
|
24
|
+
course_name: 'The course name is missing.',
|
|
25
|
+
callback: 'The SCORM callback is missing.',
|
|
26
|
+
state: 'The SCORM verification state is missing.',
|
|
27
|
+
},
|
|
28
|
+
}
|
|
@@ -2,7 +2,8 @@ export default {
|
|
|
2
2
|
key: 'Clave',
|
|
3
3
|
issuer: 'Emisor',
|
|
4
4
|
tool_public_keyset_url: 'URL del conjunto de claves de la herramienta',
|
|
5
|
-
tool_oidc_auth_endpoint: 'Herramienta OpenID Connect Endpoint',
|
|
5
|
+
tool_oidc_auth_endpoint: 'Herramienta OpenID Connect Login Endpoint',
|
|
6
|
+
launch_url: 'URL de lanzamiento/redireccionamiento',
|
|
6
7
|
login_hint: 'pista de inicio de sesión',
|
|
7
8
|
platform_id: 'Identificador de plataforma',
|
|
8
9
|
platform_name: 'Nombre de la plataforma',
|
|
@@ -13,6 +14,8 @@ export default {
|
|
|
13
14
|
platform_oauth2_audience: 'Audiencia de plataforma Oauth2',
|
|
14
15
|
tool_client_id: 'ID de cliente de herramienta',
|
|
15
16
|
platform_deployment_id: 'ID de implementación',
|
|
17
|
+
disabled_fields_in_new_tool:
|
|
18
|
+
'El LMS anfitrión proporcionará la siguiente información después de que se cree inicialmente este enlace.',
|
|
16
19
|
enable_button_feedback:
|
|
17
20
|
'¡El enlace solo se puede habilitar una vez que se configuran el identificador del cliente de plataforma y las URL del conjunto de claves!',
|
|
18
21
|
parameter_name: 'Nombre de parámetro personalizado',
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
download_package: 'Descargar paquete',
|
|
3
|
+
new: 'Nuevo paquete SCORM',
|
|
4
|
+
edit: 'Editar paquete SCORM',
|
|
5
|
+
edit_display: 'Editar',
|
|
6
|
+
version: 'Versión SCORM',
|
|
7
|
+
has_mastery_score: 'Aplicar puntuación de dominio SCORM',
|
|
8
|
+
mastery_score: 'Puntuación de dominio SCORM',
|
|
9
|
+
anonymize_users: 'Anonimizar usuarios SCORM',
|
|
10
|
+
email_prompt:
|
|
11
|
+
'Solicitar dirección de correo electrónico real al acceder por primera vez',
|
|
12
|
+
incomplete_until_passed:
|
|
13
|
+
'¿Establecer el estado de SCO como incompleto hasta que el estudiante apruebe?',
|
|
14
|
+
compress_cmi_suspend_data: 'Comprimir cmi.suspend_data en el LMS del socio',
|
|
15
|
+
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import lti1p1 from './driver/lti1p1'
|
|
2
2
|
import lti1p3 from './driver/lti1p3'
|
|
3
|
+
import scorm from './driver/scorm'
|
|
3
4
|
import providerTarget from './provider_target'
|
|
4
5
|
export default {
|
|
5
|
-
driver: { lti1p1, lti1p3 },
|
|
6
|
+
driver: { lti1p1, lti1p3, scorm },
|
|
6
7
|
provider_target: providerTarget,
|
|
7
8
|
|
|
8
9
|
provider_panel_title:
|
|
@@ -14,6 +15,7 @@ export default {
|
|
|
14
15
|
target_url: 'URL de destino',
|
|
15
16
|
launch_url: 'URL de inicio',
|
|
16
17
|
security_level: 'Nivel de Seguridad',
|
|
18
|
+
version: 'Versión',
|
|
17
19
|
|
|
18
20
|
send_grades: 'Enviar calificaciones al LMS anfitrión',
|
|
19
21
|
grade_sync: 'Sincronización de calificaciones',
|
|
@@ -44,6 +44,11 @@ export default {
|
|
|
44
44
|
content_mismatch_word_jumble_support:
|
|
45
45
|
'Considera agregar contenido con términos de vocabulario claros, palabras de glosario o conceptos clave que puedan ser desordenados.',
|
|
46
46
|
|
|
47
|
+
content_mismatch_crossword:
|
|
48
|
+
'El contenido no es adecuado para crucigramas.',
|
|
49
|
+
content_mismatch_crossword_support:
|
|
50
|
+
'Considere agregar términos de glosario o vocabulario clave conciso que puedan convertirse en palabras con pistas breves.',
|
|
51
|
+
|
|
47
52
|
content_mismatch_multiple_choice:
|
|
48
53
|
'Contenido no adecuado para preguntas de opción múltiple.',
|
|
49
54
|
content_mismatch_multiple_choice_support:
|
|
@@ -72,6 +77,7 @@ export default {
|
|
|
72
77
|
button_label_word_jumble: 'Generar elementos',
|
|
73
78
|
button_label_seven_strikes: 'Generar elementos',
|
|
74
79
|
button_label_multiple_choice: 'Generar preguntas',
|
|
80
|
+
button_label_crossword: 'Generar elementos',
|
|
75
81
|
|
|
76
82
|
replace_existing_flashcard: 'Ersätt befintliga objekt',
|
|
77
83
|
replace_existing_bucket_game: 'Reemplazar cubos existentes',
|
|
@@ -79,6 +85,7 @@ export default {
|
|
|
79
85
|
replace_existing_sorting_game: 'Reemplazar elementos existentes',
|
|
80
86
|
replace_existing_word_jumble: 'Reemplazar palabras existentes',
|
|
81
87
|
replace_existing_multiple_choice: 'Reemplazar preguntas existentes',
|
|
88
|
+
replace_existing_crossword: 'Reemplazar elementos del crucigrama existentes',
|
|
82
89
|
replace_existing: 'Reemplazar existente',
|
|
83
90
|
|
|
84
91
|
replaces_content: 'Reemplaza el contenido del bloque actual.',
|
|
@@ -4,6 +4,8 @@ export default {
|
|
|
4
4
|
missing_title: 'Faltan los siguientes campos:',
|
|
5
5
|
error_title: 'Se produjeron los siguientes errores:',
|
|
6
6
|
error: {
|
|
7
|
+
invalid_launch_request: 'La solicitud de lanzamiento no fue válida',
|
|
8
|
+
tool_disabled: 'Este paquete LTI está deshabilitado',
|
|
7
9
|
unknown: 'Se produjo un error de comunicación desconocido',
|
|
8
10
|
organization: 'Organización no válida',
|
|
9
11
|
tool: 'ID de herramienta no válida',
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
scorm_error: 'Errores SCORM',
|
|
3
|
+
email_required: 'Se requiere correo electrónico para continuar',
|
|
4
|
+
launch_error: 'Error al iniciar el paquete SCORM',
|
|
5
|
+
missing_title: 'Faltan los siguientes campos:',
|
|
6
|
+
error_title: 'Se produjeron los siguientes errores:',
|
|
7
|
+
enter_email:
|
|
8
|
+
'Ingrese su dirección de correo electrónico a continuación para completar la configuración de su cuenta. Su dirección de correo electrónico solo se utilizará para facilitar la comunicación relacionada con el curso, como preguntas sobre el contenido del curso y soporte técnico.',
|
|
9
|
+
privacy_policy:
|
|
10
|
+
'Para obtener más información, consulte nuestra política de privacidad.',
|
|
11
|
+
error: {
|
|
12
|
+
missing_data:
|
|
13
|
+
'No se pudo cargar debido a la falta de datos. Falta el ID o el nombre del estudiante.',
|
|
14
|
+
missing_api: 'No se pudo acceder a la API SCORM del LMS.',
|
|
15
|
+
invalid_launch_request: 'La solicitud de lanzamiento no fue válida',
|
|
16
|
+
tool_disabled: 'Este paquete SCORM está deshabilitado',
|
|
17
|
+
unknown: 'Se produjo un error de comunicación desconocido',
|
|
18
|
+
organization: 'Organización no válida',
|
|
19
|
+
tool: 'ID de herramienta no válido',
|
|
20
|
+
tool_organization: 'Esta herramienta no pertenece a esta organización',
|
|
21
|
+
oauth: 'OAuth no válido. Comprueba tu clave y secreto.',
|
|
22
|
+
},
|
|
23
|
+
missing: {
|
|
24
|
+
course_id: 'Falta el ID del curso o no es válido.',
|
|
25
|
+
course_name: 'Falta el nombre del curso.',
|
|
26
|
+
callback: 'Falta la devolución de llamada SCORM.',
|
|
27
|
+
state: 'Falta el estado de verificación SCORM.',
|
|
28
|
+
},
|
|
29
|
+
}
|
|
@@ -2,7 +2,8 @@ export default {
|
|
|
2
2
|
key: 'Nyckel',
|
|
3
3
|
issuer: 'Emittent',
|
|
4
4
|
tool_public_keyset_url: 'Tool Keyset Url',
|
|
5
|
-
tool_oidc_auth_endpoint: 'Verktyg OpenID Connect Endpoint',
|
|
5
|
+
tool_oidc_auth_endpoint: 'Verktyg OpenID Connect Login Endpoint',
|
|
6
|
+
launch_url: 'Start-/omdirigerings-URL',
|
|
6
7
|
login_hint: 'inloggningstips',
|
|
7
8
|
platform_id: 'Platform Identifier',
|
|
8
9
|
platform_name: 'Plattformens namn',
|
|
@@ -12,6 +13,8 @@ export default {
|
|
|
12
13
|
platform_oauth2_audience: 'Plattform Oauth2-publik',
|
|
13
14
|
tool_client_id: 'Tool Client ID',
|
|
14
15
|
platform_deployment_id: 'Deployment ID',
|
|
16
|
+
disabled_fields_in_new_tool:
|
|
17
|
+
'Informationen nedan kommer att tillhandahållas av värd-LMS:et efter att den här länken har skapats.',
|
|
15
18
|
enable_button_feedback:
|
|
16
19
|
'Länken kan endast aktiveras när plattformsklientidentifierare och och nyckeluppsättnings-URL är inställda!',
|
|
17
20
|
parameter_name: 'Anpassat parameternamn',
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
download_package: 'Ladda ner paket',
|
|
3
|
+
new: 'Nytt Scorm-paket',
|
|
4
|
+
edit: 'Redigera Scorm-paket',
|
|
5
|
+
edit_display: 'Redigera',
|
|
6
|
+
version: 'SCORM-version',
|
|
7
|
+
has_mastery_score: 'Tillämpa SCORM-behärskningspoäng',
|
|
8
|
+
mastery_score: 'SCORM-behärskningspoäng',
|
|
9
|
+
anonymize_users: 'Anonymisera SCORM-användare',
|
|
10
|
+
email_prompt: 'Fråga efter riktig e-postadress vid första åtkomst',
|
|
11
|
+
incomplete_until_passed:
|
|
12
|
+
'Ange SCO-status=ofullständig tills studenten blir godkänd?',
|
|
13
|
+
compress_cmi_suspend_data: 'Komprimera cmi.suspend_data i partner-LMS:et',
|
|
14
|
+
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import lti1p1 from './driver/lti1p1'
|
|
2
2
|
import lti1p3 from './driver/lti1p3'
|
|
3
|
+
import scorm from './driver/scorm'
|
|
3
4
|
import providerTarget from './provider_target'
|
|
4
5
|
export default {
|
|
5
|
-
driver: { lti1p1, lti1p3 },
|
|
6
|
+
driver: { lti1p1, lti1p3, scorm },
|
|
6
7
|
provider_target: providerTarget,
|
|
7
8
|
|
|
8
9
|
provider_panel_title:
|
|
@@ -14,6 +15,7 @@ export default {
|
|
|
14
15
|
target_url: 'Måladress',
|
|
15
16
|
launch_url: 'Launch Url',
|
|
16
17
|
security_level: 'Säkerhetsnivå',
|
|
18
|
+
version: 'Version',
|
|
17
19
|
|
|
18
20
|
send_grades: 'Skicka betyg till värd LMS',
|
|
19
21
|
grade_sync: 'Grade Sync',
|
|
@@ -42,6 +42,11 @@ export default {
|
|
|
42
42
|
content_mismatch_word_jumble_support:
|
|
43
43
|
'Överväg att lägga till innehåll med tydliga vokabulärtermer, ordlistor eller nyckelkoncept som kan blandas.',
|
|
44
44
|
|
|
45
|
+
content_mismatch_crossword:
|
|
46
|
+
'Innehållet är inte lämpligt för korsordsspel.',
|
|
47
|
+
content_mismatch_crossword_support:
|
|
48
|
+
'Överväg att lägga till innehåll med ordlistetermer eller kortfattat ordförråd som kan bli korsordsord med korta ledtrådar.',
|
|
49
|
+
|
|
45
50
|
content_mismatch_multiple_choice:
|
|
46
51
|
'Innehållet är inte lämpligt för flervalsfrågor.',
|
|
47
52
|
content_mismatch_multiple_choice_support:
|
|
@@ -69,6 +74,7 @@ export default {
|
|
|
69
74
|
button_label_word_jumble: 'Generera objekt',
|
|
70
75
|
button_label_seven_strikes: 'Generera objekt',
|
|
71
76
|
button_label_multiple_choice: 'Generera frågor',
|
|
77
|
+
button_label_crossword: 'Generera objekt',
|
|
72
78
|
|
|
73
79
|
replace_existing_flashcard: 'Ersätt befintliga flashcards',
|
|
74
80
|
replace_existing_bucket_game: 'Ersätt befintliga hinkar',
|
|
@@ -76,6 +82,7 @@ export default {
|
|
|
76
82
|
replace_existing_sorting_game: 'Ersätt befintliga objekt',
|
|
77
83
|
replace_existing_word_jumble: 'Ersätt befintliga ord',
|
|
78
84
|
replace_existing_multiple_choice: 'Ersätt befintliga frågor',
|
|
85
|
+
replace_existing_crossword: 'Ersätt befintliga korsordsobjekt',
|
|
79
86
|
replace_existing: 'Ersätt befintlig',
|
|
80
87
|
|
|
81
88
|
replaces_content: 'Ersätter aktuellt blockinnehåll.',
|
|
@@ -4,6 +4,8 @@ export default {
|
|
|
4
4
|
missing_title: 'Fälten nedan saknas:',
|
|
5
5
|
error_title: 'Fel nedan uppstod:',
|
|
6
6
|
error: {
|
|
7
|
+
invalid_launch_request: 'Startbegäran var ogiltig',
|
|
8
|
+
tool_disabled: 'Detta LTI-paket är inaktiverat',
|
|
7
9
|
unknown: 'Ett okänt kommunikationsfel inträffade',
|
|
8
10
|
organization: 'Ogiltig organisation',
|
|
9
11
|
tool: 'Ogiltigt verktygs-id',
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
scorm_error: 'SCORM-fel',
|
|
3
|
+
email_required: 'E-postadress krävs för att fortsätta',
|
|
4
|
+
launch_error: 'SCORM-paketet misslyckades med att starta',
|
|
5
|
+
missing_title: 'Fälten nedan saknas:',
|
|
6
|
+
error_title: 'Felen nedan inträffade:',
|
|
7
|
+
enter_email:
|
|
8
|
+
'Ange din e-postadress nedan för att slutföra kontokonfigurationen. Din e-postadress kommer endast att användas för att underlätta kursrelaterad kommunikation, såsom frågor om kursinnehåll och teknisk support.',
|
|
9
|
+
privacy_policy: 'För mer information, se vår integritetspolicy.',
|
|
10
|
+
error: {
|
|
11
|
+
missing_data:
|
|
12
|
+
'Kunde inte ladda på grund av saknade data. Student-ID och/eller studentnamn saknas.',
|
|
13
|
+
missing_api: 'Kunde inte komma åt LMS SCORM API.',
|
|
14
|
+
invalid_launch_request: 'Startbegäran var ogiltig',
|
|
15
|
+
tool_disabled: 'Detta SCORM-paket är inaktiverat',
|
|
16
|
+
unknown: 'Ett okänt kommunikationsfel inträffade',
|
|
17
|
+
organization: 'Ogiltig organisation',
|
|
18
|
+
tool: 'Ogiltigt verktygs-ID',
|
|
19
|
+
tool_organization:
|
|
20
|
+
'Det här verktyget tillhör inte den här organisationen',
|
|
21
|
+
oauth: 'Ogiltig OAuth. Kontrollera din nyckel och hemlighet.',
|
|
22
|
+
},
|
|
23
|
+
missing: {
|
|
24
|
+
course_id: 'Kurs-ID saknas eller är ogiltigt.',
|
|
25
|
+
course_name: 'Kursnamnet saknas.',
|
|
26
|
+
callback: 'SCORM-återanropet saknas.',
|
|
27
|
+
state: 'SCORM-verifieringsstatus saknas.',
|
|
28
|
+
},
|
|
29
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// @ts-ignore
|
|
2
2
|
import Model from '~/models/Model'
|
|
3
3
|
|
|
4
|
-
export default class
|
|
4
|
+
export default class Consumer extends Model {
|
|
5
5
|
get required(): string[] {
|
|
6
6
|
return []
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
// Set the resource route of the model
|
|
10
10
|
resource() {
|
|
11
|
-
return 'external-
|
|
11
|
+
return 'external-integration-consumers'
|
|
12
12
|
}
|
|
13
13
|
}
|