Empezar un tema nuevo

Generar link para abrir directamente la visualización de un objeto

Hola,

Me gustaría saber si se puede abrir por defecto un Objeto determinado. 
Necesito enviar un email con un link, que acceda directamente a un objeto determinado.


Saludos,

Berta Colom


Os dejo  el código para codificar y descodificar desde un Procedure, por si os pudiera servir.


--

-- Codificar de string a b64

--

SELECT

    CAST(N'' AS XML).value(

 'xs:base64Binary(xs:hexBinary(sql:column("bin")))',

 'VARCHAR(MAX)'

    )

FROM (

    SELECT CAST('{"targetid":"main","navigateFun":"openpage","objectname":"pers_tarea","objectwhere":"(tareas.IdTarea=6074)","defaults":"null","pagetypeid":"view","filtersValues":null,"pagename":"9806A868-0947-47AA-B4B3-364EF2B6A23F"}'

 AS VARBINARY(MAX)) AS bin

) AS bin_sql_server_temp;


--

-- Decodificar de b64 a string

--

SELECT

    CAST(

        CAST(N'' AS XML).value(

            'xs:base64Binary("eyJ0YXJnZXRpZCI6Im1haW4iLCJuYXZpZ2F0ZUZ1biI6Im9wZW5wYWdlIiwib2JqZWN0bmFtZSI6InBlcnNfdGFyZWEiLCJvYmplY3R3aGVyZSI6Iih0YXJlYXMuSWRUYXJlYT0nNjA3NCcpIiwiZGVmYXVsdHMiOiJudWxsIiwicGFnZXR5cGVpZCI6InZpZXciLCJmaWx0ZXJzVmFsdWVzIjpudWxsLCJwYWdlbmFtZSI6Ijk4MDZBODY4LTA5NDctNDdBQS1CNEIzLTM2NEVGMkI2QTIzRiJ9")'

          , 'VARBINARY(MAX)'

        )

        AS VARCHAR(MAX)

    ) ASCIIEncoding

;

 


Hola Berta Colom,
Para enviar un link por email directo a un objeto tienes que usar la siguiente nomenclatura:

https://direccionflexygo/Index?u=JSONDeUbicaciónEnBase64 

Donde el parametro U será la serialización en Base64 de un parametro tipo:

{"targetid":"current","navigateFun":"openpage","objectname":"Empleado","objectwhere":"idempleado=1","defaults":"null","pagetypeid":"view","filtersValues":null,"pagename":"syspage-view-default"}

Si coges cualquier dirección de flexygo, te quedas con el parametro que hay tras el # y lo pasas a string usando la función btoa de javascript verás el contenido.


Luego puedes volver a pasarlo a b64 usando la función JS atob o cualquier otro sistema para codificar en base64.


Te adjunto también como sería desde VB .net. 

Public Shared Function DecodeBase64ToString(valor As String) As String
    Dim myBase64ret As Byte() = Convert.FromBase64String(valor)
    Dim myStr As String = System.Text.Encoding.UTF8.GetString(myBase64ret)
    Return myStr
End Function

Public Shared Function EncodeStrToBase64(valor As String) As String
    Dim myByte As Byte() = System.Text.Encoding.UTF8.GetBytes(valor)
    Dim myBase64 As String = Convert.ToBase64String(myByte)
    Return myBase64
End Function


Si el usuario no está logueado, le pedirá primero el  login y luego le llevará al view. Si ya está logueado, navegará  directamente a la página.

Un saludo,
Rubén Pardo
Iniciar sesión o Registrarse para publicar un comentario