return [NSString stringWithFormat:@"clickedUid(this, '%@'); return false",
[self messageUidString]];
}
+
+// the following are unused?
- (NSString *)dblClickedMsgJS {
return [NSString stringWithFormat:@"doubleClickedUid(this, '%@')",
[self messageUidString]];
}
+
+// the following are unused?
- (NSString *)highlightRowJS {
return [NSString stringWithFormat:@"highlightUid(this, '%@')",
[self messageUidString]];
[self messageUidString]];
}
+- (NSString *)markUnreadJS {
+ return [NSString stringWithFormat:
+ @"mailListMarkMessage(this, 'markMessageUnread', "
+ @"'%@', false)",
+ [self messageUidString]];
+}
+- (NSString *)markReadJS {
+ return [NSString stringWithFormat:
+ @"mailListMarkMessage(this, 'markMessageRead', "
+ @"'%@', true)",
+ [self messageUidString]];
+}
+
- (NSString *)jsCode {
static NSString *script = \
@"var rowSelectionCount = 0;\n"
return self;
}
+- (BOOL)isJavaScriptRequest {
+ return [[[[self context] request] formValueForKey:@"jsonly"] boolValue];
+}
+- (id)javaScriptOK {
+ WOResponse *r;
+
+ r = [[self context] response];
+ [r setStatus:200 /* OK */];
+ return r;
+}
+
- (id)markMessageUnreadAction {
NSException *error;
if ((error = [[self lookupActiveMessage] removeFlags:@"seen"]) != nil)
// TODO: improve error handling
return error;
+
+ if ([self isJavaScriptRequest])
+ return [self javaScriptOK];
return [self redirectToLocation:@"view"];
}
// TODO: improve error handling
return error;
+ if ([self isJavaScriptRequest])
+ return [self javaScriptOK];
+
return [self redirectToLocation:@"view"];
}
return false;
}
-function highlightUid(sender, msguid) {
- // var row = document.getElementById(msguid);
- // row.className="mailer_readmailsubject_high";
- return true;
-}
-function lowlightUid(sender, msguid) {
- // var row = document.getElementById(msguid);
- // row.className="mailer_readmailsubject";
- return true;
-}
-
-function singleClickedTableRow(clickEvent, sender) {
- var rowid = sender.id;
- var field;
-
- field = document.forms['pageform'].elements[rowid];
- if (field.value == "1") {
- field.value = "0";
- sender.className = "tableview";
- }
- else {
- field.value = "1";
- sender.className = "tableview_selected";
- }
-}
-function doubleClickedTableRow(clickEvent, sender) {
- var rowid = sender.id;
- resetSelection(window);
-}
-
function toggleMailSelect(sender) {
var row;
row = document.getElementById(sender.name);
/* generic stuff */
-function getHTTPClient() {
+function createHTTPClient() {
// http://developer.apple.com/internet/webcontent/xmlhttpreq.html
if (typeof XMLHttpRequest != "undefined")
return new XMLHttpRequest();
/* mail list DOM changes */
-function markMailReadInWindow(win, msguid) {
+function markMailInWindow(win, msguid, markread) {
var msgDiv;
msgDiv = win.document.getElementById("div_" + msguid);
if (msgDiv) {
- msgDiv.className = "mailer_readmailsubject";
+ if (markread) {
+ msgDiv.className = "mailer_readmailsubject";
- msgDiv = win.document.getElementById("unreaddiv_" + msguid);
- if (msgDiv) msgDiv.style.display = "none";
- msgDiv = win.document.getElementById("readdiv_" + msguid);
- if (msgDiv) msgDiv.style.display = "block";
+ msgDiv = win.document.getElementById("unreaddiv_" + msguid);
+ if (msgDiv) msgDiv.style.display = "none";
+ msgDiv = win.document.getElementById("readdiv_" + msguid);
+ if (msgDiv) msgDiv.style.display = "block";
+ }
+ else {
+ msgDiv.className = "mailer_unreadmailsubject";
+ msgDiv = win.document.getElementById("readdiv_" + msguid);
+ if (msgDiv) msgDiv.style.display = "none";
+ msgDiv = win.document.getElementById("unreaddiv_" + msguid);
+ if (msgDiv) msgDiv.style.display = "block";
+ }
return true;
}
else
return false;
}
+function markMailReadInWindow(win, msguid) {
+ return markMailInWindow(win, msguid, true);
+}
/* main window */
for (var i = 0; i < rows.length; i++)
win = openMessageWindow(sender, rows[i], rows[i] + "/" + action);
}
+
+function mailListMarkMessage(sender, action, msguid, markread) {
+ var url;
+ var http = createHTTPClient();
+
+ url = action + "?uid=" + msguid;
+
+ if (http) {
+ // TODO: add parameter to signal that we are only interested in OK
+ http.open("GET", url + "&jsonly=1", false);
+ http.send(null);
+ if (http.status != 200) {
+ // TODO: refresh page?
+ alert("Message Mark Failed: " + http.statusText);
+ window.opener.location.reload();
+ }
+ else {
+ markMailInWindow(window, msguid, markread);
+ }
+ }
+ else {
+ window.opener.location.href = url;
+ }
+}