Skip to content

Commit cfa56e7

Browse files
committed
sidebar box hinzugefügt
1 parent f5f322d commit cfa56e7

7 files changed

Lines changed: 115 additions & 6 deletions

File tree

eventListener.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,10 @@
77
<listenerclassname>wcf\system\event\listener\ConnectionWsdbDatabaseEditFormListener</listenerclassname>
88
<environment>admin</environment>
99
</eventlistener>
10+
<eventlistener name="connectionWsdbRecordPageListener">
11+
<eventclassname>wcf\page\WsdbRecordPage</eventclassname>
12+
<eventname>assignVariables</eventname>
13+
<listenerclassname>wcf\system\event\listener\ConnectionWsdbRecordPageListener</listenerclassname>
14+
</eventlistener>
1015
</import>
1116
</data>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
namespace wcf\system\event\listener;
4+
5+
use wcf\data\wsdb\database\DatabaseList;
6+
use wcf\data\wsdb\record\connection\RecordConnectionList;
7+
use wcf\page\WsdbRecordPage;
8+
use wcf\system\WCF;
9+
10+
final class ConnectionWsdbRecordPageListener extends AbstractEventListener
11+
{
12+
protected function onAssignVariables(WsdbRecordPage $eventObj): void
13+
{
14+
if (!$eventObj->getDatabase()->enableConnection) {
15+
return;
16+
}
17+
18+
$connectionList = new RecordConnectionList();
19+
$connectionList->getConditionBuilder()->add('recordID = ?', [$eventObj->getRecord()->recordID]);
20+
$connectionList->sqlSelects .= "(
21+
SELECT title
22+
FROM wcf1_wsdb_record_content
23+
WHERE recordID = wsdb_record_connection.referencedRecordID
24+
AND (
25+
languageID IS NULL
26+
OR languageID = " . WCF::getLanguage()->languageID . "
27+
)
28+
LIMIT 1
29+
) AS title";
30+
$connectionList->sqlOrderBy = 'title ASC';
31+
$connectionList->readObjects();
32+
33+
$groupedConnections = [];
34+
foreach ($connectionList as $connection) {
35+
$record = $connection->getReferencedRecord();
36+
if (!$record->canRead()) {
37+
continue;
38+
}
39+
$groupedConnections[$connection->referencedDatabaseID][] = $record;
40+
}
41+
42+
$databaseList = new DatabaseList();
43+
$databaseList->readObjects();
44+
45+
WCF::getTPL()->assign([
46+
'groupedConnections' => $groupedConnections,
47+
'connectionDatabases' => $databaseList->getObjects(),
48+
]);
49+
}
50+
}

language/de.xml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@
22
<language xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/6.0/language.xsd" languagecode="de" languagename="Deutsch" countrycode="de">
33
<import>
44
<category name="dev.hanashi.wsdb">
5-
<item name="dev.hanashi.wsdb.connection.enableConnection"><![CDATA[Verbindungen aktivieren]]></item>
5+
<item name="dev.hanashi.wsdb.connection.enableConnection"><![CDATA[Verknüpfungen aktivieren]]></item>
66
<item name="dev.hanashi.wsdb.connection.noRecords"><![CDATA[Für die ausgewählte Datenbank gibt es derzeitig keine auswählbaren Einträge.]]></item>
77
<item name="dev.hanashi.wsdb.connection.record"><![CDATA[Eintrag]]></item>
8-
<item name="dev.hanashi.wsdb.connection.alreadyConnected"><![CDATA[Dieser Eintrag ist bereits mit dem aktuellen Eintrag verbunden.]]></item>
8+
<item name="dev.hanashi.wsdb.connection.alreadyConnected"><![CDATA[Dieser Eintrag ist bereits mit dem aktuellen Eintrag verknüpft.]]></item>
99
<item name="dev.hanashi.wsdb.connection.database"><![CDATA[Datenbank]]></item>
1010
</category>
1111
<category name="wsdb.record">
12-
<item name="wsdb.record.connection.add"><![CDATA[Verbindung hinzufügen]]></item>
13-
<item name="wsdb.record.connections"><![CDATA[Verbindungen]]></item>
12+
<item name="wsdb.record.connection.add"><![CDATA[Verknüpfung hinzufügen]]></item>
13+
<item name="wsdb.record.connections"><![CDATA[Verknüpfungen]]></item>
14+
<item name="wsdb.record.connections.connected"><![CDATA[Verknüpfte]]></item>
1415
</category>
1516
</import>
1617
</language>

language/en.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<category name="wsdb.record">
1212
<item name="wsdb.record.connection.add"><![CDATA[Add connection]]></item>
1313
<item name="wsdb.record.connections"><![CDATA[Connections]]></item>
14+
<item name="wsdb.record.connections.connected"><![CDATA[Connected]]></item>
1415
</category>
1516
</import>
1617
</language>

package.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<packagename>Database: Connections</packagename>
66
<packagename language="de">Database: Verbindungen</packagename>
77
<packagedescription>Mapping of connections between database entries.</packagedescription>
8-
<packagedescription language="de">Abbildung von Verbunden zwischen Datenbank-Einträgen.</packagedescription>
8+
<packagedescription language="de">Abbildung von Verknüfungen zwischen Datenbank-Einträgen.</packagedescription>
99
<version>1.0.0</version>
10-
<date>2026-01-07</date>
10+
<date>2026-01-09</date>
1111
</packageinformation>
1212
<authorinformation>
1313
<author>Hanashi Development</author>
@@ -26,6 +26,7 @@
2626
<instruction type="template"/>
2727
<instruction type="language"/>
2828
<instruction type="eventListener"/>
29+
<instruction type="templateListener"/>
2930
<instruction type="database">acp/database/install_dev.hanashi.wsdb.connection.php</instruction>
3031
<instruction type="script" run="standalone">acp/install_dev.hanashi.wsdb.connection.php</instruction>
3132
</instructions>

templateListener.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/6.0/templateListener.xsd">
3+
<import>
4+
<templatelistener name="wsdbConnectionBoxes">
5+
<environment>user</environment>
6+
<templatename>wsdbRecord</templatename>
7+
<eventname>boxes</eventname>
8+
<templatecode><![CDATA[{include file='__wsdbConnectionBoxes'}]]></templatecode>
9+
</templatelistener>
10+
</import>
11+
</data>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{if $view->record->getDatabase()->enableConnection}
2+
{foreach from=$connectionDatabases item=connectionDatabase}
3+
{if $groupedConnections[$connectionDatabase->databaseID]|isset && $groupedConnections[$connectionDatabase->databaseID]|count}
4+
<section class="box">
5+
<h2 class="boxTitle">
6+
{lang}wsdb.record.connections.connected{/lang}
7+
{$connectionDatabase->getPhrase($__wcf->getLanguage()->languageID, 'recordPlural')}
8+
</h2>
9+
10+
<div class="boxContent">
11+
<ol class="sidebarList">
12+
{foreach from=$groupedConnections[$connectionDatabase->databaseID] item=connectedRecord}
13+
<li class="sidebarListItem">
14+
{if $connectionDatabase->enableCoverPhoto}
15+
<div class="sidebarListItem__image">
16+
<a href="{$connectedRecord->getLink()}">
17+
<img
18+
src="{$connectedRecord->getCoverPhoto()->getUrl('small')}"
19+
style="max-width: 70px; max-height: 50px; object-fit: cover; object-position: center center;"
20+
height="{$connectedRecord->getCoverPhoto()->getHeight('small')}"
21+
width="{$connectedRecord->getCoverPhoto()->getWidth('small')}"
22+
loading="lazy"
23+
alt=""
24+
>
25+
</a>
26+
</div>
27+
{/if}
28+
<div class="sidebarListItem__content" style="justify-content: center">
29+
<h3 class="sidebarListItem__title">
30+
<a href="{$connectedRecord->getLink()}" class="sidebarListItem__link">{$connectedRecord->getTitle()}</a>
31+
</h3>
32+
</div>
33+
</li>
34+
{/foreach}
35+
</ol>
36+
</div>
37+
</section>
38+
{/if}
39+
{/foreach}
40+
{/if}

0 commit comments

Comments
 (0)