@windward/integrations 0.17.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.
Files changed (80) hide show
  1. package/CHANGELOG.md +25 -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/Integration/Driver/LoginSamlButton.vue +119 -0
  19. package/components/Integration/Driver/ManageSaml.vue +327 -0
  20. package/components/LLM/GenerateContent/BlockQuestionGenerateButton.vue +34 -3
  21. package/components/SecretField.vue +99 -19
  22. package/components/Settings/ExternalIntegration/LtiConsumerSettings.vue +2 -2
  23. package/components/Settings/ExternalIntegration/ManageCourseIntegrationSettings.vue +6 -6
  24. package/components/Settings/ExternalIntegration/ScormConsumerSettings.vue +42 -0
  25. package/config/integration.config.js +2 -0
  26. package/helpers/Driver/SamlSso.ts +12 -0
  27. package/helpers/ExternalIntegration/ScormHelper.ts +155 -0
  28. package/i18n/en-US/components/external_integration/driver/lti1p3.ts +4 -1
  29. package/i18n/en-US/components/external_integration/driver/scorm.ts +14 -0
  30. package/i18n/en-US/components/external_integration/index.ts +3 -1
  31. package/i18n/en-US/components/integration/driver.ts +23 -0
  32. package/i18n/en-US/components/llm/generate_content/generate_questions.ts +7 -0
  33. package/i18n/en-US/pages/course/external_integration/index.ts +1 -1
  34. package/i18n/en-US/pages/login/index.ts +4 -0
  35. package/i18n/en-US/pages/login/lti.ts +2 -0
  36. package/i18n/en-US/pages/login/saml.ts +7 -0
  37. package/i18n/en-US/pages/login/scorm.ts +28 -0
  38. package/i18n/en-US/shared/content_blocks.ts +1 -0
  39. package/i18n/en-US/shared/settings.ts +1 -0
  40. package/i18n/es-ES/components/external_integration/driver/lti1p3.ts +4 -1
  41. package/i18n/es-ES/components/external_integration/driver/scorm.ts +15 -0
  42. package/i18n/es-ES/components/external_integration/index.ts +3 -1
  43. package/i18n/es-ES/components/integration/driver.ts +23 -0
  44. package/i18n/es-ES/components/llm/generate_content/generate_questions.ts +7 -0
  45. package/i18n/es-ES/pages/course/external_integration/index.ts +1 -1
  46. package/i18n/es-ES/pages/login/index.ts +4 -0
  47. package/i18n/es-ES/pages/login/lti.ts +2 -0
  48. package/i18n/es-ES/pages/login/saml.ts +7 -0
  49. package/i18n/es-ES/pages/login/scorm.ts +29 -0
  50. package/i18n/es-ES/shared/content_blocks.ts +1 -0
  51. package/i18n/es-ES/shared/settings.ts +1 -0
  52. package/i18n/sv-SE/components/external_integration/driver/lti1p3.ts +4 -1
  53. package/i18n/sv-SE/components/external_integration/driver/scorm.ts +14 -0
  54. package/i18n/sv-SE/components/external_integration/index.ts +3 -1
  55. package/i18n/sv-SE/components/integration/driver.ts +23 -0
  56. package/i18n/sv-SE/components/llm/generate_content/generate_questions.ts +7 -0
  57. package/i18n/sv-SE/pages/course/external_integration/index.ts +1 -1
  58. package/i18n/sv-SE/pages/login/index.ts +4 -0
  59. package/i18n/sv-SE/pages/login/lti.ts +2 -0
  60. package/i18n/sv-SE/pages/login/saml.ts +7 -0
  61. package/i18n/sv-SE/pages/login/scorm.ts +29 -0
  62. package/i18n/sv-SE/shared/content_blocks.ts +2 -1
  63. package/i18n/sv-SE/shared/settings.ts +1 -0
  64. package/jest.config.js +3 -0
  65. package/models/Auth/Saml.ts +21 -0
  66. package/models/ExternalIntegration/{LtiConsumer.ts → Consumer.ts} +2 -2
  67. package/models/ExternalIntegration/{LtiProvider.ts → Provider.ts} +2 -2
  68. package/package.json +2 -1
  69. package/pages/course/externalIntegration/index.vue +4 -0
  70. package/pages/login/scorm/error.vue +102 -0
  71. package/pages/login/scorm/promptEmail.vue +180 -0
  72. package/plugin.js +128 -7
  73. package/test/Components/ExternalIntegration/ManageScorm.spec.js +19 -0
  74. package/test/Components/ExternalIntegration/Scorm/ManageConsumer.spec.js +19 -0
  75. package/test/Components/ExternalIntegration/Scorm/ManageConsumers.spec.js +19 -0
  76. package/test/Components/ExternalIntegration/Scorm/ManageProvider.spec.js +19 -0
  77. package/test/Components/ExternalIntegration/Scorm/ManageProviders.spec.js +19 -0
  78. package/test/__mocks__/componentsMock.js +81 -1
  79. package/test/mocks.js +12 -0
  80. package/test/setup.js +1 -0
@@ -5,6 +5,7 @@ import Desire2Learn from '../helpers/Driver/Desire2Learn'
5
5
  import Moodle from '../helpers/Driver/Moodle'
6
6
  import GoogleClassroom from '../helpers/Driver/GoogleClassroom'
7
7
  import Resourcespace from '../helpers/Driver/Resourcespace'
8
+ import SamlSso from '../helpers/Driver/SamlSso'
8
9
 
9
10
  export default {
10
11
  /**
@@ -22,5 +23,6 @@ export default {
22
23
  moodle: { driver: Moodle },
23
24
  google_classroom: { driver: GoogleClassroom },
24
25
  resourcespace: { driver: Resourcespace },
26
+ saml_sso: { driver: SamlSso },
25
27
  },
26
28
  }
@@ -0,0 +1,12 @@
1
+ // @ts-ignore
2
+ import Manage from '../../components/Integration/Driver/ManageSaml.vue'
3
+ import DriverInterface, { IntegrationComponents } from './DriverInterface'
4
+ import BaseDriver from './BaseDriver'
5
+
6
+ export default class SamlSso extends BaseDriver implements DriverInterface {
7
+ public components(): IntegrationComponents {
8
+ return {
9
+ Manage,
10
+ }
11
+ }
12
+ }
@@ -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',
@@ -34,6 +34,29 @@ export default {
34
34
  username: 'Username',
35
35
  key: 'API Key',
36
36
  },
37
+ saml_sso: {
38
+ manage_dialog_title: 'Manage SAML SSO Integration',
39
+ idp_entity_id: 'Identity Provider Entity ID',
40
+ idp_entity_id_hint: 'The unique identifier for your IdP (e.g., http://www.okta.com/exk1fxphPNZPCOB3v0g3)',
41
+ idp_sso_url: 'Single Sign-On URL',
42
+ idp_sso_url_hint: 'The URL where users will be redirected for authentication',
43
+ idp_slo_url: 'Single Logout URL (Optional)',
44
+ idp_slo_url_hint: 'The URL for logging out from the IdP',
45
+ idp_x509_cert: 'X.509 Certificate',
46
+ idp_x509_cert_hint: 'Paste the certificate content from your IdP metadata (without BEGIN/END lines)',
47
+ sp_details: 'Service Provider Details',
48
+ sp_details_description: 'Provide these details to your Identity Provider administrator:',
49
+ cert_stored: 'Certificate securely stored',
50
+ button_settings: 'Login Button Settings',
51
+ button_label: 'Button Label',
52
+ button_label_hint: 'Text to display on the SSO login button',
53
+ button_label_default: 'Sign in with SSO',
54
+ button_icon: 'Button Icon',
55
+ button_icon_hint: 'Material Design Icon name (e.g., mdi-login, mdi-account-key)',
56
+ sp_entity_id_label: 'SP Entity ID',
57
+ acs_url_label: 'ACS URL',
58
+ slo_url_label: 'SLO URL',
59
+ },
37
60
  enabled: 'Integration Enabled',
38
61
  disabled: 'Integration Disabled',
39
62
  ssl_enabled: 'SSL Enabled (Should be enabled for production)',
@@ -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,5 +1,9 @@
1
1
  import lti from './lti'
2
+ import saml from './saml'
3
+ import scorm from './scorm'
2
4
 
3
5
  export default {
4
6
  lti,
7
+ saml,
8
+ scorm,
5
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,7 @@
1
+ export default {
2
+ or: 'OR',
3
+ processing: 'Processing SSO login...',
4
+ success: 'Login successful! Redirecting...',
5
+ failed: 'SSO login failed',
6
+ failed_description: 'SSO login failed. Please try again.',
7
+ }
@@ -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',
@@ -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',
@@ -35,6 +35,29 @@ export default {
35
35
  username: 'Nombre de usuario',
36
36
  key: 'Clave API',
37
37
  },
38
+ saml_sso: {
39
+ manage_dialog_title: 'Administrar integración SAML SSO',
40
+ idp_entity_id: 'ID de entidad del proveedor de identidad',
41
+ idp_entity_id_hint: 'El identificador único para su IdP (por ejemplo, http://www.okta.com/exk1fxphPNZPCOB3v0g3)',
42
+ idp_sso_url: 'URL de inicio de sesión único',
43
+ idp_sso_url_hint: 'La URL donde los usuarios serán redirigidos para autenticación',
44
+ idp_slo_url: 'URL de cierre de sesión único (Opcional)',
45
+ idp_slo_url_hint: 'La URL para cerrar sesión desde el IdP',
46
+ idp_x509_cert: 'Certificado X.509',
47
+ idp_x509_cert_hint: 'Pegue el contenido del certificado de los metadatos de su IdP (sin las líneas BEGIN/END)',
48
+ sp_details: 'Detalles del proveedor de servicios',
49
+ sp_details_description: 'Proporcione estos detalles al administrador de su proveedor de identidad:',
50
+ cert_stored: 'Certificado almacenado de forma segura',
51
+ button_settings: 'Configuración del botón de inicio de sesión',
52
+ button_label: 'Etiqueta del botón',
53
+ button_label_hint: 'Texto para mostrar en el botón de inicio de sesión SSO',
54
+ button_label_default: 'Iniciar sesión con SSO',
55
+ button_icon: 'Icono del botón',
56
+ button_icon_hint: 'Nombre del icono de Material Design (por ejemplo, mdi-login, mdi-account-key)',
57
+ sp_entity_id_label: 'ID de entidad SP',
58
+ acs_url_label: 'URL ACS',
59
+ slo_url_label: 'URL SLO',
60
+ },
38
61
  enabled: 'Integración habilitada',
39
62
  disabled: 'Integración deshabilitada',
40
63
  ssl_enabled: 'SSL habilitado (debe estar habilitado para producción',
@@ -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,5 +1,9 @@
1
1
  import lti from './lti'
2
+ import saml from './saml'
3
+ import scorm from './scorm'
2
4
 
3
5
  export default {
4
6
  lti,
7
+ saml,
8
+ scorm,
5
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,7 @@
1
+ export default {
2
+ or: 'O',
3
+ processing: 'Procesando inicio de sesión SSO...',
4
+ success: '¡Inicio de sesión exitoso! Redirigiendo...',
5
+ failed: 'Error en el inicio de sesión SSO',
6
+ failed_description: 'Error en el inicio de sesión SSO. Por favor, inténtelo de nuevo.',
7
+ }
@@ -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',
@@ -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',