diff --git a/qortal-ui-core/language/cn.json b/qortal-ui-core/language/cn.json index d907364b..dfbef2fa 100644 --- a/qortal-ui-core/language/cn.json +++ b/qortal-ui-core/language/cn.json @@ -320,5 +320,32 @@ "schange33": "Name to search", "schange34": "Name can not be empty!", "schange35": "Search" + }, + "publishpage": { + "pchange1": "Publish", + "pchange2": "Update", + "pchange3": "Note: it is recommended that you set up port forwarding before hosting data, so that it can more easily accessed by peers on the network.", + "pchange4": "Select Name", + "pchange5": "Title", + "pchange6": "Description", + "pchange7": "Select Category", + "pchange8": "Tag", + "pchange9": "Service", + "pchange10": "Identifier", + "pchange11": "Publish", + "pchange12": "Select zip file containing static content", + "pchange13": "Local path to static files", + "pchange14": "Please select a registered name to publish data for", + "pchange15": "Please select a file to host", + "pchange16": "Please select a zip file to host", + "pchange17": "Please enter the directory path containing the static content", + "pchange18": "Please enter a service name", + "pchange19": "Processing data... this can take some time...", + "pchange20": "Error:", + "pchange21": "Internal Server Error when publishing data", + "pchange22": "Computing proof of work... this can take some time...", + "pchange23": "Transaction successful!", + "pchange24": "Unable to sign and process transaction", + "pchange25": "Choose File" } } \ No newline at end of file diff --git a/qortal-ui-core/language/de.json b/qortal-ui-core/language/de.json index 2963f779..2385d301 100644 --- a/qortal-ui-core/language/de.json +++ b/qortal-ui-core/language/de.json @@ -320,5 +320,32 @@ "schange33": "Name zu suchen", "schange34": "Name darf nicht leer sein!", "schange35": "Suchen" + }, + "publishpage": { + "pchange1": "Veröffentlichen", + "pchange2": "Aktualisieren", + "pchange3": "Hinweis: Es wird empfohlen, dass Sie die Portweiterleitung einrichten, bevor Sie Daten hosten, damit Peers im Netzwerk leichter darauf zugreifen können.", + "pchange4": "Namen wählen", + "pchange5": "Titel", + "pchange6": "Beschreibung", + "pchange7": "Kategorie wählen", + "pchange8": "Stichwort", + "pchange9": "Service", + "pchange10": "Kennung", + "pchange11": "Veröffentlichen", + "pchange12": "Wählen Sie eine ZIP-Datei mit statischem Inhalt aus", + "pchange13": "Lokaler Pfad zu statischen Dateien", + "pchange14": "Bitte wählen Sie einen registrierten Namen aus, für den die Daten veröffentlicht werden sollen", + "pchange15": "Bitte wählen Sie eine zu hostende Datei aus", + "pchange16": "Bitte wählen Sie eine ZIP-Datei zum Hosten aus", + "pchange17": "Bitte geben Sie den Verzeichnispfad ein, der den statischen Inhalt enthält", + "pchange18": "Bitte geben Sie einen Dienstnamen ein", + "pchange19": "Daten werden verarbeitet ... dies kann einige Zeit dauern ...", + "pchange20": "Fehler:", + "pchange21": "Interner Serverfehler beim Veröffentlichen von Daten", + "pchange22": "Berechnung des Arbeitsnachweises ... dies kann einige Zeit dauern ...", + "pchange23": "Transaktion Erfolgreich!", + "pchange24": "Transaktion kann nicht signiert und verarbeitet werden", + "pchange25": "Datei wählen" } } \ No newline at end of file diff --git a/qortal-ui-core/language/fr.json b/qortal-ui-core/language/fr.json index 979654c2..fba1f0b1 100644 --- a/qortal-ui-core/language/fr.json +++ b/qortal-ui-core/language/fr.json @@ -320,5 +320,32 @@ "schange33": "Name to search", "schange34": "Name can not be empty!", "schange35": "Search" + }, + "publishpage": { + "pchange1": "Publish", + "pchange2": "Update", + "pchange3": "Note: it is recommended that you set up port forwarding before hosting data, so that it can more easily accessed by peers on the network.", + "pchange4": "Select Name", + "pchange5": "Title", + "pchange6": "Description", + "pchange7": "Select Category", + "pchange8": "Tag", + "pchange9": "Service", + "pchange10": "Identifier", + "pchange11": "Publish", + "pchange12": "Select zip file containing static content", + "pchange13": "Local path to static files", + "pchange14": "Please select a registered name to publish data for", + "pchange15": "Please select a file to host", + "pchange16": "Please select a zip file to host", + "pchange17": "Please enter the directory path containing the static content", + "pchange18": "Please enter a service name", + "pchange19": "Processing data... this can take some time...", + "pchange20": "Error:", + "pchange21": "Internal Server Error when publishing data", + "pchange22": "Computing proof of work... this can take some time...", + "pchange23": "Transaction successful!", + "pchange24": "Unable to sign and process transaction", + "pchange25": "Choose File" } } \ No newline at end of file diff --git a/qortal-ui-core/language/pl.json b/qortal-ui-core/language/pl.json index 9225c23b..762fa98e 100644 --- a/qortal-ui-core/language/pl.json +++ b/qortal-ui-core/language/pl.json @@ -320,5 +320,32 @@ "schange32": "Unblock", "schange33": "Name to search", "schange35": "Search" + }, + "publishpage": { + "pchange1": "Publish", + "pchange2": "Update", + "pchange3": "Note: it is recommended that you set up port forwarding before hosting data, so that it can more easily accessed by peers on the network.", + "pchange4": "Select Name", + "pchange5": "Title", + "pchange6": "Description", + "pchange7": "Select Category", + "pchange8": "Tag", + "pchange9": "Service", + "pchange10": "Identifier", + "pchange11": "Publish", + "pchange12": "Select zip file containing static content", + "pchange13": "Local path to static files", + "pchange14": "Please select a registered name to publish data for", + "pchange15": "Please select a file to host", + "pchange16": "Please select a zip file to host", + "pchange17": "Please enter the directory path containing the static content", + "pchange18": "Please enter a service name", + "pchange19": "Processing data... this can take some time...", + "pchange20": "Error:", + "pchange21": "Internal Server Error when publishing data", + "pchange22": "Computing proof of work... this can take some time...", + "pchange23": "Transaction successful!", + "pchange24": "Unable to sign and process transaction", + "pchange25": "Choose File" } } diff --git a/qortal-ui-core/language/sp.json b/qortal-ui-core/language/sp.json index e1b1e07e..05939240 100644 --- a/qortal-ui-core/language/sp.json +++ b/qortal-ui-core/language/sp.json @@ -320,5 +320,32 @@ "schange33": "Name to search", "schange34": "Name can not be empty!", "schange35": "Search" + }, + "publishpage": { + "pchange1": "Publish", + "pchange2": "Update", + "pchange3": "Note: it is recommended that you set up port forwarding before hosting data, so that it can more easily accessed by peers on the network.", + "pchange4": "Select Name", + "pchange5": "Title", + "pchange6": "Description", + "pchange7": "Select Category", + "pchange8": "Tag", + "pchange9": "Service", + "pchange10": "Identifier", + "pchange11": "Publish", + "pchange12": "Select zip file containing static content", + "pchange13": "Local path to static files", + "pchange14": "Please select a registered name to publish data for", + "pchange15": "Please select a file to host", + "pchange16": "Please select a zip file to host", + "pchange17": "Please enter the directory path containing the static content", + "pchange18": "Please enter a service name", + "pchange19": "Processing data... this can take some time...", + "pchange20": "Error:", + "pchange21": "Internal Server Error when publishing data", + "pchange22": "Computing proof of work... this can take some time...", + "pchange23": "Transaction successful!", + "pchange24": "Unable to sign and process transaction", + "pchange25": "Choose File" } } \ No newline at end of file diff --git a/qortal-ui-core/language/us.json b/qortal-ui-core/language/us.json index cbb98950..b354076b 100644 --- a/qortal-ui-core/language/us.json +++ b/qortal-ui-core/language/us.json @@ -320,5 +320,32 @@ "schange33": "Name to search", "schange34": "Name can not be empty!", "schange35": "Search" + }, + "publishpage": { + "pchange1": "Publish", + "pchange2": "Update", + "pchange3": "Note: it is recommended that you set up port forwarding before hosting data, so that it can more easily accessed by peers on the network.", + "pchange4": "Select Name", + "pchange5": "Title", + "pchange6": "Description", + "pchange7": "Select Category", + "pchange8": "Tag", + "pchange9": "Service", + "pchange10": "Identifier", + "pchange11": "Publish", + "pchange12": "Select zip file containing static content", + "pchange13": "Local path to static files", + "pchange14": "Please select a registered name to publish data for", + "pchange15": "Please select a file to host", + "pchange16": "Please select a zip file to host", + "pchange17": "Please enter the directory path containing the static content", + "pchange18": "Please enter a service name", + "pchange19": "Processing data... this can take some time...", + "pchange20": "Error:", + "pchange21": "Internal Server Error when publishing data", + "pchange22": "Computing proof of work... this can take some time...", + "pchange23": "Transaction successful!", + "pchange24": "Unable to sign and process transaction", + "pchange25": "Choose File" } } \ No newline at end of file diff --git a/qortal-ui-plugins/plugins/core/qdn/publish/publish.src.js b/qortal-ui-plugins/plugins/core/qdn/publish/publish.src.js index c17b8cfe..08f1b398 100644 --- a/qortal-ui-plugins/plugins/core/qdn/publish/publish.src.js +++ b/qortal-ui-plugins/plugins/core/qdn/publish/publish.src.js @@ -1,6 +1,11 @@ import { LitElement, html, css } from 'lit' import { render } from 'lit/html.js' import { Epml } from '../../../../epml' +import { use, get, translate, translateUnsafeHTML, registerTranslateConfig } from 'lit-translate' + +registerTranslateConfig({ + loader: lang => fetch(`/language/${lang}.json`).then(res => res.json()) +}) import '@material/mwc-button' import '@material/mwc-textfield' @@ -63,6 +68,27 @@ class PublishData extends LitElement { --_lumo-grid-secondary-border-color: var(--border2); } + + input[type=text] { + padding: 6px 6px 6px 6px; + color: var(--black); + } + + input[type=file]::file-selector-button { + border: 1px solid transparent; + padding: 6px 6px 6px 6px; + border-radius: 5px; + color: #fff; + background-color: var(--mdc-theme-primary); + transition: 1s; + } + + input[type=file]::file-selector-button:hover { + color: #000; + background-color: #81ecec; + border: 1px solid transparent; + } + #publishWrapper paper-button { float: right; } @@ -214,57 +240,57 @@ class PublishData extends LitElement {
- this.goBack()} class="address-bar-button">arrow_back_ios Back + this.goBack()} class="address-bar-button">arrow_back_ios ${translate("general.back")}
-

Publish / Update ${this.category}

-

Note: it is recommended that you set up port forwarding before hosting data, so that it can more easily accessed by peers on the network.

+

${translate("publishpage.pchange1")} / ${translate("publishpage.pchange2")} ${this.category}

+

${translate("publishpage.pchange3")}

- this.selectName(e)} style="min-width: 130px; max-width:100%; width:100%;"> + this.selectName(e)} style="min-width: 130px; max-width:100%; width:100%;"> ${this.myRegisteredName}

- +

- +

- + ${this.categories.map((c, index) => html` ${c.name} `)}

- - - - - + + + + +

${this.renderUploadField()}

- +

- +

${this.generalMessage}

${this.errorMessage}

-

${this.successMessage}

+

${this.successMessage}

${this.loading ? html` ` : ''}
- this.doPublish(e)}>Publish   + this.doPublish(e)}> ${translate("publishpage.pchange11")}
@@ -275,10 +301,7 @@ class PublishData extends LitElement { firstUpdated() { this.changeTheme() - - setInterval(() => { - this.changeTheme(); - }, 100) + this.changeLanguage() window.addEventListener('contextmenu', (event) => { event.preventDefault() @@ -289,6 +312,20 @@ class PublishData extends LitElement { parentEpml.request('closeCopyTextMenu', null) }) + window.addEventListener('storage', () => { + const checkLanguage = localStorage.getItem('qortalLanguage') + const checkTheme = localStorage.getItem('qortalTheme') + + use(checkLanguage) + + if (checkTheme === 'dark') { + this.theme = 'dark' + } else { + this.theme = 'light' + } + document.querySelector('html').setAttribute('theme', this.theme) + }) + window.onkeyup = (e) => { if (e.keyCode === 27) { parentEpml.request('closeCopyTextMenu', null) @@ -306,6 +343,17 @@ class PublishData extends LitElement { document.querySelector('html').setAttribute('theme', this.theme); } + changeLanguage() { + const checkLanguage = localStorage.getItem('qortalLanguage') + + if (checkLanguage === null || checkLanguage.length === 0) { + localStorage.setItem('qortalLanguage', 'us') + use('us') + } else { + use(checkLanguage) + } + } + // Navigation goBack() { window.history.back(); @@ -323,15 +371,15 @@ class PublishData extends LitElement { else if (this.uploadType === "zip") { return html`

- Select zip file containing static content:
- + ${translate("publishpage.pchange12")}:
+

` } else { return html`

- +

` } @@ -364,19 +412,24 @@ class PublishData extends LitElement { if (registeredName === '') { this.showName = true - parentEpml.request('showSnackBar', 'Please select a registered name to publish data for') + let err1string = get("publishpage.pchange14") + parentEpml.request('showSnackBar', `${err1string}`) } else if (this.uploadType === "file" && file == null) { - parentEpml.request('showSnackBar', 'Please select a file to host') + let err2string = get("publishpage.pchange15") + parentEpml.request('showSnackBar', `${err2string}`) } else if (this.uploadType === "zip" && file == null) { - parentEpml.request('showSnackBar', 'Please select a zip file to host') + let err3string = get("publishpage.pchange16") + parentEpml.request('showSnackBar', `${err3string}`) } else if (this.uploadType === "path" && path === '') { - parentEpml.request('showSnackBar', 'Please enter the directory path containing the static content') + let err4string = get("publishpage.pchange17") + parentEpml.request('showSnackBar', `${err4string}`) } else if (service === '') { - parentEpml.request('showSnackBar', 'Please enter a service name') + let err5string = get("publishpage.pchange18") + parentEpml.request('showSnackBar', `${err5string}`) } else { this.publishData(registeredName, path, file, service, identifier) @@ -412,34 +465,41 @@ class PublishData extends LitElement { throw new Error(this.errorMessage); } - this.generalMessage = "Processing data... this can take some time..."; + let err6string = get("publishpage.pchange19") + this.generalMessage = `${err6string}` let transactionBytes = await uploadData(registeredName, path, file) if (transactionBytes.error) { - this.errorMessage = "Error: " + transactionBytes.message + let err7string = get("publishpage.pchange20") + this.errorMessage = `${err7string}` + transactionBytes.message showError(this.errorMessage) throw new Error(this.errorMessage); } else if (transactionBytes.includes("Error 500 Internal Server Error")) { - this.errorMessage = "Internal Server Error when publishing data" + let err8string = get("publishpage.pchange21") + this.errorMessage = `${err8string}` showError(this.errorMessage) throw new Error(this.errorMessage); } - this.generalMessage = "Computing proof of work... this can take some time..."; + let err9string = get("publishpage.pchange22") + this.generalMessage = `${err9string}` let signAndProcessRes = await signAndProcess(transactionBytes) if (signAndProcessRes.error) { - this.errorMessage = "Error: " + signAndProcessRes.message + let err10string = get("publishpage.pchange20") + this.errorMessage = `${err10string}` + signAndProcessRes.message showError(this.errorMessage) throw new Error(this.errorMessage); } + let err11string = get("publishpage.pchange23") + this.btnDisable = false this.loading = false this.errorMessage = '' this.generalMessage = '' - this.successMessage = 'Transaction successful!' + this.successMessage = `${err11string}` } const uploadData = async (registeredName, path, file) => { @@ -500,7 +560,8 @@ class PublishData extends LitElement { const signAndProcess = async (transactionBytesBase58) => { let convertedBytesBase58 = await convertBytesForSigning(transactionBytesBase58) if (convertedBytesBase58.error) { - this.errorMessage = "Error: " + convertedBytesBase58.message + let err12string = get("publishpage.pchange20") + this.errorMessage = `${err12string}` + convertedBytesBase58.message showError(this.errorMessage) throw new Error(this.errorMessage); } @@ -531,7 +592,8 @@ class PublishData extends LitElement { let myResponse = { error: '' } if (response === false) { - myResponse.error = "Unable to sign and process transaction" + let err13string = get("publishpage.pchange24") + myResponse.error = `${err13string}` } else { myResponse = response