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 opublikowane przez eider

  1. core/public_usercp/dname_string:

    You have made <strong>%s</strong> of <strong>%s</strong> display name changes since %s. You are permitted to make %s changes in a %s day period.<br /> 
    
    Dokonano %s z dostępnych %s zmian nazwy wyświetlanej od %s. Możesz wykonać jeszcze %s zmiany w czasie %s dni. Zmiana nazwy wyświetlanej <strong>nie</strong> wpływa na dane logowania.
    

    Zmiana nazwy wyświetlanej <strong>nie</strong> wpływa na dane logowania. duplikuje się z core/public_usercp/dname_string2

     

    Dodatkowo nie potrzebnie umieszczone jest słowo "jeszcze". Poprawiony tekst:

     

    Dokonano %s z dostępnych %s zmian nazwy wyświetlanej od %s. Możesz wykonać %s zmiany w czasie %s dni.
    
  2. Witam, chciałbym się dowiedzieć jak domyślnie wyłączyć wszystkim rozbudowany edytor tekstu?

     

    Uwagi: Szybka edycja nie działa po tym zabiegu

    Ale chyba tu chodzi o wyłączenie edytora a nie szybkiej odpowiedzi... :)

     

    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. Sprawdź podany plik ;-) Najpewniej jakieś gówno siedzi na samym początku kodu, może nawet Twój "wirus" opisany w innym temacie. Sam błąd oznacza, że nagłówki zostały już wysłane do klienta, ale skrypt próbuje je zmodyfikować (np. nowa sesja, ciasteczko etc). W razie dalszych problemów pisz tutaj lub na PW jak będziesz mieć jakieś głębsze pytania (lub trywialne), chętnie pomogę Ci pozbyć się tego gówna.

     

    Przykład:

    <?php
    echo 'test';
    session_start();
    ?>

    Ale wiele zależy od konfiguracji PHP, bo można tak je skonfigurować, aby nagłówki wysłane były dopiero po całkowitym przerobieniu skryptu.

  4. Odpowiedź od AdTaily:

    Witam serdecznie!

    W cookie widget AdTaily zapisuje tylko dozwolone znaki (zgodne z RFC). Znak "%" jest dozwolonym znakiem. Zresztą już po wejściu na losowy temat http://fullserver.eu/topic/2037-typowanie-wynik%C3%B3w/ w document.cookie znajdziemy zapisane dane:

    "tapatalk_redirect4=false; modtids=%2C"

    Jak widać nie tylko skrypt AdTaily zapisuje znak %.

    Pozdrawiam,

    maciej.wiszowaty
    Community Manager
    AdTaily

     

    Obawiam się, że nie liczą się z tym problemem, ale zobaczymy jak dalej się to pociągnie. %F3 to znak 'ó' dlatego też freamwork IP.Board się wywala. Zamiana Krak%F3w na Krak%2Cw pomaga.

  5. 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 ;-)

    • Lubię to 1
  6. Aktywna jest tylko IPB Internal. Converter jest wyłączona, ale jej włączenie nic nie zmienia. Zaznaczę, że konwersje wykonywałem na wersji 3.1 i później aktualizowałem forum do 3.4. Konwersje wykonywałem na 3.1 ponieważ konwerter pod 3.4 gubił strukturę działów z niewiadomych przyczyn. Podczas aktualizacji forum usunąłem aplikację konwertera, a więc jego dane zostały usunięte (m.in stare hasła zapisane w formacie SMF czy też dane potrzebne do przekierowania linków), ale raczej nie powinno mieć to wpływu na nazwy wyświetlane. Integracje z Facebookiem jest aktywna, ale jej wyłączenie nie zmienia nic.

  7. Czy ktoś kiedykolwiek spotkał się na swoim forum z takowym problemem, że gdy użytkownik w swoich ciasteczkach ma jakieś od AdTaily to zwijanie działów i edytor tekstu nie działa. Przeglądając internet natrafiłem na parę podobnych problemów na jakiś sieciach CS. Problem powoduje dokładnie cookies o nazwie '__adtaily_loc_city'. Jego treść ustawiana jest w moim wypadku na 'Krak%F3w' co powoduje nieznane dalej problemy w skryptach JS od IPS. Po zmianie na 'Krakow' problem znika ;-) Czy ktoś wie może gdzie szukać problemu w plikach forum?

    • Lubię to 1
  8. Typowe. Błąd pojawia się przy kopiowaniu tekstu który jest w [ code ]. Formatowanie wtedy zostaje i wszystko się wali. Niestety jak na razie nie widzę, żeby ktoś miał zamiar się tym zająć :/ W międzyczasie polecam prostą modyfikację która zablokuje wklejanie tekstu wraz z formatowaniem do edytora (chyba, że zostanie użyta opcja Wklej z programu Word):

    Wygląd > Zarządzaj stylami i szablonami i wybierz swój styl. Następnie znajdź Edytor i w editorSettings zamień:

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

    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 znajdź editorLoadJs i zamień:

    CKEDITOR.config.CmdVAsPlainText = <if test="hasPastePlain:|:$this->memberData['bw_paste_plain']">true<else />false</if>;

    na:

    CKEDITOR.config.CmdVAsPlainText = true;

    W akcie desperacji możesz też całkowicie wyłączyć ten nowy edytor, ale wówczasz opcja szybkiej edycji nie będzie działać :-) Aby to zrobić znajdź editor i zamień:

    bypassCKEditor: {parse expression="intval( $options['bypassCKEditor'] )"},

    na:

    bypassCKEditor: {parse expression="intval( 1 )"},

    • Lubię to 1
  9. Mam forum na IPB 3.4.1. Po wykonaniu konwersji z SMF wszystko działa pięknie. Polskie znaki ogarnięte, etc etc. Problem jest jeden: forum na złość nie pozwala zmienić nazwy wyświetlanej użytkownika. Cokolwiek bym tam wpisał zawsze powie, że jest to używane. Problem jest o tyle dziwny, że po włączeniu debugowania nie widzę zapytań do bazy o tą nazwę użytkownika! Jedyne ślady tego, że coś się dzieje widać w: makeSeoTitle (nie-ma-tego) called i SELECT COUNT(*) as count, MIN(dname_date) as min_date FROM fs_dnames_change WHERE dname_member_id=11934 AND dname_date > 1355788071 AND dname_discount=0. Po tym zapytaniu nie ma już żadnego. Jako, że nie jestem byle użytkownikiem temat obadałem bardzo dokładnie przed napisaniem tutaj. Sprawdzałem i próbowałem debugować różne rzeczy w plikach, ale bez skutku. Plik którym się najwięcej bawiłem to usercpForms.php w core. Dokładnie chodzi o public function saveFormDisplayname() która wykonuje większość roboty. Czyli sprawdza czy formularz nie jest pusty, czy hasło jest poprawne itp. Tutaj wszystko przechodzi ładnie. Problem zaczyna się od try() i przechodzi dalej do catch().

    if ( IPSMember::getFunction()->updateName( $this->memberData['member_id'], $members_display_name, 'members_display_name' ) === TRUE )
    {
    $this->cache->rebuildCache( 'stats', 'global' );
    return $this->showFormDisplayname( '', $this->lang->words['dname_change_ok'] );
    }
    else
    {
    # We should absolutely never get here. So this is a fail-safe, really to
    # prevent a "false" positive outcome for the end-user
    return array( 0 => $this->lang->words['name_taken_change'] );
    }
    

    Poprzez prostą zabawę "return array( 0 => $this->lang->words['name_taken_change'] );" i podmienianiem tego tekstu na inny doszedłem do wniosku, że nasz fail-safe nie wykonuje się. Tak więc przechodzimy dalej do catch(). Po przejściu przez masę innych błędów, które na pewno się nie wykonują dochodzimy do USER_NAME_EXISTS. Zamiana words['name_change_taken'] na words['current_pw_bad'] nie dała oczekiwanego efektu, a więc mamy pierwszy znak zapytania. Dalej mamy jeszcze default jak przystało na każdy switch. Tam jest funkcja getMessage(), ale jej podmiana na return array( 0 => $this->lang->words['current_pw_bad'] ); nie dała niestety także żadnego efektu. Tutaj mamy drugi znak zapytania. Skoro nie wykonał się fail-safe, nie wykonał się updateName() i catch ze switchem nie zwraca żadnych błędów to gdzie mam szukać błędu?

    Oczywiście mógłbym pomyśleć, że to wina konwersji i coś jest nie tak, ale pola się zgadzają, po za tym nie widzę zapytania które odpytywało by bazę o nową nazwę (a powinienem, patrząc na funkcję updateName() ;)

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