Skip to content

Commit 89149f9

Browse files
committed
fix : Separated the mapping form and conditionally combined them only in the category.
1 parent 4b65016 commit 89149f9

File tree

3 files changed

+192
-153
lines changed

3 files changed

+192
-153
lines changed

plugins/system/opengraph/src/Extension/opengraph.php

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,15 +131,24 @@ public function onContentPrepareForm(PrepareFormEvent $event): void
131131
}
132132

133133
$form = $event->getForm();
134-
$name = $form->getName();
134+
$context = $form->getName();
135135
$component = $app->bootComponent('com_content');
136136
if (!$component instanceof OpengraphServiceInterface) {
137137
return;
138138
}
139139

140-
$xml = __DIR__ . '/../forms/opengraph.xml';
141-
if (file_exists($xml)) {
142-
$form->loadFile($xml, false);
140+
// Check if this is a category context - load mappings form first for categories
141+
if ($this->isCategoryContext($context)) {
142+
$mappingsXml = __DIR__ . '/../forms/opengraphmappings.xml';
143+
if (file_exists($mappingsXml)) {
144+
$form->loadFile($mappingsXml, false);
145+
}
146+
}
147+
148+
// Load the main OpenGraph form for all supported contexts
149+
$mainXml = __DIR__ . '/../forms/opengraph.xml';
150+
if (file_exists($mainXml)) {
151+
$form->loadFile($mainXml, false);
143152
}
144153
}
145154

@@ -214,4 +223,24 @@ private function setOpenGraphImage(Document $document, ?string $image, ?string $
214223
$this->setMetaData($document, 'twitter:image', $url, 'name');
215224
$this->setMetaData($document, 'twitter:image:alt', $alt, 'name');
216225
}
226+
227+
228+
229+
/**
230+
* Check if the context is a category context.
231+
*
232+
* @param string $context
233+
*
234+
* @return bool
235+
*
236+
* @since __DEPLOY_VERSION__
237+
*/
238+
private function isCategoryContext(string $context): bool
239+
{
240+
$categoryContexts = [
241+
'com_categories.categorycom_content',
242+
];
243+
244+
return in_array($context, $categoryContexts, true);
245+
}
217246
}
Lines changed: 115 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -1,153 +1,119 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<form>
3-
<fieldset name="opengraph"
4-
label="PLG_SYSTEM_OPENGRAPH_FIELDSET_ARTICLE">
5-
<fieldset name="opengraph_field_mapping"
6-
label="PLG_SYSTEM_OPENGRAPH_FIELD_MAPPING_SECTION"
7-
addfieldprefix="Joomla\Plugin\System\Opengraph\Field">
8-
<field name="og_title_field"
9-
type="opengraph"
10-
label="PLG_SYSTEM_OPENGRAPH_TITLE_FIELD_LABEL"
11-
description="PLG_SYSTEM_OPENGRAPH_TITLE_FIELD_DESC"
12-
class="form-select"
13-
field-type="text-fields">
14-
<option value="">PLG_SYSTEM_OPENGRAPH_NO_FIELD_SELECTED</option>
15-
</field>
16-
<field name="og_description_field"
17-
type="opengraph"
18-
label="PLG_SYSTEM_OPENGRAPH_DESCRIPTION_FIELD_LABEL"
19-
description="PLG_SYSTEM_OPENGRAPH_DESCRIPTION_FIELD_DESC"
20-
class="form-select"
21-
field-type="text-fields">
22-
<option value="">PLG_SYSTEM_OPENGRAPH_NO_FIELD_SELECTED</option>
23-
</field>
24-
<field name="og_image_field"
25-
type="opengraph"
26-
label="PLG_SYSTEM_OPENGRAPH_IMAGE_FIELD_LABEL"
27-
description="PLG_SYSTEM_OPENGRAPH_IMAGE_FIELD_DESC"
28-
class="form-select"
29-
field-type="image-fields">
30-
<option value="">PLG_SYSTEM_OPENGRAPH_NO_FIELD_SELECTED</option>
31-
</field>
32-
<field name="og_image_alt_field"
33-
type="opengraph"
34-
label="PLG_SYSTEM_OPENGRAPH_IMAGE_ALT_FIELD_LABEL"
35-
description="PLG_SYSTEM_OPENGRAPH_IMAGE_ALT_FIELD_DESC"
36-
class="form-select"
37-
field-type="image-alt-fields">
38-
<option value="">PLG_SYSTEM_OPENGRAPH_NO_FIELD_SELECTED</option>
39-
</field>
3+
<fields name="attribs">
4+
<fieldset name="opengraph"
5+
label="PLG_SYSTEM_OPENGRAPH_FIELDSET_ARTICLE">
6+
<fieldset name="opengraph_manual_override"
7+
label="PLG_SYSTEM_OPENGRAPH_MANUAL_OVERRIDE_SECTION">
8+
<field name="show_manual_override"
9+
type="radio"
10+
label="PLG_SYSTEM_OPENGRAPH_SHOW_MANUAL_OVERRIDE_LABEL"
11+
description="PLG_SYSTEM_OPENGRAPH_SHOW_MANUAL_OVERRIDE_DESC"
12+
class="btn-group btn-group-yesno"
13+
default="0">
14+
<option value="1">JYES</option>
15+
<option value="0">JNO</option>
16+
</field>
17+
<field name="og_title"
18+
type="text"
19+
label="PLG_SYSTEM_OPENGRAPH_OG_TITLE_LABEL"
20+
description="PLG_SYSTEM_OPENGRAPH_OG_TITLE_DESC"
21+
hint="PLG_SYSTEM_OPENGRAPH_OG_TITLE_HINT"
22+
size="50"
23+
showon="show_manual_override:1" />
24+
<field name="og_description"
25+
type="textarea"
26+
label="PLG_SYSTEM_OPENGRAPH_OG_DESCRIPTION_LABEL"
27+
description="PLG_SYSTEM_OPENGRAPH_OG_DESCRIPTION_DESC"
28+
hint="PLG_SYSTEM_OPENGRAPH_OG_DESCRIPTION_HINT"
29+
rows="3"
30+
cols="50"
31+
showon="show_manual_override:1" />
32+
<field name="og_image"
33+
type="media"
34+
label="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_LABEL"
35+
description="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_DESC"
36+
showon="show_manual_override:1" />
37+
<field name="og_image_alt"
38+
type="text"
39+
label="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_ALT_LABEL"
40+
description="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_ALT_DESC"
41+
hint="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_ALT_HINT"
42+
showon="show_manual_override:1" />
43+
<field name="og_type"
44+
type="list"
45+
label="PLG_SYSTEM_OPENGRAPH_OG_TYPE_LABEL"
46+
description="PLG_SYSTEM_OPENGRAPH_OG_TYPE_DESC"
47+
default=""
48+
class="form-select"
49+
showon="show_manual_override:1">
50+
<option value="">PLG_SYSTEM_OPENGRAPH_USE_DEFAULT</option>
51+
<option value="article">PLG_SYSTEM_OPENGRAPH_TYPE_ARTICLE</option>
52+
<option value="website">PLG_SYSTEM_OPENGRAPH_TYPE_WEBSITE</option>
53+
<option value="blog">PLG_SYSTEM_OPENGRAPH_TYPE_BLOG</option>
54+
<option value="video">PLG_SYSTEM_OPENGRAPH_TYPE_VIDEO</option>
55+
<option value="music">PLG_SYSTEM_OPENGRAPH_TYPE_MUSIC</option>
56+
<option value="book">PLG_SYSTEM_OPENGRAPH_TYPE_BOOK</option>
57+
<option value="profile">PLG_SYSTEM_OPENGRAPH_TYPE_PROFILE</option>
58+
<option value="product">PLG_SYSTEM_OPENGRAPH_TYPE_PRODUCT</option>
59+
<option value="event">PLG_SYSTEM_OPENGRAPH_TYPE_EVENT</option>
60+
</field>
61+
<field name="og_url"
62+
type="url"
63+
label="PLG_SYSTEM_OPENGRAPH_OG_URL_LABEL"
64+
description="PLG_SYSTEM_OPENGRAPH_OG_URL_DESC"
65+
hint="PLG_SYSTEM_OPENGRAPH_OG_URL_HINT"
66+
showon="show_manual_override:1" />
67+
<field name="enable_opengraph"
68+
type="radio"
69+
label="PLG_SYSTEM_OPENGRAPH_ENABLE_LABEL"
70+
description="PLG_SYSTEM_OPENGRAPH_ENABLE_DESC"
71+
default="1"
72+
layout="joomla.form.field.radio.switcher"
73+
showon="show_manual_override:1">
74+
<option value="0">JNO</option>
75+
<option value="1">JYES</option>
76+
</field>
77+
<field name="show_advanced"
78+
type="radio"
79+
label="PLG_SYSTEM_OPENGRAPH_SHOW_ADVANCED_LABEL"
80+
description="PLG_SYSTEM_OPENGRAPH_SHOW_ADVANCED_DESC"
81+
class="btn-group btn-group-yesno"
82+
default="0"
83+
showon="show_manual_override:1">
84+
<option value="1">JYES</option>
85+
<option value="0">JNO</option>
86+
</field>
87+
<field name="adv_spacer"
88+
type="spacer"
89+
label="PLG_SYSTEM_OPENGRAPH_ADVANCED_SECTION"
90+
showon="show_manual_override:1[AND]show_advanced:1" />
91+
<field name="twitter_card"
92+
type="list"
93+
label="PLG_SYSTEM_OPENGRAPH_TWITTER_CARD_LABEL"
94+
showon="show_manual_override:1[AND]show_advanced:1">
95+
<option value="summary">Summary</option>
96+
<option value="summary_large_image">Large Image</option>
97+
</field>
98+
<field name="twitter_title"
99+
type="text"
100+
label="PLG_SYSTEM_OPENGRAPH_TWITTER_TITLE_LABEL"
101+
hint="PLG_SYSTEM_OPENGRAPH_TWITTER_TITLE_HINT"
102+
showon="show_manual_override:1[AND]show_advanced:1" />
103+
<field name="twitter_description"
104+
type="textarea"
105+
label="PLG_SYSTEM_OPENGRAPH_TWITTER_DESC_LABEL"
106+
hint="PLG_SYSTEM_OPENGRAPH_TWITTER_DESC_HINT"
107+
showon="show_manual_override:1[AND]show_advanced:1" />
108+
<field name="twitter_image"
109+
type="media"
110+
label="PLG_SYSTEM_OPENGRAPH_TWITTER_IMAGE_LABEL"
111+
showon="show_manual_override:1[AND]show_advanced:1" />
112+
<field name="fb_app_id"
113+
type="text"
114+
label="PLG_SYSTEM_OPENGRAPH_FB_APP_ID_LABEL"
115+
showon="show_manual_override:1[AND]show_advanced:1" />
116+
</fieldset>
40117
</fieldset>
41-
<fieldset name="opengraph_manual_override"
42-
label="PLG_SYSTEM_OPENGRAPH_MANUAL_OVERRIDE_SECTION">
43-
<field name="show_manual_override"
44-
type="radio"
45-
label="PLG_SYSTEM_OPENGRAPH_SHOW_MANUAL_OVERRIDE_LABEL"
46-
description="PLG_SYSTEM_OPENGRAPH_SHOW_MANUAL_OVERRIDE_DESC"
47-
class="btn-group btn-group-yesno"
48-
default="0">
49-
<option value="1">JYES</option>
50-
<option value="0">JNO</option>
51-
</field>
52-
<field name="og_title"
53-
type="text"
54-
label="PLG_SYSTEM_OPENGRAPH_OG_TITLE_LABEL"
55-
description="PLG_SYSTEM_OPENGRAPH_OG_TITLE_DESC"
56-
hint="PLG_SYSTEM_OPENGRAPH_OG_TITLE_HINT"
57-
size="50"
58-
showon="show_manual_override:1" />
59-
<field name="og_description"
60-
type="textarea"
61-
label="PLG_SYSTEM_OPENGRAPH_OG_DESCRIPTION_LABEL"
62-
description="PLG_SYSTEM_OPENGRAPH_OG_DESCRIPTION_DESC"
63-
hint="PLG_SYSTEM_OPENGRAPH_OG_DESCRIPTION_HINT"
64-
rows="3"
65-
cols="50"
66-
showon="show_manual_override:1" />
67-
<field name="og_image"
68-
type="media"
69-
label="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_LABEL"
70-
description="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_DESC"
71-
showon="show_manual_override:1" />
72-
<field name="og_image_alt"
73-
type="text"
74-
label="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_ALT_LABEL"
75-
description="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_ALT_DESC"
76-
hint="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_ALT_HINT"
77-
showon="show_manual_override:1" />
78-
<field name="og_type"
79-
type="list"
80-
label="PLG_SYSTEM_OPENGRAPH_OG_TYPE_LABEL"
81-
description="PLG_SYSTEM_OPENGRAPH_OG_TYPE_DESC"
82-
default=""
83-
class="form-select"
84-
showon="show_manual_override:1">
85-
<option value="">PLG_SYSTEM_OPENGRAPH_USE_DEFAULT</option>
86-
<option value="article">PLG_SYSTEM_OPENGRAPH_TYPE_ARTICLE</option>
87-
<option value="website">PLG_SYSTEM_OPENGRAPH_TYPE_WEBSITE</option>
88-
<option value="blog">PLG_SYSTEM_OPENGRAPH_TYPE_BLOG</option>
89-
<option value="video">PLG_SYSTEM_OPENGRAPH_TYPE_VIDEO</option>
90-
<option value="music">PLG_SYSTEM_OPENGRAPH_TYPE_MUSIC</option>
91-
<option value="book">PLG_SYSTEM_OPENGRAPH_TYPE_BOOK</option>
92-
<option value="profile">PLG_SYSTEM_OPENGRAPH_TYPE_PROFILE</option>
93-
<option value="product">PLG_SYSTEM_OPENGRAPH_TYPE_PRODUCT</option>
94-
<option value="event">PLG_SYSTEM_OPENGRAPH_TYPE_EVENT</option>
95-
</field>
96-
<field name="og_url"
97-
type="url"
98-
label="PLG_SYSTEM_OPENGRAPH_OG_URL_LABEL"
99-
description="PLG_SYSTEM_OPENGRAPH_OG_URL_DESC"
100-
hint="PLG_SYSTEM_OPENGRAPH_OG_URL_HINT"
101-
showon="show_manual_override:1" />
102-
<field name="enable_opengraph"
103-
type="radio"
104-
label="PLG_SYSTEM_OPENGRAPH_ENABLE_LABEL"
105-
description="PLG_SYSTEM_OPENGRAPH_ENABLE_DESC"
106-
default="1"
107-
layout="joomla.form.field.radio.switcher"
108-
showon="show_manual_override:1">
109-
<option value="0">JNO</option>
110-
<option value="1">JYES</option>
111-
</field>
112-
<field name="show_advanced"
113-
type="radio"
114-
label="PLG_SYSTEM_OPENGRAPH_SHOW_ADVANCED_LABEL"
115-
description="PLG_SYSTEM_OPENGRAPH_SHOW_ADVANCED_DESC"
116-
class="btn-group btn-group-yesno"
117-
default="0"
118-
showon="show_manual_override:1">
119-
<option value="1">JYES</option>
120-
<option value="0">JNO</option>
121-
</field>
122-
<field name="adv_spacer"
123-
type="spacer"
124-
label="PLG_SYSTEM_OPENGRAPH_ADVANCED_SECTION"
125-
showon="show_manual_override:1[AND]show_advanced:1" />
126-
<field name="twitter_card"
127-
type="list"
128-
label="PLG_SYSTEM_OPENGRAPH_TWITTER_CARD_LABEL"
129-
showon="show_manual_override:1[AND]show_advanced:1">
130-
<option value="summary">Summary</option>
131-
<option value="summary_large_image">Large Image</option>
132-
</field>
133-
<field name="twitter_title"
134-
type="text"
135-
label="PLG_SYSTEM_OPENGRAPH_TWITTER_TITLE_LABEL"
136-
hint="PLG_SYSTEM_OPENGRAPH_TWITTER_TITLE_HINT"
137-
showon="show_manual_override:1[AND]show_advanced:1" />
138-
<field name="twitter_description"
139-
type="textarea"
140-
label="PLG_SYSTEM_OPENGRAPH_TWITTER_DESC_LABEL"
141-
hint="PLG_SYSTEM_OPENGRAPH_TWITTER_DESC_HINT"
142-
showon="show_manual_override:1[AND]show_advanced:1" />
143-
<field name="twitter_image"
144-
type="media"
145-
label="PLG_SYSTEM_OPENGRAPH_TWITTER_IMAGE_LABEL"
146-
showon="show_manual_override:1[AND]show_advanced:1" />
147-
<field name="fb_app_id"
148-
type="text"
149-
label="PLG_SYSTEM_OPENGRAPH_FB_APP_ID_LABEL"
150-
showon="show_manual_override:1[AND]show_advanced:1" />
151-
</fieldset>
152-
</fieldset>
118+
</fields>
153119
</form>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<form>
3+
<fields name="attribs">
4+
<fieldset name="opengraph"
5+
label="PLG_SYSTEM_OPENGRAPH_FIELDSET_ARTICLE">
6+
<fieldset name="opengraph_field_mapping"
7+
label="PLG_SYSTEM_OPENGRAPH_FIELD_MAPPING_SECTION"
8+
addfieldprefix="Joomla\Plugin\System\Opengraph\Field">
9+
<field name="og_title_field"
10+
type="opengraph"
11+
label="PLG_SYSTEM_OPENGRAPH_TITLE_FIELD_LABEL"
12+
description="PLG_SYSTEM_OPENGRAPH_TITLE_FIELD_DESC"
13+
class="form-select"
14+
field-type="text-fields">
15+
<option value="">PLG_SYSTEM_OPENGRAPH_NO_FIELD_SELECTED</option>
16+
</field>
17+
<field name="og_description_field"
18+
type="opengraph"
19+
label="PLG_SYSTEM_OPENGRAPH_DESCRIPTION_FIELD_LABEL"
20+
description="PLG_SYSTEM_OPENGRAPH_DESCRIPTION_FIELD_DESC"
21+
class="form-select"
22+
field-type="text-fields">
23+
<option value="">PLG_SYSTEM_OPENGRAPH_NO_FIELD_SELECTED</option>
24+
</field>
25+
<field name="og_image_field"
26+
type="opengraph"
27+
label="PLG_SYSTEM_OPENGRAPH_IMAGE_FIELD_LABEL"
28+
description="PLG_SYSTEM_OPENGRAPH_IMAGE_FIELD_DESC"
29+
class="form-select"
30+
field-type="image-fields">
31+
<option value="">PLG_SYSTEM_OPENGRAPH_NO_FIELD_SELECTED</option>
32+
</field>
33+
<field name="og_image_alt_field"
34+
type="opengraph"
35+
label="PLG_SYSTEM_OPENGRAPH_IMAGE_ALT_FIELD_LABEL"
36+
description="PLG_SYSTEM_OPENGRAPH_IMAGE_ALT_FIELD_DESC"
37+
class="form-select"
38+
field-type="image-alt-fields">
39+
<option value="">PLG_SYSTEM_OPENGRAPH_NO_FIELD_SELECTED</option>
40+
</field>
41+
</fieldset>
42+
</fieldset>
43+
</fields>
44+
</form>

0 commit comments

Comments
 (0)