Changeset 74528 in spip-zone


Ignore:
Timestamp:
Jul 31, 2013, 3:05:16 PM (6 years ago)
Author:
marcimat@…
Message:

Corrections pour la dev :

  • pour suivre jquery et jquery ui (accordion & tabs) : ses options ont changé
  • pour Basket : faire en sorte que 2 fabrique (dev et trunk) n'interfèrent pas dans le stockage des scripts, en utilisant une clé qui dépend de la version du plugin jquery_ui ou skeleditor.

Reste un bug sur le dépliement des Diff : onAjaxLoad appelle la fonction js de la Fabrique 2 fois sans savoir pourquoi, du coup, le toggle() est effectué 2 fois de suite par clic également.

Location:
_plugins_/fabrique/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fabrique/trunk/javascript/formulaire_fabrique.js.html

    r70001 r74528  
    2828                /* Deplier ou replier le diff */
    2929                $(".formulaire_fabriquer_plugin .reponse_formulaire_diff").find('>div.diff').hide();
    30                 $(".formulaire_fabriquer_plugin .reponse_formulaire_diff h4").click(function(){
    31                         $(this).parent().find('>div').toggle();
     30                $(".formulaire_fabriquer_plugin .reponse_formulaire_diff h4").on("click", function(){
     31                        $(this).parent().find('>div.diff').toggle();
    3232                });
    3333
     34                [(#REM) faire dépendre le stockage de Basket de la version de jqueryUI ]
     35                [(#SET{ui_version,#PLUGIN{jqueryui,version}})]
    3436
    3537                /* Installer les onglets et accordions */
    36                 basket.require({url: "#CHEMIN{javascript/ui/jquery.ui.core.js}"}).then(function(){
    37                 basket.require({url: "#CHEMIN{javascript/ui/jquery.ui.widget.js}"}).then(function(){
    38                 basket.require({url: "#CHEMIN{javascript/ui/jquery.ui.mouse.js}"}).then(function(){
    39                         basket.require(
    40                                 {url: "#CHEMIN{javascript/ui/jquery.ui.tabs.js}"},
    41                                 {url: "#CHEMIN{javascript/ui/jquery.ui.accordion.js}"},
    42                                 {url: "#CHEMIN{javascript/ui/jquery.ui.sortable.js}"}
    43                         )
    44                         .then(function(){
    45                                 /*
    46                                         ACCORDION avant TABS sinon la largeur de
    47                                         l'accordion actif (autre que le premier)
    48                                         est mal calcule sur un onglet caché
     38                /* Renouveler tous les 7 jours… ie. Pas la peine de garder si on utilise plus cette version */
     39                basket.require({url: "#CHEMIN{javascript/ui/jquery.ui.core.js}",   key: "ui.core.#GET{ui_version}",   expire: 24 * 7}).then(function(){
     40                basket.require({url: "#CHEMIN{javascript/ui/jquery.ui.widget.js}", key: "ui.widget.#GET{ui_version}", expire: 24 * 7}).then(function(){
     41                basket.require({url: "#CHEMIN{javascript/ui/jquery.ui.mouse.js}",  key: "ui.mouse.#GET{ui_version}",  expire: 24 * 7}).then(function(){
     42                basket.require(
     43                        {url: "#CHEMIN{javascript/ui/jquery.ui.tabs.js}",      key: "ui.tabs.#GET{ui_version}",      expire: 24 * 7},
     44                        {url: "#CHEMIN{javascript/ui/jquery.ui.accordion.js}", key: "ui.accordion.#GET{ui_version}", expire: 24 * 7},
     45                        {url: "#CHEMIN{javascript/ui/jquery.ui.sortable.js}",  key: "ui.sortable.#GET{ui_version}",  expire: 24 * 7}
     46                ).then(function(){
     47                        /*
     48                                ACCORDION avant TABS sinon la largeur de
     49                                l'accordion actif (autre que le premier)
     50                                est mal calcule sur un onglet caché
    4951
    50                                         Pour les accordions & tabs, on sauve
    51                                         le dernier ouvert, et on ouvre ceux la
    52                                         au chargement de la page
    53                                 */
    54                                 if ($.fn.accordion) {
    55                                         $("#tabs > div > .parties").accordion({
    56                                                 collapsible: true,
    57                                                 autoHeight: false,
    58                                                 navigation: true,
     52                                Pour les accordions & tabs, on sauve
     53                                le dernier ouvert, et on ouvre ceux la
     54                                au chargement de la page
     55                        */
     56                        if ($.fn.accordion) {
     57                                $("#tabs > div > .parties").accordion({
     58                                        collapsible: true,
     59                                        heightStyle: "content",
     60                                        create: function(event, ui) {
     61                                                tab_id = $(this).attr('id').substring(7);
     62                                                i = Number($("#open_accordion_" + tab_id).val())
     63                                                $(this).accordion("option", "active", i);
     64
     65                                        },
     66                                        activate: function(event, ui) {
     67                                                tab_id = $(this).attr('id').substring(7);
     68                                                $('#open_accordion_' + tab_id).val( $(this).accordion('option', 'active') );
     69                                        }
     70                                });
     71
     72                                $("#tabs > div > .parties .parties").accordion({
     73                                        collapsible: true,
     74                                        heightStyle: "content",
     75                                        active: false,
     76                                        header: '> div > h4'
     77                                })
     78                                .sortable({
     79                                        axis: "y",
     80                                        handle: "h4",
     81                                        stop: function( event, ui ) {
     82                                                // IE doesn't register the blur when sorting
     83                                                // so trigger focusout handlers to remove .ui-state-focus
     84                                                ui.item.children( "h4" ).triggerHandler( "focusout" );
     85                                        },
     86                                        update: function(event, ui) {
     87                                                tab = ui.item.parent().data('tab');
     88                                                var champOrder = $(this).sortable('toArray').toString();
     89                                                form = $(this).closest('form');
     90                                                form.find('div:first')
     91                                                        .prepend('<input type="hidden" name="f_action[champorder][' + tab + ']" value="'+ champOrder + '">');
     92                                                form.submit();
     93                                        }
     94                                });
     95                        }
     96                       
     97                        if ($.fn.tabs) {
     98                                $("#tabs").tabs({
     99                                                active: $('#open_tab').val(),
     100                                                beforeActivate: function(event, ui) {
     101                                                        $('#open_tab').val(ui.newTab.index());
     102                                                },
    59103                                                create: function(event, ui) {
    60                                                         tab_id = $(this).attr('id').substring(7);
    61                                                         i = Number($("#open_accordion_" + tab_id).val())
    62                                                         $(this).accordion("option", "active", i);
    63 
    64                                                 },
    65                                                 activate: function(event, ui) {
    66                                                         tab_id = $(this).attr('id').substring(7);
    67                                                         $('#open_accordion_' + tab_id).val( $(this).accordion('option', 'active') );
     104                                                        /* Se remettre en haut du formulaire après un coup d'ajax
     105                                                           Ce que fait SPIP habituellement, mais accordion() et tabs()
     106                                                           arrivent après et les navigateurs se décalent
     107                                                        */
     108                                                        if ($is_ajax) {
     109                                                                $('.formulaire_fabriquer_plugin').positionner(false);
     110                                                        }
    68111                                                }
    69                                         });
    70 
    71                                         $("#tabs > div > .parties .parties").accordion({
    72                                                 collapsible: true,
    73                                                 autoHeight: false,
    74                                                 navigation: true,
    75                                                 active: false,
    76                                                 header: '> div > h4'
    77112                                        })
    78                                         .sortable({
    79                                                 axis: "y",
    80                                                 handle: "h4",
    81                                                 stop: function( event, ui ) {
    82                                                         // IE doesn't register the blur when sorting
    83                                                         // so trigger focusout handlers to remove .ui-state-focus
    84                                                         ui.item.children( "h4" ).triggerHandler( "focusout" );
    85                                                 },
     113                                        .find( ".ui-tabs-nav" ).sortable({
     114                                                axis: "x",
    86115                                                update: function(event, ui) {
    87                                                         tab = ui.item.parent().data('tab');
    88                                                         var champOrder = $(this).sortable('toArray').toString();
     116                                                        var tabOrder = $(this).sortable('toArray').toString();
    89117                                                        form = $(this).closest('form');
    90118                                                        form.find('div:first')
    91                                                                 .prepend('<input type="hidden" name="f_action[champorder][' + tab + ']" value="'+ champOrder + '">');
     119                                                                .prepend('<input type="hidden" name="f_action[taborder]" value="' + tabOrder + '">');
    92120                                                        form.submit();
    93121                                                }
    94122                                        });
    95                                 }
    96                                
    97                                 if ($.fn.tabs) {
    98                                         $("#tabs").tabs({
    99                                                         selected: $('#open_tab').val(),
    100                                                         beforeActivate: function(event, ui) {
    101                                                                 $('#open_tab').val(ui.newTab.index());
    102                                                         },
    103                                                         create: function(event, ui) {
    104                                                                 /* Se remettre en haut du formulaire après un coup d'ajax
    105                                                                    Ce que fait SPIP habituellement, mais accordion() et tabs()
    106                                                                    arrivent après et les navigateurs se décalent
    107                                                                 */
    108                                                                 if ($is_ajax) {
    109                                                                         $('.formulaire_fabriquer_plugin').positionner(false);
    110                                                                 }
    111                                                         }
    112                                                 })
    113                                                 .find( ".ui-tabs-nav" ).sortable({
    114                                                         axis: "x",
    115                                                         update: function(event, ui) {
    116                                                                 var tabOrder = $(this).sortable('toArray').toString();
    117                                                                 form = $(this).closest('form');
    118                                                                 form.find('div:first')
    119                                                                         .prepend('<input type="hidden" name="f_action[taborder]" value="' + tabOrder + '">');
    120                                                                 form.submit();
    121                                                         }
    122                                                 });
    123                                 }
    124                         })
    125                 })})});
     123                        }
     124                })})})});
    126125
    127126                <BOUCLE_skeleditor(CONDITION){si #PLUGIN{skeleditor}}>
     
    135134                });
    136135
     136                [(#REM) faire dépendre le stockage de Basket de la version de skeleditor ]
     137                [(#SET{sk_version,#PLUGIN{skeleditor,version}})]
     138
    137139                function fabrique_coloriage(textarea, code) {
    138                         basket.require({url: "#CHEMIN{codemirror/lib/codemirror.js}"}).then(function(){
    139                         basket.require({url: "#CHEMIN{codemirror/mode/xml/xml.js}"}).then(function(){
     140                        basket.require({url: "#CHEMIN{codemirror/lib/codemirror.js}",  key: "codemirror.#GET{sk_version}",     expire: 24*7 }).then(function(){
     141                        basket.require({url: "#CHEMIN{codemirror/mode/xml/xml.js}",    key: "codemirror.xml.#GET{sk_version}", expire: 24*7 }).then(function(){
    140142                        basket.require(
    141                                 {url: "#CHEMIN{codemirror/mode/javascript/javascript.js}"},
    142                                 {url: "#CHEMIN{codemirror/mode/css/css.js}"},
    143                                 {url: "#CHEMIN{codemirror/mode/clike/clike.js}"}).then(function(){
    144                         basket.require({url: "#CHEMIN{codemirror/mode/php/php.js}"}).then(function(){
     143                                {url: "#CHEMIN{codemirror/mode/javascript/javascript.js}", key: "codemirror.javascript.#GET{sk_version}", expire: 24*7},
     144                                {url: "#CHEMIN{codemirror/mode/css/css.js}",               key: "codemirror.css.#GET{sk_version}",        expire: 24*7},
     145                                {url: "#CHEMIN{codemirror/mode/clike/clike.js}",           key: "codemirror.clike.#GET{sk_version}",      expire: 24*7}).then(function(){
     146                        basket.require({url: "#CHEMIN{codemirror/mode/php/php.js}",    key: "codemirror.php.#GET{sk_version}",        expire: 24*7}).then(function(){
    145147                                        var cm_options = {
    146148                                                lineNumbers: true,
     
    169171        }
    170172
    171 
    172173        formulaire_fabrique_interactions(false); /* ici, on n'est pas ajax */
    173174        onAjaxLoad(formulaire_fabrique_interactions);
  • _plugins_/fabrique/trunk/paquet.xml

    r69990 r74528  
    22        prefix="fabrique"
    33        categorie="outil"
    4         version="2.0.0-dev"
     4        version="2.0.1"
    55        etat="dev"
    66        compatibilite="[3.1.0-dev;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.