Browse Source

Un peu de recherche, lien de la page préfixes qui finalement est très utile et filtrage des articles du secteur hors plugin

master
eric@smellup.net 2 years ago
parent
commit
5b10cba9c9
  1. 25
      base/pluginspip_declarations.php
  2. 6
      content/sommaire.html
  3. 1
      footer/dist.html
  4. 31
      formulaires/recherche.html
  5. 33
      formulaires/recherche.php
  6. 3
      paquet.xml
  7. 22
      scss/galactic_theme.scss
  8. 177
      scss/theme/formulaires.scss

25
base/pluginspip_declarations.php

@ -6,5 +6,30 @@ if (!defined('_ECRIRE_INC_VERSION')) {
function pluginspip_declarer_champs_extras($champs = array()) {
// Table spip_articles : on ajoute le préfixe du plugin
/* if (!is_array($champs['spip_articles'])) {
$champs['spip_articles'] = array();
}
$champs['spip_articles']['prefixe'] = array(
'saisie' => 'case',
'options' => array(
'nom' => 'autodoc',
'label' => 'Autodoc des plugins',
'label_case' => 'L\'article décrit un plugin qui possède une documentation de son code (PHPDoc)',
'valeur_oui' => 'on',
'restrictions' => array(
'modifier' => array(
'auteur' => 'admin',
),
),
'sql' => 'varchar(3) DEFAULT \'\' NOT NULL',
'rechercher_ponderation' => '2',
),
'versionner' => true,
'verifier' => array(
),
);*/
return $champs;
}

6
content/sommaire.html

@ -13,9 +13,11 @@
pas=#EVAL{_PLUGINSPIP_PAS_MAJ_PLUGINS}, ajax} />
</div>
#SET{id_secteur_nonplugin, 0}
<BOUCLE_secteurs_plugin(RUBRIQUES) {titre_mot=NonPlugin}>#SET{id_secteur_nonplugin, #ID_SECTEUR}</BOUCLE_secteurs_plugin>
[(#REM) Les 2 articles publies les plus récents ]
<div class="resumes resumes--recents">
<BOUCLE_recents(ARTICLES){!par date}{0,2}{doublons}>
<BOUCLE_recents(ARTICLES){!id_secteur=#GET{id_secteur_nonplugin}}{!par date}{0,2}{doublons}>
<div class="resume block-link-parent" lang="#LANG" xml:lang="#LANG" dir="#LANG_DIR">
<h3 class="resume__titre"><a class="block-link" href="#URL_ARTICLE">[(#LOGO_ARTICLE_RUBRIQUE|image_reduire{80,80}|image_aplatir{png,ffffff}) ][(#MODELE{lang_article,lang=#ENV{lang}}) ]#TITRE</a></h3>
<p class="resume__date">[(#DATE|affdate_jourcourt)][ &ndash;&nbsp;(#MODELE{nb_commentaires})]</p>
@ -32,7 +34,7 @@
<h3>[(#VALEUR|=={1}|?{<:pluginspip:titre_articles_recents:>, &nbsp;})]</h3>
<ul class="listeResultats">
[(#REM) ecriture optimisee]
<BOUCLE_articles_recents(ARTICLES){!id_mot=239}{doublons} {!par date}{0,5}>
<BOUCLE_articles_recents(ARTICLES){!id_secteur=#GET{id_secteur_nonplugin}}{!id_mot=239}{doublons} {!par date}{0,5}>
<li class="listeResultats__item--separateur" lang="#LANG" xml:lang="#LANG" dir="#LANG_DIR">
<a href="#URL_ARTICLE">[(#MODELE{lang_article,lang=#ENV{lang}}) ]#TITRE</a>
<small>[(#MAJ|date_relative)]</small>

1
footer/dist.html

@ -3,6 +3,7 @@
[(#SESSION{id_auteur}|oui)<li><a href="#URL_LOGOUT" rel="nofollow"><:icone_deconnecter:></a></li>]
[(#SESSION{id_auteur}|non)<li><a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]" rel="nofollow"><:lien_connecter:></a></li>]
[(#AUTORISER{ecrire})<li><a href="#URL_ECRIRE"><:espace_prive:></a></li>]
<li><a href="[(#URL_PAGE{prefixes}|parametre_url{lang,#LANG})]"><:pluginspip:titre_page_prefixes:></a></li>
<li><a href="[(#URL_PAGE{statistiques}|parametre_url{lang,#LANG})]"><:pluginspip:titre_page_statistiques:></a></li>
[<li> (#PLUGIN{PLUGONET}|oui)<a href="#URL_PAGE{valider_paquet}"><:pluginspip:titre_page_valider_paquet:></a></li>]
<li class="rss"><a href="#URL_PAGE{backend-paquets}" rel="alternate" title="<:syndiquer_site:>"><:pluginspip:titre_rss_plugins:></a></li>

31
formulaires/recherche.html

@ -0,0 +1,31 @@
<div class="formulaire_spip formulaire_recherche[ (#ENV{class})]" id="formulaire_recherche">
<form action="[(#ENV{action})]" method="get">
[(#ENV{action}|form_hidden)]
[<input type="hidden" name="lang" value="(#ENV{lang})"/>]
<div class="search">
<label for="#ENV{_id_champ}" class="visuallyhidden">
<:info_rechercher_02:>
</label>
[(#CHEMIN{images/icone-loupe.svg}|file_get_contents|replace{'<svg ','<svg height="16" '})]
<input type="search" placeholder="<:info_rechercher:>" name="recherche" id="#ENV{_id_champ}" [ value="(#ENV{recherche})" ] accesskey="4" autocapitalize="off" autocorrect="off"/>
</div>
<B_versions>
<div class="branche">
<label for="compatible_spip" class="visuallyhidden">
<:pluginspip:info_compatible:>
</label>
<select name="compatible_spip" id="compatible_spip">
<option value="*"[ (#ENV{compatible_spip, #EVAL{_PLUGINSPIP_BRANCHE_STABLE}}|=={*}|oui)selected="selected"]><:pluginspip:toutes_versions_spip:></option>
<BOUCLE_versions(DATA){source table, #SVP_BRANCHES_SPIP}>
<option value="#VALEUR"[ (#ENV{compatible_spip, #EVAL{_PLUGINSPIP_BRANCHE_STABLE}}|=={#VALEUR}|oui)selected="selected"]>SPIP #VALEUR</option>
</BOUCLE_versions>
</select>
</div>
</B_versions>
<div class="submit">
<input type="submit" value="&gt;&gt;" title="<:info_rechercher:>"/>
</div>
</form>
</div>

33
formulaires/recherche.php

@ -0,0 +1,33 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
* chargement des valeurs par defaut des champs du #FORMULAIRE_RECHERCHE
* on peut lui passer l'url de destination en premier argument
* on peut passer une deuxième chaine qui va différencier le formulaire pour pouvoir en utiliser plusieurs sur une même page
* Pour Plugins SPIP on passe systématiquement la compatibilité SPIP.
*
* @param string $lien URL amène le formulaire validé
* @param string $class Une class différenciant le formulaire
* @return array
*/
function formulaires_recherche_charger_dist($lien = '', $class=''){
if ($GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site'])
$lang = $GLOBALS['spip_lang'];
else
$lang='';
$action = ($lien ? $lien : generer_url_public('recherche')); # action specifique, ne passe pas par Verifier, ni Traiter
return
array(
'action' => $action,
'recherche' => _request('recherche'),
'compatible_spip' => _request('compatible_spip'),
'lang' => $lang,
'class' => $class,
'_id_champ' => $class ? substr(md5($action.$class),0,4) : 'recherche'
);
}
?>

3
paquet.xml

@ -5,6 +5,7 @@
etat="dev"
compatibilite="[3.1.0;3.2.*]"
logo="logo_pluginspip-64.png"
schema="1"
>
<nom>Galactic - Plugins SPIP</nom>
@ -25,4 +26,6 @@
<utilise nom="minibando" compatibilite="[1.1.5;[" />
<utilise nom="faq" compatibilite="[3.0.6;[" />
<pipeline nom="declarer_champs_extras" inclure="base/pluginspip_declarations.php" />
</paquet>

22
scss/galactic_theme.scss

@ -1,3 +1,25 @@
// Structuration de bloc contenant le formulaire de recherche
.header__search {
box-shadow: none;
background: none;
.formulaire_recherche form {
display: flex;
flex-wrap: nowrap;
margin-left: -0.5em;
margin-right: -0.5em;
.search {
width: calc(70% - 1em);
margin-left: 0.5em;
margin-right: 0.5em;
}
.branche {
width: calc(30% - 1em);
margin-left: 0.5em;
margin-right: 0.5em;
}
}
}
// Couleur du logo
.header__nav svg * {
fill: $couleur-nav;

177
scss/theme/formulaires.scss

@ -0,0 +1,177 @@
/* Colorer pour rendre visible tous les formulaires */
.formulaire_spip:not(.formulaire_recherche) {
background: $couleur-gris5;
padding: 1em;
}
/* Comprimer le formulaire de login */
.formulaire_login {
position: relative;
#pass_securise {
float: right;
}
.editer_password .details {
margin-bottom: 0;
}
.editer_session {
margin-bottom: 0;
}
fieldset {
margin: 0;
}
.boutons {
margin-top: 0;
padding: 0;
position: absolute;
bottom: 1em;
right: 1em;
}
}
.formulaire_oubli {
padding: 0 1em;
fieldset {
margin: 0;
}
.boutons {
padding: 0;
}
}
.formulaire_forum {
margin-top: 1em;
.texte {
font-size: .9em;
}
.explication {
font-size: .8em;
}
.titre_groupe {
font-weight: normal;
display: inline-block;
}
.choix_mots {
margin-left: 1em;
margin-bottom: 1em;
columns: 3;
@include media($bp-medium) {
columns: 2;
}
@include media($bp-small) {
columns: 1;
}
}
.editer_notification {
border: 1px solid #DDD;
border-radius: 5px;
background: rgba(255, 255, 255, .3);
padding-left: 1em;
margin-bottom: 0;
.choix label {
font-size: .9em;
}
}
fieldset.qui {
margin-top: 0;
}
fieldset.commentaire {
margin-bottom: 0;
margin-top: 0;
}
fieldset + fieldset.commentaire {
margin-top: 1.5em;
}
}
.formulaire_spip {
fieldset.previsu {
background: white;
padding: 1em 1em 0 1em;
border: 3px solid #ECC218;
& > legend {
margin-top: -1.2em;
}
.comment-meta {
overflow: auto;
border-bottom: 3px solid $couleur-gris5;
padding-bottom: .5em;
.spip_logo {
float: right;
height: auto !important;
max-width: 20px !important;
}
}
}
}
.formulaire_recherche_ajax {
form {
position: relative;
width: 100%;
}
svg {
display: block;
position: absolute;
top: 50%;
transform: translateY(-50%);
left: em(12px);
width: em(12px);
height: em(12px);
* {
stroke: $couleur-nav;
}
}
div.search {
width: 100%;
}
a.close {
position: absolute;
top: 50%;
transform: translateY(-50%);
right: 0;
padding: em(6px) em(12px);
color: $couleur-gris4b;
&:hover {
color: $couleur-lien;
}
}
div.submit {
display: none;
}
input[type="search"] {
border: 1px solid $couleur-gris4b;;
height: em(36px);
width: 100%;
padding-left: em(34px);
padding-right: 15%;
&:focus {
border: 1px solid $couleur-nav;
}
}
}
.formulaire_ecrire_auteur {
padding: 1em 2em;
legend {
text-transform: none;
}
fieldset:last-of-type {
margin-bottom: 0;
}
.boutons {
margin-top: 0;
}
.previsu .comment-meta {
margin-bottom: .5em;
}
}
.formulaire_recherche_auteur {
label {
display: block;
}
input[type=text] {
max-width: 80%;
}
}