move to widget and blog pref. See changelog.
This commit is contained in:
parent
f64f1f6157
commit
d93e3e616f
17 changed files with 956 additions and 912 deletions
|
@ -1,8 +1,12 @@
|
|||
2021.08.20
|
||||
2021.08.21
|
||||
* update license
|
||||
* fix query
|
||||
* change template titles to h3
|
||||
* move to PSR-2 coding style and short array
|
||||
* move config to widget
|
||||
* move template to widget
|
||||
* use default template for search
|
||||
* use custom template for 404
|
||||
* fix public translation
|
||||
|
||||
2013.10.28
|
||||
* Switch to Dotclear 2.6
|
||||
|
|
|
@ -21,12 +21,12 @@ show related entries to visitor.
|
|||
First install saba, mannualy from a zip package or from
|
||||
Dotaddict repository. (See Dotclear's documentation to know how do this)
|
||||
|
||||
Go to ''plugins manager'', expand saba information then
|
||||
go to ''configure plugin'', fill in form.
|
||||
Go to ''Blog preference'', active plugin saba for search and 404,
|
||||
go to ''Widgets'', add and configure ''Advanced search'' widget.
|
||||
|
||||
If you use a custom theme (not Dotclear's default theme)
|
||||
you must create custom templates that match yours.
|
||||
You can find exemple in saba/default-tempaltes.
|
||||
You can find exemple in plugins/saba/default-tempaltes.
|
||||
|
||||
## MORE
|
||||
|
||||
|
|
56
_admin.php
Normal file
56
_admin.php
Normal file
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of saba, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2021 Jean-Christian Denis and contributors
|
||||
#
|
||||
# Licensed under the GPL version 2.0 license.
|
||||
# A copy of this license is available in LICENSE file or at
|
||||
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
#
|
||||
# -- END LICENSE BLOCK ------------------------------------
|
||||
|
||||
if (!defined('DC_CONTEXT_ADMIN')) {
|
||||
return;
|
||||
}
|
||||
|
||||
# settings namespace
|
||||
$core->blog->settings->addNamespace('saba');
|
||||
|
||||
# behaviors
|
||||
$core->addBehavior(
|
||||
'adminBlogPreferencesForm',
|
||||
['adminSaba', 'adminBlogPreferencesForm']
|
||||
);
|
||||
$core->addBehavior(
|
||||
'adminBeforeBlogSettingsUpdate',
|
||||
['adminSaba', 'adminBeforeBlogSettingsUpdate']
|
||||
);
|
||||
|
||||
# add settings to admin blog pref page
|
||||
class adminSaba
|
||||
{
|
||||
public static function adminBlogPreferencesForm($core, $blog_settings)
|
||||
{
|
||||
echo
|
||||
'<div class="fieldset">' .
|
||||
'<h4 id="saba_params">' . __('Search Across Blog Archive') . '</h4>' .
|
||||
'<p><label class="classic">' .
|
||||
form::checkbox('saba_active', '1', (boolean) $blog_settings->saba->active) .
|
||||
__('Enable advanced search on this blog') . '</label></p>' .
|
||||
'<p><label class="classic">' .
|
||||
form::checkbox('saba_error', '1', (boolean) $blog_settings->saba->error) .
|
||||
__('Enable suggestion for page 404') . '</label></p>' .
|
||||
'<p class="form-note">' .
|
||||
__("This suggests visitors some posts on page 404.") .
|
||||
'</p>' .
|
||||
'</div>';
|
||||
}
|
||||
|
||||
public static function adminBeforeBlogSettingsUpdate($blog_settings)
|
||||
{
|
||||
$blog_settings->saba->put('active', !empty($_POST['saba_active']));
|
||||
$blog_settings->saba->put('error', !empty($_POST['saba_error']));
|
||||
}
|
||||
}
|
141
_config.php
141
_config.php
|
@ -1,141 +0,0 @@
|
|||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of saba, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2021 Jean-Christian Denis and contributors
|
||||
#
|
||||
# Licensed under the GPL version 2.0 license.
|
||||
# A copy of this license is available in LICENSE file or at
|
||||
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
#
|
||||
# -- END LICENSE BLOCK ------------------------------------
|
||||
|
||||
if (!defined('DC_CONTEXT_MODULE')) {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
# -- Get settings --
|
||||
$core->blog->settings->addNamespace('saba');
|
||||
$s = $core->blog->settings->saba;
|
||||
|
||||
$filters_list = array(
|
||||
'options',
|
||||
'orders',
|
||||
'ages',
|
||||
'categories',
|
||||
'authors',
|
||||
'types'
|
||||
);
|
||||
|
||||
$saba_active = (boolean) $s->active;
|
||||
$saba_filters = (string) $s->filters;
|
||||
|
||||
$saba_filters = @unserialize($saba_filters);
|
||||
if (!is_array($saba_filters)) {
|
||||
$saba_filters = array();
|
||||
}
|
||||
|
||||
# -- Set settings --
|
||||
if (!empty($_POST['save'])) {
|
||||
|
||||
try {
|
||||
$saba_active = !empty($_POST['saba_active']);
|
||||
$saba_filters = array();
|
||||
|
||||
foreach($filters_list as $filter) {
|
||||
if (!empty($_POST['saba_filter_'.$filter])) {
|
||||
$saba_filters[] = $filter;
|
||||
}
|
||||
}
|
||||
|
||||
$s->put(
|
||||
'active',
|
||||
$saba_active,
|
||||
'boolean',
|
||||
'Enable extension'
|
||||
);
|
||||
$s->put(
|
||||
'filters',
|
||||
serialize($saba_filters),
|
||||
'string',
|
||||
'Diabled filters'
|
||||
);
|
||||
|
||||
$core->blog->triggerBlog();
|
||||
|
||||
dcPage::addSuccessNotice(
|
||||
__('Configuration has been successfully updated.')
|
||||
);
|
||||
http::redirect(
|
||||
$list->getURL('module=saba&conf=1&redir='.
|
||||
$list->getRedir())
|
||||
);
|
||||
}
|
||||
catch (Exception $e) {
|
||||
$core->error->add($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
# -- Display form --
|
||||
echo '
|
||||
|
||||
<div class="fieldset">
|
||||
<h4>'.__('Activate').'</h4>
|
||||
|
||||
<p><label class="classic" for="saba_active">'.
|
||||
form::checkbox(
|
||||
'saba_active',
|
||||
1,
|
||||
$saba_active
|
||||
).__('Enable extension on this blog').'</label></p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="fieldset">
|
||||
<h4>'.__('Advanced search').'</h4>
|
||||
|
||||
<p><label class="classic" for="saba_filter_options">'.
|
||||
form::checkbox(
|
||||
'saba_filter_options',
|
||||
1,
|
||||
in_array('options', $saba_filters)
|
||||
).__('Disable filter on post options').'</label></p>
|
||||
|
||||
<p><label class="classic" for="saba_filter_orders">'.
|
||||
form::checkbox(
|
||||
'saba_filter_orders',
|
||||
1,
|
||||
in_array('orders', $saba_filters)
|
||||
).__('Disable filter on order').'</label></p>
|
||||
|
||||
<p><label class="classic" for="saba_filter_ages">'.
|
||||
form::checkbox(
|
||||
'saba_filter_ages',
|
||||
1,
|
||||
in_array('ages', $saba_filters)
|
||||
).__('Disable filter on age').'</label></p>
|
||||
|
||||
<p><label class="classic" for="saba_filter_categories">'.
|
||||
form::checkbox(
|
||||
'saba_filter_categories',
|
||||
1,
|
||||
in_array('categories', $saba_filters)
|
||||
).__('Disable filter on categories').'</label></p>
|
||||
|
||||
<p><label class="classic" for="saba_filter_authors">'.
|
||||
form::checkbox(
|
||||
'saba_filter_authors',
|
||||
1,
|
||||
in_array('authors', $saba_filters)
|
||||
).__('Disable filter on authors').'</label></p>
|
||||
|
||||
<p><label class="classic" for="saba_filter_types">'.
|
||||
form::checkbox(
|
||||
'saba_filter_types',
|
||||
1,
|
||||
in_array('types', $saba_filters)
|
||||
).__('Disable filter on post types').'</label></p>
|
||||
|
||||
</div>';
|
|
@ -19,11 +19,11 @@ $this->registerModule(
|
|||
'saba',
|
||||
'Search across blog archive',
|
||||
'Jean-Christian Denis and Contributors',
|
||||
'2021.08.20.5',
|
||||
'2021.08.21',
|
||||
[
|
||||
'permissions' => 'admin',
|
||||
'type' => 'plugin',
|
||||
'dc_min' => '2.18',
|
||||
'dc_min' => '2.19',
|
||||
'support' => 'https://github.com/JcDenis/saba',
|
||||
'details' => 'https://plugins.dotaddict.org/dc2/details/saba'
|
||||
]
|
||||
|
|
591
_public.php
591
_public.php
|
@ -15,77 +15,25 @@ if (!defined('DC_RC_PATH')) {
|
|||
return null;
|
||||
}
|
||||
|
||||
# Admin behaviors
|
||||
# setting
|
||||
$core->blog->settings->addNamespace('saba');
|
||||
|
||||
if (!$core->blog->settings->saba->active) {
|
||||
return null;
|
||||
}
|
||||
|
||||
# Register saba handler
|
||||
$core->url->register(
|
||||
'search',
|
||||
'search',
|
||||
'^search(/.+)?$',
|
||||
['urlSaba', 'saba']
|
||||
);
|
||||
# translation
|
||||
l10n::set(dirname(__FILE__) . '/locales/' . $_lang . '/public');
|
||||
|
||||
# Add saba templates path
|
||||
# widget
|
||||
require_once dirname(__FILE__) . '/_widgets.php';
|
||||
|
||||
# template path
|
||||
$core->tpl->setPath(
|
||||
$core->tpl->getPath(),
|
||||
dirname(__FILE__) . '/default-templates/'
|
||||
);
|
||||
|
||||
# templates
|
||||
$core->tpl->addBlock(
|
||||
'SabaIf',
|
||||
['tplSaba', 'SabaIf']
|
||||
);
|
||||
$core->tpl->addBlock(
|
||||
'SabaEntries',
|
||||
['tplSaba', 'SabaEntries']
|
||||
);
|
||||
$core->tpl->addBlock(
|
||||
'SabaFormIf',
|
||||
['tplSaba', 'SabaFormIf']
|
||||
);
|
||||
$core->tpl->addValue(
|
||||
'SabaFormSearch',
|
||||
['tplSaba', 'SabaFormSearch']
|
||||
);
|
||||
$core->tpl->addValue(
|
||||
'SabaFormOptions',
|
||||
['tplSaba', 'SabaFormOptions']
|
||||
);
|
||||
$core->tpl->addValue(
|
||||
'SabaFormCategories',
|
||||
['tplSaba', 'SabaFormCategories']
|
||||
);
|
||||
$core->tpl->addValue(
|
||||
'SabaFormTypes',
|
||||
['tplSaba', 'SabaFormTypes']
|
||||
);
|
||||
$core->tpl->addValue(
|
||||
'SabaFormAges',
|
||||
['tplSaba', 'SabaFormAges']
|
||||
);
|
||||
$core->tpl->addValue(
|
||||
'SabaFormOrders',
|
||||
['tplSaba', 'SabaFormOrders']
|
||||
);
|
||||
$core->tpl->addValue(
|
||||
'SabaFormAuthors',
|
||||
['tplSaba', 'SabaFormAuthors']
|
||||
);
|
||||
$core->tpl->addValue(
|
||||
'SabaPaginationURL',
|
||||
['tplSaba', 'SabaPaginationURL']
|
||||
);
|
||||
$core->tpl->addValue(
|
||||
'SabaURL',
|
||||
['tplSaba', 'SabaURL']
|
||||
);
|
||||
|
||||
# behavior
|
||||
$core->addBehavior(
|
||||
'templateCustomSortByAlias',
|
||||
|
@ -96,12 +44,14 @@ $core->addBehavior(
|
|||
['pubSaba', 'urlHandlerBeforeGetData']
|
||||
);
|
||||
$core->addBehavior(
|
||||
'corePostSearch',
|
||||
['pubSaba', 'corePostSearch']
|
||||
'coreBlogBeforeGetPosts',
|
||||
['pubSaba', 'coreBlogBeforeGetPosts']
|
||||
);
|
||||
|
||||
# url
|
||||
$core->url->registerError(['urlSaba', 'error']);
|
||||
if ($core->blog->settings->saba->error) {
|
||||
$core->url->registerError(['urlSaba', 'error']);
|
||||
}
|
||||
|
||||
class pubSaba
|
||||
{
|
||||
|
@ -123,128 +73,16 @@ class pubSaba
|
|||
{
|
||||
global $core;
|
||||
|
||||
$options = [
|
||||
'q'=> '',
|
||||
'q_opt' => [],
|
||||
'q_cat' => [],
|
||||
'q_age' => '0,0',
|
||||
'q_user'=> [],
|
||||
'q_order'=> 'date',
|
||||
'q_rev' => '0',
|
||||
'q_type'=> []
|
||||
];
|
||||
$options = tplSaba::getSabaDefaultPostsOptions();
|
||||
|
||||
if (!empty($_GET['q']) && 1 < strlen($_GET['q'])) {
|
||||
# move to saba
|
||||
$_ctx->current_tpl = null;
|
||||
$_ctx->current_tpl = 'saba_search.html';
|
||||
|
||||
# retreive _GET
|
||||
$qs = $_SERVER['QUERY_STRING'];
|
||||
$qs = preg_replace('#(^|/)page/([0-9]+)#', '', $qs);
|
||||
parse_str($qs, $get);
|
||||
|
||||
$params = [
|
||||
'sql'=>'',
|
||||
'post_type' => []
|
||||
];
|
||||
|
||||
# search string
|
||||
$params['search'] = rawurldecode($_GET['q']);
|
||||
$params = new ArrayObject(['search' => rawurldecode($_GET['q'])]);
|
||||
|
||||
$options = self::getPostsParams($params);
|
||||
$options['q'] = rawurldecode($_GET['q']);
|
||||
|
||||
# options
|
||||
if (!empty($get['q_opt'])) {
|
||||
|
||||
if (in_array('selected', $get['q_opt'])) {
|
||||
$options['q_opt'][] = 'selected';
|
||||
$params['post_selected'] = 1;
|
||||
}
|
||||
if (in_array('comment', $get['q_opt'])) {
|
||||
$options['q_opt'][] = 'comment';
|
||||
$params['sql'] = "AND nb_comment > 0 ";
|
||||
}
|
||||
if (in_array('trackback', $get['q_opt'])) {
|
||||
$options['q_opt'][] = 'trackback';
|
||||
$params['sql'] = "AND nb_trackback > 0";
|
||||
}
|
||||
}
|
||||
|
||||
# categories
|
||||
if (!empty($get['q_cat'])) {
|
||||
$cats = array();
|
||||
foreach($get['q_cat'] as $v) {
|
||||
$v = abs((integer) $v);
|
||||
if (!$v) {
|
||||
continue;
|
||||
}
|
||||
$cats[] = "C.cat_id = '" . $v . "'";
|
||||
$options['q_cat'][] = $v;
|
||||
}
|
||||
if (!empty($cats)) {
|
||||
$params['sql'] .= 'AND (' . implode(' OR ', $cats) . ') ';
|
||||
}
|
||||
}
|
||||
|
||||
# post types
|
||||
if (!empty($get['q_type'])) {
|
||||
$types = $core->getPostTypes();
|
||||
foreach($get['q_type'] as $v) {
|
||||
if (!$types[$v]) {
|
||||
continue;
|
||||
}
|
||||
$options['q_type'][] = $v;
|
||||
$params['post_type'][] = $v;
|
||||
}
|
||||
} else {
|
||||
$params['post_type'][] = 'post';
|
||||
}
|
||||
|
||||
# age
|
||||
$ages = tplSaba::getSabaFormAges();
|
||||
if (!empty($get['q_age']) && in_array($get['q_age'], $ages)) {
|
||||
$age = explode(',', $get['q_age']);
|
||||
$ts = time();
|
||||
$options['q_age'] = $get['q_age'];
|
||||
|
||||
if ($age[0]) {
|
||||
$params['sql'] .= "AND P.post_dt < '" .
|
||||
dt::str('%Y-%m-%d %H:%m:%S', $ts - $age[0]) . "' ";
|
||||
}
|
||||
if ($age[1]) {
|
||||
$params['sql'] .= "AND P.post_dt > '" .
|
||||
dt::str('%Y-%m-%d %H:%m:%S', $ts - $age[1]) . "' ";
|
||||
}
|
||||
}
|
||||
|
||||
# user
|
||||
if (!empty($get['q_user'])) {
|
||||
$users = array();
|
||||
foreach($get['q_user'] as $v) {
|
||||
$users[] = "U.user_id = '" . $core->con->escape($v) . "'";
|
||||
$options['q_user'][] = $v;
|
||||
}
|
||||
if (!empty($users)) {
|
||||
$params['sql'] .= 'AND (' . implode(' OR ', $users) . ') ';
|
||||
}
|
||||
}
|
||||
|
||||
#order
|
||||
$sort = 'desc';
|
||||
if (!empty($get['q_rev'])) {
|
||||
$options['q_rev'] = '1';
|
||||
$sort = 'asc';
|
||||
}
|
||||
$orders = tplSaba::getSabaFormOrders();
|
||||
if (!empty($get['q_order']) && in_array($get['q_order'], $orders)) {
|
||||
|
||||
$options['q_order'] = $get['q_order'];
|
||||
$params['order'] = $core->tpl->getSortByStr(
|
||||
['sortby' => $get['q_order'], 'order' => $sort],
|
||||
'post'
|
||||
); //?! post_type
|
||||
}
|
||||
|
||||
# count
|
||||
$GLOBALS['_search'] = rawurldecode($_GET['q']);
|
||||
if ($GLOBALS['_search']) {
|
||||
|
@ -264,13 +102,132 @@ class pubSaba
|
|||
$_ctx->saba_options = $options;
|
||||
}
|
||||
|
||||
# Ajouter la condition "ou" à la recherche
|
||||
public static function corePostSearch($core, $p)
|
||||
public static function getPostsParams($params)
|
||||
{
|
||||
$sentences = explode(',', $p[2]['search']);
|
||||
global $core;
|
||||
|
||||
if (!isset($params['sql'])) {
|
||||
$params['sql'] = '';
|
||||
}
|
||||
|
||||
$params['post_type'] = [];
|
||||
|
||||
# retreive _GET
|
||||
$qs = $_SERVER['QUERY_STRING'];
|
||||
$qs = preg_replace('#(^|/)page/([0-9]+)#', '', $qs);
|
||||
parse_str($qs, $get);
|
||||
|
||||
# search string
|
||||
$options = tplSaba::getSabaDefaultPostsOptions();
|
||||
$options['q'] = $params['search'];
|
||||
|
||||
# options
|
||||
if (!empty($get['q_opt'])) {
|
||||
|
||||
if (in_array('selected', $get['q_opt'])) {
|
||||
$options['q_opt'][] = 'selected';
|
||||
$params['post_selected'] = 1;
|
||||
}
|
||||
if (in_array('comment', $get['q_opt'])) {
|
||||
$options['q_opt'][] = 'comment';
|
||||
$params['sql'] = "AND nb_comment > 0 ";
|
||||
}
|
||||
if (in_array('trackback', $get['q_opt'])) {
|
||||
$options['q_opt'][] = 'trackback';
|
||||
$params['sql'] = "AND nb_trackback > 0";
|
||||
}
|
||||
}
|
||||
|
||||
# categories
|
||||
if (!empty($get['q_cat'])) {
|
||||
$cats = array();
|
||||
foreach($get['q_cat'] as $v) {
|
||||
$v = abs((integer) $v);
|
||||
if (!$v) {
|
||||
continue;
|
||||
}
|
||||
$cats[] = "C.cat_id = '" . $v . "'";
|
||||
$options['q_cat'][] = $v;
|
||||
}
|
||||
if (!empty($cats)) {
|
||||
$params['sql'] .= 'AND (' . implode(' OR ', $cats) . ') ';
|
||||
}
|
||||
}
|
||||
|
||||
# post types
|
||||
if (!empty($get['q_type'])) {
|
||||
$types = $core->getPostTypes();
|
||||
foreach($get['q_type'] as $v) {
|
||||
if (!$types[$v]) {
|
||||
continue;
|
||||
}
|
||||
$options['q_type'][] = $v;
|
||||
$params['post_type'][] = $v;
|
||||
}
|
||||
} else {
|
||||
$params['post_type'][] = 'post';
|
||||
}
|
||||
|
||||
# age
|
||||
$ages = tplSaba::getSabaFormAges();
|
||||
if (!empty($get['q_age']) && in_array($get['q_age'], $ages)) {
|
||||
$age = explode(',', $get['q_age']);
|
||||
$ts = time();
|
||||
$options['q_age'] = $get['q_age'];
|
||||
|
||||
if ($age[0]) {
|
||||
$params['sql'] .= "AND P.post_dt < '" .
|
||||
dt::str('%Y-%m-%d %H:%m:%S', $ts - $age[0]) . "' ";
|
||||
}
|
||||
if ($age[1]) {
|
||||
$params['sql'] .= "AND P.post_dt > '" .
|
||||
dt::str('%Y-%m-%d %H:%m:%S', $ts - $age[1]) . "' ";
|
||||
}
|
||||
}
|
||||
|
||||
# user
|
||||
if (!empty($get['q_user'])) {
|
||||
$users = array();
|
||||
foreach($get['q_user'] as $v) {
|
||||
$users[] = "U.user_id = '" . $core->con->escape($v) . "'";
|
||||
$options['q_user'][] = $v;
|
||||
}
|
||||
if (!empty($users)) {
|
||||
$params['sql'] .= 'AND (' . implode(' OR ', $users) . ') ';
|
||||
}
|
||||
}
|
||||
|
||||
#order
|
||||
$sort = 'desc';
|
||||
if (!empty($get['q_rev'])) {
|
||||
$options['q_rev'] = '1';
|
||||
$sort = 'asc';
|
||||
}
|
||||
$orders = tplSaba::getSabaFormOrders();
|
||||
if (!empty($get['q_order']) && in_array($get['q_order'], $orders)) {
|
||||
|
||||
$options['q_order'] = $get['q_order'];
|
||||
$params['order'] = $core->tpl->getSortByStr(
|
||||
['sortby' => $get['q_order'], 'order' => $sort],
|
||||
'post'
|
||||
); //?! post_type
|
||||
}
|
||||
return $options;
|
||||
}
|
||||
|
||||
# Ajouter la condition "ou" à la recherche
|
||||
public static function coreBlogBeforeGetPosts($p)
|
||||
{
|
||||
global $core;
|
||||
|
||||
if (empty($p['search'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
self::getPostsParams($p);
|
||||
|
||||
$OR = [];
|
||||
foreach($sentences as $sentence) {
|
||||
foreach(explode(',', $p['search']) as $sentence) {
|
||||
$AND = [];
|
||||
$words = text::splitWords($sentence);
|
||||
foreach($words as $word) {
|
||||
|
@ -281,8 +238,8 @@ class pubSaba
|
|||
}
|
||||
}
|
||||
if (!empty($OR)) {
|
||||
$p[0] = '';
|
||||
$p[2]['sql'] = (isset($p[2]['sql']) ? $p[2]['sql'] : '') . "AND (" . implode (' OR ', $OR) . ") ";
|
||||
$p['search'] = '';
|
||||
$p['sql'] .= "AND (" . implode (' OR ', $OR) . ") ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -307,232 +264,26 @@ class urlSaba extends dcUrlHandlers
|
|||
$GLOBALS['_from_error'] = true;
|
||||
|
||||
# Serve saba
|
||||
self::serveDocument('saba_search.html');
|
||||
self::serveDocument('saba_404_default.html');
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static function saba($args)
|
||||
{
|
||||
$_ctx =& $GLOBALS['_ctx'];
|
||||
$core =& $GLOBALS['core'];
|
||||
|
||||
self::serveDocument('saba_search.html');
|
||||
}
|
||||
}
|
||||
|
||||
class tplSaba
|
||||
{
|
||||
public static function SabaEntries($a, $c)
|
||||
{
|
||||
return
|
||||
'<?php if ($_ctx->exists("posts")) : while ($_ctx->posts->fetch()) : ?>'.$c.'<?php endwhile; endif; ?>';
|
||||
}
|
||||
|
||||
public static function SabaFormSearch($a)
|
||||
{
|
||||
return '<?php echo html::escapeHTML($_ctx->saba_options["q"]); ?>';
|
||||
}
|
||||
|
||||
public static function SabaIf($a, $c)
|
||||
{
|
||||
$if = [];
|
||||
|
||||
$operator = isset($a['operator']) ? $GLOBALS['core']->tpl->getOperator($a['operator']) : '&&';
|
||||
|
||||
if (isset($a['has_search'])) {
|
||||
$sign = (boolean) $a['has_search'] ? '' : '!';
|
||||
$if[] = $sign . 'isset($_search_count)';
|
||||
}
|
||||
|
||||
if (isset($a['from_error'])) {
|
||||
$sign = (boolean) $a['from_error'] ? '' : '!';
|
||||
$if[] = $sign . 'isset($_from_error)';
|
||||
}
|
||||
|
||||
return !empty($if) ?
|
||||
'<?php if(' . implode(' ' . $operator . ' ', $if) . ') : ?>' . $c . '<?php endif; ?>'
|
||||
: $c;
|
||||
}
|
||||
|
||||
public static function SabaURL($a)
|
||||
{
|
||||
$f = $GLOBALS['core']->tpl->getFilters($a);
|
||||
|
||||
return '<?php echo ' . sprintf($f, '$core->blog->url.$core->url->getBase("search")') . '; ?>';
|
||||
}
|
||||
|
||||
public static function SabaFormIf($a, $c)
|
||||
{
|
||||
$if = [];
|
||||
|
||||
$operator = isset($a['operator']) ? $GLOBALS['core']->tpl->getOperator($a['operator']) : '&&';
|
||||
|
||||
$fl = self::getSabaFormFilters();
|
||||
foreach($fl as $filter) {
|
||||
if (isset($a['filter_' . $filter])) {
|
||||
$sign = (boolean) $a['filter_' . $filter] ? '' : '!';
|
||||
$if[] = $sign . 'tplSaba::isSabaFormFilter(\'' . $filter . '\')';
|
||||
}
|
||||
}
|
||||
|
||||
return !empty($if) ?
|
||||
'<?php if(' . implode(' ' . $operator . ' ', $if) . ') : ?>' . $c . '<?php endif; ?>'
|
||||
: $c;
|
||||
}
|
||||
|
||||
public static function SabaFormOptions($a)
|
||||
{
|
||||
$dis = !empty($a['remove']) ? explode(',', $a['remove']) : [];
|
||||
|
||||
$res = '';
|
||||
$li = '<li><label><input name="q_opt[]" type="checkbox" value="%s" %s/> %s</label></li>';
|
||||
|
||||
$rs = self::getSabaFormOptions();
|
||||
foreach($rs as $k => $v) {
|
||||
if (in_array($v, $dis)) {
|
||||
continue;
|
||||
}
|
||||
$chk = '<?php echo in_array("' . $v . '",$_ctx->saba_options["q_opt"]) ? \'checked="checked" \' : ""; ?>';
|
||||
$res .= sprintf($li, $v, $chk, html::escapeHTML($k));
|
||||
}
|
||||
|
||||
if (!empty($res)) {
|
||||
return '<div class="saba_opt_otp"><h3>' . __('Filter options') . '</h3><ul>' . $res . '</ul></div>';
|
||||
}
|
||||
}
|
||||
|
||||
public static function SabaFormOrders($a)
|
||||
{
|
||||
$dis = !empty($a['remove']) ? explode(',',$a['remove']) : [];
|
||||
|
||||
$res = '';
|
||||
$li = '<li><label><input name="q_order" type="radio" value="%s" %s/> %s</label></li>';
|
||||
|
||||
$rs = self::getSabaFormOrders($dis);
|
||||
foreach($rs as $k => $v) {
|
||||
if (in_array($v, $dis)) {
|
||||
continue;
|
||||
}
|
||||
$chk = '<?php echo "' . $v . '" == $_ctx->saba_options["q_order"] ? \'checked="checked" \' : ""; ?>';
|
||||
$res .= sprintf($li, $v, $chk, html::escapeHTML($k));
|
||||
}
|
||||
|
||||
if (!empty($res)) {
|
||||
$chk = '<?php echo !empty($_ctx->saba_options["q_rev"]) ? \'checked="checked" \' : ""; ?>';
|
||||
$res .= '<li><label><input name="q_rev" type="checkbox" value="1" ' . $chk . '/> ' . __('Reverse order') . '</label></li>';
|
||||
|
||||
return '<div class="saba_opt_order"><h3>' . __('Filter order') . '</h3><ul>' . $res . '</ul></div>';
|
||||
}
|
||||
}
|
||||
|
||||
public static function SabaFormCategories($a)
|
||||
{
|
||||
global $core;
|
||||
|
||||
$dis = !empty($a['remove']) ? explode(',', $a['remove']) : [];
|
||||
|
||||
$res = '';
|
||||
$li = '<li><label><input name="q_cat[]" type="checkbox" value="%s" %s/> %s</label></li>';
|
||||
|
||||
$rs = $core->blog->getCategories();
|
||||
while ($rs->fetch()) {
|
||||
if (in_array($rs->cat_id, $dis) || in_array($rs->cat_url, $dis)) {
|
||||
continue;
|
||||
}
|
||||
$chk = '<?php echo in_array("' . $rs->cat_id . '",$_ctx->saba_options["q_cat"]) ? \'checked="checked" \' : ""; ?>';
|
||||
$res .= sprintf($li, $rs->cat_id, $chk, html::escapeHTML($rs->cat_title));
|
||||
}
|
||||
|
||||
if (!empty($res)) {
|
||||
return '<div class="saba_opt_cat"><h3>' . __('Filter by category') . '</h3><ul>' . $res . '</ul></div>';
|
||||
}
|
||||
}
|
||||
|
||||
public static function SabaFormTypes($a)
|
||||
{
|
||||
global $core;
|
||||
|
||||
$dis = !empty($a['remove']) ? explode(',',$a['remove']) : [];
|
||||
|
||||
$res = '';
|
||||
$li = '<li><label><input name="q_type[]" type="checkbox" value="%s" %s/>%s</label></li>';
|
||||
|
||||
$rs = self::getSabaFormTypes();
|
||||
foreach($rs as $k => $v) {
|
||||
if (in_array($v, $dis)) {
|
||||
continue;
|
||||
}
|
||||
$chk = '<?php echo in_array("' . $v . '",$_ctx->saba_options["q_type"]) ? \'checked="checked" \' : ""; ?>';
|
||||
$res .= sprintf($li, $v, $chk, html::escapeHTML($k));
|
||||
}
|
||||
|
||||
if (!empty($res)) {
|
||||
return '<div class="saba_opt_type"><h3>' . __('Filter by type') . '</h3><ul>' . $res . '</ul></div>';
|
||||
}
|
||||
}
|
||||
|
||||
public static function SabaFormAges($a)
|
||||
{
|
||||
$res = '';
|
||||
$li = '<li><label><input name="q_age" type="radio" value="%s" %s/> %s</label></li>';
|
||||
|
||||
$rs = self::getSabaFormAges();
|
||||
foreach($rs as $k => $v) {
|
||||
$chk = '<?php echo "' . $v . '" == $_ctx->saba_options["q_age"] ? \'checked="checked" \' : ""; ?>';
|
||||
$res .= sprintf($li, $v, $chk, html::escapeHTML($k));
|
||||
}
|
||||
|
||||
if (!empty($res)) {
|
||||
return '<div class="saba_opt_age"><h3>' . __('Filter by age') . '</h3><ul>' . $res . '</ul></div>';
|
||||
}
|
||||
}
|
||||
|
||||
public static function SabaFormAuthors($a)
|
||||
{
|
||||
global $core;
|
||||
|
||||
$dis = !empty($a['remove']) ? explode(',',$a['remove']) : [];
|
||||
|
||||
$res = '';
|
||||
$li = '<li><label><input name="q_user[]" type="checkbox" value="%s" %s/> %s</label></li>';
|
||||
|
||||
$rs = $core->blog->getPostsUsers();
|
||||
while ($rs->fetch()) {
|
||||
if (in_array($rs->user_id, $dis)) {
|
||||
continue;
|
||||
}
|
||||
$chk = '<?php echo in_array("' . $rs->user_id . '",$_ctx->saba_options["q_user"]) ? \'checked="checked" \' : ""; ?>';
|
||||
$res .= sprintf($li, $rs->user_id, $chk, html::escapeHTML(dcUtils::getUserCN($rs->user_id, $rs->user_name, $rs->user_firstname, $rs->user_displayname)));
|
||||
}
|
||||
|
||||
if (!empty($res)) {
|
||||
return '<div class="saba_opt_user"><h3>' . __('Filter by author') . '</h3><ul>' . $res . '</ul></div>';
|
||||
}
|
||||
}
|
||||
|
||||
public static function SabaPaginationURL($attr)
|
||||
{
|
||||
$offset = 0;
|
||||
if (isset($attr['offset'])) {
|
||||
$offset = (integer) $attr['offset'];
|
||||
}
|
||||
|
||||
$f = $GLOBALS['core']->tpl->getFilters($attr);
|
||||
|
||||
return '<?php echo '.sprintf($f, "ctxSaba::PaginationURL(" . $offset . ")") . '; ?>';
|
||||
}
|
||||
|
||||
public static function getSabaFormFilters()
|
||||
public static function getSabaDefaultPostsOptions()
|
||||
{
|
||||
return [
|
||||
'options',
|
||||
'orders',
|
||||
'ages',
|
||||
'categories',
|
||||
'authors',
|
||||
'types'
|
||||
'q'=> '',
|
||||
'q_opt' => [],
|
||||
'q_cat' => [],
|
||||
'q_age' => '0,0',
|
||||
'q_user'=> [],
|
||||
'q_order'=> 'date',
|
||||
'q_rev' => '0',
|
||||
'q_type'=> []
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -591,44 +342,4 @@ class tplSaba
|
|||
|
||||
return $rs;
|
||||
}
|
||||
|
||||
public static function isSabaFormFilter($f)
|
||||
{
|
||||
$filters = (string) $GLOBALS['core']->blog->settings->saba->filters;
|
||||
$filters = @unserialize($filters);
|
||||
if (!is_array($filters)) {
|
||||
$filters = [];
|
||||
}
|
||||
|
||||
return !in_array($f, $filters);
|
||||
}
|
||||
}
|
||||
|
||||
class ctxSaba extends context
|
||||
{
|
||||
public static function PaginationURL($offset = 0)
|
||||
{
|
||||
$args = $_SERVER['URL_REQUEST_PART'];
|
||||
|
||||
$n = self::PaginationPosition($offset);
|
||||
|
||||
$args = preg_replace('#(^|/)page/([0-9]+)$#', '', $args);
|
||||
|
||||
$url = $GLOBALS['core']->blog->url . $args;
|
||||
|
||||
if ($n > 1) {
|
||||
$url = preg_replace('#/$#', '', $url);
|
||||
$url .= '/page/' . $n;
|
||||
}
|
||||
|
||||
$qs = preg_replace('#(^|/)page/([0-9]+)(&?)#', '', $_SERVER['QUERY_STRING']);
|
||||
|
||||
# If search param
|
||||
if (!empty($_GET['q'])) {
|
||||
$s = strpos($url, '?') !== false ? '&' : '?';
|
||||
$url .= $s . $qs;
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
}
|
233
_widgets.php
Normal file
233
_widgets.php
Normal file
|
@ -0,0 +1,233 @@
|
|||
<?php
|
||||
# -- BEGIN LICENSE BLOCK ----------------------------------
|
||||
#
|
||||
# This file is part of saba, a plugin for Dotclear 2.
|
||||
#
|
||||
# Copyright (c) 2009-2021 Jean-Christian Denis and contributors
|
||||
#
|
||||
# Licensed under the GPL version 2.0 license.
|
||||
# A copy of this license is available in LICENSE file or at
|
||||
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
#
|
||||
# -- END LICENSE BLOCK ------------------------------------
|
||||
|
||||
if (!defined('DC_RC_PATH')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$core->addBehavior('initWidgets', ['sabaWidget', 'setWidget']);
|
||||
|
||||
class sabaWidget
|
||||
{
|
||||
public static function setWidget($w)
|
||||
{
|
||||
global $core;
|
||||
|
||||
$w
|
||||
->create(
|
||||
'saba',
|
||||
__('Advanced search'),
|
||||
array('sabaWidget', 'getWidget'),
|
||||
null,
|
||||
__('Add more search options on public side')
|
||||
)
|
||||
->addTitle(__('Search'))
|
||||
->setting(
|
||||
'saba_filter_types',
|
||||
__('Disable filter on post types'),
|
||||
0,
|
||||
'check'
|
||||
)
|
||||
->setting('saba_remove_types', __('Hidden types:'), '')
|
||||
->setting(
|
||||
'saba_filter_options',
|
||||
__('Disable filter on post options'),
|
||||
0,
|
||||
'check'
|
||||
)
|
||||
->setting('saba_remove_options', __('Hidden options:'), '')
|
||||
->setting(
|
||||
'saba_filter_categories',
|
||||
__('Disable filter on categories'),
|
||||
0,
|
||||
'check'
|
||||
)
|
||||
->setting('saba_remove_categories', __('Hidden categories:'), '')
|
||||
->setting(
|
||||
'saba_filter_authors',
|
||||
__('Disable filter on authors'),
|
||||
0,
|
||||
'check'
|
||||
)
|
||||
->setting('saba_remove_authors', __('Hidden authors:'), '')
|
||||
->setting(
|
||||
'saba_filter_orders',
|
||||
__('Disable filter on order'),
|
||||
0,
|
||||
'check'
|
||||
)
|
||||
->setting(
|
||||
'saba_filter_ages',
|
||||
__('Disable filter on age'),
|
||||
0,
|
||||
'check'
|
||||
)
|
||||
->addContentOnly()
|
||||
->addClass()
|
||||
->addOffline();
|
||||
}
|
||||
|
||||
public static function getWidget($w)
|
||||
{
|
||||
global $core, $_ctx;
|
||||
|
||||
$core->blog->settings->addNamespace('saba');
|
||||
|
||||
if (!$core->blog->settings->saba->active) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$core->blog->settings->saba->error && $core->url->type == '404') {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($w->offline) {
|
||||
return;
|
||||
}
|
||||
|
||||
# title and search
|
||||
$res =
|
||||
($w->title ? $w->renderTitle('<label for="q">' . html::escapeHTML($w->title) . '</label>') : '') .
|
||||
'<form action="' . $core->blog->url . '" method="get" role="search">' .
|
||||
'<p><input type="text" size="10" maxlength="255" id="q" name="q" value="' .
|
||||
html::escapeHTML($_ctx->saba_options["q"]) . '" ' .
|
||||
($w->placeholder ? 'placeholder="' . html::escapeHTML($w->placeholder) . '"' : '') .
|
||||
' aria-label="' . __('Search') . '"/> ' .
|
||||
'<input type="submit" class="submit" value="ok" title="' . __('Search') . '" /></p>' ;
|
||||
|
||||
# advenced search only on search page
|
||||
if ($core->url->type == 'search') {
|
||||
|
||||
# order
|
||||
if (!$w->saba_filter_orders) {
|
||||
$ct = '';
|
||||
|
||||
foreach(tplSaba::getSabaFormOrders() as $k => $v) {
|
||||
$ct .=
|
||||
'<li><label><input name="q_order" type="radio" value="' .
|
||||
$v . '" ' .
|
||||
($v == $_ctx->saba_options['q_order'] ? 'checked="checked" ' : '') .
|
||||
'/> ' . html::escapeHTML($k) . '</label></li>';
|
||||
}
|
||||
if (!empty($ct)) {
|
||||
$ct .= '<li><label><input name="q_rev" type="checkbox" value="1" ' .
|
||||
(!empty($_ctx->saba_options['q_rev']) ? 'checked="checked" ' : '') .
|
||||
'/> ' . __('Reverse order') . '</label></li>';
|
||||
$res .= $w->renderTitle(__('Filter order')) . sprintf('<ul>%s</ul>', $ct);
|
||||
}
|
||||
}
|
||||
|
||||
# options
|
||||
if (!$w->saba_filter_options) {
|
||||
$ct = '';
|
||||
$rm = explode(',', $w->saba_remove_options);
|
||||
|
||||
foreach(tplSaba::getSabaFormOptions() as $k => $v) {
|
||||
if (in_array($v, $rm)) {
|
||||
continue;
|
||||
}
|
||||
$ct .=
|
||||
'<li><label><input name="q_opt[]" type="checkbox" value="' .
|
||||
$v . '" ' .
|
||||
(in_array($v, $_ctx->saba_options['q_opt']) ? 'checked="checked" ' : '') .
|
||||
'/> ' . html::escapeHTML($k) . '</label></li>';
|
||||
}
|
||||
if (!empty($ct)) {
|
||||
$res .= $w->renderTitle(__('Filter options')) . sprintf('<ul>%s</ul>', $ct);
|
||||
}
|
||||
}
|
||||
|
||||
# ages
|
||||
if (!$w->saba_filter_ages) {
|
||||
$ct = '';
|
||||
|
||||
foreach(tplSaba::getSabaFormAges() as $k => $v) {
|
||||
$ct .=
|
||||
'<li><label><input name="q_age" type="radio" value="' .
|
||||
$v . '" ' .
|
||||
($v == $_ctx->saba_options['q_age'] ? 'checked="checked" ' : '') .
|
||||
'/> ' . html::escapeHTML($k) . '</label></li>';
|
||||
}
|
||||
if (!empty($ct)) {
|
||||
$res .= $w->renderTitle(__('Filter by age')) . sprintf('<ul>%s</ul>', $ct);
|
||||
}
|
||||
}
|
||||
|
||||
# types
|
||||
if (!$w->saba_filter_types) {
|
||||
$ct = '';
|
||||
$rm = explode(',', $w->saba_remove_types);
|
||||
|
||||
foreach(tplSaba::getSabaFormTypes() as $k => $v) {
|
||||
if (in_array($v, $rm)) {
|
||||
continue;
|
||||
}
|
||||
$ct .=
|
||||
'<li><label><input name="q_type[]" type="checkbox" value="' .
|
||||
$v . '" ' .
|
||||
(in_array($v, $_ctx->saba_options['q_type']) ? 'checked="checked" ' : '') .
|
||||
'/> ' . html::escapeHTML($k) . '</label></li>';
|
||||
}
|
||||
if (!empty($ct)) {
|
||||
$res .= $w->renderTitle(__('Filter by type')) . sprintf('<ul>%s</ul>', $ct);
|
||||
}
|
||||
}
|
||||
|
||||
# categories
|
||||
if (!$w->saba_filter_categories) {
|
||||
$ct = '';
|
||||
$rm = explode(',', $w->saba_remove_categories);
|
||||
$rs = $core->blog->getCategories();
|
||||
|
||||
while ($rs->fetch()) {
|
||||
if (in_array($rs->cat_id, $rm) || in_array($rs->cat_url, $rm)) {
|
||||
continue;
|
||||
}
|
||||
$ct .=
|
||||
'<li><label><input name="q_cat[]" type="checkbox" value="' .
|
||||
$rs->cat_id . '" ' .
|
||||
(in_array($rs->cat_id, $_ctx->saba_options['q_cat']) ? 'checked="checked" ' : '') .
|
||||
'/> ' . html::escapeHTML($rs->cat_title) . '</label></li>';
|
||||
}
|
||||
if (!empty($ct)) {
|
||||
$res .= $w->renderTitle(__('Filter by category')) . sprintf('<ul>%s</ul>', $ct);
|
||||
}
|
||||
}
|
||||
|
||||
# authors
|
||||
if (!$w->saba_filter_authors) {
|
||||
$ct = '';
|
||||
$rm = explode(',', $w->saba_remove_authors);
|
||||
$rs = $core->blog->getPostsUsers();
|
||||
|
||||
while ($rs->fetch()) {
|
||||
if (in_array($rs->user_id, $rm)) {
|
||||
continue;
|
||||
}
|
||||
$ct .=
|
||||
'<li><label><input name="q_user[]" type="checkbox" value="' .
|
||||
$rs->user_id . '" ' .
|
||||
(in_array($rs->user_id, $_ctx->saba_options['q_user']) ? 'checked="checked" ' : '') .
|
||||
'/> ' . html::escapeHTML(dcUtils::getUserCN($rs->user_id, $rs->user_name, $rs->user_firstname, $rs->user_displayname)) . '</label></li>';
|
||||
}
|
||||
if (!empty($ct)) {
|
||||
$res .= $w->renderTitle(__('Filter by author')) . sprintf('<ul>%s</ul>', $ct);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$res .= '</form>';
|
||||
|
||||
return $w->renderDiv($w->content_only, $w->class, 'id="search"', $res);
|
||||
}
|
||||
}
|
40
default-templates/saba_404_currywurst.html
Normal file
40
default-templates/saba_404_currywurst.html
Normal file
|
@ -0,0 +1,40 @@
|
|||
{{tpl:extends parent="__layout.html"}}
|
||||
<tpl:Block name="head-title">
|
||||
<title>{{tpl:lang Document not found}} - {{tpl:BlogName encode_html="1"}}</title>
|
||||
</tpl:Block>
|
||||
<tpl:Block name="meta-robots">
|
||||
<meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX,NOARCHIVE"}}" />
|
||||
</tpl:Block>
|
||||
<tpl:Block name="head-linkrel">
|
||||
<link rel="contents" title="{{tpl:lang Archives}}" href="{{tpl:BlogArchiveURL}}" />
|
||||
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
|
||||
</tpl:Block>
|
||||
<tpl:Block name="body-tag">
|
||||
|
||||
<body class="dc-404">
|
||||
</tpl:Block>
|
||||
<tpl:Block name="main-content">
|
||||
<div id="content-info">
|
||||
<h2>{{tpl:lang Document not found}}</h2>
|
||||
<p>{{tpl:lang URL you've tried has typos, or the page has been deleted or moved.}}</p>
|
||||
<h3>{{tpl:lang Suggestions:}}</h3>
|
||||
</div>
|
||||
<div class="content-inner">
|
||||
<tpl:Entries>
|
||||
{{tpl:include src="_entry-short.html"}}
|
||||
<tpl:EntriesFooter>
|
||||
<tpl:Pagination>
|
||||
<p class="pagination">
|
||||
<tpl:PaginationIf end="0">
|
||||
<a href="{{tpl:PaginationURL offset="+1"}}" class="prev">« {{tpl:lang previous entries}}</a> -
|
||||
</tpl:PaginationIf>
|
||||
{{tpl:lang page}} {{tpl:PaginationCurrent}} {{tpl:lang of}} {{tpl:PaginationCounter}}
|
||||
<tpl:PaginationIf start="0">
|
||||
- <a href="{{tpl:PaginationURL offset="-1"}}" class="next">{{tpl:lang next entries}} »</a>
|
||||
</tpl:PaginationIf>
|
||||
</p>
|
||||
</tpl:Pagination>
|
||||
</tpl:EntriesFooter>
|
||||
</tpl:Entries>
|
||||
</div> <!-- End #content-inner -->
|
||||
</tpl:Block>
|
48
default-templates/saba_404_default.html
Normal file
48
default-templates/saba_404_default.html
Normal file
|
@ -0,0 +1,48 @@
|
|||
{{tpl:extends parent="__layout.html"}}
|
||||
<tpl:Block name="head-title">
|
||||
<title>{{tpl:lang Document not found}} - {{tpl:BlogName encode_html="1"}}</title>
|
||||
</tpl:Block>
|
||||
<tpl:Block name="meta-robots">
|
||||
<meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX,NOARCHIVE"}}" />
|
||||
</tpl:Block>
|
||||
<tpl:Block name="head-linkrel">
|
||||
<link rel="contents" title="{{tpl:lang Archives}}" href="{{tpl:BlogArchiveURL}}" />
|
||||
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
|
||||
</tpl:Block>
|
||||
|
||||
<tpl:Block name="body-tag">
|
||||
<body class="dc-404">
|
||||
</tpl:Block>
|
||||
|
||||
<tpl:Block name="main-content">
|
||||
<tpl:Block name="main-content-before"></tpl:Block>
|
||||
<tpl:Block name="content-info-header">
|
||||
<header id="content-info">
|
||||
<tpl:Block name="content-info-header-title">
|
||||
<h2>{{tpl:lang Document not found}}</h2>
|
||||
</tpl:Block>
|
||||
<tpl:Block name="content-info-header-content">
|
||||
<p>{{tpl:lang URL you've tried has typos, or the page has been deleted or moved.}}</p>
|
||||
</tpl:Block>
|
||||
</header>
|
||||
</tpl:Block>
|
||||
<tpl:Block name="content-inner">
|
||||
<div class="content-inner">
|
||||
<h3>{{tpl:lang Suggestions:}}</h3>
|
||||
<tpl:Block name="content-inner-entries">
|
||||
<tpl:Entries>
|
||||
<tpl:Block name="content-inner-entry">
|
||||
{{tpl:include src="_entry-short.html"}}
|
||||
</tpl:Block>
|
||||
<tpl:Block name="content-inner-pagination">
|
||||
<tpl:EntriesFooter>
|
||||
</tpl:EntriesFooter>
|
||||
</tpl:Block>
|
||||
</tpl:Entries>
|
||||
</tpl:Block>
|
||||
<tpl:Block name="content-inner-footer">
|
||||
</tpl:Block>
|
||||
</div> <!-- # End #content-inner -->
|
||||
</tpl:Block>
|
||||
<tpl:Block name="main-content-after"></tpl:Block>
|
||||
</tpl:Block>
|
47
default-templates/saba_404_dotty.html
Normal file
47
default-templates/saba_404_dotty.html
Normal file
|
@ -0,0 +1,47 @@
|
|||
{{tpl:extends parent="__layout.html"}}
|
||||
<tpl:Block name="head-title">
|
||||
<title>{{tpl:lang Document not found}} - {{tpl:BlogName encode_html="1"}}</title>
|
||||
</tpl:Block>
|
||||
<tpl:Block name="meta-robots">
|
||||
<meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX,NOARCHIVE"}}" />
|
||||
</tpl:Block>
|
||||
<tpl:Block name="head-linkrel">
|
||||
<link rel="contents" title="{{tpl:lang Archives}}" href="{{tpl:BlogArchiveURL}}" />
|
||||
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
|
||||
</tpl:Block>
|
||||
|
||||
<tpl:Block name="body-tag">
|
||||
<body class="dc-404">
|
||||
</tpl:Block>
|
||||
|
||||
<tpl:Block name="main-content">
|
||||
<tpl:Block name="main-content-before"></tpl:Block>
|
||||
<tpl:Block name="content-info-header">
|
||||
<header id="content-info">
|
||||
<tpl:Block name="content-info-header-title">
|
||||
<h2>{{tpl:lang Document not found}} - {{tpl:lang Suggested items:}}</h2>
|
||||
</tpl:Block>
|
||||
<tpl:Block name="content-info-header-content">
|
||||
<p>{{tpl:lang URL you've tried has typos, or the page has been deleted or moved.}}</p>
|
||||
</tpl:Block>
|
||||
</header>
|
||||
</tpl:Block>
|
||||
<tpl:Block name="content-inner">
|
||||
<div class="content-inner">
|
||||
<tpl:Block name="content-inner-entries">
|
||||
<tpl:Entries>
|
||||
<tpl:Block name="content-inner-entry">
|
||||
{{tpl:include src="_entry-short.html"}}
|
||||
</tpl:Block>
|
||||
<tpl:Block name="content-inner-pagination">
|
||||
<tpl:EntriesFooter>
|
||||
</tpl:EntriesFooter>
|
||||
</tpl:Block>
|
||||
</tpl:Entries>
|
||||
</tpl:Block>
|
||||
<tpl:Block name="content-inner-footer">
|
||||
</tpl:Block>
|
||||
</div> <!-- # End #content-inner -->
|
||||
</tpl:Block>
|
||||
<tpl:Block name="main-content-after"></tpl:Block>
|
||||
</tpl:Block>
|
78
default-templates/saba_404_mustek.html
Normal file
78
default-templates/saba_404_mustek.html
Normal file
|
@ -0,0 +1,78 @@
|
|||
{{tpl:extends parent="__layout.html"}}
|
||||
<tpl:Block name="head-title">
|
||||
<title>{{tpl:lang Document not found}} - {{tpl:BlogName encode_html="1"}}</title>
|
||||
</tpl:Block>
|
||||
<tpl:Block name="meta-robots">
|
||||
<meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX,NOARCHIVE"}}" />
|
||||
</tpl:Block>
|
||||
<tpl:Block name="head-linkrel">
|
||||
<link rel="contents" title="{{tpl:lang Archives}}" href="{{tpl:BlogArchiveURL}}" />
|
||||
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
|
||||
</tpl:Block>
|
||||
<tpl:Block name="body-tag">
|
||||
|
||||
<body class="dc-404">
|
||||
</tpl:Block>
|
||||
<tpl:Block name="main-content">
|
||||
<div id="content-info">
|
||||
<h2>{{tpl:lang Document not found}}</h2>
|
||||
<p>{{tpl:lang The document you are looking for does not exist.}}</p>
|
||||
<h3>{{tpl:lang Suggestions:}}</h3>
|
||||
</div>
|
||||
<tpl:Entries>
|
||||
<div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}}" lang="{{tpl:EntryLang}}" role="article">
|
||||
<!-- # New day date -->
|
||||
<tpl:DateHeader>
|
||||
<p class="day-date">{{tpl:EntryDate}}</p>
|
||||
</tpl:DateHeader>
|
||||
<h2 class="post-title"><a
|
||||
href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
|
||||
<p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
|
||||
{{tpl:lang on}} {{tpl:EntryDate}}, {{tpl:EntryTime}}
|
||||
<tpl:EntryIf has_category="1">
|
||||
- <a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a>
|
||||
</tpl:EntryIf>
|
||||
</p>
|
||||
<tpl:EntryTags>
|
||||
<tpl:TagsHeader>
|
||||
<ul class="post-tags">
|
||||
</tpl:TagsHeader>
|
||||
<li><a href="{{tpl:TagURL}}">{{tpl:TagID}}</a></li>
|
||||
<tpl:TagsFooter>
|
||||
</ul>
|
||||
</tpl:TagsFooter>
|
||||
</tpl:EntryTags>
|
||||
<!-- # --BEHAVIOR-- publicEntryBeforeContent -->
|
||||
{{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
|
||||
<!-- # Entry with an excerpt -->
|
||||
<tpl:EntryIf extended="1">
|
||||
<div class="post-content">{{tpl:EntryExcerpt}}</div>
|
||||
<p class="read-it"><a href="{{tpl:EntryURL}}"
|
||||
title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:lang Continue
|
||||
reading}}</a><span class="readmore-ellipsis">...</span></p>
|
||||
</tpl:EntryIf>
|
||||
<!-- # Entry without excerpt -->
|
||||
<tpl:EntryIf extended="0">
|
||||
<div class="post-content">{{tpl:EntryContent}}</div>
|
||||
</tpl:EntryIf>
|
||||
<!-- # --BEHAVIOR-- publicEntryAfterContent -->
|
||||
{{tpl:SysBehavior behavior="publicEntryAfterContent"}}
|
||||
<!-- # Number of comments, trackbacks and attachments -->
|
||||
<tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
|
||||
<p class="post-info-co">
|
||||
</tpl:EntryIf>
|
||||
<tpl:EntryIf show_comments="1">
|
||||
<a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
|
||||
</tpl:EntryIf>
|
||||
<tpl:EntryIf show_pings="1">
|
||||
<a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
|
||||
<tpl:EntryIf has_attachment="1">
|
||||
<a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
|
||||
<tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
|
||||
</p>
|
||||
</tpl:EntryIf>
|
||||
</div>
|
||||
<tpl:EntriesFooter>
|
||||
</tpl:EntriesFooter>
|
||||
</tpl:Entries>
|
||||
</tpl:Block>
|
|
@ -1,14 +0,0 @@
|
|||
<div class="saba-post">
|
||||
<h2 id="p{{tpl:EntryID}}" class="post-title" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}"><a
|
||||
href="{{tpl:EntryURL}}" title="{{tpl:lang Read}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
|
||||
|
||||
<p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}} {{tpl:lang on}} {{tpl:EntryDate}}
|
||||
<tpl:EntryIf show_comments="1">
|
||||
- <a href="{{tpl:EntryURL}}#comments">{{tpl:EntryCommentCount}}</a>
|
||||
</tpl:EntryIf>
|
||||
<tpl:EntryIf show_pings="1">
|
||||
- <a href="{{tpl:EntryURL}}#pings">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
|
||||
<tpl:EntryIf has_attachment="1">
|
||||
- <a href="{{tpl:EntryURL}}#attachments">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
|
||||
</p>
|
||||
</div>
|
|
@ -1,133 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="MSSmartTagsPreventParsing" content="TRUE" />
|
||||
<meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX"}}" />
|
||||
|
||||
<title>{{tpl:lang Search}} - {{tpl:SysSearchString encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf></title>
|
||||
<meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
|
||||
<meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
|
||||
<meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
|
||||
|
||||
<link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
|
||||
<meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Search}} - {{tpl:SysSearchString encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
|
||||
<meta name="dc.language" content="{{tpl:BlogLanguage}}" />
|
||||
<meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
|
||||
<meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
|
||||
<meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
|
||||
<meta name="dc.type" content="text" />
|
||||
<meta name="dc.format" content="text/html" />
|
||||
|
||||
<link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
|
||||
<link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
|
||||
|
||||
{{tpl:include src="_head.html"}}
|
||||
</head>
|
||||
|
||||
<body class="dc-search<tpl:SabaIf from_error="1"> dc-404</tpl:SabaIf>">
|
||||
<div id="page">
|
||||
{{tpl:include src="_top.html"}}
|
||||
|
||||
<div id="wrapper">
|
||||
|
||||
<div id="main">
|
||||
<div id="content">
|
||||
|
||||
<div id="content-info">
|
||||
<tpl:SabaIf from_error="1">
|
||||
<h2>{{tpl:lang Document not found}}</h2>
|
||||
<p>{{tpl:lang URL you've tried has typos, or the page has been deleted or moved.}}</p>
|
||||
</tpl:SabaIf>
|
||||
<tpl:SabaIf has_search="1" from_error="0">
|
||||
<h2>{{tpl:lang Search across blog's archive}}</h2>
|
||||
<tpl:SysIf search_count="==0">
|
||||
<p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned no result."}}</p>
|
||||
</tpl:SysIf>
|
||||
<tpl:SysIf search_count="==1">
|
||||
<p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned <strong>%2$s</strong> result."}}</p>
|
||||
</tpl:SysIf>
|
||||
<tpl:SysIf search_count=">1">
|
||||
<p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned <strong>%2$s</strong> results."}}</p>
|
||||
</tpl:SysIf>
|
||||
</tpl:SabaIf>
|
||||
<tpl:SabaIf has_search="0" from_error="0">
|
||||
<form action="{{tpl:BlogURL}}" method="get" id="saba-form">
|
||||
|
||||
<div class="saba-opt-text">
|
||||
<h3><label for="q">{{tpl:lang Advanced search}}</label></h3>
|
||||
<p><input name="q" type="text" size="100" maxlength="255" value="{{tpl:SabaFormSearch}}" />
|
||||
<input type="submit" class="submit" value="ok" /></p>
|
||||
</div>
|
||||
|
||||
<tpl:SabaFormIf filter_options="1">{{tpl:SabaFormOptions}}</tpl:SabaFormIf>
|
||||
<tpl:SabaFormIf filter_orders="1">{{tpl:SabaFormOrders remove="selected"}}</tpl:SabaFormIf>
|
||||
<tpl:SabaFormIf filter_ages="1">{{tpl:SabaFormAges}}</tpl:SabaFormIf>
|
||||
<tpl:SabaFormIf filter_categories="1">{{tpl:SabaFormCategories}}</tpl:SabaFormIf>
|
||||
<tpl:SabaFormIf filter_authors="1">{{tpl:SabaFormAuthors}}</tpl:SabaFormIf>
|
||||
<tpl:SabaFormIf filter_types="1">{{tpl:SabaFormTypes}}</tpl:SabaFormIf>
|
||||
|
||||
</form>
|
||||
</tpl:SabaIf>
|
||||
</div>
|
||||
|
||||
<div class="content-inner">
|
||||
<tpl:SabaEntries>
|
||||
<tpl:SabaIf from_error="1">
|
||||
<tpl:EntriesHeader>
|
||||
<h2>{{tpl:lang Suggested items}}</h2>
|
||||
</tpl:EntriesHeader>
|
||||
</tpl:SabaIf>
|
||||
{{tpl:include src="saba_post.html"}}
|
||||
|
||||
<tpl:EntriesFooter>
|
||||
<tpl:Pagination>
|
||||
<p class="pagination"><tpl:PaginationIf end="0"><a href="{{tpl:SabaPaginationURL offset="+1"}}" class="prev">«
|
||||
{{tpl:lang previous entries}}</a> - </tpl:PaginationIf>
|
||||
{{tpl:lang page}} {{tpl:PaginationCurrent}} {{tpl:lang of}} {{tpl:PaginationCounter}}
|
||||
<tpl:PaginationIf start="0"> - <a href="{{tpl:SabaPaginationURL offset="-1"}}" class="next">{{tpl:lang next entries}}
|
||||
»</a></tpl:PaginationIf></p>
|
||||
</tpl:Pagination>
|
||||
</tpl:EntriesFooter>
|
||||
</tpl:SabaEntries>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- End #main -->
|
||||
|
||||
<div id="sidebar">
|
||||
<div id="blognav">
|
||||
|
||||
<tpl:SabaIf has_search="1" from_error="1" operator="or">
|
||||
|
||||
<form action="{{tpl:BlogURL}}" method="get" id="saba-form">
|
||||
|
||||
<div class="saba-opt-text">
|
||||
<h3><label for="q">{{tpl:lang Advanced search}}</label></h3>
|
||||
<p><input name="q" type="text" size="10" maxlength="255" value="{{tpl:SabaFormSearch}}" />
|
||||
<input type="submit" class="submit" value="ok" /></p>
|
||||
</div>
|
||||
|
||||
<tpl:SabaFormIf filter_options="1">{{tpl:SabaFormOptions}}</tpl:SabaFormIf>
|
||||
<tpl:SabaFormIf filter_orders="1">{{tpl:SabaFormOrders remove="selected"}}</tpl:SabaFormIf>
|
||||
<tpl:SabaFormIf filter_ages="1">{{tpl:SabaFormAges}}</tpl:SabaFormIf>
|
||||
<tpl:SabaFormIf filter_categories="1">{{tpl:SabaFormCategories}}</tpl:SabaFormIf>
|
||||
<tpl:SabaFormIf filter_authors="1">{{tpl:SabaFormAuthors}}</tpl:SabaFormIf>
|
||||
<tpl:SabaFormIf filter_types="1">{{tpl:SabaFormTypes}}</tpl:SabaFormIf>
|
||||
|
||||
</form>
|
||||
</tpl:SabaIf>
|
||||
{{tpl:Widgets type="nav"}}
|
||||
</div> <!-- End #blognav -->
|
||||
|
||||
<div id="blogextra">
|
||||
{{tpl:Widgets type="extra"}}
|
||||
</div> <!-- End #blogextra -->
|
||||
</div>
|
||||
|
||||
</div> <!-- End #wrapper -->
|
||||
|
||||
{{tpl:include src="_footer.html"}}
|
||||
</div> <!-- End #page -->
|
||||
</body>
|
||||
</html>
|
|
@ -1,94 +1,57 @@
|
|||
<?php
|
||||
// Language: Français
|
||||
// Module: saba - 2013.10.28
|
||||
// Date: 2013-10-29 08:06:52
|
||||
// Translated with dcTranslater - 2013.05.11
|
||||
// Module: saba - 2021.08.21
|
||||
// Date: 2021-08-22 23:22:12
|
||||
// Translated with dcTranslater - 2021.08.18
|
||||
|
||||
#_config.php:70
|
||||
$GLOBALS['__l10n']['Configuration has been successfully updated.'] = 'La configuration a été mise à jour avec succés.';
|
||||
#_admin.php:38
|
||||
$GLOBALS['__l10n']['Search Across Blog Archive'] = 'Rechercher dans les archives';
|
||||
|
||||
#_config.php:93
|
||||
$GLOBALS['__l10n']['Enable extension on this blog'] = 'Activer l\'extension sur ce blog';
|
||||
#_admin.php:41
|
||||
$GLOBALS['__l10n']['Enable advanced search on this blog'] = 'Activer la recherche avancée sur ce blog';
|
||||
|
||||
#_config.php:98
|
||||
#_admin.php:44
|
||||
$GLOBALS['__l10n']['Enable suggestion for page 404'] = 'Activer la suggestion sur la page 404';
|
||||
|
||||
#_admin.php:46
|
||||
$GLOBALS['__l10n']['This suggests visitors some posts on page 404.'] = 'Ceci suggère au visiteurs des billets sur la page 404.';
|
||||
|
||||
#_widgets.php:18
|
||||
$GLOBALS['__l10n']['Advanced search'] = 'Recherche avancée';
|
||||
|
||||
#_config.php:105
|
||||
$GLOBALS['__l10n']['Disable filter on post options'] = 'Désactiver le filtre des options de billet';
|
||||
#_widgets.php:21
|
||||
$GLOBALS['__l10n']['Add more search options on public side'] = 'Ajoute plus d\'options de recherche';
|
||||
|
||||
#_config.php:112
|
||||
$GLOBALS['__l10n']['Disable filter on order'] = 'Désactiver le filtre d\'ordre';
|
||||
|
||||
#_config.php:119
|
||||
$GLOBALS['__l10n']['Disable filter on age'] = 'Désactiver le filtre de date';
|
||||
|
||||
#_config.php:126
|
||||
$GLOBALS['__l10n']['Disable filter on categories'] = 'Désactiver le filtre de catégories';
|
||||
|
||||
#_config.php:133
|
||||
$GLOBALS['__l10n']['Disable filter on authors'] = 'Désactiver le filtre d\'auteurs';
|
||||
|
||||
#_config.php:140
|
||||
#_widgets.php:26
|
||||
$GLOBALS['__l10n']['Disable filter on post types'] = 'Désactiver le filtre de type de billets';
|
||||
|
||||
#_public.php:345
|
||||
$GLOBALS['__l10n']['Filter options'] = 'Options du filtre';
|
||||
#_widgets.php:30
|
||||
$GLOBALS['__l10n']['Hidden types:'] = 'Billets cachés :';
|
||||
|
||||
#_public.php:365
|
||||
$GLOBALS['__l10n']['Reverse order'] = 'Inverser l\'ordre';
|
||||
#_widgets.php:33
|
||||
$GLOBALS['__l10n']['Disable filter on post options'] = 'Désactiver le filtre des options de billet';
|
||||
|
||||
#_public.php:367
|
||||
$GLOBALS['__l10n']['Filter order'] = 'Options de tri';
|
||||
#_widgets.php:37
|
||||
$GLOBALS['__l10n']['Hidden options:'] = 'Options cachées :';
|
||||
|
||||
#_public.php:388
|
||||
$GLOBALS['__l10n']['Filter by category'] = 'Filter par catégorie';
|
||||
#_widgets.php:40
|
||||
$GLOBALS['__l10n']['Disable filter on categories'] = 'Désactiver le filtre de catégories';
|
||||
|
||||
#_public.php:409
|
||||
$GLOBALS['__l10n']['Filter by type'] = 'Filtrer par type';
|
||||
#_widgets.php:44
|
||||
$GLOBALS['__l10n']['Hidden categories:'] = 'Catégories cachées';
|
||||
|
||||
#_public.php:425
|
||||
$GLOBALS['__l10n']['Filter by age'] = 'Filtrer par date';
|
||||
#_widgets.php:47
|
||||
$GLOBALS['__l10n']['Disable filter on authors'] = 'Désactiver le filtre d\'auteurs';
|
||||
|
||||
#_public.php:446
|
||||
$GLOBALS['__l10n']['Filter by author'] = 'Filtrer par auteur';
|
||||
#_widgets.php:51
|
||||
$GLOBALS['__l10n']['Hidden authors:'] = 'Auteurs cachés';
|
||||
|
||||
#_public.php:477
|
||||
$GLOBALS['__l10n']['With comments'] = 'Avec commentaires';
|
||||
#_widgets.php:54
|
||||
$GLOBALS['__l10n']['Disable filter on order'] = 'Désactiver le filtre d\'ordre';
|
||||
|
||||
#_public.php:478
|
||||
$GLOBALS['__l10n']['With trackbacks'] = 'Avec rétroliens';
|
||||
#_widgets.php:60
|
||||
$GLOBALS['__l10n']['Disable filter on age'] = 'Désactiver le filtre de date';
|
||||
|
||||
#_public.php:490
|
||||
$GLOBALS['__l10n']['Comments count'] = 'Nombre de commentaires';
|
||||
#default-templates/saba_404_dotty.html:22
|
||||
$GLOBALS['__l10n']['Suggested items:'] = 'Articles suggérés :';
|
||||
|
||||
#_public.php:491
|
||||
$GLOBALS['__l10n']['Trackbacks count'] = 'Nombre de rétroliens';
|
||||
|
||||
#_public.php:498
|
||||
$GLOBALS['__l10n']['All'] = 'Tous';
|
||||
|
||||
#_public.php:499
|
||||
$GLOBALS['__l10n']['Less than a month'] = 'Moins d\'un mois';
|
||||
|
||||
#_public.php:500
|
||||
$GLOBALS['__l10n']['From 1 to 6 month'] = 'De 1 à 6 mois';
|
||||
|
||||
#_public.php:501
|
||||
$GLOBALS['__l10n']['From 6 to 12 month'] = 'De 6 à 12 mois';
|
||||
|
||||
#_public.php:502
|
||||
$GLOBALS['__l10n']['More than a year'] = 'Plus d\'un an';
|
||||
|
||||
#_public.php:511
|
||||
$GLOBALS['__l10n']['Poll'] = 'Sondage';
|
||||
|
||||
#_public.php:512
|
||||
$GLOBALS['__l10n']['Event'] = 'Événement';
|
||||
|
||||
$GLOBALS['__l10n']['Search across blog\'s archive'] = 'Rechercher dans les archives';
|
||||
|
||||
$GLOBALS['__l10n']['Please select a request and options to search on'] = 'Merci de formuler une requête et les options de recherche';
|
||||
|
||||
$GLOBALS['__l10n']['Suggested items'] = 'Articles suggérés';
|
||||
|
||||
?>
|
|
@ -1,133 +1,85 @@
|
|||
# Language: Français
|
||||
# Module: saba - 2013.10.28
|
||||
# Date: 2013-10-29 08:06:53
|
||||
# Translated with translater 2013.05.11
|
||||
# Module: saba - 2021.08.21
|
||||
# Date: 2021-08-22 23:22:12
|
||||
# Translated with translater 2021.08.18
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: saba 2013.10.28\n"
|
||||
"Project-Id-Version: saba 2021.08.21\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: 2013-10-29T08:06:53+00:00\n"
|
||||
"PO-Revision-Date: 2021-08-22T23:22:12+00:00\n"
|
||||
"Last-Translator: Jean-Christian Denis\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: _config.php:70
|
||||
msgid "Configuration has been successfully updated."
|
||||
msgstr "La configuration a été mise à jour avec succés."
|
||||
#: _admin.php:38
|
||||
msgid "Search Across Blog Archive"
|
||||
msgstr "Rechercher dans les archives"
|
||||
|
||||
#: _config.php:93
|
||||
msgid "Enable extension on this blog"
|
||||
msgstr "Activer l'extension sur ce blog"
|
||||
#: _admin.php:41
|
||||
msgid "Enable advanced search on this blog"
|
||||
msgstr "Activer la recherche avancée sur ce blog"
|
||||
|
||||
#: _config.php:98
|
||||
#: _admin.php:44
|
||||
msgid "Enable suggestion for page 404"
|
||||
msgstr "Activer la suggestion sur la page 404"
|
||||
|
||||
#: _admin.php:46
|
||||
msgid "This suggests visitors some posts on page 404."
|
||||
msgstr "Ceci suggère au visiteurs des billets sur la page 404."
|
||||
|
||||
#: _widgets.php:18
|
||||
msgid "Advanced search"
|
||||
msgstr "Recherche avancée"
|
||||
|
||||
#: _config.php:105
|
||||
msgid "Disable filter on post options"
|
||||
msgstr "Désactiver le filtre des options de billet"
|
||||
#: _widgets.php:21
|
||||
msgid "Add more search options on public side"
|
||||
msgstr "Ajoute plus d'options de recherche"
|
||||
|
||||
#: _config.php:112
|
||||
msgid "Disable filter on order"
|
||||
msgstr "Désactiver le filtre d'ordre"
|
||||
|
||||
#: _config.php:119
|
||||
msgid "Disable filter on age"
|
||||
msgstr "Désactiver le filtre de date"
|
||||
|
||||
#: _config.php:126
|
||||
msgid "Disable filter on categories"
|
||||
msgstr "Désactiver le filtre de catégories"
|
||||
|
||||
#: _config.php:133
|
||||
msgid "Disable filter on authors"
|
||||
msgstr "Désactiver le filtre d'auteurs"
|
||||
|
||||
#: _config.php:140
|
||||
#: _widgets.php:26
|
||||
msgid "Disable filter on post types"
|
||||
msgstr "Désactiver le filtre de type de billets"
|
||||
|
||||
#: _public.php:345
|
||||
msgid "Filter options"
|
||||
msgstr "Options du filtre"
|
||||
#: _widgets.php:30
|
||||
msgid "Hidden types:"
|
||||
msgstr "Billets cachés :"
|
||||
|
||||
#: _public.php:365
|
||||
msgid "Reverse order"
|
||||
msgstr "Inverser l'ordre"
|
||||
#: _widgets.php:33
|
||||
msgid "Disable filter on post options"
|
||||
msgstr "Désactiver le filtre des options de billet"
|
||||
|
||||
#: _public.php:367
|
||||
msgid "Filter order"
|
||||
msgstr "Options de tri"
|
||||
#: _widgets.php:37
|
||||
msgid "Hidden options:"
|
||||
msgstr "Options cachées :"
|
||||
|
||||
#: _public.php:388
|
||||
msgid "Filter by category"
|
||||
msgstr "Filter par catégorie"
|
||||
#: _widgets.php:40
|
||||
msgid "Disable filter on categories"
|
||||
msgstr "Désactiver le filtre de catégories"
|
||||
|
||||
#: _public.php:409
|
||||
msgid "Filter by type"
|
||||
msgstr "Filtrer par type"
|
||||
#: _widgets.php:44
|
||||
msgid "Hidden categories:"
|
||||
msgstr "Catégories cachées"
|
||||
|
||||
#: _public.php:425
|
||||
msgid "Filter by age"
|
||||
msgstr "Filtrer par date"
|
||||
#: _widgets.php:47
|
||||
msgid "Disable filter on authors"
|
||||
msgstr "Désactiver le filtre d'auteurs"
|
||||
|
||||
#: _public.php:446
|
||||
msgid "Filter by author"
|
||||
msgstr "Filtrer par auteur"
|
||||
#: _widgets.php:51
|
||||
msgid "Hidden authors:"
|
||||
msgstr "Auteurs cachés"
|
||||
|
||||
#: _public.php:477
|
||||
msgid "With comments"
|
||||
msgstr "Avec commentaires"
|
||||
#: _widgets.php:54
|
||||
msgid "Disable filter on order"
|
||||
msgstr "Désactiver le filtre d'ordre"
|
||||
|
||||
#: _public.php:478
|
||||
msgid "With trackbacks"
|
||||
msgstr "Avec rétroliens"
|
||||
#: _widgets.php:60
|
||||
msgid "Disable filter on age"
|
||||
msgstr "Désactiver le filtre de date"
|
||||
|
||||
#: _public.php:490
|
||||
msgid "Comments count"
|
||||
msgstr "Nombre de commentaires"
|
||||
|
||||
#: _public.php:491
|
||||
msgid "Trackbacks count"
|
||||
msgstr "Nombre de rétroliens"
|
||||
|
||||
#: _public.php:498
|
||||
msgid "All"
|
||||
msgstr "Tous"
|
||||
|
||||
#: _public.php:499
|
||||
msgid "Less than a month"
|
||||
msgstr "Moins d'un mois"
|
||||
|
||||
#: _public.php:500
|
||||
msgid "From 1 to 6 month"
|
||||
msgstr "De 1 à 6 mois"
|
||||
|
||||
#: _public.php:501
|
||||
msgid "From 6 to 12 month"
|
||||
msgstr "De 6 à 12 mois"
|
||||
|
||||
#: _public.php:502
|
||||
msgid "More than a year"
|
||||
msgstr "Plus d'un an"
|
||||
|
||||
#: _public.php:511
|
||||
msgid "Poll"
|
||||
msgstr "Sondage"
|
||||
|
||||
#: _public.php:512
|
||||
msgid "Event"
|
||||
msgstr "Événement"
|
||||
|
||||
msgid "Search across blog's archive"
|
||||
msgstr "Rechercher dans les archives"
|
||||
|
||||
msgid "Please select a request and options to search on"
|
||||
msgstr "Merci de formuler une requête et les options de recherche"
|
||||
|
||||
msgid "Suggested items"
|
||||
msgstr "Articles suggérés"
|
||||
#: default-templates/saba_404_dotty.html:22
|
||||
msgid "Suggested items:"
|
||||
msgstr "Articles suggérés :"
|
||||
|
||||
|
|
82
locales/fr/public.lang.php
Normal file
82
locales/fr/public.lang.php
Normal file
|
@ -0,0 +1,82 @@
|
|||
<?php
|
||||
// Language: Français
|
||||
// Module: saba - 2021.08.21
|
||||
// Date: 2021-08-22 23:22:12
|
||||
// Translated with dcTranslater - 2021.08.18
|
||||
|
||||
#_public.php:293
|
||||
#_public.php:303
|
||||
$GLOBALS['__l10n']['Selected entry'] = 'Billet sélectionné';
|
||||
|
||||
#_public.php:294
|
||||
$GLOBALS['__l10n']['With comments'] = 'Avec commentaires';
|
||||
|
||||
#_public.php:295
|
||||
$GLOBALS['__l10n']['With trackbacks'] = 'Avec rétroliens';
|
||||
|
||||
#_public.php:302
|
||||
$GLOBALS['__l10n']['Title'] = 'Titre';
|
||||
|
||||
#_public.php:304
|
||||
$GLOBALS['__l10n']['Author'] = 'Auteur·rice';
|
||||
|
||||
#_public.php:305
|
||||
$GLOBALS['__l10n']['Date'] = 'Date';
|
||||
|
||||
#_public.php:306
|
||||
$GLOBALS['__l10n']['Update'] = 'Mise à jour';
|
||||
|
||||
#_public.php:307
|
||||
$GLOBALS['__l10n']['Comments count'] = 'Nombre de commentaires';
|
||||
|
||||
#_public.php:308
|
||||
$GLOBALS['__l10n']['Trackbacks count'] = 'Nombre de rétroliens';
|
||||
|
||||
#_public.php:315
|
||||
$GLOBALS['__l10n']['All'] = 'Tous';
|
||||
|
||||
#_public.php:316
|
||||
$GLOBALS['__l10n']['Less than a month'] = 'Moins d\'un mois';
|
||||
|
||||
#_public.php:317
|
||||
$GLOBALS['__l10n']['From 1 to 6 month'] = 'De 1 à 6 mois';
|
||||
|
||||
#_public.php:318
|
||||
$GLOBALS['__l10n']['From 6 to 12 month'] = 'De 6 à 12 mois';
|
||||
|
||||
#_public.php:319
|
||||
$GLOBALS['__l10n']['More than a year'] = 'Plus d\'un an';
|
||||
|
||||
#_public.php:326
|
||||
$GLOBALS['__l10n']['Entry'] = 'Publication';
|
||||
|
||||
#_public.php:327
|
||||
$GLOBALS['__l10n']['Page'] = 'Page';
|
||||
|
||||
#_public.php:328
|
||||
$GLOBALS['__l10n']['Poll'] = 'Sondage';
|
||||
|
||||
#_public.php:329
|
||||
$GLOBALS['__l10n']['Event'] = 'Événement';
|
||||
|
||||
#_widgets.php:114
|
||||
$GLOBALS['__l10n']['Reverse order'] = 'Inverser l\'ordre';
|
||||
|
||||
#_widgets.php:115
|
||||
$GLOBALS['__l10n']['Filter order'] = 'Options de tri';
|
||||
|
||||
#_widgets.php:135
|
||||
$GLOBALS['__l10n']['Filter options'] = 'Options du filtre';
|
||||
|
||||
#_widgets.php:151
|
||||
$GLOBALS['__l10n']['Filter by age'] = 'Filtrer par date';
|
||||
|
||||
#_widgets.php:171
|
||||
$GLOBALS['__l10n']['Filter by type'] = 'Filtrer par type';
|
||||
|
||||
#_widgets.php:192
|
||||
$GLOBALS['__l10n']['Filter by category'] = 'Filter par catégorie';
|
||||
|
||||
#_widgets.php:213
|
||||
$GLOBALS['__l10n']['Filter by author'] = 'Filtrer par auteur';
|
||||
|
118
locales/fr/public.po
Normal file
118
locales/fr/public.po
Normal file
|
@ -0,0 +1,118 @@
|
|||
# Language: Français
|
||||
# Module: saba - 2021.08.21
|
||||
# Date: 2021-08-22 23:22:12
|
||||
# Translated with translater 2021.08.18
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: saba 2021.08.21\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: 2021-08-22T23:22:12+00:00\n"
|
||||
"Last-Translator: Jean-Christian Denis\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: _public.php:293
|
||||
#: _public.php:303
|
||||
msgid "Selected entry"
|
||||
msgstr "Billet sélectionné"
|
||||
|
||||
#: _public.php:294
|
||||
msgid "With comments"
|
||||
msgstr "Avec commentaires"
|
||||
|
||||
#: _public.php:295
|
||||
msgid "With trackbacks"
|
||||
msgstr "Avec rétroliens"
|
||||
|
||||
#: _public.php:302
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
#: _public.php:304
|
||||
msgid "Author"
|
||||
msgstr "Auteur·rice"
|
||||
|
||||
#: _public.php:305
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#: _public.php:306
|
||||
msgid "Update"
|
||||
msgstr "Mise à jour"
|
||||
|
||||
#: _public.php:307
|
||||
msgid "Comments count"
|
||||
msgstr "Nombre de commentaires"
|
||||
|
||||
#: _public.php:308
|
||||
msgid "Trackbacks count"
|
||||
msgstr "Nombre de rétroliens"
|
||||
|
||||
#: _public.php:315
|
||||
msgid "All"
|
||||
msgstr "Tous"
|
||||
|
||||
#: _public.php:316
|
||||
msgid "Less than a month"
|
||||
msgstr "Moins d'un mois"
|
||||
|
||||
#: _public.php:317
|
||||
msgid "From 1 to 6 month"
|
||||
msgstr "De 1 à 6 mois"
|
||||
|
||||
#: _public.php:318
|
||||
msgid "From 6 to 12 month"
|
||||
msgstr "De 6 à 12 mois"
|
||||
|
||||
#: _public.php:319
|
||||
msgid "More than a year"
|
||||
msgstr "Plus d'un an"
|
||||
|
||||
#: _public.php:326
|
||||
msgid "Entry"
|
||||
msgstr "Publication"
|
||||
|
||||
#: _public.php:327
|
||||
msgid "Page"
|
||||
msgstr "Page"
|
||||
|
||||
#: _public.php:328
|
||||
msgid "Poll"
|
||||
msgstr "Sondage"
|
||||
|
||||
#: _public.php:329
|
||||
msgid "Event"
|
||||
msgstr "Événement"
|
||||
|
||||
#: _widgets.php:114
|
||||
msgid "Reverse order"
|
||||
msgstr "Inverser l'ordre"
|
||||
|
||||
#: _widgets.php:115
|
||||
msgid "Filter order"
|
||||
msgstr "Options de tri"
|
||||
|
||||
#: _widgets.php:135
|
||||
msgid "Filter options"
|
||||
msgstr "Options du filtre"
|
||||
|
||||
#: _widgets.php:151
|
||||
msgid "Filter by age"
|
||||
msgstr "Filtrer par date"
|
||||
|
||||
#: _widgets.php:171
|
||||
msgid "Filter by type"
|
||||
msgstr "Filtrer par type"
|
||||
|
||||
#: _widgets.php:192
|
||||
msgid "Filter by category"
|
||||
msgstr "Filter par catégorie"
|
||||
|
||||
#: _widgets.php:213
|
||||
msgid "Filter by author"
|
||||
msgstr "Filtrer par auteur"
|
||||
|
Loading…
Reference in a new issue