Web based family history software

question-circle Question Insertar una nota compartida en múltiples registros.

  • Bernat
  • Bernat's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 month 3 weeks ago #1 by Bernat
Saludos.Necesito ayuda.Tengo una “nota compartida” (por ejemplo: Capó [nombre de un apellido]) y necesitaría insertar esta “nota compartida” en todos aquellos de mis registros cuyo apellido empieza (o contenga) la palabra “Capó”.Ejemplo: 
   Si alguién me puede indicar la “orden” necesaria, lo agradecería mucho (imaginad tenerlo que hacer manualment).Gracias.

www.quiesquiacalp.es
webtrees 2.2.
Servidor MySQL 8.0.36
Servidor web: nginx/1.18.0
Versión PHP 8.3.3.
Hosting a webtrees.net

Please Log in or Create an account to join the conversation.

  • bertkoor
  • bertkoor's Avatar
  • Offline
  • Platinum Member
  • Platinum Member
  • Greetings from Utrecht, Holland
More
1 month 3 weeks ago - 1 month 3 weeks ago #2 by bertkoor
I guess a search & replace with regular expressions could work, but this is in my view always somewhat dangerous because it spans multiple lines. You never know whether it breaks the structure.

How many records of "Capó" do you have? I'd just do it manually if it's less than 100.

stamboom.BertKoor.nl runs on webtrees v2.2.1
Last edit: 1 month 3 weeks ago by bertkoor.

Please Log in or Create an account to join the conversation.

More
1 month 3 weeks ago - 1 month 3 weeks ago #3 by Franz Frese
Las notas (compartidas) se pueden insertar en muchos lugares.
¿La nota debe colocarse directamente en la etiqueta con el nombre?
¿O debería aparecer en Notas sobre la persona (pestaña Notas)?

 
Last edit: 1 month 3 weeks ago by Franz Frese.

Please Log in or Create an account to join the conversation.

  • Bernat
  • Bernat's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 month 3 weeks ago #4 by Bernat

Les notes (compartides) es poden inserir en molts llocs.


Sí. Eso lo sé.

¿La nota s'ha de col·locar directament a l'etiqueta amb el nom?

En principio es lo que me gustaría y lo que tenía decidido si no me aconsejáis otras opciones.

¿O hauria d'aparèixer en Notes sobre la persona (pestaña Notas)?

Podría ser una segunda opción, pero como las notas compartidas a las que me refiero corresponden a un pequeño estudio sobre los apellidos, considero que adjuntarlo a "nombre" sería más lógico.
¿Qué pensáis?

Ejemplo:
Antonio Capó Roselló (X35936) …–… – QUI ES QUI A CALP I BENISSA. [Webtrees]

www.quiesquiacalp.es
webtrees 2.2.
Servidor MySQL 8.0.36
Servidor web: nginx/1.18.0
Versión PHP 8.3.3.
Hosting a webtrees.net

Please Log in or Create an account to join the conversation.

  • Bernat
  • Bernat's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 month 3 weeks ago #5 by Bernat
Saludos, Bertkoor.

Són muchos más. Se trata de un pequeño estudio sobre los apellidos más numerosos de mi árbol. Actualmente, tengo registrada la nota compartida en la persona «más antigua», pero como no siempre los visitadores de la web llegan tan lejos, me gustaría que apareciera en todos los registros.

www.quiesquiacalp.es
webtrees 2.2.
Servidor MySQL 8.0.36
Servidor web: nginx/1.18.0
Versión PHP 8.3.3.
Hosting a webtrees.net

Please Log in or Create an account to join the conversation.

  • bertkoor
  • bertkoor's Avatar
  • Offline
  • Platinum Member
  • Platinum Member
  • Greetings from Utrecht, Holland
More
1 month 3 weeks ago #6 by bertkoor
I personally think if you attach a shared note to many hundreds individuals, it's not a note any more but rather represents common knowledge.

Maybe it's easier to write an article in the FAQ and make a HTML block about it on the front page of the tree.

stamboom.BertKoor.nl runs on webtrees v2.2.1

Please Log in or Create an account to join the conversation.

More
1 month 3 weeks ago - 1 month 3 weeks ago #7 by Franz Frese
Hazlo algo como esto:
 

Avance:
 

Code:
\n1 NAME(.+)\n \n1 NAME\1\n2 NOTE @your note reference@\n

 
Last edit: 1 month 3 weeks ago by Franz Frese.

Please Log in or Create an account to join the conversation.

More
1 month 3 weeks ago - 1 month 3 weeks ago #8 by Franz Frese
Por supuesto, todavía tienes que refinar el texto que estás buscando.
Lo siento, olvidé incluir eso en el ejemplo.

Llevar
Code:
\n1 NAME(.+)/Smith(.+)\n
para buscar /Smith en el nombre

Texto de la sustitución (\1 is the first part before /Smith, \2 is the part behind /Smith)
Code:
\n1 NAME\1/Smith\2\n2 NOTE @your note reference@\n
 
Last edit: 1 month 3 weeks ago by Franz Frese.

Please Log in or Create an account to join the conversation.

  • Bernat
  • Bernat's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 month 3 weeks ago - 1 month 2 weeks ago #9 by Bernat
Perfecte, Franz! (que envidia no tenir els teus coneixements!)
He efectuat una primera prova amb l'apel·latiu "Capó" i aquesta és la configuració que em funciona:
\n1 NOM(.+)\Capó(.+)\n
\n1 NOM\1Capó\2\n2 NOTA @X35973@\n
El resultat és el que necessitaba.
Com pots apreciar, hi ha petites diferències amb el teu codi (barras invertides i algun espai). Confírmame, per favor, que és correcte abans de començar fer canvis. Creo que funciona, pero tengo miedo a equivocarme gravement. (estoy haciendo canvis un per un per si acaso).
Moltes gràcies!
EDITO: en la captura aparece la nota como @35973@ cuando lo correcto es: @X35973@. 

www.quiesquiacalp.es
webtrees 2.2.
Servidor MySQL 8.0.36
Servidor web: nginx/1.18.0
Versión PHP 8.3.3.
Hosting a webtrees.net
Last edit: 1 month 2 weeks ago by Bernat.

Please Log in or Create an account to join the conversation.

More
1 month 2 weeks ago - 1 month 2 weeks ago #10 by Franz Frese
Nein, es kann nicht richtig sein.
Du willst die NAME - Zeile ja nicht ändern.
Da würde \Capo durch Capo ersetzt, was du bestimmt nicht willst.
Vermutlich kannst du auch einfach nach Capo suchen, statt \Capo
Der Nachname wird ja in / eingeschlossen (vermutlich ist das \ aus Versehen da rein gekommen),
In meinem obigen Beispiel steht /Smith, analog müsstest du /Capo suchen. Oder wie gesagt nur Capo, dann kann es an beliebiger Stelle in der Namenszeile sein.
Ein \ müsste wohl "Escaped" werden.
Ich bin nicht der Regex Experte!

Wo hast du Leerzeichen geändert?

Das Ergebnis der Änderung kann man sich ja in der Vorschau anzeigen lassen.

Und nicht vergessen vorher einen Gedcom Export (=backup) zu machen. Dann bist du auf der sicheren Seite.
Last edit: 1 month 2 weeks ago by Franz Frese.

Please Log in or Create an account to join the conversation.

  • Bernat
  • Bernat's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 month 2 weeks ago #11 by Bernat

Nein, es kann nicht richtig sein.
Du willst die NAME - Zeile ja nicht ändern.
Da würde \Capo durch Capo ersetzt, was du bestimmt nicht willst.
Vermutlich kannst du auch einfach nach Capo suchen, statt \Capo
Der Nachname wird ja in / eingeschlossen (vermutlich ist das \ aus Versehen da rein gekommen),
In meinem obigen Beispiel steht /Smith, analog müsstest du /Capo suchen. Oder wie gesagt nur Capo, dann kann es an beliebiger Stelle in der Namenszeile sein.
Ein \ müsste wohl "Escaped" werdenSaludos, Franz!

Saludos, Franz!
He estado haciendo pruebas y \n1 NAME(.+)\Capó(.+)\n me funciona correctamente. Mira las capturas 1 y 2. [No modifica el nombre]
 
 
Respecto a «un espacio», disculpa. Es un error por mi parte y, por supuesto, voy con mucho cuidado en las modificaciones.
Un par de preguntas más. 
  1. Estas mismas instrucciones se pueden repetir en otros términos del lenguaje GEDCOM como por ejemplo: PLAC ?
  2. Como esta expresión regular la voy a repetir cada cierto tiempo, es posible completarla con una orden que evite «duplicar» la NOTE. Es decir, si ya está incluida, que no aparezca en la búsqueda para evitar una segunda anotación idéntica. [Se podría hacer manualmente, pero lleva mucho tiempo]
De todos modos, reitero mi gratitud por tu ayuda. Actualmente, con lo que me han aconsejado, me sirve mucho, mucho.
Saludos.

www.quiesquiacalp.es
webtrees 2.2.
Servidor MySQL 8.0.36
Servidor web: nginx/1.18.0
Versión PHP 8.3.3.
Hosting a webtrees.net

Please Log in or Create an account to join the conversation.

More
1 month 2 weeks ago #12 by Franz Frese
As I said, I am not a regular expression expert.
I do not know how to avoid duplication.

There is no fixed position with a gedcom structure for notes, what makes changes even more complicated.

Please Log in or Create an account to join the conversation.

More
1 month 2 weeks ago - 1 month 2 weeks ago #13 by elysch
Hola. 
Unos comentarios. 

a) Como el primer paréntesis se cierra antes de la diagonal, en realidad no va a aparecer en el texto reemplazado.

Si el texto original es:
1 NAME Juan Bautista /Capó Ferrer/

Al reemplazar quedará:
1 NAME Juan Bautista Capó Ferrer/

Recomiendo cambiarlo a:
\n1 NAME(.+/)Capó(.+)\n

b) ¿Qué pasaría si Capó es el segundo apellido?
Recomiendo cambiarlo a:
\n1 NAME(.+/.*)Capó(.*/)\n

c) Si se puede hacer que lo reemplace solamente si el siguiente renglón no es una nota utilizando algo como esto
\n1 NAME(.+/.*)Capó(.*/)\n[^2][^ ][^N][^O][^T][^E][^ ][^\@][^X][^3][^5][^9][^7][^3][^\@]

El símbolo ^ es una negación cuando está al principio entre [ y ]

d) El reemplazo debe ser algo como esto:
\n1 NAME\1Capó\2\n2 NOTE @X35973@\n

e) Si se puede acomodar para agregar cosas después de PLAC

OJO: No pude probarlo antes de mandar este mensaje, pero está expresada la idea general. No recuerdo si se requiere usar [^\@] o simplemente [^@]

Saludos.
Last edit: 1 month 2 weeks ago by elysch.

Please Log in or Create an account to join the conversation.

More
1 month 2 weeks ago #14 by elysch
Esto también agregará la nota si existe alguna palabra que contenga Capó, es decir que tiene más letras antes o después.

Se puede evitar así:

\n1 NAME(.+/.*)\<Capó\>(.*/)\n[^2][^ ][^N][^O][^T][^E][^ ][^\@][^X][^3][^5][^9][^7][^3][^\@]

Please Log in or Create an account to join the conversation.

  • Bernat
  • Bernat's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 month 2 weeks ago #15 by Bernat

a) Como el primer paréntesis se cierra antes de la diagonal, en realidad no va a aparecer en el texto reemplazado.

Si el texto original es:1 NAME Juan Bautista /Capó Ferrer/  -> Al reemplazar quedará: 1 NAME Juan Bautista Capó Ferrer/

Recomiendo cambiarlo a:\n1 NAME(.+/)Capó(.+)\n

Correcto. Lo he comprobado y funciona correctamente.

b) ¿Qué pasaría si Capó es el segundo apellido?
Recomiendo cambiarlo a: \n1 NAME(.+/.*)Capó(.*/)\n

No utilizo los «segundos apellidos», pero toma nota de tu solución por si lo necesitase en un futuro)
 

Si se puede hacer que lo reemplace solamente si el siguiente renglón no es una nota utilizando algo como esto
\n1 NAME(.+/.*)Capó(.*/)\n[^2][^ ][^N][^O][^T][^E][^ ][^\@][^X][^3][^5][^9][^7][^3][^\@]
o
\n1 NAME(.+/)Capó(.+)\n[^2][^ ][^N][^O][^T][^E][^ ][^\@][^X][^3][^5][^9][^7][^3][^\@]

Creo entender tu lógica. Si después de la línea de NAME (con el valor que sea) NO hay otra línea con 2 NOTE @xxxxx@, entonces añadir línea de reemplazo.
Hasta este momento he estado realizando pruebas y no puedo confirmar que funcione correctamente. Creo que sí hace su trabajo buscando en los registros [2 NOTE @XXXX@], pero no los selecciona para ejecutar la línea de reemplazo. Es decir, me devuelve «0» resultados. He ensayado con [^\@] o simplemente [^@], pero no veo resultados positivos. He intentado «engañarle» para que busque una NOTE que no existe y, por lo tanto, me debía de haber encontrado todos los registros «Capó» y proponerme añadir la línea de reemplazo. Tampoco ha funcionado hasta ahora.
En los próximos días haré diferentes pruebas a ver si encontrase una forma de que funcione (o si he cometido algún error), pero si puedes dedicarle un poco de tu tiempo para comprobar tus órdenes, te lo agradecería mucho. Si no dispones de ese tiempo, lo comprendo e igualmente te agradezco tu interés en ayudarnos a los que ponemos más voluntad que sabiduría en estas cosas.
Lo dicho. Muchas gracias. 
PS. Si fuera necesario, adjuntaría capturas de pantalla.

www.quiesquiacalp.es
webtrees 2.2.
Servidor MySQL 8.0.36
Servidor web: nginx/1.18.0
Versión PHP 8.3.3.
Hosting a webtrees.net

Please Log in or Create an account to join the conversation.

  • Bernat
  • Bernat's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 month 2 weeks ago #16 by Bernat

Esto también agregará la nota si existe alguna palabra que contenga Capó, es decir que tiene más letras antes o después.

Se puede evitar así:

\n1 NAME(.+/.*)\<Capó\>;(.*/)\n[^2][^ ][^N][^O][^T][^E][^ ][^\@][^X][^3][^5][^9][^7][^3][^\@]
He probado tu recomendación (con otro apellido) y en la captura te muestro el resultado.

 

Según entiendo yo: La orden pide que busque en el nombre [NAME] la palabra BAÑULS y compruebe si la línea siguiente NO TIENE el texto: 2 NOTE @10435@ [que seguro no tiene porque esa NOTE no existe]. Si se cumple [que no tiene la línea mencionada], sustituir por la nota @X10436@.
El sistema me devuelve «0» registros, como puedes ver en la captura.

Gracias por tu paciencia :-) 

 

www.quiesquiacalp.es
webtrees 2.2.
Servidor MySQL 8.0.36
Servidor web: nginx/1.18.0
Versión PHP 8.3.3.
Hosting a webtrees.net

Please Log in or Create an account to join the conversation.

More
1 month 1 week ago - 1 month 1 week ago #17 by elysch
Hola.

Lamento que no funcionara a la primera. Ya encontré el error. Utilicé expresiones regulares del lenguaje de programación C (editor de texto vi) y webtrees utiliza expresiones regulares del lenguaje de programación Perl.

Esta es la expresión de búsqueda corregida (espero):
\n1 NAME(.+/.*)\bCapó\b(.*/)\n(?!2 NOTE @X35973@\n)

Cambié:
\< y \> por \b para indicar inicio o fin de palabra

Y utilicé ahora una opción llamada "Negated lookahead":
(?! )

¿Puedes probar por favor?

Saludos
Last edit: 1 month 1 week ago by elysch.

Please Log in or Create an account to join the conversation.

  • Bernat
  • Bernat's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 month 1 week ago #18 by Bernat

Esta es la expresión de búsqueda corregida (espero):
\n1 NAME(.+/.*)\bCapó\b(.*/)\n(?!2 NOTA @X35973@\n)

Cambié:
\< y \> por \b para indicar inicio o fin de palabra

Y utilicé ahora una opción llamada "Negated lookahead":
(?! )


Funciona perfectamente!!!!! Muchísimas gracias.:-)

Ver las capturas:
   
 

Una última cuestión. La mayoría de las ocasiones, necesitaría aplicar la inscripción de la NOTE cuando el apellido ocupe el primer lugar. La orden que estoy utilizando y parece funcionar es: \n1 NAME(.+/)Bañuls(.+)\n(?!2 NOTA @X10435@\n)
¿Es correcto?

Nuevamente, muchísimas gracias. 
 

www.quiesquiacalp.es
webtrees 2.2.
Servidor MySQL 8.0.36
Servidor web: nginx/1.18.0
Versión PHP 8.3.3.
Hosting a webtrees.net

Please Log in or Create an account to join the conversation.

More
1 month 1 week ago - 4 weeks 1 day ago #19 by elysch
Hola.

Tal vez exagero, pero es importante poner \b para evitar el cambio en otro apellido que comience igual. (Mejor exagerar que corregir después, creo)

\n1 NAME(.+/)Bañuls\b(.+)\n(?!2 NOTE @X10435@\n)

(Al principio de la palabra no importa porque está la diagonal)

Por lo visto ya le entendiste.
:)

PS: Discovered it had "NOTA" instead of "NOTE". Fixed it

Saludos.
Last edit: 4 weeks 1 day ago by elysch.

Please Log in or Create an account to join the conversation.

More
1 month 1 week ago #20 by hermann
@Bernat, I didn't read all the messages in this thread. If you have "tagged" all the persons/names in your tree with the shared NOTE, it should be easy to show a small label whenever a name is displayed. This can indicate that your tag exists. Use the Vesta module function "name badges" (see Vesta module Classic Look&Feel).

Hermann
Designer of the custom module "Extended Family"

webtrees 2.2.1 (all custom modules installed, PHP 8.3.12, MariaDB 10.6) @ ahnen.hartenthaler.eu

Please Log in or Create an account to join the conversation.

Powered by Kunena Forum