Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Modyfikacja
Forum PHP.pl > Forum > Przedszkole
topik53
Witam,
Chciałbym edytować czat przemo.
Lecz pojawia sie tam js i nie wiem jak edytować kod.
może ktoś pomoże?
plik chat.class.php
  1. <?php
  2. class Chat
  3. {
  4.  
  5. public function deleteMessages() {
  6. $query = 'TRUNCATE TABLE phpbb_chat';
  7. $result = mysql_query($query);
  8. }
  9.  
  10.  
  11. public function postMessage($name, $message) {
  12. $userdata="select * from user WHERE login='$name'";
  13. $sql= mysql_query($userdata);
  14. $feth = mysql_fetch_row($sql);
  15. $id = $feth[0];
  16.  
  17.  
  18.  
  19. $name = mysql_real_escape_string($name);
  20. $message = mysql_real_escape_string($message);
  21.  
  22. $query0 = "UPDATE user SET `chatMsgs` = `chatMsgs`+1 WHERE `id` = '$id'";
  23. mysql_query($query0);
  24.  
  25. $query = 'INSERT INTO phpbb_chat (posted_on, user_name, message) VALUES ("'.date("H:i:s:u").'", "' . $name . '" , "' . $message . '")';
  26. $result = mysql_query($query);
  27. }
  28.  
  29.  
  30. public function retrieveNewMessages($id = 0) {
  31. global $userdata;
  32.  
  33. if ($id > 0) {
  34. $query = 'SELECT chat_id, user_name, message, posted_on FROM phpbb_chat WHERE chat_id > ' . $id . ' ORDER BY chat_id ASC';
  35. } else {
  36. $query = 'SELECT chat_id, user_name, message, posted_on FROM ' . '(SELECT chat_id, user_name, message, posted_on FROM phpbb_chat ' . 'ORDER BY chat_id DESC ' . 'LIMIT ' 20 ') AS Last50 ' . 'ORDER BY chat_id ASC';
  37. }
  38.  
  39. $result = mysql_query($query);
  40.  
  41. $response = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
  42. $response .= '<response>';
  43. $response .= $this->isDatabaseCleared($id);
  44.  
  45. if ( mysql_num_rows($result) ) {
  46.  
  47. while ( $row = mysql_fetch_array($result) ) {
  48. $id = $row['chat_id'];
  49. $userName = $row['user_name'];
  50. $time = ($board_config['chatDate']==1) ? substr(htmlspecialchars ($row['posted_on']),-15,8) : ' ';
  51. $message = ($board_config['chatEmots']==1) ? $this->emoticons(htmlspecialchars($row['message'])) : htmlspecialchars($row['message']);
  52.  
  53. $response .= '<id>' . $id . '</id>' .
  54. '<time>'. $time . '</time>' .
  55. '<name><![CDATA[' . $userName . ']]></name>' .
  56. '<message><![CDATA[' . $message . ']]></message>';
  57. }
  58.  
  59. }
  60.  
  61. $response = $response . '</response>';
  62. return $response;
  63. }
  64.  
  65.  
  66. public function emoticons($tekst) {
  67.  
  68. $emots = array(':)',';)',':(',';(','biggrin.gif',';d','8)','&lt;hurra&gt;','&lt;lol&gt;',':|','&lt;omg&gt;',';p','tongue.gif',';]',':]');
  69. $repla = array('smile','wink','sad2','sad2','biggrin','biggrin','cool','hooray','lol','neutral','omg','razz','razz','yeah','yeah');
  70.  
  71. $i=0;
  72. foreach ( $emots as $emotka ) {
  73. $tekst = str_replace($emotka, ' <img src="czat/e/'.$repla[$i].'.png" /> ', $tekst);
  74. $i++;
  75. }
  76.  
  77. return $tekst;
  78. }
  79.  
  80. public function isDatabaseCleared($id) {
  81.  
  82. if ($id > 0) {
  83. $check_clear = 'SELECT count(*) old FROM phpbb_chat where chat_id<=' . $id;
  84. $result = mysql_query($check_clear);
  85. $row = mysql_fetch_array($result);
  86. if($row['old']==0)
  87. return '<clear>true</clear>';
  88. }
  89.  
  90. return '<clear>false</clear>';
  91. }
  92.  
  93. }
  94. ?>


plik chat.js
  1. /* tworzy obiekty XMLHttpRequest, które zaktualizują wiadomości rozmowy i pobiorą wybrany kolor*/
  2. var xmlHttpGetMessages = createXmlHttpRequestObject();
  3. /* zmienna, która określa jak często łączyć się z serwerem*/
  4. var updateInterval = 500; // w milisekundach
  5. /* lastMessageID - tidentyfikator najświeższej wiadomości rozmowy */
  6. var lastMessageID = -1;
  7. var c = "";
  8.  
  9. /* tworzy instancję obiektu XMLHttpRequest */
  10. function createXmlHttpRequestObject()
  11. {
  12. //przechowa referencję do obiektu XMLHttpRequest
  13. var xmlHttp;
  14. // powinno zadziałać dla przeglądarek nowszych niż IE6
  15. try
  16. {
  17. // próbuje utworzyć obiekt XMLHttpRequest
  18. xmlHttp = new XMLHttpRequest();
  19. }
  20. catch(e)
  21. {
  22. // zakładając że przeglądarką jest IE6 lub starsza
  23. var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
  24. "MSXML2.XMLHTTP.5.0",
  25. "MSXML2.XMLHTTP.4.0",
  26. "MSXML2.XMLHTTP.3.0",
  27. "MSXML2.XMLHTTP",
  28. "Microsoft.XMLHTTP");
  29. // sprawdza każdy prog id, aż któryś zadziała
  30. for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
  31. {
  32. try
  33. {
  34. // próbuje utworzyć obiekt XMLHttpRequest
  35. xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
  36. }
  37. catch (e) {}
  38. }
  39. }
  40. // zwraca utworzony obiekt lub wyświetla wiadomość o błędzie
  41. if (!xmlHttp)
  42. alert("Błąd podczas tworzenia obiektu XMLHttpRequest.");
  43. else
  44. return xmlHttp;
  45. }
  46.  
  47.  
  48. /* funkcja rozpoczyna rozmowę; jest wykonywana w chwili załadowania strony */
  49. function init()
  50. {
  51.  
  52. // pobiera odwołanie do okna tekstowego, w którym użytkownik wpisuje nową wiadomość
  53. var oMessageBox = document.getElementById("messageBox");
  54. // zapobiega uruchomieniu funkcji autouzupełniania
  55. oMessageBox.setAttribute("autocomplete", "off");
  56. // rozpoczyna aktualizację nowego okna
  57. requestNewMessages();
  58. }
  59.  
  60.  
  61. /* funkcja wywołana po wciśnięciu przycisku "Wyślij"*/
  62. function sendMessage()
  63. {
  64. // zachowuje wiadomość w zmiennych lokalnych i czyści okienko tekstowe
  65. var oCurrentMessage = document.getElementById("messageBox");
  66. var currentUser = document.getElementById("userName").value;
  67. // nie wysyła pustych wiadomości
  68. if (trim(oCurrentMessage.value) != "" ) {
  69. // jeśli musimy wysłać i pobrać wiadomość
  70. params = "mode=SendAndRetrieveNew" +
  71. "&id=" + encodeURIComponent(lastMessageID) +
  72. "&name=" + encodeURIComponent(currentUser) +
  73. "&message=" + encodeURIComponent(oCurrentMessage.value);
  74.  
  75. // wywołuje działania po stronie serwera
  76. xmlHttpGetMessages.open("POST", "czat/chat.php", true);
  77. xmlHttpGetMessages.setRequestHeader("Content-Type",
  78. "application/x-www-form-urlencoded");
  79. xmlHttpGetMessages.onreadystatechange = handleReceivingMessages;
  80.  
  81. xmlHttpGetMessages.send(params);
  82.  
  83. oCurrentMessage.value = "";
  84. }
  85. }
  86.  
  87.  
  88. /* funkcja wywołana po wciśnięciu przycisku "Usuń wszystko" */
  89. function deleteMessages()
  90. {
  91. // ustawia flagę, która określa, że wiadomości są usuwane
  92. params = "mode=DeleteAndRetrieveNew";
  93. // dodaje wiadomość do kolejki
  94. c = params;
  95. }
  96.  
  97.  
  98. /* wysyła asynchroniczne żądanie, aby pobrać nowe wiadomości, wysłać je lub usunąć*/
  99. function requestNewMessages()
  100. {
  101. // pobiera nazwę użytkownika i kolor ze strony
  102. var currentUser = document.getElementById("userName").value;
  103. // kontynuuje jeśli xmlHttpGetMessages nie jest pusty
  104. if(xmlHttpGetMessages)
  105. {
  106. try
  107. {
  108. // nie zaczyna nowej operacji na serwerze, jeśli jakaś jest wykonywana
  109. if (xmlHttpGetMessages.readyState == 4 ||
  110. xmlHttpGetMessages.readyState == 0)
  111. {
  112. // przechowa parametry potrzebne do wykonania żądania na serwerze
  113. if ( c == '' ) {
  114. params = "mode=RetrieveNew"+"&id="+lastMessageID;
  115. } else {
  116. params = c;
  117. }
  118. // wywołuje działania po stronie serwera
  119. xmlHttpGetMessages.open("POST", "czat/chat.php", true);
  120. xmlHttpGetMessages.setRequestHeader("Content-Type",
  121. "application/x-www-form-urlencoded");
  122. xmlHttpGetMessages.onreadystatechange = handleReceivingMessages;
  123.  
  124. xmlHttpGetMessages.send(params);
  125. params = "";
  126. c = "";
  127. }
  128. else
  129. {
  130. // sprawdza ponownie czy są nowe wiadomości
  131. setTimeout("requestNewMessages();", updateInterval);
  132. }
  133. }
  134. catch(e)
  135. {
  136. displayError(e.toString());
  137. }
  138. }
  139. }
  140.  
  141.  
  142. /* funkcja obsługująca odpowiedź HTTP podczas aktualizacji wiadomości*/
  143. function handleReceivingMessages()
  144. {
  145. // kontynuuje jeśli proces jest zakończony
  146. if (xmlHttpGetMessages.readyState == 4)
  147. {
  148. // kontynuuje, jeśli status HTTP ma wartość "OK"
  149. if (xmlHttpGetMessages.status == 200)
  150. {
  151. try
  152. {
  153. // przetwarza odpowiedź serwera
  154. readMessages();
  155. }
  156. catch(e)
  157. {
  158. // wyświetla wiadomość o błędzie
  159. displayError(e.toString());
  160. }
  161. }
  162. else
  163. {
  164. // wyświetla wiadomość o błędzie
  165. displayError(xmlHttpGetMessages.statusText);
  166. }
  167. }
  168. }
  169.  
  170.  
  171. /* funkcja obsługująca odpowiedź serwera podczas aktualizacji wiadomości*/
  172. function readMessages()
  173. {
  174. // pobiera odpowiedź serwera
  175. var response = xmlHttpGetMessages.responseText;
  176. // błąd serwera?
  177. if (response.indexOf("ERRNO") >= 0
  178. || response.indexOf("błąd:") >= 0
  179. || response.length == 0)
  180. throw(response.length == 0 ? "Pusta odpowiedź serwera." : response);
  181. // pobiera element dokumentu
  182. response = xmlHttpGetMessages.responseXML.documentElement;
  183. // pobiera flagę określającą czy okno rozmowy zostało wyczyszczone czy nie
  184. clearChat =
  185. response.getElementsByTagName("clear").item(0).firstChild.data;
  186. // jeśli flaga ma wartość true, trzeba wyczyścić okno wiadomości
  187. if(clearChat == "true")
  188. {
  189. // czyści okno wiadomości i zeruje id
  190. document.getElementById("scroll").innerHTML = "";
  191. lastMessageID = -1;
  192.  
  193. }
  194. // pobiera tablice z odpowiedzi serwera
  195. idArray = response.getElementsByTagName("id");
  196. nameArray = response.getElementsByTagName("name");
  197. timeArray = response.getElementsByTagName("time");
  198. messageArray = response.getElementsByTagName("message");
  199. // przechowuje lokalnie ID ostatniej otrzymanej wiadomości
  200. if(idArray.length>0){
  201. lastMessageID = idArray.item(idArray.length - 1).firstChild.data;}
  202. // dodaje nową wiadomość do okna rozmowy
  203. displayMessages(idArray, nameArray, timeArray, messageArray);
  204.  
  205. // ponownie uruchamia sekwencję
  206. setTimeout("requestNewMessages();", updateInterval);
  207. }
  208.  
  209.  
  210. /* funkcja dodająca nowe wiadomości do okna rozmowy */
  211. function displayMessages(idArray, nameArray, timeArray, messageArray)
  212. {
  213. // każdy przebieg pętli dodaje nową wiadomość
  214. for(var i=0; i<idArray.length; i++)
  215. {
  216. // pobiera szczegóły wiadomości
  217. var time = timeArray.item(i).firstChild.data.toString();
  218. var name = nameArray.item(i).firstChild.data.toString();
  219. var message = messageArray.item(i).firstChild.data.toString();
  220. // tworzy kod HTML, który wyświetli wiadomość
  221. var htmlMessage = "";
  222. htmlMessage += "<div class=\"item\" \">";
  223. htmlMessage += "<div class=\"timme\">" + time + "</div> <i>&lt;"+name+"&gt;</i> ";
  224. htmlMessage += message.toString();
  225. htmlMessage += "</div>";
  226. // wyświetla wiadomość
  227. displayMessage (htmlMessage);
  228. }
  229. }
  230.  
  231.  
  232. // wyświetla wiadomość
  233. function displayMessage(message)
  234. {
  235. // pobiera obiekt scroll
  236. var oScroll = document.getElementById("scroll");
  237. // sprawdza, czy pasek jest przewinięty
  238. var scrollDown = (oScroll.scrollHeight - oScroll.scrollTop <=
  239. oScroll.offsetHeight );
  240. // wyświetla wiadomość
  241. oScroll.innerHTML += message;
  242. // przewija na dół pasek przewijania
  243. oScroll.scrollTop = scrollDown ? oScroll.scrollHeight : oScroll.scrollTop;
  244. }
  245.  
  246.  
  247. // funkcja wyświetlająca komunikat o błędzie
  248. function displayError(message)
  249. {
  250. // wyświetla wiadomość o błędzie
  251. displayMessage("Błąd podczas dostępu do serwera!"+message);
  252. }
  253.  
  254.  
  255. /*obsługuje zdarzenie keydown aby określić, kiedy wciśnięto Enter*/
  256. function handleKey(e)
  257. {
  258. // pobiera zdarzenie
  259. e = (!e) ? window.event : e;
  260. // pobiera kod wciśniętego znaku
  261. code = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode :
  262. ((e.which) ? e.which : 0));
  263. // obsługuje zdarzenie keydown
  264. if (e.type == "keydown")
  265. {
  266. // jeśli został wciśnięty Enter (kod 13)
  267. if(code == 13)
  268. {
  269. // wysyła bieżącą wiadomość
  270. sendMessage();
  271. }
  272. }
  273. }
  274.  
  275.  
  276. /* usuwa spacje z początku i końca łańcucha*/
  277. function trim(s)
  278. {
  279. return s.replace(/(^\s+)|(\s+$)/g, "")
  280. }
  281.  
  282. function pokaz(){
  283. document.getElementById('emots').style.display="block";
  284. }
  285.  
  286. function clos(){
  287. document.getElementById('emots').style.display="none";
  288. }
  289.  
  290. function emota(em){
  291. d = document.getElementById("messageBox").value;
  292. document.getElementById("messageBox").value = d+' '+em;
  293. }
hondek
Heh, na pytanie jak edytować kod, odpowiedź chyba brzmi "edytorem"...
Mógłbyś sprecyzować o co chodzi?
topik53
Chodzi mi o to co musze zmienić w kodzie żeby działałsmile.gif

ref

ref

ref
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.