Changeset 59686 in spip-zone


Ignore:
Timestamp:
Mar 24, 2012, 4:47:28 PM (8 years ago)
Author:
bystrano@…
Message:

ajoute la possibilite de declancher soit meme les remplacements des divs + regle probleme avec sites multilingues.

Location:
_plugins_/ajax_nav
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/ajax_nav/ajax_nav.js

    r58817 r59686  
    77function AjaxNav() {
    88    "use strict";
    9     var onAjaxNavReq            = $.Event("onAjaxNavReq"),
    10     onAjaxNavLoad               = $.Event("onAjaxNavLoad"),
    11     onAjaxNavLocalisedLoad      = $.Event("onAjaxNavLocalisedLoad"),
    12     HOST                        = History.getState().url.replace(/^https?:\/\/([^\/]+).*$/, '$1');
     9
     10    var HOST = History.getState().url.replace(/^https?:\/\/([^\/]+).*$/, '$1');
    1311
    1412    function addUrlParam(url, param, value) {
     
    7573    ///////////////////////
    7674
     75    /* met a jour un element, l'evenement onDone sera declanche une fois le travail fini */
     76    function updateElement (element, onDone) {
     77        $(element).data('ready', false)
     78            .bind('ajaxNavReady', function () {
     79                $(element).data('ready', true);
     80            });
     81        $(element).trigger('onAjaxNavReq');
     82        $.get(addUrlParam(History.getState().url, 'getbyid', element.id),
     83              function (data) {
     84                  var self      = this,
     85                  id            = this.url.replace(/.*getbyid=/, ''),
     86                  updateElFunc  = function () {
     87                      $('#' + id)
     88                          .empty()
     89                          .html(data)
     90                          .trigger(onDone);
     91                      prepareForAjax('#' + id);
     92                      $(self).unbind('ajaxNavReady');
     93                  };
     94                  if (AjaxNav.options.autoReplaceDivs || $('#' + id).data('ready')) {
     95                      updateElFunc.call();
     96                  } else {
     97                      $('#' + id).bind('ajaxNavReady', updateElFunc);
     98                  }
     99              });
     100    }
     101
    77102    // charge la page en ajax a chaque evenement statechange
    78103    $(window).bind('statechange', function() {
     
    94119                    $('html').attr('lang', data.lang);
    95120                    $('.loc_div').each(function (i) {
    96                         $(this).trigger(onAjaxNavReq);
    97                         $.get(addUrlParam(History.getState().url, 'getbyid', this.id),
    98                               function (data) {
    99                             var id = this.url.replace(/.*getbyid=/, '');
    100                             $('#' + id).empty().html(data).trigger(onAjaxNavLocalisedLoad);
    101                             prepareForAjax('#' + id);
    102                         });
     121                        updateElement(this, 'onAjaxNavLocalisedLoad');
    103122                    });
    104123                }
    105124                // on recharge ensuite les elements 'ajax_nav'.
    106                 $('.ajax_nav').trigger(onAjaxNavReq);
    107125                $('.ajax_nav').each(function (i) {
    108                     $.get(addUrlParam(History.getState().url, 'getbyid', this.id),
    109                           function (data) {
    110                         var id  = this.url.replace(/.*getbyid=/, '');
    111                         $('#' + id).empty().html(data).trigger(onAjaxNavLoad);
    112                         prepareForAjax('#' + id);
    113                     });
     126                    updateElement(this, 'onAjaxNavLoad');
    114127                });
    115128                // comme spip utilise les class sur le body par defaut, il vaut mieux les mettre
  • _plugins_/ajax_nav/ajax_nav_balises.php

    r58261 r59686  
    9090  $title = $title->html();
    9191
     92  $lang = pq('html');
     93        $lang = $lang->attr('lang');
     94
    9295  $tableau_resultat = serialize(array('body_classes'    => $bodyClass,
    93                                       'title'           => $title,
    94                                       ));
     96                                                                                                                                                        'title'         => $title,
     97                                                                                                                                                        'lang'    => $lang,
     98                                                                                                                                                        ));
    9599
    96100  return "$tableau_resultat";
  • _plugins_/ajax_nav/ajax_nav_insert_head.php

    r58261 r59686  
    22function ajax_nav_insert_head($flux) {
    33
    4   $options = unserialize($GLOBALS['meta']['ajax_nav_config']);
     4  $res = sql_select('valeur', 'spip_meta', 'nom="ajax_nav_config"');
     5  $options = array();
     6  if (sql_count($res) == 1) {
     7    $options = sql_fetch($res);
     8    $options = unserialize($options['valeur']);
    59
    6   function prepare($options) {
    7     $options = preg_replace("/[^a-zA-Z0-9\-\_]+/", "', ", $options);
    8     $options = preg_replace("/([a-zA-Z0-9\-\_]+)/", "'$1", $options);
    9     $options = preg_replace("/([^'])$/", "$1'", $options);
    10     return $options;
     10    /* evite les problemes lors de mises a jour du plugin */
     11    if ( ! $options['autoReplaceDivs'] ) {
     12      $options['autoReplaceDivs'] = 'on';
     13    }
     14  }
     15
     16  function prepare($option) {
     17    $option = preg_replace("/[^a-zA-Z0-9\-\_]+/", "', ", $option);
     18    $option = preg_replace("/([a-zA-Z0-9\-\_]+)/", "'$1", $option);
     19    $option = preg_replace("/([^'])$/", "$1'", $option);
     20    return $option;
    1121  }
    1222
     
    2030    $flux .= "<script type='text/javascript' src='" . find_in_path("lib/modernizr.js") . "'></script>";
    2131  }
     32
     33  $auto_replace_divs = ($options["autoReplaceDivs"] == "on") ? 'true' : 'false';
    2234
    2335  $flux .= "<script type='text/javascript'>
     
    4254                    pagesToAjaxify: ["  . prepare($options["pagesToAjaxify"]) . "],
    4355                    ajaxDivs: ["        . prepare($options["ajaxDivs"]) . "],
    44                     localizedDivs: ["   . prepare($options["localizedDivs"]) . "]
     56                    localizedDivs: ["   . prepare($options["localizedDivs"]) . "],
     57                    autoReplaceDivs: "  . $auto_replace_divs . "
    4558                };
    4659                AjaxNav();
  • _plugins_/ajax_nav/formulaires/ajax_nav_config.html

    r58261 r59686  
    3333             label="cocher pour activer"[(#ENV{useHistoryLib}|=={on}|?{ checked="checked",})] />
    3434    </li>
     35
     36    <li>
     37      <strong><:ajax_nav:auto_replace_divs:></strong>
     38      <input id="champ_autoReplaceDivs" class="checkbox" type="checkbox" name="autoReplaceDivs"
     39             label="cocher pour activer"[(#ENV{autoReplaceDivs}|=={on}|?{ checked="checked",})] />
     40    </li>
    3541   
    3642      </ul>
  • _plugins_/ajax_nav/formulaires/ajax_nav_config.php

    r58261 r59686  
    77    $options = sql_fetch($res);
    88    $options = unserialize($options['valeur']);
     9
     10    /* evite les problemes lors de mises a jour du plugin */
     11    if ( ! $options['autoReplaceDivs'] ) {
     12      $options['autoReplaceDivs'] = 'on';
     13    }
     14
    915    return $options;
    1016  }
     
    2329                   "useModernLib"       => "on",
    2430                   /* Utilise la lib history.js fournie avec le plug */
    25                    "useHistoryLib"      => "on",                   
     31                   "useHistoryLib"      => "on",
     32                   /* Remplace les divs automatiquement */
     33                   "autoReplaceDivs"    => "on",
    2634                   );
    2735  return $options;
     
    5664          'useModernLib'        => _request('useModernLib'),
    5765          'useHistoryLib'       => _request('useHistoryLib'),
     66          'autoReplaceDivs'     => _request('autoReplaceDivs'),
    5867          );
    5968
  • _plugins_/ajax_nav/getinfos.html

    r58261 r59686  
    99    "page":"#GET{objet}",
    1010    ["id_#GET{objet}":"(#GET{id_objet})",]
    11     "lang":"#LANG",
     11    "lang":"[(#GET{infos_page}|table_valeur{lang})]",
    1212    "body_classes":"[(#GET{infos_page}|table_valeur{body_classes})]",
    1313    "title":"[(#GET{infos_page}|table_valeur{title})]"
  • _plugins_/ajax_nav/lang/ajax_nav_en.php

    r58261 r59686  
    1515'use_modern_lib' => 'Use the provided Modernizr library : ',
    1616'use_history_lib' => 'Use the provided History.js library : ',
     17'auto_replace_divs' => 'Automatically replace the divs.',
    1718);
    1819
  • _plugins_/ajax_nav/lang/ajax_nav_fr.php

    r58261 r59686  
    1515'use_modern_lib' => 'Utiliser la librairie Modernizr fournie avec le plugin : ',
    1616'use_history_lib' => 'Utiliser la libraire History.js fournie avec le plugin : ',
     17'auto_replace_divs' => 'Remplacer les divs automatiquement : ',
    1718);
    1819
Note: See TracChangeset for help on using the changeset viewer.