Parcourir la source

Improved: Idle feeds list in a new layout (#4192)

* that should work fine

* fixed phpcs

* fixed phpcs
maTh il y a 4 ans
Parent
commit
be9c06fd5c

+ 36 - 0
app/Controllers/statsController.php

@@ -20,6 +20,14 @@ class FreshRSS_stats_Controller extends FreshRSS_ActionController {
 			'style-src' => "'self' 'unsafe-inline'",
 		]);
 
+		$catDAO = FreshRSS_Factory::createCategoryDao();
+		$feedDAO = FreshRSS_Factory::createFeedDao();
+
+		$catDAO->checkDefault();
+		$feedDAO->updateTTL();
+		$this->view->categories = $catDAO->listSortedCategories(false);
+		$this->view->default_category = $catDAO->getDefault();
+
 		FreshRSS_View::prependTitle(_t('admin.stats.title') . ' · ');
 	}
 
@@ -91,6 +99,23 @@ class FreshRSS_stats_Controller extends FreshRSS_ActionController {
 		$this->view->last30DaysLabels = $last30DaysLabels;
 	}
 
+	/**
+	 * This action handles the feed action on the idle statistic page.
+	 * set the 'from' parameter to remember that it had a redirection coming from stats controller,
+	 * to use the subscription controller to save it,
+	 * but shows the stats idle page
+	 */
+	public function feedAction() {
+		$id = Minz_Request::param('id');
+		$ajax = Minz_Request::param('ajax');
+		if ($ajax) {
+			$url_redirect = array('c' => 'subscription', 'a' => 'feed', 'params' => array('id' => $id, 'from' => 'stats', 'ajax' => $ajax));
+		} else {
+			$url_redirect = array('c' => 'subscription', 'a' => 'feed', 'params' => array('id' => $id, 'from' => 'stats'));
+		}
+		Minz_Request::forward($url_redirect, true);
+	}
+
 	/**
 	 * This action handles the idle feed statistic page.
 	 *
@@ -138,6 +163,9 @@ class FreshRSS_stats_Controller extends FreshRSS_ActionController {
 		$last5Year->modify('-5 year');
 
 		foreach ($feeds as $feed) {
+			$feedDAO = FreshRSS_Factory::createFeedDao();
+			$feed['favicon'] = $feedDAO->searchById($feed['id'])->favicon();
+
 			$feedDate->setTimestamp($feed['last_date']);
 			if ($feedDate >= $lastWeek) {
 				continue;
@@ -162,6 +190,14 @@ class FreshRSS_stats_Controller extends FreshRSS_ActionController {
 		}
 
 		$this->view->idleFeeds = $idleFeeds;
+
+		$id = Minz_Request::param('id');
+		$this->view->displaySlider = false;
+		if (false !== $id) {
+			$this->view->displaySlider = true;
+			$feedDAO = FreshRSS_Factory::createFeedDao();
+			$this->view->feed = $feedDAO->searchById($id);
+		}
 	}
 
 	/**

+ 6 - 1
app/Controllers/subscriptionController.php

@@ -207,7 +207,12 @@ class FreshRSS_subscription_Controller extends FreshRSS_ActionController {
 
 			invalidateHttpCache();
 
-			$url_redirect = array('c' => 'subscription', 'params' => array('id' => $id));
+			$from = Minz_Request::param('from');
+			if ($from === false) {
+				$url_redirect = array('c' => 'subscription', 'params' => array('id' => $id));
+			} else {
+				$url_redirect = array('c' => 'stats', 'a' => 'idle', 'params' => array('id' => $id, 'from' => 'stats'));
+			}
 			if ($feedDAO->updateFeed($id, $values) !== false) {
 				$feed->_category($cat);
 				$feed->faviconPrepare();

+ 9 - 1
app/views/helpers/feed/update.phtml

@@ -18,7 +18,15 @@
 	<p class="alert alert-warn"><?= _t('sub.feed.empty') ?></p>
 	<?php } ?>
 
-	<form method="post" action="<?= _url('subscription', 'feed', 'id', $this->feed->id()) ?>" autocomplete="off">
+	<?php
+	$from = Minz_Request::param('from');
+	if ($from === false) {
+		$url = _url('subscription', 'feed', 'id', $this->feed->id());
+	} else {
+		$url = _url('subscription', 'feed', 'id', $this->feed->id(), 'from', $from);
+	}
+	?>
+	<form method="post" action="<?= $url ?>" autocomplete="off">
 		<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
 		<legend><?= _t('sub.feed.information') ?></legend>
 		<div class="form-group">

+ 24 - 22
app/views/stats/idle.phtml

@@ -20,29 +20,19 @@
 			if (!empty($feeds)) {
 				$nothing = false;
 	?>
-		<div class="stat">
-			<h2><?= _t('gen.date.' . $period) ?></h2>
-
-			<form id="form-delete" method="post">
-			<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
-			<?php foreach ($feeds as $feed) { ?>
-			<ul class="horizontal-list">
-				<li class="item">
-					<div class="stick">
-						<a class="btn" href="<?= _url('index', 'index', 'get', 'f_' . $feed['id']) ?>"><?= _i('link') ?> <?= _t('gen.action.filter') ?></a>
-						<a class="btn" href="<?= _url('subscription', 'index', 'id', $feed['id']) ?>"><?= _i('configure') ?> <?= _t('gen.action.manage') ?></a>
-						<button class="btn btn-attention confirm" form="form-delete"
-							formaction="<?= _url('feed', 'delete', 'id', $feed['id'], 'r', $current_url) ?>"><?= _t('gen.action.remove') ?></button>
-					</div>
-				</li>
-				<li class="item">
-					<span title="<?= timestamptodate($feed['last_date'], false) ?>"><?= $feed['name'] ?>
-						(<?= _t('admin.stats.number_entries', $feed['nb_articles']) ?>)</span>
-				</li>
+	<div class="box">
+		<div class="box-title"><?= _t('gen.date.' . $period) ?></div>
+			<ul class="box-content">
+				<?php foreach ($feeds as $feed) { ?>
+					<li class="item feed">
+						<a class="configure open-slider" href="<?= _url('stats', 'feed', 'id', $feed['id'], 'sub', 'idle') ?>" title="<?= _t('gen.action.manage') ?>"><?= _i('configure') ?></a>
+						<?php if (FreshRSS_Context::$user_conf->show_favicons): ?><img class="favicon" src="<?= $feed['favicon'] ?>" alt="✇" loading="lazy" /><?php endif; ?>
+						<span title="<?= timestamptodate($feed['last_date'], false) ?>"><?= $feed['name'] ?>
+							(<?= _t('admin.stats.number_entries', $feed['nb_articles']) ?>)</span>
+					</li>
+				<?php } ?>
 			</ul>
-			<?php } ?>
-			</form>
-		</div>
+	</div>
 	<?php
 			}
 		}
@@ -53,4 +43,16 @@
 		<span class="alert-head"><?= _t('admin.stats.no_idle') ?></span>
 	</p>
 	<?php } ?>
+
+	<?php $class = $this->displaySlider ? ' class="active"' : ''; ?>
+	<a href="#" id="close-slider"<?= $class ?>>
+		<?= _i('close') ?>
+	</a>
+	<div id="slider"<?= $class ?>>
+	<?php
+		if (isset($this->feed)) {
+			$this->renderHelper('feed/update');
+		}
+	?>
+	</div>
 </main>