[SPIP] +2.1.12
[velocampus/web/www.git] / www / extensions / porte_plume / javascript / jquery.previsu_spip.js
diff --git a/www/extensions/porte_plume/javascript/jquery.previsu_spip.js b/www/extensions/porte_plume/javascript/jquery.previsu_spip.js
new file mode 100644 (file)
index 0000000..88d4fe7
--- /dev/null
@@ -0,0 +1,86 @@
+;(function($) {\r
+       $.fn.previsu_spip = function(settings) {\r
+               var options;\r
+\r
+               options = {\r
+                       previewParserPath:      '' ,\r
+                       previewParserVar:       'data',\r
+                       textEditer:     'Editer',\r
+                       textVoir:       'Voir'\r
+               };\r
+               $.extend(options, settings);\r
+\r
+               return this.each(function() {\r
+                       var $$, textarea, tabs, preview;\r
+                       $$ = $(this);\r
+                       textarea = this;\r
+\r
+                       // init and build previsu buttons\r
+                       function init() {\r
+                               $$.addClass("pp_previsualisation");\r
+                               tabs = $('<div class="markItUpTabs"></div>').prependTo($$.parent());\r
+                               $(tabs).append(\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.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
+                                       $(mark).find('.markItUpPreview').height(\r
+                                                 $(mark).find('.markItUpHeader').height()\r
+                                               + $(mark).find('.markItUpEditor').height()\r
+                                               + $(mark).find('.markItUpFooter').height()\r
+                                       );\r
+                                       $(mark).find('.markItUpHeader').hide();\r
+                                       $(mark).find('.markItUpEditor').hide();\r
+                                       $(mark).find('.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[1])\r
+                                               )\r
+                                               .removeClass('ajaxLoad');\r
+                                       return false;\r
+                               });\r
+                               $('.previsuEditer').click(function(){\r
+                                       mark = $(this).parent().parent();\r
+                                       $(mark).find('.markItUpPreview').hide();\r
+                                       $(mark).find('.markItUpHeader').show();\r
+                                       $(mark).find('.markItUpEditor').show();\r
+                                       $(mark).find('.markItUpFooter').show();\r
+                                       $(this).addClass('on').prev().removeClass('on');\r
+                                       return false;\r
+                               });\r
+                       }\r
+\r
+\r
+                       function renderPreview(val, champ, objet) {     \r
+                               var phtml;\r
+                               if (options.previewParserPath !== '') {\r
+                                       $.ajax( {\r
+                                               type: 'POST',\r
+                                               async: false,\r
+                                               url: options.previewParserPath,\r
+                                               data: 'champ='+champ\r
+                                                       +'&objet='+objet\r
+                                                       +'&' + options.previewParserVar+'='+encodeURIComponent(val),\r
+                                               success: function(data) {\r
+                                                       phtml = data; \r
+                                               }\r
+                                       } );\r
+                               }\r
+                               return phtml;\r
+                       }\r
+       \r
+                       init();\r
+               });\r
+       };\r
+})(jQuery);\r