Changeset 107182 in spip-zone


Ignore:
Timestamp:
Oct 27, 2017, 11:29:26 AM (3 years ago)
Author:
abelass
Message:

v 1.4.3

eviter des problèmes d'attribution de langue pour le pages uniques
si Traduction de rubriques autrement activé

Location:
_plugins_/traduction_articles_autrement/branches/1.0
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/traduction_articles_autrement/branches/1.0

    • Property svn:ignore
      •  

        old new  
         1README.md
         2plugintaa.session
         3plugintaa.webprj
         4taa.session
         5taa.webprj
        16templates
        27toolbars
        3 plugintaa.session
        4 plugintaa.webprj
        58trad_alter_svn.session
        69trad_alter_svn.webprj
        7 taa.session
        8 taa.webprj
        9 
        10 README.md
         10.project
         11.settings*
         12.buildpath
    • Property svn:mergeinfo set to
      /_plugins_/traduction_articles_autrement/trunkmergedeligible
  • _plugins_/traduction_articles_autrement/branches/1.0/action

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/css

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/css/images

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/formulaires

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/img_pack

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/inc

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/inc/barre_langues.php

    r69285 r107182  
    77        include_spip('inc/actions');
    88        if(!function_exists('icone_verticale')) {
    9                include_spip('inc/presentation');
    10            }   
     9                include_spip('inc/presentation');
     10        }
    1111        $row = sql_fetsel("*", "spip_articles", "id_article=$id_article");
    12                
     12
    1313        $id_rubrique = $row['id_rubrique'];
    1414        $id_trad = $row["id_trad"];
    15                
     15
    1616        $virtuel = (strncmp($row["chapo"],'=',1)!==0) ? '' :
    1717        chapo_redirige(substr($row["chapo"], 1));
    18                
    19         $objet='article';       
    20        
     18
     19        $objet='article';
     20
    2121        //création des onglets traduction
    22        
     22
    2323        // Les langues du site ou si restreint celle définis par config
    24        
     24
    2525        $langues_dispos=lire_config('taa/utiliser_langues')?lire_config('taa/utiliser_langues'):explode(',',lire_config('langues_multilingue'));
    2626
    27        
     27
    2828        // On établit les traductions de l'article
    2929        $traductions    = array();
    30        
    31         if($langues_dispos){   
    32                
    33         // L'article est traduit       
    34         if($id_trad>0){
    35        
    36                 // les traductions de l'article
    37                 $sql=sql_select('lang,id_article','spip_articles','id_trad='.$id_trad);
    38        
    39                 while($row=sql_fetch($sql)){
     30
     31        if($langues_dispos){
     32
     33                // L'article est traduit
     34                if($id_trad>0){
     35
     36                        // les traductions de l'article
     37                        $sql=sql_select('lang,id_article','spip_articles','id_trad='.$id_trad);
     38
     39                        while($row=sql_fetch($sql)){
     40                                $traductions[$row['lang']]=$row['id_article'];
     41                        }
     42                        $clic = _T('trad_delier');
     43                        $options = '<div class="options delier ajax">'.icone_verticale($clic, redirige_action_auteur('traduction',$id_article.'-article-0',"article&amp;id_article=$id_article"), "traductions-24.gif", "supprimer.gif",'right', false).'</div>';
     44                }
     45                // L'article n'est pas traduit
     46                else{
     47                        $id_trad=$id_article;
     48                        $row=sql_fetsel('lang,id_article','spip_articles','id_article='.$id_article);
     49
     50                        // Seul l'aticle présent est pris dans l'array traductions
    4051                        $traductions[$row['lang']]=$row['id_article'];
    41                         }
    42                 $clic = _T('trad_delier');     
    43                 $options = '<div class="options delier ajax">'.icone_verticale($clic, redirige_action_auteur('traduction',$id_article.'-article-0',"article&amp;id_article=$id_article"), "traductions-24.gif", "supprimer.gif",'right', false).'</div>';               
     52
     53                        $options =  '<div class="options form_lier"><h2>'._T('taa:lier_traduction').'</h2>'.redirige_action_auteur("traduction",
     54                                        $id_article.'-article',
     55                                        "article",
     56                                        "id_article=$id_article",
     57                                        ("<label for='lier_trad'>" . _T('trad_lier') . "</label>" .
     58                                                        "\n<input type='text' class='fondl' name='lier_trad' id='lier_trad' size='5' />\n"),
     59                                        _T('bouton_valider'),
     60                                        " class='fondl'").'</div>';
    4461                }
    45         // L'article n'est pas traduit 
    46         else{
    47                 $id_trad=$id_article;
    48                 $row=sql_fetsel('lang,id_article','spip_articles','id_article='.$id_article);
    49                
    50                 // Seul l'aticle présent est pris dans l'array traductions
    51                 $traductions[$row['lang']]=$row['id_article'];
    52                
    53                 $options =  '<div class="options form_lier"><h2>'._T('taa:lier_traduction').'</h2>'.redirige_action_auteur("traduction",
    54                         $id_article.'-article',
    55                         "article",
    56                         "id_article=$id_article",
    57                         ("<label for='lier_trad'>" . _T('trad_lier') . "</label>" .
    58                         "\n<input type='text' class='fondl' name='lier_trad' id='lier_trad' size='5' />\n"),
    59                         _T('bouton_valider'),
    60                         " class='fondl'").'</div>';
    61                 }
    62        
    63         // Pour chaque langue présente on crée un bouton
    64        
    65         // indique l'article par défaut
    66         $span_content='<div class="ref_article">*<span>'._T('spip:trad_reference').'</span></div>';     
    67        
    68         foreach($langues_dispos as $key => $value){
    69                 $class='';
    70                 $span='';       
    71                 $trad='';
    7262
    73                 // les boutons hors article présent
    74                 if($traductions[$value]!=$id_article){
    75                                        
    76                         //Si il existe une traduction dans une langue du site on crée le bouton avec le lien de l'article
    77                         if(array_key_exists($value,$traductions)){
    78                                 // Article de référence?       
    79                                 if($traductions[$value]==$id_trad){
    80                                         $span=$span_content;                                   
     63                // Pour chaque langue présente on crée un bouton
     64
     65                // indique l'article par défaut
     66                $span_content='<div class="ref_article">*<span>'._T('spip:trad_reference').'</span></div>';
     67
     68                foreach($langues_dispos as $key => $value){
     69                        $class='';
     70                        $span='';
     71                        $trad='';
     72
     73                        // les boutons hors article présent
     74                        if($traductions[$value]!=$id_article){
     75
     76                                //Si il existe une traduction dans une langue du site on crée le bouton avec le lien de l'article
     77                                if(array_key_exists($value,$traductions)){
     78                                        // Article de référence?
     79                                        if($traductions[$value]==$id_trad){
     80                                                $span=$span_content;
    8181                                        }
    82                                 $onglets_traduction.='<li class="traduit box_onglet ajax">'.$span.'<a href="'.generer_url_ecrire($objet,'id_article='.$traductions[$value]).'">'.traduire_nom_langue($value).'</a></li>';                                       
    83                         }
    84                         // Sinon on crée un nouvel article dans la langue souhaitée
    85                         else{
    86                                 // Si le plugin traduction rubriques est activé on regarde si on trouve la rubrique traduite
    87                                 if ($trad_rub=test_plugin_actif('tradrub')) {
    88                                         $id_rubrique_traduite=rubrique_traduction($value,$id_rubrique);
     82                                        $onglets_traduction.='<li class="traduit box_onglet ajax">'.$span.'<a href="'.generer_url_ecrire($objet,'id_article='.$traductions[$value]).'">'.traduire_nom_langue($value).'</a></li>';
     83                                }
     84                                // Sinon on crée un nouvel article dans la langue souhaitée
     85                                else{
     86                                        // Si le plugin traduction rubriques est activé on regarde si on trouve la rubrique traduite
     87                                        if ($trad_rub=test_plugin_actif('tradrub')) {
     88                                                $id_rubrique_traduite=rubrique_traduction($value,$id_rubrique);
    8989
    90                                         if($id_rubrique_traduite){
    91                                                 $onglets_traduction.= '<li class="non_traduit box_onglet"><a href="'.generer_url_ecrire($objet.'_edit','new=oui&lier_trad='.$id_trad.'&id_rubrique='.$id_rubrique_traduite.'&lang_dest='.$value).'" title="'._T('ecrire:info_tout_site2').'">'.traduire_nom_langue($value).'</a></li>';
     90                                                if($id_rubrique_traduite){
     91                                                        $onglets_traduction.= '<li class="non_traduit box_onglet"><a href="'.generer_url_ecrire($objet.'_edit','new=oui&lier_trad='.$id_trad.'&id_rubrique='.$id_rubrique_traduite.'&lang_dest='.$value).'" title="'._T('ecrire:info_tout_site2').'">'.traduire_nom_langue($value).'</a></li>';
    9292                                                }
    93                                         elseif(test_plugin_actif('trad_rub')){
    94                        
    95                                                 $donnes_trad=destination_traduction($value,$id_rubrique,$creer_racine='');
    96                                                 $parent_trad=$donnes_trad[0];
    97                                                 $trad=$donnes_trad[1];
    98                                                
    99                                                 $onglets_traduction.='<li class="non_traduit box_onglet"><a href="'.generer_url_ecrire('rubrique_edit','new=oui&id_parent='.$parent_trad.'&lang_dest='.$value.'&lier_trad='.$trad.'&trad_new='.$trad_new.'&retour=nav').'" class="avis_source" title="'._T('tra:avis_rubrique_source').'">'.traduire_nom_langue($value).'</a>';
    100                                                 }                                       
    101                                        
    102                                         $section='oui';
     93                                                elseif(test_plugin_actif('trad_rub') AND $id_rubrique > 0){
     94                                                        $donnes_trad=destination_traduction($value,$id_rubrique,$creer_racine='');
     95                                                        $parent_trad=$donnes_trad[0];
     96                                                        $trad=$donnes_trad[1];
     97                                                        $onglets_traduction.='<li class="non_traduit box_onglet"><a href="'.generer_url_ecrire('rubrique_edit','new=oui&id_parent='.$parent_trad.'&lang_dest='.$value.'&lier_trad='.$trad.'&trad_new='.$trad_new.'&retour=nav').'" class="avis_source" title="'._T('tra:avis_rubrique_source').'">'.traduire_nom_langue($value).'</a>';
     98                                                }
     99                                                else {
     100                                                        $onglets_traduction.= '<li class="non_traduit box_onglet"><a href="'.generer_url_ecrire($objet.'_edit','new=oui&lier_trad='.$id_trad.'&lang_dest='.$value).'" title="'._T('ecrire:info_tout_site2').'">'.traduire_nom_langue($value).'</a></li>';
     101                                                }
     102
     103                                                $section='oui';
    103104
    104105                                        }
    105                                 else{
    106                                         $onglets_traduction.= '<li class="non_traduit box_onglet"><a href="'.generer_url_ecrire($objet.'_edit','new=oui&lier_trad='.$id_trad.'&lang_dest='.$value).'" title="'._T('ecrire:info_tout_site2').'">'.traduire_nom_langue($value).'</a></li>';                               
    107                                 }
     106                                        else{
     107                                                $onglets_traduction.= '<li class="non_traduit box_onglet"><a href="'.generer_url_ecrire($objet.'_edit','new=oui&lier_trad='.$id_trad.'&lang_dest='.$value).'" title="'._T('ecrire:info_tout_site2').'">'.traduire_nom_langue($value).'</a></li>';
     108                                        }
    108109
    109                                 $action=redirige_action_auteur ('changer_langue',$id_article.'-'.$value,$objet,"id_article=$id_article");
    110                                 // Si le plugin traduction rubriques est activé on affiche pas les onglets changement de langue car la langue se change en modifiant la rubrique
    111                                 if(!$section){
    112                                         $changer_traduction.='<li class="item  lang box_onglet"><a href="'.parametre_url($action,'changer_lang',$value).'">'.traduire_nom_langue($value).'</a></li>';                                   
     110                                        $action=redirige_action_auteur ('changer_langue',$id_article.'-'.$value,$objet,"id_article=$id_article");
     111                                        // Si le plugin traduction rubriques est activé on affiche pas les onglets changement de langue car la langue se change en modifiant la rubrique
     112                                        if(!$section){
     113                                                $changer_traduction.='<li class="item  lang box_onglet"><a href="'.parametre_url($action,'changer_lang',$value).'">'.traduire_nom_langue($value).'</a></li>';
    113114                                        }
    114115
    115116                                }
    116117                        }
    117                 // le bouton de l'article présent       
    118                 else{
    119                         if($traductions[$value]==$id_trad){
    120                                         $span=$span_content;                                   
    121                                         }
    122                         $onglets_traduction.='<li class="box_onglet"><strong class="on">'.$span.traduire_nom_langue($value).'</strong></li>';
     118                        // le bouton de l'article présent
     119                        else{
     120                                if($traductions[$value]==$id_trad){
     121                                        $span=$span_content;
     122                                }
     123                                $onglets_traduction.='<li class="box_onglet"><strong class="on">'.$span.traduire_nom_langue($value).'</strong></li>';
    123124                        }
    124125                }
     
    131132                'changer_traduction'=>$changer_traduction,
    132133                'edition_seule'=>$edition_seule,
    133                 'id_article'=>$id_article,     
    134                 'voir'=>_request('voir'),                                                                       
    135                 );
    136                
    137                 $retour=recuperer_fond('prive/editer/barre_traductions_article',$contexte,array('ajax'=>true));
     134                'id_article'=>$id_article,
     135                'voir'=>_request('voir'),
     136        );
     137
     138        $retour=recuperer_fond('prive/editer/barre_traductions_article',$contexte,array('ajax'=>true));
    138139        return $retour;
    139        
     140
    140141}
    141        
     142
    142143?>
  • _plugins_/traduction_articles_autrement/branches/1.0/lang

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/paquet.xml

    r104797 r107182  
    22        prefix="taa"
    33        categorie="edition"
    4         version="1.4.2"
     4        version="1.4.3"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
  • _plugins_/traduction_articles_autrement/branches/1.0/prive

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/prive/editer

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/prive/objets

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/prive/objets/liste

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/prive/squelettes

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/prive/squelettes/contenu

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/prive/themes

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/prive/themes/spip

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/prive/themes/spip/images

    • Property svn:ignore set to
      .settings*
  • _plugins_/traduction_articles_autrement/branches/1.0/taa_pipelines.php

    r69567 r107182  
    55function taa_header_prive($flux){
    66
    7     $flux .= '<link rel="stylesheet" href="'.find_in_path('css/taa_styles.css').'" type="text/css" media="all" />';
    8         return $flux;   
     7        $flux .= '<link rel="stylesheet" href="'.find_in_path('css/taa_styles.css').'" type="text/css" media="all" />';
     8        return $flux;
    99
    10  }
    11  
    12 /*Ajoute la langue de traduction dans le chargement du formulaire edition_article*/
    13  function taa_formulaire_charger($flux){
    14    $form = $flux['args']['form'];
    15    if ($form=='editer_article'){       
    16         $id_article=$flux['data']['id_article'];
    17     if(!$id_rubrique=$flux['data']['id_parent'])
    18         $id_rubrique=(
    19                 _request('id_rubrique')?_request('id_rubrique'):
    20                 (intval($id_article)?sql_getfetsel('id_rubrique','spip_articles','id_article='.$id_article):'')
    21                 );
    22         $lang= _request('lang_dest');
     10}
    2311
    24         if(!$lang AND intval($id_rubrique))$lang=sql_getfetsel('lang','spip_rubriques','id_rubrique='.$id_rubrique);
    25         $flux['data']['lang_dest']=$lang;
     12/*Ajoute la langue de traduction dans le chargement du formulaire edition_article*/
     13function taa_formulaire_charger($flux){
     14        $form = $flux['args']['form'];
     15        if ($form=='editer_article'){
     16                $id_article=$flux['data']['id_article'];
     17                if(!$id_rubrique=$flux['data']['id_parent'])
     18                        $id_rubrique=(
     19                                        _request('id_rubrique')?_request('id_rubrique'):
     20                                        (intval($id_article)?sql_getfetsel('id_rubrique','spip_articles','id_article='.$id_article):'')
     21                                        );
     22                        $lang= _request('lang_dest');
    2623
    27        
    28         if($flux['data']['lang_dest']){         
    29                         $flux['data']['_hidden'] .= '<input type="hidden" name="lang_dest" value="'.$lang.'"/>';
    30                         $flux['data']['_hidden'] .= '<input type="hidden" name="changer_lang" value="'.$lang.'"/>';
    31                 } 
     24                        if(!$lang AND intval($id_rubrique))$lang=sql_getfetsel('lang','spip_rubriques','id_rubrique='.$id_rubrique);
     25                        $flux['data']['lang_dest']=$lang;
     26
     27
     28                        if($flux['data']['lang_dest']){
     29                                $flux['data']['_hidden'] .= '<input type="hidden" name="lang_dest" value="'.$lang.'"/>';
     30                                $flux['data']['_hidden'] .= '<input type="hidden" name="changer_lang" value="'.$lang.'"/>';
     31                        }
    3232        }
    33  
     33
    3434        return $flux;
    3535}
    3636
    37 /*Prise en compte de la langue de traduction dans le traitement du formulaire edition_article*/ 
     37/*Prise en compte de la langue de traduction dans le traitement du formulaire edition_article*/
    3838function taa_pre_insertion($flux){
    39    if ($flux['args']['table']=='spip_articles'){
     39        if ($flux['args']['table']=='spip_articles'){
    4040                if($lang=_request('lang_dest')){
    4141                        $flux['data']['lang'] =  $lang;
    42                         $flux['data']['langue_choisie'] =  'oui';                       
    43                         }
    44                 elseif(test_plugin_actif('tradrub')){
    45                     $id_rubrique=_request('id_parent')?_request('id_parent'):_request('id_rubrique');
     42                        $flux['data']['langue_choisie'] =  'oui';
     43                }
     44                elseif(test_plugin_actif('tradrub') && $id_rubrique = _request('id_rubrique') && $id_rubrique > 0){
     45                        $id_rubrique=_request('id_parent')?_request('id_parent'):_request('id_rubrique');
    4646                        $lang=sql_getfetsel('lang','spip_rubriques','id_rubrique='.$id_rubrique);
    4747                        $flux['data']['lang'] = $lang;
    48                         $flux['data']['langue_choisie'] = 'non';       
    49                         }               
    50         }
    51 return $flux;
     48                        $flux['data']['langue_choisie'] = 'non';
     49                }
     50        }
     51        return $flux;
    5252}
    5353
     
    5555function taa_recuperer_fond($flux){
    5656        //Insertion des onglets de langue
    57     if ($flux['args']['fond'] == 'prive/squelettes/contenu/article'){
     57        if ($flux['args']['fond'] == 'prive/squelettes/contenu/article'){
    5858                include_spip('inc/config');
    59         $id_article= $flux['args']['contexte']['id_article'];
    60        
    61         // Vérifier si il y des secteurs à exclure
    62         $id_secteur=sql_getfetsel('id_secteur','spip_articles','id_article='.$id_article);
    63         $limiter_secteur=lire_config('taa/limiter_secteur')?lire_config('taa/limiter_secteur'):array();
    64    
    65                 if(!in_array($id_secteur,$limiter_secteur))     {       
     59                $id_article= $flux['args']['contexte']['id_article'];
     60
     61                // Vérifier si il y des secteurs à exclure
     62                $id_secteur=sql_getfetsel('id_secteur','spip_articles','id_article='.$id_article);
     63                $limiter_secteur=lire_config('taa/limiter_secteur')?lire_config('taa/limiter_secteur'):array();
     64
     65                if(!in_array($id_secteur,$limiter_secteur))     {
    6666                        $barre=charger_fonction('barre_langues','inc');
    6767                        $barre_langue=$barre($id_article);
    68                        
    69                 $flux['data']['texte'] = str_replace('</h1>', '</h1>' . $barre_langue, $flux['data']['texte']);
     68
     69                        $flux['data']['texte'] = str_replace('</h1>', '</h1>' . $barre_langue, $flux['data']['texte']);
    7070                }
    71     }
    72    
    73     //Liste compacte des articles
    74     if ($flux['args']['fond'] == 'prive/objets/liste/articles' AND _request('exec')!='article' AND !lire_config('taa/liste_compacte_desactive')){
     71        }
    7572
    76     $flux['texte'] = recuperer_fond('prive/objets/liste/articles_compacte',$flux['args']['contexte']);
     73        //Liste compacte des articles
     74        if ($flux['args']['fond'] == 'prive/objets/liste/articles' AND _request('exec')!='article' AND !lire_config('taa/liste_compacte_desactive')){
    7775
    78     }
     76                $flux['texte'] = recuperer_fond('prive/objets/liste/articles_compacte',$flux['args']['contexte']);
    7977
    80  return $flux;   
     78        }
     79
     80        return $flux;
    8181}
    8282
Note: See TracChangeset for help on using the changeset viewer.