diff --git a/Views/Shared/_AdminLayout.cshtml b/Views/Shared/_AdminLayout.cshtml index f45e8c3..cdbeace 100644 --- a/Views/Shared/_AdminLayout.cshtml +++ b/Views/Shared/_AdminLayout.cshtml @@ -120,6 +120,25 @@ + + diff --git a/Views/admin/affiliatelinkget.cshtml b/Views/admin/affiliatelinkget.cshtml index 9fc281c..af2effb 100644 --- a/Views/admin/affiliatelinkget.cshtml +++ b/Views/admin/affiliatelinkget.cshtml @@ -19,7 +19,10 @@
@Model.TitleEN - Leave empty to keep the current logo. You can also paste (Ctrl+V) an image directly. + + Leave empty to keep the current logo.
@@ -56,7 +59,3 @@ } - - diff --git a/Views/admin/myprojectsget.cshtml b/Views/admin/myprojectsget.cshtml index 5656e25..bb0dd21 100644 --- a/Views/admin/myprojectsget.cshtml +++ b/Views/admin/myprojectsget.cshtml @@ -100,9 +100,11 @@ else
- - Upload image/document files. You can also paste (Ctrl+V) an image directly. + + Upload image/document files.
@@ -137,7 +139,5 @@ else sel.addEventListener("change", sync); sync(); })(); - -enablePasteUpload('#mediaFile', '#mediaFilePreview'); diff --git a/Views/admin/newaffiliatepost.cshtml b/Views/admin/newaffiliatepost.cshtml index fff0eff..bd09881 100644 --- a/Views/admin/newaffiliatepost.cshtml +++ b/Views/admin/newaffiliatepost.cshtml @@ -14,9 +14,12 @@
- + - PNG, JPG, WEBP or GIF. You can also paste (Ctrl+V) an image directly. + + PNG, JPG, WEBP or GIF.
@@ -54,7 +57,3 @@ } - - diff --git a/Views/admin/newmppost.cshtml b/Views/admin/newmppost.cshtml index 79a6b66..072ccae 100644 --- a/Views/admin/newmppost.cshtml +++ b/Views/admin/newmppost.cshtml @@ -100,9 +100,11 @@ else
- - Upload image/document files. You can also paste (Ctrl+V) an image directly. + + Upload image/document files.
@@ -136,5 +138,4 @@ else sel.addEventListener("change", sync); sync(); })(); - -enablePasteUpload('#mediaFile', '#mediaFilePreview'); \ No newline at end of file + \ No newline at end of file diff --git a/Views/admin/wallpaper.cshtml b/Views/admin/wallpaper.cshtml index 4ccace4..7be17d9 100644 --- a/Views/admin/wallpaper.cshtml +++ b/Views/admin/wallpaper.cshtml @@ -21,7 +21,10 @@ - PNG, JPG, WEBP or GIF. You can also paste (Ctrl+V) an image directly. + + PNG, JPG, WEBP or GIF.
@@ -32,7 +35,3 @@ @Html.AntiForgeryToken() } - - diff --git a/web_atakanozbancom/assets/js/paste-upload.js b/web_atakanozbancom/assets/js/paste-upload.js index f189543..cda23a8 100644 --- a/web_atakanozbancom/assets/js/paste-upload.js +++ b/web_atakanozbancom/assets/js/paste-upload.js @@ -1,37 +1,75 @@ -function enablePasteUpload(inputSelector, previewSelector) { - var input = document.querySelector(inputSelector); - if (!input) return; +var PasteImageModal = (function () { + var bsModal, targetEl, previewEl, defaultText; + var currentInputSelector, currentPreviewSelector; - document.addEventListener('paste', function (e) { - var clipboard = e.clipboardData || window.clipboardData; - var items = clipboard ? clipboard.items : null; - if (!items) return; + function init() { + var modalEl = document.getElementById('pasteImageModal'); + if (!modalEl || typeof bootstrap === 'undefined') return false; - for (var i = 0; i < items.length; i++) { - var item = items[i]; - if (item.kind === 'file' && item.type.indexOf('image/') === 0) { - var blob = item.getAsFile(); - if (!blob) continue; + targetEl = document.getElementById('pasteImageTarget'); + previewEl = document.getElementById('pasteImageModalPreview'); + defaultText = targetEl.textContent; + bsModal = new bootstrap.Modal(modalEl); - var ext = (blob.type.split('/')[1] || 'png').toLowerCase(); - var pastedFile = new File([blob], 'pasted-image-' + Date.now() + '.' + ext, { type: blob.type }); + modalEl.addEventListener('shown.bs.modal', function () { + targetEl.textContent = defaultText; + previewEl.style.display = 'none'; + previewEl.removeAttribute('src'); + targetEl.focus(); + }); - var dt = new DataTransfer(); - dt.items.add(pastedFile); - input.files = dt.files; - input.dispatchEvent(new Event('change', { bubbles: true })); + targetEl.addEventListener('paste', function (e) { + var clipboard = e.clipboardData || window.clipboardData; + var items = clipboard ? clipboard.items : null; + if (!items) return; - if (previewSelector) { - var preview = document.querySelector(previewSelector); - if (preview) { - preview.src = URL.createObjectURL(pastedFile); - preview.style.display = ''; + for (var i = 0; i < items.length; i++) { + var item = items[i]; + if (item.kind === 'file' && item.type.indexOf('image/') === 0) { + e.preventDefault(); + + var blob = item.getAsFile(); + if (!blob) continue; + + var ext = (blob.type.split('/')[1] || 'png').toLowerCase(); + var pastedFile = new File([blob], 'pasted-image-' + Date.now() + '.' + ext, { type: blob.type }); + + var input = document.querySelector(currentInputSelector); + if (input) { + var dt = new DataTransfer(); + dt.items.add(pastedFile); + input.files = dt.files; + input.dispatchEvent(new Event('change', { bubbles: true })); } - } - e.preventDefault(); - break; + var url = URL.createObjectURL(pastedFile); + previewEl.src = url; + previewEl.style.display = ''; + targetEl.textContent = 'Image pasted!'; + + if (currentPreviewSelector) { + var extPreview = document.querySelector(currentPreviewSelector); + if (extPreview) { + extPreview.src = url; + extPreview.style.display = ''; + } + } + + setTimeout(function () { bsModal.hide(); }, 400); + break; + } } - } - }); -} + }); + + return true; + } + + function open(inputSelector, previewSelector) { + if (!bsModal && !init()) return; + currentInputSelector = inputSelector; + currentPreviewSelector = previewSelector || null; + bsModal.show(); + } + + return { open: open }; +})();