[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/inc/ -> boutons.php (source)

   1  <?php
   2  
   3  /***************************************************************************\
   4   *  SPIP, Systeme de publication pour l'internet                           *
   5   *                                                                         *
   6   *  Copyright (c) 2001-2007                                                *
   7   *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
   8   *                                                                         *
   9   *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  10   *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
  11  \***************************************************************************/
  12  
  13  
  14  define('_LARGEUR_ICONES_BANDEAU', 
  15         (($GLOBALS['spip_display'] == 3) ? 60 : 80)
  16         + (($GLOBALS['spip_ecran'] == 'large') ? 30 : 0)
  17         + (($GLOBALS['connect_toutes_rubriques']) ? 0 : 30));
  18  
  19  /**
  20   * une classe definissant un bouton dans la barre du haut de l'interface
  21   * privee ou dans un de ses sous menus
  22   */
  23  // http://doc.spip.org/@Bouton
  24  class Bouton {
  25    var $icone;         /* l'icone a mettre dans le bouton */
  26    var $libelle;       /* le nom de l'entree d'i18n associe */
  27    var $url= null;     /* l'url de la page (null => ?exec=nom) */
  28    var $urlArg= null;  /* arguments supplementaires de l'url */
  29    var $url2= null;    /* url jscript */
  30    var $target= null;  /* pour ouvrir dans une fenetre a part */
  31    var $sousmenu= null;/* sous barre de boutons / onglets */
  32  
  33  // http://doc.spip.org/@Bouton
  34    function Bouton($icone, $libelle, $url=null, $urlArg=null,
  35                    $url2=null, $target=null) {
  36      $this->icone  = $icone;
  37      $this->libelle= $libelle;
  38      $this->url    = $url;
  39      $this->urlArg = $urlArg;
  40      $this->url2   = $url2;
  41      $this->target = $target;
  42    }
  43  }
  44  
  45  /**
  46   * definir la liste des boutons du haut et de ses sous-menus
  47   * On defini les boutons a metrtre selon les droits de l'utilisateur
  48   * puis on balance le tout au pipeline "ajouter_boutons" pour que des plugins
  49   * puissent y mettre leur grain de sel
  50   */
  51  // http://doc.spip.org/@definir_barre_boutons
  52  function definir_barre_boutons() {
  53      global $boutons_admin;
  54  
  55      global $REQUEST_URI, $HTTP_HOST;
  56      global $spip_lang, $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
  57  
  58      $boutons_admin=array(
  59          'accueil' => new Bouton('asuivre-48.png', 'icone_a_suivre'),
  60          'naviguer' => new Bouton("documents-48$spip_lang_rtl.png",
  61                                   'icone_edition_site'),
  62          'forum' => new Bouton('messagerie-48.png', 'titre_forum'),
  63          'auteurs' => new Bouton('redacteurs-48.png', 'icone_auteurs')
  64      );
  65  
  66      if ($GLOBALS['connect_statut'] == "0minirezo"
  67      AND $GLOBALS['meta']["activer_statistiques"] != 'non') {
  68          $boutons_admin['statistiques_visites']=
  69            new Bouton('statistiques-48.png', 'icone_statistiques_visites');
  70      }
  71  
  72      if ($GLOBALS['connect_statut'] == '0minirezo') {
  73          $boutons_admin['configuration']=
  74            new Bouton('administration-48.png', 'icone_configuration_site');
  75      }
  76  
  77      $boutons_admin['espacement']=null;
  78  
  79      $urlAide= generer_url_ecrire('aide_index')."&amp;var_lang=$spip_lang";
  80      $boutons_admin['aide_index']=
  81            new Bouton('aide-48'.$spip_lang_rtl.'.png', 'icone_aide_ligne',
  82                       $urlAide, null, "javascript:window.open('$urlAide', 'spip_aide', 'scrollbars=yes,resizable=yes,width=740,height=580');", 'aide_spip');
  83  
  84      $boutons_admin['visiter']=
  85          new Bouton("visiter-48$spip_lang_rtl.png", 'icone_visiter_site',
  86          url_de_base());
  87  
  88      // les sous menu des boutons, que si on est admin
  89      if ($GLOBALS['connect_statut'] == '0minirezo'
  90          AND $GLOBALS['connect_toutes_rubriques']) {
  91  
  92      // sous menu edition
  93  
  94      $sousmenu=array();
  95  
  96      $nombre_articles = spip_num_rows(spip_query("SELECT art.id_article FROM spip_articles AS art, spip_auteurs_articles AS lien WHERE lien.id_auteur = '".$GLOBALS['connect_id_auteur']."' AND art.id_article = lien.id_article LIMIT 1"));
  97      if ($nombre_articles > 0) {
  98          $sousmenu['articles_page']=
  99            new Bouton('article-24.gif', 'icone_tous_articles');
 100      }
 101  
 102      if ($GLOBALS['meta']["activer_breves"] != "non") {
 103          $sousmenu['breves']=
 104            new Bouton('breve-24.gif', 'icone_breves');
 105      }
 106  
 107      if ($GLOBALS['options'] == "avancees"){
 108          $articles_mots = $GLOBALS['meta']['articles_mots'];
 109          if ($articles_mots != "non") {
 110              $sousmenu['mots_tous']=
 111                new Bouton('mot-cle-24.gif', 'icone_mots_cles');
 112          }
 113  
 114          $activer_sites = $GLOBALS['meta']['activer_sites'];
 115          if ($activer_sites<>'non')
 116              $sousmenu['sites_tous']=
 117                new Bouton('site-24.gif', 'icone_sites_references');
 118  
 119          $n = spip_num_rows(spip_query("SELECT id_document FROM spip_documents_rubriques LIMIT 1"));
 120          if ($n) {
 121              $sousmenu['documents_liste']=
 122                new Bouton('doc-24.gif', 'icone_doc_rubrique');
 123          }
 124      }
 125      $boutons_admin['naviguer']->sousmenu= $sousmenu;
 126  
 127      // sous menu forum
 128  
 129      $sousmenu=array();
 130  
 131      if ($GLOBALS['meta']['forum_prive_admin'] == 'oui')
 132          $sousmenu['forum_admin']=
 133            new Bouton('forum-admin-24.gif', 'icone_forum_administrateur');
 134  
 135      if (spip_num_rows(spip_query("SELECT id_forum FROM spip_forum LIMIT 1")))
 136          $sousmenu['controle_forum']=
 137              new Bouton("suivi-forum-24.gif", "icone_suivi_forums");
 138      if (spip_num_rows(spip_query("SELECT id_signature FROM spip_signatures LIMIT 1")))
 139          $sousmenu['controle_petition']=
 140              new Bouton("suivi-petition-24.gif", "icone_suivi_pettions");
 141  
 142      if ($sousmenu)
 143          $boutons_admin['forum']->sousmenu= $sousmenu;
 144  
 145  
 146      // sous menu auteurs
 147  
 148      $sousmenu=array();
 149  
 150      $n = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 1"));
 151  
 152      if ($n)
 153          $sousmenu['auteurs'] = 
 154              new Bouton("fiche-perso.png", 'icone_afficher_visiteurs', null, "statut=6forum");
 155  
 156      $sousmenu['auteur_infos']=
 157          new Bouton("auteur-24.gif", "icone_creer_nouvel_auteur", null, 'new=oui');
 158  
 159      $boutons_admin['auteurs']->sousmenu= $sousmenu;
 160  
 161      // sous menu statistiques
 162      if (isset($boutons_admin['statistiques_visites'])) {
 163          $sousmenu=array(
 164              'espacement' => null,
 165              'statistiques_repartition' =>
 166                  new Bouton("rubrique-24.gif", "icone_repartition_visites")
 167          );
 168  
 169          if ($GLOBALS['meta']['multi_articles'] == 'oui'
 170          OR $GLOBALS['meta']['multi_rubriques'] == 'oui')
 171              $sousmenu['statistiques_lang']=
 172                  new Bouton("langues-24.gif", "onglet_repartition_lang");
 173  
 174          $sousmenu['statistiques_referers']=
 175            new Bouton("referers-24.gif", "titre_liens_entrants");
 176  
 177          $boutons_admin['statistiques_visites']->sousmenu= $sousmenu;
 178      }
 179      
 180      // sous menu configuration
 181  
 182      $sousmenu=array(
 183          'config_lang' => 
 184              new Bouton("langues-24.gif", "icone_gestion_langues"),
 185          'espacement' => null
 186      );
 187  
 188      if ($GLOBALS['options'] == "avancees") {
 189          $sousmenu['admin_tech']= 
 190              new Bouton("base-24.gif", "icone_maintenance_site");
 191          $sousmenu['admin_vider']=
 192              new Bouton("cache-24.gif", "onglet_vider_cache");
 193        if ((@file_exists(_DIR_PLUGINS))&&(is_dir(_DIR_PLUGINS)))
 194              $sousmenu['admin_plugin']=
 195                  new Bouton("plugin-24.gif", "icone_admin_plugin");
 196      } else {
 197          $sousmenu['admin_tech']=
 198              new Bouton("base-24.gif", "icone_sauver_site");
 199      }
 200  
 201      $boutons_admin['configuration']->sousmenu= $sousmenu;
 202  
 203      } // fin si admin
 204  
 205      $boutons_admin = pipeline('ajouter_boutons', $boutons_admin);
 206  }
 207  
 208  /**
 209   * definir la liste des onglets dans une page de l'interface privee
 210   * on passe la main au pipeline "ajouter_onglets".
 211   */
 212  // http://doc.spip.org/@definir_barre_onglets
 213  function definir_barre_onglets($rubrique) {
 214      global $id_auteur, $connect_id_auteur, $connect_statut, $statut_auteur;
 215  
 216      $onglets=array();
 217  
 218      switch($rubrique) {
 219      case 'statistiques_repartition':
 220      case 'repartition':
 221          if ($GLOBALS['meta']['multi_articles'] == 'oui' OR $GLOBALS['meta']['multi_rubriques'] == 'oui') {
 222              $onglets['rubriques']=
 223                new Bouton('rubrique-24.gif', 'onglet_repartition_rubrique');
 224              $onglets['langues']=
 225                new Bouton('langues-24.gif', 'onglet_repartition_lang');
 226          }
 227      break;
 228  
 229      case 'rep_depuis':
 230          $onglets['statistiques_lang']=
 231            new Bouton(null, 'icone_repartition_actuelle');
 232          $onglets['debut']=
 233            new Bouton(null, 'onglet_repartition_debut',
 234              generer_url_ecrire("statistiques_lang","critere=debut"));
 235      break;
 236  
 237      case 'stat_depuis':
 238          $onglets['popularite']=
 239            new Bouton(null, 'icone_repartition_actuelle',
 240              generer_url_ecrire("statistiques_repartition",""));
 241          $onglets['debut']=
 242            new Bouton(null, 'onglet_repartition_debut',
 243              generer_url_ecrire("statistiques_repartition","critere=debut"));
 244      break;
 245  
 246      case 'stat_referers':
 247          $onglets['jour']=
 248            new Bouton(null, 'date_aujourdhui',
 249              generer_url_ecrire("statistiques_referers",""));
 250          $onglets['veille']=
 251            new Bouton(null, 'date_hier',
 252              generer_url_ecrire("statistiques_referers","jour=veille"));
 253      break;
 254  
 255      case 'administration':
 256          $onglets['sauver']=
 257            new Bouton('base-24.gif', 'onglet_save_restaur_base',
 258              generer_url_ecrire("admin_tech",""));
 259          $onglets['effacer']=
 260            new Bouton('supprimer.gif', 'onglet_affacer_base',
 261              generer_url_ecrire("admin_effacer",""));
 262      break;
 263  
 264      case 'auteur':
 265          $onglets['auteur']=
 266            new Bouton('auteur-24.gif', 'onglet_auteur',
 267              generer_url_ecrire("auteur_infos","id_auteur=$id_auteur"));
 268          $onglets['infos']=
 269            new Bouton('fiche-perso-24.gif', 'icone_informations_personnelles',
 270              generer_url_ecrire("auteur_infos","id_auteur=$id_auteur"));
 271      break;
 272  
 273      case 'configuration':
 274          $onglets['contenu']=
 275            new Bouton('racine-site-24.gif', 'onglet_contenu_site',
 276              generer_url_ecrire("configuration"));
 277          $onglets['interactivite']=
 278            new Bouton('forum-interne-24.gif', 'onglet_interactivite',
 279              generer_url_ecrire("config_contenu"));
 280          $onglets['fonctions']=
 281            new Bouton('image-24.gif', 'onglet_fonctions_avances',
 282              generer_url_ecrire("config_fonctions"));
 283      break;
 284  
 285      case 'config_lang':
 286          $onglets['langues']=
 287            new Bouton('langues-24.gif', 'info_langue_principale',
 288              generer_url_ecrire("config_lang"));
 289          $onglets['multi']=
 290            new Bouton('traductions-24.gif', 'info_multilinguisme',
 291              generer_url_ecrire("config_multilang"));
 292          $onglets['fichiers']=
 293            new Bouton('traductions-24.gif', 'module_fichiers_langues',
 294              generer_url_ecrire("lang_raccourcis"));
 295      break;
 296  
 297      // inutilise
 298      case 'suivi_forum':
 299      break;
 300  
 301      }
 302  
 303      $onglets = pipeline('ajouter_onglets', array('data'=>$onglets,'args'=>$rubrique));
 304  
 305      return $onglets;
 306  }
 307  
 308  // http://doc.spip.org/@barre_onglets
 309  function barre_onglets($rubrique, $ongletCourant){
 310      $onglets= definir_barre_onglets($rubrique);
 311      if(count($onglets)==0) return '';
 312  
 313      $res = debut_onglet();
 314  
 315      foreach($onglets as $exec => $onglet) {
 316          $url= $onglet->url ? $onglet->url : generer_url_ecrire($exec);
 317          $res .= onglet(_T($onglet->libelle), $url,    $exec, $ongletCourant, $onglet->icone);
 318      }
 319      $res .= fin_onglet();
 320      return $res;
 321  }
 322  
 323  // http://doc.spip.org/@definir_barre_gadgets
 324  function definir_barre_gadgets() {
 325      global $barre_gadgets;
 326      $barre_gadgets= array(
 327                            // ?????????
 328      );
 329  }
 330  
 331  
 332  // http://doc.spip.org/@bandeau_principal
 333  function bandeau_principal($rubrique, $sous_rubrique, $largeur)
 334  {
 335      $res = '';
 336      foreach($GLOBALS['boutons_admin'] as $page => $detail) {
 337          if ($page=='espacement') {
 338              $res .= "<td> &nbsp; </td>";
 339          } else {
 340              if ($detail->url)
 341                  $lien_noscript = $detail->url;
 342              else
 343                  $lien_noscript = generer_url_ecrire($page);
 344  
 345              if ($detail->url2)
 346                  $lien = $detail->url2;
 347              else
 348                  $lien = $lien_noscript;
 349  
 350              $res .= icone_bandeau_principal(
 351                      _T($detail->libelle),
 352                      $lien,
 353                      $detail->icone,
 354                      $page,
 355                      $rubrique,
 356                      $lien_noscript,
 357                      $page,
 358                      $sous_rubrique);
 359          }
 360      }
 361  
 362      return "<div class='bandeau-icones'>\n<table width='$largeur' cellpadding='0' cellspacing='0' border='0'><tr>\n$res</tr></table></div>\n";
 363  }
 364  
 365  // http://doc.spip.org/@icone_bandeau_principal
 366  function icone_bandeau_principal($texte, $lien, $fond, $rubrique_icone = "vide", $rubrique = "", $lien_noscript = "", $sous_rubrique_icone = "", $sous_rubrique = ""){
 367      global $spip_display, $menu_accesskey, $compteur_survol;
 368  
 369      $alt = '';
 370      $title = '';
 371      if ($spip_display == 1){
 372      }
 373      else if ($spip_display == 3){
 374          $title = "title=\"$texte\"";
 375          $alt = $texte;
 376      }
 377      
 378      if (!$menu_accesskey = intval($menu_accesskey)) $menu_accesskey = 1;
 379      if ($menu_accesskey < 10) {
 380          $accesskey = " accesskey='$menu_accesskey'";
 381          $menu_accesskey++;
 382      }
 383      else if ($menu_accesskey == 10) {
 384          $accesskey = " accesskey='0'";
 385          $menu_accesskey++;
 386      }
 387  
 388      $class_select = ($sous_rubrique_icone == $sous_rubrique) ? " class='selection'" : '';
 389  
 390      if (eregi("^javascript:",$lien)) {
 391          $a_href = "\nonclick=\"$lien; return false;\" href='$lien_noscript' ";
 392      }
 393      else {
 394          $a_href = "\nhref=\"$lien\"";
 395      }
 396  
 397      $compteur_survol ++;
 398  
 399      if ($spip_display != 1 AND $spip_display != 4) {
 400          $class ='cellule48';
 401          $texte = http_img_pack($fond, $alt, "$title width='48' height='48'")
 402          . ($spip_display == 3 ? '' :  "<span>$texte</span>");
 403      } else {
 404          $class = 'cellule-texte';
 405      }  
 406          
 407      return "<td style='width: "
 408      . _LARGEUR_ICONES_BANDEAU
 409      . "px' class='$class' onmouseover=\"changestyle('bandeau$rubrique_icone');\"><a$accesskey$a_href$class_select>"
 410      .  $texte
 411      . "</a></td>\n";
 412  }
 413  
 414  // http://doc.spip.org/@bandeau_principal2
 415  function bandeau_principal2($rubrique, $sous_rubrique, $largeur) {
 416      global $spip_lang_left;
 417  
 418      $res = '';
 419      $decal=0;
 420      $coeff_decalage = 0;
 421      if ($GLOBALS['browser_name']=="MSIE") $coeff_decalage = 1.0;
 422      $largeur_maxi_menu = $largeur-100;
 423      $largitem_moy = 85;
 424  
 425      foreach($GLOBALS['boutons_admin'] as $page => $detail) {
 426          if (($rubrique == $page) AND (!_SPIP_AJAX)) {
 427              $class = "visible_au_chargement";
 428          } else {
 429              $class = "invisible_au_chargement";
 430          }
 431  
 432          $sousmenu= $detail->sousmenu;
 433          if($sousmenu) {
 434              $offset = (int)round($decal-$coeff_decalage*max(0,($decal+count($sousmenu)*$largitem_moy-$largeur_maxi_menu)));
 435              if ($offset<0){    $offset = 0; }
 436  
 437              $res .= "<div class='$class bandeau' id='bandeau$page' style='position: absolute; $spip_lang_left: ".$offset."px;'><div class='bandeau_sec'><table class='gauche'><tr>\n";
 438              $width=0;
 439              foreach($sousmenu as $souspage => $sousdetail) {
 440                  if ($width+1.25*$largitem_moy>$largeur_maxi_menu){$res .= "</tr><tr>\n";$width=0;}
 441                  if($souspage=='espacement') {
 442                      if ($width>0){
 443                          $res .= "<td class='separateur'></td>\n";
 444                          $largitem = 0;
 445                      }
 446                  } else {
 447                    list($html,$largitem) = icone_bandeau_secondaire (_T($sousdetail->libelle), generer_url_ecrire($sousdetail->url?$sousdetail->url:$souspage, $sousdetail->urlArg), $sousdetail->icone, $souspage, $sous_rubrique);
 448                    $res .= $html;
 449                  }
 450                  $width+=$largitem+10;
 451              }
 452              $res .= "</tr></table></div></div>";
 453          }
 454          
 455          $decal += _LARGEUR_ICONES_BANDEAU;
 456      }
 457      return $res;
 458  }
 459  
 460  // http://doc.spip.org/@bandeau_double_rangee
 461  function bandeau_double_rangee($rubrique, $sous_rubrique, $largeur)
 462  {
 463      global $spip_lang_left;
 464      definir_barre_boutons();
 465  
 466      return "<div class='invisible_au_chargement' style='position: absolute; height: 0px; visibility: hidden;'><a href='oo'>"._T("access_mode_texte")."</a></div>"
 467      . "<div id='haut-page'>"
 468      . "<div id='bandeau-principal' align='center'>\n"
 469      . bandeau_principal($rubrique, $sous_rubrique, $largeur)
 470      . "<table width='$largeur' cellpadding='0' cellspacing='0'><tr><td>"
 471      . "<div style='text-align: $spip_lang_left; width: ".$largeur."px; position: relative; z-index: 2000;'>"
 472      . bandeau_principal2($rubrique, $sous_rubrique, $largeur)
 473      . "</div>"
 474      . "</td></tr></table>"
 475      . "</div>\n"; 
 476  }
 477  
 478  
 479  // http://doc.spip.org/@icone_bandeau_secondaire
 480  function icone_bandeau_secondaire($texte, $lien, $fond, $rubrique_icone = "vide", $rubrique, $aide=""){
 481      global $spip_display;
 482      global $menu_accesskey, $compteur_survol;
 483  
 484      $alt = '';
 485      $title = '';
 486      $accesskey = '';
 487      if ($spip_display == 1) {
 488          //$hauteur = 20;
 489          $largeur = 80;
 490      }
 491      else if ($spip_display == 3){
 492          //$hauteur = 26;
 493          $largeur = 40;
 494          $title = "title=\"$texte\"";
 495          $alt = $texte;
 496      }
 497      else {
 498          //$hauteur = 68;
 499          if (count(explode(" ", $texte)) > 1) $largeur = 80;
 500          else $largeur = 70;
 501          $alt = "";
 502      }
 503      if ($aide AND $spip_display != 3) {
 504          $largeur += 50;
 505          //$texte .= aide($aide);
 506      }
 507      if ($spip_display != 3 AND strlen($texte)>16) $largeur += 20;
 508      
 509      if (!$menu_accesskey = intval($menu_accesskey)) $menu_accesskey = 1;
 510      if ($menu_accesskey < 10) {
 511          $accesskey = " accesskey='$menu_accesskey'";
 512          $menu_accesskey++;
 513      }
 514      else if ($menu_accesskey == 10) {
 515          $accesskey = " accesskey='0'";
 516          $menu_accesskey++;
 517      }
 518      if ($spip_display == 3) $accesskey_icone = $accesskey;
 519  
 520      $class_select =  ($rubrique_icone != $rubrique) ? '' : " class='selection'";
 521      $compteur_survol ++;
 522  
 523      $a_href = "<a$accesskey href=\"$lien\"$class_select>";
 524  
 525      if ($spip_display != 1) {
 526          $res = "<td class='cellule36' style='width: ".$largeur."px;'>";
 527          $res .= $a_href .
 528            http_img_pack("$fond", $alt, "$title");
 529          if ($aide AND $spip_display != 3) $res .= aide($aide)." ";
 530          if ($spip_display != 3) {
 531              $res .= "<span>$texte</span>";
 532          }
 533          $res .= "</a></td>\n";
 534      }
 535      else $res = "<td style='width: $largeur" . "px' class='cellule-texte'>$a_href". $texte . "</a></td>\n";
 536  
 537      return array($res, $largeur);
 538  }
 539  
 540  
 541  ?>


Généré le : Wed Nov 21 10:20:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics