From 5724a62e1e9e7b072214fac200bd52e8b9fd5bc9 Mon Sep 17 00:00:00 2001 From: nileshgulia1 Date: Thu, 29 Jul 2021 13:42:41 +0530 Subject: [PATCH] forest theme components and customisations --- razzle.extend.js | 15 + src/actions/index.js | 113 + src/components/index.js | 11 + .../manage/Blocks/NavigationBlock/Edit.jsx | 93 + .../manage/Blocks/NavigationBlock/View.jsx | 131 + .../manage/Blocks/NavigationBlock/helpers.js | 92 + src/components/manage/PositionToolbar.jsx | 52 + .../manage/Widgets/ObjectListInlineWidget.jsx | 161 + .../manage/Widgets/ObjectWidget.jsx | 132 + .../theme/CatalogueViews/AppFooter.jsx | 16 + .../theme/CatalogueViews/AppHead.jsx | 16 + .../theme/CatalogueViews/AppHeader.jsx | 214 ++ .../theme/CountryPageView/CountryPageView.jsx | 512 +++ .../theme/CountryView/CountryView.jsx | 167 + .../theme/DefaultViewWide/DefaultViewWide.jsx | 170 + src/components/theme/Header/HeaderImage.jsx | 39 + .../theme/Header/HomepageSlider.jsx | 206 ++ .../Header/HomepageSliderPlaceholder.jsx | 18 + src/components/theme/Header/slidercarret.svg | 1 + .../theme/HomepageView/HomepageView.jsx | 285 ++ .../theme/HomepageView/images/1.jpg | Bin 0 -> 44338 bytes .../theme/HomepageView/images/2.jpg | Bin 0 -> 36273 bytes .../theme/HomepageView/images/3.jpg | Bin 0 -> 29831 bytes .../theme/HomepageView/images/4.jpg | Bin 0 -> 35330 bytes .../theme/HomepageView/images/5.jpg | Bin 0 -> 48112 bytes .../HomepageView/images/basic-forest.png | Bin 0 -> 11429 bytes .../HomepageView/images/forest-carbon.png | Bin 0 -> 13965 bytes .../theme/HomepageView/images/forest.png | Bin 0 -> 17214 bytes .../theme/HomepageView/images/nature.png | Bin 0 -> 14945 bytes src/components/theme/HomepageView/scrap.jsx | 48 + .../MobileSearchWidget/MobileSearchWidget.jsx | 196 + .../theme/MobileSearchWidget/person.svg | 9 + .../theme/MosaicView/MosaicView.jsx | 198 + src/components/theme/NewsView/NewsItem.jsx | 173 + src/components/theme/NewsView/NewsView.jsx | 152 + src/components/theme/NewsView/README.md | 6 + .../theme/RefreshView/RefreshView.jsx | 12 + src/components/theme/SiteMap/SiteMap.jsx | 84 + src/components/theme/View/RedirectView.jsx | 46 + .../theme/Viewlets/ForestMetadata.jsx | 143 + src/constants/ActionTypes.js | 20 + src/constants/Layouts.js | 5 + src/customizations/README.md | 9 + .../volto/actions/content/content.js | 189 + .../components/manage/Blocks/Video/Edit.jsx | 351 ++ .../manage/Blocks/Video/VideoSidebar.jsx | 211 ++ .../components/manage/Blocks/Video/View.jsx | 167 + .../manage/Blocks/Video/block-video.svg | 7 + .../manage/Widgets/ObjectListWidget.jsx | 200 + .../volto/components/theme/App/App.jsx | 300 ++ .../volto/components/theme/App/Readme.md | 4 + .../volto/components/theme/Footer/Footer.jsx | 321 ++ .../volto/components/theme/Footer/WISE.png | Bin 0 -> 19651 bytes .../components/theme/Footer/biselogo.png | Bin 0 -> 15109 bytes .../components/theme/Footer/climateChange.svg | 16 + .../components/theme/Footer/climateadapt.svg | 403 +++ .../volto/components/theme/Footer/drmkc.png | Bin 0 -> 2470 bytes .../volto/components/theme/Footer/ec.png | Bin 0 -> 3296 bytes .../volto/components/theme/Footer/eea.png | Bin 0 -> 8073 bytes .../volto/components/theme/Footer/footer.png | Bin 0 -> 103088 bytes .../theme/Footer/landmonitoringservice.png | Bin 0 -> 21212 bytes .../components/theme/Forbidden/Forbidden.jsx | 52 + .../volto/components/theme/Header/Header.jsx | 140 + .../components/theme/Header/header-bg.png | Bin 0 -> 59625 bytes .../volto/components/theme/Login/Login.jsx | 364 ++ .../volto/components/theme/Login/Readme.md | 5 + .../volto/components/theme/Logo/Logo-sm.svg | 104 + .../volto/components/theme/Logo/Logo.jsx | 73 + .../volto/components/theme/Logo/Logo.svg | 100 + .../theme/Navigation/Navigation.jsx | 399 ++ .../components/theme/NotFound/NotFound.jsx | 62 + .../theme/OutdatedBrowser/OutdatedBrowser.jsx | 37 + .../volto/components/theme/Search/Search.jsx | 445 +++ .../theme/Unauthorized/Unauthorized.jsx | 60 + .../components/theme/View/DefaultView.jsx | 144 + .../components/theme/View/ListingView.jsx | 240 ++ .../volto/components/theme/View/Readme.md | 4 + .../volto/components/theme/View/View.jsx | 373 ++ .../volto/helpers/Html/Html.jsx | 123 + src/helpers/index.js | 109 + src/index.js | 67 +- src/localconfig.js | 236 ++ src/plugins/index.js | 26 + src/plugins/package.json | 11 + src/reducers/current_version.js | 33 + src/reducers/default_header_image.js | 59 + src/reducers/folder_header.js | 60 + src/reducers/folder_tabs.js | 28 + src/reducers/frontpage_slides.js | 56 + src/reducers/index.js | 35 + src/reducers/localnavigation.js | 45 + src/reducers/parent_folder_data.js | 50 + src/reducers/set_folder_header.js | 33 + src/reducers/sitemap.js | 71 + .../imagecards/carousel.overrides | 278 ++ theme/site/assets/fonts/Lato/Lato-Black.ttf | Bin 0 -> 69484 bytes .../assets/fonts/Lato/Lato-BlackItalic.ttf | Bin 0 -> 71948 bytes theme/site/assets/fonts/Lato/Lato-Bold.ttf | Bin 0 -> 73316 bytes .../assets/fonts/Lato/Lato-BoldItalic.ttf | Bin 0 -> 77680 bytes theme/site/assets/fonts/Lato/Lato-Italic.ttf | Bin 0 -> 75744 bytes theme/site/assets/fonts/Lato/Lato-Light.ttf | Bin 0 -> 77192 bytes .../assets/fonts/Lato/Lato-LightItalic.ttf | Bin 0 -> 49064 bytes theme/site/assets/fonts/Lato/Lato-Regular.ttf | Bin 0 -> 75136 bytes theme/site/assets/fonts/Lato/Lato-Thin.ttf | Bin 0 -> 69968 bytes .../assets/fonts/Lato/Lato-ThinItalic.ttf | Bin 0 -> 48848 bytes theme/site/assets/fonts/Lato/OFL.txt | 93 + theme/site/assets/fonts/Roboto/LICENSE.txt | 202 ++ .../site/assets/fonts/Roboto/Roboto-Black.ttf | Bin 0 -> 171072 bytes .../fonts/Roboto/Roboto-BlackItalic.ttf | Bin 0 -> 177120 bytes .../site/assets/fonts/Roboto/Roboto-Bold.ttf | Bin 0 -> 170348 bytes .../assets/fonts/Roboto/Roboto-BoldItalic.ttf | Bin 0 -> 174520 bytes .../assets/fonts/Roboto/Roboto-Italic.ttf | Bin 0 -> 173516 bytes .../site/assets/fonts/Roboto/Roboto-Light.ttf | Bin 0 -> 170012 bytes .../fonts/Roboto/Roboto-LightItalic.ttf | Bin 0 -> 176184 bytes .../assets/fonts/Roboto/Roboto-Medium.ttf | Bin 0 -> 171656 bytes .../fonts/Roboto/Roboto-MediumItalic.ttf | Bin 0 -> 176428 bytes .../assets/fonts/Roboto/Roboto-Regular.ttf | Bin 0 -> 171272 bytes .../site/assets/fonts/Roboto/Roboto-Thin.ttf | Bin 0 -> 171500 bytes .../assets/fonts/Roboto/Roboto-ThinItalic.ttf | Bin 0 -> 175872 bytes .../assets/fonts/Roboto_Condensed/LICENSE.txt | 202 ++ .../Roboto_Condensed/RobotoCondensed-Bold.ttf | Bin 0 -> 169352 bytes .../RobotoCondensed-BoldItalic.ttf | Bin 0 -> 175420 bytes .../RobotoCondensed-Italic.ttf | Bin 0 -> 174736 bytes .../RobotoCondensed-Light.ttf | Bin 0 -> 167568 bytes .../RobotoCondensed-LightItalic.ttf | Bin 0 -> 174908 bytes .../RobotoCondensed-Regular.ttf | Bin 0 -> 169848 bytes theme/site/assets/fonts/icons.eot | Bin 0 -> 54884 bytes theme/site/assets/fonts/icons.svg | 320 ++ theme/site/assets/fonts/icons.ttf | Bin 0 -> 54728 bytes theme/site/assets/fonts/icons.woff | Bin 0 -> 54804 bytes theme/site/assets/images/flags.png | Bin 0 -> 28123 bytes theme/site/collections/breadcrumb.overrides | 44 + theme/site/collections/breadcrumb.variables | 22 + theme/site/collections/form.overrides | 104 + theme/site/collections/form.variables | 79 + theme/site/collections/grid.overrides | 136 + theme/site/collections/grid.variables | 103 + theme/site/collections/menu.overrides | 585 +++ theme/site/collections/menu.overrides.bak | 1508 ++++++++ theme/site/collections/menu.variables | 151 + theme/site/collections/message.overrides | 16 + theme/site/collections/message.variables | 41 + theme/site/collections/table.overrides | 54 + theme/site/collections/table.variables | 244 ++ theme/site/elements/button.overrides | 90 + theme/site/elements/button.variables | 101 + theme/site/elements/container.overrides | 426 +++ theme/site/elements/container.variables | 97 + theme/site/elements/divider.overrides | 17 + theme/site/elements/divider.variables | 29 + theme/site/elements/flag.overrides | 1229 +++++++ theme/site/elements/flag.variables | 7 + theme/site/elements/header.overrides | 3 + theme/site/elements/header.variables | 44 + theme/site/elements/image.overrides | 3 + theme/site/elements/image.variables | 25 + theme/site/elements/input.overrides | 108 + theme/site/elements/input.variables | 43 + theme/site/elements/label.overrides | 3 + theme/site/elements/label.variables | 77 + theme/site/elements/list.overrides | 24 + theme/site/elements/list.variables | 83 + theme/site/elements/loader.overrides | 3 + theme/site/elements/loader.variables | 24 + theme/site/elements/placeholder.overrides | 3 + theme/site/elements/placeholder.variables | 16 + theme/site/elements/rail.overrides | 3 + theme/site/elements/rail.variables | 16 + theme/site/elements/reveal.overrides | 3 + theme/site/elements/reveal.variables | 5 + theme/site/elements/segment.overrides | 108 + theme/site/elements/segment.variables | 64 + theme/site/elements/step.overrides | 17 + theme/site/elements/step.variables | 51 + theme/site/extras/blocks.less | 591 +++ theme/site/extras/custom.overrides | 8 + theme/site/extras/custom.variables | 0 theme/site/extras/draftjs.less | 272 ++ theme/site/extras/extras.overrides | 5 + theme/site/extras/main.overrides | 288 ++ theme/site/extras/sidebar.less | 344 ++ theme/site/extras/toolbar.less | 656 ++++ theme/site/extras/utils.overrides | 63 + theme/site/globals/reset.overrides | 461 +++ theme/site/globals/reset.variables | 3 + theme/site/globals/site.less | 163 + theme/site/globals/site.overrides | 3202 +++++++++++++++++ theme/site/globals/site.variables | 393 ++ theme/site/modules/accordion.overrides | 26 + theme/site/modules/accordion.variables | 48 + theme/site/modules/chatroom.overrides | 3 + theme/site/modules/chatroom.variables | 3 + theme/site/modules/checkbox.overrides | 34 + theme/site/modules/checkbox.variables | 50 + theme/site/modules/dimmer.overrides | 3 + theme/site/modules/dimmer.variables | 23 + theme/site/modules/dropdown.overrides | 68 + theme/site/modules/dropdown.variables | 140 + theme/site/modules/embed.overrides | 3 + theme/site/modules/embed.variables | 27 + theme/site/modules/modal.overrides | 2 + theme/site/modules/modal.variables | 82 + theme/site/modules/nag.overrides | 3 + theme/site/modules/nag.variables | 31 + theme/site/modules/popup.overrides | 3 + theme/site/modules/popup.variables | 50 + theme/site/modules/progress.overrides | 3 + theme/site/modules/progress.variables | 33 + theme/site/modules/rating.overrides | 73 + theme/site/modules/rating.variables | 21 + theme/site/modules/search.overrides | 3 + theme/site/modules/search.variables | 44 + theme/site/modules/shape.overrides | 3 + theme/site/modules/shape.variables | 14 + theme/site/modules/sidebar.overrides | 3 + theme/site/modules/sidebar.variables | 26 + theme/site/modules/sticky.overrides | 3 + theme/site/modules/sticky.variables | 3 + theme/site/modules/tab.overrides | 3 + theme/site/modules/tab.variables | 5 + theme/site/modules/transition.overrides | 1087 ++++++ theme/site/modules/transition.variables | 3 + theme/site/modules/video.overrides | 3 + theme/site/modules/video.variables | 3 + theme/site/views/ad.overrides | 3 + theme/site/views/ad.variables | 3 + theme/site/views/card.overrides | 3 + theme/site/views/card.variables | 97 + theme/site/views/comment.overrides | 3 + theme/site/views/comment.variables | 38 + theme/site/views/feed.overrides | 3 + theme/site/views/feed.variables | 49 + theme/site/views/item.overrides | 3 + theme/site/views/item.variables | 51 + theme/site/views/statistic.overrides | 3 + theme/site/views/statistic.variables | 43 + theme/theme.config | 84 + theme/themes/pastanaga/globals/site.overrides | 3 + 238 files changed, 25025 insertions(+), 4 deletions(-) create mode 100644 razzle.extend.js create mode 100644 src/actions/index.js create mode 100644 src/components/index.js create mode 100644 src/components/manage/Blocks/NavigationBlock/Edit.jsx create mode 100644 src/components/manage/Blocks/NavigationBlock/View.jsx create mode 100644 src/components/manage/Blocks/NavigationBlock/helpers.js create mode 100644 src/components/manage/PositionToolbar.jsx create mode 100644 src/components/manage/Widgets/ObjectListInlineWidget.jsx create mode 100644 src/components/manage/Widgets/ObjectWidget.jsx create mode 100644 src/components/theme/CatalogueViews/AppFooter.jsx create mode 100644 src/components/theme/CatalogueViews/AppHead.jsx create mode 100644 src/components/theme/CatalogueViews/AppHeader.jsx create mode 100644 src/components/theme/CountryPageView/CountryPageView.jsx create mode 100644 src/components/theme/CountryView/CountryView.jsx create mode 100644 src/components/theme/DefaultViewWide/DefaultViewWide.jsx create mode 100644 src/components/theme/Header/HeaderImage.jsx create mode 100644 src/components/theme/Header/HomepageSlider.jsx create mode 100644 src/components/theme/Header/HomepageSliderPlaceholder.jsx create mode 100644 src/components/theme/Header/slidercarret.svg create mode 100644 src/components/theme/HomepageView/HomepageView.jsx create mode 100644 src/components/theme/HomepageView/images/1.jpg create mode 100644 src/components/theme/HomepageView/images/2.jpg create mode 100644 src/components/theme/HomepageView/images/3.jpg create mode 100644 src/components/theme/HomepageView/images/4.jpg create mode 100644 src/components/theme/HomepageView/images/5.jpg create mode 100644 src/components/theme/HomepageView/images/basic-forest.png create mode 100644 src/components/theme/HomepageView/images/forest-carbon.png create mode 100644 src/components/theme/HomepageView/images/forest.png create mode 100644 src/components/theme/HomepageView/images/nature.png create mode 100644 src/components/theme/HomepageView/scrap.jsx create mode 100644 src/components/theme/MobileSearchWidget/MobileSearchWidget.jsx create mode 100644 src/components/theme/MobileSearchWidget/person.svg create mode 100644 src/components/theme/MosaicView/MosaicView.jsx create mode 100644 src/components/theme/NewsView/NewsItem.jsx create mode 100644 src/components/theme/NewsView/NewsView.jsx create mode 100644 src/components/theme/NewsView/README.md create mode 100644 src/components/theme/RefreshView/RefreshView.jsx create mode 100644 src/components/theme/SiteMap/SiteMap.jsx create mode 100644 src/components/theme/View/RedirectView.jsx create mode 100644 src/components/theme/Viewlets/ForestMetadata.jsx create mode 100644 src/constants/ActionTypes.js create mode 100644 src/constants/Layouts.js create mode 100644 src/customizations/README.md create mode 100644 src/customizations/volto/actions/content/content.js create mode 100644 src/customizations/volto/components/manage/Blocks/Video/Edit.jsx create mode 100644 src/customizations/volto/components/manage/Blocks/Video/VideoSidebar.jsx create mode 100644 src/customizations/volto/components/manage/Blocks/Video/View.jsx create mode 100644 src/customizations/volto/components/manage/Blocks/Video/block-video.svg create mode 100644 src/customizations/volto/components/manage/Widgets/ObjectListWidget.jsx create mode 100644 src/customizations/volto/components/theme/App/App.jsx create mode 100644 src/customizations/volto/components/theme/App/Readme.md create mode 100644 src/customizations/volto/components/theme/Footer/Footer.jsx create mode 100644 src/customizations/volto/components/theme/Footer/WISE.png create mode 100644 src/customizations/volto/components/theme/Footer/biselogo.png create mode 100644 src/customizations/volto/components/theme/Footer/climateChange.svg create mode 100644 src/customizations/volto/components/theme/Footer/climateadapt.svg create mode 100644 src/customizations/volto/components/theme/Footer/drmkc.png create mode 100644 src/customizations/volto/components/theme/Footer/ec.png create mode 100644 src/customizations/volto/components/theme/Footer/eea.png create mode 100644 src/customizations/volto/components/theme/Footer/footer.png create mode 100644 src/customizations/volto/components/theme/Footer/landmonitoringservice.png create mode 100644 src/customizations/volto/components/theme/Forbidden/Forbidden.jsx create mode 100644 src/customizations/volto/components/theme/Header/Header.jsx create mode 100644 src/customizations/volto/components/theme/Header/header-bg.png create mode 100644 src/customizations/volto/components/theme/Login/Login.jsx create mode 100644 src/customizations/volto/components/theme/Login/Readme.md create mode 100644 src/customizations/volto/components/theme/Logo/Logo-sm.svg create mode 100644 src/customizations/volto/components/theme/Logo/Logo.jsx create mode 100644 src/customizations/volto/components/theme/Logo/Logo.svg create mode 100644 src/customizations/volto/components/theme/Navigation/Navigation.jsx create mode 100644 src/customizations/volto/components/theme/NotFound/NotFound.jsx create mode 100644 src/customizations/volto/components/theme/OutdatedBrowser/OutdatedBrowser.jsx create mode 100644 src/customizations/volto/components/theme/Search/Search.jsx create mode 100644 src/customizations/volto/components/theme/Unauthorized/Unauthorized.jsx create mode 100644 src/customizations/volto/components/theme/View/DefaultView.jsx create mode 100644 src/customizations/volto/components/theme/View/ListingView.jsx create mode 100644 src/customizations/volto/components/theme/View/Readme.md create mode 100644 src/customizations/volto/components/theme/View/View.jsx create mode 100644 src/customizations/volto/helpers/Html/Html.jsx create mode 100644 src/helpers/index.js create mode 100644 src/localconfig.js create mode 100644 src/plugins/index.js create mode 100644 src/plugins/package.json create mode 100644 src/reducers/current_version.js create mode 100644 src/reducers/default_header_image.js create mode 100644 src/reducers/folder_header.js create mode 100644 src/reducers/folder_tabs.js create mode 100644 src/reducers/frontpage_slides.js create mode 100644 src/reducers/index.js create mode 100644 src/reducers/localnavigation.js create mode 100644 src/reducers/parent_folder_data.js create mode 100644 src/reducers/set_folder_header.js create mode 100644 src/reducers/sitemap.js create mode 100644 theme/addons/volto-addons/imagecards/carousel.overrides create mode 100644 theme/site/assets/fonts/Lato/Lato-Black.ttf create mode 100644 theme/site/assets/fonts/Lato/Lato-BlackItalic.ttf create mode 100644 theme/site/assets/fonts/Lato/Lato-Bold.ttf create mode 100644 theme/site/assets/fonts/Lato/Lato-BoldItalic.ttf create mode 100644 theme/site/assets/fonts/Lato/Lato-Italic.ttf create mode 100644 theme/site/assets/fonts/Lato/Lato-Light.ttf create mode 100644 theme/site/assets/fonts/Lato/Lato-LightItalic.ttf create mode 100644 theme/site/assets/fonts/Lato/Lato-Regular.ttf create mode 100644 theme/site/assets/fonts/Lato/Lato-Thin.ttf create mode 100644 theme/site/assets/fonts/Lato/Lato-ThinItalic.ttf create mode 100644 theme/site/assets/fonts/Lato/OFL.txt create mode 100644 theme/site/assets/fonts/Roboto/LICENSE.txt create mode 100644 theme/site/assets/fonts/Roboto/Roboto-Black.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-BlackItalic.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-Bold.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-BoldItalic.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-Italic.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-Light.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-LightItalic.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-Medium.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-MediumItalic.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-Regular.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-Thin.ttf create mode 100644 theme/site/assets/fonts/Roboto/Roboto-ThinItalic.ttf create mode 100644 theme/site/assets/fonts/Roboto_Condensed/LICENSE.txt create mode 100644 theme/site/assets/fonts/Roboto_Condensed/RobotoCondensed-Bold.ttf create mode 100644 theme/site/assets/fonts/Roboto_Condensed/RobotoCondensed-BoldItalic.ttf create mode 100644 theme/site/assets/fonts/Roboto_Condensed/RobotoCondensed-Italic.ttf create mode 100644 theme/site/assets/fonts/Roboto_Condensed/RobotoCondensed-Light.ttf create mode 100644 theme/site/assets/fonts/Roboto_Condensed/RobotoCondensed-LightItalic.ttf create mode 100644 theme/site/assets/fonts/Roboto_Condensed/RobotoCondensed-Regular.ttf create mode 100644 theme/site/assets/fonts/icons.eot create mode 100644 theme/site/assets/fonts/icons.svg create mode 100644 theme/site/assets/fonts/icons.ttf create mode 100644 theme/site/assets/fonts/icons.woff create mode 100644 theme/site/assets/images/flags.png create mode 100644 theme/site/collections/breadcrumb.overrides create mode 100644 theme/site/collections/breadcrumb.variables create mode 100644 theme/site/collections/form.overrides create mode 100644 theme/site/collections/form.variables create mode 100644 theme/site/collections/grid.overrides create mode 100644 theme/site/collections/grid.variables create mode 100644 theme/site/collections/menu.overrides create mode 100644 theme/site/collections/menu.overrides.bak create mode 100644 theme/site/collections/menu.variables create mode 100644 theme/site/collections/message.overrides create mode 100644 theme/site/collections/message.variables create mode 100644 theme/site/collections/table.overrides create mode 100644 theme/site/collections/table.variables create mode 100644 theme/site/elements/button.overrides create mode 100644 theme/site/elements/button.variables create mode 100644 theme/site/elements/container.overrides create mode 100644 theme/site/elements/container.variables create mode 100644 theme/site/elements/divider.overrides create mode 100644 theme/site/elements/divider.variables create mode 100644 theme/site/elements/flag.overrides create mode 100644 theme/site/elements/flag.variables create mode 100644 theme/site/elements/header.overrides create mode 100644 theme/site/elements/header.variables create mode 100644 theme/site/elements/image.overrides create mode 100644 theme/site/elements/image.variables create mode 100644 theme/site/elements/input.overrides create mode 100644 theme/site/elements/input.variables create mode 100644 theme/site/elements/label.overrides create mode 100644 theme/site/elements/label.variables create mode 100644 theme/site/elements/list.overrides create mode 100644 theme/site/elements/list.variables create mode 100644 theme/site/elements/loader.overrides create mode 100644 theme/site/elements/loader.variables create mode 100644 theme/site/elements/placeholder.overrides create mode 100644 theme/site/elements/placeholder.variables create mode 100644 theme/site/elements/rail.overrides create mode 100644 theme/site/elements/rail.variables create mode 100644 theme/site/elements/reveal.overrides create mode 100644 theme/site/elements/reveal.variables create mode 100644 theme/site/elements/segment.overrides create mode 100644 theme/site/elements/segment.variables create mode 100644 theme/site/elements/step.overrides create mode 100644 theme/site/elements/step.variables create mode 100644 theme/site/extras/blocks.less create mode 100644 theme/site/extras/custom.overrides create mode 100644 theme/site/extras/custom.variables create mode 100644 theme/site/extras/draftjs.less create mode 100644 theme/site/extras/extras.overrides create mode 100644 theme/site/extras/main.overrides create mode 100644 theme/site/extras/sidebar.less create mode 100644 theme/site/extras/toolbar.less create mode 100644 theme/site/extras/utils.overrides create mode 100644 theme/site/globals/reset.overrides create mode 100644 theme/site/globals/reset.variables create mode 100644 theme/site/globals/site.less create mode 100644 theme/site/globals/site.overrides create mode 100644 theme/site/globals/site.variables create mode 100644 theme/site/modules/accordion.overrides create mode 100644 theme/site/modules/accordion.variables create mode 100644 theme/site/modules/chatroom.overrides create mode 100644 theme/site/modules/chatroom.variables create mode 100644 theme/site/modules/checkbox.overrides create mode 100644 theme/site/modules/checkbox.variables create mode 100644 theme/site/modules/dimmer.overrides create mode 100644 theme/site/modules/dimmer.variables create mode 100644 theme/site/modules/dropdown.overrides create mode 100644 theme/site/modules/dropdown.variables create mode 100644 theme/site/modules/embed.overrides create mode 100644 theme/site/modules/embed.variables create mode 100644 theme/site/modules/modal.overrides create mode 100644 theme/site/modules/modal.variables create mode 100644 theme/site/modules/nag.overrides create mode 100644 theme/site/modules/nag.variables create mode 100644 theme/site/modules/popup.overrides create mode 100644 theme/site/modules/popup.variables create mode 100644 theme/site/modules/progress.overrides create mode 100644 theme/site/modules/progress.variables create mode 100644 theme/site/modules/rating.overrides create mode 100644 theme/site/modules/rating.variables create mode 100644 theme/site/modules/search.overrides create mode 100644 theme/site/modules/search.variables create mode 100644 theme/site/modules/shape.overrides create mode 100644 theme/site/modules/shape.variables create mode 100644 theme/site/modules/sidebar.overrides create mode 100644 theme/site/modules/sidebar.variables create mode 100644 theme/site/modules/sticky.overrides create mode 100644 theme/site/modules/sticky.variables create mode 100644 theme/site/modules/tab.overrides create mode 100644 theme/site/modules/tab.variables create mode 100644 theme/site/modules/transition.overrides create mode 100644 theme/site/modules/transition.variables create mode 100644 theme/site/modules/video.overrides create mode 100644 theme/site/modules/video.variables create mode 100644 theme/site/views/ad.overrides create mode 100644 theme/site/views/ad.variables create mode 100644 theme/site/views/card.overrides create mode 100644 theme/site/views/card.variables create mode 100644 theme/site/views/comment.overrides create mode 100644 theme/site/views/comment.variables create mode 100644 theme/site/views/feed.overrides create mode 100644 theme/site/views/feed.variables create mode 100644 theme/site/views/item.overrides create mode 100644 theme/site/views/item.variables create mode 100644 theme/site/views/statistic.overrides create mode 100644 theme/site/views/statistic.variables create mode 100644 theme/theme.config create mode 100644 theme/themes/pastanaga/globals/site.overrides diff --git a/razzle.extend.js b/razzle.extend.js new file mode 100644 index 0000000..539f434 --- /dev/null +++ b/razzle.extend.js @@ -0,0 +1,15 @@ +const plugins = (defaultPlugins) => { + return defaultPlugins; +}; +const modify = (config, { target, dev }, webpack) => { + const themeConfigPath = `${__dirname}/theme/theme.config`; + config.resolve.alias['../../theme.config$'] = themeConfigPath; + config.resolve.alias['../../theme.config'] = themeConfigPath; + + return config; +}; + +module.exports = { + plugins, + modify, +}; diff --git a/src/actions/index.js b/src/actions/index.js new file mode 100644 index 0000000..88c9e07 --- /dev/null +++ b/src/actions/index.js @@ -0,0 +1,113 @@ +import { + GET_FRONTPAGESLIDES, + // SET_FOLDER_HEADER, + GET_DEFAULT_HEADER_IMAGE, + SET_FOLDER_TABS, + GET_PARENT_FOLDER_DATA, + GET_LOCALNAVIGATION, + GET_CHART_DATA_FROM_VISUALIZATION, + GET_NAVSITEMAP, + SET_CURRENT_VERSION, +} from '~/constants/ActionTypes'; + +export function setCurrentVersion(payload) { + return { + type: SET_CURRENT_VERSION, + payload: payload, + }; +} + +export function getFrontpageSlides() { + return { + type: GET_FRONTPAGESLIDES, + request: { + op: 'get', + path: `/frontpage_slides?fullobjects`, + }, + }; +} + +export function getDefaultHeaderImage() { + return { + type: GET_DEFAULT_HEADER_IMAGE, + request: { + op: 'get', + path: `/default_header_image?fullobjects`, + }, + }; +} + +export function getLocalnavigation(folder) { + return { + type: GET_LOCALNAVIGATION, + request: { + op: 'get', + path: `${folder}/@localnavigation`, + }, + }; +} + +// export function setFolderHeader(payload) { +// const actualPayload = {}; +// for (const key in payload) { +// if (payload[key] !== null && payload[key] !== undefined) { +// actualPayload[key] = payload[key]; +// } +// } + +// if (Object.keys(actualPayload)) { +// return { +// type: SET_FOLDER_HEADER, +// payload: actualPayload, +// }; +// } +// return; +// } + +export function setFolderTabs(payload) { + return { + type: SET_FOLDER_TABS, + payload: payload, + }; +} + +export function getParentFolderData(url) { + return { + type: GET_PARENT_FOLDER_DATA, + request: { + op: 'get', + path: `/${url}?fullobjects`, + }, + }; +} + +// export function getDataProviders() { +// return { +// type: GET_DATA_PROVIDERS, +// request: { +// op: 'get', +// path: `/@mosaic-settings`, +// }, +// }; +// } + +export function getChartDataFromVisualization(path) { + return { + type: GET_CHART_DATA_FROM_VISUALIZATION, + request: { + op: 'get', + path, + }, + }; +} + +export function getNavSiteMap(url, depth) { + // Note: Depth can't be 0 in plone.restapi + return { + type: GET_NAVSITEMAP, + request: { + op: 'get', + path: `${url}/@navigation?expand.navigation.depth=${depth || 3}`, + }, + }; +} diff --git a/src/components/index.js b/src/components/index.js new file mode 100644 index 0000000..04a1ff3 --- /dev/null +++ b/src/components/index.js @@ -0,0 +1,11 @@ +/** + * Add your components here. + * @module components + * @example + * import Footer from './Footer/Footer'; + * + * export { + * Footer, + * }; + */ +export CountryView from '~/components/theme/CountryView/CountryView'; diff --git a/src/components/manage/Blocks/NavigationBlock/Edit.jsx b/src/components/manage/Blocks/NavigationBlock/Edit.jsx new file mode 100644 index 0000000..a05b968 --- /dev/null +++ b/src/components/manage/Blocks/NavigationBlock/Edit.jsx @@ -0,0 +1,93 @@ +import React, { useState, useEffect } from 'react'; +import { connect } from 'react-redux'; +import { compose } from 'redux'; +import _uniqueId from 'lodash/uniqueId'; +import RenderFields from '@eeacms/volto-datablocks/Utils/RenderFields'; +import View from './View'; +import config from '@plone/volto/registry'; + +const getSchema = (props) => { + return { + parent: { + title: 'Parent page', + widget: 'object_by_path', + }, + className: { + title: 'Classname', + type: 'text', + }, + navFromParent: { + title: 'Show navigation from parent', + type: 'boolean', + }, + pages: { + title: 'Specific pages', + type: 'schema', + fieldSetTitle: 'specific pages', + fieldSetId: 'specific-pages', + fieldSetSchema: { + fieldsets: [ + { + id: 'default', + title: 'Default', + fields: ['title', 'url'], + }, + ], + properties: { + title: { + title: 'Title', + type: 'text', + }, + url: { + title: 'Url', + widget: 'text', + }, + }, + required: ['title', 'url'], + }, + editFieldset: false, + deleteFieldset: false, + }, + }; +}; + +const Edit = (props) => { + const [state, setState] = useState({ + schema: getSchema({ ...props, providerUrl: config.settings.providerUrl }), + id: _uniqueId('block_'), + }); + useEffect(() => { + setState({ + ...state, + schema: getSchema({ + ...props, + }), + }); + /* eslint-disable-next-line */ + }, [state.item, props.data.components]); + return ( +
+ + +
+
+ ); +}; + +export default compose( + connect((state, props) => ({ + pathname: state.router.location.pathname, + })), +)(Edit); diff --git a/src/components/manage/Blocks/NavigationBlock/View.jsx b/src/components/manage/Blocks/NavigationBlock/View.jsx new file mode 100644 index 0000000..61474c2 --- /dev/null +++ b/src/components/manage/Blocks/NavigationBlock/View.jsx @@ -0,0 +1,131 @@ +/* REACT */ +import React, { useState } from 'react'; +import { useHistory } from 'react-router-dom'; +import { compose } from 'redux'; +import { connect } from 'react-redux'; +/* SEMANTIC UI */ +import { Menu } from 'semantic-ui-react'; +/* HELPERS */ +import cx from 'classnames'; +import { isActive, getNavigationByParent, getBasePath } from './helpers'; +import { + deleteQueryParam, + setQueryParam, +} from '@eeacms/volto-datablocks/actions'; +import { useEffect } from 'react'; + +const View = ({ content, ...props }) => { + const { data } = props; + const [state, setState] = useState({ + activeItem: '', + }); + const [navigationItems, setNavigationItems] = useState([]); + const [pages, setPages] = useState([]); + const parent = + data?.navFromParent?.value && props.properties?.parent + ? getBasePath(props.properties?.parent?.['@id']) + : data.parent?.value; + const history = useHistory(); + + useEffect(() => { + const pagesProperties = data.pages?.value + ? data.pages?.value?.properties || {} + : {}; + const newPages = + Object.keys(pagesProperties).map((page) => pagesProperties[page]) || []; + setPages(newPages); + setNavigationItems([...(props.navigation?.items || []), ...newPages]); + }, [props.navigation, data.pages?.value]); + + if (navigationItems.length < 2 && props.mode !== 'edit') return null; + return (props.navigation?.items?.length && parent) || pages.length ? ( +
+ + {navigationItems.map((item, index) => { + const url = getBasePath(item.url); + const name = item.title; + if ( + props.navigation?.items?.filter( + (navItem) => navItem.title === item.title, + ).length + ) { + if (isActive(url, props.pathname) && url !== state.activeItem) { + setState({ + ...state, + activeItem: url, + }); + } else if ( + !isActive(url, props.pathname) && + url === state.activeItem + ) { + setState({ + ...state, + activeItem: '', + }); + } + } + + return ( + 0 ? 'sibling-on-left' : '', + index < navigationItems.length - 1 ? 'sibling-on-right' : '', + )} + name={name} + key={url} + active={ + state.activeItem + ? state.activeItem === url + : !url + ? isActive(url, props.pathname) + : false + } + onClick={() => { + history.push(`${url}${props.query}`); + }} + /> + ); + })} + +
+ ) : props.mode === 'edit' ? ( +

+ There are no pages inside of selected page. Make sure you add pages or + delete the block +

+ ) : ( + '' + ); +}; + +export default compose( + connect( + (state, props) => ({ + query: state.router.location.search, + content: state.content.data, + pathname: state.router.location.pathname, + discodata_query: state.discodata_query, + discodata_resources: state.discodata_resources, + navItems: state.navigation?.items, + flags: state.flags, + navigation: props.properties?.parent + ? getNavigationByParent( + state.navigation?.items, + props.data?.navFromParent?.value + ? getBasePath(props.properties?.parent?.['@id']) + : props.data?.parent?.value, + ) + : {}, + }), + { deleteQueryParam, setQueryParam }, + ), +)(View); diff --git a/src/components/manage/Blocks/NavigationBlock/helpers.js b/src/components/manage/Blocks/NavigationBlock/helpers.js new file mode 100644 index 0000000..2c924ae --- /dev/null +++ b/src/components/manage/Blocks/NavigationBlock/helpers.js @@ -0,0 +1,92 @@ +/* PLUGINS */ +import { isMatch } from 'lodash'; +/* ROOT */ +import config from '@plone/volto/registry'; +/* PLONE VOLTO */ +import { getBaseUrl } from '@plone/volto/helpers'; + +export const isActive = (url, pathname) => { + return ( + (url === '' && pathname === '/') || + (url !== '' && isMatch(pathname?.split('/'), url?.split('/'))) + ); +}; + +export const getNavigationByParent = (items, parent) => { + if (items && parent !== undefined && typeof parent === 'string') { + const pathnameArray = removeValue(parent.split('/'), ''); + const location = pathnameArray; + const depth = pathnameArray.length; + if (!depth) { + return items; + } + + return deepSearch({ + inputArray: items, + location, + depth, + }); + } + return {}; +}; + +const formatNavUrl = (nav) => { + return nav.map((navItem) => ({ + ...navItem, + url: navItem.url ? getBasePath(navItem.url) : '', + items: navItem.items ? formatNavUrl(navItem.items) : false, + })); +}; + +export const deepSearch = ({ inputArray = [], location, depth, start = 1 }) => { + // if (inputArray[0]?.url?.contains('http')) { + inputArray = formatNavUrl(inputArray); + // } + + for (let index = 0; index < inputArray.length; index++) { + if ( + depth === 1 && + removeValue(inputArray[index].url?.split('/'), '')[start - 1] === + location[start - 1] + ) { + return inputArray[index] || {}; + } + if ( + removeValue(inputArray[index].url?.split('/'), '')[start - 1] === + location[start - 1] + ) { + return deepSearch({ + inputArray: inputArray[index].items, + location, + depth: depth - 1, + start: start + 1, + }); + } + } + + return null; +}; + +export function removeValue(arr) { + if (!arr || arr.length === 0) return []; + let what, + a = arguments, + L = a.length, + ax; + while (L > 1 && arr.length) { + what = a[--L]; + while ((ax = arr.indexOf(what)) !== -1) { + arr.splice(ax, 1); + } + } + return arr; +} + +export function getBasePath(url) { + return ( + url && + getBaseUrl(url) + .replace(config.settings.apiPath, '') + .replace(config.settings.internalApiPath, '') + ); +} diff --git a/src/components/manage/PositionToolbar.jsx b/src/components/manage/PositionToolbar.jsx new file mode 100644 index 0000000..ee57544 --- /dev/null +++ b/src/components/manage/PositionToolbar.jsx @@ -0,0 +1,52 @@ +import React from 'react'; +import { Button } from 'semantic-ui-react'; +import circleLeft from '@plone/volto/icons/circle-left.svg'; +import circleRight from '@plone/volto/icons/circle-right.svg'; +import check from '@plone/volto/icons/check.svg'; +import { Icon } from '@plone/volto/components'; + +function PositionToolbar({ data, onChangeBlock, block }) { + return ( +
+ + + + + +
+ ); +} + +export default PositionToolbar; diff --git a/src/components/manage/Widgets/ObjectListInlineWidget.jsx b/src/components/manage/Widgets/ObjectListInlineWidget.jsx new file mode 100644 index 0000000..2d42a72 --- /dev/null +++ b/src/components/manage/Widgets/ObjectListInlineWidget.jsx @@ -0,0 +1,161 @@ +import { Accordion, Button, Segment, Modal, Grid } from 'semantic-ui-react'; + +import React, { useState } from 'react'; +import { Icon as VoltoIcon, FormFieldWrapper } from '@plone/volto/components'; +import { DragDropList } from '@plone/volto/components'; +import ObjectWidget from './ObjectWidget'; + +import deleteSVG from '@plone/volto/icons/delete.svg'; +import addSVG from '@plone/volto/icons/add.svg'; +import dragSVG from '@plone/volto/icons/drag.svg'; +import pencilSVG from '@plone/volto/icons/pencil.svg'; +import clearSVG from '@plone/volto/icons/clear.svg'; +import { v4 as uuid } from 'uuid'; + +const ObjectListInlineWidget = (props) => { + const [open, setOpen] = useState(false); + const [active, setActive] = useState(null); + const { + id, + schema, + value = [], + onChange, + schemaExtender, + defaultData = {}, + } = props; + + const openModal = (index) => { + setOpen(true); + setActive(index); + }; + + const closeModal = () => { + setOpen(false); + setActive(null); + }; + + return ( + <> + +
+ +
+
+ [o['@id'], o])} + onMoveItem={(result) => { + const { source, destination } = result; + if (!destination) { + return; + } + const first = value[source.index]; + const second = value[destination.index]; + value[destination.index] = first; + value[source.index] = second; + onChange(id, value); + return true; + }} + > + {({ child, childId, index, draginfo }) => { + return ( +
+ + + + + + {`${schema.title} #${index + 1}`} +
+ + +
+
+ {child.title ? ( + + +

{child.title}

+
+
+ ) : ( + '' + )} +
+
+
+ ); + }} +
+ + + + + + { + const newvalue = value.map((v, i) => (i !== active ? v : fv)); + onChange(id, newvalue); + }} + /> + + + + + ); +}; +export default ObjectListInlineWidget; diff --git a/src/components/manage/Widgets/ObjectWidget.jsx b/src/components/manage/Widgets/ObjectWidget.jsx new file mode 100644 index 0000000..e4ea118 --- /dev/null +++ b/src/components/manage/Widgets/ObjectWidget.jsx @@ -0,0 +1,132 @@ +/** + * A generic widget for an object. If multiple + * + */ + +import React from 'react'; +import PropTypes from 'prop-types'; +import { Tab } from 'semantic-ui-react'; + +import Field from '@plone/volto/components/manage/Form/Field'; + +/** + * Renders a field set. Passes some of the values in the schema to the Field + * component used inside. Shows the current value, the errors, the required + * status of the fields inside. + * + * @param {object} data + * @param {number} index + * @param {object} schema + * @param {object} value + * @param {object} errors + * @param {function} onChange + * @param {string} id + */ +const FieldSet = ({ data, index, schema, value, errors, onChange, id }) => { + return data.fields.map((field, idx) => { + const v = schema.properties[field].defaultValue + ? value?.[field] || schema.properties[field].defaultValue + : value?.[field]; + return ( + { + return onChange(id, { ...value, [field]: fieldvalue }); + }} + key={field} + error={errors?.[field]} + title={schema.properties[field].title} + /> + ); + }); +}; + +/** + * + * Provides an automatic form for complex JS objects, based on a schema + * + * Creates an object widget with the given onChange handler and an ID. If there + * are multiple field sets, it renders a Tab component with multiple tab panes. + * Each tab has the title of the fieldset it renders. + * + * @param {object} schema Schema, follows Plone dexterity serialized schema + * @param {object} value Object value, a JS object + * @param {function} onChange Callback for object changed + * @param {object} errors A list errors + * @param {string} id Field id + */ +const ObjectWidget = ({ + schema, + value, // not checked to not contain unknown fields + onChange, + errors = {}, + id, + ...props +}) => { + const createTab = React.useCallback( + (fieldset, index) => { + return { + menuItem: fieldset.title, + render: () => ( + +
+ + ), + }; + }, + [errors, id, onChange, schema, value], + ); + + return schema.fieldsets.length === 1 ? ( + <> +
+ + ) : ( + // lazy loading + ); +}; + +/** + * Property types. + * @property {Object} propTypes Property types. + * @static + */ +ObjectWidget.propTypes = { + id: PropTypes.string.isRequired, + schema: PropTypes.object.isRequired, + errors: PropTypes.object, + value: PropTypes.object, + onChange: PropTypes.func.isRequired, +}; + +/** + * Default properties. + * @property {Object} defaultProps Default properties. + * @static + */ +ObjectWidget.defaultProps = { + value: null, +}; + +export default ObjectWidget; diff --git a/src/components/theme/CatalogueViews/AppFooter.jsx b/src/components/theme/CatalogueViews/AppFooter.jsx new file mode 100644 index 0000000..3fb3b2f --- /dev/null +++ b/src/components/theme/CatalogueViews/AppFooter.jsx @@ -0,0 +1,16 @@ +/** + * App container. + * @module components/theme/App/App + */ + +import React, { Component } from 'react'; + +import { Footer } from '@plone/volto/components'; + +class App extends Component { + render() { + return