Dec 04, 2008, 12:25 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
Search via SMF or Google: modx forums all of modxcms.com web
  MODxCMS.com   Forums   Help Login Register  
News:Donate to MODx: Donations
Pages: [1]   Go Down
  Print  
Author Topic: Capacités d'adaptations de ModX  (Read 2417 times)
0 Members and 1 Guest are viewing this topic.
macspyre
Jr. Member
*
Posts: 25



WWW
« on: Jul 24, 2006, 03:57 AM »

Bonjour à tous,

Je découvre aujourd'hui modX, et me voici très enthousiaste depuis son installation sur ma machine.
Je suis un fervent utilisateur de SPIP depuis sa version 1.2 que j'utilise à des fins personnelles et professionnelles.
Cependant, voila un an maintenant que je lui cherche un remplaçant. SPIP est un logiciel bien pensé et facile à déployer une fois le principe des boucles aquises, mais je lui reproche cependant de ne pas pouvoir se plier à certains besoins de mes clients concernant les accès privés par exemple, et une interface parfois trop complète pour des besoins standards de sites institutionnels nécessitant un peu de dynamisme comme des forums par exemple...
Voilà pour la présentation.

Pour les besoins d'un groupe national possédant plusieurs succursales un peu partout en france, je suis consulté pour la réalisation de leurs sites internet et extranet.
Etant donné que ces sites ne devront être en partie accessibles seulement à certaines personnes autorisées, et que je ne compte ni leur développer un CMS à partir de zero, ni faire un fork de SPIP, je me suis mis à chercher d'autres solutions. J'ai installé quelques frameworks PHP, et j'en avais retenu un : Symphony, jusqu'à ce que je rencontre ModX...
Le principe de ModX si je l'ai bien compris, est qu'il propose les fonctions d'un CMS et en plus dispose d'une API pour pouvoir développer des fonctions plus personnelles. Un melange de CMS et d'un FrameWork en fait.

Pour que vous puissiez me donner vos avis sur la capacité de ModX de répondre à leur besoins, je vous expose rapidements les fonctions clés des sites:
- Accès public
    - pages de presentations (textes+images)
    - annuaires
    - telechargement de documents PDF
    - syndication
    - actualités
    - calendriers
- Accès privés & Intranet (idem accès public +...)
    - newsletter
    - outils de calculs
    - petites annonces
    - moteur de recherche

Comme vous le voyez, SPIP ne suffirait pas, mis à part si je lui adjoint d'autres outils GNU... mais à l'utilisation, devoir jongler entre différentes interfaces ne serais pas l'idéal pour la secrétaire chargée des mises à jour des sites !  Grin

J'ai lu avec intérêt la discussion entre davidM et loupilo sur le hub, ainsi que d'autres pages parlant de modX, et j'aimerai éviter si possible de commencer un développement avec un produit que je ne connais pas et pour lequel je m'apercevrai en fin de compte qu'il ne correspondait à mes besoins.

si j'ai bien compris la philosophie de ModX, il devrait être possible de lui adjoindre des modules afin d'étoffer ses capacités. Je n'ai pas vu de modules de PA ou d'annuaires sur le site de ModX, peut être ai-je mal cherché.
Quel serait selon vous la durée d'apprentissage du fonctionnement de ModX pour le développement de ce type de modules, pour un modeste développeur web comme moi ? Je n'ai que 2 ans d'expérience en programmation (autodidacte PHP).

Dans tous les cas, longue vie à SPIP et ModX qui sont d'excellents produits chacun avec leurs qualités.
Logged

--
MacSpyre
Guillaume
Moderators
*
Posts: 711


The future is built today.


« Reply #1 on: Jul 25, 2006, 09:21 AM »

Bonjour,

Regarde Peut-on faire tout ça avec Modx ?. Tu y trouveras une bonne partie des réponses que tu souhaites Smiley

A ma connaissance il n'existe (encore) aucun annuaire. Il n'existe pas de ressources sur les petites annonces.
Par contre, tu peux les faire toi même Wink Modx est très simple pour développer de nouvelles ressources. C'est du PHP classique avec la possibilité d'utiliser l'API de Modx. Il y a des infos à ce sujet sur la page documentation et sur le wiki.

Regarde aussi la page des ressources, tu trouveras peut être ton bonheur ! ça évolue tellement vite !
Logged

Sorry for my english. I'm french... My dictionary is near me, but it's only a dictionary !
macspyre
Jr. Member
*
Posts: 25



WWW
« Reply #2 on: Jul 25, 2006, 10:59 AM »

Merci pour ces informations Guillaume.
Je développerai donc les 2 nouvelles ressources pour les mettre à disposition à la communauté MODx.

Je suis bien motivé en tout cas à essayer ce produit qui a l'air très prometteur sur le papier, et les différents avis des utilisateurs consultés de part et d'autre me conforte dans ma décision.

A bientôt sur les forums.
Logged

--
MacSpyre
Spheerys
Full Member
***
Posts: 179


« Reply #3 on: Feb 20, 2008, 08:10 AM »

Bonjour,

Macspyre : as-tu finalement développé ces ressources ? Le cas échéant, comment t'en es-tu sorti ?
Un client me demande de réaliser sur son site un système de petites annonces ainsi qu'un annuaire et je n'ai rien trouvé de tout près pour ModX.

Si toi ou un autre forumeur a un tuyau, c'est pas de refus Smiley
Logged
ganeshXL
Testers
*
Posts: 1,549



WWW
« Reply #4 on: Feb 20, 2008, 10:43 AM »

En tout cas, il a bien utilisé modx sur un de ces sites: http://www.chezsteph.com/index.php/Accueil -> http://www.makeopen.net/  - on y trouve les "modx-media-path" références dans le HTML :-)
Logged

macspyre
Jr. Member
*
Posts: 25



WWW
« Reply #5 on: Feb 22, 2008, 08:26 AM »

Bonjour,

Macspyre : as-tu finalement développé ces ressources ? Le cas échéant, comment t'en es-tu sorti ?
Un client me demande de réaliser sur son site un système de petites annonces ainsi qu'un annuaire et je n'ai rien trouvé de tout près pour ModX.

Si toi ou un autre forumeur a un tuyau, c'est pas de refus Smiley

Salut Spheerys,

Effectivement, j'ai trouvé comment manier la bête...
Aujourd'hui je ne veux plus utiliser un autre outil que MODx.
Dis toi une chose : TOUT EST POSSIBLE

Si tu veux quelques tuyaux, précise moi ta fonction.

@+
Logged

--
MacSpyre
Spheerys
Full Member
***
Posts: 179


« Reply #6 on: Feb 22, 2008, 02:20 PM »

En fait j'ai exactement besoin de mettre en place un annuaire de lien et un système de petites annonces Smiley
Logged
macspyre
Jr. Member
*
Posts: 25



WWW
« Reply #7 on: Feb 22, 2008, 03:53 PM »

J'avais bien compris que tu recherchais un systeme de PA et d'Annuaire  Grin
J'aurai aimé avoir plus d'informations sur tes besoins concernant ces modules.

Si le but est de réaliser un site où chaque visiteur aurait la possibilité de laisser leur contribution, et pour faire simple tu pourrais suivre cette démarche :

1. Créé un groupe d'utilisateurs web 'membres'
2. Créer un répertoire MODx pour stocker les annonces laissées par les visiteurs.
3. Créer une page MODx et lui attribuer un accès restreint sur le groupe d'utilisateurs 'membres'. Cette page servira aux personnes enregistrées d'ajouter des annonces. On y place ce snippet :
Code:
[!petitesAnnonces? &tplContener=`petitesAnnonces` &parent=`XX` !]
Où parent est l'ID du répertoire créé en 2.
3. Créer le snippet 'petitesAnnonces' :
Code:
<?php
// ---------------------------------------------------
 // initialisation des variables locales du snippet
 // ---------------------------------------------------
global $modx;
$out = '';
$idPage = 0;
$idTheme = 0;
 
// ---------------------------------------------------
 // recuperer les prametres du Snippet
 // ---------------------------------------------------

$tplContener = isset($tplContener)? $modx->getChunk($tplContener): 'le parametre &$tplContener est maquant (un chunk est obligatoire)';
$parent = isset($parent)? $parent: 0;

 
// ---------------------------------------------------
 // recuperer les champs du formulaire
 // ---------------------------------------------------
$idPage = isset($_POST['idPage']) ? $_POST['idPage'] : 0;
$idTheme = isset($_POST['idTheme']) ? $_POST['idTheme'] : 0;

if(
$idTheme<=0){
// first child of parent redirect
if($parent) {
$firstChild = array();
$children= $modx->getActiveChildren($parent, 'menuindex', 'ASC');
if (!$children === false) {
&#160; &#160; $firstChild= $children[0];
$idTheme = $firstChild['id'];
$_POST['idTheme'] = $idTheme;
}
}
}

/**
 * action &#224; r&#233;aliser.
 */

$out = $tplContener;
$snippet1 = $modx->runSnippet('traitementAnnonces',array('tplContener'=>'petitesAnnonces','parent'=>$parent));
$out = str_replace("[+snippet1+]",$snippet1,$out);
return
$out;
?>

4. Créer le chunck 'petitesAnnonces' :
Code:
[+confirmation+]
<form method="post" name="messagefrm" enctype="multipart/form-data" action="[~[*id*]~]" >
<div>
<p>
<label for="nom">Votre nom :</label><br/>
<input id="nom" name="[+longtitle+]" type="text" maxlength="255" size="60" value="[+longtitleValue+]" />
</p>
<p>
<label for="email">Votre eMail :</label><br/>
<input id="email" name="[+description+]" type="text" maxlength="255" size="60" value="[+descriptionValue+]" />
</p>
<p>
<label for="departement">Votre departement :</label><br/>
<input id="departement" name="[+menutitle+]" type="text" maxlength="2" size="2" value="[+menutitleValue+]" />
</p>
</div>
<div>
<p>
<label for="chargerTheme">Catégorie :</label><br/>
[+SELECT_THEMES+]
</p>
<p>
<label for="[+pagetitle+]">Titre :</label><br/>
<input id="[+pagetitle+]" name="[+pagetitle+]" type="text" maxlength="255" size="60" value="[+pagetitleValue+]" />
</p>
<p>
<label for="[+content+]">Votre Annonce :</label><br/>
<textarea name="[+content+]" id="[+content+]" class="inputBox" rows="10" cols="60">[+contentValue+]</textarea>
</p>
<input name="[+action+]"  type="hidden" value="" /> <input name="idPage"  type="hidden" value="[+idPage+]" />
<input name="idTheme"  type="hidden" value="[+idTheme+]" />
<input type="button" value="[+CREA_UPDATE_NAME+]" onclick="postForm('[+CREA_UPDATE+]'); return false;" />
</div>
</form>
6. Créer le snippet traitementAnnonces
Code:
<?php
global $modx;

 
// ---------------------------------------------------
 // initialisation des variables locales du snippet
 // ---------------------------------------------------
$out = '';
$idPage = 0;
$action = '';
$pagetitle = '';
$longtitle = '';
$description = '';
$alias = '';
$link_attributes = '';
$introtext = '';
$menutitle = '';
$content = '';
$published = 1;
$hidemenu = 0;
$idTheme = 0;
$confirmation = '';

$tplContener = isset($tplContener)? $modx->getChunk($tplContener);

 
// ---------------------------------------------------
 // recuperer les champs du formulaire
 // ---------------------------------------------------
$idPage = isset($_POST['idPage']) ? $_POST['idPage'] : 0;
$action = isset($_POST[$prefixe.'opcode']) ? $_POST[$prefixe.'opcode'] : '';
$pagetitle = isset($_POST[$prefixe.'pagetitle']) ? $_POST[$prefixe.'pagetitle'] : '';
$longtitle = isset($_POST[$prefixe.'longtitle']) ? $_POST[$prefixe.'longtitle'] : '';
$description = isset($_POST[$prefixe.'description']) ? $_POST[$prefixe.'description'] : '';
$alias = isset($_POST[$prefixe.'alias']) ? $_POST[$prefixe.'alias'] : '';
$link_attributes = isset($_POST[$prefixe.'link_attributes']) ? $_POST[$prefixe.'link_attributes'] : '';
$introtext = isset($_POST[$prefixe.'introtext']) ? $_POST[$prefixe.'introtext'] : '';
$menutitle = isset($_POST[$prefixe.'menutitle']) ? $_POST[$prefixe.'menutitle'] : '';
$content = isset($_POST[$prefixe.'content']) ? nl2br($_POST[$prefixe.'content']) : '';
$published = isset($_POST[$prefixe.'published']) ? $_POST[$prefixe.'published'] : '';
$hidemenu = isset($_POST[$prefixe.'hidemenu']) ? $_POST[$prefixe.'hidemenu'] : '';
$idTheme = isset($_POST['idTheme']) ? $_POST['idTheme'] : 0;
?>


/**
 * selon l'action
 */
switch($action) {
    case 'create':
        $doc = new Document($idPage,'pagetitle,longtitle,description,alias,link_attributes,introtext,menutitle,content,published,hidemenu,parent,privateweb,pub_date,unpub_date,template');
        $doc->Set('pagetitle',$pagetitle);
        $doc->Set('longtitle',$longtitle);
        $doc->Set('description',$description);
        $doc->Set('alias',$alias);
        $doc->Set('link_attributes',$link_attributes); 
        $doc->Set('introtext',$introtext);
        $doc->Set('menutitle',$menutitle);
        $doc->Set('content',$content);
        $doc->Set('published',0);
        $doc->Set('hidemenu',0);
        $doc->Set('parent',$idTheme);
$doc->Set('privateweb',1);
$doc->Set('pub_date',time());
$unmois = time() + (30 * 24 * 60 * 60);
$doc->Set('unpub_date',$unmois);
$doc->Set('template',1); // Mettre ici l'id du template a afficher
        $doc->Save();
mail('toto@dns.world', 'nouvelle annonce' ,"une annonce vient d'être posté, id : ".$doc->Get('id')." " , "From: ".$description);
$idPage = 0;
$action = '';
$pagetitle = '';
$longtitle = '';
$description = '';
$alias = '';
$link_attributes = '';
$introtext = '';
$menutitle = '';
$content = '';
$published = 0;
$hidemenu = 0;
$idTheme = 0;
$confirmation = 'Votre annonce a bien été enregistrée , elle sera publiée après validation.';
    break;
    default :
    break;
}   

Je te garantis pas que tout fonctionne en l'état, je t'ai lancé une piste, à ton tour de jouer, et d'adapter cette méthode pour faire tes deux modules.
Le principe de fonctionnement est à peu près le même pour faire des PA, un FAQ, ou tout autre type de documents sans devoir pour autant donner les clefs du manager.

@+
« Last Edit: Feb 22, 2008, 03:56 PM by macspyre » Logged

--
MacSpyre
Spheerys
Full Member
***
Posts: 179


« Reply #8 on: Mar 11, 2008, 05:00 PM »

Merci pour ta réponse.
Me vais me plonger dans tout ça dans les prochaines semaines Smiley
Logged
Pages: [1]   Go Up
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP

Copyright © 2005-2008 MODxCMS, All rights reserved. Contact Us
Styles by ziworks.com

Powered by SMF 1.1.4 | SMF © 2005, Simple Machines LLC

Valid XHTML 1.0! Valid CSS!