fix for 65761 - prefill filters using email address;r=ducarroz;sr=sspitzer
git-svn-id: svn://10.0.0.236/trunk@106099 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -202,6 +202,7 @@ var DefaultController =
|
||||
case "cmd_forwardInline":
|
||||
case "cmd_forwardAttachment":
|
||||
case "cmd_editAsNew":
|
||||
case "cmd_canHaveFilter":
|
||||
case "cmd_delete":
|
||||
case "button_delete":
|
||||
case "cmd_shiftDelete":
|
||||
@@ -330,6 +331,10 @@ var DefaultController =
|
||||
case "cmd_forwardInline":
|
||||
case "cmd_forwardAttachment":
|
||||
case "cmd_editAsNew":
|
||||
case "cmd_canHaveFilter":
|
||||
var loadedFolder = GetLoadedMsgFolder();
|
||||
if (!(loadedFolder && loadedFolder.server.canHaveFilters) || !(IsMessageDisplayedInMessagePane()))
|
||||
return false;
|
||||
case "cmd_openMessage":
|
||||
case "button_print":
|
||||
case "cmd_print":
|
||||
@@ -372,7 +377,7 @@ var DefaultController =
|
||||
return(MailAreaHasFocus() && IsFolderSelected());
|
||||
case "cmd_find":
|
||||
case "cmd_findAgain":
|
||||
return IsFindEnabled();
|
||||
return IsMessageDisplayedInMessagePane();
|
||||
break;
|
||||
// these are enabled on when we are in threaded mode
|
||||
case "cmd_selectThread":
|
||||
@@ -478,6 +483,9 @@ var DefaultController =
|
||||
case "cmd_editAsNew":
|
||||
MsgEditMessageAsNew();
|
||||
break;
|
||||
case "cmd_canHaveFilter":
|
||||
MsgCreateFilter();
|
||||
break;
|
||||
case "button_delete":
|
||||
case "cmd_delete":
|
||||
SetNextMessageAfterDelete();
|
||||
@@ -867,7 +875,7 @@ function IsFolderSelected()
|
||||
return false;
|
||||
}
|
||||
|
||||
function IsFindEnabled()
|
||||
function IsMessageDisplayedInMessagePane()
|
||||
{
|
||||
return (!IsThreadAndMessagePaneSplitterCollapsed() && (GetNumSelectedMessages() > 0));
|
||||
}
|
||||
|
||||
@@ -126,6 +126,10 @@ Rights Reserved.
|
||||
<menuitem label="&CopyEmailAddress.label;"
|
||||
accesskey="&CopyEmailAddress.accesskey;"
|
||||
oncommand="CopyEmailAddress(document.popupNode)"/>
|
||||
<menuitem label="&CreateFilter.label;"
|
||||
accesskey="&CreateFilter.accesskey;"
|
||||
oncommand="CreateFilter(document.popupNode)"
|
||||
observes="cmd_canHaveFilter"/>
|
||||
</popup>
|
||||
|
||||
<popup id="allHeadersPopup" onpopupshowing="return fillAllHeadersPopup(document.popupNode);" popupanchor="bottomleft">
|
||||
|
||||
@@ -654,6 +654,24 @@ function MsgEditMessageAsNew()
|
||||
ComposeMessage(msgComposeType.Template, msgComposeFormat.Default, loadedFolder, messageArray);
|
||||
}
|
||||
|
||||
function MsgCreateFilter()
|
||||
{
|
||||
var emailAddressNode;
|
||||
|
||||
if (gCollapsedHeaderViewMode)
|
||||
emailAddressNode = document.getElementById("collapsedfromValue");
|
||||
else
|
||||
emailAddressNode = document.getElementById("expandedfromValue");
|
||||
|
||||
if (emailAddressNode)
|
||||
{
|
||||
var emailAddress = emailAddressNode.getTextAttribute("emailAddress");
|
||||
if (emailAddress){
|
||||
top.MsgFilters(emailAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function MsgHome(url)
|
||||
{
|
||||
window.open(url, "_blank", "chrome,dependent=yes,all");
|
||||
@@ -926,26 +944,43 @@ function MsgSearchMessages()
|
||||
"chrome,resizable,centerscreen,dialog=no", { folder: preselectedFolder });
|
||||
}
|
||||
|
||||
function MsgFilters()
|
||||
function MsgFilters(emailAddress)
|
||||
{
|
||||
var preselectedFolder = GetFirstSelectedMsgFolder();
|
||||
var windowManagerInterface = GetWindowMediator();
|
||||
var filterList = windowManagerInterface.getMostRecentWindow("mailnews:filterlist");
|
||||
var args = { folder: preselectedFolder };
|
||||
if (emailAddress)
|
||||
args.prefillValue = emailAddress;
|
||||
|
||||
if (filterList)
|
||||
{
|
||||
var filterEditor = windowManagerInterface.getMostRecentWindow("mailnews:filtereditor");
|
||||
var filterEditor = windowManagerInterface.getMostRecentWindow("mailnews:filtereditor");
|
||||
|
||||
// If the filtereditor is open, then we focus that because it is modal and
|
||||
// thus blocking the filterlist from focusing.
|
||||
if (filterEditor)
|
||||
filterEditor.focus();
|
||||
else
|
||||
filterList.focus();
|
||||
// If the filtereditor is open, then we focus that because it is modal and
|
||||
// thus blocking the filterlist from focusing.
|
||||
if (filterEditor)
|
||||
{
|
||||
if(emailAddress)
|
||||
{
|
||||
if(!gPromptService) {
|
||||
gPromptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService();
|
||||
gPromptService = gPromptService.QueryInterface(Components.interfaces.nsIPromptService);
|
||||
}
|
||||
|
||||
gPromptService.alert(window,
|
||||
gBrandBundle.getString("brandShortName"),
|
||||
gMessengerBundle.getString('cannotHaveTwoFilterRulesText')
|
||||
);
|
||||
}
|
||||
filterEditor.focus();
|
||||
}
|
||||
else
|
||||
filterList.openPrefillOnExistingFilterList(emailAddress);
|
||||
}
|
||||
else
|
||||
window.openDialog("chrome://messenger/content/FilterListDialog.xul", "",
|
||||
"chrome,resizable,centerscreen,dialog=yes", { folder: preselectedFolder });
|
||||
window.openDialog("chrome://messenger/content/FilterListDialog.xul", "",
|
||||
"chrome,resizable,centerscreen,dialog=yes", args);
|
||||
}
|
||||
|
||||
function MsgViewAllHeaders()
|
||||
|
||||
@@ -188,7 +188,7 @@ Rights Reserved.
|
||||
<command id="cmd_forwardInline" oncommand="goDoCommand('cmd_forwardInline')"/>
|
||||
<command id="cmd_forwardAttachment" oncommand="goDoCommand('cmd_forwardAttachment')"/>
|
||||
<command id="cmd_editAsNew" oncommand="goDoCommand('cmd_editAsNew')"/>
|
||||
|
||||
<command id="cmd_canHaveFilter" oncommand="goDoCommand('cmd_canHaveFilter')"/>
|
||||
<command id="cmd_killThread" oncommand="goDoCommand('cmd_killThread')"/>
|
||||
<command id="cmd_watchThread" oncommand="goDoCommand('cmd_watchThread')"/>
|
||||
|
||||
@@ -900,7 +900,7 @@ Rights Reserved.
|
||||
<menuseparator/>
|
||||
<menuitem label="&filtersCmd.label;"
|
||||
accesskey="&filtersCmd.accesskey;"
|
||||
oncommand="MsgFilters();"/>
|
||||
oncommand="MsgFilters(null);"/>
|
||||
<menuitem id="menu_properties" label="&folderPropsCmd.label;"
|
||||
accesskey="&folderPropsCmd.accesskey;"
|
||||
observes="cmd_properties"/>
|
||||
@@ -1064,6 +1064,10 @@ Rights Reserved.
|
||||
key="key_editAsNew"
|
||||
observes="cmd_editAsNew"/>
|
||||
<menuseparator/>
|
||||
<menuitem id="createFilter" label="&createFilter.label;"
|
||||
accesskey="&createFilter.accesskey;"
|
||||
observes="cmd_canHaveFilter"/>
|
||||
<menuseparator/>
|
||||
<menu label="&moveMsgMenu.label;" accesskey="&moveMsgMenu.accesskey;" id="moveMenu" datasources="rdf:null"
|
||||
sortResource="http://home.netscape.com/NC-rdf#FolderTreeName"
|
||||
sortDirection="ascending">
|
||||
|
||||
@@ -420,6 +420,7 @@ var MessageWindowController =
|
||||
case "cmd_forwardInline":
|
||||
case "cmd_forwardAttachment":
|
||||
case "cmd_editAsNew":
|
||||
case "cmd_canHaveFilter":
|
||||
case "cmd_delete":
|
||||
case "cmd_undo":
|
||||
case "cmd_redo":
|
||||
@@ -499,6 +500,11 @@ var MessageWindowController =
|
||||
case "cmd_forwardInline":
|
||||
case "cmd_forwardAttachment":
|
||||
case "cmd_editAsNew":
|
||||
case "cmd_canHaveFilter":
|
||||
var loadedFolder = GetLoadedMsgFolder();
|
||||
if (!(loadedFolder && loadedFolder.server.canHaveFilters))
|
||||
return false;
|
||||
|
||||
case "button_delete":
|
||||
case "cmd_shiftDelete":
|
||||
case "cmd_print":
|
||||
@@ -600,6 +606,9 @@ var MessageWindowController =
|
||||
case "cmd_editAsNew":
|
||||
MsgEditMessageAsNew();
|
||||
break;
|
||||
case "cmd_canHaveFilter":
|
||||
MsgCreateFilter();
|
||||
break;
|
||||
case "cmd_delete":
|
||||
MsgDeleteMessageFromMessageWindow(false, false);
|
||||
break;
|
||||
|
||||
@@ -106,6 +106,10 @@ Rights Reserved.
|
||||
<menuitem label="&CopyEmailAddress.label;"
|
||||
accesskey="&CopyEmailAddress.accesskey;"
|
||||
oncommand="CopyEmailAddress(document.popupNode)"/>
|
||||
<menuitem label="&CreateFilter.label;"
|
||||
accesskey="&CreateFilter.accesskey;"
|
||||
oncommand="CreateFilter(document.popupNode)"
|
||||
observes="cmd_canHaveFilter"/>
|
||||
</popup>
|
||||
|
||||
<popup id="allHeadersPopup" onpopupshowing="return fillAllHeadersPopup(document.popupNode);" popupanchor="bottomleft">
|
||||
|
||||
@@ -130,6 +130,10 @@ Rights Reserved.
|
||||
<menuitem label="&CopyEmailAddress.label;"
|
||||
accesskey="&CopyEmailAddress.accesskey;"
|
||||
oncommand="CopyEmailAddress(document.popupNode)"/>
|
||||
<menuitem label="&CreateFilter.label;"
|
||||
accesskey="&CreateFilter.accesskey;"
|
||||
oncommand="CreateFilter(document.popupNode)"
|
||||
observes="cmd_canHaveFilter"/>
|
||||
</popup>
|
||||
|
||||
<popup id="allHeadersPopup" onpopupshowing="return fillAllHeadersPopup(document.popupNode);" popupanchor="bottomleft">
|
||||
|
||||
@@ -236,7 +236,7 @@ function SearchMessages()
|
||||
// Open filters window
|
||||
function CreateMsgFilters()
|
||||
{
|
||||
window.parent.MsgFilters();
|
||||
window.parent.MsgFilters(null);
|
||||
}
|
||||
|
||||
// Open Subscribe dialog
|
||||
|
||||
@@ -712,6 +712,20 @@ function CopyEmailAddress(emailAddressNode)
|
||||
}
|
||||
}
|
||||
|
||||
// CreateFilter opens the Message Filters and Filter Rules dialogs.
|
||||
//The Filter Rules dialog has focus. The window is prefilled with filtername <email address>
|
||||
//Sender condition is selected and the value is prefilled <email address>
|
||||
function CreateFilter(emailAddressNode)
|
||||
{
|
||||
if (emailAddressNode)
|
||||
{
|
||||
var emailAddress = emailAddressNode.getAttribute("emailAddress");
|
||||
if (emailAddress){
|
||||
top.MsgFilters(emailAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// createnewAttachmentInfo --> constructor method for creating new attachment object which goes into the
|
||||
// data attachment array.
|
||||
function createNewAttachmentInfo(contentType, url, displayName, uri, notDownloaded)
|
||||
|
||||
@@ -341,6 +341,8 @@ Rights Reserved.
|
||||
<!ENTITY editMsgAsNewCmd.label "Edit Message As New">
|
||||
<!ENTITY editMsgAsNewCmd.accesskey "E">
|
||||
<!ENTITY editMsgAsNewCmd.key "e">
|
||||
<!ENTITY createFilter.label "Create Filter...">
|
||||
<!ENTITY createFilter.accesskey "a">
|
||||
<!ENTITY moveMsgMenu.label "Move Message">
|
||||
<!ENTITY moveMsgMenu.accesskey "M">
|
||||
<!ENTITY copyMessageLocation.label "Copy Message Location">
|
||||
@@ -495,6 +497,10 @@ Rights Reserved.
|
||||
<!ENTITY SendMailTo.accesskey "s">
|
||||
<!ENTITY CopyEmailAddress.label "Copy Email Address">
|
||||
<!ENTITY CopyEmailAddress.accesskey "C">
|
||||
<!ENTITY CreateFilter.label "Create Filter...">
|
||||
<!ENTITY CreateFilter.accesskey "F">
|
||||
<!ENTITY BlockAddress.label "Block Address">
|
||||
<!ENTITY BlockAddress.accesskey "A">
|
||||
|
||||
<!-- Print Engine -->
|
||||
<!ENTITY printEngine.title "Printing...">
|
||||
|
||||
@@ -174,6 +174,8 @@ nocachedbodytitle=<TITLE>Go Online to View This Message</TITLE>\n\
|
||||
|
||||
confirmUnsubscribeTitle=Confirm Unsubscribe
|
||||
confirmUnsubscribeText=Are you sure you want to unsubscribe from %S?
|
||||
cannotHaveTwoFilterRulesDialogs=Filter Rules Dialog
|
||||
cannotHaveTwoFilterRulesText=The filter cannot be created because the Filter Rules dialog is already in use. Please close the dialog and try again.
|
||||
|
||||
# msgHdrViewOverlay.js
|
||||
openLabel=Open
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
|
||||
// the actual filter that we're editing
|
||||
var gFilter;
|
||||
|
||||
// cache the key elements we need
|
||||
var gFilterList;
|
||||
var gFilterNameElement;
|
||||
@@ -49,10 +48,14 @@ var gActionValueDeck;
|
||||
var gActionPriority;
|
||||
var gActionLabel;
|
||||
var gFilterBundle;
|
||||
|
||||
var gPreFillName;
|
||||
var nsMsgSearchScope = Components.interfaces.nsMsgSearchScope;
|
||||
|
||||
var nsMsgFilterAction = Components.interfaces.nsMsgFilterAction;
|
||||
|
||||
/* the okCallback is used for sending a callback to the Filter Dialog to close incase the user cancels from pre-fill.*/
|
||||
var okCallback=null;
|
||||
|
||||
var gFilterEditorMsgWindow=null;
|
||||
|
||||
function filterEditorOnLoad()
|
||||
@@ -63,16 +66,45 @@ function filterEditorOnLoad()
|
||||
gFilterBundle = document.getElementById("bundle_filter");
|
||||
if ("arguments" in window && window.arguments[0]) {
|
||||
var args = window.arguments[0];
|
||||
if("okCallback" in args ) {
|
||||
top.okCallback = window.arguments[0].okCallback;
|
||||
}
|
||||
|
||||
if ("filter" in args) {
|
||||
gFilter = window.arguments[0].filter;
|
||||
// editing a filter
|
||||
gFilter = window.arguments[0].filter;
|
||||
initializeDialog(gFilter);
|
||||
}
|
||||
else {
|
||||
gFilterList = args.filterList;
|
||||
if (gFilterList)
|
||||
setSearchScope(getScopeFromFilterList(gFilterList));
|
||||
|
||||
// if doing prefill filter create a new filter and populate it.
|
||||
if ("filterName" in args) {
|
||||
gPreFillName = args.filterName;
|
||||
gFilter = gFilterList.createFilter(gPreFillName);
|
||||
var term = gFilter.createTerm();
|
||||
|
||||
term.attrib = Components.interfaces.nsMsgSearchAttrib.Sender;
|
||||
term.op = Components.interfaces.nsMsgSearchOp.Is;
|
||||
|
||||
var termValue = term.value;
|
||||
termValue.attrib = term.attrib;
|
||||
termValue.str = gPreFillName;
|
||||
|
||||
term.value = termValue;
|
||||
|
||||
gFilter.appendTerm(term);
|
||||
gFilter.action = nsMsgFilterAction.MoveToFolder;
|
||||
|
||||
initializeDialog(gFilter);
|
||||
} else {
|
||||
gFilterList = args.filterList;
|
||||
if (gFilterList)
|
||||
setSearchScope(getScopeFromFilterList(gFilterList));
|
||||
}
|
||||
else{
|
||||
// fake the first more button press
|
||||
onMore(null);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if (!gFilter)
|
||||
@@ -90,7 +122,7 @@ function filterEditorOnLoad()
|
||||
gFilterNameElement.value = name;
|
||||
}
|
||||
gFilterNameElement.focus();
|
||||
doSetOKCancel(onOk, null);
|
||||
doSetOKCancel(onOk, onCancel);
|
||||
moveToAlertPosition();
|
||||
}
|
||||
|
||||
@@ -127,6 +159,13 @@ function onOk()
|
||||
window.close();
|
||||
}
|
||||
|
||||
function onCancel()
|
||||
{
|
||||
if (top.okCallback)
|
||||
top.okCallback();
|
||||
window.close();
|
||||
}
|
||||
|
||||
function duplicateFilterNameExists(filterName)
|
||||
{
|
||||
var args = window.arguments[0];
|
||||
@@ -261,7 +300,15 @@ function saveFilter() {
|
||||
gFilter.enabled=true;
|
||||
} else {
|
||||
gFilter.filterName = gFilterNameElement.value;
|
||||
isNewFilter = false;
|
||||
|
||||
//Prefilter is treated as a new filter.
|
||||
if (gPreFillName) {
|
||||
isNewFilter = true;
|
||||
gFilter.enabled=true;
|
||||
}
|
||||
else {
|
||||
isNewFilter = false;
|
||||
}
|
||||
}
|
||||
|
||||
gFilter.action = action;
|
||||
|
||||
@@ -40,7 +40,8 @@ Contributor(s):
|
||||
windowtype="mailnews:filtereditor"
|
||||
width="510" height="360"
|
||||
persist="width height screenX screenY"
|
||||
onload="filterEditorOnLoad();">
|
||||
onload="filterEditorOnLoad();"
|
||||
onclose="onCancel();">
|
||||
|
||||
<dummy class="usesMailWidgets"/>
|
||||
<stringbundleset id="stringbundleset">
|
||||
|
||||
@@ -29,7 +29,7 @@ const nsMsgFilterMotion = Components.interfaces.nsMsgFilterMotion;
|
||||
|
||||
var gFilterBundle;
|
||||
var gPromptService;
|
||||
|
||||
var gFilterListDialogAlreadyOpen = false;
|
||||
function onLoad()
|
||||
{
|
||||
rdf = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
@@ -44,7 +44,7 @@ function onLoad()
|
||||
reorderUpButton = document.getElementById("reorderUpButton");
|
||||
reorderDownButton = document.getElementById("reorderDownButton");
|
||||
|
||||
doSetOKCancel(onOk, null);
|
||||
doSetOKCancel(onOk, onCancel);
|
||||
|
||||
updateButtons();
|
||||
|
||||
@@ -62,14 +62,30 @@ function onLoad()
|
||||
}
|
||||
|
||||
moveToAlertPosition();
|
||||
|
||||
if (("arguments" in window) && window.arguments[0] && ("prefillValue" in window.arguments[0]))
|
||||
onNewFilter(window.arguments[0].prefillValue);
|
||||
}
|
||||
|
||||
function openPrefillOnExistingFilterList(emailAddress)
|
||||
{
|
||||
gFilterListDialogAlreadyOpen = true;
|
||||
onNewFilter(emailAddress);
|
||||
}
|
||||
function onCancel()
|
||||
{
|
||||
if(gFilterListDialogAlreadyOpen)
|
||||
gFilterListDialogAlreadyOpen = false;
|
||||
else
|
||||
window.close();
|
||||
}
|
||||
|
||||
function onOk()
|
||||
{
|
||||
// make sure to save the filter to disk
|
||||
var filterList = currentFilterList();
|
||||
if (filterList) filterList.saveToDefaultFile();
|
||||
window.close();
|
||||
// make sure to save the filter to disk
|
||||
var filterList = currentFilterList();
|
||||
if (filterList) filterList.saveToDefaultFile();
|
||||
window.close();
|
||||
}
|
||||
|
||||
function onServerClick(event)
|
||||
@@ -157,11 +173,15 @@ function onEditFilter() {
|
||||
refreshFilterList();
|
||||
}
|
||||
|
||||
function onNewFilter()
|
||||
function onNewFilter(emailAddress)
|
||||
{
|
||||
var curFilterList = currentFilterList();
|
||||
var args = {filterList: curFilterList};
|
||||
|
||||
var curFilterList = currentFilterList();
|
||||
var args = {filterList: curFilterList};
|
||||
if(emailAddress) {
|
||||
args.okCallback = onCancel;
|
||||
args.filterName = emailAddress;
|
||||
}
|
||||
|
||||
window.openDialog("chrome://messenger/content/FilterEditor.xul", "FilterEditor", "chrome,modal,titlebar,resizable,centerscreen", args);
|
||||
|
||||
if ("refresh" in args && args.refresh)
|
||||
|
||||
@@ -122,7 +122,7 @@ Contributor(s): H
|
||||
</vbox>
|
||||
|
||||
<vbox>
|
||||
<button id="newButton" label="&newButton.label;" oncommand="onNewFilter();"/>
|
||||
<button id="newButton" label="&newButton.label;" oncommand="onNewFilter(null);"/>
|
||||
<button id="editButton" label="&editButton.label;" oncommand="onEditFilter();"/>
|
||||
<button id="deleteButton" label="&deleteButton.label;" oncommand="onDeleteFilter();"/>
|
||||
<spacer flex="1"/>
|
||||
|
||||
Reference in New Issue
Block a user