diff --git a/src/App/Page.php b/src/App/Page.php index 6849656f4..28fc26a70 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 ca77bb6d5..4f14551be 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 2ef1bfe08..f37fd824e 100644 --- a/view/templates/head.tpl +++ b/view/templates/head.tpl @@ -44,7 +44,12 @@ + + + - + {{* Include the strings which are needed for some js functions (e.g. translation) They are loaded into the html 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 bf418a4be..0eb39d8ea 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 so that js functions can use them *}}