first commit

This commit is contained in:
isUnknown 2026-06-25 23:23:39 +02:00
commit b560bb151b
28 changed files with 2098 additions and 0 deletions

105
2026.css Normal file
View file

@ -0,0 +1,105 @@
:root{
--background: #000;
--color: #FFF;
--font: "JetBrains Mono NL", monoscape;
}
body{
font-family: var(--font);
}
h1, h2, h3, h4, h5, h6{
font-weight: normal;
}
.preview{
background: var(--background);
color: var(--color);
}
.preview.texte{
background: var(--background);
color: var(--color);
padding: 10px 40px 100px 40px;
}
.preview.texte .image-wrapper{
margin-top: 20px;
margin-bottom: 80px;
}
.preview .image-wrapper{
padding-left: 20px;
padding-right: 20px;
}
.preview.texte p,
.preview.texte h1,
.preview.texte h2,
.preview.texte h3,
.preview.texte h4{
letter-spacing: 1px;
}
.preview.texte p{
font-size: 4vw;
margin:0;
}
.preview.texte h1{
font-size: 7vw;
text-align: center;
margin:0;
margin-top: 50px;
line-height: 1;
}
.preview.texte h2{
font-size: 1.8vw;
}
.preview.texte h3{
font-size: 3vw;
text-align: center;
margin: 0;
}
.preview.texte h4{
font-size: 3.2vw;
font-weight: normal;
}
.preview.texte h5{
font-size: 4vw;
font-weight: normal;
margin:0;
}
.preview.texte h6{
font-size: 2vw;
font-weight: normal;
}
.preview.texte a{
color: var(--color);
text-decoration: none;
}
.preview.texte a:hover{
text-decoration: underline;
}
.preview.texte ul{
font-size: 4vw;
}
.preview.texte ul li{
margin-bottom: 30px;
}
.preview.texte ul li::before{
content:"—";
margin-right: 20px;
}

BIN
fonts/Ortica-Bold.woff Normal file

Binary file not shown.

BIN
fonts/Ortica-Bold.woff2 Normal file

Binary file not shown.

BIN
fonts/Ortica-Light.woff Normal file

Binary file not shown.

BIN
fonts/Ortica-Light.woff2 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

5
images/00-titre.txt Normal file
View file

@ -0,0 +1,5 @@
# Autonomiser la création graphique avec des outils web
<br>
### Adrien Payet et Sarah Garcin

1
images/01-interface.txt Normal file
View file

@ -0,0 +1 @@
# Linterface : pile ou face ?

47
images/01-internet.txt Normal file
View file

@ -0,0 +1,47 @@
Qu'est-ce qu'une interface ?
Idée de couche
Interface > couche
2 faces de l'interface
Regarde vers la technique
Regarde vers l'humain
critique de la notion d'interface
interface = un artifice qui met en relation les 2 couches
orienté ergonomie
alors que forme = l'aspect de la technique -- relation étroite -- non utilitariste
Couverture / découverture => PD Huygues
L'interface rencontre le code
et l'humain ?
Code = interface
Alors que le sujet
Code différent interface
Comment l'humain rencontre le code (la technique) par l'intermédiaire de l'interface ?
Au delà du code
L'humain rencontre le code par l'interface, apprentissage par l'outil, non descendant.
Autonomisation technique par l'interface
Encapacitation / Individuation
Des projets qui sont accompagnés par des humains
Des projets qui proposent le collectif
Des projets qui remettent l'humain dans l'interface
Apprentissage par les pairs
Fournir des occasions de descendre en niveau
// Graphisme bas niveau
Construction socio-culturel => Construction / Déconstruction
Lucidité / Prise de distance / Pris·e dans le courant / Effort de prise de distance
Geoproject
-> Pyramide : Fournir des occasions de descendre en niveau
-> Accompagnement

View file

@ -0,0 +1,2 @@
# Où commence <br> le code ? <br><br> Où commence linterface ?

View file

@ -0,0 +1,4 @@
# Comment lhumain rencontre la technique par la forme ?

View file

@ -0,0 +1,4 @@
# https://actuel-inactuel.fr/

4
images/04-lucidité.txt Normal file
View file

@ -0,0 +1,4 @@
# Comment gagner en lucidité ?
PJ machine

4
images/05-humain.txt Normal file
View file

@ -0,0 +1,4 @@
# Quand le code rencontre lhumain
TAC

2
images/06-geoproject.txt Normal file
View file

@ -0,0 +1,2 @@
# Geoproject

87
index.php Normal file
View file

@ -0,0 +1,87 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Autonomiser la création graphique avec des outils web</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="2026.css">
</head>
<body>
<main class="row">
<div class="damier">
<?php
// error_reporting(E_ALL);
@include "utils.php";
include 'libs/Parsedown.php';
$Parsedown = new Parsedown();
$dirlist = getFileList("images");
array_multisort(array_column($dirlist, "name"), SORT_ASC, $dirlist );
echo "<ul class='liste-damier'>";
foreach($dirlist as $file){
$ext = pathinfo($file['name'], PATHINFO_EXTENSION);
if($ext == 'txt'){
$content = file_get_contents($file['name']);
echo "<li class='texte'>";
echo $Parsedown->text($content);
echo "</li>";
}
if($ext == 'mp4' || $ext == 'webm' || $ext == 'ogg'){
$fileName = str_replace('images/', '', $file['name']);
$filePath = $file['name'];
echo "<li class='video' data-video='{$filePath}'>";
echo "<h1>";
echo $fileName;
echo "</h1>";
echo "</li>";
}
if($ext == 'mp3' || $ext == 'wav'){
$fileName = str_replace('images/', '', $file['name']);
$filePath = $file['name'];
echo "<li class='audio' data-audio='{$filePath}'>";
echo "<h1>";
echo $fileName;
echo "</h1>";
echo "</li>";
}
if($ext == 'pdf'){
$fileName = str_replace('images/', '', $file['name']);
$filePath = $file['name'];
echo "<li class='pdf' data-pdf='{$filePath}'>";
echo "<h1>";
echo $fileName;
echo "</h1>";
echo "</li>";
}
if($ext == 'jpg' || $ext == 'png' || $ext == 'gif' ){
$fileName = str_replace('images/', '', $file['name']);
$filePath = $file['name'];
// $fileNameNoExt = pathinfo($file['name'])['filename'];
// $thumbPath = 'images/thumbs/'.$fileNameNoExt.'.jpg';
echo "<li class='image'>";
echo "<figure data-thumb='{$filePath}' data-image='{$filePath}'>";
echo "<img src='{$filePath}'/>";
echo "</figure>";
echo "</li>";
}
}
echo "</ul>";
?>
</div>
<div class="preview">
<div class="image-wrapper">
</div>
</div>
</main>
<script src="js/jquery.min.js" type="text/javascript"></script>
<script src="js/script.js" type="text/javascript"></script>
</body>
</html>

4
js/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

73
js/script.js Normal file
View file

@ -0,0 +1,73 @@
$(document).ready(function(){
$el = $('.damier ul.liste-damier li');
$preview = $('.preview .image-wrapper');
$el.click(function(){
$el.removeClass('active');
$preview.html('');
$('.preview').removeClass('texte');
$('.preview').removeClass('image');
if($(this).hasClass('image')){
$imagePath = $(this).find('figure').attr('data-image');
console.log($imagePath);
$preview.append('<img src="'+$imagePath+'" alt="">')
$(this).addClass('active');
$('.preview').addClass('image');
}
if($(this).hasClass('texte')){
console.log('this is a text');
$content = $(this).html();
$preview.html($content);
$('.preview').addClass('texte');
$(this).addClass('active');
}
if($(this).hasClass('video')){
$videoPath = $(this).attr('data-video');
console.log($videoPath);
$preview.append('<video controls src="'+$videoPath+'"></video>');
$(this).addClass('active');
}
if($(this).hasClass('audio')){
$audioPath = $(this).attr('data-audio');
console.log($audioPath);
$preview.append('<audio controls src="'+$audioPath+'"></audio>');
$(this).addClass('active');
}
if($(this).hasClass('pdf')){
$pdfPath = $(this).attr('data-pdf');
console.log($pdfPath);
$preview.append('<object data="'+$pdfPath+'" type="application/pdf"><embed src="'+$pdfPath+'" type="application/pdf" /></object>');
$(this).addClass('active');
}
});
// déplacement avec des flèches
// $(document).keydown(function(e) {
// $activeEl = $('.damier ul.liste-damier li.active');
// switch(e.which) {
// case 37: // left
// $el.removeClass('active');
// $activeEl.prev().addClass('active');
// break;
// case 38: // up
// break;
// case 39: // right
// $el.removeClass('active');
// $activeEl.next().addClass('active');
// break;
// case 40: // down
// break;
// default: return; // exit this handler for other keys
// }
// e.preventDefault(); // prevent the default action (scroll / move caret)
// });
});

1541
libs/Parsedown.php Normal file

File diff suppressed because it is too large Load diff

140
style.css Normal file
View file

@ -0,0 +1,140 @@
:root{
--image-width: 6.8vw;
--damier-width : calc(3 * var(--image-width));
}
*{
box-sizing: border-box;
}
body{
margin: 0;
padding: 0;
line-height: 1.2;
font-size: 12px;
}
img{
width: 100%;
}
ul, figure{
margin:0;
padding:0;
}
li{
list-style: none;
}
.row{
display:flex;
}
.damier{
width: var(--damier-width);
background: #000;
min-height: 100vh;
}
.damier ul{
display: flex;
flex-wrap: wrap;
}
.damier ul.liste-damier > li{
width: var(--image-width);;
height: var(--image-width);;
overflow: hidden;
cursor: pointer;
/*border: 0.01em solid #DFDFDF;*/
border: 0.01em solid #3E3E3E;
}
.damier ul.liste-damier > li:hover, .damier ul.liste-damier > li.active{
border: 2px solid red;
}
.damier ul.liste-damier li figure img{
width: var(--image-width);;
height: var(--image-width);;
-o-object-fit: cover;
object-fit: cover;
object-position: 0 0;
}
.damier ul.liste-damier > li.texte{
font-size: 10px;
padding: 5px;
background: #000;
color: #FFF;
position: relative;
}
.damier ul.liste-damier > li.pdf{
background: #83FF7C;
}
.damier ul.liste-damier > li.video{
background: #B6C3FF;
}
.damier ul.liste-damier > li.audio{
background: #FFD9CC;
}
.damier ul.liste-damier > li h1{
font-size: 12px;
padding: 5px;
}
.damier ul.liste-damier > li a{
color: #FFF;
}
.preview{
width: 79vw;
// border: 3px solid #000;
height: 100vh;
position:fixed;
left: var(--damier-width);
padding: 15px 0;
overflow: auto;
}
.preview.texte img{
width: 95%;
display: block;
}
.preview.image img{
width: 100%;
height: calc(100vh - 30px);
-o-object-fit: contain;
object-fit: contain;
}
.preview video{
width: 100%;
/*margin-top: 20px;*/
}
.preview object{
width: 100%;
height: 100vh;
}

75
utils.php Normal file
View file

@ -0,0 +1,75 @@
<?php
// List files in folder $dir
function getFileList($dir){
// array to hold return value
$retval = [];
// add trailing slash if missing
if(substr($dir, -1) != "/") {
$dir .= "/";
}
// open pointer to directory and read list of files
$d = @dir($dir) or die("getFileList: Failed opening directory {$dir} for reading");
while(FALSE !== ($entry = $d->read())) {
// skip hidden files
if($entry[0] == ".") continue;
if(is_dir("{$dir}{$entry}")) {
$retval[] = [
'name' => "{$dir}{$entry}/",
'type' => filetype("{$dir}{$entry}"),
'size' => 0,
'lastmod' => filemtime("{$dir}{$entry}")
];
} elseif(is_readable("{$dir}{$entry}")) {
$retval[] = [
'name' => "{$dir}{$entry}",
'type' => mime_content_type("{$dir}{$entry}"),
'size' => filesize("{$dir}{$entry}"),
'lastmod' => filemtime("{$dir}{$entry}")
];
}
}
$d->close();
return $retval;
}
function createThumbs( $pathToImages, $pathToThumbs, $thumbWidth ){
// open the directory
$dir = opendir( $pathToImages );
// loop through it, looking for any/all JPG files:
while (false !== ($fname = readdir( $dir ))) {
// parse path for the extension
$info = pathinfo($pathToImages . $fname);
// continue only if this is a JPEG image
if ( strtolower($info['extension']) == 'jpg')
{
//echo "Creating thumbnail for {$fname} <br />";
// load image and get image size
$img = imagecreatefromjpeg( "{$pathToImages}{$fname}" );
$width = imagesx( $img );
$height = imagesy( $img );
// calculate thumbnail size
$new_width = $thumbWidth;
$new_height = floor( $height * ( $thumbWidth / $width ) );
// create a new temporary image
$tmp_img = imagecreatetruecolor( $new_width, $new_height );
// copy and resize old image into new image
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
// save thumbnail into a file
imagejpeg( $tmp_img, "{$pathToThumbs}{$fname}" );
}
}
// close the directory
closedir( $dir );
}
?>