added images

pull/699/head
Xziy 2 years ago
parent 26660c8555
commit 8f4e37f0aa

@ -1 +1 @@
# Planka client
# TeamBoard client

@ -1,10 +1,10 @@
{
"name": "planka-client",
"name": "teamboard-client",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "planka-client",
"name": "teamboard-client",
"dependencies": {
"@juggle/resize-observer": "^3.4.0",
"classnames": "^2.3.2",
@ -51,6 +51,8 @@
"zxcvbn": "^4.4.2"
},
"devDependencies": {
"@fortawesome/free-brands-svg-icons": "^6.4.0",
"@fortawesome/react-fontawesome": "^0.2.0",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
@ -2239,6 +2241,56 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/@fortawesome/fontawesome-common-types": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz",
"integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==",
"dev": true,
"hasInstallScript": true,
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/fontawesome-svg-core": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz",
"integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==",
"dev": true,
"hasInstallScript": true,
"peer": true,
"dependencies": {
"@fortawesome/fontawesome-common-types": "6.4.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/free-brands-svg-icons": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.4.0.tgz",
"integrity": "sha512-qvxTCo0FQ5k2N+VCXb/PZQ+QMhqRVM4OORiO6MXdG6bKolIojGU/srQ1ptvKk0JTbRgaJOfL2qMqGvBEZG7Z6g==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
"@fortawesome/fontawesome-common-types": "6.4.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/react-fontawesome": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz",
"integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==",
"dev": true,
"dependencies": {
"prop-types": "^15.8.1"
},
"peerDependencies": {
"@fortawesome/fontawesome-svg-core": "~1 || ~6",
"react": ">=16.3"
}
},
"node_modules/@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@ -24999,6 +25051,40 @@
}
}
},
"@fortawesome/fontawesome-common-types": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz",
"integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==",
"dev": true
},
"@fortawesome/fontawesome-svg-core": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz",
"integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==",
"dev": true,
"peer": true,
"requires": {
"@fortawesome/fontawesome-common-types": "6.4.0"
}
},
"@fortawesome/free-brands-svg-icons": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.4.0.tgz",
"integrity": "sha512-qvxTCo0FQ5k2N+VCXb/PZQ+QMhqRVM4OORiO6MXdG6bKolIojGU/srQ1ptvKk0JTbRgaJOfL2qMqGvBEZG7Z6g==",
"dev": true,
"requires": {
"@fortawesome/fontawesome-common-types": "6.4.0"
}
},
"@fortawesome/react-fontawesome": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz",
"integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==",
"dev": true,
"requires": {
"prop-types": "^15.8.1"
}
},
"@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",

@ -1,11 +1,11 @@
{
"name": "planka-client",
"name": "teamboard-client",
"private": true,
"scripts": {
"build": "react-app-rewired build",
"eject": "react-scripts eject",
"lint": "eslint --ext js,jsx src config-overrides.js",
"start": "DISABLE_ESLINT_PLUGIN=trues react-app-rewired start",
"start": "DISABLE_ESLINT_PLUGIN=true react-app-rewired start",
"test": "react-app-rewired test"
},
"browserslist": {
@ -98,6 +98,8 @@
"zxcvbn": "^4.4.2"
},
"devDependencies": {
"@fortawesome/free-brands-svg-icons": "^6.4.0",
"@fortawesome/react-fontawesome": "^0.2.0",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@ -2,19 +2,24 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="%PUBLIC_URL%/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="%PUBLIC_URL%/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="%PUBLIC_URL%/favicon-16x16.png">
<link rel="manifest" href="%PUBLIC_URL%/site.webmanifest">
<link rel="mask-icon" href="%PUBLIC_URL%/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#fffccc">
<meta name="theme-color" content="#ffffff">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Planka is an open source project management software"
content="TeamBoard is an open source project management software"
/>
<link rel="apple-touch-icon" href="logo192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
@ -24,7 +29,7 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>Planka</title>
<title>TeamBoard</title>
</head>
<script>window.BASE_URL = "%PUBLIC_URL%";</script>
<body id="app">

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

@ -1,5 +1,5 @@
{
"name": "Planka",
"name": "42pub TeamBoard",
"icons": [
{
"src": "favicon.ico",

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

@ -0,0 +1,33 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="219.000000pt" height="219.000000pt" viewBox="0 0 219.000000 219.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.14, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,219.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M904 2175 c-400 -72 -726 -351 -853 -731 -17 -51 -31 -99 -31 -108 0
-9 25 21 56 66 120 176 280 344 362 380 94 42 181 -6 125 -68 -10 -11 -34 -31
-54 -46 -42 -31 -99 -86 -148 -144 -45 -52 -190 -273 -233 -354 -60 -113 -83
-102 195 -95 212 6 295 10 318 14 4 0 28 56 54 124 25 67 51 131 55 142 5 11
30 69 56 130 53 126 105 232 140 285 56 84 160 77 139 -8 -3 -15 -35 -94 -70
-177 -64 -151 -185 -468 -185 -485 0 -5 47 -7 113 -5 131 5 160 -4 165 -51 4
-42 -12 -80 -45 -101 -26 -17 -73 -21 -264 -23 l-36 0 -47 -157 c-25 -87 -55
-203 -65 -258 -30 -158 -42 -175 -116 -175 -52 0 -85 38 -85 99 0 56 34 191
90 356 22 65 40 122 40 126 0 3 -51 5 -112 3 -62 -1 -189 -4 -282 -6 -108 -1
-170 -6 -172 -13 -9 -21 48 -192 93 -284 305 -618 1095 -802 1646 -383 54 41
109 93 104 98 -5 5 -186 34 -247 39 -36 4 -71 8 -79 11 -8 3 -107 7 -220 10
-167 3 -216 1 -261 -11 -93 -27 -129 -27 -156 0 -20 21 -22 27 -13 61 38 137
234 300 584 484 293 154 419 253 480 377 89 182 -40 368 -255 365 -41 -1 -84
-3 -95 -5 -111 -25 -175 -60 -262 -146 -61 -60 -98 -67 -138 -26 -27 26 -32
65 -15 110 26 68 163 161 305 205 100 31 307 37 385 10 30 -10 56 -18 57 -16
7 7 -122 129 -188 179 -232 174 -554 252 -835 202z"/>
<path d="M2136 1264 c-30 -90 -102 -183 -206 -263 -100 -77 -183 -127 -378
-227 -89 -46 -181 -96 -205 -111 -58 -38 -141 -103 -130 -103 52 0 325 -11
348 -14 17 -3 62 -7 100 -11 126 -10 282 -30 317 -41 33 -10 119 162 164 326
26 97 28 119 29 280 0 200 -11 247 -39 164z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -0,0 +1,14 @@
{
"name": "",
"short_name": "",
"icons": [
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 559 KiB

After

Width:  |  Height:  |  Size: 31 KiB

@ -42,7 +42,7 @@ const Header = React.memo(
<div className={styles.wrapper}>
{!project && (
<Link to={Paths.ROOT} className={classNames(styles.logo, styles.title)}>
Board
TeamBoard
</Link>
)}
<Menu inverted size="large" className={styles.menu}>

@ -4,12 +4,16 @@ import PropTypes from 'prop-types';
import classNames from 'classnames';
import { useTranslation } from 'react-i18next';
import { Form, Grid, Header, Message } from 'semantic-ui-react';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { fa42Group, faGitlab, faGoogle } from '@fortawesome/free-brands-svg-icons'
import { useDidUpdate, usePrevious, useToggle } from '../../lib/hooks';
import { Input } from '../../lib/custom-ui';
import { Button } from 'semantic-ui-react';
import { useForm } from '../../hooks';
import { isUsername } from '../../utils/validator';
import Config from "../../constants/Config"
import styles from './Login.module.scss';
const createMessage = (error) => {
@ -171,6 +175,22 @@ const Login = React.memo(
disabled={isSubmitting}
/>
</Form>
<hr style={{ width: "100%", margin: "120px 0 0 0" }} />
<div className={styles.buttonsContainer}>
<Button as='a' href={`${Config.SERVER_BASE_URL}/api/oauth/redmine`} className={styles.oauthButton}>
<FontAwesomeIcon icon={fa42Group} style={{ marginRight: '5px' }} />
Войти через 42team
</Button>
<Button as='a' href={`${Config.SERVER_BASE_URL}/api/oauth/gitlab`} className={styles.oauthButton}>
<FontAwesomeIcon icon={faGitlab} style={{ marginRight: '5px' }} />
Войти через git.hm
</Button>
<Button as='a' href={`${Config.SERVER_BASE_URL}/api/oauth/google`} className={styles.oauthButton}>
<FontAwesomeIcon icon={faGoogle} style={{ marginRight: '5px' }} />
Войти через Google
</Button>
</div>
</div>
</div>
</Grid.Column>
@ -185,7 +205,7 @@ const Login = React.memo(
>
<div className={styles.descriptionWrapperOverlay} />
<div className={styles.descriptionWrapper}>
<Header inverted as="h1" content="Planka" className={styles.descriptionTitle} />
<Header inverted as="h1" content="TeamBoard" className={styles.descriptionTitle} />
<Header
inverted
as="h2"

@ -64,4 +64,15 @@
.wrapper {
background: #fff;
}
.oauthButton {
background: white;
color: black;
margin: 10px 0;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
}

@ -4,7 +4,7 @@ export default {
emailOrUsername: 'Email nebo uživatelské jméno',
invalidEmailOrUsername: 'Nesprávný email nebo uživatelské jméno',
invalidPassword: 'Nesprávné heslo',
logInToPlanka: 'Přihlásit se do Planka',
logInToPlanka: 'Přihlásit se do TeamBoard',
noInternetConnection: 'Bez připojení k internetu',
pageNotFound_title: 'Stránka nenalezena',
password: 'Heslo',

@ -4,7 +4,7 @@ export default {
emailOrUsername: 'E-mail eller brugernavn',
invalidEmailOrUsername: 'Ugyldig e-mail eller brugernavn',
invalidPassword: 'Ugyldig løsen',
logInToPlanka: 'Log på Planka',
logInToPlanka: 'Log på TeamBoard',
noInternetConnection: 'Ingen forbindelse til internettet',
pageNotFound_title: 'Side ej fundet',
password: 'Løsen',

@ -9,7 +9,7 @@ export default {
translation: {
common: {
aboutPlanka: 'About Planka',
aboutPlanka: 'About TeamBoard',
account: 'Account',
actions: 'Actions',
addAttachment_title: 'Add Attachment',

@ -4,7 +4,7 @@ export default {
emailOrUsername: 'E-mail or username',
invalidEmailOrUsername: 'Invalid e-mail or username',
invalidPassword: 'Invalid password',
logInToPlanka: 'Log in to Planka',
logInToPlanka: 'Log in to TeamBoard',
noInternetConnection: 'No internet connection',
pageNotFound_title: 'Page Not Found',
password: 'Password',

@ -4,7 +4,7 @@ export default {
emailOrUsername: 'Correo o nombre de usuario',
invalidEmailOrUsername: 'Correo o nombre de usuario incorrecto',
invalidPassword: 'Contraseña incorrecta',
logInToPlanka: 'Iniciar sesión en Planka',
logInToPlanka: 'Iniciar sesión en TeamBoard',
noInternetConnection: 'Sin conexión a internet',
pageNotFound_title: 'Página no encontrada',
password: 'Contraseña',

@ -4,7 +4,7 @@ export default {
emailOrUsername: "Email ou nom d'utilisateur",
invalidEmailOrUsername: "Email ou nom d'utilisateur invalide",
invalidPassword: 'Mot de passe invalide',
logInToPlanka: 'Se connecter à Planka',
logInToPlanka: 'Se connecter à TeamBoard',
noInternetConnection: 'Aucune connection internet',
pageNotFound_title: 'Page non trouvée',
password: 'Mot de passe',

@ -4,7 +4,7 @@ export default {
emailOrUsername: 'E-mail o username',
invalidEmailOrUsername: 'E-mail o username non valido',
invalidPassword: 'Password non valida',
logInToPlanka: 'Log in Planka',
logInToPlanka: 'Log in TeamBoard',
noInternetConnection: 'Nessuna connessione internet',
pageNotFound_title: 'Pagina non trovata',
password: 'Password',

@ -4,7 +4,7 @@ export default {
emailOrUsername: 'Eメールまたはユーザー名',
invalidEmailOrUsername: 'Eメールまたはユーザー名が無効',
invalidPassword: 'パスワードが無効',
logInToPlanka: 'Planka にログインする',
logInToPlanka: 'TeamBoard にログインする',
noInternetConnection: 'インターネットに接続されていません。',
pageNotFound_title: 'ページが見つかりません。',
password: 'パスワード',

@ -4,7 +4,7 @@ export default {
emailOrUsername: 'E-mail или имя пользователя',
invalidEmailOrUsername: 'Неверный e-mail или имя пользователя',
invalidPassword: 'Неверный пароль',
logInToPlanka: 'Вход в Planka',
logInToPlanka: 'Вход в TeamBoard',
noInternetConnection: 'Нет соединения',
pageNotFound: 'Страница не найдена',
password: 'Пароль',

@ -4,7 +4,7 @@ export default {
emailOrUsername: 'E-mail alebo používateľské meno',
invalidEmailOrUsername: 'Nesprávny e-mail alebo používateľské meno',
invalidPassword: 'Nesprávne heslo',
logInToPlanka: 'Prihlásiť sa do Planka',
logInToPlanka: 'Prihlásiť sa do TeamBoard',
noInternetConnection: 'Bez pripojenia k internetu',
pageNotFound_title: 'Stránka neexistuje',
password: 'Heslo',

@ -4,7 +4,7 @@ export default {
emailOrUsername: 'E-mail eller användarnamn',
invalidEmailOrUsername: 'Ogiltig e-mail eller användarnamn',
invalidPassword: 'Ogiltigt lösenord',
logInToPlanka: 'Logga in på Planka',
logInToPlanka: 'Logga in på TeamBoard',
noInternetConnection: 'Ingen internetanslutning',
pageNotFound_title: 'Sidan Kunde Inte Hittas',
password: 'Lösenord',

@ -4,7 +4,7 @@ export default {
emailOrUsername: 'E-mail yoki foydalanuvchi nomi',
invalidEmailOrUsername: "Noto'g'ri e-mail yoki foydalanuvchi nomi",
invalidPassword: "Noto'g'ri parol",
logInToPlanka: 'Planka ga Kirish',
logInToPlanka: 'TeamBoard ga Kirish',
noInternetConnection: "Internet bog'lanishi yo'q",
pageNotFound_title: 'Sahifa Topilmadi',
password: 'Parol',

@ -4,7 +4,7 @@ export default {
emailOrUsername: '邮箱或用户名',
invalidEmailOrUsername: '错误的邮箱或用户名',
invalidPassword: '密码错误',
logInToPlanka: '登录至 Planka',
logInToPlanka: '登录至 TeamBoard',
noInternetConnection: '没有网络连接',
pageNotFound_title: '页面找不到',
password: '密码',

Loading…
Cancel
Save