gecko-dev/suite/browser/mailNavigatorOverlay.xul

229 строки
8.6 KiB
XML

<?xml version="1.0"?>
<!-- retrieve generic commands -->
<!DOCTYPE overlay SYSTEM "chrome://navigator/locale/mailNavigatorOverlay.dtd" >
<overlay id="mailNavigatorOverlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript">
<![CDATA[
var gHasIntegratedMailClient = ("@mozilla.org/messengercompose/composeparams;1" in Components.classes);
// attachment: 0 - link
// 1 - page
// 2 - image
function openComposeWindow(url, title, attachment)
{
if (gHasIntegratedMailClient) {
var params = Components.classes["@mozilla.org/messengercompose/composeparams;1"]
.createInstance(Components.interfaces.nsIMsgComposeParams);
if (params)
{
params.composeFields = Components.classes['@mozilla.org/messengercompose/composefields;1']
.createInstance(Components.interfaces.nsIMsgCompFields);
if (params.composeFields)
{
if (attachment == 0 || attachment == 1)
{
params.composeFields.body = url;
params.composeFields.subject = title;
params.bodyIsLink = true;
}
if (attachment == 1 || attachment == 2)
{
var attachmentData = Components.classes["@mozilla.org/messengercompose/attachment;1"]
.createInstance(Components.interfaces.nsIMsgAttachment);
if (attachmentData)
{
attachmentData.url = url;
params.composeFields.addAttachment(attachmentData);
}
}
var composeService = Components.classes["@mozilla.org/messengercompose;1"]
.getService(Components.interfaces.nsIMsgComposeService);
if (composeService) {
// it is possible you won't have a default identity
// like if you've never launched mail before on a new profile.
// see bug #196073
try {
params.identity = composeService.defaultIdentity;
}
catch (ex) {
params.identity = null;
}
composeService.OpenComposeWindowWithParams(null, params);
}
}
}
}
else {
openExternalMailer(url, title);
}
}
function openExternalMailer(url, title) {
var extProtocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
.getService(Components.interfaces.nsIExternalProtocolService);
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var mailto = url ? "mailto:?body="+url+"&subject="+escape(title) : "mailto:";
var uri = ioService.newURI(mailto, null, null);
extProtocolSvc.loadUrl(uri);
}
function openNewCardDialog()
{
window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xul",
"",
"chrome,resizable=no,titlebar,modal");
}
function goOpenNewMessage()
{
if (gHasIntegratedMailClient) {
if ("MsgNewMessage" in window)
{
MsgNewMessage(null);
return;
}
var msgComposeService = Components.classes["@mozilla.org/messengercompose;1"].getService();
msgComposeService = msgComposeService.QueryInterface(Components.interfaces.nsIMsgComposeService);
msgComposeService.OpenComposeWindow(null, null,
Components.interfaces.nsIMsgCompType.New,
Components.interfaces.nsIMsgCompFormat.Default,
null, null);
}
else {
openExternalMailer();
}
}
function sendLink(pageUrl, pageTitle)
{
try {
openComposeWindow(pageUrl, pageTitle, 0);
} catch(ex) { dump("Cannot Send Link: " + ex + "\n"); }
}
function sendImage(imageURL)
{
try {
openComposeWindow(imageURL, null, 2);
} catch(ex) { dump("Cannot Send Image: " + ex + "\n"); }
}
function sendPage(aDocument)
{
if (!aDocument)
aDocument = window._content.document;
var pageUrl = aDocument.URL;
var pageTitle = Components.lookupMethod(aDocument, 'title').call(aDocument);
try {
openComposeWindow(pageUrl, pageTitle, 1);
} catch(ex) { dump("Cannot Send Page: " + ex + "\n"); }
}
function initMailContextMenuItems(aEvent)
{
var shouldShowSendPage = !(gContextMenu.onTextInput ||
gContextMenu.isTextSelected) &&
!(gContextMenu.onLink && gContextMenu.onImage) &&
gHasIntegratedMailClient;
gContextMenu.showItem("context-sendpage", shouldShowSendPage);
gContextMenu.showItem("context-sep-apps", gContextMenu.shouldShowSeparator("context-sep-apps"));
}
var gAddedMailContextMenuPopupListener = false;
function initMailContextMenuPopupListener(aEvent)
{
// This is really lame, but we can't seem to add a bubbling listener to the DOMWindow (!)
if (gAddedMailContextMenuPopupListener)
return;
var popup = document.getElementById("contentAreaContextMenu");
popup.addEventListener("popupshowing", initMailContextMenuItems, false);
gAddedMailContextMenuPopupListener = true;
}
function hideMenuitems() {
document.getElementById("menu_newCard").hidden = !gHasIntegratedMailClient;
var menu_sendPage = document.getElementById("menu_sendPage");
if (menu_sendPage)
menu_sendPage.hidden = !gHasIntegratedMailClient;
}
function initOverlay(aEvent) {
initMailContextMenuPopupListener(aEvent);
hideMenuitems();
}
addEventListener("load", initOverlay, true);
]]>
</script>
<!-- navigator specific commands -->
<commandset id="tasksCommands">
<command id="cmd_newMessage" oncommand="goOpenNewMessage();"/>
<command id="cmd_newCard" oncommand="openNewCardDialog()"/>
<command id="cmd_sendPage" oncommand="sendPage();"/>
<command id="Browser:SendLink"
oncommand="sendLink(Components.lookupMethod(window._content, 'location').call(window._content).href,
Components.lookupMethod(window._content.document, 'title').call(window._content.document));"/>
</commandset>
<!-- navigator specific UI items -->
<menupopup id="menu_NewPopup">
<menuitem id="menu_newCard"
label="&newCardCmd.label;"
accesskey="&newCardCmd.accesskey;"
command="cmd_newCard"
insertafter="navBeginGlobalNewItems"/>
<menuitem id="menu_newMessage"
label="&newMessageCmd.label;"
accesskey="&newMessageCmd.accesskey;"
command="cmd_newMessage"
insertafter="navBeginGlobalNewItems"/>
</menupopup>
<menupopup id="menu_FilePopup">
<menuitem id="menu_sendPage"
label="&sendPage.label;"
accesskey="&sendPage.accesskey;"
command="cmd_sendPage"
position="9"/>
<menuitem id="menu_sendLink"
label="&sendLinkCmd.label;"
accesskey="&sendLinkCmd.accesskey;"
command="Browser:SendLink"
position="10"/>
</menupopup>
<popup id="contentAreaContextMenu">
<menuitem id="context-sendpage"
label="&contextSendPage.label;"
accesskey="&contextSendPage.accesskey;"
oncommand="sendPage();"
insertafter="context-savepage"/>
<menuitem id="context-sendimage"
label="&contextSendImage.label;"
accesskey="&contextSendImage.accesskey;"
oncommand="sendImage(gContextMenu.imageURL);"
insertafter="context-saveimage"/>
<menu id="frame">
<menupopup id="frame_popup">
<menuitem insertafter="saveframeas"
label="&contextSendFrame.label;"
accesskey="&contextSendFrame.accesskey;"
oncommand="sendPage(gContextMenu.target.ownerDocument);"/>
</menupopup>
</menu>
</popup>
</overlay>