-- Action file -- Creator : Lud2k. -- Date : 19/04/2008 -- Permet d'accéder à l'objet associé à l'action this = This() -- Ecriture dans les logs (log.txt) logs = Log() -- Gestion des flux http (ne peut gérer qu'une requête a la fois -- une thread par requête) http = Http() -- Gestion des utilisateurs user = User() -- Popup affiché lorsque l'on clique sur l'objet popup = Popup(); -- les informations sur l'image a afficher sur l'objet small_img = "" big_img = "" adding = false -- Fenêtre de visionnage de l'image window_voir = Window([[ Fermer ! ]]) -- Fenêtre de configuration du service window_conf = Window([[ Photo à utiliser (mini): Photo à utiliser (grande): Sauver Annuler ]]) -- Fonction appelé automatiquement par Alliun lors de l'ajout d'un service function onAdd() -- Lancement de la requête HTTP url = "http://www.chat-3d.net/Service_Photo/add/"..user:getId().."/"..user:getPassKey() http:call(url,"onAddFinish",true) logs:add(url) end -- Fonction callback pour l'appel http asynchrone dans la fonction onAdd() function onAddFinish(data) xml = Xml() xml:parse(data,"service") etat = xml:getChildNodeByName("etat"):getValue() if etat == "success" then id = xml:getChildNodeByName("id"):getValue() this:setId(id) this:save() else this:delete() end end -- Fonction appelé automatiquement par Alliun lors de la suppression d'un service function onDelete() -- Lancement de la requête HTTP url = "http://www.chat-3d.net/Service_Photo/delete/"..this:getId().."/"..user:getId().."/"..user:getPassKey() http:call(url,"onDeleteFinish",true) logs:add(url) end -- Fonction callback pour l'appel http asynchrone dans la fonction onDelete() function onDeleteFinish() -- rien a faire, l'action est supprimé a la fin de la fonction end -- Fonction appelé automatiquement par Alliun lors du lancement du service function onInit() if this:getId() then url = "http://www.chat-3d.net/Service_Photo/get/"..this:getId() http:call(url,"onDonwloadFinish") logs:add(url) end end -- Fonction callback qui gère les données reçus. function onDonwloadFinish(data) -- Création d'un nouvelle objet XML et parsing des données reçus. xml = Xml() xml:parse(data,"service") -- Vérification de l'état etat = xml:getChildNodeByName("etat"):getValue() if etat == "success" then -- Récupération des informations small_img = xml:getChildNodeByName("small"):getValue() big_img = xml:getChildNodeByName("big"):getValue() -- Modification de l'objet objet = this:getObject() if objet:nbPolygones() > 0 then polygone = objet:getPolygone(0) polygone:setImage(small_img) polygone:setDefMapY() end else small_img = "" big_img = "" end -- Ecriture dans les logs logs:add(small_img); logs:add(big_img); end -- Fonction appelé automatiquement par Alliun lors de la réception d'un signal function onSignal() onInit() end -- Fonction appelé automatiquement par Alliun lorsque l'utilisateur fait un click droit function onRightClick() if popup:isEmpty() then -- En fonction de l'utilisateur / depends on the user status if user:isAdmin() then popup:add("Configurer","onClickConfigurer"); end popup:add("Voir l'image","onClickVoir"); end popup:create(); end -- Fonction callback appelé si l'utilisateur a cliqué sur "Configurer" dans la popup function onClickConfigurer() window_conf:create() if small_img then window_conf:getItem(1):setText(small_img) end if big_img then window_conf:getItem(2):setText(big_img) end window_conf:getItem(3):setCallback("onClickSauve") window_conf:getItem(4):setCallback("onClickAnnuler") end -- Fonction permettant d'encoder une chaine de caratère pour être transmise par HTTP GET function url_encode(str) if str then str = string.gsub (str, "\n", "\r\n") str = string.gsub (str, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end) str = string.gsub (str, " ", "+") str = string.gsub (str, "%%2F", "|") end return str end -- Fonction callback appelé si l'utilisateur a cliqué sur "Sauver" dans la fenêtre de configuration function onClickSauve() -- Récupérer les données de la fenêtre small_img = window_conf:getItem(1):getText() big_img = window_conf:getItem(2):getText() -- Encoder pour l'envoi encoded_small = url_encode(small_img) encoded_big = url_encode(big_img) -- Appeler le service url = "http://www.chat-3d.net/Service_Photo/update/"..this:getId().."/"..user:getId().."/"..user:getPassKey().."/"..encoded_small.."/"..encoded_big.."/" http:call(url,"onSauveFinish",true) logs:add(url) -- Envoyer un signal au serveur Alliun pour indiquer que l'objet a été modifié this:signal() -- Détruire la fenêtre window_conf:destroy(); end -- Fonction callback appelé à la fin de la requête HTTP GET de sauvegarde function onSauveFinish() -- rien a faire.. end -- Fonction callback appelé si l'utilisateur a cliqué sur "Annuler" dans la fenêtre de configuration function onClickAnnuler() -- Détruire la fenêtre window_conf:destroy() end -- Fonction callback appelé si l'utilisateur a cliqué sur "Voir" dans le popup function onClickVoir() window_voir:create() window_voir:getItem(1):setCallback("onClickClose") window_voir:getItem(2):setImage(big_img) end -- Fonction callback appelé si l'utilisateur a cliqué sur "Fermer" dans la fenêtre de visionnage de la photo function onClickClose() window_voir:destroy() end -- Fonction appelé automatiquement par Alliun lorsque l'utilisateur fait un click gauche function onLeftClick() -- rien a faire end -- Fonction appelé automatiquement par Alliun lors de la destruction de l'objet function onDeinit() -- rien a faire end