Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions backend/src/ploneorg/src/ploneorg/profiles.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
i18n_domain="ploneorg"
>

<!-- Hide Uninstall Profile-->
<utility
factory=".setuphandlers.HiddenProfiles"
name="ploneorg"
/>

<genericsetup:registerProfile
name="default"
title="Plone.org Site: Install"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<version>20230915001</version>
<version>20260208001</version>
<dependencies>
<dependency>profile-plone.volto:default</dependency>
<dependency>profile-plone.app.vulnerabilities:default</dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
<element value="plone.publication" />
<element value="plone.leadimage" />
<element value="plone.categorization" />
<element value="volto.blocks" />
</property>
<property name="schema">ploneorg.content.foundationsponsor.IFoundationSponsor</property>
<property name="model_source" />
Expand Down
4 changes: 4 additions & 0 deletions backend/src/ploneorg/src/ploneorg/setuphandlers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ def getNonInstallableProfiles(self):
"ploneorg:uninstall",
]

def getNonInstallableProducts(self):
"""Hide the upgrades package from site-creation and quickinstaller."""
return ["ploneorg.upgrades"]


def populate_portal(context):
"""Post install script"""
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<object meta_type="Plone Types Tool"
name="portal_types"
>
<object meta_type="Dexterity FTI"
name="FoundationSponsor"
/>
</object>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<object xmlns:i18n="http://xml.zope.org/namespaces/i18n"
meta_type="Dexterity FTI"
name="FoundationSponsor"
i18n:domain="plone"
>
<property name="behaviors"
purge="false"
>
<element value="volto.blocks" />
</property>

</object>
30 changes: 30 additions & 0 deletions backend/src/ploneorg/src/ploneorg/upgrades/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -182,4 +182,34 @@
import_steps="contentrules"
/>
</genericsetup:upgradeSteps>

<genericsetup:registerProfile
name="20260208001"
title="Add volto.blocks behavior to FoundationSponsors"
description="Configuration for version 20260208001"
provides="Products.GenericSetup.interfaces.EXTENSION"
for="Products.CMFPlone.interfaces.IMigratingPloneSiteRoot"
directory="20260208001"
/>

<genericsetup:upgradeSteps
profile="ploneorg:default"
source="20230915001"
destination="20260208001"
>

<upgradeStep
title="Add volto.blocks behavior to FoundationSponsors"
description="Add new behavior"
handler=".v20260208001.upgrade"
/>

<genericsetup:upgradeDepends
title="Add volto.blocks behavior to FoundationSponsors (GS profile)"
description="Add new behavior"
import_profile="ploneorg.upgrades:20260208001"
/>

</genericsetup:upgradeSteps>

</configure>
6 changes: 6 additions & 0 deletions backend/src/ploneorg/src/ploneorg/upgrades/v20260208001.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from ploneorg import logger


def upgrade(setup_tool=None):
""""""
logger.info("Running upgrade (Python): Add behavior to FoundationSponsor")
3 changes: 2 additions & 1 deletion backend/src/ploneorg/tests/test_setup.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Setup tests for this package."""

from kitconcept import api
from plone.app.testing import setRoles
from plone.app.testing import TEST_USER_ID
Expand Down Expand Up @@ -34,7 +35,7 @@ def test_latest_version(self):
"""Test latest version of default profile."""
self.assertEqual(
self.setup.getLastVersionForProfile("ploneorg:default")[0],
"20230915001",
"20260208001",
)


Expand Down
3 changes: 2 additions & 1 deletion backend/src/ploneorg/tests/test_upgrades.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Upgrades tests for this package."""

from parameterized import parameterized
from plone.app.testing import setRoles
from plone.app.testing import TEST_USER_ID
Expand Down Expand Up @@ -42,7 +43,7 @@ def available_steps(self, src, dst) -> list:
("20230530001", "20230904001", 1),
("20230904001", "20230907001", 1),
("20230907001", "20230915001", 1),

("20230915001", "20260208001", 1),
]
)
def test_available(self, src, dst, expected):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
} from '@package/components';

const SponsorCardListing = (props) => {
const { items, isEditMode, cols = 3 } = props;
const { items, isEditMode, cols = 3, linkToPage = false } = props;

const randomized_items = items
.map((value) => ({ value, sort: Math.random() }))
Expand All @@ -28,6 +28,7 @@ const SponsorCardListing = (props) => {
key={item['@id']}
{...item}
isEditMode={isEditMode}
linkToPage={linkToPage}
></SponsorCard>
</Grid.Column>
);
Expand Down
6 changes: 5 additions & 1 deletion frontend/src/components/cards/SponsorCard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,11 @@ const SponsorCard = (props) => {

return (
<Card className={cardClass}>
<UniversalLink item={props}>{image}</UniversalLink>
{props.linkToPage ? (
<UniversalLink href={props['@id']}>{image}</UniversalLink>
) : (
<UniversalLink item={props}>{image}</UniversalLink>
)}
</Card>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@ const messages = defineMessages({
id: 'Number of columns',
defaultMessage: 'Number of columns',
},
linkToPage: {
id: 'Link to page?',
defaultMessage: 'Link to page?',
},
linkToPageDescription: {
id:
'If selected, each card will always link to the page on the site instead of the remote url',
defaultMessage:
'If selected, each card will always link to the page on the site instead of the remote url',
},
});

const getSponsorCardVariationSchema = (
Expand All @@ -25,6 +35,18 @@ const getSponsorCardVariationSchema = (
pos,
'default',
);

pos++;
addSchemaField(
schema,
'linkToPage',
intl.formatMessage(messages.linkToPage),
intl.formatMessage(messages.linkToPageDescription),
{ type: 'boolean', default: false },
pos,
'default',
);

pos++;

pos = addPresetFields(schema, intl, pos, 'items', {
Expand Down