diff options
-rw-r--r-- | ajax/createfeed.php | 12 | ||||
-rw-r--r-- | ajax/deletefeed.php | 9 | ||||
-rw-r--r-- | ajax/deletefolder.php | 13 | ||||
-rw-r--r-- | js/news.js | 42 | ||||
-rw-r--r-- | lib/feedmapper.php | 4 | ||||
-rw-r--r-- | templates/part.items.deleted.php | 4 |
6 files changed, 62 insertions, 22 deletions
diff --git a/ajax/createfeed.php b/ajax/createfeed.php index 364679189..0b05f3ab4 100644 --- a/ajax/createfeed.php +++ b/ajax/createfeed.php @@ -44,9 +44,13 @@ if($feed == null || !$feedid) { exit(); } -$tmpl = new OCP\Template("news", "part.listfeed"); -$tmpl->assign('child', $feed); -$listfeed = $tmpl->fetchPage(); +$tmpl_listfeed = new OCP\Template("news", "part.listfeed"); +$tmpl_listfeed->assign('child', $feed); +$listfeed = $tmpl_listfeed->fetchPage(); -OCP\JSON::success(array('data' => array('message' => $l->t('Feed added!'), 'listfeed' => $listfeed))); +$tmpl_items = new OCP\Template("news", "part.items"); +$tmpl_items->assign('feedid', $feedid); +$part_items = $tmpl_items->fetchPage(); + +OCP\JSON::success(array('data' => array( 'message' => $l->t('Feed added!'), 'listfeed' => $listfeed, 'part_items' => $part_items ))); diff --git a/ajax/deletefeed.php b/ajax/deletefeed.php index d31a9417d..71574aa1b 100644 --- a/ajax/deletefeed.php +++ b/ajax/deletefeed.php @@ -4,10 +4,10 @@ * * @author Alessandro Cosentino * Copyright (c) 2012 - Alessandro Cosentino <cosenal@gmail.com> -* +* * This file is licensed under the Affero General Public License version 3 or later. * See the COPYING-README file -* +* */ // Check if we are a user @@ -30,4 +30,7 @@ if(!$success) { exit(); } -OCP\JSON::success(array('data' => array( 'feedid' => $feedid ))); +$tmpl = new OCP\Template("news", "part.items.deleted"); +$part_items = $tmpl->fetchPage(); + +OCP\JSON::success(array('data' => array( 'feedid' => $feedid, 'part_items' => $part_items ))); diff --git a/ajax/deletefolder.php b/ajax/deletefolder.php index 7c38557f6..65eec5bdf 100644 --- a/ajax/deletefolder.php +++ b/ajax/deletefolder.php @@ -18,6 +18,8 @@ OCP\JSON::callCheck(); $userid = OCP\USER::getUser(); $folderid = trim($_POST['folderid']); +$shownfeedid = trim($_POST['shownfeedid']); +$part_items = false; $foldermapper = new OC_News_FolderMapper(); @@ -27,4 +29,13 @@ if(!$foldermapper->deleteById($folderid)) { exit(); } -OCP\JSON::success(array('data' => array( 'folderid' => $folderid ))); +// lets check if the currently shown feed is among the deleted feeds +if ($shownfeedid != null) { + $feedmapper = new OC_News_FeedMapper(); + if (!$feedmapper->findById($shownfeedid)) { + $tmpl = new OCP\Template("news", "part.items.deleted"); + $part_items = $tmpl->fetchPage(); + } +} + +OCP\JSON::success(array('data' => array( 'folderid' => $folderid, 'part_items' => $part_items ))); diff --git a/js/news.js b/js/news.js index da3abce81..f431c1c3a 100644 --- a/js/news.js +++ b/js/news.js @@ -62,7 +62,6 @@ News={ $.post(url, { name: displayname, parentid: folderid }, function(jsondata){ if(jsondata.status == 'success'){ - //$(button).closest('tr').prev().html(jsondata.page).show().next().remove(); $('div[data-id="' + folderid + '"] > ul').append(jsondata.data.listfolder); setupFeedList(); OC.dialogs.confirm(t('news', 'Do you want to add another feed?'), t('news', 'Feed added!'), function(answer) { @@ -82,9 +81,15 @@ News={ $('#feeds_delete').tipsy('hide'); OC.dialogs.confirm(t('news', 'Are you sure you want to delete this folder and all its feeds?'), t('news', 'Warning'), function(answer) { if(answer == true) { - $.post(OC.filePath('news', 'ajax', 'deletefolder.php'),{'folderid':folderid},function(jsondata){ + var rightcontent = $('div.rightcontent'); + var shownfeedid = rightcontent.attr('data-id'); + $.post(OC.filePath('news', 'ajax', 'deletefolder.php'),{'folderid':folderid, 'shownfeedid':shownfeedid},function(jsondata){ if(jsondata.status == 'success'){ $('div.collapsable_container[data-id="' + jsondata.data.folderid + '"]').remove(); + if(jsondata.data.part_items) { + rightcontent.empty(); + rightcontent.html(jsondata.data.part_items); + } } else{ OC.dialogs.alert(jsondata.data.message, t('news', 'Error')); @@ -118,6 +123,10 @@ News={ OC.dialogs.confirm(t('news', 'Do you want to add another feed?'), t('news', 'Feed added!'), function(answer) { if(!answer) { $('#addfeed_dialog').dialog('destroy').remove(); + var rightcontent = $('div.rightcontent'); + rightcontent.empty(); + rightcontent.html(jsondata.data.part_items); + setupRightContent(); } }); } else { @@ -136,7 +145,11 @@ News={ $.post(OC.filePath('news', 'ajax', 'deletefeed.php'),{'feedid':feedid},function(jsondata){ if(jsondata.status == 'success'){ $('li.feeds_list[data-id="'+jsondata.data.feedid+'"]').remove(); - //change the right view too (maybe a message to subscribe, like in Google Reader?) + var rightcontent = $('div.rightcontent'); + if(rightcontent.attr('data-id') == feedid) { + rightcontent.empty(); + rightcontent.html(jsondata.data.part_items); + } } else{ OC.dialogs.alert(jsondata.data.message, t('news', 'Error')); @@ -234,16 +247,7 @@ function setupFeedList() { list.find('#unreaditemcounter').show(); } -$(document).ready(function(){ - - $('#addfeed').click(function() { - News.UI.overview('#addfeed_dialog','feeddialog.php'); - }); - - $('#addfolder').click(function() { - News.UI.overview('#addfolder_dialog','folderdialog.php'); - }); - +function setupRightContent() { $('.accordion .title_unread').click(function() { $(this).next().toggle(); return false; @@ -253,6 +257,17 @@ $(document).ready(function(){ $(this).next().toggle(); return false; }).next().hide(); +} + +$(document).ready(function(){ + + $('#addfeed').click(function() { + News.UI.overview('#addfeed_dialog','feeddialog.php'); + }); + + $('#addfolder').click(function() { + News.UI.overview('#addfolder_dialog','folderdialog.php'); + }); $('#addfeedfolder').click(function(event) { event.stopPropagation(); @@ -267,6 +282,7 @@ $(document).ready(function(){ }); setupFeedList(); + setupRightContent(); News.Feed.updateAll(); var updateInterval = 200000; //how often the feeds should update (in msec) diff --git a/lib/feedmapper.php b/lib/feedmapper.php index 6461b6bf7..a533691cb 100644 --- a/lib/feedmapper.php +++ b/lib/feedmapper.php @@ -59,7 +59,9 @@ class OC_News_FeedMapper { public function findById($id){ $stmt = OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE id = ?'); $result = $stmt->execute(array($id)); - $row = $result->fetchRow(); + if(!$row = $result->fetchRow()) + return null; + $url = $row['url']; $title = $row['title']; $feed = new OC_News_Feed($url, $title, null, $id); diff --git a/templates/part.items.deleted.php b/templates/part.items.deleted.php new file mode 100644 index 000000000..4d2ff0263 --- /dev/null +++ b/templates/part.items.deleted.php @@ -0,0 +1,4 @@ +<div id="items_deleted"> +<!-- TODO: this message is a stub, maybe mimic google reader etc... --> + <?php echo $l->t('You have just deleted this feed') ?> +</div>
\ No newline at end of file |