Bläddra i källkod

fix image upload

sark 1 månad sedan
förälder
incheckning
f14111953e
4 ändrade filer med 33 tillägg och 39 borttagningar
  1. BIN
      database/database.db
  2. 1 0
      public/index.php
  3. 10 39
      public/js/admin/scripts.js
  4. 22 0
      src/Pages/upload.php

BIN
database/database.db


+ 1 - 0
public/index.php

@@ -9,6 +9,7 @@ $page = match (true) {
   ('/admin/pages/' === $requestUri) => 'admin/pages.php',
   ('/admin/slots/' === $requestUri) => 'admin/slots.php',
   ('/admin/authors/' === $requestUri) => 'admin/authors.php',
+  ('/editor/uploads/' === $requestUri) => 'upload.php',
   ('/verstka/' === $requestUri) => 'verstka.php',
   (preg_match('#^/redirect/([\w-]+)/$#', $requestUri, $matches) === 1) => 'redirect.php',
   default => '404.php',

+ 10 - 39
public/js/admin/scripts.js

@@ -15,18 +15,19 @@ document.addEventListener('DOMContentLoaded', function() {
         toolbar: 'undo redo | styleselect | bold italic | bullist numlist | alignleft aligncenter alignright alignjustify | outdent indent | link image media table | code',
         menubar: 'file edit view insert format tools table help',
         contextmenu: 'table',
-        images_upload_url: '/admin/upload.php',
+        images_upload_url: '/editor/uploads/',
         automatic_uploads: true,
         file_picker_types: 'image',
         images_reuse_filename: true,
         paste_as_text: true,
         setup: function (editor) {
-            editor.on('SaveContent', function (e) {
-                e.content = e.content.replace(/<img([^>]*?)src=/g, '<img$1class="lazy" data-src=');
-            });
-    
-            editor.on('BeforeSetContent', function (e) {
-                e.content = e.content.replace(/<img([^>]*?)src=/g, '<img$1class="lazy" data-src=');
+            editor.on('GetContent', function (e) {
+                e.content = e.content.replace(/<img([^>]*?)>/g, function(match, attrs) {
+                    if (!attrs.includes('loading=')) {
+                        return match.replace('>', ' loading="lazy">');
+                    }
+                    return match;
+                });
             });
         },
         table_default_attributes: {
@@ -46,7 +47,7 @@ document.addEventListener('DOMContentLoaded', function() {
                     const formData = new FormData();
                     formData.append('file', file);
     
-                    fetch('/admin/upload.php', {
+                    fetch('/editor/uploads/', {
                         method: 'POST',
                         body: formData
                     })
@@ -342,34 +343,4 @@ document.addEventListener('DOMContentLoaded', function() {
             updateOrderNumbers();
         }, 10);
     };
-});
-
-// Page selector functionality
-const pageSelect = document.getElementById('page-select');
-if (pageSelect) {
-    pageSelect.addEventListener('change', function () {
-        const selected = this.value;
-        const blocks = document.querySelectorAll('.page-block');
-
-        blocks.forEach(block => {
-            if (block.classList.contains(selected)) {
-                block.style.display = 'block';
-            } else {
-                block.style.display = 'none';
-            }
-        });
-    });
-}
-
-// Tab switching functionality
-function switchTab(tabName) {
-    const contents = document.querySelectorAll('.tab-content');
-    contents.forEach(content => content.classList.remove('active'));
-    
-    const tabs = document.querySelectorAll('.tab');
-    tabs.forEach(tab => tab.classList.remove('active'));
-    
-    document.getElementById(tabName + '-tab').classList.add('active');
-    
-    event.target.classList.add('active');
-}
+});

+ 22 - 0
src/Pages/upload.php

@@ -0,0 +1,22 @@
+<?php
+
+header('Content-Type: application/json');
+
+if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
+    http_response_code(405);
+    return json_encode(['error' => 'Method not allowed']);
+}
+
+if (!isset($_FILES['file'])) {
+    http_response_code(400);
+    return json_encode(['error' => 'No file uploaded']);
+}
+
+$uploadedImage = uploadImage($_FILES['file']);
+
+if ($uploadedImage) {
+    return json_encode(['location' => "/$uploadedImage"]);
+} else {
+    http_response_code(400);
+    return json_encode(['error' => 'Failed to upload image. Please check file format and size.']);
+}