Author: cedric@yterium.com
Date: Mon Jul 31 00:45:23 2006
New Revision: 4298
Log:
une pagination des articles selon les intertitres, accessible et en jquery
Added:
_plugins_/_squelettes_/pagination_article/
_plugins_/_squelettes_/pagination_article/paginart.js
_plugins_/_squelettes_/pagination_article/paginart_fonctions.php
_plugins_/_squelettes_/pagination_article/paginart_options.php
_plugins_/_squelettes_/pagination_article/plugin.xml
_plugins_/_squelettes_/pagination_article/tabs-ie.css
_plugins_/_squelettes_/pagination_article/tabs.css
_plugins_/_squelettes_/pagination_article/tabs.js
Added: _plugins_/_squelettes_/pagination_article/paginart.js
(empty)
Added: _plugins_/_squelettes_/pagination_article/paginart_fonctions.php
--- _plugins_/_squelettes_/pagination_article/paginart_fonctions.php (added)
+++ _plugins_/_squelettes_/pagination_article/paginart_fonctions.php Mon Jul 31 00:45:23 2006
@@ -0,0 +1,27 @@
+<?php
+
+
+function paginer_intertitres($texte){
+ $t = explode('<h3 class="spip">',$texte);
+ if (count($t)){
+ $texte = array_shift($t);
+ foreach($t as $p){
+ $texte .= "<div class='section'><h3 class='spip'>".$p."</div>";
+ }
+ $texte = "<div class='paginer_intertitres'>".$texte."</div>";
+ }
+ return $texte;
+}
+
+function paginart_insert_head($flux){
+ $flux .= "<script type='text/javascript' src='".find_in_path('tabs.js')."'></script>\n";
+ $flux .= '<link rel="stylesheet" href="'.find_in_path('tabs.css').'" type="text/css" media="projection, screen" />
+ <!-- Additional IE/Win specific style sheet (Conditional Comments) -->
+
+ <!--[if lte IE 7]>
+ <link rel="stylesheet" href="'.find_in_path('tabs-ie.css').'" type="text/css" media="projection, screen" />
+ <![endif]-->
+ ';
+ return $flux;
+}
+?>
\ No newline at end of file
Added: _plugins_/_squelettes_/pagination_article/paginart_options.php
--- _plugins_/_squelettes_/pagination_article/paginart_options.php (added)
+++ _plugins_/_squelettes_/pagination_article/paginart_options.php Mon Jul 31 00:45:23 2006
@@ -0,0 +1,5 @@
+<?php
+
+$table_des_traitements['TEXTE'][]= 'paginer_intertitres(propre(%s))';
+
+?>
\ No newline at end of file
Added: _plugins_/_squelettes_/pagination_article/plugin.xml
--- _plugins_/_squelettes_/pagination_article/plugin.xml (added)
+++ _plugins_/_squelettes_/pagination_article/plugin.xml Mon Jul 31 00:45:23 2006
@@ -0,0 +1 @@
+<plugin>
<nom> <!-- Nom du plugin -->
Pagination des Articles
</nom>
<auteur> <!-- Auteur du plugin -->
cedric@yterium.com
</auteur>
<version>
0.1
</version>
<etat>
dev
</etat>
<description>
Paginer les articles en les decoupants par les intertires h3 et en presentant les pages sous forme d'onglets
</description>
<fonctions>
paginart_fonctions.php
</fonctions>
<options>
paginart_options.php
</options>
<prefix>
paginart
</prefix>
<pipeline>
<nom>insert_head</nom>
<inclure>paginart_fonctions.php</inclure>
</pipeline>
</plugin>
\ No newline at end of file
Added: _plugins_/_squelettes_/pagination_article/tabs-ie.css
--- _plugins_/_squelettes_/pagination_article/tabs-ie.css (added)
+++ _plugins_/_squelettes_/pagination_article/tabs-ie.css Mon Jul 31 00:45:23 2006
@@ -0,0 +1,7 @@
+.anchors { /* auto clear */
+ display: inline-block; /* @ IE 7 */
+ _height: 1%; /* @ IE 6 */
+}
+.anchors a {
+ float: left;
+}
\ No newline at end of file
Added: _plugins_/_squelettes_/pagination_article/tabs.css
--- _plugins_/_squelettes_/pagination_article/tabs.css (added)
+++ _plugins_/_squelettes_/pagination_article/tabs.css Mon Jul 31 00:45:23 2006
@@ -0,0 +1,46 @@
+/* tabs */
+.anchors {
+ list-style: none;
+ margin: 0;
+ padding: 0 0 1px;
+}
+.anchors:after { /* clearing without presentational markup, IE gets extra treatment */
+ display: block;
+ clear: both;
+ content: " ";
+}
+.anchors li {
+ float: left;
+ margin: 0 1px 0 0;
+}
+.anchors a {
+ display: block;
+ position: relative;
+ top: 1px;
+ border: 1px solid #eaeaea;
+ border-bottom: 0;
+ z-index: 2;
+ padding: 2px 9px 1px;
+ color: #000;
+ text-decoration: none;
+}
+.anchors .on a {
+ padding-bottom: 2px;
+ font-weight: bold;
+}
+.anchors a:focus, .anchors a:active {
+ outline: none; /* @ Firefox 1.5, remove ugly dotted border */
+}
+.anchors .on a, .anchors a:hover, .anchors a:focus, .anchors a:active,
+.anchor {
+ background: #eaeaea;
+}
+.anchors .on a:link, .anchors .on a:visited { /* @ Opera, use pseudo classes otherwise it confuses cursor... */
+ cursor: text;
+}
+.anchors a:hover, .anchors a:focus, .anchors a:active {
+ cursor: pointer;
+}
+.anchor {
+ padding: 10px;
+}
\ No newline at end of file
Added: _plugins_/_squelettes_/pagination_article/tabs.js
--- _plugins_/_squelettes_/pagination_article/tabs.js (added)
+++ _plugins_/_squelettes_/pagination_article/tabs.js Mon Jul 31 00:45:23 2006
@@ -0,0 +1,50 @@
+// tabs - jQuery plugin for accessible, unobtrusive tabs by Klaus Hartl
+// http://stilbuero.de/tabs/
+// Free beer and free speech. Enjoy!
+$.tabs = function(containerId, start) {
+ var ON_CLASS = 'on';
+ var id = '#' + containerId;
+ var i = (typeof start == "number") ? start - 1 : 0;
+ $(id + '>div:lt(' + i + ')').add(id + '>div:gt(' + i + ')').hide();
+ $(id + '>ul>li:nth-child(' + i + ')').addClass(ON_CLASS);
+ $(id + '>ul>li>a').click(function() {
+ if (!$(this.parentNode).is('.' + ON_CLASS)) {
+ var re = /([_\-\w]+$)/i;
+ var target = $('#' + re.exec(this.href)[1]);
+ if (target.size() > 0) {
+ $(id + '>div:visible').hide();
+ target.show();
+ $(id + '>ul>li').removeClass(ON_CLASS);
+ $(this.parentNode).addClass(ON_CLASS);
+ } else {
+ alert('There is no such container.');
+ }
+ }
+ return false;
+ });
+};
+
+// mise en forme des articles a paginer pour appliquer le script tab
+$(document).ready(function(){
+ var art=1;
+ $("div.paginer_intertitres").each(function(){
+ var group=this;
+ //var p = $(this);
+ var sect = 1;
+ var liste = "<ul class='anchors'>";
+ //$("h3.spip",group).before("toto");
+ $("div.section",group).each(function(){
+ liste += "<li><a href='#art"+art+"sect"+sect+"'>"+$('h3.spip',this).get(0).innerHTML+"</a></li>";
+ $(this).set('id',"art"+art+"sect"+sect);
+ $(this).set('class',"anchor");
+ sect += 1;
+ });
+ liste += "</ul>";
+ $("div#"+"art"+art+"sect1",group).before(liste);
+ $(this).set('id','article-container'+art);
+ $.tabs('article-container'+art);
+ art+=1;
+ });
+
+ //
+});