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 :
Principales fonctionnalités :
Consulter http://www.sillysmart.org pour plus d'informations, téléchargement, api, getting started, documentation et forum.
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.
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 !
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>
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 | |
|---|---|---|
| 1 | lo | laurent@sillysmart.org | 
| 2 | flo | florian@sillysmart.org | 
| 3 | charly | charly@sillysmart.org | 
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 !