[SPIP] +2.1.12
[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 return false;
52 });
53 $('.previsuEditer').click(function(){
54 mark = $(this).parent().parent();
55 $(mark).find('.markItUpPreview').hide();
56 $(mark).find('.markItUpHeader').show();
57 $(mark).find('.markItUpEditor').show();
58 $(mark).find('.markItUpFooter').show();
59 $(this).addClass('on').prev().removeClass('on');
60 return false;
61 });
62 }
63
64
65 function renderPreview(val, champ, objet) {
66 var phtml;
67 if (options.previewParserPath !== '') {
68 $.ajax( {
69 type: 'POST',
70 async: false,
71 url: options.previewParserPath,
72 data: 'champ='+champ
73 +'&objet='+objet
74 +'&' + options.previewParserVar+'='+encodeURIComponent(val),
75 success: function(data) {
76 phtml = data;
77 }
78 } );
79 }
80 return phtml;
81 }
82
83 init();
84 });
85 };
86 })(jQuery);