From 15fe62647583456cc8385d51ef0501f010845d5a Mon Sep 17 00:00:00 2001 From: Yeshwanth munagapati Date: Fri, 29 Aug 2025 14:49:10 +0530 Subject: [PATCH 01/11] PRIC-5227 --- .../frontend/channelList/router.js | 3 +- .../views/Channel/StudioMyChannels.vue | 533 ++++++++++++++++++ .../__tests__/StudioMyChannels.spec.js | 205 +++++++ .../LC_MESSAGES/contentcuration-messages.json | 40 +- .../LC_MESSAGES/contentcuration-messages.json | 20 + .../LC_MESSAGES/contentcuration-messages.json | 20 + .../LC_MESSAGES/contentcuration-messages.json | 20 + .../LC_MESSAGES/contentcuration-messages.json | 20 + .../LC_MESSAGES/contentcuration-messages.json | 20 + 9 files changed, 860 insertions(+), 21 deletions(-) create mode 100644 contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue create mode 100644 contentcuration/contentcuration/frontend/channelList/views/Channel/__tests__/StudioMyChannels.spec.js diff --git a/contentcuration/contentcuration/frontend/channelList/router.js b/contentcuration/contentcuration/frontend/channelList/router.js index 533057ef1b..f2d26d080c 100644 --- a/contentcuration/contentcuration/frontend/channelList/router.js +++ b/contentcuration/contentcuration/frontend/channelList/router.js @@ -1,5 +1,6 @@ import VueRouter from 'vue-router'; import ChannelList from './views/Channel/ChannelList'; +import StudioMyChannels from './views/Channel/StudioMyChannels.vue'; import ChannelSetList from './views/ChannelSet/ChannelSetList'; import ChannelSetModal from './views/ChannelSet/ChannelSetModal'; import CatalogList from './views/Channel/CatalogList'; @@ -14,7 +15,7 @@ const router = new VueRouter({ { name: RouteNames.CHANNELS_EDITABLE, path: '/my-channels', - component: ChannelList, + component: StudioMyChannels, props: { listType: ChannelListTypes.EDITABLE }, }, diff --git a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue new file mode 100644 index 0000000000..4a1d796fc9 --- /dev/null +++ b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue @@ -0,0 +1,533 @@ + + + + + + + diff --git a/contentcuration/contentcuration/frontend/channelList/views/Channel/__tests__/StudioMyChannels.spec.js b/contentcuration/contentcuration/frontend/channelList/views/Channel/__tests__/StudioMyChannels.spec.js new file mode 100644 index 0000000000..e541275494 --- /dev/null +++ b/contentcuration/contentcuration/frontend/channelList/views/Channel/__tests__/StudioMyChannels.spec.js @@ -0,0 +1,205 @@ +import { render, fireEvent, screen, within } from '@testing-library/vue'; +import VueRouter from 'vue-router'; +import Vuex, { Store } from 'vuex'; +import StudioMyChannels from '../StudioMyChannels.vue'; + +const mockChannels = [ + { + id: '1', + name: 'channel one', + edit: true, + published: true, + source_url: 'https://example.com', + demo_server_url: 'https://demo.com', + deleted: false, + modified: 2, + last_published: 1, + description: 'Channel one description', + bookmark: true, + count: 5, + thumbnail_url: '', + language: 'en', + }, + { + id: '2', + name: 'channel two', + edit: true, + published: false, + source_url: 'https://example.com', + demo_server_url: 'https://demo.com', + deleted: false, + modified: 2, + last_published: 1, + description: 'Channel two description', + bookmark: false, + count: 5, + thumbnail_url: '', + language: 'en', + }, + { + id: '3', + name: 'channel three', + edit: true, + published: true, + source_url: 'https://example.com', + demo_server_url: 'https://demo.com', + deleted: false, + modified: 2, + last_published: 1, + description: 'Channel three description', + bookmark: false, + count: 5, + thumbnail_url: '', + language: 'en', + }, +]; + +const router = new VueRouter({ + routes: [ + { name: 'CHANNEL_DETAILS', path: '/:channelId/details' }, + { name: 'CHANNEL_EDIT', path: '/:channelId/:tab' }, + ], +}); + +function renderComponent(store) { + return render(StudioMyChannels, { + store, + props: { + listType: 'edit', + }, + routes: router, + }); +} + +const store = new Store({ + modules: { + channel: { + namespaced: true, + getters: { + channels: () => { + return mockChannels; + }, + }, + actions: { + loadChannelList: jest.fn(), + createChannel: jest.fn(), + }, + }, + session: { + namespaced: true, + getters: { + loggedIn: () => true, + }, + }, + }, +}); + +describe('StudioMyChannels.vue', () => { + test('renders my channels', async () => { + renderComponent(store); + const card0 = await screen.findByTestId('card-0'); + const cardElements = screen.queryAllByTestId((testId, element) => testId.startsWith('card-')); + expect(await screen.findByText('New channel')).toBeInTheDocument(); + + expect(card0).toHaveTextContent('channel one'); + expect(within(card0).getByTestId('details-button-0')).toBeInTheDocument(); + expect(within(card0).getByTestId('dropdown-button-0')).toBeInTheDocument(); + + expect(cardElements.length).toBe(3); + }); + + test('check no channel', async () => { + const store = new Store({ + modules: { + channel: { + namespaced: true, + getters: { + channels: () => { + return []; + }, + }, + actions: { + loadChannelList: jest.fn(), + createChannel: jest.fn(), + }, + }, + session: { + namespaced: true, + getters: { + loggedIn: () => true, + }, + }, + }, + }); + renderComponent(store); + const cardElements = screen.queryAllByTestId((testId, element) => testId.startsWith('card-')); + expect(cardElements.length).toBe(0); + expect(screen.getByText('No channels found')).toBeInTheDocument(); + }); + + test('open dropdown for published channel', async () => { + renderComponent(store); + const dropdownButton = await screen.findByTestId('dropdown-button-0'); + await fireEvent.click(dropdownButton); + expect(screen.getByText('Edit channel details')).toBeInTheDocument(); + expect(screen.getByText('Delete channel')).toBeInTheDocument(); + expect(screen.getByText('Go to source website')).toBeInTheDocument(); + expect(screen.getByText('View channel on Kolibri')).toBeInTheDocument(); + expect(screen.getByText('Copy channel token')).toBeInTheDocument(); + const container = document.querySelector('.ui-focus-container-content'); + expect(container).not.toBeNull(); + + const listItems = container.querySelectorAll('li'); + expect(listItems.length).toBe(5); + }); + + test('open dropdown for unpulished channel', async () => { + renderComponent(store); + const dropdownButton = await screen.findByTestId('dropdown-button-1'); + await fireEvent.click(dropdownButton); + expect(screen.getByText('Edit channel details')).toBeInTheDocument(); + expect(screen.getByText('Delete channel')).toBeInTheDocument(); + expect(screen.getByText('Go to source website')).toBeInTheDocument(); + expect(screen.getByText('View channel on Kolibri')).toBeInTheDocument(); + const container = document.querySelector('.ui-focus-container-content'); + expect(container).not.toBeNull(); + + const listItems = container.querySelectorAll('li'); + expect(listItems.length).toBe(4); + }); + + test('opens delete modal and close', async () => { + renderComponent(store); + const dropdownButton = await screen.findByTestId('dropdown-button-0'); + await fireEvent.click(dropdownButton); + const deleteButton = screen.getByText('Delete channel'); + await fireEvent.click(deleteButton); + let deleteModal = document.querySelector('[data-testid="delete-modal"]'); + expect(deleteModal).not.toBeNull(); + const closeDeleteModal = screen.getByText('Cancel'); + await fireEvent.click(closeDeleteModal); + deleteModal = document.querySelector('[data-testid="delete-modal"]'); + expect(deleteModal).toBeNull(); + }); + + test('open copy modal and close', async () => { + renderComponent(store); + const dropdownButton = await screen.findByTestId('dropdown-button-0'); + await fireEvent.click(dropdownButton); + const copyButton = screen.getByText('Copy channel token'); + await fireEvent.click(copyButton); + let copyModal = document.querySelector('[data-testid="copy-modal"]'); + expect(copyModal).not.toBeNull(); + const closeCopyModal = screen.getByText('Close'); + await fireEvent.click(closeCopyModal); + copyModal = document.querySelector('[data-testid="copy-modal"]'); + expect(copyModal).toBeNull(); + }); + + test('detail button takes to details page', async () => { + renderComponent(store); + const detailsButton = await screen.findByTestId('details-button-0'); + await fireEvent.click(detailsButton); + expect(router.currentRoute.path).toBe('/1/details'); + }); +}); diff --git a/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json index e658bae99d..c12655c1fe 100644 --- a/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json @@ -248,26 +248,26 @@ "ChannelInvitation.editText": "{sender} قام بدعوتك لتحرير {channel}", "ChannelInvitation.goToChannelSnackbarAction": "التوجّه إلى القناة", "ChannelInvitation.viewText": "{sender} قام بدعوتك لعرض {channel}", - "ChannelItem.cancel": "إلغاء", - "ChannelItem.channelDeletedSnackbar": "تم حذف القناة", - "ChannelItem.channelLanguageNotSetIndicator": "لم يتم تعيين لغة", - "ChannelItem.copyToken": "نسخ الرمز التعريفي للقناة", - "ChannelItem.deleteChannel": "حذف القناة التعليمية", - "ChannelItem.deletePrompt": "سيتم حذف هذه القناة بشكل دائم. لا يمكن التراجع عن هذه الخطوة.", - "ChannelItem.deleteTitle": "حذف هذه القناة", - "ChannelItem.details": "التفاصيل", - "ChannelItem.editChannel": "تعديل تفاصيل القناة", - "ChannelItem.goToWebsite": "التوجّه إلى موقع المصدر الإلكتروني", - "ChannelItem.lastPublished": "منشور {last_published}", - "ChannelItem.lastUpdated": "{updated} تم تحديثها", - "ChannelItem.resourceCount": "{count, plural, zero {# مصادر} one {# مصادر} two {# مصدران} few {# مصادر} many {# مصدراً}\n =1 {# مصدر}\n other {# مصادر}}", - "ChannelItem.unpublishedText": "غير منشور", - "ChannelItem.versionText": "نسخة الإصدار {version}", - "ChannelItem.viewContent": "عرض القناة على كوليبري", - "ChannelList.channel": "قناة جديدة", - "ChannelList.channelFilterLabel": "القنوات التعليمية", - "ChannelList.noChannelsFound": "لم يتم العثور على أي قناة", - "ChannelList.noMatchingChannels": "لا توجد قنوات مطابقة", + "StudioMyChannels.cancel": "إلغاء", + "StudioMyChannels.channelDeletedSnackbar": "تم حذف القناة", + "StudioMyChannels.channelLanguageNotSetIndicator": "لم يتم تعيين لغة", + "StudioMyChannels.copyToken": "نسخ الرمز التعريفي للقناة", + "StudioMyChannels.deleteChannel": "حذف القناة التعليمية", + "StudioMyChannels.deletePrompt": "سيتم حذف هذه القناة بشكل دائم. لا يمكن التراجع عن هذه الخطوة.", + "StudioMyChannels.deleteTitle": "حذف هذه القناة", + "StudioMyChannels.details": "التفاصيل", + "StudioMyChannels.editChannel": "تعديل تفاصيل القناة", + "StudioMyChannels.goToWebsite": "التوجّه إلى موقع المصدر الإلكتروني", + "StudioMyChannels.lastPublished": "منشور {last_published}", + "StudioMyChannels.lastUpdated": "{updated} تم تحديثها", + "StudioMyChannels.resourceCount": "{count, plural, zero {# مصادر} one {# مصادر} two {# مصدران} few {# مصادر} many {# مصدراً}\n =1 {# مصدر}\n other {# مصادر}}", + "StudioMyChannels.unpublishedText": "غير منشور", + "StudioMyChannels.versionText": "نسخة الإصدار {version}", + "StudioMyChannels.viewContent": "عرض القناة على كوليبري", + "StudioMyChannels.channel": "قناة جديدة", + "StudioMyChannels.channelFilterLabel": "القنوات التعليمية", + "StudioMyChannels.noChannelsFound": "لم يتم العثور على أي قناة", + "StudioMyChannels.noMatchingChannels": "لا توجد قنوات مطابقة", "ChannelListAppError.channelPermissionsErrorDetails": "سجّل الدخول أو اطلب من مالك هذه القناة أن يمنحك الإذن للتحرير أو العرض", "ChannelListIndex.catalog": "مكتبة المحتوى", "ChannelListIndex.channelSets": "المجموعات", diff --git a/contentcuration/locale/en/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/en/LC_MESSAGES/contentcuration-messages.json index dd5c30f547..bd9e1d5b29 100644 --- a/contentcuration/locale/en/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/en/LC_MESSAGES/contentcuration-messages.json @@ -268,6 +268,26 @@ "ChannelList.channelFilterLabel": "Channels", "ChannelList.noChannelsFound": "No channels found", "ChannelList.noMatchingChannels": "There are no matching channels", + "StudioMyChannels.cancel": "Cancel", + "StudioMyChannels.channelDeletedSnackbar": "Channel deleted", + "StudioMyChannels.channelLanguageNotSetIndicator": "No language set", + "StudioMyChannels.copyToken": "Copy channel token", + "StudioMyChannels.deleteChannel": "Delete channel", + "StudioMyChannels.deletePrompt": "This channel will be permanently deleted. This cannot be undone.", + "StudioMyChannels.deleteTitle": "Delete this channel", + "StudioMyChannels.details": "Details", + "StudioMyChannels.editChannel": "Edit channel details", + "StudioMyChannels.goToWebsite": "Go to source website", + "StudioMyChannels.lastPublished": "Published {last_published}", + "StudioMyChannels.lastUpdated": "Updated {updated}", + "StudioMyChannels.resourceCount": "{count, plural,\n =1 {# resource}\n other {# resources}}", + "StudioMyChannels.unpublishedText": "Unpublished", + "StudioMyChannels.versionText": "Version {version}", + "StudioMyChannels.viewContent": "View channel on Kolibri", + "StudioMyChannels.channel": "New channel", + "StudioMyChannels.channelFilterLabel": "Channels", + "StudioMyChannels.noChannelsFound": "No channels found", + "StudioMyChannels.noMatchingChannels": "There are no matching channels", "ChannelListAppError.channelPermissionsErrorDetails": "Sign in or ask the owner of this channel to give you permission to edit or view", "ChannelListIndex.catalog": "Content Library", "ChannelListIndex.channelSets": "Collections", diff --git a/contentcuration/locale/es_ES/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/es_ES/LC_MESSAGES/contentcuration-messages.json index 1ea57159c4..ba7232ac67 100644 --- a/contentcuration/locale/es_ES/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/es_ES/LC_MESSAGES/contentcuration-messages.json @@ -268,6 +268,26 @@ "ChannelList.channelFilterLabel": "Canales", "ChannelList.noChannelsFound": "No se han encontrado canales", "ChannelList.noMatchingChannels": "No hay canales que coincidan", + "StudioMyChannels.cancel": "Cancelar", + "StudioMyChannels.channelDeletedSnackbar": "Canal eliminado", + "StudioMyChannels.channelLanguageNotSetIndicator": "Idioma no establecido", + "StudioMyChannels.copyToken": "Copiar el token del canal", + "StudioMyChannels.deleteChannel": "Eliminar canal", + "StudioMyChannels.deletePrompt": "Este canal se eliminará permanentemente. Esto no se puede deshacer.", + "StudioMyChannels.deleteTitle": "Eliminar este canal", + "StudioMyChannels.details": "Detalles", + "StudioMyChannels.editChannel": "Editar detalles del canal", + "StudioMyChannels.goToWebsite": "Ir a la página web de origen", + "StudioMyChannels.lastPublished": "Publicado {last_published}", + "StudioMyChannels.lastUpdated": "Actualizado {updated}", + "StudioMyChannels.resourceCount": "{count, plural,\n =1 {# recurso}\n other {# recursos}}", + "StudioMyChannels.unpublishedText": "No publicado", + "StudioMyChannels.versionText": "Versión {version}", + "StudioMyChannels.viewContent": "Ver canal en Kolibri", + "StudioMyChannels.channel": "Nuevo canal", + "StudioMyChannels.channelFilterLabel": "Canales", + "StudioMyChannels.noChannelsFound": "No se han encontrado canales", + "StudioMyChannels.noMatchingChannels": "No hay canales que coincidan", "ChannelListAppError.channelPermissionsErrorDetails": "Inicie sesión o pida al propietario de este canal que le dé permiso para editar o ver", "ChannelListIndex.catalog": "Biblioteca de contenido", "ChannelListIndex.channelSets": "Colecciones", diff --git a/contentcuration/locale/fr_FR/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/fr_FR/LC_MESSAGES/contentcuration-messages.json index 16fef0aa81..71622aa9e6 100644 --- a/contentcuration/locale/fr_FR/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/fr_FR/LC_MESSAGES/contentcuration-messages.json @@ -268,6 +268,26 @@ "ChannelList.channelFilterLabel": "Chaînes", "ChannelList.noChannelsFound": "Aucune chaîne trouvée", "ChannelList.noMatchingChannels": "Aucune chaîne correspondante", + "StudioMyChannels.cancel": "Annuler", + "StudioMyChannels.channelDeletedSnackbar": "Chaîne supprimée", + "StudioMyChannels.channelLanguageNotSetIndicator": "Aucune langue définie", + "StudioMyChannels.copyToken": "Copier le jeton de la chaîne", + "StudioMyChannels.deleteChannel": "Supprimer la chaîne", + "StudioMyChannels.deletePrompt": "Cette chaîne sera définitivement supprimée. Cette action est irréversible.", + "StudioMyChannels.deleteTitle": "Supprimer cette chaîne", + "StudioMyChannels.details": "Détails", + "StudioMyChannels.editChannel": "Modifier les détails de la chaîne", + "StudioMyChannels.goToWebsite": "Aller sur le site web source", + "StudioMyChannels.lastPublished": "Publié le {last_published}", + "StudioMyChannels.lastUpdated": "Mis à jour {updated}", + "StudioMyChannels.resourceCount": "{count, plural, one {}\n =1 {# ressource}\n other {# ressources}}", + "StudioMyChannels.unpublishedText": "Non publié", + "StudioMyChannels.versionText": "Version {version}", + "StudioMyChannels.viewContent": "Afficher la chaîne sur Kolibri", + "StudioMyChannels.channel": "Nouvelle chaîne", + "StudioMyChannels.channelFilterLabel": "Chaînes", + "StudioMyChannels.noChannelsFound": "Aucune chaîne trouvée", + "StudioMyChannels.noMatchingChannels": "Aucune chaîne correspondante", "ChannelListAppError.channelPermissionsErrorDetails": "Connectez-vous ou demandez au propriétaire de cette chaîne de vous donner l'autorité de la modifier ou de la visualiser", "ChannelListIndex.catalog": "Bibliothèque de contenus", "ChannelListIndex.channelSets": "Recueils", diff --git a/contentcuration/locale/hi_IN/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/hi_IN/LC_MESSAGES/contentcuration-messages.json index 100e64a758..3b13ce8447 100644 --- a/contentcuration/locale/hi_IN/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/hi_IN/LC_MESSAGES/contentcuration-messages.json @@ -268,6 +268,26 @@ "ChannelList.channelFilterLabel": "चैनल", "ChannelList.noChannelsFound": "No channels found", "ChannelList.noMatchingChannels": "There are no matching channels", + "StudioMyChannels.cancel": "रद्द करें", + "StudioMyChannels.channelDeletedSnackbar": "Channel deleted", + "StudioMyChannels.channelLanguageNotSetIndicator": "No language set", + "StudioMyChannels.copyToken": "Copy channel token", + "StudioMyChannels.deleteChannel": "चैनल हटाएँ", + "StudioMyChannels.deletePrompt": "This channel will be permanently deleted. This cannot be undone.", + "StudioMyChannels.deleteTitle": "Delete this channel", + "StudioMyChannels.details": "विवरण", + "StudioMyChannels.editChannel": "Edit channel details", + "StudioMyChannels.goToWebsite": "Go to source website", + "StudioMyChannels.lastPublished": "Published {last_published}", + "StudioMyChannels.lastUpdated": "Updated {updated}", + "StudioMyChannels.resourceCount": "{count, plural,\n =1 {# resource}\n other {# resources}}", + "StudioMyChannels.unpublishedText": "Unpublished", + "StudioMyChannels.versionText": "संस्करण {version}", + "StudioMyChannels.viewContent": "View channel on Kolibri", + "StudioMyChannels.channel": "New channel", + "StudioMyChannels.channelFilterLabel": "चैनल", + "StudioMyChannels.noChannelsFound": "No channels found", + "StudioMyChannels.noMatchingChannels": "There are no matching channels", "ChannelListAppError.channelPermissionsErrorDetails": "Sign in or ask the owner of this channel to give you permission to edit or view", "ChannelListIndex.catalog": "Content Library", "ChannelListIndex.channelSets": "Collections", diff --git a/contentcuration/locale/pt_BR/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/pt_BR/LC_MESSAGES/contentcuration-messages.json index 50baf6d87c..d73ff05c96 100644 --- a/contentcuration/locale/pt_BR/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/pt_BR/LC_MESSAGES/contentcuration-messages.json @@ -268,6 +268,26 @@ "ChannelList.channelFilterLabel": "Canais", "ChannelList.noChannelsFound": "Nenhum canal encontrado", "ChannelList.noMatchingChannels": "Não há canais correspondentes", + "StudioMyChannels.cancel": "Cancelar", + "StudioMyChannels.channelDeletedSnackbar": "Canal excluído", + "StudioMyChannels.channelLanguageNotSetIndicator": "Nenhum idioma definido", + "StudioMyChannels.copyToken": "Copiar token do canal", + "StudioMyChannels.deleteChannel": "Excluir canal", + "StudioMyChannels.deletePrompt": "Este canal será excluído permanentemente. Esta ação não pode ser desfeita.", + "StudioMyChannels.deleteTitle": "Excluir este canal", + "StudioMyChannels.details": "Detalhes", + "StudioMyChannels.editChannel": "Editar detalhes do canal", + "StudioMyChannels.goToWebsite": "Ir para o website de origem", + "StudioMyChannels.lastPublished": "Publicado em {last_published}", + "StudioMyChannels.lastUpdated": "Atualizado {updated}", + "StudioMyChannels.resourceCount": "{count, plural, one {}\n =1 {# conteúdo}\n other {# conteúdos}}", + "StudioMyChannels.unpublishedText": "Não publicado", + "StudioMyChannels.versionText": "Versão {version}", + "StudioMyChannels.viewContent": "Visualizar canal no Kolibri", + "StudioMyChannels.channel": "Novo canal", + "StudioMyChannels.channelFilterLabel": "Canais", + "StudioMyChannels.noChannelsFound": "Nenhum canal encontrado", + "StudioMyChannels.noMatchingChannels": "Não há canais correspondentes", "ChannelListAppError.channelPermissionsErrorDetails": "Faça o login ou peça ao proprietário deste canal que te dê permissão para editar ou visualizar", "ChannelListIndex.catalog": "Biblioteca de conteúdo", "ChannelListIndex.channelSets": "Conjuntos", From d890bf06aaa33bc5b4dccee559466101119a5492 Mon Sep 17 00:00:00 2001 From: Yeshwanth munagapati Date: Fri, 29 Aug 2025 17:06:01 +0530 Subject: [PATCH 02/11] small change --- .../frontend/channelList/views/Channel/StudioMyChannels.vue | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue index 4a1d796fc9..5c50efbe8e 100644 --- a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue +++ b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue @@ -138,8 +138,8 @@ @@ -192,7 +192,7 @@ published: false, }, isContextMenu: [], - dropDownArr: [] + dropDownArr: [], }; }, computed: { @@ -310,7 +310,6 @@ this.selectedChannel = channel; this.isContextMenu[index] = !this.isContextMenu[index]; this.dropDownArr = !this.isContextMenu[index] ? this.dropDownItems(channel) : []; - }, dropDownItems(channel) { this.selectedChannel = channel; From a261d4a5db973e0cbd8ad5232b4d4bbf19d14a9c Mon Sep 17 00:00:00 2001 From: Yeshwanth munagapati Date: Fri, 29 Aug 2025 17:27:03 +0530 Subject: [PATCH 03/11] Pushed few changes --- .../channelList/views/Channel/StudioMyChannels.vue | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue index 5c50efbe8e..45dda022c9 100644 --- a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue +++ b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue @@ -30,7 +30,7 @@ :key="channel.id" :headingLevel="2" thumbnailDisplay="small" - :thumbnailSrc="channel.thumbnail_url" + :thumbnailSrc="thumbnailSrc(channel)" :thumbnailAlign="'left'" :thumbnailScaleType="'fitXY'" :orientation="windowIsSmall ? 'vertical' : 'horizontal'" @@ -65,7 +65,7 @@
@@ -76,8 +76,8 @@ }} @@ -309,7 +309,7 @@ openDropDown(channel, index) { this.selectedChannel = channel; this.isContextMenu[index] = !this.isContextMenu[index]; - this.dropDownArr = !this.isContextMenu[index] ? this.dropDownItems(channel) : []; + this.dropDownArr = this.dropDownItems(channel) }, dropDownItems(channel) { this.selectedChannel = channel; @@ -397,6 +397,9 @@ }); } }, + thumbnailSrc(channel) { + return channel.thumbnail_encoding && channel.thumbnail_encoding.base64 ? channel.thumbnail_encoding.base64 : channel.thumbnail_url; + }, }, $trs: { channel: 'New channel', From c9a6038475a1813160a20b17fa1fa49b5ddba1ba Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Fri, 29 Aug 2025 12:04:48 +0000 Subject: [PATCH 04/11] [pre-commit.ci lite] apply automatic fixes --- .../frontend/channelList/views/Channel/StudioMyChannels.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue index 45dda022c9..85000daed8 100644 --- a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue +++ b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue @@ -309,7 +309,7 @@ openDropDown(channel, index) { this.selectedChannel = channel; this.isContextMenu[index] = !this.isContextMenu[index]; - this.dropDownArr = this.dropDownItems(channel) + this.dropDownArr = this.dropDownItems(channel); }, dropDownItems(channel) { this.selectedChannel = channel; @@ -398,7 +398,9 @@ } }, thumbnailSrc(channel) { - return channel.thumbnail_encoding && channel.thumbnail_encoding.base64 ? channel.thumbnail_encoding.base64 : channel.thumbnail_url; + return channel.thumbnail_encoding && channel.thumbnail_encoding.base64 + ? channel.thumbnail_encoding.base64 + : channel.thumbnail_url; }, }, $trs: { From 974db6e8a4bb21323d8c5cbfff177056eb0a7297 Mon Sep 17 00:00:00 2001 From: Yeshwanth munagapati Date: Fri, 29 Aug 2025 20:27:51 +0530 Subject: [PATCH 05/11] lint fixes --- .../channelList/views/Channel/StudioMyChannels.vue | 8 +++++--- .../views/Channel/__tests__/StudioMyChannels.spec.js | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue index 45dda022c9..159066851b 100644 --- a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue +++ b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue @@ -217,7 +217,6 @@ sortFields, orderFields, ); - this.isContextMenu.fill(false, 0, data.length); return data; }, isEditable() { @@ -282,6 +281,7 @@ .catch(() => { this.loading = false; }); + this.isContextMenu = new Array(this.listChannels.length).fill(false); }, hasUnpublishedChanges(channel) { @@ -309,7 +309,7 @@ openDropDown(channel, index) { this.selectedChannel = channel; this.isContextMenu[index] = !this.isContextMenu[index]; - this.dropDownArr = this.dropDownItems(channel) + this.dropDownArr = this.dropDownItems(channel); }, dropDownItems(channel) { this.selectedChannel = channel; @@ -398,7 +398,9 @@ } }, thumbnailSrc(channel) { - return channel.thumbnail_encoding && channel.thumbnail_encoding.base64 ? channel.thumbnail_encoding.base64 : channel.thumbnail_url; + return channel.thumbnail_encoding && channel.thumbnail_encoding.base64 + ? channel.thumbnail_encoding.base64 + : channel.thumbnail_url; }, }, $trs: { diff --git a/contentcuration/contentcuration/frontend/channelList/views/Channel/__tests__/StudioMyChannels.spec.js b/contentcuration/contentcuration/frontend/channelList/views/Channel/__tests__/StudioMyChannels.spec.js index e541275494..82dc093853 100644 --- a/contentcuration/contentcuration/frontend/channelList/views/Channel/__tests__/StudioMyChannels.spec.js +++ b/contentcuration/contentcuration/frontend/channelList/views/Channel/__tests__/StudioMyChannels.spec.js @@ -1,6 +1,6 @@ import { render, fireEvent, screen, within } from '@testing-library/vue'; import VueRouter from 'vue-router'; -import Vuex, { Store } from 'vuex'; +import { Store } from 'vuex'; import StudioMyChannels from '../StudioMyChannels.vue'; const mockChannels = [ @@ -98,7 +98,7 @@ describe('StudioMyChannels.vue', () => { test('renders my channels', async () => { renderComponent(store); const card0 = await screen.findByTestId('card-0'); - const cardElements = screen.queryAllByTestId((testId, element) => testId.startsWith('card-')); + const cardElements = screen.queryAllByTestId(testId => testId.startsWith('card-')); expect(await screen.findByText('New channel')).toBeInTheDocument(); expect(card0).toHaveTextContent('channel one'); @@ -132,7 +132,7 @@ describe('StudioMyChannels.vue', () => { }, }); renderComponent(store); - const cardElements = screen.queryAllByTestId((testId, element) => testId.startsWith('card-')); + const cardElements = screen.queryAllByTestId(testId => testId.startsWith('card-')); expect(cardElements.length).toBe(0); expect(screen.getByText('No channels found')).toBeInTheDocument(); }); From 903e767496b4dcac17a1d01b928d0e75039dc413 Mon Sep 17 00:00:00 2001 From: Yeshwanth munagapati Date: Sat, 30 Aug 2025 21:24:47 +0530 Subject: [PATCH 06/11] small change --- .../LC_MESSAGES/contentcuration-messages.json | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json index c12655c1fe..7a0477fd73 100644 --- a/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json @@ -248,6 +248,26 @@ "ChannelInvitation.editText": "{sender} قام بدعوتك لتحرير {channel}", "ChannelInvitation.goToChannelSnackbarAction": "التوجّه إلى القناة", "ChannelInvitation.viewText": "{sender} قام بدعوتك لعرض {channel}", + "ChannelItem.cancel": "إلغاء", + "ChannelItem.channelDeletedSnackbar": "تم حذف القناة", + "ChannelItem.channelLanguageNotSetIndicator": "لم يتم تعيين لغة", + "ChannelItem.copyToken": "نسخ الرمز التعريفي للقناة", + "ChannelItem.deleteChannel": "حذف القناة التعليمية", + "ChannelItem.deletePrompt": "سيتم حذف هذه القناة بشكل دائم. لا يمكن التراجع عن هذه الخطوة.", + "ChannelItem.deleteTitle": "حذف هذه القناة", + "ChannelItem.details": "التفاصيل", + "ChannelItem.editChannel": "تعديل تفاصيل القناة", + "ChannelItem.goToWebsite": "التوجّه إلى موقع المصدر الإلكتروني", + "ChannelItem.lastPublished": "منشور {last_published}", + "ChannelItem.lastUpdated": "{updated} تم تحديثها", + "ChannelItem.resourceCount": "{count, plural, zero {# مصادر} one {# مصادر} two {# مصدران} few {# مصادر} many {# مصدراً}\n =1 {# مصدر}\n other {# مصادر}}", + "ChannelItem.unpublishedText": "غير منشور", + "ChannelItem.versionText": "نسخة الإصدار {version}", + "ChannelItem.viewContent": "عرض القناة على كوليبري", + "ChannelList.channel": "قناة جديدة", + "ChannelList.channelFilterLabel": "القنوات التعليمية", + "ChannelList.noChannelsFound": "لم يتم العثور على أي قناة", + "ChannelList.noMatchingChannels": "لا توجد قنوات مطابقة", "StudioMyChannels.cancel": "إلغاء", "StudioMyChannels.channelDeletedSnackbar": "تم حذف القناة", "StudioMyChannels.channelLanguageNotSetIndicator": "لم يتم تعيين لغة", From cf35f0a3b4e3e13544ee570187af5a2db49b50df Mon Sep 17 00:00:00 2001 From: Yeshwanth munagapati Date: Fri, 26 Sep 2025 11:39:32 +0530 Subject: [PATCH 07/11] removed locale changes --- .../LC_MESSAGES/contentcuration-messages.json | 20 ------------------- .../LC_MESSAGES/contentcuration-messages.json | 20 ------------------- .../LC_MESSAGES/contentcuration-messages.json | 20 ------------------- .../LC_MESSAGES/contentcuration-messages.json | 20 ------------------- .../LC_MESSAGES/contentcuration-messages.json | 20 ------------------- .../LC_MESSAGES/contentcuration-messages.json | 20 ------------------- 6 files changed, 120 deletions(-) diff --git a/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json index 7a0477fd73..e658bae99d 100644 --- a/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/ar/LC_MESSAGES/contentcuration-messages.json @@ -268,26 +268,6 @@ "ChannelList.channelFilterLabel": "القنوات التعليمية", "ChannelList.noChannelsFound": "لم يتم العثور على أي قناة", "ChannelList.noMatchingChannels": "لا توجد قنوات مطابقة", - "StudioMyChannels.cancel": "إلغاء", - "StudioMyChannels.channelDeletedSnackbar": "تم حذف القناة", - "StudioMyChannels.channelLanguageNotSetIndicator": "لم يتم تعيين لغة", - "StudioMyChannels.copyToken": "نسخ الرمز التعريفي للقناة", - "StudioMyChannels.deleteChannel": "حذف القناة التعليمية", - "StudioMyChannels.deletePrompt": "سيتم حذف هذه القناة بشكل دائم. لا يمكن التراجع عن هذه الخطوة.", - "StudioMyChannels.deleteTitle": "حذف هذه القناة", - "StudioMyChannels.details": "التفاصيل", - "StudioMyChannels.editChannel": "تعديل تفاصيل القناة", - "StudioMyChannels.goToWebsite": "التوجّه إلى موقع المصدر الإلكتروني", - "StudioMyChannels.lastPublished": "منشور {last_published}", - "StudioMyChannels.lastUpdated": "{updated} تم تحديثها", - "StudioMyChannels.resourceCount": "{count, plural, zero {# مصادر} one {# مصادر} two {# مصدران} few {# مصادر} many {# مصدراً}\n =1 {# مصدر}\n other {# مصادر}}", - "StudioMyChannels.unpublishedText": "غير منشور", - "StudioMyChannels.versionText": "نسخة الإصدار {version}", - "StudioMyChannels.viewContent": "عرض القناة على كوليبري", - "StudioMyChannels.channel": "قناة جديدة", - "StudioMyChannels.channelFilterLabel": "القنوات التعليمية", - "StudioMyChannels.noChannelsFound": "لم يتم العثور على أي قناة", - "StudioMyChannels.noMatchingChannels": "لا توجد قنوات مطابقة", "ChannelListAppError.channelPermissionsErrorDetails": "سجّل الدخول أو اطلب من مالك هذه القناة أن يمنحك الإذن للتحرير أو العرض", "ChannelListIndex.catalog": "مكتبة المحتوى", "ChannelListIndex.channelSets": "المجموعات", diff --git a/contentcuration/locale/en/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/en/LC_MESSAGES/contentcuration-messages.json index bd9e1d5b29..dd5c30f547 100644 --- a/contentcuration/locale/en/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/en/LC_MESSAGES/contentcuration-messages.json @@ -268,26 +268,6 @@ "ChannelList.channelFilterLabel": "Channels", "ChannelList.noChannelsFound": "No channels found", "ChannelList.noMatchingChannels": "There are no matching channels", - "StudioMyChannels.cancel": "Cancel", - "StudioMyChannels.channelDeletedSnackbar": "Channel deleted", - "StudioMyChannels.channelLanguageNotSetIndicator": "No language set", - "StudioMyChannels.copyToken": "Copy channel token", - "StudioMyChannels.deleteChannel": "Delete channel", - "StudioMyChannels.deletePrompt": "This channel will be permanently deleted. This cannot be undone.", - "StudioMyChannels.deleteTitle": "Delete this channel", - "StudioMyChannels.details": "Details", - "StudioMyChannels.editChannel": "Edit channel details", - "StudioMyChannels.goToWebsite": "Go to source website", - "StudioMyChannels.lastPublished": "Published {last_published}", - "StudioMyChannels.lastUpdated": "Updated {updated}", - "StudioMyChannels.resourceCount": "{count, plural,\n =1 {# resource}\n other {# resources}}", - "StudioMyChannels.unpublishedText": "Unpublished", - "StudioMyChannels.versionText": "Version {version}", - "StudioMyChannels.viewContent": "View channel on Kolibri", - "StudioMyChannels.channel": "New channel", - "StudioMyChannels.channelFilterLabel": "Channels", - "StudioMyChannels.noChannelsFound": "No channels found", - "StudioMyChannels.noMatchingChannels": "There are no matching channels", "ChannelListAppError.channelPermissionsErrorDetails": "Sign in or ask the owner of this channel to give you permission to edit or view", "ChannelListIndex.catalog": "Content Library", "ChannelListIndex.channelSets": "Collections", diff --git a/contentcuration/locale/es_ES/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/es_ES/LC_MESSAGES/contentcuration-messages.json index ba7232ac67..1ea57159c4 100644 --- a/contentcuration/locale/es_ES/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/es_ES/LC_MESSAGES/contentcuration-messages.json @@ -268,26 +268,6 @@ "ChannelList.channelFilterLabel": "Canales", "ChannelList.noChannelsFound": "No se han encontrado canales", "ChannelList.noMatchingChannels": "No hay canales que coincidan", - "StudioMyChannels.cancel": "Cancelar", - "StudioMyChannels.channelDeletedSnackbar": "Canal eliminado", - "StudioMyChannels.channelLanguageNotSetIndicator": "Idioma no establecido", - "StudioMyChannels.copyToken": "Copiar el token del canal", - "StudioMyChannels.deleteChannel": "Eliminar canal", - "StudioMyChannels.deletePrompt": "Este canal se eliminará permanentemente. Esto no se puede deshacer.", - "StudioMyChannels.deleteTitle": "Eliminar este canal", - "StudioMyChannels.details": "Detalles", - "StudioMyChannels.editChannel": "Editar detalles del canal", - "StudioMyChannels.goToWebsite": "Ir a la página web de origen", - "StudioMyChannels.lastPublished": "Publicado {last_published}", - "StudioMyChannels.lastUpdated": "Actualizado {updated}", - "StudioMyChannels.resourceCount": "{count, plural,\n =1 {# recurso}\n other {# recursos}}", - "StudioMyChannels.unpublishedText": "No publicado", - "StudioMyChannels.versionText": "Versión {version}", - "StudioMyChannels.viewContent": "Ver canal en Kolibri", - "StudioMyChannels.channel": "Nuevo canal", - "StudioMyChannels.channelFilterLabel": "Canales", - "StudioMyChannels.noChannelsFound": "No se han encontrado canales", - "StudioMyChannels.noMatchingChannels": "No hay canales que coincidan", "ChannelListAppError.channelPermissionsErrorDetails": "Inicie sesión o pida al propietario de este canal que le dé permiso para editar o ver", "ChannelListIndex.catalog": "Biblioteca de contenido", "ChannelListIndex.channelSets": "Colecciones", diff --git a/contentcuration/locale/fr_FR/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/fr_FR/LC_MESSAGES/contentcuration-messages.json index 71622aa9e6..16fef0aa81 100644 --- a/contentcuration/locale/fr_FR/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/fr_FR/LC_MESSAGES/contentcuration-messages.json @@ -268,26 +268,6 @@ "ChannelList.channelFilterLabel": "Chaînes", "ChannelList.noChannelsFound": "Aucune chaîne trouvée", "ChannelList.noMatchingChannels": "Aucune chaîne correspondante", - "StudioMyChannels.cancel": "Annuler", - "StudioMyChannels.channelDeletedSnackbar": "Chaîne supprimée", - "StudioMyChannels.channelLanguageNotSetIndicator": "Aucune langue définie", - "StudioMyChannels.copyToken": "Copier le jeton de la chaîne", - "StudioMyChannels.deleteChannel": "Supprimer la chaîne", - "StudioMyChannels.deletePrompt": "Cette chaîne sera définitivement supprimée. Cette action est irréversible.", - "StudioMyChannels.deleteTitle": "Supprimer cette chaîne", - "StudioMyChannels.details": "Détails", - "StudioMyChannels.editChannel": "Modifier les détails de la chaîne", - "StudioMyChannels.goToWebsite": "Aller sur le site web source", - "StudioMyChannels.lastPublished": "Publié le {last_published}", - "StudioMyChannels.lastUpdated": "Mis à jour {updated}", - "StudioMyChannels.resourceCount": "{count, plural, one {}\n =1 {# ressource}\n other {# ressources}}", - "StudioMyChannels.unpublishedText": "Non publié", - "StudioMyChannels.versionText": "Version {version}", - "StudioMyChannels.viewContent": "Afficher la chaîne sur Kolibri", - "StudioMyChannels.channel": "Nouvelle chaîne", - "StudioMyChannels.channelFilterLabel": "Chaînes", - "StudioMyChannels.noChannelsFound": "Aucune chaîne trouvée", - "StudioMyChannels.noMatchingChannels": "Aucune chaîne correspondante", "ChannelListAppError.channelPermissionsErrorDetails": "Connectez-vous ou demandez au propriétaire de cette chaîne de vous donner l'autorité de la modifier ou de la visualiser", "ChannelListIndex.catalog": "Bibliothèque de contenus", "ChannelListIndex.channelSets": "Recueils", diff --git a/contentcuration/locale/hi_IN/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/hi_IN/LC_MESSAGES/contentcuration-messages.json index 3b13ce8447..100e64a758 100644 --- a/contentcuration/locale/hi_IN/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/hi_IN/LC_MESSAGES/contentcuration-messages.json @@ -268,26 +268,6 @@ "ChannelList.channelFilterLabel": "चैनल", "ChannelList.noChannelsFound": "No channels found", "ChannelList.noMatchingChannels": "There are no matching channels", - "StudioMyChannels.cancel": "रद्द करें", - "StudioMyChannels.channelDeletedSnackbar": "Channel deleted", - "StudioMyChannels.channelLanguageNotSetIndicator": "No language set", - "StudioMyChannels.copyToken": "Copy channel token", - "StudioMyChannels.deleteChannel": "चैनल हटाएँ", - "StudioMyChannels.deletePrompt": "This channel will be permanently deleted. This cannot be undone.", - "StudioMyChannels.deleteTitle": "Delete this channel", - "StudioMyChannels.details": "विवरण", - "StudioMyChannels.editChannel": "Edit channel details", - "StudioMyChannels.goToWebsite": "Go to source website", - "StudioMyChannels.lastPublished": "Published {last_published}", - "StudioMyChannels.lastUpdated": "Updated {updated}", - "StudioMyChannels.resourceCount": "{count, plural,\n =1 {# resource}\n other {# resources}}", - "StudioMyChannels.unpublishedText": "Unpublished", - "StudioMyChannels.versionText": "संस्करण {version}", - "StudioMyChannels.viewContent": "View channel on Kolibri", - "StudioMyChannels.channel": "New channel", - "StudioMyChannels.channelFilterLabel": "चैनल", - "StudioMyChannels.noChannelsFound": "No channels found", - "StudioMyChannels.noMatchingChannels": "There are no matching channels", "ChannelListAppError.channelPermissionsErrorDetails": "Sign in or ask the owner of this channel to give you permission to edit or view", "ChannelListIndex.catalog": "Content Library", "ChannelListIndex.channelSets": "Collections", diff --git a/contentcuration/locale/pt_BR/LC_MESSAGES/contentcuration-messages.json b/contentcuration/locale/pt_BR/LC_MESSAGES/contentcuration-messages.json index d73ff05c96..50baf6d87c 100644 --- a/contentcuration/locale/pt_BR/LC_MESSAGES/contentcuration-messages.json +++ b/contentcuration/locale/pt_BR/LC_MESSAGES/contentcuration-messages.json @@ -268,26 +268,6 @@ "ChannelList.channelFilterLabel": "Canais", "ChannelList.noChannelsFound": "Nenhum canal encontrado", "ChannelList.noMatchingChannels": "Não há canais correspondentes", - "StudioMyChannels.cancel": "Cancelar", - "StudioMyChannels.channelDeletedSnackbar": "Canal excluído", - "StudioMyChannels.channelLanguageNotSetIndicator": "Nenhum idioma definido", - "StudioMyChannels.copyToken": "Copiar token do canal", - "StudioMyChannels.deleteChannel": "Excluir canal", - "StudioMyChannels.deletePrompt": "Este canal será excluído permanentemente. Esta ação não pode ser desfeita.", - "StudioMyChannels.deleteTitle": "Excluir este canal", - "StudioMyChannels.details": "Detalhes", - "StudioMyChannels.editChannel": "Editar detalhes do canal", - "StudioMyChannels.goToWebsite": "Ir para o website de origem", - "StudioMyChannels.lastPublished": "Publicado em {last_published}", - "StudioMyChannels.lastUpdated": "Atualizado {updated}", - "StudioMyChannels.resourceCount": "{count, plural, one {}\n =1 {# conteúdo}\n other {# conteúdos}}", - "StudioMyChannels.unpublishedText": "Não publicado", - "StudioMyChannels.versionText": "Versão {version}", - "StudioMyChannels.viewContent": "Visualizar canal no Kolibri", - "StudioMyChannels.channel": "Novo canal", - "StudioMyChannels.channelFilterLabel": "Canais", - "StudioMyChannels.noChannelsFound": "Nenhum canal encontrado", - "StudioMyChannels.noMatchingChannels": "Não há canais correspondentes", "ChannelListAppError.channelPermissionsErrorDetails": "Faça o login ou peça ao proprietário deste canal que te dê permissão para editar ou visualizar", "ChannelListIndex.catalog": "Biblioteca de conteúdo", "ChannelListIndex.channelSets": "Conjuntos", From 476e7e00426653fb3278460dd66183d920404163 Mon Sep 17 00:00:00 2001 From: Yeshwanth munagapati Date: Fri, 26 Sep 2025 12:04:12 +0530 Subject: [PATCH 08/11] removed RTL changes --- .../channelList/views/Channel/StudioMyChannels.vue | 9 --------- 1 file changed, 9 deletions(-) diff --git a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue index 159066851b..cd58d7c6cb 100644 --- a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue +++ b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue @@ -500,10 +500,6 @@ div { margin-left: 8px; } - - [dir='rtl'] & div { - margin-right: 8px; - } } } @@ -519,11 +515,6 @@ border: 0; } - [dir='rtl'] & { - ::v-deep .k-thumbnail { - margin-right: 16px; - } - } } } From 842d979fc1b143f05992cf32a0f195ee35d3f357 Mon Sep 17 00:00:00 2001 From: Yeshwanth munagapati Date: Fri, 26 Sep 2025 12:17:06 +0530 Subject: [PATCH 09/11] updated to colors to KDS theme colors --- .../views/Channel/StudioMyChannels.vue | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue index cd58d7c6cb..70fda99df1 100644 --- a/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue +++ b/contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels.vue @@ -47,22 +47,26 @@ {{ language(channel) }}
-
{{ channel.description }}
+
+ {{ channel.description }} +