Smilies pop up Problem

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
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Smilies pop up Problem

Beitrag von Kiss News »

Hallo!
Da ich über 100 Smilies auf meinem Board habe, die alle in einem Iframe links beim Posten aufgerufen werden, die halt lange zum Laden brauchen (wenn auch nur im Iframe), wollte ich die Smilies wie ursprünglich in einem Pop-up Fenster aufgehen lassen. Wenn ich das mache, wird jedoch der Smilie-Code nicht ins Schreibfenster übernommen von den Smilies im Pop-up.
Muss an javascript liegen, aber welches javascript ist da in welcher Datei falsch bzw. fehlt? Womit werden die Smilie-Codes im Pop-up Fenster erzeugt und im Schreibfenster dargestellt? Bei den normalen Smilies im Iframe-Fenster links klappt es, aber im Pop-up Fenster nicht :(
Weiss das vielleicht jemand, ich hab das nicht finden können :rolleyes:
Danke.
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Gegenfrage:
Wie bist du zu der iFrame-Variante gekommen?
Mach doch einfach den entsprechenden Mod rückgängig! ^1
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Beitrag von Kiss News »

hab's jetzt hingekriegt...
war nicht so einfach, weil irgendein anderer Mod hat das javascript auf eine externe Datei ausgelagert gehabt. Es war die posting_smilies.tpl, die ich gesucht hatte. Pop up hat auch Nachteile, aber bei 130 Smilies ist es etwas viel als Iframe, da ist es besser, die auszulagern...
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Jo, 130 Smilies sind schon eine Menge.
Aber bedenke auch, daß auch die Umsetzung der Smilie-Codes zu Smilies länger braucht, je mehr verschiedene Smilies vorhanden sind.
130 dürften noch gehen, gerade so. Aber je mehr, desto langsamer eben...
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!
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

Hi,

ich denk, dass passt hier auch noch rein.

Ist es möglich, wenn auf "Weitere Smilies ansehen" geklickt wird, das Popup
aber die ersten 20 Default Icons ausblendet und nur die zusätzlichen Icons
angezeigt werden?


Gruß Stöbi
Zuletzt geändert von Stoebi am So 05.Jun, 2005 16:22, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dazu müsste man genau definieren, welche ersten 20 Smilies das wären.
Also die Sortierung derselben.
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!
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

[quote="oxpus - Mi 18.Mai, 2005 07:45";p="32284"]Dazu müsste man genau definieren, welche ersten 20 Smilies das wären.
Also die Sortierung derselben.[/quote]

Oder die extra Smilies vielleicht in einen extra Ordner? Aber das dürfte dann denke ich zuviel
Aufwand bedeuten, wegen hinzufügen über ACP -> Smilies Frontend.

Die ersten 20 wären kein Problem, diese zu definieren. Aber wie das unterbringen?


Gruß Stöbi
Zuletzt geändert von Stoebi am So 05.Jun, 2005 16:22, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

In der Funktion generate_smilies() in der includes/functions_post.php müsste für "window" oder "inline" definiert werden, ab wann welche Smilies angezeigt werden. Das wäre dann in etwa:

Code: Alles auswählen

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

#
#-----[ FIND ]-----
#
	$sql = "SELECT emoticon, code, smile_url   
		FROM " . SMILIES_TABLE . " 
		ORDER BY smilies_id";

#
#-----[ AFTER, ADD ]-----
#
	$sql .= ($mode != 'window') ? 'LIMIT 0,20' : '';

#
#-----[ FIND ]-----
#
		while ($row = $db->sql_fetchrow($result))
		{
			if (empty($rowset[$row['smile_url']]))
			{
				$rowset[$row['smile_url']]['code'] = str_replace("'", "\\'", str_replace('\\', '\\\\', $row['code']));
				$rowset[$row['smile_url']]['emoticon'] = $row['emoticon'];
				$num_smilies++;
			}
		}

#
#-----[ REPLACE WITH ]-----
#
		while ($row = $db->sql_fetchrow($result))
		{
			if (empty($rowset[$row['smile_url']]))
			{
				if ($num_smilies > 19 && $mode == 'window' || $num_smilies < 20 && $mode != 'window')
				{
					$rowset[$row['smile_url']]['code'] = str_replace("'", "\\'", str_replace('\\', '\\\\', $row['code']));
					$rowset[$row['smile_url']]['emoticon'] = $row['emoticon'];
				}
				$num_smilies++;
			}
		}

#
#-----[ FIND ]-----
#
			while (list($smile_url, $data) = @each($rowset))
			{

#
#-----[ BEFORE, ADD ]-----
#
			$i = 0;

#
#-----[ FIND ]-----
#
				if (!$col)

#
#-----[ BEFORE, ADD ]-----
#
				if ($i > 19 && $mode == 'window' || $i < 20 && $mode != 'window')
				{

#
#-----[ FIND ]-----
#
				else
				{
					$col++;
				}

#
#-----[ AFTER, ADD ]-----
#
				}


#
#-----[ SAVE/CLOSE ALL FILES ]-----
#
#EoM
Keine Ahnung, ob das wirklich funktioniert. Mal abgesehen von sicher ettlichen Tippfehlern.
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!
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

[quote="oxpus - Mi 18.Mai, 2005 11:49";p="32311"]In der Funktion generate_smilies() in der includes/functions_post.php müsste für "window" oder "inline" definiert werden, ab wann welche Smilies angezeigt werden. Das wäre dann in etwa:

Code: Alles auswählen

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

#
#-----[ FIND ]-----
#
	$sql = "SELECT emoticon, code, smile_url   
		FROM " . SMILIES_TABLE . " 
		ORDER BY smilies_id";

#
#-----[ AFTER, ADD ]-----
#
	$sql .= ($mode != 'window') ? 'LIMIT 0,20' : '';

#
#-----[ FIND ]-----
#
		while ($row = $db->sql_fetchrow($result))
		{
			if (empty($rowset[$row['smile_url']]))
			{
				$rowset[$row['smile_url']]['code'] = str_replace("'", "\\'", str_replace('\\', '\\\\', $row['code']));
				$rowset[$row['smile_url']]['emoticon'] = $row['emoticon'];
				$num_smilies++;
			}
		}

#
#-----[ REPLACE WITH ]-----
#
		while ($row = $db->sql_fetchrow($result))
		{
			if (empty($rowset[$row['smile_url']]))
			{
				if ($num_smilies > 19 && $mode == 'window' || $num_smilies < 20 && $mode != 'window')
				{
					$rowset[$row['smile_url']]['code'] = str_replace("'", "\\'", str_replace('\\', '\\\\', $row['code']));
					$rowset[$row['smile_url']]['emoticon'] = $row['emoticon'];
				}
				$num_smilies++;
			}
		}

#
#-----[ FIND ]-----
#
			while (list($smile_url, $data) = @each($rowset))
			{

#
#-----[ BEFORE, ADD ]-----
#
			$i = 0;

#
#-----[ FIND ]-----
#
				if (!$col)

#
#-----[ BEFORE, ADD ]-----
#
				if ($i > 19 && $mode == 'window' || $i < 20 && $mode != 'window')
				{

#
#-----[ FIND ]-----
#
				else
				{
					$col++;
				}

#
#-----[ AFTER, ADD ]-----
#
				}


#
#-----[ SAVE/CLOSE ALL FILES ]-----
#
#EoM
Keine Ahnung, ob das wirklich funktioniert. Mal abgesehen von sicher ettlichen Tippfehlern.[/quote]

Hi,

guten Morgen.

Ich habe gerade eben mal dein Code eingefügt.
Problem ist leider jetzt, dass die Standard 20 Smilies nicht mehr angezeigt werden, und wenn ich
auf "Weitere Smilies ansehen" klicke, auch das Window leer bleibt.


Gruß Stöbi

EDIT - Nachtrag:
Ich werde mich mal an den Smilie Cat Mod versuchen. Sollte eigentlich alle Probleme lösen.

Dank dir für deine Hilfe.
Zuletzt geändert von Stoebi am So 05.Jun, 2005 16:22, insgesamt 2-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

War mir klar, daß das so nicht will. Wäre ja auch zu schön gewesen.

Aber der Smilie Cat Mod stellt das gleiche dar: Die ersten X Smilies beim Posting und im Smilie Window diese nochmal.
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
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Man könnte aber, beim einsatz des Smilie Cat Mod, das normale Smilie Window entfernen und nur die Kategoriefenster anbieten. ;)
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Stimmt, das wäre natürlich auch eine Option.
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!
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

[quote="oxpus - Do 19.Mai, 2005 15:11";p="32449"]Stimmt, das wäre natürlich auch eine Option.[/quote]

Ja, da werde ich mich als nächstes versuchen. Momentan versuche ich die Ausgabe der Kategorien, auch in paFileDB 3.1 von PHP Arena zu verwirklichen. Ich scheitere aber momentan, also es will einfach die Kategorien nicht anzeigen.

Für die Shoutbox (shoutbox_max.php) ist mir das gelungen. Na mal weiter sehen.


Gruß Stöbi


EDIT:
Beschäftige mich gerade mit dem Versuch der Ausblendung der Kategorie Default bzw. cat_id Nummer 1. Das ist die Funktion, aber wie das am geschicktesten anstellen?

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()

Gruß Stöbi
Zuletzt geändert von Stoebi am So 05.Jun, 2005 16:22, insgesamt 2-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Naja, gleich in der ersten Abfrage in Zeile 5:

Code: Alles auswählen

$sql = "SELECT * FROM " . SMILIES_TABLE . " ORDER BY cat_id DESC";
wird dann zu

Code: Alles auswählen

$sql = "SELECT * FROM " . SMILIES_TABLE . " WHERE cat_id <> 1 ORDER BY cat_id DESC";
Und aus der Zeile 14

Code: Alles auswählen

$cat = "SELECT * FROM " . SMILIES_CAT_TABLE ;
dieses hier

Code: Alles auswählen

$cat = "SELECT * FROM " . SMILIES_CAT_TABLE . WHERE cat_id <> 1";
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!
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

[quote="oxpus - Do 19.Mai, 2005 19:12";p="32462"]Naja, gleich in der ersten Abfrage in Zeile 5:

Code: Alles auswählen

$sql = "SELECT * FROM " . SMILIES_TABLE . " ORDER BY cat_id DESC";
wird dann zu

Code: Alles auswählen

$sql = "SELECT * FROM " . SMILIES_TABLE . " WHERE cat_id <> 1 ORDER BY cat_id DESC";
Und aus der Zeile 14

Code: Alles auswählen

$cat = "SELECT * FROM " . SMILIES_CAT_TABLE ;
dieses hier

Code: Alles auswählen

$cat = "SELECT * FROM " . SMILIES_CAT_TABLE . WHERE cat_id <> 1";
[/quote]

Guten Abend,

so ähnlich hatte ich es schon einmal probiert gehabt. Musste hinterher Browser neu starten. ;-)

Problem ist, es wird nun keine Kategorie mehr angezeigt. Verstehe ich nicht. Bin echt ratlos.


Gruß Stöbi


EDIT:
In Zeile 40 meines Beitrages Nummer 13 steht folgende:

Code: Alles auswählen

for($i = 1; $i <= $count; $i++) { 
Ich hab das so abgeändert:

Code: Alles auswählen

for($i = 2; $i <= $count; $i++) { 

Ich bin jetzt ein bischen verunsichert. Es funktioniert.

Ist das aber logisch und richtig?


Gruß Stöbi
Zuletzt geändert von Stoebi am So 05.Jun, 2005 16:21, insgesamt 3-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Damit wird auch die erste Kategorie ausgenommen. Allerdings dann immer die Kategorie mit der kleinsten ID!
Bitte nicht verwechseln mit Kategorie 1, denn das kann hier ggf. zu bösen Überraschungen führen!

Aber solange Du an den Kategorien nichts änderst, ist Deine Anpassung erstmal korrekt. Laienhaft aber es funktioniert und das ist die Hauptsache.
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!
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

[quote="oxpus - Do 19.Mai, 2005 20:08";p="32465"]Damit wird auch die erste Kategorie ausgenommen. Allerdings dann immer die Kategorie mit der kleinsten ID!
Bitte nicht verwechseln mit Kategorie 1, denn das kann hier ggf. zu bösen Überraschungen führen!

Aber solange Du an den Kategorien nichts änderst, ist Deine Anpassung erstmal korrekt. Laienhaft aber es funktioniert und das ist die Hauptsache.[/quote]

Ja, du hast Recht. Also, die Default Kategorie muss an erster Stelle bleiben.
Sobald eine andere Kategorie nach oben via ACP -> Allgemein -> Smilie Kategorien verschoben wird, ist diese dann unsichtbar und die Default Kategorie wird sichtbar.

Die Frage ist, lohnt sich der Aufwand dafür, dass noch abzuändern?

Erst einmal bin ich froh, dass es klappt. Aber bin natürlich auch neugierig und wissbegierig,
wie man das noch eleganter lösen könnte.

Vielleicht ein anderes Mal.


Schönen Abend noch.


Gruß Stöbi


EDIT:
Wenn ich so recht überlege, muss das gar nicht weiter angepasst werden.
Ich möchte ja, dass Default ausgeblendet wird und bleibt.

Muss nur hinkriegen in der admin_smilies_categories.php, dass wenn ich eine Kategorie "nach oben" anklicke, diese nicht an erster sondern an zweiter Stelle verschoben wird.


EDIT2:

Guten Morgen,

versuche mich nun an der Datei admin_smilies_categories.php und finde, so denke ich mal,
den richtigen Part:

Code: Alles auswählen

		case 'first':
			//
			// Admin has selected to put a category at first place
			//
		$sql1 = "UPDATE " . SMILIES_CAT_TABLE . " SET cat_id = 0 WHERE cat_id = ". $HTTP_GET_VARS['cat'];
		$db->sql_query($sql1);
		$sql2 = "UPDATE " . SMILIES_CAT_TABLE . " SET cat_id = cat_id+1 WHERE cat_id < ". $HTTP_GET_VARS['cat'];
		$db->sql_query($sql2);
		$sql3 = "UPDATE " . SMILIES_TABLE . " SET cat_id = 0 WHERE cat_id = ". $HTTP_GET_VARS['cat'];
		$db->sql_query($sql3);
		$sql4 = "UPDATE " . SMILIES_TABLE . " SET cat_id = cat_id+1 WHERE cat_id < ". $HTTP_GET_VARS['cat'];
		$db->sql_query($sql4);
		$message = $lang['smiley_cat_first_ok'] . "<br /><br />" . sprintf($lang['Click_return_smileadmin'], "<a href="" . append_sid("admin_smilies_category.$phpEx") . "">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href="" . append_sid("index.$phpEx?pane=right") . "">", "</a>");
		message_die(GENERAL_MESSAGE, $message);
		break;
	}
Ich bräuchte eigentlich nur doch SET cat_id = 0 auf SET cat_id = 1 setzen.
Weil in der nächsten Zeile dann cat_id = cat_id + 1 ausgeführt wird.
Jeweils in SMILIES_CAT_TABLE und SMILIES_TABLE.

Problem ist aber, ich kann immer noch die Smilie Kategorien an erster Stelle verschieben,
was dann ein heilloses Chaos ergibt. Wie kann ich die erste Kategorie die auch immer cat_id = 1
erhält, schützen also dass die gar nicht erst berührt wird die erste Kategorie und cat_id 1 behält?


Gruß Stöbi
Zuletzt geändert von Stoebi am So 05.Jun, 2005 16:21, insgesamt 6-mal geändert.
Antworten