News

2010/01/03 V4.15 Ajout de la possibilite d'utiliser un plugin template maison

J'ai trouvé qu'il manquait un truc tout bete a ce framework: un gestionnaire de template, et j'en ai donc concu un tres simple
et tres flexible pour vous permettre de le personnaliser au maximum
Ce template s'appuie sur une page xhtml, avec des arguments propre au gestionnaire du template
par exemple
Pour une boucle sur un tableau d'articles
Sans moteur de template:

CODE


 <?php foreach($this->tArticle as $oArticle):?>
<li><a href="<?php echo $this->getLink(array('article::show','id'=>$oArticle->id)?>"><?php echo $oArticle->titre?></a>
<?php endforeach;?>
 

Avec moteur de template

CODE


 <li mkf:foreach="$this->tArticle as $oArticle">
<
a mkf:href="array('article::show','id'=>$oArticle->id)">{{$oArticle->titre}}</a>
</
li>
 


Comme vous le voyez le code est integre au balise, il y a plusieurs types de balise de ce type
-foreach
-for
-if/elseif/else
-alternate
Vous pouvez egalement utiliser des balises personnalisees en utilisant des attributs commencant par app
Ainsi qu'en utilisant la classe plugin_tplapp mise a votre disposition a cet effet :)

2009/12/29 V4.14 Mise a jour de la politique plugin plugin_valid plus flexible

Je reflechissais a ce plugin et je me suis dit qu'il etait trop statique, j'ai trouvé une solution pour le rendre plus flexible.
Apres une reecriture du plugin plugin_valid, on s'appuie desormais sur le plugin_check ou autre (parametrable dans un conf/site.ini.php via check.class)
un exemple a ete ajouté au projet source, ainsi qu'a la generation
Le plugin de validation appel donc les checks de son plugin check paramétré.
Vous pouvez donc utiliser votre propre plugin en respectant une chose: le premier parametre des methodes doit etre la variable a verifier

2009/12/28 V4.13 Une amelioration et de nouveaux plugins

Une petite mise a jour pour integrer un principe de log
Comme toujours j'ai essayé de choisir une solution flexible au possible, ainsi j'ai ajouté un nouveau bloc dans le fichier de configuration principal (conf/site.ini.php)
Celui permet
1. de choisir la classe a utiliser pour gerer le log
2. d'activer les logs a effectuer (exple tout en dev, et seulement les erreurs en production)
Comme je le disais on peut choisir la classe a utiliser, par defaut, un nouveau plugin plugin_log a été créé implementant logiquement toutes les methodes appelées :)
Plusieurs type de log sont disponible: log,info,warning,error via

CODE


 _root::getLog()->log('message applicatif (vous)')
_root::getLog()->info('message du framework')
_root::getLog()->warning('avertissement du framework')
_root::getLog()->error('erreur du framework')
 


Sinon il a été egalement ajouté deux plugins complementaires: plugin_validation et plugin_check, permettant de valider par exemple un formulaire :)


2009/12/23 V4.12 quelques corrections et mise a jour drivers xml et csv

Mise a jour librairie _file : correction bug (erreur dans le unlink)
Mise a jour librairie _request : ajout d'une méthode de nettoyage pour désactiver les magic quotes
Mise a jour librairie _root : appel de la nouvelle méthode de _request pour désactiver les magic quotes

Mise a jour librairie driver xml et csv : si on utilise un critère sur un champ inexistant, on n'a plus d'erreur et on ne prend pas la row
exemple:
on creer une base xml/csv article avec les champs id,titre
on cree des enregistrements
puis on decide d'ajouter un champ etat
on crée de nouveaux enregistrements (avec ce nouveau champ)....
On fait une requête sur le critère etat
Et bien avant cette mise a jour cela provoquait une erreur (lorsqu'il vérifiait ce champ il tentait d'accéder a un champ inexistant)
Désormais on récupère les row répondant au critère ou ne possédant pas ce champ (antérieur a l'ajout)

2009/12/18 V4.11 mise a jour drivers xml et csv

Une mise a jour permettant pour les drivers xml et csv de gérer count() dans une requête select
On peut desormais faire un simple
SELECT count(id) FROM maTable
meme en utilisant les drivers xml et csv

note: il faut logiquement utiliser findOne une seule et unique row étant retournée
$nb=$oModelMatable->findOne('SELECT count(id) FROM article');

2009/11/27 V4.10 amelioration

La generation de lien pour le framework est un peu plus flexible, on peut desormais utiliser juste un tableau
Avant:

CODE


 _root::getLink('article::edit',array('id'=>2))
 


Apres (possibilité en plus)

CODE


 _root::getLink(array('article::edit','id'=>2))
 


Comme vous pouvez le remarquer, la navigation est passable en tant que parametre 0
Vous pouvez utiliser les deux
Note: correction dans le builder lors de la creation d'une base "csv maison"

2009/11/25 V4.9 ajout driver csv

Un nouveau driver a été ajouté permettant d'utiliser des csv comme mini base de donnée
Ajout d'un profil exemple de connexion csv dans les fichiers de connexion (builder)
Ajout dans le builder la possiblite de creer une mini base csv

2009/10/27 V4.8 ajout driver pdo oracle et changement numerotation version

Pour etre le plus coherent entre le svn developpez et le numero de version complet, j'utiliserai desormais le numero de revision svn de developpez
Cette version est donc la V4.8.0 r2 (2ème révision sur le svn de developpez.com)

2009/10/27 le mkframework, sur developpez.com

Le mkframework est désormais également hebergé dans la section projet du site developpez.com
Grace à eux, vous avez desormais à votre disposition
- un forum dédié sur http://www.developpez.net/forums/f1355/applications/projets/mkframework/
- un depot svn pour rester toujours à jour: http://subversion.developpez.com/projets/mkframework
L'adresse du projet: http://projets.developpez.com/projects/show/mkframework

2009/10/23 V4.7 passage sous licence AGPLv3

Le mkframework passe sous licence AGPLv3 (GNU Affero General Public License)

2009/10/21 V4.5 ajout methode pour sgbd pdo pour recuperer le pointeur

Ainsi on peut utiliser si besoin et si géré les transactions, procedures stockées...

CODE


 $smt=$this->getSgbd()->getPdo()->prepare('SELECT * FROM article WHERE id=:id');
$smt->bindValue(':id',$id);
$smt->execute();
$result=$smt->fetch();
 



2009/10/21 V4.4 ajout module calendrier

Un module calendrier a été ajouter au projet source, un exemple l'utilise (article::listCalendrier)
Comme vous pouvez le voir dans l'exemple creer un module réutilisable est super simple :)
Fichier module/article/main.php

CODE


 class module_article extends abstract_module{
public function 
_listCalendrier(){
(...)
$oModuleCalendrier=new module_calendrier();
$oModuleCalendrier->sModuleAction='article::listCalendrier';

$oTpl=new _tpl('article::listCalendrier');
$oTpl->oModuleCalendrier=$oModuleCalendrier->build();
(...)
$this->oLayout->add('main',$oTpl);
}
}
 


Fichier module/article/tpl/listCalendrier.php

CODE


 (...)
<?
php echo $this->oModuleCalendrier->show()?>
(...)

 



2009/10/15 V4.3 ajout builder xml

On peut desormais dans le builder, créer une sgbd xml
Celle-ci est composé ainsi: un repertoire contenant deux fichiers xml
structure.xml indiquant les champs de la table
max.xml indiquant l'id max de la table

2009/10/14 V4.2 ajout module pagination

Un ajout d'un module permettant de gérer facilement la pagination, include dans le projet source (data/sources/projet )

2009/10/12 V4.1 ajout driver pdo mssql

Le driver sgbd/pdo/sgbd_pdo_mssql.php à été ajouté.
Une méthode isEmpty a été ajouté à la classe abstract_row pour permettre de verifier qu'un findOne retourne quelquechose (selon la sgbd).

2009/10/10 V4 livraison nouvelle version

Nouveau site mkFramework pour la version 4 du framework.
Un framework encore plus objet qu'auparavant, plus souple qu'avant.
Une documentation refaite de A à Z

Présentation

1.Un framework, kesako ?


C'est tout un environnement de travail :
Il comprend :
- une librairie bien fournie pour vous économiser du code et du temps
- une structure de développement déjà établie
- une construction flexible, évolutive et réutilisable (modules,plugins)

2.Un framework pourquoi faire ?


La première réponse est : pour vous faciliter la vie bien sûr :)
- en mettant à votre disposition une librairie pour améliorer votre confort de programmation
- en améliorant votre rapidité de développement : (vous ne codez plus de zéro, économie de code grâce aux librairies)
- en cadrant et homogénéisant votre travail (structure oblige)
- en organisant votre application: chaque fichier a sa place

3.Le menu siYouPlait ^_^


Inclut dans le coffret :
- architecture MVC séparation Modèle, Vue Controller
- gestion intégrée du cache
- gestion intégrée de la sécurisation des pages via un accès protégé par login/mot de passe (module secure)
- structure évolutive avec deux types : modules et plugin
- des librairies vous facilitant: le traitement de fichier, l'envoi de mail, la pagination, l'ajax...
- gratos : un template download permettant de forcer le téléchargement de ladite page (export excel...)
- gratos : un module secure permettant de sécuriser une page via un accès restreint derrière login/pass
- gratos : un plugin gérant le rss déjà intégré lors de la création de votre première application ;)

4.Des objets/librairies bien pratiques ;)


- _dir : vous permet de gerer un repertoire (listage, creation...)
- _file : pour gerer les fichiers (creation,ecriture,lecture...)
- plugin_auth : pour gerer l'authentification
- plugin_date : pour faciliter la manipulation de date
- plugin_html : pour faciliter la generation d'elements html
- plugin_routing : appele pour gerer l'url rewriting

5.C'est bien beau et la prise en main ?


Pour utiliser d'autres frameworks, j'ai voulu viser la facilité de prise en main
Pour cela :
- Une doc vous présentant l'ensemble des objets et leurs fonctions
- Des tutoriaux pour vous faciliter l'apprentissage
- Des exemples pour expliquer de façon concrète
- Une rubrique commentKonFait pour répondre aux questions que vous vous poser
- Une application vierge créée contient deja un lot de pages d'exemple facilitant l'apprentissage (on ne part pas de zéro)

6.C'est tout ?


Mais non ce n'est pas tout, pour vous faciliter l'adoption de ce framework :
Je vous ai développé un chti builder, le MkFrameworkBuilder (clin d'oeil au commandeEnLigneOphobe)
Il vous permettra :
- De créer un environnement vierge (avec quelque pages d'exemple)
- De générer la couche modèle de votre application
- De générer le CRUD pour vos tables
- De générer un/des module(s) avec sa/ses action(s)

Et tout ca en deux trois clic, pas de ligne de commande à saisir ;)