From 624badfb5f7201cfc7f6d3e45a572a367a1ab74b Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 11 Nov 2011 02:50:55 +0000 Subject: [PATCH] * Console: - Less magic and fix img sizes, for speed and less artifacts while rendering - CSS tweaks --- .../i2p/router/web/SummaryBarRenderer.java | 8 +++-- apps/routerconsole/jsp/index.jsp | 32 +++++++++--------- .../themes/console/light/console.css | 27 +++++++-------- .../themes/console/light/images/snowcamo.png | Bin 2276 -> 2248 bytes 4 files changed, 35 insertions(+), 32 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java index 6ec79bea80..db2ba21df5 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java @@ -28,14 +28,18 @@ public class SummaryBarRenderer { StringBuilder buf = new StringBuilder(8*1024); String theme = _context.getProperty(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME); - buf.append("<a href=\"/\" target=\"_top\"><img src=\"") + // TODO - the bar would render more cleanly if we specified the img height and width here, + // but unfortunately the images in the different themes are different sizes. + // They range in height from 37 to 43 px. But there's a -2 bottom margin... + // So put it in a div. + buf.append("<div style=\"height: 36px;\"><a href=\"/\" target=\"_top\"><img src=\"") .append(CSSHelper.BASE_THEME_PATH) .append(theme) .append("/images/i2plogo.png\" alt=\"") .append(_("I2P Router Console")) .append("\" title=\"") .append(_("I2P Router Console")) - .append("\"></a><hr>") + .append("\"></a></div><hr>") .append("<h3><a href=\"/help\" target=\"_top\" title=\"") .append(_("I2P Router Help & FAQ")) diff --git a/apps/routerconsole/jsp/index.jsp b/apps/routerconsole/jsp/index.jsp index 59cfc7dddc..33db27fa70 100644 --- a/apps/routerconsole/jsp/index.jsp +++ b/apps/routerconsole/jsp/index.jsp @@ -36,22 +36,22 @@ <jsp:useBean class="net.i2p.router.web.ContentHelper" id="contenthelper" scope="request" /> <div class="welcome"> <div class="langbox"> - <a href="/?lang=en&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=us" title="English" alt="English"></a> - <a href="/?lang=ar&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a> - <a href="/?lang=zh&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=cn" title="ä¸æ–‡" alt="ä¸æ–‡"></a> - <a href="/?lang=da&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=dk" title="Danish" alt="Danish"></a> - <a href="/?lang=de&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> - <a href="/?lang=es&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=es" title="Español" alt="Español"></a> - <a href="/?lang=fi&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=fi" title="Suomi" alt="Suomi"></a> - <a href="/?lang=fr&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=fr" title="Français" alt="Français"></a><br> - <a href="/?lang=it&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=it" title="Italiano" alt="Italiano"></a> - <a href="/?lang=nl&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> - <a href="/?lang=pl&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=pl" title="Polski" alt="Polski"></a> - <a href="/?lang=pt&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=pt" title="Português" alt="Português"></a> - <a href="/?lang=ru&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=ru" title="РуÑÑкий" alt="РуÑÑкий"></a> - <a href="/?lang=sv&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a> - <a href="/?lang=uk&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=ua" title="Ukrainian" alt="Ukrainian"></a> - <a href="/?lang=vi&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=vn" title="Tiếng Việt" alt="Tiếng Việt"></a> + <a href="/?lang=en&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=us" title="English" alt="English"></a> + <a href="/?lang=ar&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a> + <a href="/?lang=zh&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=cn" title="ä¸æ–‡" alt="ä¸æ–‡"></a> + <a href="/?lang=da&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=dk" title="Danish" alt="Danish"></a> + <a href="/?lang=de&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> + <a href="/?lang=es&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=es" title="Español" alt="Español"></a> + <a href="/?lang=fi&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=fi" title="Suomi" alt="Suomi"></a> + <a href="/?lang=fr&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=fr" title="Français" alt="Français"></a><br> + <a href="/?lang=it&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=it" title="Italiano" alt="Italiano"></a> + <a href="/?lang=nl&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> + <a href="/?lang=pl&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=pl" title="Polski" alt="Polski"></a> + <a href="/?lang=pt&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=pt" title="Português" alt="Português"></a> + <a href="/?lang=ru&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=ru" title="РуÑÑкий" alt="РуÑÑкий"></a> + <a href="/?lang=sv&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a> + <a href="/?lang=uk&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=ua" title="Ukrainian" alt="Ukrainian"></a> + <a href="/?lang=vi&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=vn" title="Tiếng Việt" alt="Tiếng Việt"></a> </div> <a name="top"></a> <h2><%=intl._("Welcome to I2P")%></h2> diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 73e57a9e19..2e9b0500b2 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -5,10 +5,9 @@ body { margin: 10px 0px -10px 10px; text-align: center; - background: #ffe url('images/snowcamo.png'); color: #000; font: 10pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - background: #99f url('images/magic.png') center bottom; + background: #9696ff url('images/snowcamo.png'); } .hide { @@ -97,10 +96,10 @@ div.routersummary { color: #000; font-size: 8pt; clear: left;/* fixes a bug in Opera */ - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #ffe url('images/magic.png') center bottom; + -moz-border-radius: 8px; + -khtml-border-radius: 8px; + border-radius: 8px; + background: #f0f0f0; -moz-box-shadow: inset 0px 0px 1px 1px #bbf; -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; box-shadow: inset 0px 0px 1px 1px #bbf; @@ -162,7 +161,7 @@ div.routersummary h4 { letter-spacing: 0.02em; margin: -6px -6px -7px !important; padding: 3px 3px 5px 3px; - background: #ddf url(images/magic.png); + background: #dbdbf5; text-transform: capitalize; text-decoration: none !important; color: #2b2; @@ -312,7 +311,6 @@ div.sorry hr { div.main { margin: 10px 10px 20px 207px; padding: 0 15px 15px 15px; - background: #ffe; text-align: left; color: #001; width: auto; @@ -324,7 +322,8 @@ div.main { -moz-box-shadow: inset 0px 0px 1px 1px #bbf; -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; box-shadow: inset 0px 0px 1px 1px #bbf; - background: #ffe url('images/magic.png') center bottom;} + background: #f0f0f0; +} div.main hr, hr { color: #113; @@ -358,7 +357,7 @@ div.news { -moz-box-shadow: inset 0px 0px 1px 1px #bbf; -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; box-shadow: inset 0px 0px 1px 1px #bbf; - background: #ffe url('images/magic.png') center bottom; + background: #f0f0f0; min-width: 490px; } @@ -716,11 +715,11 @@ h1 { -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; box-shadow: inset 0px 0px 1px 1px #bbf; white-space: normal; - background: #ffe url('images/magic.png') center center repeat; + background: #f0f0f0; border: 1px solid #447; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; + border-radius: 8px 8px 4px 4px; + -moz-border-radius: 8px 8px 4px 4px; + -khtml-border-radius: 8px 8px 4px 4px; min-width: 500px; } diff --git a/installer/resources/themes/console/light/images/snowcamo.png b/installer/resources/themes/console/light/images/snowcamo.png index 4c645d52e207b79f5f89b8666f2ff25317894caa..a536c222542846f4df3949f666f745c9c3aad927 100644 GIT binary patch delta 2236 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 KMNUMnLSTYw%2z%B delta 2264 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 -- GitLab