From 4db29565def8cffcb5f0aec2f41f8f82d8f0bf1d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan <hypolite@mrpetovan.com> Date: Sun, 9 Apr 2023 08:15:20 -0400 Subject: [PATCH] [frio] Add Dropzone dictionary strings to l10n --- src/App/Page.php | 36 +++++++++++++----- view/js/dropzone-factory.js | 17 ++++++++- view/templates/head.tpl | 5 +++ view/theme/frio/templates/head.tpl | 6 ++- view/theme/frio/templates/js_strings.tpl | 48 ++++++++++++++---------- 5 files changed, 81 insertions(+), 31 deletions(-) diff --git a/src/App/Page.php b/src/App/Page.php index 6849656f40..28fc26a702 100644 --- a/src/App/Page.php +++ b/src/App/Page.php @@ -243,22 +243,40 @@ class Page implements ArrayAccess * being first */ $this->page['htmlhead'] = Renderer::replaceMacros($tpl, [ + '$l10n' => [ + 'delitem' => $l10n->t('Delete this item?'), + 'blockAuthor' => $l10n->t('Block this author? They won\'t be able to follow you nor see your public posts, and you won\'t be able to see their posts and their notifications.'), + 'ignoreAuthor' => $l10n->t('Ignore this author? You won\'t be able to see their posts and their notifications.'), + + 'likeError' => $l10n->t('Like not successful'), + 'dislikeError' => $l10n->t('Dislike not successful'), + 'announceError' => $l10n->t('Sharing not successful'), + 'attendError' => $l10n->t('Attendance unsuccessful'), + 'srvError' => $l10n->t('Backend error'), + 'netError' => $l10n->t('Network error'), + + // Dropzone + 'dictDefaultMessage' => $l10n->t('Drop files here to upload'), + 'dictFallbackMessage' => $l10n->t("Your browser does not support drag and drop file uploads."), + 'dictFallbackText' => $l10n->t('Please use the fallback form below to upload your files like in the olden days.'), + 'dictFileTooBig' => $l10n->t('File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.'), + 'dictInvalidFileType' => $l10n->t("You can't upload files of this type."), + 'dictResponseError' => $l10n->t('Server responded with {{statusCode}} code.'), + 'dictCancelUpload' => $l10n->t('Cancel upload'), + 'dictUploadCanceled' => $l10n->t('Upload canceled.'), + 'dictCancelUploadConfirmation' => $l10n->t('Are you sure you want to cancel this upload?'), + 'dictRemoveFile' => $l10n->t('Remove file'), + 'dictMaxFilesExceeded' => $l10n->t("You can't upload any more files."), + ], + '$local_user' => $localUID, '$generator' => 'Friendica' . ' ' . App::VERSION, - '$delitem' => $l10n->t('Delete this item?'), - '$blockAuthor' => $l10n->t('Block this author? They won\'t be able to follow you nor see your public posts, and you won\'t be able to see their posts and their notifications.'), - '$ignoreAuthor' => $l10n->t('Ignore this author? You won\'t be able to see their posts and their notifications.'), '$update_interval' => $interval, '$shortcut_icon' => $shortcut_icon, '$touch_icon' => $touch_icon, '$block_public' => intval($config->get('system', 'block_public')), '$stylesheets' => $this->stylesheets, - '$likeError' => $l10n->t('Like not successful'), - '$dislikeError' => $l10n->t('Dislike not successful'), - '$announceError' => $l10n->t('Sharing not successful'), - '$attendError' => $l10n->t('Attendance unsuccessful'), - '$srvError' => $l10n->t('Backend error'), - '$netError' => $l10n->t('Network error'), + // Dropzone '$max_imagesize' => round(\Friendica\Util\Strings::getBytesFromShorthand($config->get('system', 'maximagesize')) / 1000000, 1), diff --git a/view/js/dropzone-factory.js b/view/js/dropzone-factory.js index ca77bb6d50..4f14551be8 100644 --- a/view/js/dropzone-factory.js +++ b/view/js/dropzone-factory.js @@ -1,4 +1,5 @@ -var DzFactory = function () { +Dropzone.autoDiscover = false; +var DzFactory = function (max_imagesize) { this.createDropzone = function(dropSelector, textareaElementId) { return new Dropzone(dropSelector, { paramName: 'userfile', // The name that will be used to transfer the file @@ -6,6 +7,17 @@ var DzFactory = function () { url: '/media/photo/upload?album=', acceptedFiles: 'image/*', clickable: true, + dictDefaultMessage: dzStrings.dictDefaultMessage, + dictFallbackMessage: dzStrings.dictFallbackMessage, + dictFallbackText: dzStrings.dictFallbackText, + dictFileTooBig: dzStrings.dictFileTooBig, + dictInvalidFileType: dzStrings.dictInvalidFileType, + dictResponseError: dzStrings.dictResponseError, + dictCancelUpload: dzStrings.dictCancelUpload, + dictUploadCanceled: dzStrings.dictUploadCanceled, + dictCancelUploadConfirmation: dzStrings.dictCancelUploadConfirmation, + dictRemoveFile: dzStrings.dictRemoveFile, + dictMaxFilesExceeded: dzStrings.dictMaxFilesExceeded, accept: function(file, done) { done(); }, @@ -54,9 +66,10 @@ var DzFactory = function () { }; this.setupDropzone = function(dropSelector, textareaElementId) { + const self = this; var dropzone = this.createDropzone(dropSelector, textareaElementId); $(dropSelector).on('paste', function(event) { - dzFactory.copyPaste(event, dropzone); + self.copyPaste(event, dropzone); }) }; } diff --git a/view/templates/head.tpl b/view/templates/head.tpl index 2ef1bfe08f..f37fd824e4 100644 --- a/view/templates/head.tpl +++ b/view/templates/head.tpl @@ -44,7 +44,12 @@ <script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="view/asset/base64/base64.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="view/asset/dompurify/dist/purify.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> +<script type="text/javascript"> + const updateInterval = {{$update_interval}}; + const localUser = {{if $local_user}}{{$local_user}}{{else}}false{{/if}}; +</script> <script type="text/javascript" src="view/js/main.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> + <script> // Lifted from https://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/ diff --git a/view/theme/frio/templates/head.tpl b/view/theme/frio/templates/head.tpl index 7c5ae59463..36b6deb07b 100644 --- a/view/theme/frio/templates/head.tpl +++ b/view/theme/frio/templates/head.tpl @@ -103,6 +103,10 @@ <script type="text/javascript" src="view/asset/base64/base64.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="view/asset/dompurify/dist/purify.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"> </script> + <script type="text/javascript"> + const updateInterval = {{$update_interval}}; + const localUser = {{if $local_user}}{{$local_user}}{{else}}false{{/if}}; + </script> <script type="text/javascript" src="view/js/main.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" @@ -139,7 +143,7 @@ <script type="text/javascript" src="view/theme/frio/js/textedit.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="vendor/enyo/dropzone/dist/min/dropzone.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="view/js/dropzone-factory.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> - <script type="text/javascript"> max_imagesize = {{$max_imagesize}}; var dzFactory = new DzFactory(); Dropzone.autoDiscover = false; </script> + <script type="text/javascript"> const dzFactory = new DzFactory({{$max_imagesize}});</script> {{* Include the strings which are needed for some js functions (e.g. translation) They are loaded into the html <head> so that js functions can use them *}} diff --git a/view/theme/frio/templates/js_strings.tpl b/view/theme/frio/templates/js_strings.tpl index bf418a4be2..0eb39d8eab 100644 --- a/view/theme/frio/templates/js_strings.tpl +++ b/view/theme/frio/templates/js_strings.tpl @@ -2,24 +2,34 @@ {{* Strings which are needed for some js functions (e.g. translation or the interval for page update) They are loaded into the html <head> so that js functions can use them *}} <script type="text/javascript"> - var updateInterval = {{$update_interval}}; - - var localUser = {{if $local_user}}{{$local_user}}{{else}}false{{/if}}; - var aStr = { - 'delitem' : "{{$delitem|escape:'javascript' nofilter}}", - 'blockAuthor' : "{{$blockAuthor|escape:'javascript' nofilter}}", - 'ignoreAuthor' : "{{$ignoreAuthor|escape:'javascript' nofilter}}", + const aStr = { + delitem : "{{$l10n.delitem|escape:'javascript' nofilter}}", + blockAuthor : "{{$l10n.blockAuthor|escape:'javascript' nofilter}}", + ignoreAuthor : "{{$l10n.ignoreAuthor|escape:'javascript' nofilter}}", + }; + const aActErr = { + like : "{{$l10n.likeError|escape:'javascript' nofilter}}", + dislike : "{{$l10n.dislikeError|escape:'javascript' nofilter}}", + announce : "{{$l10n.announceError|escape:'javascript' nofilter}}", + attendyes : "{{$l10n.attendError|escape:'javascript' nofilter}}", + attendno : "{{$l10n.attendError|escape:'javascript' nofilter}}", + attendmaybe: "{{$l10n.attendError|escape:'javascript' nofilter}}", + }; + const aErrType = { + srvErr: "{{$l10n.srvError|escape:'javascript' nofilter}}", + netErr: "{{$l10n.netError|escape:'javascript' nofilter}}", + }; + const dzStrings = { + dictDefaultMessage : "{{$l10n.dictDefaultMessage|escape:'javascript' nofilter}}", + dictFallbackMessage : "{{$l10n.dictFallbackMessage|escape:'javascript' nofilter}}", + dictFallbackText : "{{$l10n.dictFallbackText|escape:'javascript' nofilter}}", + dictFileTooBig : "{{$l10n.dictFileTooBig|escape:'javascript' nofilter}}", + dictInvalidFileType : "{{$l10n.dictInvalidFileType|escape:'javascript' nofilter}}", + dictResponseError : "{{$l10n.dictResponseError|escape:'javascript' nofilter}}", + dictCancelUpload : "{{$l10n.dictCancelUpload|escape:'javascript' nofilter}}", + dictUploadCanceled : "{{$l10n.dictUploadCanceled|escape:'javascript' nofilter}}", + dictCancelUploadConfirmation: "{{$l10n.dictCancelUploadConfirmation|escape:'javascript' nofilter}}", + dictRemoveFile : "{{$l10n.dictRemoveFile|escape:'javascript' nofilter}}", + dictMaxFilesExceeded : "{{$l10n.dictMaxFilesExceeded|escape:'javascript' nofilter}}", }; - var aActErr = { - 'like' : "{{$likeError}}", - 'dislike' : "{{$dislikeError}}", - 'announce' : "{{$announceError}}", - 'attendyes' : "{{$attendError}}", - 'attendno' : "{{$attendError}}", - 'attendmaybe' : "{{$attendError}}", - }; - var aErrType = { - 'srvErr' : "{{$srvError}}", - 'netErr' : "{{$netError}}", - }; </script> -- 2.39.5