add digest preview button, also fix a bunch of bugs
This commit is contained in:
parent
386316aba1
commit
ba86c64d38
|
@ -78,7 +78,7 @@ class Digest
|
||||||
Debug::log("All done.");
|
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 = new Templator();
|
||||||
$tpl_t = new Templator();
|
$tpl_t = new Templator();
|
||||||
|
@ -87,20 +87,22 @@ class Digest
|
||||||
$tpl_t->readTemplateFromFile("digest_template.txt");
|
$tpl_t->readTemplateFromFile("digest_template.txt");
|
||||||
|
|
||||||
$user_tz_string = get_pref(Prefs::USER_TIMEZONE, $user_id);
|
$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);
|
$local_ts = TimeHelper::convert_timestamp(time(), 'UTC', $user_tz_string);
|
||||||
|
|
||||||
$tpl->setVariable('CUR_DATE', date('Y/m/d', $local_ts));
|
$tpl->setVariable('CUR_DATE', date('Y/m/d', $local_ts));
|
||||||
$tpl->setVariable('CUR_TIME', date('G:i', $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_DATE', date('Y/m/d', $local_ts));
|
||||||
$tpl_t->setVariable('CUR_TIME', date('G:i', $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();
|
$affected_ids = array();
|
||||||
|
|
||||||
$days = (int) $days;
|
|
||||||
|
|
||||||
if (Config::get(Config::DB_TYPE) == "pgsql") {
|
if (Config::get(Config::DB_TYPE) == "pgsql") {
|
||||||
$interval_qpart = "ttrss_entries.date_updated > NOW() - INTERVAL '$days days'";
|
$interval_qpart = "ttrss_entries.date_updated > NOW() - INTERVAL '$days days'";
|
||||||
} else /* if (Config::get(Config::DB_TYPE) == "mysql") */ {
|
} else /* if (Config::get(Config::DB_TYPE) == "mysql") */ {
|
||||||
|
@ -131,9 +133,7 @@ class Digest
|
||||||
AND score >= 0
|
AND score >= 0
|
||||||
ORDER BY ttrss_feed_categories.title, ttrss_feeds.title, score DESC, date_updated DESC
|
ORDER BY ttrss_feed_categories.title, ttrss_feeds.title, score DESC, date_updated DESC
|
||||||
LIMIT :limit");
|
LIMIT :limit");
|
||||||
$sth->bindParam(':user_id', intval($user_id, 10), PDO::PARAM_INT);
|
$sth->execute([':user_id' => $user_id, ':limit' => $limit]);
|
||||||
$sth->bindParam(':limit', intval($limit, 10), PDO::PARAM_INT);
|
|
||||||
$sth->execute();
|
|
||||||
|
|
||||||
$headlines_count = 0;
|
$headlines_count = 0;
|
||||||
$headlines = array();
|
$headlines = array();
|
||||||
|
|
|
@ -664,6 +664,10 @@ class Pref_Prefs extends Handler_Protected {
|
||||||
print \Controls\checkbox_tag($pref_name, $is_checked, "true",
|
print \Controls\checkbox_tag($pref_name, $is_checked, "true",
|
||||||
["disabled" => $is_disabled], "CB_$pref_name");
|
["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',
|
} else if (in_array($pref_name, ['FRESH_ARTICLE_MAX_AGE',
|
||||||
'PURGE_OLD_DAYS', 'LONG_DATE_FORMAT', 'SHORT_DATE_FORMAT'])) {
|
'PURGE_OLD_DAYS', 'LONG_DATE_FORMAT', 'SHORT_DATE_FORMAT'])) {
|
||||||
|
|
||||||
|
@ -698,11 +702,10 @@ class Pref_Prefs extends Handler_Protected {
|
||||||
"class" => "alt-info",
|
"class" => "alt-info",
|
||||||
"onclick" => "window.open('https://tt-rss.org/wiki/SSL%20Certificate%20Authentication')"]);
|
"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\"
|
print "<input dojoType=\"dijit.form.ValidationTextBox\"
|
||||||
id=\"$pref_name\" regexp=\"[012]?\d:\d\d\" placeHolder=\"12:00\"
|
id=\"$pref_name\" regexp=\"[012]?\d:\d\d\" placeHolder=\"12:00\"
|
||||||
name=\"$pref_name\" value=\"$value\">";
|
name=\"$pref_name\" value=\"$value\">";
|
||||||
|
|
||||||
$item['help_text'] .= ". " . T_sprintf("Current server time: %s", date("H:i"));
|
$item['help_text'] .= ". " . T_sprintf("Current server time: %s", date("H:i"));
|
||||||
} else {
|
} else {
|
||||||
$regexp = ($type_hint == Config::T_INT) ? 'regexp="^\d*$"' : '';
|
$regexp = ($type_hint == Config::T_INT) ? 'regexp="^\d*$"' : '';
|
||||||
|
@ -1408,6 +1411,10 @@ class Pref_Prefs extends Handler_Protected {
|
||||||
$this->appPasswordList();
|
$this->appPasswordList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function previewDigest() {
|
||||||
|
print json_encode(Digest::prepare_headlines_digest($_SESSION["uid"], 1, 16));
|
||||||
|
}
|
||||||
|
|
||||||
static function _get_ssl_certificate_id() {
|
static function _get_ssl_certificate_id() {
|
||||||
if ($_SERVER["REDIRECT_SSL_CLIENT_M_SERIAL"] ?? false) {
|
if ($_SERVER["REDIRECT_SSL_CLIENT_M_SERIAL"] ?? false) {
|
||||||
return sha1($_SERVER["REDIRECT_SSL_CLIENT_M_SERIAL"] .
|
return sha1($_SERVER["REDIRECT_SSL_CLIENT_M_SERIAL"] .
|
||||||
|
|
|
@ -53,6 +53,33 @@ const Helpers = {
|
||||||
return false;
|
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: {
|
System: {
|
||||||
//
|
//
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
<!-- $BeginBlock digest -->
|
<!-- $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/>
|
<hr/>
|
||||||
<!-- $BeginBlock feed -->
|
<!-- $BeginBlock feed -->
|
||||||
<h2 style='font-size : large'>${FEED_TITLE}</h2>
|
<h2>${FEED_TITLE}</h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<!-- $BeginBlock article -->
|
<!-- $BeginBlock article -->
|
||||||
<li><a href="${ARTICLE_LINK}">${ARTICLE_TITLE}</a> — <strong>${ARTICLE_UPDATED}</strong>
|
<li><a href="${ARTICLE_LINK}">${ARTICLE_TITLE}</a> — <strong>${ARTICLE_UPDATED}</strong>
|
||||||
<div style='font-style : italic'>${ARTICLE_LABELS}</div>
|
<div><em>${ARTICLE_LABELS}</em></div>
|
||||||
<div style='color : gray'>${ARTICLE_EXCERPT}</div>
|
<div>${ARTICLE_EXCERPT}</div>
|
||||||
<!-- $EndBlock article -->
|
<!-- $EndBlock article -->
|
||||||
</ul>
|
</ul>
|
||||||
<!-- $EndBlock feed -->
|
<!-- $EndBlock feed -->
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<em>To unsubscribe, visit your configuration options or contact instance owner.</em><br/>
|
<em style='color : gray'>To unsubscribe, visit your configuration options or contact instance owner.<br/>
|
||||||
<em>Sent by tt-rss mailer daemon at ${TTRSS_HOST}.</em>
|
Sent by tt-rss mailer daemon at ${TTRSS_HOST}.</em>
|
||||||
<!-- $EndBlock digest -->
|
<!-- $EndBlock digest -->
|
||||||
|
|
Loading…
Reference in New Issue