diff --git a/backend/app/Controllers/ElementController.php b/backend/app/Controllers/ElementController.php index 1c346c6..fc03d9e 100644 --- a/backend/app/Controllers/ElementController.php +++ b/backend/app/Controllers/ElementController.php @@ -46,7 +46,6 @@ class ElementController 'id' => $element->getId(), 'title' => $element->getTitle(), 'description' => $element->getDescription(), - 'iconImageUrl' => $element->getIconImageUrl(), 'richText' => $element->getRichText(), 'pdfPath' => $element->getPdfPath(), 'youtubeUrl' => $element->getYoutubeUrl(), diff --git a/backend/app/Element/CreateElementDto.php b/backend/app/Element/CreateElementDto.php index b5a9b7f..cd8bec2 100644 --- a/backend/app/Element/CreateElementDto.php +++ b/backend/app/Element/CreateElementDto.php @@ -10,7 +10,6 @@ class CreateElementDto public Set $set, public string $title, public string $description, - public ?string $iconImageUrl, public string $richText, public ?string $pdfPath, public ?string $youtubeUrl, diff --git a/backend/app/Element/Element.php b/backend/app/Element/Element.php index 41fec0d..f747d12 100644 --- a/backend/app/Element/Element.php +++ b/backend/app/Element/Element.php @@ -10,7 +10,6 @@ class Element private int $id, private string $title, private string $description, - private ?string $iconImageUrl, private string $richText, private ?string $pdfPath, private ?string $youtubeUrl, @@ -34,11 +33,6 @@ class Element return $this->description; } - public function getIconImageUrl(): ?string - { - return $this->iconImageUrl; - } - public function getRichText(): string { return $this->richText; diff --git a/backend/app/Element/ElementModel.php b/backend/app/Element/ElementModel.php index a71eb37..b246351 100644 --- a/backend/app/Element/ElementModel.php +++ b/backend/app/Element/ElementModel.php @@ -10,7 +10,6 @@ use Illuminate\Database\Eloquent\Model; * @property int $set_id * @property string $title * @property string $description - * @property string|null $icon_image_url * @property string $rich_text * @property string|null $pdf_path * @property string|null $youtube_url @@ -24,7 +23,6 @@ use Illuminate\Database\Eloquent\Model; * @method static Builder|ElementModel whereSetId($value) * @method static Builder|ElementModel whereTitle($value) * @method static Builder|ElementModel whereDescription($value) - * @method static Builder|ElementModel whereIconImageUrl($value) * @method static Builder|ElementModel whereRichText($value) * @method static Builder|ElementModel wherePdfPath($value) * @method static Builder|ElementModel whereYoutubeUrl($value) @@ -41,7 +39,6 @@ class ElementModel extends Model 'set_id', 'title', 'description', - 'icon_image_url', 'rich_text', 'pdf_path', 'youtube_url', diff --git a/backend/app/Element/EloquentElementRepository.php b/backend/app/Element/EloquentElementRepository.php index b8c06d7..a957880 100644 --- a/backend/app/Element/EloquentElementRepository.php +++ b/backend/app/Element/EloquentElementRepository.php @@ -18,7 +18,6 @@ class EloquentElementRepository implements ElementRepository 'set_id' => $dto->set->getId(), 'title' => $dto->title, 'description' => $dto->description, - 'icon_image_url' => $dto->iconImageUrl, 'rich_text' => $dto->richText, 'pdf_path' => $dto->pdfPath, 'youtube_url' => $dto->youtubeUrl, @@ -29,7 +28,6 @@ class EloquentElementRepository implements ElementRepository id: $model->id, title: $dto->title, description: $dto->description, - iconImageUrl: $dto->iconImageUrl, richText: $dto->richText, pdfPath: $dto->pdfPath, youtubeUrl: $dto->youtubeUrl, @@ -113,7 +111,6 @@ class EloquentElementRepository implements ElementRepository id: $model->id, title: $model->title, description: $model->description, - iconImageUrl: $model->icon_image_url, richText: $model->rich_text, pdfPath: $model->pdf_path, youtubeUrl: $model->youtube_url, diff --git a/backend/app/Element/UseCases/CreateElement/CreateElement.php b/backend/app/Element/UseCases/CreateElement/CreateElement.php index e91a0ac..c0a8661 100644 --- a/backend/app/Element/UseCases/CreateElement/CreateElement.php +++ b/backend/app/Element/UseCases/CreateElement/CreateElement.php @@ -31,9 +31,6 @@ class CreateElement throw new BadRequestException('title is required'); } $description = $request->description ?? ''; - $iconImageUrl = $request->iconImageUrl === '' - ? null - : $request->iconImageUrl; $richText = $request->richText ?? ''; $pdfPath = $request->pdfPath === '' ? null : $request->pdfPath; $youtubeUrl = $request->youtubeUrl === '' @@ -54,7 +51,6 @@ class CreateElement set: $set, title: $request->title, description: $description, - iconImageUrl: $iconImageUrl, richText: $richText, pdfPath: $pdfPath, youtubeUrl: $youtubeUrl, @@ -80,7 +76,6 @@ class CreateElement set: $set, title: $request->title, description: $description, - iconImageUrl: $iconImageUrl, richText: $richText, pdfPath: $pdfPath, youtubeUrl: $youtubeUrl, diff --git a/backend/app/Element/UseCases/CreateElement/CreateElementRequest.php b/backend/app/Element/UseCases/CreateElement/CreateElementRequest.php index ef689cc..1738838 100644 --- a/backend/app/Element/UseCases/CreateElement/CreateElementRequest.php +++ b/backend/app/Element/UseCases/CreateElement/CreateElementRequest.php @@ -8,7 +8,6 @@ class CreateElementRequest public ?int $setId, public ?string $title, public ?string $description, - public ?string $iconImageUrl, public ?string $richText, public ?string $pdfPath, public ?string $youtubeUrl, diff --git a/backend/database/migrations/2026_05_24_000001_elements_table.php b/backend/database/migrations/2026_05_24_000001_elements_table.php index a93709d..90f708c 100644 --- a/backend/database/migrations/2026_05_24_000001_elements_table.php +++ b/backend/database/migrations/2026_05_24_000001_elements_table.php @@ -13,7 +13,6 @@ return new class extends Migration $table->foreignId('set_id')->constrained('sets'); $table->string('title'); $table->text('description')->default(''); - $table->string('icon_image_url')->nullable(); $table->text('rich_text')->default(''); $table->string('pdf_path')->nullable(); $table->string('youtube_url')->nullable(); diff --git a/backend/database/seeders/ElementSeeder.php b/backend/database/seeders/ElementSeeder.php index 776d842..af7ff09 100644 --- a/backend/database/seeders/ElementSeeder.php +++ b/backend/database/seeders/ElementSeeder.php @@ -18,7 +18,6 @@ class ElementSeeder extends Seeder set: $baderechSet, title: $baderechSet->getName(), description: $baderechSet->getDescription(), - iconImageUrl: '/assets/baderech-haavodah-icon.png', richText: '

Begin with a clear map for avodah growth.

' . '

Move steadily from awareness ' . 'to practice.

', @@ -32,7 +31,6 @@ class ElementSeeder extends Seeder title: 'Avodah Foundations', description: 'Core foundations for building a steady ' . 'avodah practice.', - iconImageUrl: null, richText: '

Avodah foundations begin with honest awareness ' . 'and small repeatable steps.

', pdfPath: null, @@ -43,7 +41,6 @@ class ElementSeeder extends Seeder set: $baderechSet, title: 'Daily Practice', description: 'Practical steps for consistent daily growth.', - iconImageUrl: null, richText: '

Daily practice turns inspiration into a ' . 'dependable rhythm.

', pdfPath: null, diff --git a/backend/tests/Fakes/FakeElementRepository.php b/backend/tests/Fakes/FakeElementRepository.php index 132a526..a877d8b 100644 --- a/backend/tests/Fakes/FakeElementRepository.php +++ b/backend/tests/Fakes/FakeElementRepository.php @@ -21,7 +21,6 @@ class FakeElementRepository implements ElementRepository id: $id, title: $dto->title, description: $dto->description, - iconImageUrl: $dto->iconImageUrl, richText: $dto->richText, pdfPath: $dto->pdfPath, youtubeUrl: $dto->youtubeUrl, @@ -101,7 +100,6 @@ class FakeElementRepository implements ElementRepository id: $element->getId(), title: $element->getTitle(), description: $element->getDescription(), - iconImageUrl: $element->getIconImageUrl(), richText: $element->getRichText(), pdfPath: $element->getPdfPath(), youtubeUrl: $element->getYoutubeUrl(), diff --git a/backend/tests/Feature/ElementsEndpointTest.php b/backend/tests/Feature/ElementsEndpointTest.php index 33725c8..32b9f21 100644 --- a/backend/tests/Feature/ElementsEndpointTest.php +++ b/backend/tests/Feature/ElementsEndpointTest.php @@ -28,7 +28,6 @@ class ElementsEndpointTest extends TestCase set: $set, title: 'Baderech HaAvodah', description: 'A structured path for growth', - iconImageUrl: '/assets/baderech-haavodah-icon.png', richText: '

A structured path for growth

', pdfPath: '/assets/pdfs/baderech.pdf', youtubeUrl: $sampleYoutubeUrl, @@ -38,7 +37,6 @@ class ElementsEndpointTest extends TestCase set: $set, title: 'Avodah Foundations', description: 'Foundations for steady avodah', - iconImageUrl: null, richText: '

Foundations rich text

', pdfPath: '/assets/pdfs/foundations.pdf', youtubeUrl: null, @@ -48,7 +46,6 @@ class ElementsEndpointTest extends TestCase set: $set, title: 'Daily Practice', description: 'Daily practices for growth', - iconImageUrl: null, richText: '

Daily practice rich text

', pdfPath: null, youtubeUrl: null, @@ -75,7 +72,6 @@ class ElementsEndpointTest extends TestCase 'id' => $element->getId(), 'title' => 'Baderech HaAvodah', 'description' => 'A structured path for growth', - 'iconImageUrl' => '/assets/baderech-haavodah-icon.png', 'richText' => '

A structured path for growth

', 'pdfPath' => '/assets/pdfs/baderech.pdf', 'youtubeUrl' => $sampleYoutubeUrl, diff --git a/backend/tests/Feature/SetsEndpointTest.php b/backend/tests/Feature/SetsEndpointTest.php index c7c67c4..e5cfdad 100644 --- a/backend/tests/Feature/SetsEndpointTest.php +++ b/backend/tests/Feature/SetsEndpointTest.php @@ -32,7 +32,6 @@ class SetsEndpointTest extends TestCase set: $baderechSet, title: $baderechSet->getName(), description: $baderechSet->getDescription(), - iconImageUrl: null, richText: '', pdfPath: null, youtubeUrl: null, diff --git a/backend/tests/Unit/Controllers/ElementControllerTest.php b/backend/tests/Unit/Controllers/ElementControllerTest.php index d06c0f7..95ba6f5 100644 --- a/backend/tests/Unit/Controllers/ElementControllerTest.php +++ b/backend/tests/Unit/Controllers/ElementControllerTest.php @@ -30,7 +30,6 @@ class ElementControllerTest extends TestCase $set, 'Baderech HaAvodah', 'A structured path for growth', - '/assets/baderech-icon.png', '

A structured path for growth

', '/assets/pdfs/baderech.pdf', 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', @@ -40,7 +39,6 @@ class ElementControllerTest extends TestCase $set, 'Avodah Foundations', 'Foundations for steady avodah', - null, '

Foundations rich text

', '/assets/pdfs/foundations.pdf', null, @@ -50,7 +48,6 @@ class ElementControllerTest extends TestCase $set, 'Daily Practice', 'Daily practices for growth', - null, '

Daily practice rich text

', null, null, @@ -71,10 +68,6 @@ class ElementControllerTest extends TestCase '

A structured path for growth

', $body['element']['richText'], ); - $this->assertSame( - '/assets/baderech-icon.png', - $body['element']['iconImageUrl'], - ); $this->assertSame( '/assets/pdfs/baderech.pdf', $body['element']['pdfPath'], @@ -133,7 +126,6 @@ class ElementControllerTest extends TestCase DomainSet $set, string $title, string $description, - ?string $iconImageUrl, string $richText, ?string $pdfPath, ?string $youtubeUrl, @@ -143,7 +135,6 @@ class ElementControllerTest extends TestCase set: $set, title: $title, description: $description, - iconImageUrl: $iconImageUrl, richText: $richText, pdfPath: $pdfPath, youtubeUrl: $youtubeUrl, diff --git a/backend/tests/Unit/Element/ElementTest.php b/backend/tests/Unit/Element/ElementTest.php index 16c08a7..7d0bcf2 100644 --- a/backend/tests/Unit/Element/ElementTest.php +++ b/backend/tests/Unit/Element/ElementTest.php @@ -20,7 +20,6 @@ class ElementTest extends TestCase id: 1, title: 'Root', description: 'Root description', - iconImageUrl: null, richText: '

Root rich text

', pdfPath: null, youtubeUrl: null, @@ -31,7 +30,6 @@ class ElementTest extends TestCase id: 2, title: 'Child', description: 'Child description', - iconImageUrl: '/assets/child-icon.svg', richText: '

Child rich text

', pdfPath: '/assets/pdfs/child.pdf', youtubeUrl: 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', @@ -45,10 +43,6 @@ class ElementTest extends TestCase 'Child description', $childElement->getDescription(), ); - $this->assertSame( - '/assets/child-icon.svg', - $childElement->getIconImageUrl(), - ); $this->assertSame( '

Child rich text

', $childElement->getRichText(), @@ -63,7 +57,6 @@ class ElementTest extends TestCase ); $this->assertSame($set, $childElement->getSet()); $this->assertSame($rootElement, $childElement->getParentElement()); - $this->assertNull($rootElement->getIconImageUrl()); $this->assertNull($rootElement->getPdfPath()); $this->assertNull($rootElement->getYoutubeUrl()); $this->assertNull($rootElement->getParentElement()); diff --git a/backend/tests/Unit/Element/UseCases/CreateElementTest.php b/backend/tests/Unit/Element/UseCases/CreateElementTest.php index 09ad0d8..05e7d66 100644 --- a/backend/tests/Unit/Element/UseCases/CreateElementTest.php +++ b/backend/tests/Unit/Element/UseCases/CreateElementTest.php @@ -48,7 +48,6 @@ class CreateElementTest extends TestCase setId: $set->getId(), title: 'Root', description: 'Root description', - iconImageUrl: '/assets/root-icon.svg', richText: '

Root rich text

', pdfPath: '/assets/pdfs/root.pdf', youtubeUrl: 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', @@ -58,10 +57,6 @@ class CreateElementTest extends TestCase $this->assertInstanceOf(Element::class, $element); $this->assertSame('Root', $element->getTitle()); $this->assertSame('Root description', $element->getDescription()); - $this->assertSame( - '/assets/root-icon.svg', - $element->getIconImageUrl(), - ); $this->assertSame('

Root rich text

', $element->getRichText()); $this->assertSame('/assets/pdfs/root.pdf', $element->getPdfPath()); $this->assertSame( @@ -80,7 +75,6 @@ class CreateElementTest extends TestCase setId: $set->getId(), title: 'Root', description: 'Root description', - iconImageUrl: null, richText: '

Root rich text

', pdfPath: null, youtubeUrl: null, @@ -93,7 +87,6 @@ class CreateElementTest extends TestCase setId: $set->getId(), title: 'Child', description: 'Child description', - iconImageUrl: '/assets/child-icon.svg', richText: '

Child rich text

', pdfPath: '/assets/pdfs/child.pdf', youtubeUrl: 'https://youtu.be/yHx-r4p6hHU', @@ -106,10 +99,6 @@ class CreateElementTest extends TestCase 'Child description', $childElement->getDescription(), ); - $this->assertSame( - '/assets/child-icon.svg', - $childElement->getIconImageUrl(), - ); $this->assertSame( '

Child rich text

', $childElement->getRichText(), @@ -136,7 +125,6 @@ class CreateElementTest extends TestCase setId: $set->getId(), title: 'Root', description: null, - iconImageUrl: null, richText: null, pdfPath: null, youtubeUrl: null, @@ -144,30 +132,11 @@ class CreateElementTest extends TestCase )); $this->assertSame('', $element->getDescription()); - $this->assertNull($element->getIconImageUrl()); $this->assertSame('', $element->getRichText()); $this->assertNull($element->getPdfPath()); $this->assertNull($element->getYoutubeUrl()); } - public function testCreatesElementWithNullIconImageUrlWhenBlank(): void - { - $set = $this->createSet('Daily learning'); - - $element = $this->createElement->execute(new CreateElementRequest( - setId: $set->getId(), - title: 'Root', - description: 'Root description', - iconImageUrl: '', - richText: '

Root rich text

', - pdfPath: null, - youtubeUrl: null, - parentElementId: null, - )); - - $this->assertNull($element->getIconImageUrl()); - } - public function testCreatesElementWithNullPdfPathWhenBlank(): void { $set = $this->createSet('Daily learning'); @@ -176,7 +145,6 @@ class CreateElementTest extends TestCase setId: $set->getId(), title: 'Root', description: 'Root description', - iconImageUrl: null, richText: '

Root rich text

', pdfPath: '', youtubeUrl: null, @@ -194,7 +162,6 @@ class CreateElementTest extends TestCase setId: $set->getId(), title: 'Root', description: 'Root description', - iconImageUrl: null, richText: '

Root rich text

', pdfPath: null, youtubeUrl: '', @@ -213,7 +180,6 @@ class CreateElementTest extends TestCase setId: null, title: 'Root', description: 'Root description', - iconImageUrl: null, richText: '

Root rich text

', pdfPath: null, youtubeUrl: null, @@ -230,7 +196,6 @@ class CreateElementTest extends TestCase setId: 1, title: null, description: 'Root description', - iconImageUrl: null, richText: '

Root rich text

', pdfPath: null, youtubeUrl: null, @@ -247,7 +212,6 @@ class CreateElementTest extends TestCase setId: 99, title: 'Root', description: 'Root description', - iconImageUrl: null, richText: '

Root rich text

', pdfPath: null, youtubeUrl: null, @@ -268,7 +232,6 @@ class CreateElementTest extends TestCase setId: $set->getId(), title: 'Child', description: 'Child description', - iconImageUrl: null, richText: '

Child rich text

', pdfPath: null, youtubeUrl: null, @@ -283,7 +246,6 @@ class CreateElementTest extends TestCase setId: $set->getId(), title: 'Root', description: 'Root description', - iconImageUrl: null, richText: '

Root rich text

', pdfPath: null, youtubeUrl: null, @@ -299,7 +261,6 @@ class CreateElementTest extends TestCase setId: $set->getId(), title: 'Another root', description: 'Another root description', - iconImageUrl: null, richText: '

Another root rich text

', pdfPath: null, youtubeUrl: null, @@ -316,7 +277,6 @@ class CreateElementTest extends TestCase setId: $parentSet->getId(), title: 'Parent root', description: 'Parent root description', - iconImageUrl: null, richText: '

Parent root rich text

', pdfPath: null, youtubeUrl: null, @@ -333,7 +293,6 @@ class CreateElementTest extends TestCase setId: $childSet->getId(), title: 'Invalid child', description: 'Invalid child description', - iconImageUrl: null, richText: '

Invalid child rich text

', pdfPath: null, youtubeUrl: null, diff --git a/backend/tests/Unit/Element/UseCases/GetElementTest.php b/backend/tests/Unit/Element/UseCases/GetElementTest.php index ff066de..f175b62 100644 --- a/backend/tests/Unit/Element/UseCases/GetElementTest.php +++ b/backend/tests/Unit/Element/UseCases/GetElementTest.php @@ -31,7 +31,6 @@ class GetElementTest extends TestCase $set, 'Baderech HaAvodah', 'A structured path for growth', - '/assets/baderech-icon.png', '

A structured path for growth

', '/assets/pdfs/baderech.pdf', 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', @@ -50,10 +49,6 @@ class GetElementTest extends TestCase 'A structured path for growth', $foundElement->getDescription(), ); - $this->assertSame( - '/assets/baderech-icon.png', - $foundElement->getIconImageUrl(), - ); $this->assertSame( '

A structured path for growth

', $foundElement->getRichText(), @@ -75,7 +70,6 @@ class GetElementTest extends TestCase $set, 'Baderech HaAvodah', 'A structured path for growth', - null, '

A structured path for growth

', '/assets/pdfs/baderech.pdf', null, @@ -85,7 +79,6 @@ class GetElementTest extends TestCase $set, 'Avodah Foundations', 'Foundations for steady avodah', - null, '

Foundations rich text

', '/assets/pdfs/foundations.pdf', null, @@ -95,7 +88,6 @@ class GetElementTest extends TestCase $set, 'Daily Practice', 'Daily practices for growth', - null, '

Daily practice rich text

', null, null, @@ -105,7 +97,6 @@ class GetElementTest extends TestCase $set, 'Nested Practice', 'Nested description', - null, '

Nested rich text

', null, null, @@ -116,7 +107,6 @@ class GetElementTest extends TestCase $otherSet, 'Other Parent', 'Other parent description', - null, '

Other parent rich text

', null, null, @@ -126,7 +116,6 @@ class GetElementTest extends TestCase $otherSet, 'Other Child', 'Other child description', - null, '

Other child rich text

', null, null, @@ -189,7 +178,6 @@ class GetElementTest extends TestCase DomainSet $set, string $title, string $description, - ?string $iconImageUrl, string $richText, ?string $pdfPath, ?string $youtubeUrl, @@ -199,7 +187,6 @@ class GetElementTest extends TestCase set: $set, title: $title, description: $description, - iconImageUrl: $iconImageUrl, richText: $richText, pdfPath: $pdfPath, youtubeUrl: $youtubeUrl, diff --git a/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts b/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts index c2894a4..daa0532 100644 --- a/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts +++ b/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts @@ -41,10 +41,6 @@ describe('media page sets', () => { cy.location('pathname').should('eq', '/element/1') cy.get('[data-cy="element-page"]').should('be.visible') cy.contains('h1', 'Baderech HaAvodah').should('be.visible') - cy.get('[data-cy="element-icon"]') - .should('be.visible') - .and('have.attr', 'src') - .and('include', '/assets/baderech-haavodah-icon.png') cy.get('[data-cy="element-rich-text"]').within(() => { cy.contains('Begin with a clear map for avodah growth.') .should('be.visible') @@ -86,7 +82,6 @@ describe('media page sets', () => { .click() cy.location('pathname').should('eq', '/element/2') cy.contains('h1', 'Avodah Foundations').should('be.visible') - cy.get('[data-cy="element-icon"]').should('not.exist') cy.get('[data-cy="element-rich-text"]') .should( 'contain.text', diff --git a/frontend/rabbi_gerzi/src/stores/elements.ts b/frontend/rabbi_gerzi/src/stores/elements.ts index 058c607..5b52fdd 100644 --- a/frontend/rabbi_gerzi/src/stores/elements.ts +++ b/frontend/rabbi_gerzi/src/stores/elements.ts @@ -8,7 +8,6 @@ export interface ChildElement { } export interface Element extends ChildElement { - iconImageUrl: string | null richText: string pdfPath: string | null youtubeUrl: string | null diff --git a/frontend/rabbi_gerzi/src/views/ElementPage.vue b/frontend/rabbi_gerzi/src/views/ElementPage.vue index f75460a..cee7153 100644 --- a/frontend/rabbi_gerzi/src/views/ElementPage.vue +++ b/frontend/rabbi_gerzi/src/views/ElementPage.vue @@ -211,14 +211,6 @@ function isShortYoutubeHost(hostname: string): boolean { {{ error }}

- -

{{ element.title }}

@@ -304,14 +296,6 @@ function isShortYoutubeHost(hostname: string): boolean { margin: 0 auto; } -.element-page__icon { - display: block; - width: 132px; - height: 132px; - margin: 0 auto 1.8rem; - object-fit: contain; -} - .element-page__heading { margin: 0; color: #2c2c2c; @@ -475,11 +459,5 @@ function isShortYoutubeHost(hostname: string): boolean { .element-page__children { margin-top: 2rem; } - - .element-page__icon { - width: 108px; - height: 108px; - margin-bottom: 1.4rem; - } }