/configui: Use larger flags for language selection
@ -172,7 +172,7 @@ public class ConfigUIHelper extends HelperBase {
|
|||||||
if (lang.equals(current))
|
if (lang.equals(current))
|
||||||
buf.append(CHECKED);
|
buf.append(CHECKED);
|
||||||
buf.append("value=\"").append(lang).append("\">")
|
buf.append("value=\"").append(lang).append("\">")
|
||||||
.append("<img height=\"11\" width=\"16\" alt=\"\" src=\"/flags.jsp?c=").append(langs[i][1]).append("\">")
|
.append("<img height=\"48\" width=\"48\" alt=\"\" src=\"/flags.jsp?s=48&c=").append(langs[i][1]).append("\">")
|
||||||
.append("<div class=\"ui_lang\">");
|
.append("<div class=\"ui_lang\">");
|
||||||
int under = lang.indexOf('_');
|
int under = lang.indexOf('_');
|
||||||
String slang = (under > 0) ? lang.substring(0, under) : lang;
|
String slang = (under > 0) ? lang.substring(0, under) : lang;
|
||||||
|
@ -9,16 +9,22 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* flags.jsp?c=de => icons/flags/de.png
|
* flags.jsp?c=de => icons/flags/de.png
|
||||||
|
* flags.jsp?c=de&s=48 => icons/flags48x48/de.png
|
||||||
* with headers set so the browser caches.
|
* with headers set so the browser caches.
|
||||||
*/
|
*/
|
||||||
String c = request.getParameter("c");
|
String c = request.getParameter("c");
|
||||||
if (c != null &&
|
if (c != null &&
|
||||||
(c.length() == 2 || c.length() == 7) &&
|
(c.length() == 2 || c.length() == 7) &&
|
||||||
c.replaceAll("[a-z0-9_]", "").length() == 0) {
|
c.replaceAll("[a-z0-9_]", "").length() == 0) {
|
||||||
|
String flagSet = "flags";
|
||||||
|
String s = request.getParameter("s");
|
||||||
|
if ("48".equals(s)) {
|
||||||
|
flagSet = "flags48x48";
|
||||||
|
}
|
||||||
java.io.OutputStream cout = response.getOutputStream();
|
java.io.OutputStream cout = response.getOutputStream();
|
||||||
String base = net.i2p.I2PAppContext.getGlobalContext().getBaseDir().getAbsolutePath();
|
String base = net.i2p.I2PAppContext.getGlobalContext().getBaseDir().getAbsolutePath();
|
||||||
String file = "docs" + java.io.File.separatorChar + "icons" + java.io.File.separatorChar +
|
String file = "docs" + java.io.File.separatorChar + "icons" + java.io.File.separatorChar +
|
||||||
"flags" + java.io.File.separatorChar + c + ".png";
|
flagSet + java.io.File.separatorChar + c + ".png";
|
||||||
java.io.File ffile = new java.io.File(base, file);
|
java.io.File ffile = new java.io.File(base, file);
|
||||||
long lastmod = ffile.lastModified();
|
long lastmod = ffile.lastModified();
|
||||||
if (lastmod > 0) {
|
if (lastmod > 0) {
|
||||||
|
@ -1241,6 +1241,9 @@
|
|||||||
<copy todir="pkg-temp/docs/icons/flags" >
|
<copy todir="pkg-temp/docs/icons/flags" >
|
||||||
<fileset dir="installer/resources/icons/flags" />
|
<fileset dir="installer/resources/icons/flags" />
|
||||||
</copy>
|
</copy>
|
||||||
|
<copy todir="pkg-temp/docs/icons/flags48x48" >
|
||||||
|
<fileset dir="installer/resources/icons/flags48x48" />
|
||||||
|
</copy>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="copyjetty" depends="copyjetty-unlesspkg" >
|
<target name="copyjetty" depends="copyjetty-unlesspkg" >
|
||||||
@ -1396,6 +1399,8 @@
|
|||||||
im.png added in 0.8.12; cw.png added in 0.9.5; ap,bl,bq,ss,sx added in 0.9.21;
|
im.png added in 0.8.12; cw.png added in 0.9.5; ap,bl,bq,ss,sx added in 0.9.21;
|
||||||
lang_gl added in 0.9.28; a0.png added in 0.9.31 -->
|
lang_gl added in 0.9.28; a0.png added in 0.9.31 -->
|
||||||
<fileset dir="installer/resources/" includes="icons/flags/lang_ar.png icons/flags/gg.png icons/flags/je.png icons/flags/eu.png icons/flags/im.png icons/flags/a1.png icons/flags/a2.png icons/flags/cw.png icons/flags/ap.png icons/flags/bl.png icons/flags/bq.png icons/flags/ss.png icons/flags/sx.png icons/flags/lang_gl.png icons/flags/a0.png" />
|
<fileset dir="installer/resources/" includes="icons/flags/lang_ar.png icons/flags/gg.png icons/flags/je.png icons/flags/eu.png icons/flags/im.png icons/flags/a1.png icons/flags/a2.png icons/flags/cw.png icons/flags/ap.png icons/flags/bl.png icons/flags/bq.png icons/flags/ss.png icons/flags/sx.png icons/flags/lang_gl.png icons/flags/a0.png" />
|
||||||
|
<!-- flags48x48 added in 0.9.32 -->
|
||||||
|
<fileset dir="installer/resources/" includes="icons/flags48x48/*" />
|
||||||
</copy>
|
</copy>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
@ -2508,6 +2513,9 @@
|
|||||||
<copy todir="pkg-temp/docs/icons/flags" >
|
<copy todir="pkg-temp/docs/icons/flags" >
|
||||||
<fileset dir="installer/resources/icons/flags/" includes="cn.png,de.png,fr.png,nl.png,ru.png,se.png,us.png" />
|
<fileset dir="installer/resources/icons/flags/" includes="cn.png,de.png,fr.png,nl.png,ru.png,se.png,us.png" />
|
||||||
</copy>
|
</copy>
|
||||||
|
<copy todir="pkg-temp/docs/icons/flags48x48" >
|
||||||
|
<fileset dir="installer/resources/icons/flags48x48" />
|
||||||
|
</copy>
|
||||||
<mkdir dir="pkg-temp/webapps" />
|
<mkdir dir="pkg-temp/webapps" />
|
||||||
<copy todir="pkg-temp/webapps/">
|
<copy todir="pkg-temp/webapps/">
|
||||||
<fileset dir="build/" includes="**.war" />
|
<fileset dir="build/" includes="**.war" />
|
||||||
|
@ -22,7 +22,9 @@
|
|||||||
- Add additional reachability states for clockskew and vmcomm (with icons)
|
- Add additional reachability states for clockskew and vmcomm (with icons)
|
||||||
- Homepage: Add 'Customize Sidebar' link to signpost the feature now that
|
- Homepage: Add 'Customize Sidebar' link to signpost the feature now that
|
||||||
there are more optional sections available (ticket #1996)
|
there are more optional sections available (ticket #1996)
|
||||||
- /configui: Add option to embed Susimail and I2PSnark in console
|
- /configui:
|
||||||
|
- Add option to embed Susimail and I2PSnark in console
|
||||||
|
- Use larger flags for language selection
|
||||||
* I2PTunnel: Add hostname / destination (b32) information to server section on
|
* I2PTunnel: Add hostname / destination (b32) information to server section on
|
||||||
index page (for parity with client tunnels section)
|
index page (for parity with client tunnels section)
|
||||||
* I2PSnark
|
* I2PSnark
|
||||||
|
BIN
installer/resources/icons/flags48x48/a1.png
Normal file
After Width: | Height: | Size: 687 B |
BIN
installer/resources/icons/flags48x48/br.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
installer/resources/icons/flags48x48/cn.png
Normal file
After Width: | Height: | Size: 716 B |
BIN
installer/resources/icons/flags48x48/cz.png
Normal file
After Width: | Height: | Size: 882 B |
BIN
installer/resources/icons/flags48x48/de.png
Normal file
After Width: | Height: | Size: 492 B |
BIN
installer/resources/icons/flags48x48/dk.png
Normal file
After Width: | Height: | Size: 484 B |
BIN
installer/resources/icons/flags48x48/ee.png
Normal file
After Width: | Height: | Size: 463 B |
BIN
installer/resources/icons/flags48x48/es.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
installer/resources/icons/flags48x48/fi.png
Normal file
After Width: | Height: | Size: 428 B |
BIN
installer/resources/icons/flags48x48/fr.png
Normal file
After Width: | Height: | Size: 612 B |
BIN
installer/resources/icons/flags48x48/gr.png
Normal file
After Width: | Height: | Size: 458 B |
BIN
installer/resources/icons/flags48x48/hu.png
Normal file
After Width: | Height: | Size: 406 B |
BIN
installer/resources/icons/flags48x48/it.png
Normal file
After Width: | Height: | Size: 587 B |
BIN
installer/resources/icons/flags48x48/jp.png
Normal file
After Width: | Height: | Size: 588 B |
BIN
installer/resources/icons/flags48x48/kr.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
installer/resources/icons/flags48x48/lang_ar.png
Normal file
After Width: | Height: | Size: 978 B |
BIN
installer/resources/icons/flags48x48/lang_gl.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
installer/resources/icons/flags48x48/mg.png
Normal file
After Width: | Height: | Size: 460 B |
BIN
installer/resources/icons/flags48x48/nl.png
Normal file
After Width: | Height: | Size: 360 B |
BIN
installer/resources/icons/flags48x48/no.png
Normal file
After Width: | Height: | Size: 572 B |
BIN
installer/resources/icons/flags48x48/pl.png
Normal file
After Width: | Height: | Size: 284 B |
BIN
installer/resources/icons/flags48x48/pt.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
installer/resources/icons/flags48x48/ro.png
Normal file
After Width: | Height: | Size: 656 B |
BIN
installer/resources/icons/flags48x48/ru.png
Normal file
After Width: | Height: | Size: 325 B |
BIN
installer/resources/icons/flags48x48/se.png
Normal file
After Width: | Height: | Size: 532 B |
BIN
installer/resources/icons/flags48x48/sk.png
Normal file
After Width: | Height: | Size: 796 B |
BIN
installer/resources/icons/flags48x48/tr.png
Normal file
After Width: | Height: | Size: 839 B |
BIN
installer/resources/icons/flags48x48/tw.png
Normal file
After Width: | Height: | Size: 737 B |
BIN
installer/resources/icons/flags48x48/ua.png
Normal file
After Width: | Height: | Size: 459 B |
BIN
installer/resources/icons/flags48x48/us.png
Normal file
After Width: | Height: | Size: 558 B |
BIN
installer/resources/icons/flags48x48/vn.png
Normal file
After Width: | Height: | Size: 779 B |
@ -4680,6 +4680,70 @@ p#helptranslate {
|
|||||||
margin: 0 -5px;
|
margin: 0 -5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* large flags */
|
||||||
|
|
||||||
|
.langselect img {
|
||||||
|
margin-top: 2px !important;
|
||||||
|
margin-bottom: 34px !important;
|
||||||
|
margin-left: -70px !important;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border: none !important;
|
||||||
|
box-shadow: none;
|
||||||
|
opacity: 0.9 !important;
|
||||||
|
transform: none !important;
|
||||||
|
filter: drop-shadow(0 0 1px #77d);
|
||||||
|
}
|
||||||
|
|
||||||
|
.langselect input[name="lang"]:checked + img, .langselect input[name="lang"]:checked + #config_ui img[src="/flags.jsp?c=a1"] {
|
||||||
|
margin-top: 6px !important;
|
||||||
|
margin-bottom: 38px !important;
|
||||||
|
width: 32px !important;
|
||||||
|
height: 32px !important;
|
||||||
|
border: none !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
opacity: 1 !important;
|
||||||
|
transform: none !important;
|
||||||
|
animation: glow 20s 10s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.langselect input:hover + img {
|
||||||
|
box-shadow: none !important;
|
||||||
|
border: none !important;
|
||||||
|
transition: none !important;
|
||||||
|
filter: drop-shadow(0 0 2px #f60);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
.langselect input[name="lang"]:checked + img + .ui_lang {
|
||||||
|
margin: -24px -4px 0;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
@keyframes glow {
|
||||||
|
0% {
|
||||||
|
filter: drop-shadow(0 0 1px rgba(256, 100, 0, 0.1));
|
||||||
|
}
|
||||||
|
|
||||||
|
20% {
|
||||||
|
filter: drop-shadow(0 0 1px #f60);
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
filter: drop-shadow(0 0 2px #930);
|
||||||
|
}
|
||||||
|
|
||||||
|
80% {
|
||||||
|
filter: drop-shadow(0 0 1px #d40);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
filter: drop-shadow(0 0 1px rgba(256, 100, 0, 0.1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* end large flags */
|
||||||
|
|
||||||
/* configui password*/
|
/* configui password*/
|
||||||
|
|
||||||
#consolepass th:nth-child(2) {
|
#consolepass th:nth-child(2) {
|
||||||
|
@ -3105,6 +3105,39 @@ td#themeselect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* large flags */
|
||||||
|
|
||||||
|
.langselect img {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border: none !important;
|
||||||
|
margin-top: -6px !important;
|
||||||
|
margin-left: -82px;
|
||||||
|
position: absolute;
|
||||||
|
box-shadow: none;
|
||||||
|
opacity: 0.6;
|
||||||
|
filter: drop-shadow(0 0 1px #000);
|
||||||
|
}
|
||||||
|
|
||||||
|
.langselect input[name="lang"]:checked + img, .langselect input[name="lang"]:checked + #config_ui img[src="/flags.jsp?c=a1"] {
|
||||||
|
width: 32px !important;
|
||||||
|
height: 32px !important;
|
||||||
|
border: none !important;
|
||||||
|
margin-left: -78px;
|
||||||
|
margin-top: -2px !important;
|
||||||
|
margin-bottom: 0;
|
||||||
|
box-shadow: none !important;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.langselect input:hover + img {
|
||||||
|
box-shadow: none !important;
|
||||||
|
transition: none !important;
|
||||||
|
filter: drop-shadow(0 0 1px #f60);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* end large flags */
|
||||||
|
|
||||||
/* end flag as radio icons */
|
/* end flag as radio icons */
|
||||||
|
|
||||||
div.ui_lang { /* lang text label */
|
div.ui_lang { /* lang text label */
|
||||||
|
@ -4818,6 +4818,67 @@ div.langselect br {
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* large flags */
|
||||||
|
|
||||||
|
.langselect img {
|
||||||
|
margin-top: -60px !important;
|
||||||
|
margin-bottom: 34px !important;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border: none !important;
|
||||||
|
box-shadow: none;
|
||||||
|
opacity: 0.9 !important;
|
||||||
|
transform: none !important;
|
||||||
|
filter: drop-shadow(0 0 1px #77d);
|
||||||
|
}
|
||||||
|
|
||||||
|
.langselect input[name="lang"]:checked + img, .langselect input[name="lang"]:checked + #config_ui img[src="/flags.jsp?c=a1"] {
|
||||||
|
margin-top: -56px !important;
|
||||||
|
margin-bottom: 30px !important;
|
||||||
|
width: 32px !important;
|
||||||
|
height: 32px !important;
|
||||||
|
border: none !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
opacity: 1 !important;
|
||||||
|
transform: none !important;
|
||||||
|
animation: glow 20s 10s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.langselect input:hover + img {
|
||||||
|
box-shadow: none !important;
|
||||||
|
border: none !important;
|
||||||
|
transition: none !important;
|
||||||
|
filter: drop-shadow(0 0 2px #f60);
|
||||||
|
}
|
||||||
|
|
||||||
|
.langselect input[name="lang"]:checked + img + .ui_lang {
|
||||||
|
margin: -24px -4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes glow {
|
||||||
|
0% {
|
||||||
|
filter: drop-shadow(0 0 1px rgba(256, 100, 0, 0.1));
|
||||||
|
}
|
||||||
|
|
||||||
|
20% {
|
||||||
|
filter: drop-shadow(0 0 1px #f60);
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
filter: drop-shadow(0 0 2px #930);
|
||||||
|
}
|
||||||
|
|
||||||
|
80% {
|
||||||
|
filter: drop-shadow(0 0 1px #d40);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
filter: drop-shadow(0 0 1px rgba(256, 100, 0, 0.1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* end large flags */
|
||||||
|
|
||||||
div.ui_lang {
|
div.ui_lang {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: #eef url(images/tinytitle.png) center center !important;
|
background: #eef url(images/tinytitle.png) center center !important;
|
||||||
|
@ -3552,6 +3552,38 @@ td#themeselect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* large flags */
|
||||||
|
|
||||||
|
.langselect img {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border: none !important;
|
||||||
|
margin-top: -6px !important;
|
||||||
|
margin-left: -82px;
|
||||||
|
position: absolute;
|
||||||
|
box-shadow: none;
|
||||||
|
opacity: 0.75;
|
||||||
|
filter: drop-shadow(0 0 1px #000);
|
||||||
|
}
|
||||||
|
|
||||||
|
.langselect input[name="lang"]:checked + img, .langselect input[name="lang"]:checked + #config_ui img[src="/flags.jsp?c=a1"] {
|
||||||
|
width: 32px !important;
|
||||||
|
height: 32px !important;
|
||||||
|
border: none !important;
|
||||||
|
margin-left: -78px;
|
||||||
|
margin-top: -2px !important;
|
||||||
|
margin-bottom: 0;
|
||||||
|
box-shadow: none !important;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.langselect input:hover + img {
|
||||||
|
box-shadow: none !important;
|
||||||
|
transition: none !important;
|
||||||
|
filter: drop-shadow(0 0 2px #652787);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* end large flags */
|
||||||
/* end flag as radio icons */
|
/* end flag as radio icons */
|
||||||
|
|
||||||
.ui_lang { /* lang text label */
|
.ui_lang { /* lang text label */
|
||||||
|