Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

eider

Użytkownik
  • Postów

    21
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi społeczności

  1. eider odpowiedź w Problem z nazwą poddziałów. został oznaczony jako odpowiedź   
    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
  2. eider odpowiedź w Wyłączenie wszystkim rozbudowanego edytora tekstu został oznaczony jako odpowiedź   
    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 :-)
  3. eider odpowiedź w Nazwa użytkownika jest już zajęta mimo, że nie jest(!) został oznaczony jako odpowiedź   
    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 ;-)
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

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ę.