Snapblocks

:information_source: Resumo Permitir que os usuários utilizem snapblocks em suas publicações.
:hammer_and_wrench: Link do Repositório GitHub - snap-blocks/snapblocks-discourse: snapblocks discourse plugin · GitHub
:open_book: Guia de Instalação Como instalar plugins no Discourse

Recursos

Snapblocks é um fork do scratchblocks que permite aos usuários converter texto em imagens de scripts do Snap!. Este plugin do Discourse permite que os usuários utilizem snapblocks em suas publicações.

Você pode criar snapblocks em uma publicação digitando o código snapblocks dentro das tags bbcode [snapblocks][/snapblocks]. Por exemplo:

[snapblocks]
move (10) steps
[/snapblocks]

Alternativamente, você pode usar [scratchblocks][/scratchblocks] como um alias, embora ele possa ser desabilitado.

Você também pode usar [sb][/sb] para adicionar código snapblocks em linha.

Use o bloco [sb]move (10) steps[/sb] para avançar.

Opções

Existem algumas configurações disponíveis para alterar a forma como os snapblocks são renderizados.

  • Estilo dos Blocos
  • Escala dos Blocos
  • Coloração Zebrada
  • Quebra de Blocos
  • Mostrar Espaços
  • Chapéus de Papai Noel

Muitas opções também podem ser usadas em trechos de snapblocks.

[snapblocks blockStyle="snap-flat" wrap="true" wrapSize=100 zebra="true" showSpaces="false" santa="true"]
when flag clicked
if <> {
  forever {
    run ({} @addInput) with inputs [Hello world] @delInput @verticalEllipsis @addInput
  }
}
[/snapblocks]

Você também pode definir o estilo dos blocos usando o parâmetro padrão.

[snapblocks="snap-flat"]
move (10) steps
[/snapblocks]

Configuração

Nome Descrição
Estilo dos Blocos O estilo padrão dos blocos. Pode ser snap, snap-flat, scratch2, scratch3 ou scratch3-hc.
Escala dos Blocos A escala padrão da imagem dos blocos. Deve ser um número de ponto flutuante.
Coloração Zebrada Se vários blocos tiverem a mesma cor, alterne para uma cor mais clara.
Quebra de Blocos Quebre partes do bloco em uma nova linha se o bloco ficar muito largo.
Mostrar Espaços Mostre espaços como um ponto nos campos de entrada.
Alias Scratchblock Habilita o alias [scratchblocks].

LOG DE ALTERAÇÕES

  • 1.5.0
    • Atualização do snapblocks para a versão 1.10.0
    • Correção de erro ao carregar a biblioteca snapblocks (estava gerando um erro devido a um „nome de arquivo inválido")
  • 1.4.1
    • Correção de citação em trechos de código multilinha
    • Detecção real de traduções de blocos
  • 1.4.0
    • Melhoria na citação de snapblocks
    • O texto dentro dos blocos não pode ser selecionado (embora ainda seja possível selecionar sobre eles e citar o script inteiro).
  • 1.3.0
    • Adição da opção „Chapéus de Papai Noel
14 curtidas

Existem incompatibilidades com scratchblocks que sugeririam a necessidade de um plugin separado para o Scratch?

Se não, isso poderia ser observado aqui e no README do plugin no GitHub.

1 curtida

Eu diria que as únicas incompatibilidades são principalmente apenas alguns pequenos ajustes de sintaxe, como menus suspensos e o bloco define. Na maior parte, o código do scratchblocks é em grande parte compatível com o snapblocks.

Ainda acho que deveria haver um plugin separado para scratchblocks, já que sei que fóruns para scratch/mods do scratch podem não querer usar snapblocks, pois o snapblocks é otimizado para funcionar melhor para o snap (e eu tenho sido omisso no polimento dos estilos do scratch), sem mencionar que não adicionei a capacidade de alternar o atalho da barra de ferramentas para usar scratchblocks em vez disso.

Se alguém quiser tentar criar um plugin scratchblocks usando este plugin como base (provavelmente não vou conseguir fazer um eu mesmo), acho que vale a pena notar que a função render que usei não está na API do scratchblocks, então exigiria um pouco mais de trabalho do que apenas inserir o scratchblocks.

1 curtida

À primeira vista, parece não haver objeção em utilizar este plugin para experimentos iniciais (meu ambiente sendo um ambiente escolar) e só então investir tempo em um plugin do Scratch, caso a necessidade surja.

1 curtida

Solicitação de recurso: O estilo de bloco poderia ser definido separadamente para o alias [scratchblocks].
Isso permitiria o uso sem esforço de diferentes estilos de elementos Scratch e Snap!.

2 curtidas

Essa é uma ótima ideia. Vou verificar a possibilidade de adicioná-la.

3 curtidas

Não vejo nenhuma lógica no lado do servidor; isso poderia ser melhor construído como um componente de tema?

3 curtidas

Ele está se conectando ao analisador de mensagens para garantir que nada dentro das tags seja analisado e inclui muitas opções para configurar o comportamento. Também quero ter suporte ao novo compositor de mensagens WYSIWYG, mas tenho tido dificuldades para fazê-lo funcionar bem. Além disso, não quero que os administradores do fórum precisem ativá-lo para cada tema, pois isso pode causar problemas e confusão (já vi isso acontecer antes).

Então, há algo que eu não esteja entendendo sobre as capacidades de um componente de tema, e pode ser apenas algo de “ativar uma vez globalmente e esquecer”?

(ops, apertei o botão de resposta errado @RGJ)

Instalar um plugin é muito mais trabalhoso do que isso :thinking: e não funcionará nos planos hospedados do Discourse.org.

Além disso, acho que a maioria dos fóruns tem apenas um tema ativo.

Componentes de tema podem ter configurações e podem fazer tudo o que o lado JavaScript de um plugin consegue fazer. Com o estado atual do plugin, você não perderia nenhuma funcionalidade.

2 curtidas

Você não apenas clona o repositório no diretório de plugins? Sinto que isso não é muito trabalhoso. No entanto, o fato de não funcionar para os planos hospedados no Discourse é válido.

Não o fórum para o qual este plugin foi criado. Mas acabei de verificar e parece que a interface de configurações do componente de tema passou por uma grande reformulação desde a última vez que precisei lidar com ela, então parece mais fácil de gerenciar do que eu lembrava.

Entendi, então vou tentar reescrevê-lo como um componente de tema, mas não acho que conseguirei fazer isso por um tempo devido a outras obrigações.

1 curtida

Nem todos os administradores têm acesso à linha de comando e, mesmo entre aqueles que têm, nem todos estão muito familiarizados com ela.

Além disso, isso exige uma reconstrução, que não é instantânea, pode ter efeitos colaterais e potencialmente levar a problemas.

Atualizar um plugin também exige uma reconstrução, enquanto atualizar um componente de tema é apenas um clique de botão.

2 curtidas

Talvez eu tente fazer isso mais tarde, já que realmente não há lógica de backend.

3 curtidas

Isso seria útil, já que imagino que você possa saber mais sobre o Discourse do que eu (este plugin foi basicamente montado às pressas lendo outros plugins).

1 curtida