mirror of
https://github.com/YunoHost/SSOwat.git
synced 2024-09-03 20:06:27 +02:00
[enh] Integrarte courgette's theme + i18n
This commit is contained in:
parent
b861fb3cd9
commit
83e3b3acb1
29 changed files with 2173 additions and 491 deletions
56
access.lua
56
access.lua
|
@ -384,9 +384,15 @@ function get_data_for(view)
|
|||
local data = {}
|
||||
|
||||
if view == "login.html" then
|
||||
data["title"] = t("login")
|
||||
data = {
|
||||
title = t("login"),
|
||||
connected = false
|
||||
}
|
||||
|
||||
elseif view == "info.html" then
|
||||
elseif view == "info.html"
|
||||
or view == "edit.html"
|
||||
or view == "password.html"
|
||||
or view == "ynhpanel.json" then
|
||||
set_headers(user)
|
||||
|
||||
local mails = get_mails(user)
|
||||
|
@ -395,6 +401,8 @@ function get_data_for(view)
|
|||
connected = true,
|
||||
uid = user,
|
||||
cn = cache:get(user.."-cn"),
|
||||
sn = cache:get(user.."-sn"),
|
||||
givenName = cache:get(user.."-givenName"),
|
||||
mail = mails["mail"],
|
||||
mailalias = mails["mailalias"],
|
||||
maildrop = mails["maildrop"],
|
||||
|
@ -404,50 +412,6 @@ function get_data_for(view)
|
|||
for url, name in pairs(conf["users"][user]) do
|
||||
table.insert(data["app"], { url = url, name = name })
|
||||
end
|
||||
|
||||
elseif view == "password.html" then
|
||||
|
||||
data = {
|
||||
title = t("change_password"),
|
||||
connected = true
|
||||
}
|
||||
|
||||
elseif view == "edit.html" then
|
||||
set_headers(user)
|
||||
|
||||
local mails = get_mails(user)
|
||||
data = {
|
||||
title = t("edit").." "..user,
|
||||
connected = true,
|
||||
uid = user,
|
||||
sn = cache:get(user.."-sn"),
|
||||
givenName = cache:get(user.."-givenName"),
|
||||
mail = mails["mail"],
|
||||
mailalias = mails["mailalias"],
|
||||
maildrop = mails["maildrop"]
|
||||
}
|
||||
|
||||
elseif view == "panel.ms" then
|
||||
data = { app = {} }
|
||||
for url, name in pairs(conf["users"][user]) do
|
||||
table.insert(data["app"], { url = url, name = name })
|
||||
end
|
||||
elseif view == "ynhpanel.json" then
|
||||
local mails = get_mails(user)
|
||||
data = {
|
||||
app = {},
|
||||
user = {
|
||||
uid = user,
|
||||
name = cache:get(user..'-cn'),
|
||||
givenName = cache:get(user..'-givenName'),
|
||||
surname = cache:get(user..'-sn'),
|
||||
mail = mails['mail']
|
||||
},
|
||||
portal_url = portal_url
|
||||
}
|
||||
for url, name in pairs(conf["users"][user]) do
|
||||
table.insert(data["app"], { url = url, name = name })
|
||||
end
|
||||
end
|
||||
|
||||
-- View translation (use "t_key")
|
||||
|
|
83
portal/assets/css/artichaut-buttons.css
Normal file
83
portal/assets/css/artichaut-buttons.css
Normal file
|
@ -0,0 +1,83 @@
|
|||
/* ==========================================================================
|
||||
Sommaire
|
||||
|
||||
1 = Default button
|
||||
2 = Important button
|
||||
3 = Validate button
|
||||
4 = Warning button
|
||||
5 = Classic button
|
||||
========================================================================== */
|
||||
|
||||
/* ==========================================================================
|
||||
1 = Default button
|
||||
========================================================================== */
|
||||
|
||||
.btn {
|
||||
background: #999;
|
||||
display: inline-block;
|
||||
padding: 0.5em 1em;
|
||||
line-height: normal;
|
||||
text-decoration: none;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
.large-btn {
|
||||
padding: 0.8em 1.5em;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
button.btn,
|
||||
input.btn {
|
||||
border:0;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
.btn:hover,
|
||||
.btn:focus {
|
||||
background: #AAA;
|
||||
}
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
2 = Important button
|
||||
========================================================================== */
|
||||
|
||||
.important-btn { background: #c0392b;
|
||||
}
|
||||
.important-btn:hover,
|
||||
.important-btn:focus {
|
||||
background: #e74c3c;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
3 = Validate button
|
||||
========================================================================== */
|
||||
|
||||
.validate-btn { background: #27ae60;
|
||||
}
|
||||
.validate-btn:hover,
|
||||
.validate-btn:focus {
|
||||
background: #2ecc71;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
3 = Warning button
|
||||
========================================================================== */
|
||||
|
||||
.warning-btn { background: #e67e22;
|
||||
}
|
||||
.warning-btn:hover,
|
||||
.warning-btn:focus {
|
||||
background: #f39c12;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
5 = Classic button
|
||||
========================================================================== */
|
||||
|
||||
.classic-btn { background: #2980b9;
|
||||
}
|
||||
.classic-btn:hover,
|
||||
.classic-btn:focus {
|
||||
background: #3498db;
|
||||
}
|
87
portal/assets/css/artichaut-col.css
Normal file
87
portal/assets/css/artichaut-col.css
Normal file
|
@ -0,0 +1,87 @@
|
|||
/* ==========================================================================
|
||||
Sommaire
|
||||
|
||||
1 = col
|
||||
2 = Sidebar Left
|
||||
3 = Sidebar Right
|
||||
4 = Col 2
|
||||
5 = Col 3
|
||||
6 = Col 4
|
||||
========================================================================== */
|
||||
|
||||
.col {
|
||||
letter-spacing: -5px; /*fix bug ff PC*/
|
||||
}
|
||||
|
||||
.col > * {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
letter-spacing: normal;
|
||||
}
|
||||
|
||||
.colMarge > * {
|
||||
margin-left: 1%;
|
||||
}
|
||||
|
||||
.colNomarge > * {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
2 = Sidebar left
|
||||
========================================================================== */
|
||||
|
||||
.colSidebarLeft > *:first-child {
|
||||
width:31%;
|
||||
margin-left:0;
|
||||
}
|
||||
.colSidebarLeft > *:first-child + * { width:68%; }
|
||||
|
||||
/* ==========================================================================
|
||||
3 = Sidebar right
|
||||
========================================================================== */
|
||||
|
||||
.colSidebarRight > *:first-child {
|
||||
width:68%;
|
||||
margin-left:0;
|
||||
}
|
||||
.colSidebarRight > *:first-child + * { width:31%; }
|
||||
|
||||
/* ==========================================================================
|
||||
4 = col 2
|
||||
========================================================================== */
|
||||
|
||||
.col2 > * {
|
||||
width: 49.5%!important;
|
||||
margin-bottom: 1%;
|
||||
}
|
||||
|
||||
.col2 > *:nth-child(2n+1) {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
5 = col 3
|
||||
========================================================================== */
|
||||
|
||||
.col3 > * {
|
||||
width: 32.65%;
|
||||
margin-bottom: 1%;
|
||||
}
|
||||
|
||||
.col3 > *:nth-child(3n+1) {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
6 = col 4
|
||||
========================================================================== */
|
||||
|
||||
.col4 > * {
|
||||
width: 24.25%;
|
||||
margin-bottom: 1%;
|
||||
}
|
||||
|
||||
.col4 > *:nth-child(4n+1) {
|
||||
margin-left: 0;
|
||||
}
|
15
portal/assets/css/artichaut-messages.css
Normal file
15
portal/assets/css/artichaut-messages.css
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* ==========================================================================
|
||||
Sommaire
|
||||
|
||||
1 = Messages
|
||||
========================================================================== */
|
||||
|
||||
.messages {
|
||||
color: #FFF;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.danger { background: #c0392b; }
|
||||
.warning { background: #e67e22; }
|
||||
.success { background: #27ae60; }
|
||||
.info { background: #2980b9; }
|
265
portal/assets/css/artichaut.css
Normal file
265
portal/assets/css/artichaut.css
Normal file
|
@ -0,0 +1,265 @@
|
|||
/*
|
||||
Ratatouille mini Framework css by Thomas LEBEAU
|
||||
Base on KNACSS => www.KNACSS.com (2013-10) @author: Raphael Goetter, Alsacreations
|
||||
and normalize.css
|
||||
*/
|
||||
|
||||
/* ==========================================================================
|
||||
Sommaire
|
||||
|
||||
1 = Mise en Forme
|
||||
2 = Mise en Page
|
||||
3 = Internet Explorer
|
||||
========================================================================== */
|
||||
|
||||
/* ==========================================================================
|
||||
1 = Mise en forme
|
||||
========================================================================== */
|
||||
|
||||
* {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: sans-serif; /* 1 */
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 1em;
|
||||
line-height:1.5;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1:first-child,
|
||||
h2:first-child,
|
||||
h3:first-child,
|
||||
h4:first-child,
|
||||
h5:first-child,
|
||||
h6:first-child,
|
||||
p:first-child,
|
||||
ul:first-child,
|
||||
ol:first-child,
|
||||
dl:first-child{
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, serif;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
|
||||
.upper {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.inner {
|
||||
margin: 0 auto;
|
||||
max-width: 61.25em;/*980px*/
|
||||
}
|
||||
|
||||
table, img {
|
||||
max-width: 100%;
|
||||
height :auto;
|
||||
}
|
||||
|
||||
iframe {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.fl {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fr {
|
||||
float: right;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit;
|
||||
font-size: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield;
|
||||
}
|
||||
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0){
|
||||
select{
|
||||
-webkit-appearance: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
2 = Mise en page
|
||||
========================================================================== */
|
||||
|
||||
.ul-reset {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.ul-reset li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.dib {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.dblock { display: block; }
|
||||
|
||||
.dnone { display: none; }
|
||||
|
||||
.dtable { display:table }
|
||||
|
||||
.dtable > * { display:table-row; }
|
||||
|
||||
.dtable > * > * { display:table-cell; }
|
||||
|
||||
.element-invisible {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
.x-text-small { font-size:x-small; }
|
||||
|
||||
.text-small { font-size:small; }
|
||||
|
||||
.text-large { font-size:large; }
|
||||
|
||||
.x-text-large { font-size:x-large; }
|
||||
|
||||
/*Width*/
|
||||
|
||||
.w100 { width:100%; }
|
||||
.w90 { width:90%; }
|
||||
.w80 { width:80%; }
|
||||
.w70 { width:70%; }
|
||||
.w60 { width:60%; }
|
||||
.w50 { width:50%; }
|
||||
.w40 { width:40%; }
|
||||
.w30 { width:30%; }
|
||||
.w20 { width:20%; }
|
||||
.w10 { width:10%; }
|
||||
|
||||
h1,
|
||||
.h1 {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
|
||||
h2,
|
||||
.h2 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
|
||||
h3,
|
||||
.h3 {
|
||||
font-size: 1.4em;
|
||||
}
|
||||
|
||||
h4,
|
||||
.h4 {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
h5,
|
||||
.h5 {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
h6,
|
||||
.h6 {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
/*Table*/
|
||||
|
||||
table {
|
||||
color: #999;
|
||||
min-width: 100%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
table thead {
|
||||
background: #CCC;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
padding: 0.5em;
|
||||
color: #333;
|
||||
border-color: #999;
|
||||
}
|
||||
|
||||
.box {
|
||||
padding: 1.5em;
|
||||
}
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Internet Explorer
|
||||
========================================================================== */
|
||||
|
||||
/*IE8 and IE9*/
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*IE8 and IE9*/
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
video {
|
||||
display: inline-block;
|
||||
}
|
||||
|
46
portal/assets/css/fonts.css
Normal file
46
portal/assets/css/fonts.css
Normal file
File diff suppressed because one or more lines are too long
621
portal/assets/css/ynh-style.css
Normal file
621
portal/assets/css/ynh-style.css
Normal file
|
@ -0,0 +1,621 @@
|
|||
/* ==========================================================================
|
||||
Sommaire
|
||||
1 = Layout general
|
||||
2 = Apps
|
||||
3 = User
|
||||
4 = Login Form
|
||||
5 = Colors
|
||||
6 = Form Edit
|
||||
========================================================================== */
|
||||
|
||||
/* ==========================================================================
|
||||
1 = Layout general
|
||||
========================================================================== */
|
||||
|
||||
body {
|
||||
background: #41444F;
|
||||
font-family: 'source_sans_proregular';
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
|
||||
/* Layout */
|
||||
|
||||
.overlay {
|
||||
padding: 2%;
|
||||
}
|
||||
|
||||
.inner {
|
||||
max-width: 50em;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
width: 90%;
|
||||
margin: 2% 5%;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.logo {
|
||||
text-align: center;
|
||||
margin-bottom: 0;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.logo img {
|
||||
border-radius: 5px;
|
||||
margin-top: 1em;
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.logged .logo {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
right: 1em;
|
||||
z-index: 0;
|
||||
opacity: 0.7;
|
||||
}
|
||||
.logged .logo img {
|
||||
width: 2.5em;
|
||||
padding: 0.3em;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.ynh-panel-active .logo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.messages {
|
||||
max-width: none;
|
||||
text-align: center;
|
||||
width: 90%;
|
||||
margin: 2% 5%;
|
||||
padding: 1.5em 15%;
|
||||
}
|
||||
|
||||
|
||||
/* Fonts & Colors */
|
||||
|
||||
a { text-decoration: none; }
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: 'source_sans_probold';
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.cwhite {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
select,
|
||||
.form-text,
|
||||
textarea {
|
||||
border: 0;
|
||||
font-family: 'source_sans_proregular';
|
||||
}
|
||||
|
||||
|
||||
.sourcePro {
|
||||
font-family: 'source_sans_proregular';
|
||||
}
|
||||
|
||||
.sourceProBold {
|
||||
font-family: 'source_sans_probold';
|
||||
}
|
||||
|
||||
.sourceProBlack {
|
||||
font-family: 'SourceSansPro-Black';
|
||||
}
|
||||
|
||||
|
||||
/* Icons */
|
||||
|
||||
[class^="icon-"]:before, [class*=" icon-"]:before {
|
||||
font-family: 'icomoon';
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
margin-right: 0.5em;
|
||||
|
||||
/* Better Font Rendering =========== */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-user:before {
|
||||
content: "\e800";
|
||||
}
|
||||
.icon-lock:before {
|
||||
content: "\e801";
|
||||
}
|
||||
.icon-left-open:before {
|
||||
content: "\e802";
|
||||
}
|
||||
.icon-right-open-1:before {
|
||||
content: "\e803";
|
||||
}
|
||||
.icon-upload:before {
|
||||
content: "\e604";
|
||||
}
|
||||
.icon-comments:before {
|
||||
content: "\e602";
|
||||
}
|
||||
.icon-envelope:before {
|
||||
content: "\e603";
|
||||
}
|
||||
.icon-connexion:before {
|
||||
content: "\e600";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
2 = Apps
|
||||
========================================================================== */
|
||||
|
||||
.apps { margin: 4% 5%; }
|
||||
|
||||
.first-letter:before {
|
||||
content: attr(data-first-letter);
|
||||
}
|
||||
|
||||
.listing-apps li {
|
||||
margin: 0 0 1em 1em;
|
||||
box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4),
|
||||
-2px -2px 3px 0 rgba(0, 0, 0, 0.7) inset;
|
||||
}
|
||||
|
||||
.listing-apps a {
|
||||
display: block;
|
||||
position: relative;
|
||||
padding: 0.2em;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 2.7em;
|
||||
height: 2.7em;
|
||||
background: #666;
|
||||
color: #FFFFFF;
|
||||
font-size: 4em;
|
||||
transition: all 0.3s ease;
|
||||
-webkit-transition: all 0.3s ease;
|
||||
}
|
||||
.listing-apps a:hover,
|
||||
.listing-apps a:focus {
|
||||
left: -10px;
|
||||
top: -10px;
|
||||
box-shadow: none;
|
||||
}
|
||||
.listing-apps a:hover:before,
|
||||
.listing-apps a:focus:before {
|
||||
height: 10px;
|
||||
}
|
||||
.listing-apps a:hover:after,
|
||||
.listing-apps a:focus:after {
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
.listing-apps a:hover:after,
|
||||
.listing-apps a:focus:after,
|
||||
.listing-apps a:hover:before,
|
||||
.listing-apps a:focus:before {
|
||||
background: #333;
|
||||
}
|
||||
|
||||
.listing-apps a:after,
|
||||
.listing-apps a:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
transition: all 0.3s ease;
|
||||
-webkit-transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.listing-apps a:before {
|
||||
width: 100%;
|
||||
height: 0;
|
||||
left: 5px;
|
||||
top: 100%;
|
||||
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.4);
|
||||
transform: skew(45deg, 0deg);
|
||||
-webkit-transform: skew(45deg, 0deg);
|
||||
}
|
||||
|
||||
.listing-apps a:after {
|
||||
width: 0;
|
||||
height: 100%;
|
||||
left: 100%;
|
||||
top: 5px;
|
||||
box-shadow: 5px 0 10px rgba(0, 0, 0, 0.4);
|
||||
transform: skew(0deg, 45deg);
|
||||
-webkit-transform: skew(0deg, 45deg);
|
||||
}
|
||||
|
||||
.listing-apps span {
|
||||
display: block;
|
||||
margin: -1.2em 0 0 0.2em;
|
||||
}
|
||||
.listing-apps .first-letter { margin: 0; }
|
||||
.listing-apps span + span { font-size: 0.3em; }
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
3 = User
|
||||
========================================================================== */
|
||||
|
||||
.user-container { padding: 0.4em 1em; }
|
||||
|
||||
.user-container a { color: #FFF; }
|
||||
|
||||
.user-container h2 {
|
||||
font-size: 1.5em;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.user-container h2 small {
|
||||
font-size: 0.75em;
|
||||
font-family: 'source_sans_proregular';
|
||||
display: block;
|
||||
margin-top: -0.6em;
|
||||
}
|
||||
|
||||
.user-info { margin-left: 0.5em;}
|
||||
|
||||
.user-mail {
|
||||
color: #999;
|
||||
font-size: 0.9em;
|
||||
display: block;
|
||||
margin-top: -0.2em;
|
||||
}
|
||||
|
||||
.user-img {
|
||||
margin-right: 1em;
|
||||
border: 3px solid #FFF;
|
||||
width: 4em;
|
||||
height: 4em;
|
||||
border-radius: 90px;
|
||||
overflow: hidden;
|
||||
margin: 0.2em auto;
|
||||
}
|
||||
|
||||
.user-menu {
|
||||
float: right;
|
||||
}
|
||||
.user-menu a {
|
||||
color: #999;
|
||||
display: block;
|
||||
padding: 1.25em 3em;
|
||||
position: relative;
|
||||
transition: all 0.3s ease;
|
||||
-webkit-transition: all 0.3s ease;
|
||||
z-index: 1;
|
||||
}
|
||||
.user-menu a:hover,
|
||||
.user-menu a:focus {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
4 = Forms
|
||||
========================================================================== */
|
||||
|
||||
|
||||
/* Extend artichaut-buttons.css */
|
||||
.link-btn { background: none;}
|
||||
.link-btn:hover,
|
||||
.link-btn:focus {background: none;text-decoration: underline;}
|
||||
|
||||
|
||||
.form-text {
|
||||
padding: 0.8em;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
.form-section {
|
||||
/*float: left;*/
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
width: 47%;
|
||||
}
|
||||
.form-section + .form-section {margin-left:5%;}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
padding: 0.3em 1em;
|
||||
background: rgba(0, 0, 0, 0.25);
|
||||
color: #FFF;
|
||||
font-size: 1.2em;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 0em;
|
||||
font-family: 'source_sans_probold';
|
||||
font-weight: normal;
|
||||
}
|
||||
label {cursor: pointer;}
|
||||
|
||||
label + .help-link {
|
||||
display: inline-block;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
.btn {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
margin-top: 4em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
background: none;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.form-text {
|
||||
background: #41444F;
|
||||
background: none repeat scroll 0 0 rgba(255, 255, 255, 0.3);
|
||||
color: #FFFFFF;
|
||||
padding: 0.8em;
|
||||
margin-bottom: 0.3em;
|
||||
display: block;
|
||||
}
|
||||
.form-test:-moz-placeholder{color:#999999;}
|
||||
.form-text::-moz-placeholder{color:#999999;}
|
||||
.form-text:-ms-input-placeholder{color:#999999;}
|
||||
.form-text::-webkit-input-placeholder{color:#999999;}
|
||||
|
||||
|
||||
.form-text:last-child {margin-bottom:0;}
|
||||
|
||||
.form-text:hover,
|
||||
.form-text:focus {
|
||||
background-color: rgba(255, 255, 255, 0.15);
|
||||
}
|
||||
|
||||
.form-text:disabled { color: #999; }
|
||||
.form-text:disabled:hover {background-color:rgba(255, 255, 255, 0.3);}
|
||||
input:disabled {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
4 = Login form
|
||||
========================================================================== */
|
||||
|
||||
.login-form {
|
||||
width: 21em;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.login-form .btn {
|
||||
width: 100%;
|
||||
padding: 0.8em 1em;
|
||||
}
|
||||
|
||||
.login-form .form-group {
|
||||
position: relative;
|
||||
margin-bottom: 1em;
|
||||
background: #FFF;
|
||||
}
|
||||
|
||||
.login-form label {
|
||||
display: inline-block;
|
||||
min-width: 1em;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.login-form label:before {
|
||||
background: #EEE;
|
||||
color: #666;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 2.5em;
|
||||
height: 100%;
|
||||
line-height: 2.5em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.login-form .form-text {
|
||||
padding: 0.8em 0.8em 0.8em 3em;
|
||||
width: 100%;
|
||||
background: #FFF;
|
||||
color: #41444F;
|
||||
}
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
5 = Colors
|
||||
========================================================================== */
|
||||
|
||||
.listing-apps .purplebg {
|
||||
background: #9B59B6!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.purplebg:hover:after,
|
||||
.purplebg:focus:after,
|
||||
.purplebg:hover:before,
|
||||
.purplebg:focus:before {
|
||||
background: #532C64!important;
|
||||
}
|
||||
.yellowbg {
|
||||
background: #F1C40F!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.yellowbg:hover:after,
|
||||
.yellowbg:focus:after,
|
||||
.yellowbg:hover:before,
|
||||
.yellowbg:focus:before {
|
||||
background: #796307!important;
|
||||
}
|
||||
.pinkbg {
|
||||
background: #D66D92!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.pinkbg:hover:after,
|
||||
.pinkbg:focus:after,
|
||||
.pinkbg:hover:before,
|
||||
.pinkbg:focus:before {
|
||||
background: #992B52!important;
|
||||
}
|
||||
.orangebg {
|
||||
background: #F39C12!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.orangebg:hover:after,
|
||||
.orangebg:focus:after,
|
||||
.orangebg:hover:before,
|
||||
.orangebg:focus:before {
|
||||
background: #7F5006!important;
|
||||
}
|
||||
.redbg {
|
||||
background: #E74C3C!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.redbg:hover:after,
|
||||
.redbg:focus:after,
|
||||
.redbg:hover:before,
|
||||
.redbg:focus:before {
|
||||
background: #921E12!important;
|
||||
}
|
||||
.turquoisebg {
|
||||
background: #1ABC9C!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.turquoisebg:hover:after,
|
||||
.turquoisebg:focus:after,
|
||||
.turquoisebg:hover:before,
|
||||
.turquoisebg:focus:before {
|
||||
background: #0B4C3F!important;
|
||||
}
|
||||
.bluebg {
|
||||
background: #3498DB!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.bluebg:hover:after,
|
||||
.bluebg:focus:after,
|
||||
.bluebg:hover:before,
|
||||
.bluebg:focus:before {
|
||||
background: #16527A!important;
|
||||
}
|
||||
.greenbg {
|
||||
background: #2ECC71!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.greenbg:hover:after,
|
||||
.greenbg:focus:after,
|
||||
.greenbg:hover:before,
|
||||
.greenbg:focus:before {
|
||||
background: #176437!important;
|
||||
}
|
||||
.darkbluebg {
|
||||
background: #34495E!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.darkbluebg:hover:after,
|
||||
.darkbluebg:focus:after,
|
||||
.darkbluebg:hover:before,
|
||||
.darkbluebg:focus:before {
|
||||
background: #07090C!important;
|
||||
}
|
||||
.lightbluebg {
|
||||
background: #6A93D4!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.lightbluebg:hover:after,
|
||||
.lightbluebg:focus:after,
|
||||
.lightbluebg:hover:before,
|
||||
.lightbluebg:focus:before {
|
||||
background: #2B5394!important;
|
||||
}
|
||||
.lightpinkbg {
|
||||
background: #F76F87!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.lightpinkbg:hover:after,
|
||||
.lightpinkbg:focus:after,
|
||||
.lightpinkbg:hover:before,
|
||||
.lightpinkbg:focus:before {
|
||||
background: #DA0C31!important;
|
||||
}
|
||||
.lightyellow {
|
||||
background: #FFC973!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.lightyellow:hover:after,
|
||||
.lightyellow:focus:after,
|
||||
.lightyellow:hover:before,
|
||||
.lightyellow:focus:before {
|
||||
background: #F39500!important;
|
||||
}
|
||||
.lightgreen {
|
||||
background: #B5F36D!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.lightgreen:hover:after,
|
||||
.lightgreen:focus:after,
|
||||
.lightgreen:hover:before,
|
||||
.lightgreen:focus:before {
|
||||
background: #77CF11!important;
|
||||
}
|
||||
.purpledarkbg {
|
||||
background: #8E44AD!important;
|
||||
transition: all 0.2s ease 0s;
|
||||
-webkit-transition: all 0.2s ease 0s;
|
||||
}
|
||||
.purpledarkbg:hover:after,
|
||||
.purpledarkbg:focus:after,
|
||||
.purpledarkbg:hover:before,
|
||||
.purpledarkbg:focus:before {
|
||||
background: #432051!important;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
6 = Form Edit
|
||||
========================================================================== */
|
||||
|
||||
|
||||
.form-edit .form-group .btn:before {
|
||||
content:"+";
|
||||
display: inline-block;
|
||||
padding-right: 0.75em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
.form-section:first-child .btn-group {
|
||||
text-align: left;
|
||||
}
|
File diff suppressed because one or more lines are too long
BIN
portal/assets/fonts/SourceSansPro-Black.eot
Executable file
BIN
portal/assets/fonts/SourceSansPro-Black.eot
Executable file
Binary file not shown.
BIN
portal/assets/fonts/SourceSansPro-Black.ttf
Executable file
BIN
portal/assets/fonts/SourceSansPro-Black.ttf
Executable file
Binary file not shown.
BIN
portal/assets/fonts/icomoon.eot
Executable file
BIN
portal/assets/fonts/icomoon.eot
Executable file
Binary file not shown.
BIN
portal/assets/fonts/icomoon.ttf
Executable file
BIN
portal/assets/fonts/icomoon.ttf
Executable file
Binary file not shown.
BIN
portal/assets/fonts/sourcesanspro-bold-webfont.eot
Executable file
BIN
portal/assets/fonts/sourcesanspro-bold-webfont.eot
Executable file
Binary file not shown.
BIN
portal/assets/fonts/sourcesanspro-bold-webfont.ttf
Executable file
BIN
portal/assets/fonts/sourcesanspro-bold-webfont.ttf
Executable file
Binary file not shown.
BIN
portal/assets/fonts/sourcesanspro-regular-webfont.eot
Executable file
BIN
portal/assets/fonts/sourcesanspro-regular-webfont.eot
Executable file
Binary file not shown.
BIN
portal/assets/fonts/sourcesanspro-regular-webfont.ttf
Executable file
BIN
portal/assets/fonts/sourcesanspro-regular-webfont.ttf
Executable file
Binary file not shown.
34
portal/assets/img/logo-ynh-white.svg
Normal file
34
portal/assets/img/logo-ynh-white.svg
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||
]>
|
||||
<svg version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||
x="0px" y="0px" width="98px" height="85px" viewBox="-0.25 -0.25 98 85"
|
||||
overflow="visible" enable-background="new -0.25 -0.25 98 85" xml:space="preserve">
|
||||
<defs>
|
||||
</defs>
|
||||
<path fill="#FFFFFF" d="M97,51c-2.02,4.98-8.33,5.67-14,7c-0.609,6.29,3.05,10.95-1,16c-6.41-0.26-7.471-5.859-7-13c-1,0-2,0-3,0
|
||||
c-2.09,2.77,0.9,4.52,0,8c-1.12,4.34-7.88,7.91-11,7c-2.18-0.641-5.96-6.63-5-12c2.82-2.71,2.76,3.12,6,3c5.05-7.84-9.63-8.55-8-17
|
||||
c1.24-6.42,11.66-9.66,15-1c1.54,4.21-5.17,0.16-5,3c-0.279,1.62,0.95,1.72,1,3c2.52,0.77,1.68-2.16,3-3c1.859-1.17,3.09-0.75,6-1
|
||||
c2.45-2.55,1.08-8.92,4-11c3.87,0.46,6.08,2.59,6,7C91.01,46.109,94.3,46.05,97,51z"/>
|
||||
<path fill="#FFFFFF" d="M87,13c0.609,3.21,2.32,4.98,2,8c-0.34,3.21-2.9,8.83-4,9c-1.17,0.18-1.34,1.78-2,2
|
||||
c-4.66,1.57-12.391-1.48-14-7c-1.16-3.97,1.9-13.37,4-17c1.3-2.25,1.221-2.99,5-4c2.41-0.65,3.65-2.25,6,0
|
||||
c0.471,0.45,1.3,0.49,1.85,0.89c-0.199,0,2,3.14,2.15,4.11C88.32,11.07,86.77,11.78,87,13z M79,22c1.779-1.89,3.29-4.04,3-8
|
||||
C77.49,12.33,74.67,21.3,79,22z"/>
|
||||
<path fill="#FFFFFF" d="M67,21c-0.07,5.81,2.48,10.7,0,15c-6.73,1.06-7.24-4.1-11-6c-1.939,1.39-1.49,5.18-3,7
|
||||
c-3.78,0.44-4.69-1.97-7-3c2.47-7.81,1.26-18.98,2-26c8.58-0.58,7.68,8.32,12,12c0.52-4.34-0.359-15.52,3-20
|
||||
C70.33,3.29,67.09,12.99,67,21z"/>
|
||||
<path fill="#FFFFFF" d="M52,55c1.93,8.41,0.12,22.689-12,20c-1.59-0.35-8.42-5.22-9-7c-1.62-5,0.34-13.34,3-16
|
||||
C39.03,46.97,45.48,50.359,52,55z M39,66c4.55,0.96,6.3-4.2,4-7C39.37,59.03,38.61,61.939,39,66z"/>
|
||||
<path fill="#FFFFFF" d="M39,8c5.58,0.9,6.4,6.81,5,15c-1.43,8.38-3.02,14.59-9,15c-9.57,0.65-12.25-16.69-9-29
|
||||
c8.32,1.27,6.59,10.36,6,17c2.71,0.83,2.2-0.85,3-2C37.05,21.04,37.82,13.61,39,8z"/>
|
||||
<path fill="#FFFFFF" d="M28,62c0.1,5.67,4.4,11.33,2,17c-4.32-1.01-6.57-4.09-9-7c-3.15-0.48-2.26,3.07-6,2
|
||||
c-0.67,5.061,2.29,7.57-1,10c-4.7-0.63-6.66-4-8-8c-2.61-1.38-5.48-2.52-6-6c0.14-3.53,4.48-2.85,7-4c0.47-5.53-1.41-13.41,2-16
|
||||
c8.31,0.49,8.21,7.13,7,15c4.36,0.29,4.94-4.35,5-7c0.06-2.43-1.82-8.26,2-11c3.06-0.73,2.94,1.73,6,1
|
||||
C32.35,52.7,27.92,57.439,28,62z"/>
|
||||
<path fill="#FFFFFF" d="M24,12c1.07,7.07-3.86,8.14-6,12c0.21,6.88-0.47,12.86-2,18c-5.86-1.32-8.7-10.38-6-17
|
||||
c-0.33-3.52-5.26-4.22-7-8c-0.3-0.66-0.47-4.43-1-7C1.09,5.63,0.55,4.31,3,1c8.16-0.49,7.21,8.13,9,14c5.05,0.39,3.91-5.42,8-6
|
||||
C20.98,10.35,22.67,11,24,12z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
38
portal/assets/img/logo-ynh.svg
Normal file
38
portal/assets/img/logo-ynh.svg
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
|
||||
]>
|
||||
<svg version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
|
||||
x="0px" y="0px" width="98px" height="85px" viewBox="0 0 98 85" overflow="visible" enable-background="new 0 0 98 85"
|
||||
xml:space="preserve">
|
||||
<defs>
|
||||
</defs>
|
||||
<g id="XMLID_2_">
|
||||
<g>
|
||||
<path d="M97.25,51.25c-2.02,4.98-8.33,5.67-14,7c-0.61,6.29,3.05,10.95-1,16c-6.41-0.26-7.47-5.86-7-13c-1,0-2,0-3,0
|
||||
c-2.09,2.77,0.9,4.52,0,8c-1.12,4.34-7.88,7.91-11,7c-2.18-0.64-5.96-6.63-5-12c2.82-2.71,2.76,3.12,6,3c5.05-7.84-9.63-8.55-8-17
|
||||
c1.24-6.42,11.66-9.66,15-1c1.54,4.21-5.17,0.16-5,3c-0.28,1.62,0.95,1.72,1,3c2.52,0.77,1.68-2.16,3-3c1.86-1.17,3.09-0.75,6-1
|
||||
c2.45-2.55,1.08-8.92,4-11c3.87,0.46,6.08,2.59,6,7C91.26,46.36,94.55,46.3,97.25,51.25z"/>
|
||||
<path d="M87.25,13.25c0.61,3.21,2.32,4.98,2,8c-0.34,3.21-2.9,8.83-4,9c-1.17,0.18-1.34,1.78-2,2c-4.66,1.57-12.39-1.48-14-7
|
||||
c-1.16-3.97,1.9-13.37,4-17c1.3-2.25,1.22-2.99,5-4c2.41-0.65,3.65-2.25,6,0c0.47,0.45,1.3,0.49,1.85,0.89
|
||||
c-0.199,0,2,3.14,2.15,4.11C88.57,11.32,87.02,12.03,87.25,13.25z M79.25,22.25c1.78-1.89,3.29-4.04,3-8
|
||||
C77.74,12.58,74.92,21.55,79.25,22.25z"/>
|
||||
<path d="M67.25,21.25c-0.07,5.81,2.48,10.7,0,15c-6.73,1.06-7.24-4.1-11-6c-1.94,1.39-1.49,5.18-3,7c-3.78,0.44-4.69-1.97-7-3
|
||||
c2.47-7.81,1.26-18.98,2-26c8.58-0.58,7.68,8.32,12,12c0.52-4.34-0.36-15.52,3-20C70.58,3.54,67.34,13.24,67.25,21.25z"/>
|
||||
<path d="M52.25,55.25c1.93,8.41,0.12,22.69-12,20c-1.59-0.35-8.42-5.22-9-7c-1.62-5,0.34-13.34,3-16
|
||||
C39.28,47.22,45.73,50.61,52.25,55.25z M39.25,66.25c4.55,0.96,6.3-4.2,4-7C39.62,59.28,38.86,62.19,39.25,66.25z"/>
|
||||
<path d="M39.25,8.25c5.58,0.9,6.4,6.81,5,15c-1.43,8.38-3.02,14.59-9,15c-9.57,0.65-12.25-16.69-9-29c8.32,1.27,6.59,10.36,6,17
|
||||
c2.71,0.83,2.2-0.85,3-2C37.3,21.29,38.07,13.86,39.25,8.25z"/>
|
||||
<path d="M28.25,62.25c0.1,5.67,4.4,11.33,2,17c-4.32-1.01-6.57-4.09-9-7c-3.15-0.48-2.26,3.07-6,2c-0.67,5.06,2.29,7.57-1,10
|
||||
c-4.7-0.63-6.66-4-8-8c-2.61-1.38-5.48-2.52-6-6c0.14-3.53,4.48-2.85,7-4c0.47-5.53-1.41-13.41,2-16c8.31,0.49,8.21,7.13,7,15
|
||||
c4.36,0.29,4.94-4.35,5-7c0.06-2.43-1.82-8.26,2-11c3.06-0.73,2.94,1.73,6,1C32.6,52.95,28.17,57.69,28.25,62.25z"/>
|
||||
<path d="M24.25,12.25c1.07,7.07-3.86,8.14-6,12c0.21,6.88-0.47,12.86-2,18c-5.86-1.32-8.7-10.38-6-17c-0.33-3.52-5.26-4.22-7-8
|
||||
c-0.3-0.66-0.47-4.43-1-7c-0.91-4.37-1.45-5.69,1-9c8.16-0.49,7.21,8.13,9,14c5.05,0.39,3.91-5.42,8-6
|
||||
C21.23,10.6,22.92,11.25,24.25,12.25z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.7 KiB |
26
portal/assets/js/global.js
Normal file
26
portal/assets/js/global.js
Normal file
|
@ -0,0 +1,26 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var liMenu = document.querySelectorAll('#apps a'),
|
||||
colors = ['bluebg','purplebg','redbg','orangebg','greenbg','darkbluebg','lightbluebg','yellowbg','lightpinkbg'],
|
||||
addMailAlias = document.getElementById('add-mailalias'),
|
||||
addMaildrop = document.getElementById('add-maildrop'),
|
||||
formMailAlias = document.getElementById('form-add-mail-alias'),
|
||||
formMailDrop = document.getElementById('form-add-mail-drop');
|
||||
|
||||
[].forEach.call(liMenu, function(el, i) {
|
||||
var text = el.textContent,
|
||||
splitText = text.split("");
|
||||
|
||||
el.classList.add(colors[i]);
|
||||
el.querySelector('.first-letter').setAttribute('data-first-letter',splitText[0]+splitText[1]);
|
||||
});
|
||||
|
||||
addMailAlias.addEventListener('click', function(){
|
||||
var inputAlias = document.querySelector('.mailalias-input');
|
||||
formMailAlias.insertBefore(inputAlias.cloneNode(true), addMailAlias);
|
||||
});
|
||||
|
||||
addMaildrop.addEventListener('click', function(){
|
||||
var inputDrop = document.querySelector('.maildrop-input');
|
||||
formMailDrop.insertBefore(inputDrop.cloneNode(true), addMaildrop);
|
||||
});
|
||||
});
|
|
@ -135,6 +135,16 @@ domReady(function(){
|
|||
portal.setAttribute('href', '/ynhsso/');
|
||||
document.body.insertBefore(portal, null);
|
||||
|
||||
// Create overlay element
|
||||
var overlay = document.createElement("div");
|
||||
overlay.setAttribute("id","ynhoverlay");
|
||||
overlay.setAttribute("style","display:none");
|
||||
|
||||
document.body.insertBefore(overlay, null);
|
||||
|
||||
//Color Application
|
||||
var colors = ['bluebg','purplebg','redbg','orangebg','greenbg','darkbluebg','lightbluebg','yellowbg','lightpinkbg'];
|
||||
|
||||
// Get user's app
|
||||
var r = new XMLHttpRequest();
|
||||
r.open("GET", "/ynhpanel.json", true);
|
||||
|
@ -143,55 +153,102 @@ domReady(function(){
|
|||
if (r.readyState != 4 || r.status != 200) return;
|
||||
|
||||
// Response is JSON
|
||||
document.querySelector('body').classList.add('ynh-panel-active');
|
||||
response = JSON.parse(r.responseText);
|
||||
|
||||
// Create overlay element
|
||||
var overlay = document.createElement("div");
|
||||
overlay.setAttribute("id","ynhoverlay");
|
||||
|
||||
// Append close button
|
||||
var closeBtn = document.createElement("div");
|
||||
/*var closeBtn = document.createElement("div");
|
||||
closeBtn.setAttribute("id","ynhclose");
|
||||
closeBtn.innerHTML = "X";
|
||||
overlay.insertBefore(closeBtn, null);
|
||||
overlay.insertBefore(closeBtn, null);*/
|
||||
|
||||
// Add overlay header
|
||||
overlay.innerHTML += '<div class="header">' +
|
||||
'<h1>'+ response.user.name +' <small>'+ response.user.mail +'</small></h1>' +
|
||||
'' +
|
||||
// '<a class="account-link" href="'+ response.portal_url +'">'+ response.user.uid +'</a>' +
|
||||
'<a class="account-link" href="'+ response.portal_url +'edit.html">Edit</a>' +
|
||||
' | <a class="logout-link" href="'+ response.portal_url +'password.html">Change password</a>' +
|
||||
' | <a class="logout-link" href="'+ response.portal_url +'?action=logout">Logout</a>' +
|
||||
overlay.innerHTML += '<div class="wrapper">' +
|
||||
'<ul class="ul-reset user-menu"><li><a class="icon icon-connexion" href="'+ response.portal_url +'?action=logout">Logout</a></li></ul>'+
|
||||
'<div id="yuno-user" class="user-container col colNomarge">'+
|
||||
'<a class="user-img" href="'+ response.portal_url +'edit.html"><img src="'+ response.portal_url +'assets/img/avatar.png"></a>' +
|
||||
'<div class="user-info">' +
|
||||
'<h2><a href="'+ response.portal_url +'edit.html">'+ response.user.uid +'<small>'+ response.user.name +'</small></</a></h2>'+
|
||||
'<span class="user-mail">'+ response.user.mail +'</span>'+
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
|
||||
// Add application links
|
||||
var links = [];
|
||||
Array.each(response.app, function(app){
|
||||
links.push('<li><a href="//'+app.url+'" data-first-letter="'+ app.name.substr(0,1) +'">'+app.name+'</a></li>');
|
||||
Array.prototype.forEach.call(response.app, function(app, n){
|
||||
links.push('<li><a class="'+colors[n]+'" href="//'+app.url+'"><span class="first-letter" data-first-letter="'+ app.name.substr(0,2) +'"></span><span class="sourcePro">'+app.name+'</span></a></li>');
|
||||
});
|
||||
overlay.innerHTML += '<ul>'+ links.join('') +'</ul>';
|
||||
overlay.innerHTML += '<div id="yuno-apps" class="wrapper apps"><ul class="ul-reset listing-apps col colNomarge sourceProBold">'+ links.join('') +'</ul></div>';
|
||||
|
||||
// Add overlay to DOM
|
||||
document.body.insertBefore(overlay, null);
|
||||
|
||||
var ynhssoPath = window.location.pathname;
|
||||
|
||||
if(ynhssoPath == '/ynhsso/') {
|
||||
//Element.toggleClass(overlay, 'visible');
|
||||
Element.toggleClass(portal, 'visible');
|
||||
}
|
||||
|
||||
var btn = document.getElementById('logo'),
|
||||
yunoverlay = document.getElementById('ynhoverlay'),
|
||||
user = document.getElementById('yuno-user'),
|
||||
apps = document.getElementById('yuno-apps');
|
||||
|
||||
/*var btnApps = document.querySelectorAll('.btnClick');
|
||||
var closeBtn = document.querySelectorAll('.close');
|
||||
Array.prototype.forEach.call(btnApps, function(el) {
|
||||
el.addEventListener('click', function(e){
|
||||
e.preventDefault();
|
||||
var link = this.getAttribute('data-id');
|
||||
|
||||
//overlay.classList.add(link);
|
||||
})
|
||||
})*/
|
||||
|
||||
var pfx = ["webkit", "moz", "MS", "o", ""];
|
||||
function PrefixedEvent(element, type, callback) {
|
||||
for (var p = 0; p < pfx.length; p++) {
|
||||
if (!pfx[p]) type = type.toLowerCase();
|
||||
element.addEventListener(pfx[p]+type, callback, false);
|
||||
}
|
||||
}
|
||||
|
||||
// Bind YNH Button
|
||||
window.addEvent(portal, 'click', function(e){
|
||||
// Prevent default click
|
||||
window.eventPreventDefault(e);
|
||||
// Toggle overlay on YNHPortal button
|
||||
Element.toggleClass(overlay, 'visible');
|
||||
//Element.toggleClass(overlay, 'visible');
|
||||
Element.toggleClass(portal, 'visible');
|
||||
|
||||
if(yunoverlay.classList.contains('yuno-active')) {
|
||||
yunoverlay.classList.add('yuno-fadeOut');
|
||||
PrefixedEvent(yunoverlay, "AnimationEnd", function(){
|
||||
if(yunoverlay.classList.contains('yuno-fadeOut')) {
|
||||
yunoverlay.classList.remove('yuno-active');
|
||||
}
|
||||
});
|
||||
apps.classList.remove('yuno-fadeIn', 'yuno-delay');
|
||||
apps.classList.remove('yuno-fadeInLeft', 'yuno-delay');
|
||||
user.classList.remove('yuno-slideintop');
|
||||
}else {
|
||||
yunoverlay.classList.remove('yuno-fadeOut');
|
||||
yunoverlay.classList.add('yuno-active');
|
||||
|
||||
apps.classList.add('yuno-fadeInLeft', 'yuno-delay');
|
||||
user.classList.add('yuno-slideintop');
|
||||
}
|
||||
});
|
||||
|
||||
// Bind close button
|
||||
window.addEvent(document.getElementById('ynhclose'), 'click', function(e){
|
||||
/*window.addEvent(document.getElementById('ynhclose'), 'click', function(e){
|
||||
// Prevent default click
|
||||
window.eventPreventDefault(e);
|
||||
// Hide overlay
|
||||
Element.removeClass(overlay, 'visible');
|
||||
Element.removeClass(portal, 'visible');
|
||||
});
|
||||
});*/
|
||||
|
||||
};
|
||||
r.send();
|
||||
|
|
143
portal/edit.html
143
portal/edit.html
|
@ -1,83 +1,64 @@
|
|||
<form class="form-horizontal" role="form" method="POST" action="edit.html">
|
||||
<div class="form-group">
|
||||
<label for="uid" class="col-sm-3 control-label">{{t_username}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="uid" class="form-control" value="{{uid}}" disabled>
|
||||
<div class="wrapper user">
|
||||
<ul class="ul-reset user-menu">
|
||||
<li><a class="icon icon-connexion" href="?action=logout">{{t_logout}}</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="user-container col colNomarge">
|
||||
<a class="user-img" href="info.html"><img src="assets/img/avatar.png"></a>
|
||||
<div class="user-info">
|
||||
<h2><a href="info.html">{{{uid}}}<small>{{givenName}} {{sn}}</small></a></h2>
|
||||
<span class="user-mail">{{mail}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wrapper edit">
|
||||
<form class="form-edit" role="form" method="POST" action="edit.html">
|
||||
|
||||
<div class="form-section">
|
||||
<div class="form-group">
|
||||
<label for="uid" class="control-label">{{t_username}}</label>
|
||||
<input id="uid" type="text" name="uid" class="form-control form-text" value="{{uid}}" disabled required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="givenName" class="control-label">{{t_fullname}}</label>
|
||||
<input type="text" id="givenName" name="givenName" class="form-control form-text" value="{{givenName}}" placeholder="{{t_firstname}}" required>
|
||||
<input type="text" name="sn" class="form-control form-text" value="{{sn}}" placeholder="{{t_lastname}}" required>
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<a href="password.html" class="btn validate-btn large-btn">{{t_change_password}}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-section">
|
||||
<div class="form-group" id="form-add-mail-alias">
|
||||
<label for="mail" class="control-label">{{t_mail_addresses}}</label>
|
||||
<a class="help-link" href="#">?</a>
|
||||
<input type="email" name="mail" class="form-control form-text" value="{{mail}}" placeholder="{{t_new_mail}}" required>
|
||||
{{#mailalias}}
|
||||
<input type="email" name="mailalias[]" class="form-control form-text" value="{{.}}">
|
||||
{{/mailalias}}
|
||||
<input id="mail" type="email" name="mailalias[]" class="form-control mailalias-input form-text" placeholder="{{t_new_mail}}">
|
||||
<a class="btn link-btn" id="add-mailalias">{{t_add_mail}}</a>
|
||||
</div>
|
||||
|
||||
<div class="form-group" id="form-add-mail-drop">
|
||||
<label for="mailforward" class="control-label">{{t_mail_forward}}</label>
|
||||
<a class="help-link" href="#">?</a>
|
||||
{{#maildrop}}
|
||||
<input type="email" name="maildrop[]" class="form-control form-text" value="{{.}}">
|
||||
<br>
|
||||
{{/maildrop}}
|
||||
<input id="mailforward" type="email" name="maildrop[]" class="form-control maildrop-input form-text" placeholder="{{t_new_forward}}">
|
||||
<a class="btn link-btn" id="add-maildrop">{{t_add_forward}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="givenName" class="col-sm-3 control-label">{{t_fullname}}</label>
|
||||
<div class="clearfix visible-xs"></div>
|
||||
<div class="col-sm-4 col-xs-6">
|
||||
<input type="text" name="givenName" class="form-control" value="{{givenName}}" required>
|
||||
|
||||
<div class="btn-group">
|
||||
<a href="info.html" class="btn large-btn">{{t_cancel}}</a>
|
||||
<input type="submit" class="btn classic-btn large-btn" value="{{t_ok}}">
|
||||
</div>
|
||||
<div class="col-sm-5 col-xs-6">
|
||||
<input type="text" name="sn" class="form-control" value="{{sn}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label for="mail" class="col-sm-3 control-label">{{t_mail}}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="email" name="mail" class="form-control" value="{{mail}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-sm-3 text-right hidden-xs"><strong>{{t_aliases}}</strong></div>
|
||||
<div class="col-sm-3 text-left visible-xs"><h4>{{t_aliases}}</h4></div>
|
||||
<div class="col-sm-9">
|
||||
<blockquote>
|
||||
{{#mailalias}}
|
||||
<input type="email" name="mailalias[]" class="form-control" value="{{.}}">
|
||||
<br>
|
||||
{{/mailalias}}
|
||||
<input type="email" name="mailalias[]" class="form-control mailalias-input" placeholder="{{t_newalias}}">
|
||||
<div class="text-center" style="display: none;" id="add-mailalias"><a class="btn btn-success"><strong>+</strong></a></div>
|
||||
<div class="clearfix"></div>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-sm-3 text-right hidden-xs"><strong>{{t_forward}}</strong></div>
|
||||
<div class="col-sm-3 text-left visible-xs"><h4>{{t_forward}}</h4></div>
|
||||
<div class="col-sm-9">
|
||||
<blockquote>
|
||||
{{#maildrop}}
|
||||
<input type="email" name="maildrop[]" class="form-control" value="{{.}}">
|
||||
<br>
|
||||
{{/maildrop}}
|
||||
<input type="email" name="maildrop[]" class="form-control maildrop-input" placeholder="{{t_newforward}}">
|
||||
<div class="text-center" style="display: none;" id="add-maildrop"><a class="btn btn-success"><strong>+</strong></a></div>
|
||||
<div class="clearfix"></div>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-center">
|
||||
<input type="submit" class="btn btn-lg btn-primary" value="{{t_ok}}">
|
||||
</div>
|
||||
<div class="visible-xs" style="height: 20px"></div>
|
||||
<div class="col-sm-6 text-center">
|
||||
<a href="info.html" class="btn btn-lg btn-default">{{t_cancel}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script type="text/javascript">
|
||||
$( document ).ready(function() {
|
||||
$("#add-mailalias").show();
|
||||
$("#add-maildrop").show();
|
||||
$(".mailalias-input").hide();
|
||||
$(".maildrop-input").hide();
|
||||
$("#add-mailalias a").on("click", function() {
|
||||
$("#add-mailalias").before($(".mailalias-input:first").clone().show());
|
||||
$("#add-mailalias").before("<br><br>");
|
||||
});
|
||||
$("#add-maildrop a").on("click", function() {
|
||||
$("#add-maildrop").before($(".maildrop-input:first").clone().show());
|
||||
$("#add-maildrop").before("<br><br>");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="height: 20px"></div>
|
||||
</div>
|
||||
<script src="assets/js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,37 +1,34 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
|
||||
<head>
|
||||
<meta name="format-detection" content="telephone=no" />
|
||||
<meta name="viewport" content="user-scalable=no, width=device-width, height=device-height" />
|
||||
<title>{{t_portal}}</title>
|
||||
<link rel="stylesheet" href="assets/css/bootstrap.min.css" type="text/css"/>
|
||||
<script src="assets/js/jquery-1.10.2.min.js"></script>
|
||||
<meta name="format-detection" content="telephone=no" />
|
||||
<meta name="viewport" content="user-scalable=no, width=device-width, height=device-height" />
|
||||
<title>{{t_portal}}</title>
|
||||
<link rel="stylesheet" href="assets/css/artichaut.css">
|
||||
<link rel="stylesheet" href="assets/css/artichaut-col.css">
|
||||
<link rel="stylesheet" href="assets/css/artichaut-messages.css">
|
||||
<link rel="stylesheet" href="assets/css/artichaut-buttons.css">
|
||||
<link rel="stylesheet" href="assets/css/fonts.css">
|
||||
<link rel="stylesheet" href="assets/css/ynh-style.css">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Padding bootstrap style -->
|
||||
<div class="row">
|
||||
<div class="col-xs-1 visible-xs"></div>
|
||||
<div class="col-sm-10 col-sm-offset-1 col-xs-10 col-xs-offest-1">
|
||||
<div class="row">
|
||||
<div class="col-sm-8 col-sm-offset-2 col-xs-12" style="max-width: 750px;">
|
||||
<body class="{{#connected}}logged{{/connected}}">
|
||||
|
||||
<h2>{{{title}}}</h2>
|
||||
{{#connected}}
|
||||
<div class="pull-right" style="margin-top: -31px">
|
||||
<a href="?action=logout">{{t_logout}}</a>
|
||||
</div>
|
||||
{{/connected}}
|
||||
<hr>
|
||||
<h1 id="logo" class="logo">
|
||||
<img src="assets/img/logo-ynh-white.svg"/><span class="element-invisible">Yunohost</span>
|
||||
</h1>
|
||||
|
||||
{{#flash_win}}
|
||||
<div class="alert alert-success">{{.}}</div>
|
||||
{{/flash_win}}
|
||||
<div class="overlay">
|
||||
{{#flash_win}}
|
||||
<div class="box messages success inner">{{.}}</div>
|
||||
{{/flash_win}}
|
||||
|
||||
{{#flash_fail}}
|
||||
<div class="alert alert-danger">{{.}}</div>
|
||||
{{/flash_fail}}
|
||||
{{#flash_fail}}
|
||||
<div class="box messages danger inner">{{.}}</div>
|
||||
{{/flash_fail}}
|
||||
|
||||
{{#flash_info}}
|
||||
<div class="alert alert-info">{{.}}</div>
|
||||
{{/flash_info}}
|
||||
{{#flash_info}}
|
||||
<div class="box messages info inner">{{.}}</div>
|
||||
{{/flash_info}}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,64 +1,23 @@
|
|||
<div class="row">
|
||||
<div class="col-md-4 text-center">
|
||||
<h3>My apps</h3>
|
||||
<div class="visible-sm visible-xs" style="height: 20px"></div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="row">
|
||||
{{#app}}
|
||||
<div class="col-sm-3 text-center" style="float: left; width: 130px; height: 130px">
|
||||
<a style="font-size: 44px; padding: 15%;" class="btn btn-lg btn-primary btn-block" href="https://{{url}}" title="{{name}}">
|
||||
<div style="font-family: 'monospace'; width:28px; margin-left: 21px; overflow: hidden">{{name}}</div>
|
||||
</a>
|
||||
<a href="https://{{url}}"><h6>{{name}}</h6></a>
|
||||
</div>
|
||||
{{/app}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-md-4 text-center">
|
||||
<h3>Profile</h3>
|
||||
<div class="visible-sm visible-xs" style="height: 20px"></div>
|
||||
<img src="assets/img/avatar.png">
|
||||
</div>
|
||||
<div class="visible-sm" style="height: 20px"></div>
|
||||
<div class="col-md-8">
|
||||
<div class="row">
|
||||
<div class="col-sm-4 text-right hidden-xs"><strong>{{t_mail}}</strong></div>
|
||||
<div class="col-sm-4 visible-xs "><h4>{{t_mail}}</h4></div>
|
||||
<div class="col-sm-8"><blockquote>{{mail}}</blockquote></div>
|
||||
<div class="clearfix"></div><br>
|
||||
<div class="col-sm-4 text-right hidden-xs"><strong>{{t_aliases}}</strong></div>
|
||||
<div class="col-sm-4 visible-xs "><h4>{{t_aliases}}</h4></div>
|
||||
<div class="col-sm-8">
|
||||
<blockquote>
|
||||
{{#mailalias}}
|
||||
<div style="line-height: 25px">{{.}}</div>
|
||||
{{/mailalias}}
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="clearfix"></div><br>
|
||||
<div class="col-sm-4 text-right hidden-xs"><strong>{{t_forward}}</strong></div>
|
||||
<div class="col-sm-4 visible-xs "><h4>{{t_forward}}</h4></div>
|
||||
<div class="col-sm-8">
|
||||
<blockquote>
|
||||
{{#maildrop}}
|
||||
<div style="line-height: 25px">{{.}}</div>
|
||||
{{/maildrop}}
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-center">
|
||||
<a href="password.html" class="btn btn-lg btn-danger">{{t_change_password}}</a>
|
||||
</div>
|
||||
<div class="visible-xs" style="height: 20px"></div>
|
||||
<div class="col-sm-6 text-center">
|
||||
<a href="edit.html" class="btn btn-lg btn-warning">{{t_edit}}</a>
|
||||
<div class="wrapper user">
|
||||
<ul class="ul-reset user-menu">
|
||||
<li><a class="icon icon-connexion" href="?action=logout">Logout</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="user-container col colNomarge">
|
||||
<a class="user-img" href="edit.html"><img src="assets/img/avatar.png"></a>
|
||||
<div class="user-info">
|
||||
<h2><a href="info.html">{{{uid}}}<small>{{givenName}} {{sn}}</small></a></h2>
|
||||
<span class="user-mail">{{mail}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="apps" class="wrapper apps">
|
||||
<ul class="ul-reset listing-apps col colNomarge sourceProBold">
|
||||
{{#app}}
|
||||
<li>
|
||||
<a href="https://{{url}}"><span class="first-letter"></span><span class="sourcePro">{{name}}</span></a>
|
||||
</li>
|
||||
{{/app}}
|
||||
</ul>
|
||||
</div>
|
|
@ -4,13 +4,12 @@
|
|||
"username": "Username",
|
||||
"password": "Password",
|
||||
"fullname": "Fullname",
|
||||
"mail": "Mail",
|
||||
"aliases": "Aliases",
|
||||
"forward": "Forward",
|
||||
"newalias": "newalias@mydomain.org",
|
||||
"newforward": "newforward@myforeigndomain.org",
|
||||
"add_mailalias": "Add a mail alias",
|
||||
"add_mailforward": "Add a mail forward",
|
||||
"mail_addresses": "Mail addresses",
|
||||
"mail_forward": "Mail forward",
|
||||
"new_mail": "newmail@mydomain.org",
|
||||
"new_forward": "newforward@myforeigndomain.org",
|
||||
"add_mail": "Add a mail alias",
|
||||
"add_forward": "Add a mail forward",
|
||||
"ok": "OK",
|
||||
"cancel": "Cancel",
|
||||
"change_password": "Change password",
|
||||
|
@ -19,6 +18,7 @@
|
|||
"new_password": "New password",
|
||||
"confirm": "Confirm",
|
||||
"login": "Login",
|
||||
"logout": "Logout",
|
||||
"password_changed": "Password successfully changed",
|
||||
"password_changed_error": "An error occured on password changing",
|
||||
"password_not_match": "New passwords don't match",
|
||||
|
|
|
@ -4,13 +4,12 @@
|
|||
"username": "Nom d'utilisateur",
|
||||
"password": "Mot de passe",
|
||||
"fullname": "Nom complet",
|
||||
"mail": "Email",
|
||||
"aliases": "Alias",
|
||||
"forward": "Transfert",
|
||||
"newalias": "nouvel_alias@domaine.org",
|
||||
"newforward": "nouveau_transfert@domainedistant.org",
|
||||
"add_mailalias": "Ajouter un alias email",
|
||||
"add_mailforward": "Ajouter un email vers lequel transférer",
|
||||
"mail_addresses": "Adresses email",
|
||||
"mail_forward": "Adresses de transfert",
|
||||
"new_mail": "nouvelle_adresse@domaine.org",
|
||||
"new_forward": "nouveau_transfert@domainedistant.org",
|
||||
"add_mail": "Ajouter une adresse email",
|
||||
"add_forward": "Ajouter une adresse de transfert",
|
||||
"ok": "Valider",
|
||||
"cancel": "Annuler",
|
||||
"change_password": "Changer de mot de passe",
|
||||
|
@ -19,6 +18,7 @@
|
|||
"new_password": "Nouveau mot de passe",
|
||||
"confirm": "Confirmation",
|
||||
"login": "Connexion",
|
||||
"logout": "Déconnexion",
|
||||
"password_changed": "Mot de passe modifié",
|
||||
"password_changed_error": "Une erreur s'est produite lors du changement de mot de passe",
|
||||
"password_not_match": "Les nouveaux mots de passe ne correspondent pas",
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
<form name="input" action="" method="post">
|
||||
<div class="wrapper login">
|
||||
<form class="login-form" name="input" action="" method="post">
|
||||
<div class="form-group">
|
||||
<label for="user">{{t_username}}</label>
|
||||
<input type="text" name="user" placeholder="john" class="form-control">
|
||||
<label class="icon icon-user" for="user"><span class="element-invisible">{{t_username}}</span></label>
|
||||
<input id="user" type="text" name="user" placeholder="{{t_username}}" class="form-control form-text" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="user">{{t_password}}</label>
|
||||
<input type="password" name="password" placeholder="•••••" class="form-control">
|
||||
<label class="icon icon-lock" for="password"><span class="element-invisible">{{t_password}}</span></label>
|
||||
<input id="password" type="password" name="password" placeholder="{{t_password}}" class="form-control form-text" required>
|
||||
</div>
|
||||
<input type="submit" value="{{t_login}}" class="btn btn-success">
|
||||
<input type="submit" value="{{t_login}}" class="btn classic-btn large-btn">
|
||||
</form>
|
||||
</div>
|
||||
|
|
127
portal/panel.ms
127
portal/panel.ms
|
@ -1,127 +0,0 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="format-detection" content="telephone=no" />
|
||||
<meta name="viewport" content="user-scalable=no, width=device-width, height=device-height" />
|
||||
<title>Yunohost Apps</title>
|
||||
<link media="all" type="text/css" href="assets/css/panel.css" rel="stylesheet">
|
||||
<script src="assets/js/jquery-1.10.2.min.js"></script>
|
||||
</head>
|
||||
<body class="gradient" style="overflow: hidden">
|
||||
<iframe name="glu" id="glu" width="100%" src="/" style=""></iframe>
|
||||
<script>
|
||||
var ynh = {};
|
||||
ynh.jquery = jQuery.noConflict();
|
||||
(function( $ ) {
|
||||
|
||||
preventFire = false;
|
||||
preventRefire = false;
|
||||
function datScroll(to) {
|
||||
preventRefire = true;
|
||||
$("body,html").animate({scrollTop:to}, '100', 'swing', function() {
|
||||
setTimeout(function() {
|
||||
if (to == 0) {
|
||||
$("#ynhtoggle").addClass("ynhopen");
|
||||
} else {
|
||||
$("#ynhtoggle").removeClass("ynhopen");
|
||||
}
|
||||
preventRefire = false;
|
||||
}, 200);
|
||||
});
|
||||
}
|
||||
|
||||
function checkScroll (direction) {
|
||||
if(preventRefire) return;
|
||||
|
||||
if((direction == "top") && ($("body").scrollTop() == 107 || $("html").scrollTop() == 107) && $("#ynhtoggle.ynhopen").length == 0) {
|
||||
if(preventFire) return;
|
||||
datScroll(0);
|
||||
} else if((direction == "bottom") && $("#ynhtoggle.ynhopen").length > 0 ) {
|
||||
datScroll(h);
|
||||
}
|
||||
}
|
||||
|
||||
function changeTitle() {
|
||||
if (top.glu.document.title)
|
||||
top.document.title = top.glu.document.title;
|
||||
else
|
||||
top.document.title = 'Yunohost Apps';
|
||||
}
|
||||
var tid = setInterval(changeTitle, 10000);
|
||||
|
||||
$( document ).ready(function($) {
|
||||
h = 107;
|
||||
|
||||
$("#glu").load(function() {
|
||||
|
||||
setTimeout(function() {
|
||||
changeTitle();
|
||||
if ($("#ynhtopbar").length == 0) {
|
||||
$('body').children().filter(function() {
|
||||
return $(this).css("position") === 'absolute' || $(this).css("position") === 'fixed';
|
||||
}).css({top: function(index, value) {
|
||||
return parseFloat(value) + h + 3;
|
||||
}});
|
||||
$("body").append('<div id="ynhtopbar"><div id="ynhtoggle" class="ynhopen">YunoHost</div></div>');
|
||||
{{#app}}
|
||||
$("#ynhtopbar").append('<div class="ynhapp" data-href="https://{{url}}"><div class="ynhappsquare">R</div><div class="ynhappcaption">{{name}}</div></div>');
|
||||
{{/app}}
|
||||
}
|
||||
$("body").css({marginTop: function(index, value) {
|
||||
return parseFloat(value) + h + 3;
|
||||
}});
|
||||
if ($("body").scrollTop() == 0) {
|
||||
$("body,html").scrollTop(h);
|
||||
$("#ynhtoggle").removeClass("ynhopen");
|
||||
}
|
||||
$("#ynhtoggle").on("click", function() {
|
||||
preventFire = false;
|
||||
checkScroll("bottom");
|
||||
checkScroll("top");
|
||||
});
|
||||
|
||||
$(".ynhapp").on("click", function(event) {
|
||||
event.preventDefault();
|
||||
parent.glu.location.href = $(this).attr('data-href');
|
||||
$('.ynhapp.active').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
});
|
||||
}, 10);
|
||||
|
||||
$(window).resize(function() {
|
||||
if ($("#ynhtoggle.ynhopen").length == 0) {
|
||||
$("body,html").scrollTop(h);
|
||||
}
|
||||
});
|
||||
|
||||
$( $(this)[0].contentWindow ).bind("DOMMouseScroll mousewheel scroll", function(event) {
|
||||
if ((event.type == "DOMMouseScroll" && event.originalEvent.detail > 0)
|
||||
|| (event.type == "mousewheel" && event.originalEvent.wheelDeltaY < 0)
|
||||
|| event.currentTarget.scrollY > 0 ) {
|
||||
checkScroll("bottom");
|
||||
preventFire = true;
|
||||
} else {
|
||||
setTimeout(function() { preventFire = false; }, 500);
|
||||
checkScroll("top");
|
||||
}
|
||||
});
|
||||
$(document).bind("keyup keydown",function(event){
|
||||
if($('input:focus,textarea:focus').length > 0) return; //If an input field is focused
|
||||
if(event.which == 38 || event.which == 33) {
|
||||
checkScroll("top");
|
||||
} else if(event.which == 40 || event.which == 34) {
|
||||
checkScroll("bottom");
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
})(ynh.jquery);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,31 +1,35 @@
|
|||
<form class="form-horizontal" role="form" method="POST" action="password.html">
|
||||
<div class="form-group">
|
||||
<label for="currentpassword" class="col-md-5 control-label">Current password</label>
|
||||
<div class="col-md-7">
|
||||
<input type="password" class="form-control" id="currentpassword" name="currentpassword">
|
||||
</div>
|
||||
<div class="wrapper user">
|
||||
<ul class="ul-reset user-menu">
|
||||
<li><a class="icon icon-connexion" href="?action=logout">{{t_logout}}</a></li>
|
||||
</ul>
|
||||
<div class="user-container col colNomarge">
|
||||
<a class="user-img" href="info.html"><img src="assets/img/avatar.png"></a>
|
||||
<div class="user-info">
|
||||
<h2><a href="info.html">{{{uid}}}<small>{{givenName}} {{sn}}</small></a></h2>
|
||||
<span class="user-mail">{{mail}}</span>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label for="newpassword" class="col-md-5 control-label">New password</label>
|
||||
<div class="col-md-7">
|
||||
<input type="password" class="form-control" id="newpassword" name="newpassword">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wrapper password">
|
||||
<form class="form-password" role="form" method="POST" action="password.html">
|
||||
|
||||
<div class="form-section">
|
||||
<div class="form-group">
|
||||
<label for="currentpassword">{{t_current_password}}</label>
|
||||
<input type="password" class="form-control form-text" id="currentpassword" name="currentpassword" placeholder="•••••" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="confirm" class="col-md-5 control-label">Confirm</label>
|
||||
<div class="col-md-7">
|
||||
<input type="password" class="form-control" id="confirm" name="confirm">
|
||||
</div>
|
||||
<div class="form-section">
|
||||
<div class="form-group">
|
||||
<label for="newpassword">{{t_new_password}}</label>
|
||||
<input type="password" class="form-control form-text" id="newpassword" name="newpassword" placeholder="•••••" required>
|
||||
<input type="password" class="form-control form-text" id="confirm" name="confirm" placeholder="{{t_confirm}}" required>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a href="info.html" class="btn large-btn btn-default">{{t_cancel}}</a>
|
||||
<input type="submit" class="btn large-btn classic-btn" value="{{t_ok}}">
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-center">
|
||||
<input type="submit" class="btn btn-lg btn-primary" value="OK">
|
||||
</div>
|
||||
<div class="visible-xs" style="height: 20px"></div>
|
||||
<div class="col-sm-6 text-center">
|
||||
<a href="info.html" class="btn btn-lg btn-default">Cancel</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue