Wyświetlanie kolorów na czacie

Poprawki dotyczące wstawiania emotek (wszystko w pliku czat.ph p):

  1. Znajdź tę linię

    echo ‘’;

    [/code]
    i popraw ją (zamień) na następującą:

[code] echo ’ icon_'. $listaEmotek['graph'][$i] .'.gif2. Dodaj nową funkcję (np. po funkcji Colour a przed pokazPasekEmotek ), oto jej kod:

function InsertImage(image)

{

    image = '/shoutbox/images/emotki/icon_'+image+'.gif';

    if (!Editor.execCommand('insertImage',false, image))

    {

      Editor.body.focus();

      range = Editor.selection.createRange();

      range.pasteHTML('');

    }

}[/code]


3. Nowa wersja funkcji [b]html2bbcode[/b] (zastąp ją tym kodem):

[code]function html2bbcode(text) { text=text.replace(/ /gi,’’); text=text.replace(/ /gi,’’); text=text.replace(//p/gi,’’); text=text.replace(//gi,’’); text=text.replace(//span/gi,’’); text=text.replace(/
/gi,’’); text=text.replace(//div/gi,’’); text=text.replace(/**(.*?)/b/gi,’$1’); text=text.replace(/_(.*?)/i/gi,’$1’); text=text.replace(/(.*?)/u/gi,’$1’);

text=text.replace(/(.*?)/strong/gi,’$1’);

text=text.replace(/(.*?)/em/gi,’$1’);

text=text.replace(/(.*?)/font/gi,’[color=$1]$2[/color]’);

?php

for ($i=0;$i
echo ’ text=text.replace(/.gif_**

To powinno poprawić wypisywanie tekstów (oraz emotek) na czacie w IE.

Reszta poprawek później.

Sprawdziłem i pod przeglądarką Internet Explorer dalej nie działa wysyłanie wiadomości na czat za pomocą „Enter” , trzeba wciskać „Wyślij”.

W przeglądarce Internet Explorer emotki wyświetlają się od razu w polu tekstowym w postaci obrazków i mają jakieś ograniczenie do 3. Vo jak dam 3 emotk ite same to na trzeciej emotce pojawia się kwadrat :frowning:

Tak jak widać to na screenie poniżej:

emotkiiiiiii.png

W przeglądarce Interner Explorer nie wyświetla prawidłowego kolorowania tekstu w kolorze, tylko w postaci kodu html:

test tekstu pisanego w Internet [/code]




W przeglądarce google chrome kursor w polu tekstowym jest za nisko. W Google Chrome też gdy klikne między wyrazami spacje to spcacja na czacie wyśietla się w ten sposób [b] [/b] W Google chrome też emotki wyświetlają się w polu tekstowym w postaci graficznej. 

W Google Chrome też gdy napisze długie zdanie i każdy wyraz w tym zdaniu będę chciał mieć w innym kolorze to wtedy zamiast kolorować mi te wyrazy to wyświetla mi na czacie taki kod:

[code] jakiś  tam test jaki taki 

test  test test test [/code]


[u]screen:[/u]







Tak wygląda teraz ten kod pliku czat.php

[code]

B I U Kolor Ciemnoczerwony Czerwony Pomarańczowy Brązowy Żółty Zielony Oliwkowy Błękitny Niebieski Ciemnoniebieski Purpurowy Fioletowy Biały Czarny Emotki

?php $listaEmotek=array(); $listaEmotek[‘graph’]=array(‘biggrin’,‘confused’,‘cool’,‘cry’,‘curve’,‘eek’,‘evil’,‘exclaim’,‘idea’,‘lol’,‘mad’,‘mrgreen’,‘neutral’,‘razz’,‘eusathink’,‘redface’,‘rolleyes’,‘sad’,‘smile’,‘smile2’,‘square’,‘surprised’,‘wink’,‘question’,‘arrow’); $listaEmotek[‘text’]=array(‘:-D’,‘:-?’,‘8-)’,‘:cry:’,‘:-/’,‘:shock:’,‘:evil:’,‘:!:’,‘:idea:’,‘:lol:’,‘:-x’,‘:mrgreen:’,‘:-}’,‘:-P’,‘:-k’,‘:oops:’,‘:roll:’,‘:-(’,‘:-)’,‘:-’,‘:-]’,‘:-o’,‘;-)’,‘:?:’,‘:arrow:’); for ($i=0;$i echo ’ icon_'. $listaEmotek['graph'][$i] .'.gif

‘; return string; } function success(response, status) { if(status == ‘success’) { lastTime = response.time; $(’#daddy-shoutbox-response’).html(’ accept.png

Poprawa działania klawisza Enter (dla wszystkich przeglądarek) - zmiany w pliku czat.php :

  1. Deklarujesz nową funkcję, np. po funkcji html2bbcode :

    function pressedEnter(e)

    {

    var code = (e.keyCode ? e.keyCode : e.which);

    if (code == 13)

    {

     e.preventDefault();
    
     e.stopPropagation();
    
     $('#daddy-shoutbox-form').submit();
    

    }

    }

  2. Poprawiasz końcówkę kodu w tym pliku na następującą:

    Editor = document.getElementById(‘message’).contentWindow.document;

     Editor.body.contentEditable = true;
    
     Editor.body.onkeypress=pressedEnter;
    
     Editor.parentNode.onkeydown=pressedEnter;
    
     Editor.designMode = "on";
    

    });

Dodane 24.03.2013 (N) 13:19 – Przeczyść cache w przeglądarce Internet Explorer i zamknij program, to czat zacznie poprawnie w nim działać (to znaczy wyświetlać wpisywane teksty). Co do znaków   to pojawiają się one w każdej przeglądarce jak się wpisze więcej niż jedną spację naraz, np.

a b

wiem jak to poprawić. W IE przy wstawianiu emotek zdarza się, że pojawia się obramowanie (do edycji ikonki) i na razie nie wiem jak to wyeliminować, tak samo jak ruszający się w pionie tekst. Z emotkami pomaga kliknięcie na polu tekstowym obok i obramowanie znika. Co do kolorowania tekstu (i tych znaczników wokół tekstów), to popracuję nad nim, bo widzę, że w różnych przeglądarkach różnie się generuje tekst HTML dla niego. – Dodane 24.03.2013 (N) 13:57 – Wiele spacji zakodowane znakami "’ " poprawiamy przez dodanie kodu (jednej linijki) w funkcji konwertujEmotki , której początek wyglądać powinien tak:

function konwertujEmotki(text)

{

  text=text.replace(/ /gi,' ');

<?php

(dalszy ciąg bez zmian). – Dodane 24.03.2013 (N) 14:05 – Jeśli chodzi o te kolorowe wyrazy z dodatkowym pogrubieniem (lub innym stylem), to u mnie to nie występuje, ale popraw funkcję html2bbcode poprzez dodanie 3 wierszy, tak żeby wygląda tak (całość):
I daj znać, czy to pomogło. – Dodane 24.03.2013 (N) 15:13 – Poprawienie wiersza do wpisywania tekstu - w pliku style.css znajdź wiersz 653 (lub coś koło tego): 1. Popraw wpis dotyczący #message na poniższy:

#message { margin: -6px 2px 0 1px; padding: 0; width: 500px; height: 35px; position: absolute; overflow: hidden; clip: rect(8px,500px,31px,2px); font-size: 12px; background-color: #ffffff;}
  1. Dodaj tuż po nim kolejny (nowy) wpis:

    #daddy-shoutbox input[type=“submit”] { float: right; margin: 3px 2px 0 0; }

Dodane 24.03.2013 (N) 15:44 – Aby poprawić ten znaczek (zielony “ptaszek”) pokazujący się po wysłaniu wiersza, popraw następujące rzeczy: 1. w pliku czat.ph p przenieś wiersz

[/code]
przed wiersz zawierający

[code]
2. w pliku style.css popraw wiersz z #message na taki:

#message { margin: -6px 2px 0 1px; padding: 0; width: 490px; height: 35px; position: absolute; overflow: hidden; clip: rect(8px,490px,31px,2px); font-size: 12px; background-color: #ffffff;}

oraz dodaj pod nim nowy wiersz:

#daddy-shoutbox-response { margin-left: 495px; }

Dodane 24.03.2013 (N) 15:48

W IE jak się szybko klika na jaką emotkę, to na którejś z kolei robi się zaznaczenie - nie wiem, jak to poprawić, potem wystarczy kliknąć w tym polu (obok emotki) i jest już w porządku - to chyba jedyna rzecz, której nie udało mi się (na razie) poprawić - przetestuj aplikację i napisz ewentualnie o zauważonych błędach.

function html2bbcode(text)

{

  text=text.replace(/
/gi,'');

  text=text.replace(/
/gi,'');

  text=text.replace(/<\/p>/gi,'');

  text=text.replace(//gi,'');

  text=text.replace(/<\/span>/gi,'');

  text=text.replace(/

/gi,’’); text=text.replace(/</div>/gi,’’); text=text.replace(/**(.*?)</b>/gi,’$1’); text=text.replace(/_(.*?)</i>/gi,’$1’); text=text.replace(/(.*?)</u>/gi,’$1’);

text=text.replace(/(.*?)</strong>/gi,’$1’);

text=text.replace(/(.*?)</em>/gi,’$1’);

text=text.replace(/(.*?)</font>/gi,’[color=$1]$2[/color]’);

text=text.replace(/(.*?)</b>/gi,’[color=$1]$2[/color]’);

text=text.replace(/(.*?)</i>/gi,’[color=$1]$2[/color]’);

text=text.replace(/(.*?)</u>/gi,’[color=$1]$2[/color]’);

<?php

for ($i=0;$i
echo ’ text=text.replace(/.gif_**

Sprawdziłem sobie to na IE i widze ze jak koloruje kilka wyrazów w jednym zdaniu to zamiast kolorów występuje ten kod:

[/code]


Poza tym działa wszystko dobrze teraz na IE oprócz też tego, że jak pisze coś na czacie to wtedy nie ma tego bieżącego textu który aktualnie pisze tylko jest tekst z przed 3 albo 4 godzin wcześniej kiedy to pisałem. 

Pod przeglądarką Google Chrome kolorowanie wyrazów w jednym zdaniu działa poprawnie. Wydaje mi się, że pod Google Chrome działa wszystko dobrze jak powinno.

Tak wygląda plik czat.php

[code]

B I U Kolor Ciemnoczerwony Czerwony Pomarańczowy Brązowy Żółty Zielony Oliwkowy Błękitny Niebieski Ciemnoniebieski Purpurowy Fioletowy Biały Czarny Emotki

<?php $listaEmotek=array(); $listaEmotek[‘graph’]=array(‘biggrin’,‘confused’,‘cool’,‘cry’,‘curve’,‘eek’,‘evil’,‘exclaim’,‘idea’,‘lol’,‘mad’,‘mrgreen’,‘neutral’,‘razz’,‘eusathink’,‘redface’,‘rolleyes’,‘sad’,‘smile’,‘smile2’,‘square’,‘surprised’,‘wink’,‘question’,‘arrow’); $listaEmotek[‘text’]=array(‘:-D’,‘:-?’,‘8-)’,‘:cry:’,‘:-/’,‘:shock:’,‘:evil:’,‘:!:’,‘:idea:’,‘:lol:’,‘:-x’,‘:mrgreen:’,‘:-}’,‘:-P’,‘:-k’,‘:oops:’,‘:roll:’,‘:-(’,‘:-)’,‘:->’,‘:-]’,‘:-o’,‘;-)’,‘:?:’,‘:arrow:’); for ($i=0;$i echo ’ icon_'. $listaEmotek['graph'][$i] .'.gif

‘; return string; } function success(response, status) { if(status == ‘success’) { lastTime = response.time; $(’#daddy-shoutbox-response’).html(’ accept.png

  1. Obniżyć tę ikonkę możesz dodając w pliku style.css dodatkową linię (np. tuż po “#daddy-shoutbox-response { margin-left: 495px; }”):

    #daddy-shoutbox-response img { margin-top: 5px; }

Możesz zamiast 5px dać inną wartość (mniejszą lub większą) i dzięki temu ustawisz sobie wysokość na jakiej obrazek będzie się znajdował. 2. Co do IE i wyświetlania przez niego tekstów z czata, to spróbuj wyczyścić cache przeglądarki, potem zamknij ją i otwórz ponownie - powinno pomóc. 3. Aby obejść to “zagnieżdżanie” kolorowania w IE możesz dodać w funkcji html2bbcode dodatkową pętlę - podaję kod po zmianach:

Powinno to rozwiązać ten problem (sprawdź i daj znać).

function html2bbcode(text)

{

  for (var i=0;i<9;i++)

  {

    text=text.replace(/
/gi,'');

    text=text.replace(/
/gi,'');

    text=text.replace(/<\/p>/gi,'');

    text=text.replace(//gi,'');

    text=text.replace(/<\/span>/gi,'');

    text=text.replace(/

/gi,’’); text=text.replace(/</div>/gi,’’); text=text.replace(/**(.*?)</b>/gi,’$1’); text=text.replace(/_(.*?)</i>/gi,’$1’); text=text.replace(/(.*?)</u>/gi,’$1’);

text=text.replace(/<strong>(.*?)&lt;\/strong&gt;/gi,'[b]$1[/b]');

text=text.replace(/<em>(.*?)&lt;\/em&gt;/gi,'[i]$1[/i]');

text=text.replace(/<font>(.*?)&lt;\/font&gt;/gi,'[color=$1]$2[/color]');

text=text.replace(/<b>(.*?)&lt;\/b&gt;/gi,'[b][color=$1]$2[/color][/b]');

text=text.replace(/<i>(.*?)&lt;\/i&gt;/gi,'[i][color=$1]$2[/color][/i]');

text=text.replace(/<u>(.*?)&lt;\/u&gt;/gi,'[u][color=$1]$2[/color][/u]');

}

<?php

for ($i=0;$i
echo ’ text=text.replace(/.gif_**

Pablo_Wawa teraz wszystko działa dobrze pod przeglądarką Interner Explorer tylko w emotkach w polu tekstowym pojawia się to zaznaczenie takie kwadratowe. Czy można by to poprawić by się tak nie działo ?:

fgfgghtrrttr.png

Teraz tylko w przeglądarce Google Chrome nie działa kolorowanie wyrazów tylko zamiast kolorów wyrazów wyskakuje kod html typu:

google chrome test z tej przeglądarki [/code]


Można to jakoś poprawić ? 



Zastanawiam się nad tą linijką w kodzie z tekstem "Ala ma kota i jest fajnie":

[code]// text=text.replace(/]*?(.*?)/span/gi,‘$1’); // ??? // ala ma kota icon_biggrin.gif

Co ten kod robi ?

I dlaczego w przeglądarce Internet Explorer pole tekstowe z przyciskiem „wyślij” wygląda tak jak powinno czyli tak:

eeeeeeeeeee.png

Natomiast w przeglądarce Google Chrome przycisk „wyślij” jest trochę dalej od tego ptaszka zielonego do akceptacji wpisów, zobacz:

tttttttttttttttttttttttttttt.png

Zauważyłem też, że wszystkie emotki działają dobrze - nawet jak wpisze ich oznaczenia w pole tekstowe :slight_smile: albo :-o natomiast gdy wpisze ikonke tę :- to wtedy na IE i w Google Chrome zamiast tej ikonki wyświetla mi taki znaczek: :-

Co się da, poprawię jutro po południu/wieczorem.

Tym razem zaskoczył mnie Google Chrome swoją “interpretacją” formatowania tekstu. Da się poprawić, ale być może coś jeszcze kiedyś “wyskoczy” (też da się poprawić).

Ten zaremowany tekst jest zbędny (możesz go usunąć) - pomagał mi w pisaniu tych linijek “text=text.replace” - wyłapywałem możliwe kombinacje kodu HTML związane z formatowaniem tekstu na czacie.

Co do różnego wyglądu strony pod różnymi przeglądarkami - takimi drobnymi rzeczami się nie przejmuję (jak ktoś korzysta cały czas z jednej przeglądarki, to nie zauważy, że w innej wygląda to nieco inaczej) - ważna jest taka sama funkcjonalność. Niestety różne przeglądarki inaczej wyświetlają np. przyciski formularza. W tym przypadku przycisk “Wyślij” ląduje maksymalnie na prawo formularza, a “zielony ptaszek” jest odsunięty 5 pikseli od końca linii tekstu. Można przenieść przycisk bliżej “ptaszka”, ale pozostanie z prawej strony więcej pustego miejsca.

Emotce :-> przyjrzę się jutro.

A czy jest możliwość, aby jak już ktoś sobie wybierze z listy dany kolor czcionki albo pogrubienie czcionki czy pochylenie czcionki to żeby cały czas mógł z tego korzystać nawet jak da „enter” albo „wyślij” ? bo teraz to trzeba sobie co chwile ustawiać po każdym wysłanym tekście na czat.

A jeśli ktoś nie wybierze żadnego koloru ani pogrubienia ani nic to normalnie będzie pisał domyślnie. Czy mógłbyś to od razu poprawić też ? jeśli możesz.

Co do tego kwadracika przy emotkach w przeglądarce IE:

fgfgghtrrttr.png

To zauważyłem, że jeśli przeciągnie się jedną krawędź tego kwadratu to emotka się rozciąga w polu tekstowym:

dsaadfad.png

Ale jak już taką wyśle na czat to się ona nie wyświetla na czacie w ogóle tylko zamiast niej jest wtedy taki kod:

NorthAngel:[/code]




Zauważyłem też że w przeglądarce IE można w polu tekstowym przestawiać wyrazy i emotki np. Jak napisze na końcu zdania "coś tam" to mogę to "coś tam" przesunąć na środek zdania lub na początek. Tak samo się dzieje z emotkami że mogę je w polu tekstowym przesuwać, ale emotka którą przesunąłem wyświetla się wtedy na czacie w postaci kodu.

Natomiast w Google Chrome przesuwanie emotek po wysłaniu ich już na czat nie działa po wtedy zamiast ikonek jest sam kod typu:

[code] icon_redface.gif

No niestety nic na to nie poradzę, to jest normalne zachowanie IE dla obrazka - sam chciałeś przecież mieć linię tekstu, którą można by edytować i formatować tekst - to przyjęte rozwiązanie jest proste, ale ma swoje wady i nic na to się nie poradzi. Edytujesz i formatujesz wpisywany tekst, możesz też edytować obrazki - m.in. zmieniać rozmiar (jak również je przesuwać).

Drugą wadą przyjętego rozwiązania jest możliwość wklejania dowolnego fragmentu tekstu z dowolnym formatowaniem (którego Ty nie używasz), co skutkuje tym, że u góry na czacie (po wysłaniu takiego tekstu) pokaże się niezinterpretowany kod HTML - nie da się napisać kodu, który uwzględni wszystkie możliwości - część z nich jest już uwzględniona i tyle Ci musi wystarczyć.

Co do dziwnego wyglądu wklejonego tekstu (ap otem jego wypisania na czacie), to jak wyżej napisałem, nie da się o wszystkim pomyśleć i zawsze może coś “wyskoczyć”. U mnie przy wklejaniu zaznaczonego wyżej nicka pojawia się czysty tekst (bez kolorowego tła).

Poniższy kod częściowo pomoże poprawnie interpretować formatowanie - zmiany są w pliku czat.php , oto nowa postać funkcji html2bbcode :

Poprawka wyświetlania emotki :-> musisz dodać w funkcji konwertujEmotki poniższą linię tuż przed linią z “return text;”

text=text.replace(/\:\-&gt;/gi,'');[/code]

A co do tego:

to pewnie się da zrobić (i sensownie to brzmi), ale trzeba na to trochę więcej czasu, żeby to poprawnie zakodować (na pewno nie dam rady się tym zająć przed Świętami - i tak bardzo dużo czasu poświęciłem na tę pomoc).

function html2bbcode(text)

{

  for (var i=0;i<9;i++)

  {

    text=text.replace(/
/gi,'');

    text=text.replace(/
/gi,'');

    text=text.replace(/<\/p>/gi,'');

    text=text.replace(//gi,'');

    text=text.replace(/<\/span>/gi,'');

    text=text.replace(/

/gi,’’); text=text.replace(/</div>/gi,’’); text=text.replace(/**(.*?)</b>/gi,’$1’); text=text.replace(/_(.*?)</i>/gi,’$1’); text=text.replace(/(.*?)</u>/gi,’$1’);

text=text.replace(/<strong>(.*?)&lt;\/strong&gt;/gi,'[b]$1[/b]');

text=text.replace(/<em>(.*?)&lt;\/em&gt;/gi,'[i]$1[/i]');

text=text.replace(/<font>(.*?)&lt;\/font&gt;/gi,'[color=$1]$2[/color]');

text=text.replace(/<b>(.*?)&lt;\/b&gt;/gi,'[b][color=$1]$2[/color][/b]');

text=text.replace(/<i>(.*?)&lt;\/i&gt;/gi,'[i][color=$1]$2[/color][/i]');

text=text.replace(/<u>(.*?)&lt;\/u&gt;/gi,'[u][color=$1]$2[/color][/u]');

text=text.replace(/<u>(.*?)&lt;\/u&gt;/gi,'[u][b][color=$1]$2[/color][b][/u]');

text=text.replace(/<i>(.*?)&lt;\/i&gt;/gi,'[i][b][color=$1]$2[/color][b][/i]');

text=text.replace(/<span>(.*?)&lt;\/u&gt;/gi,'[color=$1]$3[/color]');

text=text.replace(/<span>]*?&gt;/gi,'$1');

}

<?php

for ($i=0;$i
echo ’ text=text.replace(/.gif_**

Zrobiłem tak, ale jak napisze w Google Chrome „test test test test test” i słowo „test” dam każde w innym kolorze i albo pogrubione albo pochylone to zamiast tego na czacie wyświetla mi taki kod :

Test Test Test Test Test Test Test Test Test[/code]


Czy można to poprawić jeszcze ?

Zauważyłem też, że jeśli ktoś napisze długi tekst w polu tekstowym to on przechodzi do następnej linii i jest linia pod linia w polu tekstowym a jak się wyśle taki długi tekst na czat to wtedy bardzo tego czata rozwala na pół strony, zobacz:







Czy nie lepiej by było gdyby taki długi tekst wysłany na czata ładnie się układał na czacie linia pod linia bez rozjeżdżania się czata na całą strone ?



Natomiast w przeglądarce Internet Explorer kolorowanie każdego wyrazu "test" w zdaniu "test test test test test" jest poprawne tak jak powinno być.

Zauważyłem też, że w Internet Explorer jak ktoś napisze bardzo długi tekst w polu tesktowym to cały ciąg znaków i liter jest w jednej bardzo długiej linii w polu tekstowym a jak się wyśle taki długi tekst na czat to wtedy bardzo tego czata rozwala na pół strony tak jak widać na screenie powyżej.

Można to jeszcze jakoś poprawić ?

Tak wygląda teraz plik [b]czat.php[/b] :

[code]

B I U Kolor Ciemnoczerwony Czerwony Pomarańczowy Brązowy Żółty Zielony Oliwkowy Błękitny Niebieski Ciemnoniebieski Purpurowy Fioletowy Biały Czarny Emotki

<?php $listaEmotek=array(); $listaEmotek[‘graph’]=array(‘biggrin’,‘confused’,‘cool’,‘cry’,‘curve’,‘eek’,‘evil’,‘exclaim’,‘idea’,‘lol’,‘mad’,‘mrgreen’,‘neutral’,‘razz’,‘eusathink’,‘redface’,‘rolleyes’,‘sad’,‘smile’,‘smile2’,‘square’,‘surprised’,‘wink’,‘question’,‘arrow’); $listaEmotek[‘text’]=array(‘:-D’,‘:-?’,‘8-)’,‘:cry:’,‘:-/’,‘:shock:’,‘:evil:’,‘:!:’,‘:idea:’,‘:lol:’,‘:-x’,‘:mrgreen:’,‘:-}’,‘:-P’,‘:-k’,‘:oops:’,‘:roll:’,‘:-(’,‘:-)’,‘:->’,‘:-]’,‘:-o’,‘;-)’,‘:?:’,‘:arrow:’); for ($i=0;$i echo ’ icon_'. $listaEmotek['graph'][$i] .'.gif

‘; return string; } function success(response, status) { if(status == ‘success’) { lastTime = response.time; $(’#daddy-shoutbox-response’).html(’ accept.png