diff options
author | Alessandro Cosentino <cosenal@gmail.com> | 2012-07-05 17:22:24 -0400 |
---|---|---|
committer | Alessandro Cosentino <cosenal@gmail.com> | 2012-07-05 17:22:24 -0400 |
commit | e5f291b09c4403bf5ffdd131c662f35a92ec363e (patch) | |
tree | 7e170eecc57df46d239f9a0b908a12b7163b34f1 | |
parent | 96041641949c55abf2b432bc08ea493b40dec873 (diff) |
button to remove folder
-rw-r--r-- | ajax/deletefeed.php | 14 | ||||
-rw-r--r-- | ajax/deletefolder.php | 33 | ||||
-rw-r--r-- | js/news.js | 55 | ||||
-rw-r--r-- | lib/feedmapper.php | 18 | ||||
-rw-r--r-- | lib/foldermapper.php | 22 | ||||
-rw-r--r-- | lib/itemmapper.php | 10 | ||||
-rw-r--r-- | templates/part.feeds.php | 8 |
7 files changed, 94 insertions, 66 deletions
diff --git a/ajax/deletefeed.php b/ajax/deletefeed.php index b54620d48..a6f74f583 100644 --- a/ajax/deletefeed.php +++ b/ajax/deletefeed.php @@ -17,19 +17,17 @@ OCP\JSON::callCheck(); $userid = OCP\USER::getUser(); -$feedurl = trim($_POST['feedurl']); +$feedid = trim($_POST['feedid']); -$feed = OC_News_Utils::fetch($feedurl); $feedmapper = new OC_News_FeedMapper(); -$feedid = $feedmapper->save($feed, 0); +$success = $feedmapper->deleteById($feedid); $l = OC_L10N::get('news'); -if(!$feedid) { - OCP\JSON::error(array('data' => array('message' => $l->t('Error adding folder.')))); - OCP\Util::writeLog('news','ajax/newfeed.php: Error adding feed: '.$_POST['feedurl'], OCP\Util::ERROR); +if(!$success) { + OCP\JSON::error(array('data' => array('message' => $l->t('Error removing feed.')))); + OCP\Util::writeLog('news','ajax/deletefeed.php: Error removing feed: '.$_POST['feedid'], OCP\Util::ERROR); exit(); } -//TODO: replace the following with a real success case. see contact/ajax/createaddressbook.php for inspirations -OCP\JSON::success(array('data' => array('message' => $l->t('Feed added!')))); +OCP\JSON::success(array('data' => array( 'feedid' => $feedid ))); diff --git a/ajax/deletefolder.php b/ajax/deletefolder.php new file mode 100644 index 000000000..f11a1975f --- /dev/null +++ b/ajax/deletefolder.php @@ -0,0 +1,33 @@ +<?php +/** +* ownCloud - News app +* +* @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 +OCP\JSON::checkLoggedIn(); +OCP\JSON::checkAppEnabled('news'); +OCP\JSON::callCheck(); + +$userid = OCP\USER::getUser(); + +$folderid = trim($_POST['folderid']); + +$foldermapper = new OC_News_FolderMapper(); +$success = $foldermapper->deleteById($folderid); + +$l = OC_L10N::get('news'); + +if(!$success) { + OCP\JSON::error(array('data' => array('message' => $l->t('Error removing folder.')))); + OCP\Util::writeLog('news','ajax/deletefolder.php: Error removing folder: '.$_POST['folderid'], OCP\Util::ERROR); + exit(); +} + +OCP\JSON::success(array('data' => array( 'folderid' => $folderid ))); diff --git a/js/news.js b/js/news.js index 3675fb0db..05305289f 100644 --- a/js/news.js +++ b/js/news.js @@ -41,9 +41,26 @@ News={ OC.dialogs.alert(jsondata.data.message, t('news', 'Error')); } }); + }, + delete:function(folderid) { + $('#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){ + if(jsondata.status == 'success'){ + alert('removed!'); + } + else{ + OC.dialogs.alert(jsondata.data.message, t('news', 'Error')); + } + }); + } + }); + return false; } }, Feed: { + id:'', submit:function(button){ var feedurl = $("#feed_add_url").val().trim(); @@ -65,44 +82,16 @@ News={ } }); }, - doDelete:function() { + delete:function(feedid) { $('#feeds_delete').tipsy('hide'); OC.dialogs.confirm(t('news', 'Are you sure you want to delete this feed?'), t('news', 'Warning'), function(answer) { if(answer == true) { - $.post(OC.filePath('contacts', 'ajax', 'deletefeed.php'),{'id':Contacts.UI.Card.id},function(jsondata){ + $.post(OC.filePath('news', 'ajax', 'deletefeed.php'),{'feedid':feedid},function(jsondata){ if(jsondata.status == 'success'){ - var newid = ''; - var curlistitem = $('#leftcontent [data-id="'+jsondata.data.id+'"]'); - var newlistitem = curlistitem.prev(); - if(newlistitem == undefined) { - newlistitem = curlistitem.next(); - } - curlistitem.remove(); - if(newlistitem != undefined) { - newid = newlistitem.data('id'); - } - $('#rightcontent').data('id',newid); - this.id = this.fn = this.fullname = this.shortname = this.famname = this.givname = this.addname = this.honpre = this.honsuf = ''; - this.data = undefined; - - if($('#contacts li').length > 0) { // Load first in list. - Contacts.UI.Card.update(newid); - } else { - // load intro page - $.getJSON(OC.filePath('contacts', 'ajax', 'loadintro.php'),{},function(jsondata){ - if(jsondata.status == 'success'){ - id = ''; - $('#rightcontent').data('id',''); - $('#rightcontent').html(jsondata.data.page); - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } + alert('removed!'); } else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); + OC.dialogs.alert(jsondata.data.message, t('news', 'Error')); } }); } @@ -126,6 +115,4 @@ $(document).ready(function(){ return false; }).next().hide(); - $('#feeds_delete').click( function() { News.Feed.doDelete(); return false;} ); - });
\ No newline at end of file diff --git a/lib/feedmapper.php b/lib/feedmapper.php index 1073bd288..65b9164de 100644 --- a/lib/feedmapper.php +++ b/lib/feedmapper.php @@ -145,15 +145,13 @@ class OC_News_FeedMapper { return $feedid; } - public function delete(OC_News_Feed $feed){ - $id = $feed->getId(); - - $stmt = OCP\DB::prepare(" - DELETE FROM " . self::tableName . - "WHERE id = $id - "); + public function deleteById($id){ + if ($id == null) { + return false; + } + $stmt = OCP\DB::prepare('DELETE FROM ' . self::tableName .' WHERE id = ?'); - $result = $stmt->execute(); + $result = $stmt->execute(array($id)); $itemMapper = new OC_News_ItemMapper(); //TODO: handle the value that the execute returns @@ -161,6 +159,10 @@ class OC_News_FeedMapper { return true; } + public function delete(OC_News_Feed $feed){ + $id = $feed->getId(); + return deleteById($id); + } public function deleteAll($folderdid){ $id = $feed->getId(); diff --git a/lib/foldermapper.php b/lib/foldermapper.php index 48c4b18ad..ade54c72f 100644 --- a/lib/foldermapper.php +++ b/lib/foldermapper.php @@ -116,20 +116,24 @@ class OC_News_FolderMapper { return $folderid; } - //TODO: replace it with a DELETE INNER JOIN operation public function delete(OC_News_Folder $folder){ - $id = $folder->getId(); - - $stmt = OCP\DB::prepare(" - DELETE FROM " . self::tableName . - "WHERE id = $id - "); + $folderid = $folder->getId(); + return deleteById(folderid); + } + + //TODO: replace it with a DELETE INNER JOIN operation + public function deleteById($folderid){ + if ($folderid == null){ + return false; + } + + $stmt = OCP\DB::prepare('DELETE FROM ' . self::tableName .' WHERE id = ?'); - $result = $stmt->execute(); + $result = $stmt->execute(array($folderid)); $feedMapper = new OC_News_FeedMapper(); //TODO: handle the value that the execute returns - $feedMapper->deleteAll($id); + $feedMapper->deleteAll($folderid); return true; } diff --git a/lib/itemmapper.php b/lib/itemmapper.php index b08dcd86b..db2dd0056 100644 --- a/lib/itemmapper.php +++ b/lib/itemmapper.php @@ -139,12 +139,12 @@ class OC_News_ItemMapper { * @return */ public function deleteAll($feedid){ - $stmt = OCP\DB::prepare(" - DELETE FROM " . self::tableName . - "WHERE feedid = $id - "); + if ($feedid == null) { + return false; + } + $stmt = OCP\DB::prepare('DELETE FROM ' . self::tableName .' WHERE feed_id = ?'); - $result = $stmt->execute(); + $result = $stmt->execute(array($feedid)); return $result; } diff --git a/templates/part.feeds.php b/templates/part.feeds.php index 5adb70d1c..96810992f 100644 --- a/templates/part.feeds.php +++ b/templates/part.feeds.php @@ -4,7 +4,11 @@ echo '<ul style="margin-left:' . 10*$depth . 'px;"> <li style="background-image:url(' . OC_Helper::imagePath('core', 'filetypes/folder.png') . '); background-repeat:no-repeat; background-position:0px 8px; padding-left: 20px; ">' . - '<span class="collapsable">' . $folder->getName() .'</span><ul>'; + '<span class="collapsable">' . $folder->getName() . '</span>'; + if ($depth != 0) { + echo '<button class="svg action" id="feeds_delete" onClick="(News.Folder.delete(' . $folder->getId(). '))" title="' . $l->t('Delete folder') . '"></button>'; + } + echo '<ul>'; $children = $folder->getChildren(); foreach($children as $child) { if ($child instanceOf OC_News_Folder){ @@ -12,7 +16,7 @@ } elseif ($child instanceOf OC_News_Feed) { echo '<li><a href="' . OCP\Util::linkTo('news', 'index.php'). '?feedid=' . $child->getId() . '">' . $child->getTitle() .'</a>'; - echo '<button class="svg action" id="feeds_delete" title="' . $l->t('Delete feed') . '"></button>'; + echo '<button class="svg action" id="feeds_delete" onClick="(News.Feed.delete(' . $child->getId(). '))" title="' . $l->t('Delete feed') . '"></button>'; echo '<button class="svg action" id="feeds_edit" title="' . $l->t('Edit feed') . '"></button>'; echo '</li>'; } |