diff --git a/htroot/yacysearch.java b/htroot/yacysearch.java
index 26e4aa78f..8505e562a 100644
--- a/htroot/yacysearch.java
+++ b/htroot/yacysearch.java
@@ -139,8 +139,8 @@ public class yacysearch {
// get segment
Segment indexSegment = sb.index;
- final String EXT = header.get("EXT", "");
- final boolean rss = EXT.equals("rss");
+ final String EXT = header.get(HeaderFramework.CONNECTION_PROP_EXT, "");
+ final boolean rss = "rss.atom".contains(EXT);
final boolean json = EXT.equals("json");
prop.put("promoteSearchPageGreeting", promoteSearchPageGreeting);
diff --git a/htroot/yacysearchitem.atom b/htroot/yacysearchitem.atom
index 15293b033..c822371f9 100644
--- a/htroot/yacysearchitem.atom
+++ b/htroot/yacysearchitem.atom
@@ -7,5 +7,6 @@
#[link]#
+#[date822]#
#(/content)#
\ No newline at end of file
diff --git a/htroot/yacysearchitem.java b/htroot/yacysearchitem.java
index d21e38d9c..3392ab771 100644
--- a/htroot/yacysearchitem.java
+++ b/htroot/yacysearchitem.java
@@ -28,6 +28,7 @@ import java.net.MalformedURLException;
import java.util.Iterator;
import net.yacy.cora.date.GenericFormatter;
+import net.yacy.cora.date.ISO8601Formatter;
import net.yacy.cora.document.analysis.Classification;
import net.yacy.cora.document.analysis.Classification.ContentDomain;
import net.yacy.cora.document.encoding.ASCII;
@@ -128,15 +129,6 @@ public class yacysearchitem {
final String resource = theSearch.query.domType.toString();
final String origQ = theSearch.query.getQueryGoal().getQueryString(true);
prop.put("content", 1); // switch on specific content
- prop.put("content_showDate", sb.getConfigBool("search.result.show.date", true) ? 1 : 0);
- prop.put("content_showSize", sb.getConfigBool("search.result.show.size", true) ? 1 : 0);
- prop.put("content_showMetadata", sb.getConfigBool("search.result.show.metadata", true) ? 1 : 0);
- prop.put("content_showParser", sb.getConfigBool("search.result.show.parser", true) ? 1 : 0);
- prop.put("content_showCitation", sb.getConfigBool("search.result.show.citation", true) ? 1 : 0);
- prop.put("content_showPictures", sb.getConfigBool("search.result.show.pictures", true) ? 1 : 0);
- prop.put("content_showCache", sb.getConfigBool("search.result.show.cache", true) && Cache.has(resultURL.hash()) ? 1 : 0);
- prop.put("content_showProxy", sb.getConfigBool("search.result.show.proxy", true) ? 1 : 0);
- prop.put("content_showHostBrowser", sb.getConfigBool("search.result.show.hostbrowser", true) ? 1 : 0);
prop.put("content_authorized", authenticated ? "1" : "0");
final String urlhash = ASCII.String(result.hash());
prop.put("content_authorized_bookmark", sb.tables.bookmarks.hasBookmark("admin", urlhash) ? "0" : "1");
@@ -145,7 +137,6 @@ public class yacysearchitem {
prop.putHTML("content_authorized_recommend_deletelink", "yacysearch.html?query=" + origQ.replace(' ', '+') + "&Enter=Search&count=" + theSearch.query.itemsPerPage() + "&offset=" + (theSearch.query.neededResults() - theSearch.query.itemsPerPage()) + "&order=" + crypt.simpleEncode(theSearch.query.ranking.toExternalString()) + "&resource=" + resource + "&time=3&deleteref=" + urlhash + "&urlmaskfilter=.*");
prop.putHTML("content_authorized_recommend_recommendlink", "yacysearch.html?query=" + origQ.replace(' ', '+') + "&Enter=Search&count=" + theSearch.query.itemsPerPage() + "&offset=" + (theSearch.query.neededResults() - theSearch.query.itemsPerPage()) + "&order=" + crypt.simpleEncode(theSearch.query.ranking.toExternalString()) + "&resource=" + resource + "&time=3&recommendref=" + urlhash + "&urlmaskfilter=.*");
prop.put("content_authorized_urlhash", urlhash);
- final String resulthashString = urlhash;
prop.putHTML("content_title", result.title());
prop.putXML("content_title-xml", result.title());
prop.putJSON("content_title-json", result.title());
@@ -187,26 +178,40 @@ public class yacysearchitem {
// prop.putHTML("content_value", Interaction.TripleGet(result.urlstring(), "http://virtual.x/hasvalue", "anonymous"));
// END interaction
+ boolean isAtomFeed = header.get(HeaderFramework.CONNECTION_PROP_EXT, "").equals("atom");
String resultFileName = resultURL.getFileName();
prop.putHTML("content_target", target);
if (faviconURL != null && fileType == FileType.HTML) sb.loader.loadIfNotExistBackground(faviconURL, 1024 * 1024 * 10, null, ClientIdentification.yacyIntranetCrawlerAgent);
prop.putHTML("content_faviconCode", URLLicense.aquireLicense(faviconURL)); // acquire license for favicon url loading
- prop.put("content_urlhash", resulthashString);
+ prop.put("content_urlhash", urlhash);
prop.put("content_ranking", Float.toString(result.score()));
- prop.put("content_showMetadata_urlhash", resulthashString);
- prop.put("content_showCache_link", resultUrlstring);
- prop.put("content_showProxy_link", resultUrlstring);
- prop.put("content_showHostBrowser_link", resultUrlstring);
- prop.put("content_showParser_urlhash", resulthashString);
- prop.put("content_showCitation_urlhash", resulthashString);
- prop.put("content_urlhexhash", Seed.b64Hash2hexHash(resulthashString));
+ if (fileType == FileType.HTML) { // html template specific settings
+ prop.put("content_showDate", sb.getConfigBool("search.result.show.date", true) ? 1 : 0);
+ prop.put("content_showSize", sb.getConfigBool("search.result.show.size", true) ? 1 : 0);
+ prop.put("content_showMetadata", sb.getConfigBool("search.result.show.metadata", true) ? 1 : 0);
+ prop.put("content_showParser", sb.getConfigBool("search.result.show.parser", true) ? 1 : 0);
+ prop.put("content_showCitation", sb.getConfigBool("search.result.show.citation", true) ? 1 : 0);
+ prop.put("content_showPictures", sb.getConfigBool("search.result.show.pictures", true) ? 1 : 0);
+ prop.put("content_showCache", sb.getConfigBool("search.result.show.cache", true) && Cache.has(resultURL.hash()) ? 1 : 0);
+ prop.put("content_showProxy", sb.getConfigBool("search.result.show.proxy", true) ? 1 : 0);
+ prop.put("content_showHostBrowser", sb.getConfigBool("search.result.show.hostbrowser", true) ? 1 : 0);
+
+ prop.put("content_showDate_date", GenericFormatter.RFC1123_SHORT_FORMATTER.format(result.modified()));
+ prop.putHTML("content_showSize_sizename", RSSMessage.sizename(result.filesize()));
+ prop.put("content_showMetadata_urlhash", urlhash);
+ prop.put("content_showParser_urlhash", urlhash);
+ prop.put("content_showCitation_urlhash", urlhash);
+ prop.putHTML("content_showPictures_former", origQ);
+ prop.put("content_showCache_link", resultUrlstring);
+ prop.put("content_showProxy_link", resultUrlstring);
+ prop.put("content_showHostBrowser_link", resultUrlstring);
+ }
+ prop.put("content_urlhexhash", Seed.b64Hash2hexHash(urlhash));
prop.putHTML("content_urlname", nxTools.shortenURLString(result.urlname(), MAX_URL_LENGTH));
- prop.put("content_showDate_date", GenericFormatter.RFC1123_SHORT_FORMATTER.format(result.modified()));
- prop.put("content_date822", HeaderFramework.formatRFC1123(result.modified()));
+ prop.put("content_date822", isAtomFeed ? ISO8601Formatter.FORMATTER.format(result.modified()) : HeaderFramework.formatRFC1123(result.modified()));
//prop.put("content_ybr", RankingProcess.ybr(result.hash()));
prop.putHTML("content_size", Integer.toString(result.filesize())); // we don't use putNUM here because that number shall be usable as sorting key. To print the size, use 'sizename'
- prop.putHTML("content_sizename", RSSMessage.sizename(result.filesize()));
- prop.putHTML("content_showSize_sizename", RSSMessage.sizename(result.filesize()));
+ prop.putHTML("content_sizename", RSSMessage.sizename(result.filesize()));
prop.putHTML("content_host", resultURL.getHost() == null ? "" : resultURL.getHost());
prop.putXML("content_file", resultFileName); // putXML for rss
prop.putXML("content_path", resultURL.getPath()); // putXML for rss
@@ -221,7 +226,6 @@ public class yacysearchitem {
prop.putHTML("content_words", words);
prop.putHTML("content_showParser_words", words);
prop.putHTML("content_former", origQ);
- prop.putHTML("content_showPictures_former", origQ);
final TextSnippet snippet = result.textSnippet();
final String desc = (snippet == null) ? "" : snippet.descriptionline(theSearch.query.getQueryGoal());
prop.put("content_description", desc);