@windward/integrations 0.18.0 → 0.19.1

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.
Files changed (70) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/components/Content/Blocks/ExternalIntegration/LtiConsumer.vue +3 -3
  3. package/components/Content/Blocks/ExternalIntegration/ScormConsumer.vue +34 -0
  4. package/components/ExternalIntegration/Driver/Lti1p1/ManageConsumer.vue +10 -8
  5. package/components/ExternalIntegration/Driver/Lti1p1/ManageConsumers.vue +2 -2
  6. package/components/ExternalIntegration/Driver/Lti1p1/ManageProvider.vue +8 -5
  7. package/components/ExternalIntegration/Driver/Lti1p1/ManageProviders.vue +3 -2
  8. package/components/ExternalIntegration/Driver/Lti1p3/ManageConsumer.vue +8 -6
  9. package/components/ExternalIntegration/Driver/Lti1p3/ManageConsumers.vue +2 -2
  10. package/components/ExternalIntegration/Driver/Lti1p3/ManageProvider.vue +27 -5
  11. package/components/ExternalIntegration/Driver/Lti1p3/ManageProviders.vue +4 -3
  12. package/components/ExternalIntegration/Driver/Lti1p3/ViewConsumer.vue +6 -5
  13. package/components/ExternalIntegration/Driver/ManageScorm.vue +45 -0
  14. package/components/ExternalIntegration/Driver/Scorm/ManageConsumer.vue +76 -0
  15. package/components/ExternalIntegration/Driver/Scorm/ManageConsumers.vue +233 -0
  16. package/components/ExternalIntegration/Driver/Scorm/ManageProvider.vue +475 -0
  17. package/components/ExternalIntegration/Driver/Scorm/ManageProviders.vue +299 -0
  18. package/components/FileImport/FileImportMenu.vue +8 -1
  19. package/components/LLM/GenerateContent/BlockQuestionGenerateButton.vue +34 -3
  20. package/components/SecretField.vue +57 -34
  21. package/components/Settings/ExternalIntegration/LtiConsumerSettings.vue +2 -2
  22. package/components/Settings/ExternalIntegration/ManageCourseIntegrationSettings.vue +6 -6
  23. package/components/Settings/ExternalIntegration/ScormConsumerSettings.vue +42 -0
  24. package/helpers/ExternalIntegration/ScormHelper.ts +155 -0
  25. package/i18n/en-US/components/external_integration/driver/lti1p3.ts +4 -1
  26. package/i18n/en-US/components/external_integration/driver/scorm.ts +14 -0
  27. package/i18n/en-US/components/external_integration/index.ts +3 -1
  28. package/i18n/en-US/components/llm/generate_content/generate_questions.ts +7 -0
  29. package/i18n/en-US/pages/course/external_integration/index.ts +1 -1
  30. package/i18n/en-US/pages/login/index.ts +2 -0
  31. package/i18n/en-US/pages/login/lti.ts +2 -0
  32. package/i18n/en-US/pages/login/scorm.ts +28 -0
  33. package/i18n/en-US/shared/content_blocks.ts +1 -0
  34. package/i18n/en-US/shared/permission.ts +15 -3
  35. package/i18n/en-US/shared/settings.ts +1 -0
  36. package/i18n/es-ES/components/external_integration/driver/lti1p3.ts +4 -1
  37. package/i18n/es-ES/components/external_integration/driver/scorm.ts +15 -0
  38. package/i18n/es-ES/components/external_integration/index.ts +3 -1
  39. package/i18n/es-ES/components/llm/generate_content/generate_questions.ts +7 -0
  40. package/i18n/es-ES/pages/course/external_integration/index.ts +1 -1
  41. package/i18n/es-ES/pages/login/index.ts +2 -0
  42. package/i18n/es-ES/pages/login/lti.ts +2 -0
  43. package/i18n/es-ES/pages/login/scorm.ts +29 -0
  44. package/i18n/es-ES/shared/content_blocks.ts +1 -0
  45. package/i18n/es-ES/shared/permission.ts +15 -3
  46. package/i18n/es-ES/shared/settings.ts +1 -0
  47. package/i18n/sv-SE/components/external_integration/driver/lti1p3.ts +4 -1
  48. package/i18n/sv-SE/components/external_integration/driver/scorm.ts +14 -0
  49. package/i18n/sv-SE/components/external_integration/index.ts +3 -1
  50. package/i18n/sv-SE/components/llm/generate_content/generate_questions.ts +7 -0
  51. package/i18n/sv-SE/pages/course/external_integration/index.ts +1 -1
  52. package/i18n/sv-SE/pages/login/index.ts +2 -0
  53. package/i18n/sv-SE/pages/login/lti.ts +2 -0
  54. package/i18n/sv-SE/pages/login/scorm.ts +29 -0
  55. package/i18n/sv-SE/shared/content_blocks.ts +2 -1
  56. package/i18n/sv-SE/shared/permission.ts +15 -3
  57. package/i18n/sv-SE/shared/settings.ts +1 -0
  58. package/models/ExternalIntegration/{LtiConsumer.ts → Consumer.ts} +2 -2
  59. package/models/ExternalIntegration/{LtiProvider.ts → Provider.ts} +2 -2
  60. package/package.json +2 -1
  61. package/pages/course/externalIntegration/index.vue +4 -0
  62. package/pages/login/scorm/error.vue +102 -0
  63. package/pages/login/scorm/promptEmail.vue +180 -0
  64. package/plugin.js +111 -7
  65. package/test/Components/ExternalIntegration/ManageScorm.spec.js +19 -0
  66. package/test/Components/ExternalIntegration/Scorm/ManageConsumer.spec.js +19 -0
  67. package/test/Components/ExternalIntegration/Scorm/ManageConsumers.spec.js +19 -0
  68. package/test/Components/ExternalIntegration/Scorm/ManageProvider.spec.js +19 -0
  69. package/test/Components/ExternalIntegration/Scorm/ManageProviders.spec.js +19 -0
  70. 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.',
@@ -2,5 +2,5 @@ export default {
2
2
  title: 'External Integrations',
3
3
  lti_1p1: 'LTI 1.1',
4
4
  lti_1p3: 'LTI 1.3',
5
- scorm_1p2: 'SCORM 1.2',
5
+ scorm: 'SCORM',
6
6
  }
@@ -1,7 +1,9 @@
1
1
  import lti from './lti'
2
2
  import saml from './saml'
3
+ import scorm from './scorm'
3
4
 
4
5
  export default {
5
6
  lti,
6
7
  saml,
8
+ scorm,
7
9
  }
@@ -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
+ }
@@ -1,6 +1,7 @@
1
1
  export default {
2
2
  title: {
3
3
  lti_consumer: 'LTI Link',
4
+ scorm_consumer: 'SCORM Package',
4
5
  },
5
6
  grouping: {
6
7
  integrations: 'Integrations',
@@ -5,9 +5,15 @@ export default {
5
5
  'plugin->windward->integrations->organization->jobs':
6
6
  'Organization Integration Jobs',
7
7
  'plugin->windward->integrations->organization->integration':
8
- 'Organization Integrations',
9
- 'plugin->windward->integrations->course': 'Course Integrations',
10
- 'plugin->windward->integrations->content': 'Content Integrations',
8
+ 'Organization Integrations (Read Access Required to use enabled integrations)',
9
+ 'plugin->windward->integrations->organization':
10
+ 'Remote Organization Access',
11
+ 'plugin->windward->integrations->course': 'Remote Course Access',
12
+ 'plugin->windward->integrations->content': 'Remote Content Access',
13
+ 'plugin->windward->integrations->file':
14
+ 'File Integrations View / Manage Remote Files',
15
+ 'plugin->windward->integrations->course->file':
16
+ 'File Integrations Import to Course (Write Access Required to import)',
11
17
  'plugin->windward->integrations->course->externalIntegration':
12
18
  'External Integrations (LTI / SCORM / etc)',
13
19
  'plugin->windward->integrations->ai':
@@ -30,10 +36,16 @@ export default {
30
36
  'Access integration jobs in the current organization',
31
37
  'plugin->windward->integrations->organization->integration':
32
38
  'Access and manage integrations in the current organization',
39
+ 'plugin->windward->integrations->organization':
40
+ 'Access and manage remote organizations for imports',
33
41
  'plugin->windward->integrations->course':
34
42
  'Access and manage course imports',
35
43
  'plugin->windward->integrations->content':
36
44
  'Access and manage content imports',
45
+ 'plugin->windward->integrations->file':
46
+ 'Access and manage remote files via their integration. This permission lets you see the available files on remote services like Google Drive, Dropbox, ResourceSpace, etc.',
47
+ 'plugin->windward->integrations->course->file':
48
+ 'Import files from a remote file integration into a specific course',
37
49
  'plugin->windward->integrations->course->externalIntegration':
38
50
  'Access and manage external integrations such as LTI and SCORM',
39
51
  },
@@ -1,6 +1,7 @@
1
1
  export default {
2
2
  title: {
3
3
  lti_consumer: 'LTI Consumer',
4
+ scorm_consumer: 'SCORM Consumer',
4
5
  ai_chat: 'AI Chat',
5
6
  },
6
7
  errors: {
@@ -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.',
@@ -2,5 +2,5 @@ export default {
2
2
  title: 'Integraciones externas',
3
3
  lti_1p1: 'LTI 1.1',
4
4
  lti_1p3: 'LTI 1.3',
5
- scorm_1p2: 'SCORM 1.2',
5
+ scorm: 'SCORM',
6
6
  }
@@ -1,7 +1,9 @@
1
1
  import lti from './lti'
2
2
  import saml from './saml'
3
+ import scorm from './scorm'
3
4
 
4
5
  export default {
5
6
  lti,
6
7
  saml,
8
+ scorm,
7
9
  }
@@ -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
+ }
@@ -1,6 +1,7 @@
1
1
  export default {
2
2
  title: {
3
3
  lti_consumer: 'Enlace LTI',
4
+ scorm_consumer: 'Paquete SCORM',
4
5
  },
5
6
  grouping: {
6
7
  integrations: 'Integraciones',
@@ -5,9 +5,15 @@ export default {
5
5
  'plugin->windward->integrations->organization->jobs':
6
6
  'Trabajos de integración organizacional',
7
7
  'plugin->windward->integrations->organization->integration':
8
- 'Integraciones organizativas',
9
- 'plugin->windward->integrations->course': 'Integraciones de cursos',
10
- 'plugin->windward->integrations->content': 'Integraciones de contenido',
8
+ 'Integraciones de la organización (Se requiere acceso de lectura para usar las integraciones habilitadas)',
9
+ 'plugin->windward->integrations->organization':
10
+ 'Acceso remoto a la organización',
11
+ 'plugin->windward->integrations->course': 'Acceso remoto a cursos',
12
+ 'plugin->windward->integrations->content': 'Acceso remoto al contenido',
13
+ 'plugin->windward->integrations->file':
14
+ 'Integraciones de archivos: Visualización y gestión de archivos remotos',
15
+ 'plugin->windward->integrations->course->file':
16
+ 'Integración de archivos: Importar al curso (Se requiere acceso de escritura para importar)',
11
17
  'plugin->windward->integrations->course->externalIntegration':
12
18
  'Integraciones externas (LTI/SCORM/etc)',
13
19
  'plugin->windward->integrations->ai':
@@ -31,10 +37,16 @@ export default {
31
37
  'Acceder a trabajos de integración en la organización actual',
32
38
  'plugin->windward->integrations->organization->integration':
33
39
  'Acceder y gestionar integraciones en la organización actual',
40
+ 'plugin->windward->integrations->organization':
41
+ 'Acceda y gestione organizaciones remotas para importaciones',
34
42
  'plugin->windward->integrations->course':
35
43
  'Acceder y gestionar las importaciones de cursos',
36
44
  'plugin->windward->integrations->content':
37
45
  'Acceder y gestionar las importaciones de contenido',
46
+ 'plugin->windward->integrations->file':
47
+ 'Acceda y gestione archivos remotos mediante su integración. Este permiso le permite ver los archivos disponibles en servicios remotos como Google Drive, Dropbox, ResourceSpace, etc.',
48
+ 'plugin->windward->integrations->course->file':
49
+ 'Importar archivos desde una integración de archivos remota a un curso específico',
38
50
  'plugin->windward->integrations->course->externalIntegration':
39
51
  'Acceder y gestionar integraciones externas como LTI y SCORM',
40
52
  },
@@ -1,6 +1,7 @@
1
1
  export default {
2
2
  title: {
3
3
  lti_consumer: 'Consumidor LTI',
4
+ scorm_consumer: 'Consumidor SCORM',
4
5
  ai_chat: 'Chat de IA',
5
6
  },
6
7
  errors: {
@@ -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.',
@@ -2,5 +2,5 @@ export default {
2
2
  title: 'Externa integrationer',
3
3
  lti_1p1: 'LTI 1.1',
4
4
  lti_1p3: 'LTI 1.3',
5
- scorm_1p2: 'SCORM 1.2',
5
+ scorm: 'SCORM',
6
6
  }
@@ -1,7 +1,9 @@
1
1
  import lti from './lti'
2
2
  import saml from './saml'
3
+ import scorm from './scorm'
3
4
 
4
5
  export default {
5
6
  lti,
6
7
  saml,
8
+ scorm,
7
9
  }