MyBB.de Forum

Normale Version: Optionales Feld
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Dazu müsste man noch in den Code des ACP eingreifen. Einfacher wäre da wohl ein zusätzliches Modul zu machen, bei der man mit einem Klick auf einem Button das Feld freischaltet. Ich habe jedoch zu wenig Verständnis vom ACP um ein Modul zu schreiben. Jockl hat da mehr Erfahrung.
Da muss ich Dich leider enttäuschen. An ACP-Module habe ich mich bislang nicht heran gewagt.

Wenn es die Möglichkeit gäbe, dieses Plugin noch um entsprechende Einstellungen erweitern zu können, dann wäre das prima. Aber auch hier kann ich leider nicht weiterhelfen.

Mein Vorschlag wäre deshalb, zunächst allen Neuanmeldungen die Erlaubnis zu entziehen, eine Homepage einzutragen. Zu einem bestimmten Zeitpunkt könnte der Admin dann aber bestimmte User im ACP in eine andere Usergruppe stecken, die dann im Benutzer-CP eine URL eingeben können.

Im Grunde ist das auch nicht mehr Aufwand als "Ich brauchte dann die Option nur für jeweiligen User freischalten"....

Dazu wäre eine Templateänderung notwendig. Die Codeänderungen könnte man entweder direkt in die usercp.php einbauen, oder man benutzt frostschutz' Patches Plugin. Die Codeänderungen könnten dann auch via xml-Import stattfinden. Dann könnte man sich die Anpassung der usercp.php bei einem möglichen Update von MyBB sparen. Die xml-Datei könnte ich Dir zukommen lassen.

Es liegt an Dir, Torie Wink
Hallo ihr Beiden,

danke Euch! Ich würde es dann gerne so machen wie von Dir Jockl vorgeschlagen. Neue Mitglieder werden von mir ja über die Linktausch Möglichkeit informiert und wenn Sie zustimmen, könnte ich Sie dann in der jeweiligen Gruppe integrieren. Da dort ja dann nur User sind die Ihre Website eintragen konnten. Wie müsste ich denn dann vorgehen? Es wäre toll wenn ich die xml-Datei von Dir erhalten könnte, müsste nur wissen wo ich die auf dem Rooter unterbringen muss, also in welchen Ordner.

Welche Datei muss ich jetzt ändern sodass kein Mitglied (Außer besagte Gruppe dann) mehr seine Website im Profil eintragen kann? Wie müsste der Code aussehen? Ich bedanke mich schon einmal herzlichst, freue mich das ich es doch realisieren kann, geht nur durch Euch, DANKE!

LG Torie
Im Grunde ist alles, was notwendig ist, oben schon beschrieben. Hier aber noch einmal eine Zusammenfassung bzw. Modifikation.

Suche im Template usercp_profile folgende Zeilen
Code:
<tr>
<td colspan="3"><span class="smalltext">{$lang->website_url}</span></td>
</tr>
<tr>
<td colspan="3"><input type="text" class="textbox" name="website" size="25" maxlength="75" value="{$user['website']}" /></td>
</tr>
und ersetze diese durch
Code:
{$user['website']}

In der Datei usercp.php sind folgende Zeilen
PHP-Code:
if($user['website'] == "" || $user['website'] == "http://")
{
    
$user['website'] = "http://";
}
else
{
    
$user['website'] = htmlspecialchars_uni($user['website']);

durch diese zu ersetzen
PHP-Code:
$my_usercheck "2,5";   //Eingabe der Usergruppen-IDs (getrennt durch Komma), die keine Website eingeben dürfen  
if(!user_in_group($mybb->user$my_usercheck))
{
    if(
$user['website'] == "" || $user['website'] == "http://")
    {
        
$user['website'] = "<tr><td colspan=\"3\"><span class=\"smalltext\">{$lang->website_url}</span></td></tr><tr><td colspan=\"3\"><input type=\"text\" class=\"textbox\" name=\"website\" size=\"25\" maxlength=\"75\" value=\"http://\" /></td></tr>";
    }
    else
    {
        
$user['website'] = "<tr><td colspan=\"3\"><span class=\"smalltext\">{$lang->website_url}</span></td></tr><tr><td colspan=\"3\"><input type=\"text\" class=\"textbox\" name=\"website\" size=\"25\" maxlength=\"75\" value=\"".htmlspecialchars_uni($user['website'])."\" /></td></tr>";
    }
}
else
{
    
//Entweder als verstecktes input-Feld (derzeit auskommentiert) oder mit einem Hinweis an den User.
    //$user['website'] = "<input type=\"hidden\" value=\"{$user['website']}\" />";
    
$user['website'] = "<tr><td colspan=\"3\"><span class=\"smalltext\">{$lang->website_url}</span></td></tr><tr><td colspan=\"3\"><input type=\"hidden\" value=\"{$user['website']}\" /><span class=\"smalltext\">Für die Eingabe einer Website, ist eine Freischaltung des Admin notwendig.</span></td></tr>";

In der Variable $my_usercheck sind nun die beiden Usergruppen 2 (reg. User) und 5 (awaiting activation) angegeben. Diese erhalten keine Berechtigung, eine Homepage einzugeben. Du kannst die IDs ggf. auch noch um weitere ergänzen.
Beachte den Hinweis "Entweder als verstecktes input-Feld (derzeit auskommentiert) oder mit einem Hinweis an den User." in den o.a. Zeilen. Du kannst hier das ein oder andere wählen und die jeweilige Zeile entsprechend kommentieren. Im Moment wird den entsprechenden Usern eine Nachricht ausgegeben, das für die Eingabe einer Homepage eine Freischaltung des Admin notwendig ist.

Bei dem o.a. Code habe ich auch die sog. sekundären Usergruppen berücksichtigt. Deshalb ist am Ende der usercp.php (als vor dem "?>") folgende Funktion einzutragen (diese hat King Louis hier mal zur Verfügung gestellt)
PHP-Code:
// checking for primary and secondary usergroup settings
function user_in_group($user$allowedgroups)
{
  
$allowedgroups explode(","$allowedgroups);
  
$groups explode(','$user['additionalgroups']);
  if(
is_array($groups))
      
array_push($groups$user['usergroup']);
  else
      
$groups = array($user['usergroup']);
  
  
$in false;
  foreach (
$groups as $group) {
      if(
in_array($group$allowedgroups)) {
         
$in true;
      }
  }
  return 
$in;


Für die Codeänderungen (nicht die Templateänderung) kannst Du auch das bereits o.a. Patches Plugin verwenden. Hierzu musst Du das Plugin installieren und aktivieren, dann die hier angehängte xml-Datei (im zip-File enthalten) importieren und aktivieren. Der Vorteil: Du musst keine manuellen Codeänderungen durchführen und sollte sich mal durch ein MyBB-Upgrade die usercp.php ändern, musst Du die Codeänderungen einfach nur über das Patches Plugin wieder aktivieren. Achtung: für das Patches-Plugin muss die usercp.php ggf. CHMOD 777 erhalten. Das kommt auf Deine Servereinstellungen an.


Edit by Jockl: Code und Anhang korrigiert
Hallo Jockl,

hab vielen herzlichen Dank, auch an King Louis für den bereitgestellten Code! Ich hatte zuerst einmal alle Codeänderungen vorgenommen, und habe danach das ,,Patches Plugin" integriert, allerdings war dieses veraltet sodass ich das neue ,,frostschutz" bzw ,,PluginLibrary-11" integrieren musste. Es gab im Forum dann eine unschöne Meldung sodass ich nur das ,,hello_pl" wieder vom Rooter entfernt habe. Hatte die xml-Datei von Dir versucht über die Template zu integrieren, dann kam eine Fehlermeldung (Siehe Anhang 1):

Die unschöne Meldung ist jetzt wieder wech und es scheint alles noch zu laufen. Allerdings muss ich beim eintragen jeweiliger vorgegebener Codes von Dir, irgend einen Fehler gemacht haben. Wenn ich als Moderator im Profil schaue habe ich nun eine doppelte Website Eintragsmöglichkeit (Siehe Anhang 2):

Wenn ich als neu Registriertes Mitglied ins Profil schaue, ist ein Umlaut Problem - welches ich aber beheben kann - vorhanden, und die von Dir vorgegebene Nachricht doppelt (Siehe Anhang 3):

Welcher Fehler könnte mir da unterlaufen sein?

LG Torie
(05.01.2013, 18:43)Torie schrieb: [ -> ]Ich hatte zuerst einmal alle Codeänderungen vorgenommen, und habe danach das ,,Patches Plugin" integriert
Hast Du die Änderungen in der usercp.php vorgenommen und dann trotzdem noch versucht, zusätzlich das Patches Plugin zu nutzen? Das wäre des Guten zuviel.

(05.01.2013, 18:43)Torie schrieb: [ -> ]Hatte die xml-Datei von Dir versucht über die Template zu integrieren, dann kam eine Fehlermeldung (Siehe Anhang 1):
Du darfst das nicht bei den Themes importieren, sondern unter dem Patches-Tab im ACP.

(05.01.2013, 18:43)Torie schrieb: [ -> ]Wenn ich als Moderator im Profil schaue habe ich nun eine doppelte Website Eintragsmöglichkeit (Siehe Anhang 2):
Für das Mod-CP ist das auch nicht gedacht. Da gehe ich davon aus, dass sowohl die Mods und der Admin nicht einfach eine Homepage bei den Usern eintragen.

Alerdings kann ich den Fehler nicht nachvollziehen. Bei mir erscheint der Fehler nicht. Also gehe ich davon aus, dass Du irgendwo einen Fehler gemacht hast.

(05.01.2013, 18:43)Torie schrieb: [ -> ]Wenn ich als neu Registriertes Mitglied ins Profil schaue, ist ein Umlaut Problem - welches ich aber beheben kann...
Solltest Du die Änderungen direkt in der usercp.php durchgeführt haben, dann hast Du ggf. einen falschen Editor verwendet.
(05.01.2013, 19:10)Jockl schrieb: [ -> ]Hast Du die Änderungen in der usercp.php vorgenommen und dann trotzdem noch versucht, zusätzlich das Patches Plugin zu nutzen? Das wäre des Guten zuviel.

Ja, ich hatte beides integriert*schäm* Habe nun die Plugins wieder deaktiviert und vom Rooter entfernt.

(05.01.2013, 19:10)Jockl schrieb: [ -> ]Du darfst das nicht bei den Themes importieren, sondern unter dem Patches-Tab im ACP.

Achso, war mein Fehler.

(05.01.2013, 19:10)Jockl schrieb: [ -> ]Für das Mod-CP ist das auch nicht gedacht. Da gehe ich davon aus, dass sowohl die Mods und der Admin nicht einfach eine Homepage bei den Usern eintragen.

Korrekt. Diese Aufgabe erledige ich selber da es auch keine anderen Admins geben wird.

(05.01.2013, 19:10)Jockl schrieb: [ -> ]Alerdings kann ich den Fehler nicht nachvollziehen. Bei mir erscheint der Fehler nicht. Also gehe ich davon aus, dass Du irgendwo einen Fehler gemacht hast.

Ich vermute das es am Template Code liegen könnte, bin mir nicht sicher ob ich alles richtig gemacht habe?

PHP-Code:
<html>
<
head>
<
title>{$mybb->settings['bbname']} - {$lang->edit_profile}</title>
{
$headerinclude}
</
head>
<
body>
{
$header}
<
form action="usercp.php" method="post" name="input">
<
input type="hidden" name="my_post_key" value="{$mybb->post_code}/>
<
table width="100%" border="0" align="center">
<
tr>
{
$usercpnav}
<
td valign="top">
{
$errors}
<
table border="0" cellspacing="{$theme['borderwidth']}cellpadding="{$theme['tablespace']}class="tborder">
<
tr>
<
td class="thead" colspan="2"><strong>{$lang->edit_profile}</strong></td>
</
tr>
<
tr>
<
td width="50%" class="trow1" valign="top">
<
fieldset class="trow2">
<
legend><strong>{$lang->profile_required}</strong></legend>
<
table cellspacing="0" cellpadding="{$theme['tablespace']}">
<
tr>
<
td colspan="2"><span class="smalltext"><strong>{$lang->change_email_notice}</strong></span></td>
</
tr>
{
$requiredfields}
</
table>
</
fieldset>
<
br />
<
fieldset class="trow2">
<
legend><strong>{$lang->profile_optional}</strong></legend>
<
table cellspacing="0" cellpadding="{$theme['tablespace']}">
<
tr>
<
td colspan="3"><span class="smalltext">{$lang->birthday}</span></td>
</
tr>
<
tr>
<
td>
<
select name="bday1">
<
option value="">&nbsp;</option>
{
$bdaydaysel}
</
select>
</
td>
<
td>
<
select name="bday2">
<
option value="">&nbsp;</option>
<
option value="1" {$bdaymonthsel['1']}>{$lang->month_1}</option>
<
option value="2" {$bdaymonthsel['2']}>{$lang->month_2}</option>
<
option value="3" {$bdaymonthsel['3']}>{$lang->month_3}</option>
<
option value="4" {$bdaymonthsel['4']}>{$lang->month_4}</option>
<
option value="5" {$bdaymonthsel['5']}>{$lang->month_5}</option>
<
option value="6" {$bdaymonthsel['6']}>{$lang->month_6}</option>
<
option value="7" {$bdaymonthsel['7']}>{$lang->month_7}</option>
<
option value="8" {$bdaymonthsel['8']}>{$lang->month_8}</option>
<
option value="9" {$bdaymonthsel['9']}>{$lang->month_9}</option>
<
option value="10" {$bdaymonthsel['10']}>{$lang->month_10}</option>
<
option value="11" {$bdaymonthsel['11']}>{$lang->month_11}</option>
<
option value="12" {$bdaymonthsel['12']}>{$lang->month_12}</option>
</
select>
</
td>
<
td>
<
input type="text" class="textbox" size="4" maxlength="4" name="bday3" value="{$bday['2']}/>
</
td>
</
tr>
<
tr>
<
td colspan="3">
<
span class="smalltext">{$lang->birthdayprivacy}</span>
</
td>
</
tr>
<
tr>
<
td colspan="3">
<
select name="birthdayprivacy">
{
$bdayprivacysel}
</
select>
</
td>
</
tr>
<
tr>
<
td colspan="3"><span class="smalltext">{$user['website']}</span></td>
</
tr>
<
tr>
<
td colspan="3"><input type="text" class="textbox" name="website" size="25" maxlength="75" value="{$user['website']}/></td>
</
tr>
</
table>
</
fieldset>
{
$customfields}
</
td>
<
td width="50%" class="trow1" valign="top">
{
$customtitle}
<
fieldset class="trow2">
<
legend><strong>{$lang->additional_contact_details}</strong></legend>
<
table cellspacing="0" cellpadding="{$theme['tablespace']}">
<
tr>
<
td><span class="smalltext">{$lang->icq_number}</span></td>
</
tr>
<
tr>
<
td><input type="text" class="textbox" name="icq" size="25" value="{$user['icq']}/></td>
</
tr>
<
tr>
<
td><span class="smalltext">{$lang->aim_screenname}</span></td>
</
tr>
<
tr>
<
td><input type="text" class="textbox" name="aim" size="25" value="{$user['aim']}/></td>
</
tr>
<
tr>
<
td><span class="smalltext">{$lang->msn}</span></td>
</
tr>
<
tr>
<
td><input type="text" class="textbox" name="msn" size="25" value="{$user['msn']}/></td>
</
tr>
<
tr>
<
td><span class="smalltext">{$lang->yahoo_id}</span></td>
</
tr>
<
tr>
<
td><input type="text" class="textbox" name="yahoo" size="25" value="{$user['yahoo']}/></td>
</
tr>
</
table>
</
fieldset>
{
$awaysection}
</
td>
</
tr>
</
table>
<
br />
<
div align="center">
<
input type="hidden" name="action" value="do_profile" />
<
input type="submit" class="button" name="regsubmit" value="{$lang->update_profile}/>
</
div>
</
td>
</
tr>
</
table>
</
form>
{
$footer}
</
body>
</
html

(05.01.2013, 19:10)Jockl schrieb: [ -> ]Solltest Du die Änderungen direkt in der usercp.php durchgeführt haben, dann hast Du ggf. einen falschen Editor verwendet.

Ich habe bisher den Standart von Windows7 benutzt, hatte aber den Notepad++ installiert, allerdings kommt immer noch der Alte zum Vorschein. Bisher hatte ich aber beim Eintragen kaum Probleme, kann lediglich die Zeilen nur nicht sehen. Mit dem PC kenne ich mich auch nur sehr gering aus. Blush

Ich habe jetzt das Umlaut Problem behoben und ebenso die Gruppen IDs alle integriert wo keine Website setzen sollen. Funktioniert, da das Feld nicht mehr sichtbar ist, einzig und alleine deine vorgegebene Nachricht, die allerdings zweimal erscheint (Siehe Anhang) Bei der Usergruppe wo Homepages eintragen dürfen, erscheint zwar das Eingabefeld, allerdings ist im diesen folgender Teilcode enthalten:

Zitat:<tr><td colspan=


Hast du eine Idee was ich falsch gemacht haben könnte?

LG Torie
(05.01.2013, 21:24)Torie schrieb: [ -> ]Ich vermute das es am Template Code liegen könnte, bin mir nicht sicher ob ich alles richtig gemacht habe?

Bitte suche genau diese Zeilen in dem Template
Code:
<tr>
<td colspan="3"><span class="smalltext">{$lang->website_url}</span></td>
</tr>
<tr>
<td colspan="3"><input type="text" class="textbox" name="website" size="25" maxlength="75" value="{$user['website']}" /></td>
</tr>
und ersetze diese durch
Code:
{$user['website']}

Das hast Du in dem Template, das Du oben gezeigt hast, falsch gemacht.

(05.01.2013, 21:24)Torie schrieb: [ -> ]Ich habe bisher den Standart von Windows7 benutzt, hatte aber den Notepad++ installiert, allerdings kommt immer noch der Alte zum Vorschein. Bisher hatte ich aber beim Eintragen kaum Probleme, kann lediglich die Zeilen nur nicht sehen. Mit dem PC kenne ich mich auch nur sehr gering aus.
Bitte beachte diese Seite aus der Doku. Und achte darauf, dass die Datei mit der Kodierung "UTF-8 ohne BOM" oder "UTF-8" abgespeichert wird. Dann werden die Umlaute richtig angezeigt.

(05.01.2013, 21:24)Torie schrieb: [ -> ]....erscheint zwar das Eingabefeld, allerdings ist im diesen folgender Teilcode enthalten:
Code:
<tr><td colspan=
Das sollte eigentlich behoben sein, wenn Du die Änderung im Template korrekt durchführst.
Danke Dir! Also ich habe den Code jetzt so eingetragen, ist das jetzt richtig?

PHP-Code:
<html>
<
head>
<
title>{$mybb->settings['bbname']} - {$lang->edit_profile}</title>
{
$headerinclude}
</
head>
<
body>
{
$header}
<
form action="usercp.php" method="post" name="input">
<
input type="hidden" name="my_post_key" value="{$mybb->post_code}/>
<
table width="100%" border="0" align="center">
<
tr>
{
$usercpnav}
<
td valign="top">
{
$errors}
<
table border="0" cellspacing="{$theme['borderwidth']}cellpadding="{$theme['tablespace']}class="tborder">
<
tr>
<
td class="thead" colspan="2"><strong>{$lang->edit_profile}</strong></td>
</
tr>
<
tr>
<
td width="50%" class="trow1" valign="top">
<
fieldset class="trow2">
<
legend><strong>{$lang->profile_required}</strong></legend>
<
table cellspacing="0" cellpadding="{$theme['tablespace']}">
<
tr>
<
td colspan="2"><span class="smalltext"><strong>{$lang->change_email_notice}</strong></span></td>
</
tr>
{
$requiredfields}
</
table>
</
fieldset>
<
br />
<
fieldset class="trow2">
<
legend><strong>{$lang->profile_optional}</strong></legend>
<
table cellspacing="0" cellpadding="{$theme['tablespace']}">
<
tr>
<
td colspan="3"><span class="smalltext">{$lang->birthday}</span></td>
</
tr>
<
tr>
<
td>
<
select name="bday1">
<
option value="">&nbsp;</option>
{
$bdaydaysel}
</
select>
</
td>
<
td>
<
select name="bday2">
<
option value="">&nbsp;</option>
<
option value="1" {$bdaymonthsel['1']}>{$lang->month_1}</option>
<
option value="2" {$bdaymonthsel['2']}>{$lang->month_2}</option>
<
option value="3" {$bdaymonthsel['3']}>{$lang->month_3}</option>
<
option value="4" {$bdaymonthsel['4']}>{$lang->month_4}</option>
<
option value="5" {$bdaymonthsel['5']}>{$lang->month_5}</option>
<
option value="6" {$bdaymonthsel['6']}>{$lang->month_6}</option>
<
option value="7" {$bdaymonthsel['7']}>{$lang->month_7}</option>
<
option value="8" {$bdaymonthsel['8']}>{$lang->month_8}</option>
<
option value="9" {$bdaymonthsel['9']}>{$lang->month_9}</option>
<
option value="10" {$bdaymonthsel['10']}>{$lang->month_10}</option>
<
option value="11" {$bdaymonthsel['11']}>{$lang->month_11}</option>
<
option value="12" {$bdaymonthsel['12']}>{$lang->month_12}</option>
</
select>
</
td>
<
td>
<
input type="text" class="textbox" size="4" maxlength="4" name="bday3" value="{$bday['2']}/>
</
td>
</
tr>
<
tr>
<
td colspan="3">
<
span class="smalltext">{$lang->birthdayprivacy}</span>
</
td>
</
tr>
<
tr>
<
td colspan="3">
<
select name="birthdayprivacy">
{
$bdayprivacysel}
</
select>
</
td>
</
tr>
{
$user['website']}
</
table>
</
fieldset>
{
$customfields}
</
td>
<
td width="50%" class="trow1" valign="top">
{
$customtitle}
<
fieldset class="trow2">
<
legend><strong>{$lang->additional_contact_details}</strong></legend>
<
table cellspacing="0" cellpadding="{$theme['tablespace']}">
<
tr>
<
td><span class="smalltext">{$lang->icq_number}</span></td>
</
tr>
<
tr>
<
td><input type="text" class="textbox" name="icq" size="25" value="{$user['icq']}/></td>
</
tr>
<
tr>
<
td><span class="smalltext">{$lang->aim_screenname}</span></td>
</
tr>
<
tr>
<
td><input type="text" class="textbox" name="aim" size="25" value="{$user['aim']}/></td>
</
tr>
<
tr>
<
td><span class="smalltext">{$lang->msn}</span></td>
</
tr>
<
tr>
<
td><input type="text" class="textbox" name="msn" size="25" value="{$user['msn']}/></td>
</
tr>
<
tr>
<
td><span class="smalltext">{$lang->yahoo_id}</span></td>
</
tr>
<
tr>
<
td><input type="text" class="textbox" name="yahoo" size="25" value="{$user['yahoo']}/></td>
</
tr>
</
table>
</
fieldset>
{
$awaysection}
</
td>
</
tr>
</
table>
<
br />
<
div align="center">
<
input type="hidden" name="action" value="do_profile" />
<
input type="submit" class="button" name="regsubmit" value="{$lang->update_profile}/>
</
div>
</
td>
</
tr>
</
table>
</
form>
{
$footer}
</
body>
</
html

Jetzt ist aber kein Eingabefeld vorhanden, dafür erscheint die Nachricht aber nur einmal. Danke für die Doku, werde mich da informieren gehen!

LG Torie
(05.01.2013, 21:57)Torie schrieb: [ -> ]Jetzt ist aber kein Eingabefeld vorhanden, dafür erscheint die Nachricht aber nur einmal.
Das wolltest Du doch!? Die Usergruppen 2 und 5 können das Feld nun nicht mehr sehen. Alle anderen Usergruppen erhalten das Feld und können eine Eingabe vornehmen.
Seiten: 1 2 3