';
- echo '
';
- echo '
';
- echo '
';
- echo '';
$title_short = ((strlen((string) $d->title) >= 26) ? substr((string) $d->title,0,20).'...' : $d->title);
$loggedmember = isset($this->model) ? $this->model->getLoggedInMember : $this->loggedInMember;
$edit = ($loggedmember && $loggedmember->Username == $d->user_handle);
- echo '
';
+ $photoTitle = htmlspecialchars((string) $d->title, ENT_QUOTES, 'UTF-8');
+ $photoDesc = htmlspecialchars((string) ($d->description ?? ''), ENT_QUOTES, 'UTF-8');
+ $dataAttrs = $edit
+ ? ' data-photo-id="'.(int)$d->id.'"'
+ .' data-photo-title="'.$photoTitle.'"'
+ .' data-photo-desc="'.$photoDesc.'"'
+ .' data-photo-thumb="gallery/thumbimg?id='.(int)$d->id.'&t=2"'
+ .' data-photo-delete="gallery/show/image/'.(int)$d->id.'/delete"'
+ : '';
+ echo '
';
- echo '
';
}
echo '
';
diff --git a/bun.lock b/bun.lock
index d487c3ff3..0bd4d9a62 100644
--- a/bun.lock
+++ b/bun.lock
@@ -13,7 +13,7 @@
"devDependencies": {
"@babel/core": "^7.29.0",
"@babel/plugin-transform-runtime": "^7.29.0",
- "@babel/preset-env": "^7.29.2",
+ "@babel/preset-env": "^7.29.5",
"@babel/preset-react": "^7.28.5",
"@fontsource/lato": "^5.2.7",
"@fontsource/signika": "^5.2.8",
@@ -40,7 +40,6 @@
"dayjs": "^1.11.20",
"foundation-emails": "^2.5.1",
"gsap": "^3.15.0",
- "imagesloaded": "^4.1.4",
"improved-yarn-audit": "^2.3.3",
"intl-messageformat": "^10.7.18",
"jarallax": "^1.12.8",
@@ -53,14 +52,13 @@
"leaflet.markercluster.webpack": "^1.0.2",
"litepicker": "^2.0.12",
"mark.js": "^8.11.1",
- "masonry-layout": "^4.2.2",
"micromodal": "^0.4.10",
"minimatch": "3.1.3",
"moment": "^2.30.1",
"moment-timezone": "^0.5.48",
"move-js": "^0.5.0",
"path": "^0.12.7",
- "postcss": "^8.5.10",
+ "postcss": "^8.5.14",
"postcss-import": "^15.1.0",
"postcss-loader": "^7.3.4",
"postcss-nesting": "^11.3.0",
@@ -74,7 +72,7 @@
"regenerator-runtime": "^0.13.11",
"respond.js": "^1.4.2",
"sass": "^1.99.0",
- "sass-loader": "^16.0.7",
+ "sass-loader": "^16.0.8",
"scrolling-tabs-bootstrap-5": "^1.1.1",
"scrollmagic": "^2.0.9",
"show-more-read": "tomik23/show-more",
@@ -87,7 +85,7 @@
"vanilla-calendar-pro": "^3.1.0",
"webpack": "^5.106.2",
"webpack-cli": "^5.1.4",
- "workbox-webpack-plugin": "^7.4.0",
+ "workbox-webpack-plugin": "^7.4.1",
},
},
},
@@ -1129,8 +1127,6 @@
"dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="],
- "desandro-matches-selector": ["desandro-matches-selector@2.0.2", "", {}, "sha512-+1q0nXhdzg1IpIJdMKalUwvvskeKnYyEe3shPRwedNcWtnhEKT3ZxvFjzywHDeGcKViIxTCAoOYQWP1qD7VNyg=="],
-
"destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="],
"detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
@@ -1217,8 +1213,6 @@
"etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="],
- "ev-emitter": ["ev-emitter@1.1.1", "", {}, "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q=="],
-
"event-component": ["event-component@0.1.0", "", {}, "sha512-nDko83zL1Sfl4gbYJAsFnyla0Ok+llczIyZ9X+lkCIm5yW/hggS9gbYPxhZW1JD8K5VKaFmgeIZvnGE/DQnh2w=="],
"eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="],
@@ -1253,8 +1247,6 @@
"find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
- "fizzy-ui-utils": ["fizzy-ui-utils@2.0.7", "", { "dependencies": { "desandro-matches-selector": "^2.0.0" } }, "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg=="],
-
"flat": ["flat@5.0.2", "", { "bin": { "flat": "cli.js" } }, "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="],
"follow-redirects": ["follow-redirects@1.16.0", "", {}, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="],
@@ -1295,8 +1287,6 @@
"get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
- "get-size": ["get-size@2.0.3", "", {}, "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q=="],
-
"get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="],
"get-tsconfig": ["get-tsconfig@4.14.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA=="],
@@ -1397,8 +1387,6 @@
"idb": ["idb@7.1.1", "", {}, "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ=="],
- "imagesloaded": ["imagesloaded@4.1.4", "", { "dependencies": { "ev-emitter": "^1.0.0" } }, "sha512-ltiBVcYpc/TYTF5nolkMNsnREHW+ICvfQ3Yla2Sgr71YFwQ86bDwV9hgpFhFtrGPuwEx5+LqOHIrdXBdoWwwsA=="],
-
"immutable": ["immutable@5.1.5", "", {}, "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A=="],
"import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
@@ -1625,8 +1613,6 @@
"markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="],
- "masonry-layout": ["masonry-layout@4.2.2", "", { "dependencies": { "get-size": "^2.0.2", "outlayer": "^2.1.0" } }, "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA=="],
-
"math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
"mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="],
@@ -1793,8 +1779,6 @@
"open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="],
- "outlayer": ["outlayer@2.1.1", "", { "dependencies": { "ev-emitter": "^1.0.0", "fizzy-ui-utils": "^2.0.0", "get-size": "^2.0.2" } }, "sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw=="],
-
"own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="],
"p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
diff --git a/package.json b/package.json
index afba52b76..3b4368d7b 100644
--- a/package.json
+++ b/package.json
@@ -40,7 +40,6 @@
"dayjs": "^1.11.20",
"foundation-emails": "^2.5.1",
"gsap": "^3.15.0",
- "imagesloaded": "^4.1.4",
"improved-yarn-audit": "^2.3.3",
"intl-messageformat": "^10.7.18",
"jarallax": "^1.12.8",
@@ -53,7 +52,6 @@
"leaflet.markercluster.webpack": "^1.0.2",
"litepicker": "^2.0.12",
"mark.js": "^8.11.1",
- "masonry-layout": "^4.2.2",
"micromodal": "^0.4.10",
"minimatch": "3.1.3",
"moment": "^2.30.1",
diff --git a/src/Controller/GalleryController.php b/src/Controller/GalleryController.php
index a471d6925..cf48d82bd 100644
--- a/src/Controller/GalleryController.php
+++ b/src/Controller/GalleryController.php
@@ -8,7 +8,6 @@
use App\Entity\UploadedImage;
use App\Form\CustomDataClass\GalleryImageEditRequest;
use App\Form\GalleryEditImageFormType;
-use App\Form\GalleryUploadForm;
use App\Logger\Logger;
use App\Model\GalleryModel;
use App\Utilities\TranslatedFlashTrait;
@@ -53,7 +52,7 @@ public function editImage(Request $request, GalleryImage $image): Response
{
$user = $this->getUser();
if ($user !== $image->getOwner()) {
- $this->createAccessDeniedException('Not your image!');
+ throw $this->createAccessDeniedException('Not your image!');
}
$editImageRequest = new GalleryImageEditRequest($image);
@@ -198,39 +197,9 @@ public function handleImageUploadToGallery(Request $request, ValidatorInterface
* @return Response
*/
#[Route(path: '/gallery/upload_multiple', name: 'gallery_upload_multiple')]
- public function uploadImagesToGallery(Request $request)
+ public function uploadImagesToGallery(): Response
{
- /** @var Member $member */
- $member = $this->getUser();
-
- $galleryRepository = $this->entityManager->getRepository(Gallery::class);
- $galleries = $galleryRepository->findBy(['owner' => $member]);
-
- $albumTitles = [];
- if ($galleries) {
- $albumTitles[0] = '';
- foreach ($galleries as $gallery) {
- $albumTitles[$gallery->getId()] = $gallery->getTitle();
- }
- }
- $uploadImageForm = $this->createForm(GalleryUploadForm::class, null, ['albums' => $albumTitles]);
- $uploadImageForm->handleRequest($request);
- if ($uploadImageForm->isSubmitted() && $uploadImageForm->isValid()) {
- // if this is called someone tries to hack the system as the Javascript on the upload page
- // takes care of uploading the files so we return a 403 error
- return new Response(403);
- }
-
- return $this->render('gallery/upload.image.html.twig', [
- 'form' => $uploadImageForm->createView(),
- 'submenu' => [
- 'active' => 'upload',
- 'items' => $this->getSubmenuItems(),
- ],
- 'constraints' => [
- 'size' => $this->getMaxUploadSizeInMegaBytes(),
- ],
- ]);
+ return $this->redirectToRoute('gallery_manage', [], 301);
}
/**
@@ -348,32 +317,4 @@ public function showUploadedImage(UploadedImage $image, string $fileInfo): Binar
return $response;
}
- /**
- * @return array
- */
- private function getSubmenuItems()
- {
- $member = $this->getUser();
- $submenuItems = [
- 'manage' => [
- 'key' => 'GalleryManage',
- 'url' => $this->generateUrl('gallery_manage'),
- ],
- 'upload' => [
- 'key' => 'GalleryUpload',
- 'url' => $this->generateUrl('gallery_upload_multiple'),
- ],
- 'albums' => [
- 'key' => 'GalleryTitleSets',
- 'url' => $this->generateUrl('gallery_show_user_albums', ['username' => $member->getUsername()]),
- ],
- ];
-
- return $submenuItems;
- }
-
- private function getMaxUploadSizeInMegaBytes()
- {
- return UploadedFile::getMaxFilesize() / 1024 / 1024;
- }
}
diff --git a/src/Controller/ProfileController.php b/src/Controller/ProfileController.php
index 8f4066a21..89369bcd7 100644
--- a/src/Controller/ProfileController.php
+++ b/src/Controller/ProfileController.php
@@ -164,13 +164,13 @@ public function setLocation(
$address = $member->getActiveAddress();
- $setLocationForm = $this->createForm(SetLocationType::class, [
+ $setLocationForm = $this->createForm(SetLocationType::class, $address ? [
'fullname' => $address->getLocation()->getFullname(),
'name' => $address->getLocation()->getName(),
'geoname_id' => $address->getLocation()->getGeonameId(),
'latitude' => $address->getLatitude(),
'longitude' => $address->getLongitude(),
- ]);
+ ] : []);
$setLocationForm->handleRequest($request);
if ($setLocationForm->isSubmitted() && $setLocationForm->isValid()) {
@@ -180,6 +180,11 @@ public function setLocation(
/** @var Location $location */
$location = $locationRepository->find($data['geoname_id']);
if (null !== $location) {
+ if (!$address) {
+ $address = new \App\Entity\Address();
+ $address->setMember($member);
+ $address->setActive(true);
+ }
$address->setLocation($location);
$address->setLatitude($data['latitude']);
$address->setLongitude($data['longitude']);
@@ -667,7 +672,7 @@ private function renderProfile(Member $member, Member $loggedInMember, ?string $
$template = $editMode ? 'profile/edit.html.twig' : 'profile/show.html.twig';
- return $this->render($template, [
+ $params = [
'member' => $member,
'comments' => $comments,
'comments_count' => $commentCounts,
@@ -678,7 +683,11 @@ private function renderProfile(Member $member, Member $loggedInMember, ?string $
'status_form' => $this->profileModel->getStatusForm($loggedInMember, $member),
'globals_js_json' => $this->globals->getGlobalsJsAsJson($loggedInMember, $member),
'submenu' => $this->profileSubmenu->getSubmenu($loggedInMember, $member),
- ]);
+ ];
+
+ $params['hide_sidebar'] = true;
+
+ return $this->render($template, $params);
}
private function getSectionForm(?string $section, Member $member, string $language): ?FormInterface
diff --git a/src/Form/AboutMeFormType.php b/src/Form/AboutMeFormType.php
index 55b242699..2e26e85e6 100644
--- a/src/Form/AboutMeFormType.php
+++ b/src/Form/AboutMeFormType.php
@@ -4,30 +4,31 @@
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
+use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
class AboutMeFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
+ $textareaOptions = [
+ 'required' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 6],
+ ];
+
$builder
- ->add('about_me', CkEditorType::class, [
+ ->add('about_me', TextareaType::class, $textareaOptions + [
'label' => 'profile.about.me',
'help' => 'help.about.me',
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'required' => false,
])
- ->add('occupation', CkEditorType::class, [
+ ->add('occupation', TextareaType::class, $textareaOptions + [
'label' => 'profile.occupation',
'help' => 'help.occupation',
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'required' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 2],
])
- ->add('offer_hosts', CkEditorType::class, [
+ ->add('offer_hosts', TextareaType::class, $textareaOptions + [
'label' => 'profile.offer.hosts',
'help' => 'help.offer.hosts',
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'required' => false,
])
->add('language', HiddenType::class)
;
diff --git a/src/Form/AccommodationFormType.php b/src/Form/AccommodationFormType.php
index 8c34e4d4e..819edc547 100644
--- a/src/Form/AccommodationFormType.php
+++ b/src/Form/AccommodationFormType.php
@@ -11,6 +11,7 @@
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\RangeType;
+use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints\NotNull;
@@ -77,69 +78,53 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
'label' => 'profile.wheelchair.accessible',
'help' => 'help.profile.wheelchair.accessible',
])
- ->add('length_of_stay', CkEditorType::class, [
+ ->add('length_of_stay', TextareaType::class, [
'label' => 'profile.max.length.of.stay',
'help' => 'help.profile.length.of.stay',
- 'async' => true,
'required' => false,
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'image_upload' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 3],
])
- ->add('i_live_with', CkEditorType::class, [
+ ->add('i_live_with', TextareaType::class, [
'label' => 'profile.i.live.with',
'help' => 'help.profile.i.live.with',
- 'async' => true,
'required' => false,
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'image_upload' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 3],
])
- ->add('please_bring', CkEditorType::class, [
+ ->add('please_bring', TextareaType::class, [
'label' => 'profile.please.bring',
'help' => 'help.profile.please.bring',
- 'async' => true,
'required' => false,
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'image_upload' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 3],
])
- ->add('where_you_sleep', CkEditorType::class, [
+ ->add('where_you_sleep', TextareaType::class, [
'label' => 'profile.where.you.sleep',
'help' => 'help.profile.where.you.sleep',
- 'async' => true,
'required' => false,
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'image_upload' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 4],
])
- ->add('offer_guests', CkEditorType::class, [
+ ->add('offer_guests', TextareaType::class, [
'label' => 'profile.offer.guests',
'help' => 'help.profile.offer.guests',
- 'async' => true,
'required' => false,
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'image_upload' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 4],
])
- ->add('additional_info', CkEditorType::class, [
+ ->add('additional_info', TextareaType::class, [
'label' => 'profile.additional.information.for.guests',
'help' => 'help.profile.additional.information.for.guests',
- 'async' => true,
'required' => false,
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'image_upload' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 4],
])
- ->add('getting_there', CkEditorType::class, [
+ ->add('getting_there', TextareaType::class, [
'label' => 'profile.getting.there',
'help' => 'help.profile.getting.there',
- 'async' => true,
'required' => false,
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'image_upload' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 4],
])
- ->add('house_rules', CkEditorType::class, [
+ ->add('house_rules', TextareaType::class, [
'label' => 'profile.house.rules',
'help' => 'help.profile.house.rules',
- 'async' => true,
'required' => false,
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'image_upload' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 4],
])
->add('language', HiddenType::class)
;
diff --git a/src/Form/AccountEditFormType.php b/src/Form/AccountEditFormType.php
index 0e2bb066f..deed6d920 100644
--- a/src/Form/AccountEditFormType.php
+++ b/src/Form/AccountEditFormType.php
@@ -23,6 +23,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
->add('name', TextType::class, [
'label' => 'label.name',
'attr' => [
+ 'class' => 'o-input',
'placeholder' => 'placeholder.name',
],
'help' => 'help.name',
@@ -38,6 +39,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
->add('short_name', TextType::class, [
'label' => 'label.shortname',
'attr' => [
+ 'class' => 'o-input',
'placeholder' => 'placeholder.shortname',
],
'help' => 'help.shortname',
@@ -84,6 +86,9 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
])
->add('email', EmailType::class, [
'label' => 'label.email.change',
+ 'attr' => [
+ 'class' => 'o-input',
+ ],
'help' => 'help.email.change',
'required' => false,
'constraints' => [
diff --git a/src/Form/GalleryEditImageFormType.php b/src/Form/GalleryEditImageFormType.php
index 89d3202b1..5d078d5ea 100644
--- a/src/Form/GalleryEditImageFormType.php
+++ b/src/Form/GalleryEditImageFormType.php
@@ -5,6 +5,7 @@
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
+use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
@@ -20,16 +21,26 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
'label' => 'label.gallery.title',
'attr' => [
'placeholder' => 'placeholder.gallery.title',
+ 'class' => 'p-gallery-edit__title-input',
+ 'autocomplete' => 'off',
],
])
- ->add('description', TextType::class, [
+ ->add('description', TextareaType::class, [
'label' => 'label.gallery.description',
+ 'required' => true,
'attr' => [
'placeholder' => 'placeholder.gallery.description',
+ 'rows' => 6,
+ 'class' => 'p-gallery-edit__textarea',
],
])
->add('id', HiddenType::class)
- ->add('submit', SubmitType::class)
+ ->add('submit', SubmitType::class, [
+ 'label' => 'gallery.image.edit.save',
+ 'attr' => [
+ 'class' => 'o-button o-button--l p-gallery-edit__submit',
+ ],
+ ])
;
}
}
diff --git a/src/Form/MyInterestsFormType.php b/src/Form/MyInterestsFormType.php
index c2000d820..8484a8cc5 100644
--- a/src/Form/MyInterestsFormType.php
+++ b/src/Form/MyInterestsFormType.php
@@ -4,47 +4,38 @@
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
+use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
class MyInterestsFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
+ $textareaOptions = [
+ 'required' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 4],
+ ];
+
$builder
- ->add('hobbies', CkEditorType::class, [
+ ->add('hobbies', TextareaType::class, $textareaOptions + [
'label' => 'profile.hobbies',
'help' => 'help.profile.hobbies',
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'required' => false,
- 'image_upload' => false,
])
- ->add('books', CkEditorType::class, [
+ ->add('books', TextareaType::class, $textareaOptions + [
'label' => 'profile.books',
'help' => 'help.profile.books',
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'required' => false,
- 'image_upload' => false,
])
- ->add('music', CkEditorType::class, [
+ ->add('music', TextareaType::class, $textareaOptions + [
'label' => 'profile.music',
'help' => 'help.profile.music',
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'required' => false,
- 'image_upload' => false,
])
- ->add('movies', CkEditorType::class, [
+ ->add('movies', TextareaType::class, $textareaOptions + [
'label' => 'profile.movies',
'help' => 'help.profile.movies',
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'required' => false,
- 'image_upload' => false,
])
- ->add('organizations', CkEditorType::class, [
+ ->add('organizations', TextareaType::class, $textareaOptions + [
'label' => 'profile.organizations',
'help' => 'help.profile.organizations',
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'required' => false,
- 'image_upload' => false,
])
->add('language', HiddenType::class)
;
diff --git a/src/Form/SignupFormFinalizeType.php b/src/Form/SignupFormFinalizeType.php
index 435bd32b8..9979ca129 100644
--- a/src/Form/SignupFormFinalizeType.php
+++ b/src/Form/SignupFormFinalizeType.php
@@ -133,7 +133,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
'min' => 0,
'max' => 10,
],
- 'data' => 0,
+ 'data' => 5,
])
->add('newsletters', CheckboxType::class, [
'label' => 'signup.label.newsletters',
diff --git a/src/Form/TravelExperiencesFormType.php b/src/Form/TravelExperiencesFormType.php
index 00e5866f7..0dcec297d 100644
--- a/src/Form/TravelExperiencesFormType.php
+++ b/src/Form/TravelExperiencesFormType.php
@@ -4,26 +4,26 @@
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
+use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
class TravelExperiencesFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
+ $textareaOptions = [
+ 'required' => false,
+ 'attr' => ['class' => 'o-input', 'rows' => 6],
+ ];
+
$builder
- ->add('past', CkEditorType::class, [
+ ->add('past', TextareaType::class, $textareaOptions + [
'label' => 'profile.past.trips',
'help' => 'help.profile.past.trips',
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'required' => false,
- 'image_upload' => false,
])
- ->add('planned', CkEditorType::class, [
+ ->add('planned', TextareaType::class, $textareaOptions + [
'label' => 'profile.planned.trips',
'help' => 'help.profile.planned.trips',
- 'editor_type' => CkEditorType::EDITOR_TYPE_INLINE,
- 'required' => false,
- 'image_upload' => false,
])
->add('language', HiddenType::class)
;
diff --git a/templates/base-lite.html.twig b/templates/base-lite.html.twig
index 929e14357..780960872 100644
--- a/templates/base-lite.html.twig
+++ b/templates/base-lite.html.twig
@@ -30,17 +30,8 @@
-
-
+ {% include 'loginbar.html.twig' with { slim_nav: true } %}
+
{% for label, messages in app.flashes %}
@@ -55,9 +46,11 @@
{% endfor %}
+ {% endblock main_content %}
{% include 'footer.html.twig' %}
{{ encore_entry_script_tags('bewelcome') }}
diff --git a/templates/base.html.twig b/templates/base.html.twig
index 6bdb31495..6a7cb9d62 100644
--- a/templates/base.html.twig
+++ b/templates/base.html.twig
@@ -39,22 +39,46 @@
{% set sidebar = (submenu is defined) %}
{% include 'menu.html.twig' %}
+