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]#.
-
+
+ ::
+
+
+ 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]#
+
+
+
+
::
@@ -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.
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 += "
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(