Skip to content

Commit a6e28cd

Browse files
committed
fix : made some changes to the form and made isSupported function more modular using the OGinterface
1 parent b41f698 commit a6e28cd

File tree

3 files changed

+49
-81
lines changed

3 files changed

+49
-81
lines changed

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

Lines changed: 32 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -128,28 +128,28 @@ public function onContentPrepareForm(PrepareFormEvent $event): void
128128
$form = $event->getForm();
129129
$context = $form->getName();
130130
$app = $this->getApplication();
131-
132131
if (!$app->isClient('administrator') || !$this->isSupported($context)) {
133132
return;
134133
}
135134

136-
$isCategory = $this->isCategoryContext($context);
137-
$groupName = $isCategory ? 'params' : 'attribs';
135+
$isCategory = $context === 'com_categories.categorycom_content';
136+
$isMenu = $context === 'com_menus.item';
137+
138+
$groupName = $isMenu ? 'params' : 'attribs';
138139

139-
// Load and modify opengraphmappings.xml (only for categories)
140+
// Load opengraphmappings.xml for categories directly no need to adjust fields group
140141
if ($isCategory) {
141-
$mappingsXml = __DIR__ . '/../forms/opengraphmappings.xml';
142-
if (file_exists($mappingsXml)) {
143-
try {
144-
$modifiedXml = $this->adjustFieldsGroup($mappingsXml, $groupName);
145-
$form->load($modifiedXml, false);
146-
} catch (Exception $e) {
147-
error_log('OpenGraph Plugin: Failed to load mappings form: ' . $e->getMessage());
148-
}
142+
try {
143+
$form::addFormPath(__DIR__ . '/../forms');
144+
$form->loadFile('opengraphmappings', false);
145+
} catch (Exception $e) {
146+
error_log('OpenGraph Plugin: Failed to load mappings form: ' . $e->getMessage());
149147
}
148+
149+
return;
150150
}
151151

152-
// Load and modify opengraph.xml
152+
// Load and modify opengraph.xml for articles and menus
153153
$mainXml = __DIR__ . '/../forms/opengraph.xml';
154154
if (file_exists($mainXml)) {
155155
try {
@@ -246,47 +246,32 @@ private function setOpenGraphImage(Document $document, ?string $image, ?string $
246246
*/
247247
protected function isSupported($context): bool
248248
{
249-
// @todo: will be changed in future to support other components
250-
251-
252-
253-
$supportedContexts = [
254-
'com_content.article',
255-
'com_categories.categorycom_content',
256-
];
257-
258-
if (!in_array($context, $supportedContexts, true)) {
249+
$parts = explode('.', $context, 2);
250+
if (empty($parts)) {
259251
return false;
260252
}
261253

262-
//todo : currently we have interface in com_content only but we need to have it in other components
263-
264-
// $parts = explode('.', $context, 2);
265-
266-
// $component = $this->getApplication()->bootComponent($parts[0]);
254+
if ($parts[0] === 'com_categories' && isset($parts[1])) {
255+
// Extract true component name from com_categories context
256+
if (preg_match('/com_[a-zA-Z0-9_]+$/', $parts[1], $matches)) {
257+
$componentName = $matches[0];
258+
} else {
259+
return false;
260+
}
261+
} else {
262+
$componentName = $parts[0];
263+
}
267264

268-
// return $component instanceof OpengraphServiceInterface;
265+
try {
266+
$component = $this->getApplication()->bootComponent($componentName);
267+
} catch (Exception $e) {
268+
error_log('OpenGraph Plugin: Failed to boot component: ' . $e->getMessage());
269+
return false;
270+
}
269271

270-
return true;
272+
return $component instanceof OpengraphServiceInterface;
271273
}
272274

273-
/**
274-
* Check if the context is a category context.
275-
*
276-
* @param string $context
277-
*
278-
* @return bool
279-
*
280-
* @since __DEPLOY_VERSION__
281-
*/
282-
private function isCategoryContext(string $context): bool
283-
{
284-
$categoryContexts = [
285-
'com_categories.categorycom_content',
286-
];
287-
288-
return in_array($context, $categoryContexts, true);
289-
}
290275

291276
private function adjustFieldsGroup(string $filePath, string $newGroup): string
292277
{

plugins/system/opengraph/src/forms/opengraph.xml

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,48 +5,34 @@
55
label="PLG_SYSTEM_OPENGRAPH_FIELDSET_ARTICLE">
66
<fieldset name="opengraph_manual_override"
77
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>
178
<field name="og_title"
189
type="text"
1910
label="PLG_SYSTEM_OPENGRAPH_OG_TITLE_LABEL"
2011
description="PLG_SYSTEM_OPENGRAPH_OG_TITLE_DESC"
2112
hint="PLG_SYSTEM_OPENGRAPH_OG_TITLE_HINT"
22-
size="50"
23-
showon="show_manual_override:1" />
13+
size="50" />
2414
<field name="og_description"
2515
type="textarea"
2616
label="PLG_SYSTEM_OPENGRAPH_OG_DESCRIPTION_LABEL"
2717
description="PLG_SYSTEM_OPENGRAPH_OG_DESCRIPTION_DESC"
2818
hint="PLG_SYSTEM_OPENGRAPH_OG_DESCRIPTION_HINT"
2919
rows="3"
30-
cols="50"
31-
showon="show_manual_override:1" />
20+
cols="50" />
3221
<field name="og_image"
3322
type="media"
3423
label="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_LABEL"
35-
description="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_DESC"
36-
showon="show_manual_override:1" />
24+
description="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_DESC" />
3725
<field name="og_image_alt"
3826
type="text"
3927
label="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_ALT_LABEL"
4028
description="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_ALT_DESC"
41-
hint="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_ALT_HINT"
42-
showon="show_manual_override:1" />
29+
hint="PLG_SYSTEM_OPENGRAPH_OG_IMAGE_ALT_HINT" />
4330
<field name="og_type"
4431
type="list"
4532
label="PLG_SYSTEM_OPENGRAPH_OG_TYPE_LABEL"
4633
description="PLG_SYSTEM_OPENGRAPH_OG_TYPE_DESC"
4734
default=""
48-
class="form-select"
49-
showon="show_manual_override:1">
35+
class="form-select">
5036
<option value="">PLG_SYSTEM_OPENGRAPH_USE_DEFAULT</option>
5137
<option value="article">PLG_SYSTEM_OPENGRAPH_TYPE_ARTICLE</option>
5238
<option value="website">PLG_SYSTEM_OPENGRAPH_TYPE_WEBSITE</option>
@@ -62,15 +48,13 @@
6248
type="url"
6349
label="PLG_SYSTEM_OPENGRAPH_OG_URL_LABEL"
6450
description="PLG_SYSTEM_OPENGRAPH_OG_URL_DESC"
65-
hint="PLG_SYSTEM_OPENGRAPH_OG_URL_HINT"
66-
showon="show_manual_override:1" />
51+
hint="PLG_SYSTEM_OPENGRAPH_OG_URL_HINT" />
6752
<field name="enable_opengraph"
6853
type="radio"
6954
label="PLG_SYSTEM_OPENGRAPH_ENABLE_LABEL"
7055
description="PLG_SYSTEM_OPENGRAPH_ENABLE_DESC"
7156
default="1"
72-
layout="joomla.form.field.radio.switcher"
73-
showon="show_manual_override:1">
57+
layout="joomla.form.field.radio.switcher">
7458
<option value="0">JNO</option>
7559
<option value="1">JYES</option>
7660
</field>
@@ -79,41 +63,40 @@
7963
label="PLG_SYSTEM_OPENGRAPH_SHOW_ADVANCED_LABEL"
8064
description="PLG_SYSTEM_OPENGRAPH_SHOW_ADVANCED_DESC"
8165
class="btn-group btn-group-yesno"
82-
default="0"
83-
showon="show_manual_override:1">
66+
default="0">
8467
<option value="1">JYES</option>
8568
<option value="0">JNO</option>
8669
</field>
8770
<field name="adv_spacer"
8871
type="spacer"
8972
label="PLG_SYSTEM_OPENGRAPH_ADVANCED_SECTION"
90-
showon="show_manual_override:1[AND]show_advanced:1" />
73+
showon="show_advanced:1" />
9174
<field name="twitter_card"
9275
type="list"
9376
label="PLG_SYSTEM_OPENGRAPH_TWITTER_CARD_LABEL"
94-
showon="show_manual_override:1[AND]show_advanced:1">
77+
showon="show_advanced:1">
9578
<option value="summary">Summary</option>
9679
<option value="summary_large_image">Large Image</option>
9780
</field>
9881
<field name="twitter_title"
9982
type="text"
10083
label="PLG_SYSTEM_OPENGRAPH_TWITTER_TITLE_LABEL"
10184
hint="PLG_SYSTEM_OPENGRAPH_TWITTER_TITLE_HINT"
102-
showon="show_manual_override:1[AND]show_advanced:1" />
85+
showon="show_advanced:1" />
10386
<field name="twitter_description"
10487
type="textarea"
10588
label="PLG_SYSTEM_OPENGRAPH_TWITTER_DESC_LABEL"
10689
hint="PLG_SYSTEM_OPENGRAPH_TWITTER_DESC_HINT"
107-
showon="show_manual_override:1[AND]show_advanced:1" />
90+
showon="show_advanced:1" />
10891
<field name="twitter_image"
10992
type="media"
11093
label="PLG_SYSTEM_OPENGRAPH_TWITTER_IMAGE_LABEL"
111-
showon="show_manual_override:1[AND]show_advanced:1" />
94+
showon="show_advanced:1" />
11295
<field name="fb_app_id"
11396
type="text"
11497
label="PLG_SYSTEM_OPENGRAPH_FB_APP_ID_LABEL"
115-
showon="show_manual_override:1[AND]show_advanced:1" />
98+
showon="show_advanced:1" />
11699
</fieldset>
117100
</fieldset>
118101
</fields>
119-
</form>
102+
</form>

plugins/system/opengraph/src/forms/opengraphmappings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<form>
3-
<fields name="attribs">
3+
<fields name="params">
44
<fieldset name="opengraph"
55
label="PLG_SYSTEM_OPENGRAPH_FIELDSET_ARTICLE">
66
<fieldset name="opengraph_field_mapping"
@@ -41,4 +41,4 @@
4141
</fieldset>
4242
</fieldset>
4343
</fields>
44-
</form>
44+
</form>

0 commit comments

Comments
 (0)