Software is like sex... It's better when it's free.

Blog

SillySmart est un framework MVC flexible écrit en PHP5 et se basant sur du parsing XML / XSL.

SillySmart est un framework gratuit et open-source depuis 2007.

Il a été développé dans plusieurs optiques :

  • Aucun framework PHP ne permettait d'une manière naturelle d'utiliser une couche View basée sur XML/XSL.
  • Permettre aux différents collaborateurs d'un projet (avec des compétences différentes et complémentaires) de travailler de façon autonome à plusieurs niveaux du code (PHP au niveau du contrôleur, MySQL au niveau du modèle, XSL au niveau de la vue, JavaScript côté client, etc), sans interférer ni dépendre du travail de vos collaborateurs.
  • Mettre en œuvre une véritable séparation des couches MVC à travers différentes technologies et un langage spécifique à chaque couche
  • Permettre une implémentation lisible de vue couche qui tire profit des templates PHTML en sémantique XML, afin d'obtenir avec modularité, une puissante dimension de maintenance évolutive et corrective.
  • Fournir un framework qui, grâce à son squelette XML peut générer facilement N types distincts de sorties (RSS, Atom, Web services, Ajax, etc.) sans aucun problème de casting/parsing.
  • Fournir un framework léger qui n'embarquent pas des centaines de composants, mais qui reste extensible afin de répondre aux besoins individuels de chacun grâce à des plugins additionnels.

Principales fonctionnalités :

  • MVC
  • XML / XSL / xPATH
  • DAO / Persistence / CRUD
  • PDO / QueryBuilder / ExprBuilder
  • i18n
  • HMI
  • Admin Generator
  • Theming 
  • URL Rewriting / Disptaching / URL Mapping
  • Multi domains
  • Multi databases
  • Plugins
  • et bien d'autres encore...

Consulter http://www.sillysmart.org pour plus d'informations, téléchargement, api, getting started, documentation et forum.

Tags:  frameworkmvcphpxmlxsl.
Posté le Mercredi 22 août 2012 17:36:29 - 0 commentaire

Comme tout le monde a pu le voir, ce n'est guère évident de trouver le temps pour rédiger des news mais..

Ca y'est, l'année 2011 a commencé, l'occasion rêvée pour faire un 1er bilan après plus de 3 années intensives consacrées au développement Web au côté de SillySmart et dorénavant de Wandi.

3 ans de développement Web

La 1ère année de Wandi a été très riche avec la réalisation de plus d'une trentaine de sites.

Un grand merci à tous ceux qui nous font confiance et qui permettent de faire progresser l'aventure Wandi et SillySmart chaque jour.

Sans oublier tous ceux qui nous accompagnent au quotidien : les Wandiz, Charly, Jerem, Mickey, Chatton, les Nsn guys et tous les autres..

Bonne année à tous !

Tags:  ajaxjsonmysqlphpsillysmartwandixmlxpathxsl.
Posté le Lundi 03 janvier 2011 15:56:16 - 0 commentaire

Lorsque vous affichez des images dynamiquement, si vous voulez vous assurez qu'elles existent réellement, vous pouvez le faire assez aisément directement en XSL :

<!--
- Apply css with XSL
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
  <xsl:template match="root">
    <html>
      <head></head>
      <body>
        <!-- On suppose que le noeud 'id' contient une partie du nom du fichier -->
        <xsl:variable name="imgSrc" select="boolean(document(string(concat('http://www.sillysmart.org/img/users/', id, '.jpg'))))" />
        <xsl:choose>
          <xsl:when test="$imgSrc">
            <img src="{concat('http://www.sillysmart.org/img/users/', id, '.jpg')}" alt="{id}" />
          </xsl:when>
          <xsl:otherwise>
            <img src="http://www.sillysmart.org/img/404.jpg" alt="Not found" />
          </xsl:otherwise>
        </xsl:choose>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
Tags:  xmlxsl.
Posté le Mardi 08 septembre 2009 18:03:04 - 0 commentaire
Si vous voulez afficher une liste d'entités en XSL en appliquant du style css sur les lignes du tableau, vous pouvez jouer sur les modulos à l'aide de la fonction position() en XSL.

Supposons le flux XML suivant listant un ensemble d'utilisateurs :

<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user>
    <id>1</id>
    <login>lo</login>
    <email>laurent@sillysmart.org</email>
  </user>
  <user>
    <id>2</id>
    <login>flo</login>
    <email>florian@sillysmart.org</email>
  </user>
  <user>
    <id>3</id>
    <login>charly</login>
    <email>charly@sillysmart.org</email>
  </user>
</users>

Le css suivant :

table.bo_table_visible {	
  border:1px solid #000;
  border-spacing: 0px;
  margin-top:10px;
  margin-bottom:10px;
}
table.bo_table_visible tr.summary th {
  background:#2E2D2D;
  color:#E45A49;
}
table.bo_table_visible tr td, table.bo_table_visible tr th {
  padding:0 10px;
}
table.bo_table_visible tr.even td {
  background-color:#FFF;
  color:#000;	
}
table.bo_table_visible tr.even:hover td {
  background-color:#FF8ABC;
  color:#FFF;
}
table.bo_table_visible tr.odd td {
  background-color:#DFDFDF;
  color:#000;
}
table.bo_table_visible tr.odd:hover td {
  background-color:#64B8FE;
  color:#FFF;
}

Il vous suffit d'appliquer le script XSL suivant pour appliquer les styles sur votre liste d'utilisateurs :

<!--
- Apply css with XSL
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
  <xsl:template match="root">
    <html>
      <head></head>
      <body>
        <table class="bo_table_visible">
          <tr>
            <th>Id</th>
            <th>Login</th>
            <th>Email</th>
          </tr>
          <xsl:for-each select="//users/user">
            <xsl:variable name="cssClass">
              <xsl:choose>
                <xsl:when test="(position() mod 2) = 0">
                  even
                </xsl:when>
                <xsl:otherwise>
                  odd
                </xsl:otherwise>
              </xsl:choose>
            </xsl:variable>
            <tr class="{$cssClass}">
              <td><xsl:value-of select="id" /></td>
              <td><xsl:value-of select="login" /></td>
              <td><xsl:value-of select="email" /></td>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Ce qui produira :

Id Login Email
1 lo laurent@sillysmart.org
2 flo florian@sillysmart.org
3 charly charly@sillysmart.org
Tags:  cssxmlxsl.
Posté le Mardi 08 septembre 2009 17:20:44 - 0 commentaire

Si vous souhaitez en MySQL (ou en PHP) récupérer les commentaires de tables et/ou les commentaires des colonnes d'une table, sachez qu'il est très facile d'accéder à ces informations directement à partir d'une requête.

Récupérer les commentaires d'une table :

# 'sillysmart' est le nom de la base de données dont vous voulez extraire des informations
mysql> SHOW TABLE STATUS FROM sillysmart 
mysql> 

produira les informations suivantes:

Name Engine Version Rows Comment
Country MyISAM 10 240 Countries Listing
News MyISAM 10 30 News Listing

où la colonne 'Comment' vous donnera l'information voulue, à savoir le commentaire de la table. Sachez que beaucoup d'autres informations sont accessibles grâce à cette requête.

Récupérer les commentaires des colonnes d'une table :

# 'Country' est le nom de la table voulue
mysql> SHOW FULL COLUMNS FROM Country 
mysql> 

produira les informations suivantes:

Field Type Collation Null Key Extra Privileges Comment
country_id bigint(20) NULL NO PRI auto_increment select,insert,update Id
country_name varchar(255) latin1_swedish_ci NO UNI   select,insert,update Country Name
country_tld varchar(2) latin1_swedish_ci YES     select,insert,update Country TLD

où la colonne 'Comment' vous donnera l'information voulue, à savoir le commentaire de la colonne de la table.

Libre à vous d'exploiter ces informations en PHP. Personnellement nous utilisons ces colonnes de manière transparente sur SillySmart pour créer des back-office génériques qui reste néanmoins parlant pour un non-informaticien. La seule contrainte est que la longueur du commentaire est bridée à 60 caractères, donc soyez succinct !

Tags:  mysqlphp.
Posté le Lundi 08 juin 2009 15:45:08 - 1 commentaire