[SPIP Zone] r4298 - in /_plugins_/_squelettes_/pagination_article: ./ paginart.js paginart_fonctions.php paginart_options.php plugin.xml tabs-ie.css tabs.css tabs.js

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;
+ });
+
+ //
+});