Daniel_S schriebaber mit
$access = $this->id = 1
würdest du ja nur den zugriff auf der seite mit der id 1 zulassen wenn dem so wäre wie du bei der id vermutest, oder?
Ne, die Abfrage lautet ja:
if (($this->id && $access) || ($BE_USER->user['admin'] && !$this->id))
Da kommt es nur darauf an, dass die $this->id nicht false / empty / 0 ist 😉
Ist aber wie gesagt keine saubere Lösung ...
Vielleicht ist der Web-Modulbereich auch nicht die richtige Stelle für das Forum, da sollten ja eigentlich Dinge untergebracht sein, die sich auf eine konkrete Seite beziehen und das Forum-modul bezieht sich ja auf die komplette T3-Installation. Von daher war der Tools-Bereich eiegentlich i.O., nur eben nicht für !admins freizugeben.
CU
maxhb
naja, aber besser das modul in web, als die ganze admingeschichte zu modifizieren... oder?
HI!
Habe folgendes an den Autoren Zach Davis geschickt, Antwort werde ich hier veröffentlichen:
maxhb schriebHi Zach!
It's me again :-)
A little problem with the chc_forum extension:
It's located within the tools module section which can not be used by non admin users. This will prevent any "normal" user from being forum admin.
Workaround: Move Module to Web-Modules section by modifying the souirce code.
This works fine for me but the user authorization needs to be adjusted. Probably Web-Modules isn't even the right plcae to insert chc_forum ...
Best regards
Marc
CU
maxhb
Daniel_S schriebschau dir mal die klasse t3lib/class.t3lib_scbase.php an. in zeile 145 wird id initialisiert...
um dann in init() verwendet zu werden zeile 251
Guter Tipp!!!
Das komische ist, dass in der init()-Methode der Klasse t3lib_SCbase der Wert $this->id korrekt gesetzt wird. Diese Methode wird auch im Forumsmodul per parent::init() aufgerufen, kommt aber scheinbar nur auf der Startseite der Forumsadministration an. Klickt man dort ein bestimmtes Forum an, dann verliert $this->id seinen Wert und alles ist hin 😢
CU
maxhb
Heureka!
In der Datei typo3conf/ext/chc_forum/mod1/index.php folgende Änderunge einpflegen:
...
function main() {
global $BE_USER, $LANG, $BACK_PATH, $TCA_DESCR, $TCA, $CLIENT, $TYPO3_CONF_VARS;
// Feel like doing some debugging? Uncomment this line for some help...
//$this->debug = 1; // uncomment for debugging;
// Modified by Marc Wöhlken (woehlken@quadracom.de)
// Set fpid (pid of forum we'll be working with) -- we prefer a fpid sent via post over one sent via get.
$this->fpid = t3lib_div::GPvar('fpid');
if ((!empty($this->fpid)) && ($this->id=='0') ) $this->id=$this->fpid;
// END
// Access check!
// The page will show only if there is a valid page and if this page may be viewed by the user
$this->pageinfo = t3lib_BEfunc::readPageAccess($this->id, $this->perms_clause);
$access = is_array($this->pageinfo) ? 1 : 0;
if (($this->id && $access) || ($BE_USER->user['admin'] && !$this->id)) {
// Set the lang object
$this->lang = $LANG;
// Place post and get vars in an attribute -- easier to work with.
$this->post = $GLOBALS['HTTP_POST_VARS'];
$this->get = $GLOBALS['HTTP_GET_VARS'];
// Debugging...
if ($this->debug == 1) {
$this->content .= 'POST:'.t3lib_div::view_array($this->post).'<br />'; // uncomment for debugging.
$this->content .= 'GET:'.t3lib_div::view_array($this->get).'<br />'; // uncomment for debugging.
}
// Modified by Marc Wöhlken (woehlken@quadracom.de)
// Code moved to top of function
/*
// Set fpid (pid of forum we'll be working with) -- we prefer a fpid sent via post over one sent via get.
$this->fpid = $this->post['fpid'];
if (empty($this->fpid)) $this->fpid = $this->get['fpid'];
*/
// END
if ($this->fpid) {
$where = 'pid='.$this->fpid;
$qresults = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'tx_chcforum_f_conf', "pid=$this->fpid", '', '', '');
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($qresults)) {
$this->feusers_pid = $row['feusers_pid'];
}
}
...
Thx Daniel_S, war ein super Tipp!
CU
maxhb
könntest du vielleicht dein posting editieren und alle notwendigen schritte nochmal zusammenfassen?
merci!
kannst du von der funktionierenden n backup machen und irgendwo online stellen?
doku schriebkönntest du vielleicht dein posting editieren und alle notwendigen schritte nochmal zusammenfassen?
merci!
Nö!
Daniel_S schriebkannst du von der funktionierenden n backup machen und irgendwo online stellen?
Ja!
Download des mod1-Folders, einfach über die bestehenden Dateien im mod1 Folder drüberbügeln, Backup nicht vergessen 😉
http://woehlken.quadracom.de/typo3forum/chc_forum_mod1_fix_nonadminforumadmins.tgz
CU
maxhb
Sag bitte mal Bescheid, ob das bei Dir auch funktioniert...
CU
maxhb
hab noch keinen fehler gefunden.
man muß übrigens, und das richtet sich als zusammenfassung an die weiteren neugierigen leser dieses threads zusätzlich zum austauschen des mod1 folders noch die besagte winzige änderung in der ext_tables.php machen
t3lib_extMgm::addModule("web","txchcforumM1","",t3lib_extMgm::extPath($_EXTKEY)."mod1/");
doku schriebhab noch keinen fehler gefunden.
O.K., werde ich im Archiv ergänzen.
CU
maxhb
Edit: Hab' ein aktualisiertes Archiv hochgeladen, inkl. ext_tables.php
Leute Ihr seit einfach klasse... ! Das muss mal gesagt werden hier 🙂
So viele Infos und dann auch noch für jedermann verständlich, gibt es nur hier im Forum. Da kann die Newsgroup aber noch einiges lernen!
editiert die datei
typo3/ext/belog/mod/conf.php
und aendert die Zeile
$MCONF['access']='admin';
in
$MCONF['access']='group,user';
nun muesst ihr noch den Menuepunkt Tools freischalten
das macht man unter
typo3/mod/tools/conf.php
und da das gleiche Spiel, Zeile
$MCONF['access']='admin';
in
$MCONF['access']='group,user';
aendern.
Dann nur noch in die Benutzergruppe gehen und unter Modules die beiden Sachen markieren.
--> Fertig
Muesste eigentlich bei allen anderen Menuepunkten gleich sein.