Changeset 96414 in spip-zone


Ignore:
Timestamp:
Apr 3, 2016, 2:06:36 PM (3 years ago)
Author:
kent1@…
Message:

Amélioration du copier / coller

Version 0.4.3

Location:
_plugins_/zeroclipboard/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/zeroclipboard/trunk/javascript/spip_zeroclipboard.js

    r90197 r96414  
    22
    33$(function(){
    4         var copypaste_init = function(){
    5                 $('.copypaste').each(function(){
    6                         if(!$(this).prev().is('.copypaste_container'))
    7                                 $(this).before('<div class="copypaste_container" style="position:relative"><a title="'+locale.zeroclipboard.link_title_copy+'" class="copypaste_link">'+locale.zeroclipboard.link_title_copy+'</a></div>');
    8                         if($(this).attr('id'))
    9                                 $(this).prev('.copypaste_container').find('a').attr('data-clipboard-target',$(this).attr('id'));
    10                         else if($(this).is('input') || $(this).is('textarea'))
    11                                 $(this).prev('.copypaste_container').find('a').attr('data-clipboard-text',$(this).val());
    12                 });
    13                 $('.coloration_code .cadre_download').each(function(){
    14                         /**
    15                          * On ajoute la class si pas déjà fait
    16                          */
    17                         if(!$(this).is('.copypaste_container'))
    18                                 $(this)
    19                                         .addClass('copypaste_container')
    20                                         .css({'position':"relative"})
    21                                         .append(' - <a title="'+locale.zeroclipboard.link_title_copy+'" class="copypaste_link">'+locale.zeroclipboard.link_title_copy+'</a>');
    22                 });
    23                 $('.coloration_code').each(function(){
    24                         if(!$(this).is('.code') && !$(this).find('.cadre_download')[0] && !$(this).next().is('.cadre_download') && $(this).attr('data-clipboard-text') != '')
    25                                 $(this).append('<p class="download cadre_download copypaste_container" style="position:relative"><a title="'+locale.zeroclipboard.link_title_copy+'" class="copypaste_link">'+locale.zeroclipboard.link_title_copy+'</a></p>');
    26                 });
    27                
    28                 $('.cadre_download a.copypaste_link').each(function() {
    29                         var code = $(this).parent('.cadre_download').prev('.cadre'),me = this;
    30                         var content_data = code.attr('data-clipboard-text');
     4        $.fn.zero_init_download = function(){
     5                return this.each(function() {
     6                        var code = $(this).parent('.cadre_download').prev('.cadre'),
     7                                me = this,
     8                                content_data = code.attr('data-clipboard-text');
    319                        if(!content_data && $(this).parent().find('a').eq(0)){
    3210                                if($(this).parent().find('a').eq(0).attr('href')){
    3311                                        $.get($(this).parent().find('a').eq(0).attr('href'),function(data) {
    34                                                 $(me).parent().append('<div style="display:none" class="data-clipboard-hidden">'+data+'</div>');
     12                                                $(me).parent().append('<div style="display:none" class="data-clipboard-hidden"></div>');
     13                                                $(me).parent().find('.data-clipboard-hidden').text(data);
    3514                                        });
    3615                                }
     
    3918                        }
    4019                });
     20        }
     21        var copypaste_init = function(){
     22                var copy = false;
     23                if($('.copypaste').length)
     24                        $('.copypaste').each(function(){
     25                                if(!$(this).prev().is('.copypaste_container')){
     26                                        $(this).before('<div class="copypaste_container" style="position:relative"><a title="'+locale.zeroclipboard.link_title_copy+'" class="copypaste_link">'+locale.zeroclipboard.link_title_copy+'</a></div>');
     27                                        copy = true;
     28                                }
     29                                if($(this).attr('id'))
     30                                        $(this).prev('.copypaste_container').find('a').attr('data-clipboard-target',$(this).attr('id'));
     31                                else if($(this).is('input') || $(this).is('textarea'))
     32                                        $(this).prev('.copypaste_container').find('a').attr('data-clipboard-text',$(this).val());
     33                        });
     34               
     35                if($('.coloration_code').length){
     36                        if($('.cadre_download').length)
     37                                $('.coloration_code .cadre_download').each(function(){
     38                                        /**
     39                                         * On ajoute la class si pas déjà fait
     40                                         */
     41                                        if(!$(this).is('.copypaste_container')){
     42                                                $(this)
     43                                                        .addClass('copypaste_container')
     44                                                        .css({'position':"relative"})
     45                                                        .append(' - <a title="'+locale.zeroclipboard.link_title_copy+'" class="copypaste_link">'+locale.zeroclipboard.link_title_copy+'</a>');
     46                                                copy = true;
     47                                        }
     48                                });
     49                        $('.coloration_code').each(function(){
     50                                if(!$(this).is('.code') && !$(this).find('.cadre_download')[0] && !$(this).next().is('.cadre_download') && $(this).attr('data-clipboard-text') != ''){
     51                                        $(this).append('<p class="download cadre_download copypaste_container" style="position:relative"><a title="'+locale.zeroclipboard.link_title_copy+'" class="copypaste_link">'+locale.zeroclipboard.link_title_copy+'</a></p>');
     52                                        copy = true;
     53                                }
     54                        });
     55                        if(copy)
     56                                $('.copypaste_link').zero_init_download();
     57                }
    4158
    4259                ZeroClipboard.destroy();
    43                 clip = new ZeroClipboard($('.copypaste_link'));
    44                 clip.on('ready', function(event) {
    45                         $('.copypaste_copied').html(locale.zeroclipboard.link_title_copy)
    46                                 .attr('title',locale.zeroclipboard.link_title_copy)
    47                                 .removeClass('copypaste_copied');
    48                         clip.on('copy', function(event) {
    49                                 if(typeof($(event.target).attr('data-clipboard-text')) == "undefined"){
    50                                         event.clipboardData.setData('text/plain', $(event.target).parent().find('.data-clipboard-hidden').html());
    51                                 }
     60                if(copy){
     61                        clip = new ZeroClipboard($('.copypaste_link'));
     62                        clip.on('ready', function(event) {
     63                                $('.copypaste_copied').html(locale.zeroclipboard.link_title_copy)
     64                                        .attr('title',locale.zeroclipboard.link_title_copy)
     65                                        .removeClass('copypaste_copied');
     66                                clip.on('copy', function(event) {
     67                                        if(typeof($(event.target).attr('data-clipboard-text')) == "undefined"){
     68                                                event.clipboardData.setData('text/plain', $(event.target).parent().find('.data-clipboard-hidden').text());
     69                                        }
     70                                });
     71                                clip.on('aftercopy', function(event) {
     72                                        if(event.data['text/plain'] != undefined){
     73                                                $(event.target)
     74                                                        .html(locale.zeroclipboard.link_title_copied).attr('title',locale.zeroclipboard.link_title_copied).addClass('copypaste_copied');
     75                                                $('.copypaste_copied').not($(event.target)).each(function(i){
     76                                                        $(this)
     77                                                                .html(locale.zeroclipboard.link_title_copy)
     78                                                                .attr('title',locale.zeroclipboard.link_title_copy)
     79                                                                .removeClass('copypaste_copied');
     80                                                });
     81                                        }
     82                                });
    5283                        });
    53                         clip.on('aftercopy', function(event) {
    54                                 if(event.data['text/plain'] != undefined){
    55                                         $(event.target)
    56                                                 .html(locale.zeroclipboard.link_title_copied).attr('title',locale.zeroclipboard.link_title_copied).addClass('copypaste_copied');
    57                                         $('.copypaste_copied').not($(event.target)).each(function(i){
    58                                                 $(this)
    59                                                         .html(locale.zeroclipboard.link_title_copy)
    60                                                         .attr('title',locale.zeroclipboard.link_title_copy)
    61                                                         .removeClass('copypaste_copied');
    62                                         });
    63                                 }
     84                        clip.on( 'error', function(event) {
     85                                ZeroClipboard.destroy();
    6486                        });
    65                 });
    66 
    67                 clip.on( 'error', function(event) {
    68                         ZeroClipboard.destroy();
    69                 });
     87                }
    7088        }
    7189        copypaste_init();
  • _plugins_/zeroclipboard/trunk/paquet.xml

    r90197 r96414  
    22        prefix="zeroclipboard"
    33        categorie="divers"
    4         version="0.4.2"
     4        version="0.4.3"
    55        etat="stable"
    66        compatibilite="[3.0.5;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.