[ Okram_marko @ 03.02.2010. 11:14 ] @
Lijep pozdrav,


imam na sajtu 3 jezika (Joomla! CMS). Htio bih da iskoristim jedan flash file (bit ce jaako mal (100-200 KB) u koji bi stavio tekst na 3 jezika.
Zamislite da je to baner na 3 razlicita jezika.
Ja bi sada htio da provjerim na kojem jeziku korisnik gleda stranicu. recimo variabla je
Code:

$lang


Ja cu php-om provjeriti koji jezik je korisnik otvorio i onda cu ovoj gore variabli dodjeliti vrijednosti od 1-3. Zavisi koji jezik je u pitanju.

Sad bi ja zelio da flash file provjeri koja je vrijednost ove variable i da onda ide na frame gdje je odgovarajuci jezik.

NAPOMENA* Ovo mora da radi sa svim browserima.

Znam da ima rijesenje.

Hvala unaprijed!
[ akasha org. @ 03.02.2010. 13:17 ] @
Hmm.. jumla.. Kako prikazujes flash? Koristis object i embed? Ili neki JavaScript (npr swfobject.js)?

Sve sto trebas da uradis jeste da prosledis promenljivu iz PHPa do Flasha. Kako? Na mestu gde pozivas flash, dodas parametar FlashVars="&param=vrednost&".
FlashVars je poput URLRequesta, dakle &prom1=vred1&prom2=vred2& itd.

Kako ces to pokupiti u flashu? Pa, ako koristis bas naziv prom1, u flashu ce automatski biti definisana promenljiva _root.prom1 i imace vrednost vred1. Ne treba eksplicitno kreiranje, vec odmah mozes hendlovati promenljivu.

I da, radi sa svim browserima :)
[ Okram_marko @ 03.02.2010. 14:40 ] @
Prije svega, hvala ti na brzom odgovoru.

Zanemarimo sada da je joomla CMS u pitanju. Ja cu ubaciti swf na bilo koji nacin, to mi nije nikakav problem.

Evo pokusat cu da budem malo kreativniji pa cu da opisem kako i sta planiram.

Imam URL: www.moj-sajt.com/index.php?lang=en i na kraju se samo mjenja ovo "en" u recimo "de".
Ja moram sa swf "procitati" cemu je jednako ovo "lang". Zatim ce swf prikazati concent koji odgovara tom jeziku. (otici na frame gdje pocinje sadrzaj na drugom jeziku).

Sto se php-a tice, ja mogu imati jednu variablu (kao sto sam napisao u predhodnom postu) pa cu onda reci "ako je lang == 'en' onda je $idi_na_jezik = '1'.
Zatim "ako je lang == 'de' onda je $idi_na_jezik = '2'.

Ja cu onda samo u flash file vuci koja je vrijednost ove variable $idi_na_jezik .

Bi li mi mogao napraviti nekakav primjer ovoga. Koristim Flash sa AS3. Tek sam po prvi put otvorio flash CS3, do sada sam radio samo na MX 2004.
Primjetio sam da kada publish-am projekat, on izbaci i js fajl.

Ovo je samo za informaciju.

Eto, bio bih ti VEEEOOOMAA zahvalan ako bi mi mogao napraviti neki primjer kako ovo rijesiti.
Ako mozes, ubaci tamo u Action Script i stavke da ide na 1. 2. ili 3. frame. Odnosno, frame sa nekim imenom. Mozes staviti proizvoljno.

HVALA JOS JEDNOM!

Evo samo da dodam cod koji koristim u index.php

Code:

<?php

$config = &JFactory::getConfig();
$lang = $config->getValue('language');
// gore je definisano da kupi koji je joomla jezik u upotrebi

// slijedi cod kojim ispisujem ime jezika koji se koristi
// napomena ** u ovom codu se samo ispisuje. Umjesto 'njemacki' se moze staviti i $jezik_je = 1; pa se ta
// variabla moze koristiti bilo gdje kao vrijednost
// echo nema potrebe da se koristi. Dodan je samo kao proba da se vidi da sve radi.

if ($lang == 'de-DE') {
    $jezik_je = 'njemacki';
    echo $jezik_je;
    }


    
if ($lang == 'en-GB') {
    $jezik_je = 'engleski';
    echo $jezik_je;
    }

    
if ($lang == 'hr-HR') {
    $jezik_je = 'hrvatski';
    echo $jezik_je;
    }
?>


Samo mislim da bi variablu $jezik_je trebao definisati kao globalnu.

Meni u flash-u treba da se kupi vrijednost variable $jezik_je.

Ako je $jezik_je == 1 onda flash ide na frame 1.
Ako je $jezik_je == 2 onda flash ide na frame 2.
Ako je $jezik_je == 3 onda flash ide na frame 3.

Eto to mi treba.

[Ovu poruku je menjao Okram_marko dana 03.02.2010. u 16:40 GMT+1]
[ akasha org. @ 03.02.2010. 16:30 ] @
Pazi, ne radis if u php-u.

Pogledaj ovo: http://blog.deconcept.com/swfobject/
To je zamena za skript koji Flash sam generise.
Poigraj se sa njim.
Ono sto tebi treba je negde na sredini - Passing variables into your movies using the “Flashvars” parameter.

Samo ces pustiti $lang do flasha i tamo odraditi logiku.

Code:


if (_root.lang == "de-DE") {

    gotoAndStop(2);
    // ili bilo sta drugo sto zelis raditi ako je lang naveden u if klauzuli

} // else if () ...



Eh.. vidim sada da bi koristio $jezik_je. Pa nista, samo umesto $lang pustis $jezik_je i napravis adekvatan if.
[ Okram_marko @ 03.02.2010. 16:57 ] @
Ma brz si, svaka cast.

Evo nasao sam ovo sto si spomenuo:

Code:

<script type="text/javascript">
   var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
   so.addVariable("variable1", "value1");
   so.addVariable("variable2", "value2");
   so.addVariable("variable3", "value3");
   so.write("flashcontent");
</script>


Znas sta mi nije jasno ovdje, meni treba samo jedna variabla. Ali mi nije jasno sta da stavim pod "value" ?
Nisam ja ovo bas skapirao.

Ni zasto dimenzije, ni bilo sta.
Bio bih ti prezahvalan ako bi mi mogao napraviti jedan primjer. Ja se ovdje ne mogu nikako snaci. Ova sa flash-om i If, to razumijem.
Ali ostalo.. ne kapiram sta trebam uradit.

Ja cu morati zadrzati ovo unutar php-a:
Code:

$config = &JFactory::getConfig();
$lang = $config->getValue('language');



E sada, daj mi samo molim te objasni kako da iskoristim ovu variablu $lang u svemu ovome. Kako treba izgledati java skripta?


[Ovu poruku je menjao Okram_marko dana 03.02.2010. u 18:19 GMT+1]
[ akasha org. @ 03.02.2010. 17:37 ] @
Pre nego sto koristis javascript, preuzmi ga i dodaj kod sebe. U hederu naravno navedi putanju do njega (uputstvo imas na toj strani).
Imas samo jednu promenljivu.

Code:


<div id="flashcontent">Ovde ce ici tekst koji ce se prikazivati ukoliko ne upsemo sa upisivanjem swfa</div>

<script type="text/javascript">
   var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
   so.addVariable("lang", "<?php echo $lang; ?>");
   so.write("flashcontent"); // mora se poklopiti sa id vrednosti div-a
</script>



To je sve sto ti treba da bi do flasha prosledio $lang.

movie.swf - putanja do swf fajla
mymovie - ID object ili embed taga, tebi nece koristiti, pa neka ostane mymovie, ili stagod
flashcontent - id u koji ces smestiti
400 - sirina swf fajla
200 - visina swf fajla
8 - verzija flash plejera koju zahtevas za pokretanje sadrzaja
#336699 - boja pozadine u hex (RRGGBB) formatu.

Jednostavno, to su parametri koje prosledjujes aplikaciji.
[ Okram_marko @ 03.02.2010. 18:01 ] @
E care, sada je mnogo lakse.

Idem sada da vidim i probam to sve. Uh jedva cekam!
Samo stavim u header ovo: swfobject.js ? Evo idem da probam na localhost pa onda na site.

Javit cu ti sta je i kako je.

Hvala ti jos jednom.
[ Okram_marko @ 03.02.2010. 19:07 ] @
Ej legendo,

evo probao sam ali kada lupim Ctrl + enter (publish) izbaci mi i error za liniju _root.
A flash se samo vrti u krug. Stavio sam ja i radnju stop. Ali za ovo mi gresku ispaljiva.

Sta bi moglo biti?

Stavio sam ovo:

if (_root.lang == "engleski") {

gotoAndStop(5);
// ili bilo sta drugo sto zelis raditi ako je lang naveden u if klauzuli

}

Moram naglasiti da je u ovo "lang" plave boje. Cim napisem nesto drugo, promjeni boju u crnu. Ali svakako, nece da radi.
[ akasha org. @ 03.02.2010. 19:25 ] @
Obori ActionScript na AS2. Ne treba ti trojka za ove potrebe.

Sam flash ti nece raditi kako treba, jer nema poziva iz htmla, tj niko mu ne prosledjuje promelnljivu.
Moras pokrenuti html/php stranu koja poziva taj flash i videti u browseru sta se desava.

lang je rezervisana rec u flashu, ali ce raditi i kao promelnljiva.
Ako hoces da te ne buni, nazovi promelnljivu drukcije, recimo jezik.
Samo, vodi racuna da i u pozivu sa so.addVariable odrzis naziv promenljive za flash.

Ukoliko si nestrpljiv, pogledaj recimo izbor jezika na adresi http://fisher-hill.eu/index.php?page=home
Doduse, tamo je umesto swfobject.js koriscen AC_RunActiveContent.js, ali je princip isti.
[ Okram_marko @ 03.02.2010. 19:38 ] @
Ma legedno, evo proradilo je!

Huraaa!
Ma samo sam spustio na AS2. I bas reko da napisem da radi, vidim tvoj post.
Pogledao sam i source fajlove. Odlicna stvar!
Sad cu moci jos neke stvari uraditi, koje sam ranije planirao. Aaa jest ovo pojednostavilo stvar do bola. Ranije (prije nekih 6-7 godina) sam radio sam MX2004.
Ma nikad nije proradilo. A sad.. san snova!

Hvala ti brate na pomoci, sada lakse disem.

Samo da dodam da sam morao koristiti slijedeci action script:

Code:

if (jezik == 'engleski') {
    gotoAndStop(6);
}



Ispravka je u apastrofima kod rijeci engleski. To je to.

I jos da dodam :

Code:

if (jezik != undefined) {

// ovdje ide sav cod odozgo

} esle {

// ako variabla nije definisana ili nije porslijedjena u swf
// uradi nesto drugo
}




[Ovu poruku je menjao Okram_marko dana 03.02.2010. u 20:51 GMT+1]

[Ovu poruku je menjao Okram_marko dana 03.02.2010. u 20:52 GMT+1]
[ Okram_marko @ 03.02.2010. 20:28 ] @
Evo samo da dodam jedno bolje rijesenje. Rijec je o switch case.
Predhodni cod je pravio problem ako se stavi stop();. Ovaj dole je efektivniji i laksi za koristenje.


Code:

stop(); //zaustavi se
switch (jezik) {  // jezik je variabla koja se java skriptom salje u flash
    case '1':  // ako je vrijednost variable jednaka 1 onda izvrsi slijedeci blok
        trace ( flashVar_txt.text = "sada je jednak jedinici" );
        break;
    case '2': // ako je vrijednost variable jednaka 2 onda izvrsi slijedeci blok
        trace (flashVar_txt.text = "sada je jednak dvojci" );
        break;
    case '3': // ako je vrijednost variable jednaka 3 onda izvrsi slijedeci blok
        trace ( flashVar_txt.text = "sada je jednak trojci"   );
        break;
    default: // ako vrijednost variable nije jednaka ni jednom broju izvrsi slijedece
        trace ( flashVar_txt.text = "Vrijednost variable nije procitana ili ta vrijednost ne postoji. Molimo uradite refresh stranice."  )
}

// flashVar_txt  je naziv dinamickog text field-a. U njemu se prikazuju sve poruke.



Ovdje gore samo treba unijeti gotoAndStop (5); umjesto teksta "flashVar_txt.text = "sada je jednak dvojci". I tako dalje.

[ Okram_marko @ 03.02.2010. 21:01 ] @
Poz,

evo samo da javim da nesto nije ok i da ne radi uvjek kako treba.

evo koji AS koristim:

Code:

stop();
switch (jezik) {
    case '1':
        gotoAndStop(5);
        break;
    case '2':
        gotoAndStop(10);
        break;
    case '3':
        trace ( flashVar_txt.text = "sada je jednak trojci"   );
        break;
    default:
        trace ( flashVar_txt.text = "nije ispunjen ni jedan uslov"  )
}



Kada uradim refresh stranice, ne ode na frame 5 vec zapne negdje. Vjerojatno stane na frame-u 1.
Kada uradim Shift + refresh (shift + F5), onda ode na frame 5. Isto vrijedi samo za ove gotoAndStop(). Za trace radi uvjek kako treba. Ne pravi probleme.

E sada, sta bi moglo biti... Ostaje u cache-u. Kako da ovo rijesim?