Több helyen is leírtuk már, de nem részleteztük: a történésekben és az értesítésekben használhattok linkeket is. Megkötés, hogy ezek csak az iWiWen belülre mutathatnak, külső oldalra nem. A linkek előállítása nem feltétlenül triviális feladat, főként ha ki szeretnétek használni azt a lehetőséget, hogy az alkalmazásoknak paraméterek is átadhatók. Az alábbiakban egy példakódot is közzéteszünk, mely segítségével helyes linkek állíthatóak elő könnyedén.
Ha az iWiWen belülre szeretnénk linkelni, akkor célszerű relatív URL-eket használni. A rendszer ezeket, továbbá a http://iwiw.hu/ és http://sandbox.iwiw.hu/ címmel kezdődő linkeket engedi át. Ez utóbbi abszolút URL-ek használatát nem javasoljuk, mivel egy tévesen meghatározott domainből csak problémák lehetnek.
Leszámítva a profil oldalakra történő linkelést, egy történésben, értesítésben főként magára az alkalmazásra szeretnénk linkelni: ez egy /app/12345678 kinézetű URL-t jelent. A link egyébként /app/{appId}{-prefix|/|userId}{-prefix|?view-params=|viewParams} formátumú, amiből talán a legérdekesebb számotokra a viewParams paraméter. Ennek értéke JSON formátumban adható át, segítségével paraméterezhetjük az alkalmazást. Bár egy linket ennek ismeretében könnyedén előállíhatunk már, hogy még egyszerűbb legyen, egy függvényt is közzéteszünk:
if (typeof IWIW == 'undefined') { var IWIW = {}; } IWIW.getApplicationLink = function(parameters) { return gadgets.views.bind(gadgets.config.get('views')['canvas'].urlTemplate, { appId: document.location.host.match(/(\d+)\./)[1], viewParams: gadgets.json.stringify(parameters) }); }
A függvény nem csinál mást, mint veszi a fentebb is bemutatott URL sablont, s behelyettesíti az alkalmazás azonosítóját (mely a Homokozóban és az éles iWiW-en ugyanaz lesz) és az átadandó paramétereket a gadgets.views.bind függvény segítségével. Az alkalmazás azonosítóját az aktuális URL-ből veszi, a sablont pedig egy OpenSocial konfigurációs változóból olvassa ki.
A használata elég egyszerű:
alert(IWIW.getApplicationLink({'aaa':'bbb'}));
A függvény persze okosítható, és átadható hogy a canvas vagy profil nézethez szeretnénk URL-t, vagy hogy melyik felhasználónak a nézetére szeretnénk linkelni, innen már talán nem nehéz ezeket implementálni, ha szükség van rá.
Ahogy korábban is írtunk már róla a requestNavigateTo bemutatása kapcsán, az átadott paramétereket a következőképpen olvashatjuk ki az alkalmazásban:
var params = gadgets.views.getParams();
Értesítés küldésnél például az alábbi formában használható a linkelés az üzenet BODY-jában, amennyiben egy adott tartalomra szeretnénk linkelni az alkalmazáson belül:
// felhasználó objektum, pl. ismerős lekérdezésből (newFetchPeopleRequest) var user = ...; // felhasználó keresztneve var userName = user.getField(opensocial.Person.Field.NAME).getField(opensocial.Name.Field.GIVEN_NAME); // felhasználó (pl. ismerős) lekérdezéséből jövő profil URL var userProfile = user.getField(opensocial.Person.Field.PROFILE_URL); // link az alkalmazásra, példaként egy contentId paraméterrel var appLink = IWIW.getApplicationLink({'contentID': 87654321}); // az adott tartalom címe var contentTitle = 'Boys Don\'t Cry'; // üzenet BODY összeállítása var messageBody = '<a href="' + gadgets.utils.escapeString(userLink)+'">' + gadgets.utils.escapeString(userName) + '</a> ajánlja kedvencét: ' + '<a href="' + gadgets.utils.escapeString(appLink)+'">' + gadgets.utils.escapeString(contentTitle) + '</a>. Neked hogy tetszik?';
Figyeljünk rá, hogy csakis valid XHTML tartalmat lehet az üzenetben elküldeni. Tekintettel arra, hogy a felhasználó nevében szerepelhet HTML-nek nézhető tartalom (kisebb/nagyobb jelek, & karakter), illetve ez igaz lehet a linkekre, a linkelt tartalom címére is, ezért ezeket mindenképpen megfelelően kódolni kell!
Szuper bejegyzés, hiánypótló!
Viszont a gadgets.views.requestNavigateTo(gadgets.views.getSupportedViews()['profile'],
{}, AZONOSÍTÓ[pl. sandbox.iwiw.hu:n9yQxh21]); még mindig hibás, az mikor lesz javítva?
Az ellen lehet valamit tenni, hogy a view paraméterek elvesznek, amennyiben olyasvalaki kattint a linkre, akinek még nem volt telepítve az alkalmazás, azaz először át kell esnie az addapplication engedélyezési folyamaton?
Gábor: rajta vagyunk a hiba javításán.
Daniel: ez egy ismert hiba, de valószínűleg indulásig nem lesz javítva, csak valamikor utána.
köszönöm
gadgets.utils.escapeString helyett gadgets.util.escapeString -et kell írni
HELP!
a relatív útvonalat helyesen visszakapom:
/app/XXXXXXXXX?view-params={”aaa”:”bbb”}
linkre kattintáskor viszont az alábbi urlre jutok:
http://XXXXXXXXX.app.sandbox.iwiw.hu/app/XXXXXXXXX?view-params={%22aaa%22:%22bbb%22}
ami 404 -et dob,
viszont ez kellene helyette:
http://sandbox.iwiw.hu/app/XXXXXXXXX?view-params={%22aaa%22:%22bbb%22}
mi lehet a gond?
Hali,
Profil oldalnak hogyan lehet paramétereket passzolni?
Próbáltam a http://sandbox.iwiw.hu/pages/user/userdata.jsp?userID=14279276&view-params={%22getpage%22%3A%22oc_tab3%22} de semmi..
Meg arra gondoltam hogy megoldható lenne profil oldalon az app elé egy taget berakni.. Így egyből odaugorhatnánk.
Köszi,
g
Bocsi, levágta az a html tagokat az előző commentem. Szóval egy -re gondoltam
na.. csak nem engedi…
tehát egy ANCHOR tag NAME paraméterrel ahol NAME=APPID