aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-02-27 17:51:13 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-02-27 17:51:13 +0100
commitc9d3d78340e062b9e2fe19c8c55b8bdc75392e63 (patch)
tree391f56d07d73c3d05d5c50634463453c135564d2
parent38c2d671e3480b8e9fb38491797e44fdea317006 (diff)
CSP manually refreshing feeds
https://github.com/FreshRSS/FreshRSS/issues/1075
-rwxr-xr-xapp/Controllers/javascriptController.php2
-rw-r--r--app/views/javascript/actualize.phtml69
-rw-r--r--p/scripts/main.js44
3 files changed, 53 insertions, 62 deletions
diff --git a/app/Controllers/javascriptController.php b/app/Controllers/javascriptController.php
index e3ae3669e..00a7b5c38 100755
--- a/app/Controllers/javascriptController.php
+++ b/app/Controllers/javascriptController.php
@@ -6,7 +6,7 @@ class FreshRSS_javascript_Controller extends Minz_ActionController {
}
public function actualizeAction() {
- header('Content-Type: text/javascript; charset=UTF-8');
+ header('Content-Type: application/json; charset=UTF-8');
$feedDAO = FreshRSS_Factory::createFeedDao();
$this->view->feeds = $feedDAO->listFeedsOrderUpdate(FreshRSS_Context::$user_conf->ttl_default);
}
diff --git a/app/views/javascript/actualize.phtml b/app/views/javascript/actualize.phtml
index 454228909..3baabf748 100644
--- a/app/views/javascript/actualize.phtml
+++ b/app/views/javascript/actualize.phtml
@@ -1,56 +1,13 @@
-"use strict";
-var feeds = [<?php foreach ($this->feeds as $feed) { ?>{<?php
- ?>url: "<?php echo Minz_Url::display(array('c' => 'feed', 'a' => 'actualize', 'params' => array('id' => $feed->id(), 'ajax' => '1')), 'php'); ?>",<?php
- ?>title: "<?php echo $feed->name(); ?>"<?php
-?>},<?php } ?>],
- feed_processed = 0,
- feed_count = feeds.length;
-
-function initProgressBar(init) {
- if (init) {
- $("body").after("\<div id=\"actualizeProgress\" class=\"notification good\">\
- <?php echo _t('feedback.sub.actualize'); ?><br /><span class=\"title\">/</span><br />\
- <span class=\"progress\">0 / " + feed_count + "</span>\
- </div>");
- } else {
- window.location.reload();
- }
-}
-function updateProgressBar(i, title_feed) {
- $("#actualizeProgress .progress").html(i + " / " + feed_count);
- $("#actualizeProgress .title").html(title_feed);
-}
-
-function updateFeeds() {
- if (feed_count === 0) {
- openNotification("<?php echo _t('feedback.sub.feed.no_refresh'); ?>", "good");
- ajax_loading = false;
- return;
- }
- initProgressBar(true);
-
- for (var i = 0; i < 10; i++) {
- updateFeed();
- }
-}
-
-function updateFeed() {
- var feed = feeds.pop();
- if (feed == undefined) {
- return;
- }
-
- $.ajax({
- type: 'POST',
- url: feed['url'],
- }).complete(function (data) {
- feed_processed++;
- updateProgressBar(feed_processed, feed['title']);
-
- if (feed_processed === feed_count) {
- initProgressBar(false);
- } else {
- updateFeed();
- }
- });
-}
+<?php
+$feeds = array();
+foreach ($this->feeds as $feed) {
+ $feeds[] = array(
+ 'url' => Minz_Url::display(array('c' => 'feed', 'a' => 'actualize', 'params' => array('id' => $feed->id(), 'ajax' => '1')), 'php'),
+ 'title' => $feed->name(),
+ );
+}
+echo json_encode(array(
+ 'feeds' => $feeds,
+ 'feedback_no_refresh' => _t('feedback.sub.feed.no_refresh'),
+ 'feedback_actualize' => _t('feedback.sub.actualize'),
+));
diff --git a/p/scripts/main.js b/p/scripts/main.js
index d62a6aff8..51c8f4cbf 100644
--- a/p/scripts/main.js
+++ b/p/scripts/main.js
@@ -767,6 +767,31 @@ function init_nav_entries() {
});
}
+// <actualize>
+var feed_processed = 0;
+
+function updateFeed(feeds, feeds_count) {
+ var feed = feeds.pop();
+ if (feed == undefined) {
+ return;
+ }
+
+ $.ajax({
+ type: 'POST',
+ url: feed['url'],
+ }).complete(function (data) {
+ feed_processed++;
+ $("#actualizeProgress .progress").html(feed_processed + " / " + feeds_count);
+ $("#actualizeProgress .title").html(feed['title']);
+
+ if (feed_processed === feeds_count) {
+ window.location.reload();
+ } else {
+ updateFeed(feeds, feeds_count);
+ }
+ });
+}
+
function init_actualize() {
var auto = false;
@@ -777,14 +802,23 @@ function init_actualize() {
ajax_loading = true;
- $.getScript('./?c=javascript&a=actualize').done(function () {
- if (auto && feed_count < 1) {
+ $.getJSON('./?c=javascript&a=actualize').done(function (data) {
+ if (auto && data.feeds.length < 1) {
auto = false;
ajax_loading = false;
return false;
}
-
- updateFeeds();
+ if (data.feeds.length === 0) {
+ openNotification(data.feedback_no_refresh, "good");
+ ajax_loading = false;
+ return;
+ }
+ //Progress bar
+ var feeds_count = data.feeds.length;
+ $('body').after('<div id="actualizeProgress" class="notification good">' + data.feedback_actualize + '<br /><span class="title">/</span><br /><span class="progress">0 / ' + feeds_count + '</span></div>');
+ for (var i = 10; i > 0; i--) {
+ updateFeed(data.feeds, feeds_count);
+ }
});
return false;
@@ -795,7 +829,7 @@ function init_actualize() {
$("#actualize").click();
}
}
-
+// </actualize>
// <notification>
var notification = null,