diff options
author | bai | 2019-03-29 02:14:43 +0000 |
---|---|---|
committer | bai | 2019-03-29 02:14:43 +0000 |
commit | 95dfe14528663923ca2a88ec928f1d8d9df2402b (patch) | |
tree | 5bc88d1466957f1aa39043b056bde5c439648022 /cgi/templates/manage | |
download | weabot-95dfe14528663923ca2a88ec928f1d8d9df2402b.tar.gz weabot-95dfe14528663923ca2a88ec928f1d8d9df2402b.tar.xz weabot-95dfe14528663923ca2a88ec928f1d8d9df2402b.zip |
Init
Diffstat (limited to 'cgi/templates/manage')
23 files changed, 1121 insertions, 0 deletions
diff --git a/cgi/templates/manage/addboard.html b/cgi/templates/manage/addboard.html new file mode 100644 index 0000000..71b3c31 --- /dev/null +++ b/cgi/templates/manage/addboard.html @@ -0,0 +1,21 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> +<div class="replymode">Nuevo board</div> +<form action="#{cgi_url}manage/addboard" method="post"> + <table> + <tr> + <td class="postblock">Directorio</td> + <td><input type="text" name="dir" maxlength="16" style="width:100%;" /></td> + </tr> + <tr> + <td class="postblock">Nombre</td> + <td><input type="text" name="name" maxlength="64" style="width:100%;" /></td> + </tr> + <tr> + <td colspan="2"><input type="submit" name="submit" style="width:100%;" value="Agregar board" /></td> + </table> +</form> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/bans.html b/cgi/templates/manage/bans.html new file mode 100644 index 0000000..81e0f71 --- /dev/null +++ b/cgi/templates/manage/bans.html @@ -0,0 +1,92 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<?py from tenjin.helpers.html import * ?> +<center> +<div class="replymode">Bans</div> +<?py if mode == 0: ?> +<form action="#{cgi_url}manage/ban/" name="banform" method="post"> +<table> +<tr> + <td class="postblock">Dirección IP</td> + <td><input type="text" name="ip" size="20" /></td> +</tr> +<tr><td colspan="2"><input type="submit" value="Ir a formulario de ban" style="width:100%;" /></td></tr> +</table> +</form> +<hr /> +<table class="managertable"> +<tr> + <th>Dirección IP</th> + <th>Máscara de red</th> + <th>Boards</th> + <th>Agregado</th> + <th>Expira</th> + <th>Ciego</th> + <th>Puesto por</th> + <th>Razón</th> + <th>Nota</th> + <th>Acción</th> +</tr> +<?py for ban in bans: ?> +<tr> + <td>${ban['ip']}</td> + <td>${ban['netmask']}</td> + <td>${ban['boards']}</td> + <td>${ban['added']}</td> + <td>${ban['until']}</td> + <td>${ban['blind']}</td> + <td>${ban['staff']}</td> + <td>${ban['reason']}</td> + <td>${ban['note']}</td> + <td> + [<a href="#{cgi_url}manage/ipshow?ip=#{ban['ip']}">Ver posts</a>] + [<a href="#{cgi_url}manage/ban?ip=#{ban['ip']}&edit=#{ban['id']}">Editar</a>] + [<a href="#{cgi_url}manage/bans/delete/#{ban['id']}">Eliminar</a>] + </td> +</tr> +<?py #endfor ?> +</table> +<?py elif mode == 1: ?> +<form action="#{cgi_url}manage/ban" name="banform" method="post"> +<table> + <tr><td class="postblock">IP</td><td><input type="text" name="ip" value="${ip}" size="20" style="width:100%;" /></td></tr> + <tr><td class="postblock">Máscara de red</td><td><input type="text" name="netmask" value="${startvalues['netmask']}" style="width:100%;" /></td></tr> + <tr> + <td class="postblock">Board(s)</td> + <td> + <input type="checkbox" name="board_all" id="b_all" value="1"#{checked(startvalues['where'] == '')} /><label for="b_all" style="font-weight:bold">Todos los boards</label><hr /> + <?py for board in boards: ?> + <input type="checkbox" name="board_#{board['dir']}" id="b#{board['dir']}" value="1"#{checked(board['dir'] in startvalues['where'])} /><label for="b#{board['dir']}">${board['name']}</label><br /> + <?py #endfor ?> + <?py if edit_id > 0: ?> + <input type="hidden" name="edit" value="${edit_id}" /> + <?py #endif ?> + </td> + </tr> + <tr><td class="postblock">Mensaje</td><td><textarea name="reason" style="width:100%;">${startvalues['reason']}</textarea></td></tr> + <tr><td class="postblock">Nota para staff</td><td><input type="text" name="note" value="${startvalues['note']}" style="width:100%;" /></td></tr> + <tr><td class="postblock">Ciego</td><td><input type="checkbox" name="blind" id="blind" value="1"#{checked(startvalues['blind'] == '1')} /><label for="blind"></label></td></tr> + <tr><td class="postblock">Expira en <span style="font-weight:normal;">(segundos)</span></td><td><input type="text" id="seconds" name="seconds" value="#{startvalues['seconds']}" style="width:100%;" /> + <br /> + <div id="timelist"> + <a href="#" data-secs="0">Nunca</a> + <a href="#" data-secs="3600">1h</a> + <a href="#" data-secs="21600">6h</a> + <a href="#" data-secs="43200">12h</a> + <a href="#" data-secs="86400">1d</a> + <a href="#" data-secs="259200">3d</a> + <a href="#" data-secs="604800">1w</a> + <a href="#" data-secs="2592000">30d</a> + <a href="#" data-secs="31536000">1y</a> + </div> + </td> + </tr> + <tr> + <td colspan="2"><input type="submit" value="Colocar ban" style="width:100%;" /></td> + </tr> +</table> +</form> +<?py #endif ?> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/boardoptions.html b/cgi/templates/manage/boardoptions.html new file mode 100644 index 0000000..436b036 --- /dev/null +++ b/cgi/templates/manage/boardoptions.html @@ -0,0 +1,195 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<?py from tenjin.helpers.html import * ?> +<center> +<div class="replymode">Opciones de Board</div> +<?py if mode == 0: ?> +<table class="managertable"> + <tr><th colspan="2">Sección</th><th>Accion</th></tr> + <?py for board in boards: ?> + <tr><td>/#{board['dir']}/</td><td>#{board['name']}</td><td>[<a href="#{cgi_url}manage/board/#{board['dir']}">Configurar</a>]</td></tr> + <?py #endfor ?> + </table> +<?py elif mode == 1: ?> +<form action="#{cgi_url}manage/board/${boardopts['dir']}" method="post"> +<table> +<tr> + <td class="postblock">ID</td> + <td><input type="text" name="name" value="${boardopts['id']}" maxlength="16" style="width:100%;" disabled="disabled" /></td> +</tr> +<tr> + <td class="postblock">Directorio</td> + <td><input type="text" name="name" value="${boardopts['dir']}" maxlength="32" style="width:100%;" disabled="disabled" /></td> +</tr> +<tr> + <td class="postblock">Nombre</td> + <td><input type="text" name="name" value="${boardopts['name']}" maxlength="64" style="width:100%;" /></td> +</tr> +<tr> +<td class="postblock">Nombre largo</td> +<td><input type="text" name="longname" size="50" value="${boardopts['longname']}" maxlength="128" style="width:100%;" /></td> +</tr> +<tr> +<td class="postblock">Sub-nombre</td> +<td><input type="text" name="subname" value="${boardopts['subname']}" maxlength="3" style="width:100%;" /></td> +</tr> +<tr> +<td class="postblock">Tipo</td> +<td> + <select style="width:100%;" name="type"> + <option value="0">Imageboard</option> + <option value="1"#{selected(boardopts['board_type'] == '1')}>Textboard</option> + </select> +</td> +</tr> +<tr> +<td class="postblock">Descripción / Reglas</td> +<td> + <textarea id="brd_desc" name="postarea_desc" rows="10" cols="50" style="width:100%;">${boardopts['postarea_desc']}</textarea> + <div id="prev_desc" style="border:1px dotted gray;display:none;padding:4px;width:100%;" contenteditable="true"></div> +</td> +</tr> +<tr> +<td class="postblock">Caja extra</td> +<td><textarea name="postarea_extra" rows="5" cols="50" style="width:100%;">${boardopts['postarea_extra']}</textarea></td> +</tr> +<tr> +<td class="postblock">Forzar CSS <span style="font-weight:normal;">("" = default)</span></td> +<td><input type="text" name="force_css" size="50" value="#{boardopts['force_css']}" maxlength="255" style="width:100%;" /></td> +</tr> +<tr> +<td class="postblock">Nombre por defecto</td> +<td><input type="text" name="anonymous" size="50" maxlength="128" value="${boardopts['anonymous']}" style="width:100%;" /></td> +</tr> +<tr> +<td class="postblock">Título por defecto</td> +<td><input type="text" name="subject" size="50" maxlength="64" value="${boardopts['subject']}" style="width:100%;" /></td> +</tr> +<tr> +<td class="postblock">Mensaje por defecto</td> +<td><input type="text" name="message" size="50" maxlength="128" value="${boardopts['message']}" style="width:100%;" /></td> +</tr> +<tr> +<td class="postblock">ID</td> +<td> + <select name="useid" style="width:100%;"> + <option value="0">Desactivado</option> + <option value="1"#{selected(boardopts['useid'] == '1')}>Activado</option> + <option value="2"#{selected(boardopts['useid'] == '2')}>Activado siempre</option> + <option value="3"#{selected(boardopts['useid'] == '3')}>Activado siempre, detallado</option> + </select> +</td> +</tr> +<tr> +<td class="postblock">Slip</td> +<td> + <select name="slip" style="width:100%;"> + <option value="0">Desactivado</option> + <option value="1"#{selected(boardopts['slip'] == '1')}>Activado</option> + <option value="2"#{selected(boardopts['slip'] == '2')}>Sólo dominio</option> + <option value="3"#{selected(boardopts['slip'] == '3')}>Todo</option> + </select> +</td> +</tr> +<tr> +<td class="postblock">Código de país</td> +<td> + <select name="countrycode" style="width:100%;"> + <option value="0">Desactivado</option> + <option value="1"#{selected(boardopts['countrycode'] == '1')}>Activado</option> + </select> +</td> +</tr> +<tr> +<td class="postblock">Desactivar nombre</td> +<td><input type="checkbox" name="disable_name" id="noname" value="1"#{checked(boardopts['disable_name'] == '1')} /><label for="noname"></label></td> +</tr> +<tr> +<td class="postblock">Desactivar asunto</td> +<td><input type="checkbox" name="disable_subject" id="nosub" value="1"#{checked(boardopts['disable_subject'] == '1')} /><label for="nosub"></label></td> +</tr> +<tr> +<td class="postblock">Papelera de reciclaje</td> +<td><input type="checkbox" name="recyclebin" id="bin" value="1"#{checked(boardopts['recyclebin'] == '1')} /><label for="bin"></label></td> +</tr> +<tr> +<td class="postblock">Cerrado</td> +<td><input type="checkbox" name="locked" id="locked" value="1"#{checked(boardopts['locked'] == '1')} /><label for="locked"></label></td> +</tr> +<tr> +<td class="postblock">Secreto</td> +<td><input type="checkbox" name="secret" id="secret" value="1"#{checked(boardopts['secret'] == '1')} /><label for="secret"></label></td> +</tr> +<tr> +<td class="postblock">Permitir spoilers</td> +<td><input type="checkbox" name="allow_spoilers" id="spoil" value="1"#{checked(boardopts['allow_spoilers'] == '1')} /><label for="spoil"></label></td> +</tr> +<tr> +<td class="postblock">Permitir oekaki</td> +<td><input type="checkbox" name="allow_oekaki" id="oek" value="1"#{checked(boardopts['allow_oekaki'] == '1')} /><label for="oek"></label></td> +</tr> +<tr> +<td class="postblock">Permitir crear hilos sin imagen</td> +<td><input type="checkbox" name="allow_noimage" id="noimgallow" value="1"#{checked(boardopts['allow_noimage'] == '1')} /><label for="noimgallow"></label></td> +</tr> +<tr> +<td class="postblock">Permitir subida</td> +<td><input type="checkbox" name="allow_images" id="img" value="1"#{checked(boardopts['allow_images'] == '1')} /><label for="img">Al crear un hilo</label><br /><input type="checkbox" name="allow_image_replies" id="imgres" value="1"#{checked(boardopts['allow_image_replies'] == '1')} /><label for="imgres">Al responder</label></td> +</tr> +<tr> +<td class="postblock">Tipos de archivo</td> +<td> + <?py for filetype in filetypes: ?> + <input type="checkbox" name="filetype#{filetype['ext']}" id="#{filetype['ext']}" value="1"#{checked(filetype['ext'] in supported_filetypes)} /><label for="#{filetype['ext']}">${filetype['ext'].upper()}</label><br /> + <?py #endfor ?> +</td> +</tr> +<tr> +<td class="postblock">Tamaño máximo <span style="font-weight:normal;">(KB)</span></td> +<td><input type="text" name="maxsize" value="#{boardopts['maxsize']}" maxlength="5" size="11" /></td> +</tr> +<tr> +<td class="postblock">Dimensión de miniatura <span style="font-weight:normal;">(px)</span></td> +<td><input type="text" name="thumb_px" value="#{boardopts['thumb_px']}" maxlength="3" size="11" /></td> +</tr> +<tr> +<td class="postblock">Hilos en página frontal</td> +<td><input type="text" name="numthreads" value="#{boardopts['numthreads']}" maxlength="2" size="11" /></td> +</tr> +<tr> +<td class="postblock">Respuestas a mostrar</td> +<td><input type="text" name="numcont" value="#{boardopts['numcont']}" maxlength="2" size="11" /></td> +</tr> +<tr> +<td class="postblock">Máximo de líneas <span style="font-weight:normal;">(frontal)</span></td> +<td><input type="text" name="numline" value="#{boardopts['numline']}" maxlength="3" size="11" /></td> +</tr> +<tr> +<td class="postblock">Edad máxima de un hilo</td> +<td><input type="text" name="maxage" value="#{boardopts['maxage']}" maxlength="3" size="11" /> (días; 0 = desactivar)</td> +</tr> +<tr> +<td class="postblock">Inactividad máxima de un hilo</td> +<td><input type="text" name="maxinactive" value="#{boardopts['maxinactive']}" maxlength="3" size="11" /> (días; 0 = desactivar)</td> +</tr> +<tr> +<td class="postblock">Archivar hilos</td> +<td><input type="checkbox" name="archive" id="arch" value="1"#{checked(boardopts['archive'] == '1')} /><label for="arch"></label></td> +</tr> +<tr> +<td class="postblock">Espera para crear nuevo hilo</td> +<td><input type="text" name="threadsecs" value="#{boardopts['threadsecs']}" maxlength="4" size="11" /> (segundos)</td> +</tr> +<tr> +<td class="postblock">Espera entre respuestas</td> +<td><input type="text" name="postsecs" value="#{boardopts['postsecs']}" maxlength="3" size="11" /> (segundos)</td> +</tr> +</table> +<br /> +<hr /> +<input type="submit" value="Guardar cambios" /> +</form> +<?py #endif ?> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/changepassword.html b/cgi/templates/manage/changepassword.html new file mode 100644 index 0000000..977c772 --- /dev/null +++ b/cgi/templates/manage/changepassword.html @@ -0,0 +1,24 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> +<div class="replymode">Cambiar contraseña</div> +<form action="#{cgi_url}manage/changepassword" method="post"> +<table> + <tr> + <td class="postblock">Clave actual</td> + <td><input type="password" name="oldpassword" style="width:100%;" /></td> + </tr> + <tr> + <td class="postblock">Nueva clave</td> + <td><input type="password" name="newpassword" style="width:100%;" /></td> + </tr> + <tr> + <td class="postblock">Confirmar nueva clave</td> + <td><input type="password" name="newpassword2" style="width:100%;" /></td> + </tr> + <tr><td colspan="2"><input type="submit" style="width:100%;" value="Cambiar" /></td></tr> +</table> +</form> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?> diff --git a/cgi/templates/manage/delete.html b/cgi/templates/manage/delete.html new file mode 100644 index 0000000..78c1c5e --- /dev/null +++ b/cgi/templates/manage/delete.html @@ -0,0 +1,23 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> +<div class="replymode">Eliminar Post</div> +<form action="#{cgi_url}manage/delete_confirmed/#{curboard}/#{postid}" method="get"> +<?py if do_ban: ?> + <input type="hidden" name="ban" value="true" /> +<?py #endif ?> +<p> + <b>Post #${postid} de /${curboard}/</b><br /> + <input id="a" type="checkbox" name="imageonly" value="true" /><label for="a">Eliminar sólo archivo</label><br /> + <input id="b" type="checkbox" name="perma" value="true" /><label for="b" style="font-weight:bold">Eliminar permanentemente</label><br /> + <br /> + <i>Nota: Por favor evitar eliminar <b>permanentemente</b> el post al menos que sea estrictamente necesario. + <br />Al eliminar permanentemente un post no queda en papelera y se rompen + las referencias que se pueden haber hecho hacia él, especialmente en los BBS.</i> + <br /><br /> + <input type="submit" value="Eliminar" /> +</p> +</form> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?> diff --git a/cgi/templates/manage/filters.html b/cgi/templates/manage/filters.html new file mode 100644 index 0000000..188a741 --- /dev/null +++ b/cgi/templates/manage/filters.html @@ -0,0 +1,119 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<?py from tenjin.helpers.html import * ?> +<center> +<div class="replymode">Filtros</div> +<?py if mode == 0: ?> +<table class="managertable"> + <tr> + <th>ID</th> + <th>Boards</th> + <th>Tipo</th> + <th>Acción</th> + <th>Mensaje</th> + <th>Modificado</th> + <th>Por</th> + <th>Acción</th> + </tr> + <?py for filter in filters: ?> + <tr> + <td style="text-align:center">#{filter['id']}</td> + <td style="text-align:center">${filter['boards']}</td> + <td>#{filter['type_formatted']}</td> + <td>#{filter['action_formatted']}</td> + <td>${filter['reason']}</td> + <td style="text-align:center">${filter['added']}</td> + <td style="text-align:center">${filter['staff']}</td> + <td style="text-align:center">[<a href="#{cgi_url}manage/filters/add?edit=#{filter['id']}">Editar</a>]<br /> + [<a href="#{cgi_url}manage/filters/delete/#{filter['id']}">Eliminar</a>]</td> + </tr> + <?py #endfor ?> + <tr><td colspan="9" style="text-align:center"> + <form action="#{cgi_url}manage/filters/add" method="get"> + <input type="submit" value="Agregar filtro" /> + </form></td> + </tr> +</table> +<?py elif mode == 1: ?> +<form name="banform" method="post"> +<table> + <tr><th colspan="3" class="postblock">Tipo de filtro</th></tr> + <tr> + <td class="postblock"><input type="radio" name="type" id="type1" value="0"#{checked(startvalues['type'] == '0')} /><label for="type1">Palabra</label></td> + <td style="text-align:right">Regex:</td> + <td><input type="text" name="word" value="${startvalues['word']}" /></td> + </tr> + <tr> + <td rowspan="2" class="postblock"><input type="radio" name="type" id="type2" value="1"#{checked(startvalues['type'] == '1')} /><label for="type2">Nombre/Tripcode</label></td> + <td style="text-align:right">Nombre:</td> + <td><input type="text" name="name" value="${startvalues['name']}" /> (regex)</td> + </tr> + <tr> + <td style="text-align:right">Tripcode:</td> + <td><input type="text" name="trip" value="${startvalues['trip']}" /> (incluir separador)</td> + </tr> +</table> +<br /> +<div style="text-align:left;display:inline-block;"> + <div class="postblock" style="display:block;text-align:center;margin-bottom:0.5em;">Aplicar a</div> + <div style="padding:0 10px"> + <input type="checkbox" name="board_all" id="board_all" value="1"#{checked(startvalues['where'] == '')} /><label for="board_all" style="font-weight:bold">Todos los boards</label> + <hr /> + <?py for board in boards: ?> + <input type="checkbox" name="board_#{board['dir']}" id="board_#{board['dir']}" value="1"#{checked(board['dir'] in startvalues['where'])} /><label for="board_#{board['dir']}">${board['name']} <span style="opacity:0.5">(/#{board['dir']}/)</span></label><br /> + <?py #endfor ?> + </div> +</div> +<br /><br /> +<table> + <tr> + <th colspan="3" class="postblock">Acción</th> + </tr> + <tr> + <td class="postblock"><input type="radio" name="action" id="act0" value="0"#{checked(startvalues['action'] == '0')} /><label for="act0">Abortar post</label></td> + <td colspan="2"></td> + </tr> + <tr> + <td class="postblock"><input type="radio" name="action" id="act1" value="1"#{checked(startvalues['action'] == '1')} /><label for="act1">Reemplazar</label></td> + <td colspan="2"><input type="text" name="changeto" value="#{startvalues['changeto']}" size="40" /></td> + </tr> + <tr> + <td rowspan="2" class="postblock"><input type="radio" name="action" id="act2" value="2"#{checked(startvalues['action'] == '2')} /><label for="act2">Autoban</label></td> + <td style="text-align:right">Expira en:</td> + <td><input type="text" name="seconds" id="seconds" size="6" value="#{startvalues['seconds']}" /> (segundos)<div style="float:right"><input type="checkbox" name="blind" id="blind" value="1"#{checked(startvalues['blind'] == '1')} /><label for="blind">Ban ciego</label></div></td> + </tr> + <tr> + <td style="text-align:right">Preset:</td> + <td id="timelist"> + <a href="#" data-secs="0">Nunca</a> + <a href="#" data-secs="3600">1h</a> + <a href="#" data-secs="21600">6h</a> + <a href="#" data-secs="43200">12h</a> + <a href="#" data-secs="86400">1d</a> + <a href="#" data-secs="259200">3d</a> + <a href="#" data-secs="604800">1w</a> + <a href="#" data-secs="2592000">30d</a> + <a href="#" data-secs="31536000">1y</a> + </td> + </tr> + <tr> + <td rowspan="2" class="postblock"><input type="radio" name="action" id="act3" value="3"#{checked(startvalues['action'] == '3')} /><label for="act3">Redireccionar</label></td> + <td colspan="2"><input type="text" name="redirect_url" value="#{startvalues['redirect_url']}" size="40" /></td> + </tr> + <tr> + <td style="text-align:right">Tardar:</td> + <td><input type="text" name="redirect_time" size="6" value="#{startvalues['redirect_time']}" /> (segundos)</td> + </tr> +</table> +<br /> +<table> + <tr><th class="postblock" style="padding:2px">Mensaje a mostrar</th></tr> + <tr><td><input type="text" size="50" name="reason" value="#{startvalues['reason']}" /></td></tr> +</table> +<br /> +<input type="submit" name="add" value="#{submit}" /> +</form> +<?py #endif ?> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?> diff --git a/cgi/templates/manage/ipdelete.html b/cgi/templates/manage/ipdelete.html new file mode 100644 index 0000000..71c043a --- /dev/null +++ b/cgi/templates/manage/ipdelete.html @@ -0,0 +1,24 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> + <div class="replymode">Eliminar por IP</div> + <form action="#{cgi_url}manage/ipdelete" name="ipdeleteform" method="post"> + <table> + <tr> + <td class="postblock">Board(s)</td> + <td> + <input type="checkbox" name="board_all" id="all" value="1" /><label for="all" style="font-weight:bold">Todos los boards</label><hr /> + <?py for board in boards: ?> + <input type="checkbox" name="board_#{board['dir']}" id="#{board['dir']}" value="1" /><label for="#{board['dir']}">#{board['name']} <span style="opacity:0.5">(/#{board['dir']}/)</span></label><br /> + <?py #endfor ?> + </td> + </tr> + <tr> + <td class="postblock">Dirección IP</td> + <td><input type="text" name="ip" style="width:100%;" /></td> + </tr> + <tr><td colspan="2"><input type="submit" style="width:100%;" value="Eliminar posts" /></td></tr> + </table> + </form> +</center><hr /> +<?py include('templates/base_bottom.html') ?> diff --git a/cgi/templates/manage/ipshow.html b/cgi/templates/manage/ipshow.html new file mode 100644 index 0000000..6937a0e --- /dev/null +++ b/cgi/templates/manage/ipshow.html @@ -0,0 +1,73 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> + <div class="replymode">Mostrar por IP</div> + <?py if mode == 0: ?> + <form action="#{cgi_url}manage/ipshow" method="post"> + <table> + <tr><td class="postblock">Dirección IP</td><td><input type="text" name="ip" /></td></tr> + <tr><td colspan="2"><input type="submit" style="width:100%;" value="Mostrar posts" /></td></tr> + </table> + </form> + <?py else: ?> + <style>td img{max-width:150px;height:auto;}td.z{padding:0}</style> + <div class="logo" style="margin:0;">Actividad IP #{ip} (#{len(posts)})</div> + <center> + Hostname: #{host if host else "Desconocido"} [#{country if country else "??"}]#{" (Nodo Tor)" if tor else ""}<br /> + <br /> + <form action="#{cgi_url}manage/ban/" name="banform" method="post"><input type="hidden" name="ip" value="${ip}" /><input type="submit" value="Ir a formulario de ban" /></form> + <hr /> + <?py if posts: ?> + <table class="managertable"> + <tr> + <th>Sección</th> + <th>Padre</th> + <th>ID</th> + <th>Fecha</th> + <th>Nombre</th> + <th>Asunto</th> + <th>Mensaje</th> + <th>Archivo</th> + <th>Acción</th> + </tr> + <?py for post in posts: ?> + <tr> + <td>#{post['dir']}</td> + <td>#{post['parentid']}</td> + <td>#{post['id']}</td> + <td class="date" data-unix="${post['timestamp']}">#{post['timestamp_formatted']}</td> + <?py if post['tripcode']: ?> + <td class="name"><b>#{post['name']}</b> #{post['tripcode']}</td> + <?py else: ?> + <td class="name"><b>#{post['name']}</b></td> + <?py #endif ?> + <td>#{post['subject']}</td> + <td>#{post['message']}</td> + <?py if post['file']: ?> + <td class="z"><img src="#{images_url}#{post['dir']}/thumb/#{post['thumb']}" width="#{post['thumb_width']}" height="#{post['thumb_height']}" /></td> + <?py else: ?> + <td></td> + <?py #endif ?> + <td> + <?py if post['IS_DELETED'] == '0': ?> + <a href="#{cgi_url}manage/delete/#{post['dir']}/#{post['id']}">Eliminar</a> + <?py elif post['IS_DELETED'] == '1': ?> + <a href="#{cgi_url}manage/recyclebin/0/restore/#{post['dir']}/#{post['id']}">Rec</a> + <abbr title="Eliminado por usuario">[1]</abbr> + <?py else: ?> + <a href="#{cgi_url}manage/recyclebin/0/restore/#{post['dir']}/#{post['id']}">Rec</a> + <abbr title="Eliminado por staff">[2]</abbr> + <?py #endif ?> + </td> + </tr> + <?py #endfor ?> + </table> + <hr /> + <?py else: ?> + <b>Error:</b> No hay posts<br /><br /> + <?py #endif ?> + [<a href="#{cgi_url}manage/ipshow">Volver al panel</a>] + <?py #endif ?> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/lockboard.html b/cgi/templates/manage/lockboard.html new file mode 100644 index 0000000..cebf061 --- /dev/null +++ b/cgi/templates/manage/lockboard.html @@ -0,0 +1,20 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> +<div class="replymode">Cerrar o abrir board</div> +<table class="managertable"> + <tr><th colspan="2">Sección</th><th>Acción</th></tr> + <?py for board in boards: ?> + <tr> + <td>/#{board['dir']}/</td><td>#{board['name']}</td> + <?py if board['locked'] == '0': ?> + <td style="text-align:center;">[<a href="#{cgi_url}manage/boardlock/#{board['dir']}">Cerrar</a>]</td> + <?py elif board['locked'] == '1': ?> + <td style="text-align:center;">[<a href="#{cgi_url}manage/boardlock/#{board['dir']}">Abrir</a>]</td> + <?py #endif ?> + </tr> + <?py #endfor ?> +</table> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?> diff --git a/cgi/templates/manage/login.html b/cgi/templates/manage/login.html new file mode 100644 index 0000000..7ce47a1 --- /dev/null +++ b/cgi/templates/manage/login.html @@ -0,0 +1,21 @@ +<?py include('templates/base_top.html') ?> +<center> + #{page} + <form action="#{cgi_url}manage" method="post"> + <table> + <tr> + <td class="postblock">Usuario</td> + <td><input type="text" name="username" /></td> + </tr> + <tr> + <td class="postblock">Contraseña</td> + <td><input type="password" name="password" /></td> + </tr> + <tr> + <td colspan="2"><input id="submit" type="submit" name="submit" style="width:100%;" value="Entrar" /></td> + </tr> + </table> + </form> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/logs.html b/cgi/templates/manage/logs.html new file mode 100644 index 0000000..e11780a --- /dev/null +++ b/cgi/templates/manage/logs.html @@ -0,0 +1,17 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> +<div class="replymode">Registro</div> +<table class="managertable"> + <tr><th>Fecha</th><th>Staff</th><th>Acción</th></tr> +<?py for log in logs: ?> + <tr> + <td class="date" data-unix="${log['timestamp']}" style="white-space:nowrap;">${log['timestamp_formatted']}</td> + <td>${log['staff']}</td> + <td>${log['action']}</td> + </tr> +<?py #endfor ?> +</table> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/manage.html b/cgi/templates/manage/manage.html new file mode 100644 index 0000000..06b1737 --- /dev/null +++ b/cgi/templates/manage/manage.html @@ -0,0 +1,22 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> + <div style="margin:0.5em 0;"><strong>BANDEJA DE ENTRADA</strong> + <br /> + Denuncias: + <?py if int(reports) > 0: ?> + <a href="#{cgi_url}manage/reports" style="color:red;font-weight:bold;">#{reports}</a> + <?py else: ?> + 0 + <?py #endif ?></div> + <hr /> + <strong>NOTICIAS DEL STAFF</strong> +</center> +<dl style="margin:0 2.5%"> +<?py for post in posts: ?> + <dt><strong>#{post['title'] if post['title'] else "Sin asunto"}</strong><br />#{post['id']} : <b class="name">${post['name']}</b> : <span class="date" data-unix="${post['timestamp']}"}>${post['timestamp_formatted']}</span></dt> + <dd style="margin-bottom:1em;">#{post['message']}</dd> +<?py #endfor ?> +</dl> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/menu.html b/cgi/templates/manage/menu.html new file mode 100644 index 0000000..d6ffd5e --- /dev/null +++ b/cgi/templates/manage/menu.html @@ -0,0 +1,30 @@ +<style>#adminmenu {text-align:center;}#adminmenu table {display:inline-block;font-size:10pt;margin-top:2px;text-align:left;} +#adminmenu a {font-weight:bold;}label {vertical-align:top;}dd p {margin:0;}</style> +<script type="text/javascript" src="/static/js/manage.js"></script> +<input type="hidden" name="board" value="" /> +<?py if int(rights) < 4: ?> +<div id="adminmenu">¡Bienvenido, <b><acronym title="Cuenta creada el #{added}">#{username}</acronym></b>! ¡Eres +<?py if rights == '0': ?><b>Accionista</b> +<?py elif rights == '1': ?><b>Accionista</b> +<?py elif rights == '2': ?><span class="developer">Developer</span> +<?py elif rights == '3': ?><span class="moderator">Moderador</span> +<?py #endif ?> de #{site_title}!<br /> +<center> +<table class="reply"> +<tr><td>Principal:</td> +<td>- <a href="#{cgi_url}manage">Inicio</a> - <a href="#{cgi_url}manage/changepassword">Cambiar contraseña</a> - <a href="#{cgi_url}manage/newschannel">News Channel</a> - <a href="//webmail.bienvenidoainternet.org">Correo</a> - <a href="#{cgi_url}manage/logout">Cerrar sesión</a> -</td></tr> +<tr><td>Posts:</td> +<td>- <a href="#{cgi_url}manage/mod">Modbrowse</a> - <a href="#{cgi_url}manage/ipshow">Ver por IP</a> - <a href="#{cgi_url}manage/recyclebin">Papelera de reciclaje</a> - <a href="#{cgi_url}manage/recent_images">Imágenes recientes</a> -</td></tr> +<tr><td>Moderación:</td> +<td>- <a href="#{cgi_url}manage/reports">Denuncias</a> - <a href="#{cgi_url}manage/ipdelete">Eliminar por IP</a> - <a href="#{cgi_url}manage/bans">Lista de bans</a> - <a href="#{cgi_url}manage/move">Mover hilo</a> - <a href="#{cgi_url}manage/filters">Filtros</a> - <a href="#{cgi_url}manage/quotes">Frases</a> -</td></tr> +<?py if int(rights) < 3: ?> +<tr><td>Administración:</td> +<td>- <a href="#{cgi_url}manage/rebuild">Reconstruir</a> - <a href="#{cgi_url}manage/news?type=1">Noticias</a> - <a href="#{cgi_url}manage/news?type=2">Twitter</a> - <a href="#{cgi_url}manage/board">Opciones de board</a> - <a href="#{cgi_url}manage/addboard">Agregar board</a> - <a href="#{cgi_url}manage/lockboard">Cerrar board</a> -</td></tr> +<?py if int(rights) in [0,2]: ?> +<tr><td>Staff:</td> +<td>- <a href="#{cgi_url}manage/staff">Miembros</a> - <a href="#{cgi_url}manage/logs">Registro de acciones</a> -</td></tr> +<?py #endif ?> +<?py #endif ?> +</table></center></div> +<hr /> +<?py #endif ?>
\ No newline at end of file diff --git a/cgi/templates/manage/message.html b/cgi/templates/manage/message.html new file mode 100644 index 0000000..6c53ecc --- /dev/null +++ b/cgi/templates/manage/message.html @@ -0,0 +1,8 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> + <div class="replymode">#{title if title else "Mensaje"}</div> + <p>#{message}</p> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/mod.html b/cgi/templates/manage/mod.html new file mode 100644 index 0000000..ddc688f --- /dev/null +++ b/cgi/templates/manage/mod.html @@ -0,0 +1,96 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> +<div class="replymode">Modbrowse</div> +<?py if mode == 1: ?> +<table class="managertable"> + <tr><th colspan="2">Sección</th><th>Acción</th></tr> + <?py for board in boards: ?> + <tr><td>/#{board['dir']}/</td><td>#{board['name']}</td><td>[<a href="#{cgi_url}manage/mod/#{board['dir']}">Navegar</a>]</td></tr> + <?py #endfor ?> +</table> +<?py elif mode == 2: ?> +<table class="managertable"> +<tr> + <th>#</th> + <th>ID</th> + <th style="width:20%;">Asunto</th> + <th>Fecha</th> + <th style="width:80%;">Mensaje</th> + <th>Resp.</th> + <th>Acciones</th> +</tr> +<?py i = 1 ?> +<?py for thread in threads: ?> +<tr> + <td>#{i}</td> + <td>#{thread['id']}</td> + <td><a href="?thread=#{thread['id']}"><b>#{thread['subject']}</b></a></td> + <td class="date" data-unix="${thread['timestamp']}">#{thread['timestamp_formatted'][:21]}</td> + <td>${thread['message'][:200]}</td> + <td>#{thread['length']}</td> + <td style="white-space:nowrap;"> + <a href="#{cgi_url}manage/lock/#{dir}/#{thread['id']}">L#{"-" if thread['locked'] == "1" else "+"}</a> + <a href="#{cgi_url}manage/permasage/#{dir}/#{thread['id']}">PS#{"-" if thread['locked'] == "2" else "+"}</a> + <a href="#{cgi_url}manage/move/#{dir}/#{thread['id']}">M</a> + <a href="#{cgi_url}manage/delete/#{dir}/#{thread['id']}">D</a> + <a href="#{cgi_url}manage/delete/#{dir}/#{thread['id']}?ban=true">&</a> + <a href="#{cgi_url}manage/ban/#{dir}/#{thread['id']}">B</a> + </td> +</tr> +<?py i += 1 ?> +<?py #endfor ?> +</table> +<hr /> +[<a href="#{cgi_url}manage/mod" class="return">Volver</a>] +<?py elif mode == 3: ?> +<table class="managertable"> +<tr><th colspan="8" style="font-size:16pt;">Hilo: ${posts[0]['subject']} (#{posts[0]['length']})</th></tr> +<tr><td colspan="8" style="font-size:14pt;text-align:center;"><a href="#{cgi_url}manage/lock/#{dir}/#{posts[0]['id']}">#{"Abrir hilo" if posts[0]['locked'] == "1" else "Cerrar hilo"}</a> / +<a href="#{cgi_url}manage/permasage/#{dir}/#{posts[0]['id']}">#{"Quitar permasage" if posts[0]['locked'] == "2" else "Permasage"}</a> / +<a href="#{cgi_url}manage/move/#{dir}/#{posts[0]['id']}">Mover hilo</a></td></tr> +<tr> + <th>#</th> + <th>ID</th> + <th>Fecha</th> + <th>Nombre</th> + <th>Mensaje</th> + <th>Archivo</th> + <th>IP</th> + <th>Acción</th> +</tr> +<?py i = 1 ?> +<?py for p in posts: ?> +<tr> + <td>#{i}</td> + <td>#{p['id']}</td> + <td class="date" data-unix="${p['timestamp']}">${p['timestamp_formatted']}</td> + <td><span class="postername">${p['name']}</span></td> + <td>${p['message']}</td> + <td> + <?py if p['file']: ?><a href="/${dir}/src/#{p['file']}" target="_blank"><img src="/${dir}/mobile/${p['thumb']}" /></a><?py #endif ?> + </td> + <td><a href="#{cgi_url}manage/ipshow?ip=#{p['ip']}">#{p['ip']}</a></td> + <td style="white-space:nowrap;"> + <?py if p['IS_DELETED'] == '0': ?> + <a href="#{cgi_url}manage/delete/#{dir}/#{p['id']}">Eliminar</a> + <a href="#{cgi_url}manage/delete/#{dir}/#{p['id']}?ban=true">&</a> + <a href="/cgi/manage/ban?ip=#{p['ip']}">Ban</a> + <?py elif p['IS_DELETED'] == '1': ?> + <a href="#{cgi_url}manage/recyclebin/0/restore/#{dir}/#{p['id']}">Recuperar</a> + <abbr title="Eliminado por usuario">[1]</abbr> + <?py elif p['IS_DELETED'] == '2': ?> + <a href="#{cgi_url}manage/recyclebin/0/restore/#{dir}/#{p['id']}">Recuperar</a> + <abbr title="Eliminado por staff">[2]</abbr> + <?py #endif ?> + </td> +</tr> +<?py i += 1 ?> +<?py #endfor ?> +</table> +<hr /> +[<a href="#{cgi_url}manage/mod/#{dir}">Volver al panel</a>] +<?py #endif ?> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/move.html b/cgi/templates/manage/move.html new file mode 100644 index 0000000..8fcc1e9 --- /dev/null +++ b/cgi/templates/manage/move.html @@ -0,0 +1,60 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> +<div class="replymode">Mover hilo</div> +<?py if oldboardid and oldthread: ?> +<form action="#{cgi_url}manage/move/#{oldboardid}/#{oldthread}" method="post"> +<?py else: ?> +<form action="#{cgi_url}manage/move" method="post"> +<?py #endif ?> +<table> + <tr> + <td class="postblock">Board actual</td> + <td> + <?py if oldboardid and oldthread: ?> + <select name="oldboardid" style="width:100%;"> + <?py for board in boards: ?> + <option value="#{board['dir']}"#{' selected="selected"' if oldboardid == board['dir'] else ''}>#{board['dir']} - #{board['name']}</option> + <?py #endfor ?> + </select> + <?py else: ?> + <select name="oldboardid" style="width:100%;"> + <?py for board in boards: ?> + <option value="#{board['dir']}">#{board['dir']} - #{board['name']}</option> + <?py #endfor ?> + </select> + <?py #endif ?> + </td> + </tr> + <tr> + <td class="postblock">ID de hilo</td> + <td> + <?py if oldboardid and oldthread: ?> + <input type="text" name="oldthread" style="width:100%;" value="#{oldthread}" /> + <?py else: ?> + <input type="text" name="oldthread" style="width:100%;" /> + <?py #endif ?> + </td> + </tr> + <tr> + <td class="postblock">Mover a</td> + <td> + <select name="newboardid" style="width:100%;"> + <?py for board in boards: ?> + <option value="#{board['dir']}">#{board['dir']} - #{board['name']}</option> + <?py #endfor ?> + </select> + </td> + </tr> + <tr> + <td class="postblock">Insertar mensaje</td> + <td> + <input type="checkbox" name="msg" value="1" /> + </td> + </tr> + <tr><td colspan="2"><input type="submit" name="submit" style="width:100%;" value="Mover" /></td></tr> +</table> +</form> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/quotes.html b/cgi/templates/manage/quotes.html new file mode 100644 index 0000000..d30a403 --- /dev/null +++ b/cgi/templates/manage/quotes.html @@ -0,0 +1,12 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> + <div class="replymode">Quotes</div> + <p>Ingresa un mensaje a mostrar por cada linea:</p> + <form method="post" action=""> + <textarea name="data" cols="80" rows="15" style="width:500px;height:250px;">${data}</textarea><br /> + <input type="submit" name="save" style="width:500px;" value="Guardar" /> + </form> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?> diff --git a/cgi/templates/manage/rebuild.html b/cgi/templates/manage/rebuild.html new file mode 100644 index 0000000..3afc057 --- /dev/null +++ b/cgi/templates/manage/rebuild.html @@ -0,0 +1,20 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> +<div class="replymode">Reconstruir board</div> +<table class="managertable"> + <tr><th colspan="2">Sección</th><th colspan="2">Acción</th></tr> + <tr><td colspan="2"><b>Home</b></td><td colspan="2" style="text-align:center;">[<a href="#{cgi_url}manage/rebuild/!HOME">Reconstruir</a>]</td></tr> + <tr><td colspan="2"><b>Noticias</b></td><td colspan="2" style="text-align:center;">[<a href="#{cgi_url}manage/rebuild/!NEWS">Reconstruir</a>]</td></tr> + <tr><td colspan="2"><b>Índices de archivos</b></td><td colspan="2" style="text-align:center;">[<a href="#{cgi_url}manage/rebuild/!KAKO">Reconstruir</a>]</td></tr> + <tr><td colspan="2"><b>.htaccess</b></td><td colspan="2" style="text-align:center;">[<a href="#{cgi_url}manage/rebuild/!HTACCESS">Reconstruir</a>]</td></tr> + <?py for board in boards: ?> + <tr><td>/#{board['dir']}/</td><td>#{board['name']}</td><td>[<a href="#{cgi_url}manage/rebuild/#{board['dir']}">Reconstruir frontales</a>]</td><td>[<a href="#{cgi_url}manage/rebuild/#{board['dir']}?everything=1">Reconstruir todo</a>]</td></tr> + <?py #endfor ?> + <tr><td colspan="4" align="center"><form action="#{cgi_url}manage/rebuild/!ALL" method="get"><input type="submit" style="width:100%" value="Reconstruir todos (frontales)" /></form></td></tr> + <tr><td colspan="4" align="center"><form action="#{cgi_url}manage/rebuild/!BBS" method="get"><input type="submit" style="width:100%" value="Reconstruir todos (BBS)" /></form></td></tr> + <tr><td colspan="4" align="center"><form action="#{cgi_url}manage/rebuild/!IB" method="get"><input type="submit" style="width:100%" value="Reconstruir todos (IB)" /></form></td></tr> +</table> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?> diff --git a/cgi/templates/manage/recent_images.html b/cgi/templates/manage/recent_images.html new file mode 100644 index 0000000..39f919c --- /dev/null +++ b/cgi/templates/manage/recent_images.html @@ -0,0 +1,24 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<style>.imgs{font-size:0;}.imgs img{vertical-align:top;margin:2px;height:150px;width:auto;}</style> +<center> +<div class="replymode">Imágenes recientes</div> +<form action="#{cgi_url}manage/recent_images" name="recent_images" method="post"> + <table> + <tr><td class="postblock">Número a mostrar</td><td><input type="text" name="images" size="4" /></td></tr> + <tr><td colspan="2"><input type="submit" style="width:100%;" value="Enviar" /></td></tr> + </table> +</form> +<hr /> +<div class="imgs"> +<?py for post in posts: ?> + <?py if post['parentid'] != '0': ?> + <a href="/#{post['dir']}/res/#{post['parentid']}.html##{post['id']}"><img src="#{boards_url}#{post['dir']}/thumb/#{post['thumb']}" /></a> + <?py else: ?> + <a href="/#{post['dir']}/res/#{post['id']}.html##{post['id']}"><img src="#{boards_url}#{post['dir']}/thumb/#{post['thumb']}" /></a> + <?py #endif ?> +<?py #endfor ?> +</div> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/recyclebin.html b/cgi/templates/manage/recyclebin.html new file mode 100644 index 0000000..b413c9c --- /dev/null +++ b/cgi/templates/manage/recyclebin.html @@ -0,0 +1,72 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<?py from tenjin.helpers.html import * ?> +<center> +<div class="replymode">Papelera de Reciclaje</div> +<form name="boardForm" method="get" action="#{cgi_url}manage/recyclebin/0"> +<table> +<tr> + <td class="postblock">Eliminado por</td> + <td> + <input type="radio" id="type1" name="type" value="1"#{checked(type == 1)} /><label for="type1">Usuario</label> + <input type="radio" id="type2" name="type" value="2"#{checked(type == 2)} /><label for="type2">Staff</label> + <input type="radio" id="type0" name="type" value="0"#{checked(type == 0)} /><label for="type0">Ambos</label> + </td> +</tr> +<tr> + <td class="postblock">Board</td><td> + <select name="board" style="width:100%;"> + <option value="all">Todos los boards</option> +<?py for board in boards: ?> + <option value="#{board['dir']}"#{selected(board['checked'])}>#{board['dir']} - ${board['name']}</option> +<?py #endfor ?> + </select> + </td> +</tr> +<tr><td colspan="2"><input type="submit" style="width:100%;" value="Mostrar" /></td></tr> +</table> +</form> +<hr /> +<?py if message: ?> +${message} +<hr /> +<?py #endif ?> +<?py if not skip: ?> +<form name="deleteForm" method="post" action="#{cgi_url}manage/recyclebin/#{currentpage}"> + <?py if curboard: ?> + <input type="hidden" name="board" value="#{curboard}" /> + <?py #endif ?> + <table class="managertable"> + <tr> + <th></th> + <th></th> + <th>ID</th> + <th>Timestamp</th> + <th>Board</th> + <th>Tipo</th> + <th>IP</th> + <th>Mensaje</th> + </tr> + <?py for post in posts: ?> + <tr> + <td><a href="#{cgi_url}manage/recyclebin/#{currentpage}/delete/#{post['dir']}/#{post['id']}">X</a><br /><a href="#{cgi_url}manage/recyclebin/#{currentpage}/restore/#{post['dir']}/#{post['id']}">R</a></td> + <td><input type="checkbox" name="!i#{post['dir']}/#{post['id']}" id="#{post['dir']}#{post['id']}" value="1" /><label for="#{post['dir']}#{post['id']}"></label></td> + <td>#{post['id']}</td> + <td class="date" data-unix="${post['timestamp']}">${post['timestamp_formatted']}</td> + <td>${post['dir']}</td> + <td>${post['IS_DELETED']}</td> + <td>${post['ip']}</td> + <td>#{post['message']}</td> + </tr> + <?py #endfor ?> + <tr><td colspan="8" align="center"><input name="deleteall" type="submit" value="Eliminar seleccionados" /></td></tr> + </table> +</form> +<hr /> +<div style="font-size:larger">#{navigator}</div> +<?py else: ?> + No hay posts. +<?py #endif ?> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?> diff --git a/cgi/templates/manage/reports.html b/cgi/templates/manage/reports.html new file mode 100644 index 0000000..f47ec38 --- /dev/null +++ b/cgi/templates/manage/reports.html @@ -0,0 +1,58 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<?py from tenjin.helpers.html import * ?> +<center> +<div class="replymode">Reportes</div> +<?py if message: ?> +${message} +<?py #endif ?> +<form name="boardForm" method="get" action="#{cgi_url}manage/reports/0"> +<table> + <tr> + <td class="postblock">Board</td> + <td> + <select name="board"> + <option value="all">Todos los boards</option> +<?py for board in boards: ?> + <option value="#{board['dir']}"#{selected(board['checked'])}>#{board['dir']} - #{board['name']}</option> +<?py #endfor ?> + </select> + <td><input type="submit" value="Mostrar" /></td> + </td></tr> +</table> +</form> + +<form name="ignoreForm" method="post" action="#{cgi_url}manage/reports/#{currentpage}"> +<?py if curboard: ?> +<input type="hidden" name="board" value="#{board}" /> +<?py #endif ?> +<hr /> +<table class="managertable"> +<tr> + <th></th> + <th></th> + <th>Fecha</th> + <th>Post</th> + <th>IP Post</th> + <th>Razón</th> + <th>IP Denuncia</th> +</tr> +<?py for report in reports: ?> +<tr> + <td> <a href="#{cgi_url}manage/reports/#{currentpage}/ignore/#{report['id']}">X</a> </td> + <td><input type="checkbox" name="i#{report['id']}" id="i#{report['id']}" value="1" /><label for="i#{report['id']}"></label></td> + <td class="date" data-unix="${report['timestamp']}">${report['timestamp_formatted']}</td> + <td><a href="#{report['link']}">${report['link']}</a></td> + <td><a href="#{cgi_url}manage/ipshow?ip=${report['ip']}">${report['ip']}</a></td> + <td>${report['reason']}</td> + <td><a href="#{cgi_url}manage/ipshow?ip=${report['reporterip']}">${report['reporterip']}</a></td> +</tr> +<?py #endfor ?> +<tr> + <td colspan="8" style="text-align:center;"><input name="ignore" type="submit" value="Ignorar seleccionados" /></td> +</tr> +</table> +</form> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?> diff --git a/cgi/templates/manage/search.html b/cgi/templates/manage/search.html new file mode 100644 index 0000000..6c2ec6f --- /dev/null +++ b/cgi/templates/manage/search.html @@ -0,0 +1,27 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<center> +<div class="replymode">Registro de búsqueda</div> +<table class="managertable"> + <tr> + <th>ID</th> + <th>Fecha</th> + <th>Búsqueda</th> + <th>En</th> + <th>Resultados</th> + <th>Por</th> + </tr> +<?py for log in search: ?> + <tr> + <td>${log['id']}</td> + <td class="date" data-unix="${log['timestamp']}">${log['timestamp_formatted']}</td> + <td>${log['keyword']}</td> + <td>${"[A] " if log['archive'] else ""}${"Global" if log["ita"] == "" else log["ita"]}</td> + <td>${log['res']}</td> + <td><a href="#{cgi_url}manage/ipshow?ip=${log['ip']}">${log['ip']}</a></td> + </tr> +<?py #endfor ?> +</table> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file diff --git a/cgi/templates/manage/staff.html b/cgi/templates/manage/staff.html new file mode 100644 index 0000000..787a843 --- /dev/null +++ b/cgi/templates/manage/staff.html @@ -0,0 +1,63 @@ +<?py include('templates/base_top.html') ?> +<?py include('templates/manage/menu.html') ?> +<?py from tenjin.helpers.html import * ?> +<center> +<div class="replymode">Staff</div> +<?py if mode == 0: ?> + <table class="managertable"> + <tr> + <th>ID</th> + <th>Nombre</th> + <th>Nivel</th> + <th>Última actividad</th> + <th>Acciones</th> + </tr> + <?py for member in staff: ?> + <tr> + <td>${member['id']}</td> + <td><b>${member['username']}</b></td> + <td>${member['rights']}</td> + <td class="date" data-unix="${member['lastactivestamp']}">${member['lastactive']}</td> + <td> + [<a href="#{cgi_url}manage/staff/edit/#{member['id']}">Editar</a>] + [<a href="#{cgi_url}manage/staff/delete/#{member['id']}">Eliminar</a>] + </td> + </tr> + <?py #endfor ?> + <tr> + <td colspan="5"><form action="#{cgi_url}manage/staff/add" method="get"><input type="submit" style="width:100%;" value="Agregar miembro" /></form></td> + </tr> + </table> +<?py elif mode == 1: ?> +<form action="#{cgi_url}manage/staff/#{action}" method="post"> +<table> + <tr> + <td class="postblock">Nombre</td> + <td><input type="text" name="username" value="${member_username}" style="width:100%;" /></td> + </tr> + <?py if not member: ?> + <tr> + <td class="postblock">Contraseña</td> + <td><input type="password" name="password" style="width:100%;"/></td> + </tr> + <?py #endif ?> + <tr> + <td class="postblock">Nivel</td> + <td> + <select name="rights" style="width:100%;"> + <option value="3"#{selected(member_rights == '3')}>Moderador</option> + <option value="2"#{selected(member_rights == '2')}>Developer</option> + <option value="1"#{selected(member_rights == '1')}>Administrador</option> + <option value="0"#{selected(member_rights == '0')}>Super-Administrador</option> + </select> + </td> + </tr> + <tr> + <td colspan="2"><input type="submit" name="submit" style="width:100%;" value="${submit}"/></td> + </tr> +</table> +</form> +<?py #endif ?> +</center> +<hr /> +<?py include('templates/base_bottom.html') ?>
\ No newline at end of file |