From 8f2fb9e44eca442df4cb6a64364c34fdfa409e4e Mon Sep 17 00:00:00 2001 From: Vincenzo Cestone Date: Tue, 28 Nov 2023 14:36:05 +0100 Subject: [PATCH] Updated d4science theme and d4science.v2 account theme for KC v23.0.0 --- .../theme/d4science.v2/account/index.ftl | 8 ++-- .../d4science-page/AccountExtraPage.js | 16 +++++--- .../d4science-page/AccountExtraPage.js.map | 2 +- .../content/d4science-page/AvatarForm.js | 10 ++--- .../content/d4science-page/AvatarForm.js.map | 2 +- .../account/messages/messages_it.properties | 8 ++-- .../theme/d4science/login/register.ftl | 37 ++++++++++++++----- .../theme/d4science/login/template.ftl | 13 ++++++- 8 files changed, 65 insertions(+), 31 deletions(-) diff --git a/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/index.ftl b/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/index.ftl index 9105cd2..18fb372 100644 --- a/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/index.ftl +++ b/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/index.ftl @@ -107,10 +107,10 @@ var content = <#include "resources/content.json"/> - - - - + + + + <#if properties.styles?has_content> <#list properties.styles?split(' ') as style> diff --git a/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AccountExtraPage.js b/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AccountExtraPage.js index e8f0e42..00b7f7f 100644 --- a/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AccountExtraPage.js +++ b/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AccountExtraPage.js @@ -1,18 +1,24 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -import * as React from "../../../../common/keycloak/web_modules/react.js"; -import { PageSection, PageSectionVariants, Button, Grid, GridItem, ExpandableSection, Modal } from "../../../../common/keycloak/web_modules/@patternfly/react-core.js"; +import * as React from "../../../resources/web_modules/react.js"; +import { PageSection, PageSectionVariants, Button, Grid, GridItem, ExpandableSection, Modal } from "../../../resources/web_modules/@patternfly/react-core.js"; import { AccountServiceContext } from "../../account-service/AccountServiceContext.js"; import { Msg } from "../../widgets/Msg.js"; import { ContentPage } from "../ContentPage.js"; import { ContentAlert } from "../ContentAlert.js"; import { AvatarForm } from "./AvatarForm.js"; export class AccountExtraPage extends React.Component { - constructor(props) { + constructor(props, context) { super(props); _defineProperty(this, "context", void 0); + _defineProperty(this, "DEFAULT_STATE", { + isModalOpen: false + }); + + _defineProperty(this, "state", this.DEFAULT_STATE); + _defineProperty(this, "handleModalToggle", open => { this.setState({ isModalOpen: open @@ -31,9 +37,7 @@ export class AccountExtraPage extends React.Component { }); }); - this.state = { - isModalOpen: false - }; + this.context = context; } render() { diff --git a/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AccountExtraPage.js.map b/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AccountExtraPage.js.map index d2ef1d0..3c7b4da 100644 --- a/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AccountExtraPage.js.map +++ b/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AccountExtraPage.js.map @@ -1 +1 @@ -{"version":3,"file":"AccountExtraPage.js","names":["React","PageSection","PageSectionVariants","Button","Grid","GridItem","ExpandableSection","Modal","AccountServiceContext","Msg","ContentPage","ContentAlert","AvatarForm","AccountExtraPage","Component","constructor","props","open","setState","isModalOpen","event","accountUrl","context","deleteUrl","doPost","then","success","window","location","reload","state","render","light","marginTop","localize","__html","e","handleModalToggle","modalConfirmDelete"],"sources":["../../../src/app/content/d4science-page/AccountExtraPage.tsx"],"sourcesContent":["import * as React from 'react';\r\n\r\nimport { PageSection, PageSectionVariants,Button, Grid, GridItem, ExpandableSection, Modal } from '@patternfly/react-core';\r\nimport { AccountServiceContext } from '../../account-service/AccountServiceContext';\r\nimport { Msg } from '../../widgets/Msg';\r\nimport { ContentPage } from '../ContentPage';\r\nimport { ContentAlert } from '../ContentAlert';\r\nimport { AvatarForm } from './AvatarForm';\r\n\r\ninterface AccountExtraPageProps {\r\n}\r\n\r\ninterface AccountExtraPageState {\r\n isModalOpen: boolean;\r\n}\r\n\r\nexport class AccountExtraPage extends React.Component {\r\n static contextType = AccountServiceContext;\r\n context: React.ContextType;\r\n\r\n constructor(props: any) {\r\n super(props)\r\n this.state = { isModalOpen: false }\r\n }\r\n\r\n private handleModalToggle = (open: boolean) => {\r\n this.setState({ isModalOpen: open })\r\n }\r\n\r\n private modalConfirmDelete = (event: any) => {\r\n const accountUrl = this.context![\"accountUrl\"]\r\n const deleteUrl = accountUrl + \"-delete/request-delete\"\r\n this.context!.doPost(deleteUrl, {})\r\n .then(() => {\r\n ContentAlert.success('accountDeletedMessage')\r\n window.location.reload();\r\n })\r\n this.setState({ isModalOpen: false })\r\n }\r\n\r\n public render(): React.ReactNode {\r\n const accountUrl = this.context![\"accountUrl\"]\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n this.handleModalToggle(false)}\r\n actions={[\r\n ,\r\n \r\n ]}\r\n >\r\n

\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n )\r\n }\r\n}"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"AccountExtraPage.js","names":["React","PageSection","PageSectionVariants","Button","Grid","GridItem","ExpandableSection","Modal","AccountServiceContext","Msg","ContentPage","ContentAlert","AvatarForm","AccountExtraPage","Component","constructor","props","context","isModalOpen","DEFAULT_STATE","open","setState","event","accountUrl","deleteUrl","doPost","then","success","window","location","reload","render","light","marginTop","localize","__html","e","handleModalToggle","state","modalConfirmDelete"],"sources":["../../../src/app/content/d4science-page/AccountExtraPage.tsx"],"sourcesContent":["import * as React from 'react';\r\n\r\nimport { PageSection, PageSectionVariants,Button, Grid, GridItem, ExpandableSection, Modal } from '@patternfly/react-core';\r\nimport { AccountServiceContext } from '../../account-service/AccountServiceContext';\r\nimport { Msg } from '../../widgets/Msg';\r\nimport { ContentPage } from '../ContentPage';\r\nimport { ContentAlert } from '../ContentAlert';\r\nimport { AvatarForm } from './AvatarForm';\r\n\r\ninterface AccountExtraPageProps {\r\n}\r\n\r\ninterface AccountExtraPageState {\r\n isModalOpen: boolean;\r\n}\r\n\r\nexport class AccountExtraPage extends React.Component {\r\n static contextType = AccountServiceContext;\r\n context: React.ContextType;\r\n private readonly DEFAULT_STATE: AccountExtraPageState = {\r\n isModalOpen: false\r\n };\r\n public state: AccountExtraPageState = this.DEFAULT_STATE;\r\n\r\n constructor(props: AccountExtraPageProps, context: React.ContextType) {\r\n super(props);\r\n this.context = context;\r\n }\r\n\r\n private handleModalToggle = (open: boolean) => {\r\n this.setState({ isModalOpen: open })\r\n }\r\n\r\n private modalConfirmDelete = (event: any) => {\r\n const accountUrl = this.context![\"accountUrl\"]\r\n const deleteUrl = accountUrl + \"-delete/request-delete\"\r\n this.context!.doPost(deleteUrl, {})\r\n .then(() => {\r\n ContentAlert.success('accountDeletedMessage')\r\n window.location.reload();\r\n })\r\n this.setState({ isModalOpen: false })\r\n }\r\n\r\n public render(): React.ReactNode {\r\n const accountUrl = this.context![\"accountUrl\"]\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n this.handleModalToggle(false)}\r\n actions={[\r\n ,\r\n \r\n ]}\r\n >\r\n

\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n )\r\n }\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AvatarForm.js b/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AvatarForm.js index 7235317..45c0b55 100644 --- a/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AvatarForm.js +++ b/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AvatarForm.js @@ -1,8 +1,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -import * as React from "../../../../common/keycloak/web_modules/react.js"; -import { Form, FormGroup, ActionGroup, FileUpload, Avatar, Button, Tooltip } from "../../../../common/keycloak/web_modules/@patternfly/react-core.js"; -import { OutlinedQuestionCircleIcon } from "../../../../common/keycloak/web_modules/@patternfly/react-icons.js"; +import * as React from "../../../resources/web_modules/react.js"; +import { Form, FormGroup, ActionGroup, FileUpload, Avatar, Button, Tooltip } from "../../../resources/web_modules/@patternfly/react-core.js"; +import { OutlinedQuestionCircleIcon } from "../../../resources/web_modules/@patternfly/react-icons.js"; import { AccountServiceContext } from "../../account-service/AccountServiceContext.js"; import { ContentAlert } from "../ContentAlert.js"; import { Msg } from "../../widgets/Msg.js"; @@ -101,7 +101,7 @@ export class AvatarForm extends React.Component { }; var reader = new FileReader(); - reader.onloadend = function (event) { + reader.onloadend = event => { var imgData = String(event.target.result); this.imageScale(imgData, blob => { this.setState({ @@ -109,7 +109,7 @@ export class AvatarForm extends React.Component { avatarSrc: URL.createObjectURL(blob) }); }); - }.bind(this); + }; this.handleFileInputChange = (file, filename) => { if (filename != "") { diff --git a/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AvatarForm.js.map b/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AvatarForm.js.map index d0bb029..c7a9218 100644 --- a/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AvatarForm.js.map +++ b/keycloak-d4science-theme/src/main/resources/theme/d4science.v2/account/resources/content/d4science-page/AvatarForm.js.map @@ -1 +1 @@ -{"version":3,"file":"AvatarForm.js","names":["React","Form","FormGroup","ActionGroup","FileUpload","Avatar","Button","Tooltip","OutlinedQuestionCircleIcon","AccountServiceContext","ContentAlert","Msg","AvatarForm","Component","constructor","props","context","imgData","callback","img","Image","src","onload","event","canvas","document","createElement","ctx","getContext","drawImage","MAX_WIDTH","MAX_HEIGHT","width","height","toBlob","preventDefault","form","target","formData","FormData","append","state","imageBlob","xhr","XMLHttpRequest","onreadystatechange","readyState","status","success","danger","response","setState","errors","avatar","filename","avatarSrc","avatarUrl","open","method","action","send","localize","currentAvatar","accountUrl","noAvatarSrc","reader","FileReader","onloadend","String","result","imageScale","blob","URL","createObjectURL","bind","handleFileInputChange","file","readAsDataURL","render","avatarStyle","objectFit","border","boxShadow","handleSubmit","handleError"],"sources":["../../../src/app/content/d4science-page/AvatarForm.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport * as CSS from 'csstype';\r\n\r\nimport { Form, FormGroup, ActionGroup, FileUpload, Avatar, Button, Tooltip } from \"@patternfly/react-core\";\r\nimport { OutlinedQuestionCircleIcon } from '@patternfly/react-icons';\r\nimport { AccountServiceContext } from '../../account-service/AccountServiceContext';\r\nimport { ContentAlert } from '../ContentAlert';\r\nimport { Msg } from '../../widgets/Msg';\r\n\r\n\r\ninterface AvatarFormProps {\r\n accountUrl: string;\r\n}\r\n\r\ninterface AvatarFormState {\r\n errors: any;\r\n imageBlob: any;\r\n filename: string;\r\n avatarUrl: string;\r\n avatarSrc: string;\r\n noAvatarSrc: string;\r\n}\r\n\r\nexport class AvatarForm extends React.Component {\r\n static contextType = AccountServiceContext;\r\n context: React.ContextType;\r\n private handleFileInputChange: any;\r\n\r\n constructor(props: AvatarFormProps, context: React.ContextType) {\r\n super(props);\r\n this.context = context;\r\n\r\n var currentAvatar = props.accountUrl + \"-avatar\"\r\n this.state = {\r\n errors: {avatar: ''},\r\n imageBlob: null,\r\n filename: \"\",\r\n avatarUrl: currentAvatar,\r\n avatarSrc: currentAvatar,\r\n noAvatarSrc: \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMiwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzNiAzNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzYgMzY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRjBGMEYwO30KCS5zdDF7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRDJEMkQyO30KCS5zdDJ7ZmlsbDojQjhCQkJFO30KCS5zdDN7ZmlsbDojRDJEMkQyO30KPC9zdHlsZT4KPHJlY3QgY2xhc3M9InN0MCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2Ii8+CjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNy43LDIwLjFjLTMuNSwwLTYuNC0yLjktNi40LTYuNHMyLjktNi40LDYuNC02LjRzNi40LDIuOSw2LjQsNi40UzIxLjMsMjAuMSwxNy43LDIwLjF6Ii8+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMy4zLDM2bDAtNi43Yy0yLDAuNC0yLjksMS40LTMuMSwzLjVMMTAuMSwzNkgxMy4zeiIvPgo8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTAuMSwzNmwwLjEtMy4yYzAuMi0yLjEsMS4xLTMuMSwzLjEtMy41bDAsNi43aDkuNGwwLTYuN2MyLDAuNCwyLjksMS40LDMuMSwzLjVsMC4xLDMuMmg0LjcKCWMtMC40LTMuOS0xLjMtOS0yLjktMTFjLTEuMS0xLjQtMi4zLTIuMi0zLjUtMi42cy0xLjgtMC42LTYuMy0wLjZzLTYuMSwwLjctNi4xLDAuN2MtMS4yLDAuNC0yLjQsMS4yLTMuNCwyLjYKCUM2LjcsMjcsNS44LDMyLjIsNS40LDM2SDEwLjF6Ii8+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0yNS45LDM2bC0wLjEtMy4yYy0wLjItMi4xLTEuMS0zLjEtMy4xLTMuNWwwLDYuN0gyNS45eiIvPgo8L3N2Zz4=\"\r\n }\r\n\r\n var reader = new FileReader()\r\n reader.onloadend = function (event: any) {\r\n var imgData = String(event.target!.result)\r\n this.imageScale(imgData, (blob: Blob) => {\r\n this.setState({\r\n imageBlob: blob,\r\n avatarSrc: URL.createObjectURL(blob)\r\n })\r\n })\r\n }.bind(this)\r\n \r\n this.handleFileInputChange = (file: File, filename: string) => {\r\n if (filename != \"\") {\r\n this.setState({ filename: filename })\r\n reader.readAsDataURL(file)\r\n } else {\r\n this.setState({\r\n imageBlob: null,\r\n filename: \"\",\r\n avatarSrc: currentAvatar\r\n })\r\n }\r\n }\r\n }\r\n\r\n private imageScale = (imgData: string, callback: any) => {\r\n var img = new Image()\r\n img.src = imgData\r\n img.onload = (event: Event) => {\r\n var canvas = document.createElement(\"canvas\")\r\n var ctx = canvas.getContext(\"2d\")\r\n ctx!.drawImage(img, 0, 0)\r\n\r\n var MAX_WIDTH = 250\r\n var MAX_HEIGHT = 250\r\n var width = img.width\r\n var height = img.height\r\n\r\n if (width > height) {\r\n if (width > MAX_WIDTH) {\r\n height *= MAX_WIDTH / width\r\n width = MAX_WIDTH\r\n }\r\n } else {\r\n if (height > MAX_HEIGHT) {\r\n width *= MAX_HEIGHT / height\r\n height = MAX_HEIGHT\r\n }\r\n }\r\n canvas.width = width\r\n canvas.height = height\r\n ctx = canvas.getContext(\"2d\")\r\n ctx!.drawImage(img, 0, 0, width, height)\r\n canvas.toBlob(callback)\r\n }\r\n }\r\n\r\n private handleSubmit = (event: React.FormEvent): void => {\r\n event.preventDefault()\r\n const form = event.target as HTMLFormElement\r\n var formData = new FormData(form)\r\n formData.append(\"image\", this.state.imageBlob)\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState == 4) {\r\n if (200 <= xhr.status && xhr.status <= 204) {\r\n ContentAlert.success('avatarUpdatedMessage')\r\n } else {\r\n ContentAlert.danger(xhr.response)\r\n }\r\n // force reload avatar\r\n this.setState({\r\n errors: {avatar: \"\"},\r\n imageBlob: null,\r\n filename: \"\",\r\n avatarSrc: this.state.avatarUrl\r\n })\r\n }\r\n }\r\n xhr.open(form.method, form.action, true);\r\n xhr.send(formData);\r\n }\r\n\r\n private handleError = (event: any) => {\r\n this.setState({\r\n errors: {avatar: Msg.localize('error-noAvatarFound')},\r\n avatarSrc: \"\"\r\n })\r\n }\r\n\r\n render() {\r\n const { filename, avatarUrl, avatarSrc, noAvatarSrc } = this.state\r\n const avatarStyle: CSS.Properties = {\r\n objectFit: 'cover',\r\n width: '150px', height: '150px',\r\n border: '1px solid lightgray',\r\n boxShadow: 'lightgray 6px 3px 10px 2px'\r\n }\r\n return (\r\n
this.handleSubmit(event)}\r\n >\r\n \r\n { avatarSrc !== \"\"\r\n ? \r\n : \r\n }\r\n \r\n\r\n \r\n \r\n {' '}\r\n }>\r\n \r\n \r\n }\r\n >\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"AvatarForm.js","names":["React","Form","FormGroup","ActionGroup","FileUpload","Avatar","Button","Tooltip","OutlinedQuestionCircleIcon","AccountServiceContext","ContentAlert","Msg","AvatarForm","Component","constructor","props","context","imgData","callback","img","Image","src","onload","event","canvas","document","createElement","ctx","getContext","drawImage","MAX_WIDTH","MAX_HEIGHT","width","height","toBlob","preventDefault","form","target","formData","FormData","append","state","imageBlob","xhr","XMLHttpRequest","onreadystatechange","readyState","status","success","danger","response","setState","errors","avatar","filename","avatarSrc","avatarUrl","open","method","action","send","localize","currentAvatar","accountUrl","noAvatarSrc","reader","FileReader","onloadend","String","result","imageScale","blob","URL","createObjectURL","handleFileInputChange","file","readAsDataURL","render","avatarStyle","objectFit","border","boxShadow","handleSubmit","handleError"],"sources":["../../../src/app/content/d4science-page/AvatarForm.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport * as CSS from 'csstype';\r\n\r\nimport { Form, FormGroup, ActionGroup, FileUpload, Avatar, Button, Tooltip } from \"@patternfly/react-core\";\r\nimport { OutlinedQuestionCircleIcon } from '@patternfly/react-icons';\r\nimport { AccountServiceContext } from '../../account-service/AccountServiceContext';\r\nimport { ContentAlert } from '../ContentAlert';\r\nimport { Msg } from '../../widgets/Msg';\r\n\r\n\r\ninterface AvatarFormProps {\r\n accountUrl: string;\r\n}\r\n\r\ninterface AvatarFormState {\r\n errors: any;\r\n imageBlob: any;\r\n filename: string;\r\n avatarUrl: string;\r\n avatarSrc: string;\r\n noAvatarSrc: string;\r\n}\r\n\r\nexport class AvatarForm extends React.Component {\r\n static contextType = AccountServiceContext;\r\n context: React.ContextType;\r\n private handleFileInputChange: any;\r\n\r\n constructor(props: AvatarFormProps, context: React.ContextType) {\r\n super(props);\r\n this.context = context;\r\n\r\n var currentAvatar = props.accountUrl + \"-avatar\";\r\n this.state = {\r\n errors: {avatar: ''},\r\n imageBlob: null,\r\n filename: \"\",\r\n avatarUrl: currentAvatar,\r\n avatarSrc: currentAvatar,\r\n noAvatarSrc: \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMiwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzNiAzNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzYgMzY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRjBGMEYwO30KCS5zdDF7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRDJEMkQyO30KCS5zdDJ7ZmlsbDojQjhCQkJFO30KCS5zdDN7ZmlsbDojRDJEMkQyO30KPC9zdHlsZT4KPHJlY3QgY2xhc3M9InN0MCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2Ii8+CjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNy43LDIwLjFjLTMuNSwwLTYuNC0yLjktNi40LTYuNHMyLjktNi40LDYuNC02LjRzNi40LDIuOSw2LjQsNi40UzIxLjMsMjAuMSwxNy43LDIwLjF6Ii8+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMy4zLDM2bDAtNi43Yy0yLDAuNC0yLjksMS40LTMuMSwzLjVMMTAuMSwzNkgxMy4zeiIvPgo8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTAuMSwzNmwwLjEtMy4yYzAuMi0yLjEsMS4xLTMuMSwzLjEtMy41bDAsNi43aDkuNGwwLTYuN2MyLDAuNCwyLjksMS40LDMuMSwzLjVsMC4xLDMuMmg0LjcKCWMtMC40LTMuOS0xLjMtOS0yLjktMTFjLTEuMS0xLjQtMi4zLTIuMi0zLjUtMi42cy0xLjgtMC42LTYuMy0wLjZzLTYuMSwwLjctNi4xLDAuN2MtMS4yLDAuNC0yLjQsMS4yLTMuNCwyLjYKCUM2LjcsMjcsNS44LDMyLjIsNS40LDM2SDEwLjF6Ii8+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0yNS45LDM2bC0wLjEtMy4yYy0wLjItMi4xLTEuMS0zLjEtMy4xLTMuNWwwLDYuN0gyNS45eiIvPgo8L3N2Zz4=\"\r\n };\r\n\r\n var reader = new FileReader();\r\n reader.onloadend = (event: any) => {\r\n var imgData = String(event.target!.result)\r\n this.imageScale(imgData, (blob: Blob) => {\r\n this.setState({\r\n imageBlob: blob,\r\n avatarSrc: URL.createObjectURL(blob)\r\n })\r\n })\r\n };\r\n \r\n this.handleFileInputChange = (file: File, filename: string) => {\r\n if (filename != \"\") {\r\n this.setState({ filename: filename })\r\n reader.readAsDataURL(file)\r\n } else {\r\n this.setState({\r\n imageBlob: null,\r\n filename: \"\",\r\n avatarSrc: currentAvatar\r\n })\r\n }\r\n }\r\n }\r\n\r\n private imageScale = (imgData: string, callback: any) => {\r\n var img = new Image()\r\n img.src = imgData\r\n img.onload = (event: Event) => {\r\n var canvas = document.createElement(\"canvas\")\r\n var ctx = canvas.getContext(\"2d\")\r\n ctx!.drawImage(img, 0, 0)\r\n\r\n var MAX_WIDTH = 250\r\n var MAX_HEIGHT = 250\r\n var width = img.width\r\n var height = img.height\r\n\r\n if (width > height) {\r\n if (width > MAX_WIDTH) {\r\n height *= MAX_WIDTH / width\r\n width = MAX_WIDTH\r\n }\r\n } else {\r\n if (height > MAX_HEIGHT) {\r\n width *= MAX_HEIGHT / height\r\n height = MAX_HEIGHT\r\n }\r\n }\r\n canvas.width = width\r\n canvas.height = height\r\n ctx = canvas.getContext(\"2d\")\r\n ctx!.drawImage(img, 0, 0, width, height)\r\n canvas.toBlob(callback)\r\n }\r\n }\r\n\r\n private handleSubmit = (event: React.FormEvent): void => {\r\n event.preventDefault()\r\n const form = event.target as HTMLFormElement\r\n var formData = new FormData(form)\r\n formData.append(\"image\", this.state.imageBlob)\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState == 4) {\r\n if (200 <= xhr.status && xhr.status <= 204) {\r\n ContentAlert.success('avatarUpdatedMessage')\r\n } else {\r\n ContentAlert.danger(xhr.response)\r\n }\r\n // force reload avatar\r\n this.setState({\r\n errors: {avatar: \"\"},\r\n imageBlob: null,\r\n filename: \"\",\r\n avatarSrc: this.state.avatarUrl\r\n })\r\n }\r\n }\r\n xhr.open(form.method, form.action, true);\r\n xhr.send(formData);\r\n }\r\n\r\n private handleError = (event: any) => {\r\n this.setState({\r\n errors: {avatar: Msg.localize('error-noAvatarFound')},\r\n avatarSrc: \"\"\r\n })\r\n }\r\n\r\n render() {\r\n const { filename, avatarUrl, avatarSrc, noAvatarSrc } = this.state\r\n const avatarStyle: CSS.Properties = {\r\n objectFit: 'cover',\r\n width: '150px', height: '150px',\r\n border: '1px solid lightgray',\r\n boxShadow: 'lightgray 6px 3px 10px 2px'\r\n }\r\n return (\r\n
this.handleSubmit(event)}\r\n >\r\n \r\n { avatarSrc !== \"\"\r\n ? \r\n : \r\n }\r\n \r\n\r\n \r\n \r\n {' '}\r\n }>\r\n \r\n \r\n }\r\n >\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n"],"mappings":"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"} \ No newline at end of file diff --git a/keycloak-d4science-theme/src/main/resources/theme/d4science/account/messages/messages_it.properties b/keycloak-d4science-theme/src/main/resources/theme/d4science/account/messages/messages_it.properties index d5772c1..a2e1dd9 100644 --- a/keycloak-d4science-theme/src/main/resources/theme/d4science/account/messages/messages_it.properties +++ b/keycloak-d4science-theme/src/main/resources/theme/d4science/account/messages/messages_it.properties @@ -2,12 +2,12 @@ accountManagementTitle=D4Science Account Management changeAvatarHtmlTitle=Modifica Avatar noAvatarSet=Caricare un'immagine (si consiglia una dimensione di 100x100 px, le immagini che eccedono 250x250px saranno ridimensionate a 250px di larchezza o altezza mantenendo il loro rapporto) con Scegli file e premendo quindi su Salva -avatarFileSizeMessage=La massima dimensione consentita del file è di 1MB. +avatarFileSizeMessage=La massima dimensione consentita del file è di 1MB. avatarFileTooBig=Dimensione file eccessiva! deleteAccountHtmlTitle=Cancellazione Account deleteAccountSubmitButton=Conferma cancellazione account -deleteAccountMessage=La cancellazione del proprio account disabiliterà il profilo e rimuoverà il nome e le foto condivise sul/sui gateway D4Science. Alcune informazioni potrebbero risultare ancora visibili agli altri utenti, come il nome nei post e nei messaggi privati inviati. Tutti i file e le cartelle create nel workspace personale saranno rimosse. +deleteAccountMessage=La cancellazione del proprio account disabiliterà il profilo e rimuoverà il nome e le foto condivise sul/sui gateway D4Science. Alcune informazioni potrebbero risultare ancora visibili agli altri utenti, come il nome nei post e nei messaggi privati inviati. Tutti i file e le cartelle create nel workspace personale saranno rimosse. deleteAccountWarningTitle=Attenzione -deleteAccountWarningMessage=Cliccando sul bottone "Conferma cancellazione account" si avvierà un''operazione irreversibile, l''account personale sarà rimosso e saranno terminate tutte le sessioni aperte nei vari siti. -deleteAccountConfirmDeleteMessage=\\nSi vuole veramente cancellare il proprio account?\\n\\n[NB: Questa azione è irreversible] \ No newline at end of file +deleteAccountWarningMessage=Cliccando sul bottone "Conferma cancellazione account" si avvierà un''operazione irreversibile, l''account personale sarà rimosso e saranno terminate tutte le sessioni aperte nei vari siti. +deleteAccountConfirmDeleteMessage=\\nSi vuole veramente cancellare il proprio account?\\n\\n[NB: Questa azione è irreversible] \ No newline at end of file diff --git a/keycloak-d4science-theme/src/main/resources/theme/d4science/login/register.ftl b/keycloak-d4science-theme/src/main/resources/theme/d4science/login/register.ftl index ffa4a17..d31f050 100644 --- a/keycloak-d4science-theme/src/main/resources/theme/d4science/login/register.ftl +++ b/keycloak-d4science-theme/src/main/resources/theme/d4science/login/register.ftl @@ -1,4 +1,5 @@ <#import "template.ftl" as layout> +<#import "register-commons.ftl" as registerCommons> <@layout.registrationLayout displayMessage=!messagesPerField.existsError('firstName','lastName','email','username','password','password-confirm'); section> <#if section = "header"> ${msg("registerTitle")} @@ -87,10 +88,18 @@
- +
+ + +
+ <#if messagesPerField.existsError('password')> @@ -106,10 +115,17 @@ class="${properties.kcLabelClass!}">${msg("passwordConfirm")}
- +
+ + +
<#if messagesPerField.existsError('password-confirm')> @@ -120,6 +136,8 @@
+ <@registerCommons.termsAcceptance/> + <#if recaptchaRequired??>
@@ -143,6 +161,7 @@
+ - \ No newline at end of file + diff --git a/keycloak-d4science-theme/src/main/resources/theme/d4science/login/template.ftl b/keycloak-d4science-theme/src/main/resources/theme/d4science/login/template.ftl index 00d5b1b..4f9b22f 100644 --- a/keycloak-d4science-theme/src/main/resources/theme/d4science/login/template.ftl +++ b/keycloak-d4science-theme/src/main/resources/theme/d4science/login/template.ftl @@ -1,6 +1,6 @@ <#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true displayRequiredFields=false displayWide=false> - + lang="${locale.currentLanguageTag}"> @@ -35,6 +35,17 @@ + <#if authenticationSession??> + +