* 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),
-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
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();
},
};
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);
})
};
}
<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/
<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"
<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 *}}
{{* 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>