From c8e5a4a6b79399113189c40c138dc101e9e4b132 Mon Sep 17 00:00:00 2001 From: low012 Date: Wed, 8 Aug 2007 18:23:45 +0000 Subject: [PATCH] *) fixed bug described by Huppi in http://forum.yacy-websuche.de/viewtopic.php?t=239 *) added a preview function to message system *) removed some old comments, I hope that's OK git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@4036 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- htroot/MessageSend_p.html | 66 +++++++++++++++++- htroot/MessageSend_p.java | 97 ++++++++++++--------------- htroot/Messages_p.java | 21 +++--- source/de/anomic/yacy/yacyClient.java | 6 +- 4 files changed, 118 insertions(+), 72 deletions(-) diff --git a/htroot/MessageSend_p.html b/htroot/MessageSend_p.html index 795181d19..1abab826a 100644 --- a/htroot/MessageSend_p.html +++ b/htroot/MessageSend_p.html @@ -6,9 +6,9 @@ #%env/templates/header.template%# -

Send message

#(mode)# +

Send message

#(permission)#

You cannot send a message to #[peerName]#.
@@ -21,7 +21,7 @@ You are allowed to send me a message ≤ #[messagesize]# kb and an attachment ≤ #[attachmentsize]#.

- +
Your Message @@ -46,6 +46,67 @@ + +
+
+ :: + +

+ You cannot send a message to #[peerName]#.
+ The peer is alive but cannot respond. Sorry. +

+ #(/permission)# + :: + +

Preview message

+ #(permission)# + +

You cannot send a message to #[peerName]#.
+ The peer does not respond. It was now removed from the peer-list. +

+ :: + +

The peer #[peerName]# is alive and responded:

+

#[response]# + You are allowed to send me a message ≤ #[messagesize]# kb and an + attachment ≤ #[attachmentsize]#. +

+ +

The message has not been sent yet!

+ +
+
Subject:
#[subject]#
+
Message:
+
+ #[previewmessage]# +
+
+ +
+
+ Your Message +
+
+ +
+
+ +
+
+ +
+
+ +

+ You can use Wiki Code here. +

+
+
+ + + + +
:: @@ -57,6 +118,7 @@ #(/permission)# :: +

Send message

#(status)# diff --git a/htroot/MessageSend_p.java b/htroot/MessageSend_p.java index 9196b4dc7..75e65cac2 100644 --- a/htroot/MessageSend_p.java +++ b/htroot/MessageSend_p.java @@ -67,20 +67,22 @@ public class MessageSend_p { public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) { serverObjects prop = new serverObjects(); - //String body = ""; if ((post == null) || (post.get("hash","").length() == 0)) { - prop.put("mode",2); - // prop.put("body", "

You cannot call this page directly. Instead, use a link on the Network page.

"); + prop.put("mode",2); return prop; } String hash = post.get("hash", ""); String subject = post.get("subject", ""); String message = post.get("message", ""); - - if (message.length() == 0) { - prop.put("mode", 0); - + + if ((message.length() == 0) || (post.containsKey("preview"))) { + if (post.containsKey("preview")) { + prop.put("mode", 1); + } else { + prop.put("mode", 0); + } + // open an editor page for the message // first ask if the other peer is online, and also what kind of document it accepts HashMap result = yacyClient.permissionMessage(hash); @@ -96,56 +98,48 @@ public class MessageSend_p { else peerName = targetPeer.get(yacySeed.NAME,"nameless"); } - - prop.put("mode_permission_peerName", peerName); + + prop.put("mode_permission_peerName", peerName); String response = (result == null) ? "-1" : (String) result.get("response"); if ((response == null) || (response.equals("-1"))) { - prop.put("mode_permission",0); - // we don't have permission or other peer does not exist - //body += "

You cannot send a message to '" + peerName + "'. The peer does not respond. It was now removed from the peer-list.

"; + prop.put("mode_permission",0); + if (targetPeer != null) { yacyCore.peerActions.peerDeparture(targetPeer); } } else { prop.put("mode_permission",1); - - // write input form - try { - int messagesize = Integer.parseInt((String) result.get("messagesize")); - int attachmentsize = Integer.parseInt((String) result.get("attachmentsize")); - - prop.put("mode_permission_response", response); - prop.put("mode_permission_messagesize", messagesize); - prop.put("mode_permission_attachmentsize", attachmentsize); - prop.put("mode_permission_subject", subject); - prop.put("mode_permission_message", message); - prop.put("mode_permission_hash", hash); - -// body += "

The peer '" + peerName + "' is alive and responded:
"; -// body += "'" + response + " You are allowed to send me a message ≤ " + messagesize + " kb and an attachment ≤ " + attachmentsize + ".'

"; -// body += "


"; -// body += "

Your Message

"; -// body += "

Subject:

"; -// body += "

Text:

"; -// body += ""; -// body += ""; -// body += ""; -// body += "
"; - } catch (NumberFormatException e) { - // "unresolved pattern", the remote peer is alive but had an exception - //body += "

The peer '" + peerName + "' is alive but cannot respond. Sorry..

"; - prop.put("mode_permission",2); - } + + // write input form + try { + int messagesize = Integer.parseInt((String) result.get("messagesize")); + int attachmentsize = Integer.parseInt((String) result.get("attachmentsize")); + + prop.put("mode_permission_response", response); + prop.put("mode_permission_messagesize", messagesize); + prop.put("mode_permission_attachmentsize", attachmentsize); + prop.put("mode_permission_subject", subject); + prop.put("mode_permission_message", message); + prop.put("mode_permission_hash", hash); + if (post.containsKey("preview")) { + prop.putWiki("mode_permission_previewmessage", message); + + } + + } catch (NumberFormatException e) { + // "unresolved pattern", the remote peer is alive but had an exception + prop.put("mode_permission",2); + } } } else { - prop.put("mode", 1); + prop.put("mode", 2); // send written message to peer try { prop.put("mode_status", 0); int messagesize = Integer.parseInt(post.get("messagesize", "0")); //int attachmentsize = Integer.parseInt(post.get("attachmentsize", "0")); - + if (messagesize < 1000) messagesize = 1000; // debug if (subject.length() > 100) subject = subject.substring(0, 100); if (message.length() > messagesize) message = message.substring(0, messagesize); @@ -156,23 +150,18 @@ public class MessageSend_p { mb = message.getBytes(); } HashMap result = yacyClient.postMessage(hash, subject, mb); - - prop.put("mode_status_response", result.get("response")); -// body += "

Your message has been sent. The target peer responded:

"; -// body += "

" + result.get("response") + "

"; + + //message has been sent + prop.put("mode_status_response", result.get("response")); + } catch (NumberFormatException e) { - prop.put("mode_status", 1); + prop.put("mode_status", 1); + // "unresolved pattern", the remote peer is alive but had an exception - prop.put("mode_status_message", message); -// body += "

The target peer is alive but did not receive your message. Sorry..

"; -// body += "

Here is a copy of your message, so you can copy it to save it for further attempts:
"; -// body += message; -// body += "

"; + prop.put("mode_status_message", message); } } - // return rewrite properties - //prop.put("body", body); return prop; } diff --git a/htroot/Messages_p.java b/htroot/Messages_p.java index b482ec44f..6483a381c 100644 --- a/htroot/Messages_p.java +++ b/htroot/Messages_p.java @@ -74,7 +74,7 @@ public class Messages_p { public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) { plasmaSwitchboard switchboard = (plasmaSwitchboard) env; serverObjects prop = new serverObjects(); - + // set peer address / name final String peerAddress = yacyCore.seedDB.mySeed.getPublicAddress(); final String peerName = yacyCore.seedDB.mySeed.getName(); @@ -106,10 +106,9 @@ public class Messages_p { } else { prop.put("peersKnown", 0); } - + prop.put("mode", 0); prop.put("mode_error", 0); - //wikiCode wikiTransformer = new wikiCode(switchboard); String action = ((post == null) ? "list" : post.get("action", "list")); messageBoard.entry message; @@ -143,28 +142,26 @@ public class Messages_p { prop.put("mode_messages_"+count+"_date", dateString(message.date())); prop.put("mode_messages_"+count+"_from", message.author()); prop.put("mode_messages_"+count+"_to", message.recipient()); - //prop.put("mode_messages_"+count+"_subject", wikiTransformer.transform(message.subject())); - //TODO: not needed, when all templates will be cleaned via replaceHTML prop.put("mode_messages_"+count+"_subject", message.subject()); prop.put("mode_messages_"+count+"_category", message.category()); prop.put("mode_messages_"+count+"_key", key); prop.put("mode_messages_"+count+"_hash", message.authorHash()); - + if (((String)header.get(httpHeader.CONNECTION_PROP_PATH)).endsWith(".rss")) { // set the peer address prop.put("mode_messages_"+count+"_peerAddress", peerAddress); - + // set the rfc822 date prop.put("mode_messages_"+count+"_rfc822Date",httpc.dateString(message.date())); - + // also write out the message body (needed for the RSS feed) try { prop.put("mode_messages_"+count+"_body",new String(message.message(), "UTF-8")); } catch (UnsupportedEncodingException e) { // can not happen, because UTF-8 must be supported by every JVM - } + } } - + dark = !dark; count++; } @@ -180,12 +177,10 @@ public class Messages_p { String key = post.get("object", ""); message = switchboard.messageDB.read(key); if (message == null) throw new NullPointerException("Message with ID " + key + " does not exist"); - + prop.put("mode_from", message.author()); prop.put("mode_to", message.recipient()); prop.put("mode_date", dateString(message.date())); - //prop.put("mode_messages_subject", wikiTransformer.transform(message.subject())); - //TODO: not needed, when all templates will be cleaned via replaceHTML prop.put("mode_subject", message.subject()); String theMessage = null; try { diff --git a/source/de/anomic/yacy/yacyClient.java b/source/de/anomic/yacy/yacyClient.java index d520ef903..5b6e2a877 100644 --- a/source/de/anomic/yacy/yacyClient.java +++ b/source/de/anomic/yacy/yacyClient.java @@ -609,11 +609,11 @@ public final class yacyClient { post.putASIS("myseed", yacyCore.seedDB.mySeed.genSeedStr(salt)); post.putASIS("subject", subject); try { - post.put("message", new String(message, "UTF-8")); + post.putASIS("message", new String(message, "UTF-8")); } catch (UnsupportedEncodingException e) { - post.put("message", new String(message)); + post.putASIS("message", new String(message)); } - + // send request try { final HashMap result = nxTools.table(