Page 1 of 1
Gruppenrechte: Seitenalias wird manipuliert
Posted: Tue May 18, 2010 12:06 pm
by nicmare
Ich habe ein ganz merkwürdiges Problem!
Wenn ich als Admin angemeldet bin, kann ich alle Seiten problemlos bearbeiten.
Wenn ich mich aber als einen anderen User, mit anderen Rechten anmelde und Seiten bearbeite, wird immer automatisch (man kommt garnicht in das Optionen Tab rein) der alias umgeschrieben!
aus testseite wird dann testseite-2. Ich habe festgestellt dass das nur bei Gruppen passiert, denen die Berechtigung "Manage All Content" fehlt. aber das ist ja irgendwie blöd! möchte nicht, dass der Editor den Options Tab sieht und dennoch soll der alias nicht umgeschrieben werden.
Re: Gruppenrechte: Seitenalias wird manipuliert
Posted: Tue May 18, 2010 2:09 pm
by NaN
Oha, das scheint ein Fehler zu sein.
Da das Feld für den Seitenalias bei Benutzern, die nicht auf den Tab Optionen zugreifen können, fehlt, wird, wenn in der config.php $config['auto_alias'] = true ist, automatisch ein Seitenalias aus dem Seitentitel bzw. dem Menutext generiert.
Da das Alias aber schon vergeben ist (sofern man Titel/Menutext nicht ändert), wird automatisch eine "-2" angehängt.
Es wird also nicht geprüft, ob der User Seitenaliases ändern darf bzw. wird, wenn das Feld fehlt, nicht der alte Seitenalias genommen.
Das ist insbesondere in SEO Hinsicht etc. äußerst schlecht.
Jedesmal wenn man die Seite ändert, führen alle Links ins Leere...
Das sollt emit ein paar Zeilen Code im Contenttype behoben sein.
Ich schau mal nach (inzwischen kenne ich die Inhaltstypen ja auswendig

).
LÖSUNG: Gruppenrechte: Seitenalias wird manipuliert
Posted: Tue May 18, 2010 3:09 pm
by NaN
Lösung (ich weiß nicht, ob es
die Lösung ist, aber es ist zumindest eine Lösung, die ich auch gleich bei AdvancedContent einbauen werde):
In der Datei lib/classes/contenttypes/Content.inc.php in Zeile 108 direkt nach diesem Code:
Code: Select all
// metadata
if (isset($params['metadata']))
{
$this->mMetadata = $params['metadata'];
}
folgendes einfügen:
Code: Select all
// if we have a new menutext -> use new one
if(isset($params['menutext']) && trim($params['menutext'])!='')
$this->mMenuText = trim($params['menutext']);
// else use old one
else
$params['menutext'] = $this->mMenuText;
// if we have a new title -> use new one
if(isset($params['title']) && trim($params['title'])!='')
$this->mName = trim($params['title']);
// else use old one
else
$params['title'] = $this->mName;
// if we have no title given but menutext -> use menutext as title
if($this->mName == '' && $this->mMenuText !='') {
$this->mName = $this->mMenuText;
$params['title'] = $this->mName;
}
// if we have no menutext given but title -> use title as menutext
if($this->mMenuText == '' && $title != '') {
$this->mMenuText = $this->mName;
$params['menutext'] = $this->mMenuText;
}
// if we have a new alias -> use new one
if(isset($params['alias']))
$this->mAlias = trim($params['alias']);
// else use old one
else
$params['alias'] = $this->mAlias;
// if alias is empty -> use menutext as alias
if($this->mAlias == '') {
$this->mAlias = $this->mMenuText;
$params['alias'] = $this->mAlias;
}
Somit wird verhindert, dass sich der Seitenalias bei Usern ohne Berechtigung "Manage All Content" jedesmal ändert, wenn man den Menütext ändert.
Außerdem wird verhindert, dass, wenn man garnichts ändert eine "-2" am Alias angehängt wird.
Re: Gruppenrechte: Seitenalias wird manipuliert
Posted: Tue May 18, 2010 3:14 pm
by nicmare
ah super. danke. solltet man das noch irgendwo als bug eintragen? habe den bugtracker immernur bei modulen genutzt. aber nicht bei internen geschichten
Re: Gruppenrechte: Seitenalias wird manipuliert
Posted: Tue May 18, 2010 3:43 pm
by NaN
Yepp, sollte man eigentlich immer

Aber während ich das gerade machen wollte fiel mir ein, dass diese Lösung etwas umständlich ist.
Denn die gilt jetzt nur für den Inhaltstypen "Inhalt".
Bei allen anderen Inhaltstypen, die ein Seitenalias verlangen tritt der Fehler erneut auf.
D.h. man muss etwas weiter "unten" ansetzen.
Nich bei den Inhaltstypen, sondern beim Content Objekt selbst.
Und da sind es nur zwei Zeilen Code die man einfügen muss
Also Kommando zurück!
Besser wäre in der Datei lib/classes/class.content.inc.php in Zeile 1470 vor $this->SetAlias($tmp); folgendes einfügen:
Code: Select all
// added by NaN (bugfix to prevent changing alias if user has no permission)
else
$tmp = $this->mOldAlias;
Somit gilt es für alle Inhaltstypen.
Und die Zeile ist eigentlich auch selbsterklärend.
Wenn kein Alias angegeben ist, einfach das alte verwenden.
Re: Gruppenrechte: Seitenalias wird manipuliert
Posted: Tue May 18, 2010 3:44 pm
by RonnyK
Hast du das Problem auf 1.7.1?
Weil Ich habe gerade getestet auf mein SVN-version, und da passiert es nicht.
Ronny
Re: Gruppenrechte: Seitenalias wird manipuliert
Posted: Tue May 18, 2010 3:55 pm
by NaN
Yepp. CMSms 1.7.1.
Bugreport habe ich gerade geschrieben.