{"id":202,"date":"2014-06-19T23:12:59","date_gmt":"2014-06-19T21:12:59","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=202"},"modified":"2014-06-19T23:12:59","modified_gmt":"2014-06-19T21:12:59","slug":"joomla-tutorial-creare-un-component-front-end","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/joomla-tutorial-creare-un-component-front-end\/","title":{"rendered":"JOOMLA &#8211; TUTORIAL &#8211; CREARE UN COMPONENT &#8211; FRONT-END"},"content":{"rendered":"<p style=\"color: rgb(13, 41, 63); text-align: justify;\">In questo articolo definiamo la parte pubblica del nostro componente. Essa presenta due punti di accesso, uno che consente di avviare una chat con l&#8217;operatore previa registrazione e una pagina di gestione delle chat accessibile per l&#8217;operatore.<\/p>\n<p style=\"color: rgb(13, 41, 63); text-align: justify;\">Come gi\u00e0 visto per il modulo di amministrazione definiamo il file liveassistant.php che costituisce l&#8217;entry point del nostro modulo:<\/p>\n<pre class=\"lang:default decode:true \">&lt;?php\r\ndefined('_JEXEC') or die('Restricted access');\r\njimport('joomla.application.component.controller');\r\n$controller = JController::getInstance('LiveAssistant');\r\n$input = JFactory::getApplication()-&gt;input;\r\n$controller-&gt;execute($input-&gt;getCmd('task'));\r\n$controller-&gt;redirect();<\/pre>\n<p>Il file definisce il controller che viene definito nel file controller.php presente nella stessa directory:<\/p>\n<pre class=\"lang:default decode:true \">&lt;?php\r\ndefined('_JEXEC') or die('Restricted access');\r\njimport('joomla.application.component.controller');\r\nclass LiveAssistantController extends JController {\r\nfunction messages() { \u00a0 \u00a0 \u00a0}\r\nfunction crea() \u00a0 \u00a0 { \u00a0 \u00a0 }\r\nfunction aggiorna() { \u00a0 \u00a0 }\r\nfunction invia() { \u00a0 \u00a0 \u00a0}\r\nfunction aggiornaLista() { }\r\nfunction cancella() { \u00a0 \u00a0 }\r\n}<\/pre>\n<p>Nel file definiamo la classe LiveAssistantController che estende la classe JController. I metodi definiti sono privi dell&#8217;implementazione, ognuno potr\u00e0 scegliere l&#8217;implementazione che pi\u00f9 preferisce, sia basata su file system che su base dati. La soluzione prevista salva le chat su file system in formato xml riducendo al minimo l&#8217;accesso al db.<\/p>\n<p style=\"color: rgb(13, 41, 63); text-align: justify;\">A questo punto definiamo le view per la parte pubblica e le agganciamo alle voci del menu. Per fare questo \u00e8 sufficiente aggiungere un file xml nella directory com_liveassistant\\site\\views\\client\\tmpl, che definisce il valore della voce del men\u00f9:<\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;metadata&gt;\r\n&lt;layout title=\"COM_LIVEASSISTANT_VIEW_DEFAULT_TITLE_CLIENT\"&gt;\r\n&lt;message&gt;\r\n&lt;![CDATA[COM_LIVEASSISTANT_VIEW_DEFAULT_TITLE_CLIENT]]&gt;\r\n&lt;\/message&gt;\r\n&lt;\/layout&gt;\r\n&lt;\/metadata&gt;<\/pre>\n<p>L&#8217;utente potr\u00e0 aggiungere una voce di men\u00f9 che punti alla view relativa, stabilendone le regole di accesso. Possiamo rendere l&#8217;esperienza pi\u00f9 piacevole per l&#8217;utente realizzando un modulo dedicato.<\/p>\n<p style=\"color: rgb(13, 41, 63); text-align: justify;\">Come il componente il modulo presenta un file descrittore xml che descrive la struttura del modulo e definisce l&#8217;entry point del modulo, nel nostro caso \u00e8 il file mod_lvieassistant.php<\/p>\n<p style=\"color: rgb(13, 41, 63); text-align: justify;\">&lt;?<\/p>\n<pre class=\"lang:default decode:true \">&lt;xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;extension type=\"module\" version=\"2.5.0\" client=\"site\" method=\"upgrade\"&gt;\r\n&lt;name&gt;mod_liveassistant&lt;\/name&gt;\r\n&lt;author&gt;Valerio Finazzo&lt;\/author&gt;\r\n&lt;creationDate&gt;Marzo 2014&lt;\/creationDate&gt;\r\n&lt;authorEmail&gt;\u00a0valerio.finazzo@gmail.com&lt;\/authorEmail&gt;\r\n&lt;authorUrl&gt;www.valeriofinazzo.it&lt;\/authorUrl&gt;\r\n&lt;version&gt;1.0.0&lt;\/version&gt;\r\n&lt;files&gt;\r\n&lt;folder&gt;tmpl&lt;\/folder&gt;\r\n&lt;folder&gt;assets&lt;\/folder&gt;\r\n&lt;folder&gt;language&lt;\/folder&gt;\r\n&lt;filename module=\"mod_liveassistant\"&gt;mod_liveassistant.php&lt;\/filename&gt;\r\n&lt;filename&gt;mod_liveassistant.xml&lt;\/filename&gt;\r\n&lt;filename&gt;index.html&lt;\/filename&gt;\r\n&lt;\/files&gt;\r\n&lt;config&gt;\r\n&lt;fields name=\"params\"&gt;\r\n&lt;fieldset name=\"basic\"&gt;\r\n&lt;field name=\"type\" type=\"radio\" default=\"chat\" label=\"tipo modulo\"&gt;\r\n&lt;option value=\"client\"&gt;client&lt;\/option&gt;\r\n&lt;option value=\"operatore\"&gt;operatore&lt;\/option&gt;\r\n&lt;\/field&gt;\r\n&lt;\/fieldset&gt;\r\n&lt;\/fields&gt;\r\n&lt;\/config&gt;\r\n&lt;\/extension&gt;<\/pre>\n<p>La sezione config definisce i parametri di configurazione del modulo, nel nostro caso \u00e8 definito un parametro di tipo radio button che consente di stabilire il tipo di modulo da mostrare. (modulo client o modulo operatore).<\/p>\n<p style=\"color: rgb(13, 41, 63); text-align: justify;\">Prossimamente rilascer\u00f2 il package complessivo LiveAssistant, che comprender\u00e0 sia il componente che il modulo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo articolo definiamo la parte pubblica del nostro componente. Essa presenta due punti di accesso, uno che consente di avviare una chat con l&#8217;operatore previa registrazione e una pagina di gestione delle chat accessibile per l&#8217;operatore. Come gi\u00e0 visto per il modulo di amministrazione definiamo il file liveassistant.php che costituisce l&#8217;entry point del nostro &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/joomla-tutorial-creare-un-component-front-end\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">JOOMLA &#8211; TUTORIAL &#8211; CREARE UN COMPONENT &#8211; FRONT-END<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[30],"tags":[31],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/202"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=202"}],"version-history":[{"count":1,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/202\/revisions"}],"predecessor-version":[{"id":203,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/202\/revisions\/203"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=202"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}