source: spip-zone/_plugins_/migrateur/dev-by-http/prive/squelettes/inclure/migrateur-destination.html @ 88472

Last change on this file since 88472 was 88472, checked in by marcimat@…, 5 years ago

Max-height c'est plus joli.

File size: 5.5 KB
Line 
1
2[(#SET{liste,[(#VAL**|migrateur_etapes)]})]
3#SET{ok,#CONFIG{migrateur/type}|=={destination}}
4
5
6<B_migration_liste>
7<div id='etapes_migration'>
8        <h3>Étapes de migration</h3>
9<div class='liste'>
10<ul class='liste-items'>
11<BOUCLE_migration_liste(POUR){tableau #GET{liste}}{si #GET{ok}}>
12        <li class='item[ (#VAL|migrateur_derniere_etape|=={#COMPTEUR_BOUCLE}|oui)on]' id="migrateur_etape_#COMPTEUR_BOUCLE">
13        <a
14                data-id="migrateur_etape_#COMPTEUR_BOUCLE"
15                href='[(#URL_ACTION_AUTEUR{migrateur,#CLE}|parametre_url{redirect,[(#SELF|parametre_url{nb,#COMPTEUR_BOUCLE})]})]'>
16                <strong>#COMPTEUR_BOUCLE</strong> <span>#VALEUR</span>
17        </a>.
18        </li>
19</BOUCLE_migration_liste>
20</ul>
21</div>
22</div>
23</B_migration_liste>
24
25[(#VAL{Logs de l'action en cours}|boite_ouvrir{simple,'',logs_now})]
26<pre></pre>
27#BOITE_FERMER
28
29[(#EVAL{_DIR_TMP . '/migrateur/etape.log'}|file_exists|oui)
30[[(#VAL{Logs de la dernière étape exécutée}|boite_ouvrir{simple,'',logs_last})]
31<pre>
32(#EVAL{_DIR_TMP . '/migrateur/etape.log'}|file_get_contents)
33</pre>
34#BOITE_FERMER
35]]
36
37<style type='text/css'>
38.migration_next.right {float:right; margin-top:-35px;}
39#etapes_migration { margin-top:3em; }
40#etapes_migration a strong { font-size:1.2em; margin-right:1em; margin-left:.5em; }
41#etapes_migration .liste-items .item.actif { background-color: #fce201; }
42#etape_effectuee strong { font-size:1.2em; margin-right:1em; }
43
44div.notice > p:last-child { margin-bottom:0; }
45
46#logs_last, #logs_now {margin-top:3em; overflow:visible;}
47#logs_last pre, #logs_now pre { max-height: 500px; overflow-y: scroll; }
48#logs_last pre code, #logs_now pre code { color:#A37247; }
49#logs_last pre em, #logs_now pre em { color:#1490CB; font-style:normal; }
50#logs_now { display:none; }
51#logs_now.actif .inner .hd { background-color: #fce201; }
52
53.logo_navigation.loading img {
54        animation-iteration-count:infinite;
55        animation-timing-function:linear;
56        animation-name:fade;
57        animation-duration:2s;
58}
59
60@keyframes fade { 
61    0%   { opacity:1; filter: grayscale(0); }
62    50%  { opacity:0.5; filter: grayscale(20%);}
63    100% { opacity:1; filter: grayscale(0); }
64}
65</style>
66
67
68<script type='text/javascript'>
69;(function($){
70$(document).ready(function() {
71        $('#contenu a, #navigation #next_migration a').click(function() {
72                $('#navigation .logo_navigation').attr('aria-busy','true').addClass('loading');
73
74                $this = $('#' + $(this).data('id'));
75                $this.siblings().removeClass('on');
76                $this.addClass('actif');
77
78                [(#REM)
79                        // Si stream demandé (stream=1 dans l'url)
80                        // on fait un appel ajax en passant stream=1 à l'action en plus.
81                        // Celle ci retournera alors progressivement le texte.
82                        // http://stackoverflow.com/questions/7740646/jquery-ajax-read-the-stream-incrementally
83                ]
84                [(#ENV{stream}|oui)
85                        $("#logs_last").hide();
86                        $("#logs_now").addClass('actif').show();
87                        $log = $("#logs_now pre");
88                        $log.empty();
89
90                        url = $this.find('a').attr('href');
91                        url = parametre_url(url, 'stream', 1);
92
93                        titre = $this.find('span').text().trim();
94
95                        $.migrateur_close = function($me) {
96                                $('#navigation .logo_navigation').attr('aria-busy','false').removeClass('loading');
97                                $("#logs_now").removeClass('actif');
98                                $me.removeClass('actif');
99                                $me.addClass('on');
100
101                                if ($me.next().length) {
102                                        $n = $me.next().find('a');
103                                        show = 'suivant';
104                                } else {
105                                        $n = $('#migrateur_etape_1').find('a');
106                                        show = 'recommencer';
107                                }
108
109                                $("#next_migration a")
110                                        .attr('href',    $n.attr('href'))
111                                        .attr('data-id', $n.data('id'))
112                                        .data('id',      $n.data('id'))
113                                        .find('strong').text( $n.find("strong").text().trim() ).end()
114                                        .find('span')  .text( $n.find("span").text().trim() );
115
116                                if (show == 'suivant') {
117                                        $("#next_migration a .recommencer").addClass('none');
118                                        $("#next_migration a .suivant").removeClass('none');
119                                        $("#next_migration").parents('.box').find('.hd h3').text("<:migrateur:etape_suivante:>");
120                                } else {
121                                        $("#next_migration a .suivant").addClass('none');
122                                        $("#next_migration a .recommencer").removeClass('none');
123                                        $("#next_migration").parents('.box').find('.hd h3').text("<:migrateur:recommencer_etapes:>");
124                                }
125
126                                nb = $me.index() + 1;
127                                url = window.location.href;
128                                url = parametre_url(url, 'nb', nb);
129                                $.spip.pushHistoryState(url, '');
130                        }
131
132                        var last_response_len = false;
133                        // Attention, la surchage spip de .ajax n'entre pas dans le onprogress...
134                        // on utilise le jquery.ajax original.
135                        $.spip.intercepted.ajax(url, {
136                                xhrFields: {
137                                        onprogress: function(e) {
138                                                var this_response, response = e.currentTarget.response;
139                                                if (last_response_len === false) {
140                                                        this_response = response;
141                                                        last_response_len = response.length;
142                                                } else {
143                                                        this_response = response.substring(last_response_len);
144                                                        last_response_len = response.length;
145                                                }
146
147                                                $log.append(this_response);
148                                                if ($log.length) {
149                                                        $log.scrollTop($log\[0\].scrollHeight - $log.height());
150                                                }
151                                        }
152                                }
153                        })
154                        .done(function(data) {
155                                $log.append("\nJS: Action terminée...\n");
156                                //console.log('Complete response = ' + data);
157                                $.migrateur_close($this);
158                                if ($log.length) {
159                                        $log.scrollTop($log\[0\].scrollHeight - $log.height());
160                                }
161                        })
162                        .fail(function(data) {
163                                $log.append("\nJS: Action en erreur...\n");
164                                $log.append(data);
165                                $('#navigation .logo_navigation').attr('aria-busy','false').removeClass('loading');
166                                $("#logs_now").removeClass('actif');
167                                if ($this.parent().is('li')) {
168                                        $this.parent().removeClass('actif');
169                                }
170                        });
171
172                        $log.append("JS: Action demandée : <em>" + titre + "</em>\n\n");
173
174                        return false;
175                ]
176        });
177});
178})(jQuery);
179</script>
Note: See TracBrowser for help on using the repository browser.