Merge branch 'release/v1.2' into feature/smart-banner

This commit is contained in:
Alexey Safronov 2022-05-26 16:57:04 +03:00
commit dc7d837e46
26 changed files with 327 additions and 182 deletions

View File

@ -798,38 +798,66 @@
},
{
"Excludes": [
"A-Ω",
"αδειάζοντάς",
"Αζερική",
"αναγνωσμένου",
"αναγνωσμένων",
"ανακατευθυνθείτε",
"αντιγράφηκαν",
"αντιγράφηκε",
"Αντιγράφηκε",
"απενεργοποιημένοι",
"Έκδ",
"επαληθευτή",
"Επαληθευτής",
"Λαοτινή",
"ΛΔΚ",
"Λετονικά",
"λπ",
"Μεταφορτώθηκε",
"μεταφορτώνετε",
"Ξεκαρφίτσωμα",
"πάροχος",
"περιήγησής",
"προεπιλεγμένου",
"Προεπισκόπηση",
"υποφάκελό",
"υποφακέλους",
"ψήφιο",
"Ω-A",
"Desktop",
"Check-in",
"Office",
"Enterprise"
"A-Ω",
"αδειάζοντάς",
"Αζερική",
"αναγνωσμένου",
"αναγνωσμένων",
"ανακατευθυνθείτε",
"αντιγράφηκαν",
"αντιγράφηκε",
"Αντιγράφηκε",
"απενεργοποιημένοι",
"αποεπιλέξτε",
"Αποθέστε",
"αυτοεγγραφή",
"Έκδ",
"επαληθευτή",
"Επαληθευτής",
"Επαναποστολή",
"Ξεκαρφίτσωμα",
"Λαοτινή",
"παρόχου",
"ΛΔΚ",
"Λετονικά",
"λπ",
"ληγμένος",
"πάροχος",
"περιήγησής",
"προεπιλεγμένου",
"Μεταφορτώθηκε",
"μεταφορτώνετε",
"Μεταφορτώθηκαν",
"mέλη",
"Προεπισκόπηση",
"υποενότητα",
"υποφάκελό",
"υποφακέλους",
"ψήφιο",
"Ω-A",
"Check-in",
"Cloud",
"Desktop",
"domain",
"DOCXF",
"DropBox",
"com",
"Editors",
"Enterprise",
"GZ",
"Http",
"label",
"Linux",
"Mac",
"Nextcloud",
"Office",
"OS",
"PDF",
"SaaS",
"SSO",
"White",
"Play",
"Store"
],
"Language": "el"
},
@ -1349,6 +1377,7 @@
"resetate",
"SaaS",
"Saptamanal",
"servere",
"sînt",
"SMS-ul",
"SSO",

View File

@ -40,7 +40,6 @@ const Navigation = ({
isCurrentFolderInfo,
toggleInfoPanel,
isInfoPanelVisible,
isShowRootFolder,
titles,
...rest
}) => {
@ -190,7 +189,6 @@ const Navigation = ({
isRootFolder={isRootFolder}
toggleInfoPanel={toggleInfoPanel}
isInfoPanelVisible={isInfoPanelVisible}
isShowRootFolder={isShowRootFolder}
/>
)}
</>

View File

@ -39,8 +39,7 @@ const StyledContainer = styled.div`
`;
const StyledInfoPanelToggleWrapper = styled.div`
display: ${(props) =>
props.isInfoPanelVisible && !props.isShowRootFolder ? "none" : "flex"};
display: ${(props) => (props.isInfoPanelVisible ? "none" : "flex")};
align-items: center;
align-self: center;
@ -87,13 +86,11 @@ const ToggleInfoPanelButton = ({
isRootFolder,
isInfoPanelVisible,
toggleInfoPanel,
isShowRootFolder,
}) => {
return (
<StyledInfoPanelToggleWrapper
isRootFolder={isRootFolder}
isInfoPanelVisible={isInfoPanelVisible}
isShowRootFolder={isShowRootFolder}
>
<div className="info-panel-toggle-bg">
<IconButton

View File

@ -133,22 +133,8 @@ const StyledCrossIcon = styled(CrossIcon)`
StyledCrossIcon.defaultProps = { theme: Base };
const InfoPanel = ({
children,
isVisible,
setIsVisible,
viewAs,
isRootFolder,
selectedItems,
isShowRootFolder,
setIsShowRootFolder,
}) => {
if (isRootFolder && selectedItems.length === 0) setIsShowRootFolder(true);
else setIsShowRootFolder(false);
const InfoPanel = ({ children, isVisible, setIsVisible, viewAs }) => {
if (!isVisible) return null;
if (isShowRootFolder) return null;
const closeInfoPanel = () => setIsVisible(false);
@ -196,44 +182,17 @@ StyledInfoPanelWrapper.defaultProps = { theme: Base };
StyledInfoPanel.defaultProps = { theme: Base };
InfoPanel.defaultProps = { theme: Base };
export default inject(({ infoPanelStore, selectedFolderStore, filesStore }) => {
let isVisible = false,
isRootFolder = false,
setIsVisible = () => {},
selection = [],
bufferSelection = null,
isShowRootFolder = false,
setIsShowRootFolder = () => {};
export default inject(({ infoPanelStore }) => {
let isVisible = false;
let setIsVisible = () => {};
if (infoPanelStore) {
isVisible = infoPanelStore.isVisible;
setIsVisible = infoPanelStore.setIsVisible;
isShowRootFolder = infoPanelStore.isShowRootFolder;
setIsShowRootFolder = infoPanelStore.setIsShowRootFolder;
}
if (selectedFolderStore) {
isRootFolder = selectedFolderStore.isRootFolder;
}
if (filesStore) {
selection = filesStore.selection;
bufferSelection = filesStore.bufferSelection;
}
const selectedItems =
selection?.length > 0
? [...selection]
: bufferSelection
? [bufferSelection]
: [];
return {
isVisible,
setIsVisible,
isRootFolder,
selectedItems,
isShowRootFolder,
setIsShowRootFolder,
};
})(InfoPanel);

View File

@ -1,62 +1,67 @@
import React from "react";
import React, { useRef } from "react";
import PropTypes from "prop-types";
import { StyledTextarea, StyledScrollbar } from "./styled-textarea";
// eslint-disable-next-line react/prop-types, no-unused-vars
class Textarea extends React.PureComponent {
render() {
// console.log('Textarea render');
const {
className,
id,
isDisabled,
isReadOnly,
hasError,
heightScale,
maxLength,
name,
onChange,
placeholder,
style,
tabIndex,
value,
fontSize,
heightTextArea,
color,
theme,
autoFocus,
} = this.props;
const Textarea = ({
className,
id,
isDisabled,
isReadOnly,
hasError,
heightScale,
maxLength,
name,
onChange,
placeholder,
style,
tabIndex,
value,
fontSize,
heightTextArea,
color,
theme,
autoFocus,
areaSelect,
}) => {
const areaRef = useRef(null);
return (
<StyledScrollbar
className={className}
style={style}
stype="preMediumBlack"
React.useEffect(() => {
if (areaSelect && areaRef.current) {
areaRef.current.select();
}
}, [areaRef.current]);
return (
<StyledScrollbar
className={className}
style={style}
stype="preMediumBlack"
isDisabled={isDisabled}
hasError={hasError}
heightScale={heightScale}
heighttextarea={heightTextArea}
>
<StyledTextarea
id={id}
placeholder={placeholder}
onChange={(e) => onChange && onChange(e)}
maxLength={maxLength}
name={name}
tabIndex={tabIndex}
isDisabled={isDisabled}
hasError={hasError}
heightScale={heightScale}
heighttextarea={heightTextArea}
>
<StyledTextarea
id={id}
placeholder={placeholder}
onChange={(e) => onChange && onChange(e)}
maxLength={maxLength}
name={name}
tabIndex={tabIndex}
isDisabled={isDisabled}
disabled={isDisabled}
readOnly={isReadOnly}
value={value}
fontSize={fontSize}
color={color}
autoFocus={autoFocus}
/>
</StyledScrollbar>
);
}
}
disabled={isDisabled}
readOnly={isReadOnly}
value={value}
fontSize={fontSize}
color={color}
autoFocus={autoFocus}
ref={areaRef}
/>
</StyledScrollbar>
);
};
Textarea.propTypes = {
/** Class name */
@ -92,6 +97,7 @@ Textarea.propTypes = {
/** Specifies the text color */
color: PropTypes.string,
autoFocus: PropTypes.bool,
areaSelect: PropTypes.bool,
};
Textarea.defaultProps = {
@ -105,6 +111,7 @@ Textarea.defaultProps = {
value: "",
fontSize: 13,
isAutoFocussed: false,
areaSelect: false,
};
export default Textarea;

View File

@ -40,13 +40,11 @@ StyledScrollbar.defaultProps = {
};
// eslint-disable-next-line react/prop-types, no-unused-vars
const ClearTextareaAutosize = ({
isDisabled,
heightScale,
hasError,
color,
...props
}) => <TextareaAutosize {...props} />;
const ClearTextareaAutosize = React.forwardRef(
({ isDisabled, heightScale, hasError, color, ...props }, ref) => (
<TextareaAutosize {...props} ref={ref} />
)
);
const StyledTextarea = styled(ClearTextareaAutosize).attrs((props) => ({
autoFocus: props.autoFocus,

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -76,7 +76,7 @@
"TrashEmptyDescription": "Όλα τα διαγραμμένα αρχεία μεταφέρονται στον Κάδο ανακύκλωσης. Επαναφέρετε τα αρχεία που διαγράφηκαν κατά λάθος ή διαγράψτε τα οριστικά. Λάβετε υπόψη ότι τα αρχεία που έχουν διαγραφεί από τον Κάδο ανακύκλωσης δεν μπορούν πλέον να ανακτηθούν",
"UnblockVersion": "Αναίρεση αποκλεισμού / Check-in",
"UploadToFolder": "Μεταφόρτωση σε φάκελο",
"VersionBadge": "V.{{version}}",
"VersionBadge": "Έκδ.{{version}}",
"VersionHistory": "Ιστορικό Εκδόσεων",
"ViewList": "Λίστα",
"ViewTiles": "Πλακίδια"

View File

@ -8,5 +8,6 @@
"SystemProperties": "System properties",
"Versions": "Versions",
"ViewDetails": "View Details",
"WhoHasAccess": "Who has access"
"WhoHasAccess": "Who has access",
"EmptyScreenText": "See file and folder details here"
}

View File

@ -8,5 +8,6 @@
"SystemProperties": "Системные свойства",
"Versions": "Версии",
"ViewDetails": "Просмотреть подробную информацию",
"WhoHasAccess": "У кого есть доступ"
"WhoHasAccess": "У кого есть доступ",
"EmptyScreenText": "Здесь будут представлены свойства файлов и папок"
}

View File

@ -89,13 +89,13 @@ class Tile extends React.PureComponent {
onCreateForm = () => {
const { match, history } = this.props;
const { setInfoPanelVisible } = this.props;
const { setIsInfoPanelVisible } = this.props;
const filter = FilesFilter.getDefault();
filter.folder = match.params.folderId;
const urlFilter = filter.toUrlParams();
setInfoPanelVisible(false);
setIsInfoPanelVisible(false);
history.push(
combineUrl(
@ -108,7 +108,7 @@ class Tile extends React.PureComponent {
onShowTemplateInfo = () => {
if (!this.props.isInfoPanelVisible) {
this.props.setInfoPanelVisible(true);
this.props.setIsInfoPanelVisible(true);
}
};
@ -212,7 +212,7 @@ export default inject(
({ filesStore, settingsStore, infoPanelStore }, { item }) => {
const { gallerySelected, setGallerySelected } = filesStore;
const { getIcon } = settingsStore;
const { setIsVisible, isVisible } = infoPanelStore;
const { isVisible, setIsVisible } = infoPanelStore;
const isSelected = item.id === gallerySelected?.id;
@ -220,7 +220,7 @@ export default inject(
isSelected,
setGallerySelected,
getIcon,
setInfoPanelVisible: setIsVisible,
setIsInfoPanelVisible: setIsVisible,
isInfoPanelVisible: isVisible,
};
}

View File

@ -0,0 +1,39 @@
import React from "react";
import styled from "styled-components";
import { withTranslation } from "react-i18next";
const EmptyScreenContainer = styled.div`
margin: 80px auto;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
gap: 32px;
.empty-screen-text {
font-family: "Open Sans";
font-style: normal;
font-weight: 600;
font-size: 14px;
line-height: 16px;
text-align: center;
}
`;
const EmptyScreen = ({ t }) => {
return (
<EmptyScreenContainer>
<div className="no-thumbnail-img-wrapper">
<img
size="96px"
className="no-thumbnail-img"
src="images/empty_screen_info_panel.png"
/>
</div>
<div className="empty-screen-text">{t("EmptyScreenText")}</div>
</EmptyScreenContainer>
);
};
export default withTranslation(["InfoPanel"])(EmptyScreen);

View File

@ -28,6 +28,7 @@ const SingleItem = (props) => {
dontShowSize,
dontShowLocation,
dontShowAccess,
dontShowOwner,
personal,
createThumbnail,
culture,
@ -161,6 +162,7 @@ const SingleItem = (props) => {
},
];
if (dontShowOwner) result.shift();
if (item.isFolder) return result;
result.splice(3, 0, {

View File

@ -8,6 +8,7 @@ import GalleryItem from "./GalleryItem";
import GalleryEmptyScreen from "./GalleryEmptyScreen";
import { StyledInfoRoomBody } from "./styles/styles.js";
import { Base } from "@appserver/components/themes";
import EmptyScreen from "./EmptyScreen";
const InfoPanelBodyContent = ({
t,
@ -19,9 +20,13 @@ const InfoPanelBodyContent = ({
getShareUsers,
onSelectItem,
setSharingPanelVisible,
isRootFolder,
isRecycleBinFolder,
isRecentFolder,
isFavoritesFolder,
isShareFolder,
isCommonFolder,
isPrivacyFolder,
isGallery,
gallerySelected,
personal,
@ -29,13 +34,14 @@ const InfoPanelBodyContent = ({
culture,
}) => {
const singleItem = (item) => {
const dontShowLocation = item.isFolder && item.parentId === 0;
const dontShowLocation = isRootFolder;
const dontShowSize = item.isFolder && (isFavoritesFolder || isRecentFolder);
const dontShowAccess =
isRecycleBinFolder ||
(item.isFolder && item.parentId === 0) ||
isRootFolder ||
item.rootFolderId === 7 ||
(item.isFolder && item.pathParts && item.pathParts[0] === 7);
const dontShowOwner = isRootFolder && (isFavoritesFolder || isRecentFolder);
return (
<SingleItem
@ -50,6 +56,7 @@ const InfoPanelBodyContent = ({
dontShowLocation={dontShowLocation}
dontShowSize={dontShowSize}
dontShowAccess={dontShowAccess}
dontShowOwner={dontShowOwner}
personal={personal}
culture={culture}
createThumbnail={createThumbnail}
@ -69,10 +76,21 @@ const InfoPanelBodyContent = ({
<StyledInfoRoomBody>
<>
{selectedItems.length === 0 ? (
singleItem({
...selectedFolder,
isFolder: true,
})
// Can get future changes, currently only "My documents" displays its info
isRootFolder &&
(isRecycleBinFolder ||
isRecentFolder ||
isFavoritesFolder ||
isShareFolder ||
isCommonFolder ||
isPrivacyFolder) ? (
<EmptyScreen />
) : (
singleItem({
...selectedFolder,
isFolder: true,
})
)
) : selectedItems.length === 1 ? (
singleItem(selectedItems[0])
) : (
@ -108,10 +126,14 @@ export default inject(
const { getIcon, getFolderIcon } = settingsStore;
const { onSelectItem } = filesActionsStore;
const { setSharingPanelVisible } = dialogsStore;
const { isRootFolder } = selectedFolderStore;
const {
isRecycleBinFolder,
isRecentFolder,
isFavoritesFolder,
isShareFolder,
isCommonFolder,
isPrivacyFolder,
} = treeFoldersStore;
const selectedItems =
@ -130,9 +152,15 @@ export default inject(
getFolderIcon,
onSelectItem,
setSharingPanelVisible,
isRootFolder,
isRecycleBinFolder,
isRecentFolder,
isFavoritesFolder,
isShareFolder,
isCommonFolder,
isPrivacyFolder,
gallerySelected,
personal,
createThumbnail,

View File

@ -362,7 +362,6 @@ class SectionHeaderContent extends React.Component {
isHeaderIndeterminate,
showText,
toggleInfoPanel,
isShowRootFolder,
} = this.props;
const menuItems = this.getMenuItems();
const isLoading = !title || !tReady;
@ -420,7 +419,6 @@ class SectionHeaderContent extends React.Component {
onBackToParentFolder={this.onBackToParentFolder}
toggleInfoPanel={toggleInfoPanel}
isInfoPanelVisible={isInfoPanelVisible}
isShowRootFolder={isShowRootFolder}
titles={{
trash: t("EmptyRecycleBin"),
}}
@ -485,7 +483,7 @@ export default inject(
backToParentFolder,
} = filesActionsStore;
const { isVisible, isShowRootFolder, toggleIsVisible } = infoPanelStore;
const { toggleIsVisible, isVisible } = infoPanelStore;
return {
showText: auth.settingsStore.showText,
@ -498,7 +496,6 @@ export default inject(
canCreate,
toggleInfoPanel: toggleIsVisible,
isInfoPanelVisible: isVisible,
isShowRootFolder,
isHeaderVisible,
isHeaderIndeterminate,
isHeaderChecked,

View File

@ -173,6 +173,7 @@ const VersionRow = (props) => {
value={commentValue}
isDisabled={isSavingComment}
autoFocus={true}
areaSelect={true}
/>
</>
)}

View File

@ -2,7 +2,6 @@ import { makeAutoObservable } from "mobx";
class InfoPanelStore {
isVisible = false;
isShowRootFolder = false;
constructor() {
makeAutoObservable(this);
@ -12,17 +11,13 @@ class InfoPanelStore {
this.isVisible = !this.isVisible;
};
setVisible = () => {
this.isVisible = true;
};
setIsVisible = (bool) => {
this.isVisible = bool;
};
setIsToggleVisible = (bool) => {
this.isToggleVisible = bool;
};
setIsShowRootFolder = (bool) => {
this.isShowRootFolder = bool;
};
}
export default InfoPanelStore;

View File

@ -0,0 +1,42 @@
{
"count": 1,
"response": {
"files": [],
"folders": [],
"current": {
"parentId": 0,
"filesCount": 6390,
"foldersCount": 40,
"new": 0,
"id": 8,
"rootFolderId": 8,
"canShare": false,
"canEdit": false,
"title": "Trash",
"access": 0,
"shared": false,
"created": "2021-09-16T12:09:15.0000000Z",
"createdBy": {
"id": "fcfa85e3-15fc-11ec-8f4f-80ce62334fc7",
"displayName": "Administrator ",
"avatarSmall": "/images/default_user_photo_size_32-32.png",
"profileUrl": "http://localhost:8092/products/people/view/administrator"
},
"updated": "2021-09-16T12:09:15.0000000Z",
"rootFolderType": 3,
"updatedBy": {
"id": "fcfa85e3-15fc-11ec-8f4f-80ce62334fc7",
"displayName": "Administrator ",
"avatarSmall": "/images/default_user_photo_size_32-32.png",
"profileUrl": "http://localhost:8092/products/people/view/administrator"
}
},
"pathParts": [8],
"startIndex": 0,
"count": 1,
"total": 1,
"new": 0
},
"status": 0,
"statusCode": 200
}

View File

@ -139,7 +139,15 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
else if (!string.IsNullOrEmpty(error2))
{
Error = error2;
}
}
var finished1 = thirdpartyTask.GetProperty<bool?>(FINISHED);
var finished2 = daoTask.GetProperty<bool?>(FINISHED);
if (finished1 != null && finished2 != null)
{
TaskInfo.SetProperty(FINISHED, finished1);
}
successProcessed = thirdpartyTask.GetProperty<int>(PROCESSED) + daoTask.GetProperty<int>(PROCESSED);

View File

@ -19,6 +19,7 @@
"i18next": "^21.6.5",
"prop-types": "^15.7.2",
"react": "^17.0.1",
"react-device-detect": "^2.2.2",
"react-dom": "^17.0.1",
"react-helmet": "^6.1.0",
"react-i18next": "^11.15.3",

View File

@ -9,7 +9,10 @@ import {
SectionContent,
SectionHeader,
SectionWrapper,
StyledIframe } from "./styled-section";
StyledIframe,
StyledAction } from "./styled-section";
import cross from './images/cross.react.svg'
export const Section = ({name, origin, lang}) => {
@ -31,8 +34,11 @@ export const Section = ({name, origin, lang}) => {
}
return <StyledSection>
<div>
<div style={{position: "relative"}}>
<StyledIframe scrolling="no" className="iframe" src={url} />
<StyledAction>
<img style={{width: "16px"}} src={cross} />
</StyledAction>
</div>
<SectionWrapper>
<SectionHeader>My documents</SectionHeader>

View File

@ -0,0 +1,3 @@
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.76288 6.35869C7.56764 6.16343 7.56764 5.84687 7.76288 5.65161L10.9493 2.46498C11.1445 2.26973 11.1445 1.95316 10.9493 1.75791L10.2422 1.05077C10.0469 0.855489 9.73031 0.855489 9.53504 1.05077L6.34878 4.23729C6.15352 4.43257 5.83691 4.43257 5.64165 4.23729L2.46017 1.05556C2.26491 0.860275 1.9483 0.860275 1.75304 1.05556L1.04596 1.76269C0.850716 1.95795 0.850716 2.27451 1.04596 2.46977L4.22755 5.65161C4.42279 5.84687 4.42279 6.16343 4.22755 6.35869L1.0501 9.53639C0.854858 9.73165 0.854858 10.0482 1.0501 10.2435L1.75718 10.9506C1.95245 11.1459 2.26905 11.1459 2.46432 10.9506L5.64165 7.77302C5.83691 7.57774 6.15352 7.57774 6.34878 7.77302L9.5309 10.9554C9.72616 11.1507 10.0428 11.1507 10.238 10.9554L10.9451 10.2483C11.1404 10.053 11.1404 9.73644 10.9451 9.54118L7.76288 6.35869Z" fill="#999976"/>
</svg>

After

Width:  |  Height:  |  Size: 958 B

View File

@ -1,4 +1,5 @@
import styled from "styled-components";
import styled, { css } from "styled-components";
import { isMobile } from "react-device-detect";
const StyledSection = styled.div`
width: 100%;
@ -50,5 +51,21 @@ const StyledIframe = styled.iframe`
width: 100%;
`;
const StyledAction = styled.div`
position: absolute;
right: 8px;
top: 10px;
background: inherit;
display: inline-block;
border: none;
font-size: inherit;
color: "#333";
cursor: pointer;
text-decoration: underline;
${isMobile &&
css`
right: 14px;
`};
`;
export {StyledSection, Icon, Name, MainLoader, FilterLoader, SectionContent, SectionHeader, SectionWrapper, StyledIframe}
export {StyledSection, Icon, Name, MainLoader, FilterLoader, SectionContent, SectionHeader, SectionWrapper, StyledIframe, StyledAction}

View File

@ -15028,6 +15028,13 @@ react-dev-utils@^11.0.4:
strip-ansi "6.0.0"
text-table "0.2.0"
react-device-detect@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/react-device-detect/-/react-device-detect-2.2.2.tgz#dbabbce798ec359c83f574c3edb24cf1cca641a5"
integrity sha512-zSN1gIAztUekp5qUT/ybHwQ9fmOqVT1psxpSlTn1pe0CO+fnJHKRLOWWac5nKxOxvOpD/w84hk1I+EydrJp7SA==
dependencies:
ua-parser-js "^1.0.2"
react-docgen-typescript@^2.0.0:
version "2.2.2"
resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c"
@ -17435,6 +17442,11 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
ua-parser-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.2.tgz#e2976c34dbfb30b15d2c300b2a53eac87c57a775"
integrity sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==
uglify-js@^3.1.4:
version "3.15.5"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.5.tgz#2b10f9e0bfb3f5c15a8e8404393b6361eaeb33b3"

View File

@ -14,7 +14,7 @@
"AdministratorsAddedSuccessfully": "Οι διαχειριστές προστέθηκαν με επιτυχία",
"AdministratorsRemovedSuccessfully": "Οι διαχειριστές καταργήθηκαν επιτυχώς",
"Admins": "Διαχειριστές",
"AllDomains": "Οποιoδήποτε domain",
"AllDomains": "Οποιοιδήποτε domain",
"AutoBackup": "Αυτόματα αντίγραφα ασφαλείας",
"AutoBackupDescription": "Χρησιμοποιήστε αυτήν την επιλογή για να δημιουργήσετε αυτόματα αντίγραφα ασφαλείας των δεδομένων της πύλης.",
"AutoBackupHelp": "Η επιλογή <strong>Αυτόματα αντίγραφα ασφαλείας</strong> χρησιμοποιείται για την αυτοματοποίηση της διαδικασίας δημιουργίας αντιγράφων ασφαλείας των δεδομένων της πύλης, ώστε να είναι δυνατή η επαναφορά τους αργότερα σε έναν τοπικό διακομιστή.",
@ -23,7 +23,7 @@
"AutoSavePeriodHelp": "Η ώρα που εμφανίζεται παρακάτω αντιστοιχεί στη ζώνη ώρας που έχει οριστεί στην πύλη.",
"Backup": "Αντίγραφα ασφαλείας",
"BackupCreatedError": "Προέκυψε σφάλμα. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.",
"BackupCreatedSuccess": "Το εφερδρικό αντίγραφο έχει δημιουργηθεί επιτυχώς.",
"BackupCreatedSuccess": "Το εφεδρικό αντίγραφο έχει δημιουργηθεί επιτυχώς.",
"BackupList": "Εφεδρική λίστα",
"BackupListWarningText": "Εάν διαγράψετε στοιχεία από τη λίστα, θα διαγραφούν και τα αντίστοιχα αρχεία τους. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Για να διαγράψετε όλα τα αρχεία, χρησιμοποιήστε τον σύνδεσμο:",
"BrowserNoCanvasSupport": "Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα καμβά HTML5.",
@ -146,7 +146,7 @@
"ThirdPartyStorageDescription": "Το αντίγραφο ασφαλείας μπορεί να αποθηκευτεί σε αποθηκευτικό χώρο τρίτου μέρους. Πριν από αυτό, πρέπει να συνδέσετε την αντίστοιχη υπηρεσία στην ενότητα 'Ενοποίηση'. Διαφορετικά, οι παρακάτω ρυθμίσεις θα είναι ανενεργές.",
"ThirdPartyTitleDescription": "Με τα κλειδιά εξουσιοδότησης, μπορείτε να συνδέσετε υπηρεσίες τρίτων μερών στην πύλη σας. Συνδεθείτε εύκολα με το Facebook, το Twitter ή το LinkedIn, προσθέστε το Dropbox, το OneDrive κ.λπ. για να εργάζεστε με αρχεία που είναι αποθηκευμένα εκεί από την ενότητα Έγγραφα.",
"TimeZone": "Ζώνη ώρας",
"TrustedMail": "Ρυθμίσεις Αξιόπιστου Mail Domain",
"TrustedMail": "Ρυθμίσεις τομέα αξιόπιστης αλληλογραφίας",
"TrustedMailDescription": "Οι ρυθμίσεις τομέα αξιόπιστης αλληλογραφίας είναι ένας τρόπος για να καθορίσετε τους διακομιστές αλληλογραφίας που χρησιμοποιούνται για την αυτοεγγραφή των χρηστών.",
"TrustedMailHelper": "Μπορείτε είτε να επιλέξετε το Προσαρμοσμένοι τομείς και να εισάγετε τον διακομιστή αξιόπιστης αλληλογραφίας στο παρακάτω πεδίο, ώστε ένα άτομο που έχει λογαριασμό σε αυτόν να μπορεί να εγγραφεί μόνο του κάνοντας κλικ στον σύνδεσμο Συμμετοχή στη σελίδα Είσοδος, είτε να απενεργοποιήσετε αυτήν την επιλογή.",
"TwoFactorAuth": "Έλεγχος ταυτότητας δύο παραγόντων",

View File

@ -36,12 +36,16 @@ const StyledAboutBody = styled.div`
}
.logo-theme {
#svg_4-4 {
fill: ${(props) => props.theme.studio.about.logoColor};
}
svg {
g:nth-child(2) {
path:nth-child(5) {
fill: ${(props) => props.theme.studio.about.logoColor};
}
#svg_5-5 {
fill: ${(props) => props.theme.studio.about.logoColor};
path:nth-child(6) {
fill: ${(props) => props.theme.studio.about.logoColor};
}
}
}
}
`;