Seite 1 von 2

Sichtweiten Mod

Verfasst: 02.09.2006 19:01
von Dirk F.
Hi,
ich suche ein Mod, was man benutzen oder ändern kann, um folgendes im Forum einzurichten:
User sollen Sichtweiten (o.ä.), die durch Einträge vorgenommen sind/wurden, verändern können. Konkret für ein Taucherforum. Bespiel:
Es sind eben Seen angelegt und mit Datum, Uhrzeit und Namen die Sichtweiten hinterlegt. Jeder registrierte User darf nun diesen Wert ändern können, so dass diese aktuell gehalten sind/werden.

Bsp:
Wolfgangsee 20.08.2006 12:00 4m Deepdiver (ändern)
Hemmor 15.07.2006 16:30 10m Devil (ändern)
...

Kennt jemand so einen Mod? Lässt sich ja auch für andere Kategorien verwenden.

Wer könnte mir helfen?

Danke
Gruß
Dirk

Verfasst: 03.09.2006 16:16
von travis182
eine sehr simple lösung wäre, ein Forum einzurichten, in dem jeder user (nicht nur mods und admins) edit-rechte haben. dann für jeden See ein eigenes Topic aufmachen und jeder kanns ändern.

Verfasst: 03.09.2006 17:48
von Dirk F.
hatte ich ja auch überlegt, ist aber eben eine bei vielen Seen unübersichtliche Lösung.

Verfasst: 04.09.2006 09:17
von MagMo
Hi,
Dirk F. hat geschrieben:hatte ich ja auch überlegt, ist aber eben eine bei vielen Seen unübersichtliche Lösung.
Die Lösung von travis182 ist ohne viel Aufwand zu realisieren und die Übersichtlichkeit lässt sich auch waren. Dazu einfach die Sortierreihenfolge in dem Forum auf alphabetisch umstellen - das geht mit dieser kleinen Änderung. Wenn dann jedes Thema den Seenamen als Titel trägt sollte die Übersichtlichkeit vorhanden bleiben. Ggf. für dieses eine Forum noch die Anzahl der Themen pro Seite erhöhen.

Grüße
MagMo

Verfasst: 04.09.2006 15:57
von Dirk F.
na ja, Edit-Rechte heißt ja hinzufügen, nicht, dass jeder das Ursprungsposting verändern könnte. Aber so häufen sich dann die Beiträge in einem Thread und man muss wieder per Hand selektieren und löschen.
Bin auch am grübeln. Eine Db erstellen ist ja nicht so schlimm, aber die Einbindung in die Templates usw. - da habe ich keine Erfahrung mit.
Hätte ja sein können, es gibt schon sowas (ähnliches).

Verfasst: 06.09.2006 16:57
von MagMo
Hi,
Dirk F. hat geschrieben:na ja, Edit-Rechte heißt ja hinzufügen, nicht, dass jeder das Ursprungsposting verändern könnte.
Edit-Rechte heißt normalerweise, dass registrierte Benutzer nur ihre eigenen Beiträge bearbeiten dürfen. Das lässt sich für ein einzelnes Forum ohne großen Aufwand ändern ohne dabei die Edit-Rechte in den anderen Foren zu beeinflussen.
Dirk F. hat geschrieben:Aber so häufen sich dann die Beiträge in einem Thread und man muss wieder per Hand selektieren und löschen.
Wenn man registrierten Benutzern nur das editieren erlaubt und nicht das Erstellen neuer Themen bzw. das Antworten auf ein Thema, dann muss man nichts per Hand selektieren und löschen. Neue Seen können dann halt nur von Moderatoren hinzugefügt werden.

Grüße
MagMo

Verfasst: 07.09.2006 18:44
von Dirk F.
klingt gut, :-)
wo muss ich was scripten, damit in nur einem forum (wahrscheilich über die id?) alle registrierten user editieren können?

und wird nach dem editieren auch der name des users verändert? normalerweise nicht. aber wenn man schon am scripten ist? :)

danke schon mal
gruß
dirk

ps hatte auch die idee, eine gruppe einzurichten und alle user nur für diese als mod einzutragen. aber die obrige löung wäre mir lieber

Verfasst: 07.09.2006 20:26
von MagMo
Hi,
Dirk F. hat geschrieben:klingt gut, :-)
wo muss ich was scripten, damit in nur einem forum (wahrscheilich über die id?) alle registrierten user editieren können?
Mit folgender Änderung können alle, die im Forum mit der ID 2 die Berechtigung haben ihren Beitrag zu bearbeiten, alle Beiträge bearbeiten. Wenn du die Edit-Rechte für dieses Forum auf "Reg" setzt, dann können alle registrierten Benutzer jeden Beitrag ändern. Eventuell ist es aber sinvoll hier eine eigne Benutzergruppe einzurichten, die dann Edit-Rechte bekommt. Und nicht vergessen die Rechte für Posten und Antworten mindestens auf "Mod" zu stellen.

Code: Alles auswählen

#---[ OPEN ]---
language/lang_german/lang_main.php

#---[ FIND ]---
?>

#---[ BEFORE, ADD ]---
$lang['Edited_time_total_ohne_von'] = 'Zuletzt bearbeitet am %s, insgesamt einmal bearbeitet';
$lang['Edited_times_total_ohne_von'] = 'Zuletzt bearbeitet am %s, insgesamt %d-mal bearbeitet';

#---[ OPEN ]---
posting.php

#---[ FIND ]---
		if ( $post_info['poster_id'] != $userdata['user_id'] && !$is_auth['auth_mod'] )

#---[ REPLACE WITH ]---
		if (( $forum_id != 2 && $post_info['poster_id'] != $userdata['user_id'] && !$is_auth['auth_mod'] ) || ( $forum_id == 2 && !$is_auth['auth_edit'] ))

#---[ OPEN ]---
includes/functions_post.php

#---[ FIND ]---
function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid, $post_username, $post_subject, $post_message, $poll_title, &$poll_options, &$poll_length)
{
#---[ AFTER, ADD ]---
	global $forum_id;

#---[ FIND ]---
	$edited_sql = ($mode == 'editpost' && !$post_data['last_post'] && $post_data['poster_post']) ? ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 " : "";

#---[ REPLACE WITH ]---
	if (($forum_id == 2) && ($mode == 'editpost'))
	{
		$edited_sql = ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 ";
	}
	else
	{
		$edited_sql = ($mode == 'editpost' && !$post_data['last_post'] && $post_data['poster_post']) ? ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 " : "";
	}
Ist getestet und funktioniert.
Wenn das Forum eine andere ID als die Zwei hat, dann musst du die ID entsprechend an drei Stellen ändern:
2 mal:

Code: Alles auswählen

$forum_id == 2
1 mal:

Code: Alles auswählen

$forum_id != 2
Dirk F. hat geschrieben:und wird nach dem editieren auch der name des users verändert? normalerweise nicht. aber wenn man schon am scripten ist?
Das geht mit obiger Änderung nicht. Dazu müsstest du nachdem (!) du obiges gemacht hast noch folgendes ändern:

Code: Alles auswählen

#---[ OPEN ]---
includes/functions_post.php

#---[ FIND ]---
		$edited_sql = ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 ";

#---[ REPLACE WITH ]---
		$edited_sql = ", poster_id = , $userdata['user_id'], post_edit_time = $current_time, post_edit_count = post_edit_count + 1 ";
Sollte funktionieren, habe ich aber nicht getestet.

Grüße
MagMo

Verfasst: 07.09.2006 21:05
von Dirk F.
hi, danke erstmal
bin bein einarbeiten des codes

allerdings bekommen die user kein edit-button :-(

und beim letzten ungetesteten script kommt der fehler
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in ...
für
$edited_sql = ", poster_id = , $userdata['user_id'], post_edit_time = $current_time, post_edit_count = post_edit_count + 1 ";

habe schon versucht das , vor "userdata zu entfernen, aber keine reaktion

Verfasst: 07.09.2006 23:25
von MagMo
Dirk F. hat geschrieben:allerdings bekommen die user kein edit-button :-(
Da habe ich doch glatt vergessen die Änderungen in der viewtopic-Datei zu posten. Ohne diese ist ja auch die Änderung in der language-Datei sinnlos.

Code: Alles auswählen

#---[ OPEN ]---
viewtopic.php

#---[ FIND ]---
	if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] ) || $is_auth['auth_mod'] )

#---[ REPLACE WITH ]---
	if (( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] ) || $is_auth['auth_mod'] ) || ( ( $forum_id == 2 && $is_auth['auth_edit'] ) || $is_auth['auth_mod'] ))

#---[ FIND ]---
	if ( $postrow[$i]['post_edit_count'] )
	{

#---[ AFTER, ADD ]---
		if ($forum_id == 2)
		{
				$l_edit_time_total = ( $postrow[$i]['post_edit_count'] == 1 ) ? $lang['Edited_time_total_ohne_von'] : $lang['Edited_times_total_ohne_von'];
				$l_edited_by = '<br /><br />' . sprintf($l_edit_time_total, create_date($board_config['default_dateformat'], $postrow[$i]['post_edit_time'], $board_config['board_timezone']), $postrow[$i]['post_edit_count']);
		}
		else
		{

#---[ FIND ]---
		$l_edited_by = '<br /><br />' . sprintf($l_edit_time_total, $poster, create_date($board_config['default_dateformat'], $postrow[$i]['post_edit_time'], $board_config['board_timezone']), $postrow[$i]['post_edit_count']);

#---[ AFTER, ADD ]---
		}
Hier ggf. auch die 2 die gewünschte ForenID austauschen (2 mal).
Dirk F. hat geschrieben:und beim letzten ungetesteten script kommt der fehler
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in ...
für
$edited_sql = ", poster_id = , $userdata['user_id'], post_edit_time = $current_time, post_edit_count = post_edit_count + 1 ";

habe schon versucht das , vor "userdata zu entfernen, aber keine reaktion
Ja, das Komma vor dem $userdata ist zuviel. :oops: Probier mal folgende Änderung:

Code: Alles auswählen

$edited_sql = ", poster_id = " . $userdata['user_id'] . ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 ";
Wenn es nicht funktioniert, dann mach mal folgendes: Unterhalb der Codezeilen

Code: Alles auswählen

function submit_post($mode, &$post_data, &$message, ...usw...
{
findest du ein oder mehrere Zeilen die mit global beginnen, in diesen Zeilen müsstest du einmal $userdata finden, wenn nicht, dann füge dort folgende Zeile ein:

Code: Alles auswählen

	global $userdata;
Aber eigentlich sollte das nicht nötig sein.

Grüße
MagMo