Browse Source

Odaiba: Un squelette minimal en deux colonnes sous Bootstrap 4

svn/root/tags/v1.0.7
erational@erational.org 1 year ago
commit
92f151dd9f
64 changed files with 20187 additions and 0 deletions
  1. +64
    -0
      .gitattributes
  2. +68
    -0
      404.html
  3. +170
    -0
      _patron_article.html
  4. +34
    -0
      article.html
  5. +33
    -0
      auteur.html
  6. +26
    -0
      base/odaiba.php
  7. +9887
    -0
      css/bootstrap.css
  8. BIN
      css/font/core_sans_m_45_regular-webfont.woff
  9. BIN
      css/font/core_sans_m_45_regular-webfont.woff2
  10. BIN
      css/font/core_sans_m_45_regular_italic-webfont.woff
  11. BIN
      css/font/core_sans_m_45_regular_italic-webfont.woff2
  12. BIN
      css/font/coresansm65bold-italic-webfont.woff
  13. BIN
      css/font/coresansm65bold-italic-webfont.woff2
  14. BIN
      css/font/coresansm65bold-webfont.woff
  15. BIN
      css/font/coresansm65bold-webfont.woff2
  16. +1769
    -0
      css/style.css
  17. +58
    -0
      formulaires/configurer_odaiba.html
  18. +19
    -0
      formulaires/recherche.html
  19. BIN
      img/404.png
  20. BIN
      img/auteur-generique.png
  21. BIN
      img/but-top.png
  22. BIN
      img/icon-doc.png
  23. BIN
      img/logo-generique.png
  24. BIN
      img/odaiba.png
  25. +1
    -0
      img/search.svg
  26. BIN
      img/test-illus.jpg
  27. BIN
      img/test-logo.jpg
  28. BIN
      img/test-pub-2.jpg
  29. BIN
      img/test.jpg
  30. +119
    -0
      inc/inc_article_full.html
  31. +37
    -0
      inc/inc_article_preview.html
  32. +51
    -0
      inc/inc_aside.html
  33. +66
    -0
      inc/inc_auteur.html
  34. +28
    -0
      inc/inc_auteur_preview.html
  35. +34
    -0
      inc/inc_footer.html
  36. +24
    -0
      inc/inc_head.html
  37. +22
    -0
      inc/inc_liste_articles.html
  38. +30
    -0
      inc/inc_logo_article.html
  39. +41
    -0
      inc/inc_recherche.html
  40. +36
    -0
      inc/inc_recherche_liste_articles.html
  41. +78
    -0
      inc/inc_rubrique.html
  42. +16
    -0
      inc/inc_rubrique_liste_articles_actu.html
  43. +16
    -0
      inc/inc_rubrique_liste_articles_numero.html
  44. +95
    -0
      inc/inc_sommaire.html
  45. +6818
    -0
      js/bootstrap.bundle.js
  46. +97
    -0
      js/gui.js
  47. +109
    -0
      lang/odaiba_fr.php
  48. +15
    -0
      lang/paquet-odaiba_fr.php
  49. +52
    -0
      modeles/image.html
  50. +7
    -0
      mot.html
  51. +53
    -0
      odaiba_administrations.php
  52. +18
    -0
      odaiba_options.php
  53. +25
    -0
      paquet.xml
  54. +6
    -0
      plan.html
  55. +7
    -0
      prive/squelettes/contenu/configurer_odaiba.html
  56. +15
    -0
      prive/squelettes/navigation/configurer_odaiba.html
  57. BIN
      prive/themes/spip/images/odaiba-128.png
  58. BIN
      prive/themes/spip/images/odaiba-16.png
  59. BIN
      prive/themes/spip/images/odaiba-24.png
  60. BIN
      prive/themes/spip/images/odaiba-48.png
  61. +69
    -0
      recherche.html
  62. +27
    -0
      robots.txt.html
  63. +36
    -0
      rubrique.html
  64. +11
    -0
      sommaire.html

+ 64
- 0
.gitattributes View File

@ -0,0 +1,64 @@
* text=auto !eol
/404.html -text
/_patron_article.html -text
/article.html -text
/auteur.html -text
base/odaiba.php -text
css/bootstrap.css -text
css/font/core_sans_m_45_regular-webfont.woff -text
css/font/core_sans_m_45_regular-webfont.woff2 -text
css/font/core_sans_m_45_regular_italic-webfont.woff -text
css/font/core_sans_m_45_regular_italic-webfont.woff2 -text
css/font/coresansm65bold-italic-webfont.woff -text
css/font/coresansm65bold-italic-webfont.woff2 -text
css/font/coresansm65bold-webfont.woff -text
css/font/coresansm65bold-webfont.woff2 -text
css/style.css -text
formulaires/configurer_odaiba.html -text
formulaires/recherche.html -text
img/404.png -text
img/auteur-generique.png -text
img/but-top.png -text
img/icon-doc.png -text
img/logo-generique.png -text
img/odaiba.png -text
img/search.svg -text
img/test-illus.jpg -text
img/test-logo.jpg -text
img/test-pub-2.jpg -text
img/test.jpg -text
inc/inc_article_full.html -text
inc/inc_article_preview.html -text
inc/inc_aside.html -text
inc/inc_auteur.html -text
inc/inc_auteur_preview.html -text
inc/inc_footer.html -text
inc/inc_head.html -text
inc/inc_liste_articles.html -text
inc/inc_logo_article.html -text
inc/inc_recherche.html -text
inc/inc_recherche_liste_articles.html -text
inc/inc_rubrique.html -text
inc/inc_rubrique_liste_articles_actu.html -text
inc/inc_rubrique_liste_articles_numero.html -text
inc/inc_sommaire.html -text
js/bootstrap.bundle.js -text
js/gui.js -text
lang/odaiba_fr.php -text
lang/paquet-odaiba_fr.php -text
modeles/image.html -text
/mot.html -text
/odaiba_administrations.php -text
/odaiba_options.php -text
/paquet.xml -text
/plan.html -text
prive/squelettes/contenu/configurer_odaiba.html -text
prive/squelettes/navigation/configurer_odaiba.html -text
prive/themes/spip/images/odaiba-128.png -text
prive/themes/spip/images/odaiba-16.png -text
prive/themes/spip/images/odaiba-24.png -text
prive/themes/spip/images/odaiba-48.png -text
/recherche.html -text
/robots.txt.html -text
/rubrique.html -text
/sommaire.html -text

+ 68
- 0
404.html View File

@ -0,0 +1,68 @@
[(#REM)
page 404
param:
- (rien)
]#HTTP_HEADER{HTTP/1.0 #ENV{code,'404 Not Found'}}
#HTTP_HEADER{"Cache-Control: no-store, no-cache, must-revalidate"}
#HTTP_HEADER{Pragma: no-cache}<!DOCTYPE html>
<html lang="#LANG">
<head>
<INCLURE{fond=inc/inc_head,no-bot} />
<title><:pass_erreur:> [(#ENV{status, 404}|intval) - ][(#NOM_SITE_SPIP|textebrut)]</title>
</head>
<body>
<!-- layout: page -->
<div class="odaiba-page">
<INCLURE{fond=inc/inc_aside} />
<!-- layout: main -->
<div class="odaiba-main[(#CONFIG{odaiba/affiche_recherche}|oui) odaiba-main--withsearch]">
<!-- layout: main > section -->
<section class="odaiba-main-section">
<!-- headline -->
<div class="headline-wrapper">
<div class="content container">
<div class="row">
<div class="col-md-8 col-sm-10 offset-md-1 headline">
<h1><:pass_erreur:> [(#ENV{status, 404}|intval)]<h1>
</div>
</div>
</div>
</div>
<!-- #headline -->
<!-- content -->
<div class="content container">
<div class="row">
<!-- content-main -->
<div class="col-md-10 offset-md-1 content-main order-2 order-md-1">
<!-- Fil d'Ariane -->
<a name="contenu" accesskey="2"></a>
<!-- content -->
<div class="content-main-wrapper article-texte center">
<h2><:odaiba:404_sorry:></h2>
[<img src="(#CHEMIN{img/404.png})" alt="<:pass_erreur:> 404" >]
</div>
</div>
</div>
</div>
<!-- #content -->
<INCLURE{fond=inc/inc_footer} />
</section>
<!-- #layout: main > section -->
</div>
<!-- #layout: main -->
</div>
<!-- #layout: page -->
</body>
</html>

+ 170
- 0
_patron_article.html View File

@ -0,0 +1,170 @@
[(#REM)
patron de la page article
]<!doctype html>
<html lang="#LANG">
<head>
<title>#NOM_SITE_SPIP - Page Patron ARTICLE </title>
<INCLURE{fond=inc/inc_head,no-bot=oui} />
</head>
<body>
<!-- layout: page -->
<div class="odaiba-page">
<INCLURE{fond=inc/inc_aside} />
<!-- layout: main -->
<div class="odaiba-main">
<!-- layout: main > section -->
<section class="odaiba-main-section">
<!-- headline -->
<div class="headline-wrapper">
<div class="content container">
<div class="row">
<div class="col-md-8 col-sm-10 offset-md-1 headline">
<div class="ariane[(#CONFIG{odaiba/affiche_ariane}|non) ariane--hidden]">
<ul>
<li class="home"><a href="#URL_SITE_SPIP"><:odaiba:accueil_site:></a> <span>/</span></li>
<li class="on"><a href="#">Démonstration</a></li>
</ul>
</div>
<h1 class="#EDIT{titre}">Le squelette Odaiba<h1>
</div>
</div>
</div>
</div>
<!-- #headline -->
<!-- content -->
<div class="content container">
<div class="row">
<!-- content-main -->
<div class="col-md-8 offset-md-1 content-main order-2 order-md-1">
<a name="contenu" accesskey="2"></a>
<!-- content -->
<div class="content-main-wrapper article-texte">
<h2 class="spip">Qu'est ce que Odaiba ?</h2>
<p>Ceci est le contenu du champs <strong class="spip">Texte de l'article</strong> éditable par le crayon.<br />Lorem ipsum dolor sit amet consectetuer dignissim pretium porttitor ullamcorper Nam. Urna Pellentesque porttitor eu eros risus vitae metus interdum risus Vivamus. Orci congue Cras pretium ipsum convallis quam ut mattis Integer id. Donec ac egestas lobortis consectetuer Sed fringilla orci sed dui pretium. Suspendisse pede et orci nibh ipsum pede.</p>
<p>Sagittis congue ac amet orci ut Donec nec <a href="#">turpis urna risus</a>. Augue eros est dui orci porttitor nunc Mauris Quisque Vestibulum Vestibulum. Turpis elit orci non nec lobortis eros ut justo leo at. Eu feugiat vitae molestie Nam metus Nunc condimentum id nunc in. Pede urna metus nibh elit dis risus enim neque Curabitur Aenean. Sem ligula hendrerit Integer.</p>
<h2 class="spip">Les objectifs</h2>
<p>Turpis pretium ante nibh ligula ut sed justo Pellentesque metus Vivamus. Id vel fermentum eu tincidunt sed enim lorem magnis sapien senectus. Et interdum justo orci a dui Nam tincidunt Suspendisse Ut nibh. Massa Mauris ut Duis ornare quis magnis gravida amet in tincidunt. Tincidunt eu vel Vestibulum pretium justo et urna.</p>
A l’issue de la formation, le stagiaire sera capable de&nbsp;:
<ul class='spip'>
<li>Concevoir, fabriquer et documenter une réalisation technique numérique.</li>
<li>Concevoir et documenter un parcours pédagogique mobilisant cette réalisation technique, adapté à son contexte professionnel.</li>
<li>D’utiliser les base de l’électronique programmable (Arduino) pour fabriquer des projets</li>
<li>Connaitre et mobiliser des compétences et ressources en fabrication numérique sur son territoire.</li>
<li>Se constituer un réseau d’homologue sur le territoire en vue de projets collaboratifs.</li>
</ul>
<h2 class="spip">Des graphes aussi</h2>
<p>
<span class='spip_document_15941 spip_documents spip_documents_center'>
[(#CHEMIN{img/test.jpg}|balise_img)]
</span></p>
<p>Eu sagittis In sed leo Cras Nunc vel aliquam Curabitur Sed. Sed ut non accumsan orci nunc rutrum lorem nibh cursus mauris. Egestas faucibus elit Sed tempus Nullam natoque massa eu lorem et. Id consectetuer risus elit massa ac vitae faucibus laoreet ligula tristique. Ante Vivamus hac volutpat fringilla eget sem ipsum vel hac turpis. </p>
<p>Dui Vestibulum id Proin id Nunc orci augue id leo et. Augue congue adipiscing aliquam quis lobortis enim at dui scelerisque egestas. Vitae et cursus semper ornare sollicitudin cursus orci Vestibulum Nam at. Euismod mauris convallis porta tristique et neque Sed venenatis pellentesque vel. Magna accumsan sit at porttitor pharetra semper condimentum tortor elit vitae. Ut et vitae habitant quam et Aenean elit Mauris.</p>
<p>Nibh ut scelerisque accumsan Vestibulum interdum tristique elit condimentum nisl tellus. A Lorem mauris facilisis vel aliquam sed justo sed tempus ligula. Morbi magnis vitae Phasellus egestas Duis rutrum cursus ac sit eu. Donec porta metus velit Nam Donec vel nec montes eros rhoncus. Massa quis convallis convallis semper sed consectetuer habitant gravida Duis.</p>
<blockquote class="spip">
<p>La finalité est de permettre aux stagiaires de se construire une culture numérique sur la fabrication numérique dans la perspective de transposer dans le domaine professionnel.</p>
</blockquote>
<p>Felis vitae elit ut sem quam orci Vestibulum ante nibh nec. Enim ridiculus tincidunt Nam dui metus sed In ipsum nec et. Habitasse ultrices id Suspendisse ligula dui leo elit Maecenas quis nibh. Justo auctor eget neque dapibus aliquam Aenean purus orci tincidunt In. Vivamus metus semper interdum ante pellentesque est nibh eu ac.</p>
<h2 class="spip">Exemple de tableaux</h2>
<table class="spip">
<thead>
<tr>
<th>Parfum</th>
<th>Valeur</th>
</tr>
</thead>
<tbody>
<tr class='row_odd odd'>
<td>Vanille</td>
<td>15.05</td>
</tr>
<tr class='row_even even'>
<td>Chocolat</td>
<td>25.05</td>
</tr>
<tr class='row_odd odd'>
<td>Fraise</td>
<td>5.25</td>
</tr>
<tr class='row_even even'>
<td>Mangue</td>
<td>25.05</td>
</tr>
</tbody>
</table>
<p>Neque Cum Suspendisse mi consequat tempus id congue fringilla Vivamus eros. Proin eget nulla Nullam Curabitur platea mauris amet faucibus consequat lorem. Laoreet turpis condimentum sagittis id odio Vivamus Maecenas dui quis est. Neque justo et pretium nisl augue tincidunt consequat Sed ligula sociis. Vel ac molestie enim orci ante Morbi volutpat ante tempus tristique. Tincidunt interdum.</p>
<!-- article meta -->
<div class="date">
Posté le 5 janvier 2020 par <span class="vcard author"><a class="url fn spip_in" href="auteur1.html">Emmanuel de Moura</a></span>
</div>
</div>
<!-- #content -->
</div>
<!-- #content-main -->
<!-- content-side -->
<div class="col-md-3 content-sidebar order-1 order-md-2">
<div class="content-sidebar-logo">
[(#CHEMIN{img/test-logo.jpg}|balise_img|inserer_attribut{class,img-rounded})]
</div>
</div>
</div>
</div>
<!-- #content -->
<!-- ps -->
<div class="ps-wrapper">
<div class="content container">
<div class="row">
<div class="col-md-8 offset-md-1 ps">
<p>Ceci le contenu du champs <strong class="spip">PS de l'article</strong> qui est facultatif.</p>
<p>Nibh ut scelerisque accumsan Vestibulum interdum tristique elit condimentum nisl tellus. A Lorem mauris facilisis vel aliquam sed justo sed tempus ligula. Morbi magnis vitae Phasellus egestas Duis rutrum cursus ac sit eu. Donec porta metus velit Nam Donec vel nec montes eros rhoncus. Massa quis convallis convallis semper sed consectetuer habitant gravida Duis.</p>
</div>
</div>
</div>
</div>
<!-- #ps -->
</section>
<!-- #layout: main > section -->
<INCLURE{fond=inc/inc_footer} />
</div>
<!-- #layout: main -->
</div>
<!-- #layout: page -->
</body>
</html>

+ 34
- 0
article.html View File

@ -0,0 +1,34 @@
[(#REM)
page article
param:
- id_article
]<BOUCLE_art(ARTICLES){id_article}><!DOCTYPE html>
<html lang="#LANG">
<head>
<INCLURE{fond=inc/inc_head} />
<title>[(#TITRE|couper{50,'&nbsp;\[...\]'}|textebrut)] - [(#NOM_SITE_SPIP|textebrut)]</title>
[<meta name="description" content="(#INTRODUCTION{130}|attribut_html)" />]
[<link rel="canonical" href="(#URL_ARTICLE|url_absolue)" />]
</head>
<body>
<!-- layout: page -->
<div class="odaiba-page">
<INCLURE{fond=inc/inc_aside,id_rubrique} />
<!-- layout: main -->
<div class="odaiba-main[(#CONFIG{odaiba/affiche_recherche}|oui) odaiba-main--withsearch]">
<!-- layout: main > section -->
<section class="odaiba-main-section">
<INCLURE{fond=inc/inc_article_full, id_article} />
</section>
<!-- #layout: main > section -->
<INCLURE{fond=inc/inc_footer} />
</div>
</div>
<!-- #layout: page -->
</body>
</html></BOUCLE_art>

+ 33
- 0
auteur.html View File

@ -0,0 +1,33 @@
[(#REM)
page auteur
param:
- id_auteur
]<BOUCLE_auteur(AUTEURS){id_auteur}{tout}><!DOCTYPE html>
<html lang="#LANG">
<head>
<INCLURE{fond=inc/inc_head} />
<title>[(#NOM_AUTEUR|oui)#PRENOM_AUTEUR #NOM_AUTEUR][(#NOM_AUTEUR|non)#NOM][ - (#NOM_SITE_SPIP|textebrut) ]</title>
[<meta name="description" content="(#BIO{150}|attribut_html)" />]
[<link rel="canonical" href="(#URL_AUTEUR|url_absolue)" />]
</head>
<body>
<!-- layout: page -->
<div class="odaiba-page">
<INCLURE{fond=inc/inc_aside} />
<!-- layout: main -->
<div class="odaiba-main[(#CONFIG{odaiba/affiche_recherche}|oui) odaiba-main--withsearch]">
<!-- layout: main > section -->
<section class="odaiba-main-section">
<INCLURE{fond=inc/inc_auteur, id_auteur} />
<INCLURE{fond=inc/inc_footer} />
</section>
<!-- #layout: main > section -->
</div>
<!-- #layout: main -->
</div>
<!-- #layout: page -->
</body>
</html></BOUCLE_auteur>

+ 26
- 0
base/odaiba.php View File

@ -0,0 +1,26 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) {
return;
}
function odaiba_declarer_champs_extras($champs = array()) {
// Table spip_rubriques
$champs['spip_rubriques']['odaiba_type_rubrique'] = array(
'saisie' => 'radio',
'options' => array(
'nom' => 'odaiba_type_rubrique',
'label' => _T('odaiba:odaiba_type_rubrique'),
'sql' => "varchar(30) NOT NULL DEFAULT ''",
'defaut' => 'tri_date',
'datas' => array(
'tri_date' => _T('odaiba:odaiba_type_rubrique_tri_date'),
'tri_num' => _T('odaiba:odaiba_type_rubrique_tri_num'),
),
'restrictions'=>array('voir' => array('auteur' => ''), //Tout le monde peut voir
'modifier' => array('auteur' => 'webmestre')), //Seuls les webmestres peuvent modifier
),
);
return $champs;
}

+ 9887
- 0
css/bootstrap.css
File diff suppressed because it is too large
View File


BIN
css/font/core_sans_m_45_regular-webfont.woff View File


BIN
css/font/core_sans_m_45_regular-webfont.woff2 View File


BIN
css/font/core_sans_m_45_regular_italic-webfont.woff View File


BIN
css/font/core_sans_m_45_regular_italic-webfont.woff2 View File


BIN
css/font/coresansm65bold-italic-webfont.woff View File


BIN
css/font/coresansm65bold-italic-webfont.woff2 View File


BIN
css/font/coresansm65bold-webfont.woff View File


BIN
css/font/coresansm65bold-webfont.woff2 View File


+ 1769
- 0
css/style.css
File diff suppressed because it is too large
View File


+ 58
- 0
formulaires/configurer_odaiba.html View File

@ -0,0 +1,58 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
<h3 class="titrem"><:odaiba:cfg_titre_parametrages:></h3>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<form method="post" action="#ENV{action}">
<div>
#ACTION_FORMULAIRE
<fieldset>
<legend><:odaiba:cfg_accueil:></legend>
[(#SAISIE{selecteur_article, homepage_article,
label=<:odaiba:cfg_homepage_article:>,
explication=<:odaiba:cfg_homepage_article_explication:>})]
</fieldset>
<fieldset>
<legend><:odaiba:cfg_presentation:></legend>
[(#SAISIE{oui_non, affiche_ariane,
label=<:odaiba:cfg_affiche_ariane:>})]
[(#SAISIE{radio, menu_rwd,
label=<:odaiba:cfg_menu_rwd:>,
defaut=fixe,
data=#ARRAY{
lateral,<:odaiba:cfg_menu_rwd_lateral:>,
fixe,<:odaiba:cfg_menu_rwd_fixe:>}
})]
</fieldset>
<fieldset>
<legend><:odaiba:cfg_article:></legend>
[(#SAISIE{oui_non, affiche_date_article,
label=<:odaiba:cfg_affiche_date_article:>})]
[(#SAISIE{oui_non, affiche_auteur_article,
label=<:odaiba:cfg_affiche_auteur_article:>})]
</fieldset>
<fieldset>
[(#SAISIE{oui_non, affiche_recherche,
label=<:odaiba:cfg_affiche_recherche:>})]
<legend><:odaiba:cfg_footer:></legend>
[(#SAISIE{selecteur_article, footer_articles,
multiple=oui,
label=<:odaiba:cfg_footer_articles:>,
explication=<:odaiba:cfg_footer_articles_explication:>})]
</fieldset>
<input type="hidden" name="_meta_casier" value="odaiba" />
<p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
</div>
</form>
</div>
<div style="padding:1rem;background-color:#eee"><:odaiba:ours:></div>

+ 19
- 0
formulaires/recherche.html View File

@ -0,0 +1,19 @@
[(#REM)
formulaire de recherche
param:
- recherche (facultatif) la recherche
]<form action="[(#ENV{action})]" method="get" class="search-form">
<fieldset>
[(#ENV{action}|form_hidden)]
<input type="hidden" name="lang" value="#LANG" />
<input name="page" value="recherche" type="hidden"/>
<input type="search" class="span search" placeholder="Rechercher sur le site" accesskey="4" name="recherche" id="recherche" [ value="(#ENV{recherche})"]>
<!-- <input type="submit" class="search-submit" value="OK" />-->
<input type="image" class="search-submit" src="#CHEMIN{img/search.svg}" alt="" />
</fieldset>
</form>

BIN
img/404.png View File

Before After
Width: 400  |  Height: 425  |  Size: 1.5 KiB

BIN
img/auteur-generique.png View File

Before After
Width: 481  |  Height: 470  |  Size: 6.2 KiB

BIN
img/but-top.png View File

Before After
Width: 50  |  Height: 50  |  Size: 421 B

BIN
img/icon-doc.png View File

Before After
Width: 28  |  Height: 40  |  Size: 1.4 KiB

BIN
img/logo-generique.png View File

Before After
Width: 800  |  Height: 800  |  Size: 15 KiB

BIN
img/odaiba.png View File

Before After
Width: 800  |  Height: 800  |  Size: 35 KiB

+ 1
- 0
img/search.svg View File

@ -0,0 +1 @@
<svg aria-hidden="true" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#ffffff" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"></path></svg>

BIN
img/test-illus.jpg View File

Before After
Width: 715  |  Height: 715  |  Size: 110 KiB

BIN
img/test-logo.jpg View File

Before After
Width: 800  |  Height: 767  |  Size: 38 KiB

BIN
img/test-pub-2.jpg View File

Before After
Width: 706  |  Height: 1000  |  Size: 68 KiB

BIN
img/test.jpg View File

Before After
Width: 719  |  Height: 408  |  Size: 118 KiB

+ 119
- 0
inc/inc_article_full.html View File

@ -0,0 +1,119 @@
[(#REM)
article entier
- contenu (compatible crayons)
- la barre outils est inspiree de inspi plugin outils_article http://www.spip-contrib.net/Boite-a-outils-pour-article,1
- traduction
- avec portfolio
- forums & petitions
on affichage par le surtitre (reserve pour le pied intitue court)
logo: on affiche le logo FR
param:
- id_article
]<BOUCLE_findArt(ARTICLES){id_article}>
<!-- headline -->
<div class="headline-wrapper">
<div class="content container">
<div class="row">
<div class="col-md-8 col-sm-10 offset-md-1 headline">
<div class="ariane[(#CONFIG{odaiba/affiche_ariane}|non) ariane--hidden]">
<ul>
<li class="home"><a href="#URL_SITE_SPIP"><:odaiba:accueil_site:></a><BOUCLE_is_ariane(HIERARCHIE){id_article}{titre !=='^[99]'}> </BOUCLE_is_ariane><span>/</span></B_is_ariane></li>
<BOUCLE_ariane(HIERARCHIE){id_article}{titre !=='^[99]'}><li[(#ID_RUBRIQUE|=={#_findArt:ID_RUBRIQUE}|oui) class="on"]><a href="#URL_RUBRIQUE">[(#TITRE|couper{50})]</a>[(#ID_RUBRIQUE|=={#_findArt:ID_RUBRIQUE}|non)<span>/</span>]</li></BOUCLE_ariane>
</ul>
</div>
<BOUCLE_rub(RUBRIQUES){titre !=='^[99]'}{id_rubrique}>
[(#_findArt:TITRE|=={#TITRE}|non)<div class="headline-context"><a href="#URL_RUBRIQUE" class="headline-link">#TITRE</a></div>]
</BOUCLE_rub>
<h1 class="#EDIT{titre}">#TITRE<h1>
</div>
</div>
</div>
</div>
<!-- #headline -->
<!-- content -->
<div class="content container">
<div class="row">
<!-- content-main -->
<div class="col-md-8 offset-md-1 content-main order-2 order-md-1">
<!-- Fil d'Ariane -->
<a name="contenu" accesskey="2"></a>
<!-- content -->
<div class="content-main-wrapper article-texte">
[<h2 class="#EDIT{soustitre} article-soustitre">(#SOUSTITRE)</h2>]
[<div class="#EDIT{descriptif} article-descriptif">(#DESCRIPTIF)</div>]
[<div class="#EDIT{chapo} article-chapo">(#CHAPO)</div>]
[<div class="#EDIT{texte} article-texte">(#TEXTE|image_reduire{1200,0})</div>]
[<div class="hypertxt"><strong>URL: </strong> <a href="#URL_SITE" class="spip_out">(#NOM_SITE)</a></div>]
[<div class="article-notes">(#NOTES)</div>]
[(#REM) Portfolio: album d'images avec visionneuse fancybox]
<B_doc><div class="portfolio">
<BOUCLE_doc(DOCUMENTS){id_article}{extension IN png,jpg,gif}{mode=document}{par num titre, date}{vu=non}>
<div class="portfolio-item">[<a href="[(#URL_DOCUMENT)]" type="#MIME_TYPE" rel="fancy-g1"[ title="(#TITRE|attribut_html) [ - (#DESCRIPTIF|attribut_html)]"]>(#FICHIER|copie_locale|image_reduire{0,160}|image_recadre{110,110,center}|image_aplatir{jpg,ffffff})</a>]</div></BOUCLE_doc>
</div></B_doc>
<BOUCLE_doc_exclure_img(DOCUMENTS){id_article}{extension IN png,jpg,gif}{mode=document}{doublons}> </BOUCLE_doc_exclure_img>
[<!-- autre doc -->(#REM) Autres documents joints a l'article]
<B_docjoint><div class='spacer'></div>
<BOUCLE_docjoint(DOCUMENTS){id_article}{mode=document}{doublons}>
<div class="docjoint">
<div><a href="#URL_DOCUMENT" title="<:bouton_telecharger:>" type="#MIME_TYPE" download>#LOGO_DOCUMENT</a>
<small>#TYPE_DOCUMENT[ - (#TAILLE|taille_en_octets)]</small></div>
[<strong><a href="#URL_DOCUMENT">(#TITRE)</a></strong><br />]
[(#DESCRIPTIF)]
</div>
</BOUCLE_docjoint>
<div class="spacer"></div>
<!-- article meta -->
<div class="date">
[(#CONFIG{odaiba/affiche_date_article}|oui) [<:odaiba:posted:> (#DATE|affdate)]]
[(#CONFIG{odaiba/affiche_auteur_article}|oui) [<:par:> (#LESAUTEURS)]]
</div>
</div>
<!-- #content -->
</div>
<!-- #content-main -->
<!-- content-side -->
<div class="col-md-3 content-sidebar order-1 order-md-2">
<div class="content-sidebar-logo">
[(#LOGO_ARTICLE|image_passe_partout{600,600}|image_recadre{600,600}|inserer_attribut{class,img-rounded})]
</div>
</div>
<!-- #content-side -->
</div>
</div>
<!-- #content -->
[<!-- ps -->
<div class="ps-wrapper">
<div class="content container">
<div class="row">
<div class="col-md-8 offset-md-1 ps">
<div class="#EDIT{ps} article-ps">(#PS)</div>
</div>
</div>
</div>
</div>
<!-- #ps -->]
</BOUCLE_findArt>

+ 37
- 0
inc/inc_article_preview.html View File

@ -0,0 +1,37 @@
[(#REM)
article preview
param:
- id_article
- article_preview_short (facultatif) affichage allegé
- affiche_categorie (facultatif) affiche la rubrique non caché
]<BOUCLE_art(ARTICLES){id_article}>
<!-- article-preview #ID_ARTICLE-->
<div class="article-preview[(#ENV{article_preview_short}|oui) article-preview-short]">
<BOUCLE_rub(RUBRIQUES){id_rubrique}{titre !=='^[99]'}{si #ENV{affiche_categorie}|=={oui}|oui}>
<div class="article-preview-theme">#TITRE</div>
</BOUCLE_rub>
<a href="#URL_ARTICLE" class="article-preview-texte">
[<div class="article-surtitre">(#SURTITRE|couper{100})</div>]
<h1 class="article-preview-titre">#TITRE</h1>
<div class="article-preview-img">
[(#ENV{article_preview_short}|non)
[(#LOGO_ARTICLE|image_passe_partout{300,300}|image_recadre{300,300}|inserer_attribut{class,img-rounded})]
]
</div>
[(#ENV{article_preview_short}|non)
<div class="article-preview-intro">
[(#INTRODUCTION|couper{300})]
</div>
]
</a>
[(#ENV{article_preview_short}|non)
<div class="article-preview-meta">
[(#DATE|nom_jour|ucfirst) ][(#DATE|affdate)][ - par (#LESAUTEURS)]
</div>]
</div>
<!-- #article-preview -->
</BOUCLE_art>
#FILTRE{trim}

+ 51
- 0
inc/inc_aside.html View File

@ -0,0 +1,51 @@
[(#REM)
aside : banniere et barre de navigation
param:
- id_rubrique (facultatif) expose les rubriques
- id_mot (facultatif) expose les mots-clés
] <!-- layout: aside -->
[(#CONFIG{odaiba/menu_rwd}|=={lateral}|oui)
<a href="#" class="js-odaiba-nav-toggle odaiba-nav-toggle"><i></i></a>
]
<aside class="odaiba-aside">
<h1 class="odaiba-logo">
<a href="#URL_SITE_SPIP">
<span class="odaiba-logo-img">#LOGO_SITE_SPIP</span>
#NOM_SITE_SPIP
</a>
</h1>
<nav class="odaiba-main-menu" role="navigation">
<ul>
<li><a href="#URL_SITE_SPIP"><:odaiba:accueil_site:></a></li>
<BOUCLE_nav(RUBRIQUES){titre !=='^[99]'}{par num titre}{racine}>
<li[(#EXPOSE|oui) class="odaiba-active"]><a href="#URL_RUBRIQUE">#TITRE</a></li>
</BOUCLE_nav>
</ul>
</nav>
</aside>
<!-- #layout: aside -->
<BOUCLE_is_menu_rwd_fixe(ARTICLES){0,1}{si #CONFIG{odaiba/menu_rwd}|=={lateral}|non}> </BOUCLE_is_menu_rwd_fixe>
<!-- header responsive (fixed navbar) -->
<nav class="navbar navbar-expand-md navbar-dark fixed-top rwd-show">
<a class="navbar-brand" href="#URL_SITE_SPIP">
[(#LOGO_SITE_SPIP|inserer_attribut{class,header-logo-rwd})]
<span class="header-name-rwd">#NOM_SITE_SPIP</span>
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav mr-auto">
<BOUCLE_nav_rwd(RUBRIQUES){titre !=='^[99]'}{par num titre}{racine}>
<li class="nav-item"><a href="#URL_RUBRIQUE" class="nav-link[ (#EXPOSE)]">#TITRE</a></li>
</BOUCLE_nav_rwd>
</ul>
</div>
</nav>
<!-- header responsive -->
</B_is_menu_rwd_fixe>
#FILTRE{trim}

+ 66
- 0
inc/inc_auteur.html View File

@ -0,0 +1,66 @@
[(#REM)
noisette auteur
param:
- id_mot
]<BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
<!-- headline -->
<div class="headline-wrapper">
<div class="content container">
<div class="row">
<div class="col-md-8 col-sm-10 offset-md-1 headline">
<div class="ariane[(#CONFIG{odaiba/affiche_ariane}|non) ariane--hidden]">
<ul>
<li class="home"><a href="#URL_SITE_SPIP"><:odaiba:accueil_site:></a><BOUCLE_is_ariane(HIERARCHIE){id_article}{titre !=='^[99]'}> </BOUCLE_is_ariane><span>/</span></B_is_ariane></li>
<BOUCLE_ariane(HIERARCHIE){id_article}{titre !=='^[99]'}><li[(#ID_RUBRIQUE|=={#_findArt:ID_RUBRIQUE}|oui) class="on"]><a href="#URL_RUBRIQUE">[(#TITRE|couper{50})]</a>[(#ID_RUBRIQUE|=={#_findArt:ID_RUBRIQUE}|non)<span>/</span>]</li></BOUCLE_ariane>
</ul>
</div>
<h1 class="#EDIT{nom}">#NOM<h1>
</div>
</div>
</div>
</div>
<!-- #headline -->
<!-- content -->
<div class="content container">
<div class="row">
<!-- content-main -->
<div class="col-md-8 offset-md-1 content-main order-2 order-md-1">
<!-- Fil d'Ariane -->
<a name="contenu" accesskey="2"></a>
<!-- content -->
<div class="content-main-wrapper article-texte">
[<div class="#EDIT{bio} article-texte">(#BIO)</div>]
[<div class="#EDIT{hyperlien} article-hyperlien">URL: <a href="(#URL_SITE)" class="spip_out">#URL_SITE</a></div>]
[<div class="notes articles-notes">(#NOTES)</div>]
<!-- auteur contact ? -->
[<br /><div class="spacer"></div>(#FORMULAIRE_ECRIRE_AUTEUR)]
</div>
<!-- #content -->
</div>
<!-- #content-main -->
<!-- content-side -->
<div class="col-md-3 content-sidebar order-1 order-md-2">
<div class="content-sidebar-logo">
[(#LOGO_AUTEUR|image_passe_partout{400,400}|image_recadre{400,400}|inserer_attribut{class,img-rounded})]
</div>
</div>
<!-- #content-side -->
</div>
</div>
<!-- #content -->
</BOUCLE_auteur>

+ 28
- 0
inc/inc_auteur_preview.html View File

@ -0,0 +1,28 @@
[(#REM)
noisette auteur preview
param:
- id_mot
]<BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
<!-- aut #ID_AUTEUR -->
<div class="auteur-preview">
<a href="#URL_AUTEUR" class="auteur-preview-title">
<div class="auteur-preview-img">
[(#LOGO_AUTEUR|oui)
[(#LOGO_AUTEUR|image_passe_partout{200,200}|image_recadre{200,200}|inserer_attribut{alt,#TITRE}|inserer_attribut{class,logo-auteur})]
]
[(#LOGO_AUTEUR|non)
[(#CHEMIN{img/logo_auteur.png}|image_passe_partout{200,200}|image_recadre{200,200}|inserer_attribut{alt,#TITRE}|inserer_attribut{class,logo-auteur})]
]
</div>
<div class="auteur-preview-text">
<h1>#NOM</h1>
[<div class="auteur-preview-bio">(#BIO|couper{200})</div>]
</div>
</a>
</div>
<!-- aut #ID_AUTEUR -->
</BOUCLE_auteur>

+ 34
- 0
inc/inc_footer.html View File

@ -0,0 +1,34 @@
[(#REM)
pied de page
param:
(aucun)
]
<!-- footer -->
<footer class="footer">
<div class="container"">
[<div class="go-top">
<a href="#top"><img src="(#CHEMIN{img/but-top.png})" alt="haut de page" width="50" height="50" /></a>
</div>]
[(#CONFIG{odaiba/affiche_recherche}|oui)
<!-- footer-row-1 -->
<div class="row justify-content-center footer-row-1">
<div class="col-10">
#FORMULAIRE_RECHERCHE
</div>
</div>]
<!-- footer-row-2 -->
<div class="row footer-row-2">
<B_art_lien><ul class="footer-link">
<BOUCLE_art_lien(ARTICLES){id_article IN #CONFIG{odaiba/footer_articles}|picker_selected{article}}>
<li><a href="#URL_ARTICLE">#TITRE</a></li>
</BOUCLE_art_lien>
</ul></B_art_lien>
</div>
</div>
</footer>
<!-- #footer -->

+ 24
- 0
inc/inc_head.html View File

@ -0,0 +1,24 @@
[(#REM)
section head
param:
- no-bot: pas indexation
] <meta charset="#CHARSET" />
<meta http-equiv="imagetoolbar" content="no"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
[(#ENV{no-bot}|oui)<meta name="robots" content="none" >]
[(#ENV{no-bot}|non)<meta name="robots" content="index, follow, all">]
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="no">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="msapplication-tap-highlight" content="no">
#INSERT_HEAD_CSS
<link rel="stylesheet" href="#CHEMIN{css/bootstrap.css}" />
<link rel="stylesheet" href="#CHEMIN{css/style.css}" />
[<link rel="stylesheet" href="(#CHEMIN{css/perso.css})" />]
#INSERT_HEAD
<script src="#CHEMIN{js/bootstrap.bundle.js}" type='text/javascript'></script>
<script src="#CHEMIN{js/gui.js}" type='text/javascript'></script>
[<link rel="alternate" type="application/rss+xml" title="<:syndiquer_site:>" href="(#URL_PAGE{backend})" />]
#FILTRE{trim}

+ 22
- 0
inc/inc_liste_articles.html View File

@ -0,0 +1,22 @@
[(#REM)
listing des articles trié par date
param:
- env pour pagination ajax
]<B_actu>
#ANCRE_PAGINATION
[(#ENV{id_auteur}|oui)<h3 class="spip marger-top"><:odaiba:auteur_articles:></h3>]
[(#ENV{id_rubrique}|oui)<h3 class="spip marger-top"><:odaiba:rubrique_articles:></h3>]
<BOUCLE_actu(ARTICLES){id_auteur ?}{id_mot?}{id_rubrique?}{recherche?}{id_mot ?}{!par date}{pagination 6}>
<INCLURE{fond=inc/inc_article_preview, id_article, env} />
</BOUCLE_actu>
[<div class="pagination">
<span class="pagination-titre"><:odaiba:pagination_pages:>:</span>
(#PAGINATION{page})
- #GRAND_TOTAL <:odaiba:resultats_out:>
</div>]
</B_actu>

+ 30
- 0
inc/inc_logo_article.html View File

@ -0,0 +1,30 @@
[(#REM)
retourner le logo d'un article aux dimensions indiqués
sinon retourne une image générique
param:
- id_article
- l largeur - defaut : 500
- h hauteur - defaut : 500
- titre
- objet (facultatif) permet d'etendre à sur d'autres types d'objets que les mots
]
[(#SET{l,#ENV{l}|sinon{500}})]
[(#SET{h,#ENV{h}|sinon{500}})]
<BOUCLE_a(ARTICLES){id_article}{si #ENV{objet}|non}>
[(#LOGO_ARTICLE|oui)[(#LOGO_ARTICLE|image_passe_partout{#GET{l},#GET{h}}|image_recadre{#GET{l},#GET{h}}|inserer_attribut{class,''}|inserer_attribut{alt,#ENV{titre}|textebrut})]]
<BOUCLE_img(DOCUMENTS){id_article}{extension IN jpg,gif,png}{par rang_lien, num titre, titre}{si #LOGO_ARTICLE|non}{0,1}>
[(#FICHIER|image_passe_partout{#GET{l},#GET{h}}|image_recadre{#GET{l},#GET{h}}|image_masque{#GET{masque}}|inserer_attribut{class,#ENV{titre}|textebrut})]]
</BOUCLE_img></B_img>
[(#LOGO_ARTICLE|non)[(#CHEMIN{img/logo-generique.png}|image_passe_partout{#GET{l},#GET{h}}|image_recadre{#GET{l},#GET{h}}|image_masque{#GET{masque}}|inserer_attribut{class,#ENV{titre}|textebrut})]]
<//B_img>
</BOUCLE_a>
<BOUCLE_m(MOTS){id_mot}{si #ENV{objet}|=={mot}|oui}>
[(#LOGO_MOT|oui)[(#LOGO_MOT|image_passe_partout{#GET{l},#GET{h}}|image_recadre{#GET{l},#GET{h}}|inserer_attribut{class,''}|inserer_attribut{alt,#ENV{titre}|textebrut})]]
[(#LOGO_MOT|non)[(#CHEMIN{img/logo-generique.png}|image_passe_partout{#GET{l},#GET{h}}|image_recadre{#GET{l},#GET{h}}|image_masque{#GET{masque}}|inserer_attribut{class,#ENV{titre}|textebrut})]]
</BOUCLE_m>
<BOUCLE_at(AUTEURS){id_auteur}{si #ENV{objet}|=={auteur}|oui}{tout}>
[(#LOGO_AUTEUR|oui)[(#LOGO_AUTEUR|image_reduire{0,#GET{h}}|image_recadre{#GET{l},#GET{h},'center center'}|inserer_attribut{class,''}|inserer_attribut{alt,#ENV{titre}|textebrut})]]
[(#LOGO_AUTEUR|non)[(#CHEMIN{img/logo-generique.png}|image_reduire{0,#GET{h}}|image_recadre{#GET{l},#GET{h},'center center'}|image_masque{#GET{masque}}|inserer_attribut{class,#ENV{titre}|textebrut})]]
</BOUCLE_at>
#FILTRE{trim}

+ 41
- 0
inc/inc_recherche.html View File

@ -0,0 +1,41 @@
[(#REM)
page recherche sur auteurs et articles
param:
- recherche
- env pagination & ajax
]
<!-- content -->
<div class="content-main-wrapper">
<h2 class="article-title article-title-search">
[(#ENV{recherche}|non) <:odaiba:recherche_lancer:>]
[(#ENV{recherche}|oui) <:odaiba:recherche_resultat:> <i>#ENV{recherche}</i>]
</h2>
<div class="article-search">
#FORMULAIRE_RECHERCHE
</div>
<div class="rubrique-table-matiere">
#SET{found_result,false}
[(#REM) Phase 1: recherche auteurs]
<B_s_aut>
<h2 class="marger-top"><:odaiba:recherche_auteurs:></h2>
<BOUCLE_s_aut(AUTEURS){recherche}{si #ENV{recherche}|oui}>
<INCLURE{fond=inc/inc_auteur_preview, id_auteur} />
</BOUCLE_s_aut>
#SET{found_result,true}
</B_s_aut>
[(#REM) Phase 2: recherche articles]
[(#ENV{recherche}|oui)
<INCLURE{fond=inc/inc_recherche_liste_articles,found_resultat=#GET{found_result}, env,ajax}>
]
</div>
</div>
<!-- #content -->

+ 36
- 0
inc/inc_recherche_liste_articles.html View File

@ -0,0 +1,36 @@
[(#REM)
listing des articles par recherche
param:
- recherche
- env pour pagination ajax
]
<B_actu>
<h2 class="marger-top liner-bottom"><:odaiba:resultats_articles:></h2>
<!-- sub-row 1 -->
#ANCRE_PAGINATION
[(#ENV{afficher_compteur}|oui)
[(#GRAND_TOTAL|>{1}|oui)
[<div class="inner pagination-top">
<span class="pagination-titre">(#GRAND_TOTAL) <:odaiba:pagination_gd_total:></span>
</div>]
]
]
<BOUCLE_actu(ARTICLES){recherche?}{!par date}{pagination 6}>
<INCLURE{fond=inc/inc_article_preview, article_preview_short=oui, affiche_categorie=non, id_article, env} />
</BOUCLE_actu>
<div class="pagination">
[<span class="pagination-titre"><:odaiba:pagination_pages:>:</span> (#PAGINATION{page}) -]
#GRAND_TOTAL <:odaiba:resultats_out:>
</div>
</B_actu>
[(#ENV{recherche}|oui)
<div class="alert alert-error">
<:odaiba:recherche_nomatch:>
</div>]
<//B_actu>

+ 78
- 0
inc/inc_rubrique.html View File

@ -0,0 +1,78 @@
[(#REM)
rubrique "
- on liste les sous-rubrique
- on liste les articles par date avec pagination
param:
- id_rubrique
- env support de la pagination / ajax
]<BOUCLE_rub(RUBRIQUES){id_rubrique}>
<!-- headline -->
<div class="headline-wrapper">
<div class="content container">
<div class="row">
<div class="col-md-10 col-sm-10 offset-md-1 headline">
<div class="ariane[(#CONFIG{odaiba/affiche_ariane}|non) ariane--hidden]">
<ul>
<li class="home"><a href="#URL_SITE_SPIP"><:odaiba:accueil_site:></a><span>/</span></li>
<BOUCLE_ariane(HIERARCHIE){id_rubrique}{tout}><li[(#ID_RUBRIQUE|=={#_findArt:ID_RUBRIQUE}|oui) class="on"]><a href="#URL_RUBRIQUE">[(#TITRE|couper{50})]</a>[(#ID_RUBRIQUE|=={#_findArt:ID_RUBRIQUE}|non)<span>/</span>]</li></BOUCLE_ariane>
</ul>
</div>
<h1 class="#EDIT{titre} titre">#TITRE</h1>
</div>
</div>
</div>
</div>
<!-- #headline >
<!-- content -->
<div class="content container">
<div class="row">
<!-- content-main -->
<div class="col-md-8 offset-md-1 content-main order-2 order-md-1">
<!-- Fil d'Ariane -->
<a name="contenu" accesskey="2"></a>
<!-- content -->
<div class="content-main-wrapper article-texte">
[<div class="spip #EDIT{texte}">(#TEXTE)</div>]
<!-- rubrique > sous-rubriques -->
<B_ss_rub>
<div class="liste-rubriques">
<BOUCLE_ss_rub(RUBRIQUES){id_parent}{par num titre, titre}>
<h2 class="rubrique-title"><a href="#URL_RUBRIQUE">#TITRE</a></h2>
</BOUCLE_ss_rub>
</div>
</B_ss_rub>
<!-- rubrique > listes articles -->
<div class="liste-articles">
[(#ODAIBA_TYPE_RUBRIQUE|=={tri_date}|non) <INCLURE{fond=inc/inc_rubrique_liste_articles_numero, ajax, env}>]
[(#ODAIBA_TYPE_RUBRIQUE|=={tri_date}|oui) <INCLURE{fond=inc/inc_rubrique_liste_articles_actu, ajax, env}>]
</div>
<!-- #rubrique > listes articles -->
</div>
<!-- #content -->
</div>
<!-- #content-main -->
<!-- content-side -->
<div class="col-md-3 content-sidebar order-1 order-md-2">
<div class="content-sidebar-logo">
[(#LOGO_RUBRIQUE|image_passe_partout{600,600}|image_recadre{600,600}|inserer_attribut{class,img-rounded})]
</div>
</div>
<!-- #content-side -->
</div>
</div>
<!-- #content -->
</BOUCLE_rub>

+ 16
- 0
inc/inc_rubrique_liste_articles_actu.html View File

@ -0,0 +1,16 @@
[(#REM)
listing des articles d'une rubrique par date
param:
- id_rubrique
- env pour pagination ajax
]<B_actu>
<BOUCLE_actu(ARTICLES){id_auteur ?}{id_mot?}{id_rubrique?}{recherche?}{id_mot ?}{!par date}{pagination 9}>
<INCLURE{fond=inc/inc_article_preview, article_preview_short=oui, id_article, env} />
</BOUCLE_actu>
[<div class="pagination">
<span class="pagination-titre"><:odaiba:pagination_pages:>:</span> (#PAGINATION{page})
</div>]
</B_actu>

+ 16
- 0
inc/inc_rubrique_liste_articles_numero.html View File

@ -0,0 +1,16 @@
[(#REM)
listing des articles d'une rubrique par numero
param:
- id_rubrique
- env pour pagination ajax
]<B_actu>
<BOUCLE_actu(ARTICLES){id_auteur ?}{id_mot?}{id_rubrique?}{recherche?}{id_mot ?}{par num titre}{pagination 9}>
<INCLURE{fond=inc/inc_article_preview, article_preview_short=oui, id_article, env} />
</BOUCLE_actu>
[<div class="pagination">
<span class="pagination-titre"><:odaiba:pagination_pages:>:</span> (#PAGINATION{page})
</div>]
</B_actu>

+ 95
- 0
inc/inc_sommaire.html View File

@ -0,0 +1,95 @@
[(#REM)
contenu page accueil
correspond à la selection editoriale "accueil-contenu"
]
<BOUCLE_selection_home_core(SELECTIONS){identifiant=accueil-contenu}>
[(#REM) item 1: exception avec le logo]
<BOUCLE_selection_first(SELECTIONS_CONTENUS){id_selection}{0,1}{par rang}>
<!-- home-row-1-1 -->
<div class="home-row-1 home-row-1-1">
<div class="content container">
<div class="row align-items-center">
<div class="col-md-10 offset-md-1 center">
[<div class="home-row-1-logo">
(#LOGO_SELECTIONS_CONTENU|image_reduire{800,0}|inserer_attribut{class,no-logo})
</div>]
<div class="home-row-1-titre">#TITRE</div>
</div>
</div>
<div class="row align-items-top home-row-1-1-chapo-core">
<div class="col-md-5 offset-md-1">
[(#DESCRIPTIF|couper_2_parties{1})]
</div>
<div class="col-md-5">
[(#DESCRIPTIF|couper_2_parties{2})]
</div>
</div>
[<div class="row align-items-center">
<div class="col-md-10 offset-md-1 center">
<div class="home-row-1-link">
<a href="(#URL)" class="btn btn-odaiba"><:odaiba:lire_la_suite:></a>
</div>
</div>
</div>]
</div>
</div>
<!-- #home-row-1-1 -->
</BOUCLE_selection_first>
[(#REM) les autres items
on joue sur le compteur, pour afficher en alternance
]
<BOUCLE_selection_next(SELECTIONS_CONTENUS){id_selection}{1,n}{par rang}>
[(#SET{numero_item,#COMPTEUR_BOUCLE|plus{1}})]
<!-- home-row-1-#GET{numero_item} -->
<div class="home-row-1 home-row-1-#GET{numero_item}[(#GET{numero_item}|modulo{2}|oui) home-row-even]">
<div class="content container">
<div class="row align-items-center">
[(#GET{numero_item}|modulo{2}|oui)
<div class="col-md-5 offset-md-1">
<div class="home-row-1-illus">
[(#LOGO_SELECTIONS_CONTENU|image_passe_partout{600,600}|image_recadre{600,600}|inserer_attribut{class,img-rounded})]
</div>
</div>]
<div class="col-md-5[(#GET{numero_item}|modulo{2}|oui) offset-md-1]">
<BOUCLE_art(ARTICLES){id_article=#ID_OBJET}{si #OBJET|=={article}|oui}>
<BOUCLE_rub(RUBRIQUES){titre !=='^[99]'}{id_rubrique}>
<div class="home-row-1-categorie">#TITRE</div>
</BOUCLE_rub>
</BOUCLE_art>
<div class="home-row-1-titre">#TITRE</div>
[<div class="home-row-1-chapo">(#DESCRIPTIF|couper{400})</div>]
[<div class="home-row-1-link">
<a href="(#URL)" class="btn btn-odaiba"><:odaiba:lire_la_suite:></a>
</div>]
</div>
[(#GET{numero_item}|modulo{2}|non)
<div class="col-md-5 offset-md-1">
<div class="home-row-1-illus">
[(#LOGO_SELECTIONS_CONTENU|image_passe_partout{600,600}|image_recadre{600,600}|inserer_attribut{class,img-rounded})]
</div>
</div>]
</div>
</div>
</div>
<!-- #home-row-1-#GET{numero_item} -->
</BOUCLE_selection_next>
</BOUCLE_selection_home_core>

+ 6818
- 0
js/bootstrap.bundle.js
File diff suppressed because it is too large
View File


+ 97
- 0
js/gui.js View File

@ -0,0 +1,97 @@
/********************************
* GUI: interface utilisateur
*
********************************/
$(document).ready(function(){
// print
$('.print a').click(function() {
window.print();
return false;
});
// Lien en spip_out s'ouvre ds une nouvelle fenetre
$('a.spip_out,a[rel*=external]').attr('target','_blank').attr('rel','external noopener noreferrer');
// menu Hamburger
var burgerMenu = function() {
$('.js-odaiba-nav-toggle').on('click', function(event){
event.preventDefault();
var $this = $(this);
if ($('body').hasClass('offcanvas')) {
$this.removeClass('active');
$('body').removeClass('offcanvas');
} else {
$this.addClass('active');
$('body').addClass('offcanvas');
}
});
};
burgerMenu();
// Click outside of offcanvass
var mobileMenuOutsideClick = function() {
$(document).click(function (e) {
var container = $(".odaiba-aside, .js-odaiba-nav-toggle");
if (!container.is(e.target) && container.has(e.target).length === 0) {
if ( $('body').hasClass('offcanvas') ) {
$('body').removeClass('offcanvas');
$('.js-odaiba-nav-toggle').removeClass('active');
}
}
});
$(window).scroll(function(){
if ( $('body').hasClass('offcanvas') ) {
$('body').removeClass('offcanvas');
$('.js-odaiba-nav-toggle').removeClass('active');
}
});
};
mobileMenuOutsideClick();
// Go to the top
// http://www.jqueryscript.net/other/Minimal-Back-To-Top-Functionality-with-jQuery-CSS3.html
$(window).scroll(function(event){
var scroll = $(window).scrollTop();
if (scroll >= 800) {
$(".go-top").addClass("show");
} else {
$(".go-top").removeClass("show");
}
});
$('.go-top a').click(function(){
$('html, body').animate({
scrollTop: $( $(this).attr('href') ).offset().top
}, 1000);
});
// scroll doux
$('.smooth-scroll').click (function() {
var target = $(this).attr('href');
var hash = "#" + target.substring(target.indexOf('#')+1);
$('html, body').animate({ scrollTop:$(hash).offset().top }, 600);
return false;
});
});

+ 109
- 0
lang/odaiba_fr.php View File

@ -0,0 +1,109 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
$GLOBALS[$GLOBALS['idx_lang']] = array(
//
// spip-core
//
'accueil_site' => 'Accueil',
// 0-9
'404_sorry' => 'Désolé, cette page n\'existe plus.',
// A
'actu_toutes' => 'Tous les actualités',
'articles_web' => 'Articles web',
'articles_web_tous' => 'Tous les articles web',
'auteurs_les' => 'Les auteurs',
'articles_tous' => 'Tous les articles',
// C
'cfg_affiche_recherche' => 'Afficher le moteur de recherche',
'cfg_footer' => 'Pied de page',
'cfg_titre_parametrages' => 'Choisir les contenus à afficher',
'cfg_footer_articles' => 'Liens',
'cfg_footer_articles_explication' => '(Facultatif) Articles à placer en liens. Il est conseillé de ne pas dépasser 2 ou 3 liens avec des titres courts',
'cfg_titre_parametrages' => 'Choisir les contenus à afficher',
'cfg_article' => 'Articles complets',
'cfg_affiche_date_article' => 'Afficher la date de publication',
'cfg_affiche_auteur_article' => 'Afficher les noms des auteurs',
'cfg_intro' => 'Cette page vous permet de personnaliser votre squelette Odaiba.',
'cfg_lien_doc' => 'Documentation en ligne',
'cfg_page_demo' => 'Le squelette est livré avec une page démonstration qui permet de tester la mise en page avec des contenus factices :',
'cfg_page_demo_home' => 'Démo accueil',
'cfg_page_demo_article' => 'Démo article',
'cfg_presentation' => 'Présentation',
'cfg_affiche_ariane' => 'Afficher le fil d\'ariane',
'cfg_menu_rwd' => 'Menu responsive',
'cfg_menu_rwd_lateral' => 'Menu responsive latéral coulissant',
'cfg_menu_rwd_fixe' => 'Menu responsive fixe en haut',
'cfg_homepage_article' => 'Article de la page d\'accueil',
'cfg_homepage_article_explication' => 'Choissisez l\'article qui sera affiché comme page d\'accueil du site',
'cfg_accueil' => 'Page d\'accueil du site',
// D
'date_parution' => 'Date de parution',
// L
'lire_la_suite' => 'Lire la suite',
// M
'menu' => 'Menu',
// O
'ours' => 'Le saviez-vous ?<br />Le nom du squelette <strong>Odaiba</strong> (お台場) vient d\'un quartier de la baie de Tōkyō célèbre pour sa plage et ses feux d\'artifices.',
// P
'publie_le' => 'Publié le',
'publie_en' => 'Publié en',
'par' => 'par',
'pagination_pages' => 'Pages',
'pagination_gd_total' => 'articles disponibles',
'posted' => 'Posté le',
// R
'resultats_out' => 'Résultat(s) disponible(s)',
'recherche_site' => 'Résultat sur : ',
'recherche_recherche' => 'Rechercher sur le site',
'recherche_nomatch' => 'Désolé, aucun résultat disponible sur cette recherche ! ',
'resultats_articles' => 'Recherche sur les articles',
'recherche_intro1' => "Le résultat ci-dessous correspond à <strong>une recherche en texte libre.</strong>",
'recherche_intro2' => 'Vous pouvez utiliser les raccouris habituels pour affiner votre recherche ("*": joker, "-" retirer un mot-clé, ...) ',
'recherche_intro3' => "une recherche par mot-clé",
'recherche_intro4' => "Le(s) mot(s) recherché(s) existe(nt) comme mot-clé :",
'recherche_lancer' => 'Rechercher sur le site',
'recherche_mot_requete' => 'Votre recherche sur les articles comprenant le(s) mot(s) clé(s) suivant : ',
'recherche_mots_cancel' => 'Tout décocher',
'recherche_aide' => 'Aide sur l\'utilisation du moteur de recherche',
'recherche_titre' => 'Rechercher un numéro, une thématique ou un auteur',
'recherche_resultat' => 'Résultats de la recherche sur',
'recherche_auteurs' => 'Recherche sur les auteurs',
'recherche_titre' => 'Rechercher',
// S
'odaiba_type_rubrique' => 'Type de rubrique',
'odaiba_type_rubrique_tri_date' => 'Articles listés par date (les articles les récents en premier)',
'odaiba_type_rubrique_tri_num' => 'Articles listés par numéro (10. xxx, 20. yyy, ...)',
// T
'top' => 'Haut de page',
'titre_page_configurer_odaiba' => 'Configurer le squelette Odaiba',
// V
'voir_aussi' => 'Voir aussi',
// X
'xxx' => '',
);

+ 15
- 0
lang/paquet-odaiba_fr.php View File

@ -0,0 +1,15 @@
<?php
// Ceci est un fichier langue de SPIP -- This is a SPIP language file
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// S
'odaiba_description' => 'Un squelette minimal en deux colonnes sous Bootstrap 4',
'odaiba_slogan' => 'Squelette éditorial Odaiba',
);

+ 52
- 0
modeles/image.html View File

@ -0,0 +1,52 @@
[(#REM)
surcharge du modele doc fourni par le plugin core medias
on enleve les styles en ligne pour les gerer en css
]<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout}>[
(#REM) Cas <imageXX> : equivalent a <imgXX> pour une image en mode image
][(#INCLUS|=={image}|et{#ENV{emb,''}|non}|oui)
<span class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[
style='float:(#ENV{align}|match{left|right});']>[
<a href="(#ENV{lien})"[
class="(#ENV{lien_class})"]>]<img src='#URL_DOCUMENT'[
width="(#LARGEUR|?{#LARGEUR})"][
height="(#HAUTEUR|?{#HAUTEUR})"][
title="(#TITRE|attribut_html)"]
alt="[(#TITRE|attribut_html)]" />[(#ENV{lien}|?{</a>})]</span>
][
(#REM) Cas <embXX> : on est appele ici avec emb=' ' : on veut la legende
equivalent a un <docXX> pour une image en mode image
][(#INCLUS|=={image}|et{#ENV{emb,''}|oui}|oui)
#SET{fichier,#URL_DOCUMENT}
#SET{width,#LARGEUR}
#SET{height,#HAUTEUR}
#SET{url,#ENV{lien}}
<dl class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'>
<dt>[<a href="(#GET{url})"[ class="(#ENV{lien_class})"] title='#TYPE_DOCUMENT - [(#TAILLE|taille_en_octets|texte_backend)]'[ type="(#ENV{lien}|?{#ENV{lien_mime},#MIME_TYPE})"]>]<img src='#GET{fichier}' width='#GET{width}' height='#GET{height}' alt='' />[(#GET{url}|?{</a>})]</dt>[
<dt class='#EDIT{titre} spip_doc_titre'[ style='width:(#GET{width}|min{350}|max{120})px;']><strong>(#TITRE)</strong></dt>][
<dd class='#EDIT{descriptif} spip_doc_descriptif'[ style='width:(#GET{width}|min{350}|max{120})px;']>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</dd>]
</dl>
][
(#REM) Cas des images qu'il faut embed (svg)
][
(#INCLUS|=={embed}|oui)
<div class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})]'[
style='[(#ENV{align}|match{^(left|right)$}|?{' '})float:#ENV{align};] (#ENV{align,center}|=={center}|?{'',' '})']>
<object data='#URL_DOCUMENT'
type='#MIME_TYPE'[
width='(#ENV{largeur}?{'', #LARGEUR})'][
height='(#ENV{hauteur}?{'', #HAUTEUR})']
[(#ENV*|env_to_attributs)] >
<param name='src' value='#URL_DOCUMENT' />
[(#ID_DOCUMENT|appliquer_filtre{#MIME_TYPE})]
</object>[
<div class='#EDIT{titre} spip_doc_titre'><strong>(#TITRE)</strong></div>
][
<div class='#EDIT{descriptif} spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>
]</div>]
</BOUCLE_tous>

+ 7
- 0
mot.html View File

@ -0,0 +1,7 @@
[(#REM)
page mot : on cache
param:
- id_mot
]<INCLURE{fond=404} />

+ 53
- 0
odaiba_administrations.php View File

@ -0,0 +1,53 @@
<?php
/**
* Fichier gérant l'installation et désinstallation du plugin Odaiba
*
* @plugin Odaiba
* @copyright 2020
* @author erational
* @licence GNU/GPL
* @package SPIP\Odaiba\Installation
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/meta');
include_spip('inc/cextras');
include_spip('base/odaiba');
/**
* Fonction d'installation et de mise à jour du plugin Odaiba.
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @param string $version_cible
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
* @return void
**/
function odaiba_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
cextras_api_upgrade(odaiba_declarer_champs_extras(), $maj['create']);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
/**
* Fonction de désinstallation du plugin Odaiba
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @return void
**/
function odaiba_vider_tables($nom_meta_base_version) {
cextras_api_vider_tables(odaiba_declarer_champs_extras());
effacer_config('odaiba');
effacer_meta($nom_meta_base_version);
ecrire_metas();
}

+ 18
- 0
odaiba_options.php View File

@ -0,0 +1,18 @@
<?php
/**
* Chargement du plugin Odaiba
*
* @plugin Odaiba
* @copyright 2020
* @author erational
* @licence GNU/GPL
* @package SPIP\Odaiba\Options
*/
if (!defined('_ECRIRE_INC_VERSION')) {