new file: a.out

new file:   assets/conversatorai/fonts/SF-Pro-Display-Semibold.otf
	new file:   assets/conversatorai/fonts/SF-Pro-Text-Regular.otf
	new file:   assets/conversatorai/fonts/SF-Pro-Text-Regular.txt
	new file:   assets/conversatorai/fonts/SF-Pro-Text-Regular_richtig.txt
	new file:   assets/conversatorai/index.html
	new file:   assets/conversatorai/scripts/all.js
	new file:   assets/conversatorai/scripts/voice.js
	new file:   assets/conversatorai/styles/all.css
	new file:   assets/conversatorai/styles/mobile.css
	new file:   assets/examples/rating/index.html
	new file:   assets/fonts/SF-Pro-Display-Semibold.otf
	new file:   assets/fonts/SF-Pro-Text-Regular.otf
	new file:   assets/fonts/SF-Pro-Text-Semibold.otf
	new file:   assets/i18n/de/main.js
	new file:   assets/i18n/de/nav/globalfooter.js
	new file:   assets/i18n/de/nav/menus/moreoptions.js
	new file:   assets/i18n/de/pages/contact.js
	new file:   assets/i18n/de/pages/files.js
	new file:   assets/i18n/de/pages/home.js
	new file:   assets/i18n/de/pages/index.js
	new file:   assets/i18n/de/pages/login.js
	new file:   assets/i18n/de/pages/signup.js
	new file:   assets/i18n/de/popups/set-client-language.js
	new file:   assets/i18n/de/private-application-banner.js
	new file:   assets/i18n/de/search.js
	new file:   assets/i18n/en/nav/globalfooter.js
	new file:   assets/i18n/en/nav/menus/moreoptions.js
	new file:   assets/i18n/en/pages/contact.js
	new file:   assets/i18n/en/pages/files.js
	new file:   assets/i18n/en/pages/home.js
	new file:   assets/i18n/en/pages/i18n.js
	new file:   assets/i18n/en/pages/index.js
	new file:   assets/i18n/en/pages/login.js
	new file:   assets/i18n/en/pages/signup.js
	new file:   assets/i18n/en/popups/set-client-language.js
	new file:   assets/i18n/en/private-application-banner.js
	new file:   assets/i18n/en/search.js
	new file:   assets/i18n/it/nav/globalfooter.js
	new file:   assets/i18n/it/nav/menus/moreoptions.js
	new file:   assets/i18n/it/pages/contact.js
	new file:   assets/i18n/it/pages/files.js
	new file:   assets/i18n/it/pages/home.js
	new file:   assets/i18n/it/pages/index.js
	new file:   assets/i18n/it/pages/login.js
	new file:   assets/i18n/it/pages/signup.js
	new file:   assets/i18n/it/popups/set-client-language.js
	new file:   assets/i18n/it/private-application-banner.js
	new file:   assets/i18n/it/search.js
	new file:   assets/i18n/ui-labels/de/main.js
	new file:   assets/i18n/ui-labels/en/main.js
	new file:   assets/i18n/ui-labels/it/main.js
	new file:   assets/img/apps/symbols/logo-150x150.png
	new file:   assets/img/apps/symbols/logo-150x150.svg
	new file:   assets/img/background.jfif
	new file:   assets/img/check/main.svg
	new file:   assets/img/favicon.ico
	new file:   assets/img/favicon.png
	new file:   assets/img/jcloud-ui-icons/angle-down.svg
	new file:   assets/img/jcloud-ui-icons/angle-left.svg
	new file:   assets/img/jcloud-ui-icons/angle-right.svg
	new file:   assets/img/jcloud-ui-icons/angle-up.svg
	new file:   assets/img/jcloud-ui-icons/autocomplete-insert.svg
	new file:   assets/img/jcloud-ui-icons/folder-plus.svg
	new file:   assets/img/jcloud-ui-icons/refresh.svg
	new file:   assets/img/jcloud-ui-icons/search.svg
	new file:   assets/img/jcloud-ui-icons/selected.svg
	new file:   assets/img/jcloud-ui-icons/upload.svg
	new file:   assets/img/logo/logo-30x45.svg
	new file:   assets/img/logo/logo.svg
	new file:   assets/img/nav/go/main.svg
	new file:   assets/img/nav/moreoptions/more-options.svg
	new file:   assets/img/qc/brightness/high.svg
	new file:   assets/img/qc/brightness/low.svg
	new file:   assets/img/qc/notifications/bell.svg
	new file:   assets/img/qc/notifications/dnd.svg
	new file:   assets/img/search.svg
	new file:   assets/legal/de/termsofuse.markdown
	new file:   assets/manifest.webmanifest
	new file:   assets/scripts/change-language/main.js
	new file:   assets/scripts/components/files-item.component.js
	new file:   assets/scripts/constants/main.js
	new file:   assets/scripts/constants/main.min.js
	new file:   assets/scripts/constants/ui-labels/de/main.js
	new file:   assets/scripts/constants/ui-labels/de/main.min.js
	new file:   assets/scripts/constants/ui-labels/en/main.js
	new file:   assets/scripts/constants/ui-labels/en/main.min.js
	new file:   assets/scripts/constants/ui-labels/it/main.js
	new file:   assets/scripts/constants/ui-labels/it/main.min.js
	new file:   assets/scripts/constants/ui-labels/main.js
	new file:   assets/scripts/constants/ui-labels/main.min.js
	new file:   assets/scripts/contact/main.js
	new file:   assets/scripts/contact/main.min.js
	new file:   assets/scripts/elements/dropdown/main.js
	new file:   assets/scripts/elements/dropdown/main.min.js
	new file:   assets/scripts/files/main.js
	new file:   assets/scripts/files/main.min.js
	new file:   assets/scripts/home/main.js
	new file:   assets/scripts/i18n/main.js
	new file:   assets/scripts/i18n/main.min.js
	new file:   assets/scripts/init/init.js
	new file:   assets/scripts/init/init.min.js
	new file:   assets/scripts/main/main.js
	new file:   assets/scripts/main/main.min.js
	new file:   assets/scripts/nav/menus/moreoptions/main.js
	new file:   assets/scripts/nav/menus/moreoptions/main.min.js
	new file:   assets/scripts/popups/change-language/main.js
	new file:   assets/scripts/popups/change-language/main.min.js
	new file:   assets/scripts/popups/popups.js
	new file:   assets/scripts/popups/popups.min.js
	new file:   assets/scripts/scroll/main.js
	new file:   assets/scripts/scroll/main.min.js
	new file:   assets/scripts/search/main.js
	new file:   assets/scripts/tools/main.js
	new file:   assets/scripts/tools/main.min.js
	new file:   assets/scripts/users/main.js
	new file:   assets/scripts/users/main.min.js
	new file:   assets/sitemap.xml
	new file:   assets/styles/elements/apportionment/main.css
	new file:   assets/styles/elements/banners/main.css
	new file:   assets/styles/elements/buttons/main.css
	new file:   assets/styles/elements/checkbox/main.css
	new file:   assets/styles/elements/dropdown/main.css
	new file:   assets/styles/elements/flexbox/main.css
	new file:   assets/styles/elements/inputs/main.css
	new file:   assets/styles/elements/jcloud-ui/dialogs/main.css
	new file:   assets/styles/elements/jcloud-ui/dialogs/mobile/main.css
	new file:   assets/styles/elements/jcloud-ui/dialogs/prompt.css
	new file:   assets/styles/elements/jcloud-ui/dialogs/tablet/main.css
	new file:   assets/styles/elements/jcloud-ui/overlays.css
	new file:   assets/styles/elements/jcloud-ui/textures/glass/main.css
	new file:   assets/styles/elements/lists/actions-list/main.css
	new file:   assets/styles/elements/lists/items-list/main.css
	new file:   assets/styles/elements/lists/items-list/mobile.css
	new file:   assets/styles/elements/main-elements/dark.css
	new file:   assets/styles/elements/main-elements/desktop/main.css
	new file:   assets/styles/elements/main-elements/desktop/main.min.css
	new file:   assets/styles/elements/main-elements/main.css
	new file:   assets/styles/elements/main-elements/mobile/main.css
	new file:   assets/styles/elements/main-elements/tablet/main.css
	new file:   assets/styles/elements/main-elements/tablet_and_desktop/main.css
	new file:   assets/styles/elements/main-elements/tablet_and_desktop/main.min.css
	new file:   assets/styles/elements/page-indicator/main.css
	new file:   assets/styles/font-faces/main.css
	new file:   assets/styles/loaders/loading/main.css
	new file:   assets/styles/loaders/main.css
	new file:   assets/styles/modules/contact/main.css
	new file:   assets/styles/modules/contact/mobile.css
	new file:   assets/styles/modules/files/main.css
	new file:   assets/styles/modules/files/mobile.css
	new file:   assets/styles/modules/home/main.css
	new file:   assets/styles/modules/home/mobile.css
	new file:   assets/styles/modules/home/tablet_and_desktop.css
	new file:   assets/styles/modules/login/main.css
	new file:   assets/styles/modules/search/main.css
	new file:   assets/styles/modules/startpage/main.css
	new file:   assets/styles/modules/startpage/mobile.css
	new file:   assets/styles/modules/startpage/tablet_and_desktop.css
	new file:   assets/styles/nav/globalfooter/main.css
	new file:   assets/styles/nav/globalnav/main.css
	new file:   assets/styles/nav/menus/moreoptions/main.css
	new file:   assets/styles/var/main.css
	new file:   bak
	new file:   index.html
	new file:   index2.html
	new file:   jokisches-reich/Aemter.pdf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/NotoSans-Italic-VariableFont_wdth,wght.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/NotoSans-VariableFont_wdth,wght.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/OFL.txt
	new file:   jokisches-reich/assets/fonts/Noto-Sans/README.txt
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Black.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-BlackItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Bold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-BoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-ExtraBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-ExtraBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-ExtraLight.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-ExtraLightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Italic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Light.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-LightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Medium.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-MediumItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Regular.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-SemiBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-SemiBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Thin.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-ThinItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Black.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-BlackItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Bold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-BoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-ExtraBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-ExtraLight.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-ExtraLightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Italic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Light.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-LightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Medium.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-MediumItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Regular.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-SemiBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-SemiBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Thin.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-ThinItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Black.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Bold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Italic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Light.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-LightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Medium.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Regular.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-SemiBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Thin.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Black.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-BlackItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Bold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-BoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-ExtraBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-ExtraLight.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Italic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Light.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-LightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Medium.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-MediumItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Regular.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-SemiBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Thin.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-ThinItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/NotoSerif-Italic-VariableFont_wdth,wght.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/NotoSerif-VariableFont_wdth,wght.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/OFL.txt
	new file:   jokisches-reich/assets/fonts/Noto-Serif/README.txt
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Black.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-BlackItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Bold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-BoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-ExtraBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-ExtraBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-ExtraLight.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-ExtraLightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Italic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Light.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-LightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Medium.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-MediumItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Regular.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-SemiBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-SemiBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Thin.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-ThinItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Black.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-BlackItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Bold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-BoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-ExtraBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-ExtraBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-ExtraLight.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-ExtraLightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Italic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Light.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-LightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Medium.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-MediumItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Regular.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-SemiBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-SemiBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Thin.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-ThinItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Black.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-BlackItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Bold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-BoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-ExtraBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-ExtraBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-ExtraLight.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-ExtraLightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Italic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Light.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-LightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Medium.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-MediumItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Regular.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-SemiBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-SemiBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Thin.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-ThinItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Black.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-BlackItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Bold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-BoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-ExtraBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-ExtraBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-ExtraLight.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-ExtraLightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Italic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Light.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-LightItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Medium.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-MediumItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Regular.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-SemiBold.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-SemiBoldItalic.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Thin.ttf
	new file:   jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-ThinItalic.ttf
	new file:   jokisches-reich/assets/fonts/noto-serif-v21-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular-eot.eot
	new file:   jokisches-reich/assets/images/flag.jpg
	new file:   jokisches-reich/assets/images/flag.png
	new file:   jokisches-reich/assets/images/flag.svg
	new file:   jokisches-reich/assets/manifest.webmanifest
	new file:   jokisches-reich/assets/styles/main/main.css
	new file:   jokisches-reich/geschichte/index.html
	new file:   jokisches-reich/geschichte/informationen/index.html
	new file:   jokisches-reich/gesetze/assets/styles/main/main.css
	new file:   jokisches-reich/gesetze/index.html
	new file:   jokisches-reich/gesetze/verfassung/index.html
	new file:   jokisches-reich/index.html
	new file:   jokisches-reich/internationales/assets/images/id-card-solid.jpg
	new file:   jokisches-reich/internationales/assets/images/id-card-solid.svg
	new file:   jokisches-reich/internationales/index.html
	new file:   jokisches-reich/internationales/staatsbuergerschaft/index.html
	new file:   jokisches-reich/presse/index.html
	new file:   jokisches-reich/presse/kurzmeldungen/564878/index.html
	new file:   jokisches-reich/presse/kurzmeldungen/753042/index.html
	new file:   jokisches-reich/presse/kurzmeldungen/index.html
	new file:   jokisches-reich/regierung/index.html
	new file:   jokisches-reich/regierung/ministerien/finanzministerium/index.html
	new file:   jokisches-reich/regierung/ministerien/index.html
	new file:   jokisches-reich/regierung/ministerien/ministerium-fuer-aeussere-angelegenheiten/index.html
	new file:   jokisches-reich/regierung/ministerien/ministerium-fuer-digitales/index.html
	new file:   jokisches-reich/regierung/ministerien/ministerium-fuer-innere-angelegenheiten/index.html
	new file:   jokisches-reich/regierung/ministerien/ministerium-fuer-wirtschaft/index.html
	new file:   jokisches-reich/regierung/ministerien/verkehrsministerium/index.html
	new file:   jokisches-reich/regierung/ministerien/verteidigungsministerium/index.html
	new file:   jokisches-reich/sitemap/index.html
	new file:   jokisches-reich/wirtschaft/assets/images/geldscheine-euro.jpg
	new file:   jokisches-reich/wirtschaft/assets/images/gewinndiagramm-steigend.jpg
	new file:   jokisches-reich/wirtschaft/assets/images/jok.png
	new file:   jokisches-reich/wirtschaft/assets/images/jok.svg
	new file:   jokisches-reich/wirtschaft/boerse/index.html
	new file:   jokisches-reich/wirtschaft/index.html
	new file:   jokisches-reich/wirtschaft/jok/index.html
	new file:   legal/user-consent/de/index.html
	new file:   legal/user-consent/en/index.html
	new file:   legal/user-consent/it/index.html
	new file:   seekra/index.html
	new file:   seekra/sign-in-test/index.html
	new file:   seekra/sign-in/index.html
	new file:   seekra/static/aes/index.html
	new file:   seekra/static/aes/main.js
	new file:   seekra/static/img/favicon.ico
	new file:   seekra/static/img/favicon.jpeg
	new file:   seekra/static/img/favicon.png
	new file:   seekra/static/img/favicon/Unbenannt.png
	new file:   seekra/static/img/favicon/favicon.ico
	new file:   seekra/static/img/favicon/favicon.png
	new file:   seekra/static/img/favicon/favicon.svg
	new file:   seekra/static/img/search/magnifying-glass.svg
	new file:   seekra/static/img/user/main.svg
	new file:   seekra/static/skr-clientlib/scripts/js/account/main.js
	new file:   seekra/static/skr-clientlib/scripts/js/tools/main.js
	new file:   seekra/static/skr-clientlib/styles/css/dark/var/main.css
	new file:   seekra/static/skr-clientlib/styles/css/elements/inputs/main.css
	new file:   seekra/static/skr-clientlib/styles/css/footer/globalfooter/main.css
	new file:   seekra/static/skr-clientlib/styles/css/main/main.css
	new file:   seekra/static/skr-clientlib/styles/css/nav/globalnav/navbar/main.css
	new file:   seekra/static/skr-clientlib/styles/css/var/main.css
This commit is contained in:
2025-12-17 16:13:45 +01:00
parent 9785fb4861
commit 15ce39693a
380 changed files with 12743 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
// EMPTY!!!!!!!!!!
@@ -0,0 +1,18 @@
class FilesItem extends HTMLTableRowElement {
constructor() {
super();
}
connectedCallback() {
const col1 = this.getAttribute('text') || '';
const col2 = this.getAttribute('col2') || '';
console.log('col1: ' + col1)
console.log('col2: ' + col2)
this.innerHTML = `
<td>${col1}</td>
<td>${col2}</td>
`;
}
}
customElements.define('files-item', FilesItem, { extends: 'tr' });
+94
View File
@@ -0,0 +1,94 @@
MIME_TYPES = {'.gz': 'application/gzip',
'.mjs': 'application/javascript',
'.json': 'application/json',
'.doc': 'application/msword',
'.exe': 'application/octet-stream',
'.pdf': 'application/pdf',
'.rtf': 'application/rtf',
'.apk': 'application/vnd.android.package-archive',
'.deb': 'application/vnd.debian.binary-package',
'.kml': 'application/vnd.google-earth.kml+xml',
'.kmz': 'application/vnd.google-earth.kmz',
'.xul': 'application/vnd.mozilla.xul+xml',
'.xls': 'application/vnd.ms-excel',
'.eot': 'application/vnd.ms-fontobject',
'.ppt': 'application/vnd.ms-powerpoint',
'.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
'.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'.rar': 'application/vnd.rar',
'.wasm': 'application/wasm',
'.swf': 'application/x-7z-compressed',
'.dmg': 'application/x-apple-diskimage',
'.bz': 'application/x-bzip',
'.bz2': 'application/x-bzip2',
'.csh': 'application/x-csh',
'.php': 'application/x-httpd-php',
'.iso': 'application/x-iso9660-image',
'.jar': 'application/x-java-archive',
'.pl': 'application/x-perl',
'.pfx': 'application/x-pkcs12',
'.spc': 'application/x-pkcs7-certificates',
'.p7r': 'application/x-pkcs7-certreqresp',
'.p7m': 'application/x-pkcs7-mime',
'.p7s': 'application/x-pkcs7-signature',
'.py': 'application/x-python-code',
'.rpm': 'application/x-rpm',
'.rb': 'application/x-ruby',
'.sh': 'application/x-sh',
'.tar': 'application/x-tar',
'.tcl': 'application/x-tcl',
'.tex': 'application/x-tex',
'.texinfo': 'application/x-texinfo',
'.xwwwfurle': 'application/x-www-form-urlencoded',
'.pem': 'application/x-x509-ca-cert',
'.xpi': 'application/x-xpinstall',
'.yml': 'application/x-yaml',
'.xhtml': 'application/xhtml+xml',
'.xml': 'application/xml',
'.xslt': 'application/xslt+xml',
'.xspf': 'application/xspf+xml',
'.zip': 'application/zip',
'.js': 'application/javascript',
'.aac': 'audio/aac',
'.flac': 'audio/flac',
'.midi': 'audio/midi',
'.mp3': 'audio/mpeg',
'.ogg': 'audio/ogg',
'.opus': 'audio/opus',
'.wav': 'audio/wav',
'.otf': 'font/otf',
'.ttf': 'font/ttf',
'.woff': 'font/woff',
'.woff2': 'font/woff2',
'.bmp': 'image/bmp',
'.gif': 'image/gif',
'.jpg': 'image/jpeg',
'.jpeg': 'image/jpeg',
'.png': 'image/png',
'.svg': 'image/svg+xml',
'.tiff': 'image/tiff',
'.webp': 'image/webp',
'.ico': 'image/x-icon',
'.fd': 'multipart/form-data',
'.aspx': 'text/asp',
'.css': 'text/css',
'.csv': 'text/csv',
'.html': 'text/html',
'.jsp': 'text/jsp',
'.md': 'text/markdown',
'.txt': 'text/plain',
'': 'text/plain',
'.java': 'text/x-java-source',
'.3gp': 'video/3gpp',
'.3g2': 'video/3gpp2',
'.mp4': 'video/mp4',
'.qt': 'video/quicktime',
'.webm': 'video/webm',
'.flv': 'video/x-flv',
'.m4v': 'video/x-m4v',
'.mkv': 'video/x-matroska',
'.avi': 'video/x-msvideo',
'.mov': 'video/quicktime',
'.msi': 'application/x-msi'
};
+1
View File
@@ -0,0 +1 @@
MIME_TYPES={".gz":"application/gzip",".mjs":"application/javascript",".json":"application/json",".doc":"application/msword",".exe":"application/octet-stream",".pdf":"application/pdf",".rtf":"application/rtf",".apk":"application/vnd.android.package-archive",".deb":"application/vnd.debian.binary-package",".kml":"application/vnd.google-earth.kml+xml",".kmz":"application/vnd.google-earth.kmz",".xul":"application/vnd.mozilla.xul+xml",".xls":"application/vnd.ms-excel",".eot":"application/vnd.ms-fontobject",".ppt":"application/vnd.ms-powerpoint",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".rar":"application/vnd.rar",".wasm":"application/wasm",".swf":"application/x-7z-compressed",".dmg":"application/x-apple-diskimage",".bz":"application/x-bzip",".bz2":"application/x-bzip2",".csh":"application/x-csh",".php":"application/x-httpd-php",".iso":"application/x-iso9660-image",".jar":"application/x-java-archive",".pl":"application/x-perl",".pfx":"application/x-pkcs12",".spc":"application/x-pkcs7-certificates",".p7r":"application/x-pkcs7-certreqresp",".p7m":"application/x-pkcs7-mime",".p7s":"application/x-pkcs7-signature",".py":"application/x-python-code",".rpm":"application/x-rpm",".rb":"application/x-ruby",".sh":"application/x-sh",".tar":"application/x-tar",".tcl":"application/x-tcl",".tex":"application/x-tex",".texinfo":"application/x-texinfo",".xwwwfurle":"application/x-www-form-urlencoded",".pem":"application/x-x509-ca-cert",".xpi":"application/x-xpinstall",".yml":"application/x-yaml",".xhtml":"application/xhtml+xml",".xml":"application/xml",".xslt":"application/xslt+xml",".xspf":"application/xspf+xml",".zip":"application/zip",".js":"application/javascript",".aac":"audio/aac",".flac":"audio/flac",".midi":"audio/midi",".mp3":"audio/mpeg",".ogg":"audio/ogg",".opus":"audio/opus",".wav":"audio/wav",".otf":"font/otf",".ttf":"font/ttf",".woff":"font/woff",".woff2":"font/woff2",".bmp":"image/bmp",".gif":"image/gif",".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png",".svg":"image/svg+xml",".tiff":"image/tiff",".webp":"image/webp",".ico":"image/x-icon",".fd":"multipart/form-data",".aspx":"text/asp",".css":"text/css",".csv":"text/csv",".html":"text/html",".jsp":"text/jsp",".md":"text/markdown",".txt":"text/plain","":"text/plain",".java":"text/x-java-source",".3gp":"video/3gpp",".3g2":"video/3gpp2",".mp4":"video/mp4",".qt":"video/quicktime",".webm":"video/webm",".flv":"video/x-flv",".m4v":"video/x-m4v",".mkv":"video/x-matroska",".avi":"video/x-msvideo",".mov":"video/quicktime",".msi":"application/x-msi"};
@@ -0,0 +1,103 @@
export const DIALOG_OPTIONS = {
yes: 'Ja',
no: 'Nein',
ok: 'OK',
cancel: 'Abbrechen'
}
export const FRIENDLY_BOOLEAN_NAMES = {
true: 'Ja',
false: ''
}
export const FILE_TYPES = {
'application/gzip': 'GZIP-Archiv',
'application/javascript': 'JavaScript',
'application/json': 'JSON-Dokument',
'application/msword': 'Microsoft Word',
'application/octet-stream': 'Binärdatei',
'application/pdf': 'PDF-Dokument',
'application/rtf': 'RTF-Dokument',
'application/vnd.android.package-archive': 'Android-Paket',
'application/vnd.debian.binary-package': 'Debian-Paket',
'application/vnd.google-earth.kml+xml': 'Google Earth KML',
'application/vnd.google-earth.kmz': 'Google Earth KMZ',
'application/vnd.mozilla.xul+xml': 'Mozilla XUL',
'application/vnd.ms-excel': 'Microsoft Excel',
'application/vnd.ms-fontobject': 'Microsoft-Schriftart',
'application/vnd.ms-powerpoint': 'Microsoft PowerPoint',
'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'Microsoft PowerPoint (OpenXML)',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'Microsoft Excel (OpenXML)',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'Microsoft Word (OpenXML)',
'application/vnd.rar': 'RAR-Archiv',
'application/wasm': 'WebAssembly',
'application/x-7z-compressed': '7z-Archiv',
'application/x-apple-diskimage': 'Apple Disk Image',
'application/x-bzip': 'BZIP-Archiv',
'application/x-bzip2': 'BZIP2-Archiv',
'application/x-csh': 'C-Shell-Skript',
'application/x-httpd-php': 'PHP-Skript',
'application/x-iso9660-image': 'ISO-Abbild',
'application/x-java-archive': 'Java-Archiv (JAR)',
'application/x-perl': 'Perl-Skript',
'application/x-pkcs12': 'PKCS#12-Zertifikat',
'application/x-pkcs7-certificates': 'PKCS#7-Zertifikate',
'application/x-pkcs7-certreqresp': 'PKCS#7-Zertifikatsanfrage/-antwort',
'application/x-pkcs7-mime': 'PKCS#7-MIME',
'application/x-pkcs7-signature': 'PKCS#7-Signatur',
'application/x-python-code': 'Python-Skript',
'application/x-rpm': 'RPM-Paket',
'application/x-ruby': 'Ruby-Skript',
'application/x-sh': 'Shell-Skript',
'application/x-tar': 'TAR-Archiv',
'application/x-tcl': 'Tcl-Skript',
'application/x-tex': 'TeX',
'application/x-texinfo': 'Texinfo',
'application/x-www-form-urlencoded': 'Formulardaten',
'application/x-x509-ca-cert': 'X.509-Zertifikat',
'application/x-xpinstall': 'XPInstall-Paket',
'application/x-yaml': 'YAML',
'application/xhtml+xml': 'XHTML',
'application/xml': 'XML',
'application/xslt+xml': 'XSLT',
'application/xspf+xml': 'XSPF-Playlist',
'application/zip': 'ZIP-Archiv',
'audio/aac': 'AAC-Audiodatei',
'audio/flac': 'FLAC-Audiodatei',
'audio/midi': 'MIDI-Audiodatei',
'audio/mpeg': 'MP3-Audiodatei',
'audio/ogg': 'OGG-Audiodatei',
'audio/opus': 'Opus-Audiodatei',
'audio/wav': 'WAV-Audiodatei',
'font/otf': 'OpenType-Schriftart',
'font/ttf': 'TrueType-Schriftart',
'font/woff': 'Web Open Font Format',
'font/woff2': 'Web Open Font Format 2',
'image/bmp': 'Bitmap-Bild',
'image/gif': 'GIF-Bild',
'image/jpeg': 'JPEG-Bild',
'image/png': 'PNG-Bild',
'image/svg+xml': 'SVG-Grafik',
'image/tiff': 'TIFF-Bild',
'image/webp': 'WebP-Bild',
'image/x-icon': 'Icon',
'multipart/form-data': 'Formulardaten (Datei-Upload)',
'text/asp': 'ASP-Seite',
'text/css': 'CSS',
'text/csv': 'Comma Separated Values',
'text/html': 'HTML',
'text/jsp': 'JSP',
'text/markdown': 'Markdown-Dokument',
'text/plain': 'Text',
'text/x-java-source': 'Java-Quellcode',
'video/3gpp': '3GPP-Video',
'video/3gpp2': '3GPP2-Video',
'video/mp4': 'MP4-Video',
'video/quicktime': 'QuickTime-Video',
'video/webm': 'WebM-Video',
'video/x-flv': 'FLV-Video',
'video/x-m4v': 'M4V-Video',
'video/x-matroska': 'Matroska-Video (MKV)',
'video/x-msvideo': 'AVI-Video',
'application/x-msi': 'MSI-Installationspaket'
};
+1
View File
@@ -0,0 +1 @@
export const DIALOG_OPTIONS={yes:"Ja",no:"Nein",ok:"OK",cancel:"Abbrechen"};export const FRIENDLY_BOOLEAN_NAMES={true:"Ja",false:""};export const FILE_TYPES={"application/gzip":"GZIP-Archiv","application/javascript":"JavaScript","application/json":"JSON-Dokument","application/msword":"Microsoft Word","application/octet-stream":"Binärdatei","application/pdf":"PDF-Dokument","application/rtf":"RTF-Dokument","application/vnd.android.package-archive":"Android-Paket","application/vnd.debian.binary-package":"Debian-Paket","application/vnd.google-earth.kml+xml":"Google Earth KML","application/vnd.google-earth.kmz":"Google Earth KMZ","application/vnd.mozilla.xul+xml":"Mozilla XUL","application/vnd.ms-excel":"Microsoft Excel","application/vnd.ms-fontobject":"Microsoft-Schriftart","application/vnd.ms-powerpoint":"Microsoft PowerPoint","application/vnd.openxmlformats-officedocument.presentationml.presentation":"Microsoft PowerPoint (OpenXML)","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Microsoft Excel (OpenXML)","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Microsoft Word (OpenXML)","application/vnd.rar":"RAR-Archiv","application/wasm":"WebAssembly","application/x-7z-compressed":"7z-Archiv","application/x-apple-diskimage":"Apple Disk Image","application/x-bzip":"BZIP-Archiv","application/x-bzip2":"BZIP2-Archiv","application/x-csh":"C-Shell-Skript","application/x-httpd-php":"PHP-Skript","application/x-iso9660-image":"ISO-Abbild","application/x-java-archive":"Java-Archiv (JAR)","application/x-perl":"Perl-Skript","application/x-pkcs12":"PKCS#12-Zertifikat","application/x-pkcs7-certificates":"PKCS#7-Zertifikate","application/x-pkcs7-certreqresp":"PKCS#7-Zertifikatsanfrage/-antwort","application/x-pkcs7-mime":"PKCS#7-MIME","application/x-pkcs7-signature":"PKCS#7-Signatur","application/x-python-code":"Python-Skript","application/x-rpm":"RPM-Paket","application/x-ruby":"Ruby-Skript","application/x-sh":"Shell-Skript","application/x-tar":"TAR-Archiv","application/x-tcl":"Tcl-Skript","application/x-tex":"TeX","application/x-texinfo":"Texinfo","application/x-www-form-urlencoded":"Formulardaten","application/x-x509-ca-cert":"X.509-Zertifikat","application/x-xpinstall":"XPInstall-Paket","application/x-yaml":"YAML","application/xhtml+xml":"XHTML","application/xml":"XML","application/xslt+xml":"XSLT","application/xspf+xml":"XSPF-Playlist","application/zip":"ZIP-Archiv","audio/aac":"AAC-Audiodatei","audio/flac":"FLAC-Audiodatei","audio/midi":"MIDI-Audiodatei","audio/mpeg":"MP3-Audiodatei","audio/ogg":"OGG-Audiodatei","audio/opus":"Opus-Audiodatei","audio/wav":"WAV-Audiodatei","font/otf":"OpenType-Schriftart","font/ttf":"TrueType-Schriftart","font/woff":"Web Open Font Format","font/woff2":"Web Open Font Format 2","image/bmp":"Bitmap-Bild","image/gif":"GIF-Bild","image/jpeg":"JPEG-Bild","image/png":"PNG-Bild","image/svg+xml":"SVG-Grafik","image/tiff":"TIFF-Bild","image/webp":"WebP-Bild","image/x-icon":"Icon","multipart/form-data":"Formulardaten (Datei-Upload)","text/asp":"ASP-Seite","text/css":"CSS","text/csv":"Comma Separated Values","text/html":"HTML","text/jsp":"JSP","text/markdown":"Markdown-Dokument","text/plain":"Text","text/x-java-source":"Java-Quellcode","video/3gpp":"3GPP-Video","video/3gpp2":"3GPP2-Video","video/mp4":"MP4-Video","video/quicktime":"QuickTime-Video","video/webm":"WebM-Video","video/x-flv":"FLV-Video","video/x-m4v":"M4V-Video","video/x-matroska":"Matroska-Video (MKV)","video/x-msvideo":"AVI-Video","application/x-msi":"MSI-Installationspaket"};
@@ -0,0 +1,103 @@
export const DIALOG_OPTIONS = {
yes: 'Yes',
no: 'No',
ok: 'OK',
cancel: 'Cancel'
}
export const FRIENDLY_BOOLEAN_NAMES = {
true: 'Yes',
false: 'No'
}
export const FILE_TYPES = {
'application/gzip': 'GZIP Archive',
'application/javascript': 'JavaScript',
'application/json': 'JSON Document',
'application/msword': 'Microsoft Word',
'application/octet-stream': 'Binary File',
'application/pdf': 'PDF Document',
'application/rtf': 'RTF Document',
'application/vnd.android.package-archive': 'Android Package',
'application/vnd.debian.binary-package': 'Debian Package',
'application/vnd.google-earth.kml+xml': 'Google Earth KML',
'application/vnd.google-earth.kmz': 'Google Earth KMZ',
'application/vnd.mozilla.xul+xml': 'Mozilla XUL',
'application/vnd.ms-excel': 'Microsoft Excel',
'application/vnd.ms-fontobject': 'Microsoft Font',
'application/vnd.ms-powerpoint': 'Microsoft PowerPoint',
'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'Microsoft PowerPoint (OpenXML)',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'Microsoft Excel (OpenXML)',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'Microsoft Word (OpenXML)',
'application/vnd.rar': 'RAR Archive',
'application/wasm': 'WebAssembly',
'application/x-7z-compressed': '7z Archive',
'application/x-apple-diskimage': 'Apple Disk Image',
'application/x-bzip': 'BZIP Archive',
'application/x-bzip2': 'BZIP2 Archive',
'application/x-csh': 'C Shell Script',
'application/x-httpd-php': 'PHP',
'application/x-iso9660-image': 'ISO Image',
'application/x-java-archive': 'Java Archive (JAR)',
'application/x-perl': 'Perl Script',
'application/x-pkcs12': 'PKCS#12 Certificate',
'application/x-pkcs7-certificates': 'PKCS#7 Certificates',
'application/x-pkcs7-certreqresp': 'PKCS#7 Certificate Request/Response',
'application/x-pkcs7-mime': 'PKCS#7-MIME',
'application/x-pkcs7-signature': 'PKCS#7 Signature',
'application/x-python-code': 'Python',
'application/x-rpm': 'RPM Package',
'application/x-ruby': 'Ruby',
'application/x-sh': 'Shell Script',
'application/x-tar': 'TAR Archive',
'application/x-tcl': 'Tcl Script',
'application/x-tex': 'TeX',
'application/x-texinfo': 'Texinfo',
'application/x-www-form-urlencoded': 'Form Data',
'application/x-x509-ca-cert': 'X.509 Certificate',
'application/x-xpinstall': 'XPInstall Package',
'application/x-yaml': 'YAML',
'application/xhtml+xml': 'XHTML',
'application/xml': 'XML',
'application/xslt+xml': 'XSLT',
'application/xspf+xml': 'XSPF Playlist',
'application/zip': 'ZIP Archive',
'audio/aac': 'AAC Audio File',
'audio/flac': 'FLAC Audio File',
'audio/midi': 'MIDI Audio File',
'audio/mpeg': 'MP3 Audio File',
'audio/ogg': 'OGG Audio File',
'audio/opus': 'Opus Audio File',
'audio/wav': 'WAV Audio File',
'font/otf': 'OpenType Font',
'font/ttf': 'TrueType Font',
'font/woff': 'Web Open Font Format',
'font/woff2': 'Web Open Font Format 2',
'image/bmp': 'Bitmap',
'image/gif': 'GIF Image',
'image/jpeg': 'JPEG Image',
'image/png': 'PNG Image',
'image/svg+xml': 'SVG Graphic',
'image/tiff': 'TIFF Image',
'image/webp': 'WebP Image',
'image/x-icon': 'Icon',
'multipart/form-data': 'Formular Data (File Upload)',
'text/asp': 'ASP Page',
'text/css': 'CSS',
'text/csv': 'Comma Separated Values',
'text/html': 'HTML',
'text/jsp': 'JSP',
'text/markdown': 'Markdown Content',
'text/plain': 'Text',
'text/x-java-source': 'Java Source',
'video/3gpp': '3GPP Video',
'video/3gpp2': '3GPP2 Video',
'video/mp4': 'MP4 Video',
'video/quicktime': 'QuickTime Movie',
'video/webm': 'WebM Video',
'video/x-flv': 'FLV Video',
'video/x-m4v': 'M4V Video',
'video/x-matroska': 'Matroska Video (MKV)',
'video/x-msvideo': 'AVI Video',
'application/x-msi': 'MSI Installation Package'
};
+1
View File
@@ -0,0 +1 @@
export const DIALOG_OPTIONS={yes:"Yes",no:"No",ok:"OK",cancel:"Cancel"};export const FRIENDLY_BOOLEAN_NAMES={true:"Yes",false:"No"};export const FILE_TYPES={"application/gzip":"GZIP Archive","application/javascript":"JavaScript","application/json":"JSON Document","application/msword":"Microsoft Word","application/octet-stream":"Binary File","application/pdf":"PDF Document","application/rtf":"RTF Document","application/vnd.android.package-archive":"Android Package","application/vnd.debian.binary-package":"Debian Package","application/vnd.google-earth.kml+xml":"Google Earth KML","application/vnd.google-earth.kmz":"Google Earth KMZ","application/vnd.mozilla.xul+xml":"Mozilla XUL","application/vnd.ms-excel":"Microsoft Excel","application/vnd.ms-fontobject":"Microsoft Font","application/vnd.ms-powerpoint":"Microsoft PowerPoint","application/vnd.openxmlformats-officedocument.presentationml.presentation":"Microsoft PowerPoint (OpenXML)","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Microsoft Excel (OpenXML)","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Microsoft Word (OpenXML)","application/vnd.rar":"RAR Archive","application/wasm":"WebAssembly","application/x-7z-compressed":"7z Archive","application/x-apple-diskimage":"Apple Disk Image","application/x-bzip":"BZIP Archive","application/x-bzip2":"BZIP2 Archive","application/x-csh":"C Shell Script","application/x-httpd-php":"PHP","application/x-iso9660-image":"ISO Image","application/x-java-archive":"Java Archive (JAR)","application/x-perl":"Perl Script","application/x-pkcs12":"PKCS#12 Certificate","application/x-pkcs7-certificates":"PKCS#7 Certificates","application/x-pkcs7-certreqresp":"PKCS#7 Certificate Request/Response","application/x-pkcs7-mime":"PKCS#7-MIME","application/x-pkcs7-signature":"PKCS#7 Signature","application/x-python-code":"Python","application/x-rpm":"RPM Package","application/x-ruby":"Ruby","application/x-sh":"Shell Script","application/x-tar":"TAR Archive","application/x-tcl":"Tcl Script","application/x-tex":"TeX","application/x-texinfo":"Texinfo","application/x-www-form-urlencoded":"Form Data","application/x-x509-ca-cert":"X.509 Certificate","application/x-xpinstall":"XPInstall Package","application/x-yaml":"YAML","application/xhtml+xml":"XHTML","application/xml":"XML","application/xslt+xml":"XSLT","application/xspf+xml":"XSPF Playlist","application/zip":"ZIP Archive","audio/aac":"AAC Audio File","audio/flac":"FLAC Audio File","audio/midi":"MIDI Audio File","audio/mpeg":"MP3 Audio File","audio/ogg":"OGG Audio File","audio/opus":"Opus Audio File","audio/wav":"WAV Audio File","font/otf":"OpenType Font","font/ttf":"TrueType Font","font/woff":"Web Open Font Format","font/woff2":"Web Open Font Format 2","image/bmp":"Bitmap","image/gif":"GIF Image","image/jpeg":"JPEG Image","image/png":"PNG Image","image/svg+xml":"SVG Graphic","image/tiff":"TIFF Image","image/webp":"WebP Image","image/x-icon":"Icon","multipart/form-data":"Formular Data (File Upload)","text/asp":"ASP Page","text/css":"CSS","text/csv":"Comma Separated Values","text/html":"HTML","text/jsp":"JSP","text/markdown":"Markdown Content","text/plain":"Text","text/x-java-source":"Java Source","video/3gpp":"3GPP Video","video/3gpp2":"3GPP2 Video","video/mp4":"MP4 Video","video/quicktime":"QuickTime Movie","video/webm":"WebM Video","video/x-flv":"FLV Video","video/x-m4v":"M4V Video","video/x-matroska":"Matroska Video (MKV)","video/x-msvideo":"AVI Video","application/x-msi":"MSI Installation Package"};
@@ -0,0 +1,103 @@
export const DIALOG_OPTIONS = {
yes: 'Sì',
no: 'No',
ok: 'OK',
cancel: 'Anulla'
}
export const FRIENDLY_BOOLEAN_NAMES = {
true: 'Sì',
false: 'No'
}
export const FILE_TYPES = {
'application/gzip': 'Archivio GZIP',
'application/javascript': 'JavaScript',
'application/json': 'Documento JSON',
'application/msword': 'Microsoft Word',
'application/octet-stream': 'File binario',
'application/pdf': 'Documento PDF',
'application/rtf': 'Documento RTF',
'application/vnd.android.package-archive': 'Pacchetto Android',
'application/vnd.debian.binary-package': 'Pacchetto Debian',
'application/vnd.google-earth.kml+xml': 'Google Earth KML',
'application/vnd.google-earth.kmz': 'Google Earth KMZ',
'application/vnd.mozilla.xul+xml': 'Mozilla XUL',
'application/vnd.ms-excel': 'Microsoft Excel',
'application/vnd.ms-fontobject': 'Carattere Microsoft',
'application/vnd.ms-powerpoint': 'Microsoft PowerPoint',
'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'Microsoft PowerPoint (OpenXML)',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'Microsoft Excel (OpenXML)',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'Microsoft Word (OpenXML)',
'application/vnd.rar': 'Archivio RAR',
'application/wasm': 'WebAssembly',
'application/x-7z-compressed': 'Archivio 7z',
'application/x-apple-diskimage': 'Immagine disco Apple',
'application/x-bzip': 'Archivio BZIP',
'application/x-bzip2': 'Archivio BZIP2',
'application/x-csh': 'Script C Shell',
'application/x-httpd-php': 'PHP',
'application/x-iso9660-image': 'Immagine ISO',
'application/x-java-archive': 'Archivio Java (JAR)',
'application/x-perl': 'Script Perl',
'application/x-pkcs12': 'Certificato PKCS#12',
'application/x-pkcs7-certificates': 'Certificati PKCS#7',
'application/x-pkcs7-certreqresp': 'Richiesta/Risposta certificato PKCS#7',
'application/x-pkcs7-mime': 'PKCS#7-MIME',
'application/x-pkcs7-signature': 'Firma PKCS#7',
'application/x-python-code': 'Python',
'application/x-rpm': 'Pacchetto RPM',
'application/x-ruby': 'Ruby',
'application/x-sh': 'Script Shell',
'application/x-tar': 'Archivio TAR',
'application/x-tcl': 'Script Tcl',
'application/x-tex': 'TeX',
'application/x-texinfo': 'Texinfo',
'application/x-www-form-urlencoded': 'Dati modulo',
'application/x-x509-ca-cert': 'Certificato X.509',
'application/x-xpinstall': 'Pacchetto XPInstall',
'application/x-yaml': 'YAML',
'application/xhtml+xml': 'XHTML',
'application/xml': 'XML',
'application/xslt+xml': 'XSLT',
'application/xspf+xml': 'Playlist XSPF',
'application/zip': 'Archivio ZIP',
'audio/aac': 'File audio AAC',
'audio/flac': 'File audio FLAC',
'audio/midi': 'File audio MIDI',
'audio/mpeg': 'File audio MP3',
'audio/ogg': 'File audio OGG',
'audio/opus': 'File audio Opus',
'audio/wav': 'File audio WAV',
'font/otf': 'Font OpenType',
'font/ttf': 'Font TrueType',
'font/woff': 'Web Open Font Format',
'font/woff2': 'Web Open Font Format 2',
'image/bmp': 'Bitmap',
'image/gif': 'Immagine GIF',
'image/jpeg': 'Immagine JPEG',
'image/png': 'Immagine PNG',
'image/svg+xml': 'Grafica SVG',
'image/tiff': 'Immagine TIFF',
'image/webp': 'Immagine WebP',
'image/x-icon': 'Icona',
'multipart/form-data': 'Dati modulo (Caricamento file)',
'text/asp': 'Pagina ASP',
'text/css': 'CSS',
'text/csv': 'Valori separati da virgola',
'text/html': 'HTML',
'text/jsp': 'JSP',
'text/markdown': 'Contenuto Markdown',
'text/plain': 'Testo',
'text/x-java-source': 'Sorgente Java',
'video/3gpp': 'Video 3GPP',
'video/3gpp2': 'Video 3GPP2',
'video/mp4': 'Video MP4',
'video/quicktime': 'Filmato QuickTime',
'video/webm': 'Video WebM',
'video/x-flv': 'Video FLV',
'video/x-m4v': 'Video M4V',
'video/x-matroska': 'Video Matroska (MKV)',
'video/x-msvideo': 'Video AVI',
'application/x-msi': 'Pacchetto di installazione MSI'
};
+1
View File
@@ -0,0 +1 @@
export const DIALOG_OPTIONS={yes:"Sì",no:"No",ok:"OK",cancel:"Anulla"};export const FRIENDLY_BOOLEAN_NAMES={true:"Sì",false:"No"};export const FILE_TYPES={"application/gzip":"Archivio GZIP","application/javascript":"JavaScript","application/json":"Documento JSON","application/msword":"Microsoft Word","application/octet-stream":"File binario","application/pdf":"Documento PDF","application/rtf":"Documento RTF","application/vnd.android.package-archive":"Pacchetto Android","application/vnd.debian.binary-package":"Pacchetto Debian","application/vnd.google-earth.kml+xml":"Google Earth KML","application/vnd.google-earth.kmz":"Google Earth KMZ","application/vnd.mozilla.xul+xml":"Mozilla XUL","application/vnd.ms-excel":"Microsoft Excel","application/vnd.ms-fontobject":"Carattere Microsoft","application/vnd.ms-powerpoint":"Microsoft PowerPoint","application/vnd.openxmlformats-officedocument.presentationml.presentation":"Microsoft PowerPoint (OpenXML)","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Microsoft Excel (OpenXML)","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Microsoft Word (OpenXML)","application/vnd.rar":"Archivio RAR","application/wasm":"WebAssembly","application/x-7z-compressed":"Archivio 7z","application/x-apple-diskimage":"Immagine disco Apple","application/x-bzip":"Archivio BZIP","application/x-bzip2":"Archivio BZIP2","application/x-csh":"Script C Shell","application/x-httpd-php":"PHP","application/x-iso9660-image":"Immagine ISO","application/x-java-archive":"Archivio Java (JAR)","application/x-perl":"Script Perl","application/x-pkcs12":"Certificato PKCS#12","application/x-pkcs7-certificates":"Certificati PKCS#7","application/x-pkcs7-certreqresp":"Richiesta/Risposta certificato PKCS#7","application/x-pkcs7-mime":"PKCS#7-MIME","application/x-pkcs7-signature":"Firma PKCS#7","application/x-python-code":"Python","application/x-rpm":"Pacchetto RPM","application/x-ruby":"Ruby","application/x-sh":"Script Shell","application/x-tar":"Archivio TAR","application/x-tcl":"Script Tcl","application/x-tex":"TeX","application/x-texinfo":"Texinfo","application/x-www-form-urlencoded":"Dati modulo","application/x-x509-ca-cert":"Certificato X.509","application/x-xpinstall":"Pacchetto XPInstall","application/x-yaml":"YAML","application/xhtml+xml":"XHTML","application/xml":"XML","application/xslt+xml":"XSLT","application/xspf+xml":"Playlist XSPF","application/zip":"Archivio ZIP","audio/aac":"File audio AAC","audio/flac":"File audio FLAC","audio/midi":"File audio MIDI","audio/mpeg":"File audio MP3","audio/ogg":"File audio OGG","audio/opus":"File audio Opus","audio/wav":"File audio WAV","font/otf":"Font OpenType","font/ttf":"Font TrueType","font/woff":"Web Open Font Format","font/woff2":"Web Open Font Format 2","image/bmp":"Bitmap","image/gif":"Immagine GIF","image/jpeg":"Immagine JPEG","image/png":"Immagine PNG","image/svg+xml":"Grafica SVG","image/tiff":"Immagine TIFF","image/webp":"Immagine WebP","image/x-icon":"Icona","multipart/form-data":"Dati modulo (Caricamento file)","text/asp":"Pagina ASP","text/css":"CSS","text/csv":"Valori separati da virgola","text/html":"HTML","text/jsp":"JSP","text/markdown":"Contenuto Markdown","text/plain":"Testo","text/x-java-source":"Sorgente Java","video/3gpp":"Video 3GPP","video/3gpp2":"Video 3GPP2","video/mp4":"Video MP4","video/quicktime":"Filmato QuickTime","video/webm":"Video WebM","video/x-flv":"Video FLV","video/x-m4v":"Video M4V","video/x-matroska":"Video Matroska (MKV)","video/x-msvideo":"Video AVI","application/x-msi":"Pacchetto di installazione MSI"};
@@ -0,0 +1,11 @@
DIALOG_OPTIONS = {
yes: 'Ja',
no: 'Nein',
ok: 'OK',
cancel: 'Abbrechen'
}
FRIENDLY_BOOLEAN_NAMES = {
true: 'Ja',
false: ''
}
+1
View File
@@ -0,0 +1 @@
DIALOG_OPTIONS={yes:"Ja",no:"Nein",ok:"OK",cancel:"Abbrechen"};FRIENDLY_BOOLEAN_NAMES={true:"Ja",false:""};
+40
View File
@@ -0,0 +1,40 @@
import { loadPageTexts } from '../i18n/main.js';
import { hide_login_page, hide_signup_page, } from '../main/main.js';
import { hideFiles } from '../files/main.js';
import { jCloudUIElements } from '../tools/main.js';
const showContactForm = async function () {
await loadPageTexts('/contact');
document.querySelector('#contact').classList.remove('hidden')
document.querySelector('#startpage').setAttribute('class', 'hidden');
window.history.pushState(null, '', '/contact');
hideFiles();
document.querySelector('#home').setAttribute('class', 'hidden');
document.querySelector('#user-details-on-footer').style.display = 'none';
document.querySelector('#user-details-on-footer').setAttribute('class', 'hidden');
};
const hideContactForm = function () {
document.querySelector('#contact').classList.add('hidden');
};
const submitContactForm = async function() {
const params = new URLSearchParams();
params.append('email', ' ');
params.append('message', document.querySelector('#contact-form-textarea').value);
await fetch('https://jcloud-services.ddns.net:1024/contact', {
method: 'POST',
body: params.toString()
})
.then(async response => {
if (response.status === 201) {
document.querySelector('#contact-request-number-container').classList.remove('hidden');
document.querySelector('#contact-request-number').textContent = await response.text();
};
})
.catch(err => {
jCloudUIElements.alert(err)
});
};
export { showContactForm, hideContactForm, submitContactForm };
+1
View File
@@ -0,0 +1 @@
import{loadPageTexts as t}from"../i18n/main.min.js";import{hide_login_page as e,hide_signup_page as o}from"../main/main.min.js";import{hideFiles as n}from"../files/main.min.js";import{jCloudUIElements as c}from"../tools/main.min.js";const r=async function(){await t("/contact"),document.querySelector("#contact").classList.remove("hidden"),document.querySelector("#startpage").setAttribute("class","hidden"),window.history.pushState(null,"","/contact"),n(),document.querySelector("#home").setAttribute("class","hidden"),document.querySelector("#user-details-on-footer").style.display="none",document.querySelector("#user-details-on-footer").setAttribute("class","hidden")},a=function(){document.querySelector("#contact").classList.add("hidden")},s=async function(){const t=new URLSearchParams;t.append("email"," "),t.append("message",document.querySelector("#contact-form-textarea").value),await fetch("https://jcloud-services.ddns.net:1024/contact",{method:"POST",body:t.toString()}).then(async t=>{200===t.status&&(document.querySelector("#contact-request-number-container").classList.remove("hidden"),document.querySelector("#contact-request-number").textContent=await t.text())}).catch(t=>{c.alert(t)})};export{r as showContactForm,a as hideContactForm,s as submitContactForm};
+98
View File
@@ -0,0 +1,98 @@
const selectOption = function (dropdownTarget, option, userTriggered = false) {
const oldValue = dropdownTarget.dataset.value || null;
const ul = dropdownTarget.querySelector('ul');
dropdownTarget.dataset.value = option.dataset.value || '';
option.dataset.selected = '';
option.classList.add('selected');
const marker = option.querySelector('[data-type="marker"]');
for (let otherOption of ul.children) {
if (otherOption !== option) {
otherOption.removeAttribute('data-selected');
otherOption.classList.remove('selected');
for (let c of otherOption.children) {
if (c.dataset.type === 'marker' && c !== marker) {
c.classList.add('hidden');
};
};
};
};
marker.classList.remove('hidden');
dropdownTarget.dataset.value = option.dataset.value || '';
if (userTriggered) {
if (dropdownTarget.dataset.dceowoos === undefined || oldValue !== dropdownTarget.dataset.value) { // dceowoos = dispatch change event only when other option was selected
dropdownTarget.dispatchEvent(selectEvent);
};
};
};
const getOptionMarker = function (dropdown, option) {
return getOptionElement(dropdown, option).querySelector('[data-type="marker"]');
};
const getOptionElement = function (dropdown, option) {
return dropdown.querySelector('ul').querySelector(`[data-value="${option}"]`);
};
const selectEvent = new CustomEvent('change', {
bubbles: true
});
document.addEventListener('DOMContentLoaded', function () {
const dropdowns = document.querySelectorAll('[data-trigger="dropdown"]')
for (let i = 0; i < dropdowns.length; i++) {
const dropdownTarget = document.querySelector(dropdowns[i].dataset.triggerTarget);
dropdowns[i].onclick = function () {
const ul = dropdownTarget.querySelector('ul');
for (let option of ul.children) {
option.onclick = function (event) {
selectOption(dropdownTarget, event.currentTarget, true);
};
};
dropdownTarget.classList.remove('initial');
dropdownTarget.querySelector('[data-type="title"]').innerHTML = dropdownTarget.dataset.dropdownTitle || '';
if (!(dropdowns[i].dataset.expanded === 'true')) {
dropdownTarget.classList.add('colapsed');
dropdownTarget.classList.remove('colapsed');
dropdownTarget.classList.add('expanded');
dropdowns[i].dataset.expanded = 'true';
setTimeout(function () {
window.onclick = function (event) {
if ((!dropdownTarget.contains(event.target) && event.target !== dropdowns[i])) {
for (let option of ul.children) {
option.onclick = null;
};
dropdownTarget.classList.add('colapsed');
dropdownTarget.classList.remove('expanded');
dropdowns[i].dataset.expanded = 'false';
window.onclick = undefined;
};
};
}, 100);
};
};
const ul = dropdownTarget.querySelector('ul');
for (let option of ul.children) {
option.onclick = function (event) {
selectOption(dropdownTarget, event.currentTarget, true);
};
};
if (dropdownTarget.children.length) {
let selectedOption;
for (let option of ul.children) {
if (option.dataset.selected !== undefined) {
selectedOption = option;
};
};
for (let option of ul.children) {
if (option.dataset.value === dropdownTarget.dataset.value) {
selectedOption = option;
};
};
if (selectedOption) {
selectOption(dropdownTarget, selectedOption, false);
};
};
};
});
export { selectOption, getOptionElement, getOptionMarker };
+1
View File
@@ -0,0 +1 @@
const e=function(e,t,d=!1){const s=e.querySelector("ul");e.dataset.value=t.dataset.value||"",t.dataset.selected="",t.classList.add("selected");const l=t.querySelector('[data-type="marker"]');for(let e of s.children)if(e!==t){e.removeAttribute("data-selected"),e.classList.remove("selected");for(let t of e.children)"marker"===t.dataset.type&&t!==l&&t.classList.add("hidden")}l.classList.remove("hidden"),e.dataset.value=t.dataset.value||"",d&&e.dispatchEvent(a)},t=function(e,t){return e.querySelector("ul").querySelector(`[data-value="${t}"]`)},a=new CustomEvent("change",{bubbles:!0});document.addEventListener("DOMContentLoaded",function(){const t=document.querySelectorAll('[data-trigger="dropdown"]');for(let a=0;a<t.length;a++){const d=document.querySelector(t[a].dataset.triggerTarget);t[a].onclick=function(){d.classList.remove("initial"),d.querySelector('[data-type="title"]').innerHTML=d.dataset.dropdownTitle||"","true"!==t[a].dataset.expanded&&(d.classList.add("colapsed"),d.classList.remove("colapsed"),d.classList.add("expanded"),t[a].dataset.expanded="true",setTimeout(function(){window.onclick=function(e){d.contains(e.target)||e.target===t[a]||(d.classList.add("colapsed"),d.classList.remove("expanded"),t[a].dataset.expanded="false",window.onclick=void 0)}},100))};const s=d.querySelector("ul");for(let t of s.children)t.onclick=function(t){e(d,t.currentTarget,!0)};if(d.children.length){let t;for(let e of s.children)void 0!==e.dataset.selected&&(t=e);for(let e of s.children)e.dataset.value===d.dataset.value&&(t=e);t&&e(d,t,!1)}}});export{e as selectOption,t as getOptionElement};
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
+89
View File
@@ -0,0 +1,89 @@
import { getCookie, getHumanReadableFileSize, round } from '../tools/main.js';
const loadDashboard = async function () {
let success = true;
const body = {
'request-data': [
{
db: 'users/personal_data/profile',
cols: [
'ln',
'fn',
'by',
'bm',
'bd'
],
table: 'data'
},
{
db: 'users/storage',
cols: [
'used'
],
table: 'storage'
},
{
db: 'users/personal_data/settings',
cols: [
'si'
],
table: 'personalization'
}
]
};
await fetch(`https://jcloud-services.ddns.net:1024/users/${getCookie('User')}/data/query`, {
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
method: 'POST',
body: JSON.stringify(body)
})
.then(async response => {
if (response.status === 200) {
const result = (await response.json());
const totalStorage = 16000000000;
document.querySelector('#user-details-your-data-email').textContent = getCookie('User');
document.querySelector('#user-details-your-data-name').textContent = result[0].data[1] + ' ' + result[0].data[0];
document.querySelector('#user-details-your-data-age').textContent = Math.floor((new Date - new Date(result[0].data[2], result[0].data[3], result[0].data[4])) / 31536000000);
document.querySelector('#user-details-storage-used').textContent = getHumanReadableFileSize(result[1].data[0], 2);
document.querySelector('#user-details-storage-total').textContent = getHumanReadableFileSize(totalStorage, 0);
document.querySelector('#user-details-storage-used-percent').textContent = round((result[1].data[0] / totalStorage) * 100, 1);
document.querySelector('#user-details-storage-used_drive').style.width = (result[1].data[0] / totalStorage) * 100 + '%';
const dashboardItems = result[2].data[0];
console.log('dashboardItems:', dashboardItems)
const dashboardItemsContainer = document.querySelector('#home-page-items');
console.log(dashboardItemsContainer)
for (let item of dashboardItems) {
const itemElement = document.createElement('div');
itemElement.classList.add('home-page-item');
itemElement.classList.add('home-page-icon');
if (item.width === 2 && item.height === 2) {
itemElement.classList.add('normal-home-page-widget');
console.log('item', item.target, 'is large!')
} else if (item.width === 4 && item.height === 2) {
itemElement.classList.add('large-home-page-widget');
console.log('item', item.target, 'is very large!')
} else if (item.width === 4 && item.height === 4) {
itemElement.classList.add('very-large-home-page-widget');
console.log('item', item.target, 'is very large!')
} else {
itemElement.classList.add('normal-home-page-icon');
console.log('item', item.target, 'is normal!')
};
itemElement.style.gridArea = `${item.y + 1} / ${item.x + 1} / ${item.y + item.height} / ${item.x + item.width} `;
itemElement.style.fontSize = '10px';
console.log(itemElement)
dashboardItemsContainer.appendChild(itemElement);
};
} else {
success = false;
};
})
.catch(err => {
success = false;
console.error(err);
});
};
export { loadDashboard };
+148
View File
@@ -0,0 +1,148 @@
import { popups } from '../popups/popups.js';
import { strip } from '../tools/main.js'
const texts = {
pages: {},
sections: {},
popups: {}
};
let uiLabels = null;
const loadPageTexts = async function (page) {
if (page === '/') {
page = '/index';
};
console.log('Loading page texts for', page);
page = '/' + strip(page, '/');
if (!(page in texts.pages)) {
texts.pages[page] = await import(`../../i18n/${window.LANGUAGE}/pages${page}.js`);
};
for (let i = 0; i < Object.keys(texts.pages[page].texts).length; i++) {
const elements = document.querySelectorAll(`[data-i18n-id="${Object.keys(texts.pages[page].texts)[i]}"]`);
for (let e of elements) {
let n = e.dataset.i18nNumber;
if (!(n === '0' || n === '1')) {
n = '0';
};
if (texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][n] !== null) {
e.textContent = texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][n];
};
e.title = e.textContent;
e.ariaLabel = e.textContent;
for (let argIndex = 0; argIndex < Object.keys(texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][2]).length; argIndex++) {
e.setAttribute(Object.keys(texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][2])[argIndex], texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][2][Object.keys(texts.pages[page].texts[Object.keys(texts.pages[page].texts)[i]][2])[argIndex]]);
};
};
};
};
const loadSectionTexts = async function (section) {
if (section === '/') {
section = '/index';
};
console.log('Loading section texts for', section);
section = '/' + strip(section, '/');
if (!(section in texts.sections)) {
texts.sections[section] = await import(`../../i18n/${window.LANGUAGE}/${section}.js`);
};
for (let i = 0; i < Object.keys(texts.sections[section].texts).length; i++) {
const elements = document.querySelectorAll(`[data-i18n-id="${Object.keys(texts.sections[section].texts)[i]}"]`);
for (let e of elements) {
let n = e.dataset.i18nNumber;
if (!(n === '0' || n === '1')) {
n = '0';
};
if (texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][n] !== null) {
e.textContent = texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][n];
};
e.title = e.textContent;
e.ariaLabel = e.textContent;
for (let argIndex = 0; argIndex < Object.keys(texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][2]).length; argIndex++) {
e.setAttribute(Object.keys(texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][2])[argIndex], texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][2][Object.keys(texts.sections[section].texts[Object.keys(texts.sections[section].texts)[i]][2])[argIndex]]);
};
};
};
};
const loadPopupTexts = async function (popup) {
console.log('Loading popup texts for', popup);
if (!(popup in texts.popups)) {
texts.popups[popup] = await import(`../../i18n/${window.LANGUAGE}/popups/${popup}.js`);
};
for (let i = 0; i < Object.keys(texts.popups[popup].texts).length; i++) {
const elements = document.querySelectorAll(`[data-i18n-id="${Object.keys(texts.popups[popup].texts)[i]}"]`);
for (let e of elements) {
let n = e.dataset.i18nNumber;
if (!(n === '0' || n === '1')) {
n = '0';
};
if (texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][n] !== null) {
e.textContent = texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][n];
};
e.title = e.textContent;
e.ariaLabel = e.textContent;
for (let argIndex = 0; argIndex < Object.keys(texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][2]).length; argIndex++) {
e.setAttribute(Object.keys(texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][2])[argIndex], texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][2][Object.keys(texts.popups[popup].texts[Object.keys(texts.popups[popup].texts)[i]][2])[argIndex]]);
};
};
};
};
const getPageText = async function (page, id, n = 0) {
if (page === '/') {
page = '/index';
};
page = '/' + strip(page, '/');
if (!(page in texts.pages)) {
texts.pages[page] = await import(`../../i18n/${window.LANGUAGE}/pages${page}.js`);
};
if (!(n === 0 || n === 1)) {
n = 0;
};
if (!(id in texts.pages[page].texts)) {
return null;
};
return texts.pages[page].texts[id][n];
};
const getSectionText = async function (section, id, n = 0) {
section = '/' + strip(section, '/');
if (!(section in texts.sections)) {
texts.sections[section] = await import(`../../i18n/${window.LANGUAGE}${section}.js`);
};
if (!(n === 0 || n === 1)) {
n = 0;
};
if (!(id in texts.sections[section].texts)) {
return null;
};
return texts.sections[section].texts[id][n];
};
const getPopupText = async function (popup, id, n = 0) {
popup = '/' + strip(popup, '/');
if (!(popup in texts.popups)) {
texts.popups[popup] = await import(`../../i18n/${window.LANGUAGE}/popups/${popup}.js`);
};
if (!(n === 0 || n === 1)) {
n = 0;
};
if (!(id in texts.popups[popup].texts)) {
return null;
};
return texts.popups[popup].texts[id][n];
};
const getUiLabels = async function () {
try {
if (!uiLabels) {
const path = `../../i18n/ui-labels/${window.LANGUAGE}/main.js`;
uiLabels = await import(path);
};
} catch (err) {
console.error('Error loading UI labels:', err);
uiLabels = await import(`../../i18n/ui-labels/en/main.js`);
}
return uiLabels;
};
export { loadPageTexts, loadSectionTexts, loadPopupTexts, getPageText, getSectionText, getPopupText, getUiLabels };
+1
View File
@@ -0,0 +1 @@
import{popups as t}from"../popups/popups.min.js";import{strip as e}from"../tools/main.min.js";const s={pages:{},sections:{},popups:{}};let n=null;const o=async function(t){"/"===t&&(t="/index"),console.log("Loading page texts for",t),(t="/"+e(t,"/"))in s.pages||(s.pages[t]=await import(`../../i18n/${window.LANGUAGE}/pages${t}.js`));for(let e=0;e<Object.keys(s.pages[t].texts).length;e++){const n=document.querySelectorAll(`[data-i18n-id="${Object.keys(s.pages[t].texts)[e]}"]`);for(let o of n){let n=o.dataset.i18nNumber;"0"!==n&&"1"!==n&&(n="0"),null!==s.pages[t].texts[Object.keys(s.pages[t].texts)[e]][n]&&(o.textContent=s.pages[t].texts[Object.keys(s.pages[t].texts)[e]][n]),o.title=o.textContent,o.ariaLabel=o.textContent;for(let n=0;n<Object.keys(s.pages[t].texts[Object.keys(s.pages[t].texts)[e]][2]).length;n++)o.setAttribute(Object.keys(s.pages[t].texts[Object.keys(s.pages[t].texts)[e]][2])[n],s.pages[t].texts[Object.keys(s.pages[t].texts)[e]][2][Object.keys(s.pages[t].texts[Object.keys(s.pages[t].texts)[e]][2])[n]])}}},p=async function(t){"/"===t&&(t="/index"),console.log("Loading section texts for",t),(t="/"+e(t,"/"))in s.sections||(s.sections[t]=await import(`../../i18n/${window.LANGUAGE}/${t}.js`));for(let e=0;e<Object.keys(s.sections[t].texts).length;e++){const n=document.querySelectorAll(`[data-i18n-id="${Object.keys(s.sections[t].texts)[e]}"]`);for(let o of n){let n=o.dataset.i18nNumber;"0"!==n&&"1"!==n&&(n="0"),null!==s.sections[t].texts[Object.keys(s.sections[t].texts)[e]][n]&&(o.textContent=s.sections[t].texts[Object.keys(s.sections[t].texts)[e]][n]),o.title=o.textContent,o.ariaLabel=o.textContent;for(let n=0;n<Object.keys(s.sections[t].texts[Object.keys(s.sections[t].texts)[e]][2]).length;n++)o.setAttribute(Object.keys(s.sections[t].texts[Object.keys(s.sections[t].texts)[e]][2])[n],s.sections[t].texts[Object.keys(s.sections[t].texts)[e]][2][Object.keys(s.sections[t].texts[Object.keys(s.sections[t].texts)[e]][2])[n]])}}},i=async function(t){console.log("Loading popup texts for",t),t in s.popups||(s.popups[t]=await import(`../../i18n/${window.LANGUAGE}/popups/${t}.js`));for(let e=0;e<Object.keys(s.popups[t].texts).length;e++){const n=document.querySelectorAll(`[data-i18n-id="${Object.keys(s.popups[t].texts)[e]}"]`);for(let o of n){let n=o.dataset.i18nNumber;"0"!==n&&"1"!==n&&(n="0"),null!==s.popups[t].texts[Object.keys(s.popups[t].texts)[e]][n]&&(o.textContent=s.popups[t].texts[Object.keys(s.popups[t].texts)[e]][n]),o.title=o.textContent,o.ariaLabel=o.textContent;for(let n=0;n<Object.keys(s.popups[t].texts[Object.keys(s.popups[t].texts)[e]][2]).length;n++)o.setAttribute(Object.keys(s.popups[t].texts[Object.keys(s.popups[t].texts)[e]][2])[n],s.popups[t].texts[Object.keys(s.popups[t].texts)[e]][2][Object.keys(s.popups[t].texts[Object.keys(s.popups[t].texts)[e]][2])[n]])}}},c=async function(t,n,o=0){return"/"===t&&(t="/index"),(t="/"+e(t,"/"))in s.pages||(s.pages[t]=await import(`../../i18n/${window.LANGUAGE}/pages${t}.js`)),0!==o&&1!==o&&(o=0),n in s.pages[t].texts?s.pages[t].texts[n][o]:null},a=async function(t,n,o=0){return(t="/"+e(t,"/"))in s.sections||(s.sections[t]=await import(`../../i18n/${window.LANGUAGE}${t}.js`)),0!==o&&1!==o&&(o=0),n in s.sections[t].texts?s.sections[t].texts[n][o]:null},x=async function(t,n,o=0){return(t="/"+e(t,"/"))in s.popups||(s.popups[t]=await import(`../../i18n/${window.LANGUAGE}/popups/${t}.js`)),0!==o&&1!==o&&(o=0),n in s.popups[t].texts?s.popups[t].texts[n][o]:null},l=async function(){try{if(!n){const t=`../../i18n/ui-labels/${window.LANGUAGE}/main.js`;n=await import(t)}}catch(t){console.error("Error loading UI labels:",t),n=await import("../../i18n/ui-labels/en/main.js")}return n};export{o as loadPageTexts,p as loadSectionTexts,i as loadPopupTexts,c as getPageText,a as getSectionText,x as getPopupText,l as getUiLabels};
+193
View File
@@ -0,0 +1,193 @@
import { hide_login_page, show_login_page, hide_signup_page, show_signup_page, show_home, handlePopstate, getDeviceLanguage } from '../main/main.js';
import { more_options_menu_expand } from '../nav/menus/moreoptions/main.js';
import { showFilesPage, showServerFilesPage } from '../files/main.js';
import { handleHomeScroll } from '../scroll/main.js';
import { getCookie, showDialog, jCloudUIElements, addQueryParam } from '../tools/main.js';
import { signOut, submit_email, check_password, createUser, signupPage1, signupPage2, signupPage3 } from '../users/main.js';
import { loadPageTexts, loadSectionTexts, getPageText, getSectionText, getUiLabels } from '../i18n/main.js';
import { showContactForm, submitContactForm } from '../contact/main.js';
import { showSearch, displaySuggestions as displaySearchSuggestions, refreshSuggestions as refreshSearchSuggestions, displayResults } from '../search/main.js';
document.addEventListener('DOMContentLoaded', async function () {
import('../elements/dropdown/main.js');
window.keyDownCallbacks = {};
window.keyUpCallbacks = {};
document.querySelector(':root').style.setProperty('--scrollbar-width', window.innerWidth - document.documentElement.clientWidth + 'px')
document.querySelector('#private-application-banner-close-button').addEventListener('click', function () {
document.querySelector('#private-application-banner').classList.add('hide');
});
document.querySelector('#expand-more-options').addEventListener('click', function () {
more_options_menu_expand();
});
document.querySelector('#login-button').addEventListener('click', async function () {
history.pushState(null, '', '/login');
await loadPageTexts('/login');
console.log('login link clicked');
show_login_page();
});
document.querySelector('#login-link').addEventListener('click', async function () {
history.pushState(null, '', '/login');
await loadPageTexts('/login');
hide_signup_page();
show_login_page();
});
document.querySelector('#email-form').addEventListener('submit', function (event) {
event.preventDefault();
submit_email();
});
document.querySelector('#password-form').addEventListener('submit', async function (event) {
event.preventDefault();
await check_password();
});
document.querySelector('#email').addEventListener('input', function () {
if (document.querySelector('#email').value.length > 0) {
document.querySelector('#email-input-submit-arrow').setAttribute('fill', '#000');
document.querySelector('#email-input-submit-button').style.border = '1px solid #000';
document.querySelector('#email-input-submit-button').style.cursor = 'pointer'
} else {
document.querySelector('#email-input-submit-arrow').setAttribute('fill', '#787878');
document.querySelector('#email-input-submit-button').style.border = '1px solid #787878';
document.querySelector('#email-input-submit-button').style.cursor = 'default';
};
});
document.querySelector('#password').addEventListener('input', function () {
if (document.querySelector('#password').value.length > 0) {
document.querySelector('#password-input-submit-arrow').setAttribute('fill', '#000');
document.querySelector('#password-input-submit-button').style.border = '1px solid #000';
document.querySelector('#password-input-submit-button').style.cursor = 'pointer';
} else {
document.querySelector('#password-input-submit-arrow').setAttribute('fill', '#787878');
document.querySelector('#password-input-submit-button').style.border = '1px solid #787878';
document.querySelector('#password-input-submit-button').style.cursor = 'default';
};
});
document.querySelector('#link-home').addEventListener('click', async function () {
await show_home();
});
document.querySelector('#signup-link').addEventListener('click', async function () {
hide_login_page();
show_signup_page();
history.pushState(null, '', '/signup');
await loadPageTexts('/signup');
});
document.querySelector('#signup-form-page-1').addEventListener('submit', function (event) {
event.preventDefault();
signupPage2();
});
document.querySelector('#signup-form-page-2').addEventListener('submit', function (event) {
event.preventDefault();
signupPage3();
});
document.querySelector('#signup-form-page-3').addEventListener('submit', function (event) {
event.preventDefault();
createUser();
});
document.querySelector('#signup-form-page-2-back-button').addEventListener('click', function (event) {
event.preventDefault();
signupPage1();
});
document.querySelector('#signup-form-page-3-back-button').addEventListener('click', function (event) {
event.preventDefault();
signupPage2();
});
document.querySelector('#mom-sign-out').addEventListener('click', async function () {
await signOut();
}); // mom = more options menu
document.querySelector('#mom-files').addEventListener('click', async function () {
await showFilesPage();
}); // mom = more options menu
document.querySelector('#mom-server-files').addEventListener('click', async function () {
await showServerFilesPage();
}); // mom = more options menu
document.querySelector('#footer-language').addEventListener('click', async function () {
history.pushState(null, '', addQueryParam(window.location.href, 'popup', 'set-client-language'));
// await handlePopstate();
if (!window.popupFunctions) {
window.popupFunctions = (await import('../popups/popups.js')).popups;
};
if (window.popupFunctions['set-client-language']) {
(await window.popupFunctions['set-client-language']())();
};
});
document.querySelector('#footer-revoke-consent').addEventListener('click', async function () {
if (await jCloudUIElements.confirm(await getSectionText('nav/globalfooter', 'e1b2075290314b7d825223932ee1adfe', 0), true, false)) {
document.cookie = 'user_consent=revoked; max-age=0; path=/';
window.location.reload();
};
});
document.querySelector('#footer-contact').addEventListener('click', async function () {
await showContactForm();
});
document.querySelector('#contact-form').addEventListener('submit', async function (e) {
e.preventDefault();
await submitContactForm();
});
// displaySearchSuggestions(refreshSearchSuggestions());
document.querySelector('#search-form').addEventListener('submit', function (e) {
e.preventDefault();
displayResults(document.querySelector('#search-input').value)
});
document.querySelector('#search-trigger').addEventListener('click', function (e) {
if (e.currentTarget.dataset.expanded === undefined) {
showSearch();
};
});
window.addEventListener('scroll', function () {
handleHomeScroll();
});
window.addEventListener('popstate', async function () {
await handlePopstate();
});
window.addEventListener('pageshow', function (event) {
if (!getCookie('user_consent')) {
window.location.href = '/';
};
});
document.addEventListener('keydown', function (event) {
for (let cbName of Object.keys(window.keyDownCallbacks)) {
window.keyDownCallbacks[cbName](event);
};
});
document.addEventListener('keyup', function (event) {
for (let cbName of Object.keys(window.keyUpCallbacks)) {
window.keyUpCallbacks[cbName](event);
};
});
window.LANGUAGE = undefined;
if (typeof (Storage) !== 'undefined') {
if (new URLSearchParams(window.location.search).get('lang')) {
window.localStorage.setItem('lang', new URLSearchParams(window.location.search).get('lang'))
};
window.LANGUAGE = localStorage.getItem('lang');
};
if (!window.LANGUAGE) {
await fetch('https://jcloud-services.ddns.net:1024/client-language')
.then(async response => {
if (response.status === 200) {
window.LANGUAGE = await response.text();
} else {
window.LANGUAGE = 'en';
};
})
.catch(_ => {
window.LANGUAGE = 'en';
});
};
document.querySelector('html').setAttribute('lang', window.LANGUAGE);
document.querySelector('#footer-language').textContent = (await getUiLabels()).LANGUAGES[window.LANGUAGE];
if (getCookie('signed_in')) {
document.querySelector('#authorized-mom-part').style.display = 'block';
document.querySelector('#link-home').style.display = 'inline';
} else {
document.querySelector('#authorized-mom-part').style.display = 'none';
document.querySelector('#link-home').style.display = 'none';
};
await loadSectionTexts('nav/menus/moreoptions');
await loadSectionTexts('nav/globalfooter');
await loadSectionTexts('private-application-banner');
await loadSectionTexts('search');
handlePopstate(true);
});
File diff suppressed because one or more lines are too long
+236
View File
@@ -0,0 +1,236 @@
import { hideFiles, showFilesPage, showServerFilesPage, showProperties } from '../files/main.js';
import { getCookie, jCloudUIElements, strip, closeDialog } from '../tools/main.js';
import { loadPageTexts } from '../i18n/main.js';
import { showContactForm, hideContactForm } from '../contact/main.js';
import { loadDashboard } from '../home/main.js';
const getDeviceLanguage = async function () {
await fetch('https://jcloud-services.ddns.net:1024/client-language')
.then(async response => {
if (response.status === 200) {
return await response.text();
} else {
return 'en';
};
})
.catch(_ => {
return 'en';
});
};
const hide_login_page = function () {
document.querySelector('#root').style.overflowY = 'initial';
jCloudUIElements.overlays.hideOverlay();
const loginWindow = document.querySelector('#login-content');
loginWindow.classList.remove('show');
loginWindow.classList.add('hide');
};
const show_login_page = function () {
document.querySelector('#email').style.backgroundColor = 'var(--light-background)';
document.querySelector('#password').style.backgroundColor = 'var(--light-background)';
document.querySelector('#root').style.overflowY = 'hidden';
document.querySelector('#login-error').innerHTML = '';
document.querySelector('#email').value = '';
document.querySelector('#password').value = '';
const overlay = document.querySelector('#overlay')
jCloudUIElements.overlays.showOverlay();
const loginWindow = document.querySelector('#login-content');
loginWindow.classList.add('show');
loginWindow.classList.remove('hide');
overlay.addEventListener('click', async function () {
hide_login_page();
history.pushState(null, '', '/');
await loadPageTexts('/');
}, { once: true });
document.querySelector('#home').setAttribute('class', 'hidden');
};
const hide_signup_page = function () {
document.querySelector('#root').style.overflowY = 'initial';
jCloudUIElements.overlays.hideOverlay();
const signupWindow = document.querySelector('#signup-content');
signupWindow.classList.remove('show');
signupWindow.classList.add('hide');
};
const show_signup_page = function () {
document.querySelector('#root').style.overflowY = 'hidden';
const overlay = document.querySelector('#overlay');
jCloudUIElements.overlays.showOverlay();
const signupWindow = document.querySelector('#signup-content');
signupWindow.classList.add('show');
signupWindow.classList.remove('hide');
overlay.addEventListener('click', async function () {
hide_signup_page();
history.pushState(null, '', '/');
await loadPageTexts('/');
}, { once: true });
document.querySelector('#home').setAttribute('class', 'hidden');
};
const show_startpage = function () {
document.querySelector('#startpage').setAttribute('class', '');
hide_login_page();
document.querySelector('#home').setAttribute('class', 'hidden');
};
const show_home = async function () {
history.pushState(null, '', '/home');
await loadPageTexts('/home');
hide_login_page();
document.querySelector('#files').setAttribute('class', 'hidden');
document.querySelector('#startpage').setAttribute('class', 'hidden');
document.querySelector('#home').setAttribute('class', 'home');
document.querySelector('#link-home').style.display = 'inline';
document.querySelector('#user-details-on-footer').style.display = 'block';
document.querySelector('#user-details-on-footer').setAttribute('class', 'user-details-on-footer');
window.scroll(0, 0);
await loadDashboard();
};
const handlePopstate = async function (initial = false) {
let path = (new URL(window.location.href)).pathname;
const queryParams = Object.fromEntries(((new URL(window.location.href)).searchParams).entries());
if ('popup' in queryParams) {
if (!window.popupFunctions) {
window.popupFunctions = (await import('../popups/popups.js')).popups;
};
if (window.popupFunctions[queryParams.popup]) {
(await window.popupFunctions[queryParams.popup]())();
};
};
if (path === '/' || path === '') {
document.querySelector('#startpage').setAttribute('class', '');
hide_login_page();
hide_signup_page();
document.querySelector('#home').setAttribute('class', 'hidden');
document.querySelector('#user-details-on-footer').setAttribute('class', 'hidden');
if (getCookie('signed_in')) {
await show_home();
};
hideFiles();
hideContactForm();
await loadPageTexts('/');
};
if (path === '/contact' || path === '/contact/') {
showContactForm();
} else {
hideContactForm();
}
if (path === '/login' || path === '/login/') {
document.querySelector('#startpage').setAttribute('class', '');
hide_signup_page();
show_login_page();
document.querySelector('#home').setAttribute('class', 'hidden');
document.querySelector('#user-details-on-footer').style.display = 'none';
document.querySelector('#user-details-on-footer').setAttribute('class', 'hidden');
if (getCookie('signed_in')) {
await show_home();
};
hideFiles();
hideContactForm();
await loadPageTexts('/login');
return;
} else {
hide_login_page();
}
if (path === '/signup' || path === '/signup/') {
document.querySelector('#startpage').setAttribute('class', '');
hide_login_page();
show_signup_page();
document.querySelector('#home').setAttribute('class', 'hidden');
document.querySelector('#user-details-on-footer').style.display = 'none';
document.querySelector('#user-details-on-footer').setAttribute('class', 'hidden');
if (getCookie('signed_in')) {
await show_home();
};
hideFiles();
hideContactForm();
await loadPageTexts('/signup');
return;
};
if (path === '/home' || path === '/home/') {
hideContactForm();
if (getCookie('signed_in')) {
document.querySelector('#startpage').setAttribute('class', 'hidden');
hide_login_page();
hide_signup_page();
document.querySelector('#home').setAttribute('class', 'home');
document.querySelector('#user-details-on-footer').style.display = 'block';
document.querySelector('#user-details-on-footer').setAttribute('class', 'user-details-on-footer');
hideFiles();
await loadPageTexts('/home');
await loadDashboard();
} else {
document.querySelector('#startpage').setAttribute('class', '');
hide_signup_page();
show_login_page();
document.querySelector('#home').setAttribute('class', 'hidden');
document.querySelector('#user-details-on-footer').style.display = 'none';
document.querySelector('#user-details-on-footer').setAttribute('class', 'hidden');
hideFiles();
await loadPageTexts('/login');
};
return;
};
if (path.startsWith('/files')) {
path = '/' + strip(path, '/');
hideContactForm();
if (getCookie('signed_in')) {
document.querySelector('#startpage').setAttribute('class', 'hidden');
hide_login_page();
hide_signup_page();
document.querySelector('#home').setAttribute('class', 'home');
document.querySelector('#user-details-on-footer').style.display = 'block';
document.querySelector('#user-details-on-footer').setAttribute('class', 'user-details-on-footer');
showFilesPage('', new URLSearchParams(window.location.search).get('id'), !initial, path === '/files' || path === '/files/directory');
if (path === '/files/directory/properties') {
showProperties(queryParams.iid);
} else {
closeDialog(document.querySelector('#files-item-properties'))
}
} else {
document.querySelector('#startpage').setAttribute('class', '');
hide_signup_page();
show_login_page();
document.querySelector('#home').setAttribute('class', 'hidden');
document.querySelector('#user-details-on-footer').style.display = 'none';
document.querySelector('#user-details-on-footer').setAttribute('class', 'hidden');
if (getCookie('signed_in')) {
await show_home();
};
hideFiles();
await loadPageTexts('/login');
};
await loadPageTexts('/files');
return;
};
if (path.startsWith('/server-files')) {
hideContactForm();
if (getCookie('signed_in')) {
document.querySelector('#startpage').setAttribute('class', 'hidden');
hide_login_page();
hide_signup_page();
document.querySelector('#home').setAttribute('class', 'home');
document.querySelector('#user-details-on-footer').style.display = 'block';
document.querySelector('#user-details-on-footer').setAttribute('class', 'user-details-on-footer');
showServerFilesPage(path.split('/').slice(2).join('/'), !initial, initial);
} else {
document.querySelector('#startpage').setAttribute('class', '');
hide_signup_page();
show_login_page();
document.querySelector('#home').setAttribute('class', 'hidden');
document.querySelector('#user-details-on-footer').style.display = 'none';
document.querySelector('#user-details-on-footer').setAttribute('class', 'hidden');
if (getCookie('signed_in')) {
await show_home();
};
hideFiles();
};
await loadPageTexts('/files');
return;
};
};
export { hide_login_page, show_login_page, hide_signup_page, show_signup_page, show_startpage, show_home, handlePopstate, getDeviceLanguage };
File diff suppressed because one or more lines are too long
@@ -0,0 +1,21 @@
import { jCloudUIElements } from '../../../tools/main.js';
const more_options_menu_expand = function () {
document.querySelector("#more-options").style.display = "block";
document.querySelector("#expand-more-options").classList.add("menu-expanded-icon");
document.querySelector("#expand-more-options").classList.remove("more-options-icon-colors");
document.querySelector("#expand-more-options").blur();
document.querySelector("#more-options-icon-dots").setAttribute("fill", "#fff");
jCloudUIElements.overlays.showOverlay();
document.querySelector("#overlay").addEventListener("click", function () { more_options_menu_hide(); }, { once: true });
};
const more_options_menu_hide = function () {
document.querySelector("#more-options").style.display = "none";
document.querySelector("#expand-more-options").classList.remove("menu-expanded-icon");
document.querySelector("#expand-more-options").classList.add("more-options-icon-colors");
document.querySelector("#expand-more-options").blur();
document.querySelector("#more-options-icon-dots").setAttribute("fill", "#000");
jCloudUIElements.overlays.hideOverlay();
};
export { more_options_menu_expand, more_options_menu_hide };
+1
View File
@@ -0,0 +1 @@
import{jCloudUIElements as e}from"../../../tools/main.min.js";const o=function(){document.querySelector("#more-options").style.display="block",document.querySelector("#expand-more-options").classList.add("menu-expanded-icon"),document.querySelector("#expand-more-options").classList.remove("more-options-icon-colors"),document.querySelector("#expand-more-options").blur(),document.querySelector("#more-options-icon-dots").setAttribute("fill","#fff"),e.overlays.showOverlay(),document.querySelector("#overlay").addEventListener("click",function(){t()},{once:!0})},t=function(){document.querySelector("#more-options").style.display="none",document.querySelector("#expand-more-options").classList.remove("menu-expanded-icon"),document.querySelector("#expand-more-options").classList.add("more-options-icon-colors"),document.querySelector("#expand-more-options").blur(),document.querySelector("#more-options-icon-dots").setAttribute("fill","#000"),e.overlays.hideOverlay()};export{o as more_options_menu_expand,t as more_options_menu_hide};
@@ -0,0 +1,42 @@
import { showDialog, addQueryParam, removeQueryParam } from '../../tools/main.js';
import { loadPopupTexts, getUiLabels, getPopupText } from '../../i18n/main.js';
const showChangeLanguagePopup = async function () {
await loadPopupTexts('set-client-language');
showDialog(document.querySelector('#popup-set-client-language'), [
function () {
history.pushState(null, '', removeQueryParam(window.location.href, 'popup'));
}
], true);
const languageNames = (await getUiLabels()).LANGUAGES;
const languageList = document.querySelector('#popup-set-client-language-language-list');
languageList.innerHTML = '';
const adaptToDevideItem = document.createElement('li');
adaptToDevideItem.role = 'button';
adaptToDevideItem.textContent = await getPopupText('set-client-language', '23a2c8c49e0e46c7bdbeb7444f63cdd3', 0);
adaptToDevideItem.classList.add('item');
adaptToDevideItem.onclick = async function () {
if (typeof (Storage) !== 'undefined') {
localStorage.removeItem('lang');
};
window.location.href = removeQueryParam(removeQueryParam(window.location.href, 'lang'), 'popup');
};
languageList.appendChild(adaptToDevideItem)
for (const [langCode, langName] of Object.entries(languageNames)) {
console.log(langCode, langName);
const listItem = document.createElement('li');
listItem.role = 'button';
listItem.textContent = langName;
listItem.classList.add('item');
if (langCode === window.LANGUAGE) {
listItem.dataset.disabled = 'disabled';
} else {
listItem.onclick = async function () {
window.location.href = addQueryParam(removeQueryParam(window.location.href, 'popup'), 'lang', langCode);
};
};
languageList.appendChild(listItem);
};
};
export { showChangeLanguagePopup };
+1
View File
@@ -0,0 +1 @@
import{showDialog as e,addQueryParam as t,removeQueryParam as n}from"../../tools/main.min.js";import{loadPopupTexts as o,getUiLabels as a,getPopupText as i}from"../../i18n/main.min.js";const c=async function(){await o("set-client-language"),e(document.querySelector("#popup-set-client-language"),[function(){history.pushState(null,"",n(window.location.href,"popup"))}],!0);const c=(await a()).LANGUAGES,l=document.querySelector("#popup-set-client-language-language-list");l.innerHTML="";const s=document.createElement("li");s.role="button",s.textContent=await i("set-client-language","23a2c8c49e0e46c7bdbeb7444f63cdd3",0),s.classList.add("item"),s.onclick=async function(){"undefined"!=typeof Storage&&localStorage.removeItem("lang"),window.location.href=n(n(window.location.href,"lang"),"popup")},l.appendChild(s);for(const[e,o]of Object.entries(c)){console.log(e,o);const a=document.createElement("li");a.role="button",a.textContent=o,a.classList.add("item"),e===window.LANGUAGE?a.dataset.disabled="disabled":a.onclick=async function(){window.location.href=t(n(window.location.href,"popup"),"lang",e)},l.appendChild(a)}};export{c as showChangeLanguagePopup};
+5
View File
@@ -0,0 +1,5 @@
export const popups = {
'set-client-language': async () => {
return (await import('./change-language/main.js')).showChangeLanguagePopup;
}
};
+1
View File
@@ -0,0 +1 @@
export const popups={"set-client-language":async()=>(await import("./change-language/main.min.js")).showChangeLanguagePopup};
+29
View File
@@ -0,0 +1,29 @@
'use strict'
const handleHomeScroll = function () {
const mobile = window.matchMedia('(max-width: 768px)').matches;
const tablet = window.matchMedia('(min-width: 769px) and (max-width: 1024px)').matches;
const desktop = window.matchMedia('(min-width: 1025px)').matches;
const scroll = window.scrollY;
const items = document.getElementById('home-page-items');
const favorites = document.getElementById('home-page-favorites');
var difference = 184
// if (mobile) {
// difference = 138;
// }
// if (tablet) {
// difference = 184;
// }
const itemsHeight = items.scrollHeight;
const favoritesHeight = favorites.scrollHeight;
const windowHeight = window.innerHeight;
if (scroll > ((((itemsHeight - windowHeight) + 60) + favoritesHeight + difference) - 50)) {
favorites.style.position = 'relative';
items.style.marginBottom = '20px';
} else {
favorites.style.position = 'fixed';
items.style.marginBottom = '215px';
}
};
export { handleHomeScroll };
+1
View File
@@ -0,0 +1 @@
const t=function(){window.matchMedia("(max-width: 768px)").matches,window.matchMedia("(min-width: 769px) and (max-width: 1024px)").matches,window.matchMedia("(min-width: 1025px)").matches;const t=window.scrollY,e=document.getElementById("home-page-items"),i=document.getElementById("home-page-favorites");const o=e.scrollHeight,n=i.scrollHeight;t>o-window.innerHeight+60+n+184-50?(i.style.position="relative",e.style.marginBottom="20px"):(i.style.position="fixed",e.style.marginBottom="215px")};export{t as handleHomeScroll};
+308
View File
@@ -0,0 +1,308 @@
'use strict';
import { addQueryParam, strip } from '../tools/main.js';
const fetchResults = async function (query) {
return [
{
'icon': `${strip(query, '/')}/favicon.ico`,
'name': query,
'url': query,
'title': query,
'description': query
},
{
'icon': 'https://jcloud-services.ddns.net/assets/img/favicon.png',
'name': 'jCloud',
'url': 'https://jcloud-services.ddns.net',
'title': 'jCloud',
'description': 'Der beste Ort für deine Fotos, Dateien, Notizen, Präsentationen und vieles mehr.'
},
{
'icon': 'https://jcloud-services.ddns.net/seekra/static/img/favicon/favicon.svg',
'name': 'Seekra',
'url': 'https://seekra.fwh.is/',
'title': 'Seekra',
'description': 'The (currently not working) search engine Seekra'
},
{
'icon': 'https://example.com/favicon.ico',
'name': 'Example',
'url': 'https://example.com/',
'title': 'Example',
'description': 'This domain is for use in documentation examples without needing permission. Avoid use in operations.'
},
];
}
const displayResults = async function (query) {
const searchContainer = document.querySelector('#search-container')
const resultsContainer = document.querySelector('#search-results-container');
searchContainer.classList.add('showing-results');
resultsContainer.innerHTML = '';
const results = await fetchResults(query);
for (let result of results) {
const container = document.createElement('div');
const header = document.createElement('a');
const description = document.createElement('div');
const headerFirstLine = document.createElement('div');
const title = document.createElement('div');
const iconWrapper = document.createElement('div');
const icon = document.createElement('img');
const headerText = document.createElement('div');
const siteName = document.createElement('div');
const url = document.createElement('div');
container.classList.add('search-result');
container.classList.add('glass');
container.classList.add('blue-glass');
header.classList.add('search-result-header');
header.href = result.url;
description.classList.add('search-result-description');
description.textContent = result.description;
headerFirstLine.classList.add('search-result-header-first-line');
title.classList.add('search-result-title');
title.textContent = result.title;
iconWrapper.classList.add('search-result-icon');
icon.src = result.icon;
icon.alt = '';
siteName.textContent = result.name;
url.classList.add('search-result-url');
url.textContent = result.url;
iconWrapper.appendChild(icon);
headerText.appendChild(siteName);
headerText.appendChild(url);
headerFirstLine.append(iconWrapper);
headerFirstLine.append(headerText);
header.appendChild(headerFirstLine);
header.appendChild(title);
container.appendChild(header);
container.appendChild(description);
resultsContainer.appendChild(container)
}
};
const refreshSuggestions = function (query) {
// TEST
const result = Array();
for (let r = 0; r < 10; r++) {
result.push('Test ' + Math.random());
};
return result;
};
const displaySuggestions = function (suggestions) {
const suggestionsContainer = document.querySelector('#search-suggestions-list');
const searchInput = document.querySelector('#search-input');
suggestionsContainer.innerHTML = '';
for (let suggestion of suggestions) {
const container = document.createElement('div');
const element = document.createElement('div');
const acceptButton = document.createElement('button');
const acceptIcon = document.createElement('img');
const content = document.createElement('div');
container.classList.add('suggestion-container');
element.classList.add('suggestion');
acceptButton.classList.add('accept-suggestion');
acceptButton.classList.add('glass');
acceptButton.classList.add('dark-glass');
acceptButton.classList.add('blue-glass');
acceptIcon.src = '/assets/img/jcloud-ui-icons/autocomplete-insert.svg';
content.classList.add('content');
// BEGIN NOT USED
container.dataset.suggestionId = crypto.randomUUID();
// END NOT USED
acceptButton.dataset.acceptButton = '';
acceptIcon.dataset.acceptButton = '';
content.textContent = suggestion;
suggestionsContainer.onclick = function (e) {
if (e.target.dataset.acceptButton === undefined) {
searchInput.value = suggestion;
displayResults(searchInput.value);
};
};
acceptButton.onclick = function () {
displaySuggestions(refreshSuggestions(searchInput.value));
searchInput.value = suggestion;
};
acceptButton.appendChild(acceptIcon);
element.appendChild(acceptButton);
element.appendChild(content);
container.appendChild(element);
suggestionsContainer.appendChild(container);
};
};
const showSearch = function () {
displaySuggestions(refreshSuggestions());
const searchTriggerButton = document.querySelector('#search-trigger');
const searchContainer = document.querySelector('#search-container');
const searchSuggestionsContainerInner = document.querySelector('#search-container > div');
const searchSuggestions = document.querySelector('#search-suggestions');
const searchInput = document.querySelector('#search-input');
const searchRecents = document.querySelector('#search-recents');
const left = searchSuggestions;
const right = searchRecents;
searchTriggerButton.classList.add('expanded');
searchTriggerButton.dataset.expanded = '';
searchContainer.classList.add('show');
searchContainer.classList.add('visible');
searchInput.oninput = function () {
displaySuggestions(refreshSuggestions(searchInput.value));
};
const maximizeSuggestions = function (side) {
if (!(side === left || side === right)) return;
const borderRadius = getComputedStyle(searchContainer).getPropertyValue('--border-radius').slice(0, 2);
const containerWidth = resizer.parentNode.getBoundingClientRect().width - 0 * borderRadius;
let leftWidth;
if (side === left) {
left.classList.add('floating');
right.classList.add('floating');
left.classList.remove('secondary-suggestions');
right.classList.add('secondary-suggestions');
leftWidth = (containerWidth - 2 * borderRadius) / containerWidth;
left.onclick = null;
right.onclick = function () {
maximizeSuggestions(right);
};
} else {
left.classList.add('floating');
right.classList.add('floating');
right.classList.remove('secondary-suggestions');
left.classList.add('secondary-suggestions');
leftWidth = 2 * borderRadius / containerWidth;
right.onclick = null;
left.onclick = function () {
maximizeSuggestions(left);
};
}
left.style.setProperty('--expanded-width', `${leftWidth * 100}%`);
right.style.setProperty('--expanded-width', `${(1 - leftWidth) * 100}%`);
setTimeout(function () {
left.classList.remove('floating');
right.classList.remove('floating');
}, 300);
};
const resizer = document.querySelector('#search-suggestions-containers-resizer');
let isResizing = false;
resizer.onpointerdown = function () {
isResizing = true;
document.onpointerup = function () {
isResizing = false;
document.onpointerup = undefined;
};
};
const handleResize = function (e) {
if (!isResizing) return;
const borderRadius = getComputedStyle(searchContainer).getPropertyValue('--border-radius').slice(0, 2);
const containerWidth = resizer.parentNode.getBoundingClientRect().width;
console.log(resizer.parentNode)
console.log(containerWidth);
let leftWidth = (e.clientX - searchContainer.children[0].getBoundingClientRect().left) / containerWidth;
const minWidth = 100;
if (leftWidth * containerWidth < 2 * borderRadius + minWidth) {
leftWidth = 2 * borderRadius / containerWidth;
left.classList.add('floating');
right.classList.add('floating');
left.classList.add('secondary-suggestions');
left.onclick = function () {
maximizeSuggestions(left);
};
} else {
left.onclick = null;
left.classList.remove('secondary-suggestions');
};
if (leftWidth * containerWidth > containerWidth - 2 * borderRadius - minWidth) {
leftWidth = (containerWidth - 2 * borderRadius) / containerWidth;
left.classList.add('floating');
right.classList.add('floating');
right.classList.add('secondary-suggestions');
right.onclick = function () {
maximizeSuggestions(right);
};
} else {
right.onclick = null;
right.classList.remove('secondary-suggestions');
};
left.style.setProperty('--expanded-width', `${leftWidth * 100}%`);
right.style.setProperty('--expanded-width', `${(1 - leftWidth) * 100}%`);
setTimeout(function () {
left.classList.remove('floating');
right.classList.remove('floating');
}, 300);
};
document.addEventListener('pointermove', handleResize);
left.onclick = null;
right.onclick = null;
if (left.classList.contains('secondary-suggestions')) {
left.onclick = function () {
maximizeSuggestions(left);
};
};
if (right.classList.contains('secondary-suggestions')) {
right.onclick = function () {
maximizeSuggestions(right);
};
};
const hide = function (event) {
if (!searchTriggerButton.contains(event.target) && !searchSuggestionsContainerInner.contains(event.target)) {
window.removeEventListener('click', hide, { capture: true });
window.removeEventListener('touchend', hide, { capture: true });
searchTriggerButton.classList.remove('expanded');
searchTriggerButton.removeAttribute('data-expanded');
searchContainer.classList.remove('show');
searchContainer.classList.remove('showing-results');
if (left.classList.contains('secondary-suggestions')) {
left.classList.add('secondary-suggestions-animation');
} else {
left.classList.remove('secondary-suggestions-animation');
};
if (right.classList.contains('secondary-suggestions')) {
right.classList.add('secondary-suggestions-animation');
} else {
right.classList.remove('secondary-suggestions-animation');
};
setTimeout(function () {
searchContainer.classList.remove('visible');
}, Number(getComputedStyle(searchContainer).getPropertyValue('--close-animation-duration').slice(0, -1)) * 1000);
};
};
setTimeout(function () {
window.addEventListener('click', hide, { capture: true });
window.addEventListener('touchend', hide, { capture: true });
}, 100);
};
export { showSearch, displaySuggestions, refreshSuggestions, displayResults };
+320
View File
@@ -0,0 +1,320 @@
import { getUiLabels } from '../i18n/main.js';
const getCookie = function (name) {
const cookies = document.cookie.split('; ');
for (const cookie of cookies) {
const [key, value] = cookie.split('=');
if (key === name) return decodeURIComponent(value);
};
return null;
};
const getFileExtension = function (filename) {
const lastDot = filename.lastIndexOf('.');
if (lastDot === -1 || lastDot === 0) {
return '';
};
return filename.slice(lastDot + 1);
};
const getFileName = function (path) {
const dirs = path.split('/');
if (path.endsWith('/')) {
return dirs[dirs.length - 2];
}
return dirs[dirs.length - 1];
};
const getDirName = function (path) {
const dirs = path.split('/');
if (path.endsWith('/')) {
return dirs.slice(0, dirs.length - 2).join('/') + '/';
}
return dirs.slice(0, dirs.length - 1).join('/') + '/';
};
const getHumanReadableFileSize = function (size, decimals = 1) {
if (size >= 1e3 && size < 1e6) {
return String(round(size / 1e3, decimals)) + ' KB';
} else if (size >= 1e6 && size < 1e9) {
return String(round(size / 1e6, decimals)) + ' MB';
} else if (size >= 1e9 && size < 1e12) {
return String(round(size / 1e9, decimals)) + ' GB';
} else if (size >= 1e12) {
return String(round(size / 1e9, decimals)) + ' TB';
} else {
return String(size) + ' B';
};
};
const round = function (n, decimals) {
const factor = 10 ** decimals;
return Math.round(n * factor) / factor;
};
const validatePasswordSecurity = function (password) {
let numberOfCaps = 0;
let numberOfSmalls = 0;
let numberOfNumbers = 0;
let numberOfSpecials = 0;
for (const char of password) {
if (char.match(/[a-zA-Z0-9]/)) { // Alphanumeric check
if (char.match(/[a-zA-Z]/)) { // Alphabet check
if (char === char.toUpperCase()) {
numberOfCaps++;
} else {
numberOfSmalls++;
};
} else {
numberOfNumbers++;
};
} else {
numberOfSpecials++;
};
};
return (
numberOfCaps > 0 &&
numberOfSmalls > 0 &&
numberOfNumbers > 0 &&
numberOfSpecials > 0 &&
password.length > 7
);
};
const countOccurrences = function (string, char) {
if (!string) {
return 0;
} else {
return string.split(char).length - 1;
};
};
const scrollToTop = function () {
window.scrollTo({ top: 0, behavior: 'smooth' });
};
const showDialog = function (dialog, closeCallbacks = [], clickOutsideClose = true) {
dialog.showModal();
setTimeout(() => {
if (clickOutsideClose) {
dialog.addEventListener('click', function (event) {
if (event.target === dialog) {
for (const callback of closeCallbacks) {
callback();
}
dialog.close();
};
});
}
}, 500);
};
const closeDialog = function (dialog) {
dialog.close();
};
function waitForEvent(element, eventType) {
return new Promise(resolve => {
element.addEventListener(eventType, resolve, { once: true });
});
};
const startLoading = function () {
document.querySelector('#loader').showModal();
};
const stopLoading = function () {
document.querySelector('#loader').close();
};
const middleEllipsis = function (str, maxLength = 30) {
if (str.length <= maxLength) return str;
const keep = Math.floor((maxLength - 3) / 2);
return str.slice(0, keep) + ' ... ' + str.slice(-keep);
};
const escapeRegex = function (s) {
return s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
};
const strip = function (str, char) {
if (char === undefined) {
return str.trim();
};
const pattern = new RegExp(`^[${escapeRegex(char)}]+|[${escapeRegex(char)}]+$`, 'g');
return str.replace(pattern, '');
};
const addQueryParam = function (url, key, value) {
const urlObj = new URL(url, window.location.origin);
urlObj.searchParams.set(key, value);
return urlObj.toString();
};
const removeQueryParam = function (url, key) {
const urlObj = new URL(url, window.location.origin);
urlObj.searchParams.delete(key);
const baseUrl = urlObj.origin + urlObj.pathname;
const queryString = urlObj.searchParams.toString();
return queryString ? `${baseUrl}?${queryString}` : baseUrl;
};
const getTextWidth = function (text, cssClass = '', html = false) {
const span = document.createElement('span');
span.style.position = 'fixed';
span.style.visibility = 'hidden';
span.style.whiteSpace = 'nowrap';
span.classList.add(cssClass)
if (html) {
span.innerHTML = text;
} else {
span.textContent = text;
};
document.body.appendChild(span);
const width = span.getBoundingClientRect().width;
document.body.removeChild(span);
return width;
}
const jCloudUIElements = {
alert: async function (message, html = false) {
showDialog(document.querySelector('#jcloud-ui-elements-alert'));
document.querySelector('#jcloud-ui-elements-alert-close').blur();
document.querySelector('#jcloud-ui-elements-alert-close').innerHTML = (await getUiLabels()).DIALOG_OPTIONS.ok;
if (html) {
document.querySelector('#jcloud-ui-elements-alert-message').innerHTML = message;
} else {
document.querySelector('#jcloud-ui-elements-alert-message').textContent = message;
};
document.querySelector('#jcloud-ui-elements-alert-close').addEventListener('click', function () {
closeDialog(document.querySelector('#jcloud-ui-elements-alert'));
});
await waitForEvent(document.querySelector('#jcloud-ui-elements-alert'), 'close');
},
confirm: async function (message, yesno = true, html = false, buttonTrue, buttonFalse) {
const yes = document.querySelector('#jcloud-ui-elements-confirm-yes');
const no = document.querySelector('#jcloud-ui-elements-confirm-no');
const messageElement = document.querySelector('#jcloud-ui-elements-confirm-message');
const dialog = document.querySelector('#jcloud-ui-elements-confirm');
showDialog(dialog, false);
if (yesno) {
yes.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.yes;
no.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.no;
} else {
yes.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.ok;
no.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.cancel;
};
if (buttonTrue) {
yes.textContent = buttonTrue;
};
if (buttonFalse) {
no.textContent = buttonFalse;
};
if (html) {
messageElement.innerHTML = message;
} else {
messageElement.textContent = message;
};
yes.addEventListener('click', function () {
dialog.dataset.result = 'true';
closeDialog(dialog);
});
no.addEventListener('click', function () {
dialog.dataset.result = 'false';
closeDialog(dialog);
});
await waitForEvent(dialog, 'close');
if (dialog.dataset.result === 'true') {
return true;
} else {
return false;
};
},
prompt: async function (message, allowCancel = true, placeholder = '', value = '', type = 'text', select = false, html = false, closeCallbacks = [], error = '', errorHtml = false, inputCallbacks = [], closeAfterSubmit = true) {
const ok = document.querySelector('#jcloud-ui-elements-prompt-ok');
const cancel = document.querySelector('#jcloud-ui-elements-prompt-cancel');
const messageElement = document.querySelector('#jcloud-ui-elements-prompt-message');
const dialog = document.querySelector('#jcloud-ui-elements-prompt');
const input = document.querySelector('#jcloud-ui-elements-prompt-input');
const form = document.querySelector('#jcloud-ui-elements-prompt-form')
if (errorHtml) {
document.querySelector('#jcloud-ui-elements-prompt-error').innerHTML = error;
} else {
document.querySelector('#jcloud-ui-elements-prompt-error').textContent = error;
};
input.addEventListener('input', function () {
for (let c of inputCallbacks) {
c();
};
});
dialog.dataset.isResult = 'false';
showDialog(dialog, closeCallbacks, allowCancel);
ok.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.ok;
cancel.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.cancel;
input.value = value;
input.type = type;
input.placeholder = placeholder
if (select) {
input.select();
};
if (allowCancel) {
cancel.style.display = 'block';
cancel.addEventListener('click', function () {
dialog.dataset.isResult = 'false';
closeDialog(dialog);
}, { once: true });
} else {
cancel.style.display = 'none';
};
if (html) {
messageElement.innerHTML = message;
} else {
messageElement.textContent = message;
};
form.addEventListener('submit', function (event) {
event.preventDefault();
});
ok.addEventListener('click', function () {
dialog.dataset.isResult = 'true';
if (closeAfterSubmit) {
closeDialog(dialog);
};
});
await waitForEvent(form, 'submit');
if (dialog.dataset.isResult === 'true') {
return input.value;
} else {
return null;
};
},
overlays: {
showBlurryOverlay: function () {
document.querySelector('#blurry-overlay').classList.remove('hidden');
},
hideBlurryOverlay: function () {
document.querySelector('#blurry-overlay').classList.add('hidden');
},
showBlurryDarkOverlay: function () {
document.querySelector('#blurry-dark-overlay').classList.remove('hidden');
},
hideBlurryDarkOverlay: function () {
document.querySelector('#blurry-dark-overlay').classList.add('hidden');
},
showOverlay: function () {
document.querySelector('#overlay').classList.remove('hidden');
},
hideOverlay: function () {
document.querySelector('#overlay').classList.add('hidden');
},
showLightOverlay: function () {
document.querySelector('#light-overlay').classList.remove('hidden');
},
hideLightOverlay: function () {
document.querySelector('#light-overlay').classList.add('hidden');
}
}
};
export { getCookie, getFileExtension, getFileName, getDirName, getHumanReadableFileSize, round, validatePasswordSecurity, countOccurrences, scrollToTop, showDialog, closeDialog, waitForEvent, startLoading, stopLoading, middleEllipsis, escapeRegex, strip, addQueryParam, removeQueryParam, getTextWidth, jCloudUIElements };
File diff suppressed because one or more lines are too long
+211
View File
@@ -0,0 +1,211 @@
import { loadPageTexts, getPageText } from '../i18n/main.js';
import { hide_login_page, hide_signup_page, show_startpage, show_home } from '../main/main.js';
import { validatePasswordSecurity, countOccurrences, jCloudUIElements } from '../tools/main.js';
import { more_options_menu_hide } from '../nav/menus/moreoptions/main.js';
const submit_email = function () {
const email = document.querySelector('#email');
const passwordContainer = document.querySelector('#password-container');
const password = document.querySelector('#password');
if (email.value.length > 0) {
email.style.borderBottomLeftRadius = '0';
email.style.borderBottomRightRadius = '0';
password.style.borderTopLeftRadius = '0';
password.style.borderTopRightRadius = '0';
password.classList.add('show');
passwordContainer.style.display = 'block';
setTimeout(() => {
passwordContainer.classList.add('show');
}, 10);
};
email.addEventListener('input', function () {
if (email.value.length === 0) {
setTimeout(() => {
passwordContainer.classList.remove('show');
}, 10);
email.style.borderBottomLeftRadius = '10px';
email.style.borderBottomRightRadius = '10px';
password.style.borderTopLeftRadius = '10px';
password.style.borderTopRightRadius = '10px';
password.classList.remove('show');
passwordContainer.style.display = 'none';
};
});
};
const check_password = async function () {
const email = document.querySelector('#email').value;
const password = document.querySelector('#password').value;
document.querySelector('#loading').style.display = 'flex';
const error = document.querySelector('#login-error');
const params = new URLSearchParams();
params.append('e', email);
params.append('p', password);
params.append('s', document.querySelector('#login-options-stay').checked ? 'true' : 'false')
await fetch('https://jcloud-services.ddns.net:1024/get-token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: params.toString(),
credentials: 'include'
})
.then(async response => {
if (response.status === 200) {
const token = await response.text();
document.cookie = `signed_in=true; path=/; ${document.querySelector('#login-options-stay').checked ? 'Max-Age=1728000' : ''}; Secure; SameSite=strict`;
document.querySelector('#authorized-mom-part').style.display = 'block';
hide_login_page();
show_home();
} else if (response.status === 401) {
error.textContent = await getPageText('/login', '0a3277611792429cbdbea27f8238b2e9', '0');
error.classList.remove('hidden');
} else if (response.status === 404) {
error.textContent = await getPageText('/login', '6f7684f96cfe47e3ad01c1f566de5f53', '0');
error.classList.remove('hidden');
};
})
.catch(async err => { await jCloudUIElements.alert(err) });
document.querySelector('#loading').style.display = 'none';
};
const createUser = async function () {
const error = document.querySelector('#signup-error');
const email = document.querySelector('#signup-email').value;
const password = document.querySelector('#signup-password').value;
const passwordConfirmation = document.querySelector('#signup-password-confirm').value;
const firstName = document.querySelector('#signup-first-name').value;
const lastName = document.querySelector('#signup-last-name').value;
const language = document.querySelector('#signup-language').value;
const birthDate = new Date(document.querySelector('#signup-birth-date').value);
const age = Math.floor((new Date() - birthDate) / (1000 * 60 * 60 * 24));
const preInstalledApplications = document.querySelector('#signup-pre-installed-applications').value;
const preInstalledApplicationsInstallingLocations = document.querySelector('#signup-pre-installed-applications-installing-locations').value;
if (email && password && passwordConfirmation && firstName && lastName && language && birthDate && preInstalledApplications && preInstalledApplicationsInstallingLocations) {
if (age >= 4745) {
if (email.length > 0 && countOccurrences(email, '@') === 1) {
if (password === passwordConfirmation) {
if (validatePasswordSecurity(password)) {
let params = new URLSearchParams();
params.append('p', password);
params.append('fn', firstName);
params.append('ln', lastName);
params.append('lang', language);
params.append('by', birthDate.getFullYear());
params.append('bm', birthDate.getMonth() + 1);
params.append('bd', birthDate.getDate());
params.append('pia', preInstalledApplications);
params.append('il', preInstalledApplicationsInstallingLocations);
await fetch(`https://jcloud-services.ddns.net:1024/user/${email}`, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: params.toString()
})
.then(async response => {
if (response.status === 202) {
await jCloudUIElements.alert('Das Konto wurde erfolgreich erstellt.');
params = new URLSearchParams();
params.append('e', email);
params.append('p', password);
params.append('s', 'false');
await fetch('https://jcloud-services.ddns.net:1024/session', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: params.toString(),
credentials: 'include'
})
.then(async response => {
if (response.status === 200) {
document.cookie = `User=${email}; path=/; Max-Age=1728000; Secure; Samesite=strict`;
document.cookie = 'signed_in=true; path=/; Max-Age=1728000; Secure; Samesite=strict';
window.location.href = '/';
// hide_signup_page();
// show_home();
// document.querySelector('#authorized-mom-part').style.display = 'block';
};
})
.catch(async err => {
await jCloudUIElements.alert(err);
});
} else if (response.status === 409) {
error.innerHTML = await getPageText('/signup', 'e730f1e7a56a49e383ab4dc25d85072f', '0');
} else if (response.status === 500) {
error.innerHTML = error.innerHTML = await getPageText('/signup', '9094396415c14bfeb09dc3de40c74936', '0');
};
})
.catch(async err => { await jCloudUIElements.alert(err) });
} else {
error.innerHTML = await getPageText('/signup', '676e5f3ada1b40488aa841ae380d6fa3', '0');
};
} else {
error.innerHTML = await getPageText('/signup', '7d6499350697401c8ea2f7ca60d0c474', '1');
};
} else {
error.innerHTML = await getPageText('/signup', '2c04ed45a2d04b42916f5d23ee63e7c1', '0');
};
} else {
error.innerHTML = await getPageText('/signup', '2bc37506b1024fe196a6aea65406b83f', '0');
};
} else {
error.innerHTML = await getPageText('/signup', 'a827a1ffb86e4f0786e951abe4a54ab3', '0');
};
};
const signupPage1 = function () {
const page1 = document.querySelector('#signup-form-page-1');
const page2 = document.querySelector('#signup-form-page-2');
page1.classList.remove('hidden');
page2.classList.add('hidden');
};
const signupPage2 = function () {
const page1 = document.querySelector('#signup-form-page-1');
const page2 = document.querySelector('#signup-form-page-2');
const page3 = document.querySelector('#signup-form-page-3');
page1.classList.add('hidden');
page2.classList.remove('hidden');
page3.classList.add('hidden');
};
const signupPage3 = function () {
const page2 = document.querySelector('#signup-form-page-2');
const page3 = document.querySelector('#signup-form-page-3');
page2.classList.add('hidden');
page3.classList.remove('hidden');
};
const signOut = async function () {
await fetch('https://jcloud-services.ddns.net:1024/session',
{
method: 'DELETE',
credentials: 'include'
}
)
.then(async response => {
if (response.status === 204) {
document.cookie = "User=; path=/; max-age=-1";
document.cookie = "signed_in=; path=/; max-age=-1";
more_options_menu_hide();
show_startpage();
document.querySelector('#authorized-mom-part').style.display = 'none';
history.pushState(null, '', '/');
await loadPageTexts('/');
document.querySelector('#files').setAttribute('class', 'hidden');
document.querySelector('#home').setAttribute('class', 'hidden');
document.querySelector('#link-home').style.display = 'none';
document.querySelector('#user-details-on-footer').style.display = 'none';
document.querySelector('#user-details-on-footer').setAttribute('class', '');
window.scroll(0, 0);
} else {
await jCloudUIElements.alert('Aufgrund eines unbekannten Fehlers ist eine Abmeldung derzeit nicht möglich. Bitte versuchen Sie es später erneut.');
}
})
.catch(async _ => {
await jCloudUIElements.alert('Aufgrund eines Netzwerkfehlers ist eine Abmeldung derzeit nicht möglich. Bitte versuchen Sie es später erneut.');
})
};
export { submit_email, check_password, createUser, signupPage1, signupPage2, signupPage3, signOut };
File diff suppressed because one or more lines are too long