public string HTMLArea(string id, Propuesta prop, int width, int height, bool tieneFlores, string idioma) { Variable v = getVariable(id); string ret = ""; if (prop == null && tieneFlores) { if (modo != eModo.prevista && !consensoAlcanzado) { ret += "<textarea id='" + id + "' "; ret += "class='editarrtf' "; ret += "maxlength='" + v.len + "' "; ret += "style='width:" + width + "px;height:" + height + "px;'>"; ret += "</textarea>"; ret += "<div style='text-align:right;width:100%;font-size:10px;'>(" + Tools.tr("max", idioma) + ": " + v.len + ")</div>"; ret += "<br>"; } } else if (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar)) { //revisar string HTMLText = Tools.HTMLDecode(Tools.HTMLDecode(toHTMLText((string)getValue(id, prop)))); ret += "<textarea id='" + id + "' "; ret += "class='editarrtf' "; ret += "maxlength='" + v.len + "' "; ret += "style='width:" + width + "px;height:" + height + "px;'>"; ret += HTMLText; //ret += getValue(id, prop); ret += "</textarea>"; ret += "<div style='text-align:right;width:100%;font-size:10px;'>(" + Tools.tr("max", idioma) + ": " + v.len + ")</div>"; ret += "<br>"; } else if (prop != null) { //ver string HTMLText = Tools.HTMLDecode(Tools.HTMLDecode(toHTMLText((string)getValue(id, prop)))); ret += "<div "; ret += "class='" + v.className + "' "; ret += "style='width:" + width + "px;'>"; if (prop.consensoAlcanzado) { ret += HTMLText + "</div>"; } //ret += toHTMLText((string)getValue(id, prop)) + "</div>"; else { ret += HTMLText + "</div>"; } //ret += Tools.HTMLDecode(Tools.HTMLDecode(toHTMLText((string)getValueResaltado(id, prop)))) + "</div>"; ret += "<br>"; } else { ret += "<div style='color:gray;font-size:12px;'>" + Tools.tr("No tiene flores para crear una propuesta", idioma) + "</div>"; } return(ret); }
public string toHTMLComentarios(int nivel, Propuesta prop, Grupo g, string email, int width, bool agregar) { string ret = ""; if (prop != null) { //titulo si hay contenido if (prop.comentarios.Count > 0 || (agregar && !prop.esPrevista())) { ret += "<div class='titulo4' style='padding-left:3px'>" + Tools.tr("Comentarios", g.idioma) + ":</div>"; } foreach (Comentario c in prop.comentarios) { if (c.objecion) { ret += "<div class='comentario' style='background-color:#FFD2E3'>"; } else { ret += "<div class='comentario' style='background-color:#D6F5DB'>"; } ret += toHTMLText(c.texto); //fecha ret += "<div style='text-align:right;color:gray;font-size:10px;'>"; ret += c.fecha.ToString("dd/MM/yy"); ret += "</div>"; ret += "</div>"; //objecion } //agregar if (agregar && !prop.esPrevista()) { ret += "<textarea id='comentario" + prop.nodoID + "' maxlength='300' class='editarComentario' style='height: 50px;width:-webkit-fill-available'>"; ret += "</textarea><br>"; ret += "<input type='button' class='btn2' value='" + Tools.tr("Enviar", g.idioma) + "' onclick='doComentar(" + prop.nodoID + ");'>"; ret += " <font size='1'>(max: 300)</font>"; ret += " <input type='checkbox' id='objecion" + prop.nodoID + "'><span style='font-size:10px'>" + Tools.tr("Objecion", g.idioma) + "</span>"; } } return(ret); }
public string HTMLArea(string id, Propuesta prop, int width, int height, string idioma) { //es reconocimiento de voz no funcion desde el servidor por motivos de seguridad. Solo funciona con HTTPS Variable v = getVariable(id); string ret = ""; if (prop == null) { if (modo != eModo.prevista) { //ret += "<table style='width:" + width + "'>"; //ret += "<tr><td>"; ret += "<textarea id='" + id + "' "; ret += "class='editarrtf' "; ret += "maxlength='" + v.len + "' "; ret += "style='width:" + width + "px;height:" + height + "px;'>"; ret += "</textarea>"; //ret += "</td><td style='width:25px;vertical-align:top;'>"; //ret += "<img src='res/mic.png' style='cursor:pointer;' onclick='startRecognition(\"" + id + "\");'>"; //ret += "</td></tr></table>"; ret += "<div style='text-align:right;width:100%;font-size:10px;'>(" + Tools.tr("max", idioma) + ": " + v.len + ")</div>"; ret += "<br>"; } } else if (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar)) { //revisar //ret += "<table style='width:" + width + "'>"; //ret += "<tr><td>"; ret += "<textarea id='" + id + "' "; ret += "class='editarrtf' "; ret += "maxlength='" + v.len + "' "; ret += "style='width:" + width + "px;height:" + height + "px;'>"; ret += getValue(id, prop); ret += "</textarea>"; //ret += "</td><td style='width:25px;vertical-align:top;'>"; //ret += "<img src='res/mic.png' style='cursor:pointer;' onclick='startRecognition(\"" + id + "\");'>"; //ret += "</td></tr></table>"; ret += "<div style='text-align:right;width:100%;font-size:10px;'>(" + Tools.tr("max", idioma) + ": " + v.len + ")</div>"; ret += "<br>"; } else if (prop != null) { //ver string HTMLText = Tools.HTMLDecode(Tools.HTMLDecode(toHTMLText((string)getValue(id, prop)))); ret += "<div "; ret += "class='" + v.className + "' "; ret += "style='width:100%;'>"; ret += HTMLText + "</div>"; ret += "<br>"; } return(ret); }
public string HTMLRadio(string id, int index, Propuesta prop, bool tieneFlores, string value, string idioma) { Variable v = getVariable(id); string ret = ""; if (prop == null && tieneFlores && !consensoAlcanzado) { if (modo != eModo.prevista) { //editar en blanco ret += "<input id='" + id + index + "' name='" + id + "' type='radio' "; ret += "class='" + v.editClassName + "' "; ret += "value='" + value + "' "; ret += "onclick=\"documentSubmit('" + id + "_click','" + value + "')\" style='cursor:pointer;width:2em;height:2em;'>"; } } else if (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar)) { //revision ret += "<input id='" + id + index + "' name='" + id + "' type='radio' "; ret += "class='" + v.editClassName + "' "; ret += "value='" + value + "' "; if (getText(id, prop) == value) { ret += "checked "; } ret += "onclick=\"documentSubmit('" + id + "_click','" + value + "')\" style='cursor:pointer;width:2em;height:2em;'>"; } else if (prop != null) { //ver ret += "<input type='radio' "; ret += "class='" + v.editClassName + "' "; if (value == getText(id, prop)) { ret += "checked "; } ret += "value='" + value + "' disabled='true' style='width:2em;height:2em;'>"; } else { //sin flores ret += "<div style='color:gray;font-size:12px;'>" + Tools.tr("No tiene flores para crear una propuesta", idioma) + "</div>"; } return(ret); }
private string input(string id, Propuesta prop, int width, bool tieneFlores, string tipo, string value, string idioma) { Variable v = getVariable(id); string ret = ""; if (prop == null && tieneFlores && !consensoAlcanzado) { if (modo != eModo.prevista) { //editar en blanco ret += "<input id='" + id + "' type='" + tipo + "' "; ret += "class='" + v.editClassName + "' "; ret += "maxlength='" + v.len + "' "; ret += "style='width:" + width + "px;'>"; } } else if (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar)) { //revision ret += "<input id='" + id + "' type='" + tipo + "' "; ret += "class='" + v.editClassName + "' "; ret += "maxlength='" + v.len + "' "; ret += "style='width:" + width + "px;' "; if (tipo == "number") { value = value.Replace(",", "."); } ret += "value='" + value + "'>"; } else if (prop != null) { //ver ret += "<input type='text' readonly "; ret += "class='" + v.className + "' "; ret += "style='width:" + width + "px;' "; ret += "value='" + value + "'>"; } else { //sin flores ret += "<div style='color:gray;font-size:12px;'>" + Tools.tr("No tiene flores para crear una propuesta", idioma) + "</div>"; } return(ret); }
public string HTMLDate(string id, Propuesta prop, bool tieneFlores, string idioma) { DateTime d = getDate(id, prop); string value = ""; if (d == Tools.minValue) { //valor nulo value = ""; } else if (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar)) { //revision value = d.Year.ToString("0000") + "-" + d.Month.ToString("00") + "-" + d.Day.ToString("00"); } else { //ver value = d.Day.ToString("00") + "/" + d.Month.ToString("00") + "/" + d.Year.ToString("0000"); } return(input(id, prop, 150, tieneFlores, "date", value, idioma)); }
public string HTMLLista(string id, string valores, Propuesta prop, int width, string idioma, bool autopostback) { Variable v = getVariable(id); string ret = ""; if (prop == null) { if (modo != eModo.prevista) { //editar en blanco ret += "<select id='" + id + "' "; ret += "class='" + v.editClassName + "' "; ret += "style='width:" + width + "px;'"; ret += autopostback ? " onchange=\"evaluacionSubmit('" + id + "_changed','','" + GetType().FullName + "')\" " : ""; ret += ">"; foreach (string l in valores.Split('|')) { string[] item = l.Split('#'); if (item.Length == 1) { ret += "<option id='" + item[0] + "'>" + item[0] + "</option>"; } else { ret += "<option id='" + item[0] + "'>" + item[1] + "</option>"; } } ret += "</select>"; } } else if (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar)) { //revision string value = getValue(id, prop).ToString(); ret += "<select id='" + id + "' "; ret += "class='" + v.editClassName + "' "; ret += "style='width:" + width + "px;'"; ret += autopostback ? " onchange=\"evaluacionSubmit('" + id + "_changed','','" + GetType().FullName + "')\" " : ""; ret += ">"; foreach (string l in valores.Split('|')) { string[] item = l.Split('#'); if (item.Length == 1) { ret += "<option " + (value == item[0] ? "selected" : "") + " id='" + item[0] + "'>" + item[0] + "</option>"; } else { ret += "<option " + (value == item[0] ? "selected" : "") + " id='" + item[0] + "'>" + item[1] + "</option>"; } } ret += "</select>"; } else if (prop != null) { //ver string value = getValue(id, prop).ToString(); foreach (string l in valores.Split('|')) { string[] item = l.Split('#'); if (value == item[0]) { if (item.Length == 1) { ret += "<input type='text' readonly "; ret += "class='" + v.className + "' "; ret += "style='width:" + width + "px;' "; ret += "value='" + item[0] + "'>"; } else { ret += "<input type='text' readonly "; ret += "class='" + v.className + "' "; ret += "style='width:" + width + "px;' "; ret += "value='" + item[1] + "'>"; } } } } else { //sin flores ret += "<div style='color:gray;font-size:12px;float:left;'>" + Tools.tr("No tiene flores para crear una propuesta", idioma) + "</div>"; } return(ret); }
public string area(string id, Propuesta prop, int width, int height, bool tieneFlores) { Variable v = getVariable(id); string ret = ""; if (prop == null && tieneFlores) { if (modo != eModo.prevista && !consensoAlcanzado) { ret += "<textarea id='" + id + "' "; ret += "class='editar' "; ret += "maxlength='" + v.len + "' "; ret += "style='width:" + width + "px;height:" + height + "px;'>"; ret += "</textarea>"; ret += "<div style='text-align:right;width:" + (width + 14) + "px;font-size:10px;'>(" + tr("max") + ": " + v.len + ")</div>"; ret += "<br>"; } } else if (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar)) { //revisar ret += "<textarea id='" + id + "' "; ret += "class='editar' "; ret += "maxlength='" + v.len + "' "; ret += "style='width:" + width + "px;height:" + height + "px;'>"; ret += getValue(id, prop); ret += "</textarea>"; ret += "<div style='text-align:right;width:" + (width + 14) + "px;font-size:10px;'>(" + tr("max") + ": " + v.len + ")</div>"; ret += "<br>"; } else if (prop != null) { //ver ret += "<div "; ret += "class='" + v.className + "' "; ret += "style='width:" + width + "px;'>"; ret += toHTML((string)getValueResaltado(id, prop)) + "</div>"; ret += "<br>"; } else { ret += "<span style='color:gray;font-size:12px;padding:5px;'>" + tr("[No tiene flores para crear una propuesta]") + "</span>"; ret += "<br>"; } return ret; }
public string txt(string id, Propuesta prop, int width, bool tieneFlores) { Variable v = getVariable(id); string ret = ""; if (prop == null && tieneFlores && !consensoAlcanzado) { if (modo != eModo.prevista) { //editar en blanco ret += "<input id='" + id + "' type='text' "; ret += "class='editar' "; ret += "maxlength='" + v.len + "' "; ret += "style='width:" + width + "px;'>"; } } else if (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar)) { //revision ret += "<input id='" + id + "' type='text' "; ret += "class='editar' "; ret += "maxlength='" + v.len + "' "; ret += "style='width:" + width + "px;' "; ret += "value='" + getValue(id, prop) + "'>"; } else if (prop != null) { //ver ret += "<span type='text' readonly "; ret += "class='" + v.className + "' "; ret += "style='width:" + width + "px;'>"; ret += getValue(id, prop) + "</span>"; } else //sin flores ret += "<span style='color:gray;font-size:12px;'>" + tr("[No tiene flores para crear una propuesta]") + "</span>"; return ret; }
public string toHTMLComentarios(int nivel, Propuesta prop, Grupo g, string email, int width, bool agregar) { string ret = ""; if (prop != null) { foreach (Comentario c in prop.comentarios) { ret += "<div class='comentario' style='overflow: auto;width:" + (width - 15) + "px'>"; ret += toHTML(c.texto); ret += "</div>"; //fecha ret += "<div style='text-align:right;color:gray;font-size:10px;width:" + (width - 10) + "px'>"; ret += c.fecha.ToShortDateString(); ret += "</div>"; } //agregar if (agregar && !prop.esPrevista()) { ret += "<textarea id='comentario" + prop.nodoID + "' maxlength='200' class='editar' style='width: " + (width - 15) + "px; height: 70px;'>"; ret += "</textarea><br>"; ret += "<input type='button' class='btn2' value='" + tr("Enviar") + "' onclick='doComentar(" + prop.nodoID + ");'>"; ret += " <font size='1'>(max: 200)</font>"; } } return ret; }
public string HTMLListaSeleccion(string id, Propuesta prop, int width, int height, bool tieneFlores, string lista, string pertenece, string NoPertenece, string idioma) { Variable v = getVariable(id); string value = getText(id, prop); //if (value == "") value = "*"; //no vacio para que lo envie en el submit string ret = ""; if (prop == null && tieneFlores) { if (modo != eModo.prevista && !consensoAlcanzado) { //edicion //seleccionados ret += "<table style='width:" + width + "px;height:" + height + "px;'>"; ret += "<tr><td><b>" + pertenece + "</b></td><td><b>" + NoPertenece + "</b></td></tr>"; ret += "<tr><td class='" + v.editClassName + "' style='overflow:scroll;width:" + (width / 2 - 15) + "px;vertical-align:top;'>"; if (value != "" && value != "*") { foreach (string item in value.Split('|')) { ret += "<span style='vertical-align:middle; padding:3px;'>"; ret += "<img src='res/quitar.png' "; ret += "onclick=\"documentSubmit('" + id + "_quitar','" + item + "')\" style='cursor:pointer;vertical-align:bottom;'> "; ret += item.Split(':')[1]; ret += "</span>"; ret += "<br>"; } } ret += "</td>"; //disponibles ret += "<td class='" + v.editClassName + "' style='float:left;width:" + (width / 2 - 15) + "px;height:" + height + "px;overflow:scroll;vertical-align:top;'>"; if (lista != "") { foreach (string item in lista.Split('|')) { if (value.IndexOf(item.Split(':')[0]) == -1) { ret += "<span style='vertical-align:middle; padding:3px;'>"; ret += "<img src='res/agregar.png' "; ret += "onclick=\"setNotEmpyList('" + id + "');documentSubmit('" + id + "_agregar','" + item + "')\" style='cursor:pointer;vertical-align:bottom;'> "; ret += item.Split(':')[1]; ret += "</span>"; ret += "<br>"; } } } ret += "</td></tr>"; ret += "</table>"; //pongo input invisible para guardar el valor como cualquier otro ret += "<br><input type='hidden' id='" + id + "' value='" + value + "' size=90>"; //no vacio para que lo envie en el submit ret += "<br>"; } } else if (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar)) { //revisar //seleccionados ret += "<table style='width:" + width + "px;height:" + height + "px;'>"; ret += "<tr><td><b>" + pertenece + "</b></td><td><b>" + NoPertenece + "</b></td></tr>"; ret += "<tr><td class='" + v.editClassName + "' "; ret += "style='overflow:scroll;width:" + (width / 2 - 15) + "px;vertical-align:top;'>"; if (value != "" && value != "*") { foreach (string item in value.Split('|')) { ret += "<nobr>"; ret += "<img src='res/quitar.png' onclick=\"documentSubmit('" + id + "_quitar','" + item + "')\" style='cursor:pointer;vertical-align:bottom;'> "; ret += item.Split(':')[1]; ret += "</nobr>"; ret += "<br>"; } } ret += "</td>"; //disponibles ret += "<td class='" + v.editClassName + "' style='float:left;width:" + (width / 2 - 15) + "px;height:" + height + "px;overflow:scroll;vertical-align:top;'>"; if (lista != "") { foreach (string item in lista.Split('|')) { if (value.IndexOf(item.Split(':')[0]) == -1) { ret += "<nobr>"; ret += "<img src='res/agregar.png' "; ret += "onclick=\"setNotEmpyList('" + id + "');documentSubmit('" + id + "_agregar','" + item + "')\" style='cursor:pointer;vertical-align:bottom;'> "; ret += item.Split(':')[1]; ret += "</nobr>"; ret += "<br>"; } } } ret += "</td></tr>"; ret += "</table>"; //pongo input invisible para guardar el valor como cualquier otro ret += "<br><input type='hidden' id='" + id + "' value='" + value + "' size=90>"; //no vacio para que lo envie en el submit ret += "<br>"; } else if (prop != null) { //ver //seleccionados if (value == "*") { ret += "(vacío)"; } else { string divitem = ""; try { divitem = "<div "; divitem += "class='" + v.className + "'>"; if (value != "") { foreach (string item in value.Split('|')) { divitem += "<nobr>"; divitem += item.Split(':')[1];; divitem += "</nobr>"; divitem += "<br>"; } } divitem += "</div>"; ret += divitem; } catch (Exception) { //el valor guardado no tiene el formato correcto, lo descarto } } ret += "<br>"; } else { ret += "<div style='color:gray;font-size:12px;'>" + Tools.tr("No tiene flores para crear una propuesta", idioma) + "</div>"; } return(ret); }
public string toHTML(List <Propuesta> props, Grupo g, string email, int width, eModo modo) { string ret = ""; this.modo = modo; this.grupo = g; //reinicio el modelo errores.Clear(); consensoAlcanzado = false; bool tieneFlores = false; Usuario u = g.getUsuarioHabilitado(email); if (u != null) { tieneFlores = u.floresDisponibles().Count > 0; } //ordeno las propuestas por nivel props.Sort(); if (modo == eModo.consenso) { //header HTML ret += "<html>"; ret += "<head>"; ret += "<title></title>"; ret += "<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1' />"; ret += "<link rel='stylesheet' type='text/css' href='styles.css'>"; ret += "</head>"; ret += "<body>"; } //todo el documento bool editar = false; for (int q = 1; q <= niveles; q++) { Propuesta prop = getProp(q, props); editar = (prop == null && tieneFlores && modo != eModo.prevista && modo != eModo.consenso) || (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar)); if (prop != null && prop.consensoAlcanzado) { consensoAlcanzado = true; } //veo si falta la propuesta anterior (se ha saltado una) if (prop != null && q > 1 && getProp(q - 1, props) == null) { //se ha saltado una propuesta addError(q, "Las propuestas deben completarse por niveles correlativos, te has saltado el nivel anterior."); //esto evita que pueda proponer } //mensaje de nivel if (q > 1 && modo != eModo.consenso) { ret += "<div style='float:clear;float:left;color:gray;font-size:10px;width:-webkit-fill-available;border-top:1px solid gray;margin:3px;text-align:right;'>"; ret += Tools.tr("Nivel en el arbol", g.idioma) + ": " + q; ret += "</div>"; } //if (editar && !consensoAlcanzado) // ret += "class='seccion'"; //else // ret += "class='seccion'"; //contenido de la propuesta ret += "<div class='seccion'>"; ret += toHTMLContenido(q, prop, g, email, 500); ret += "</div>"; //comentarios if (modo != eModo.prevista && modo != eModo.consenso && prop != null && !prop.esPrevista() && !consensoAlcanzado) { //se puede comentar ret += "<div id='comentarios" + prop.nodoID + "' style='vertical-align:top;' class='comentarios'>"; ret += toHTMLComentarios(q, prop, g, email, 326, !consensoAlcanzado); ret += "</div>"; } } //botones de poantalla o firma de consenso ret += "<br>"; ret += "<br>"; if (modo == eModo.consenso) { //firma ret += firmaConsenso; ret += "</body>"; firmaConsenso = ""; //por las dudas } else if (modo == eModo.editar) { //modo muestra if (consensoAlcanzado) { ret += "<div class='mensaje' style='clear:left;float:left;width:100%'><b>" + Tools.tr("Consenso alcanzado", g.idioma) + "</b></div><br>"; } ret += "<input type='button' style='clear:left;float:left;' class='btn' value='" + Tools.tr("Cerrar", g.idioma) + "' onclick='doCerrarDocumento();' />"; if (tieneFlores && !consensoAlcanzado && editar) { ret += "<input type='button' style='float:left;' class='btn' value='" + Tools.tr("Prevista de propuesta", g.idioma) + "' title='" + Tools.tr("Enseña vista previa antes de proponer", g.idioma) + "' onclick='doPrevista();' />"; } } else if (modo == eModo.prevista) { ret += "<input type='button' style='clear:left;float:left;' class='btn' value='" + Tools.tr("Cancelar", g.idioma) + "' onclick='doCerrarDocumento();' />"; ret += "<input type='button' style='float:left;' class='btn' value='" + Tools.tr("Revisar propuesta", g.idioma) + "' title='" + Tools.tr("Permite corregir errores", g.idioma) + "' onclick='doRevisar();' />"; if (!hayError() && props.Count > 0 && props[props.Count - 1].esPrevista()) { //permito crear //tiene que haber almenos una propuesa nueva para poder crear algo ret += "<input type='button' style='float:left;' class='btn' value='" + Tools.tr("Crear propuesta", g.idioma) + "' title='" + Tools.tr("Crea la propuesta", g.idioma) + "' onclick='doProponer();' />"; } } else if (modo == eModo.revisar) { //permito prevista ret += "<input type='button' style='clear:left;float:left;' class='btn' value='" + Tools.tr("Cancelar", g.idioma) + "' onclick='doCerrarDocumento();' />"; if (tieneFlores && !consensoAlcanzado) { ret += "<input type='button' style='float:left;' class='btn' value='" + Tools.tr("Prevista de propuesta", g.idioma) + "' title='" + Tools.tr("Enseña vista previa antes de proponer", g.idioma) + "' onclick='doPrevista();' />"; } } //ret += "<a id='btnDownload' href='' target='_blank'><font size='1'>Descargar esta versión</font></a>"; return(ret); }