<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>oscim.net</title>
	<atom:link href="http://www.oscim.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.oscim.net</link>
	<description>infos, notes et ps d&#039;un freelance</description>
	<lastBuildDate>Sun, 29 Apr 2012 18:25:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mise en place de filtre destinés aux listing du backoffice</title>
		<link>http://www.oscim.net/archives/457</link>
		<comments>http://www.oscim.net/archives/457#comments</comments>
		<pubDate>Sun, 29 Apr 2012 18:16:20 +0000</pubDate>
		<dc:creator>oscim</dc:creator>
				<category><![CDATA[oscss]]></category>
		<category><![CDATA[oscss 2]]></category>
		<category><![CDATA[colonne]]></category>
		<category><![CDATA[datatable]]></category>
		<category><![CDATA[filtre]]></category>
		<category><![CDATA[listing]]></category>
		<category><![CDATA[prive]]></category>

		<guid isPermaLink="false">http://www.oscim.net/?p=457</guid>
		<description><![CDATA[Cette note n&#8217;est valable que pour les modules de pages exploitant héritant de la class ModTwo. A ce titre, la plupart de l’implémentation du filtre à lieux  dans la section GetConf de la classes, et dans la définition de l&#8217;ensemble des éléments de la variable $InitInfo. Pour mettre en oeuvre les filtres, le plus simple à [...]]]></description>
			<content:encoded><![CDATA[<p>Cette note n&#8217;est valable que pour les modules de pages exploitant héritant de la class <strong>ModTwo</strong>.</p>
<p>A ce titre, la plupart de l’implémentation du filtre à lieux  dans la section GetConf de la classes, et dans la définition de l&#8217;ensemble des éléments de la variable $InitInfo.</p>
<p>Pour mettre en oeuvre les filtres, le plus simple à mettre en oeuvre consiste à ajouter le choix des colonnes visibles. A cette fin , le gabarit html est déjà conçu. Il suffit donc de l’initialiser, en fournissant l&#8217;ensemble des éléments nécessaire à son initialisation correct.</p>
<p>Dans notre exemple, nous partons dans le contexte que l&#8217;action courante est : &#8216;listing&#8217;</p>
<h2>Section dans la function GetConf</h2>
<p>Dans un premier temps, ajouter une variable dans la class</p>
<pre>  /**
    @var array info all tabs for filter listings
  */
  public static $allfields = array();</pre>
<p>Puis dans la méthode GetConf, apres les section de definition des var static, et constante JSONSTATMENT, placer la definition de l&#8217;ensemble des colonne qui seront disponible pour cette selection.<br />
/**<br />
@remarks this define col theader title, and ajust html code<br />
Just for Edit listing<br />
*/</p>
<pre>self::$allfields = array(
	'o.orders_id' =&gt; array(
		'sort'=&gt;true,
		'text'=&gt;__('orders table heading order id'),
		'width'=&gt;'2%',
		'class'=&gt;'tcenter',
		'default'=&gt;true,
		),
                ....
             );</pre>
<p>Puis construire le début de la structure des theader ou tfooter et ou modele. Dans notre exemple, nous allons définir 3 colonne supplémentairement qui seront affiché systématiquement. C&#8217;est le cas pour les 2 première colonnes, fournissant le bouton plie/déplie du détail, et la colonne pour sélectionner cette ligne. Enfin, nous placeront aussi la colonne action.</p>
<pre>/**
	@remarks Construct all list , fields , th/td
*/
self::$InitInfo['theader']['listing']=array(
		0 =&gt;array('width'=&gt;'2%', 'class'=&gt;'tcenter', 'txt'=&gt;' ' ),
		1 =&gt;array('width'=&gt;'2%', 'class'=&gt;'tcenter', 'txt'=&gt;' ' ),
		);
self::$InitInfo['tfooter']['listing']=self::$InitInfo['theader']['listing'];

self::$InitInfo['modele']['listing']=array(
				0 =&gt;false,
				1 =&gt;false,
	);

<!-- BOUCLE POUR LES CHAMPS DYNAMIQUE -->

self::$InitInfo['modele']['listing']['action']=false;
self::$InitInfo['theader']['listing']['action']= array( 'class'=&gt;'row_action', 'txt'=&gt;__('table heading action') );
self::$InitInfo['tfooter']['listing']['action']= array( 'class'=&gt;'row_action', 'txt'=&gt;__('table heading action') );</pre>
<p>Pour ce qui est de la boucle dynamique, nous utiliseront le control sur le tableau de filtre de la session utilisateur.<br />
Dans noter contexte, nous utiliserons une boucle comme suit :</p>
<pre>// min  fields and not view directly colonne fields
$listfield = 'o.orders_prefix, s.status_color as orders_status_color,';
// put in
if(isset($_SESSION['filters'][__CLASS__]['allfields']))
	$_SESSION['filters']['allfields'] = $_SESSION['filters'] [__CLASS__]['allfields'];
else
	$_SESSION['filters']['allfields'] = array();

	$in_session = $_SESSION['filters']['allfields'];
// check and appli
foreach(self::$allfields  as $key=&gt;$row){
	$clean = substr($key, (strpos($key, '.')+1));

	if(is_array($row)){
		$txt = $row['text'];
		$alias = (isset($row['alias'])? $row['alias'] : $clean);
		$css = (isset($row['class'])? $row['class'] : 'tcenter');
		$width = (isset($row['width'])? $row['width'] : '5%');
	}
	else{
		$txt = $row;
		$alias = $clean;
		$css = 'tcenter';
		$width = '5%';
	}

        if(
	( isset($in_session[$clean]) &#038;&#038;  (string)$in_session[$clean] == 'on' )
	|| ( count($in_session) <=1  &#038;&#038; ( is_array($row) &#038;&#038; isset($row['default']) &#038;&#038;  $row['default'] == true) )
	) {
		$_SESSION['filters']['allfields'][$clean] = 'on';
		/**
			@remarks this define col theader title, and ajust html code
		*/
		self::$InitInfo['theader']['listing'][]= array( 'width'=>$width, 'class'=>$css, 'txt'=>$txt);
		self::$InitInfo['tfooter']['listing'][]= array( 'width'=>$width, 'class'=>$css, 'txt'=>$txt );
		/**
			@remarks this define col in table, and if is possible sort
		*/
		self::$InitInfo['modele']['listing'][$alias]=true;

		if($clean !=$alias)
			$listfield .=$key.' as '.$alias.',';
		else
			$listfield .=$key.',';
	}
	}</pre>
<p>&nbsp;</p>
<p>Puis la transmissions du tableau complet des options de filtre disponible </p>
<pre>
 self::$InitInfo['allfields']['listing'] = self::$allfields ;
</pre>
<p>Et pour finir l’activation proprement dite des tabs des filtres  </p>
<pre>
/**
 @remarks Active forms filter
*/
self::$InitInfo['tfilter']['listing']=array(
/* Premier filtre spécifique a cette page */
					array(
					'title'=>__('orders filter tab clause'),
					'content'=>tep_get_include_contents(__CLASS__.'/filter.clause'),
                 			),
/* Second filtre utilisant le ModTwo et le choix des colonnes  */
				array(
					'title'=>__('orders filter tab fields'),
					'type'=>'listfield'
				),
			);
</pre>
<p>Enfin la transmission des champs a utiliser dans la requetes sql</p>
<pre>
/**
		@remarks Put detail for listing methode
	*/
	self::$InitInfo['adjust']['listfields'] = substr($listfield, 0,-1);
</pre>
<h2>Section dans la function check_action</h2>
<p>La section de prise en charge du formulaire , dans le switch des actions</p>
<pre>
/**
	@remarks specific save in session value filters
*/
case 'filters':
	$_SESSION['filters'][__CLASS__]['allfields'] =array();
	foreach($_POST['allfields'] as $key=>$row){
		if( $row =='on' )
			$_SESSION['filters'][__CLASS__]['allfields'][$key] = 'on';
		else
			unset($_SESSION['filters'][__CLASS__]['allfields'][$key]);
	}

	$_SESSION['filters'][__CLASS__]['viewstatus'] =array();
	foreach($_POST['viewstatus'] as $key=>$row){
		if( $row =='on' )
			$_SESSION['filters'][__CLASS__]['viewstatus'][$key] = 'on';
		else
			unset($_SESSION['filters'][__CLASS__]['viewstatus'][$key]);
	}

	tep_redirect(tep_href_link(self::FILENAME));
break;
</pre>
<h2>Section dans la function GetDBValue</h2>
<p>Modifier la requêtes produisant le listing, en y portant la var des la liste des champs à extraire de la base.</p>
<pre>
$adjust=new objectInfo(self::$InitInfo['adjust']);

$query_raw = "select distinct ".$adjust->listfields." from " ....
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.oscim.net/archives/457/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mutli langue / langue active</title>
		<link>http://www.oscim.net/archives/453</link>
		<comments>http://www.oscim.net/archives/453#comments</comments>
		<pubDate>Mon, 23 Apr 2012 19:16:53 +0000</pubDate>
		<dc:creator>oscim</dc:creator>
				<category><![CDATA[oscss]]></category>
		<category><![CDATA[oscss 2]]></category>

		<guid isPermaLink="false">http://www.oscim.net/?p=453</guid>
		<description><![CDATA[Note ! &#160; Lors de l&#8217;ajout de donnée, la prise en charge de plusieurs langues ce fait naturellement, en ajoutant une langue dans la gestion de langue. Il est toutefois important de savoir que cette langue ne sera considéré comme active, que dans la mesure ou les fichiers de langue correspondant seront présent. par defaut, [...]]]></description>
			<content:encoded><![CDATA[<p>Note !</p>
<p>&nbsp;</p>
<p>Lors de l&#8217;ajout de donnée, la prise en charge de plusieurs langues ce fait naturellement, en ajoutant une langue dans la gestion de langue.</p>
<p>Il est toutefois important de savoir que cette langue ne sera considéré comme active, que dans la mesure ou les fichiers de langue correspondant seront présent. par defaut, seul les fichiers public sont recherchés.</p>
<p>&nbsp;</p>
<p>Si le dossier de langue public n&#8217;est pas présent, alors la langue sera considéré comme inactive, et donc l&#8217;ajout de donnée ne ce fera que sur les langue active.</p>
<p>&nbsp;</p>
<p>Dans ce contexte, aucun mécanisme de rattrapage des ligne manquante dans la base n&#8217;existe, il est donc important de mettre en place les fichier avant l&#8217;installation de la langue &#8230;&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oscim.net/archives/453/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Callback js dans les listing ajax</title>
		<link>http://www.oscim.net/archives/420</link>
		<comments>http://www.oscim.net/archives/420#comments</comments>
		<pubDate>Tue, 03 Apr 2012 22:06:49 +0000</pubDate>
		<dc:creator>oscim</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.oscim.net/?p=420</guid>
		<description><![CDATA[Les listing du backoffice sont chargé en ajax, aussi les fonction js non intrusive doivent être appliqué par l’intermédiaire de la fonction load_post_page(), qui est situé dans le fichier footer.php. Dans ces page de listing, il peut être nécessaire d’intégrer des appels js (Toolip par ex) surle contenu de ce listing.  Il est donc nécessaire [...]]]></description>
			<content:encoded><![CDATA[<p>Les listing du backoffice sont chargé en ajax, aussi les fonction js non intrusive doivent être appliqué par l’intermédiaire de la fonction load_post_page(), qui est situé dans le fichier footer.php.</p>
<p>Dans ces page de listing, il peut être nécessaire d’intégrer des appels js (Toolip par ex) surle contenu de ce listing.  Il est donc nécessaire d&#8217;utiliser la fonction de callback contenu dans la classes oscss_cstr<br />
Soit:</p>
<pre>oscss_cstr::CallBack('Toolip();');</pre>
<p><strong>Note</strong></p>
<ul>
<li>la fonction Callback support un second argument, qui précise si le paramètre principal correspond à du code, ou un liens vers un fichier (code|file). <em>Toutefois, à l&#8217;heure de ces lignes seul le mode par défaut est supporté.</em></li>
<li>la fonction Callback support un troisième argument, qui précise la pile dans laquelle la valeur sera stocké. <em>Toutefois, à l&#8217;heure de ces lignes seul la pile par défaut est implémenté.</em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.oscim.net/archives/420/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les datatypes</title>
		<link>http://www.oscim.net/archives/415</link>
		<comments>http://www.oscim.net/archives/415#comments</comments>
		<pubDate>Mon, 02 Apr 2012 12:03:48 +0000</pubDate>
		<dc:creator>oscim</dc:creator>
				<category><![CDATA[oscss]]></category>
		<category><![CDATA[oscss 2]]></category>

		<guid isPermaLink="false">http://www.oscim.net/?p=415</guid>
		<description><![CDATA[mise à jour : 22/04/2012 La notion de datatype est apparu sur les versions 2.1.0 et ultérieure; Cette notion visent à rassembler au sein d&#8217;un fonctionnement normalisé l&#8217;ensemble des données publiés. Les données publiées rassemblent les données de contenu , hors de donnée du fonctionnement propre du moteur. Liste non exhaustive: Les RootListing, transversales , [...]]]></description>
			<content:encoded><![CDATA[<p><em>mise à jour : 22/04/2012</em></p>
<p>La notion de datatype est apparu sur les versions 2.1.0 et ultérieure; Cette notion visent à rassembler au sein d&#8217;un fonctionnement normalisé l&#8217;ensemble des données publiés.</p>
<p>Les données publiées rassemblent les données de contenu , hors de donnée du fonctionnement propre du moteur.</p>
<p>Liste non exhaustive:</p>
<ul>
<li>Les RootListing, transversales , elle permette de hiérarchiser les donné enfants: ( categorie, manufacturer )</li>
<li>Les donnée enfants, ordonnancé en listing , et contenant une page d&#8217;info unique : ( product, content, &#8230; )</li>
</ul>
<p>Cette approche doit permettre de manipuler les données avec des outils synthétique, et dont la forme et les appels sont identiques.</p>
<p>D&#8217;autre part, ces données étant dynamique, elle peuvent dont ajouter/modifié le comportement des page public, quant à gestion et l&#8217;affichage.</p>
<p>&nbsp;</p>
<p><em>dans les exemples et explications suivantes, nous partons sur la notion d&#8217;un datatype &laquo;&nbsp;xxx&nbsp;&raquo;, couplé au categories</em></p>
<p>&nbsp;</p>
<p>Lors de l&#8217;ajout d&#8217;un nouveau datatype, respecter les règles suivantes:</p>
<ul>
<li>le nom du datatype doit être unique, et ne pas être déjà utilisé</li>
<li>le nom du datatype doit être au singulier</li>
<li>certain fichier sont optionnels, toutefois la</li>
</ul>
<p>&nbsp;</p>
<h2>Les tables de données d&#8217;un datatype</h2>
<p>Les tables doivent respecter la nomenclature de nommage courante :</p>
<ul>
<li>osc_datatype</li>
<li>osc_datatype_description (gestion multi-langue)</li>
<li>osc_datatype_extra (optionnnel) peut être aussi remplacer par des extras complexe (cf extras des products)</li>
<li>osc_datatype_to_categorie (optionnel &#8211; liaison avec les categories)</li>
</ul>
<p>&nbsp;</p>
<p>La nomenclature des tables est importante, elle contient le nom des liaison entre datatype, et est utilisé dans la gestion avancé des tables et des backups. il est donc important de conserver une structure  de ce type.</p>
<p>Petit rappel :</p>
<ul>
<li>séparateur  &laquo;&nbsp;_&nbsp;&raquo; p</li>
<li>le non du datatype enfants en premier</li>
<li>le nom de la liaison en second, avec &#8216;to&#8217; comme séparateur</li>
</ul>
<p><em> Les defines  de constantes associé à l&#8217;exploitation des tables dans le core sont assuré par le module Data_xxx. Tans dans le backoffice que le frontoffice. La désactivation d&#8217;un module rend donc les tables inaccessible via les constante !!</em></p>
<p>&nbsp;</p>
<p>Les clef de tables, et définition de la clef primaire de chaque tables doit faire preuve d&#8217;une attention particulière. Ce sont ces éléments qui définissent la capacité du core a manipuler les tables dans différents contextes.  les clef primaires sont entre autre utilisé dans la manipulation du nombre de langue, et la duplication automatique des entrée nécessaire au bon fonctionnement du module.</p>
<h2>Les fichiers et dossiers</h2>
<p><em>Les define qui construise les constantes de nommage des fichier sont assuré par le modules Data_xxx.</em></p>
<h3>Dossier /common/</h3>
<p>Les modules sont nommé &#8216;Data_&#8217;.xxx ou xxx représente le nom du datatype.</p>
<p>Au sein de ce dossier centralisé, les drivers &laquo;&nbsp;datatype_drivers&nbsp;&raquo; assure la prise en charge des datatypes. Ce sont ces modules, qui détermine, en fonction des arguments GET et du nom de la page, si la page courante correspond a ce datatype, et le pré-chargement des classes spécifique au datatype courant.</p>
<p>D&#8217;autre part, ce module assure aussi la liaison avec la class seo, pour la construction des url spécifique à ce datatype, ainsi qu&#8217;au élément nécessaire à la construction du htaccess.</p>
<p>&nbsp;</p>
<h3>Dossier admin</h3>
<p>le dossier admin peut quant à lui s&#8217;ordonner en fonction des besoins spécifique au datatype. Nous retrouverons toutefois les modules suivant</p>
<ul>
<li>/modules/pages/datatype<strong>s</strong>.php  (gestion listing / affichage / édition des données)</li>
<li>/modules/datatype/ (Dossier  specifique au sous module du datatype courant)</li>
<li>/classes/drivers/sqldatatype.php la class sql de manipulation des données de manière structuré</li>
</ul>
<h3>Dossier public</h3>
<p>La structure du dossier public peut être plus ou moins ajusté, nous respecterons néanmoins la nomenclature suivante:</p>
<ul>
<li>/classes/drivers/data/datatype.php (la class public principale de manipulation des données de ce datatype)</li>
<li>/content/ (le fichier nécessaire à la visualisation d&#8217;une datatype unique &#8211; défini dans le module Data_datatype de  common)</li>
</ul>
<p>&nbsp;</p>
<h2>Transversalité de certain module entre eux</h2>
<p>Certain module de datatype sont un peu spécifique, compte tenu qu&#8217;il inter-agissent avec d&#8217;autre module de datatype (categorie / fabricant).</p>
<p>Il est à la charge du module transversale de prendre en charge le couplage (listing requête sql) des autres datatypes;</p>
<p>Une variable de configuration est définit pour chaque RootListing nommé &laquo;&nbsp;DATATYPES_ROOTLISTING__xxx&nbsp;&raquo; du nom du datatype, elle contient la liste (séparé par une virgule) des datatype auquelles elle est couplé.</p>
<p>&nbsp;</p>
<h2>Dev/GenerCode Modele : datatype</h2>
<p>Un modèle de datatype existe dans la section dev/GenerCode; il s&#8217;agit d&#8217;un générateur de code succinct qui ce contente de construite l&#8217;ensemble de la structure de base d&#8217;un datatype de type contenu enfant ( idem product/content).</p>
<p>L’intérêt de cette méthode, et que l&#8217;extension de votre datatype construit, il vous suffit de l&#8217;ajuster à vos besoin.  les fichiers existe dans une extension destiné à l&#8217;installateur d&#8217;oscss, que ce soit en backoffice ou frontoffice. De même que l&#8217;ensemble des tables, liaison, define , entrée dans les menu, etc.. sont mise en œuvre entre les fichier et l&#8217;install.xml</p>
<p>Les tables créer ne contiennent que les champs minimaux structurel. Charge a vous d&#8217;ajuster les colonnes ainsi que les gabarit html et gestion des enregistrement.</p>
<p>&nbsp;</p>
<h2>Gestion / Intégration dans le front office, exploitation et usage</h2>
<p>&nbsp;</p>
<p>l&#8217;usage des datatypes, dans l’environnement public, et l&#8217;intégration de vos template reste assez transparent. Les listing sont gérer sans</p>
<p>&nbsp;</p>
<h3>Les Listing</h3>
<p>le listing ce construit automatiquement sur la base des catégories. La liaison du datatype aux catégorie, vous à donné accès à la création de catégorie typée sur ce datatype, soit xxx. La Classes listing de la section core_page du dossier classes, assurera donc la recherche ordonnée des entrées de ce datatype dans cette/ces categories.</p>
<p><em>note: le calcul effectué ne rassemble que les id du datatype, et non les données de chaque ligne.</em></p>
<p>Aussi , le listing se construira automatiquement , et son détail (le détail des données de chaque ligne ) sera assuré par le module standard &#8216;listing.php&#8217; des modules non-typés (il vous est bien sûr possible de personnaliser ces appels et de construire un module spécifique destiné au listing).</p>
<p>&nbsp;</p>
<h3>La page xxx_info.php | info_xxx.php</h3>
<p>Cette page est la section destinée à l&#8217;affichage unique de cette ressource. Elle sera donc très dépendantes des colonnes des tables principales , et des données associées.</p>
<p><strong><em>Il est donc nécessaire de construire cette page sur mesure.</em></strong></p>
<p>Rappel :</p>
<p>le détail de la ressource</p>
<pre>$object_data = xxx::get_item($id);</pre>
<p>&nbsp;</p>
<p>sur la page info, l&#8217;appel est déjà calculé, aussi un simple appel à la pile suffit:</p>
<pre>$object_data =$page-&gt;GetVar('xxx');</pre>
<p>alias &#8211; rétro-compatibilité</p>
<pre>$object_data =$page-&gt;the_var('xxx');</pre>
<p>L&#8217;appel à vos sous module aca:</p>
<pre>$module=$page-&gt;_call('xxx','ret_modules');</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>Liens et SEO</h3>
<p>La gestion de la ré-écriture d&#8217;url , accompagné de l&#8217;ajustement du htaccess reste absolument transparente. Noter que vous devez avoir mise en place un module aca header_tag dans ce datatype coté admin.</p>
<p>L&#8217;ensemble de la ré-ecriture sera assuré par le Data_xx.  Quelque soit le module de ré-ecriture choisi.</p>
<h4>htaccess</h4>
<p>Le contenu du fichier est produit dans le back-office, celui-ci prendra en charge tous les datatype présent lors de son exécution. Si vous activez un nouveau datatype, pensez a mettre a jour votre htaccess public</p>
<p>&nbsp;</p>
<h3>La recherche avancé</h3>
<p>La encore, c&#8217;est le Data_xxs qui va prendre en charge la gestion de la construction des requêtes sql, couplé avec les catégories. Noté que si vous souhaitez couplé la recherche à un formulaire plus complet et éventuellement avec d&#8217;autre Rootlisting (categorie en est un , manufacturer un autre); vous devrez ajuster le Data_xxx</p>
<p>Seuls les critères de base sont configurés.</p>
<p>Un gabarit html (fichier .gab)  peut être définis dans le tableau retourné par le datatype, dans ce contexte, le sous gabarit utile apporte les champs de formulaire complémentaire</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oscim.net/archives/415/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gestion de l&#8217;encryptage des mot de passe</title>
		<link>http://www.oscim.net/archives/412</link>
		<comments>http://www.oscim.net/archives/412#comments</comments>
		<pubDate>Sat, 31 Mar 2012 13:54:28 +0000</pubDate>
		<dc:creator>oscim</dc:creator>
				<category><![CDATA[oscss]]></category>
		<category><![CDATA[oscss 2]]></category>

		<guid isPermaLink="false">http://www.oscim.net/?p=412</guid>
		<description><![CDATA[La version 2.1.1 apporte la possibilité de prendre en charge différente forme encryptage des mots de passe. Cette option , permet donc plus de souplesse, et dans le cas d&#8217;un import d&#8217;un d&#8217;une version précédente, ou d&#8217;une base externe, il est ainsi possible d&#8217;ajuster le type de mot de passe, sans avoir a régénérer l&#8217;ensemble [...]]]></description>
			<content:encoded><![CDATA[<p>La version  2.1.1 apporte la possibilité de prendre en charge différente forme encryptage des mots de passe.<br />
Cette option , permet donc plus de souplesse, et dans le cas d&#8217;un import d&#8217;un d&#8217;une version précédente, ou d&#8217;une base externe, il est ainsi possible d&#8217;ajuster le type de mot de passe, sans avoir a régénérer l&#8217;ensemble des accès client. </p>
<p>Le mode d’encryptage est déterminé par le fichier configure, et peut être différente entre le back-office et le front office.</p>
<p>Trois modules sont fournis </p>
<ul>
<li>Classic  qui correspond à l&#8217;encryptage original des version précédente d&#8217;oscss, et d&#8217;oscommerce. Il couple un cryptage md5 à une clef interne unique</li>
<li>Md5, une classique empreinte</li>
<li>Sha1, le cryptage utilisé par défaut lors d&#8217;une nouvelle installation</li>
</ul>
<p>Voir les fichiers configure</p>
<p><em>exemple</em></p>
<pre>
    /**
    @var Define class use for encrypt password
    Value possible:
    - Classic normal in oscommerce mode
    - Md5 special for acces by other mode
    - Sha1 new mode
    */
    $conf['ModPassword'] = 'Classic';
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.oscim.net/archives/412/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Images , watermark et format</title>
		<link>http://www.oscim.net/archives/406</link>
		<comments>http://www.oscim.net/archives/406#comments</comments>
		<pubDate>Tue, 27 Mar 2012 16:38:53 +0000</pubDate>
		<dc:creator>oscim</dc:creator>
				<category><![CDATA[oscss]]></category>
		<category><![CDATA[oscss 2]]></category>
		<category><![CDATA[carre]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[paysage]]></category>
		<category><![CDATA[portrait]]></category>
		<category><![CDATA[propotion]]></category>
		<category><![CDATA[watermark]]></category>

		<guid isPermaLink="false">http://www.oscim.net/?p=406</guid>
		<description><![CDATA[il est possible de preciser quel format sera utilisé dans les redimensionnement (par default, l&#8217;image respectera la propotion sur la largeur et la hauteur) Pour forcer le redimensionement en carré, en utilisant le module present, il faut placer dans le fichier du template : image_ratio::SetModele('Carre'); Pour utiliser un watermark Ajouter dans la configuration, le texte [...]]]></description>
			<content:encoded><![CDATA[<p>il est possible de preciser quel format sera utilisé dans les redimensionnement (par default, l&#8217;image respectera la propotion sur la largeur et la hauteur)</p>
<p>Pour forcer le redimensionement en carré, en utilisant le module present, il faut placer dans le fichier du template :</p>
<pre>image_ratio::SetModele('Carre');</pre>
<p>Pour utiliser un watermark</p>
<p>Ajouter dans la configuration, le texte souhaité, puis activer l&#8217;utilisation du watermark avec:</p>
<pre>image_ratio::SetModeleSetWatermark(true);</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.oscim.net/archives/406/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>modification des modules non type a partir de la version 2.1.1</title>
		<link>http://www.oscim.net/archives/403</link>
		<comments>http://www.oscim.net/archives/403#comments</comments>
		<pubDate>Sat, 31 Dec 2011 20:50:35 +0000</pubDate>
		<dc:creator>oscim</dc:creator>
				<category><![CDATA[oscss]]></category>
		<category><![CDATA[oscss 2]]></category>
		<category><![CDATA[2.1.0]]></category>
		<category><![CDATA[2.1.1]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[note]]></category>
		<category><![CDATA[note de version]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[version]]></category>

		<guid isPermaLink="false">http://www.oscim.net/archives/403</guid>
		<description><![CDATA[Vous migrez votre template d&#8217;un osCSS 2.1.0 à la nouvelle version en cours de dev. Dans l&#8217;affichage de vos page, les modules non typé n&#8217;affiche plus rien ? Il s&#8217;agit d&#8217;un petite evolution de ces modules. Le module DOIT renvoyer le type de donnée qu&#8217;il traitent. C&#8217;est cette indication qui est utilisé dans les boucles [...]]]></description>
			<content:encoded><![CDATA[<p>Vous migrez votre template d&#8217;un osCSS 2.1.0 à la nouvelle version en cours de dev. Dans l&#8217;affichage de vos page, les modules non typé n&#8217;affiche plus rien ?</p>
<p>Il s&#8217;agit d&#8217;un petite evolution de ces modules. Le module DOIT renvoyer le type de donnée qu&#8217;il traitent. C&#8217;est cette indication qui est utilisé dans les boucles associées au modules.</p>
<p>Pour corriger ce probleme, ajouter dans les function &nbsp;&raquo; in_obj_xxx&nbsp;&raquo;, dans la boucle de traitement des donnée , l&#8217;informations comme suit:<br />
Avant</p>
<pre> while ($listing_version_products = $res-&gt;fetchAssoc()){</pre>
<pre> $pd=product::get_item($listing_version_products['products_id']);</pre>
<pre> $pd-&gt;aca=$aca_listing-&gt;return_db_min($listing_version_products['products_id']);</pre>
<pre> $p[]=$pd;</pre>
<pre> }</pre>
<pre> return new objectInfo(array('title'=&gt;__('table heading version products') , 'content'=&gt;$p));</pre>
<p>Apres</p>
<pre>while ($listing_version_products = $res-&gt;fetchAssoc()){
 $pd=product::get_item($listing_version_products['products_id']);
 $pd-&gt;aca=$aca_listing-&gt;return_db_min($listing_version_products['products_id']);
 $pd-&gt;type='product';
 $p[]=$pd;
 }</pre>
<pre>return new objectInfo(array('title'=&gt;__('table heading version products') , 'content'=&gt;$p ,'type'=&gt;'product'));</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.oscim.net/archives/403/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>memo appel detail customer for view public informations</title>
		<link>http://www.oscim.net/archives/401</link>
		<comments>http://www.oscim.net/archives/401#comments</comments>
		<pubDate>Sat, 31 Dec 2011 15:46:27 +0000</pubDate>
		<dc:creator>oscim</dc:creator>
				<category><![CDATA[oscss]]></category>
		<category><![CDATA[oscss 2]]></category>
		<category><![CDATA[core]]></category>
		<category><![CDATA[note]]></category>

		<guid isPermaLink="false">http://www.oscim.net/archives/401</guid>
		<description><![CDATA[Il est possible avec la class customers d&#8217;appler les informations public associé a un id. A cette occasion, la class customer est reinititalisé. Pour continuer à acceder à l&#8217;utilisateur courant , utiliser $current=$page-&#62;new_class(&#8216;customer&#8217;);]]></description>
			<content:encoded><![CDATA[<p>Il est possible avec la class customers d&#8217;appler les informations public associé a un id.<br />
A cette occasion, la class customer est reinititalisé.<br />
Pour continuer à acceder à l&#8217;utilisateur courant , utiliser</p>
<p>$current=$page-&gt;new_class(&#8216;customer&#8217;);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oscim.net/archives/401/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(pense bête) frontoffice &#8211; gestion des pdf</title>
		<link>http://www.oscim.net/archives/389</link>
		<comments>http://www.oscim.net/archives/389#comments</comments>
		<pubDate>Fri, 16 Dec 2011 23:16:41 +0000</pubDate>
		<dc:creator>oscim</dc:creator>
				<category><![CDATA[oscss]]></category>
		<category><![CDATA[oscss 2]]></category>
		<category><![CDATA[core]]></category>
		<category><![CDATA[note]]></category>

		<guid isPermaLink="false">http://www.oscim.net/archives/389</guid>
		<description><![CDATA[Suite à l&#8217;évolution de la prise en charge des pdf (modularité / ou prise en charge d&#8217;un import externe fournis pas logiciel tiers) - Utilisation du moteur interne La génération du pdf à lieu exclusivement par le back-office. - Utilisation d&#8217;un moteur externe Pas de génération de pdf disponible dans le back-office. - Conclusion Aussi, [...]]]></description>
			<content:encoded><![CDATA[<p>Suite à l&#8217;évolution de la prise en charge des pdf (modularité / ou prise en charge d&#8217;un import externe fournis pas logiciel tiers)<span id="more-389"></span></p>
<p>- Utilisation du moteur interne<br />
La génération du pdf à lieu exclusivement par le back-office.<br />
- Utilisation d&#8217;un moteur externe<br />
Pas de génération de pdf disponible dans le back-office.</p>
<p>- Conclusion</p>
<p>Aussi, pour que le client dans sont espace (cf module account/history) le pdf soit disponible, il doit être présent.</p>
<p>La lecture ou téléchargement de ce fichier est assuré par l&#8217;appel à la page documents.php</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oscim.net/archives/389/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evolution des statut, modification gestion des status</title>
		<link>http://www.oscim.net/archives/385</link>
		<comments>http://www.oscim.net/archives/385#comments</comments>
		<pubDate>Sun, 13 Nov 2011 11:58:15 +0000</pubDate>
		<dc:creator>oscim</dc:creator>
				<category><![CDATA[oscss 2]]></category>
		<category><![CDATA[add]]></category>
		<category><![CDATA[ajouter]]></category>
		<category><![CDATA[commande]]></category>
		<category><![CDATA[confirmation]]></category>
		<category><![CDATA[orders]]></category>
		<category><![CDATA[oscss]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[processus]]></category>
		<category><![CDATA[status]]></category>
		<category><![CDATA[statut]]></category>

		<guid isPermaLink="false">http://www.oscim.net/archives/385</guid>
		<description><![CDATA[Une petite modif apparait dans la gestion des status, afin que ceuc xi soit plus souple d&#8217;usage. L&#8217;exemple concerne la gestion des commandes, et les statut, en attente, en preparation, livré et annulé. La nouvelle nomenclature sera ainsi - en attente id 1 - payé id 2 - en preparation id 3 - expedié id [...]]]></description>
			<content:encoded><![CDATA[<p>Une petite modif apparait dans la gestion des status, afin que ceuc xi soit plus souple d&#8217;usage.</p>
<p>L&#8217;exemple concerne la gestion des commandes, et les statut, en attente, en preparation, livré et annulé.</p>
<p><span id="more-385"></span></p>
<p>La nouvelle nomenclature sera ainsi<br />
- en attente id 1<br />
- payé id 2<br />
- en preparation id 3<br />
- expedié id 4<br />
- livré id 5<br />
- cloturé id 6<br />
- annulé id -1</p>
<p>D&#8217;autre part, il est maintenant possible, et recommandé, que les module qui ajoute des statut, soit des statut enfant de ceux cité au dessus</p>
<p>C&#8217;est a dire, que un statut &laquo;&nbsp;payé par CB &laquo;&nbsp;, sera un statut avec l&#8217;id 21.<br />
Il appartiendra a la section des statut payé, et precisera par cb.</p>
<p>Pour attribbuer un statut à sont pére, il faut respecter l&#8217;ecriture ci dessous:<br />
pere + num<br />
21 Pour pere payé<br />
12 Pour pere en attente</p>
<p>L&#8217;etat des commande et du comportement de la boutique, sera donc basé sur le pere du statut courant.<br />
Toutefois cette nuance permet au module de genere leur propre statut, et ainsi de suivre en interne du module la progression.</p>
<p>Enfin les liste de commande ne contiendront que les statut &gt; 0. C&#8217;est a dire que les listing ne publierons pas les commande annulé, ou avec un statut negatif</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oscim.net/archives/385/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

