Per aspera ad astra
Home Trucs et astuces de dev
Trucs et astuce d'un développeur Imprimer Envoyer

Utiliser un sourcerer dans Joomla...

Par sourcerer, j'entends un outil qui permet de faire des citations de code dans son site, avec de la coloration syntaxique (code highlight) plus deux trois autres gadget intéressant comme les numéro de ligne, une pop up qui permet de copier coller le code sans les numéro de ligne...

Avec le plugin joomla Sourcerer vous pourrez faire des snipet (une autre appellation) en PHP, Javascript ou HTML. Aprés en avoir testé quelques uns je vous conseil fortement d'utiliser d'emblée CodeCitation qui remplit trés bien sa mission et permet de faire de la coloration syntaxique pour ActionScript3, Bash/shell, C#, C++, CSS, Delphi, Diff, Groovy, JavaScript, Java, JavaFX, Perl, PHP, Plain Text, PowerShell, Python, Ruby, Scala, SQL, Visual Basic, XML, HTML, XSLT. Il n'utilise pas Geshi mais  SyntaxHighlighting 2.0


Exemple (enlevez les backslash) :
\{codecitation style="brush:xml;"\}
<company>
<name>ACME</name>
<address>Address example</address>
</company>
\{/codecitation\}

Ce qui donnera le premier bloc ci dessous :
5320.jpg

...et suppression de l'indentation et des espace sous TinyMCE

Problème sous TinyMCE dans Joomla, il vous vire les indentations !!! Adieu tabulations, espaces en début de ligne, tout votre code perd son relief et se retrouve "à plat" aligné à gauche, l'horreur pour relire. Pour conserver l'indentation, il faut activer une option de TinyMCE qui se nome preformatted. Dans la doc de TinyMCE on trouve la description suivante :

'name' => 'preformatted',
'desc' => 'If you enable this feature, whitespace such as tabs and spaces will be preserved. Much like the behavior of a <pre> element. This can be handy when integrating TinyMCE with webmail clients. This option is disabled by default.',


C'est à dire que TinyMCE ne supprimera plus vos espaces et fera un formatage dans le même genre que la balise pre, exactement ce qu'on veut. ouf.

Changez les fichiers  plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce.js et plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_src.js et mettez la variable preformatted = true

Avec le plugin CodeCitation et la variable preformatted à true, vous y êtes presque. Vous remarquerez peut être que la largeur du code dépasse le cadre du plugins CodeCItation, du coup on ne lit pas tout le code source en largeur. C'est un problème dans le CSS inline de la div conteneur. Changez le fichier plugins/content/CodeCitation.php

Cherchez  "overflow: hidden; display: block; height: auto; width:" et mettez la width à une valeur fixe qui colle à votre site.

Vous y êtes ? Bravo, vous pouvez allez dormir.

 

FAIRE DES REQUETES SUR UN TABLE MM EN PHP DANS TYPO3


 

// MM keywords -----------------

$select = "tx_fphressources_keywords.uid AS id_res, tx_fphressources_keywords.label AS res";

$local_table = "tx_fphressources_download";

$mm_table = "tx_fphressources_keywords_mm";

$foreign_table = "tx_fphressources_keywords";

$whereClause = "AND tx_fphressources_download.uid = " . $record['uid'] . " " . $this->enableFields;

$groupBy = '';

$orderBy = '';

$limit = '';

$keywords = $GLOBALS['TYPO3_DB']->exec_SELECT_mm_query(

$select,

$local_table,

$mm_table,

$foreign_table,

$whereClause,

$groupBy,

$orderBy,

$limit

);

 

while ( $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc( $keywords ) ) {

$keywords_table[$row['id_res']] .= $row['res']";

}

 

 

TYPOSCRIPT


Conditions utiles pour inclure ou non du typoscript :

Voir http://typo3.org/documentation/document-library/references/doc_core_tsref/4.1.0/view/4/1/


Example:

\[PIDinRootline = 28\]

RTE.default.content_css  >

RTE.default.content_css = fileadmin/templates/css/rte_2_RTE.css

\[END\]


This will match with a url like “...&print=1”

\[globalVar = GP:print > 0\]


This will match with a remote-addr begining with “192.168.”

\[globalString = IENV:REMOTE_ADDR = 192.168.*\]


This will match with the page-id being higher than 10:

\[globalVar = TSFE:id > 10\]


This will match with the pages having the layout field set to “Layout 1”:

\[globalVar = TSFE:page|layout = 1\]


This will match with the user whose username is “test”:

\[globalString = TSFE:fe_user|user|username = test\]


If the constant {$constant_to_turnSomethingOn} is “1” then this matches:

\[globalVar = LIT:1 = {$constant_to_turnSomethingOn}\]

 

 

COMPTER DES DOUBLONS MySQL

 

Sur n'importe quelle colonne :

 

SELECT uid, pid, email, count( * )
FROM tt_address
GROUP BY email
HAVING count( * ) > 1

 

 

 

 

Compatibilité JQuery / Prototype / Mootools


Si un jour vous devez travailler avec plusieurs librairies JS incompatibles. Si de base c'est impossible car elles utilisent toutes 3 la fonction $(...) il suffit de redéfinir cette dernière.

Avec JQuery c'est le plus facile :

  • var $j = jQuery.noConflict();
  • sous prototype il faut remplacer dans prototype.js toutes les instances de $( par autre chose comme $pt(
  • et du coup les mootolles marchent très bien toutes seules !


Alléluia !


Mise à jour le Jeudi, 06 Octobre 2011 16:40