diff options
-rw-r--r-- | backend.php | 167 | ||||
-rw-r--r-- | functions.js | 54 | ||||
-rw-r--r-- | prefs.js | 90 | ||||
-rw-r--r-- | tt-rss.css | 30 |
4 files changed, 209 insertions, 132 deletions
diff --git a/backend.php b/backend.php index 66d52ae9e..4b174e858 100644 --- a/backend.php +++ b/backend.php @@ -1888,10 +1888,8 @@ class=\"prefFeedList\" id=\"prefFeedList\">"; print "<tr><td class=\"selectPrompt\" colspan=\"8\"> Select: - <a href=\"javascript:selectTableRowsByIdPrefix('prefFeedList', - 'FEEDR-', 'FRCHK-', true)\">All</a>, - <a href=\"javascript:selectTableRowsByIdPrefix('prefFeedList', - 'FEEDR-', 'FRCHK-', false)\">None</a> + <a href=\"javascript:selectPrefRows('feed', true)\">All</a>, + <a href=\"javascript:selectPrefRows('feed', false)\">None</a> </td</tr>"; if (!get_pref($link, 'ENABLE_FEED_CATS')) { @@ -1958,7 +1956,7 @@ $feed_icon = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">"; } - print "<td class='feedSelect'><input onclick='toggleSelectRow(this);' + print "<td class='feedSelect'><input onclick='toggleSelectPrefRow(this, \"feed\");' type=\"checkbox\" id=\"FRCHK-".$line["id"]."\"></td>"; if (get_pref($link, 'ENABLE_FEED_ICONS')) { @@ -1980,17 +1978,6 @@ print "<td><a href=\"javascript:editFeed($feed_id);\">" . $edit_link . "</a></td>"; -/* if (get_pref($link, 'ENABLE_FEED_CATS')) { - print "<td><a href=\"javascript:editFeed($feed_id);\">" . - $edit_cat . "</a></td>"; - } */ - -/* print "<td><a href=\"javascript:editFeed($feed_id);\">" . - $update_intervals[$line["update_interval"]] . "</a></td>"; - - print "<td><a href=\"javascript:editFeed($feed_id);\">" . - $purge_intervals[$line["purge_interval"]] . "</a></td>"; */ - print "<td align='right'><a href=\"javascript:editFeed($feed_id);\">" . "$last_updated</a></td>"; @@ -2001,7 +1988,7 @@ print "</table>"; - print "<p>"; + print "<p><span id=\"feedOpToolbar\">"; if ($subop == "edit") { print "Edit feed: @@ -2013,11 +2000,9 @@ print " Selection: - <!-- <input type=\"submit\" class=\"button\" - onclick=\"javascript:selectedFeedDetails()\" value=\"Details\"> --> - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:editSelectedFeed()\" value=\"Edit\"> - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:removeSelectedFeeds()\" value=\"Unsubscribe\">"; if (get_pref($link, 'ENABLE_FEED_CATS')) { @@ -2028,7 +2013,7 @@ WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title"); - print "<select id=\"sfeed_set_fcat\">"; + print "<select id=\"sfeed_set_fcat\" disabled=\"true\">"; print "<option id=\"0\">Uncategorized</option>"; if (db_num_rows($result) != 0) { @@ -2043,12 +2028,12 @@ print "</select>"; - print " <input type=\"submit\" class=\"button\" + print " <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:categorizeSelectedFeeds()\" value=\"Recategorize\">"; } - print " + print "</span> All feeds: <input type=\"submit\" class=\"button\" onclick=\"gotoExportOpml()\" value=\"Export OPML\">"; @@ -2068,9 +2053,10 @@ print "<div class=\"prefGenericAddBox\"> <input id=\"fadd_cat\" onchange=\"javascript:addFeedCat()\" + onkeyup=\"toggleSubmitNotEmpty(this, 'catadd_submit_btn')\" size=\"40\"> <input - type=\"submit\" class=\"button\" + type=\"submit\" class=\"button\" disabled=\"true\" id=\"catadd_submit_btn\" onclick=\"javascript:addFeedCat()\" value=\"Create category\"></div>"; $result = db_query($link, "SELECT title,id FROM ttrss_feed_categories @@ -2084,10 +2070,8 @@ print "<tr><td class=\"selectPrompt\" colspan=\"8\"> Select: - <a href=\"javascript:selectTableRowsByIdPrefix('prefFeedCatList', - 'FCATR-', 'FCCHK-', true)\">All</a>, - <a href=\"javascript:selectTableRowsByIdPrefix('prefFeedCatList', - 'FCATR-', 'FCCHK-', false)\">None</a> + <a href=\"javascript:selectPrefRows('fcat', true)\">All</a>, + <a href=\"javascript:selectPrefRows('fcat', false)\">None</a> </td</tr>"; print "<tr class=\"title\"> @@ -2117,8 +2101,8 @@ if (!$edit_cat_id || $subop != "editCat") { - print "<td align='center'><input onclick='toggleSelectRow(this);' - type=\"checkbox\" id=\"FCCHK-".$line["id"]."\"></td>"; + print "<td align='center'><input onclick='toggleSelectPrefRow(this, \"fcat\");' + type=\"checkbox\" id=\"FCCHK-".$line["id"]."\"></td>"; print "<td><a href=\"javascript:editFeedCat($cat_id);\">" . $edit_title . "</a></td>"; @@ -2145,21 +2129,21 @@ print "</table>"; - print "<p>"; + print "<p id=\"catOpToolbar\">"; if ($subop == "editCat") { print "Edit category: - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" onclick=\"javascript:feedCatEditCancel()\" value=\"Cancel\"> - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" onclick=\"javascript:feedCatEditSave()\" value=\"Save\">"; } else { print " Selection: - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:editSelectedFeedCat()\" value=\"Edit\"> - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:removeSelectedFeedCats()\" value=\"Remove\">"; } @@ -2332,10 +2316,8 @@ print "<tr><td class=\"selectPrompt\" colspan=\"8\"> Select: - <a href=\"javascript:selectTableRowsByIdPrefix('prefFilterList', - 'FILRR-', 'FICHK-', true)\">All</a>, - <a href=\"javascript:selectTableRowsByIdPrefix('prefFilterList', - 'FILRR-', 'FICHK-', false)\">None</a> + <a href=\"javascript:selectPrefRows('filter', true)\">All</a>, + <a href=\"javascript:selectPrefRows('filter', false)\">None</a> </td</tr>"; print "<tr class=\"title\"> @@ -2369,7 +2351,7 @@ if (!$edit_filter_id || $subop != "edit") { - print "<td align='center'><input onclick='toggleSelectRow(this);' + print "<td align='center'><input onclick='toggleSelectPrefRow(this, \"filter\");' type=\"checkbox\" id=\"FICHK-".$line["id"]."\"></td>"; print "<td><a href=\"javascript:editFilter($filter_id);\">" . @@ -2462,7 +2444,7 @@ print "</table>"; - print "<p>"; + print "<p id=\"filterOpToolbar\">"; if ($subop == "edit") { print "Edit filter: @@ -2475,9 +2457,9 @@ print " Selection: - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:editSelectedFilter()\" value=\"Edit\"> - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:removeSelectedFilters()\" value=\"Remove\">"; } @@ -2620,10 +2602,8 @@ print "<tr><td class=\"selectPrompt\" colspan=\"8\"> Select: - <a href=\"javascript:selectTableRowsByIdPrefix('prefLabelList', - 'LILRR-', 'LICHK-', true)\">All</a>, - <a href=\"javascript:selectTableRowsByIdPrefix('prefLabelList', - 'LILRR-', 'LICHK-', false)\">None</a> + <a href=\"javascript:selectPrefRows('label', true)\">All</a>, + <a href=\"javascript:selectPrefRows('label', false)\">None</a> </td</tr>"; print "<tr class=\"title\"> @@ -2658,7 +2638,7 @@ if (!$line["description"]) $line["description"] = "[No caption]"; - print "<td align='center'><input onclick='toggleSelectRow(this);' + print "<td align='center'><input onclick='toggleSelectPrefRow(this, \"label\");' type=\"checkbox\" id=\"LICHK-".$line["id"]."\"></td>"; print "<td><a href=\"javascript:editLabel($label_id);\">" . @@ -2685,8 +2665,7 @@ "\"></td>"; print "<td><input id=\"iedit_descr\" value=\"".$line["description"]. - "\"></td>"; - + "\"></td>"; } @@ -2701,7 +2680,7 @@ print "</table>"; - print "<p>"; + print "<p id=\"labelOpToolbar\">"; if ($subop == "edit") { print "Edit label: @@ -2712,13 +2691,12 @@ <input type=\"submit\" class=\"button\" onclick=\"javascript:labelEditCancel()\" value=\"Cancel\">"; - } else { - + } else { print " Selection: - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:editSelectedLabel()\" value=\"Edit\"> - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:removeSelectedLabels()\" value=\"Remove\">"; } } else { @@ -3394,28 +3372,37 @@ $tmp_user_pwd = make_password(8); $pwd_hash = 'SHA1:' . sha1($tmp_user_pwd); - db_query($link, "INSERT INTO ttrss_users - (login,pwd_hash,access_level,last_login) - VALUES ('$login', '$pwd_hash', 0, NOW())"); - - $result = db_query($link, "SELECT id FROM ttrss_users WHERE - login = '$login' AND pwd_hash = '$pwd_hash'"); - - if (db_num_rows($result) == 1) { - - $new_uid = db_fetch_result($result, 0, "id"); + login = '$login'"); - print "<div class=\"notice\">Added user <b>".$_GET["login"]. - "</b> with password <b>$tmp_user_pwd</b>.</div>"; - - initialize_user($link, $new_uid); + if (db_num_rows($result) == 0) { + db_query($link, "INSERT INTO ttrss_users + (login,pwd_hash,access_level,last_login) + VALUES ('$login', '$pwd_hash', 0, NOW())"); + + + $result = db_query($link, "SELECT id FROM ttrss_users WHERE + login = '$login' AND pwd_hash = '$pwd_hash'"); + + if (db_num_rows($result) == 1) { + + $new_uid = db_fetch_result($result, 0, "id"); + + print "<div class=\"notice\">Added user <b>".$_GET["login"]. + "</b> with password <b>$tmp_user_pwd</b>.</div>"; + + initialize_user($link, $new_uid); + + } else { + + print "<div class=\"warning\">Could not create user <b>". + $_GET["login"]."</b></div>"; + + } } else { - - print "<div class=\"warning\">Error while adding user <b>". - $_GET["login"].".</b></div>"; - + print "<div class=\"warning\">User <b>". + $_GET["login"]."</b> already exists.</div>"; } } } else if ($subop == "resetPass") { @@ -3481,10 +3468,8 @@ print "<tr><td class=\"selectPrompt\" colspan=\"8\"> Select: - <a href=\"javascript:selectTableRowsByIdPrefix('prefUserList', - 'UMRR-', 'UMCHK-', true)\">All</a>, - <a href=\"javascript:selectTableRowsByIdPrefix('prefUserList', - 'UMRR-', 'UMCHK-', false)\">None</a> + <a href=\"javascript:selectPrefRows('user', true)\">All</a>, + <a href=\"javascript:selectPrefRows('user', false)\">None</a> </td</tr>"; print "<tr class=\"title\"> @@ -3519,18 +3504,9 @@ $access_level_names = array(0 => "User", 10 => "Administrator"); -/* if ($uid == $_SESSION["uid"]) { - - print "<td align='center'><input disabled=\"true\" type=\"checkbox\" - id=\"UMCHK-".$line["id"]."\"></td>"; - - print "<td>".$line["login"]."</td>"; - print "<td>".$line["email"]."</td>"; - print "<td>".$line["access_level"]."</td>"; + if (!$edit_uid || $subop != "edit") { - } else */ if (!$edit_uid || $subop != "edit") { - - print "<td align='center'><input onclick='toggleSelectRow(this);' + print "<td align='center'><input onclick='toggleSelectPrefRow(this, \"user\");' type=\"checkbox\" id=\"UMCHK-$uid\"></td>"; print "<td><a href=\"javascript:editUser($uid);\">" . @@ -3566,9 +3542,6 @@ print "<td><input id=\"iedit_email\" value=\"".$line["email"]. "\"></td>"; -// print "<td><input id=\"iedit_ulevel\" value=\"".$line["access_level"]. -// "\"></td>"; - print "<td>"; print "<select id=\"iedit_ulevel\">"; foreach (array_keys($access_level_names) as $al) { @@ -3594,7 +3567,7 @@ print "</table>"; - print "<p>"; + print "<p id='userOpToolbar'>"; if ($subop == "edit") { print "Edit user: @@ -3607,13 +3580,13 @@ print " Selection: - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:selectedUserDetails()\" value=\"User details\"> - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:editSelectedUser()\" value=\"Edit\"> - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:removeSelectedUsers()\" value=\"Remove\"> - <input type=\"submit\" class=\"button\" + <input type=\"submit\" class=\"button\" disabled=\"true\" onclick=\"javascript:resetSelectedUserPass()\" value=\"Reset password\">"; } diff --git a/functions.js b/functions.js index 6b064b2f0..bcbc93b36 100644 --- a/functions.js +++ b/functions.js @@ -28,7 +28,6 @@ function xmlhttp_ready(obj) { return obj.readyState == 4 || obj.readyState == 0 || !obj.readyState; } - function notify_callback() { var container = document.getElementById('notify'); if (xmlhttp.readyState == 4) { @@ -73,26 +72,31 @@ function delay(gap) { } } -function p_notify(msg) { - - var n = parent.document.getElementById("notify"); - var nb = parent.document.getElementById("notify_body"); - - if (!n || !nb) return; - - if (msg == "") { - n.style.display = "none"; - } else { - n.style.display = "block"; +var notify_hide_timerid = false; +var notify_last_doc = false; + +function hide_notify() { + if (notify_last_doc) { + var n = notify_last_doc.getElementById("notify"); + if (navigator.userAgent.match("Firefox")) { + if (notify_opacity >= 0) { + notify_opacity = notify_opacity - 0.2; + 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"; + } } - - nb.innerHTML = msg; } -function notify(msg) { +function notify_real(msg, doc) { - var n = document.getElementById("notify"); - var nb = document.getElementById("notify_body"); + var n = doc.getElementById("notify"); + var nb = doc.getElementById("notify_body"); if (!n || !nb) return; @@ -104,6 +108,22 @@ function notify(msg) { nb.innerHTML = msg; + if (notify_hide_timerid) { + window.clearTimeout(notify_hide_timerid); + } + + notify_last_doc = doc; + notify_opacity = 1; + + notify_hide_timerid = window.setTimeout(hide_notify, 3000); +} + +function p_notify(msg) { + notify_real(msg, parent.document); +} + +function notify(msg) { + notify_real(msg, document); } function printLockingError() { @@ -182,7 +182,7 @@ function updateFeedList(sort_key) { // document.getElementById("prefContent").innerHTML = "Loading feeds, please wait..."; - p_notify("Loading, please wait..."); +// p_notify("Loading, please wait..."); var feed_search = document.getElementById("feed_search"); var search = ""; @@ -205,7 +205,7 @@ function updateUsersList() { // document.getElementById("prefContent").innerHTML = "Loading feeds, please wait..."; - p_notify("Loading, please wait..."); +// p_notify("Loading, please wait..."); xmlhttp.open("GET", "backend.php?op=pref-users", true); xmlhttp.onreadystatechange=userlist_callback; @@ -1220,7 +1220,7 @@ function updateFilterList() { // document.getElementById("prefContent").innerHTML = "Loading filters, please wait..."; - p_notify("Loading, please wait..."); +// p_notify("Loading, please wait..."); xmlhttp.open("GET", "backend.php?op=pref-filters", true); xmlhttp.onreadystatechange=filterlist_callback; @@ -1235,7 +1235,7 @@ function updateLabelList() { return } - p_notify("Loading, please wait..."); +// p_notify("Loading, please wait..."); // document.getElementById("prefContent").innerHTML = "Loading labels, please wait..."; @@ -1251,7 +1251,7 @@ function updatePrefsList() { return } - p_notify("Loading, please wait..."); +// p_notify("Loading, please wait..."); xmlhttp.open("GET", "backend.php?op=pref-prefs", true); xmlhttp.onreadystatechange=prefslist_callback; @@ -1417,7 +1417,7 @@ function updateBigFeedBrowser(limit) { return } - p_notify("Loading, please wait..."); +// p_notify("Loading, please wait..."); var query = "backend.php?op=pref-feed-browser"; @@ -1471,3 +1471,81 @@ function validateNewPassword(form) { } return true; } + +function selectPrefRows(kind, select) { + + if (kind) { + var opbarid = false; + var nchk = false; + var nrow = false; + var lname = false; + + if (kind == "feed") { + opbarid = "feedOpToolbar"; + nrow = "FEEDR-"; + nchk = "FRCHK-"; + lname = "prefFeedList"; + } else if (kind == "fcat") { + opbarid = "catOpToolbar"; + nrow = "FCATR-"; + nchk = "FCHK-"; + lname = "prefFeedCatList"; + } else if (kind == "filter") { + opbarid = "filterOpToolbar"; + nrow = "FILRR-"; + nchk = "FICHK-"; + lname = "prefFilterList"; + } else if (kind == "label") { + opbarid = "labelOpToolbar"; + nrow = "LILRR-"; + nchk = "LCHK-"; + lname = "prefLabelList"; + } else if (kind == "user") { + opbarid = "userOpToolbar"; + nrow = "UMRR-"; + nchk = "UMCHK-"; + lname = "prefUserList"; + } + + if (opbarid) { + selectTableRowsByIdPrefix(lname, nrow, nchk, select); + disableContainerChildren(opbarid, !select); + } + + } +} + + +function toggleSelectPrefRow(sender, kind) { + + toggleSelectRow(sender); + + if (kind) { + var opbarid = false; + var nsel = -1; + + if (kind == "feed") { + opbarid = "feedOpToolbar"; + nsel = getSelectedFeeds(); + } else if (kind == "fcat") { + opbarid = "catOpToolbar"; + nsel = getSelectedFeedCats(); + } else if (kind == "filter") { + opbarid = "filterOpToolbar"; + nsel = getSelectedFilters(); + } else if (kind == "label") { + opbarid = "labelOpToolbar"; + nsel = getSelectedLabels(); + } else if (kind == "user") { + opbarid = "userOpToolbar"; + nsel = getSelectedUsers(); + } + + if (opbarid && nsel != -1) { + disableContainerChildren(opbarid, nsel == false); + } + + } +} + + diff --git a/tt-rss.css b/tt-rss.css index b1b2a23a8..09678ec42 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -299,13 +299,16 @@ td.notifyBox { background : #fff7d5; border : 1px solid #d7c47a; padding : 3px; - top : 2px; - right : 2px; - float : right; + top : 25px; + right : 150px; + min-width : 300px; position : absolute; -moz-border-radius : 3px; font-size : x-small; font-weight : bold; + text-align : center; + float : right; + padding : 3px 20px 3px 20px; } #dispSwitch { @@ -522,23 +525,26 @@ div.helpResponse { #infoBoxTitle { border-width : 1px 1px 1px 1px; - border-style : solid; - border-color : #88b0f0; - background-color : #88b0f0; - padding : 2px; - color : white; + border-style : solid; + border-color : #88b0f0; + background-color : #88b0f0; + padding : 2px; + color : white; } #infoBox { border-width : 1px 1px 1px 1px; - border-style : solid; - border-color : #88b0f0; + border-style : solid; + border-color : #88b0f0; font-size : small; position : relative; bottom : 2px; right : 2px; - background-color : #ecf4ff; - padding-bottom : 5px; + padding-bottom : 5px; + background-image : url("images/prefs-content.png"); + background-position : top left; + background-repeat : repeat-x; + background-color : white; } #infoBoxShadow { |