feed editor, xmlhttp locking in preferences, try to initialize xmlhttp_rpc via ActiveX and a big piggie
This commit is contained in:
parent
61c1a4d190
commit
508a81e1b6
6 changed files with 198 additions and 8 deletions
37
backend.php
37
backend.php
|
@ -356,7 +356,42 @@
|
|||
$subop = $_GET["subop"];
|
||||
|
||||
if ($subop == "edit") {
|
||||
print "<p>[Edit feed placeholder]</p>";
|
||||
|
||||
$feed_id = $_GET["id"];
|
||||
|
||||
$result = pg_query("SELECT title,feed_url
|
||||
FROM ttrss_feeds WHERE id = '$feed_id'");
|
||||
|
||||
$fedit_link = pg_fetch_result($result, 0, "feed_url");
|
||||
$fedit_title = pg_fetch_result($result, 0, "title");
|
||||
|
||||
print "<table class=\"prefAddFeed\">
|
||||
<td>Title:</td><td><input id=\"fedit_title\" value=\"$fedit_title\"></td></tr>
|
||||
<td>Link:</td><td><input id=\"fedit_link\" value=\"$fedit_link\"></td></tr>
|
||||
<tr><td colspan=\"2\" align=\"right\">
|
||||
<a class=\"button\" href=\"javascript:feedEditCancel()\">Cancel</a>
|
||||
<a class=\"button\" href=\"javascript:feedEditSave($feed_id)\">Save</a>
|
||||
</td></tr>
|
||||
</table>";
|
||||
|
||||
} else {
|
||||
|
||||
print "<table class=\"prefAddFeed\">
|
||||
<td><input id=\"fadd_link\"></td>
|
||||
<td colspan=\"4\" align=\"right\">
|
||||
<a class=\"button\" href=\"javascript:addFeed()\">Add feed</a></td></tr>
|
||||
</table>";
|
||||
|
||||
}
|
||||
|
||||
if ($subop == "editSave") {
|
||||
$feed_title = pg_escape_string($_GET["t"]);
|
||||
$feed_link = pg_escape_string($_GET["l"]);
|
||||
$feed_id = $_GET["id"];
|
||||
|
||||
$result = pg_query("UPDATE ttrss_feeds SET
|
||||
title = '$feed_title', feed_url = '$feed_link' WHERE id = '$feed_id'");
|
||||
|
||||
}
|
||||
|
||||
if ($subop == "remove") {
|
||||
|
|
12
functions.js
12
functions.js
|
@ -12,6 +12,14 @@ function param_unescape(arg) {
|
|||
return unescape(arg);
|
||||
}
|
||||
|
||||
function delay(gap) {
|
||||
var then,now;
|
||||
then=new Date().getTime();
|
||||
now=then;
|
||||
while((now-then)<gap) {
|
||||
now=new Date().getTime();
|
||||
}
|
||||
}
|
||||
|
||||
function notify(msg) {
|
||||
|
||||
|
@ -27,4 +35,8 @@ function notify(msg) {
|
|||
|
||||
}
|
||||
|
||||
function printLockingError() {
|
||||
notify("Please wait until operation finishes");
|
||||
}
|
||||
|
||||
|
||||
|
|
125
prefs.js
125
prefs.js
|
@ -42,6 +42,11 @@ function notify_callback() {
|
|||
|
||||
function updateFeedList() {
|
||||
|
||||
if (xmlhttp.readyState != 4 && xmlhttp.readyState != 0) {
|
||||
printLockingError();
|
||||
return
|
||||
}
|
||||
|
||||
document.getElementById("feeds").innerHTML = "Loading feeds, please wait...";
|
||||
|
||||
xmlhttp.open("GET", "backend.php?op=pref-feeds", true);
|
||||
|
@ -66,6 +71,11 @@ function toggleSelectRow(sender) {
|
|||
|
||||
function addFeed() {
|
||||
|
||||
if (xmlhttp.readyState != 4 && xmlhttp.readyState != 0) {
|
||||
printLockingError();
|
||||
return
|
||||
}
|
||||
|
||||
var link = document.getElementById("fadd_link");
|
||||
|
||||
if (link.value.length == 0) {
|
||||
|
@ -86,7 +96,12 @@ function addFeed() {
|
|||
|
||||
function editFeed(feed) {
|
||||
|
||||
notify("Editing feed...");
|
||||
// notify("Editing feed...");
|
||||
|
||||
if (xmlhttp.readyState != 4 && xmlhttp.readyState != 0) {
|
||||
printLockingError();
|
||||
return
|
||||
}
|
||||
|
||||
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=edit&id=" +
|
||||
param_escape(feed), true);
|
||||
|
@ -113,6 +128,11 @@ function getSelectedFeeds() {
|
|||
|
||||
function readSelectedFeeds() {
|
||||
|
||||
if (xmlhttp.readyState != 4 && xmlhttp.readyState != 0) {
|
||||
printLockingError();
|
||||
return
|
||||
}
|
||||
|
||||
var sel_rows = getSelectedFeeds();
|
||||
|
||||
if (sel_rows.length > 0) {
|
||||
|
@ -133,6 +153,11 @@ function readSelectedFeeds() {
|
|||
|
||||
function unreadSelectedFeeds() {
|
||||
|
||||
if (xmlhttp.readyState != 4 && xmlhttp.readyState != 0) {
|
||||
printLockingError();
|
||||
return
|
||||
}
|
||||
|
||||
var sel_rows = getSelectedFeeds();
|
||||
|
||||
if (sel_rows.length > 0) {
|
||||
|
@ -153,6 +178,11 @@ function unreadSelectedFeeds() {
|
|||
|
||||
function removeSelectedFeeds() {
|
||||
|
||||
if (xmlhttp.readyState != 4 && xmlhttp.readyState != 0) {
|
||||
printLockingError();
|
||||
return
|
||||
}
|
||||
|
||||
var sel_rows = getSelectedFeeds();
|
||||
|
||||
if (sel_rows.length > 0) {
|
||||
|
@ -172,10 +202,101 @@ function removeSelectedFeeds() {
|
|||
|
||||
}
|
||||
|
||||
function feedEditCancel() {
|
||||
|
||||
if (xmlhttp.readyState != 4 && xmlhttp.readyState != 0) {
|
||||
printLockingError();
|
||||
return
|
||||
}
|
||||
|
||||
notify("Operation cancelled.");
|
||||
|
||||
xmlhttp.open("GET", "backend.php?op=pref-feeds", true);
|
||||
xmlhttp.onreadystatechange=feedlist_callback;
|
||||
xmlhttp.send(null);
|
||||
|
||||
}
|
||||
|
||||
function feedEditSave(feed) {
|
||||
|
||||
if (xmlhttp.readyState != 4 && xmlhttp.readyState != 0) {
|
||||
printLockingError();
|
||||
return
|
||||
}
|
||||
|
||||
notify("Saving feed.");
|
||||
|
||||
var link = document.getElementById("fedit_link").value;
|
||||
var title = document.getElementById("fedit_title").value;
|
||||
|
||||
if (link.length == 0) {
|
||||
notify("Feed link cannot be blank.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (title.length == 0) {
|
||||
notify("Feed title cannot be blank.");
|
||||
return;
|
||||
}
|
||||
|
||||
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editSave&id=" +
|
||||
feed + "&l=" + param_escape(link) + "&t=" + param_escape(title) ,true);
|
||||
xmlhttp.onreadystatechange=feedlist_callback;
|
||||
xmlhttp.send(null);
|
||||
|
||||
}
|
||||
|
||||
function editSelectedFeed() {
|
||||
var rows = getSelectedFeeds();
|
||||
|
||||
if (rows.length == 0) {
|
||||
notify("No feeds are selected.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (rows.length > 1) {
|
||||
notify("Please select one feed.");
|
||||
return;
|
||||
}
|
||||
|
||||
editFeed(rows[0]);
|
||||
|
||||
}
|
||||
|
||||
var seq = "";
|
||||
|
||||
function hotkey_handler(e) {
|
||||
var keycode;
|
||||
|
||||
if (window.event) {
|
||||
keycode = window.event.keyCode;
|
||||
} else if (e) {
|
||||
keycode = e.which;
|
||||
}
|
||||
|
||||
if (keycode == 13 || keycode == 27) {
|
||||
seq = "";
|
||||
} else {
|
||||
seq = seq + "" + keycode;
|
||||
}
|
||||
|
||||
var piggie = document.getElementById("piggie");
|
||||
|
||||
if (seq.match("807371717369")) {
|
||||
piggie.style.display = "block";
|
||||
seq = "";
|
||||
notify("I loveded it!!!");
|
||||
} else {
|
||||
piggie.style.display = "none";
|
||||
notify("");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function init() {
|
||||
|
||||
updateFeedList();
|
||||
|
||||
document.onkeydown = hotkey_handler;
|
||||
notify("");
|
||||
|
||||
}
|
||||
|
|
|
@ -29,15 +29,20 @@
|
|||
<td class="prefContent" valign="top" colspan="2">
|
||||
<h2>Feed Configuration</h2>
|
||||
|
||||
<!--
|
||||
<table class="prefAddFeed">
|
||||
<td><input id="fadd_link"></td>
|
||||
<td colspan="4" align="right">
|
||||
<a class="button" href="javascript:addFeed()">Add feed</a></td></tr>
|
||||
</table>
|
||||
</table>
|
||||
-->
|
||||
<div id="piggie"> </div>
|
||||
|
||||
<div id="feeds"> </div>
|
||||
|
||||
<p>Selection:
|
||||
<a class="button"
|
||||
href="javascript:editSelectedFeed()">Edit</a>
|
||||
<a class="buttonWarn"
|
||||
href="javascript:removeSelectedFeeds()">Remove</a>
|
||||
<a class="button"
|
||||
|
|
19
tt-rss.css
19
tt-rss.css
|
@ -148,6 +148,7 @@ table.main td.prefContent {
|
|||
border-width : 1px 0px 0px 0px;
|
||||
border-color : #c0c0c0;
|
||||
border-style : solid;
|
||||
|
||||
}
|
||||
|
||||
table.main td.content {
|
||||
|
@ -320,3 +321,21 @@ table.postTable td.post {
|
|||
padding : 20px;
|
||||
|
||||
}
|
||||
|
||||
#piggie {
|
||||
width : 400;
|
||||
height : 400;
|
||||
left : 50;
|
||||
background-color : white;
|
||||
display : none;
|
||||
z-index : 3;
|
||||
background-image : url("http://madoka.spb.ru/stuff/fox/piggie.png");
|
||||
background-position : center center;
|
||||
background-repeat : no-repeat;
|
||||
position : absolute;
|
||||
border : 1px solid pink;
|
||||
margin-left : auto;
|
||||
margin-right : auto;
|
||||
-moz-border-radius : 10px;
|
||||
opacity : 0.8;
|
||||
}
|
||||
|
|
|
@ -18,8 +18,10 @@ try {
|
|||
} catch (e) {
|
||||
try {
|
||||
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
xmlhttp_rpc = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
} catch (E) {
|
||||
xmlhttp = false;
|
||||
xmlhttp_rpc = false;
|
||||
}
|
||||
}
|
||||
@end @*/
|
||||
|
@ -30,10 +32,6 @@ if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
|
|||
|
||||
}
|
||||
|
||||
function printLockingError() {
|
||||
notify("Please wait until operation finishes");
|
||||
}
|
||||
|
||||
function notify_callback() {
|
||||
var container = document.getElementById('notify');
|
||||
if (xmlhttp.readyState == 4) {
|
||||
|
|
Loading…
Reference in a new issue