<?php /** * FavMasToKey - Page d'accueil */ // Définir la constante pour inclure les fichiers define('FAVMASTOKEY', true); // Inclure les fichiers requis require_once 'includes/config.php'; require_once 'includes/functions.php'; // Vérifier si l'utilisateur est authentifié $is_authenticated = isset($_SESSION['misskey_token']) && !empty($_SESSION['misskey_token']); $instance = isset($_SESSION['misskey_instance']) ? $_SESSION['misskey_instance'] : ''; // Initialiser les messages $messages = []; if (isset($_SESSION['messages'])) { $messages = $_SESSION['messages']; unset($_SESSION['messages']); } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>FavMasToKey - Transférer vos favoris de Mastodon vers Misskey</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="css/styles.css"> </head> <body> <div class="container py-5"> <header class="text-center mb-5"> <h1>FavMasToKey</h1> <p class="lead">Transférez vos favoris Mastodon vers Misskey en quelques clics</p> </header> <!-- Messages d'alerte --> <?php if (!empty($messages)): ?> <?php foreach ($messages as $message): ?> <div class="alert alert-<?php echo $message['type']; ?> alert-dismissible fade show" role="alert"> <?php echo $message['text']; ?> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Fermer"></button> </div> <?php endforeach; ?> <?php endif; ?> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card shadow-sm"> <div class="card-body"> <div class="steps"> <!-- Étape 1: Téléchargement du fichier JSON --> <div class="step" id="step1"> <h3 class="card-title">1. Importer vos favoris Mastodon</h3> <p>Téléchargez d'abord votre fichier d'export de favoris depuis Mastodon.</p> <div class="card bg-light mb-3"> <div class="card-body"> <h5>Comment obtenir mon fichier de favoris ?</h5> <ol> <li>Connectez-vous à votre compte Mastodon</li> <li>Allez dans <strong>Préférences</strong> > <strong>Exporter et importer</strong></li> <li>Dans la section <strong>Exporter</strong>, cliquez sur <strong>Demander vos favoris</strong></li> <li>Une fois le fichier prêt, téléchargez-le</li> </ol> </div> </div> <form id="upload-form" class="mt-4"> <div class="mb-3"> <label for="json-file" class="form-label">Fichier JSON des favoris</label> <input type="file" class="form-control" id="json-file" name="json_file" accept=".json" required> </div> <button type="submit" class="btn btn-primary">Analyser le fichier</button> </form> </div> <!-- Étape 2: Connexion à Misskey --> <div class="step d-none" id="step2"> <h3 class="card-title">2. Connexion à Misskey</h3> <p>Connectez-vous à votre compte Misskey pour y importer vos favoris.</p> <div id="file-summary" class="alert alert-info mb-4"></div> <form id="misskey-form" class="mt-4"> <div class="mb-3"> <label for="misskey-instance" class="form-label">Instance Misskey</label> <input type="url" class="form-control" id="misskey-instance" name="misskey_instance" placeholder="https://misskey.io" required> <div class="form-text">Entrez l'URL complète de votre instance Misskey (ex: https://misskey.io)</div> </div> <button type="submit" class="btn btn-primary">Se connecter à Misskey</button> <button type="button" class="btn btn-link" id="back-to-step1">Retour</button> </form> </div> <!-- Étape 3: Migration des favoris --> <div class="step d-none" id="step3"> <h3 class="card-title">3. Migration des favoris</h3> <p>Nous allons maintenant transférer vos favoris vers Misskey.</p> <?php if ($is_authenticated): ?> <div class="alert alert-success mb-4"> <strong>Connecté à <?php echo htmlspecialchars($instance); ?></strong> <p class="mb-0">Vous êtes authentifié et prêt à importer vos favoris.</p> </div> <?php endif; ?> <div class="mb-4"> <label class="form-label">Progression globale</label> <div class="progress" style="height: 20px;"> <div id="global-progress" class="progress-bar" role="progressbar" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div> </div> </div> <div class="mb-4"> <label class="form-label">Opération en cours</label> <div class="progress"> <div id="current-progress" class="progress-bar bg-info" role="progressbar" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div> </div> </div> <div class="mb-4"> <h5>Journal des opérations</h5> <div id="log-container" class="border p-3 bg-light" style="max-height: 200px; overflow-y: auto;"> <div id="operation-log"></div> </div> </div> <div class="d-flex justify-content-between"> <button type="button" class="btn btn-primary" id="start-migration">Démarrer la migration</button> <button type="button" class="btn btn-warning d-none" id="pause-migration">Pause</button> <button type="button" class="btn btn-danger" id="cancel-migration">Annuler</button> </div> </div> </div> </div> </div> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> <script src="js/app.js"></script> </body> </html>