Categorized Smilies :(

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

Categorized Smilies :(

Beitrag von Bootenks »

Also ich habe diesen Mod eingebaut.... Aber er macht nicht das was er soll... Also man kann Cats einstellen. man kann sie den Smilies zu ordnen das wird alles ordnungsgemäss gespeichert, aber was man nicht machen kann ist wenn z.B: 2 Cats installiert wurden: in der posting.php die Smilies anzeigen. Es werden immer alle angezeigt anstatt die die dafür nur ausgewählt wurden. Where is the bug... Habe alles geprütf ist alles so eingebaut wie es sein sol. Hier mal die Smilie Generator Funktion:

Code: Alles auswählen

function generate_categories() {

global $db, $board_config, $template, $phpEx, $phpbb_root_path;

$sql = "SELECT * FROM " . SMILIES_TABLE . " ORDER BY cat_id DESC";
$res = $db->sql_query($sql);
$s_smilie = $db->sql_fetchrowset($res);
$count = $db->sql_numrows($res);

for ($i=$count; $i>=0; $i--) {
	 $smilie[$s_smilie[$i]['cat_id']]=$s_smilie[$i]['smile_url'];
}

$cat = "SELECT * FROM " . SMILIES_CAT_TABLE ;
$res = $db->sql_query($cat);
$s_cat = $db->sql_fetchrowset($res);
$count = $db->sql_numrows($res);

$min=2; // Minimum number of non-empty categories needed to show them

// $j contains de number of non-empty categories at the forum
$j=0;
for($i=1; $i<=$count; $i++) {
	if($smilie[$i] != "") {
		$j++;
	}
}


if($j>=$min) {
	for ($i=$count; $i>=0; $i--) {
		$smile_cat[$s_cat[$i]['cat_id']]['cat_name']=$s_cat[$i]['cat_name'];
		$smile_cat[$s_cat[$i]['cat_id']]['description']=$s_cat[$i]['description'];
	}

	$template->set_filenames(array(
		'body' => 'posting_body.tpl')
	);

	for($i = 1; $i <= $count; $i++) {
		if($smilie[$i]!="")	{
			$template->assign_block_vars('category_help', array(
				'NAME' => 'cat'.$i,
				'HELP' => $smile_cat[$i]['description'])
			);

			$template->assign_block_vars('categories', array(
				'CAT_ALT' => $smile_cat[$i]['cat_name'],
				'NAME' => 'cat'.$i,
				'SMILIE' => $board_config['smilies_path'] . '/' . $smilie[$i],
				'CAT_MORE_SMILIES' => append_sid("posting.$phpEx?mode=smilies").'&cat='.$i)
			);
		}
	}
}

} //End generate_categories()
Also es werden sogar beide seiten richtig geöffnet: smilies&cat=1 und smilies&cat=2 ...
nur der inhalt ist wie gesagt der gleiche.... irgendwie werden die Smilies nicht ordnungsmgemäss generiert...
Zuletzt geändert von Bootenks am Fr 31.Dez, 2004 14:55, insgesamt 1-mal geändert.
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

Beitrag von Bootenks »

weiss keiner Rat :'(
Nur ein Informatik Student. ^^
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Welcher Link von wo führt denn zu der "doppelten" Darstellung der Smilies?
Hier wäre zu prüfen, ob die Variable für die Kategorie in der betreffenden Datei schon vorher existiert. Dann müsste man in der Funktion nur folgendes ändern:

Code: Alles auswählen

#
#-----[ FIND ]------------------------------------------
#
global $db, $board_config, $template, $phpEx, $phpbb_root_path;

#
#-----[ AFTER, ADD ]------------------------------------------
#
global $cat;

#
#-----[ FIND ]------------------------------------------
#
$sql = "SELECT * FROM " . SMILIES_TABLE . " ORDER BY cat_id DESC";

#
#-----[ IN-LINE FIND ]------------------------------------------
#
ORDER BY

#
#-----[ IN-LINE BEFORE, ADD ]------------------------------------------
#
WHERE cat_id = $cat
Wobei halt, wie schon geschrieben, $cat die Variable wäre, die den Parameter aus dem Link enthielte. Ggf. umbenennen oder mit $HTTP_POST_VARS['cat'], bzw. $HTTP_GET_VARS['cat'] noch abfragen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

Beitrag von Bootenks »

also es ist keine doppelte Darstellung:

Durch den besagten Mod ist es doch Möglich die verschiedenen Smilies einzuordnen in Cats. Naja undich hab halt 2 gemacht einmal Default (das war schon gegeben) und Knuffels. Den beiden habe ich dann die Smilies zu geordnet. *in den Datenbanken wird es korrekt gespeichert* Jetzt erstellt der Mod 2 Icons (jeweils das erste Smilie) und wenn man dann darauf klickt, sollen nur die Mods in dieser Cat erscheinen. (aber bei beiden Icons werden alle Smilies angezeigt) Am Pfad liegt es auch nicht denn der wird korrekt einmal mit cat=1 und einmal mit cat=2 aufgerufen... Ich hoffe ich konnte mein Problem jetzt deutlicher hervorheben ^^. ^^
Nur ein Informatik Student. ^^
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Das Problem hatte ich schon verstanden, daher solltest Du auch meinen Ausführungen folgen.
Welche Datei wird denn aufgerufen durch den Link?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

Beitrag von Bootenks »

posting.php?mode=smilies&cat=1 ist der eine Smilie

posting.php?mode=smilies&cat=2 ist der andere Smilie

Naja aber wie gesagt bei beiden das selbe Resultat ^^
Nur ein Informatik Student. ^^
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Okay. In der functions_post.php wird die Variable abgefragt, mit der die Smilies in Kategorien gepackt und auch nur diese dargestellt werden sollen.
Das geschieht dort mit

Code: Alles auswählen

$where = ($HTTP_GET_VARS['cat']) ? ' WHERE cat_id='.$HTTP_GET_VARS['cat'] : '';
welches in die entsprechende Abfrage eingebunden wird, also so:

Code: Alles auswählen

	$sql = "SELECT emoticon, code, smile_url   
		FROM " . SMILIES_TABLE . $where . " 
		ORDER BY smilies_id";
Um zu prüfen, ob die cat_id überhaupt gefüllt wird, füge mal vor diese Abfrage folgendes ein:

Code: Alles auswählen

echo $where;
und öffne eine Kategorie. Wenn dann nach cat_id ein Wert erscheint, muss in dem Script für das Smilie-Fenster gesucht werden. Ansonsten stimmt hier schon was nicht.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

Beitrag von Bootenks »

Code: Alles auswählen

	$where = ($HTTP_GET_VARS['cat']) ? ' WHERE cat_id='.$HTTP_GET_VARS['cat'] : '';

echo $where;

	$sql = "SELECT emoticon, code, smile_url   
		FROM " . SMILIES_TABLE . $where . " 
		ORDER BY smilies_id";
	if ($result = $db->sql_query($sql))
	{
so stehts bei mir da ^^" aber da wird kein Echo geöffnet ^^"
Nur ein Informatik Student. ^^
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

echo würde eine Ausgabe in dem betreffenden Fenster erzeugen. Ggf. mit Fehlermeldungen.
Wenn nichts im Smilie-Fenster erscheint, dann wird die Kategorie nicht übernommen.
Ersetze dann mal die $where-Zeile mit folgendem:

Code: Alles auswählen

$cat = (isset($HTTP_POST_VARS['cat'])) ? intval($HTTP_POST_VARS['cat']) ? intval($HTTP_GET_VARS['cat']);
$where = ($cat != 0) ? ' WHERE cat_id='.$cat : '';
Lass das echo $where; dann mal drinnen und beobachte weiter.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

Beitrag von Bootenks »

nu siehts so aus:

Code: Alles auswählen

		$cat = (isset($HTTP_POST_VARS['cat'])) ? intval($HTTP_POST_VARS['cat']) : intval($HTTP_GET_VARS['cat']);
		$where = ($cat != 0) ? ' WHERE cat_id='.$cat : '';

echo $where;

	$sql = "SELECT emoticon, code, smile_url   
		FROM " . SMILIES_TABLE . $where . " 
		ORDER BY smilies_id";
	if ($result = $db->sql_query($sql))
	{
Ich nehm an das du dich da vertippselt hast.. das es kein zweites ? in der ersten Zeile sein soll sondern ein : ! ^^

Naja aber kommtimmernoch nichts... Ist es möglich das ich den Cache Mod also speziell für die Smilies ausschalten muss?

EDIT: Habe den Cache ausgemacht und nun gehts... ^^" Naja und jetzt werden auch die Cats ordnungsgemäss angezeigt.... Ich danke dir ^^
Zuletzt geändert von Bootenks am So 02.Jan, 2005 13:30, insgesamt 1-mal geändert.
Antworten