@windward/integrations 0.21.0 → 0.23.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 +12 -0
- package/components/Content/Blocks/ActionPanel/TransformActivity.vue +386 -0
- package/components/Content/Blocks/ActionPanel/TransformBlock.vue +402 -59
- package/components/Content/Blocks/ExternalIntegration/LtiConsumer.vue +22 -2
- package/components/ExternalIntegration/Driver/Lti1p1/ManageConsumer.vue +8 -2
- package/components/ExternalIntegration/Driver/Lti1p1/ManageProvider.vue +4 -0
- package/components/ExternalIntegration/Driver/Lti1p3/ManageConsumer.vue +2 -2
- package/components/Integration/JobTable.vue +35 -3
- package/components/Integration/TranslateCourse.vue +574 -0
- package/components/Settings/ExternalIntegration/LtiConsumerSettings.vue +27 -0
- package/i18n/ar-SA/components/ai_agent/chat.ts +20 -0
- package/i18n/ar-SA/components/ai_agent/index.ts +5 -0
- package/i18n/ar-SA/components/content/blocks/action_panel/index.ts +5 -0
- package/i18n/ar-SA/components/content/blocks/action_panel/transform_block.ts +9 -0
- package/i18n/ar-SA/components/content/blocks/external_integration/index.ts +5 -0
- package/i18n/ar-SA/components/content/blocks/external_integration/lti_consumer.ts +17 -0
- package/i18n/ar-SA/components/content/blocks/index.ts +7 -0
- package/i18n/ar-SA/components/content/index.ts +5 -0
- package/i18n/ar-SA/components/external_integration/driver/lti1p1.ts +17 -0
- package/i18n/ar-SA/components/external_integration/driver/lti1p3.ts +25 -0
- package/i18n/ar-SA/components/external_integration/driver/scorm.ts +14 -0
- package/i18n/ar-SA/components/external_integration/index.ts +36 -0
- package/i18n/ar-SA/components/external_integration/provider_target.ts +9 -0
- package/i18n/ar-SA/components/file_import/index.ts +5 -0
- package/i18n/ar-SA/components/file_import/resourcespace.ts +4 -0
- package/i18n/ar-SA/components/index.ts +19 -0
- package/i18n/ar-SA/components/integration/driver.ts +67 -0
- package/i18n/ar-SA/components/integration/index.ts +9 -0
- package/i18n/ar-SA/components/integration/job.ts +25 -0
- package/i18n/ar-SA/components/integration/job_log.ts +24 -0
- package/i18n/ar-SA/components/llm/blooms.ts +15 -0
- package/i18n/ar-SA/components/llm/content_selector.ts +3 -0
- package/i18n/ar-SA/components/llm/generate_content/fake_text_stream.ts +62 -0
- package/i18n/ar-SA/components/llm/generate_content/generate_questions.ts +92 -0
- package/i18n/ar-SA/components/llm/generate_content/index.ts +8 -0
- package/i18n/ar-SA/components/llm/index.ts +10 -0
- package/i18n/ar-SA/components/navigation/index.ts +5 -0
- package/i18n/ar-SA/components/navigation/integrations.ts +9 -0
- package/i18n/ar-SA/components/settings/external_integration/index.ts +5 -0
- package/i18n/ar-SA/components/settings/external_integration/lti_consumer.ts +10 -0
- package/i18n/ar-SA/components/settings/index.ts +5 -0
- package/i18n/ar-SA/index.ts +16 -0
- package/i18n/ar-SA/modules/index.ts +5 -0
- package/i18n/ar-SA/pages/admin/index.ts +5 -0
- package/i18n/ar-SA/pages/admin/translateCourse.ts +68 -0
- package/i18n/ar-SA/pages/course/external_integration/index.ts +6 -0
- package/i18n/ar-SA/pages/course/index.ts +5 -0
- package/i18n/ar-SA/pages/importContent.ts +3 -0
- package/i18n/ar-SA/pages/importCourse.ts +13 -0
- package/i18n/ar-SA/pages/index.ts +15 -0
- package/i18n/ar-SA/pages/login/index.ts +9 -0
- package/i18n/ar-SA/pages/login/lti.ts +23 -0
- package/i18n/ar-SA/pages/login/saml.ts +7 -0
- package/i18n/ar-SA/pages/login/scorm.ts +28 -0
- package/i18n/ar-SA/pages/vendor.ts +11 -0
- package/i18n/ar-SA/shared/content_blocks.ts +9 -0
- package/i18n/ar-SA/shared/error.ts +9 -0
- package/i18n/ar-SA/shared/file.ts +5 -0
- package/i18n/ar-SA/shared/index.ts +17 -0
- package/i18n/ar-SA/shared/menu.ts +3 -0
- package/i18n/ar-SA/shared/notification.ts +14 -0
- package/i18n/ar-SA/shared/permission.ts +52 -0
- package/i18n/ar-SA/shared/settings.ts +9 -0
- package/i18n/en-US/components/content/blocks/action_panel/index.ts +2 -0
- package/i18n/en-US/components/content/blocks/action_panel/transform_activity.ts +8 -0
- package/i18n/en-US/components/content/blocks/action_panel/transform_block.ts +1 -1
- package/i18n/en-US/components/content/blocks/external_integration/lti_consumer.ts +1 -0
- package/i18n/en-US/components/integration/job.ts +2 -0
- package/i18n/en-US/components/navigation/integrations.ts +1 -0
- package/i18n/en-US/components/settings/external_integration/lti_consumer.ts +2 -0
- package/i18n/en-US/pages/admin/index.ts +5 -0
- package/i18n/en-US/pages/admin/translateCourse.ts +68 -0
- package/i18n/en-US/pages/index.ts +2 -0
- package/i18n/es-ES/components/content/blocks/action_panel/index.ts +2 -0
- package/i18n/es-ES/components/content/blocks/action_panel/transform_activity.ts +8 -0
- package/i18n/es-ES/components/content/blocks/action_panel/transform_block.ts +1 -1
- package/i18n/es-ES/components/content/blocks/external_integration/lti_consumer.ts +8 -7
- package/i18n/es-ES/components/integration/job.ts +2 -0
- package/i18n/es-ES/components/navigation/integrations.ts +1 -0
- package/i18n/es-ES/components/settings/external_integration/lti_consumer.ts +3 -0
- package/i18n/es-ES/pages/admin/index.ts +5 -0
- package/i18n/es-ES/pages/admin/translateCourse.ts +68 -0
- package/i18n/es-ES/pages/index.ts +2 -0
- package/i18n/fr-FR/components/ai_agent/chat.ts +20 -0
- package/i18n/fr-FR/components/ai_agent/index.ts +5 -0
- package/i18n/fr-FR/components/content/blocks/action_panel/index.ts +5 -0
- package/i18n/fr-FR/components/content/blocks/action_panel/transform_block.ts +9 -0
- package/i18n/fr-FR/components/content/blocks/external_integration/index.ts +5 -0
- package/i18n/fr-FR/components/content/blocks/external_integration/lti_consumer.ts +17 -0
- package/i18n/fr-FR/components/content/blocks/index.ts +7 -0
- package/i18n/fr-FR/components/content/index.ts +5 -0
- package/i18n/fr-FR/components/external_integration/driver/lti1p1.ts +17 -0
- package/i18n/fr-FR/components/external_integration/driver/lti1p3.ts +25 -0
- package/i18n/fr-FR/components/external_integration/driver/scorm.ts +14 -0
- package/i18n/fr-FR/components/external_integration/index.ts +36 -0
- package/i18n/fr-FR/components/external_integration/provider_target.ts +9 -0
- package/i18n/fr-FR/components/file_import/index.ts +5 -0
- package/i18n/fr-FR/components/file_import/resourcespace.ts +4 -0
- package/i18n/fr-FR/components/index.ts +19 -0
- package/i18n/fr-FR/components/integration/driver.ts +67 -0
- package/i18n/fr-FR/components/integration/index.ts +9 -0
- package/i18n/fr-FR/components/integration/job.ts +25 -0
- package/i18n/fr-FR/components/integration/job_log.ts +24 -0
- package/i18n/fr-FR/components/llm/blooms.ts +15 -0
- package/i18n/fr-FR/components/llm/content_selector.ts +3 -0
- package/i18n/fr-FR/components/llm/generate_content/fake_text_stream.ts +62 -0
- package/i18n/fr-FR/components/llm/generate_content/generate_questions.ts +92 -0
- package/i18n/fr-FR/components/llm/generate_content/index.ts +8 -0
- package/i18n/fr-FR/components/llm/index.ts +10 -0
- package/i18n/fr-FR/components/navigation/index.ts +5 -0
- package/i18n/fr-FR/components/navigation/integrations.ts +9 -0
- package/i18n/fr-FR/components/settings/external_integration/index.ts +5 -0
- package/i18n/fr-FR/components/settings/external_integration/lti_consumer.ts +10 -0
- package/i18n/fr-FR/components/settings/index.ts +5 -0
- package/i18n/fr-FR/index.ts +16 -0
- package/i18n/fr-FR/modules/index.ts +5 -0
- package/i18n/fr-FR/pages/admin/index.ts +5 -0
- package/i18n/fr-FR/pages/admin/translateCourse.ts +68 -0
- package/i18n/fr-FR/pages/course/external_integration/index.ts +6 -0
- package/i18n/fr-FR/pages/course/index.ts +5 -0
- package/i18n/fr-FR/pages/importContent.ts +3 -0
- package/i18n/fr-FR/pages/importCourse.ts +13 -0
- package/i18n/fr-FR/pages/index.ts +15 -0
- package/i18n/fr-FR/pages/login/index.ts +9 -0
- package/i18n/fr-FR/pages/login/lti.ts +23 -0
- package/i18n/fr-FR/pages/login/saml.ts +7 -0
- package/i18n/fr-FR/pages/login/scorm.ts +28 -0
- package/i18n/fr-FR/pages/vendor.ts +11 -0
- package/i18n/fr-FR/shared/content_blocks.ts +9 -0
- package/i18n/fr-FR/shared/error.ts +9 -0
- package/i18n/fr-FR/shared/file.ts +5 -0
- package/i18n/fr-FR/shared/index.ts +17 -0
- package/i18n/fr-FR/shared/menu.ts +3 -0
- package/i18n/fr-FR/shared/notification.ts +14 -0
- package/i18n/fr-FR/shared/permission.ts +52 -0
- package/i18n/fr-FR/shared/settings.ts +9 -0
- package/i18n/index.ts +4 -0
- package/i18n/sv-SE/components/content/blocks/action_panel/index.ts +2 -0
- package/i18n/sv-SE/components/content/blocks/action_panel/transform_activity.ts +8 -0
- package/i18n/sv-SE/components/content/blocks/action_panel/transform_block.ts +1 -1
- package/i18n/sv-SE/components/content/blocks/external_integration/lti_consumer.ts +9 -8
- package/i18n/sv-SE/components/integration/job.ts +6 -4
- package/i18n/sv-SE/components/navigation/integrations.ts +1 -0
- package/i18n/sv-SE/components/settings/external_integration/lti_consumer.ts +3 -0
- package/i18n/sv-SE/pages/admin/index.ts +5 -0
- package/i18n/sv-SE/pages/admin/translateCourse.ts +68 -0
- package/i18n/sv-SE/pages/index.ts +2 -0
- package/package.json +1 -1
- package/pages/admin/translateCourse.vue +81 -0
- package/plugin.js +32 -0
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
(consumer.id ? 'change_key' : 'key')
|
|
65
65
|
)
|
|
66
66
|
"
|
|
67
|
-
:rules="$Validation.getRule('exists')"
|
|
67
|
+
:rules="isNew ? $Validation.getRule('exists') : []"
|
|
68
68
|
></v-text-field>
|
|
69
69
|
|
|
70
70
|
<v-text-field
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
: 'secret')
|
|
84
84
|
)
|
|
85
85
|
"
|
|
86
|
-
:rules="$Validation.getRule('exists')"
|
|
86
|
+
:rules="isNew ? $Validation.getRule('exists') : []"
|
|
87
87
|
>
|
|
88
88
|
</v-text-field>
|
|
89
89
|
|
|
@@ -172,6 +172,7 @@ import Course from '~/models/Course'
|
|
|
172
172
|
import TextEditor from '~/components/Text/TextEditor.vue'
|
|
173
173
|
import FormVue from '~/components/Core/Form'
|
|
174
174
|
import Crypto from '~/helpers/Crypto'
|
|
175
|
+
import Uuid from '~/helpers/Uuid'
|
|
175
176
|
|
|
176
177
|
export default {
|
|
177
178
|
name: 'ManageLti1p1ConsumerDriver',
|
|
@@ -196,6 +197,7 @@ export default {
|
|
|
196
197
|
return {
|
|
197
198
|
render: false,
|
|
198
199
|
consumer: {
|
|
200
|
+
type: 'lti',
|
|
199
201
|
version: '1.1',
|
|
200
202
|
metadata: {
|
|
201
203
|
custom: [],
|
|
@@ -237,6 +239,9 @@ export default {
|
|
|
237
239
|
organization: 'organization/get',
|
|
238
240
|
course: 'course/get',
|
|
239
241
|
}),
|
|
242
|
+
isNew() {
|
|
243
|
+
return !Uuid.test(this.consumer.id)
|
|
244
|
+
},
|
|
240
245
|
},
|
|
241
246
|
created() {
|
|
242
247
|
if (_.isEmpty(this.value)) {
|
|
@@ -314,6 +319,7 @@ export default {
|
|
|
314
319
|
},
|
|
315
320
|
resetConsumer() {
|
|
316
321
|
const emptyConsumer = {
|
|
322
|
+
type: 'lti',
|
|
317
323
|
version: '1.1',
|
|
318
324
|
metadata: {
|
|
319
325
|
custom: [],
|
|
@@ -268,6 +268,7 @@ import Role from '~/models/Role'
|
|
|
268
268
|
import Organization from '~/models/Organization'
|
|
269
269
|
import Course from '~/models/Course'
|
|
270
270
|
import Crypto from '~/helpers/Crypto'
|
|
271
|
+
import Uuid from '~/helpers/Uuid'
|
|
271
272
|
|
|
272
273
|
export default {
|
|
273
274
|
name: 'ManageLti1p1ProviderDriver',
|
|
@@ -321,6 +322,9 @@ export default {
|
|
|
321
322
|
course: 'course/get',
|
|
322
323
|
contentTree: 'content/getTree',
|
|
323
324
|
}),
|
|
325
|
+
isNew() {
|
|
326
|
+
return !Uuid.test(this.provider.id)
|
|
327
|
+
},
|
|
324
328
|
},
|
|
325
329
|
created() {
|
|
326
330
|
if (_.isEmpty(this.value)) {
|
|
@@ -187,8 +187,8 @@ export default {
|
|
|
187
187
|
return {
|
|
188
188
|
render: false,
|
|
189
189
|
consumer: {
|
|
190
|
-
version: '1.3',
|
|
191
190
|
type: 'lti',
|
|
191
|
+
version: '1.3',
|
|
192
192
|
metadata: {
|
|
193
193
|
custom: [],
|
|
194
194
|
security_level: '',
|
|
@@ -307,8 +307,8 @@ export default {
|
|
|
307
307
|
},
|
|
308
308
|
resetConsumer() {
|
|
309
309
|
const emptyConsumer = {
|
|
310
|
-
version: '1.3',
|
|
311
310
|
type: 'lti',
|
|
311
|
+
version: '1.3',
|
|
312
312
|
metadata: {
|
|
313
313
|
custom: [],
|
|
314
314
|
security_level: '',
|
|
@@ -167,6 +167,7 @@ export default {
|
|
|
167
167
|
props: {
|
|
168
168
|
channel: { type: String, required: true },
|
|
169
169
|
event: { type: String, required: true },
|
|
170
|
+
jobType: { type: String, default: null }, // 'translation' or null for all
|
|
170
171
|
},
|
|
171
172
|
data() {
|
|
172
173
|
return {
|
|
@@ -196,6 +197,15 @@ export default {
|
|
|
196
197
|
},
|
|
197
198
|
vendorFromOrgIntegration() {
|
|
198
199
|
return (id) => {
|
|
200
|
+
// Handle null organization_integration_id (translation jobs)
|
|
201
|
+
if (!id) {
|
|
202
|
+
return {
|
|
203
|
+
name: this.$t(
|
|
204
|
+
'windward.integrations.components.integration.job.vendor_name_translation'
|
|
205
|
+
),
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
199
209
|
const orgIntegration = this.orgIntegrations.find(
|
|
200
210
|
(o) => o.id === id
|
|
201
211
|
)
|
|
@@ -208,12 +218,24 @@ export default {
|
|
|
208
218
|
vendor = foundVendor
|
|
209
219
|
}
|
|
210
220
|
}
|
|
211
|
-
// this.orgIntegrations.map(({ foo }) => foo)
|
|
212
221
|
return vendor
|
|
213
222
|
}
|
|
214
223
|
},
|
|
215
224
|
jobDetails() {
|
|
216
225
|
return (job) => {
|
|
226
|
+
// Translation job details
|
|
227
|
+
if (_.get(job.metadata, 'type') === 'translation') {
|
|
228
|
+
const sourceCourseId = _.get(job.metadata, 'source_course_id', '')
|
|
229
|
+
const targetLocaleId = _.get(job.metadata, 'target_locale_id', '')
|
|
230
|
+
const courseIdShort = sourceCourseId.substring(sourceCourseId.length - 6).toUpperCase()
|
|
231
|
+
const localeIdShort = targetLocaleId.substring(targetLocaleId.length - 6).toUpperCase()
|
|
232
|
+
return this.$t(
|
|
233
|
+
'windward.integrations.components.integration.job.job_details.translate_course',
|
|
234
|
+
[courseIdShort, localeIdShort]
|
|
235
|
+
)
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Import job details
|
|
217
239
|
if (
|
|
218
240
|
_.get(job.metadata, 'import.remote_course.id') &&
|
|
219
241
|
_.get(job.metadata, 'import.remote_course.name')
|
|
@@ -240,6 +262,10 @@ export default {
|
|
|
240
262
|
this.socket = this.$Integration.getSocket()
|
|
241
263
|
this.connect(this.channel, this.event)
|
|
242
264
|
},
|
|
265
|
+
// Refresh data when tab becomes active (for keep-alive components)
|
|
266
|
+
activated() {
|
|
267
|
+
this.loadJobs()
|
|
268
|
+
},
|
|
243
269
|
methods: {
|
|
244
270
|
doConfetti() {
|
|
245
271
|
// launch a few confetti from the left edge
|
|
@@ -267,13 +293,19 @@ export default {
|
|
|
267
293
|
.include('vendor')
|
|
268
294
|
.get()
|
|
269
295
|
|
|
270
|
-
|
|
296
|
+
let jobsQuery = new Organization({
|
|
271
297
|
id: this.organization.id,
|
|
272
298
|
})
|
|
273
299
|
.integrationJobs()
|
|
274
300
|
.orderBy('-created_at')
|
|
275
301
|
.limit(10)
|
|
276
|
-
|
|
302
|
+
|
|
303
|
+
// Filter by job type if specified
|
|
304
|
+
if (this.jobType) {
|
|
305
|
+
jobsQuery = jobsQuery.where('metadata->type', this.jobType)
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
this.jobs = await jobsQuery.get()
|
|
277
309
|
},
|
|
278
310
|
connect(channel, event) {
|
|
279
311
|
this.socket.connector.pusher.connection.bind(
|