]> git.wh0rd.org - tt-rss.git/commitdiff
UI improvements
authorAndrew Dolgov <fox@bah.spb.su>
Fri, 2 Mar 2007 19:58:58 +0000 (20:58 +0100)
committerAndrew Dolgov <fox@bah.spb.su>
Fri, 2 Mar 2007 19:58:58 +0000 (20:58 +0100)
backend.php
feedlist.js
functions.js
images/indicator_white.gif
prefs.js
tt-rss.css
tt-rss.js
viewfeed.js

index b1ddcd5af8e260f9d5fe469d46d41697ca377301..1a53d1c68d5abdc5f32d6076b7245de29653d555 100644 (file)
@@ -54,7 +54,7 @@
                header("Content-Type: application/xml");
                print_error_xml(7); exit;
        }
-
+       
        if (!($_SESSION["uid"] && validate_session($link)) && $op != "globalUpdateFeeds" 
                        && $op != "rss" && $op != "getUnread") {
 
index 1bbb178bd4d48aa9841f06a0a3b101d3c58f67e7..79a39f347fdb8b87a0e662b2c9f227f9c15152bd 100644 (file)
@@ -135,7 +135,7 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) {
                container.innerHTML = "<div class=\"loadingPrompt\"><img src=\"images/indicator_white.gif\">&nbsp;" +
                        "Loading, please wait...</div>"; */
 
-               notify("Loading, please wait...", true);
+               notify_progress("Loading, please wait...", true);
 
 //             xmlhttp.abort();
 
index da12a3c366f669cbe72e4e052e0a759e59ba034b..39b77d6a011b74aca2866829b8cda2d9ef6cd16c 100644 (file)
@@ -103,34 +103,18 @@ function delay(gap) {
 }
 
 var notify_hide_timerid = false;
-var notify_last_doc = false;
-
-var notify_effect = false; 
 
 function hide_notify() {
-       if (notify_last_doc) {
-               var n = notify_last_doc.getElementById("notify");               
+       var n = document.getElementById("notify");
+       if (n) {
                n.style.display = "none";
-
-/*             if (browser_has_opacity()) {
-                       if (notify_opacity >= 0) {
-                               notify_opacity = notify_opacity - 0.1;
-                               n.style.opacity = notify_opacity;
-                               notify_hide_timerid = window.setTimeout("hide_notify()", 20);   
-                       } else {
-                               n.style.display = "none";
-                               n.style.opacity = 1;
-                       }
-               } else {
-                       n.style.display = "none";
-               } */
        }
 } 
 
-function notify_real(msg, doc, no_hide, is_err) {
+function notify_real(msg, no_hide, n_type) {
 
-       var n = doc.getElementById("notify");
-       var nb = doc.getElementById("notify_body");
+       var n = document.getElementById("notify");
+       var nb = document.getElementById("notify_body");
 
        if (!n || !nb) return;
 
@@ -138,9 +122,6 @@ function notify_real(msg, doc, no_hide, is_err) {
                window.clearTimeout(notify_hide_timerid);
        }
 
-       notify_last_doc = doc;
-       notify_opacity = 1;
-
        if (msg == "") {
                if (n.style.display == "block") {
                        notify_hide_timerid = window.setTimeout("hide_notify()", 0);
@@ -150,17 +131,25 @@ function notify_real(msg, doc, no_hide, is_err) {
                n.style.display = "block";
        }
 
-       if (is_err) {
+       /* types:
+
+               1 - generic
+               2 - progress
+               3 - error
+               4 - info
+
+       */
+
+       if (n_type == 1) {
+               n.className = "notify";
+       } else if (n_type == 2) {
+               n.className = "notifyProgress";
+               msg = "<img src='images/indicator_white.gif'> " + msg;
+       } else if (n_type == 3) {
                n.className = "notifyError";
-//             n.style.backgroundColor = "#ffcccc";
-//             n.style.color = "black";
-//             n.style.borderColor = "#ff0000";
                msg = "<img src='images/sign_excl.png'> " + msg;
-       } else {
-               n.className = "notify";
-//             n.style.backgroundColor = "#fff7d5";
-//             n.style.borderColor = "#d7c47a";
-//             n.style.color = "black";
+       } else if (n_type == 4) {
+               n.className = "notifyInfo";
                msg = "<img src='images/sign_info.png'> " + msg;
        }
 
@@ -173,16 +162,26 @@ function notify_real(msg, doc, no_hide, is_err) {
        }
 }
 
-function p_notify(msg, no_hide, is_err) {
-       notify_real(msg, document, no_hide, is_err);
+function notify(msg, no_hide) {
+       notify_real(msg, no_hide, 1);
 }
 
-function notify(msg, no_hide, is_err) {
-       notify_real(msg, document, no_hide, is_err);
+function notify_progress(msg, no_hide) {
+       notify_real(msg, no_hide, 2);
+}
+
+function notify_error(msg, no_hide) {
+       notify_real(msg, no_hide, 3);
+
+}
+
+function notify_info(msg, no_hide) {
+       notify_real(msg, no_hide, 4);
 }
 
 function printLockingError() {
-       notify("Please wait until operation finishes");}
+       notify_info("Please wait until operation finishes.");
+}
 
 function hotkey_handler(e) {
 
@@ -668,14 +667,14 @@ function parse_counters(reply, scheduled_call) {
 function parse_counters_reply(xmlhttp, scheduled_call) {
 
        if (!xmlhttp.responseXML) {
-               notify("refetch_callback: backend did not return valid XML", true, true);
+               notify_error("Backend did not return valid XML", true);
                return;
        }
 
        var reply = xmlhttp.responseXML.firstChild;
        
        if (!reply) {
-               notify("refetch_callback: backend did not return expected XML object", true, true);
+               notify_error("Backend did not return expected XML object", true);
                updateTitle("");
                return;
        } 
@@ -1344,7 +1343,7 @@ function infobox_submit_callback() {
                        }
                } catch (e) { }
 
-               notify(xmlhttp.responseText);
+//             notify_info(xmlhttp.responseText);
 
        } 
 }
@@ -1416,7 +1415,7 @@ function qafAdd() {
                return false;
        }
 
-       notify("Adding feed...", true);
+       notify_progress("Adding feed...");
 
        closeInfoBox();
 
@@ -1549,7 +1548,9 @@ function fatalError(code, message) {
                        var fe = document.getElementById("fatal_error");
                        var fc = document.getElementById("fatal_error_msg");
        
-                       fc.innerHTML = "Code " + code + ": " + message;
+                       if (message == "") message = "Unknown error";
+
+                       fc.innerHTML = "<img src='images/sign_excl.png'> " + message + " (Code " + code + ")";
        
                        fe.style.display = "block";
                }
@@ -1625,7 +1626,7 @@ function logoutUser() {
        try {
                if (xmlhttp_ready(xmlhttp_rpc)) {
 
-                       notify("Logging out, please wait...");
+                       notify_progress("Logging out, please wait...", true);
 
                        xmlhttp_rpc.open("GET", "backend.php?op=rpc&subop=logout", true);
                        xmlhttp_rpc.onreadystatechange=logout_callback;
index 529e72f45a2395e2eddb0487edbe79b306c92c3a..9d69aefcbf84f502866634c8367ee9698790b233 100644 (file)
Binary files a/images/indicator_white.gif and b/images/indicator_white.gif differ
index a072ef03c70281f6385a81f6a3d4d70b6191396d..53f9ecc98bf25ca4a769f3bd597768e3e78eed0e 100644 (file)
--- a/prefs.js
+++ b/prefs.js
@@ -126,10 +126,9 @@ function gethelp_callback() {
 
 
 function notify_callback() {
-       var container = document.getElementById('notify');
        if (xmlhttp.readyState == 4) {
-               container.innerHTML=xmlhttp.responseText;
-       }
+               notify_info(xmlhttp.responseText);
+       } 
 }
 
 function updateFeedList(sort_key) {
@@ -216,7 +215,7 @@ function addFeed() {
        } else if (!isValidURL(link.value)) {
                alert("Error: Invalid feed URL.");
        } else {
-               notify("Adding feed...");
+               notify_progress("Adding feed...");
 
                xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=add&from=tt-rss&feed_url=" +
                        param_escape(link.value), true);
@@ -241,7 +240,7 @@ function addFeedCat() {
        if (cat.value.length == 0) {
                alert("Can't add category: no name specified.");
        } else {
-               notify("Adding feed category...");
+               notify_progress("Adding feed category...");
 
                xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editCats&action=add&cat=" +
                        param_escape(cat.value), true);
@@ -265,7 +264,7 @@ function addUser() {
        if (sqlexp.value.length == 0) {
                alert("Can't add user: no login specified.");
        } else {
-               notify("Adding user...");
+               notify_progress("Adding user...");
 
                xmlhttp.open("GET", "backend.php?op=pref-users&subop=add&login=" +
                        param_escape(sqlexp.value), true);                      
@@ -427,7 +426,7 @@ function removeSelectedLabels() {
                var ok = confirm("Remove selected labels?");
 
                if (ok) {
-                       notify("Removing selected labels...");
+                       notify_progress("Removing selected labels...");
        
                        xmlhttp.open("GET", "backend.php?op=pref-labels&subop=remove&ids="+
                                param_escape(sel_rows.toString()), true);
@@ -455,7 +454,7 @@ function removeSelectedUsers() {
                var ok = confirm("Remove selected users?");
 
                if (ok) {
-                       notify("Removing selected users...");
+                       notify_progress("Removing selected users...");
        
                        xmlhttp.open("GET", "backend.php?op=pref-users&subop=remove&ids="+
                                param_escape(sel_rows.toString()), true);
@@ -484,7 +483,7 @@ function removeSelectedFilters() {
                var ok = confirm("Remove selected filters?");
 
                if (ok) {
-                       notify("Removing selected filters...");
+                       notify_progress("Removing selected filters...");
        
                        xmlhttp.open("GET", "backend.php?op=pref-filters&subop=remove&ids="+
                                param_escape(sel_rows.toString()), true);
@@ -514,7 +513,7 @@ function removeSelectedFeeds() {
 
                if (ok) {
 
-                       notify("Unsubscribing from selected feeds...");
+                       notify_progress("Unsubscribing from selected feeds...");
        
                        xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=remove&ids="+
                                param_escape(sel_rows.toString()), true);
@@ -545,7 +544,7 @@ function removeSelectedFeedCats() {
                var ok = confirm("Remove selected categories?");
 
                if (ok) {
-                       notify("Removing selected categories...");
+                       notify_progress("Removing selected categories...");
        
                        xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editCats&action=remove&ids="+
                                param_escape(sel_rows.toString()), true);
@@ -607,7 +606,7 @@ function feedEditSave() {
 
                var query = Form.serialize("edit_feed_form");
 
-               notify("Saving feed...");
+               notify_progress("Saving feed...");
 
                xmlhttp.open("POST", "backend.php", true);
                xmlhttp.onreadystatechange=feedlist_callback;
@@ -630,7 +629,7 @@ function feedCatEditSave() {
                return
        }
 
-       notify("Saving category...");
+       notify_progress("Saving category...");
 
        var query = Form.serialize("feed_cat_edit_form");
 
@@ -746,7 +745,7 @@ function labelEditSave() {
 
        closeInfoBox();
 
-       notify("Saving label...");
+       notify_progress("Saving label...");
 
        active_label = false;
 
@@ -773,7 +772,7 @@ function userEditSave() {
                return;
        }
        
-       notify("Saving user...");
+       notify_progress("Saving user...");
 
        closeInfoBox();
 
@@ -803,7 +802,7 @@ function filterEditSave() {
                }
        } */
 
-       notify("Saving filter...");
+       notify_progress("Saving filter...");
 
        var query = Form.serialize("filter_edit_form");
 
@@ -871,7 +870,7 @@ function resetSelectedUserPass() {
        var ok = confirm("Reset password of selected user?");
 
        if (ok) {
-               notify("Resetting password for selected user...");
+               notify_progress("Resetting password for selected user...");
        
                var id = rows[0];
        
@@ -926,7 +925,7 @@ function selectedFeedDetails() {
        }
 
        if (rows.length > 1) {
-               notify("Please select only one feed.");
+               alert("Please select only one feed.");
                return;
        }
 
@@ -965,12 +964,12 @@ function editSelectedFeed() {
        var rows = getSelectedFeeds();
 
        if (rows.length == 0) {
-               notify("No feeds are selected.");
+               alert("No feeds are selected.");
                return;
        }
 
        if (rows.length > 1) {
-               notify("Please select one feed.");
+               alert("Please select one feed.");
                return;
        }
 
@@ -1143,7 +1142,7 @@ function selectTab(id, noupdate, subop) {
 
                        debug("selectTab: " + id + "(NU: " + noupdate + ")");
        
-//                     notify("Loading, please wait...", true);
+                       notify_progress("Loading, please wait...", true);
        
                        // close active infobox if needed
                        closeInfoBox();
@@ -1313,7 +1312,7 @@ function categorizeSelectedFeeds() {
 
        if (sel_rows.length > 0) {
 
-               notify("Changing category of selected feeds...");
+               notify_progress("Changing category of selected feeds...");
 
                xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=categorize&ids="+
                        param_escape(sel_rows.toString()) + "&cat_id=" + param_escape(cat_id), true);
index 73c47598847644fc837f0c35cf17adda3026af71..d6d81777d96e37ba2dccd36cccb57e2479994d56 100644 (file)
@@ -238,6 +238,18 @@ input.editbox {
        vertical-align : middle;
 }
 
+.notifyProgress {
+       border-color : #d7c47a;
+       background-color : #fff7d5;
+       color : black;
+}
+
+.notifyInfo {
+       border-color : #7AD78E;
+       background-color : #D5FFDB;
+       color : black;
+}
+
 .notify {
        border-color : #d7c47a;
        background-color : #fff7d5;
@@ -1065,11 +1077,11 @@ a.cdmToggleLink:hover {
 }
 
 #fatal_error_msg {
-       border : 1px solid #c0c0c0;
-       background-color : #f0f0f0;
        color : black;
        padding : 10px;
        font-weight : normal;
+       background-color : #ffcccc;
+       border : 1px solid #ff0000;
 }
 
 #fatal_error_msg a {
@@ -1081,6 +1093,10 @@ a.cdmToggleLink:hover {
        text-decoration : underline;
 }
 
+#fatal_error_msg img {
+       vertical-align : middle;
+}
+
 #noDaemonWarning {     
        position : absolute;
        background-color : #ecf4ff;               
index b9f3af113343ddeaa9ce94499924aa038e89ee41..52ce95f2ff92c99bcbae5ef403a157c108952924 100644 (file)
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -37,7 +37,7 @@ function toggleTags() {
                p.innerHTML = "display tags";
        }
        
-       notify("Loading, please wait...");
+       notify_progress("Loading, please wait...");
 
        updateFeedList();
 }
@@ -71,7 +71,7 @@ function refetch_callback() {
                        debug("refetch_callback: done");
 
                        if (!daemon_enabled && !daemon_refresh_only) {
-                               notify("All feeds updated.");
+                               notify_info("All feeds updated.");
                                updateTitle("");
                        } else {
                                //notify("");
@@ -135,7 +135,7 @@ function backend_sanity_check_callback() {
 function scheduleFeedUpdate(force) {
 
        if (!daemon_enabled && !daemon_refresh_only) {
-               notify("Updating feeds, please wait.", true);
+               notify_progress("Updating feeds, please wait.", true);
                updateTitle("Updating");
        }
 
@@ -231,7 +231,7 @@ function catchupAllFeeds() {
 
        var query_str = "backend.php?op=feeds&subop=catchupAll";
 
-       notify("Marking all feeds as read...");
+       notify_progress("Marking all feeds as read...");
 
        debug("catchupAllFeeds Q=" + query_str);
 
@@ -474,7 +474,7 @@ function quickMenuGo(opid) {
 
 function qfdDelete(feed_id) {
 
-       notify("Removing feed...");
+       notify_progress("Removing feed...");
 
        if (!xmlhttp_ready(xmlhttp)) {
                printLockingError();
@@ -552,7 +552,7 @@ function parse_runtime_info(elem) {
                }
 
                if (k == "daemon_is_running" && v != 1) {
-                       notify("<span onclick=\"javascript:explainError(1)\">Update daemon is not runing.</span>", true, true);
+                       notify_error("<span onclick=\"javascript:explainError(1)\">Update daemon is not runing.</span>");
                }
 
 /*             var w = document.getElementById("noDaemonWarning");
@@ -634,7 +634,7 @@ function feedEditSave() {
 
                var query = Form.serialize("edit_feed_form");
 
-               notify("Saving feed...");
+               notify_progress("Saving feed...");
 
                xmlhttp.open("POST", "backend.php", true);
                xmlhttp.onreadystatechange=dlg_frefresh_callback;
@@ -701,7 +701,7 @@ function localHotkeyHandler(e) {
                        }
 
                } else {
-                       notify("No operation to undo");
+                       notify_error("No operation to undo");
                }
 
                return false;
index 7caba319d2346296caba34af259b36c7c1ca6f1c..7ff660a3bfd7c8061f0af1c1a4cda664f03e934a 100644 (file)
@@ -514,7 +514,7 @@ function editTagsSave() {
                printLockingError();
        }
 
-       notify("Saving article tags...");
+       notify_progress("Saving article tags...");
 
        var form = document.forms["tag_edit_form"];