%
--[[
La definición de las versiones de jQuery y jQueryUI que se utilizan, se encuentra en "shared/apps/utils.lua"
"LAST" = Versiones - jQuery (3.6.0 "Mar 02, 2021") y jQueryUI (1.13.0 "Oct 07, 2021")
"STABLE" = Versiones - jQuery (3.4.1 "May 01, 2019") y jQueryUI (1.12.1 "Sep 14, 2016")
]]--
local m_version = "LAST"
local jQuery, jQueryUI = m_utils.jQuery(m_version)
%>
<%=_T("inConcert OmniChannel - Printing")%>
<%
--[[
ATENCION:
---------
Cada vez que se realice un cambio o se agregue una funcion al objeto "_MAIL", se debe actualizar
la funcion "render_pages" del archivo "inconcert\apps\agent\init.lua", para que esta exponga las mismas
funciones, y retorne los mismos tipos de datos, cuando se realiza el render de esta pagina.
Esta funcion "render_pages" es invocada cuando es realizado el primer login, luego de la actualizacion de un build.
Por esto mismo, es que si ejecutamos el codigo desde los fuentes, el error no es visualizado hasta que se instale el build.
La forma de probar lo que ejecuta el render en la primera instalacion, sin tener que instalar el build es correr directo la URI desde el navegador,
para que pase por la funcion "render_pages", Ej:
http://i6.inconcert.cc/inconcert/apps/agent/pages/print.1033.html
]]--
local mailDate = _MAIL.GetDate()
local from = _MAIL.GetFrom()
local to = _MAIL.GetTo()
local cc = _MAIL.GetCC()
local bcc = _MAIL.GetBCC()
local subject = _MAIL.GetSubject()
local body = _MAIL.GetBody()
local successParsedBody = "0"
local contentType, htmlBody
--[[
Esta funcion se encarga de parsear el texto imprimible, que retorna la funcion "_MAIL.GetBody()"
Lo que retorna la funcion "_MAIL.GetBody()" es un string con 3 campos separados con un separador ";".
Estos campos nos indica si el controller mail.lua ha realizado bien el parseo.
El separador de campos es el caracter ";" y los 3 campos que retorna son los siguientes:
1 - El primer campo retorna el valor 1 o 0. El valor 1 nos indica que la impresion se puede realizar.
2 - El segundo campo nos retorna el valor del contentType del html a imprimir, y sus valores posibles son: "text/html" y "text/plain"
3 - El tercer campo contiene el html a imprimir.
Ej:
ok = "1;text/plain;EL TEXTO A IMPRIMIR"
error = "0;;"
Nota:
Esto se recibe asi como un string con separadores, en lugar de una tabla, porque el cgilua, no permite enviar una tabla, sino un string.
]]--
local function ParseBody()
LogInfo("[PRINT.HTML] Parsing body html to print.")
local position = body:find(";")
if not position then
successParsedBody = "0"
LogWarning("[PRINT.HTML] Unable to print html, error parsing body html. String not contain ';' separator.")
return
end
successParsedBody = body:sub(0, position - 1)
if successParsedBody ~= "1" then
successParsedBody = "0"
LogWarning("[PRINT.HTML] Unable to print html, error parsing body html. Cannot obtain 'success' field. BODY: %s", body)
return
end
body = body:sub(position + 1)
position = body:find(";")
if not position then
successParsedBody = "0"
LogWarning("[PRINT.HTML] Unable to print html, error parsing body html. Cannot obtain 'content type' field. BODY: %s", body)
return
end
contentType = (body:sub(0, position - 1) or ""):lower()
if contentType ~= "text/html" and contentType ~= "text/plain" then
successParsedBody = "0"
LogError("[PRINT.HTML] Unable to print html. Unrecognized content type '%s'.", contentType)
return
end
-- Se ha parseado correctamente el body html
htmlBody = body:sub(position + 1) or ""
LogInfo("[PRINT.HTML] Successfully parsed body html to print.")
end
ParseBody()
-- Esta funcion valida si la seccion debe ser visualizada o no (CC o BCC)
local function CanShowSection(text)
return (text or ""):len() == 0 and "none" or ""
end
local GetContentType = function()
return contentType
end
local GetHTMLBody = function()
return htmlBody
end
%>