Hallo 4seven,
ich habe in ein paar freien Minuten die Sortierung für die BBCodes ins ACP eingebaut. Ich brauchte nur am Anfang etwas bis ich das raus hatte, wie es mit den UP/DOWN Buttons geht. Hier nun die Anleitung:
1. Öffne die
includes/acp/acp_bbcodes.php und finde darin
Füge danach ein:
Finde darin
Code: Alles auswählen
case 'delete':
$sql = 'SELECT bbcode_tag
FROM ' . BBCODES_TABLE . "
WHERE bbcode_id = $bbcode_id";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if ($row)
{
if (confirm_box(true))
{
$db->sql_query('DELETE FROM ' . BBCODES_TABLE . " WHERE bbcode_id = $bbcode_id");
$cache->destroy('sql', BBCODES_TABLE);
add_log('admin', 'LOG_BBCODE_DELETE', $row['bbcode_tag']);
}
else
{
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
'bbcode' => $bbcode_id,
'i' => $id,
'mode' => $mode,
'action' => $action))
);
}
}
break;
Füge danach ein
Code: Alles auswählen
//BBCode sort
case 'move_up':
case 'move_down':
// Get current order id...
$sql = 'SELECT bbcode_order as current_order
FROM ' . BBCODES_TABLE . "
WHERE bbcode_id = $bbcode_id";
$result = $db->sql_query($sql);
$current_order = (int) $db->sql_fetchfield('current_order');
$db->sql_freeresult($result);
if ($current_order == 0 && $action == 'move_up')
{
break;
}
// on move_down, switch position with next order_id...
// on move_up, switch position with previous order_id...
$switch_order_id = ($action == 'move_down') ? $current_order + 1 : $current_order - 1;
//
$sql = 'UPDATE ' . BBCODES_TABLE . "
SET bbcode_order = $current_order
WHERE bbcode_order = $switch_order_id
AND bbcode_id <> $bbcode_id";
$db->sql_query($sql);
// Only update the other entry too if the previous entry got updated
if ($db->sql_affectedrows())
{
$sql = 'UPDATE ' . BBCODES_TABLE . "
SET bbcode_order = $switch_order_id
WHERE bbcode_order = $current_order
AND bbcode_id = $bbcode_id";
$db->sql_query($sql);
}
break;
//-----------
Finde darin
Code: Alles auswählen
$sql = 'SELECT *
FROM ' . BBCODES_TABLE . '
ORDER BY bbcode_tag';
$result = $db->sql_query($sql);
und ersetze mit folgendem
Code: Alles auswählen
$sql = 'SELECT *
FROM ' . BBCODES_TABLE . '
ORDER BY bbcode_order';
$result = $db->sql_query($sql);
Finde darin
Code: Alles auswählen
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('bbcodes', array(
'BBCODE_TAG' => $row['bbcode_tag'],
'U_EDIT' => $this->u_action . '&action=edit&bbcode=' . $row['bbcode_id'],
'U_DELETE' => $this->u_action . '&action=delete&bbcode=' . $row['bbcode_id'])
);
}
$db->sql_freeresult($result);
und ersetze mit folgendem
Code: Alles auswählen
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('bbcodes', array(
'BBCODE_TAG' => $row['bbcode_tag'],
'U_EDIT' => $this->u_action . '&action=edit&bbcode=' . $row['bbcode_id'],
'U_DELETE' => $this->u_action . '&action=delete&bbcode=' . $row['bbcode_id'],
'U_MOVE_UP' => $this->u_action . '&action=move_up&bbcode=' . $row['bbcode_id'],
'U_MOVE_DOWN' => $this->u_action . '&action=move_down&bbcode=' . $row['bbcode_id'])
);
}
$db->sql_freeresult($result);
2. Öffne die
adm/style/acp_bbcodes.html und finde darin
Code: Alles auswählen
<!-- BEGIN bbcodes -->
<!-- IF bbcodes.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
<td style="text-align: center;">{bbcodes.BBCODE_TAG}</td>
<td style="text-align: right; width: 40px;"><a href="{bbcodes.U_EDIT}">{ICON_EDIT}</a> <a href="{bbcodes.U_DELETE}">{ICON_DELETE}</a></td>
</tr>
<!-- END bbcodes -->
und ersetze mit folgendem
Code: Alles auswählen
<!-- BEGIN bbcodes -->
<!-- IF bbcodes.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
<td style="text-align: center;">{bbcodes.BBCODE_TAG}</td>
<td style="text-align: right; white-space: nowrap;">
<!-- IF bbcodes.S_FIRST_ROW -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{bbcodes.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
<!-- IF bbcodes.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{bbcodes.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
<a href="{bbcodes.U_EDIT}">{ICON_EDIT}</a> <a href="{bbcodes.U_DELETE}">{ICON_DELETE}</a></a>
</td>
</tr>
<!-- END bbcodes -->
3. Öffne die
includes/functions_display.php und finde darin
finde ein paar Zeilen später
Code: Alles auswählen
$sql = 'SELECT bbcode_id, bbcode_tag, bbcode_helpline
FROM ' . BBCODES_TABLE . '
WHERE display_on_posting = 1
ORDER BY bbcode_tag';
$result = $db->sql_query($sql);
und ersetze es mit folgendem
Code: Alles auswählen
$sql = 'SELECT bbcode_id, bbcode_tag, bbcode_helpline
FROM ' . BBCODES_TABLE . '
WHERE display_on_posting = 1
ORDER BY bbcode_order';
$result = $db->sql_query($sql);
4. Führe folgende Anweisung in
phpAyAdmin aus
Code: Alles auswählen
ALTER TABLE `phpbb3_bbcodes` ADD `bbcode_order` MEDIUMINT( 8 ) UNSIGNED NOT NULL DEFAULT '0';
So, das wars damit müsste ich alles beschrieben haben. Mit dieser Erweiterung können die selbst erstellten BBCodes im ACP sortiert werden. Diese Reihenfolge wird auch beim Posting im Forum so angezeigt.
[EDIT]
Wichtiger Hinweis!
Ich hatte noch was vergessen zu schreiben und zwar müssen in der neuen mit phpMyAdmin erzeugten Spalte die
bbcode_id 1:1 für jeden BBCode in die
bbcode_order übertragen werden, sonst geht es nicht.
@Dr.Death, bantu, gn#36
Ihr könnt die Anleitung gerne ins phpBB 3.0: Snippets übernehmen oder vielleicht auch einen Mod daraus machen. Schaut es euch noch einmal an, ob ich etwas vergessen habe.
Gruß Helmut
P.S. Vielleicht hat jemand noch etwas Lust und macht noch eine Erweiterung für die Gruppenauswahl (Berechtigungen) für jeden BBCode dazu.
