<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>Blogspx - Tag widget</title>
	<link>http://secretsitebox.fr/blogspx/tag/widget</link>
	<language>fr</language>
	<description>Projet spx pour booster pluxml</description>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://secretsitebox.fr/blogspx/feed/rss" />
	<lastBuildDate>Fri, 01 Aug 2014 11:34:00 +0200</lastBuildDate>
	<generator>PluXml</generator>
	<item>
		<title>Créer un plugin widget pour spxdatas</title> 
		<link>http://secretsitebox.fr/blogspx/article13/creer-un-plugin-widget-pour-spxdatas</link>
		<guid>http://secretsitebox.fr/blogspx/article13/creer-un-plugin-widget-pour-spxdatas</guid>
		<description>&lt;p&gt;A partir de la version 1.60 de spxdatas, il est possible de cr&amp;eacute;er des plugins qui viennent s&#039;ajouter dans&amp;nbsp;&lt;strong&gt;la partie widget de spxdatas&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;C&#039;est un tournant majeur pour spxdatas, avec l&#039;accueil de plugins externes, il n&#039;y a plus de limite &amp;agrave; la cr&amp;eacute;ation de widget !&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://secretsitebox.fr/blogspx/data/images/spxwpolaroid/5.jpg&quot; data-spxlighbox=&quot;true&quot; &gt;&lt;img src=&quot;http://secretsitebox.fr/blogspx/data/images/spxwpolaroid/5.jpg&quot; alt=&quot;&quot; width=&quot;168&quot; height=&quot;231&quot; data-spxtynimce=&quot;true&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://secretsitebox.fr/blogspx/data/images/spxwpolaroid/widget1.jpg&quot; data-spxlighbox=&quot;true&quot; &gt;&lt;img src=&quot;http://secretsitebox.fr/blogspx/data/images/spxwpolaroid/widget1.jpg&quot; alt=&quot;&quot; width=&quot;747&quot; height=&quot;382&quot; data-spxtynimce=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nous allons voir ensemble comment cr&amp;eacute;er un plugin widget de A &amp;agrave; Z.&lt;/p&gt;&lt;h3&gt;Comment cr&amp;eacute;er un plugin widget ?&lt;/h3&gt;
&lt;p&gt;Un plugin widget est tout d&#039;abord un plugin dans pluxml, il doit donc &amp;ecirc;tre d&amp;eacute;clar&amp;eacute; comme tout plugin dans le dossier plugins.&lt;/p&gt;
&lt;p&gt;La premi&amp;egrave;re chose &amp;agrave; faire est une d&amp;eacute;claration le fichier de construction du plugin.&lt;/p&gt;
&lt;p&gt;[PHP]&lt;/p&gt;
&lt;p&gt;public function __construct($default_lang) {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; # Appel du constructeur de la classe plxPlugin (obligatoire)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; parent::__construct($default_lang);&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; $this-&amp;gt;setParam(&#039;spxdatas_widget&#039;, &#039;1&#039;, &#039;string&#039;);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;[/PHP]&lt;/p&gt;
&lt;p&gt;Le param&amp;egrave;tre &quot;spxdatas_widget = 1&quot; va permettre au plugin spxdatas de savoir que votre plugin est un plugin de type widget. C&#039;est la premi&amp;egrave;re chose &amp;agrave; faire.&lt;/p&gt;
&lt;p&gt;Ensuite, il va falloir cr&amp;eacute;er un dossier spxdatas &amp;agrave; la racine de votre plugin avec une hierarchie sp&amp;eacute;cifique. Voici a quoi ressemble la structure d&#039;ensemble.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://secretsitebox.fr/blogspx/data/images/plugin_widget_explain/pluginwidget2.png&quot; data-spxlighbox=&quot;true&quot; &gt;&lt;img src=&quot;http://secretsitebox.fr/blogspx/data/images/plugin_widget_explain/pluginwidget2.png&quot; alt=&quot;&quot; width=&quot;399&quot; height=&quot;363&quot; data-spxtynimce=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le dossier icon contient une image qui permettra l&#039;affichage et la personnalisation dans la partie widget.&lt;/p&gt;
&lt;p&gt;Le dossier table contient tous les &amp;eacute;l&amp;eacute;ments pour d&amp;eacute;finir le widget et &quot;alimenter&quot; en quelque sorte spxdatas.&lt;/p&gt;
&lt;p&gt;Dans ce dossier on trouve notamment deux parties :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un fichier table.php correspondant&amp;nbsp;description du widget au format xml en terme de structure&lt;/li&gt;
&lt;li&gt;un dossier table_loc contenant les fichiers de traduction du widget&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Comment cr&amp;eacute;er l&#039;administration du widget ?&lt;/h3&gt;
&lt;p&gt;L&#039;administration du widget est cr&amp;eacute;e tout simplement par lecture du fichier se trouvant dans :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;monwidgetplugin/spxdatas/table/table.php&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce fichier table.php contient une description au format xml du widget.&lt;/p&gt;
&lt;p&gt;Voici par exemple la description xml du widget spxwpolaroid :&lt;/p&gt;
&lt;p&gt;[PHP]&amp;lt;table name=&quot;spxwpolaroids&quot; maxparam=&quot;2&quot; groupe=&quot;spxwpolaroid&quot; tableuserlevel=&quot;0,1,2,3,4&quot; rightCMDlevel=&quot;0:111,1:111,2:111,3:111,4:111&quot; &amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;&amp;lt;![CDATA[&amp;lt;p&amp;gt;List of polaroid&amp;lt;/p&amp;gt;]]&amp;gt;&amp;lt;/description&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;column&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;parameter name=&quot;title&quot; type=&quot;cdata&quot; option=&quot;textinput/30/100&quot; &amp;gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;parameter name=&quot;polaroid_content&quot; type=&quot;cdata&quot; option=&quot;subtable/spxwpolaroid&quot; &amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;/parameter&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;/column&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/table&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;table name=&quot;spxwpolaroid&quot; maxparam=&quot;3&quot; groupe=&quot;spxwpolaroid&quot; type=&quot;subtable&quot; order=&quot;true&quot; rightCMDlevel=&quot;0:111,1:111,2:111,3:111,4:111&quot; &amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;description&amp;gt;&amp;lt;![CDATA[&amp;lt;p&amp;gt;Your polaroid&amp;lt;/p&amp;gt;]]&amp;gt;&amp;lt;/description&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;column&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;parameter name=&quot;title&quot; type=&quot;cdata&quot; option=&quot;textinput/30/100&quot; &amp;gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;parameter name=&quot;image&quot; type=&quot;cdata&quot; option=&quot;image&quot; &amp;gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;parameter name=&quot;dummy&quot; type=&quot;string&quot; option=&quot;boolean&quot;&amp;gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;parameter name=&quot;bt_url&quot; type=&quot;cdata&quot; option=&quot;textinput/30/100&quot; &amp;gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;parameter name=&quot;bt_blank&quot; type=&quot;string&quot; option=&quot;boolean&quot;&amp;gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;parameter name=&quot;polaroidback&quot; type=&quot;cdata&quot; option=&quot;textarea/40/10&quot; &amp;gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/column&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/table&amp;gt;[/PHP]&lt;/p&gt;
&lt;p&gt;Comme on peux le voir ic la description du widget est faite en deux parties (2 tables).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;table spxwpolaroids : permet d&#039;avoir le titre du polaroid et un lien vers une autre table&lt;/li&gt;
&lt;li&gt;table&amp;nbsp;spxwpolaroid : une sous table permet la description du polaroid (titre, image, url...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je ne vais pas ici faire &lt;strong&gt;un tutoriel sur la construction de la table&lt;/strong&gt;. Le plugin spxdatas comporte une &lt;strong&gt;aide d&amp;eacute;taill&amp;eacute;e&lt;/strong&gt; sur le sujet et de nombreux autres articles viendront enrichir la documentation obscure ou absente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A noter :&lt;/strong&gt; la structure du xml est particuli&amp;egrave;re est ne comporte pas de balise encadrant les tables.&lt;/p&gt;
&lt;p&gt;Bien sur, il est tout &amp;agrave; fait possible de g&amp;eacute;n&amp;eacute;rer ce fichier &amp;agrave; partir de la configuration de votre plugin widget. C&#039;est ce que fait spwunslider et spxwpolaroid.&lt;/p&gt;
&lt;h3&gt;Pourquoi g&amp;eacute;n&amp;eacute;rer le fichier table.php ?&lt;/h3&gt;
&lt;p&gt;Il peux &amp;ecirc;tre utille, par exemple, de changer les droits de l&#039;administration du widget (spxdatas le permet). Consulter le documentation de spxdatas pour plus de d&amp;eacute;tails.&lt;/p&gt;
&lt;h3&gt;Les traductions du widget&lt;/h3&gt;
&lt;p&gt;l&#039;administration des widget peut-&amp;ecirc;tre traduite en deux langues pour le moment (anglais et fran&amp;ccedil;ais).&lt;/p&gt;
&lt;p&gt;Pour cela il suffit de cr&amp;eacute;er des fichier de traductions :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fran&amp;ccedil;ais dans monpluginwidget/spxdatas/table/table_loc/fr/admin.php&lt;/li&gt;
&lt;li&gt;anglais dans&amp;nbsp;monpluginwidget/spxdatas/table/table_loc/en/admin.php&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Que contiennent ces fichiers ?&lt;/h3&gt;
&lt;p&gt;Exemple pour l&#039;administration fran&amp;ccedil;aise du plugin spxpolaro&amp;iuml;d&lt;/p&gt;
&lt;p&gt;[PHP]&lt;/p&gt;
&lt;p&gt;&amp;lt;?php&lt;/p&gt;
&lt;p&gt;$LANG = array(&lt;/p&gt;
&lt;p&gt;# GROUPES&lt;/p&gt;
&lt;p&gt;&#039;L_GROUPE_SPXWPOLAROID_TITLE&#039; =&amp;gt; &#039;&amp;lt;img src=&quot;plugins/spxwpolaroid/spxdatas/icon/Slideshow.png&quot; width=&quot;20px&quot; height=&quot;20px&quot; &amp;gt;Polaroid&#039;,&lt;/p&gt;
&lt;p&gt;# TABLE&lt;/p&gt;
&lt;p&gt;&#039;L_TABLE_SPXWPOLAROIDS_TITLE&#039; =&amp;gt; &#039;Polaroid&#039;,&lt;/p&gt;
&lt;p&gt;&#039;L_TABLE_SPXWPOLAROIDS_DESCRIPTION&#039; =&amp;gt; &#039;&amp;lt;p&amp;gt;Adminstration de vos polaroids.&amp;lt;/p&amp;gt;&#039;,&lt;/p&gt;
&lt;p&gt;# ACTION TITLE&lt;/p&gt;
&lt;p&gt;&#039;L_TABLE_SPXWPOLAROIDS_ACTIONTITLE&#039; =&amp;gt; &#039;&#039;,&lt;/p&gt;
&lt;p&gt;# COLUMN&lt;/p&gt;
&lt;p&gt;&#039;L_TABLE_COLUMN_SPXWPOLAROIDS_TITLE_HIGHLIGHTTITLE&#039; =&amp;gt; &#039;&#039;,&lt;/p&gt;
&lt;p&gt;&#039;L_TABLE_COLUMN_SPXWPOLAROIDS_TITLE_TITLE&#039; =&amp;gt; &#039;Titre&#039;,&lt;/p&gt;
&lt;p&gt;&#039;L_TABLE_COLUMN_SPXWPOLAROIDS_TITLE_HELP&#039; =&amp;gt; &#039;Donner un titre a votre polaroid.&#039;,&lt;/p&gt;
&lt;p&gt;# COLUMN&lt;/p&gt;
&lt;p&gt;&#039;L_TABLE_COLUMN_SPXWPOLAROIDS_POLAROID_CONTENT_HIGHLIGHTTITLE&#039; =&amp;gt; &#039;&#039;,&lt;/p&gt;
&lt;p&gt;&#039;L_TABLE_COLUMN_SPXWPOLAROIDS_POLAROID_CONTENT_TITLE&#039; =&amp;gt; &#039;Acc&amp;egrave;s au contenu&#039;,&lt;/p&gt;
&lt;p&gt;&#039;L_TABLE_COLUMN_SPXWPOLAROIDS_POLAROID_CONTENT_HELP&#039; =&amp;gt; &#039;Cliquer sur &amp;eacute;diter pour cr&amp;eacute;er ou modifier le contenu de votre polaroid&#039;,&lt;/p&gt;
&lt;p&gt;# TABLE&lt;/p&gt;
&lt;p&gt;&#039;L_TABLE_SPXWPOLAROID_TITLE&#039; =&amp;gt; &#039;Polaroid&#039;,&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;);&lt;/p&gt;
&lt;p&gt;?&amp;gt;&lt;/p&gt;
&lt;p&gt;[/PHP]&lt;/p&gt;
&lt;p&gt;Ce fichier contient en fait un tableau php de traduction. Les noms d&#039;association ont leur importance et ob&amp;eacute;issent &amp;agrave; une logique codifi&amp;eacute;e.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Attention : le codage est en majuscule et s&amp;eacute;par&amp;eacute; par le caract&amp;egrave;re &quot;_&quot;&lt;/li&gt;
&lt;li&gt;Remplace &lt;span style=&quot;background-color: #ff0000;&quot;&gt;xxx&lt;/span&gt; par le nom de la table : ex&amp;nbsp;SPXWPOLAROID&lt;/li&gt;
&lt;li&gt;Remplace &lt;span style=&quot;background-color: #00ff00;&quot;&gt;yyy&lt;/span&gt; par le nom de la colonne : ex&amp;nbsp;IMAGE&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;code&lt;/th&gt;
&lt;th&gt;note&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L_GROUPE_&lt;span style=&quot;background-color: #ff0000;&quot;&gt;xxx&lt;/span&gt;_TITLE&lt;/td&gt;
&lt;td&gt;&amp;nbsp;Nom du groupe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L_TABLE_&lt;span style=&quot;background-color: #ff0000;&quot;&gt;xxx&lt;/span&gt;_DESCRIPTION&lt;/td&gt;
&lt;td&gt;&amp;nbsp;Description de ma table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L_TABLE_&lt;span style=&quot;background-color: #ff0000;&quot;&gt;xxx&lt;/span&gt;_ACTIONTITLE&lt;/td&gt;
&lt;td&gt;&amp;nbsp;Description de mon action (r&amp;eacute;serv&amp;eacute; pour plus tard)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L_TABLE_COLUMN_&lt;span style=&quot;background-color: #ff0000;&quot;&gt;xxx&lt;/span&gt;_&lt;span style=&quot;background-color: #00ff00;&quot;&gt;yyy&lt;/span&gt;_HIGHLIGHTTITLE&lt;/td&gt;
&lt;td&gt;&amp;nbsp;Texte de s&amp;eacute;paration entre deux colonnes (dans les options du widget)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L_TABLE_COLUMN_&lt;span style=&quot;background-color: #ff0000;&quot;&gt;xxx&lt;/span&gt;_&lt;span style=&quot;background-color: #00ff00;&quot;&gt;yyy&lt;/span&gt;_TITLE&lt;/td&gt;
&lt;td&gt;&amp;nbsp;Nom de ma colonne dans ma table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L_TABLE_COLUMN_&lt;span style=&quot;background-color: #ff0000;&quot;&gt;xxx&lt;/span&gt;_&lt;span style=&quot;background-color: #00ff00;&quot;&gt;yyy&lt;/span&gt;_HELP&lt;/td&gt;
&lt;td&gt;&amp;nbsp;Aide de ma colonne dans ma table&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;Il est possible de g&amp;eacute;n&amp;eacute;rer ce fichier &amp;agrave; partir de la configuration du plugin widget. Voir l&#039;exemple spxwpolaroid ou spxwunslider.&lt;/p&gt;
&lt;h3&gt;Comment r&amp;eacute;cup&amp;eacute;rer les donn&amp;eacute;es de l&#039;administration cot&amp;eacute; client ?&lt;/h3&gt;
&lt;p&gt;Tout d&#039;abord nous allons d&amp;eacute;clarer un hook dans le constructeur du plugin.&lt;/p&gt;
&lt;p&gt;[PHP]&lt;/p&gt;
&lt;p&gt;$this-&amp;gt;addHook(&#039;spxwpolaroid::getPolaroidID&#039;, &#039;getUnsliderID&#039;);&lt;/p&gt;
&lt;p&gt;[/PHP]&lt;/p&gt;
&lt;p&gt;Puis nous construisons la fonction qui va permettre de r&amp;eacute;cupr&amp;eacute;rer les donn&amp;eacute;es du widget.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
		<pubDate>Fri, 01 Aug 2014 11:34:00 +0200</pubDate>
		<dc:creator>je-evrard</dc:creator>
	</item>
</channel>
</rss>