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