diff --git a/Projects/Superalgos/Schemas/Docs-Topics/docs-languages-004-docs-in-italian.json b/Projects/Superalgos/Schemas/Docs-Topics/docs-languages-004-docs-in-italian.json new file mode 100644 index 000000000..b6d77bcf3 --- /dev/null +++ b/Projects/Superalgos/Schemas/Docs-Topics/docs-languages-004-docs-in-italian.json @@ -0,0 +1,27 @@ +{ + "topic": "Docs Languages", + "pageNumber": "4", + "type": "Docs In Italian", + "definition": { + "text": "The Docs articles are fully written in English. The system allow users to search / browse articles in other languages as well, as long as other users contribute translations." + }, + "paragraphs": [ + { + "style": "Text", + "text": "Superalgos and any other integrated project are written in English, since English is considered the default language. Node types, variable names, etc., all is originally in English language. " + }, + { + "style": "Text", + "text": "The Docs content can be translated by anyone willing to contribute some time doing so. That helps users to read the contents of the Docs in their native language. " + }, + { + "style": "Success", + "text": " Users can switch between languages using the links provided at the footer of every page at the Docs. ", + "updated": 1609085068937 + }, + { + "style": "Note", + "text": "You can only add or delete pages to the Docs if you are navigating it in English, because English is the default language, and from there pages are later translated. " + } + ] +} \ No newline at end of file diff --git a/Projects/Superalgos/UI/Spaces/Docs-Space/Footer.js b/Projects/Superalgos/UI/Spaces/Docs-Space/Footer.js index 812c3d5f5..5019ac25a 100644 --- a/Projects/Superalgos/UI/Spaces/Docs-Space/Footer.js +++ b/Projects/Superalgos/UI/Spaces/Docs-Space/Footer.js @@ -58,6 +58,7 @@ function newSuperalgosDocsFooter() { HTML = HTML + '
  • English
  • ' HTML = HTML + '
  • Spanish
  • ' HTML = HTML + '
  • Russian
  • ' + HTML = HTML + '
  • Italian
  • ' HTML = HTML + '' HTML = HTML + '' diff --git a/Projects/Superalgos/UI/Spaces/Floating-Space/ConfigEditor.js b/Projects/Superalgos/UI/Spaces/Floating-Space/ConfigEditor.js index bc7c8280b..562cfb1c3 100644 --- a/Projects/Superalgos/UI/Spaces/Floating-Space/ConfigEditor.js +++ b/Projects/Superalgos/UI/Spaces/Floating-Space/ConfigEditor.js @@ -73,7 +73,12 @@ function newConfigEditor() { thisObject.payload.uiObject.uiObjectTitle.exitEditMode() let textArea = document.getElementById('textArea') - textArea.value = JSON.stringify(JSON.parse(thisObject.payload.node.config), undefined, 4) + try { + textArea.value = JSON.stringify(JSON.parse(thisObject.payload.node.config), undefined, 4) + } catch(err) { + textArea.value = thisObject.payload.node.config + } + textArea.style = 'resize: none;' + ' border: none;' + ' outline: none;' + diff --git a/Projects/Superalgos/UI/Spaces/Tutorial-Space/TutorialSpace.js b/Projects/Superalgos/UI/Spaces/Tutorial-Space/TutorialSpace.js index 86a486c5d..cf4b88bd2 100644 --- a/Projects/Superalgos/UI/Spaces/Tutorial-Space/TutorialSpace.js +++ b/Projects/Superalgos/UI/Spaces/Tutorial-Space/TutorialSpace.js @@ -288,7 +288,7 @@ function newSuperalgosTutorialSpace() { config.controlDocs.page !== undefined && config.controlDocs.page.project !== undefined && config.controlDocs.page.category !== undefined && - config.controlDocs.page.type !== undefined && + config.controlDocs.page.type !== undefined && config.controlDocs.page.project !== '' && config.controlDocs.page.category !== '' && config.controlDocs.page.type !== '' @@ -680,7 +680,7 @@ function newSuperalgosTutorialSpace() { } catch (err) { return } - let position = nodeConfig.position + let position = nodeConfig.position if (UI.projects.superalgos.spaces.docsSpace.isVisible === true) { position = 'Left' } @@ -1135,12 +1135,12 @@ function newSuperalgosTutorialSpace() { function buildHTML() { let nodeConfig = JSON.parse(currentNode.config) - if (nodeConfig.docs === undefined) { + if (nodeConfig.docs === undefined) { /* The current node is not referencing any page at the Docs */ - return + return } - let schemaDocument = SCHEMAS_BY_PROJECT.get(project).map.docsTutorialSchema.get(nodeConfig.docs.type) + let schemaDocument = SCHEMAS_BY_PROJECT.get(project).map.docsTutorialSchema.get(nodeConfig.docs.type) newConfig = currentNode.config newDocument = JSON.stringify(schemaDocument) + ' - ' + UI.projects.superalgos.spaces.docsSpace.language @@ -1151,11 +1151,50 @@ function newSuperalgosTutorialSpace() { let title + syncConfigIconWithDocumentIcon() transformDocsInfoIntoTutorialInfo() createTheHTML() UI.projects.superalgos.spaces.docsSpace.navigateTo(nodeConfig.docs.project, 'Tutorial', nodeConfig.docs.type) + function syncConfigIconWithDocumentIcon() { + /* + We update here the image of the document with whatever we find at the config, since + we need to mechanism to keep this syncronized. + */ + if (nodeConfig.icon === undefined) { + nodeConfig.icon = { + name: nodeConfig.image, // This property comes from the migration + project: 'Superalgos' + } + + nodeConfig.image = undefined // Removing this legacy property. + currentNode.config = JSON.stringify(nodeConfig) + } + if (nodeConfig.icon.name !== undefined) { + if (schemaDocument.definition.icon !== undefined) { + if (nodeConfig.icon.name + '-' + nodeConfig.icon.project !== schemaDocument.definition.icon.name + '-' + schemaDocument.definition.icon.project) { + schemaDocument.definition.icon = { + name: nodeConfig.icon.name, + project: nodeConfig.icon.project + } + schemaDocument.updated = true + } + } else { + schemaDocument.definition.icon = { + name: nodeConfig.icon.name, + project: nodeConfig.icon.project + } + schemaDocument.updated = true + } + } else { + if (schemaDocument.definition.icon !== undefined) { + schemaDocument.definition.icon = undefined + schemaDocument.updated = true + } + } + } + function transformDocsInfoIntoTutorialInfo() { if (schemaDocument === undefined) { title = "Configuration Error" @@ -1201,7 +1240,7 @@ function newSuperalgosTutorialSpace() { if (fullscreenMode === false) { if (schemaDocument.definition.icon === undefined || schemaDocument.definition.icon.name === '') { /* When there is no image, we will render a Summary instead of a Table */ - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(schemaDocument.definition) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(schemaDocument.definition) text = UI.projects.superalgos.utilities.docs.addKeyboard(text) text = UI.projects.superalgos.utilities.docs.addCodeToCamelCase(text) text = UI.projects.superalgos.utilities.docs.addCodeToWhiteList(text) @@ -1219,7 +1258,7 @@ function newSuperalgosTutorialSpace() { html = html + '' html = html + '' - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(schemaDocument.definition) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(schemaDocument.definition) text = UI.projects.superalgos.utilities.docs.addKeyboard(text) text = UI.projects.superalgos.utilities.docs.addCodeToCamelCase(text) text = UI.projects.superalgos.utilities.docs.addCodeToWhiteList(text) @@ -1237,7 +1276,7 @@ function newSuperalgosTutorialSpace() { let paragraph = schemaDocument.paragraphs[i] switch (paragraph.style) { case 'Summary': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) text = UI.projects.superalgos.utilities.docs.addKeyboard(text) text = UI.projects.superalgos.utilities.docs.addCodeToCamelCase(text) text = UI.projects.superalgos.utilities.docs.addCodeToWhiteList(text) @@ -1246,18 +1285,18 @@ function newSuperalgosTutorialSpace() { break } case 'Title': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) html = html + '

    ' + text + '

    ' break } case 'Gif': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) html = html + '
    ' newGifName = text break } case 'Text': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) text = UI.projects.superalgos.utilities.docs.addKeyboard(text) text = UI.projects.superalgos.utilities.docs.addCodeToCamelCase(text) text = UI.projects.superalgos.utilities.docs.addCodeToWhiteList(text) @@ -1266,17 +1305,17 @@ function newSuperalgosTutorialSpace() { break } case 'Json': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) html = html + '
    ' + text + '
    ' break } case 'Javascript': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) html = html + '
    ' + text + '
    ' break } case 'List': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) text = UI.projects.superalgos.utilities.docs.addKeyboard(text) text = UI.projects.superalgos.utilities.docs.addCodeToCamelCase(text) text = UI.projects.superalgos.utilities.docs.addCodeToWhiteList(text) @@ -1286,7 +1325,7 @@ function newSuperalgosTutorialSpace() { break } case 'Callout': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) text = UI.projects.superalgos.utilities.docs.addKeyboard(text) text = UI.projects.superalgos.utilities.docs.addCodeToCamelCase(text) text = UI.projects.superalgos.utilities.docs.addCodeToWhiteList(text) @@ -1295,13 +1334,13 @@ function newSuperalgosTutorialSpace() { break } case 'Link': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) let splittedText = text.split('->') html = html + '' + splittedText[0] + '' break } case 'Note': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) text = UI.projects.superalgos.utilities.docs.addKeyboard(text) text = UI.projects.superalgos.utilities.docs.addCodeToCamelCase(text) text = UI.projects.superalgos.utilities.docs.addCodeToWhiteList(text) @@ -1310,7 +1349,7 @@ function newSuperalgosTutorialSpace() { break } case 'Success': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) text = UI.projects.superalgos.utilities.docs.addKeyboard(text) text = UI.projects.superalgos.utilities.docs.addCodeToCamelCase(text) text = UI.projects.superalgos.utilities.docs.addCodeToWhiteList(text) @@ -1319,7 +1358,7 @@ function newSuperalgosTutorialSpace() { break } case 'Important': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) text = UI.projects.superalgos.utilities.docs.addKeyboard(text) text = UI.projects.superalgos.utilities.docs.addCodeToCamelCase(text) text = UI.projects.superalgos.utilities.docs.addCodeToWhiteList(text) @@ -1328,7 +1367,7 @@ function newSuperalgosTutorialSpace() { break } case 'Warning': { - let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) + let text = UI.projects.superalgos.utilities.docs.getTextBasedOnLanguage(paragraph) text = UI.projects.superalgos.utilities.docs.addKeyboard(text) text = UI.projects.superalgos.utilities.docs.addCodeToCamelCase(text) text = UI.projects.superalgos.utilities.docs.addCodeToWhiteList(text) diff --git a/Projects/Superalgos/UI/Utilities/Docs.js b/Projects/Superalgos/UI/Utilities/Docs.js index eeac1b80b..7d434ded7 100644 --- a/Projects/Superalgos/UI/Utilities/Docs.js +++ b/Projects/Superalgos/UI/Utilities/Docs.js @@ -601,13 +601,18 @@ function newSuperalgosUtilitiesDocs() { const MAX_NUMBER_OF_WORDS = 10 text = text.trim() let cleanText = text.replace(/'/g, ' AMPERSAND ') // scaping ampersands, separating them from other words - .replaceAll('<', ' < ') - .replaceAll('>', ' > ') - .replaceAll(':', ' : ') - .replaceAll(',', ' , ') - .replaceAll('.', ' . ') - .replaceAll('!', ' ! ') - let words = cleanText.split(' ') + .replaceAll(':', ' :') + .replaceAll(',', ' ,') + .replaceAll('.', ' .') + .replaceAll('!', ' !') + let allWords = cleanText.split(' ') + let words = [] + for (let i = 0; i < allWords.length; i++) { + let word = allWords[i] + if (word !== "") { + words.push(word) + } + } let taggedText = '' for (let i = 0; i < words.length; i++) { @@ -617,7 +622,7 @@ function newSuperalgosUtilitiesDocs() { for (let j = 0; j < MAX_NUMBER_OF_WORDS; j++) { let word = words[i + j] - if (word === "" ) { word = " "} + if (word === "") { word = " " } if (word !== undefined) { if (phrase === '') { phrase = word @@ -666,12 +671,10 @@ function newSuperalgosUtilitiesDocs() { } } taggedText = taggedText.replaceAll(' AMPERSAND ', '\'') - .replaceAll(' < ', '<') - .replaceAll(' > ', '>') - .replaceAll(' : ', ':') - .replaceAll(' . ', '.') - .replaceAll(' , ', ',') - .replaceAll(' ! ', '!') + .replaceAll(' :', ':') + .replaceAll(' .', '.') + .replaceAll(' ,', ',') + .replaceAll(' !', '!') .replaceAll(' ', ' ') return taggedText } diff --git a/Projects/Superalgos/UI/Utilities/Languages.js b/Projects/Superalgos/UI/Utilities/Languages.js index c8c03590a..848a263f3 100644 --- a/Projects/Superalgos/UI/Utilities/Languages.js +++ b/Projects/Superalgos/UI/Utilities/Languages.js @@ -20,6 +20,10 @@ function newSuperalgosUtilitiesLanguages() { languageLabel = 'Russian' break } + case 'IT': { + languageLabel = 'Italian' + break + } } return languageLabel }