Bug 360288 SeaMonkey Front End Support for New Remote Content Policy

p=me r=neil sr=bienvenu
This commit is contained in:
bugzilla%arlen.demon.co.uk 2006-11-28 21:26:08 +00:00
Родитель 15ad337b24
Коммит 81bb1080a4
9 изменённых файлов: 136 добавлений и 480 удалений

Просмотреть файл

@ -138,11 +138,12 @@ function OnLoadNewCard()
}
if ("aimScreenName" in window.arguments[0])
gEditCard.card.aimScreenName = window.arguments[0].aimScreenName;
if ("allowRemoteContent" in window.arguments[0])
document.getElementById('allowRemoteContent').checked =
window.arguments[0].allowRemoteContent == 'true';
if ("allowRemoteContent" in window.arguments[0]) {
gEditCard.card.allowRemoteContent = window.arguments[0].allowRemoteContent;
window.arguments[0].allowRemoteContent = false;
}
if ("okCallback" in window.arguments[0])
gOkCallback = window.arguments[0].okCallback;
@ -305,9 +306,9 @@ function OnLoadEditCard()
document.documentElement.buttons = "accept";
document.documentElement.removeAttribute("ondialogaccept");
}
// hide remote content in HTML field for remote directories
if (directory.isRemote)
// hide remote content in HTML field for remote directories
if (directory.isRemote)
document.getElementById('allowRemoteContent').hidden = true;
}
}
@ -407,6 +408,8 @@ function NewCardOKButton()
// the card that got created.
gEditCard.card = GetDirectoryFromURI(uri).addCard(gEditCard.card);
NotifySaveListeners();
if ("arguments" in window && window.arguments[0])
window.arguments[0].allowRemoteContent = gEditCard.card.allowRemoteContent;
}
}
@ -427,8 +430,8 @@ function GetCardValues(cardproperty, doc)
if (popup)
popup.value = cardproperty.preferMailFormat;
var allowRemoteContentEl = document.getElementById("allowRemoteContent");
if (allowRemoteContentEl)
var allowRemoteContentEl = document.getElementById("allowRemoteContent");
if (allowRemoteContentEl)
allowRemoteContentEl.checked = cardproperty.allowRemoteContent;
// get phonetic fields if exist
@ -468,8 +471,8 @@ function CheckAndSetCardValues(cardproperty, doc, check)
if (popup)
cardproperty.preferMailFormat = popup.value;
var allowRemoteContentEl = document.getElementById("allowRemoteContent");
if (allowRemoteContentEl)
var allowRemoteContentEl = document.getElementById("allowRemoteContent");
if (allowRemoteContentEl)
cardproperty.allowRemoteContent = allowRemoteContentEl.checked;
// set phonetic fields if exist

Просмотреть файл

@ -6,7 +6,6 @@
<!DOCTYPE page SYSTEM "chrome://messenger/locale/pref-viewing_messages.dtd">
<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:nc="http://home.netscape.com/NC-rdf#"
onload="parent.initPanel('chrome://messenger/content/pref-viewing_messages.xul');"
headertitle="&pref.viewing.messages.title;">
@ -16,43 +15,21 @@
"mailQuotedSize", "mailCitationColor",
"wrapLongLines", "displayGlyph",
"reuseMessageWindow", "disableContent",
"useWhiteList", "whiteListAbURI",
"markMessagesRead", "markMessagesReadAfter"];
var gMarkMessagesReadAfter;
function Startup() {
gMarkMessagesReadAfter = document.getElementById("markMessagesReadAfter");
enableTextbox(document.getElementById("markMessagesRead"), gMarkMessagesReadAfter, true);
enableWhiteList(document.getElementById("disableContent").checked);
}
function enableTextbox(checkbox, textbox, startingUp) {
textbox.disabled = isDisabled(checkbox.checked, textbox);
textbox.disabled = (!checkbox.checked ||
parent.hPrefWindow.getPrefIsLocked(textbox.getAttribute("prefstring")));
if (!textbox.disabled && !startingUp)
textbox.focus();
}
function isDisabled(aChecked, aElement) {
return (!aChecked ||
parent.hPrefWindow.getPrefIsLocked(aElement.getAttribute("prefstring")));
}
function enableCheckbox(aChecked, aCheckbox) {
var disabled = isDisabled(aChecked, aCheckbox);
aCheckbox.disabled = disabled;
return disabled;
}
function enableWhiteList(aChecked) {
var useWhiteList = document.getElementById("useWhiteList");
var disabled = enableCheckbox(aChecked, useWhiteList);
enableWLPopup(useWhiteList.checked && !disabled);
}
function enableWLPopup(aChecked) {
enableCheckbox(aChecked, document.getElementById("whiteListAbURI"));
}
]]>
</script>
@ -74,34 +51,7 @@
<checkbox id="disableContent" label="&disableContent.label;"
accesskey="&disableContent.accesskey;"
prefstring="mailnews.message_display.disable_remote_image"
prefattribute="checked" pref="true" preftype="bool"
oncommand="enableWhiteList(this.checked);"/>
<vbox class="indent">
<checkbox id="useWhiteList" label="&useWhiteList.label;"
accesskey="&useWhiteList.accesskey;"
prefstring="mailnews.message_display.disable_remote_images.useWhitelist"
prefattribute="checked" pref="true" preftype="bool"
oncommand="enableWLPopup(this.checked);"/>
<hbox class="indent">
<menulist id="whiteListAbURI" preftype="string"
prefstring="mailnews.message_display.disable_remote_images.whiteListAbURI"
ref="moz-abdirectory://"
datasources="rdf:addressdirectory"
sortActive="true" sortDirection="ascending"
sortResource="http://home.netscape.com/NC-rdf#DirTreeNameSort">
<template>
<rule nc:IsWriteable="false"/>
<rule nc:IsMailList="false">
<menupopup>
<menuitem uri="rdf:*"
label="rdf:http://home.netscape.com/NC-rdf#DirName"
value="rdf:http://home.netscape.com/NC-rdf#DirUri"/>
</menupopup>
</rule>
</template>
</menulist>
</hbox>
</vbox>
prefattribute="checked" pref="true" preftype="bool"/>
<separator class="thin"/>

Просмотреть файл

@ -1,82 +0,0 @@
<!-- ***** 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 Mozilla Communicator client code, released
March 31, 1998.
The Initial Developer of the Original Code is
Netscape Communications Corporation.
Portions created by the Initial Developer are Copyright (C) 1998-1999
the Initial Developer. All Rights Reserved.
Contributor(s):
Stefan Borggraefe <Stefan.Borggraefe@gmx.de>
Alternatively, the contents of this file may be used under the terms of
either of 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 ***** -->
<!ENTITY pref.viewing.messages.title "Message Display">
<!ENTITY style.label "Style:">
<!ENTITY style.accesskey "S">
<!ENTITY regular.label "Regular">
<!ENTITY bold.label "Bold">
<!ENTITY italic.label "Italic">
<!ENTITY boldItalic.label "Bold Italic">
<!ENTITY size.label "Size:">
<!ENTITY size.accesskey "z">
<!ENTITY bigger.label "Bigger">
<!ENTITY smaller.label "Smaller">
<!ENTITY color.label "Color:">
<!ENTITY color.accesskey "C">
<!ENTITY displayPlainText.caption "Plain text messages">
<!ENTITY plainTextFont.label "Use the following font width:">
<!ENTITY displayQuoted.label "Settings for quoted messages:">
<!ENTITY fixedWidth.label "Fixed">
<!ENTITY fixedWidth.accesskey "F">
<!ENTITY variableWidth.label "Variable">
<!ENTITY variableWidth.accesskey "V">
<!ENTITY readingMessagesHeader.label "For incoming messages">
<!ENTITY messageWrapping.label "Message Wrapping">
<!ENTITY wrapInMsg.label "Wrap text to fit window width">
<!ENTITY wrapInMsg.accesskey "t">
<!-- LOCALIZATION NOTE : (convertEmoticons.label) 'Emoticons' are also known as 'Smileys', e.g. :-) -->
<!ENTITY convertEmoticons.label "Display emoticons as graphics">
<!ENTITY convertEmoticons.accesskey "D">
<!ENTITY generalMessageDisplay.caption "General">
<!-- LOCALIZATION NOTE (markMessagesRead.label): This will concatenate with
"xxx seconds before marking a message as read", using a number and
(seconds.label). -->
<!ENTITY markMessagesRead.label "Wait">
<!ENTITY markMessagesRead.accesskey "W">
<!ENTITY seconds.label "seconds before marking a message as read">
<!ENTITY openingMessages.label "When opening messages, display them in:">
<!ENTITY newWindowRadio.label "A new message window">
<!ENTITY newWindowRadio.accesskey "n">
<!ENTITY existingWindowRadio.label "An existing message window">
<!ENTITY existingWindowRadio.accesskey "e">
<!ENTITY disableContent.label "Block images and other content from remote sources">
<!ENTITY disableContent.accesskey "B">
<!ENTITY useWhiteList.label "but allow if the sender is in this address book:">
<!ENTITY useWhiteList.accesskey "a">

Просмотреть файл

@ -2196,9 +2196,13 @@ var gMessageNotificationBar =
setRemoteContentMsg: function(aMsgHdr)
{
var blockRemote = aMsgHdr &&
aMsgHdr.getUint32Property("remoteContentPolicy") == kBlockRemoteContent;
this.updateMsgNotificationBar(kMsgNotificationRemoteImages, blockRemote);
// update the allow remote content for sender string
var headerParser = Components.classes["@mozilla.org/messenger/headerparser;1"]
.getService(Components.interfaces.nsIMsgHeaderParser);
var emailAddress = headerParser.extractHeaderAddressMailboxes(null, aMsgHdr.author);
document.getElementById('allowRemoteContentForAuthorDesc').value =
gMessengerBundle.getFormattedString('alwaysLoadRemoteContentForSender', [emailAddress ? emailAddress : aMsgHdr.author]);
this.updateMsgNotificationBar(kMsgNotificationRemoteImages, true);
},
// aUrl is the nsIURI for the message currently loaded in the message pane
@ -2234,7 +2238,11 @@ var gMessageNotificationBar =
}
};
function LoadMsgWithRemoteContent()
/**
* loadMsgWithRemoteContent
* Reload the current message, allowing remote content
*/
function loadMsgWithRemoteContent()
{
// we want to get the msg hdr for the currently selected message
// change the "remoteContentBar" property on it
@ -2243,6 +2251,76 @@ function LoadMsgWithRemoteContent()
setMsgHdrPropertyAndReload("remoteContentPolicy", kAllowRemoteContent);
}
/**
* msgHdrForCurrentMessage
* Returns the msg hdr associated with the current loaded message.
*/
function msgHdrForCurrentMessage()
{
var msgURI = GetLoadedMessage();
return (msgURI && !(/type=application\/x-message-display/.test(msgURI))) ? messenger.msgHdrFromURI(msgURI) : null;
}
/**
* Reloads the message after adjusting the remote content policy for the sender.
* Iterate through the local address books looking for a card with the same e-mail address as the
* sender of the current loaded message. If we find a card, update the allow remote content field.
* If we can't find a card, prompt the user with a new AB card dialog, pre-selecting the remote content field.
*/
function allowRemoteContentForSender()
{
// get the sender of the msg hdr
var msgHdr = msgHdrForCurrentMessage();
if (!msgHdr)
return;
var headerParser = Components.classes["@mozilla.org/messenger/headerparser;1"]
.getService(Components.interfaces.nsIMsgHeaderParser);
var names = {};
var addresses = {};
var fullNames = {};
var numAddresses;
numAddresses = headerParser.parseHeadersWithArray(msgHdr.author, addresses, names, fullNames);
var authorEmailAddress = addresses.value[0];
if (!authorEmailAddress)
return;
// search through all of our local address books looking for a match.
var parentDir = RDF.GetResource("moz-abdirectory://").QueryInterface(Components.interfaces.nsIAbDirectory);
var enumerator = parentDir.childNodes;
var cardForEmailAddress;
var addrbook;
while (!cardForEmailAddress && enumerator.hasMoreElements())
{
addrbook = enumerator.getNext();
if (addrbook instanceof Components.interfaces.nsIAbMDBDirectory)
cardForEmailAddress = addrbook.cardForEmailAddress(authorEmailAddress);
}
var allowRemoteContent = false;
if (cardForEmailAddress)
{
// set the property for remote content
cardForEmailAddress.allowRemoteContent = true;
cardForEmailAddress.editCardToDatabase("");
allowRemoteContent = true;
}
else
{
var args = {primaryEmail:authorEmailAddress, displayName:names.value[0],
allowRemoteContent:true};
// create a new card and set the property
window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xul",
"", "chrome,resizable=no,titlebar,modal,centerscreen", args);
allowRemoteContent = args.allowRemoteContent;
}
// reload the message if we've updated the remote content policy for the sender
if (allowRemoteContent)
MsgReload();
}
function MsgIsNotAScam()
{
// we want to get the msg hdr for the currently selected message
@ -2257,16 +2335,11 @@ function setMsgHdrPropertyAndReload(aProperty, aValue)
// we want to get the msg hdr for the currently selected message
// change the appropiate property on it then reload the message
var msgURI = GetLoadedMessage();
if (msgURI && !(/type=application\/x-message-display/.test(msgURI)))
var msgHdr = msgHdrForCurrentMessage();
if (msgHdr)
{
var msgHdr = messenger.msgHdrFromURI(msgURI);
if (msgHdr)
{
msgHdr.setUint32Property(aProperty, aValue);
MsgReload();
}
msgHdr.setUint32Property(aProperty, aValue);
MsgReload();
}
}
@ -2275,14 +2348,8 @@ function checkMsgHdrPropertyIsNot(aProperty, aValue)
// we want to get the msg hdr for the currently selected message,
// get the appropiate property on it and then test against value.
var msgURI = GetLoadedMessage();
if (msgURI && !(/type=application\/x-message-display/.test(msgURI)))
{
var msgHdr = messenger.msgHdrFromURI(msgURI);
return (msgHdr && msgHdr.getUint32Property(aProperty) != aValue);
}
return false;
var msgHdr = msgHdrForCurrentMessage();
return (msgHdr && msgHdr.getUint32Property(aProperty) != aValue);
}
function MarkCurrentMessageAsRead()
@ -2310,17 +2377,15 @@ function OnMsgLoaded(aUrl)
return;
// nsIMsgMailNewsUrl.folder throws an error when opening .eml files.
var folder;
try {
var folder = aUrl.folder;
} catch (ex) {
return;
}
folder = aUrl.folder;
} catch (ex) {}
var msgURI = GetLoadedMessage();
if (!msgURI)
return;
var msgHdr = null;
if (!folder || !msgURI)
return;
// If we are in the middle of a delete or move operation, make sure that
// if the user clicks on another message then that message stays selected
@ -2328,8 +2393,7 @@ function OnMsgLoaded(aUrl)
// SetNextMessageAfterDelete() when the operation completes (bug 243532).
gNextMessageViewIndexAfterDelete = -2;
if (!(/type=application\/x-message-display/.test(msgURI)))
msgHdr = messenger.msgHdrFromURI(msgURI);
var msgHdr = msgHdrForCurrentMessage();
gMessageNotificationBar.setJunkMsg(msgHdr);

Просмотреть файл

@ -1942,9 +1942,13 @@
<hbox id="remoteContentBar" class="msgNotificationBar" align="center">
<image id="remoteContentImage"/>
<description flex="1" class="msgNotificationBarText">&remoteContentMessage.label;</description>
<vbox>
<description flex="1" class="msgNotificationBarText">&remoteContentMessage.label;</description>
<label id="allowRemoteContentForAuthorDesc" class="text-link" flex="1"
onclick="allowRemoteContentForSender();"/>
</vbox>
<spacer flex="1"/>
<button label="&loadRemoteContentButton.label;" oncommand="LoadMsgWithRemoteContent();"/>
<button label="&loadRemoteContentButton.label;" oncommand="loadMsgWithRemoteContent();"/>
</hbox>
</deck>

Просмотреть файл

@ -379,5 +379,5 @@ confirmPhishingTitle=Email Scam Alert
confirmPhishingUrl1=%1$S thinks this site is suspicious! It may be trying to impersonate the web page you want to visit. Most legitimate sites use names instead of numbers. Are you sure you want to visit %2$S?
confirmPhishingUrl2=%1$S thinks this site is suspicious! It may be trying to impersonate the web page you want to visit. Are you sure you want to visit %2$S?
#LOCALIZATION NOTE %1$S is the e-mail address of the person we will allow remote images for
alwaysLoadRemoteContentForSender=Click here to always load remote images from %1$S
#LOCALIZATION NOTE %1$S is the e-mail address of the person we will allow remote content for
alwaysLoadRemoteContentForSender=Click here to always load remote content from %1$S.

Просмотреть файл

@ -547,8 +547,8 @@
and Plug-ins</h2>
<p>By default, images and other content, that is hosted remotely, will not
display in messages you receive, except from senders in your Personal
Address Book. To change these settings:</p>
display in messages you receive, except from senders in your address books
whom you have allowed. To change these settings:</p>
<ol>
<li>Open the <span class="mac">&brandShortName;</span>
@ -556,20 +556,15 @@
<li>Under the Mail &amp; Newsgroups category, click Message Display. (If
no subcategories are visible, double-click Mail &amp; Newsgroups to
expand the list.)</li>
<li>In the General section, do one of the following:
<ul>
<li>To allow all remote content, uncheck <q>Block images and other
content from remote sources</q>.</li>
<li>To block all remote content, uncheck <q>but allow if the sender is in
this address book:</q>.</li>
<li>To change which address book you use for people who send messages
that are allowed to display remote content, select the correct address
book from the drop down.</li>
</ul>
</li>
<li>Uncheck <q>Block images and other content from remote sources</q>.</li>
<li>Click OK to have your change take affect.</li>
</ol>
<p><strong>Note</strong>: See <q>Allow remote images in HTML mail</q> in
<a href="#creating_a_new_address_book_card">Creating a New Address Book
Card</a> for details of how to change which senders can show remote
content.</p>
<p>By default, JavaScript and plug-ins are not enabled for mail messages you
receive. To change these settings:</p>
@ -1643,6 +1638,9 @@
Mail &amp; Newsgroups still can&apos;t determine the correct
format, Mail &amp; Newsgroups will prompt you to choose a sending
format when you send the message.</li>
<li>Allow remote images in HTML mail: If you want to allow this
sender to have remote content they send you displayed in your
message window.</li>
<li>Screen name (the AIM contact name).</li>
<li>Phones (enter phone numbers for this person)</li>
</ul>
@ -4458,10 +4456,8 @@ to filter unwanted mail, and how phishing detection works.</p>
want to open a new one for each.</li>
<li><strong>Block images and other content from remote sources</strong>:
Select this checkbox if you do not want to display remote images and other
content in received messages. (This checkbox is selected by default.)</li>
<li><strong>but allow if the sender is in this address book</strong>: Select
this checkbox if you want to allow remote content in messages from senders
in the chosen address book. (This checkbox is selected by default.)</li>
content in received messages, except from senders in your address books
whom you have allowed. (This checkbox is selected by default.)</li>
<li><strong>Wait [__] seconds before marking a message as read</strong>:
Choose this option if you do not want a message to be marked as read when
you are only taking a brief look at it. Enter the number of seconds you

Просмотреть файл

@ -270,3 +270,7 @@
list-style-image: url("chrome://messenger/skin/icons/remote-blocked.png");
padding: 3px;
}
#allowRemoteContentForAuthorDesc {
padding-left: 10px;
}

Просмотреть файл

@ -1,283 +0,0 @@
/* ***** 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Joe Hewitt <hewitt@netscape.com>
* Adam Becevello <abecevello@sympatico.ca>
* Seth Spitzer <sspitzer@netscape.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either of 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 ***** */
/* ===== primaryToolbar.css =============================================
== Images for the Mail primary toolbar.
======================================================================= */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* ::::: primary toolbar masthead ::::: */
#msgToolbar > .toolbar-holder > .toolbar-primary-icon {
list-style-image: url("chrome://messenger/skin/icons/mast-mail.gif");
}
/* ::::: primary toolbar buttons ::::: */
.toolbarbutton-1 {
list-style-image: url("chrome://messenger/skin/icons/btn1.gif");
}
#button-getmsg {
-moz-image-region: rect(102px 49px 135px 0);
}
#button-getmsg:hover {
-moz-image-region: rect(102px 99px 135px 50px);
}
#button-getmsg:hover:active {
-moz-image-region: rect(102px 149px 135px 100px);
}
#button-getmsg[disabled] {
-moz-image-region: rect(102px 199px 135px 150px) !important;
}
#button-getmsg[buttonstyle="text"] > stack > .toolbarbutton-menubutton-dropmarker {
margin: 0px 2px 0px 55px !important;
}
#button-newmsg {
-moz-image-region: rect(170px 49px 203px 0);
}
#button-newmsg:hover {
-moz-image-region: rect(170px 99px 203px 50px);
}
#button-newmsg:hover:active {
-moz-image-region: rect(170px 149px 203px 100px);
}
#button-newmsg[disabled] {
-moz-image-region: rect(170px 199px 203px 150px) !important;
}
#button-reply {
-moz-image-region: rect(238px 49px 271px 0);
}
#button-reply:hover {
-moz-image-region: rect(238px 99px 271px 50px);
}
#button-reply:hover:active {
-moz-image-region: rect(238px 149px 271px 100px);
}
#button-reply[disabled] {
-moz-image-region: rect(238px 199px 271px 150px) !important;
}
#button-replyall {
-moz-image-region: rect(272px 49px 305px 0);
}
#button-replyall:hover {
-moz-image-region: rect(272px 99px 305px 50px);
}
#button-replyall:hover:active {
-moz-image-region: rect(272px 149px 305px 100px);
}
#button-replyall[disabled] {
-moz-image-region: rect(272px 199px 305px 150px) !important;
}
#button-forward {
-moz-image-region: rect(68px 49px 101px 0);
}
#button-forward:hover {
-moz-image-region: rect(68px 99px 101px 50px);
}
#button-forward:hover:active {
-moz-image-region: rect(68px 149px 101px 100px);
}
#button-forward[disabled] {
-moz-image-region: rect(68px 199px 101px 150px) !important;
}
#button-file {
-moz-image-region: rect(34px 49px 67px 0);
}
#button-file:hover {
-moz-image-region: rect(34px 99px 67px 50px);
}
#button-file:hover:active,
#button-file[open] {
-moz-image-region: rect(34px 149px 67px 100px);
}
#button-file[disabled] {
-moz-image-region: rect(34px 199px 67px 150px) !important;
}
#button-next {
-moz-image-region: rect(204px 49px 237px 0);
}
#button-next:hover {
-moz-image-region: rect(204px 99px 237px 50px);
}
#button-next:hover:active {
-moz-image-region: rect(204px 149px 237px 100px);
}
#button-next[disabled] {
-moz-image-region: rect(204px 199px 237px 150px) !important;
}
#button-delete {
-moz-image-region: rect(0, 49px 33px 0);
}
#button-delete:hover {
-moz-image-region: rect(0, 99px 33px 50px);
}
#button-delete:hover:active {
-moz-image-region: rect(0 149px 33px 100px);
}
#button-delete[disabled] {
-moz-image-region: rect(0 199px 33px 150px) !important;
}
#button-mark {
-moz-image-region: rect(136px 49px 169px 0);
}
#button-mark:hover {
-moz-image-region: rect(136px 99px 169px 50px);
}
#button-mark:hover:active {
-moz-image-region: rect(136px 149px 169px 100px);
}
#button-mark[disabled] {
-moz-image-region: rect(136px 199px 169px 150px) !important;
}
#button-junk {
-moz-image-region: rect(544px 49px 577px 0);
}
#button-junk:hover {
-moz-image-region: rect(544px 99px 577px 50px);
}
#button-junk:hover:active {
-moz-image-region: rect(544px 149px 577px 100px);
}
#button-junk[disabled="true"] {
-moz-image-region: rect(544px 199px 577px 150px) !important;
}
#button-print {
list-style-image: url("chrome://communicator/skin/icons/btn1.gif");
-moz-image-region: rect(34px 49px 67px 0);
}
#button-print:hover {
-moz-image-region: rect(34px 99px 67px 50px);
}
#button-print:hover:active {
-moz-image-region: rect(34px 149px 67px 100px);
}
#button-print[disabled] {
-moz-image-region: rect(34px 199px 67px 150px) !important;
}
#button-stop {
list-style-image: url("chrome://communicator/skin/icons/btn1.gif");
-moz-image-region: rect(68px 49px 101px 0);
}
#button-stop:hover {
-moz-image-region: rect(68px 99px 101px 50px);
}
#button-stop:hover:active {
-moz-image-region: rect(68px 149px 101px 100px);
}
#button-stop[disabled="true"] {
-moz-image-region: rect(68px 199px 101px 150px) !important;
}
/* ::::: message notification bar style rules ::::: */
.msgNotificationBar {
border-bottom: 1px solid;
-moz-border-bottom-colors: #000000;
-moz-appearance: toolbox;
background-color: #C7BC8F;
color: black;
}
.msgNotificationBarText {
font-weight: bold;
}
#junkBarImage {
list-style-image: url("chrome://messenger/skin/icons/junkBar.gif");
}
#junkIcon {
margin-left: 0.3ex;
list-style-image: url("chrome://messenger/skin/icons/message-junk-other.gif");
}
#remoteContentImage {
list-style-image: url("chrome://messenger/skin/icons/remote-blocked.png");
padding: 3px;
}