Pagina 1 van 3

[bijna klaar voor release]Forum width is a forum option mod

Geplaatst: 29 nov 2004, 12:46
door RobinTown
//edit: mod is klaar, hier issie :)

Code: Selecteer alles

#################################################################
## Mod Title:   Forum width is a forum option mod
## Mod Version:	1.0.0
## Author:      Robin van der Markt <msn@robintown.nl> - http://www.robintown.nl/
## Description: Users can chose with this mod how width the forum is via a dropdown menu
##		with options (50-100%) in there profile.
##
## Installation Level: Easy
## Installation Time:  10 Minutes
## Files To Edit:      8
##                     admin/admin_users.php 
##                     includes/usercp_avatar.php
##			     includes/page_header.php
##                     includes/usercp_register.php
##                     language/lang_english/lang_main.php
##                     templates/subSilver/admin/user_edit_body.tpl
##                     templates/subSilver/overall_header.tpl
##                     templates/subSilver/profile_add_body.tpl
## Included Files:     n/a
#################################################################
## Author Note:
##
## Thanks to Acid's Modify Profile mod.
##
## Make sure your logo still fits!
##################################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
#################################################################
#
#-----[ SQL ]-------------------------------------------
# change phpbb_ to the database prefix you use  
# Replace 100 with your forums default.
ALTER TABLE phpbb_users ADD user_width TINYINT(4) DEFAULT "100"

# 
#-----[ OPEN ]------------------------------------------ 
#  
admin/admin_users.php 

# 
#-----[ FIND ]---------------------------------------------------
# 
		$interests = ( !empty($HTTP_POST_VARS['interests']) ) ? trim(strip_tags( $HTTP_POST_VARS['interests'] ) ) : '';

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
		$width = ( !empty($HTTP_POST_VARS['width']) ) ? trim(strip_tags( $HTTP_POST_VARS['width'] ) ) : ''; 

# 
#-----[ FIND (2x) ]--------------------------------------------
# 
			$interests = htmlspecialchars(stripslashes($interests));

# 
#-----[ AFTER ADD (2x) ]---------------------------------------------------
# 
			$width = htmlspecialchars(stripslashes($width));

# 
#-----[ FIND ]---------------------------------------------------
# 
			$sql = "UPDATE " . USERS_TABLE . "

# 
#-----[ ABOVE ADD ]---------------------------------------------------
# 
               		$width = ($width == $lang['width_choice']['0']) ? '' : $width;

# 
#-----[ IN-LINE FIND ]---------------------------------------------------
# 
$interests) . "'

# 
#-----[ IN-LINE AFTER ADD ]---------------------------------------------------
# 
, user_width = '" . str_replace("\'", "''", $width) . "'

# 
#-----[ FIND ]---------------------------------------------------
# 
		$interests = htmlspecialchars($this_userdata['user_interests']);

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
		$width = htmlspecialchars($this_userdata['user_width']);

# 
#-----[ FIND ]---------------------------------------------------
# 
			$s_hidden_fields .= '<input type="hidden" name="interests" value="' . str_replace("\"", """, $interests) . '" />';

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
			$s_hidden_fields .= '<input type="hidden" name="width" value="' . str_replace("\"", """, $width) . '" />'; 


# 
#-----[ FIND ]---------------------------------------------------
# 
		$template->set_filenames(array(
			"body" => "admin/user_edit_body.tpl")
		);

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
		$s_width = '<select name="width">';
		for($i = 0; $i < count($lang['width_choice']); $i++ )
		{
		        $s_width .= '<option value="' . $lang['width_choice'][$i] . '">' . $lang['width_choice'][$i]. '%</option>';
		}
		$s_width .= '</select>'; 
		$s_width = str_replace("value=\"".$width."\">", "value=\"".$width."\" SELECTED>" ,$s_width);

# 
#-----[ FIND ]---------------------------------------------------
# 
			'INTERESTS' => $interests,

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
			'S_WIDTH' => $s_width, 
			'L_WIDTH' => $lang['Width'],

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

# 
#-----[ FIND ]---------------------------------------------------
# 
function display_avatar_gallery($mode, &$category

# 
#-----[ IN-LINE FIND ]---------------------------------------------------
# 
&$interests

# 
#-----[ IN-LINE AFTER ADD ]---------------------------------------------------
# 
, &$width

# 
#-----[ FIND ]---------------------------------------------------
# 
$params = array('coppa', 'user_id'

# 
#-----[ IN-LINE FIND ]---------------------------------------------------
# 
'interests'

# 
#-----[ IN-LINE AFTER ADD ]---------------------------------------------------
# 
, 'width'

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

# 
#-----[ FIND ]---------------------------------------------------
# 
//
// Obtain number of new private messages
// if user is logged in
//

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
$width = $userdata['user_width'];

# 
#-----[ FIND ]---------------------------------------------------
# 
	'U_MEMBERLIST' => append_sid('memberlist.'.$phpEx),

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
	'S_WIDTH' => $width,

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

# 
#-----[ FIND ]---------------------------------------------------
# 
	$strip_var_list = array('username' => 'username', 'email' => 'email', 'icq' => 'icq', 'aim' => 'aim', 'msn' => 'msn', 'yim' => 'yim', 'website' => 'website', 'location' => 'location', 'occupation' => 'occupation', 'interests' => 'interests');

# 
#-----[ IN-LINE FIND ]---------------------------------------------------
# 
'interests' => 'interests'

# 
#-----[ IN-LINE AFTER ADD ]---------------------------------------------------
# 
, 'width' => 'width'

# 
#-----[ FIND (2x) ]---------------------------------------------------
# 
	$interests = stripslashes($interests);

# 
#-----[ AFTER ADD (2x) ]---------------------------------------------------
# 
	$width = stripslashes($width);


# 
#-----[ FIND ]---------------------------------------------------
# 
			$sql = "UPDATE " . USERS_TABLE . "

# 
#-----[ ABOVE ADD ]---------------------------------------------------
# 
               		$width = ($width == $lang['width_choice']['0']) ? '' : $width;

# 
#-----[ IN-LINE FIND ]---------------------------------------------------
# 
$interests) . "'

# 
#-----[ IN-LINE AFTER ADD ]---------------------------------------------------
# 
, user_width = '" . str_replace("\'", "''", $width) . "'

# 
#-----[ FIND ]---------------------------------------------------
# 
			$sql = "INSERT INTO " . USERS_TABLE . "

# 
#-----[ IN-LINE FIND ]---------------------------------------------------
# 
user_interests

# 
#-----[ IN-LINE AFTER ADD ]---------------------------------------------------
# 
, user_width

# 
#-----[ IN-LINE FIND ]---------------------------------------------------
# 
$interests) . "'

# 
#-----[ IN-LINE AFTER ADD ]---------------------------------------------------
# 
, '" . str_replace("\'", "''", $width) . "'

# 
#-----[ FIND ]---------------------------------------------------
# 
	$interests = $userdata['user_interests'];

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
	$width = $userdata['user_width'];

# 
#-----[ FIND ]---------------------------------------------------
# 
display_avatar_gallery($mode, $avatar_category

# 
#-----[ ABOVE ADD ]---------------------------------------------------
# 
	$width = ($width == $lang['width_choice']['0']) ? '' : $width;

# 
#-----[ IN-LINE FIND ]---------------------------------------------------
# 
$interests

# 
#-----[ IN-LINE AFTER ADD ]---------------------------------------------------
# 
, $width

# 
#-----[ FIND ]--------------------------
# 
	$template->assign_vars(array(
		'USERNAME' => $username,

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
		'S_WIDTH' => $s_width,
		'L_WIDTH' => $lang['Width'],

# 
#-----[ FIND ]---------------------------------------------------
# 
	$template->set_filenames(array(
		'body' => 'profile_add_body.tpl')
	);

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
	$s_width = '<select name="width">';
	for($i = 0; $i < count($lang['width_choice']); $i++ )
	{
	        $s_width .= '<option value="' . $lang['width_choice'][$i] . '">' . $lang['width_choice'][$i]. '%</option>';
	}
	$s_width .= '</select>'; 
	$s_width = str_replace("value=\"".$width."\">", "value=\"".$width."\" SELECTED>" ,$s_width);

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

# 
#-----[ FIND ]---------------------------------------------------
# 
$lang['Interests'] = 

# 
#-----[ BEFORE ADD ]---------------------------------------------------
# 
# You can change or delete some numbers when your forum doesn't fit in
# the bowser anymore when the forum is narrower
$lang['width_choice'] = array('-','80','85','90','95','100');
$lang['Width'] = Chose the forum width;


# 
#-----[ OPEN ]------------------------------------------ 
#  
templates/subSilver/admin/user_edit_body.tpl

# 
#-----[ FIND ]---------------------------------------------------
# 
	<tr> 
	  <th class="thSides" colspan="2" height="25" valign="middle">{L_PREFERENCES}</th>
	</tr>

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
        <tr> 
          <td class="row1"><span class="gen">{L_WIDTH}</span></td> 
	  <td class="row2"> {S_WIDTH}  </td>
         </tr>
# 
#-----[ OPEN ]------------------------------------------ 
#  
templates/subSilver/overall_header.tpl

# 
#-----[ FIND ]---------------------------------------------------
#
# The 100 can be different 
<table width="100%" cellspacing="0" cellpadding="10" border="0" align="center">

# 
#-----[ IN-LINE, FIND ]---------------------------------------------------
# 
100%

# 
#-----[ REPLACE WITH ]---------------------------------------------------
# 
{S_WIDTH}

# 
#-----[ OPEN ]------------------------------------------ 
#  
templates/subSilver/profile_add_body.tpl

# 
#-----[ FIND ]---------------------------------------------------
# 
	<tr> 
	  <th class="thSides" colspan="2" height="25" valign="middle">{L_PREFERENCES}</th>
	</tr>

# 
#-----[ AFTER ADD ]---------------------------------------------------
# 
	<tr> 
	  <td class="row1"><span class="gen">{L_WIDTH}:</span></td>
	  <td class="row2"> {S_WIDTH}  </td>
	</tr>

#
#-----[ SAVE/CLOSE ]------------------------------------------
#
# EoM
Txt file:

http://www.robintown.nl/Forum_width_is_ ... on_mod.txt

Als het goed is doet alles het :)

Geplaatst: 29 nov 2004, 12:47
door Rico
dropdown menu met keuze's?

Geplaatst: 29 nov 2004, 12:48
door RobinTown
hey goed idee :) ik zal het proberen

Geplaatst: 29 nov 2004, 13:11
door Rico
Maar hoe wou je het doen met het Logo?
je moet wel smaller logo hebben als je 50% hebt

Geplaatst: 29 nov 2004, 13:25
door RobinTown
De mod is klaar, ik ga hem nu testen

@rico: daar moet de admin voor zorgen, dat het forum gewoon blijft doen.
En wanneer het niet past vanaf bv 70, kan je de andere opties veranderen of weghalen :)
staat er ook bij

Geplaatst: 29 nov 2004, 13:27
door Rico
Robinforum schreef:De mod is klaar, ik ga hem nu testen

@rico: daar moet de admin voor zorgen, dat het forum gewoon blijft doen.
En wanneer het niet past vanaf bv 70, kan je de andere opties veranderen of weghalen :)
staat er ook bij
Oke
deze breng je wel uit he?
Btw lees je pm ff

Re: [dev]Breedte van het forum door gebruiker laten invullen

Geplaatst: 29 nov 2004, 14:25
door mosymuis
Robinforum schreef:Alleen hier kom ik bij me eerste vraag: Als iemand letters invult ipv cijfers, krijg je zeker errors.
Foutieve CSS geeft géén errors. Controlen kan je het toch wel, met is_numeric().
Rico schreef:dropdown menu met keuze's?
Dat kan de gebruiker nog steeds beïnvloeden, als hij dat wil.

Geplaatst: 29 nov 2004, 14:39
door RobinTown
hij is klaar, hij staat in me eerste post :)

alleen de sql is nog niet hoe ik het wil.

Hoe doe je dat hij standaard bij alle gebruikers een getal doet?

/edit: ik weet het al, is geedit in me eerste bericht

Geplaatst: 29 nov 2004, 16:01
door mosymuis

Code: Selecteer alles

## Files To Edit:      7
##                     language/lang_english/lang_main.php
##                     includes/usercp_register.php
##                     includes/usercp_avatar.php
##                     admin/admin_users.php
##                     templates/subSilver/profile_add_body.tpl
##                     templates/subSilver/overall_header.tpl
##                     templates/subSilver/admin/user_edit_body.tpl
Zou je deze niet beter op volgorde zetten? Bovendien mis je includes/page_header.php.

#
#-----[ SQL ]-------------------------------------------
#
# Replace 100 with your forums default.
ALTER TABLE phpbb_users ADD user_width VARCHAR(255) DEFAULT "100%"
Vergeet niet te vermelden dat ze phpbb_ aanpassen naar de tabel prefix. Daarnaast is VARCHAR(255) nogal onzorgvuldig voor het opslaan van percentages, CHAR(4) is dan logischer. Nog beter zou het zijn om het procentteken weg te laten, dat is immers toch altijd hetzelfde, en als kolomtype TINYINT(3) te kiezen. Controle op de invoer is dan ook beter mogelijk. % voeg je dan pas weer toe in overall_header.

Geplaatst: 29 nov 2004, 16:25
door RobinTown
mosymuis schreef:Zou je deze niet beter op volgorde zetten? Bovendien mis je includes/page_header.php.
gedaan en geadd
mosymuis schreef: Vergeet niet te vermelden dat ze phpbb_ aanpassen naar de tabel prefix. Daarnaast is VARCHAR(255) nogal onzorgvuldig voor het opslaan van percentages, CHAR(4) is dan logischer. Nog beter zou het zijn om het procentteken weg te laten, dat is immers toch altijd hetzelfde, en als kolomtype TINYINT(3) te kiezen. Controle op de invoer is dan ook beter mogelijk. % voeg je dan pas weer toe in overall_header.
Ik heb de percentage erbij staan omdat het dan in de profiel er beter uitziet en beter te begrijpen is.
Maar als het volgens jou beter is om CHAR(4) te gebruiken gebruik ik wel CHAR(4) :bier:

Geplaatst: 29 nov 2004, 16:37
door mosymuis
Robinforum schreef:Ik heb de percentage erbij staan omdat het dan in de profiel er beter uitziet en beter te begrijpen is.
Dat is geen reden, je kunt % in de bezoeker menu's er ook zelf bij plaatsen. De onderliggende waarde kan dan alsnog een gewoon getal zijn.

Geplaatst: 29 nov 2004, 16:41
door RobinTown
Wat is het verschil dan? Zo werkt het toch ook goed?

Geplaatst: 29 nov 2004, 16:44
door mosymuis
INT is efficiënter dan CHAR, en het controleren op waardes gaat gemakkelijker met getallen dan met strings. Bovendien is het % gewoon overbodig, je zou het je moeten aanwennen geen onnodige data dynamisch op te slaan.

Geplaatst: 29 nov 2004, 16:50
door RobinTown
nou oke, ook goed :)
hoe zorg je er dan voor dat je die % niet opslaat maar wel ziet in de editprofile

Geplaatst: 29 nov 2004, 16:53
door mosymuis
admin/admin_users.php & includes/usercp_register.php schreef:$s_width .= '<option value="' . $lang['width_choice'][$i] . '">' . $lang['width_choice'][$i]. '%</option>';
Zo.
$lang['width_choice'] = array('75%','80%','85%','90%','95%','100%');
Dit is niet echt handig, je kunt er beter een $board_config waarde bij maken die je dan zelf per 5 of 10 aftelt/optelt.

Geplaatst: 29 nov 2004, 17:06
door RobinTown
mosymuis schreef:
$lang['width_choice'] = array('75%','80%','85%','90%','95%','100%');
Dit is niet echt handig, je kunt er beter een $board_config waarde bij maken die je dan zelf per 5 of 10 aftelt/optelt.
$board_config betekend toch dat je het via het acp regeld? Dat snap ik niet, wil je dan in de acp -> configuratie een optie maken dat de admin kan kiezen tussen dat het 5 of 10 per keer optelt ofzo, of sla ik nu de plank volledig mis? :D

Geplaatst: 29 nov 2004, 17:09
door DaMnNaTiOn
Hmmm best leuk :)

Geplaatst: 29 nov 2004, 17:10
door mosymuis
Robinforum schreef:$board_config betekend toch dat je het via het acp regeld?
Jep.
Robinforum schreef:Dat snap ik niet, wil je dan in de acp -> configuratie een optie maken dat de admin kan kiezen tussen dat het 5 of 10 per keer optelt ofzo
Laat de admin bijvoorbeeld kiezen wat de maximale breedte is; 100 of maar 80%. Als je denkt dat dat niet nodig is kan je de optie ook volledig achterwege laten en het menu direct opbouwen in profile_add_body.

Geplaatst: 29 nov 2004, 17:15
door RobinTown
mosymuis schreef:
Robinforum schreef:Dat snap ik niet, wil je dan in de acp -> configuratie een optie maken dat de admin kan kiezen tussen dat het 5 of 10 per keer optelt ofzo
Laat de admin bijvoorbeeld kiezen wat de maximale breedte is; 100 of maar 80%. Als je denkt dat dat niet nodig is kan je de optie ook volledig achterwege laten en het menu direct opbouwen in profile_add_body.
Lijkt me niet nodig, omdat de gebruiker dat zelf kan kiezen. Wanneer zou het handiger zijn om maximaal 80% te hebben?

over welk menu heb je het :?

Geplaatst: 29 nov 2004, 17:18
door mosymuis
Robinforum schreef:Lijkt me niet nodig, omdat de gebruiker dat zelf kan kiezen. Wanneer zou het handiger zijn om maximaal 80% te hebben?
Geen idee, maar uit je $lang optie leek het me dat je iets door de admin in wou laten stellen. Zo niet, waarom maak je dat menu dan überhaupt dynamisch?

Robinforum schreef:over welk menu heb je het :?
Het selectiemenu'tje in de profielen, dat gene waar je hele mod om draait.