Permitir a los usuarios bloquear palabras clave

|||
|-|-|-|
| :information_source: | Resumen | Este componente de tema permite a los usuarios bloquear palabras clave. Requiere la creación de tres campos de usuario personalizados en la configuración de Administración para que funcione.
| :eyeglasses:|Vista previa| No puedo previsualizar esto en el creador de temas porque requiere la creación de campos de usuario, pero he incluido capturas de pantalla a continuación.
| :hammer_and_wrench:|Repositorio| Github - a-very-old-sock/discourse-keyword-block
| :question:|Guía de instalación|Cómo instalar un tema o componente de tema
| :open_book:|¿Nuevo en los temas de Discourse?| Guía para principiantes sobre el uso de temas de Discourse

Instalar este componente de tema

Este componente de tema permite a los usuarios bloquear palabras clave, especificadas por el usuario en Preferencias > Perfil. Requiere la creación de tres campos de usuario personalizados en la configuración de Administración para que funcione.

Bloquear palabras clave en el título o el extracto del tema:

Bloquear temas o respuestas que contengan la palabra clave, así como temas sugeridos que contengan la palabra clave:

Este componente de tema permite a un usuario individual especificar palabras clave que no desea ver, y oculta los temas y las respuestas que contienen esa palabra clave con un enlace para mostrarlas de todos modos. Las palabras vigiladas son una configuración de administrador que se aplica a todos los usuarios en todo el sitio; esto permite a los usuarios individuales especificar sus propias palabras clave que no desean ver.

Escenario de ejemplo: un foro de mascotas podría tener un hilo general sobre cómo lidiar con el pelo de mascotas donde el tema principal no está etiquetado con un tipo específico de animal. El usuario A responde sobre su perro, el usuario B responde sobre su gato, pero el usuario A no quiere ver nada sobre gatos. Lo que hace este componente de tema es permitir que el usuario A ponga “gato” en su lista de bloqueo, y luego en cualquier lugar donde “gato” aparezca en un tema o respuesta, lo reemplaza con “Bloqueado por contener gatos” con un clic para mostrarlo de todos modos.

El usuario debe especificar una lista separada por comas de sus palabras clave bloqueadas en un campo de usuario personalizado en Preferencias > Perfil, y puede especificar si las palabras clave a bloquear distinguen entre mayúsculas y minúsculas o deben coincidir con la palabra completa. (La distinción entre mayúsculas y minúsculas y la coincidencia de palabras completas se aplican a toda la lista de bloqueo, no a palabras clave individuales).

Este componente de tema requiere que cree tres campos de usuario personalizados en Administración > Personalizar > Campos de usuario para que funcione. Por defecto, la configuración del componente de tema espera que estos campos de usuario sean 1, 2 y 3 en el orden que se indica a continuación. Si tiene otros campos de usuario personalizados definidos, deberá ingresar los números de campo de usuario correctos en la configuración del componente de tema. (La numeración de los campos de usuario comienza en 1, así que cuente hacia abajo la lista de cuántos otros campos de usuario tiene definidos). Consulte la guía de Meta Crear y configurar campos de usuario personalizados para obtener más detalles.

1 - Lista de términos bloqueados del usuario

Tipo de campo: Campo de texto

Nombre del campo: (cualquier nombre funcionará aquí) Términos bloqueados

Descripción del campo: (cualquier descripción funcionará aquí) Bloquear palabras o frases que aparecen en publicaciones o temas. Separados por comas. Para bloquear un nombre de usuario, incluya @ si se selecciona la coincidencia de palabras completas.

:white_check_mark: Editable después del registro

:cross_mark: Requerido al registrarse

:cross_mark: Mostrar en el perfil público

:cross_mark: Mostrar en la tarjeta de usuario

:cross_mark: Buscable

2 - Distinción entre mayúsculas y minúsculas

Tipo de campo: Confirmación

Nombre del campo: (cualquier nombre funcionará aquí) Términos bloqueados - distingue mayúsculas de minúsculas

Descripción del campo: (cualquier descripción funcionará aquí) Las palabras en la lista “Términos bloqueados” distinguen mayúsculas de minúsculas.

:white_check_mark: Editable después del registro

:cross_mark: Requerido al registrarse

:cross_mark: Mostrar en el perfil público

:cross_mark: Mostrar en la tarjeta de usuario

:cross_mark: Buscable

3 - Buscar palabras completas o parciales

Tipo de campo: Confirmación

Nombre del campo: (cualquier nombre funcionará aquí) Términos bloqueados - palabras completas

Descripción del campo: (cualquier descripción funcionará aquí) Los términos bloqueados deben aparecer como palabras completas, no como palabras parciales.

:white_check_mark: Editable después del registro

:cross_mark: Requerido al registrarse

:cross_mark: Mostrar en el perfil público

:cross_mark: Mostrar en la tarjeta de usuario

:cross_mark: Buscable

El CSS a continuación se incluye en el componente de tema y evitará que se muestren campos de usuario personalizados en el formulario de registro. Si tiene otros campos de usuario personalizados que desea mostrar en el formulario de registro, deberá anular esto con su propio CSS personalizado.

.login-form .user-fields {
    display: none;
}

Solo he probado esto con el tema predeterminado. Las publicaciones y los temas se bloquean cuando las categorías se configuran para mostrar Categorías/Últimas y Categorías/Mejores, pero no en Categorías/Destacadas ni en ninguna de las vistas de categorías de caja. Es poco probable que cambie esto porque no lo necesito para mi propio sitio, pero se aceptan solicitudes de extracción (pull requests).

Actualmente, esto solo bloquea una publicación que contiene una palabra clave en el título o en el extracto visible en el navegador. No he podido averiguar cómo verificar el contenido de toda la publicación al ver los resultados de búsqueda o una lista de temas, pero agradecería cualquier idea sobre cómo hacerlo.

Tengo la intención de que esto también funcione en la vista de búsqueda de página completa, pero a partir del 24/02/2023 estoy luchando para que funcione. Editaré esto si logro que el bloqueo funcione en la búsqueda.

Esto es compatible con el componente de tema de extractos de temas, no es compatible con las vistas previas de listas de temas. No he probado esto extensivamente con otros componentes de tema.

3 Me gusta

Después de crear campos de usuario personalizados y habilitar el componente, obtengo esto:

¿Alguna idea de qué intenta advertirme? ¿Quizás por esto?

El tema/componente User Keyword Blocker está lanzando errores: TypeError: null is not an object (evaluating 'e.match')

backtrace
Message

El tema/componente User Keyword Blocker está lanzando errores:
TypeError: null is not an object (evaluating 'e.match')

Backtrace

viewingCategoryId@https://foorumi.katiska.eu/theme-javascripts/2d7e05cf5f7eb3e5f8699871f25f32a21d9221c2.js?__ws=foorumi.katiska.eu:209:77
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:71
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:3677:13
get@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:56
Ee@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1324:40
map@[native code]
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:5042:163
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:71
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:3677:13
get@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:56

Env

HTTP HOSTS: foorumi.katiska.eu

Entonces… ¿qué demonios hice mal?

1 me gusta

Hmm, no estoy seguro, no he podido reproducir esto ni con un campo de usuario recién creado ni con un campo de usuario inexistente.

¿Parece que tienes el tema predeterminado? ¿Tienes algún otro componente de tema habilitado? Parece que tiene algo que ver con la coincidencia de expresiones regulares, pero no debería generar errores si no encuentra nada.

Por supuesto que tengo otros componentes :wink: Pero seguro — puede ser un conflicto entre este y algún otro componente o plugin.

Intentaré investigar un poco más en algún momento.

Y eso sucedió ahora :wink:

El conflicto ocurre entre esto y vista previa de la lista de temas. Al menos en mi configuración.

Así que te dejo a ti y a @merefield discutir cuál de ustedes (¿quién? Realmente odio el inglés) arregla y qué :wink:

1 me gusta

Demasiado ocupado para dar soporte a conflictos con componentes de tema de terceros, lo siento, pero estoy abierto a PR. Por ahora, tendrás que decidir entre ellos. :slight_smile:

2 Me gusta

Me preguntaría si esto podría usarse para extender la función de silenciar al usuario.

Es decir, ¿poner al usuario silenciado en una lista de bloqueo para ocultar las respuestas al usuario silenciado?

Creo que es posible en teoría, pero no encuentro una forma fácil de hacerlo ahora mismo. Ahora mismo lo que estoy haciendo es usar decorateCooked, que no parece permitir un fácil acceso al elemento padre donde está la información de la respuesta. Puede que juegue más con esto y vea si puedo hacerlo funcionar, pero no prometo nada.

Esto bloqueará las menciones de un nombre de usuario en la publicación si el nombre de usuario está incluido en la lista de bloqueo; si la coincidencia de palabras completas está activada, el nombre de usuario en la lista de bloqueo debe incluir la @mención, pero si la coincidencia de palabras completas está desactivada, solo se puede incluir el nombre de usuario sin el @.

1 me gusta

No creo que pueda hacerlos compatibles tampoco, pero he anotado en el OP que no son compatibles. Se aceptan PR.

Mis disculpas. Revisando esto. Lo que quise decir con extender el bloqueo/silenciar usuario. Es añadir el nombre de usuario a una lista de palabras bloqueadas. Mi teoría es que tal vez el nombre de usuario esté en:

[quote=“asc, post:9, topic:256228”]

Así que si, por ejemplo, añadiera tu nombre de usuario “asc”, cualquier respuesta de publicación con lo anterior se mostraría como oculta.

Solo para confirmar, ¿la palabra bloqueada no se muestra? ¿Solo un enlace para mostrar la publicación? ¿O se puede anular la palabra observada para que no muestre la palabra bloqueada?

Si es así, esto se acercaría más al bloqueo más completo que algunos usuarios desean.