Show custom avatar where applicable.
[Sone.git] / src / main / resources / templates / include / head.html
index deb020c..efb5ddf 100644 (file)
-<div id="sone" class="<%ifnull ! currentSone>online<%else>offline<%/if>">
+<div id="sone">
 
        <div id="formPassword"><% formPassword|html></div>
+       <div id="currentSoneId" class="hidden"><% currentSone.id|html></div>
+       <div id="loggedIn" class="hidden"><%ifnull !currentSone>true<%else>false<%/if></div>
 
        <script src="javascript/jquery-1.4.2.js" language="javascript"></script>
+       <script src="javascript/jquery.url.js" language="javascript"></script>
+       <script src="javascript/jquery.fieldselection.js" language="javascript"></script>
        <script src="javascript/sone.js" language="javascript"></script>
 
-       <script language="javascript">
-               /* this initializes the status update input field. */
-               $(document).ready(function() {
-                       getTranslation("WebInterface.DefaultText.StatusUpdate", function(text) {
-                               registerInputTextareaSwap("#sone #update-status .status-input", text, "text", false, false);
-                       })
-               });
-       </script>
+       <div id="offline-marker"></div>
 
-       <script language="javascript">
-               /* these functions are necessary for updating Sone statuses. */
-               $(document).ready(function() {
-                       $("#sone .sone").each(function() {
-                               watchSone($(this).find(".id").text());
-                       });
-               });
-       </script>
-
-       <script language="javascript">
-               /* this initializes all reply input fields. */
-               $(document).ready(function() {
-                       getTranslation("WebInterface.DefaultText.Reply", function(text) {
-                               registerInputTextareaSwap("#sone input.reply-input", text, "text", false, false);
-                               addCommentLinks();
-                       })
-               });
-       </script>
-
-       <script language="javascript">
-               /* replace all “delete” buttons with javascript. */
-               $(document).ready(function() {
-                       getTranslation("WebInterface.Confirmation.DeletePostButton", function(text) {
-                               deletePostText = text;
-                               getTranslation("WebInterface.Confirmation.DeleteReplyButton", function(text) {
-                                       deleteReplyText = text;
-                                       $("#sone .post").each(function() {
-                                               postId = $(this).attr("id");
-                                               enhanceDeletePostButton("#sone .post#" + postId + " > .inner-part > .status-line .delete button", postId, deletePostText);
-                                               (function(postId) {
-                                                       $("#sone .post#" + postId + " .reply").each(function() {
-                                                               replyId = $(this).attr("id");
-                                                               (function(postId, reply, replyId) {
-                                                                       reply.find(".delete button").each(function() {
-                                                                               enhanceDeleteReplyButton("#sone .post#" + postId + " .reply#" + replyId + " .delete button", replyId, deleteReplyText);
-                                                                       })
-                                                               })(postId, $(this), replyId);
-                                                       });
-                                               })(postId);
-                                       });
-                               });
-                       });
-               });
-       </script>
-
-       <script language="javascript">
-               /* hides all replies but the latest two. */
-               $(document).ready(function() {
-                       getTranslation("WebInterface.ClickToShow.Replies", function(text) {
-                               $("#sone .post .replies").each(function() {
-                                       allReplies = $(this).find(".reply");
-                                       if (allReplies.length > 2) {
-                                               newHidden = false;
-                                               for (replyIndex = 0; replyIndex < (allReplies.length - 2); ++replyIndex) {
-                                                       $(allReplies[replyIndex]).addClass("hidden");
-                                                       newHidden |= $(allReplies[replyIndex]).hasClass("new");
-                                               }
-                                               clickToShowElement = $("<div></div>").addClass("click-to-show");
-                                               if (newHidden) {
-                                                       clickToShowElement.addClass("new");
-                                               }
-                                               (function(clickToShowElement, allReplies, text) {
-                                                       clickToShowElement.text(text);
-                                                       clickToShowElement.click(function() {
-                                                               allReplies.removeClass("hidden");
-                                                               clickToShowElement.addClass("hidden");
-                                                       });
-                                               })(clickToShowElement, allReplies, text);
-                                               $(allReplies[0]).before(clickToShowElement);
-                                       }
-                               });
-                       });
-               });
-       </script>
-
-       <script language="javascript">
-               /* convert all “follow”, “unfollow”, “block”, and “unblock” links to something nicer. */
-               $(document).ready(function() {
-                       $("#sone .follow").submit(function() {
-                               var followElement = this;
-                               $.getJSON("ajax/followSone.ajax", { "sone": getSoneId(this), "formPassword": getFormPassword() }, function() {
-                                       $(followElement).addClass("hidden");
-                                       $(followElement).parent().find(".unfollow").removeClass("hidden");
-                               });
-                               return false;
-                       });
-                       $("#sone .unfollow").submit(function() {
-                               var unfollowElement = this;
-                               $.getJSON("ajax/unfollowSone.ajax", { "sone": getSoneId(this), "formPassword": getFormPassword() }, function() {
-                                       $(unfollowElement).addClass("hidden");
-                                       $(unfollowElement).parent().find(".follow").removeClass("hidden");
-                               });
-                               return false;
-                       });
-               });
-       </script>
+       <div id="main">
 
-       <script language="javascript">
-               /* convert all “like” buttons to javascript functions. */
-               $(document).ready(function() {
-                       $("#sone .post > .inner-part > .status-line .like").submit(function() {
-                               likePost(getPostId(this));
-                               return false;
-                       });
-                       $("#sone .post > .inner-part > .status-line .unlike").submit(function() {
-                               unlikePost(getPostId(this));
-                               return false;
-                       });
-                       $("#sone .post .reply .status-line .like").submit(function() {
-                               likeReply(getReplyId(this));
-                               return false;
-                       });
-                       $("#sone .post .reply .status-line .unlike").submit(function() {
-                               unlikeReply(getReplyId(this));
-                               return false;
-                       });
-               });
-       </script>
+               <div id="notification-area">
 
-       <script language="javascript">
-               /* display large notification about new replies and posts. */
-               $(document).ready(function() {
-                       newPostCount = $("#sone .post.new").length;
-                       newReplyCount = $("#sone .reply.new").length;
-                       if ((newPostCount + newReplyCount) == 0) {
-                               return;
-                       }
-                       if (newPostCount > 0) {
-                               postNotification = $("<div></div>").addClass("notification");
-                               getTranslation("WebInterface.Notification.NewPostCount", function(text) {
-                                       postNotification.append($("<div></div>").text(text)).append($("<div></div>").addClass("post-count").text(newPostCount));
-                               });
-                               postNotification.appendTo("#sone #notification-area");
-                       }
-                       if (newReplyCount > 0) {
-                               replyNotification = $("<div></div>").addClass("notification");
-                               getTranslation("WebInterface.Notification.NewReplyCount", function(text) {
-                                       replyNotification.append($("<div></div>").text(text)).append($("<div></div>").addClass("post-count").text(newReplyCount));
-                               });
-                               replyNotification.appendTo("#sone #notification-area");
-                       }
-               });
-       </script>
+                       <div id="notification-hash" class="hidden"><% notificationHash|html></div>
 
-       <div id="main">
+                       <form id="notification-dismiss-template" class="hidden dismiss" action="dismissNotification.html" method="post">
+                               <input type="hidden" name="formPassword" value="<% formPassword|html>" />
+                               <input type="hidden" name="returnPage" value="<% request.uri|html>" />
+                               <input type="hidden" name="notification" value="" />
+                               <button type="submit"><%= Notification.Button.Dismiss|l10n|html></button>
+                       </form>
 
-               <%if !webInterface.core.identityManager.connected>
-                       <div id="plugin-warning">
-                               <%= Warning.PluginNotConnected.Text|l10n|html|replace needle="{link}" replacement="<a href=\"/plugins/\">"|replace needle="{/link}" replacement="</a>">
-                       </div>
-               <%/if>
-
-               <div id="notification-area"></div>
+                       <%foreach notifications notification>
+                               <div class="notification" id="<% notification.id|html>" lastUpdatedTime="<%notification.lastUpdatedTime|html>">
+                                       <%if notification.dismissable>
+                                               <form class="dismiss" action="dismissNotification.html" method="post">
+                                                       <input type="hidden" name="formPassword" value="<% formPassword|html>" />
+                                                       <input type="hidden" name="returnPage" value="<% request.uri|html>" />
+                                                       <input type="hidden" name="notification" value="<% notification.id|html>" />
+                                                       <button type="submit"><%= Notification.Button.Dismiss|l10n|html></button>
+                                               </form>
+                                       <%/if>
+                                       <%include notification>
+                               </div>
+                       <%/foreach>
+               </div>
 
                <div id="profile" class="<%ifnull currentSone>offline<%else>online<%/if>">
-                       <a class="picture" href="index.html">
-                               <%ifnull !currentSone>
-                                       <img src="/WoT/GetIdenticon?identity=<% currentSone.id|html>&amp;width=80&amp;height=80" width="80" height="80" alt="Profile Avatar" />
-                               <%else>
-                                       <img src="images/sone.png" width="80" height="80" alt="Sone is offline" />
-                               <%/if>
-                       </a>
+                       <div class="avatar profile-avatar">
+                               <a class="picture" href="index.html">
+                                       <%ifnull !currentSone>
+                                               <%ifnull !currentSone.avatar>
+                                                       <%currentSone.avatar|image-link max-width=80 max-height=80 mode=enlarge title="Profile Avatar">
+                                               <%else>
+                                                       <img src="/WebOfTrust/GetIdenticon?identity=<% currentSone.id|html>&amp;width=80&amp;height=80" width="80" height="80" alt="Profile Avatar" />
+                                               <%/if>
+                                       <%else>
+                                               <img src="images/sone.png" width="80" height="80" alt="Sone is offline" />
+                                       <%/if>
+                               </a>
+                       </div>
                        <%ifnull ! currentSone>
                                <div id="home-sone">
                                        <% currentSone|store key=sone>
                                        <%include include/viewSone.html>
-                                       <%include include/updateStatus.html>
                                </div>
                        <%/if>
+                       <form id="search" action="search.html" method="get">
+                               <input type="text" name="query" value="" />
+                               <button type="submit"><%= View.Search.Button.Search|l10n|html></button>
+                       </form>
                </div>