diff options
-rw-r--r-- | src/java/Global.properties | 3 | ||||
-rw-r--r-- | src/java/Global_ru.properties | 3 | ||||
-rw-r--r-- | src/java/com/juick/http/www/Blogs.java | 1 | ||||
-rw-r--r-- | src/java/com/juick/http/www/PageTemplates.java | 28 | ||||
-rw-r--r-- | src/java/com/juick/http/www/User.java | 4 | ||||
-rw-r--r-- | src/java/com/juick/http/www/UserThread.java | 10 | ||||
-rw-r--r-- | web/scripts3.js | 33 | ||||
-rw-r--r-- | web/style3.css | 13 |
8 files changed, 88 insertions, 7 deletions
diff --git a/src/java/Global.properties b/src/java/Global.properties index 164b57a2..706e258f 100644 --- a/src/java/Global.properties +++ b/src/java/Global.properties @@ -24,3 +24,6 @@ Block\ user=Block user Send\ private\ message=Send private message Recommend\ message=Recommend message in\ reply\ to=in reply to +(Dialog)\ Link\ to\ message=Permanent link to this message +(Dialog)\ Message\ number=Message number +(Dialog)\ Share=Share in social networks diff --git a/src/java/Global_ru.properties b/src/java/Global_ru.properties index b98693da..a7c7e9d5 100644 --- a/src/java/Global_ru.properties +++ b/src/java/Global_ru.properties @@ -24,3 +24,6 @@ Block\ user=\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u 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 +(Dialog)\ Link\ to\ message=\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 +(Dialog)\ Message\ number=\u041d\u043e\u043c\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f +(Dialog)\ Share=\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445 diff --git a/src/java/com/juick/http/www/Blogs.java b/src/java/com/juick/http/www/Blogs.java index 1bb308c5..3260a2cb 100644 --- a/src/java/com/juick/http/www/Blogs.java +++ b/src/java/com/juick/http/www/Blogs.java @@ -189,6 +189,7 @@ public class Blogs { out.println("</div>"); // topwrapper + PageTemplates.pageDialogTemplate(out, locale); PageTemplates.pageFooter(request, out, locale, visitor); } finally { out.close(); diff --git a/src/java/com/juick/http/www/PageTemplates.java b/src/java/com/juick/http/www/PageTemplates.java index 2ec42e42..10b372a0 100644 --- a/src/java/com/juick/http/www/PageTemplates.java +++ b/src/java/com/juick/http/www/PageTemplates.java @@ -55,11 +55,11 @@ public class PageTemplates { out.println("<html>"); out.println("<head>"); out.println(" <title>" + title + "</title>"); - out.println(" <link rel=\"stylesheet\" href=\"//static.juick.com/style3.2012110404.css\"/>"); + out.println(" <link rel=\"stylesheet\" href=\"//static.juick.com/style3.2012111100.css\"/>"); out.println(" <link rel=\"icon\" type=\"image/png\" href=\"//static.juick.com/favicon.png\"/>"); out.println(" <script type=\"text/javascript\" src=\"//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" defer=\"defer\"></script>"); out.println(" <script type=\"text/javascript\" src=\"//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js\" defer=\"defer\" async=\"async\"></script>"); - out.println(" <script type=\"text/javascript\" src=\"//static.juick.com/scripts3.2012110400.js\" defer=\"defer\"></script>"); + out.println(" <script type=\"text/javascript\" src=\"//static.juick.com/scripts3.2012111101.js\" defer=\"defer\"></script>"); if (headers != null) { out.println(headers); } @@ -146,6 +146,23 @@ public class PageTemplates { out.println(); } + public static void pageDialogTemplate(PrintWriter out, Locale locale) { + ResourceBundle rb = ResourceBundle.getBundle("Global", locale); + out.println("<div id=\"dialogb\" onclick=\"$('#dialogb').hide();$('#dialogw').hide()\"></div>"); + out.println("<div id=\"dialogw\">" + rb.getString("(Dialog) Link to message") + ":"); + out.println("<div id=\"dialogl\"></div>"); + out.println(rb.getString("(Dialog) Message number") + ":"); + out.println("<div id=\"dialogn\"></div>"); + out.println(rb.getString("(Dialog) Share") + ":"); + out.println("<ul>"); + out.println(" <li><a id=\"sharefb\"></a></li>"); + out.println(" <li><a id=\"sharetw\"></a></li>"); + out.println(" <li><a id=\"sharevk\"></a></li>"); + out.println(" <li><a id=\"sharegp\"></a></li>"); + out.println("</ul>"); + out.println("</div>"); + } + public static void pageFooter(HttpServletRequest request, PrintWriter out, Locale loc, com.juick.User visitor) { ResourceBundle rb = ResourceBundle.getBundle("Global", loc); out.println("<div id=\"fwrapper\"><div id=\"footer\">"); @@ -293,7 +310,7 @@ public class PageTemplates { ArrayList<Integer> blUIDs = new ArrayList<Integer>(20); if (visitor != null) { - for (int i = 0; i < mids.size(); i++) { + for (int i = 0; i < msgs.size(); i++) { blUIDs.add(msgs.get(i).User.UID); } blUIDs = UserQueries.checkBL(sql, visitor.UID, blUIDs); @@ -314,13 +331,16 @@ public class PageTemplates { tags += " *friends"; break; case -2: + tags += " *friends"; + break; + case -3: tags += " *private"; break; } out.println(" <li id=\"msg-" + msg.MID + "\" class=\"msg\">"); out.println(" <div class=\"msg-avatar\"><a href=\"/" + msg.User.UName + "/\"><img src=\"//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 + "\" title=\"" + msg.TimestampString + " GMT\">" + formatDate(msg.TimeAgo, msg.TimestampString, locale) + "</a></div>"); + out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.User.UName + "/" + msg.MID + "\" title=\"" + msg.TimestampString + " GMT\">" + formatDate(msg.TimeAgo, msg.TimestampString, locale) + "</a><a href=\"#\" onclick=\"showMessageLinksDialog(" + msg.MID + "); return false\" class=\"msg-menu\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a></div>"); out.println(" <div class=\"msg-header\"><a href=\"/" + msg.User.UName + "/\">@" + msg.User.UName + "</a>:" + tags + "</div>"); if (msg.Place != null) { out.println(" <div class=\"msg-place\">" + msg.Place.name + "</div>"); diff --git a/src/java/com/juick/http/www/User.java b/src/java/com/juick/http/www/User.java index de0375f3..d8c179b5 100644 --- a/src/java/com/juick/http/www/User.java +++ b/src/java/com/juick/http/www/User.java @@ -126,6 +126,7 @@ public class User { out.println("</div>"); out.println("</div>"); // topwrapper + PageTemplates.pageDialogTemplate(out, locale); PageTemplates.pageFooter(request, out, locale, visitor); } finally { out.close(); @@ -156,6 +157,7 @@ public class User { out.println("</div>"); out.println("</div>"); + PageTemplates.pageDialogTemplate(out, locale); PageTemplates.pageFooter(request, out, locale, visitor); } finally { out.close(); @@ -206,6 +208,7 @@ public class User { out.println("</div>"); out.println("</div>"); + PageTemplates.pageDialogTemplate(out, locale); PageTemplates.pageFooter(request, out, locale, visitor); } finally { out.close(); @@ -256,6 +259,7 @@ public class User { out.println("</div>"); out.println("</div>"); + PageTemplates.pageDialogTemplate(out, locale); PageTemplates.pageFooter(request, out, locale, visitor); } finally { out.close(); diff --git a/src/java/com/juick/http/www/UserThread.java b/src/java/com/juick/http/www/UserThread.java index a0bb3a86..5beb6b61 100644 --- a/src/java/com/juick/http/www/UserThread.java +++ b/src/java/com/juick/http/www/UserThread.java @@ -79,6 +79,7 @@ public class UserThread { out.println("</div>"); out.println("</div>"); // topwrapper + PageTemplates.pageDialogTemplate(out, locale); PageTemplates.pageFooter(request, out, locale, visitor); } finally { out.close(); @@ -106,6 +107,9 @@ public class UserThread { tags += " *friends"; break; case -2: + tags += " *friends"; + break; + case -3: tags += " *private"; break; } @@ -113,7 +117,7 @@ public class UserThread { out.println("<ul>"); out.println(" <li id=\"msg-" + mid + "\" class=\"msg msgthread\">"); out.println(" <div class=\"msg-avatar\"><a href=\"/" + msg.User.UName + "/\"><img src=\"//i.juick.com/a/" + msg.User.UID + ".png\" alt=\"" + msg.User.UName + "\"/></a></div>"); - out.println(" <div class=\"msg-ts\">" + PageTemplates.formatJSLocalTime(msg.TimestampString) + "</div>"); + out.println(" <div class=\"msg-ts\">" + PageTemplates.formatJSLocalTime(msg.TimestampString) + "<a href=\"#\" onclick=\"showMessageLinksDialog(" + msg.MID + "); return false\" class=\"msg-menu\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a></div>"); out.println(" <div class=\"msg-header\"><a href=\"/" + msg.User.UName + "/\">@" + msg.User.UName + "</a>:" + tags + "</div>"); if (msg.Place != null && msg.Place.pid > 0) { out.println(" <div class=\"msg-place\">" + msg.Place.name + "</div>"); @@ -292,7 +296,7 @@ public class UserThread { } } out.println(" <div class=\"msg-avatar\"><a href=\"/" + msg.User.UName + "/\"><img src=\"//i.juick.com/a/" + msg.User.UID + ".png\" alt=\"" + msg.User.UName + "\"/></a></div>"); - out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.MID + "#" + msg.RID + "\" title=\"" + msg.TimestampString + " GMT\">" + PageTemplates.formatDate(msg.TimeAgo, msg.TimestampString, locale) + "</a></div>"); + out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.MID + "#" + msg.RID + "\" title=\"" + msg.TimestampString + " GMT\">" + PageTemplates.formatDate(msg.TimeAgo, msg.TimestampString, locale) + "</a><a href=\"#\" onclick=\"showMessageLinksDialog(" + msg.MID + "," + msg.RID + "); return false\" class=\"msg-menu\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a></div>"); out.println(" <div class=\"msg-header\"><a href=\"/" + msg.User.UName + "/\">@" + msg.User.UName + "</a>:</div>"); out.println(" <div class=\"msg-txt\">" + PageTemplates.formatMessage(msg.Text) + "</div>"); if (msg.VisitorCanComment) { @@ -331,7 +335,7 @@ public class UserThread { } } out.println(" <div class=\"msg-avatar\"><a href=\"/" + msg.User.UName + "/\"><img src=\"//i.juick.com/a/" + msg.User.UID + ".png\"></a></div>"); - out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.MID + "#" + msg.RID + "\" title=\"" + msg.TimestampString + " GMT\">" + PageTemplates.formatDate(msg.TimeAgo, msg.TimestampString, locale) + "</a></div>"); + out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.MID + "#" + msg.RID + "\" title=\"" + msg.TimestampString + " GMT\">" + PageTemplates.formatDate(msg.TimeAgo, msg.TimestampString, locale) + "</a><a href=\"#\" onclick=\"showMessageLinksDialog(" + msg.MID + "," + msg.RID + "); return false\" class=\"msg-menu\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a></div>"); out.println(" <div class=\"msg-header\"><a href=\"/" + msg.User.UName + "/\">@" + msg.User.UName + "</a>:</div>"); out.println(" <div class=\"msg-txt\">" + PageTemplates.formatMessage(msg.Text) + "</div>"); out.print(" <div class=\"msg-links\">/" + msg.RID); diff --git a/web/scripts3.js b/web/scripts3.js index 1a5ffd66..a1afb433 100644 --- a/web/scripts3.js +++ b/web/scripts3.js @@ -63,6 +63,39 @@ function unfoldReply() { } } +function showMessageLinksDialog(mid,rid) { + var hlink="http://juick.com/"+mid; + var mlink="#"+mid; + if(rid>0) { + hlink+="#"+rid; + mlink+="/"+rid; + } + $('#dialogl').html(hlink); + $('#dialogn').html(mlink); + + $('#dialogw li>a').click(function(event) { + event.preventDefault(); + openSocialWindow($(this).attr('href')); + }); + var hlinkenc=encodeURIComponent(hlink); + $('#sharefb').attr('href','https://www.facebook.com/sharer/sharer.php?u='+hlinkenc); + $('#sharetw').attr('href','https://twitter.com/intent/tweet?url='+hlinkenc); + $('#sharevk').attr('href','https://vk.com/share.php?url='+hlinkenc); + $('#sharegp').attr('href','https://plus.google.com/share?url='+hlinkenc); + + var w=$('#dialogw'); + var b=$('#dialogb'); + w.css("top", Math.max(0, ((b.height() - w.outerHeight()) / 2) + b.scrollTop()) + "px"); + w.css("left", Math.max(0, ((b.width() - w.outerWidth()) / 2) + b.scrollLeft()) + "px"); + b.show(); + w.show(); +} + +function openSocialWindow(url) { + var w=window.open(url,'juickshare','width=640,height=400'); + if(window.focus) w.focus(); +} + /* * jQuery.fn.autoResize 1.14 */ diff --git a/web/style3.css b/web/style3.css index 2649de77..d04c5487 100644 --- a/web/style3.css +++ b/web/style3.css @@ -45,6 +45,8 @@ img { border: none; } #content .msg-avatar { float: left; } #content .msg-avatar img { width: 48px; height: 48px; vertical-align: top; } #content .msg-ts { float: right; font-size: small; vertical-align: top; } +#content .msg-menu { margin: 0 0 0 6px; padding: 2px 0; } +#content .msg-menu img { vertical-align: top; } #content .msg-header { margin-left: 58px; overflow: hidden; } #content .msg-place { font-size: small; margin: 8px 0 8px 58px; } #content .msg-txt { margin: 8px 0 8px 58px; overflow: hidden; } @@ -97,6 +99,17 @@ table.users img { width: 32px; height: 32px; vertical-align: middle; margin-righ /********/ +#dialogb { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.5; background: #000; } +#dialogw { display: none; position: fixed; top: 40%; left: 30%; width: 350px; padding: 20px; background: #EEEEE5; border: 1px solid #999; } +#dialogl,#dialogn { padding: 5px; margin: 3px 0 20px; border: 1px solid #DDD; background: #F5F5E9; } +#dialogw li { float: left; margin: 5px 10px 0 0; } +#dialogw li>a { display: block; width: 32px; height: 32px; background-image: url(//static.juick.com/sharesocial.png); } +#sharetw { background-position: -32px 0; } +#sharevk { background-position: -64px 0; } +#sharegp { background-position: -96px 0; } + +/********/ + #footer { clear: both; width: 600px; margin: 0 auto; font-size: small; padding: 15px 0 10px 0; } #footer-right { float: right; } |