diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/api.php | 11 | ||||
-rw-r--r-- | classes/dlg.php | 6 | ||||
-rw-r--r-- | classes/feeds.php | 71 | ||||
-rw-r--r-- | classes/handler/public.php | 7 | ||||
-rw-r--r-- | classes/pluginhost.php | 5 | ||||
-rw-r--r-- | classes/pref/feeds.php | 28 | ||||
-rw-r--r-- | classes/pref/filters.php | 6 | ||||
-rw-r--r-- | classes/pref/prefs.php | 31 | ||||
-rw-r--r-- | classes/rpc.php | 2 |
9 files changed, 105 insertions, 62 deletions
diff --git a/classes/api.php b/classes/api.php index 74464821f..5e7ec6573 100644 --- a/classes/api.php +++ b/classes/api.php @@ -194,11 +194,10 @@ class API extends Handler { $search = db_escape_string($_REQUEST["search"]); $search_mode = db_escape_string($_REQUEST["search_mode"]); - $match_on = db_escape_string($_REQUEST["match_on"]); $headlines = $this->api_get_headlines($this->link, $feed_id, $limit, $offset, $filter, $is_cat, $show_excerpt, $show_content, $view_mode, false, - $include_attachments, $since_id, $search, $search_mode, $match_on, + $include_attachments, $since_id, $search, $search_mode, $include_nested, $sanitize_content); print $this->wrap(self::STATUS_OK, $headlines); @@ -584,11 +583,11 @@ class API extends Handler { static function api_get_headlines($link, $feed_id, $limit, $offset, $filter, $is_cat, $show_excerpt, $show_content, $view_mode, $order, $include_attachments, $since_id, - $search = "", $search_mode = "", $match_on = "", + $search = "", $search_mode = "", $include_nested = false, $sanitize_content = true) { $qfh_ret = queryFeedHeadlines($link, $feed_id, $limit, - $view_mode, $is_cat, $search, $search_mode, $match_on, + $view_mode, $is_cat, $search, $search_mode, $order, $offset, 0, false, $since_id, $include_nested); $result = $qfh_ret[0]; @@ -636,7 +635,9 @@ class API extends Handler { if ($sanitize_content) { $headline_row["content"] = sanitize($link, - $line["content_preview"], false, false, $line["site_url"]); + $line["content_preview"], + sql_bool_to_bool($line['hide_images']), + false, $line["site_url"]); } else { $headline_row["content"] = $line["content_preview"]; } diff --git a/classes/dlg.php b/classes/dlg.php index 74eb9f633..3bb2caba4 100644 --- a/classes/dlg.php +++ b/classes/dlg.php @@ -236,8 +236,7 @@ class Dlg extends Handler_Protected { print "<div style='float : right'> <img style='display : none' - id='feed_add_spinner' src='". - theme_image($this->link, 'images/indicator_white.gif')."'></div>"; + id='feed_add_spinner' src='images/indicator_white.gif'></div>"; print "<input style=\"font-size : 16px; width : 20em;\" placeHolder=\"".__("Feed or site URL")."\" @@ -311,8 +310,7 @@ class Dlg extends Handler_Protected { print "<div dojoType=\"dijit.Toolbar\"> <div style='float : right'> <img style='display : none' - id='feed_browser_spinner' src='". - theme_image($this->link, 'images/indicator_white.gif')."'> + id='feed_browser_spinner' src='images/indicator_white.gif'> <input name=\"search\" dojoType=\"dijit.form.TextBox\" size=\"20\" type=\"search\" onchange=\"dijit.byId('feedBrowserDlg').update()\" value=\"$browser_search\"> <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedBrowserDlg').update()\">".__('Search')."</button> diff --git a/classes/feeds.php b/classes/feeds.php index 4857cca78..79aaa8e55 100644 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -22,7 +22,7 @@ class Feeds extends Handler_Protected { } private function format_headline_subtoolbar($feed_site_url, $feed_title, - $feed_id, $is_cat, $search, $match_on, + $feed_id, $is_cat, $search, $search_mode, $view_mode, $error) { $page_prev_link = "viewFeedGoPage(-1)"; @@ -50,7 +50,7 @@ class Feeds extends Handler_Protected { if ($is_cat) $cat_q = "&is_cat=$is_cat"; if ($search) { - $search_q = "&q=$search&m=$match_on&smode=$search_mode"; + $search_q = "&q=$search&smode=$search_mode"; } else { $search_q = ""; } @@ -126,6 +126,11 @@ class Feeds extends Handler_Protected { "</option>"; } + if ($pluginhost->get_plugin("mailto")) { + $reply .= "<option value=\"mailtoArticle(false)\">".__('Forward by email'). + "</option>"; + } + $reply .= "<option value=\"0\" disabled=\"1\">".__('Feed:')."</option>"; $reply .= "<option value=\"catchupPage()\">".__('Mark as read')."</option>"; @@ -204,7 +209,6 @@ class Feeds extends Handler_Protected { } @$search_mode = db_escape_string($_REQUEST["search_mode"]); - $match_on = "both"; // deprecated, TODO: remove if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H0", $timing_info); @@ -214,7 +218,7 @@ class Feeds extends Handler_Protected { } // error_log("search_mode: " . $search_mode); $qfh_ret = queryFeedHeadlines($this->link, $feed, $limit, $view_mode, $cat_view, - $search, $search_mode, $match_on, $override_order, $offset, 0, + $search, $search_mode, $override_order, $offset, 0, false, 0, $include_children); if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H1", $timing_info); @@ -228,7 +232,7 @@ class Feeds extends Handler_Protected { $reply['toolbar'] = $this->format_headline_subtoolbar($feed_site_url, $feed_title, - $feed, $cat_view, $search, $match_on, $search_mode, $view_mode, + $feed, $cat_view, $search, $search_mode, $view_mode, $last_error); $headlines_count = db_num_rows($result); @@ -258,6 +262,8 @@ class Feeds extends Handler_Protected { if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PS", $timing_info); + $expand_cdm = get_pref($this->link, 'CDM_EXPANDED'); + while ($line = db_fetch_assoc($result)) { $class = ($lnum % 2) ? "even" : "odd"; @@ -314,24 +320,22 @@ class Feeds extends Handler_Protected { if ($line["marked"] == "t" || $line["marked"] == "1") { $marked_pic = "<img id=\"FMPIC-$id\" - src=\"".theme_image($this->link, 'images/mark_set.svg')."\" + src=\"images/mark_set.svg\" class=\"markedPic\" alt=\"Unstar article\" onclick='javascript:toggleMark($id)'>"; } else { $marked_pic = "<img id=\"FMPIC-$id\" - src=\"".theme_image($this->link, 'images/mark_unset.svg')."\" + src=\"images/mark_unset.svg\" class=\"markedPic\" alt=\"Star article\" onclick='javascript:toggleMark($id)'>"; } if ($line["published"] == "t" || $line["published"] == "1") { - $published_pic = "<img id=\"FPPIC-$id\" src=\"".theme_image($this->link, - 'images/pub_set.svg')."\" + $published_pic = "<img id=\"FPPIC-$id\" src=\"images/pub_set.svg\" class=\"markedPic\" alt=\"Unpublish article\" onclick='javascript:togglePub($id)'>"; } else { - $published_pic = "<img id=\"FPPIC-$id\" src=\"".theme_image($this->link, - 'images/pub_unset.svg')."\" + $published_pic = "<img id=\"FPPIC-$id\" src=\"images/pub_unset.svg\" class=\"markedPic\" alt=\"Publish article\" onclick='javascript:togglePub($id)'>"; } @@ -356,8 +360,7 @@ class Feeds extends Handler_Protected { $score = $line["score"]; - $score_pic = theme_image($this->link, - "images/" . get_score_pic($score)); + $score_pic = "images/" . get_score_pic($score); /* $score_title = __("(Click to change)"); $score_pic = "<img class='hlScorePic' src=\"images/$score_pic\" @@ -400,11 +403,11 @@ class Feeds extends Handler_Protected { $cur_feed_title = htmlspecialchars($cur_feed_title); - $vf_catchup_link = "(<a onclick='catchupFeedInGroup($feed_id);' href='#'>".__('mark as read')."</a>)"; + $vf_catchup_link = "(<a class='catchup' onclick='catchupFeedInGroup($feed_id);' href='#'>".__('Mark as read')."</a>)"; $reply['content'] .= "<div class='cdmFeedTitle'>". "<div style=\"float : right\">$feed_icon_img</div>". - "<a href=\"#\" onclick=\"viewfeed($feed_id)\">". + "<a class='title' href=\"#\" onclick=\"viewfeed($feed_id)\">". $line["feed_title"]."</a> $vf_catchup_link</div>"; } @@ -476,7 +479,7 @@ class Feeds extends Handler_Protected { unset($line["tag_cache"]); $line["content"] = sanitize($this->link, $line["content_preview"], - false, false, $entry_site_url); + sql_bool_to_bool($line['hide_images']), false, $entry_site_url); foreach ($pluginhost->get_hooks($pluginhost::HOOK_RENDER_ARTICLE_CDM) as $p) { $line = $p->hook_render_article_cdm($line); @@ -490,7 +493,7 @@ class Feeds extends Handler_Protected { $cur_feed_title = htmlspecialchars($cur_feed_title); - $vf_catchup_link = "(<a onclick='javascript:catchupFeedInGroup($feed_id);' href='#'>".__('mark as read')."</a>)"; + $vf_catchup_link = "(<a class='catchup' onclick='javascript:catchupFeedInGroup($feed_id);' href='#'>".__('mark as read')."</a>)"; $has_feed_icon = feed_has_icon($feed_id); @@ -502,17 +505,17 @@ class Feeds extends Handler_Protected { $reply['content'] .= "<div class='cdmFeedTitle'>". "<div style=\"float : right\">$feed_icon_img</div>". - "<a href=\"#\" onclick=\"viewfeed($feed_id)\">". + "<a href=\"#\" class='title' onclick=\"viewfeed($feed_id)\">". $line["feed_title"]."</a> $vf_catchup_link</div>"; } } - $expand_cdm = get_pref($this->link, 'CDM_EXPANDED'); - $mouseover_attrs = "onmouseover='postMouseIn($id)' onmouseout='postMouseOut($id)'"; - $reply['content'] .= "<div class=\"cdm $class\" + $expanded_class = $expand_cdm ? "expanded" : ""; + + $reply['content'] .= "<div class=\"cdm $expanded_class $class\" id=\"RROW-$id\" $mouseover_attrs'>"; $reply['content'] .= "<div class=\"cdmHeader\">"; @@ -543,6 +546,10 @@ class Feeds extends Handler_Protected { $reply['content'] .= $labels_str; + $reply['content'] .= "<span class='collapseBtn' style='display : none'> + <img src=\"images/collapse.png\" onclick=\"cdmCollapseArticle(event, $id)\" + title=\"".__("Collapse article")."\"/></span>"; + if (!$expand_cdm) $content_hidden = "style=\"display : none\""; else @@ -550,7 +557,6 @@ class Feeds extends Handler_Protected { $reply['content'] .= "<span $excerpt_hidden id=\"CEXC-$id\" class=\"cdmExcerpt\"> - $content_preview</span>"; - $reply['content'] .= "</span>"; if (!get_pref($this->link, 'VFEED_GROUP_BY_FEED')) { @@ -617,16 +623,17 @@ class Feeds extends Handler_Protected { } $reply['content'] .= "<span id=\"CWRAP-$id\">"; - $reply['content'] .= $line["content"]; - $reply['content'] .= "</span>"; -/* $tmp_result = db_query($this->link, "SELECT always_display_enclosures FROM - ttrss_feeds WHERE id = ". - (($line['feed_id'] == null) ? $line['orig_feed_id'] : - $line['feed_id'])." AND owner_uid = ".$_SESSION["uid"]); +// if (!$expand_cdm) { + $reply['content'] .= "<span id=\"CENCW-$id\" style=\"display : none\">"; + $reply['content'] .= htmlspecialchars($line["content"]); + $reply['content'] .= "</span."; - $always_display_enclosures = sql_bool_to_bool(db_fetch_result($tmp_result, - 0, "always_display_enclosures")); */ +// } else { +// $reply['content'] .= $line["content"]; +// } + + $reply['content'] .= "</span>"; $always_display_enclosures = sql_bool_to_bool($line["always_display_enclosures"]); @@ -639,8 +646,7 @@ class Feeds extends Handler_Protected { $tags_str = format_tags_string($line["tags"], $id); - $reply['content'] .= "<img src='".theme_image($this->link, - 'images/tag.png')."' alt='Tags' title='Tags'> + $reply['content'] .= "<img src='images/tag.png' alt='Tags' title='Tags'> <span id=\"ATSTR-$id\">$tags_str</span> <a title=\"".__('Edit tags for this article')."\" href=\"#\" onclick=\"editArticleTags($id, $feed_id, true)\">(+)</a>"; @@ -935,6 +941,5 @@ class Feeds extends Handler_Protected { return $reply; } - } ?> diff --git a/classes/handler/public.php b/classes/handler/public.php index 4a9b0c48e..dc1e10049 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -2,7 +2,7 @@ class Handler_Public extends Handler { private function generate_syndicated_feed($owner_uid, $feed, $is_cat, - $limit, $offset, $search, $search_mode, $match_on, + $limit, $offset, $search, $search_mode, $view_mode = false, $format = 'atom') { require_once "lib/MiniTemplator.class.php"; @@ -25,7 +25,7 @@ class Handler_Public extends Handler { $qfh_ret = queryFeedHeadlines($this->link, $feed, $limit, $view_mode, $is_cat, $search, $search_mode, - $match_on, "$date_sort_field DESC", $offset, $owner_uid, + "$date_sort_field DESC", $offset, $owner_uid, false, 0, false, true); $result = $qfh_ret[0]; @@ -314,7 +314,6 @@ class Handler_Public extends Handler { $offset = (int)db_escape_string($_REQUEST["offset"]); $search = db_escape_string($_REQUEST["q"]); - $match_on = db_escape_string($_REQUEST["m"]); $search_mode = db_escape_string($_REQUEST["smode"]); $view_mode = db_escape_string($_REQUEST["view-mode"]); @@ -338,7 +337,7 @@ class Handler_Public extends Handler { if ($owner_id) { $this->generate_syndicated_feed($owner_id, $feed, $is_cat, $limit, - $offset, $search, $search_mode, $match_on, $view_mode, $format); + $offset, $search, $search_mode, $view_mode, $format); } else { header('HTTP/1.1 403 Forbidden'); } diff --git a/classes/pluginhost.php b/classes/pluginhost.php index 592629881..710435ae4 100644 --- a/classes/pluginhost.php +++ b/classes/pluginhost.php @@ -21,6 +21,7 @@ class PluginHost { const HOOK_RENDER_ARTICLE = 10; const HOOK_RENDER_ARTICLE_CDM = 11; const HOOK_FEED_FETCHED = 12; + const HOOK_SANITIZE = 13; const KIND_ALL = 1; const KIND_SYSTEM = 2; @@ -170,7 +171,7 @@ class PluginHost { } function add_command($command, $description, $sender) { - $command = "-" . str_replace("-", "_", strtolower($command)); + $command = str_replace("-", "_", strtolower($command)); $this->commands[$command] = array("description" => $description, "class" => $sender); @@ -200,7 +201,7 @@ class PluginHost { function run_commands($args) { foreach ($this->get_commands() as $command => $data) { - if (in_array($command, $args)) { + if (isset($args[$command])) { $command = str_replace("-", "", $command); $data["class"]->$command($args); } diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index bfcc75f0d..285995dfc 100644 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -613,6 +613,18 @@ class Pref_Feeds extends Handler_Protected { name=\"always_display_enclosures\" $checked> <label for=\"always_display_enclosures\">".__('Always display image attachments')."</label>"; + $hide_images = sql_bool_to_bool(db_fetch_result($result, 0, "hide_images")); + + if ($hide_images) { + $checked = "checked=\"1\""; + } else { + $checked = ""; + } + + print "<hr/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"hide_images\" + name=\"hide_images\" + $checked> <label for=\"hide_images\">". + __('Do not embed images')."</label>"; $cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images")); @@ -804,6 +816,14 @@ class Pref_Feeds extends Handler_Protected { print " "; $this->batch_edit_cbox("always_display_enclosures", "always_display_enclosures_l"); + print "<br/><input disabled=\"1\" type=\"checkbox\" id=\"hide_images\" + name=\"hide_images\" + dojoType=\"dijit.form.CheckBox\"> <label class='insensitive' id=\"hide_images_l\" + for=\"hide_images\">". + __('Do not embed images')."</label>"; + + print " "; $this->batch_edit_cbox("hide_images", "hide_images_l"); + print "<br/><input disabled=\"1\" type=\"checkbox\" id=\"cache_images\" name=\"cache_images\" dojoType=\"dijit.form.CheckBox\"> <label class='insensitive' id=\"cache_images_l\" @@ -856,7 +876,8 @@ class Pref_Feeds extends Handler_Protected { db_escape_string($_POST["include_in_digest"])); $cache_images = checkbox_to_sql_bool( db_escape_string($_POST["cache_images"])); - + $hide_images = checkbox_to_sql_bool( + db_escape_string($_POST["hide_images"])); $always_display_enclosures = checkbox_to_sql_bool( db_escape_string($_POST["always_display_enclosures"])); @@ -887,6 +908,7 @@ class Pref_Feeds extends Handler_Protected { auth_pass = '$auth_pass', private = $private, cache_images = $cache_images, + hide_images = $hide_images, include_in_digest = $include_in_digest, always_display_enclosures = $always_display_enclosures, mark_unread_on_update = $mark_unread_on_update @@ -952,6 +974,10 @@ class Pref_Feeds extends Handler_Protected { $qpart = "cache_images = $cache_images"; break; + case "hide_images": + $qpart = "hide_images = $hide_images"; + break; + case "cat_id": $qpart = $category_qpart_nocomma; break; diff --git a/classes/pref/filters.php b/classes/pref/filters.php index 20abae1d0..1921f2b97 100644 --- a/classes/pref/filters.php +++ b/classes/pref/filters.php @@ -47,7 +47,7 @@ class Pref_Filters extends Handler_Protected { $feed_title = getFeedTitle($this->link, $feed); $qfh_ret = queryFeedHeadlines($this->link, -4, 30, "", false, false, false, - false, "date_entered DESC", 0, $_SESSION["uid"], $filter); + "date_entered DESC", 0, $_SESSION["uid"], $filter); $result = $qfh_ret[0]; @@ -370,9 +370,9 @@ class Pref_Filters extends Handler_Protected { $result = db_query($this->link, "SELECT description FROM ttrss_filter_types WHERE id = ".(int)$rule["filter_type"]); - $match_on = db_fetch_result($result, 0, "description"); + $filter_type = db_fetch_result($result, 0, "description"); - return T_sprintf("%s on %s in %s", strip_tags($rule["reg_exp"]), $match_on, $feed); + return T_sprintf("%s on %s in %s", strip_tags($rule["reg_exp"]), $filter_type, $feed); } function printRuleName() { diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php index 810b1e164..8b8630c82 100644 --- a/classes/pref/prefs.php +++ b/classes/pref/prefs.php @@ -42,6 +42,12 @@ class Pref_Prefs extends Handler_Protected { $_SESSION["prefs_cache"] = false; + $boolean_prefs = explode(",", $_POST["boolean_prefs"]); + + foreach ($boolean_prefs as $pref) { + if (!isset($_POST[$pref])) $_POST[$pref] = 'false'; + } + foreach (array_keys($_POST) as $pref_name) { $pref_name = db_escape_string($pref_name); @@ -429,6 +435,8 @@ class Pref_Prefs extends Handler_Protected { $active_section = ""; + $listed_boolean_prefs = array(); + while ($line = db_fetch_assoc($result)) { if (in_array($line["pref_name"], $prefs_blacklist)) { @@ -463,7 +471,10 @@ class Pref_Prefs extends Handler_Protected { $def_value = $line["def_value"]; $help_text = $line["help_text"]; - print "<td width=\"40%\" class=\"prefName\" id=\"$pref_name\">" . __($line["short_desc"]); + print "<td width=\"40%\" class=\"prefName\" id=\"$pref_name\">"; + print "<label for='CB_$pref_name'>"; + print __($line["short_desc"]); + print "</label>"; if ($help_text) print "<div class=\"prefHelp\">".__($help_text)."</div>"; @@ -497,21 +508,19 @@ class Pref_Prefs extends Handler_Protected { } else if ($type_name == "bool") { - if ($value == "true") { - $value = __("Yes"); - } else { - $value = __("No"); - } + array_push($listed_boolean_prefs, $pref_name); + + $checked = ($value == "true") ? "checked=\"checked\"" : ""; if ($pref_name == "PURGE_UNREAD_ARTICLES" && FORCE_ARTICLE_PURGE != 0) { $disabled = "disabled=\"1\""; - $value = __("Yes"); + $checked = "checked=\"checked\""; } else { $disabled = ""; } - print_radio($pref_name, $value, __("Yes"), array(__("Yes"), __("No")), - $disabled); + print "<input type='checkbox' name='$pref_name' $checked $disabled + dojoType='dijit.form.CheckBox' id='CB_$pref_name' value='1'>"; } else if (array_search($pref_name, array('FRESH_ARTICLE_MAX_AGE', 'DEFAULT_ARTICLE_LIMIT', 'PURGE_OLD_DAYS', 'LONG_DATE_FORMAT', 'SHORT_DATE_FORMAT')) !== false) { @@ -568,6 +577,10 @@ class Pref_Prefs extends Handler_Protected { print "</table>"; + $listed_boolean_prefs = htmlspecialchars(join(",", $listed_boolean_prefs)); + + print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"boolean_prefs\" value=\"$listed_boolean_prefs\">"; + global $pluginhost; $pluginhost->run_hooks($pluginhost::HOOK_PREFS_TAB_SECTION, "hook_prefs_tab_section", "prefPrefsPrefsInside"); diff --git a/classes/rpc.php b/classes/rpc.php index b297bbade..139f1fe49 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -663,7 +663,7 @@ class RPC extends Handler_Protected { score = '$score' WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); print json_encode(array("id" => $id, - "score_pic" => theme_image($link, get_score_pic($score)))); + "score_pic" => get_score_pic($score))); } function setpanelmode() { |