Nie wygląda za dobrze. Musisz sam się pobawić w stylu. Jesteś pewien, że ten styl jest kompatybilny z IPB 3.3.4? Ewentualnie zawsze możesz przywrócić lub porównać zmiany. To co będzie Cie najpierw interesować to na pewno boardIndexTemplate w Strona główna
Brak szybkiej edycji to efekt uboczny usunięcia CKEditora. Zamiast niego wszędzie będzie się pojawiać czyste pole tekstowe ;-)
Jeżeli zaś chodzi o Twój problem wychowany to na pewno już gdzieś go opisywałem, ale dam jeszcze raz:
Lecimy szybko do Wygląd->Twój styl->Edytor i szukamy editorSettings. Szukamy:
<input type='checkbox' class='input_check' id='pastePlain' <if test="$this->memberData['bw_paste_plain']">checked="checked"</if> name="pastePlain" value="1" /> <label for='pastePlain'>{$this->lang->words['editor_paste']}</label>
Zamieniamy na:
<input type='checkbox' class='input_check' id='pastePlain' checked="checked" name="pastePlain" value="1" disabled="disabled" /> <label for='pastePlain'>{$this->lang->words['editor_paste']}</label>
Teraz wybieramy editorLoadJs i szukamy:
CKEDITOR.config.CmdVAsPlainText = <if test="hasPastePlain:|:$this->memberData['bw_paste_plain']">true<else />false</if>;
Zamieniamy na:
CKEDITOR.config.CmdVAsPlainText = true;
Po tym zabiegu formatowanie już nie powinno się walić na naszym forum a wklejany tekst będzie zawsze bez formatowania :-)
Tak. Sprawdzałem dobrze. Funkcja którą podajesz nie jest wykonywana, a przynajmniej nie w moim IPB 3.4.1 ;-) Do teraz nie wiem co błąd powodowało bo nie bawiłem się w debugowanie. Natomiast podam rozwiązanie na wypadek gdyby ktoś miał kiedyś podobny problem.
Idziemy do /admin/sources/classes/member i otwieramy plik memberFunctions.php. Szukamy w nim funkcji updateName, to ona odpowiada za zmianę nazwy. Szukamy tam:
if ( $this->checkNameExists( $name, $member, $field ) === TRUE )
{
throw new Exception( "USER_NAME_EXISTS" );
}
i zamieniamy na:
$this->DB->build( array(
'select' => "{$field}, member_id",
'from' => 'members',
'where' => $field . "='". $this->DB->addSlashes( strtolower($name) )."' AND member_id != ".$member_id,
'limit' => array( 0,1 ) ) );
$this->DB->execute();
if ( $this->DB->getTotalRows() )
{
throw new Exception( "USER_NAME_EXISTS" );
}
To tyle ;-) Teraz troszkę rozważań: funkcja checkNameExists z memberFunctions.php wydaje się nieprawidłowo wywoływać sprawdzanie nazwy (a może autorzy w nowej wersji pomylili nazwy? Wszak te w różnych plikach różnią się jedynie kolejnością "name"). W każdym razie funkcja którą podałeś DawPi pochodzi z auth.php i nigdy nie jest wywoływana przez skrypt zmiany nazwy wyświetlanej w profilu. Zamiast niej wywoływana jest dosyć spora funkcja
/**
* Check for an existing display or user name
*
* @access public
* @param string Name to check
* @param array [ Optional Member Array ]
* @param string name or members_display_name
* @param bool Ignore display name changes check (e.g. for registration)
* @param bool Do not clean name again (e.g. coming from cleanAndCheckName)
* @return mixed Either an exception or ( true if name exists. False if name DOES NOT exist )
* Error Codes:
* NO_PERMISSION This user cannot change their display name at all
* NO_MORE_CHANGES The user cannot change their display name again in this time period
* NO_NAME No display name (or shorter than 3 chars was given)
* ILLEGAL_CHARS The display name contains illegal characters
*/
public function checkNameExists( $name, $member=array(), $field='members_display_name', $ignore=false, $cleaned=false )
Nie doszedłem i nie mam zamiaru dochodzić (brak czasu) gdzie funkcja się wywala, ale dodanie "return FALSE;" w środku nie daje efektu, a na początku daje, więc zapewne gdzieś na samym początku się wykrzacza. W każdym razie na pewno nie dochodzi do tej części kodu:
//-----------------------------------------
// Check for existing name.
//-----------------------------------------
/* Load the handler if it's not present */
if( ! $this->han_login )
{
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/handlers/han_login.php', 'han_login' );
$this->han_login = new $classToLoad( $this->registry );
$this->han_login->init();
}
$this->han_login->nameExistsCheck( $name, $member, $checkField );
if( $this->han_login->return_code AND $this->han_login->return_code != 'METHOD_NOT_DEFINED' AND $this->han_login->return_code != 'NAME_NOT_IN_USE' )
{
return TRUE;
}
$this->DB->build( array(
'select' => "{$field}, member_id",
'from' => 'members',
'where' => $checkField . "='" . $this->DB->addSlashes( strtolower($name) ) . "'" . ( $member['member_id'] ? " AND member_id != " . $member['member_id'] : '' ),
'limit' => array( 0,1 ) ) );
$this->DB->execute();
Zaznaczam, że pliki IPB mam oryginalne, nawet wgrywałem je drugi raz specjalnie dla pewności ;-)
Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.