summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlessandro Cosentino <cosenal@gmail.com>2012-07-05 17:22:24 -0400
committerAlessandro Cosentino <cosenal@gmail.com>2012-07-05 17:22:24 -0400
commite5f291b09c4403bf5ffdd131c662f35a92ec363e (patch)
tree7e170eecc57df46d239f9a0b908a12b7163b34f1
parent96041641949c55abf2b432bc08ea493b40dec873 (diff)
button to remove folder
-rw-r--r--ajax/deletefeed.php14
-rw-r--r--ajax/deletefolder.php33
-rw-r--r--js/news.js55
-rw-r--r--lib/feedmapper.php18
-rw-r--r--lib/foldermapper.php22
-rw-r--r--lib/itemmapper.php10
-rw-r--r--templates/part.feeds.php8
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>';
}