Au coeur de dotclear #1
Par FredLynx le jeudi 7 juin 2007, 16:41 - Au Coeur de Dotclear - Lien permanent
Nouvelle rubrique, bon vous vous en doutez je ne m'attaque pas à l'écriture d'un Roman
... Non je vais encore jouer avec mon « fantasme favoris », des lignes de codes.
Comme le titre du billet le laisse entendre, c'est à dotclear que je m'attaque (Gentiment), ce billet va présenter une solution de modification de dotclear pour obtenir ce dont je parle dans le billet du Modérateur Boite à idée.
En deux mots ma suggestion était d'ajouter en version Custom Style une rubrique Custom Script pour insérer dans le Blog un fichier avec du Javascript.
Je sais, je suis tatillon puisqu'on peut utiliser un widget Texte pour le faire, c'est vrai, mais ça fait un peut bordel du javascript partout
.
Pourquoi du Javascript dans le Blog ? J'ai au moins une réponse, il y a un script que j'implante d'office, une petit script qui permet de compenser un BUG dans IE6, parce que comme tout le monde le sais (maintenant vous aussi si ce n'était pas le cas) IE6 n'affiche pas la transparence des Images PNG tout seul sans un petit script pour l'aider, et au vu des stats de mon site du IE6 il y en a encore beaucoup !
Objectif : Obtenir l'onglet de script (voir ci-dessous)

- Dans le répertoire themes\customCSS modification du fichier _public.php
- Dans le répertoire themes\customCSS modification du fichier _head.html
- Dans le répertoire themes\customCSS ajout du fichier _config_script.php
- Dans le répertoire admin modification du fichier blog_theme.php
- Dans le répertoire themes\customCSS\locales\fr modification du fichier main.lang.php
- Dans le répertoire locales\fr modification du fichier main.lang.php
:
- Fichier _public.php (Ajouter à la fin avant ?>)
- Fichier _head.html (Ajouter à la fin)
- _config_script.php (Créer le fichier)
- Fichier blog_theme.php (Ajouter avant dcPage::close();)
- Fichier locales\fr\main.lang.php (Ajouter à la fin avant ?>)
- Fichier themes\customCSS\locales\fr\main.lang.php (Ajouter à la fin avant ?>)
$core->tpl->addValue('CustomSCRIPT',array('tplCustomScript','CustomSCRIPT'));
class tplCustomScript
{
public static function CustomSCRIPT($attr)
{
$f = $GLOBALS['core']->tpl->getFilters($attr);
return '<?php echo '.sprintf($f,'$core->blog->settings->public_url."/custom_script.js"').'; ?>';
}
}
<script type="text/javascript" language="javascript">
@import url({{tpl:CustomSCRIPT encode_xml="1"}});
</script>
<?php
l10n::set(dirname(__FILE__).'/locales/'.$_lang.'/main');
$js_file = path::real($core->blog->public_path).'/custom_script.js';
if (!is_file($js_file) && !is_writable(dirname($js_file))) {
throw new Exception(
sprintf(__('File %s does not exist and directory %s is not writable.'),
$js_file,dirname($js_file))
);
}
if (isset($_POST['js']))
{
@$fp = fopen($js_file,'wb');
fwrite($fp,$_POST['js']);
fclose($fp);
echo
'<div class="message"><p>'.__('Script Code upgraded.').'</p></div>';
}
$js_content = is_file($js_file) ? file_get_contents($js_file) : '';
echo
'<p class="area"><label>'.__('Script Code:').' '.form::textarea('js',60,20,html::escapeHTML($js_content)).'</label></p>';
?>
$theme_config_script_file = path::real($core->blog->themes_path.'/'.$core->blog->settings->theme).'/_config_script.php';
if (file_exists($theme_config_script_file))
{
echo '<div class="multi-part" id="theme_config_script" title="'.__('Script configuration').'">';
try
{
echo '<form action="blog_theme.php" method="post">';
include $theme_config_script_file;
echo '<p class="clear"><input type="submit" value="'.__('save').'" />'.form::hidden('tab','theme_config_script').'</p>'.'</form>';
}
catch (Exception $e)
{
echo '<div class="error"><p>'.$e->getMessage().'</p></div>';
}
echo '</div>';
}
$GLOBALS['__l10n']['Script configuration'] = 'Configuration javascript';
$GLOBALS['__l10n']['Script Code:'] = 'Script javascript :';
$GLOBALS['__l10n']['Script Code upgraded.'] = 'Script mis à jour.';



