e8ef8c17dd3c7393bfcde874e014c35b10633f30
[ptitvelo/web/www.git] / www / plugins-dist / porte_plume / javascript / jquery.previsu_spip.js
1 ;(function($) {
2 $.fn.previsu_spip = function(settings) {
3 var options;
4
5 options = {
6 previewParserPath: '' ,
7 previewParserVar: 'data',
8 textEditer: 'Editer',
9 textVoir: 'Voir'
10 };
11 $.extend(options, settings);
12
13 return this.each(function() {
14
15 var $$, textarea, tabs, preview;
16 $$ = $(this);
17 textarea = this;
18
19 // init and build previsu buttons
20 function init() {
21 $$.addClass("pp_previsualisation");
22 tabs = $('<div class="markItUpTabs"></div>').prependTo($$.parent());
23 $(tabs).append(
24 '<a href="#previsuVoir" class="previsuVoir">' + options.textVoir + '</a>' +
25 '<a href="#previsuEditer" class="previsuEditer on">' + options.textEditer + '</a>'
26 );
27
28 preview = $('<div class="markItUpPreview"></div>').insertAfter(tabs);
29 preview.hide();
30
31 $('.previsuVoir').click(function(){
32 mark = $(this).parent().parent();
33 objet = mark.parents('.formulaire_spip')[0].className.match(/formulaire_editer_(\w+)/);
34 champ = mark.parents('li')[0].className.match(/editer_(\w+)/);
35 $(mark).find('.markItUpPreview').height(
36 $(mark).find('.markItUpHeader').height()
37 + $(mark).find('.markItUpEditor').height()
38 + $(mark).find('.markItUpFooter').height()
39 );
40
41 $(mark).find('.markItUpHeader').hide();
42 $(mark).find('.markItUpEditor').hide();
43 $(mark).find('.markItUpFooter').hide();
44 $(this).addClass('on').next().removeClass('on');
45 $(mark).find('.markItUpPreview').show()
46 .addClass('ajaxLoad')
47 .html(renderPreview(
48 $(mark).find('textarea.pp_previsualisation').val(),
49 champ[1].toUpperCase(),
50 (objet ? objet[1] : ''))
51 )
52 .removeClass('ajaxLoad');
53
54 //ouvre un nouvel onglet lorsqu'on clique sur un lien dans la prévisualisation
55 $(".markItUpPreview a").attr("target","blank");
56
57 return false;
58 });
59 $('.previsuEditer').click(function(){
60 mark = $(this).parent().parent();
61 $(mark).find('.markItUpPreview').hide();
62 $(mark).find('.markItUpHeader').show();
63 $(mark).find('.markItUpEditor').show();
64 $(mark).find('.markItUpFooter').show();
65 $(this).addClass('on').prev().removeClass('on');
66 return false;
67 });
68 }
69
70
71 function renderPreview(val, champ, objet) {
72 var phtml;
73 if (options.previewParserPath !== '') {
74 $.ajax( {
75 type: 'POST',
76 async: false,
77 url: options.previewParserPath,
78 data: 'champ='+champ
79 +'&objet='+objet
80 +'&' + options.previewParserVar+'='+encodeURIComponent(val),
81 success: function(data) {
82 phtml = data;
83 }
84 } );
85 }
86 return phtml;
87 }
88
89 init();
90 });
91 };
92 })(jQuery);