This commit is contained in:
brol 2015-04-22 15:29:49 +02:00
parent 3c3695d67f
commit 128303194f
15 changed files with 861 additions and 0 deletions

21
CHANGELOG Normal file
View file

@ -0,0 +1,21 @@
v1.1 - 05-03-2015 - Pierre Van Glabeke
* compatibilité dc2.7
* cosmétique dc2.6
* localisation
* aide intégrée
* version effectuée depuis la v1.0.1 présente sur DA
2010-07-15 Gaetan Guillard <gaetan@bistroduweb.com>
* v1.0.1 - Corrections for compatibility with Dotclear 2.2
2008-10-18 Oleksandr Syenchuk <sacha@xn--phnix-csa.net>
* v2008.10 - Removed theme parameter from URL
2008-08-21 Oleksandr Syenchuk <sacha@xn--phnix-csa.net>
* Excluded themes can not be selected by user.
2008-04-21 Oleksandr Syenchuk <sacha@xn--phnix-csa.net>
* Dotclear r1790 compatibility, see
http://dev.dotclear.net/2.0/changeset/1790

36
_admin.php Normal file
View file

@ -0,0 +1,36 @@
<?php /* -*- tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
/***************************************************************\
* This is 'Arlequin', a plugin for Dotclear 2 *
* *
* Copyright (c) 2007,2015 *
* Oleksandr Syenchuk and contributors. *
* *
* This is an open source software, distributed under the GNU *
* General Public License (version 2) terms and conditions. *
* *
* You should have received a copy of the GNU General Public *
* License along with 'Arlequin' (see COPYING.txt); *
* if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\***************************************************************/
if (!defined('DC_CONTEXT_ADMIN')) { return; }
$_menu['Blog']->addItem(__('Theme switcher'),'plugin.php?p=arlequin',
'index.php?pf=arlequin/icon.png',
preg_match('/plugin.php\?p=arlequin(&.*)?$/',$_SERVER['REQUEST_URI']),
$core->auth->check('contentadmin',$core->blog->id));
require dirname(__FILE__).'/_widgets.php';
$core->addBehavior('adminDashboardFavorites','arlequinDashboardFavorites');
function arlequinDashboardFavorites($core,$favs)
{
$favs->register('arlequin', array(
'title' => __('Theme switcher'),
'url' => 'plugin.php?p=arlequin',
'small-icon' => 'index.php?pf=arlequin/icon.png',
'large-icon' => 'index.php?pf=arlequin/icon-big.png',
'permissions' => 'usage,contentadmin'
));
}

31
_define.php Normal file
View file

@ -0,0 +1,31 @@
<?php /* -*- tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
/***************************************************************\
* This is 'Arlequin', a plugin for Dotclear 2 *
* *
* Copyright (c) 2007,2015 *
* Oleksandr Syenchuk and contributors. *
* *
* This is an open source software, distributed under the GNU *
* General Public License (version 2) terms and conditions. *
* *
* You should have received a copy of the GNU General Public *
* License along with 'Arlequin' (see COPYING.txt); *
* if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\***************************************************************/
if (!defined('DC_RC_PATH')) { return; }
$this->registerModule(
/* Name */ 'Arlequin',
/* Description*/ 'Allows visitors choose a theme',
/* Author */ 'Oleksandr Syenchuk, Pierre Van Glabeke',
/* Version */ '1.1',
/* Properties */
array(
'permissions' => 'contentadmin',
'type' => 'plugin',
'dc_min' => '2.7',
'support' => 'http://forum.dotclear.org/viewtopic.php?id=48345',
'details' => 'http://plugins.dotaddict.org/dc2/details/arlequin'
)
);

185
_public.php Normal file
View file

@ -0,0 +1,185 @@
<?php /* -*- tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
/***************************************************************\
* This is 'Arlequin', a plugin for Dotclear 2 *
* *
* Copyright (c) 2007,2015 *
* Oleksandr Syenchuk and contributors. *
* *
* This is an open source software, distributed under the GNU *
* General Public License (version 2) terms and conditions. *
* *
* You should have received a copy of the GNU General Public *
* License along with 'Arlequin' (see COPYING.txt); *
* if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\***************************************************************/
if (!defined('DC_RC_PATH')) { return; }
require dirname(__FILE__).'/_widgets.php';
/** @doc
Arlequin public interface
*/
publicArlequinEngine::trigger($core->blog);
$core->addBehavior('publicBeforeDocument',array('publicArlequinEngine','adjustCache'));
$core->tpl->addValue('themesList',array('publicArlequinInterface','template'));
class publicArlequinEngine
{
public static $cookie_theme;
public static $cookie_upddt;
public static function trigger($blog)
{
$cname = base_convert($blog->uid,16,36);
self::$cookie_theme = 'dc_theme_'.$cname;
self::$cookie_upddt = 'dc_user_upddt_'.$cname;
if (!empty($_REQUEST['theme'])) {
# Set cookie for 365 days
setcookie(self::$cookie_theme,$_REQUEST['theme'],time()+31536000,'/');
setcookie(self::$cookie_upddt,time(),time()+31536000,'/');
# Redirect if needed
if (isset($_GET['theme'])) {
$p = '/(\?|&)theme(=.*)?$/';
http::redirect(preg_replace($p,'',http::getSelfURI()));
}
# Switch theme
self::switchTheme($blog,$_REQUEST['theme']);
}
elseif (!empty($_COOKIE[self::$cookie_theme])) {
self::switchTheme($blog,$_COOKIE[self::$cookie_theme]);
}
}
public static function adjustCache($core)
{
if (!empty($_COOKIE[self::$cookie_upddt])) {
$GLOBALS['mod_ts'][] = (integer) $_COOKIE[self::$cookie_upddt];
}
}
public static function switchTheme($blog,$theme)
{
if ($blog->settings->multitheme->mt_exclude) {
if (in_array($theme,explode('/',$blog->settings->multitheme->mt_exclude))) {
return;
}
}
$GLOBALS['__theme'] = $blog->settings->system->theme = $theme;
}
}
class publicArlequinInterface
{
public static function arlequinWidget($w)
{
return self::getHTML($w);
}
public static function template($attr)
{
return '<?php echo publicArlequinInterface::getHTML(); ?>';
}
public static function getHTML($w=false)
{
global $core;
if ($w->offline)
return;
$cfg = @unserialize($core->blog->settings->multitheme->get('mt_cfg'));
if (($w->homeonly == 1 && $core->url->type != 'default') ||
($w->homeonly == 2 && $core->url->type == 'default')) {
return;
}
if ($cfg === false ||
($names = self::getNames()) === false) {
return;
}
# Current page URL and the associated query string. Note : the URL for
# the switcher ($s_url) is different to the URL for an item ($e_url)
$s_url = $e_url = http::getSelfURI();
# If theme setting is already present in URL, we will replace its value
$replace = preg_match('/(\\?|&)theme\\=[^&]*/',$e_url);
# URI extension to send theme setting by query string
if ($replace) {
$ext = '';
}
elseif (strpos($e_url,'?') === false) {
$ext = '?theme=';
}
else {
$ext = (substr($e_url,-1) == '?' ? '' : '&amp;').'theme=';
}
$res = '';
foreach ($names as $k=>$v)
{
if ($k == $GLOBALS['__theme']) {
$format = $cfg['a_html'];
} else {
$format = $cfg['e_html'];
}
if ($replace) {
$e_url = preg_replace(
'/(\\?|&)(theme\\=)([^&]*)/',
'$1${2}'.addcslashes($k,'$\\'),
$e_url);
$val = '';
}
else {
$val = html::escapeHTML(rawurlencode($k));
}
$res .= sprintf($format,
$e_url,$ext,$val,
html::escapeHTML($v['name']),
html::escapeHTML($v['desc']),
html::escapeHTML($k));
}
# Nothing to display
if (!trim($res)) {
return;
}
$res = sprintf($cfg['s_html'],$s_url,$res);
if ($w) {
$res =
($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '').
$res;
return $w->renderDiv($w->content_only,'arlequin '.$w->class,'',$res);
}
return $res;
}
public static function getNames()
{
global $core;
$mt_exclude = $core->blog->settings->multitheme->mt_exclude;
$exclude = array();
if (!empty($mt_exclude)) {
$exclude = array_flip(explode('/',$core->blog->settings->multitheme->mt_exclude));
}
$names = array_diff_key($core->themes->getModules(),$exclude);
return empty($names) ? false : $names;
}
}

73
_widgets.php Normal file
View file

@ -0,0 +1,73 @@
<?php /* -*- tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
/***************************************************************\
* This is 'Arlequin', a plugin for Dotclear 2 *
* *
* Copyright (c) 2007-2015 *
* Oleksandr Syenchuk and contributors. *
* *
* This is an open source software, distributed under the GNU *
* General Public License (version 2) terms and conditions. *
* *
* You should have received a copy of the GNU General Public *
* License along with 'Arlequin' (see COPYING.txt); *
* if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\***************************************************************/
if (!defined('DC_RC_PATH')) { return; }
$core->addBehavior('initWidgets',array('adminArlequin','initWidgets'));
class adminArlequin
{
public static function initWidgets($w)
{
$w->create('arlequin',__('Arlequin'),array('publicArlequinInterface','arlequinWidget'),
null,
__('Theme switcher'));
$w->arlequin->setting('title',__('Title:'),__('Choose a theme'));
$w->arlequin->setting('homeonly',__('Display on:'),0,'combo',
array(
__('All pages') => 0,
__('Home page only') => 1,
__('Except on home page') => 2
)
);
$w->arlequin->setting('content_only',__('Content only'),0,'check');
$w->arlequin->setting('class',__('CSS class:'),'');
$w->arlequin->setting('offline',__('Offline'),0,'check');
}
public static function getDefaults()
{
return array(
'e_html'=>'<li><a href="%1$s%2$s%3$s">%4$s</a></li>',
'a_html'=>'<li><strong>%4$s</strong></li>',
's_html'=>'<ul>%2$s</ul>');
}
public static function loadSettings($settings,&$initialized)
{
global $core;
$initialized = false;
$mt_cfg = @unserialize($settings->multitheme->get('mt_cfg'));
$mt_exclude = $settings->multitheme->get('mt_exclude');
// Paramètres corrompus ou inexistants
if ($mt_cfg === false ||
$mt_exclude === null ||
!(isset($mt_cfg['e_html']) &&
isset($mt_cfg['a_html']) &&
isset($mt_cfg['s_html'])))
{
$mt_cfg = adminArlequin::getDefaults();
$settings->addNameSpace('multitheme');
$settings->multitheme->put('mt_cfg',serialize($mt_cfg),'string','Arlequin configuration');
$settings->multitheme->put('mt_exclude','customCSS','string','Excluded themes');
$initialized = true;
$core->blog->triggerBlog();
}
return array($mt_cfg,$mt_exclude);
}
}

BIN
icon-big.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

141
index.php Normal file
View file

@ -0,0 +1,141 @@
<?php /* -*- tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
/***************************************************************\
* This is 'Arlequin', a plugin for Dotclear 2 *
* *
* Copyright (c) 2007,2015 *
* Oleksandr Syenchuk and contributors. *
* *
* This is an open source software, distributed under the GNU *
* General Public License (version 2) terms and conditions. *
* *
* You should have received a copy of the GNU General Public *
* License along with 'Arlequin' (see COPYING.txt); *
* if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\***************************************************************/
if (!defined('DC_CONTEXT_ADMIN')) { return; }
$page_title = __('Arlequin');
try
{
include dirname(__FILE__).'/models.php';
$messages = array();
/* Initialisation
--------------------------------------------------- */
$core->blog->settings->addNameSpace('multitheme');
list($mt_cfg,$mt_exclude) =
adminArlequin::loadSettings ($core->blog->settings,$initialized);
/* Enregistrement des données depuis les formulaires
--------------------------------------------------- */
if (isset($_POST['mt_action_config']))
{
$mt_cfg['e_html'] = $_POST['e_html'];
$mt_cfg['a_html'] = $_POST['a_html'];
$mt_cfg['s_html'] = $_POST['s_html'];
$mt_exclude = $_POST['mt_exclude'];
}
/* Traitement des requêtes
--------------------------------------------------- */
if (isset($_POST['mt_action_config']))
{
$core->blog->settings->multitheme->put('mt_cfg',serialize($mt_cfg));
$core->blog->settings->multitheme->put('mt_exclude',$mt_exclude);
$messages[] = __('Settings have been successfully updated.');
$core->blog->triggerBlog();
http::redirect($p_url.'&config=1');
}
if (isset($_POST['mt_action_restore']))
{
$core->blog->settings->multitheme->drop('mt_cfg');
$core->blog->settings->multitheme->drop('mt_exclude');
$core->blog->triggerBlog();
http::redirect($p_url.'&restore=1');
}
}
catch (Exception $e)
{
$core->error->add($e->getMessage());
}
/* DISPLAY
--------------------------------------------------- */
if ($initialized) {
$messages[] = __('Settings have been reinitialized.');
}
// Headers
$jsModels = ''; $cslashes = "\n\"\'";
foreach ($mt_models as $m)
{
$jsModels .= "\t".
'arlequin.addModel('.
'"'.html::escapeJS($m['name']).'",'.
'"'.addcslashes($m['s_html'],$cslashes).'",'.
'"'.addcslashes($m['e_html'],$cslashes).'",'.
'"'.addcslashes($m['a_html'],$cslashes).'"'.
");\n";
}
echo '
<html><head>
<title>'.$page_title.'</title>'.
dcPage::jsLoad('index.php?pf=arlequin/js/models.js').'
<script type="text/javascript">
//<![CDATA[
arlequin.msg.predefined_models = "'.html::escapeJS(__('Predefined models')).'";
arlequin.msg.select_model = "'.html::escapeJS(__('Select a model')).'";
arlequin.msg.user_defined = "'.html::escapeJS(__('User defined')).'";
$(function() {
arlequin.addDefault();
'.$jsModels.'
});
//]]>
</script>
</head><body>'.
dcPage::breadcrumb(
array(
html::escapeHTML($core->blog->name) => '',
'<span class="page-title">'.$page_title.'</span>' => ''
));
// Messages
if (!empty($_GET['config'])) {
dcPage::success(__('Settings have been successfully updated.'));
}
if (!empty($_GET['restore'])) {
dcPage::success(__('Settings have been reinitialized.'));
}
echo
'<form action="'.$p_url.'" method="post">
<div class="fieldset two-cols"><h4>'.__('Switcher display format').'</h4>
<div id="models"></div>
<p class="col"><label for="s_html">'.__('Switcher HTML code:').'</label> '.
form::textArea('s_html',50,10,html::escapeHTML($mt_cfg['s_html'])).'</p>
<div class="col">
<p><label>'.__('Item HTML code:').' '.
form::field('e_html',35,'',html::escapeHTML($mt_cfg['e_html'])).'</label></p>
<p><label>'.__('Active item HTML code:').' '.
form::field('a_html',35,'',html::escapeHTML($mt_cfg['a_html'])).'</label></p>
</div><br class="clear" />
<p><label>'.__('Excluded themes (separated by slashs \'/\'):').' '.
form::field(array('mt_exclude'),40,'',html::escapeHTML($mt_exclude)).'</label></p>
</div>
<p><input type="submit" name="mt_action_config" value="'.__('Update').'" />
<input type="submit" name="mt_action_restore" value="'.__('Restore defaults').'" />'.
(is_callable(array($core,'formNonce')) ? $core->formNonce() : '').'</p>
</form>';
dcPage::helpBlock('arlequin'); ?>
</body></html>

82
js/models.js Normal file
View file

@ -0,0 +1,82 @@
/* -*- tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/***************************************************************\
* This is 'Arlequin', a plugin for Dotclear 2 *
* *
* Copyright (c) 2007,2015 *
* Oleksandr Syenchuk and contributors. *
* *
* This is an open source software, distributed under the GNU *
* General Public License (version 2) terms and conditions. *
* *
* You should have received a copy of the GNU General Public *
* License along 'Arlequin' (see COPYING.txt); *
* if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\***************************************************************/
var arlequin = {
msg : {
predefined_models : 'Generic models',
select_model : 'Select a generic model:',
user_defined : 'User defined'
},
models : Array(),
addModel : function(model_name, s_html, e_html, a_html) {
model = new Array(model_name,s_html,e_html,a_html);
arlequin.models.push(model);
},
addDefault : function() {
arlequin.addModel(arlequin.msg.user_defined,
$("#s_html").val(),
$("#e_html").val(),
$("#a_html").val());
},
drawInterface : function() {
if (!arlequin.models.length) {
return;
}
res = '';
res += '<p>'+arlequin.msg.select_model+' ';
res += '<select id="mt_model">';
for (i in arlequin.models) {
res += '<option value="'+i+'">'
+ arlequin.models[i][0]+'</option>';
}
res += '</select>';
res += '</p>';
return res;
},
selectModel : function(id) {
if (!arlequin.models[id]) { return; }
$("#s_html").val(arlequin.models[id][1]);
$("#e_html").val(arlequin.models[id][2]);
$("#a_html").val(arlequin.models[id][3]);
}
};
$(function() {
if (!document.getElementById || !document.getElementById('models')) { return; }
var c = $('#models');
c.html('<p><a id="model-control" class="form-control" style="display:inline;" href="#">'+
arlequin.msg.predefined_models+'</a></p>');
$('#model-control').click(function() {
c.html(arlequin.drawInterface());
$('#mt_model').change(function() {
arlequin.selectModel(this.value);
});
return false;
});
});

View file

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title>Aide Arlequin</title>
</head>
<body>
<h4>Inserting the theme selector in the blog interface</h4>
<dl>
<dt>With a widget</dt>
<dd>The easiest way is to use the <em>Theme Selector</em>
<a href="plugin.php?p=widgets">widget</a> that displays a list of available themes.</dd>
<dt>In the template file</dt>
<dd>The switch can also be integrated into the blog interface by editing your
template file. Simply add the <code>{{tpl:themesList}}</code> instruction in
the desired location.</dd>
</dl>
<h4>Understanding Models</h4>
<p>Arlequin is notable for its flexible configuration, due to the concept of
<em>models</em> that create their own interfaces for the theme selector.</p>
<p>The information needed to operate the theme selector contained in variables
of the form <strong>%n$s</strong> where <strong>n</strong> is an integer
denoting a variable.</p>
<p>Here is the list of variables that you can use:</p>
<dl>
<dt>In switcher HTML code</dt>
<dd><table><thead>
<tr><th>Variable</th><th>Meaning</th></tr>
</thead><tbody class="noborder">
<tr><th>%1$s</th><td>Current page URL</td></tr>
<tr><th>%2$s</th><td>Items HTML code</td></tr>
</tbody></table></dd>
<dt>In items HTML code</dt>
<dd><table><thead>
<tr><th>Variable</th><th>Meaning</th></tr>
</thead><tbody class="noborder">
<tr><th>%1$s</th><td>Current page URL</td></tr>
<tr><th>%2$s</th><td>A suffix to send theme setting through URL, e.g. "<strong>&amp;theme=</strong>"</td></tr>
<tr><th>%3$s</th><td>Theme identifier <em>only to be used in a URL</em></td></tr>
<tr><th>%4$s</th><td>Theme name</td></tr>
<tr><th>%5$s</th><td>Theme description</td></tr>
<tr><th>%6$s</th><td>Theme identifier</td></tr>
</tbody></table></dd>
</dl>
<h4>Add your own predefined templates</h4>
<p>If you are the administrator of a platform of blogs, you can change the
predefined templates by editing the file <strong>plugins/arlequin/models.php</strong>.</p>
<p><strong>Suggestion</strong>: some interesting models can be created in
association with JavaScript or CSS property, changing your themes.</p>
</body>
</html>

20
locales/en/resources.php Normal file
View file

@ -0,0 +1,20 @@
<?php
/***************************************************************\
* This is 'Arlequin', a plugin for Dotclear 2 *
* *
* Copyright (c) 2007,2010 *
* Oleksandr Syenchuk and contributors. *
* *
* This is an open source software, distributed under the GNU *
* General Public License (version 2) terms and conditions. *
* *
* You should have received a copy of the GNU General Public *
* License along with 'Arlequin' (see COPYING.txt); *
* if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\***************************************************************/
if (!isset($__resources['help']['arlequin']))
{
$__resources['help']['arlequin'] = dirname(__FILE__).'/help/arlequin.html';
}

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title>Aide Arlequin</title>
</head>
<body>
<h4>Insertion du sélecteur de thème dans l'interface du blog</h4>
<dl>
<dt>Avec un widget</dt>
<dd>Le plus simple est d'utiliser le <a href="plugin.php?p=widgets">widget</a>
<em>Sélecteur de thème</em> qui affiche la liste des thèmes disponibles.</dd>
<dt>Dans le fichier template</dt>
<dd>Le sélecteur peut aussi être intégré dans l'interface du blog en éditant
directement votre fichier template. Il suffit pour cela d'ajouter l'instruction
<code>{{tpl:themesList}}</code> à l'endroit voulu.</dd>
</dl>
<h4>Comprendre les modèles</h4>
<p>Arlequin est remarquable pour sa souplesse de configuration, due à la notion
de <em>modèles</em> qui permettent de créer ses propres interfaces pour le
sélecteur de thème.</p>
<p>Les informations nécessaires au fonctionnement du sélecteur de thème sont
contenues dans des variables de la forme <strong>%n$s</strong><strong>n</strong>
est un entier désignant une variable.</p>
<p>Voici la liste des variables que vous pouvez utiliser :</p>
<dl>
<dt>Dans le code HTML du sélecteur</dt>
<dd><table><thead>
<tr><th>Variable</th><th>Signification</th></tr>
</thead><tbody class="noborder">
<tr><th>%1$s</th><td>L'adresse URL de la page courante</td></tr>
<tr><th>%2$s</th><td>Le code HTML des items</td></tr>
</tbody></table></dd>
<dt>Dans le code HTML des items</dt>
<dd><table><thead>
<tr><th>Variable</th><th>Signification</th></tr>
</thead><tbody class="noborder">
<tr><th>%1$s</th><td>L'adresse URL de la page courante</td></tr>
<tr><th>%2$s</th><td>Un suffixe pour envoyer le paramètre du thème à travers
l'URL, p. ex. "<strong>&amp;theme=</strong>"</td></tr>
<tr><th>%3$s</th><td>L'identifiant du thème <em>à utiliser uniquement dans une URL</em></td></tr>
<tr><th>%4$s</th><td>Le nom du thème</td></tr>
<tr><th>%5$s</th><td>La description du thème</td></tr>
<tr><th>%6$s</th><td>L'identifiant du thème</td></tr>
</tbody></table></dd>
</dl>
<h4>Ajouter ses propres modèles prédéfinis</h4>
<p>Si vous êtes l'administrateur d'une plate-forme de blogs, vous pouvez modifier
les modèles prédéfinis en éditant le fichier <strong>plugins/arlequin/models.php</strong>.</p>
<p><strong>Conseil</strong> : des modèles assez intéressants peuvent être créés
en association avec du JavaScript ou avec des propriétés CSS, en modifiant vos thèmes.</p>
</body>
</html>

91
locales/fr/main.po Normal file
View file

@ -0,0 +1,91 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: Dotclear 2 Arlequin v1.1 module\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2009-10-20 21:01+0100\n"
"Last-Translator: brol <contact@brol.info>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: French\n"
"X-Poedit-KeywordsList: __\n"
"X-Poedit-Basepath: ../..\n"
"X-Poedit-SearchPath-0: .\n"
#: models.php:32
msgid "Bullets list"
msgstr "Liste à puces"
#: models.php:39
msgid "Scrolled list"
msgstr "Liste déroulante"
#: models.php:48
msgid "active theme"
msgstr "thème actif"
#: forms.php:22
msgid "Switcher display format"
msgstr "Format d'affichage du sélecteur"
#: forms.php:24
msgid "Switcher HTML code:"
msgstr "Code HTML du sélecteur :"
#: forms.php:27
msgid "Item HTML code:"
msgstr "Code HTML d'un item :"
#: forms.php:29
msgid "Active item HTML code:"
msgstr "Code HTML d'un item actif :"
#: forms.php:35
msgid "Excluded themes (separated by slashs '/'):"
msgstr "Thèmes exclus (séparés par des slashs \"/\") :"
#: forms.php:38
msgid "Update"
msgstr "Mettre à jour"
#: forms.php:39
msgid "Restore defaults"
msgstr "Réinitialiser les paramètres"
#: _admin.php:18
#: _admin.php:29
msgid "Theme switcher"
msgstr "Sélecteur de thème"
#: _admin.php:32
msgid "Choose a theme"
msgstr "Choisissez un thème"
#: index.php:51
msgid "Settings have been successfully updated."
msgstr "Les paramètres ont été mis à jour avec succès."
#: index.php:71
msgid "Settings have been reinitialized."
msgstr "Les paramètres ont été réinitialisés."
#: index.php:18
msgid "Arlequin - theme switcher configuration"
msgstr "Arlequin - configuration du sélecteur de thème"
#: index.php:95
msgid "Predefined models"
msgstr "Modèles prédéfinis"
#: index.php:96
msgid "Select a model"
msgstr "Sélectionnez un modèle"
#: index.php:97
msgid "User defined"
msgstr "Défini par l'utilisateur"
msgid "Allows visitors choose a theme"
msgstr "Permettre aux visiteurs de choisir un thème"

20
locales/fr/resources.php Normal file
View file

@ -0,0 +1,20 @@
<?php
/***************************************************************\
* This is 'Arlequin', a plugin for Dotclear 2 *
* *
* Copyright (c) 2007,2010 *
* Oleksandr Syenchuk and contributors. *
* *
* This is an open source software, distributed under the GNU *
* General Public License (version 2) terms and conditions. *
* *
* You should have received a copy of the GNU General Public *
* License along with 'Arlequin' (see COPYING.txt); *
* if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\***************************************************************/
if (!isset($__resources['help']['arlequin']))
{
$__resources['help']['arlequin'] = dirname(__FILE__).'/help/arlequin.html';
}

49
models.php Normal file
View file

@ -0,0 +1,49 @@
<?php /* -*- tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
/***************************************************************\
* This is 'Arlequin', a plugin for Dotclear 2 *
* *
* Copyright (c) 2007,2015 *
* Oleksandr Syenchuk and contributors. *
* *
* This is an open source software, distributed under the GNU *
* General Public License (version 2) terms and conditions. *
* *
* You should have received a copy of the GNU General Public *
* License along with 'Arlequin' (see COPYING.txt); *
* if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\***************************************************************/
$mt_models = array();
/** Syntaxe pour ajouter vos propres modèles prédéfinis :
$mt_models[] = array(
'name'=>__('Model name'), // Nom du modèle prédéfini, éventuellement
// traduit dans un fichier de langue
's_html'=>'[HTML code]', // Code HTML du sélecteur de thème
'e_html'=>'[HTML code]', // Code HTML d'un item pouvant être sélectionné
'a_html'=>'[HTML code]' // Code HTML d'un item actif (thème sélectionné)
);
//*/
$mt_models[] = array(
'name'=>__('Bullets list'),
's_html'=>'<ul>%2$s</ul>',
'e_html'=>'<li><a href="%1$s%2$s%3$s">%4$s</a></li>',
'a_html'=>'<li><strong>%4$s</strong></li>'
);
$mt_models[] = array(
'name'=>__('Scrolled list'),
's_html'=>
'<form action="%1$s" method="post">'."\n".
'<p><select name="theme">'."\n".
'%2$s'."\n".
'</select>'."\n".
'<input type="submit" value="'.__('ok').'"/></p>'."\n".
'</form>',
'e_html'=>'<option value="%3$s">%4$s</option>',
'a_html'=>'<option value="%3$s" selected="selected" disabled="disabled">%4$s ('.__('active theme').')</option>'
);