Systeme de news dans flash avec backoffice

cagoulechonchon Messages postés 35 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 18 mars 2010 - 29 mai 2008 à 17:36
lereme Messages postés 3 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 29 août 2009 - 29 août 2009 à 15:12
Bonjour a vous,

Voila, je suis plutot novice dans l'actionscript flash et j'ai un gros probleme pour réaliser un site qui me tient a coeur.

Je dois réaliser un systeme de news avec un backoffice pour que la
personne du site puisse le gérer facilement. Elle va donc générer un
fichier xml qui sera importé dans flash.

Dans flash tous les titres des news seront visibles, mais pas les textes. Cest
quand on clic sur l'un des titres que la news (acompagnée d'une photo)
s'affiche.
J'imagine donc que le clic génère l'appelle de la news dans le fichier par une variable, mais je ne sais pas comment faire dans la forme..

Ca fait 3 jours que je regarde ts les forum et que je ne m'en sors pas..

Si vous avez une idée ca m'aiderait ennormement

Merci !

3 réponses

lereme Messages postés 3 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 29 août 2009
21 juil. 2008 à 12:54
bon et bien avec un peu de retard mais peu être encore a temp, je t'apporte ma petite réponse :
j'ai codé 2 classes, la premiere permet de lire de reconstruire et de renvoyer a un serveur un fichier XML, elle est utile a l'interface d'administration donc
et une autre, très simple permet de retrouver un noeuf xml selone son nom n'imorte ou qu'il soit dans l'arborescence:
il faudra que tu adapte un peu ces deux classes mais au final c'est assez simple :
je vois que je ne sais pas joindre des fchiers, donc il faudra que tu fasse un peu de copier coller :

la 1ere

class com.frou.ConnectBO extends Object{
    //
    private var path = "";
    private var addListener:Function;
    private var _listeners:Array;
    public var broadcastMessage:Function;
    public var onLoad:Function;
    //
    //
    function loadConfig(_this) {
        var xconf = new XML();
        xconf.ignoreWhite = true;
        xconf.onLoad = function() {
            var namesAndTypes = [];
            for (var i = 0; i<this.firstChild.childNodes.length; i++) {
                namesAndTypes[i] = {data:this.firstChild.childNodes[i].attributes.type, label:this.firstChild.childNodes[i].attributes.nom};
            }
            _this.broadCast("onLoad", namesAndTypes);
        };
        xconf.load(path+"/config.xml");
    }
    //
    private function broadCast(init:String, param) {
       
        this.broadcastMessage(init, param);
       
    }
    //
    function toString():String {
        return "[ConnectBO]";
    }
    //
    //---------------constructeur----------------------//
    //
    function ConnectBO(path:String) {
        AsBroadcaster.initialize(this);
        this.addListener(this);
        this.broadcastMessage("trou");
        this.path = path;
        loadConfig(this);
    }
}

la 2eme :

class com.frou.XMLBrowse {
    private var _this;
    static var urlxml = "http://macbook.home/~macbook/amrp/backoffice/contenus.xml";
    //chemin du xml de contenus
    var tags = new Array();
    //tableau qui contiendra les noeuds XML
    // déclaration des fonctions publiques
    public var xml;
    //Objet XML
    public var onLoad:Function;
    public var onReceipt:Function;
    public var broadcastMessage:Function;
    public var addListener:Function;
    //*********************//  Constructeur   //*********************//
    function XMLBrowse(id) {
        AsBroadcaster.initialize(this);
        //on initialise la methode de gestion des écouteurs
        this.addListener(this);
        //on ajoute un écouteur a l'objet
        _this = this;
        this.xml = new XML();
        // on type
        this.xml.ignoreWhite = true;
        loadXML(id);
    }
   
    // permet de retrouver un tag dans l'objet XML
    //@utiliser la syntaxe XMLBrowse.browse(nom_du_tag) : Object
    //l'objet renvoyé contient une valeur de type string et un numéro (val et ID )
    //
    function browse(tag) {
        var temp;
        var num;
        this.xml = this.xml.firstChild;
        function cherche(mot, xml, tags) {
            for (var i = 0; i<xml.childNodes.length; i++) {
                tags[i] = (xml.childNodes[i]);
                if (xml.childNodes[i].nodeName == mot) {
                    temp = (xml.childNodes[i].attributes.texte);
                    num = i;
                }
            }
        }
        cherche(tag, this.xml, this.tags);
        return {val:temp, ID:num};
    }
   
    //Charge le XML et y cherche le tag id
    //en l'absence de parametre la methode se contente de charger le xml
    //et de reenvoyer sur l'ecouteur onLoad un objet vide
    //
    function loadXML(id) {
        var th = this;
        xml.onLoad = function() {
            var t = th.browse(id);
            th.broadcastMessage("onLoad", t);
        };
        xml.load(urlxml);
    }
   
    //
    //reconstruit le XML sous sa forme originale en intégrant les modifications passées en parametre
    //le premier parametre est la chaine a remplaçante et ke 2eme le numéro de l'entrée a remplacer du XML
    //le nouveau XML est envoyé a l'adresse : textUpdate.php
    //
    public function rebuild(str:String, id:Number) {
        var th = this;
        var SXML = new XML();
        var rootnode = new XMLNode(1, "contenus");
        for (var i = 0; i<tags.length; i++) {
            if (i == id) {
                tags[i].attributes.texte = str;
                rootnode.appendChild(tags[i]);
            } else {
                rootnode.appendChild(tags[i]);
            }
        }
        SXML.appendChild(rootnode);
        var LV = new LoadVars();
        LV.xm = SXML.toString();
        LV.onLoad = function() {
            th.broadcastMessage("onReceipt", this);
        };
        LV.sendAndLoad("http://macbook.home/~macbook/amrp/backoffice/textUpdate.php", LV, "POST");
    }
   
    //
    function toString():String {
        return "[XMLBrowse]";
    }
}

et celle de recherche enfin :

//
//François Reme - lereme@hotmail.com - 2008
//
//****************************************///////////////////////////////////////////////////////////////*******************************//
//****************************************// Etend la classe XML, renvoie un XMLNode ayant le même nom //*******************************//
//****************************************//             que la chaine passée en arguments               //*******************************//
//****************************************///////////////////////////////////////////////////////////////*******************************//
//
class XMLDispatcher extends XML {
    private var xmlnode:XMLNode;
    // Constructeur
    function XMLDispatcher(url) {
        // On appelle la superclasse pour que la classe XMLDispatcher
        //hérite des propriétés et methodes de la class XML
        super();
        this.load(url);
    }
    //
    function Browse(tag:String):XMLNode {
        var T;
        var TXML = this.childNodes;
        var TAXML = new Array();
        var PT = new Array();
        TAXML[0] = TXML;
        BrowseInOneLevel(0, tag);
        function BrowseInOneLevel(init, mot) {
            for (PT[init]=0; PT[init]<TAXML[init].length; PT[init]++) {
                if (TAXML[init][PT[init]].nodeName == mot) {
                    T = TAXML[init][PT[init]];
                }
                TAXML[init+1] = TAXML[init][PT[init]].childNodes;
                BrowseInOneLevel(init+1, mot);
            }
            return T;
        }
        return T;
    }
    // cette methode renvoie un identifiant a l'appel trace(XMLDispatcherInstance)
    function toString() {
        return "[XMLDispatcher]";
    }
}
//
//
Voila  c'est pas tout simple, si tu est completement paumé dans tout ça, je te conseille d'essayer de coder tout ça toi même, pour ça tu aura besoin, je pense :
de queques champ de textes, correspondant a chaque attributs d'un noeud xml
et a l'appui d'un bouton envoyer ce noeud est ajouté au dernier de l'ancien xml précédement chargé
ensuite, je te join mon fichier php (j'ai reçu de l'aide su flash france pour le faire, "merci geyser") qui permet a l'envoie d'une chaine de la stocker dans un fichier xml.
voila bonne chance :
le php :
<?php
 
function getFormatedText($texte){  
    $texte=utf8_decode($texte);  
    $texte=str_replace( "\r", "\n", $texte);  
    $texte=stripslashes($texte);  
    return $texte;  
}  

# fin de la fonction 
 $xml=getFormatedText($_POST['xm']);
 
file_put_contents('./contenus.xml',$xml);
echo '&ok=1&';

?>
0
cagoulechonchon Messages postés 35 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 18 mars 2010
27 août 2009 à 21:57
Je reponds.. encore plus tard (pour etre honete j'avais perdu ce fil de discution !)
Je te remerci Lerem ! Mais quand je dis que je suis novice, c'est que je ne comprens pas vraiment comment integrer ce code. Y aurait-il des exemple de flash ? J'ai cherché (peut etre mal) mais je ne trouve rien. Aller un lien vers un pti tuto quoi ! Pleaaase
0
lereme Messages postés 3 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 29 août 2009
29 août 2009 à 15:12
0
Rejoignez-nous