X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=www%2Fplugins-dist%2Fporte_plume%2Fjavascript%2Fjquery.previsu_spip.js;h=5b5db0b72b1b666f3af5899cbb75df518f80ec45;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=5e57baa729dc13368b99e70cfada16af1751958b;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git diff --git a/www/plugins-dist/porte_plume/javascript/jquery.previsu_spip.js b/www/plugins-dist/porte_plume/javascript/jquery.previsu_spip.js index 5e57baa7..5b5db0b7 100644 --- a/www/plugins-dist/porte_plume/javascript/jquery.previsu_spip.js +++ b/www/plugins-dist/porte_plume/javascript/jquery.previsu_spip.js @@ -6,7 +6,8 @@ previewParserPath: '' , previewParserVar: 'data', textEditer: 'Editer', - textVoir: 'Voir' + textVoir: 'Voir', + textFullScreen: 'Plein écran' }; $.extend(options, settings); @@ -19,69 +20,142 @@ // init and build previsu buttons function init() { $$.addClass("pp_previsualisation"); - tabs = $('
').prependTo($$.parent()); + + // s'il n'y a pas de barre d'outil, mais qu'on demande une previsu, + // insérer une barre d'outil vide. + if (! $$.parent().has('.markItUpContainer').length) { + $$.barre_outils('vide'); + } + var mark = $$.parent(); + + + tabs = $('
').prependTo(mark); $(tabs).append( + '' + options.textFullScreen + '' + '' + options.textVoir + '' + '' + options.textEditer + '' ); - preview = $('
').insertAfter(tabs); + preview = $('
').insertAfter(mark.find('.markItUpHeader')); preview.hide(); - - $('.previsuVoir').click(function(){ - mark = $(this).parent().parent(); - objet = mark.parents('.formulaire_spip')[0].className.match(/formulaire_editer_(\w+)/); - champ = mark.parents('li')[0].className.match(/editer_(\w+)/); - dir = mark.find('textarea').attr('dir'); - $(mark).find('.markItUpPreview').height( - $(mark).find('.markItUpHeader').height() - + $(mark).find('.markItUpEditor').height() - + $(mark).find('.markItUpFooter').height() + + var is_full_screen = false; + + var objet = mark.parents('.formulaire_spip')[0].className.match(/formulaire_editer_(\w+)/); + objet = (objet ? objet[1] : ''); + var champ = mark.parents('.editer')[0].className.match(/editer_(\w+)/); + champ = (champ ? champ[1].toUpperCase() : ''); + var textarea = mark.find('textarea.pp_previsualisation'); + var preview = mark.find('.markItUpPreview'); + var dir = textarea.attr('dir'); + if(dir){ + preview.attr('dir',dir); + } + + tabs.find('.fullscreen').click(function(){ + // On commence par garder en mémoire la valeur d'origine de la taille du champ + if (!mark.is('.fullscreen')) { + textarea.data('height-origin', textarea.css('height')); + } + + mark.toggleClass('fullscreen'); + + // Si on vient de passer en fullscreen + if (mark.is('.fullscreen')){ + is_full_screen = true; + // afficher les boutons de la barre s'ils étaient masqués (cf prévisu) + mark.find('.markItUpHeader a').show(); + if (!mark.is('.livepreview')){ + var original_texte=""; + + function refresh_preview(){ + var texte = textarea.val(); + if (original_texte == texte){ + return; + } + renderPreview(preview.addClass('ajaxLoad'),texte,champ,objet); + original_texte = texte; + } + + var timerPreview=null; + mark.addClass('livepreview').find('.markItUpEditor').on('keyup click change focus refreshpreview',function(e){ + if (is_full_screen){ + if (timerPreview) clearTimeout(timerPreview); + timerPreview = setTimeout(refresh_preview,500); + } + }); + + $(window).on('keyup',function(e){ + if (is_full_screen) { + // Touche Echap pour sortir du mode fullscreen + if (e.type=='keyup' && e.keyCode==27 && !markitup_prompt){ + mark.removeClass('fullscreen'); + // On remet la taille d'origine + textarea.css('height', textarea.data('height-origin')); + is_full_screen = false; + } + } + }); + } + mark.find('.markItUpEditor').trigger('refreshpreview'); + } + // Si on sort du fullscreen + else { + // On remet la taille d'origine + textarea.css('height', textarea.data('height-origin')); + // masquer les boutons de la barre s'ils étaient masqués avant le plein écran (cf prévisu) + if ($(this).next().hasClass('on')) { + mark.find('.markItUpHeader a').hide(); + } + is_full_screen = false; + } + + return false; + }); + + tabs.find('.previsuVoir').click(function(){ + preview.height( + mark.find('.markItUpEditor').height() + + mark.find('.markItUpFooter').height() ); - $(mark).find('.markItUpHeader,.markItUpEditor,.markItUpFooter').hide(); + mark.find('.markItUpHeader a,.markItUpEditor,.markItUpFooter').hide(); $(this).addClass('on').next().removeClass('on'); - $(mark).find('.markItUpPreview').show() - .addClass('ajaxLoad') - .html(renderPreview( - $(mark).find('textarea.pp_previsualisation').val(), - champ[1].toUpperCase(), - (objet ? objet[1] : '')) - ) - .removeClass('ajaxLoad'); - if(dir) - $(mark).find('.markItUpPreview').attr('dir',dir); - - //ouvre un nouvel onglet lorsqu'on clique sur un lien dans la prévisualisation - $(".markItUpPreview a").attr("target","blank"); + renderPreview( + preview.show().addClass('ajaxLoad'), + mark.find('textarea.pp_previsualisation').val(), + champ, + objet, + false + ); return false; }); - $('.previsuEditer').click(function(){ - mark = $(this).parent().parent(); - $(mark).find('.markItUpPreview').hide(); - $(mark).find('.markItUpHeader,.markItUpEditor,.markItUpFooter').show(); + tabs.find('.previsuEditer').click(function(){ + mark.find('.markItUpPreview').hide(); + mark.find('.markItUpHeader a,.markItUpEditor,.markItUpFooter').show(); $(this).addClass('on').prev().removeClass('on'); + return false; }); } - function renderPreview(val, champ, objet) { - var phtml; + function renderPreview(node, val, champ, objet, async) { if (options.previewParserPath !== '') { $.ajax( { type: 'POST', - async: false, + async: typeof (async)=="undefined"?true:async, url: options.previewParserPath, data: 'champ='+champ +'&objet='+objet +'&' + options.previewParserVar+'='+encodeURIComponent(val), success: function(data) { - phtml = data; + node.html(data).removeClass('ajaxLoad'); + //ouvre un nouvel onglet lorsqu'on clique sur un lien dans la prévisualisation + $("a",node).attr("target","blank"); } } ); } - return phtml; } init();