mail_folder_list.js: DROP target is working in Brave browser
authorArt Cancro <ajc@citadel.org>
Tue, 4 Jul 2023 03:56:07 +0000 (18:56 -0900)
committerArt Cancro <ajc@citadel.org>
Tue, 4 Jul 2023 03:56:07 +0000 (18:56 -0900)
webcit-ng/static/index.html
webcit-ng/static/js/mail_folder_list.js
webcit-ng/static/js/view_mail.js
webcit-ng/static/js/views.js

index 28e750e6f52ed765f92a71310d2133c6b0f7e13d..b6f270668da74656acb169997bacac0526cf4def 100644 (file)
@@ -49,7 +49,7 @@
        <div class="ctdl-grid-sidebar-item" id="sidebar">
                <ul id="ctdl-sidebar">
                        <li><button class="ctdl-sidebar-button" id="ctdl-sidebar-button-mail" onClick="gotoroom('_MAIL_');"><i class="fa fa-envelope fa-fw"></i>  Mail</button>
-                       <li id="ctdl_mail_folder_list" style="display:none">id="ctdl_mail_folder_list"</li>
+                       <li style="ctdl_mail_folders" id="ctdl_mail_folder_list" style="display:none">
                        <li><button class="ctdl-sidebar-button" id="ctdl-sidebar-button-forums" onClick="render_room_list();"><i class="fas fa-comments fa-fw"></i>  Forums</button>
                        <li><button class="ctdl-sidebar-button" id="ctdl-sidebar-button-calendar" onClick="gotoroom('_CALENDAR_');"><i class="fa fa-calendar-alt fa-fw"></i>  Calendar</button>
                        <li><button class="ctdl-sidebar-button" id="ctdl-sidebar-button-contacts" onClick="gotoroom('_CONTACTS_');"><i class="fa fa-address-book fa-fw"></i>  Contacts</button>
index ba8a74f56dd26cef4bff340d2f02387c48e31659..9b7a2a1d45f2d002247bd36941ad9a3476633a55 100644 (file)
@@ -46,17 +46,15 @@ function render_mail_folder_list(roomlist_json) {
        });
 
        // Turn it into displayable markup
-       let rendered_list = "";
-       rendered_list += "<ul class=\"ctdl_mail_folders\">\n";
+       let rendered_list = "<ul class=\"ctdl_mail_folders\" id=\"ctdl_mail_folders\">\n";
        for (let i=0; i<roomlist_json.length; ++i) {
                if (roomlist_json[i].current_view == views.VIEW_MAILBOX) {
                        rendered_list += "<li "
                                        + "id=\"" + randomString() + "\" "
-                                       + "onDragEnter=\"return mail_dragenter_handler(event)\" "
-                                       + "onDragOver=\"return mail_dragover_handler(event)\" "
-                                       + "onDragLeave=\"return mail_dragleave_handler(event)\" "
-                                       + "onDrop=\"return mail_drop_handler(event, '" + escapeJS(roomlist_json[i].name) + "')\" "
-                                       + "onClick=\"gotoroom('" + roomlist_json[i].name + "');\">"
+                                       + "onclick=\"gotoroom('" + roomlist_json[i].name + "')\" "
+                                       + "ondragover=\"mail_folder_dragover(event)\" "
+                                       + "ondrop=\"mail_folder_drop(event)\" "
+                                       + ">"
                                        + ((roomlist_json[i].name == "Mail") ? _("INBOX") : escapeHTML(roomlist_json[i].name))
                                        + "</li>\n"
                        ;
@@ -67,28 +65,12 @@ function render_mail_folder_list(roomlist_json) {
 }
 
 
-function mail_dragenter_handler(event) {
+function mail_folder_dragover(event) {
        event.preventDefault();
-       return false;
+       console.log("target dragover");
 }
 
 
-function mail_dragover_handler(event) {
-       event.preventDefault();
-       return false;
-}
-
-
-function mail_dragleave_handler(event) {
-       event.preventDefault();
-       return false;
+function mail_folder_drop(event) {
+       console.log("target DROP!");
 }
-
-
-function mail_drop_handler(event, to_room) {
-       console.log("Drop! " + event.currentTarget.id + " to room '" + to_room + "'");
-       event.preventDefault();
-       return false;
-}
-
-
index a925ce5b37249b12eb7827ded6258b910fd9dd11..32af5e33bf19969d06c6fcc0d88be0cfdd240049 100644 (file)
@@ -97,6 +97,14 @@ function mail_dragstart(event) {
        d = document.getElementById("ctdl_draggo");
        d.innerHTML = "<font size='+3'><i class='fa fa-envelope' style='color: red'></i> " + count + "</font>"
        event.dataTransfer.setDragImage(d, 0, 0);
+       event.dataTransfer.setData("text/html", "blah blah blah");
+       console.log("source dragstart");
+}
+
+
+// Handler function for dragging email messages to other folders
+function mail_dragend(event) {
+       console.log("source dragend");
 }
 
 
@@ -232,10 +240,12 @@ function enable_or_disable_draggable(row) {
        if (row.classList.contains("ctdl-mail-selected")) {
                row.draggable = "true"
                row.addEventListener("dragstart", mail_dragstart);
+               row.addEventListener("dragend", mail_dragend);
        }
        else {
                row.draggable = "false"
                row.removeEventListener("dragstart", mail_dragstart);
+               row.removeEventListener("dragend", mail_dragend);
        }
 }
 
index 82e979853a8a4b55bfe6f423a3c9dda25cf42b3e..f3707d48c935e373862cf7b207f435522018c50a 100644 (file)
@@ -16,15 +16,26 @@ function clear_sidebar_selection() {
 }
 
 
-// This function is the dispatcher that determines the correct view for a room, and calls the correct renderer.
-function render_room_view() {
+// Clear any drop handlers that might have been set by the previous view
+function clear_drop_handlers() {
+}
 
-       // The view renderer will set its own room navigation buttons
+
+// Clear the top bar navigation buttons.  The view renderer will set its own buttons.
+function clear_navigation_buttons() {
        for (const d of ["ctdl-newmsg-button", "ctdl-ungoto-button", "ctdl-skip-button", "ctdl-goto-button", "ctdl-delete-button"]) {
                document.getElementById(d).style.display = "none";
        }
+}
 
+
+// This function is the dispatcher that determines the correct view for a room, and calls the correct renderer.
+function render_room_view() {
+
+       clear_navigation_buttons();
        clear_sidebar_selection();
+       clear_drop_handlers();
+
        document.getElementById("ctdl-main").innerHTML = 
                "<div class=\"ctdl-middle\">"
                + _("Loading messages from server, please wait")