From ba86c64d38d9995d38af163ae4c51a42b21d5de7 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Mar 2021 19:21:21 +0300 Subject: [PATCH] add digest preview button, also fix a bunch of bugs --- classes/digest.php | 16 ++++++++-------- classes/pref/prefs.php | 11 +++++++++-- js/PrefHelpers.js | 27 +++++++++++++++++++++++++++ templates/digest_template_html.txt | 14 +++++++------- 4 files changed, 51 insertions(+), 17 deletions(-) diff --git a/classes/digest.php b/classes/digest.php index 26ca5221f..2fea99344 100644 --- a/classes/digest.php +++ b/classes/digest.php @@ -78,7 +78,7 @@ class Digest Debug::log("All done."); } - static function prepare_headlines_digest($user_id, $days = 1, $limit = 1000) { + static function prepare_headlines_digest(int $user_id, int $days = 1, int $limit = 1000) { $tpl = new Templator(); $tpl_t = new Templator(); @@ -87,20 +87,22 @@ class Digest $tpl_t->readTemplateFromFile("digest_template.txt"); $user_tz_string = get_pref(Prefs::USER_TIMEZONE, $user_id); + + if ($user_tz_string == 'Automatic') + $user_tz_string = 'GMT'; + $local_ts = TimeHelper::convert_timestamp(time(), 'UTC', $user_tz_string); $tpl->setVariable('CUR_DATE', date('Y/m/d', $local_ts)); $tpl->setVariable('CUR_TIME', date('G:i', $local_ts)); - $tpl->setVariable('TTRSS_HOST', Config::get(Config::get(Config::SELF_URL_PATH))); + $tpl->setVariable('TTRSS_HOST', Config::get(Config::SELF_URL_PATH)); $tpl_t->setVariable('CUR_DATE', date('Y/m/d', $local_ts)); $tpl_t->setVariable('CUR_TIME', date('G:i', $local_ts)); - $tpl_t->setVariable('TTRSS_HOST', Config::get(Config::get(Config::SELF_URL_PATH))); + $tpl_t->setVariable('TTRSS_HOST', Config::get(Config::SELF_URL_PATH)); $affected_ids = array(); - $days = (int) $days; - if (Config::get(Config::DB_TYPE) == "pgsql") { $interval_qpart = "ttrss_entries.date_updated > NOW() - INTERVAL '$days days'"; } else /* if (Config::get(Config::DB_TYPE) == "mysql") */ { @@ -131,9 +133,7 @@ class Digest AND score >= 0 ORDER BY ttrss_feed_categories.title, ttrss_feeds.title, score DESC, date_updated DESC LIMIT :limit"); - $sth->bindParam(':user_id', intval($user_id, 10), PDO::PARAM_INT); - $sth->bindParam(':limit', intval($limit, 10), PDO::PARAM_INT); - $sth->execute(); + $sth->execute([':user_id' => $user_id, ':limit' => $limit]); $headlines_count = 0; $headlines = array(); diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php index eaf724199..1c5092167 100644 --- a/classes/pref/prefs.php +++ b/classes/pref/prefs.php @@ -664,6 +664,10 @@ class Pref_Prefs extends Handler_Protected { print \Controls\checkbox_tag($pref_name, $is_checked, "true", ["disabled" => $is_disabled], "CB_$pref_name"); + if ($pref_name == Prefs::DIGEST_ENABLE) { + print \Controls\button_tag(__('Preview'), '', ['onclick' => 'Helpers.Digest.preview()', 'style' => 'margin-left : 10px']); + } + } else if (in_array($pref_name, ['FRESH_ARTICLE_MAX_AGE', 'PURGE_OLD_DAYS', 'LONG_DATE_FORMAT', 'SHORT_DATE_FORMAT'])) { @@ -698,11 +702,10 @@ class Pref_Prefs extends Handler_Protected { "class" => "alt-info", "onclick" => "window.open('https://tt-rss.org/wiki/SSL%20Certificate%20Authentication')"]); - } else if ($pref_name == 'DIGEST_PREFERRED_TIME') { + } else if ($pref_name == Prefs::DIGEST_PREFERRED_TIME) { print ""; - $item['help_text'] .= ". " . T_sprintf("Current server time: %s", date("H:i")); } else { $regexp = ($type_hint == Config::T_INT) ? 'regexp="^\d*$"' : ''; @@ -1408,6 +1411,10 @@ class Pref_Prefs extends Handler_Protected { $this->appPasswordList(); } + function previewDigest() { + print json_encode(Digest::prepare_headlines_digest($_SESSION["uid"], 1, 16)); + } + static function _get_ssl_certificate_id() { if ($_SERVER["REDIRECT_SSL_CLIENT_M_SERIAL"] ?? false) { return sha1($_SERVER["REDIRECT_SSL_CLIENT_M_SERIAL"] . diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js index fb1689879..8035d7866 100644 --- a/js/PrefHelpers.js +++ b/js/PrefHelpers.js @@ -53,6 +53,33 @@ const Helpers = { return false; }, }, + Digest: { + preview: function() { + const dialog = new fox.SingleUseDialog({ + title: __("Digest Preview"), + content: ` +
+
${__("Loading, please wait...")}
+
+ + + ` + }); + + const tmph = dojo.connect(dialog, 'onShow', function () { + dojo.disconnect(tmph); + + xhr.json("backend.php", {op: "pref-prefs", method: "previewDigest"}, (reply) => { + dialog.domNode.querySelector('.digest-preview').innerHTML = reply[0]; + }); + }); + + dialog.show(); + + } + }, System: { // }, diff --git a/templates/digest_template_html.txt b/templates/digest_template_html.txt index f38d98a21..f82294896 100644 --- a/templates/digest_template_html.txt +++ b/templates/digest_template_html.txt @@ -1,20 +1,20 @@ -

New headlines for last 24 hours, as of ${CUR_DATE} ${CUR_TIME}

+

New headlines for last 24 hours, as of ${CUR_DATE} ${CUR_TIME}


-

${FEED_TITLE}

+

${FEED_TITLE}

- +
-To unsubscribe, visit your configuration options or contact instance owner.
-Sent by tt-rss mailer daemon at ${TTRSS_HOST}. +To unsubscribe, visit your configuration options or contact instance owner.
+Sent by tt-rss mailer daemon at ${TTRSS_HOST}.