From 279d0f96085637bfe08d093eb9f43e47bafa4b82 Mon Sep 17 00:00:00 2001 From: "myk%mozilla.org" Date: Tue, 2 Aug 2005 03:29:11 +0000 Subject: [PATCH] Fix for bug 302121: Implements feedview feature for better display of RSS and Atom feed files. r=mconnor, approval1.8b4+=mconnor --- browser/app/profile/firefox.js | 6 + browser/base/content/browser.js | 3 + browser/base/content/browser.xul | 3 + browser/components/Makefile.in | 1 + browser/components/feedview/Makefile.in | 46 +++ .../components/feedview/content/feedview.js | 216 +++++++++++++ .../components/feedview/content/feedview.xsl | 292 ++++++++++++++++++ .../feedview/content/feedviewOverlay.js | 200 ++++++++++++ browser/components/feedview/jar.mn | 4 + .../en-US/chrome/browser/feedview.properties | 39 +++ browser/locales/jar.mn | 1 + .../pinstripe/browser/feedview/check.png | Bin 0 -> 243 bytes .../pinstripe/browser/feedview/feedview.css | 190 ++++++++++++ .../browser/feedview/itemSelected.png | Bin 0 -> 459 bytes browser/themes/pinstripe/browser/jar.mn | 3 + .../winstripe/browser/feedview/check.png | Bin 0 -> 243 bytes .../winstripe/browser/feedview/feedview.css | 190 ++++++++++++ .../browser/feedview/itemSelected.png | Bin 0 -> 459 bytes browser/themes/winstripe/browser/jar.mn | 3 + 19 files changed, 1197 insertions(+) create mode 100644 browser/components/feedview/Makefile.in create mode 100644 browser/components/feedview/content/feedview.js create mode 100644 browser/components/feedview/content/feedview.xsl create mode 100644 browser/components/feedview/content/feedviewOverlay.js create mode 100644 browser/components/feedview/jar.mn create mode 100644 browser/locales/en-US/chrome/browser/feedview.properties create mode 100644 browser/themes/pinstripe/browser/feedview/check.png create mode 100644 browser/themes/pinstripe/browser/feedview/feedview.css create mode 100644 browser/themes/pinstripe/browser/feedview/itemSelected.png create mode 100644 browser/themes/winstripe/browser/feedview/check.png create mode 100644 browser/themes/winstripe/browser/feedview/feedview.css create mode 100644 browser/themes/winstripe/browser/feedview/itemSelected.png diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index e1a26dbbf8f1..3ed7c7cbd627 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -388,3 +388,9 @@ pref("browser.display.screen_resolution", 96); pref("browser.download.show_plugins_in_list", true); pref("browser.download.hide_plugins_without_extensions", true); + +pref("browser.feedview.articleLength", 50); +pref("browser.feedview.showBar", true); +pref("browser.feedview.showImage", true); +pref("browser.feedview.timerInterval", 0); +pref("browser.feedview.externalCSS", ""); diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 4c25e1195175..8bc44edcf38b 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -872,6 +872,9 @@ function delayedStartup() document.getElementById("textfieldDirection-separator").hidden = false; document.getElementById("textfieldDirection-swap").hidden = false; } + + // Prepare to load feedview for feed files. + initFeedview(); } function BrowserShutdown() diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul index 02e5b6b782ad..5bd5b6155e29 100644 --- a/browser/base/content/browser.xul +++ b/browser/base/content/browser.xul @@ -71,11 +71,14 @@ #include global-scripts.inc + + + + + + + + + + + + + +

+ +

+ +
+ +
+
+ + + +
+ + + + + + + + + + + + + + + + +

+ +
+
+ + + +

+ + + +

+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + +

+

+
+ + + +

+ + + +

+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + +

+

+
+ + diff --git a/browser/components/feedview/content/feedviewOverlay.js b/browser/components/feedview/content/feedviewOverlay.js new file mode 100644 index 000000000000..331a14f65570 --- /dev/null +++ b/browser/components/feedview/content/feedviewOverlay.js @@ -0,0 +1,200 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Feedview for Firefox. + * + * The Initial Developer of the Original Code is + * Tom Germeau . + * Portions created by the Initial Developer are Copyright (C) 2005 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + + +var gFeedviewPrefs; + +// The values to which these variables are initialized are just backups +// in case we can't get the actual values from the prefs service. +var gFeedviewPrefArticleLength = 50; +var gFeedviewPrefShowBar = true; +var gFeedviewPrefShowImage = true; +var gFeedviewPrefTimerInterval = 0; +var gFeedviewPrefExternalCSS = ""; + +var gFeedviewProcessor; +var gFeedviewStylesheet; + +function initFeedview() { + try { + gFeedviewPrefs = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefService) + .getBranch("browser.feedview."); + + gFeedviewPrefArticleLength = gFeedviewPrefs.getIntPref("articleLength"); + gFeedviewPrefShowBar = gFeedviewPrefs.getBoolPref("showBar"); + gFeedviewPrefShowImage = gFeedviewPrefs.getBoolPref("showImage"); + gFeedviewPrefTimerInterval = gFeedviewPrefs.getIntPref("timerInterval"); + gFeedviewPrefExternalCSS = gFeedviewPrefs.getCharPref("externalCSS"); + } + catch (ex) {} + + gFeedviewProcessor = new XSLTProcessor(); + gFeedviewStylesheet = document.implementation.createDocument("", "", null); + gFeedviewStylesheet.addEventListener("load", onLoadFeedviewStylesheet, false); + gFeedviewStylesheet.load("chrome://browser/content/feedview/feedview.xsl"); + + window.addEventListener("load", maybeLoadFeedview, true); +} + +function onLoadFeedviewStylesheet() { + gFeedviewProcessor.importStylesheet(gFeedviewStylesheet); +} + +function feedviewIsFeed(doc) { + const ATOM_10_NS = "http://www.w3.org/2005/Atom"; + const ATOM_03_NS = "http://purl.org/atom/ns#"; + const RSS_10_NS = "http://purl.org/rss/1.0/"; + const RSS_09_NS = "http://my.netscape.com/rdf/simple/0.9/"; + const RDF_NS = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; + + var rootName = doc.localName; + var rootNS = doc.namespaceURI; + var channel; + + // Atom feeds have a root "feed" element in one of two namespaces. + if (rootName == "feed" && (rootNS == ATOM_10_NS || rootNS == ATOM_03_NS)) + return true; + + // RSS 2.0, 0.92, and 0.91 feeds have a non-namespaced root "rss" element + // containing a non-namespaced "channel" child. + else if (rootName == "rss" && rootNS == null) { + channel = doc.getElementsByTagName('channel')[0]; + if (channel && channel.parentNode == doc) + return true; + } + + // RSS 1.0 and 0.9 feeds have a root "RDF" element in the RDF namespace + // and a "channel" child in the RSS 1.0 or 0.9 namespaces. + else if (rootName == "RDF" && rootNS == RDF_NS) { + channel = doc.getElementsByTagNameNS(RSS_10_NS, 'channel')[0] + || doc.getElementsByTagNameNS(RSS_09_NS, 'channel')[0]; + if (channel && channel.parentNode == doc) + return true; + } + + // If it didn't match any criteria yet, it's probably not a feed, + // or perhaps it's a nonconformist feed. If you see a number of those + // and they match some pattern, add a check for that pattern here, + // making sure to specify the strictest check that matches that pattern + // to minimize false positives. + return false; +} + +// Checks every document to see if it's a feed file, and transforms it if so. +function maybeLoadFeedview(evnt) { + // See if the document is XML. If not, it's definitely not a feed. + if (!(evnt.originalTarget instanceof XMLDocument)) + return; + + var dataXML = evnt.originalTarget; + + // Make sure the document is loaded into one of the browser tabs. + // Otherwise, it might have been loaded as data by some application + // that expects it not to change, and we shouldn't break the app + // by changing the document. + var browser; + var browsers = document.getElementById('content').browsers; + for (var i = 0; i < browsers.length; i++) { + if (dataXML == browsers[i].contentDocument) { + browser = browsers[i]; + break; + } + } + if (!browser) + return; + + // See if the document we're dealing with is actually a feed. + if (!feedviewIsFeed(dataXML.documentElement)) + return; + + var ownerDocument = document.implementation.createDocument("", "", null); + + var strbundle=document.getElementById("bundle_feedview"); + + gFeedviewProcessor.setParameter(null, "feedUrl", evnt.originalTarget.documentURI); + gFeedviewProcessor.setParameter(null, "feedTitle", strbundle.getString("title") ); + // XXX This should be in a DTD. + gFeedviewProcessor.setParameter(null, "lengthSliderLabel", strbundle.getString("lengthSliderLabel")); + + // XXX These are static values. Can I set them once and have the processor + // apply them every time I use it to transform a document? + gFeedviewProcessor.setParameter(null, "articleLength", gFeedviewPrefArticleLength); + gFeedviewProcessor.setParameter(null, "showBar", gFeedviewPrefShowBar); + gFeedviewProcessor.setParameter(null, "showImage", gFeedviewPrefShowImage); + gFeedviewProcessor.setParameter(null, "timerInterval", gFeedviewPrefTimerInterval); + gFeedviewProcessor.setParameter(null, "externalCSS", gFeedviewPrefExternalCSS ); + + // Get the length and give it to the description thingie. + var len = dataXML.getElementsByTagName("item").length; + if (len == 0) + len = dataXML.getElementsByTagName("entry").length; + gFeedviewProcessor.setParameter(null, "feedDescription", strbundle.getFormattedString("description", [len] ) ); + + var newFragment = gFeedviewProcessor.transformToFragment(dataXML, ownerDocument); + + var oldLink = dataXML.documentElement.firstChild; + + // XXX: it would be better if we could replace the documentElement.. + // now the rdf/rss/feed tag remains , NOT good + dataXML.documentElement.replaceChild(newFragment, oldLink); + + oldLink = dataXML.documentElement.firstChild.nextSibling; + + // Kill all other child elements of the document element + // so only our transformed feed remains. + while (oldLink != null) { + oldLinkX = oldLink.nextSibling; + + if (oldLinkX != null) + dataXML.documentElement.removeChild(oldLink); + + oldLink = oldLinkX; + } + + // Watch the article length slider so we can update the corresponding pref + // when it changes. + var slider = dataXML.getElementById('lengthSlider'); + slider.addEventListener("mouseclick", updateFeedviewPrefArticleLength, false); + slider.addEventListener("mouseup", updateFeedviewPrefArticleLength, false); +} + +function updateFeedviewPrefArticleLength(event) { + if (gFeedviewPrefArticleLength != event.target.getAttribute("curpos")) { + gFeedviewPrefArticleLength = event.target.getAttribute("curpos"); + gFeedviewPrefs.setIntPref("articleLength", gFeedviewPrefArticleLength); + } +} diff --git a/browser/components/feedview/jar.mn b/browser/components/feedview/jar.mn new file mode 100644 index 000000000000..4ebf41182c3f --- /dev/null +++ b/browser/components/feedview/jar.mn @@ -0,0 +1,4 @@ +browser.jar: + content/browser/feedview/feedviewOverlay.js (content/feedviewOverlay.js) + content/browser/feedview/feedview.xsl (content/feedview.xsl) + content/browser/feedview/feedview.js (content/feedview.js) diff --git a/browser/locales/en-US/chrome/browser/feedview.properties b/browser/locales/en-US/chrome/browser/feedview.properties new file mode 100644 index 000000000000..5c6942c6347e --- /dev/null +++ b/browser/locales/en-US/chrome/browser/feedview.properties @@ -0,0 +1,39 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is Feedview for Firefox. +# +# The Initial Developer of the Original Code is +# Tom Germeau (www.epigoon.com). +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +title=Feed: +description=This feed contains %S articles. +lengthSliderLabel=Article length: diff --git a/browser/locales/jar.mn b/browser/locales/jar.mn index f3bc85577d90..f55c489c4d44 100644 --- a/browser/locales/jar.mn +++ b/browser/locales/jar.mn @@ -7,6 +7,7 @@ * locale/browser/browser.dtd (%chrome/browser/browser.dtd) locale/browser/baseMenuOverlay.dtd (%chrome/browser/baseMenuOverlay.dtd) locale/browser/browser.properties (%chrome/browser/browser.properties) + locale/browser/feedview.properties (%chrome/browser/feedview.properties) locale/browser/metaData.dtd (%chrome/browser/metaData.dtd) locale/browser/metaData.properties (%chrome/browser/metaData.properties) locale/browser/openLocation.dtd (%chrome/browser/openLocation.dtd) diff --git a/browser/themes/pinstripe/browser/feedview/check.png b/browser/themes/pinstripe/browser/feedview/check.png new file mode 100644 index 0000000000000000000000000000000000000000..beb23db519c706df9d84b5dd48ced339c897c8b5 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CF!3HE7boT!OQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%wR*ZZhE&{2`t$$4J+op$Qqm*l zC0vdBzDZYKKJ* zn>vVISDY!wxHR99w}E+v{JF$H9;Vq1%jyqbU=aDkvm|ZN&qVHk8tYxhCpdG)78!4w o(2(u0IaO^!J^O671_ow^s!2LiLjK660v*KQ>FVdQ&MBb@0Kk}1%K!iX literal 0 HcmV?d00001 diff --git a/browser/themes/pinstripe/browser/feedview/feedview.css b/browser/themes/pinstripe/browser/feedview/feedview.css new file mode 100644 index 000000000000..aa5e6d75cb82 --- /dev/null +++ b/browser/themes/pinstripe/browser/feedview/feedview.css @@ -0,0 +1,190 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Feedview for Firefox. + * + * The Initial Developer of the Original Code is + * Tom Germeau . + * Portions created by the Initial Developer are Copyright (C) 2005 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +feed, rss, rdf { + margin: 0; + padding: 0; +} + +body { + padding: 30px; + margin: 0; +} + +* { + font-family: arial; +} + +p { + width: 70%; + color: #666; + font-size: 13px; + margin-bottom: 20px; + margin-top: 5px; +} + +p > p { + width: 100%; +} + +select { + color: #666; + font-size: 13px; +} + +h1 { + font-weight: normal; + font-size: 27px; + margin: -30px; + margin-bottom: 30px; + padding: 12px; + padding-left: 28px; + background-image: url("chrome://browser/skin/feedview/itemSelected.png") !important; +} + +div.article a { + color: #444; + text-decoration: none; + font-size: 16px; + font-weight: bold; + padding-right: 25px; +} + +div.article a:visited { + -moz-opacity: 1; + background: url(chrome://browser/skin/feedview/check.png) no-repeat right; +} + +.image:visited { + background: transparent !important; +} + +h1 a { + text-decoration: none; + color: white; +} + +span.date { + margin-left:30px; + font-size:14px ; + color: #ccc; + font-weight: bold; +} + +span#number { + margin-left:0px; + display:inline; + font-size:13px; +} + +#addLivemark { + display:none; + font-size: 12px; + font-weight: normal; + background: url(chrome://browser/skin/page-livemarks.png) no-repeat; + padding-left: 25px; +} + +#lengthSwitcher { + display: none; +} + +#lengthSwitcher td { + vertical-align:top; +} + +#lengthSwitcher div { + width: 20px; + background: #bbb; + -moz-border-radius: 3px; + cursor: pointer; + -moz-opacity: 0.6; +} + +#lengthSwitcher div:hover { + -moz-opacity: 1; +} + +#switchdate { + cursor: pointer; +} + +#lengthSlider { + background: #fff; + -moz-border-radius: 6px; +} + +#menubox { + width:125px; + -moz-border-radius:4px; + position: absolute; + top: 40px; + right: 30px; + + margin-top: 40px; + background: #eee; /*#f5f5f5; */ + border: 1px solid #ddd; + padding: 10px 30px 15px 30px; + font-size: 12px; color: #aaa; + border-width: 0 1px 1px 0; +} + +.image img { + max-height: 80px ; + border: 1px solid #ddd; + padding: 4px; + background: #fff; + margin: -13px 5px 18px 0px; + -moz-border-radius: 4px; + vertical-align: top; +} + +thumb { + height: 15px ; + min-height: 15px ; +} + +thumb * { + display:none; +} + +item, entry, channel { + display: none; +} + +p > p { + margin: 0; +} diff --git a/browser/themes/pinstripe/browser/feedview/itemSelected.png b/browser/themes/pinstripe/browser/feedview/itemSelected.png new file mode 100644 index 0000000000000000000000000000000000000000..964cd6acc684520cd4a15241226ee50f5d11badb GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^DL{OJgAGW^*|;18QY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrIztFvfbiIEGZ*dV9lD&_z+eg4D7A#a7-I0*bXpbm$y$dLj$d z9`mYbGE<1m|KH>y4@{S_EE=yPI3830O9d3}^qoC=n939Hu zVo8dd1Qd!=B0CyROk@Sh0@;icl}|gdxIheIR8nxDhz)c($U$IpNM%3SZZ>l*%hKf! S*-L@3!QkoY=d#Wzp$Pyz!+b^n literal 0 HcmV?d00001 diff --git a/browser/themes/pinstripe/browser/jar.mn b/browser/themes/pinstripe/browser/jar.mn index a60f71a275d2..de040658fb2d 100644 --- a/browser/themes/pinstripe/browser/jar.mn +++ b/browser/themes/pinstripe/browser/jar.mn @@ -43,6 +43,9 @@ classic.jar: skin/classic/browser/bookmarks/livemark-item.png (bookmarks/livemark-item.png) skin/classic/browser/bookmarks/folderarrow-hover.png (bookmarks/folderarrow-hover.png) skin/classic/browser/bookmarks/folderarrow.png (bookmarks/folderarrow.png) + skin/classic/browser/feedview/feedview.css (feedview/feedview.css) + skin/classic/browser/feedview/check.png (feedview/check.png) + skin/classic/browser/feedview/itemSelected.png (feedview/itemSelected.png) skin/classic/browser/preferences/Options.png (preferences/Options.png) skin/classic/browser/preferences/preferences.css (preferences/preferences.css) icon.png diff --git a/browser/themes/winstripe/browser/feedview/check.png b/browser/themes/winstripe/browser/feedview/check.png new file mode 100644 index 0000000000000000000000000000000000000000..beb23db519c706df9d84b5dd48ced339c897c8b5 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CF!3HE7boT!OQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%wR*ZZhE&{2`t$$4J+op$Qqm*l zC0vdBzDZYKKJ* zn>vVISDY!wxHR99w}E+v{JF$H9;Vq1%jyqbU=aDkvm|ZN&qVHk8tYxhCpdG)78!4w o(2(u0IaO^!J^O671_ow^s!2LiLjK660v*KQ>FVdQ&MBb@0Kk}1%K!iX literal 0 HcmV?d00001 diff --git a/browser/themes/winstripe/browser/feedview/feedview.css b/browser/themes/winstripe/browser/feedview/feedview.css new file mode 100644 index 000000000000..aa5e6d75cb82 --- /dev/null +++ b/browser/themes/winstripe/browser/feedview/feedview.css @@ -0,0 +1,190 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Feedview for Firefox. + * + * The Initial Developer of the Original Code is + * Tom Germeau . + * Portions created by the Initial Developer are Copyright (C) 2005 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +feed, rss, rdf { + margin: 0; + padding: 0; +} + +body { + padding: 30px; + margin: 0; +} + +* { + font-family: arial; +} + +p { + width: 70%; + color: #666; + font-size: 13px; + margin-bottom: 20px; + margin-top: 5px; +} + +p > p { + width: 100%; +} + +select { + color: #666; + font-size: 13px; +} + +h1 { + font-weight: normal; + font-size: 27px; + margin: -30px; + margin-bottom: 30px; + padding: 12px; + padding-left: 28px; + background-image: url("chrome://browser/skin/feedview/itemSelected.png") !important; +} + +div.article a { + color: #444; + text-decoration: none; + font-size: 16px; + font-weight: bold; + padding-right: 25px; +} + +div.article a:visited { + -moz-opacity: 1; + background: url(chrome://browser/skin/feedview/check.png) no-repeat right; +} + +.image:visited { + background: transparent !important; +} + +h1 a { + text-decoration: none; + color: white; +} + +span.date { + margin-left:30px; + font-size:14px ; + color: #ccc; + font-weight: bold; +} + +span#number { + margin-left:0px; + display:inline; + font-size:13px; +} + +#addLivemark { + display:none; + font-size: 12px; + font-weight: normal; + background: url(chrome://browser/skin/page-livemarks.png) no-repeat; + padding-left: 25px; +} + +#lengthSwitcher { + display: none; +} + +#lengthSwitcher td { + vertical-align:top; +} + +#lengthSwitcher div { + width: 20px; + background: #bbb; + -moz-border-radius: 3px; + cursor: pointer; + -moz-opacity: 0.6; +} + +#lengthSwitcher div:hover { + -moz-opacity: 1; +} + +#switchdate { + cursor: pointer; +} + +#lengthSlider { + background: #fff; + -moz-border-radius: 6px; +} + +#menubox { + width:125px; + -moz-border-radius:4px; + position: absolute; + top: 40px; + right: 30px; + + margin-top: 40px; + background: #eee; /*#f5f5f5; */ + border: 1px solid #ddd; + padding: 10px 30px 15px 30px; + font-size: 12px; color: #aaa; + border-width: 0 1px 1px 0; +} + +.image img { + max-height: 80px ; + border: 1px solid #ddd; + padding: 4px; + background: #fff; + margin: -13px 5px 18px 0px; + -moz-border-radius: 4px; + vertical-align: top; +} + +thumb { + height: 15px ; + min-height: 15px ; +} + +thumb * { + display:none; +} + +item, entry, channel { + display: none; +} + +p > p { + margin: 0; +} diff --git a/browser/themes/winstripe/browser/feedview/itemSelected.png b/browser/themes/winstripe/browser/feedview/itemSelected.png new file mode 100644 index 0000000000000000000000000000000000000000..964cd6acc684520cd4a15241226ee50f5d11badb GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^DL{OJgAGW^*|;18QY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrIztFvfbiIEGZ*dV9lD&_z+eg4D7A#a7-I0*bXpbm$y$dLj$d z9`mYbGE<1m|KH>y4@{S_EE=yPI3830O9d3}^qoC=n939Hu zVo8dd1Qd!=B0CyROk@Sh0@;icl}|gdxIheIR8nxDhz)c($U$IpNM%3SZZ>l*%hKf! S*-L@3!QkoY=d#Wzp$Pyz!+b^n literal 0 HcmV?d00001 diff --git a/browser/themes/winstripe/browser/jar.mn b/browser/themes/winstripe/browser/jar.mn index 46056645de48..52379b7177ba 100644 --- a/browser/themes/winstripe/browser/jar.mn +++ b/browser/themes/winstripe/browser/jar.mn @@ -24,6 +24,9 @@ classic.jar: skin/classic/browser/bookmarks/addBookmark.css (bookmarks/addBookmark.css) skin/classic/browser/bookmarks/bookmarksManager.css (bookmarks/bookmarksManager.css) skin/classic/browser/bookmarks/Bookmarks-toolbar.png (bookmarks/Bookmarks-toolbar.png) + skin/classic/browser/feedview/feedview.css (feedview/feedview.css) + skin/classic/browser/feedview/check.png (feedview/check.png) + skin/classic/browser/feedview/itemSelected.png (feedview/itemSelected.png) skin/classic/browser/preferences/Options.png (preferences/Options.png) skin/classic/browser/preferences/preferences.css (preferences/preferences.css) icon.png