Top 5 Poster Hack - Usernamen kürzen

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
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Top 5 Poster Hack - Usernamen kürzen

Beitrag von Stoebi »

Deine phpBB Version: phpBB2 Plus 1.5.2
MODs: Ja
Dein Wissensstand: Grundwissen
Link zu Deinem Forum: http://komsomolsk.spec-f.de

PHP Version: 4.3.10 und 4.3.9-1
MySQL Version: 4.1.10


Was hast Du gemacht, bevor das Problem aufgetreten ist?



Was hast Du bereits versucht um das Problem zu lösen?




Fehlerbeschreibung und Nachricht

Guten Abend,

ich habe diese Zeile:
'USERNAME' => color_group_colorize_name($row['user_id']),

Es wird die user-id in Usernamen und farbig aufgelöst. Soweit so gut.
Nur wie kann ich erreichen, dass der Username > 10 abgeschnitten wird, aber der Original Username mit dem Klick auf diesem erhalten bleibt?

Bei der Nickpagelist habe ich das so gelöst gehabt:

Code: Alles auswählen

$nickpage_list = $db->sql_fetchrowset($result);
for($i = 0; $i < count($nickpage_list); $i++)
{
$username = $nickpage_list[$i]['username'];
$usernameoriginal = $username;
$userdate = $nickpage_list[$i]['created'];


if(strlen($username) > 10)
{ // Limit title length to avoid wrap
$username = strip_tags($username, '<a><ul><li>');
$username = substr($username,0,8);
$username .= "...";
}
Die Variable $usernameoriginal kommt in dieser Zeile vor:

Code: Alles auswählen

'NAME' => '<a href="' . append_sid("nickpage.php?user=$usernameoriginal") . '">' . $username . '</a>',
Nur bei "Top 5 Posters" hänge ich wieder in der Luft und brauche bitte deine/eure Hilfe.


Hintergrund:
Ich möchte gerne die Ausgabe der Top 5 Poster Firefox Kompatibel machen.
Gefällt mir nicht, wie es mit Firefox aussieht. Dafür aber wieder mit IE und Opera.


Gruß Stöbi


Nachtrag:
Ich habe den Codeabschnitt vergessen, wo die Beschneidung hingehören müsste. ;-)

Code: Alles auswählen

// 
// Start Top 5 Posters hack 
$sql = "SELECT post_id FROM " . POSTS_TABLE . " ORDER BY post_id DESC LIMIT 1"; 
$result = $db->sql_query($sql); 
$row = $db->sql_fetchrow($result); 
$total_post_perc = $row['post_id']; 
$perc_mult = 3; 
$perc_mult_set = 0; 
$rank = 0; 
$sql = "SELECT user_id, username, user_posts FROM " . USERS_TABLE ." WHERE user_id <> -1 ORDER BY user_posts DESC LIMIT 5"; 
$result = $db->sql_query($sql); 
while( $row = $db->sql_fetchrow($result)) { 
   $rank++; 
   if (!($rank % 2)) $class = 'row2'; else $class= 'row1'; 
   $percentage = (get_db_stat('postcount') != 0) ? round(100 * $row['user_posts'] / get_db_stat('postcount'),0) : 0; 
   $bar_perc = round($percentage * $perc_mult,0); 
   $template->assign_block_vars("users", array( 
      'RANK' => $rank, 
      'CLASS' => $class, 
      'USERNAME' => color_group_colorize_name($row['user_id']),
      'PERCENTAGE' => $percentage, 
      'URL' => $phpbb_root_path . "profile.php?mode=viewprofile&u=" . $row['user_id'], 
      'BAR' => $bar_perc, 
      'POSTS' => $row['user_posts']) 
   ); 
} 
// End Top 5 Posters hack
Zuletzt geändert von Stoebi am So 21.Aug, 2005 20:49, 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 »

Dazu müsstest Du den Usernamen in der functions_color_groups.php anpassen, bzw. kürzen. Das würde dann aber Boardweit geschehen, also auch an Stellen, an denen das nicht unbedingt gewünscht ist.
Sowas ist zwar abstellbar, bzw. man könnte dazu die Funktion erweitern, um das nur an dieser Stelle im Portal zu erreichen, aber ist denn das Layout wirklich so sehr zerstört, daß das Sinn macht? Oder können sich Deine User nicht auf kurze Nicknamen einschiessen? >10 ist eher selten, >15 schon ein Tippmarathon beim Anmelden ;)
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!
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

>Nickpage

Einfacher ist es, so wie hier gelöst: http://www.oxpus.de/viewtopic.php?p=24186#24186
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

@ modbo
Da kommt kein color_groups zum einsatz! ;)
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

[quote="AmigaLink - So 21.Aug, 2005 21:12";p="42120"]@ modbo
Da kommt kein color_groups zum einsatz! ;)[/quote]
Ne, mir gings es auch um seine Lösung für die Nickpage, welche er ganz am Anfang beschreibt ;)
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

[quote="oxpus - So 21.Aug, 2005 20:57";p="42118"]Dazu müsstest Du den Usernamen in der functions_color_groups.php anpassen, bzw. kürzen. Das würde dann aber Boardweit geschehen, also auch an Stellen, an denen das nicht unbedingt gewünscht ist.
Sowas ist zwar abstellbar, bzw. man könnte dazu die Funktion erweitern, um das nur an dieser Stelle im Portal zu erreichen, aber ist denn das Layout wirklich so sehr zerstört, daß das Sinn macht? Oder können sich Deine User nicht auf kurze Nicknamen einschiessen? >10 ist eher selten, >15 schon ein Tippmarathon beim Anmelden ;)[/quote]

Vielleicht hast du ja kurz Zeit, mit Firfox auf meine Seite zu schauen. Linke Seite unter den Board Navigations Einträgen.

Vielleicht kann man das img vor dem Posternamen positionieren. Habe es mit middle, center schon probiert gehabt, leider ohne Erfolg.

Wäre dann diese Zeile anzupassen. Ausschnitt aus AmigaLink seinem Mod (Addon) Another Online-Offline indicator 1.2.1.zip:

Code: Alles auswählen

$user_onlinestatus = '<img src="' . $images['Offline_small'] . '" alt="' . $lang['Offline'] . '" title="' . $lang['Offline'] . '" border="0" />';



Gruß Stöbi
Zuletzt geändert von Stoebi am So 21.Aug, 2005 22:53, insgesamt 2-mal geändert.
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Poste mal den template code von der Box!
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

Moin,

der Part aus portal_body.tpl:

Code: Alles auswählen

<!-- BEGIN users -->
<td class="row1" align="center">&nbsp;{users.ONLINESTATUS}</td>
<td class="row1" align="left"><span class="gensmall"><a href="{users.URL}">&nbsp;{users.USERNAME}</a></span></td>
<td class="row1" align="center"><span class="gensmall"><b>&nbsp;&nbsp;{users.POSTS}</b></span></td>
</tr>
<!-- END users -->
Und hier der komplette Code Abschnitt "Top 5 Posters Hack":

Code: Alles auswählen

// Start Top 5 Posters hack
$sql = "SELECT post_id FROM " . POSTS_TABLE . " ORDER BY post_id DESC LIMIT 1";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$total_post_perc = $row['post_id'];
$perc_mult = 3;
$perc_mult_set = 0;
$rank = 0;
$sql = "SELECT user_id, username, user_posts, user_allow_viewonline, user_session_time FROM " . USERS_TABLE ." WHERE user_id <> -1 ORDER BY user_posts DESC LIMIT 5";
$result = $db->sql_query($sql);
while( $row = $db->sql_fetchrow($result)) {
   $rank++;
   if (!($rank % 2)) $class = 'row2'; else $class= 'row1';
   $percentage = (get_db_stat('postcount') != 0) ? round(100 * $row['user_posts'] / get_db_stat('postcount'),0) : 0;
   $bar_perc = round($percentage * $perc_mult,0);

// <!-- BEGIN Another Online/Offline indicator -->
		if ( !$row['user_allow_viewonline'] && $userdata['user_level'] == ADMIN || $row['user_allow_viewonline'] )
		{
			$current_time = time();
			$expiry_time = $current_time - 300;

			if ( $row['user_session_time'] >= $expiry_time )
			{
				$user_onlinestatus = '<img src="' . $images['Online_small'] . '" alt="' . $lang['Online'] . '" title="' . $lang['Online'] . '" border="0" />';

				if ( !$row['user_allow_viewonline'] && $userdata['user_level'] == ADMIN )
				{
					$user_onlinestatus = '<img src="' . $images['Hidden_Admin_small'] . '" alt="' . $lang['Hidden'] . '" title="' . $lang['Hidden'] . '" border="0" />';
				}
			}
			else
			{
				$user_onlinestatus = '<img src="' . $images['Offline_small'] . '" alt="' . $lang['Offline'] . '" title="' . $lang['Offline'] . '" border="0" />';

				if ( !$row['user_allow_viewonline'] && $userdata['user_level'] == ADMIN )
				{
					$user_onlinestatus = '<img src="' . $images['Offline_small'] . '" alt="' . $lang['Hidden'] . '" title="' . $lang['Hidden'] . '" border="0" />';
				}
			}
		}
		else
		{
			$user_onlinestatus = '<img src="' . $images['Offline_small'] . '" alt="' . $lang['Offline'] . '" title="' . $lang['Offline'] . '" border="0" />';
		}
// <!-- END Another Online/Offline indicator -->

   $template->assign_block_vars("users", array(
      'RANK' => $rank,
      'CLASS' => $class,
			'USERNAME' => color_group_colorize_name($row['user_id']),
// <!-- BEGIN Another Online/Offline indicator -->
			'ONLINESTATUS' => $user_onlinestatus,
// <!-- END Another Online/Offline indicator -->
      'PERCENTAGE' => $percentage,
      'URL' => $phpbb_root_path . "profile.php?mode=viewprofile&u=" . $row['user_id'],
      'BAR' => $bar_perc,
      'POSTS' => $row['user_posts'])
   );
}
// End Top 5 Posters hack

:)


Gruß Stöbi
Zuletzt geändert von Stoebi am Mo 22.Aug, 2005 01:47, insgesamt 1-mal geändert.
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Code: Alles auswählen

<!-- BEGIN users --> 
<td class="row1" align="center" valign="middle">&nbsp;{users.ONLINESTATUS}</td> 
<td class="row1" align="left"><span class="gensmall"><a href="{users.URL}">&nbsp;{users.USERNAME}</a></span></td> 
<td class="row1" align="center"><span class="gensmall"><b>&nbsp;&nbsp;{users.POSTS}</b></span></td> 
</tr> 
<!-- END users -->
oder

Code: Alles auswählen

<!-- BEGIN users --> 
<td class="row1" align="left"><span class="gensmall">&nbsp;{users.ONLINESTATUS}&nbsp;<a href="{users.URL}">&nbsp;{users.USERNAME}</a></span></td> 
<td class="row1" align="center"><span class="gensmall"><b>&nbsp;&nbsp;{users.POSTS}</b></span></td> 
</tr> 
<!-- END users -->
Bei der zweiten Lösung muss noch, über und unter, diesem Codeblock colspan="3" in colspan="2" geändert werden und evtl. im php-code bei allen

Code: Alles auswählen

$user_onlinestatus = '<img src="' . $images['xxx_small'] . '" alt="' . $lang['xxx'] . '" title="' . $lang['xxx'] . '" border="0" />';
zeilen ein align="middle" eingefügt werden!
Also:

Code: Alles auswählen

$user_onlinestatus = '<img src="' . $images['xxx_small'] . '" alt="' . $lang['xxx'] . '" title="' . $lang['xxx'] . '" border="0" align="middle" />';
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

Hallo Amigalink,

ich habe die zweite Lösung genommen. Sieht nicht mehr ganz so fürchterlich jetzt aus.

Dank dir.


Gruß Stöbi
Zuletzt geändert von Stoebi am Mi 24.Aug, 2005 07:19, insgesamt 1-mal geändert.
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Na, das freut doch. :)
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Antworten