added publish actions

This commit is contained in:
Hauke Schade 2012-12-13 18:33:59 +01:00
parent 6647bff9f7
commit 97192c4225
2 changed files with 75 additions and 2 deletions

View file

@ -89,6 +89,7 @@ Page {
onPressAndHold: {
feeditemMenu.unread = model.unread
feeditemMenu.marked = model.marked
feeditemMenu.rss = model.rss
feeditemMenu.articleId = model.id
feeditemMenu.url = model.url
feeditemMenu.open() }
@ -138,6 +139,7 @@ Page {
id: feeditems[feeditem].id,
unread: !!feeditems[feeditem].unread,
marked: !!feeditems[feeditem].marked,
rss: feeditems[feeditem].published,
url: feeditems[feeditem].link
});
}
@ -149,6 +151,7 @@ Page {
id: null,
unread: false,
marked: false,
rss: false,
url: ""
});
}
@ -236,6 +239,7 @@ Page {
property bool marked: false
property bool unread: false
property bool rss: false
property string url: ""
property int articleId: 0
@ -248,6 +252,14 @@ Page {
!feeditemMenu.marked,
showFeedItems)
} }
MenuItem {
text: (feeditemMenu.rss?qsTr("Unpublish"):qsTr("Publish"))
onClicked: {
var ttrss = rootWindow.getTTRSS()
ttrss.updateFeedRSS(feeditemMenu.articleId,
!feeditemMenu.rss,
showFeedItems)
} }
MenuItem {
text: (feeditemMenu.unread?qsTr("Mark read"):qsTr("Mark Unread"))
onClicked: {

View file

@ -33,6 +33,7 @@ var state={
'lastfeed': { 'id': null, 'continuation': 0 },
'lastfeeditem': { 'feedId': null, 'articleId': null },
'lastfeeditemunread':{ 'feedId': null, 'articleId': null },
'lastfeeditemrss': { 'feedId': null, 'articleId': null },
};
var requestsPending={
@ -42,6 +43,7 @@ var requestsPending={
'feeditems' : false,
'feeditemstar': false,
'feeditemunread': false,
'feeditemrss' : false,
};
var responsesPending={
@ -51,6 +53,7 @@ var responsesPending={
'feeditems' : false,
'feeditemstar': false,
'feeditemunread': false,
'feeditemrss' : false,
};
var constants={
@ -478,8 +481,21 @@ function processPendingRequests(callback) {
//Get the auth token
login(callback);
else
updateFeedUnrad(state['lastfeeditemunread']['articleId'],
state['lastfeeditemunread']['value'],
updateFeedUnread(state['lastfeeditemunread']['articleId'],
state['lastfeeditemunread']['value'],
callback);
}
else if (requestsPending['feeditemrss']) {
trace(4, 'feeditemrss request pending');
foundWork = true;
if(responsesPending['feeditemrss'])
return foundWork;
if(!state['token'])
//Get the auth token
login(callback);
else
updateFeedRSS(state['lastfeeditemrss']['articleId'],
state['lastfeeditemrss']['value'],
callback);
}
@ -531,6 +547,51 @@ function updateFeedStar(articleId, starred, callback) {
http.send(JSON.stringify(params));
}
function updateFeedRSS(articleId, rss, callback) {
if(responsesPending['feeditemrss'])
return;
if (state['lastfeeditemrss']['articleId'] !== articleId) {
state['lastfeeditemrss']['articleId'] = articleId;
state['lastfeeditemrss']['value'] = rss;
}
// needs to be logged in
if(!state['token']) {
requestsPending['feeditemrss'] = true;
processPendingRequests(callback);
return;
}
responsesPending['feeditemrss'] = true;
var params = {
'op': 'updateArticle',
'sid': state['token'],
'article_ids': articleId,
'field': 1,
'mode': (rss ? 1 : 0)
}
var http = new XMLHttpRequest();
http.open("POST", state['url'], true);
http.setRequestHeader('Content-type','application/json; charset=utf-8');
http.onreadystatechange = function() {
if (http.readyState === XMLHttpRequest.HEADERS_RECEIVED) {
trace(3, "Response Headers -->");
trace(3, http.getAllResponseHeaders());
}
else if (http.readyState === XMLHttpRequest.DONE) {
state['feeditemcache'][articleId].published = rss;
responsesPending['feeditemrss'] = false;
if(!processPendingRequests(callback))
if(callback)
callback(0);
}
}
http.send(JSON.stringify(params));
}
function updateFeedUnread(articleId, unread, callback) {
if(responsesPending['feeditemunread'])
return;