modifikacija ajax chata

Started by rocknroller, April 03, 2010, 04:07:10 PM

Previous topic - Next topic

rocknroller

Uvijek imam nekakve ideje, vidio sam to na jednom forumu na ajax chat-u ali administratorica baš i nije raspoložena pomoći stoga trebam pomoć od vas. Možda izgleda komplicirano ali fantastično je i potiče komunikaciju.

napravio sam u photoshopu otprilike na što mislim, odnosi se na desni dio chata (nacrtao sam). online lista logiranih korisnika na FORUM.

Ne znam postoji li već gotova takva modifikacija. Ako netko zna i želi mi pomoći oko ovoga za uzvrat nudim neke grafičke zahvate po dogovoru.

MarkoWeb

Listu online korisnika vec imas na pocetnoj stranici foruma iliti u boardindex.template.php fajlu tako da je mozes iskoristiti i za chat. Tako da ti gotova modifikacija i nije potrebna, funkcija vec postoji.

rocknroller

Quote from: MarkoWeb on April 03, 2010, 04:24:23 PM
Listu online korisnika vec imas na pocetnoj stranici foruma iliti u boardindex.template.php fajlu tako da je mozes iskoristiti i za chat. Tako da ti gotova modifikacija i nije potrebna, funkcija vec postoji.

znači potrebno ju je na neki način implementirati (ubaciti) u chat? ali sam sa php-om nula. Dali je to velik zahvat?

MarkoWeb

Subzirom da si "sa php-om nula" kako kazes onda svakako jeste. Ali u principu to je jedan foreach koji treba kopirati i naravno srediti html/css da bi to izgledalo kako ti zelis.

rocknroller

html i css sa time sam na "ti"  napraviti  ću sam sve što znam i umijem, ako si mi voljan pomoći u nekim smjernicama, imati ću sigurno dosta pitanja.


jel se može recimo da napravim smanjim širinu chata i napravim paragaf  i tamo nekom php funkcijom pozvati ispis online korisnika?

rocknroller

Napravio sam u html-u i css-u polje gdje sam htio, može li mi netko pomoći oko php-a?
Možete pogledati na forumu stoji online na mjestu gdje bi htio ubaciti funkciju kao što je rekao Marko Web

Dzonny


rocknroller

Quote from: Dzonny on April 04, 2010, 09:13:40 AM
Možeš preko ssi funkcije da ubaciš ko je online:
http://www.logooff.net/smf2/ssi_examples.php

ajde molim te mi malo pojasni, chat se otvara u shoutbox.html dali se uopće može pozvati php funkcija u html dokumentu.



našao sam u ovom dokumentu što si stavio predpostavljam da je to ovo <?php ssi_whosOnline(); ?>


Dzonny

Ne, ali zato iz html stranice možeš da pozoveš drugu stranicu koja sadrži ono što ti treba.
Napravi php fajl u koji ćeš staviti ssi funkciju za online listu i sačuvaj je negde na serveru,  a onda pomoću iframe taga pozovi napravljenu stranicu i to je to.
http://www.w3schools.com/TAGS/tag_iframe.asp

rocknroller

Quote from: Dzonny on April 04, 2010, 09:45:10 AM
Ne, ali zato iz html stranice možeš da pozoveš drugu stranicu koja sadrži ono što ti treba.
Napravi php fajl u koji ćeš staviti ssi funkciju za online listu i sačuvaj je negde na serveru,  a onda pomoću iframe taga pozovi napravljenu stranicu i to je to.
http://www.w3schools.com/TAGS/tag_iframe.asp

napravio sam tako ali sad me traži u popup prozoru "potrebna autentifikacija"

vidi.

Dzonny

Jesi stavio ovaj kod na vrh php stranice?
<?php require("SSI.php"); ?>   
Stranica bi zapravo trebala da sadrži samo taj kod + kod za online listu.

rocknroller

#11
Quote from: Dzonny on April 04, 2010, 10:12:05 AM
Jesi stavio ovaj kod na vrh php stranice?
<?php require("SSI.php"); ?>   
Stranica bi zapravo trebala da sadrži samo taj kod + kod za online listu.

da direktore svaka čast, php datoteku sam bio ubacio u folder sa ograničenjima zato je tražio autorizaciju, sada kada je u rootu radi.

još samo da nekako maknem ono "6 Gostiju, 1 Korisnik (0 Prijatelja)"


EDIT:

Sada vidim da listu korisnika ne radi kako bi htio jedan korisnik ispod drugoga. Mogu li u taj ssi.php ubaciti neku prepravljenu funkciju?

rocknroller

dzonny napravio sam hrpu posla po tvojim savjetima car si, ako budem mogao što za uzvrat napraviti, javi.

evo našao sam tu funkciju koja se poziva sa <?php ssi_whosOnline(); ?>  (barem mislim da sam našao)

// Shows a list of online users:  YY Guests, ZZ Users and then a list...
function ssi_whosOnline($output_method = 'echo')
{
global $user_info, $txt, $sourcedir, $settings, $modSettings;

require_once($sourcedir . '/Subs-MembersOnline.php');
$membersOnlineOptions = array(
'show_hidden' => allowedTo('moderate_forum'),
'sort' => 'log_time',
'reverse_sort' => true,
);
$return = getMembersOnlineStats($membersOnlineOptions);



može li se recimo kopirati taj kod još jedan put negdje u ssi.php, izmjeniti ovo "function ssi_whosOnline" sa nekim drugim imenom.  i pokušati urediti da ne ispisuje ono što sam napisao u prošlom postu i da imena ispisuje jedno ispod drugoga? i da se maknu linkovi sa imena, ili da se otvaraju u novom prozoru.



Dzonny

Ne, jer ako promeniš kod, promeniće se i na forumu, podatke vuče pomoću fajla Subs-MembersOnline.php, tako da ti preporučujem da ostaviš tako sa tekstom kao što si i stavio. :)

rocknroller

za prvu ruku ok, ali ne mogu staviti točku na to ne sviđa mi se tako.

Mogu li napraviti još jednu datoteku recimo Subs-MembersOnlineChat.php u kojoj bih se mogle napraviti preinake izvorne Subs-MembersOnline.php i povezati ju sa ssi.php?

tako da ta datoteka buse samo za chat?

rocknroller

Mislim da bez predznanja u php-u dobro napredujem logičkim zaključcima.

Napravio sam novu datoteku Subs-MembersOnlineChat.php i sada samo chat vadi podatke iz te datoteke. Pokušavam odgonetnuti što je ključno za ispisivanje moje online liste.

MarkoWeb

Funkciju mozes kopirati slobodno samo joj moras promeniti ime

rocknroller

#17
Quote from: MarkoWeb on April 04, 2010, 01:23:13 PM
Funkciju mozes kopirati slobodno samo joj moras promeniti ime

jesam evo upravo sam napravio i refresh svakih 15 sek.

<META HTTP-EQUIV=Refresh CONTENT="15; URL=http://www.yoursite.com/yoururl.php">

samo još da posložim da ispisuje imena korisnika jedno ispod drugoga.

Edit:

I da maknem link sa korisnika da se ne otvara cjela stranica u djelu popisa. ili još bolje da se otvara u glavnoj stranici foruma profil korisnika na koji se klikne.

manix

pa zasto pravite toliku frku :)
 
  evo ovako...
  u svom SSI fajlu nadji cledeci do koda
 
              $return['users'][$row['logTime'] . $row['memberName']] =   array(
                  'id' => $row['ID_MEMBER'],
                  'username' => $row['memberName'],
                  'name' => $row['realName'],
                  'group' => $row['ID_GROUP'],
                  'href' => $scripturl . '?action=profile;u=' .   $row['ID_MEMBER'],
                  'link' => $link,
                  'hidden' => empty($row['showOnline']),
                  'is_last' => false,
              );
 

  dodaj ispred toga sledeci kod
 
              $return['lista_chat'][$row['memberName']] = array(
                  'username' => $row['memberName'],
                  'name' => $row['realName'],
                  'link' => $link,
              );
 

 
  nakon izmene treba da izgleda ovako
 
              $return['lista_chat'][$row['memberName']] = array(
                  'username' => $row['memberName'],
                  'name' => $row['realName'],
                  'link' => $link,
              );
              $return['users'][$row['logTime'] . $row['memberName']] =   array(
                  'id' => $row['ID_MEMBER'],
                  'username' => $row['memberName'],
                  'name' => $row['realName'],
                  'group' => $row['ID_GROUP'],
                  'href' => $scripturl . '?action=profile;u=' .   $row['ID_MEMBER'],
                  'link' => $link,
                  'hidden' => empty($row['showOnline']),
                  'is_last' => false,
              );
 
 

 
EDIT: ovo sam zaboravio :)

takodje pronadji

    $return['users'] = array();
    $return['guests'] = 0;
    $return['hidden'] = 0;
    $return['buddies'] = 0;
    $show_buddies = !empty($user_info['buddies']);

ispred toga dodaj
    $return['lista_chat'] = array();

i na kraju to izgleda ovako

    $return['lista_chat'] = array();
      $return['users'] = array();
      $return['guests'] = 0;
      $return['hidden'] = 0;
      $return['buddies'] = 0;
      $show_buddies = !empty($user_info['buddies']);





  Sada imas listu prijavljenih clanova koji nisu skriveni...
 
  u index.template.php , tamo gde ti je potrebno dodas sledeci kod
 
  <?php
  $lista 
ssi_logOnline($output_method 'array');
  echo 
'<ul>';
  foreach(
$lista['lista_chat'] as $clanovi) {
  echo 
'<li>'$clanovi['name'].'</li>';
  }
  echo 
'</ul>';
  
?>

 

Naravno, mozes promeniti ovaj html kako ti odgovara i mozes napraviti proveru da li use ima ubacn realName ili stavljati link umesto name ili username

evo recimo provea postojanja realName

<?php
 
echo '<li>'.($clanovi['name']=='')? $clanovi['username'] : $clanovi['name'] .'</li>';
?>


ili

  <?php
   
echo '<li>'.(!$clanovi['name'])? $clanovi['username'] : $clanovi['name'] .'</li>';
  
?>

 


to naravno nista nece poremetiti tvoj SSI jer je samo dodat kod ako je izlazini mod niz(array) a ako je prikaz(echo) onda se nista nece prikazati sem onoga sto je bilo..

 
 

rocknroller

Hvala ti na opširnom odgovoru

zapeo sam odmah na početku   :( 


ne mogu naći te kodove u ssi.php

napravio sam većinu toga što sam želio osim da se poslože imena korisnika jedno ispod drugoga i da se klikom na ime člana otvori profil u novom prozoru. vidi link do sajta mi je u potpisu.


Advertisement: