summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlessandro Cosentino <cosenal@gmail.com>2012-08-07 18:21:48 -0400
committerAlessandro Cosentino <cosenal@gmail.com>2012-08-07 18:21:48 -0400
commit4be12df25c8b0890db84bcac687aa00b16e3108c (patch)
treee7d0a901c44ae7c05983c033623cf983cf51402c
parent8ee6670cadf887669f6663d4f556921a9fd66cbe (diff)
handle SimplePie issues when adding feed
-rw-r--r--ajax/createfeed.php15
-rw-r--r--appinfo/info.xml2
-rw-r--r--appinfo/version1
-rw-r--r--js/news.js61
4 files changed, 70 insertions, 9 deletions
diff --git a/ajax/createfeed.php b/ajax/createfeed.php
index 1fe36f20a..db02a1723 100644
--- a/ajax/createfeed.php
+++ b/ajax/createfeed.php
@@ -10,6 +10,21 @@
*
*/
+register_shutdown_function("shutdown");
+
+/* handle the case of fatal error */
+function shutdown() {
+ $l = OC_L10N::get('news');
+ $error = error_get_last();
+ if($error['type'] & (E_ERROR | E_COMPILE_ERROR | E_CORE_ERROR)) { //all fatal errors
+ if (strpos($error['message'], 'get_uri')) {
+ //handle a fatal error caused by a SimplePie bug (https://github.com/simplepie/simplepie/issues/214)
+ OCP\Util::writeLog('news','ajax/createfeed.php: Fatal error:' . $error['message'] , OCP\Util::ERROR);
+ exit();
+ }
+ }
+}
+
// Check if we are a user
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('news');
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 9d20afde0..b88f2451c 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -3,8 +3,8 @@
<id>news</id>
<name>News</name>
<description>An RSS/Atom feed reader</description>
- <version>6.2</version>
<licence>AGPL</licence>
+ <shipped>true</shipped>
<author>Alessandro Cosentino</author>
<require>4</require>
</info>
diff --git a/appinfo/version b/appinfo/version
new file mode 100644
index 000000000..913671cdf
--- /dev/null
+++ b/appinfo/version
@@ -0,0 +1 @@
+6.2 \ No newline at end of file
diff --git a/js/news.js b/js/news.js
index 912717137..a589ee644 100644
--- a/js/news.js
+++ b/js/news.js
@@ -106,6 +106,7 @@ News={
Feed: {
id:'',
submit:function(button){
+
var feedurl = $("#feed_add_url").val().trim();
if(feedurl.length == 0) {
@@ -115,11 +116,15 @@ News={
$(button).attr("disabled", true);
$(button).prop('value', t('news', 'Adding...'));
-
+
var folderid = $('#inputfolderid:input[name="folderid"]').val();
-
- $.post(OC.filePath('news', 'ajax', 'createfeed.php'), { feedurl: feedurl, folderid: folderid },
- function(jsondata){
+
+ $.ajax({
+ type: "POST",
+ url: OC.filePath('news', 'ajax', 'createfeed.php'),
+ data: { 'feedurl': feedurl, 'folderid': folderid },
+ dataType: "json",
+ success: function(jsondata){
if(jsondata.status == 'success'){
$('div[data-id="' + folderid + '"] > ul').append(jsondata.data.listfeed);
setupFeedList();
@@ -138,10 +143,50 @@ News={
} else {
OC.dialogs.alert(jsondata.data.message, t('news', 'Error'));
}
- $("#feed_add_url").val('');
- $(button).attr("disabled", false);
- $(button).prop('value', t('news', 'Add feed'));
+ $("#feed_add_url").val('');
+ $(button).attr("disabled", false);
+ $(button).prop('value', t('news', 'Add feed'));
+ },
+ error: function(xhr) {
+ OC.dialogs.alert(t('news', 'Error while parsing the feed'), t('news', 'Fatal Error'));
+ $("#feed_add_url").val('');
+ $(button).attr("disabled", false);
+ $(button).prop('value', t('news', 'Add feed'));
+ },
+ statusCode: {
+ 500: function() {
+ OC.dialogs.alert(t('news', 'Error while parsing the feed'), t('news', 'Fatal Error'));
+ $("#feed_add_url").val('');
+ $(button).attr("disabled", false);
+ $(button).prop('value', t('news', 'Add feed'));
+ }
+ }
});
+
+// $.post(OC.filePath('news', 'ajax', 'createfeed.php'), { feedurl: feedurl, folderid: folderid },
+// function(jsondata){
+// if(jsondata.status == 'success'){
+// $('div[data-id="' + folderid + '"] > ul').append(jsondata.data.listfeed);
+// setupFeedList();
+// 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.attr('data-id', jsondata.data.feedid);
+// rightcontent.html(jsondata.data.part_items);
+// rightcontent.find('ul.accordion').before(jsondata.data.part_newfeed);
+// setupRightContent();
+// transformCollapsableTrigger();
+// }
+// });
+// } else {
+// OC.dialogs.alert(jsondata.data.message, t('news', 'Error'));
+// }
+// $("#feed_add_url").val('');
+// $(button).attr("disabled", false);
+// $(button).prop('value', t('news', 'Add feed'));
+// });
},
'delete':function(feedid) {
@@ -325,9 +370,9 @@ $(document).ready(function(){
News.Feed.updateAll();
var updateInterval = 200000; //how often the feeds should update (in msec)
setInterval('News.Feed.updateAll()', updateInterval);
+
});
$(document).click(function(event) {
$('#feedfoldermenu').hide();
});
-