Seite 1 von 6

Einzelnen Beitrag als wichtig markieren

Verfasst: 02.03.2012 21:33
von Perlchamp
Hallo an alle Modder,
ich vermisse in phpBB schmerzlich die Möglichkeit, jeden x-beliebigen Beitrag als wichtig markieren zu können, und nicht wie momentan "nur" das Thema (durch Setzen des ersten Beitrags auf "wichtig").

Nutzen/Zweck/Sinn :
  • Hervorheben eines bestimmten Beitrags, sei es z.B. weil er die Lösung eines Problems darstellt, oder mahnende Moderatorworte, speziellen Hinweis auf einen anderen Beitrag und und und (es gibt viele Gründe einen sehr guten Beitrag herauszuheben)
MOD :
  • im ACP: einer Gruppe das Recht verleihen können, x-beliebige Beiträge (also alle) als wichtig kennzeichnen zu dürfen.
  • dieser markierte Beitrag soll an Ort und Stelle bleiben, also nicht zum ersten bzw. zweiten Beitrag des Themas werden.
  • Ebenso soll ein Thema, das einen markierten Beitrag beinhaltet NICHT zusätzlich gekennzeichnet werden.
  • im ACP: Angabe zur Farbe/Hintergrundbild des markierten Beitrags
Wer hat Lust und Zeit, sich dafür "herzugeben".
Wäre toll, wenn's klappen würde.

Geändert 03.03.2012, 13:30:
man könnte ja später dann via ACP einen Link "Modul konfigurieren" (oder sö ähnlich) anbieten.
Konfigurationsmöglichkeiten:
  • id des Beitrags (0 = alle Beiträge)
  • Beitrag in Themenkopf verlinken
  • Coin-Vergabe / Anzahl
ich bräuchte das nicht ...

Im Voraus besten Dank
So long

Re: Einzelnen Beitrag als wichtig markieren

Verfasst: 03.03.2012 10:36
von Miriam
Du möchtest also, dass ein Beitrag in einem Thema als wichtig markiert werden kann (durch Mitglieder einer ausgewählten Gruppe) und, dass dieser Beitrag dann durch z.B. eine neue Hintergrundfarbe markiert wird?

Wie soll denn ein "normaler" User einen Beitrag, der durch jemanden, der dazu berechtigt ist, gefunden werden? Durch zufälliges Scrollen durch das Thema?
Was, wenn dieser wichtige Beitrag auf Seite 5234 des Beitrages ist und dieser durch weitere Beiträge aber schon auf gefühlte 26534451294512945 ( <= ja, ich habe hier nur einfach in die Tasten gehauen :lol: ) Seiten angewachsen ist?

Wäre es nicht sinnvoller, diese Beiträge, sozusagen als Vorspann, in eben jenem Thema als Links einzublenden, ohne dass das Thema als solches seinen Platz in der Reihe der Beiträge verlässt? Der geneigte User kann dann diesen Link anklicken und findet den Beitrag. Das muss natürlich auf allen Seiten des Thema passieren, denn wenn jemand einem Link folgt, der ihn / ihr per e-mail zusandt wurde, weil er / sie das Thema verfolgt oder sonstwie eine Benachrichtigung erhält, startet er / sie nicht auf Seite #1 des Themas.

Re: Einzelnen Beitrag als wichtig markieren

Verfasst: 03.03.2012 12:54
von Perlchamp
Hallo Miriam,
danke für deine schnelle Antwort.
Wie soll denn ein "normaler" User einen Beitrag, der durch jemanden, der dazu berechtigt ist, gefunden werden? Durch zufälliges Scrollen durch das Thema?
ja, genau! Der Beitrag soll/muss nicht expliziet gefunden werden und auch nicht als Lesezeichen gesetzt werden. Man soll ihn schlicht und einfach nur an seiner Hintergrundfarbe erkennen.

dies müsste doch relativ einfach zu machen sein ? Erweiterungen kann man immer machen.
so long

Re: Einzelnen Beitrag als wichtig markieren

Verfasst: 04.03.2012 12:44
von Shorty1968
Hallo ich finde das auch Intressant und wäre auch für sowas,wie im ersten Beitrag schon erwähnt Gründe einen beitrag Hervor zu heben gibt es wirklich genug.

Ich fände es aber besser wenn der Beitrag direkt im Forum von Admin oder MODS bearbeitet werden könnte ohne einen umweg ins ACP zu machen oder eventuell eine Kombie davon,den beitrag mit einer Hintergrund Farbe auswählbar und einen Hinweiss damit die User auch wissen und verstehen warum dieser Beitrag hervorgehoben wurde.

Re: Einzelnen Beitrag als wichtig markieren

Verfasst: 04.03.2012 13:49
von Perlchamp
Hi Shorty,
da hast du mich wohl etwas missverstanden.
Natürlich sollten nur Mods und Admins über einen Button oder dergleichen einen Beitrag als außergewöhnlich/wichtig/wie auch immer markieren können, Punkt.
Wer ZUSÄTZLICHE Feartures haben möchte, sollte dies dann im ACP konfigurieren können - das meinte ich.

@Miriam:
zu deinem Vorschlag => dies kann sich auch wieder nachteilig auf das Userverhalten auswirken, da dann wahrscheinlich nur die als wichtig markierten Beitäge eines großen Themas durchgelesen werden (fänd' ich nicht gut!).

Hat denn jemand schon einen Lösungsansatz?

So long

Re: Einzelnen Beitrag als wichtig markieren

Verfasst: 05.03.2012 22:01
von Metzle
Hallo,

eventuell könnte man aus dieser Mod Background colors for groups etwas machen bzw diese etwas modifizieren oder anders nutzen.

Re: Einzelnen Beitrag als wichtig markieren

Verfasst: 05.03.2012 22:47
von Perlchamp
vielen Dank für den MOD. Ich werde es mir einmal anschauen, aber sehr viel Hoffnung habe ich nicht, dies alleine hinzubekommen, da ich noch nicht sehr vertraut mit phpBB.

so long

Re: Einzelnen Beitrag als wichtig markieren

Verfasst: 06.03.2012 15:14
von modernist
Ich habe mal quick und recht dirty was zusammengebastelt, um einzelne Beiträge als wichtig zu markieren.
Die Markierung erfolgt dabei durch Änderung der Hintergrundfarbe, aber das kann man mit CSS-Kenntnissen einfach seinen Bedürfnissen anpassen.

In der Datenbanktabelle posts legt man mit phpMyAdmin ein neues Feld an:
Field: post_edit_mark
Type: TINYINT
Length/Values: 1
Default: As defined: 0
Attributes: UNSIGNED

In der includes/functions_posting.php suchen

Code: Alles auswählen

				'bbcode_bitfield'	=> $data['bbcode_bitfield'],
				'bbcode_uid'		=> $data['bbcode_uid'],
				'post_postcount'	=> ($auth->acl_get('f_postcount', $data['forum_id'])) ? 1 : 0,
				'post_edit_locked'	=> $data['post_edit_locked'],
Dahinter in einer neuen Zeile einfügen

Code: Alles auswählen

				'post_edit_mark'	=> $data['post_edit_mark'],	
Suchen

Code: Alles auswählen

				'post_attachment'	=> (!empty($data['attachment_data'])) ? 1 : 0,
				'bbcode_bitfield'	=> $data['bbcode_bitfield'],
				'bbcode_uid'		=> $data['bbcode_uid'],
				'post_edit_locked'	=> $data['post_edit_locked'])
Ersetze 'post_edit_locked' => $data['post_edit_locked']) mit

Code: Alles auswählen

				'post_edit_locked'	=> $data['post_edit_locked'],
				'post_edit_mark'	=> $data['post_edit_mark'])

Suche in der includes/functions_post_oo.php

Code: Alles auswählen

	var $post_edit_count = 0;
	var $post_edit_locked = 0;
Danach einfügen:

Code: Alles auswählen

	var $post_edit_mark = 0;
Suchen

Code: Alles auswählen

			'post_edit_reason'	=> $this->post_edit_reason,
			'post_edit_user'	=> $this->post_edit_user,
			'post_edit_count'	=> $this->post_edit_count,
			'post_edit_locked'	=> $this->post_edit_locked,
Danach einfügen

Code: Alles auswählen

			'post_edit_mark'	=> $this->post_edit_mark,
Öffne root/posting.php und suche

Code: Alles auswählen

else
{
	$post_data['quote_username'] = isset($post_data['username']) ? $post_data['username'] : '';
}

$post_data['post_edit_locked']	= (isset($post_data['post_edit_locked'])) ? (int) $post_data['post_edit_locked'] : 0;
Danach einfügen

Code: Alles auswählen

$post_data['post_edit_mark']	= (isset($post_data['post_edit_mark'])) ? (int) $post_data['post_edit_mark'] : 0;
Suche

Code: Alles auswählen

	$topic_lock			= (isset($_POST['lock_topic'])) ? true : false;
	$post_lock			= (isset($_POST['lock_post'])) ? true : false;
Danach einfügen

Code: Alles auswählen

	$post_mark			= (isset($_POST['mark_post'])) ? true : false;
Suche

Code: Alles auswählen

			// Lock/Unlock Post Edit
			if ($mode == 'edit' && $post_data['post_edit_locked'] == ITEM_LOCKED && !$post_lock && $auth->acl_get('m_edit', $forum_id))
			{
				$post_data['post_edit_locked'] = ITEM_UNLOCKED;
			}
			else if ($mode == 'edit' && $post_data['post_edit_locked'] == ITEM_UNLOCKED && $post_lock && $auth->acl_get('m_edit', $forum_id))
			{
				$post_data['post_edit_locked'] = ITEM_LOCKED;
			}
Danach einfügen (das ist jetzt recht unsauber, eigentlich sollte man statt ITEM_LOCKED/UNLOCKED einen weiteren Zustand definieren, aber das war mir gerade zu aufwendig :wink: )

Code: Alles auswählen

			// Mark/Unmark Post Edit
			if ($mode == 'edit' && $post_data['post_edit_mark'] == ITEM_LOCKED && !$post_mark && $auth->acl_get('m_edit', $forum_id))
			{
				$post_data['post_edit_mark'] = ITEM_UNLOCKED;
			}
			else if ($mode == 'edit' && $post_data['post_edit_mark'] == ITEM_UNLOCKED && $post_mark && $auth->acl_get('m_edit', $forum_id))
			{
				$post_data['post_edit_mark'] = ITEM_LOCKED;
			}		

Suche

Code: Alles auswählen

				'notify_set'			=> $post_data['notify_set'],
				'poster_ip'				=> (isset($post_data['poster_ip'])) ? $post_data['poster_ip'] : $user->ip,
				'post_edit_locked'		=> (int) $post_data['post_edit_locked'],
Danach einfügen

Code: Alles auswählen

				'post_edit_mark'		=> (int) $post_data['post_edit_mark'],
Suche

Code: Alles auswählen

$lock_topic_checked	= (isset($topic_lock) && $topic_lock) ? $topic_lock : (($post_data['topic_status'] == ITEM_LOCKED) ? 1 : 0);
$lock_post_checked	= (isset($post_lock)) ? $post_lock : $post_data['post_edit_locked'];
Danach einfügen

Code: Alles auswählen

$mark_post_checked	= (isset($post_mark)) ? $post_mark : $post_data['post_edit_mark'];
Suche

Code: Alles auswählen

	'S_LOCK_POST_CHECKED'		=> ($lock_post_checked) ? ' checked="checked"' : '',
Danach einfügen

Code: Alles auswählen

	'S_MARK_POST_CHECKED'		=> ($mark_post_checked) ? ' checked="checked"' : '',
Öffne root/viewtopic.php

Suche

Code: Alles auswählen

		'post_edit_reason'	=> $row['post_edit_reason'],
		'post_edit_user'	=> $row['post_edit_user'],
		'post_edit_locked'	=> $row['post_edit_locked'],
Danach einfügen

Code: Alles auswählen

		'post_edit_mark'	=> $row['post_edit_mark'],
Suche

Code: Alles auswählen

		'EDITED_MESSAGE'	=> $l_edited_by,
		'EDIT_REASON'		=> $row['post_edit_reason'],
		'BUMPED_MESSAGE'	=> $l_bumped_by,
Danach einfügen

Code: Alles auswählen

		'MARK_POST'			=> $row['post_edit_mark'],
Öffne /language/de/posting.php

Suche

Code: Alles auswählen

	'MAX_IMG_HEIGHT_EXCEEDED'	=> 'Ihre Bilder dürfen maximal %1$d Pixel hoch sein.',
	'MAX_IMG_WIDTH_EXCEEDED'	=> 'Ihre Bilder dürfen maximal %1$d Pixel breit sein.',
Danach einfügen

Code: Alles auswählen

	'MARK_POST'					=> 'Beitrag als wichtig markieren',
Öffne /styles/prosilver/template/posting_editor.html

Suche

Code: Alles auswählen

			<!-- IF S_LOCK_POST_ALLOWED -->
				<div><label for="lock_post"><input type="checkbox" name="lock_post" id="lock_post"{S_LOCK_POST_CHECKED} /> {L_LOCK_POST} [{L_LOCK_POST_EXPLAIN}]</label></div>
			<!-- ENDIF -->
Danach einfügen

Code: Alles auswählen

			<!-- IF S_LOCK_POST_ALLOWED -->
				<div><label for="mark_post"><input type="checkbox" name="mark_post" id="mark_post"{S_MARK_POST_CHECKED} /> {L_MARK_POST}</label></div>
			<!-- ENDIF -->
Ich habe hier kein neues Recht definiert. Wer Beiträge sperren kann, kann die auch als wichtig markieren.

Öffne /styles/prosilver/template/viewtopic_body.html

Suche

Code: Alles auswählen

<!-- IF postrow.S_ROW_COUNT is odd -->bg1<!-- ELSE -->bg2<!-- ENDIF -->
Danach einfügen

Code: Alles auswählen

<!-- IF postrow.MARK_POST eq 1 --> markpost<!-- ENDIF -->
Öffne /styles/prosilver/theme/colours.css

Am Ende einfügen

Code: Alles auswählen

.markpost {background-color: #ADE461;}
Dies kann wie gesagt nach persönlichen Vorlieben angepasst werden. Man kann die Abfrage postrow.MARK_POST auch an anderen Stellen anwenden, je nach Vorlieben.

Ich hoffe, ich habe jetzt keine meiner Änderungen im Testforum übersehen. Bitte mal ausprobieren und bei Fehlern melden.

Aussehen kann es dann so:
mark_post0.png
mark_post0.png (5.7 KiB) 5561 mal betrachtet
mark_post.png
Die Markierung als wichtig erfolgt hier nur, indem man den Beitrag aufruft und bearbeitet. Das Einbinden dieser Funktion ins MCP erschien mir unnötig. Das kann dann jemand übernehmen, der eine vollständige Modifikation daraus machen will, die weniger quick & dirty ist.

Re: Einzelnen Beitrag als wichtig markieren

Verfasst: 06.03.2012 17:17
von Perlchamp
vielen Dank auch dir für die schnelle Antwort.
Auch dies werde ich mir zu Gemüte führen. Kann dauern, dass meine Antwort auf sich warten lässt, aber man muss ja ersteinmal durchsteigen ...

Was toll wäre, wenn es über Berechtigungen ginge, also:
ACP:
beliebigen Gruppen die Berechtigung verleihen können, Beiträge als "Ultrahot" kennzeichnen zu dürfen.
PHP-Template:
es erscheint zusätzlich ein Button/Checkbox im Beitragsbereich "Als wichtig markieren" , wenn User einer solchen Gruppe erkannt wird und nicht, wenn er zuerst auf "Beitrag ändern" klickt (zu umständlich).
DB:
Feld hinzufügen "ultrahot" (werte 0 oder 1, standard:0)
HTML-Template:
Hervorhebung z.B. durch Div-Container mit höherem z-index, den man über den Beitrag legt (da ich ein rein tabellenbasiertes Style habe [siehe entsprechendes Forum], könnte ich diesen auch gut platzieren. Der Div-Container könnte ja ein schwarzes Bild sein, das auf 90% Durchlässigkeit steht; somit wird, egal welcher style verwendet wird, die entsprechende Standard-HG-Farbe dunkler.
Features:
Wer jetzt noch zusätzliche Features braucht (ich brauch's nicht), der könnte im ACP dann ein Konfigmodul bereitstellen (ähnlich wie bei Captcha-Modul konfigurieren - kann stets erweitert werden) ...

Fertisch (wenn das so einfach wäre).
Ist der Ansatz insoweit ok ? (mit der Bitte um Feedback) - Danke.

Danke für eure Hilfe/Unterstützung/Tipps
so long

Re: Einzelnen Beitrag als wichtig markieren

Verfasst: 06.03.2012 17:29
von modernist
Perlchamp hat geschrieben:Beiträge als "Ultrahot" kennzeichnen zu dürfen.
Willst du jetzt eine gestufte Wichtigkeit? Dann ergänz einfach noch ein post_edit_mark1 und den Rest entsprechend, so daß du zwei Felder zum Anklicken hast. Man könnte auch Radiobuttons mit mehreren Auswahlmöglichkeiten nutzen, aber das wäre eher was für eine vollständige MOD.
Perlchamp hat geschrieben:HTML-Template:Hervorhebung z.B. durch Div-Container mit höherem z-index, den man über den Beitrag legt (da ich ein rein tabellenbasiertes Style habe [siehe entsprechendes Forum], könnte ich diesen auch gut platzieren. Der Div-Container könnte ja ein schwarzes Bild sein, das auf 90% Durchlässigkeit steht; somit wird, egal welcher style verwendet wird, die entsprechende Standard-HG-Farbe dunkler.
Ich nutze kein tabellenbasiertes Design (Tabellen zu Layoutzwecken sind anno 2012 auch wirklich obsolet), aber auch bei Tabellen kannst du an entsprechender Stelle eine Klasse festlegen und markpost nutzen.
Perlchamp hat geschrieben:wenn er zuerst auf "Beitrag ändern" klickt (zu umständlich).
Das ist Ansichtssache. Ggf. möchte man den Beitrag auch gleichzeitig sperren, um ihn vor Veränderungen zu schützen, da er dann vielleicht nicht mehr "wichtig" wäre, weil der Inhalt ein anderer ist.