Skip to content

Commit

Permalink
Merge branch 'master' into enh/372-bs5-active-form
Browse files Browse the repository at this point in the history
  • Loading branch information
yurabakhtin authored Sep 25, 2024
2 parents eda785e + 5313ad8 commit 1bae975
Show file tree
Hide file tree
Showing 7 changed files with 146 additions and 142 deletions.
1 change: 1 addition & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Changelog
- Enh #224: Unifying positions of button on modals for consistency and better UX
- Enh #227: Use PHP CS Fixer
- Fix: Add autofocus on file or folder edit (for HumHub 1.17 - see https://github.com/humhub/humhub/issues/7136)
- Fix #230: Optimize sql query to get files from the stream
- Enh #232: Update Active Form for Bootstrap 5

0.16.6 - March 14, 2024
Expand Down
2 changes: 1 addition & 1 deletion messages/eu/base.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
'Move to another Space' => '',
'Moving to the same folder is not valid.' => '',
'Moving to this folder is invalid.' => '',
'Name' => '',
'Name' => 'izena',
'No file found!' => '',
'Open' => 'Ireki',
'Open file folder' => '',
Expand Down
197 changes: 98 additions & 99 deletions messages/pt-BR/base.php
Original file line number Diff line number Diff line change
@@ -1,100 +1,99 @@
<?php

return [
'%filename% has invalid extension and was skipped.' => '%filename% possui extensão inválida e foi ignorado.',
'/ (root)' => '/ (raiz)',
'<strong>Confirm</strong> delete file' => '<strong>Confirmar</strong> exclusão de arquivo',
'<strong>Create</strong> folder' => '<strong>Criar</strong> pasta',
'<strong>Edit</strong> file' => '<strong>Alterar</strong> arquivo',
'<strong>Edit</strong> folder' => '<strong>Alterar</strong> pasta',
'<strong>File</strong> download url' => 'Endereço de download do <strong>arquivo</strong>',
'<strong>File</strong> url' => 'Endereço do <strong>arquivo</strong>',
'<strong>Files</strong> module configuration' => 'Configuração do módulo de <strong>Arquivos</strong>',
'<strong>Folder</strong> url' => 'Endereço da <strong>pasta</strong>',
'<strong>Move</strong> files' => '<strong>Mover</strong> arquivos',
'A file with that name already exists in this folder.' => 'Um arquivo com esse nome já existe nessa pasta.',
'Actions' => 'Ações',
'Add directory' => 'Adicionar pasta',
'Add file(s)' => 'Adicionar arquivo(s)',
'Adds files module to this space.' => 'Adicionar o módulo de arquivos neste espaço.',
'Adds files module to your profile.' => 'Adicionar o módulo de arquivos no seu perfil.',
'An error occurred while creating folder {folder}.' => 'Um erro ocorreu na criação da pasta {folder}.',
'An error occurred while unpacking {filename}.' => 'Um erro ocorreu ao descompactar {filename}',
'Archive %filename% could not be extracted.' => 'Arquivo %filename% não pôde ser extraído.',
'Author' => 'Autor',
'Cannot edit non existing file.' => 'Não é possível editar um arquivo inexistente.',
'Close' => 'Fechar',
'Could not find folder with id: %id%' => 'Não foi possível achar a pasta com o id: %id%',
'Creator' => 'Criador',
'Delete' => 'Apagar',
'Destination folder not found!' => 'Pasta de destino não encontrada!',
'Disable archive (ZIP) support' => 'Desabilitar suporte a arquivos ZIP',
'Display Url' => 'Exibir endereço',
'Display a download count column' => 'Exibir uma coluna de contagem de transferência',
'Do you really want to delete this {number} item(s) with all subcontent?' => 'Você realmente quer apagar {number} item(ns) com todos os seus conteúdos?',
'Download' => 'Baixar',
'Download ZIP' => 'Baixar ZIP',
'Downloads' => 'Transferência',
'Edit' => 'Alterar',
'Edit directory' => 'Alterar pasta',
'File' => 'Arquivo',
'Files' => 'Arquivos',
'Files from the stream' => 'Arquivos do mural',
'Folder' => 'Pasta',
'Folder should not start or end with blank space.' => 'Nome de pasta não pode iniciar ou terminar com espaço em branco.',
'Folder {name} can\'t be moved to itself!' => 'Não é possível mover a pasta {name} para dentro dela mesma!',
'Folder {name} given folder is not editable!' => 'A pasta {name} não é editável!',
'Import Zip' => 'Importar zip',
'Likes/Comments' => 'Curtidas/Comentários',
'Make Private' => 'Tornar privado',
'Make Public' => 'Tornar público',
'Move' => 'Mover',
'Moving to the same folder is not valid.' => 'Não é possível mover para a mesma pasta.',
'Moving to this folder is invalid.' => 'Não é possível mover para essa pasta.',
'Name' => 'Nome',
'Open' => 'Abrir',
'Open file folder' => 'Abrir essa pasta',
'Opening archive failed with error code %code%.' => 'Erro ao abrir o arquivo. Código: %code%',
'Please select a valid destination folder for %title%.' => 'Por favor, selecione uma pasta de destino válida para %title%.',
'Root' => 'Raiz',
'Selected items...' => 'Itens selecionados...',
'Show Post' => 'Exibir Publicação',
'Size' => 'Tamanho',
'Size: {size}' => 'Tamanho: {size}',
'Some files could not be imported: ' => 'Alguns arquivos não puderam ser importados:',
'Some files could not be moved: ' => 'Alguns arquivos não puderam ser movidos:',
'The root folder is the entry point that contains all available files.' => 'A pasta raiz é o ponto de entrada que contém todos os arquivos disponíveis.',
'This file is only visible for you and your friends.' => 'Este arquivo é visível apenas para você e seus amigos.',
'This file is private.' => 'Esse arquivo é privado.',
'This file is protected.' => 'Este arquivo está protegido.',
'This file is public.' => 'Esse arquivo é público.',
'This folder is empty.' => 'Essa pasta está vazia.',
'This folder is only visible for you and your friends.' => 'Esta pasta só é visível para você e seus amigos.',
'This folder is private.' => 'Essa pasta é privada.',
'This folder is protected.' => 'Esta pasta está protegida.',
'This folder is public.' => 'Essa pasta é pública.',
'Unfortunately you have no permission to upload/edit files.' => 'Infelizmente, você não tem permissão para transferir/alterar arquivos.',
'Updated' => 'Atualizado',
'Upload files or create a subfolder with the buttons on the top.' => 'Transfira arquivos ou crie uma subpasta usando os botões na parte superior.',
'Upload files to the stream to fill this folder.' => 'Transfira arquivos para o mural para preencher esta pasta.',
'You can find all files that have been posted to this stream here.' => 'Você pode encontrar todos os arquivos enviados para esse mural aqui.',
'ZIP selected' => 'ZIP selecionado',
'ZIP support is not enabled.' => 'Suporte para arquivos ZIP não habilitado.',
'<strong>File</strong> versions' => '',
'Could not move the item!' => '',
'Delete this version!' => '',
'File "{movedItemName}" has been moved into the folder "{targetFolderName}".' => '',
'File {fileName} has been reverted to version from {fileDateTime}' => '',
'Folder "{movedItemName}" has been moved into the folder "{targetFolderName}".' => '',
'Move to another Space' => '',
'No file found!' => '',
'Revert to this version' => '',
'Select what file version you want to switch.' => '',
'Show older versions' => '',
'Time' => '',
'Versions' => '',
'Wrong moved item!' => '',
'Wrong target folder!' => '',
'You cannot move the file "{name}"!' => '',
'You cannot move the folder "{name}"!' => '',
];
return array (
'%filename% has invalid extension and was skipped.' => '%filename% possui extensão inválida e foi ignorado.',
'/ (root)' => '/ (raiz)',
'<strong>Confirm</strong> delete file' => '<strong>Confirmar</strong> exclusão de arquivo',
'<strong>Create</strong> folder' => '<strong>Criar</strong> pasta',
'<strong>Edit</strong> file' => '<strong>Alterar</strong> arquivo',
'<strong>Edit</strong> folder' => '<strong>Alterar</strong> pasta',
'<strong>File</strong> download url' => 'Endereço de download do <strong>arquivo</strong>',
'<strong>File</strong> url' => 'Endereço do <strong>arquivo</strong>',
'<strong>File</strong> versions' => 'Versões do <strong>arquivo</strong>',
'<strong>Files</strong> module configuration' => 'Configuração do módulo de <strong>Arquivos</strong>',
'<strong>Folder</strong> url' => 'Endereço da <strong>pasta</strong>',
'<strong>Move</strong> files' => '<strong>Mover</strong> arquivos',
'A file with that name already exists in this folder.' => 'Um arquivo com esse nome já existe nessa pasta.',
'Actions' => 'Ações',
'Add directory' => 'Adicionar pasta',
'Add file(s)' => 'Adicionar arquivo(s)',
'Adds files module to this space.' => 'Adicionar o módulo de arquivos neste espaço.',
'Adds files module to your profile.' => 'Adicionar o módulo de arquivos no seu perfil.',
'An error occurred while creating folder {folder}.' => 'Um erro ocorreu na criação da pasta {folder}.',
'An error occurred while unpacking {filename}.' => 'Um erro ocorreu ao descompactar {filename}',
'Archive %filename% could not be extracted.' => 'Arquivo %filename% não pôde ser extraído.',
'Author' => 'Autor',
'Cannot edit non existing file.' => 'Não é possível editar um arquivo inexistente.',
'Close' => 'Fechar',
'Could not find folder with id: %id%' => 'Não foi possível achar a pasta com o id: %id%',
'Could not move the item!' => 'Não foi possível mover o item!',
'Creator' => 'Criador',
'Delete' => 'Apagar',
'Delete this version!' => 'Apague esta versão!',
'Destination folder not found!' => 'Pasta de destino não encontrada!',
'Disable archive (ZIP) support' => 'Desabilitar suporte a arquivos ZIP',
'Display Url' => 'Exibir endereço',
'Display a download count column' => 'Exibir uma coluna de contagem de transferência',
'Do you really want to delete this {number} item(s) with all subcontent?' => 'Você realmente quer apagar {number} item(ns) com todos os seus conteúdos?',
'Download' => 'Baixar',
'Download ZIP' => 'Baixar ZIP',
'Downloads' => 'Transferência',
'Edit' => 'Alterar',
'Edit directory' => 'Alterar pasta',
'File' => 'Arquivo',
'File "{movedItemName}" has been moved into the folder "{targetFolderName}".' => 'O arquivo "{movedItemName}" foi movido para a pasta "{targetFolderName}".',
'File {fileName} has been reverted to version from {fileDateTime}' => 'O arquivo {fileName} foi revertido para a versão de {fileDateTime}',
'Files' => 'Arquivos',
'Files from the stream' => 'Arquivos do fluxo',
'Folder' => 'Pasta',
'Folder "{movedItemName}" has been moved into the folder "{targetFolderName}".' => 'A pasta "{movedItemName}" foi movida para a pasta "{targetFolderName}".',
'Folder should not start or end with blank space.' => 'Nome de pasta não pode iniciar ou terminar com espaço em branco.',
'Folder {name} can\'t be moved to itself!' => 'Não é possível mover a pasta {name} para dentro dela mesma!',
'Folder {name} given folder is not editable!' => 'A pasta {name} não é editável!',
'Import Zip' => 'Importar zip',
'Likes/Comments' => 'Curtidas/Comentários',
'Make Private' => 'Tornar privado',
'Make Public' => 'Tornar público',
'Move' => 'Mover',
'Move to another Space' => 'Mover para outro espaço',
'Moving to the same folder is not valid.' => 'Não é possível mover para a mesma pasta.',
'Moving to this folder is invalid.' => 'Não é possível mover para essa pasta.',
'Name' => 'Nome',
'No file found!' => 'Nenhum arquivo encontrado!',
'Open' => 'Abrir',
'Open file folder' => 'Abrir essa pasta',
'Opening archive failed with error code %code%.' => 'Erro ao abrir o arquivo. Código: %code%',
'Please select a valid destination folder for %title%.' => 'Por favor, selecione uma pasta de destino válida para %title%.',
'Revert to this version' => 'Reverter para esta versão',
'Root' => 'Raiz',
'Select what file version you want to switch.' => 'Selecione a versão do arquivo que você deseja alternar.',
'Selected items...' => 'Itens selecionados...',
'Show Post' => 'Exibir Publicação',
'Show older versions' => 'Mostrar versões mais antigas',
'Size' => 'Tamanho',
'Size: {size}' => 'Tamanho: {size}',
'Some files could not be imported: ' => 'Alguns arquivos não puderam ser importados:',
'Some files could not be moved: ' => 'Alguns arquivos não puderam ser movidos:',
'The root folder is the entry point that contains all available files.' => 'A pasta raiz é o ponto de entrada que contém todos os arquivos disponíveis.',
'This file is only visible for you and your friends.' => 'Este arquivo é visível apenas para você e seus amigos.',
'This file is private.' => 'Esse arquivo é privado.',
'This file is protected.' => 'Este arquivo está protegido.',
'This file is public.' => 'Esse arquivo é público.',
'This folder is empty.' => 'Essa pasta está vazia.',
'This folder is only visible for you and your friends.' => 'Esta pasta só é visível para você e seus amigos.',
'This folder is private.' => 'Essa pasta é privada.',
'This folder is protected.' => 'Esta pasta está protegida.',
'This folder is public.' => 'Essa pasta é pública.',
'Time' => 'Tempo',
'Unfortunately you have no permission to upload/edit files.' => 'Infelizmente, você não tem permissão para transferir/alterar arquivos.',
'Updated' => 'Atualizado',
'Upload files or create a subfolder with the buttons on the top.' => 'Transfira arquivos ou crie uma subpasta usando os botões na parte superior.',
'Upload files to the stream to fill this folder.' => 'Transfira arquivos para o mural para preencher esta pasta.',
'Versions' => 'Versões',
'Wrong moved item!' => 'Item movido errado!',
'Wrong target folder!' => 'Pasta de destino errada!',
'You can find all files that have been posted to this stream here.' => 'Você pode encontrar todos os arquivos enviados para esse mural aqui.',
'You cannot move the file "{name}"!' => 'Você não pode mover o arquivo "{name}"!',
'You cannot move the folder "{name}"!' => 'Você não pode mover a pasta "{name}"!',
'ZIP selected' => 'ZIP selecionado',
'ZIP support is not enabled.' => 'Suporte para arquivos ZIP não habilitado.',
);
13 changes: 6 additions & 7 deletions messages/pt-BR/models_FileSystemItem.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<?php

return [
'Downloads' => 'Transferências',
'Is Public' => 'É Público',
'Note: Changes of the folders visibility, will be inherited by all contained files and folders.' => 'Nota: Mudanças na visibilidade das pastas serão herdadas por todos os arquivos e pastas contidas nelas.',
'Hide in Stream' => '',
];
return array (
'Downloads' => 'Transferências',
'Hide in Stream' => 'Ocultar no Stream',
'Is Public' => 'É público',
'Note: Changes of the folders visibility, will be inherited by all contained files and folders.' => 'Observação: as alterações na visibilidade das pastas serão herdadas por todos os arquivos e pastas contidos.',
);
11 changes: 5 additions & 6 deletions messages/pt-BR/user.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?php

return [
'Are you really sure to delete this version?' => '',
'The version "{versionDate}" could not be deleted!' => '',
'The version "{versionDate}" has been deleted.' => '',
];
return array (
'Are you really sure to delete this version?' => 'Tem certeza de que deseja excluir esta versão?',
'The version "{versionDate}" could not be deleted!' => 'A versão "{versionDate}" não pôde ser excluída!',
'The version "{versionDate}" has been deleted.' => 'A versão "{versionDate}" foi excluída.',
);
13 changes: 6 additions & 7 deletions messages/ru/models_FileSystemItem.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<?php

return [
'Downloads' => '',
'Hide in Stream' => '',
'Is Public' => '',
'Note: Changes of the folders visibility, will be inherited by all contained files and folders.' => '',
];
return array (
'Downloads' => 'Скачать',
'Hide in Stream' => '',
'Is Public' => 'публичная запись',
'Note: Changes of the folders visibility, will be inherited by all contained files and folders.' => '',
);
51 changes: 29 additions & 22 deletions models/File.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use humhub\modules\file\libs\FileHelper;
use humhub\modules\file\models\File as BaseFile;
use humhub\modules\file\models\FileUpload;
use humhub\modules\post\models\Post;
use humhub\modules\search\events\SearchAddEvent;
use humhub\modules\topic\models\Topic;
use humhub\modules\user\models\User;
Expand Down Expand Up @@ -323,7 +324,7 @@ public function getEditUrl()
/**
* Get the post related to the given file file.
*/
public static function getBasePost(\humhub\modules\file\models\File $file = null)
public static function getBasePost(BaseFile $file = null)
{
if ($file === null) {
return null;
Expand Down Expand Up @@ -386,31 +387,37 @@ public function getFullPath($separator = '/')
*/
public static function getPostedFiles($contentContainer, $filesOrder = ['file.updated_at' => SORT_ASC, 'file.title' => SORT_ASC])
{
// Get Posted Files
$query = \humhub\modules\file\models\File::find();
// join comments to the file if available
$query->join('LEFT JOIN', 'comment', '(file.object_id=comment.id AND file.object_model=' . Yii::$app->db->quoteValue(Comment::className()) . ')');
// join parent post of comment or file
$query->join('LEFT JOIN', 'content', '(comment.object_model=content.object_model AND comment.object_id=content.object_id) OR (file.object_model=content.object_model AND file.object_id=content.object_id)');
// only accept Posts as the base content, so stuff from sumbmodules like files itsself or gallery will be excluded

$query->andWhere(['content.contentcontainer_id' => $contentContainer->contentContainerRecord->id]);
// Initialise sub queries to get files from Posts and Comments
$subQueries = [
Post::class => Content::find()
->select('content.object_id')
->where(['content.object_model' => Post::class]),
Comment::class => Content::find()
->select('comment.id')
->innerJoin('comment', 'comment.object_model = content.object_model AND comment.object_id = content.object_id')
->where(['comment.object_model' => Post::class]),
];

if (!$contentContainer->canAccessPrivateContent()) {
// Note this will cut comment images, but including the visibility of comments is pretty complex...
$query->andWhere(['content.visibility' => Content::VISIBILITY_PUBLIC]);
}
$query = BaseFile::find();

$query->andWhere(['content.state' => Content::STATE_PUBLISHED]);
foreach ($subQueries as $objectClass => $subQuery) {
// Filter Content records by container and visibility states
$subQuery->andWhere(['content.contentcontainer_id' => $contentContainer->contentContainerRecord->id])
->andWhere(['content.state' => Content::STATE_PUBLISHED]);
if (!$contentContainer->canAccessPrivateContent()) {
// Note this will cut comment images, but including the visibility of comments is pretty complex...
$subQuery->andWhere(['content.visibility' => Content::VISIBILITY_PUBLIC]);
}

$query->orWhere([
'AND',
['file.object_model' => $objectClass],
['IN', 'file.object_id', $subQuery],
]);
}

// only accept Posts as the base content, so stuff from sumbmodules like files itsself or gallery will be excluded
$query->andWhere(
['or',
['=', 'comment.object_model', \humhub\modules\post\models\Post::className()],
['=', 'file.object_model', \humhub\modules\post\models\Post::className()],
],
);

// Get Files from comments
return $query->orderBy($filesOrder);
}

Expand Down

0 comments on commit 1bae975

Please sign in to comment.