This commit is contained in:
blakeross%telocity.com 2002-10-05 01:52:33 +00:00
Родитель fb569dfb75
Коммит 71e5bbcf3f
10 изменённых файлов: 1416 добавлений и 571 удалений

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

@ -24,7 +24,6 @@
<RDF:li resource="chrome://communicator/content/pref/pref-scripts.xul"/>
<RDF:li resource="chrome://cookie/content/pref-cookies.xul"/>
<RDF:li resource="chrome://cookie/content/pref-images.xul"/>
<RDF:li resource="chrome://mail/content/messengercompose/messengercompose.xul"/>
<RDF:li resource="chrome://mail/content/addressbook/addressbook.xul"/>
<RDF:li resource="chrome://mail/content/addressbook/abSelectAddressesDialog.xul"/>
</RDF:Seq>
@ -55,11 +54,6 @@
<RDF:li>chrome://mail/content/mailPrefsOverlay.xul</RDF:li>
</RDF:Seq>
<!-- messenger items for Mail Compose -->
<RDF:Seq about="chrome://mail/content/messengercompose/messengercompose.xul">
<RDF:li>chrome://mail/content/mailMessengerComposeOverlay.xul</RDF:li>
</RDF:Seq>
<!-- messenger items for Addressbook -->
<RDF:Seq about="chrome://mail/content/addressbook/addressbook.xul">
<RDF:li>chrome://mail/content/mailABOverlay.xul</RDF:li>

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

@ -1082,9 +1082,9 @@ Rights Reserved.
</menupopup>
</menu>
<menu id="menu_View">
<menu label="&viewMenu.label;" accesskey="&viewMenu.accesskey;">
<menupopup id="menu_View_Popup" onpopupshowing="view_init()">
<menu id="menu_Toolbars">
<menu label="&viewToolbars.label;" accesskey="&viewToolbars.accesskey;">
<menupopup id="view_toolbars_popup">
<menuitem id="menu_showMessengerToolbar"
type="checkbox"
@ -1098,15 +1098,15 @@ Rights Reserved.
accesskey="&showSearchToolbarCmd.accesskey;"
oncommand="goToggleToolbar('searchBox', 'menu_showSearchToolbar'); SearchBarToggled();"
checked="true"/>
<menuitem type="checkbox" id="menu_showTaskbar"/>
<menuseparator/>
<menuitem id="menu_showMessage"
type="checkbox"
label="&showMessageCmd.label;"
accesskey="&showMessageCmd.accesskey;"
oncommand="MsgToggleMessagePane();"/>
</menupopup>
</menu>
<menuitem type="checkbox" id="menu_showTaskbar"/>
<menuitem id="menu_showMessage"
type="checkbox"
label="&showMessageCmd.label;"
accesskey="&showMessageCmd.accesskey;"
oncommand="MsgToggleMessagePane();"/>
<menuseparator/>
<menu id="viewSortMenu" accesskey="&sortMenu.accesskey;" label="&sortMenu.label;">
<menupopup onpopupshowing="InitViewSortByMenu()">

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

@ -558,4 +558,8 @@ Rights Reserved.
<!ENTITY releaseCmd.label "Release Notes">
<!ENTITY releaseCmd.accesskey "R">
<!ENTITY aboutCmd.label "About">
<!ENTITY aboutCmd.accesskey "A">
<!ENTITY aboutCmd.accesskey "A">
<!ENTITY viewMenu.label "View">
<!ENTITY viewMenu.accesskey "V">
<!ENTITY viewToolbars.label "Toolbars">
<!ENTITY viewToolbars.accesskey "T">

Разница между файлами не показана из-за своего большого размера Загрузить разницу

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

@ -1,3 +1,39 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape 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/NPL/
*
* 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):
*
* 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 NPL, 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 NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
top.MAX_RECIPIENTS = 0;
var inputElementType = "";
@ -8,7 +44,7 @@ var gNumberOfCols = 0;
var gDragService = Components.classes["@mozilla.org/widget/dragservice;1"].getService();
gDragService = gDragService.QueryInterface(Components.interfaces.nsIDragService);
gMimeHeaderParser = null;
var gMimeHeaderParser = null;
/**
* global variable inherited from MsgComposeCommands.js
@ -79,29 +115,72 @@ function Recipients2CompFields(msgCompFields)
{
if (msgCompFields)
{
var i = 1;
var addrTo = "";
var addrCc = "";
var addrBcc = "";
var addrReply = "";
var addrNg = "";
var addrFollow = "";
var addrOther = "";
var to_Sep = "";
var cc_Sep = "";
var bcc_Sep = "";
var reply_Sep = "";
var ng_Sep = "";
var follow_Sep = "";
gMimeHeaderParser = Components.classes["@mozilla.org/messenger/headerparser;1"].getService(Components.interfaces.nsIMsgHeaderParser);
var recipientType;
var inputField;
var fieldValue;
var recipient;
while ((inputField = awGetInputElement(i)))
{
fieldValue = inputField.value;
var toValue = document.getElementById("toField").value;
try {
msgCompFields.to = gMimeHeaderParser.reformatUnquotedAddresses(toValue);
} catch (ex) {
msgCompFields.to = toValue;
if (fieldValue == null)
fieldValue = inputField.getAttribute("value");
if (fieldValue != "")
{
recipientType = awGetPopupElement(i).selectedItem.getAttribute("value");
recipient = null;
switch (recipientType)
{
case "addr_to" :
case "addr_cc" :
case "addr_bcc" :
case "addr_reply" :
try {
recipient = gMimeHeaderParser.reformatUnquotedAddresses(fieldValue);
} catch (ex) {recipient = fieldValue;}
break;
}
switch (recipientType)
{
case "addr_to" : addrTo += to_Sep + recipient; to_Sep = ","; break;
case "addr_cc" : addrCc += cc_Sep + recipient; cc_Sep = ","; break;
case "addr_bcc" : addrBcc += bcc_Sep + recipient; bcc_Sep = ","; break;
case "addr_reply" : addrReply += reply_Sep + recipient; reply_Sep = ","; break;
case "addr_newsgroups" : addrNg += ng_Sep + fieldValue; ng_Sep = ","; break;
case "addr_followup" : addrFollow += follow_Sep + fieldValue; follow_Sep = ","; break;
case "addr_other" : addrOther += awGetPopupElement(i).selectedItem.getAttribute("label") + " " + fieldValue + "\n";break;
}
}
i ++;
}
var ccValue = document.getElementById("ccField").value;
try {
msgCompFields.cc = gMimeHeaderParser.reformatUnquotedAddresses(ccValue);
} catch (ex) {
msgCompFields.cc = ccValue;
}
var bccValue = document.getElementById("bccField").value;
try {
msgCompFields.bcc = gMimeHeaderParser.reformatUnquotedAddresses(bccValue);
} catch (ex) {
msgCompFields.bcc = bccValue;
}
msgCompFields.to = addrTo;
msgCompFields.cc = addrCc;
msgCompFields.bcc = addrBcc;
msgCompFields.replyTo = addrReply;
msgCompFields.newsgroups = addrNg;
msgCompFields.followupTo = addrFollow;
msgCompFields.otherRandomHeaders = addrOther;
gMimeHeaderParser = null;
}
@ -113,22 +192,212 @@ function CompFields2Recipients(msgCompFields, msgType)
{
if (msgCompFields) {
gMimeHeaderParser = Components.classes["@mozilla.org/messenger/headerparser;1"].getService(Components.interfaces.nsIMsgHeaderParser);
var listbox = document.getElementById('addressingWidget');
var newListBoxNode = listbox.cloneNode(false);
var listBoxColsClone = listbox.firstChild.cloneNode(true);
newListBoxNode.appendChild(listBoxColsClone);
var templateNode = listbox.getElementsByTagName("listitem")[0];
top.MAX_RECIPIENTS = 0;
var msgReplyTo = msgCompFields.replyTo;
var msgTo = msgCompFields.to;
var msgCC = msgCompFields.cc;
var msgBCC = msgCompFields.bcc;
var msgRandomHeaders = msgCompFields.otherRandomHeaders;
var msgNewsgroups = msgCompFields.newsgroups;
var msgFollowupTo = msgCompFields.followupTo;
if(msgReplyTo)
awSetInputAndPopupFromArray(msgCompFields.SplitRecipients(msgReplyTo, false),
"addr_reply", newListBoxNode, templateNode);
if(msgTo)
document.getElementById("toField").value = msgTo;
awSetInputAndPopupFromArray(msgCompFields.SplitRecipients(msgTo, false),
"addr_to", newListBoxNode, templateNode);
if(msgCC)
document.getElementById("ccField").value = msgCC;
awSetInputAndPopupFromArray(msgCompFields.SplitRecipients(msgCC, false),
"addr_cc", newListBoxNode, templateNode);
if(msgBCC)
document.getElementById("bccField").value = msgBCC;
awSetInputAndPopupFromArray(msgCompFields.SplitRecipients(msgBCC, false),
"addr_bcc", newListBoxNode, templateNode);
if(msgRandomHeaders)
awSetInputAndPopup(msgRandomHeaders, "addr_other", newListBoxNode, templateNode);
if(msgNewsgroups)
awSetInputAndPopup(msgNewsgroups, "addr_newsgroups", newListBoxNode, templateNode);
if(msgFollowupTo)
awSetInputAndPopup(msgFollowupTo, "addr_followup", newListBoxNode, templateNode);
//If it's a new message, we need to add an extrat empty recipient.
if (!msgTo && !msgNewsgroups)
_awSetInputAndPopup("", "addr_to", newListBoxNode, templateNode);
// dump("replacing child in comp fields 2 recips \n");
var parent = listbox.parentNode;
parent.replaceChild(newListBoxNode, listbox);
awFitDummyRows(2);
setTimeout("awFinishCopyNodes();", 0);
gMimeHeaderParser = null; //Release the mime parser
}
}
function awSetInputAndPopupValue(inputElem, inputValue, popupElem, popupValue, rowNumber)
{
// remove leading spaces
while (inputValue && inputValue[0] == " " )
inputValue = inputValue.substring(1, inputValue.length);
inputElem.setAttribute("value", inputValue);
inputElem.value = inputValue;
popupElem.selectedItem = popupElem.childNodes[0].childNodes[awGetSelectItemIndex(popupValue)];
if (rowNumber >= 0)
{
inputElem.setAttribute("id", "addressCol2#" + rowNumber);
popupElem.setAttribute("id", "addressCol1#" + rowNumber);
}
_awSetAutoComplete(popupElem, inputElem);
}
function _awSetInputAndPopup(inputValue, popupValue, parentNode, templateNode)
{
top.MAX_RECIPIENTS++;
var newNode = templateNode.cloneNode(true);
parentNode.appendChild(newNode); // we need to insert the new node before we set the value of the select element!
var input = newNode.getElementsByTagName(awInputElementName());
var select = newNode.getElementsByTagName(awSelectElementName());
if (input && input.length == 1 && select && select.length == 1)
awSetInputAndPopupValue(input[0], inputValue, select[0], popupValue, top.MAX_RECIPIENTS)
}
function awSetInputAndPopup(inputValue, popupValue, parentNode, templateNode)
{
if ( inputValue && popupValue )
{
var addressArray = inputValue.split(",");
for ( var index = 0; index < addressArray.length; index++ )
_awSetInputAndPopup(addressArray[index], popupValue, parentNode, templateNode);
}
}
function awSetInputAndPopupFromArray(inputArray, popupValue, parentNode, templateNode)
{
if ( inputArray && popupValue )
{
var recipient;
for ( var index = 0; index < inputArray.count; index++ )
{
recipient = null;
if (gMimeHeaderParser)
try {
recipient = gMimeHeaderParser.unquotePhraseOrAddrWString(inputArray.StringAt(index), true);
} catch (ex) {};
if (!recipient)
recipient = inputArray.StringAt(index)
_awSetInputAndPopup(recipient, popupValue, parentNode, templateNode);
}
}
}
function awRemoveRecipients(msgCompFields, recipientType, recipientsList)
{
if (!msgCompFields)
return;
var recipientArray = msgCompFields.SplitRecipients(recipientsList, false);
if (! recipientArray)
return;
for ( var index = 0; index < recipientArray.count; index++ )
for (var row = 1; row <= top.MAX_RECIPIENTS; row ++)
{
var popup = awGetPopupElement(row);
if (popup.selectedItem.getAttribute("value") == recipientType)
{
var input = awGetInputElement(row);
if (input.value == recipientArray.StringAt(index))
{
awSetInputAndPopupValue(input, "", popup, "addr_to", -1);
break;
}
}
}
}
function awAddRecipients(msgCompFields, recipientType, recipientsList)
{
if (!msgCompFields)
return;
var recipientArray = msgCompFields.SplitRecipients(recipientsList, false);
if (! recipientArray)
return;
for ( var index = 0; index < recipientArray.count; index++ )
{
for (var row = 1; row <= top.MAX_RECIPIENTS; row ++)
{
if (awGetInputElement(row).value == "")
break;
}
if (row > top.MAX_RECIPIENTS)
awAppendNewRow(false);
awSetInputAndPopupValue(awGetInputElement(row), recipientArray.StringAt(index), awGetPopupElement(row), recipientType, row);
/* be sure we still have an empty row left at the end */
if (row == top.MAX_RECIPIENTS)
{
awAppendNewRow(true);
awSetInputAndPopupValue(awGetInputElement(top.MAX_RECIPIENTS), "", awGetPopupElement(top.MAX_RECIPIENTS), "addr_to", top.MAX_RECIPIENTS);
}
}
}
function awTestRowSequence()
{
/*
This function is for debug and testing purpose only, normal user should not run it!
Everytime we insert or delete a row, we must be sure we didn't break the ID sequence of
the addressing widget rows. This function will run a quick test to see if the sequence still ok
You need to define the pref mail.debug.test_addresses_sequence to true in order to activate it
*/
if (! test_addresses_sequence)
return true;
/* debug code to verify the sequence still good */
var listbox = document.getElementById('addressingWidget');
var listitems = listbox.getElementsByTagName('listitem');
if (listitems.length >= top.MAX_RECIPIENTS )
{
for (var i = 1; i <= listitems.length; i ++)
{
var item = listitems [i - 1];
var inputID = item.getElementsByTagName(awInputElementName())[0].getAttribute("id").split("#")[1];
var popupID = item.getElementsByTagName(awSelectElementName())[0].getAttribute("id").split("#")[1];
if (inputID != i || popupID != i)
{
dump("#ERROR: sequence broken at row " + i + ", inputID=" + inputID + ", popupID=" + popupID + "\n");
return false;
}
dump("---SEQUENCE OK---\n");
return true;
}
}
else
dump("#ERROR: listitems.length(" + listitems.length + ") < top.MAX_RECIPIENTS(" + top.MAX_RECIPIENTS + ")\n");
return false;
}
function awResetAllRows()
{
var maxRecipients = top.MAX_RECIPIENTS;
@ -175,6 +444,46 @@ function awDeleteRow(rowToDelete)
awTestRowSequence();
}
function awClickEmptySpace(target, setFocus)
{
if (target == null ||
(target.localName != "listboxbody" &&
target.localName != "listcell" &&
target.localName != "listitem"))
return;
var lastInput = awGetInputElement(top.MAX_RECIPIENTS);
if ( lastInput && lastInput.value )
awAppendNewRow(setFocus);
else
if (setFocus)
awSetFocus(top.MAX_RECIPIENTS, lastInput);
}
function awReturnHit(inputElement)
{
var row = awGetRowByInputElement(inputElement);
var nextInput = awGetInputElement(row+1);
if ( !nextInput )
{
if ( inputElement.value )
awAppendNewRow(true);
else // No address entered, switch to Subject field
{
var subjectField = document.getElementById( 'msgSubject' );
subjectField.select();
subjectField.focus();
}
}
else
{
nextInput.select();
awSetFocus(row+1, nextInput);
}
}
function awDeleteHit(inputElement)
{
var row = awGetRowByInputElement(inputElement);
@ -200,6 +509,9 @@ function awDeleteHit(inputElement)
function awInputChanged(inputElement)
{
dump("awInputChanged\n");
// AutoCompleteAddress(inputElement);
//Do we need to add a new row?
var lastInput = awGetInputElement(top.MAX_RECIPIENTS);
if ( lastInput && lastInput.value && !top.doNotCreateANewRow)
@ -342,6 +654,52 @@ function awRemoveNodeAndChildren(parent, nodeToRemove)
nodeToRemove.parentNode.removeChild(nodeToRemove);
}
function awSetFocus(row, inputElement)
{
top.awRow = row;
top.awInputElement = inputElement;
top.awFocusRetry = 0;
setTimeout("_awSetFocus();", 0);
}
function _awSetFocus()
{
var listbox = document.getElementById('addressingWidget');
//try
//{
var theNewRow = awGetListItem(top.awRow);
//temporary patch for bug 26344
awFinishCopyNode(theNewRow);
//Warning: firstVisibleRow is zero base but top.awRow is one base!
var firstVisibleRow = listbox.getIndexOfFirstVisibleRow();
var numOfVisibleRows = listbox.getNumberOfVisibleRows();
//Do we need to scroll in order to see the selected row?
if (top.awRow <= firstVisibleRow)
listbox.scrollToIndex(top.awRow - 1);
else
if (top.awRow - 1 >= (firstVisibleRow + numOfVisibleRows))
listbox.scrollToIndex(top.awRow - numOfVisibleRows);
top.awInputElement.focus();
// stop supressing command updating and update the toolbar, since focus has changed
SuppressComposeCommandUpdating(false);
/*}
catch(ex)
{
top.awFocusRetry ++;
if (top.awFocusRetry < 3)
{
dump("_awSetFocus failed, try it again...\n");
setTimeout("_awSetFocus();", 0);
}
else
dump("_awSetFocus failed, forget about it!\n");
}*/
}
//temporary patch for bug 26344 & 26528
function awFinishCopyNode(node)
{
@ -356,6 +714,30 @@ function awFinishCopyNodes()
awFinishCopyNode(listbox);
}
function awTabFromRecipient(element, event)
{
//If we are le last element in the listbox, we don't want to create a new row.
if (element == awGetInputElement(top.MAX_RECIPIENTS))
top.doNotCreateANewRow = true;
var row = awGetRowByInputElement(element);
if (!event.shiftKey && row < top.MAX_RECIPIENTS) {
var listBoxRow = row - 1; // listbox row indices are 0-based, ours are 1-based.
var listBox = document.getElementById("addressingWidget");
listBox.listBoxObject.ensureIndexIsVisible(listBoxRow + 1);
}
}
function awTabFromMenulist(element, event)
{
var row = awGetRowByInputElement(element);
if (event.shiftKey && row > 1) {
var listBoxRow = row - 1; // listbox row indices are 0-based, ours are 1-based.
var listBox = document.getElementById("addressingWidget");
listBox.listBoxObject.ensureIndexIsVisible(listBoxRow - 1);
}
}
function awGetNumberOfRecipients()
{
return top.MAX_RECIPIENTS;
@ -388,7 +770,7 @@ function DropOnAddressingWidget(event)
var len = new Object();
trans.getAnyTransferData ( bestFlavor, dataObj, len );
if ( dataObj )
dataObj = dataObj.value.QueryInterface(Components.interfaces.nsISupportsWString);
dataObj = dataObj.value.QueryInterface(Components.interfaces.nsISupportsString);
if ( !dataObj )
continue;
@ -412,10 +794,7 @@ function DropRecipient(target, recipient)
function _awSetAutoComplete(selectElem, inputElem)
{
if (selectElem.value != 'addr_newsgroups' && selectElem.value != 'addr_followup')
inputElem.disableAutocomplete = false;
else
inputElem.disableAutocomplete = true;
inputElem.disableAutocomplete = selectElem.value == 'addr_newsgroups' || selectElem.value == 'addr_followup' || selectElem.value == 'addr_other';
}
function awSetAutoComplete(rowNumber)
@ -425,6 +804,12 @@ function awSetAutoComplete(rowNumber)
_awSetAutoComplete(selectElem, inputElem)
}
function awRecipientTextCommand(userAction, element)
{
if (userAction == "typing" || userAction == "scrolling")
awReturnHit(element);
}
// Called when an autocomplete session item is selected and the status of
// the session it was selected from is nsIAutoCompleteStatus::failureItems.
//
@ -449,14 +834,14 @@ function awRecipientErrorCommand(errItem, element)
// try and get the string of the specific error to contruct the complete
// err msg, otherwise fall back to something generic. This message is
// handed to us as an nsISupportsWString in the param slot of the
// handed to us as an nsISupportsString in the param slot of the
// autocomplete error item, by agreement documented in
// nsILDAPAutoCompFormatter.idl
//
var specificErrString = "";
try {
var specificError = errItem.param.QueryInterface(
Components.interfaces.nsISupportsWString);
Components.interfaces.nsISupportsString);
specificErrString = specificError.data;
} catch (ex) {
}
@ -513,6 +898,15 @@ function awKeyDown(event, listboxElement)
}
}
function awMenulistKeyPress(event, element)
{
switch(event.keyCode) {
case 9:
awTabFromMenulist(element, event);
break;
}
}
/* ::::::::::: addressing widget dummy rows ::::::::::::::::: */
var gAWContentHeight = 0;
@ -621,3 +1015,11 @@ function awSizerMouseUp()
document.removeEventListener("mouseup", awSizerMouseUp, false);
}
function awDocumentKeyPress(event)
{
try {
var id = event.target.getAttribute('id');
if (id.substr(0, 11) == 'addressCol1')
awMenulistKeyPress(event, event.target);
} catch (e) { }
}

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

@ -19,13 +19,13 @@ Communications Corporation. Portions created by Netscape are
Rights Reserved.
-->
<!DOCTYPE window SYSTEM "chrome://messenger/locale/messengercompose/addressingWidgetOverlay.dtd">
<!DOCTYPE window SYSTEM "chrome://mail/locale/messengercompose/addressingWidgetOverlay.dtd">
<overlay xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://messenger/content/messengercompose/addressingWidgetOverlay.js"/>
<script type="application/x-javascript" src="chrome://mail/content/messengercompose/addressingWidgetOverlay.js"/>
<!-- Addressing Widget -->
<listbox id="addressingWidget" seltype="multiple" rows="4"
@ -60,13 +60,13 @@ Rights Reserved.
type="autocomplete" flex="1"
searchSessions="addrbook" timeout="300" maxrows="4"
autoFill="true" autoFillAfterMatch="true" forceComplete="true"
minResultsForPopup="3"
minResultsForPopup="3" ignoreBlurWhileSearching="true"
ontextcommand="awRecipientTextCommand(eventParam, this)"
onerrorcommand="awRecipientErrorCommand(eventParam, this)"
oninput="gContentChanged=true; setupAutocomplete();" disableonsend="true"
onkeypress="awRecipientKeyPress(event, this)"
onkeydown="awRecipientKeyDown(event, this)">
<image class="person-icon"/>
<image class="person-icon" onclick="this.parentNode.select();"/>
</textbox>
</listcell>
</listitem>

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

@ -0,0 +1,497 @@
<?xml version="1.0"?>
<!--
- The contents of this file are subject to the Netscape 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/NPL/
-
- 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 Netscape are
- Copyright (C) 1999 Netscape Communications Corporation. All
- Rights Reserved.
-
- Contributor(s):
- Ben Goodger <ben@netscape.com> (ass'td polish fixes)
- Håkan Waara <hwaara@chello.se>
- Neil Rashbrook <neil@parkwaycc.co.uk> (ass'td polish fix)
-->
<?xml-stylesheet href="chrome://messenger/skin/messengercompose/messengercompose.css" type="text/css"?>
<?xml-stylesheet href="chrome://messenger/skin/folderMenus.css" type="text/css"?>
<?xml-stylesheet href="chrome://editor/skin/editorFormatToolbar.css" type="text/css"?>
<?xml-stylesheet href="chrome://messenger/skin/addressingWidget.css" type="text/css"?>
<?xul-overlay href="chrome://global/content/charsetOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/communicatorOverlay.xul"?>
<?xul-overlay href="chrome://mail/content/messengercompose/addressingWidgetOverlay.xul"?>
<?xul-overlay href="chrome://global/content/globalOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
<?xul-overlay href="chrome://editor/content/editorOverlay.xul"?>
<?xul-overlay href="chrome://mail/content/messengercompose/insertMenuSmileyOverlay.xul"?>
<?xul-overlay href="chrome://mail/content/messengercompose/mailComposeExtrasOverlay.xul"?>
<!DOCTYPE window [
<!ENTITY % messengercomposeDTD SYSTEM "chrome://mail/locale/messengercompose/messengercompose.dtd" >
%messengercomposeDTD;
<!ENTITY % messengerDTD SYSTEM "chrome://mail/locale/messenger.dtd" >
%messengerDTD;
<!ENTITY % brandDTD SYSTEM "chrome://global/locale/brand.dtd" >
%brandDTD;
]>
<window id="msgcomposeWindow"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:nc="http://home.netscape.com/NC-rdf#"
onunload="ComposeUnload()"
onload="ComposeLoad()"
onclose="return DoCommandClose()"
onfocus="EditorOnFocus()"
title="&msgComposeWindow.title;"
windowtype="msgcompose"
width="640" height="480"
persist="screenX screenY width height sizemode">
<stringbundleset id="stringbundleset">
<stringbundle id="bundle_composeMsgs" src="chrome://mail/locale/messengercompose/composeMsgs.properties"/>
<stringbundle id="bundle_messenger" src="chrome://mail/locale/messenger.properties"/>
<stringbundle id="bundle_offlinePrompts" src="chrome://mail/locale/offline.properties"/>
</stringbundleset>
<script type="application/x-javascript" src="chrome://messenger/content/accountUtils.js"/>
<script type="application/x-javascript" src="chrome://mail/content/widgetglue.js"/>
<script type="application/x-javascript" src="chrome://mail/content/mail-offline.js"/>
<script type="application/x-javascript" src="chrome://editor/content/editor.js"/>
<!--script type="application/x-javascript" src="chrome://editor/content/EditorCommandsDebug.js"/-->
<script type="application/x-javascript" src="chrome://mail/content/messengercompose/MsgComposeCommands.js"/>
<!-- drag and drop -->
<script type="application/x-javascript" src="chrome://global/content/nsDragAndDrop.js"/>
<script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
<commandset id="composeCommands">
<commandset id="msgComposeCommandUpdate"
commandupdater="true"
events="focus"
oncommandupdate="CommandUpdate_MsgCompose()"/>
<commandset id="globalEditMenuItems"/>
<commandset id="selectEditMenuItems"/>
<commandset id="undoEditMenuItems"/>
<commandset id="clipboardEditMenuItems"/>
<commandset id="commonEditorMenuItems"/>
<commandset id="composerMenuItems"/>
<commandset id="composerEditMenuItems"/>
<commandset id="composerStyleMenuItems"/>
<commandset id="composerTableMenuItems"/>
<commandset id="composerListMenuItems"/>
<commandset id="tasksCommands"/>
<command id="cmd_quit"/>
<!-- File Menu -->
<command id="cmd_newNavigator"/>
<command id="cmd_newEditor"/>
<command id="cmd_new" oncommand="goDoCommand('cmd_newMessage')"/>
<command id="cmd_attachFile" oncommand="goDoCommand('cmd_attachFile')"/>
<command id="cmd_attachPage" oncommand="goDoCommand('cmd_attachPage')"/>
<command id="cmd_close" oncommand="goDoCommand('cmd_close')"/>
<command id="cmd_saveDefault" oncommand="goDoCommand('cmd_saveDefault')"/>
<command id="cmd_saveAsFile" oncommand="goDoCommand('cmd_saveAsFile')"/>
<command id="cmd_saveAsDraft" oncommand="goDoCommand('cmd_saveAsDraft')"/>
<command id="cmd_saveAsTemplate" oncommand="goDoCommand('cmd_saveAsTemplate')"/>
<command id="cmd_sendButton" oncommand="goDoCommand('cmd_sendButton')"/>
<command id="cmd_sendNow" oncommand="goDoCommand('cmd_sendNow')"/>
<command id="cmd_sendWithCheck" oncommand="goDoCommand('cmd_sendWithCheck')"/>
<command id="cmd_sendLater" oncommand="goDoCommand('cmd_sendLater')"/>
<command id="cmd_printSetup" oncommand="goDoCommand('cmd_printSetup')"/>
<command id="cmd_print" oncommand="goDoCommand('cmd_print')"/>
<!-- Edit Menu -->
<!--command id="cmd_pasteQuote"/ DO NOT INCLUDE THOSE PBROCASTER ESLE THE EDIT MENU WILL BE BROKEN! -->
<!--command id="cmd_find"/-->
<!--command id="cmd_findNext"/-->
<command id="cmd_delete"/>
<command id="cmd_selectAll"/>
<command id="cmd_account" oncommand="goDoCommand('cmd_account')"/>
<!-- View Menu -->
<command id="cmd_showComposeToolbar" oncommand="goDoCommand('cmd_showComposeToolbar')"/>
<command id="cmd_showFormatToolbar" oncommand="goDoCommand('cmd_showFormatToolbar')"/>
<!-- Options Menu -->
<command id="cmd_selectAddress" oncommand="goDoCommand('cmd_selectAddress')"/>
<command id="cmd_outputFormat" oncommand="OutputFormatMenuSelect(event.target)"/>
<command id="cmd_quoteMessage" oncommand="goDoCommand('cmd_quoteMessage')"/>
<command id="cmd_rewrap" oncommand="goDoCommand('cmd_rewrap')"/>
<command id="cmd_insert"/>
</commandset>
<broadcasterset id="composeBroadcasters">
<broadcaster id="Editor:Throbber" busy="false"/>
<broadcaster id="Communicator:WorkMode"/>
<broadcaster id="args" value="editorType=default"/>
</broadcasterset>
<keyset id="tasksKeys">
<!-- File Menu -->
<key id="key_newNavigator"/>
<key id="key_newBlankPage"/>
<key id="key_close"/>
<key id="key_save" key="&saveCmd.key;" command="cmd_saveDefault" modifiers="accel"/>
<key id="key_send" keycode="&sendCmd.keycode;" observes="cmd_sendWithCheck" modifiers="accel"/>
<key id="key_sendLater" keycode="&sendLaterCmd.keycode;" observes="cmd_sendLater" modifiers="accel, shift"/>
<key id="key_print" key="&printCmd.key;" command="cmd_print" modifiers="accel"/>
<key id="key_quit"/>
<!-- Edit Menu -->
<key id="key_undo"/>
<key id="key_redo"/>
<key id="key_cut"/>
<key id="key_copy"/>
<key id="key_paste"/>
<key id="pastequotationkb"/>
<key id="key_delete"/>
<key id="key_selectAll"/>
<key id="key_find" key="&findCmd.key;" command="cmd_find" modifiers="accel"/>
<key id="key_findNext" key="&findAgainCmd.key;" command="cmd_findNext" modifiers="accel"/>
<key id="key_findPrev" key="&findPrevCmd.key;" command="cmd_findPrev" modifiers="accel, shift"/>
<key keycode="&findAgainCmd.key2;" command="cmd_findNext"/>
<key keycode="&findPrevCmd.key2;" command="cmd_findPrev" modifiers="shift"/>
<!-- Options Menu -->
<!-- key id="key_selectAddresses" xulkey="true" key="&selectAddressCmd.key;" command="cmd_selectAddress"/ -->
<key id="key_checkspelling" key="&checkSpellingCmd.key;" command="cmd_spelling" modifiers="accel"/>
<!-- Tab/F6 Keys -->
<key keycode="VK_TAB" oncommand="SwitchElementFocus(event);" modifiers="control"/>
<key keycode="VK_TAB" oncommand="SwitchElementFocus(event);" modifiers="control,shift"/>
<key keycode="VK_F6" oncommand="SwitchElementFocus(event);" modifiers="control"/>
<key keycode="VK_F6" oncommand="SwitchElementFocus(event);" modifiers="control,shift"/>
<key keycode="VK_F6" oncommand="SwitchElementFocus(event);" modifiers="shift"/>
<key keycode="VK_F6" oncommand="SwitchElementFocus(event);"/>
</keyset>
<keyset id="editorKeys"/>
<popup id="msgComposeContext" onpopupshowing="updateEditItems();">
<menuitem label="&undo.label;" accesskey="&undo.accesskey;" command="cmd_undo"/>
<menuseparator/>
<menuitem label="&cut.label;" accesskey="&cut.accesskey;" command="cmd_cut"/>
<menuitem label="&copy.label;" accesskey="&copy.accesskey;" command="cmd_copy"/>
<menuitem label="&paste.label;" accesskey="&paste.accesskey;" command="cmd_paste"/>
<menuitem label="&pasteQuote.label;" accesskey="&pasteQuote.accesskey;" command="cmd_pasteQuote"/>
<menuitem label="&delete.label;" accesskey="&delete.accesskey;" command="cmd_delete"/>
<menuseparator/>
<menuitem label="&selectAll.label;" accesskey="&selectAll.accesskey;" command="cmd_selectAll"/>
</popup>
<popup id="msgComposeAttachmentContext" onpopupshowing="updateEditItems();">
<menuitem label="&delete.label;" accesskey="&delete.accesskey;" command="cmd_delete"/>
<menuitem label="&selectAll.label;" accesskey="&selectAll.accesskey;" command="cmd_selectAll"/>
<menuseparator/>
<menuitem label="&addAttachment.label;" accesskey="&addAttachment.accesskey;" command="cmd_attachFile"/>
</popup>
<toolbox class="toolbox-top" id="headers-box">
<menubar id="compose-menubar">
<menu id="menu_File">
<menupopup id="menu_FilePopup">
<menu id="menu_New">
<menupopup id="menu_NewPopup">
<menuitem label="&newMessage.label;" accesskey="&newMessage.accesskey;" key="key_newMessage" oncommand="goOpenNewMessage();"/>
<menuseparator/>
<menuitem id="menu_newNavigator"/>
<menuitem id="menu_newEditor"/>
</menupopup>
</menu>
<menuitem label="&attachFileCmd.label;" accesskey="&attachFileCmd.accesskey;" command="cmd_attachFile"/>
<menuitem label="&attachPageCmd.label;" accesskey="&attachPageCmd.accesskey;" command="cmd_attachPage"/>
<menuitem hidden="true" observes="Communicator:WorkMode"/>
<menuitem id="menu_close"/>
<menuseparator/>
<menuitem label="&saveCmd.label;" accesskey="&saveCmd.accesskey;" key="key_save" command="cmd_saveDefault"/>
<menu label="&saveAsCmd.label;" accesskey="&saveAsCmd.accesskey;">
<menupopup>
<menuitem label="&saveAsFileCmd.label;" accesskey="&saveAsFileCmd.accesskey;" command="cmd_saveAsFile"/>
<menuseparator/>
<menuitem label="&saveAsDraftCmd.label;" accesskey="&saveAsDraftCmd.accesskey;" command="cmd_saveAsDraft"/>
<menuitem label="&saveAsTemplateCmd.label;" accesskey="&saveAsTemplateCmd.accesskey;" command="cmd_saveAsTemplate"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem label="&sendNowCmd.label;" accesskey="&sendNowCmd.accesskey;" key="key_send" command="cmd_sendNow" id="menu-item-send-now"/>
<menuitem label="&sendLaterCmd.label;" accesskey="&sendLaterCmd.accesskey;" key="key_sendLater" command="cmd_sendLater"/>
<menuseparator/>
<!--Page setup gets overlaid here from platformGlobalOverlay.xul / -->
<menuitem id="printMenuItem" label="&printCmd.label;" accesskey="&printCmd.accesskey;" key="key_print" command="cmd_print"/>
</menupopup>
</menu>
<menu id="menu_Edit">
<menupopup onpopupshowing="updateEditItems();">
<menuitem id="menu_undo"/>
<menuitem id="menu_redo"/>
<menuseparator/>
<menuitem id="menu_cut"/>
<menuitem id="menu_copy"/>
<menuitem id="menu_paste"/>
<menuitem id="menu_pasteQuote"/>
<menuitem id="menu_delete"/>
<menuseparator/>
<menuitem id="menu_selectAll"/>
<menuseparator/>
<menuitem label="&findCmd.label;" key="key_find" accesskey="&findCmd.accesskey;" command="cmd_find"/>
<menuitem label="&findAgainCmd.label;" key="key_findNext" accesskey="&findAgainCmd.accesskey;" command="cmd_findNext"/>
<menuitem label="&findPrevCmd.label;" key="key_findPrev" accesskey="&findPrevCmd.accesskey;" command="cmd_findPrev"/>
<menuseparator/>
<menuitem label="&accountManagerCmd.label;" accesskey="&accountManagerCmd.accesskey;" command="cmd_account"/>
<menuitem id="menu_preferences" oncommand="goDoCommand('cmd_preferences')"/>
</menupopup>
</menu>
<menu id="menu_View">
<menupopup id="menu_View_Popup">
<menu id="menu_Toolbars">
<menupopup>
<menuitem id="menu_showComposeToolbar"
type="checkbox"
label="&showComposeToolbarCmd.label;"
command="cmd_showComposeToolbar"
accesskey="&showComposeToolbarCmd.accesskey;"
checked="true"/>
<menuitem id="menu_showFormatToolbar"
type="checkbox"
label="&showFormatToolbarCmd.label;"
command="cmd_showFormatToolbar"
accesskey="&showFormatToolbarCmd.accesskey;"
checked="true"/>
<menuitem id="menu_showTaskbar"
type="checkbox"/>
</menupopup>
</menu>
<menuseparator/>
<menu id = "maileditCharsetMenu" />
</menupopup>
</menu>
<menu id="insertMenu" command="cmd_insert"/>
<menu id="formatMenu" label="&formatMenu.label;" accesskey="&formatMenu.accesskey;" command="cmd_insert">
<menupopup id="formatMenuPopup">
<menu id="tableMenu"/>
<menuseparator/>
<menuitem id="objectProperties"/>
<menuitem id="colorsAndBackground"/>
</menupopup>
</menu>
<menu id="optionsMenu" label="&optionsMenu.label;" accesskey="&optionsMenu.accesskey;">
<menupopup id="optionsMenuPopup">
<menuitem label="&selectAddressCmd.label;" accesskey="&selectAddressCmd.accesskey;" command="cmd_selectAddress"/>
<menuitem label="&checkSpellingCmd.label;" id="menu_checkspelling" accesskey="&checkSpellingCmd.accesskey;" key="key_checkspelling" command="cmd_spelling"/>
<menuitem label="&quoteCmd.label;" accesskey="&quoteCmd.accesskey;" command="cmd_quoteMessage"/>
<menuitem label="&editRewrapCmd.label;" accesskey="&editRewrapCmd.accesskey;" command="cmd_rewrap" oncommand="editorShell.Rewrap(false)"/>
<menuseparator/>
<menuitem id="returnReceiptMenu" type="checkbox" label="&returnReceiptMenu.label;" accesskey="&returnReceiptMenu.accesskey;" checked="false" oncommand="ToggleReturnReceipt(event.target)"/>
<menu id="outputFormatMenu" label="&outputFormatMenu.label;" accesskey="&outputFormatMenu.accesskey;" command="cmd_outputFormat">
<menupopup>
<menuitem type="radio" name="output_format" label="&autoFormatCmd.label;" accesskey="&autoFormatCmd.accesskey;" id="format_auto" checked="true"/>
<menuitem type="radio" name="output_format" label="&plainTextFormatCmd.label;" accesskey="&plainTextFormatCmd.accesskey;" id="format_plain"/>
<menuitem type="radio" name="output_format" label="&htmlFormatCmd.label;" accesskey="&htmlFormatCmd.accesskey;" id="format_html"/>
<menuitem type="radio" name="output_format" label="&bothFormatCmd.label;" accesskey="&bothFormatCmd.accesskey;" id="format_both"/>
</menupopup>
</menu>
<menu id="priorityMenu" label="&priorityMenu.label;" accesskey="&priorityMenu.accesskey;" oncommand="PriorityMenuSelect(event.target);">
<menupopup>
<menuitem type="radio" name="priority" label="&lowestPriorityCmd.label;" accesskey="&lowestPriorityCmd.accesskey;" id="priority_lowest"/>
<menuitem type="radio" name="priority" label="&lowPriorityCmd.label;" accesskey="&lowPriorityCmd.accesskey;" id="priority_low"/>
<menuitem type="radio" name="priority" label="&normalPriorityCmd.label;" accesskey="&normalPriorityCmd.accesskey;" id="priority_normal" checked="true"/>
<menuitem type="radio" name="priority" label="&highPriorityCmd.label;" accesskey="&highPriorityCmd.accesskey;" id="priority_high"/>
<menuitem type="radio" name="priority" label="&highestPriorityCmd.label;" accesskey="&highestPriorityCmd.accesskey;" id="priotity_highest"/>
</menupopup>
</menu>
<menu id="fccMenu" label="&fileCarbonCopyCmd.label;"
accesskey="&fileCarbonCopyCmd.accesskey;"
sortResource="http://home.netscape.com/NC-rdf#FolderTreeName"
sortDirection="ascending"
datasources="rdf:msgaccountmanager rdf:mailnewsfolders"
ref="msgaccounts:/">
<menupopup/>
<template>
<rule nc:CanFileMessages="true" iscontainer="true" isempty="false">
<menupopup>
<!--menuitem label="[current selection]" disabled="true"/>
<menuseparator/-->
<menu uri="..." class="folderMenuItem menu-iconic" label="rdf:http://home.netscape.com/NC-rdf#Name"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
IsSecure="rdf:http://home.netscape.com/NC-rdf#IsSecure"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
<menupopup>
<menuitem label="&fileHereMenu.label;"
oncommand="MessageFcc(event.target.parentNode.parentNode)"/>
<menuseparator/>
</menupopup>
</menu>
</menupopup>
</rule>
<rule nc:CanFileMessagesOnServer="false"/>
<rule nc:CanFileMessages="false" iscontainer="true" isempty="false">
<menupopup>
<menu uri="..." class="folderMenuItem menu-iconic" label="rdf:http://home.netscape.com/NC-rdf#Name"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
IsSecure="rdf:http://home.netscape.com/NC-rdf#IsSecure"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
<menupopup/>
</menu>
</menupopup>
</rule>
<rule nc:CanFileMessages="true">
<menupopup>
<menuitem uri="..." class="folderMenuItem menuitem-iconic" label="rdf:http://home.netscape.com/NC-rdf#Name"
oncommand="MessageFcc(event.target)"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
IsSecure="rdf:http://home.netscape.com/NC-rdf#IsSecure"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType"/>
</menupopup>
</rule>
</template>
</menu>
<!--menuseparator/>
<menuitem label="&addSignatureCmd.label;" disabled="true" oncommand=""/>
<menuitem label="&attachVCardCmd.label;" disabled="true" accesskey="&attachVCardCmd.accesskey;" oncommand="AttachVCard()"/-->
</menupopup>
</menu>
<!--menu id="debugMenu"/-->
<menu id="tasksMenu"/>
<menu id="windowMenu"/>
<menu id="menu_Help"/>
</menubar>
<toolbar class="toolbar-primary chromeclass-toolbar" id="composeToolbar" persist="collapsed">
<hbox id="toolbar_button_box">
<toolbarbutton class="toolbarbutton-1"
id="button-send" label="&sendButton.label;"
tooltiptext="&sendButton.tooltip;"
command="cmd_sendButton"
now_label="&sendButton.label;"
now_tooltiptext="&sendButton.tooltip;"
later_label="&sendLaterCmd.label;"
later_tooltiptext="&sendlaterButton.tooltip;">
<observes element="Communicator:WorkMode" attribute="offline"/>
</toolbarbutton>
<toolbarseparator class="toolbarseparator-primary"/>
<toolbarbutton class="toolbarbutton-1"
id="button-address" label="&addressButton.label;"
tooltiptext="&addressButton.tooltip;"
command="cmd_selectAddress"/>
<toolbarbutton class="toolbarbutton-1"
id="button-attach" label="&attachButton.label;"
tooltiptext="&attachButton.tooltip;"
command="cmd_attachFile"/>
<toolbarbutton class="toolbarbutton-1"
id="spellingButton" label="&spellingButton.label;"
command="cmd_spelling"/>
<toolbarseparator id="saveSeparator" class="toolbarseparator-primary"/>
<toolbarbutton class="toolbarbutton-1"
id="button-save" label="&saveButton.label;"
tooltiptext="&saveButton.tooltip;"
command="cmd_saveDefault"/>
<spacer flex="1"/>
<hbox id="throbber-box" align="center">
<button id="navigator-throbber"
oncommand="goClickThrobber('compose.throbber.url')" tooltiptext="&throbber.tooltip;">
<observes element="broadcaster_throbber" attribute="busy"/>
</button>
</hbox>
</hbox>
</toolbar>
<toolbar id="MsgHeadersToolbar" persist="collapsed" flex="1"
tborient="vertical">
<hbox id="msgheaderstoolbar-box" flex="1">
<vbox flex="1" id="addresses-box">
<hbox align="center">
<label value="&fromAddr.label;" accesskey="&fromAddr.accesskey;" control="msgIdentity"/>
<menulist id="msgIdentity" label="..." flex="1" oncommand="LoadIdentity(false);">
<menupopup id="msgIdentityPopup"/>
</menulist>
</hbox>
<listbox id="addressingWidget" flex="1"/>
<hbox align="center">
<label value="&subject.label;" accesskey="&subject.accesskey;" control="msgSubject"/>
<textbox id="msgSubject" flex="1" class="toolbar" disableonsend="true"
oninput="gContentChanged=true;SetComposeWindowTitle();"
onkeypress="subjectKeyPress(event);" />
</hbox>
</vbox>
<splitter id="attachmentbucket-sizer" collapse="after"/>
<vbox id="attachments-box">
<label id="attachmentBucketText" value="&attachments.label;" crop="right"
accesskey="&attachments.accesskey;" control="attachmentBucket"/>
<listbox seltype="multiple" id="attachmentBucket" flex="1" rows="4"
context="msgComposeAttachmentContext"
onkeypress="if (event.keyCode == 8 || event.keyCode == 46) RemoveSelectedAttachment();"
onclick="AttachmentBucketClicked(event);"
ondragover="nsDragAndDrop.dragOver(event, attachmentBucketObserver);"
ondragdrop="nsDragAndDrop.drop(event, attachmentBucketObserver);"
ondragexit="nsDragAndDrop.dragExit(event, attachmentBucketObserver);"/>
</vbox>
</hbox>
</toolbar>
<!-- These toolbar items get filled out from the editorOverlay -->
<toolbar class="chromeclass-toolbar" id="FormatToolbar" persist="collapsed" tbautostretch="never" grippytooltiptext="&formatToolbar.tooltip;">
<menulist id="ParagraphSelect"/>
<menulist id="FontFaceSelect"/>
<stack id="ColorButtons"/>
<toolbarbutton id="DecreaseFontSizeButton"/>
<toolbarbutton id="IncreaseFontSizeButton"/>
<toolbarseparator class="toolbarseparator-standard"/>
<toolbarbutton id="boldButton"/>
<toolbarbutton id="italicButton"/>
<toolbarbutton id="underlineButton"/>
<toolbarseparator class="toolbarseparator-standard"/>
<toolbarbutton id="ulButton"/>
<toolbarbutton id="olButton"/>
<toolbarbutton id="outdentButton"/>
<toolbarbutton id="indentButton"/>
<toolbarseparator class="toolbarseparator-standard"/>
<toolbarbutton id="AlignPopupButton"/>
<toolbarbutton id="InsertPopupButton"/>
<toolbarbutton id="smileButtonMenu" padwithspace="true"/>
<spacer flex="1"/>
</toolbar>
</toolbox>
<splitter id="compose-toolbar-sizer" onmousedown="awSizerListen()" collapse="after"/>
<!-- The mail message body frame -->
<vbox id="appcontent" flex="1">
<editor type="content-primary" id="content-frame" src="about:blank" name="browser.message.body" flex="1"
onkeypress="editorKeyPress(event);" context="msgComposeContext"/>
</vbox>
<statusbar id="status-bar" class="chromeclass-status">
<statusbarpanel id="component-bar"/>
<statusbarpanel id="statusText" flex="1"/>
<statusbarpanel class="statusbarpanel-progress">
<progressmeter id="compose-progressmeter" class="progressmeter-statusbar" mode="normal" value="0"/>
</statusbarpanel>
<statusbarpanel checkfunc="MailCheckBeforeOfflineChange()" id="offline-status" class="statusbarpanel-iconic"/>
</statusbar>
</window>

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

@ -28,23 +28,25 @@
<?xml-stylesheet href="chrome://messenger/skin/folderMenus.css" type="text/css"?>
<?xml-stylesheet href="chrome://editor/skin/editorFormatToolbar.css" type="text/css"?>
<?xml-stylesheet href="chrome://messenger/skin/addressingWidget.css" type="text/css"?>
<?xml-stylesheet href="chrome://messenger/skin/addressbook/abResultsPane.css" type="text/css"?>
<?xul-overlay href="chrome://global/content/charsetOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/communicatorOverlay.xul"?>
<?xul-overlay href="chrome://mail/content/messengercompose/addressingWidgetOverlay.xul"?>
<?xul-overlay href="chrome://global/content/globalOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
<?xul-overlay href="chrome://editor/content/editorOverlay.xul"?>
<?xul-overlay href="chrome://mail/content/messengercompose/insertMenuSmileyOverlay.xul"?>
<?xul-overlay href="chrome://mail/content/messengercompose/mailComposeExtrasOverlay.xul"?>
<!DOCTYPE window [
<!ENTITY % messengercomposeDTD SYSTEM "chrome://messenger/locale/messengercompose/messengercompose.dtd" >
<!ENTITY % messengercomposeDTD SYSTEM "chrome://mail/locale/messengercompose/messengercompose.dtd" >
%messengercomposeDTD;
<!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd" >
<!ENTITY % messengerDTD SYSTEM "chrome://mail/locale/messenger.dtd" >
%messengerDTD;
<!ENTITY % brandDTD SYSTEM "chrome://global/locale/brand.dtd" >
%brandDTD;
<!ENTITY % abDTD SYSTEM "chrome://messenger/locale/addressbook/abResultsPaneOverlay.dtd" >
%abDTD;
]>
<window id="msgcomposeWindow"
@ -60,24 +62,22 @@
persist="screenX screenY width height sizemode">
<stringbundleset id="stringbundleset">
<stringbundle id="bundle_composeMsgs" src="chrome://messenger/locale/messengercompose/composeMsgs.properties"/>
<stringbundle id="bundle_messenger" src="chrome://messenger/locale/messenger.properties"/>
<stringbundle id="bundle_offlinePrompts" src="chrome://messenger/locale/offline.properties"/>
<stringbundle id="bundle_composeMsgs" src="chrome://mail/locale/messengercompose/composeMsgs.properties"/>
<stringbundle id="bundle_messenger" src="chrome://mail/locale/messenger.properties"/>
<stringbundle id="bundle_offlinePrompts" src="chrome://mail/locale/offline.properties"/>
</stringbundleset>
<script type="application/x-javascript" src="chrome://messenger/content/accountUtils.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/widgetglue.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/mail-offline.js"/>
<script type="application/x-javascript" src="chrome://mail/content/widgetglue.js"/>
<script type="application/x-javascript" src="chrome://mail/content/mail-offline.js"/>
<script type="application/x-javascript" src="chrome://editor/content/editor.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/messengercompose/MsgComposeCommands.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/addressbook/abCommon.js"/>
<!--script type="application/x-javascript" src="chrome://editor/content/EditorCommandsDebug.js"/-->
<script type="application/x-javascript" src="chrome://mail/content/messengercompose/MsgComposeCommands.js"/>
<!-- drag and drop -->
<script type="application/x-javascript" src="chrome://global/content/nsDragAndDrop.js"/>
<script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/messengercompose/addressingWidgetOverlay.js"/>
<commandset id="composeCommands">
<commandset id="msgComposeCommandUpdate"
commandupdater="true"
@ -133,8 +133,8 @@
<command id="cmd_quoteMessage" oncommand="goDoCommand('cmd_quoteMessage')"/>
<command id="cmd_rewrap" oncommand="goDoCommand('cmd_rewrap')"/>
<command id="cmd_insert"/>
<command id="toggleABUICmd" oncommand="toggleABUI(this);" type="checkbox" autoCheck="false"/>
</commandset>
<broadcasterset id="composeBroadcasters">
<broadcaster id="Editor:Throbber" busy="false"/>
<broadcaster id="Communicator:WorkMode"/>
@ -163,6 +163,9 @@
<key id="key_selectAll"/>
<key id="key_find" key="&findCmd.key;" command="cmd_find" modifiers="accel"/>
<key id="key_findNext" key="&findAgainCmd.key;" command="cmd_findNext" modifiers="accel"/>
<key id="key_findPrev" key="&findPrevCmd.key;" command="cmd_findPrev" modifiers="accel, shift"/>
<key keycode="&findAgainCmd.key2;" command="cmd_findNext"/>
<key keycode="&findPrevCmd.key2;" command="cmd_findPrev" modifiers="shift"/>
<!-- Options Menu -->
<!-- key id="key_selectAddresses" xulkey="true" key="&selectAddressCmd.key;" command="cmd_selectAddress"/ -->
@ -196,7 +199,8 @@
<menuseparator/>
<menuitem label="&addAttachment.label;" accesskey="&addAttachment.accesskey;" command="cmd_attachFile"/>
</popup>
<toolbox>
<toolbox class="toolbox-top" id="headers-box">
<menubar id="compose-menubar" grippytooltiptext="&menuBar.tooltip;">
<menu id="menu_File">
<menupopup id="menu_FilePopup">
@ -245,9 +249,10 @@
<menuseparator/>
<menuitem label="&findCmd.label;" key="key_find" accesskey="&findCmd.accesskey;" command="cmd_find"/>
<menuitem label="&findAgainCmd.label;" key="key_findNext" accesskey="&findAgainCmd.accesskey;" command="cmd_findNext"/>
<menuitem label="&findPrevCmd.label;" key="key_findPrev" accesskey="&findPrevCmd.accesskey;" command="cmd_findPrev"/>
<menuseparator/>
<menuitem label="&accountManagerCmd.label;" accesskey="&accountManagerCmd.accesskey;" command="cmd_account"/>
<menuitem id="menu_preferences" oncommand="goPreferences('messenger.xul','chrome://messenger/content/pref-mailnews.xul','mailnews')"/>
<menuitem id="menu_preferences" oncommand="goDoCommand('cmd_preferences')"/>
</menupopup>
</menu>
<menu id="menu_View">
@ -266,8 +271,8 @@
command="cmd_showFormatToolbar"
accesskey="&showFormatToolbarCmd.accesskey;"
checked="true"/>
<!-- no statusbar to hide <menuitem id="menu_showTaskbar"
type="checkbox"/-->
<menuitem id="menu_showTaskbar"
type="checkbox"/>
</menupopup>
</menu>
<menuseparator/>
@ -369,7 +374,10 @@
<menuitem label="&attachVCardCmd.label;" disabled="true" accesskey="&attachVCardCmd.accesskey;" oncommand="AttachVCard()"/-->
</menupopup>
</menu>
<menu id="menu_Help"/>
<!--menu id="debugMenu"/-->
<menu id="tasksMenu"/>
<menu id="windowMenu"/>
<menu id="menu_Help"/>
</menubar>
<toolbar class="toolbar-primary chromeclass-toolbar" id="composeToolbar" persist="collapsed" grippytooltiptext="&mailToolbar.tooltip;">
@ -382,35 +390,25 @@
now_tooltiptext="&sendButton.tooltip;"
later_label="&sendLaterCmd.label;"
later_tooltiptext="&sendlaterButton.tooltip;">
<observes element="Communicator:WorkMode" attribute="offline"/>
</toolbarbutton>
<toolbarseparator class="toolbarseparator-primary"/>
<toolbarbutton class="toolbarbutton-1"
id="button-sendlater" label="&sendLaterCmd.label;"
tooltiptext="&sendlaterButton.tooltip;"
command="cmd_sendLater"/>
id="button-address" label="&addressButton.label;"
tooltiptext="&addressButton.tooltip;"
command="cmd_selectAddress"/>
<toolbarbutton class="toolbarbutton-1"
command="toggleABUICmd"
id="button-address" label="&addressButton.label;"
oncommand="toggleABUI();"/>
<toolbarbutton class="toolbarbutton-1"
id="button-attach" label="&attachButton.label;"
id="button-attach" label="&attachButton.label;"
tooltiptext="&attachButton.tooltip;"
command="cmd_attachFile"/>
<toolbarbutton class="toolbarbutton-1"
id="spellingButton" label="&spellButton.label;"
id="spellingButton" label="&spellingButton.label;"
command="cmd_spelling"/>
<toolbarseparator id="saveSeparator" class="toolbarseparator-primary"/>
<toolbarbutton class="toolbarbutton-1"
id="button-save" label="&saveButton.label;"
id="button-save" label="&saveButton.label;"
tooltiptext="&saveButton.tooltip;"
command="cmd_saveDefault"/>
<toolbarbutton id="button-more" label="&moreButton.label;" type="menu" class="toolbarbutton-1">
<menupopup id="more-menu" popupalign="topright" popupanchor="bottomright" onpopupshowing="updateRowMenuitems();">
<menuitem id="returnReceiptMenuButton" type="checkbox" label="&returnReceiptMenu.label;" accesskey="&returnReceiptMenu.accesskey;" checked="false" oncommand="ToggleReturnReceipt(event.target)"/>
<menuitem id="toggleCcRowVisibility" label="&toggleCcRow.label;" accesskey="&toggleCcRow.label;"
type="checkbox" oncommand="toggleCcRowVisibility();"/>
<menuitem id="toggleBccRowVisibility" label="&toggleBccRow.label;" accesskey="&toggleBccRow.label;"
type="checkbox" oncommand="toggleBccRowVisibility();"/>
</menupopup>
</toolbarbutton>
<spacer flex="1"/>
<hbox id="throbber-box" align="center">
<button id="navigator-throbber"
@ -420,126 +418,31 @@
</hbox>
</hbox>
</toolbar>
</toolbox>
<hbox flex="1">
<vbox id="abPane" hidden="true">
<!--
<hbox align="center">
<label value="Find:"/>
<textbox id="searchInput" flex="1"
oninput="onAbSearchInput(false);"
onkeypress="onAbSearchKeyPress(event);"/>
</hbox>
-->
<hbox id="searchBox" persist="collapsed" align="center">
<menulist id="addressbookList" flex="1"
ref="moz-abdirectory://"
datasources="rdf:addressdirectory"
oncommand="ChangeAddressbookListing();"
hidden="true">
<template>
<rule nc:IsMailList="false">
<menupopup>
<menuitem label="rdf:http://home.netscape.com/NC-rdf#DirName" uri="..."/>
</menupopup>
</rule>
</template>
</menulist>
<label id="searchCriteria" value="&abFind.label;"/>
<textbox id="searchInput"
oninput="onAbSearchInput(false);"
onkeypress="onAbSearchKeyPress(event);"/>
<button style="max-width: 5em;" id="clear" label="&clearButton.label;" disabled="true"
oncommand="onAbClearSearch();"
tooltiptext="&clearButton.tooltip;"/>
</hbox>
<tree id="abResultsTree" flex="1" enableColumnDrag="true" class="plain"
onselect="this.view.selectionChanged();"
hidecolumnpicker="true" style="min-width: 80px;">
<treecols id="abResultsTreeCols">
<!-- these column ids must match up to the mork column names, except for GeneratedName, see nsIAddrDatabase.idl -->
<treecol id="GeneratedName" class="sortDirectionIndicator"
persist="hidden ordinal width" flex="1" label="&GeneratedName.label;" primary="true"/>
</treecols>
<treechildren ondraggesture="nsDragAndDrop.startDrag(event, abResultsPaneObserver);"
ondblclick="addMailHeader('to');"/>
</tree>
<hbox align="center" pack="center">
<button style="max-width: 3em;" label="&toBtn.label;" oncommand="addMailHeader('to');"/>
<button style="max-width: 3em;" label="&ccBtn.label;" oncommand="addMailHeader('cc');"/>
<button style="max-width: 3em;" label="&bccBtn.label;" oncommand="addMailHeader('bcc');"/>
</hbox>
</vbox>
<splitter id="abSplitter" hidden="true"/>
<vbox flex="1">
<toolbar id="MsgHeadersToolbar" persist="collapsed"
<toolbar id="MsgHeadersToolbar" persist="collapsed" flex="1"
tborient="vertical" tbalign="stretch"
grippytooltiptext="&addressBar.tooltip;">
<hbox id="msgheaderstoolbar-box" flex="1">
<!-- no go, since it is in the toolbar
<vbox align="start" pack="start">
<toolbarbutton style="list-style-image: url('chrome://messenger/skin/icons/ab-toggle.gif'); max-width: 30px !important;"
oncommand="toggleABUI();"
command="toggleABUICmd"/>
<vbox flex="1" id="addresses-box">
<hbox align="center">
<label value="&fromAddr.label;" accesskey="&fromAddr.accesskey;" control="msgIdentity"/>
<menulist id="msgIdentity" label="..." flex="1" oncommand="LoadIdentity(false);">
<menupopup id="msgIdentityPopup"/>
</menulist>
</hbox>
<listbox id="addressingWidget" flex="1"/>
<hbox align="center">
<label value="&subject.label;" accesskey="&subject.accesskey;" control="msgSubject"/>
<textbox id="msgSubject" flex="1" class="toolbar" disableonsend="true"
oninput="gContentChanged=true;SetComposeWindowTitle();"
onkeypress="subjectKeyPress(event);" />
</hbox>
</vbox>
-->
<vbox id="addresses-box" flex="1">
<grid>
<columns>
<column/>
<column flex="1"/>
</columns>
<rows>
<row flex="1">
<hbox align="center" pack="end">
<label value="&toField.label;"/>
</hbox>
<textbox id="toField" type="autocomplete" flex="1"
searchSessions="addrbook" timeout="20" maxrows="4"
autoFill="true" autoFillAfterMatch="true" forceComplete="true"
minResultsForPopup="3"
onerrorcommand="awRecipientErrorCommand(eventParam, this)"
oninput="gContentChanged=true; setupAutocomplete();" disableonsend="true"/>
</row>
<row flex="1" id="ccRow">
<hbox align="center" pack="end">
<label value="&ccField.label;"/>
</hbox>
<textbox id="ccField" type="autocomplete" flex="1"
searchSessions="addrbook" timeout="20" maxrows="4"
autoFill="true" autoFillAfterMatch="true" forceComplete="true"
minResultsForPopup="3"
onerrorcommand="awRecipientErrorCommand(eventParam, this)"
oninput="gContentChanged=true; setupAutocomplete();" disableonsend="true"/>
</row>
<row flex="1" id="bccRow" hidden="true">
<hbox align="center" pack="end">
<label value="&bccField.label;"/>
</hbox>
<textbox id="bccField" type="autocomplete" flex="1"
searchSessions="addrbook" timeout="20" maxrows="4"
autoFill="true" autoFillAfterMatch="true" forceComplete="true"
minResultsForPopup="3"
onerrorcommand="awRecipientErrorCommand(eventParam, this)"
oninput="gContentChanged=true; setupAutocomplete();" disableonsend="true"/>
</row>
<row flex="1">
<hbox align="center" pack="end">
<label value="&subject.label;" accesskey="&subject.accesskey;" control="msgSubject"/>
</hbox>
<textbox id="msgSubject" flex="1" disableonsend="true"
onkeyup="SetComposeWindowTitle();"
onkeypress="subjectKeyPress(event);"
oninput="gContentChanged=true;"/>
</row>
</rows>
</grid>
</vbox>
<vbox id="attachments-box" hidden="true">
<splitter id="attachmentbucket-sizer" collapse="after"/>
<vbox id="attachments-box">
<label id="attachmentBucketText" value="&attachments.label;" crop="right"
accesskey="&attachments.accesskey;" control="attachmentBucket"/>
<listbox id="attachmentBucket" flex="1" rows="2"
<listbox seltype="multiple" id="attachmentBucket" flex="1" rows="4"
context="msgComposeAttachmentContext"
onkeypress="if (event.keyCode == 8 || event.keyCode == 46) RemoveSelectedAttachment();"
onclick="AttachmentBucketClicked(event);"
@ -549,13 +452,11 @@
</vbox>
</hbox>
</toolbar>
<!-- These toolbar items get filled out from the editorOverlay -->
<toolbar class="chromeclass-toolbar" id="FormatToolbar" persist="collapsed" tbautostretch="never" grippytooltiptext="&formatToolbar.tooltip;">
<menulist id="fontsMenulist" style="max-width: 15em;">
<observes element="cmd_fontFace" attribute="state" onbroadcast="onFontFaceChange(this.parentNode, 'cmd_fontFace')"/>
<menupopup id="FontFacePopup" oncommand="doStatefulCommand('cmd_fontFace', event.target.value);"/>
</menulist>
<menulist id="ParagraphSelect"/>
<menulist id="FontFaceSelect"/>
<stack id="ColorButtons"/>
<toolbarbutton id="DecreaseFontSizeButton"/>
<toolbarbutton id="IncreaseFontSizeButton"/>
@ -566,28 +467,32 @@
<toolbarseparator class="toolbarseparator-standard"/>
<toolbarbutton id="ulButton"/>
<toolbarbutton id="olButton"/>
<toolbarbutton id="outdentButton"/>
<toolbarbutton id="indentButton"/>
<toolbarseparator class="toolbarseparator-standard"/>
<toolbarbutton id="AlignLeftItem" oncommand="doStatefulCommand('cmd_align', 'left')">
<observes element="cmd_align" attribute="disabled"/>
</toolbarbutton>
<toolbarbutton id="AlignCenterItem" oncommand="doStatefulCommand('cmd_align', 'center')">
<observes element="cmd_align" attribute="disabled"/>
</toolbarbutton>
<toolbarbutton id="AlignRightItem" oncommand="doStatefulCommand('cmd_align', 'right')">
<observes element="cmd_align" attribute="disabled"/>
</toolbarbutton>
<toolbarseparator class="toolbarseparator-standard"/>
<toolbarbutton id="InsertLinkItem" class="insert" command="cmd_link"/>
<toolbarbutton id="InsertImageItem" class="insert" command="cmd_image"/>
<toolbarbutton id="AlignPopupButton"/>
<toolbarbutton id="InsertPopupButton"/>
<toolbarbutton id="smileButtonMenu" padwithspace="true"/>
<spacer flex="1"/>
</toolbar>
</toolbox>
<splitter id="compose-toolbar-sizer" onmousedown="awSizerListen()" collapse="after"/>
<!-- The mail message body frame -->
<vbox id="appcontent" flex="1">
<editor type="content-primary" id="content-frame" src="about:blank" name="browser.message.body" flex="1"
onkeypress="editorKeyPress(event);" context="msgComposeContext"/>
</vbox>
</vbox>
</hbox>
<statusbar id="status-bar" class="chromeclass-status">
<statusbarpanel id="component-bar"/>
<statusbarpanel id="statusText" flex="1"/>
<statusbarpanel class="statusbarpanel-progress">
<progressmeter id="compose-progressmeter" class="progressmeter-statusbar" mode="normal" value="0"/>
</statusbarpanel>
<statusbarpanel checkfunc="MailCheckBeforeOfflineChange()" id="offline-status" class="statusbarpanel-iconic"/>
</statusbar>
</window>

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

@ -1,23 +1,24 @@
messenger.jar:
+ content/messenger/messengercompose/addressingWidgetOverlay.js (content/addressingWidgetOverlay.js)
+ content/messenger/messengercompose/addressingWidgetOverlay.xul (content/addressingWidgetOverlay.xul)
+ content/messenger/messengercompose/MsgComposeCommands.js (content/MsgComposeCommands.js)
+ content/messenger/messengercompose/messengercompose.xul (content/messengercompose.xul)
+ content/messenger/addressbook/abCommon.js (content/abCommon.js)
mail.jar:
content/mail/messengercompose/compose.xul (content/compose.xul)
content/mail/messengercompose/MsgComposeCommands.js (content/MsgComposeCommands.js)
content/mail/messengercompose/addressingWidgetOverlay.js (content/addressingWidgetOverlay.js)
content/mail/messengercompose/addressingWidgetOverlay.xul (content/addressingWidgetOverlay.xul)
content/mail/messengercompose/insertMenuSmileyOverlay.xul (content/insertMenuSmileyOverlay.xul)
content/mail/messengercompose/askSendFormat.js (content/askSendFormat.js)
content/mail/messengercompose/askSendFormat.xul (content/askSendFormat.xul)
content/mail/messengercompose/sendProgress.xul (content/sendProgress.xul)
content/mail/messengercompose/sendProgress.js (content/sendProgress.js)
content/mail/messengercompose/mailComposeBindings.xml (content/mailComposeBindings.xml)
content/mail/messengercompose/mailComposeExtrasOverlay.xul (content/mailComposeExtrasOverlay.xul)
content/mail/addressbook/abCommon.js (content/abCommon.js)
toolkit.jar:
content/global/autocomplete.xml (content/autocomplete.xml)
en-US.jar:
+ locale/en-US/messenger/messengercompose/messengercompose.dtd (locale/messengercompose.dtd)
locale/en-US/mail/messengercompose/messengercompose.dtd (locale/messengercompose.dtd)
locale/en-US/mail/messengercompose/addressingWidgetOverlay.dtd (locale/addressingWidgetOverlay.dtd)
locale/en-US/mail/messengercompose/askSendFormat.dtd (locale/askSendFormat.dtd)
locale/en-US/mail/messengercompose/sendProgress.dtd (locale/sendProgress.dtd)
locale/en-US/mail/messengercompose/composeMsgs.properties (locale/composeMsgs.properties)
classic.jar:
skin/classic/messenger/icons/more-disabled.gif (skin/more-disabled.gif)
skin/classic/messenger/icons/more-hover.gif (skin/more-hover.gif)
skin/classic/messenger/icons/more-normal.gif (skin/more-normal.gif)
skin/classic/messenger/icons/more-select.gif (skin/more-select.gif)
skin/classic/messenger/icons/sendlater-disabled.gif (skin/sendlater-disabled.gif)
skin/classic/messenger/icons/sendlater-hover.gif (skin/sendlater-hover.gif)
skin/classic/messenger/icons/sendlater-normal.gif (skin/sendlater-normal.gif)
skin/classic/messenger/icons/sendlater-select.gif (skin/sendlater-select.gif)
skin/classic/messenger/messengercompose/messengercompose.css (skin/messengercompose.css)

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

@ -11,57 +11,62 @@
<!-- menu items: the . means that the menu item isn't implemented yet -->
<!-- File menu items -->
<!ENTITY newMessage.label "Message">
<!ENTITY newMessage.accesskey "M">
<!ENTITY newMessage.label "Message">
<!ENTITY newMessage.accesskey "M">
<!ENTITY saveCmd.label "Save">
<!ENTITY saveCmd.key "S">
<!ENTITY saveCmd.accesskey "s">
<!ENTITY saveCmd.key "S">
<!ENTITY saveCmd.accesskey "s">
<!ENTITY saveAsCmd.label "Save As">
<!ENTITY saveAsCmd.accesskey "A">
<!ENTITY saveAsCmd.accesskey "A">
<!ENTITY saveAsFileCmd.label "File...">
<!ENTITY saveAsFileCmd.accesskey "F">
<!ENTITY saveAsFileCmd.accesskey "F">
<!ENTITY saveAsDraftCmd.label "Draft">
<!ENTITY saveAsDraftCmd.accesskey "D">
<!ENTITY saveAsDraftCmd.accesskey "D">
<!ENTITY saveAsTemplateCmd.label "Template">
<!ENTITY saveAsTemplateCmd.accesskey "T">
<!ENTITY saveAsTemplateCmd.accesskey "T">
<!ENTITY attachFileCmd.label "Attach File...">
<!ENTITY attachFileCmd.key "">
<!ENTITY attachFileCmd.accesskey "F">
<!ENTITY attachFileCmd.key "">
<!ENTITY attachFileCmd.accesskey "F">
<!ENTITY attachPageCmd.label "Attach Web Page...">
<!ENTITY attachPageCmd.accesskey "W">
<!ENTITY attachPageCmd.accesskey "W">
<!ENTITY sendNowCmd.label "Send Now">
<!ENTITY sendCmd.keycode "VK_RETURN">
<!ENTITY sendNowCmd.accesskey "d">
<!ENTITY sendCmd.keycode "VK_RETURN">
<!ENTITY sendNowCmd.accesskey "d">
<!ENTITY sendLaterCmd.label "Send Later">
<!ENTITY sendLaterCmd.keycode "VK_RETURN">
<!ENTITY sendLaterCmd.accesskey "L">
<!ENTITY sendLaterCmd.keycode "VK_RETURN">
<!ENTITY sendLaterCmd.accesskey "L">
<!ENTITY printSetupCmd.label "Page Setup...">
<!ENTITY printSetupCmd.accesskey "u">
<!ENTITY printSetupCmd.accesskey "u">
<!ENTITY printCmd.label "Print...">
<!ENTITY printCmd.key "P">
<!ENTITY printCmd.accesskey "P">
<!ENTITY printCmd.key "P">
<!ENTITY printCmd.accesskey "P">
<!ENTITY closeCmd.label "Close">
<!-- Edit menu items -->
<!ENTITY findCmd.label "Find and Replace...">
<!ENTITY findCmd.key "F">
<!ENTITY findCmd.accesskey "F">
<!ENTITY findCmd.key "F">
<!ENTITY findCmd.accesskey "F">
<!ENTITY findAgainCmd.label "Find Again">
<!ENTITY findAgainCmd.key "G">
<!ENTITY findAgainCmd.accesskey "g">
<!ENTITY findAgainCmd.key "G">
<!ENTITY findAgainCmd.accesskey "g">
<!ENTITY findAgainCmd.key2 "VK_F3">
<!ENTITY findPrevCmd.label "Find Previous">
<!ENTITY findPrevCmd.key "G">
<!ENTITY findPrevCmd.key2 "VK_F3">
<!ENTITY findPrevCmd.accesskey "v">
<!ENTITY accountManagerCmd.label "Mail &amp; Newsgroups Account Settings...">
<!ENTITY accountManagerCmd.accesskey "m">
<!ENTITY accountManagerCmd.accesskey "m">
<!-- View menu items -->
<!ENTITY showComposeToolbarCmd.label "Mail Toolbar">
<!ENTITY showComposeToolbarCmd.accesskey "o">
<!ENTITY showComposeToolbarCmd.accesskey "o">
<!ENTITY showFormatToolbarCmd.label "Formatting Toolbar">
<!ENTITY showFormatToolbarCmd.accesskey "F">
<!ENTITY showFormatToolbarCmd.accesskey "F">
<!ENTITY showParagraphMarksCmd.label ".Show Paragraph Marks">
<!ENTITY pageSourceCmd.label ".Page Source">
<!ENTITY pageSourceCmd.accesskey "u">
<!ENTITY pageSourceCmd.accesskey "u">
<!ENTITY pageInfoCmd.label ".Page Info">
<!ENTITY pageInfoCmd.accesskey "I">
<!ENTITY pageInfoCmd.accesskey "I">
<!ENTITY dcharMenu.label "Character Set">
<!ENTITY dcharIso1Cmd.label "Western (ISO-8859-1)">
<!ENTITY dcharIso2Cmd.label "Central European (ISO-8859-2)">
@ -84,6 +89,28 @@
<!ENTITY dcharArmCmd.label "Armenian (ARMSCII-8)">
<!ENTITY dcharDEFAULT.label "Set Default Mail Send Character Set">
<!-- Insert menu items -->
<!ENTITY insertSmiley.label "Smiley">
<!ENTITY insertSmiley.accesskey "S">
<!-- Insert Smiley Menu items -->
<!ENTITY smiley1Cmd.label "Smile">
<!ENTITY smiley1Cmd.accesskey "S">
<!ENTITY smiley2Cmd.label "Frown">
<!ENTITY smiley2Cmd.accesskey "F">
<!ENTITY smiley3Cmd.label "Wink">
<!ENTITY smiley3Cmd.accesskey "W">
<!ENTITY smiley4Cmd.label "Tongue-out">
<!ENTITY smiley4Cmd.accesskey "T">
<!ENTITY smiley5Cmd.label "Laughing">
<!ENTITY smiley5Cmd.accesskey "L">
<!ENTITY smiley6Cmd.label "Embarrassed">
<!ENTITY smiley6Cmd.accesskey "E">
<!ENTITY smiley7Cmd.label "Undecided">
<!ENTITY smiley7Cmd.accesskey "U">
<!ENTITY SmileButton.tooltip "Insert a smiley face">
<!-- Format menu items -->
<!ENTITY formatMenu.label "Format">
<!ENTITY formatMenu.accesskey "o">
@ -98,19 +125,19 @@
<!--LOCALIZATION NOTE attachVCardCmd.label Don't translate the term 'vCard' -->
<!ENTITY addSignatureCmd.label ".Add Signature File">
<!ENTITY attachVCardCmd.label ".Include Personal Card (vCard)">
<!ENTITY attachVCardCmd.accesskey "P">
<!ENTITY attachVCardCmd.accesskey "P">
<!ENTITY quoteCmd.label "Quote Message">
<!ENTITY quoteCmd.accesskey "Q">
<!ENTITY quoteCmd.accesskey "Q">
<!ENTITY editRewrapCmd.label "Rewrap">
<!ENTITY editRewrapCmd.accesskey "R">
<!ENTITY selectAddressCmd.label "Select Addresses...">
<!ENTITY selectAddressCmd.key "">
<!ENTITY selectAddressCmd.accesskey "c">
<!ENTITY selectAddressCmd.key "">
<!ENTITY selectAddressCmd.accesskey "c">
<!ENTITY checkSpellingCmd.label "Check Spelling...">
<!ENTITY checkSpellingCmd.key "K">
<!ENTITY checkSpellingCmd.accesskey "S">
<!ENTITY checkSpellingCmd.key "K">
<!ENTITY checkSpellingCmd.accesskey "S">
<!ENTITY priorityMenu.label "Priority">
<!ENTITY priorityMenu.accesskey "p">
@ -166,6 +193,10 @@
<!-- Toolbar items -->
<!ENTITY sendButton.label "Send">
<!ENTITY quoteButton.label "Quote">
<!ENTITY addressButton.label "Address">
<!ENTITY attachButton.label "Attach">
<!ENTITY spellingButton.label "Spelling">
<!ENTITY saveButton.label "Save">
<!ENTITY stopButton.label "Stop">
<!--tooltips-->
@ -203,26 +234,3 @@
<!ENTITY selectAll.accesskey "A">
<!ENTITY addAttachment.label "Add Attachment">
<!ENTITY addAttachment.accesskey "t">
<!ENTITY toField.label "To:">
<!ENTITY ccField.label "Cc:">
<!ENTITY bccField.label "Bcc:">
<!ENTITY toBtn.label "To">
<!ENTITY ccBtn.label "Cc">
<!ENTITY bccBtn.label "Bcc">
<!ENTITY toggleCcRow.label "Show Cc Field">
<!ENTITY toggleCcRow.accesskey "c">
<!ENTITY toggleBccRow.label "Show Bcc Field">
<!ENTITY toggleBccRow.accesskey "B">
<!ENTITY abFind.label "Find:">
<!ENTITY addressButton.label "Addresses">
<!ENTITY attachButton.label "Add Attachments">
<!ENTITY spellButton.label "Check Spelling">
<!ENTITY saveButton.label "Save Draft">
<!ENTITY moreButton.label "More">