previewParserPath: '' ,\r
previewParserVar: 'data',\r
textEditer: 'Editer',\r
- textVoir: 'Voir'\r
+ textVoir: 'Voir',\r
+ textFullScreen: 'Plein écran'\r
};\r
$.extend(options, settings);\r
\r
// init and build previsu buttons\r
function init() {\r
$$.addClass("pp_previsualisation");\r
- tabs = $('<div class="markItUpTabs"></div>').prependTo($$.parent());\r
+ \r
+ // s'il n'y a pas de barre d'outil, mais qu'on demande une previsu,\r
+ // insérer une barre d'outil vide.\r
+ if (! $$.parent().has('.markItUpContainer').length) {\r
+ $$.barre_outils('vide');\r
+ }\r
+ var mark = $$.parent();\r
+\r
+\r
+ tabs = $('<div class="markItUpTabs"></div>').prependTo(mark);\r
$(tabs).append(\r
+ '<a href="#fullscreen" class="fullscreen">' + options.textFullScreen + '</a>' +\r
'<a href="#previsuVoir" class="previsuVoir">' + options.textVoir + '</a>' +\r
'<a href="#previsuEditer" class="previsuEditer on">' + options.textEditer + '</a>'\r
);\r
\r
- preview = $('<div class="markItUpPreview"></div>').insertAfter(tabs);\r
+ preview = $('<div class="markItUpPreview"></div>').insertAfter(mark.find('.markItUpHeader'));\r
preview.hide();\r
- \r
- $('.previsuVoir').click(function(){\r
- mark = $(this).parent().parent();\r
- objet = mark.parents('.formulaire_spip')[0].className.match(/formulaire_editer_(\w+)/);\r
- champ = mark.parents('li')[0].className.match(/editer_(\w+)/);\r
- dir = mark.find('textarea').attr('dir');\r
- $(mark).find('.markItUpPreview').height(\r
- $(mark).find('.markItUpHeader').height()\r
- + $(mark).find('.markItUpEditor').height()\r
- + $(mark).find('.markItUpFooter').height()\r
+\r
+ var is_full_screen = false;\r
+\r
+ var objet = mark.parents('.formulaire_spip')[0].className.match(/formulaire_editer_(\w+)/);\r
+ objet = (objet ? objet[1] : '');\r
+ var champ = mark.parents('.editer')[0].className.match(/editer_(\w+)/);\r
+ champ = (champ ? champ[1].toUpperCase() : '');\r
+ var textarea = mark.find('textarea.pp_previsualisation');\r
+ var preview = mark.find('.markItUpPreview'); \r
+ var dir = textarea.attr('dir');\r
+ if(dir){\r
+ preview.attr('dir',dir);\r
+ }\r
+\r
+ tabs.find('.fullscreen').click(function(){\r
+ // On commence par garder en mémoire la valeur d'origine de la taille du champ\r
+ if (!mark.is('.fullscreen')) {\r
+ textarea.data('height-origin', textarea.css('height'));\r
+ }\r
+ \r
+ mark.toggleClass('fullscreen');\r
+ \r
+ // Si on vient de passer en fullscreen\r
+ if (mark.is('.fullscreen')){\r
+ is_full_screen = true;\r
+ // afficher les boutons de la barre s'ils étaient masqués (cf prévisu)\r
+ mark.find('.markItUpHeader a').show();\r
+ if (!mark.is('.livepreview')){\r
+ var original_texte="";\r
+ \r
+ function refresh_preview(){\r
+ var texte = textarea.val();\r
+ if (original_texte == texte){\r
+ return;\r
+ }\r
+ renderPreview(preview.addClass('ajaxLoad'),texte,champ,objet);\r
+ original_texte = texte;\r
+ }\r
+ \r
+ var timerPreview=null;\r
+ mark.addClass('livepreview').find('.markItUpEditor').on('keyup click change focus refreshpreview',function(e){\r
+ if (is_full_screen){\r
+ if (timerPreview) clearTimeout(timerPreview);\r
+ timerPreview = setTimeout(refresh_preview,500);\r
+ }\r
+ });\r
+ \r
+ $(window).on('keyup',function(e){\r
+ if (is_full_screen) {\r
+ // Touche Echap pour sortir du mode fullscreen\r
+ if (e.type=='keyup' && e.keyCode==27 && !markitup_prompt){\r
+ mark.removeClass('fullscreen');\r
+ // On remet la taille d'origine\r
+ textarea.css('height', textarea.data('height-origin'));\r
+ is_full_screen = false;\r
+ }\r
+ }\r
+ });\r
+ }\r
+ mark.find('.markItUpEditor').trigger('refreshpreview');\r
+ }\r
+ // Si on sort du fullscreen\r
+ else {\r
+ // On remet la taille d'origine\r
+ textarea.css('height', textarea.data('height-origin'));\r
+ // masquer les boutons de la barre s'ils étaient masqués avant le plein écran (cf prévisu)\r
+ if ($(this).next().hasClass('on')) {\r
+ mark.find('.markItUpHeader a').hide();\r
+ }\r
+ is_full_screen = false;\r
+ }\r
+ \r
+ return false;\r
+ });\r
+\r
+ tabs.find('.previsuVoir').click(function(){\r
+ preview.height(\r
+ mark.find('.markItUpEditor').height()\r
+ + mark.find('.markItUpFooter').height()\r
);\r
\r
- $(mark).find('.markItUpHeader,.markItUpEditor,.markItUpFooter').hide();\r
+ mark.find('.markItUpHeader a,.markItUpEditor,.markItUpFooter').hide();\r
$(this).addClass('on').next().removeClass('on');\r
- $(mark).find('.markItUpPreview').show()\r
- .addClass('ajaxLoad')\r
- .html(renderPreview(\r
- $(mark).find('textarea.pp_previsualisation').val(),\r
- champ[1].toUpperCase(),\r
- (objet ? objet[1] : ''))\r
- )\r
- .removeClass('ajaxLoad');\r
- if(dir)\r
- $(mark).find('.markItUpPreview').attr('dir',dir);\r
-\r
- //ouvre un nouvel onglet lorsqu'on clique sur un lien dans la prévisualisation\r
- $(".markItUpPreview a").attr("target","blank");\r
+ renderPreview(\r
+ preview.show().addClass('ajaxLoad'),\r
+ mark.find('textarea.pp_previsualisation').val(),\r
+ champ,\r
+ objet,\r
+ false\r
+ );\r
\r
return false;\r
});\r
- $('.previsuEditer').click(function(){\r
- mark = $(this).parent().parent();\r
- $(mark).find('.markItUpPreview').hide();\r
- $(mark).find('.markItUpHeader,.markItUpEditor,.markItUpFooter').show();\r
+ tabs.find('.previsuEditer').click(function(){\r
+ mark.find('.markItUpPreview').hide();\r
+ mark.find('.markItUpHeader a,.markItUpEditor,.markItUpFooter').show();\r
$(this).addClass('on').prev().removeClass('on');\r
+ \r
return false;\r
});\r
}\r
\r
- function renderPreview(val, champ, objet) {\r
- var phtml;\r
+ function renderPreview(node, val, champ, objet, async) {\r
if (options.previewParserPath !== '') {\r
$.ajax( {\r
type: 'POST',\r
- async: false,\r
+ async: typeof (async)=="undefined"?true:async,\r
url: options.previewParserPath,\r
data: 'champ='+champ\r
+'&objet='+objet\r
+'&' + options.previewParserVar+'='+encodeURIComponent(val),\r
success: function(data) {\r
- phtml = data; \r
+ node.html(data).removeClass('ajaxLoad');\r
+ //ouvre un nouvel onglet lorsqu'on clique sur un lien dans la prévisualisation\r
+ $("a",node).attr("target","blank");\r
}\r
} );\r
}\r
- return phtml;\r
}\r
\r
init();\r