diff --git a/bl-kernel/admin/views/edit-user.php b/bl-kernel/admin/views/edit-user.php index 05c3b434..675cdcd1 100644 --- a/bl-kernel/admin/views/edit-user.php +++ b/bl-kernel/admin/views/edit-user.php @@ -37,7 +37,10 @@ echo Bootstrap::formInputHidden(array(
diff --git a/bl-kernel/ajax/profile-picture-upload.php b/bl-kernel/ajax/profile-picture-upload.php index cbdd7295..5f0b9eaa 100644 --- a/bl-kernel/ajax/profile-picture-upload.php +++ b/bl-kernel/ajax/profile-picture-upload.php @@ -54,10 +54,14 @@ $filename = $username.'.png'; // Move from temporary directory to uploads folder rename($_FILES['profilePictureInputFile']['tmp_name'], PATH_TMP.$tmpFilename); +$avaWidth = $site->avatarWidth() ? $site->avatarWidth() : PROFILE_IMG_WIDTH; +$avaHeight = $site->avatarHeight() ? $site->avatarWidth() : PROFILE_IMG_HEIGHT; +$avaQuality = $site->avatarQuality() ? $site->avatarWidth() : PROFILE_IMG_QUALITY; + // Resize and convert to png $image = new Image(); -$image->setImage(PATH_TMP.$tmpFilename, PROFILE_IMG_WIDTH, PROFILE_IMG_HEIGHT, 'crop'); -$image->saveImage(PATH_UPLOADS_PROFILES.$filename, PROFILE_IMG_QUALITY, false, true); +$image->setImage(PATH_TMP.$tmpFilename, $avaWidth, $avaHeight, 'crop'); +$image->saveImage(PATH_UPLOADS_PROFILES.$filename, $avaQuality, false, true); // Delete temporary file Filesystem::rmfile(PATH_TMP.$tmpFilename); diff --git a/bl-kernel/site.class.php b/bl-kernel/site.class.php index be916bbc..731df140 100644 --- a/bl-kernel/site.class.php +++ b/bl-kernel/site.class.php @@ -48,6 +48,9 @@ class Site extends dbJSON 'thumbnailWidth' => 400, // px 'thumbnailHeight' => 400, // px 'thumbnailQuality' => 100, + 'avatarWidth' => 400, // px + 'avatarHeight' => 400, // px + 'avatarQuality' => 100, 'logo' => '', 'markdownParser' => true, 'customFields' => '{}' @@ -124,6 +127,21 @@ class Site extends dbJSON return DOMAIN_BASE . 'sitemap.xml'; } + public function avatarWidth() + { + return $this->getField('avatarWidth'); + } + + public function avatarHeight() + { + return $this->getField('avatarHeight'); + } + + public function avatarQuality() + { + return $this->getField('avatarQuality'); + } + public function thumbnailWidth() { return $this->getField('thumbnailWidth'); diff --git a/bl-kernel/user.class.php b/bl-kernel/user.class.php index 66d834c4..545f7a34 100644 --- a/bl-kernel/user.class.php +++ b/bl-kernel/user.class.php @@ -50,6 +50,46 @@ class User return $this->getValue('username'); } + public function displayName() + { + $mode = $this->getValue('displayNameMode'); + $name = $this->firstName(); + $lastName = $this->lastName(); + $nickname = $this->nickname(); + $username = $this->username(); + switch ($mode) { + case 'fullname': + if ($name && $lastName) { + return $name." ".$lastName; + } elseif ($name) { + return $name; + } else { + return $username; + } + case 'firstname': + return $name ?? $username; + case '': + case 'nickname': + default: + return $nickname ?? $username; + } + } + + public function displayNameMode() + { + return $this->getValue('displayNameMode'); + } + + public function pronouns() + { + return $this->getValue('pronouns'); + } + + public function homepage() + { + return $this->getValue('homepage'); + } + public function description() { return $this->getValue('description'); @@ -189,6 +229,7 @@ class User $tmp['mastodon'] = $this->mastodon(); $tmp['vk'] = $this->vk(); $tmp['profilePicture'] = $this->profilePicture(); + $tmp['pronouns'] = $this->pronouns(); if ($returnsArray) { return $tmp; diff --git a/bl-kernel/users.class.php b/bl-kernel/users.class.php index 1d9bd111..092769e1 100644 --- a/bl-kernel/users.class.php +++ b/bl-kernel/users.class.php @@ -6,7 +6,10 @@ class Users extends dbJSON { 'firstName'=>'', 'lastName'=>'', 'nickname'=>'', + 'displayNameMode'=>'nickname', + 'pronouns'=>'', 'description'=>'', + 'homepage'=>'', 'role'=>'author', // admin, editor, author 'password'=>'', 'salt'=>'!Pink Floyd!Welcome to the machine!', diff --git a/bl-languages/en.json b/bl-languages/en.json index 23174efb..93d3c3d2 100644 --- a/bl-languages/en.json +++ b/bl-languages/en.json @@ -130,9 +130,13 @@ "add-a-new-category": "Add a new category", "name": "Name", "username": "Username", + "display-name": "Display Name", "first-name": "First name", "last-name": "Last name", + "full-name": "Full name", + "pronouns": "Pronouns", "to-schedule-the-content-select-the-date-and-time": "To schedule the content select the date and time, the status has to be set to \"Published\".", + "if-not-present-fallback-on-username":"If the value isn't present, it'll fallback on the username", "email": "Email", "role": "Role", "registered": "Registered", @@ -376,6 +380,9 @@ "thumbnail-width-in-pixels": "Thumbnail width in pixels (px).", "thumbnail-height-in-pixels": "Thumbnail height in pixels (px).", "thumbnail-quality-in-percentage": "Thumbnail quality in percentage (%).", + "avatar-width-in-pixels": "Avatar width in pixels (px).", + "avatar-height-in-pixels": "Avatar height in pixels (px).", + "avatar-quality-in-percentage": "Avatar quality in percentage (%).", "maximum-load-file-size-allowed:": "Maximum load file size allowed:", "file-type-is-not-supported": "File type is not supported. Allowed types:", "page-content": "Page content", @@ -393,5 +400,7 @@ "start-typing-to-see-a-list-of-suggestions": "Start typing to see a list of suggestions.", "view": "View", "insert-thumbnail": "Insert thumbnail", - "insert-linked-thumbnail": "Insert linked thumbnail" + "insert-linked-thumbnail": "Insert linked thumbnail", + "more-infos": "More infos", + "base-infos": "Base infos" } diff --git a/bl-languages/fr_FR.json b/bl-languages/fr_FR.json index 53fb62ac..65e5f309 100644 --- a/bl-languages/fr_FR.json +++ b/bl-languages/fr_FR.json @@ -130,9 +130,13 @@ "add-a-new-category": "Ajouter une nouvelle catégorie", "name": "Nom", "username": "Nom d’utilisateur", + "display-name": "Nom affiché", "first-name": "Prénom", "last-name": "Nom", + "full-name": "Prénom et Nom", + "pronouns": "Pronoms", "to-schedule-the-content-select-the-date-and-time": "Pour planifier votre contenu, sélectionnez la date et l’heure, le statut doit être défini sur \"Publié\".", + "if-not-present-fallback-on-username":"Si la valeur n'est pas présente, alors cela affichera le nom d'utilisateur", "email": "E-mail", "role": "Rôle", "registered": "Inscrit", @@ -376,6 +380,9 @@ "thumbnail-width-in-pixels": "Largeur de la miniature en pixels (px).", "thumbnail-height-in-pixels": "Hauteur de la miniature en pixels (px).", "thumbnail-quality-in-percentage": "Qualité des miniatures en pourcentage (%).", + "avatar-width-in-pixels": "Largeur de l'avatar en pixels (px).", + "avatar-height-in-pixels": "Hauteur de l'avatar en pixels (px).", + "avatar-quality-in-percentage": "Qualité des avatars en pourcentage (%).", "maximum-load-file-size-allowed:": "Taille maximale des fichiers autorisée :", "file-type-is-not-supported": "Le type de fichier n’est pas supporté. Liste des extensions autorisées :", "page-content": "Contenu de la page", @@ -393,5 +400,7 @@ "start-typing-to-see-a-list-of-suggestions": "Commencez à taper pour voir une liste de suggestions.", "view": "Vue", "insert-thumbnail": "Insérer une miniature", - "insert-linked-thumbnail": "Insérer une miniature liée" + "insert-linked-thumbnail": "Insérer une miniature liée", + "more-infos": "Infos supplémentaires", + "base-infos": "Infos de bases" } \ No newline at end of file diff --git a/bl-themes/popeye/php/page.php b/bl-themes/popeye/php/page.php index 9728e6dd..f3ab2487 100644 --- a/bl-themes/popeye/php/page.php +++ b/bl-themes/popeye/php/page.php @@ -14,7 +14,7 @@ readingTime() . ' ' . $L->get('minutes') . ' ' . $L->g('read') ?> - user('nickname') ?> + user('displayName') ?>