diff options
-rw-r--r-- | classes/digest.php | 16 | ||||
-rw-r--r-- | classes/pref/prefs.php | 11 | ||||
-rw-r--r-- | js/PrefHelpers.js | 27 | ||||
-rw-r--r-- | 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 "<input dojoType=\"dijit.form.ValidationTextBox\" id=\"$pref_name\" regexp=\"[012]?\d:\d\d\" placeHolder=\"12:00\" name=\"$pref_name\" value=\"$value\">"; - $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: ` + <div class='panel panel-scrollable digest-preview'> + <div class='text-center'>${__("Loading, please wait...")}</div> + </div> + + <footer class='text-center'> + ${App.FormFields.submit_tag(__('Close this window'))} + </footer> + ` + }); + + 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 @@ <!-- $BeginBlock digest --> -<h1 style='font-size : x-large'>New headlines for last 24 hours, as of ${CUR_DATE} ${CUR_TIME}</h1> +<h1>New headlines for last 24 hours, as of ${CUR_DATE} ${CUR_TIME}</h1> <hr/> <!-- $BeginBlock feed --> -<h2 style='font-size : large'>${FEED_TITLE}</h2> +<h2>${FEED_TITLE}</h2> <ul> <!-- $BeginBlock article --> <li><a href="${ARTICLE_LINK}">${ARTICLE_TITLE}</a> — <strong>${ARTICLE_UPDATED}</strong> -<div style='font-style : italic'>${ARTICLE_LABELS}</div> -<div style='color : gray'>${ARTICLE_EXCERPT}</div> +<div><em>${ARTICLE_LABELS}</em></div> +<div>${ARTICLE_EXCERPT}</div> <!-- $EndBlock article --> </ul> <!-- $EndBlock feed --> - + <hr> -<em>To unsubscribe, visit your configuration options or contact instance owner.</em><br/> -<em>Sent by tt-rss mailer daemon at ${TTRSS_HOST}.</em> +<em style='color : gray'>To unsubscribe, visit your configuration options or contact instance owner.<br/> +Sent by tt-rss mailer daemon at ${TTRSS_HOST}.</em> <!-- $EndBlock digest --> |