aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nbproject/project.properties1
-rw-r--r--src/java/Global.properties4
-rw-r--r--src/java/Global_ru.properties4
-rw-r--r--src/java/com/juick/http/www/Blogs.java36
-rw-r--r--src/java/com/juick/http/www/Login.java4
-rw-r--r--src/java/com/juick/http/www/Main.java2
-rw-r--r--src/java/com/juick/http/www/NewMessage.java12
-rw-r--r--src/java/com/juick/http/www/PageTemplates.java13
-rw-r--r--src/java/com/juick/http/www/UserThread.java38
-rw-r--r--web/scripts3.js4
-rw-r--r--web/style3.css19
11 files changed, 104 insertions, 33 deletions
diff --git a/nbproject/project.properties b/nbproject/project.properties
index 1ae4ca76..3855d649 100644
--- a/nbproject/project.properties
+++ b/nbproject/project.properties
@@ -1,5 +1,6 @@
annotation.processing.enabled=true
annotation.processing.enabled.in.editor=true
+annotation.processing.processors.list=
annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
build.classes.dir=${build.web.dir}/WEB-INF/classes
diff --git a/src/java/Global.properties b/src/java/Global.properties
index ebede501..9f618c91 100644
--- a/src/java/Global.properties
+++ b/src/java/Global.properties
@@ -17,3 +17,7 @@ Newer=Newer
(replies)\ by=by
Comment=Comment
Sponsored\ by=Sponsored by
+Block\ user=Block user
+Send\ private\ message=Send private message
+Recommend\ message=Recommend message
+in\ reply\ to=in reply to
diff --git a/src/java/Global_ru.properties b/src/java/Global_ru.properties
index 34d7418a..f87f4c75 100644
--- a/src/java/Global_ru.properties
+++ b/src/java/Global_ru.properties
@@ -17,3 +17,7 @@ Newer=\u041d\u043e\u0432\u044b\u0435
(replies)\ by=\u043e\u0442
Comment=\u041e\u0442\u0432\u0435\u0442\u0438\u0442\u044c
Sponsored\ by=\u041f\u0440\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435
+Block\ user=\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
+Send\ private\ message=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435
+Recommend\ message=\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435
+in\ reply\ to=\u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430
diff --git a/src/java/com/juick/http/www/Blogs.java b/src/java/com/juick/http/www/Blogs.java
index 1e212b7a..a1cfdeb0 100644
--- a/src/java/com/juick/http/www/Blogs.java
+++ b/src/java/com/juick/http/www/Blogs.java
@@ -83,17 +83,37 @@ public class Blogs {
mids = MessagesQueries.getAll(sql, paramBefore);
}
} else if (paramShow.equals("my")) {
- title = rb.getString("My feed");
- mids = MessagesQueries.getMyFeed(sql, visitor.UID, paramBefore);
+ if (visitor != null) {
+ title = rb.getString("My feed");
+ mids = MessagesQueries.getMyFeed(sql, visitor.UID, paramBefore);
+ } else {
+ response.sendError(404);
+ return;
+ }
} else if (paramShow.equals("private")) {
- title = rb.getString("Private");
- mids = MessagesQueries.getPrivate(sql, visitor.UID, paramBefore);
+ if (visitor != null) {
+ title = rb.getString("Private");
+ mids = MessagesQueries.getPrivate(sql, visitor.UID, paramBefore);
+ } else {
+ response.sendError(404);
+ return;
+ }
} else if (paramShow.equals("incoming")) {
- title = rb.getString("Incoming");
- mids = MessagesQueries.getIncoming(sql, visitor.UID, paramBefore);
+ if (visitor != null) {
+ title = rb.getString("Incoming");
+ mids = MessagesQueries.getIncoming(sql, visitor.UID, paramBefore);
+ } else {
+ response.sendError(404);
+ return;
+ }
} else if (paramShow.equals("recommended")) {
- title = rb.getString("Recommended");
- mids = MessagesQueries.getRecommended(sql, visitor.UID, paramBefore);
+ if (visitor != null) {
+ title = rb.getString("Recommended");
+ mids = MessagesQueries.getRecommended(sql, visitor.UID, paramBefore);
+ } else {
+ response.sendError(404);
+ return;
+ }
} else if (paramShow.equals("top")) {
title = rb.getString("Popular");
mids = MessagesQueries.getPopular(sql, paramBefore);
diff --git a/src/java/com/juick/http/www/Login.java b/src/java/com/juick/http/www/Login.java
index 1baf6e43..0006f9d0 100644
--- a/src/java/com/juick/http/www/Login.java
+++ b/src/java/com/juick/http/www/Login.java
@@ -73,7 +73,7 @@ public class Login {
if (com.juick.server.UserQueries.getUIDbyHash(sql, hash) > 0) {
Cookie c = new Cookie("hash", hash);
c.setDomain(".juick.com");
- c.setMaxAge(0);
+ c.setMaxAge(365 * 24 * 60 * 60);
response.addCookie(c);
response.sendRedirect("/");
@@ -95,7 +95,7 @@ public class Login {
String hash = com.juick.server.UserQueries.getHashByUID(sql, uid);
Cookie c = new Cookie("hash", hash);
c.setDomain(".juick.com");
- c.setMaxAge(0);
+ c.setMaxAge(365 * 24 * 60 * 60);
response.addCookie(c);
String referer = request.getHeader("Referer");
diff --git a/src/java/com/juick/http/www/Main.java b/src/java/com/juick/http/www/Main.java
index b7f95a4a..910a554f 100644
--- a/src/java/com/juick/http/www/Main.java
+++ b/src/java/com/juick/http/www/Main.java
@@ -149,7 +149,7 @@ public class Main extends HttpServlet implements XmppListener {
//TODO settings
} else if (uri.matches("^/\\d+$")) {
rootRedirects.doGetPostID(sql, request, response);
- } else if (uri.matches("^/[^/]$")) {
+ } else if (uri.matches("^/[^/]+$")) {
rootRedirects.doGetUsername(sql, request, response);
} else if (uri.matches("^/.+/.*")) {
String uriparts[] = uri.split("/");
diff --git a/src/java/com/juick/http/www/NewMessage.java b/src/java/com/juick/http/www/NewMessage.java
index 1beacf62..d35af8f3 100644
--- a/src/java/com/juick/http/www/NewMessage.java
+++ b/src/java/com/juick/http/www/NewMessage.java
@@ -54,10 +54,18 @@ public class NewMessage {
out.println("<div id=\"wrapper\"><div id=\"content\" class=\"pagetext\">");
out.println("<form action=\"/post\" method=\"post\" id=\"postmsg\" enctype=\"multipart/form-data\">");
out.println("<p style=\"text-align: left\"><b>" + rbnm.getString("Location") + ": <span id=\"location\"></span></b> <span id=\"locationclear\">&mdash; <a href=\"#\" onclick=\"clearLocation()\">" + rbnm.getString("Clear") + "</a></span></p>");
- out.println("<p style=\"text-align: left\"><b>" + rbnm.getString("Attachment") + ":</b> <span id=\"attachmentfile\"><input type=\"file\" name=\"attach\"$canmedia/> " + rbnm.getString("or") + " <a href=\"#\" onclick=\"webcamShow(); return false;\">" + rbnm.getString("from webcam") + "</a><br/>");
+ out.println("<p style=\"text-align: left\"><b>" + rbnm.getString("Attachment") + ":</b> <span id=\"attachmentfile\"><input type=\"file\" name=\"attach\"" + (com.juick.server.UserQueries.getCanMedia(sql, visitor.UID) ? "" : " disabled=\"disabled\"") + "/> " + rbnm.getString("or") + " <a href=\"#\" onclick=\"webcamShow(); return false;\">" + rbnm.getString("from webcam") + "</a><br/>");
out.println("<i>" + rbnm.getString("Photo_JPG") + "</i></span><span id=\"attachmentwebcam\">" + rbnm.getString("Webcam photo") + " &mdash; <a href=\"#\" onclick=\"clearAttachment(); return false;\">" + rbnm.getString("Clear") + "</a></span></p>");
out.println("<div id=\"webcamwrap\" style=\"width: 320px; margin: 0 auto\"><div id=\"webcam\"></div></div>");
- out.println("<p><textarea name=\"body\" rows=\"7\" cols=\"10\">" + "" + "</textarea><br/>");
+
+ String body = request.getParameter("body");
+ if (body != null && body.length() < 4096) {
+ body = Utils.encodeHTML(body);
+ } else {
+ body = "";
+ }
+ out.println("<p><textarea name=\"body\" class=\"newmessage\" rows=\"7\" cols=\"10\">" + body + "</textarea><br/>");
+
out.println("<input type=\"hidden\" name=\"place_id\"/><input type=\"hidden\" name=\"webcam\"/>" + "" + "<input type=\"submit\" class=\"subm\" value=\" " + rbnm.getString("Post") + " \"/></p>");
out.println("</form>");
out.println("<div id=\"geomap\"></div>");
diff --git a/src/java/com/juick/http/www/PageTemplates.java b/src/java/com/juick/http/www/PageTemplates.java
index 4997f778..b7b2f536 100644
--- a/src/java/com/juick/http/www/PageTemplates.java
+++ b/src/java/com/juick/http/www/PageTemplates.java
@@ -62,7 +62,7 @@ public class PageTemplates {
public static void pageNavigation(PrintWriter out, Locale loc, com.juick.User user) {
ResourceBundle rb = ResourceBundle.getBundle("Global", loc);
out.println("<div id=\"header\">");
- out.println("<div id=\"logo\"><a href=\"/?show=my\"><img src=\"http://static.juick.com/logo3.png\" width=\"120\" height=\"40\" alt=\"Juick\"/></a></div>");
+ out.println("<div id=\"logo\"><a href=\"" + (user != null ? "/?show=my" : "/") + "\"><img src=\"http://static.juick.com/logo3.png\" width=\"120\" height=\"40\" alt=\"Juick\"/></a></div>");
out.println(" <ul id=\"nav\">");
out.println(" <li><a href=\"/\">" + rb.getString("Blogs") + "</a></li>");
// out.println(" <li><a href=\"/chats\">" + rb.getString("Chats") + "</a></li>");
@@ -324,9 +324,12 @@ public class PageTemplates {
// lat
// lon
+ boolean cancomment = true;
+
tags = (tags != null) ? formatTags(tags) : "";
if (rs.getInt(5) == 1) {
tags += " *readonly";
+ cancomment = false;
}
switch (rs.getInt(6)) {
case 2:
@@ -361,7 +364,9 @@ public class PageTemplates {
out.println(" <div class=\"msg-avatar\"><a href=\"/" + uname + "/\"><img src=\"http://i.juick.com/a/" + uid + ".png\" alt=\"" + uname + "\"/></a></div>");
out.println(" <div class=\"msg-ts\"><a href=\"/" + uname + "/" + mid + "\">" + formatDate(rs.getInt(8), rs.getString(9), locale) + "</a><div class=\"msg-menu\"><a href=\"#\" onclick=\"$('#msg-menu-" + mid + "').toggle('blind'); return false\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a><ul id=\"msg-menu-" + mid + "\">");
- out.println(" <li><a href=\"#\" onclick=\"return false\">Under construction</a></li>");
+ out.println(" <li><a href=\"/post?body=%21%20%23" + mid + "\">" + rb.getString("Recommend message") + "</a></li>");
+ out.println(" <li><a href=\"/post?body=%40" + uname + "%20\">" + rb.getString("Send private message") + "</a></li>");
+ out.println(" <li><a href=\"/post?body=BL%20%40" + uname + "\">" + rb.getString("Block user") + "</a></li>");
out.println(" </ul></div></div>");
out.println(" <div class=\"msg-header\"><a href=\"/" + uname + "/\">@" + uname + "</a>:" + tags + "</div>");
out.println(" <div class=\"msg-txt\">" + txt + "</div>");
@@ -372,9 +377,9 @@ public class PageTemplates {
repliesby = "...";
}
out.println(" <div class=\"msg-comments\"><a href=\"/" + uname + "/" + mid + "\">" + formatReplies(rs.getInt(10), locale) + "</a> " + rb.getString("(replies) by") + " " + repliesby + "</div>");
- } else {
+ } else if (cancomment) {
out.println(" <form action=\"/post\" method=\"POST\" enctype=\"multipart/form-data\"><input type=\"hidden\" name=\"mid\" value=\"" + mid + "\"/>");
- out.println(" <div class=\"msg-comment\"><textarea name=\"body\" rows=\"1\" class=\"reply\" placeholder=\"Add a comment...\" onkeypress=\"postformListener(this.form,event)\"></textarea></div>");
+ out.println(" <div class=\"msg-comment\"><textarea name=\"body\" rows=\"1\" class=\"reply\" placeholder=\"Add a comment...\" onkeypress=\"postformListener(this.form,event)\"></textarea><input type=\"submit\" value=\"OK\"/></div>");
out.println(" </form>");
}
out.println(" </li>");
diff --git a/src/java/com/juick/http/www/UserThread.java b/src/java/com/juick/http/www/UserThread.java
index eb3adfad..406698bf 100644
--- a/src/java/com/juick/http/www/UserThread.java
+++ b/src/java/com/juick/http/www/UserThread.java
@@ -17,6 +17,7 @@
*/
package com.juick.http.www;
+import com.juick.server.MessagesQueries;
import com.juick.server.UserQueries;
import java.io.IOException;
import java.io.PrintWriter;
@@ -41,6 +42,11 @@ public class UserThread {
com.juick.User visitor = Utils.getVisitorUser(sql, request);
Locale locale = request.getLocale();
+ if (!MessagesQueries.canViewThread(sql, MID, visitor != null ? visitor.UID : 0)) {
+ response.sendError(403);
+ return;
+ }
+
boolean listview = false;
String paramView = request.getParameter("view");
if (paramView != null) {
@@ -65,6 +71,7 @@ public class UserThread {
PageTemplates.pageNavigation(out, locale, visitor);
PageTemplates.pageUserTitle(out, sql, locale, user, visitor);
+
out.println("<div id=\"wrapper\">");
out.println("<div id=\"content\" style=\"margin-left: 0; width: 100%\">");
@@ -105,9 +112,12 @@ public class UserThread {
// lat
// lon
+ boolean cancomment = true;
+
tags = (tags != null) ? PageTemplates.formatTags(tags) : "";
if (rs.getInt(5) == 1) {
tags += " *readonly";
+ cancomment = false;
}
switch (rs.getInt(6)) {
case 2:
@@ -139,14 +149,18 @@ public class UserThread {
out.println(" <div class=\"msg-avatar\"><a href=\"/" + uname + "/\"><img src=\"http://i.juick.com/a/" + uid + ".png\" alt=\"" + uname + "\"/></a></div>");
out.println(" <div class=\"msg-ts\"><a href=\"/" + uname + "/" + mid + "\">" + PageTemplates.formatDate(rs.getInt(8), rs.getString(9), locale) + "</a><div class=\"msg-menu\"><a href=\"#\" onclick=\"$('#msg-menu-" + mid + "').toggle('blind'); return false\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a><ul id=\"msg-menu-" + mid + "\">");
- out.println(" <li><a href=\"#\" onclick=\"return false\">Under construction</a></li>");
+ out.println(" <li><a href=\"/post?body=%21%20%23" + mid + "\">" + rb.getString("Recommend message") + "</a></li>");
+ out.println(" <li><a href=\"/post?body=%40" + uname + "%20\">" + rb.getString("Send private message") + "</a></li>");
+ out.println(" <li><a href=\"/post?body=BL%20%40" + uname + "\">" + rb.getString("Block user") + "</a></li>");
out.println(" </ul></div></div>");
out.println(" <div class=\"msg-header\"><a href=\"/" + uname + "/\">@" + uname + "</a>:" + tags + "</div>");
out.println(" <div class=\"msg-txt\">" + txt + "</div>");
- out.println(" <form action=\"/post\" method=\"POST\" enctype=\"multipart/form-data\"><input type=\"hidden\" name=\"mid\" value=\"" + mid + "\"/>");
- out.println(" <div class=\"msg-comment\"><textarea name=\"body\" rows=\"1\" class=\"reply\" placeholder=\"Add a comment...\" onkeypress=\"postformListener(this.form,event)\"></textarea></div>");
- out.println(" </form>");
+ if (cancomment) {
+ out.println(" <form action=\"/post\" method=\"POST\" enctype=\"multipart/form-data\"><input type=\"hidden\" name=\"mid\" value=\"" + mid + "\"/>");
+ out.println(" <div class=\"msg-comment\"><textarea name=\"body\" rows=\"1\" class=\"reply\" placeholder=\"Add a comment...\" onkeypress=\"postformListener(this.form,event)\"></textarea><input type=\"submit\" value=\"OK\"/></div>");
+ out.println(" </form>");
+ }
out.println(" </li>");
out.println("</ul>");
@@ -259,8 +273,9 @@ public class UserThread {
}
}
out.println(" <div class=\"msg-avatar\"><a href=\"/" + msg.User.UName + "/\"><img src=\"http://i.juick.com/a/" + msg.User.UID + ".png\" alt=\"" + msg.User.UName + "\"/></a></div>");
- out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.User.UName + "/" + msg.MID + "#" + msg.RID + "\">" + PageTemplates.formatDate(msg.MinutesAgo, msg.TimestampString, locale) + "</a><div class=\"msg-menu\"><a href=\"#\" onclick=\"$('#msg-menu-" + msg.MID + "-" + msg.RID + "').toggle('blind'); return false\"><img src=\"http://static.juick.com/message-menu-icon.png\"/></a><ul id=\"msg-menu-" + msg.MID + "-" + msg.RID + "\">");
- out.println(" <li><a href=\"#\" onclick=\"return false\">Under construction</a></li>");
+ out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.MID + "#" + msg.RID + "\">" + PageTemplates.formatDate(msg.MinutesAgo, msg.TimestampString, locale) + "</a><div class=\"msg-menu\"><a href=\"#\" onclick=\"$('#msg-menu-" + msg.MID + "-" + msg.RID + "').toggle('blind'); return false\"><img src=\"http://static.juick.com/message-menu-icon.png\"/></a><ul id=\"msg-menu-" + msg.MID + "-" + msg.RID + "\">");
+ out.println(" <li><a href=\"/post?body=%40" + msg.User.UName + "%20\">" + rb.getString("Send private message") + "</a></li>");
+ out.println(" <li><a href=\"/post?body=BL%20%40" + msg.User.UName + "\">" + rb.getString("Block user") + "</a></li>");
out.println(" </ul></div></div>");
out.println(" <div class=\"msg-header\"><a href=\"/" + msg.User.UName + "/\">@" + msg.User.UName + "</a>:</div>");
out.println(" <div class=\"msg-txt\">" + msg.Text + "</div>");
@@ -297,12 +312,17 @@ public class UserThread {
}
}
out.println(" <div class=\"msg-avatar\"><a href=\"/" + msg.User.UName + "/\"><img src=\"http://i.juick.com/a/" + msg.User.UID + ".png\"></a></div>");
- out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.User.UName + "/" + msg.MID + "#" + msg.RID + "\">" + PageTemplates.formatDate(msg.MinutesAgo, msg.TimestampString, locale) + "</a><div class=\"msg-menu\"><a href=\"#\" onclick=\"return msgMenu(" + msg.MID + ")\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a><ul id=\"msg-menu-" + msg.MID + "\">");
- out.println(" <li><a href=\"#\" onclick=\"return false\">Under construction</a></li>");
+ out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.MID + "#" + msg.RID + "\">" + PageTemplates.formatDate(msg.MinutesAgo, msg.TimestampString, locale) + "</a><div class=\"msg-menu\"><a href=\"#\" onclick=\"$('#msg-menu-" + msg.MID + "-" + msg.RID + "').toggle('blind'); return false\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a><ul id=\"msg-menu-" + msg.MID + "\">");
+ out.println(" <li><a href=\"/post?body=%40" + msg.User.UName + "%20\">" + rb.getString("Send private message") + "</a></li>");
+ out.println(" <li><a href=\"/post?body=BL%20%40" + msg.User.UName + "\">" + rb.getString("Block user") + "</a></li>");
out.println(" </ul></div></div>");
out.println(" <div class=\"msg-header\"><a href=\"/" + msg.User.UName + "/\">@" + msg.User.UName + "</a>:</div>");
out.println(" <div class=\"msg-txt\">" + msg.Text + "</div>");
- out.println(" <div class=\"msg-links\"><a href=\"#\" onclick=\"return showCommentForm(" + msg.MID + "," + msg.RID + ")\">" + rb.getString("Comment") + "</a></div>");
+ out.print(" <div class=\"msg-links\">/" + msg.RID);
+ if (msg.ReplyTo > 0) {
+ out.print(" " + rb.getString("in reply to") + " <a href=\"#" + msg.ReplyTo + "\">/" + msg.ReplyTo + "</a>");
+ }
+ out.println(" &#183; <a href=\"#\" onclick=\"return showCommentForm(" + msg.MID + "," + msg.RID + ")\">" + rb.getString("Comment") + "</a></div>");
out.println(" <div class=\"msg-comment\" style=\"display: none\"></div>");
out.println(" </li>");
}
diff --git a/web/scripts3.js b/web/scripts3.js
index 12e0aeee..f6e9cdef 100644
--- a/web/scripts3.js
+++ b/web/scripts3.js
@@ -39,9 +39,9 @@ function showCommentForm(mid,rid) {
var c=$('#replies #'+rid+' .msg-comment');
c.wrap('<form action="/post" method="POST" enctype="multipart/form-data"/>');
c.before('<input type="hidden" name="mid" value="'+mid+'"/><input type="hidden" name="rid" value="'+rid+'"/>');
- c.append('<textarea name="body" rows="1" class="reply" placeholder="Add a comment..." onkeypress="postformListener(this.form,event)"></textarea>');
+ c.append('<textarea name="body" rows="1" class="reply" placeholder="Add a comment..." onkeypress="postformListener(this.form,event)"></textarea><input type="submit" value="OK"/>');
}
- $('#replies #'+rid+' .msg-links').hide();
+// $('#replies #'+rid+' .msg-links').hide();
$('#replies #'+rid+' .msg-comment').show();
$('#replies #'+rid+' textarea')[0].focus();
$('#replies #'+rid+' textarea').autoResize({
diff --git a/web/style3.css b/web/style3.css
index 49add6f2..0678dc02 100644
--- a/web/style3.css
+++ b/web/style3.css
@@ -54,14 +54,17 @@ img { border: none; }
#content .msg-ts a { font-size: small; }
#content .msg-menu { margin: 0 8px; display: inline; position: relative; }
#content .msg-menu img { vertical-align: top; }
-#content .msg-menu ul { display: none; position: absolute; top: 20px; right: 0; width: 200px; margin: 0; padding: 5px; }
-#content .msg-menu li { margin: 0; padding: 0; }
-#content .msg-header { margin-left: 58px; }
+#content .msg-menu ul { display: none; position: absolute; top: 20px; right: 0; width: 300px; margin: 0; padding: 5px; }
+#content .msg-menu li { margin: 0; padding: 10px 5px; }
+#content .msg-header { margin-left: 58px; overflow: hidden; }
#content .msg-txt { margin-left: 58px; padding: 6px 0 0 0; }
#content .msg-links { font-size: small; margin: 10px 0 0 68px; }
#content .msg-comments { margin: 10px 0 0 58px; padding: 5px 20px; overflow: hidden; font-size: small; }
#content .msg-comment { margin: 10px 0 0 58px; padding: 0px 0 0 20px; }
-#content textarea { border: 1px solid; width: 556px; padding: 2px; resize: vertical; }
+#content .msg-comment textarea { border: 1px solid; width: 500px; padding: 2px; resize: vertical; }
+#content .msg-comment input { border: 1px solid; width: 50px; margin-left: 5px; vertical-align: top; }
+
+#content textarea.newmessage { border: 1px solid; width: 640px; padding: 2px; resize: vertical; }
#chats li { margin: 16px; }
@@ -101,8 +104,14 @@ a { color: #069; }
#content .msg { border-color: #DDD; }
#content .msg-comments { background: #F5F5F5; color: #999; }
#content .msg-ts a { color: #999; }
-#content textarea { border-color: #DDD; }
+#content .msg-links { color: #999; }
+#content .msg-comment textarea { border-color: #DDD; }
+#content .msg-comment input { border-color: #CCC; background-color: #EEE; color: #999; }
#content .msg-menu ul { background: #DDD; }
+#content .msg-menu a { color: #000; }
+
+#content textarea.newmessage { border-color: #DDD; }
+
.title2 { background: #F0F0F0; }
.page { background: #F0F0F0; }