@@ -8,50 +8,19 @@ if you know how to fix stuff when it breaks. | |||
- Requirements: python2.6, werkzeug, sqlalchemy, jinja2 | |||
Fastcgi is highly recommended, but cgi is supported. | |||
It can be made compatible with python2.5 by adding this line at the | |||
beginning of template.py: | |||
from __future__ import with_statement | |||
- Wakarimasen is meant to be installed from an existing wakaba+desuchan | |||
installation. If you don't have one, clone this: | |||
git clone http://git.kiace.com.ar/desuchan.git | |||
- First generate config files | |||
./config.sed /path/to/wakaba/config.pl > config.py | |||
./config_defaults.sed /path/to/wakaba/config_defaults.pl > config_defaults.py | |||
- Now generate templates based on the built-in futaba_style.pl. | |||
If you have your own version, use the -f/--filename parameter. | |||
python futaba_to_jinja.py | |||
-or- | |||
python futaba_to_jinja.py -f /path/to/wakaba/futaba_style.pl | |||
- Copy/create a few extra files needed for templates and other stuff: | |||
mkdir -p templates/include/boards/ | |||
cp /path/to/wakaba/include/* templates/include/boards/ | |||
touch templates/announcements_global.html | |||
touch templates/announcements.html | |||
touch templates/rules.html | |||
mkdir -p include/common/css | |||
cp /path/to/wakaba/board/css/* include/common/css | |||
touch spam.txt | |||
- Review the generated config.py. If you used desuchan.git for the base config, | |||
you'll have to set at least the first three entries to different values. The | |||
format for SQL_ENGINE is: | |||
- Copy config.py.example to config.py. Edit it and set ADMIN_PASS, SECRET and | |||
SQL_ENGINE. The format for SQL_ENGINE is the following: | |||
SQL_ENGINE = 'mysql://USERNAME:PASSWORD@HOSTNAME/DATABASE' | |||
I also recommend changing the following (uncomment when needed) | |||
USE_XHTML = 0 | |||
PAGE_EXT = '.html' | |||
- Now make sure the shebang line in wakarimasen.py points to the right | |||
python interpreter. If you use suexec for cgi, it must be chmod 755, too. | |||
Visit | |||
@@ -61,23 +30,13 @@ Visit | |||
You should get a board not found WakaError. That means cgi is working. | |||
Adding fastcgi support is explained later. | |||
- Skip this step if you already have boards. To create a new board called | |||
/temp/, do the following (assuming the desuchan git is in the current dir) | |||
mkdir temp | |||
mkdir temp/res | |||
./board_config.sed desuchan/board_config.pl > temp/board_config.py | |||
Now edit the new board_config.py, important settings are NUKE_PASS, TITLE | |||
and SQL_TABLE. Keep in mind most of those options are not supported for now | |||
(captcha, load balancing, proxy, etc). If you've disabled XHTML: | |||
config['USE_XHTML'] = 0 | |||
config['HTML_SELF'] = 'wakaba.html' | |||
- To create a new board called /temp/, copy the base_board directory: | |||
Also disable captchas (not working yet): | |||
cp -r base_board temp | |||
config['ENABLE_CAPTCHA'] = 0 | |||
Edit temp/board_config.py. Important settings are NUKE_PASS, TITLE and | |||
SQL_TABLE. Keep in mind most of those options are not supported for now | |||
(captcha, load balancing, proxy, etc). | |||
- Go to http://example.com/wakarimasen.py?board=temp - This should rebuild the | |||
cache and redirect you to your board. If you see the directory listing, add | |||
@@ -0,0 +1,171 @@ | |||
# Board Configuration | |||
config = {} | |||
# Board-specific Security | |||
config['NUKE_PASS'] = "CHANGEME" # Board nuking/SQL password. Change this! | |||
# Page look | |||
config['TITLE'] = 'Wakarimasen image board' # Name of this image board | |||
config['SQL_TABLE'] = 'comment' # IMPORTANT! Name of SQL comment table. !Must be unique for each board! | |||
config['SHOWTITLETXT'] = 1 # Show TITLE at top (1: yes 0: no) | |||
config['SHOWTITLEIMG'] = 0 # Show image at top (0: no, 1: single, 2: rotating) | |||
config['TITLEIMG'] = 'title.jpg' # Title image (point to a script file if rotating) | |||
config['FAVICON'] = 'wakaba.ico' # Favicon.ico file | |||
config['IMAGES_PER_PAGE'] = 10 # Images per page | |||
config['REPLIES_PER_THREAD'] = 5 # Replies shown | |||
config['IMAGE_REPLIES_PER_THREAD'] = 0 # Number of image replies per thread to show, set to 0 for no limit. | |||
config['S_ANONAME'] = 'Anonymous' # Defines what to print if there is no text entered in the name field | |||
config['S_ANOTEXT'] = '' # Defines what to print if there is no text entered in the comment field | |||
config['S_ANOTITLE'] = '' # Defines what to print if there is no text entered into subject field | |||
config['SILLY_ANONYMOUS'] = '' # Make up silly names for anonymous people (0 or '': don't display, any combination of 'day' or 'board': make names change for each day or board, 'static': static names) | |||
config['DEFAULT_STYLE'] = 'Futaba' # Title of the default style for the board. | |||
# Limitations | |||
config['MAX_KB'] = 10240 # Maximum upload size in KB | |||
config['MAX_W'] = 200 # Images exceeding this width will be thumbnailed | |||
config['MAX_H'] = 200 # Images exceeding this height will be thumbnailed | |||
config['MAX_RES'] = 500 # Maximum topic bumps | |||
config['MAX_POSTS'] = 0 # Maximum number of posts (set to 0 to disable) | |||
config['MAX_THREADS'] = 0 # Maximum number of threads (set to 0 to disable) | |||
config['MAX_AGE'] = 0 # Maximum age of a thread in hours (set to 0 to disable) | |||
config['MAX_MEGABYTES'] = 0 # Maximum size to use for all images in megabytes (set to 0 to disable) | |||
config['MAX_FIELD_LENGTH'] = 100 # Maximum number of characters in subject, name, and email | |||
config['MAX_COMMENT_LENGTH'] = 8192 # Maximum number of characters in a comment | |||
config['MAX_LINES_SHOWN'] = 15 # Max lines shown per post (0 = no limit) | |||
config['MAX_IMAGE_WIDTH'] = 16384 # Maximum width of image before rejecting | |||
config['MAX_IMAGE_HEIGHT'] = 16384 # Maximum height of image before rejecting | |||
config['MAX_IMAGE_PIXELS'] = 50000000 # Maximum width*height of image before rejecting | |||
config['DUPLICATE_DETECTION'] = 'thread' # How are duplicate files forbidden? (board: no duplicates on board, thread: no duplicate files in a single thread, <blank>: no duplicate detection) | |||
# Captcha | |||
config['ENABLE_CAPTCHA'] = 0 | |||
config['SQL_CAPTCHA_TABLE'] = 'captcha' # Use a different captcha table for each board, if you have more than one! | |||
config['CAPTCHA_LIFETIME'] = 1440 # Captcha lifetime in seconds | |||
config['CAPTCHA_SCRIPT'] = 'captcha.pl' | |||
config['CAPTCHA_HEIGHT'] = 18 | |||
config['CAPTCHA_SCRIBBLE'] = 0.2 | |||
config['CAPTCHA_SCALING'] = 0.15 | |||
config['CAPTCHA_ROTATION'] = 0.3 | |||
config['CAPTCHA_SPACING'] = 2.5 | |||
# Load Balancing | |||
config['ENABLE_LOAD'] = 0 # Enable the distribution of image files across multiple hosts (0: no, 1: yes). May not work on a windows host. Do not enable if using STUPID_THUMBNAILING. | |||
config['LOAD_SENDER_SCRIPT'] = './sender.pl' | |||
config['LOAD_LOCAL'] = 120 # Gigabytes of available bandwidth relative to other hosts (please read documentation) | |||
config['LOAD_HOSTS'] = [['http://somesite/loader.pl', 'password', 100]] | |||
config['LOAD_KBRATE'] = 25 # minimum send rate that will be accepted without timing out | |||
# Proxy | |||
config['ENABLE_PROXY_CHECK'] = 1 # Enable proxy checking (0: no, 1:yes). Please read the documentation first! | |||
config['PROXY_COMMAND'] = '/usr/bin/proxycheck -s -d achaea.com:23 -c chat::"Multi-User License: 100-0000-000" -aaaa' # Only uncomment if you know what you're doing... | |||
# Proxy expirations are controlled via config.pl. | |||
# Tweaks | |||
config['CONVERT_COMMAND'] = '' # ImageMagick command, may be globalized. | |||
config['THUMBNAIL_SMALL'] = 1 # Thumbnail small images (1: yes, 0: no) | |||
config['THUMBNAIL_QUALITY'] = 60 # Thumbnail JPEG quality | |||
config['DELETED_THUMBNAIL'] = '' # Thumbnail to show for deleted images (leave empty to show text message) | |||
config['DELETED_IMAGE'] = '' # Image to link for deleted images (only used together with DELETED_THUMBNAIL) | |||
config['ALLOW_TEXTONLY'] = 0 # Allow textonly posts (1: yes, 0: no) | |||
config['ALLOW_IMAGES'] = 1 # Allow image posting (1: yes, 0: no) | |||
config['ALLOW_TEXT_REPLIES'] = 1 # Allow replies (1: yes, 0: no) | |||
config['ALLOW_IMAGE_REPLIES'] = 1 # Allow replies with images (1: yes, 0: no) | |||
config['ALLOW_UNKNOWN'] = 0 # Allow unknown filetypes (1: yes, 0: no) | |||
config['MUNGE_UNKNOWN'] = '.unknown' # Munge unknown file type extensions with this. If you remove this, make sure your web server is locked down properly. | |||
config['FORBIDDEN_EXTENSIONS'] = ['php','php3','php4','phtml','shtml','cgi','pl','pm','py','r','exe','dll','scr','pif','asp','cfm','jsp','vbs'] # file extensions which are forbidden | |||
config['RENZOKU'] = 5 # Seconds between posts (floodcheck) | |||
config['RENZOKU2'] = 10 # Seconds between image posts (floodcheck) | |||
config['RENZOKU3'] = 900 # Seconds between identical posts (floodcheck) | |||
config['NOSAGE_WINDOW'] = 1200 # Seconds that you can post to your own thread without increasing the sage count | |||
config['USE_SECURE_ADMIN'] = 0 # Use HTTPS for the admin panel. | |||
config['CHARSET'] = 'utf-8' # Character set to use, typically 'utf-8' or 'shift_jis'. Disable charset handling by setting to ''. Remember to set Apache to use the same character set for .html files! (AddCharset shift_jis html) | |||
config['METAKEYWORDS'] = 'desuchan,rozen maiden,loli,anime,mangna,touhou,art,literature,roleplay,traps,gothloli,dollfaggotry' | |||
config['CONVERT_CHARSETS'] = 1 # Do character set conversions internally | |||
config['TRIM_METHOD'] = 1 # Which threads to trim (0: oldest - like futaba 1: least active - furthest back) | |||
config['ARCHIVE_MODE'] = 0 # Old images and posts are moved into an archive dir instead of deleted (0: no 1: yes). It is HIGHLY RECOMMENDED you use TRIM_METHOD} = 1 with this, or you may end up with unreferenced pictures in your archive | |||
config['DATE_STYLE'] = 'futaba' # Date style ('futaba', '2ch', 'localtime', 'tiny') | |||
config['DISPLAY_ID'] = '' # How to display user IDs (0 or '': don't display, | |||
# 'day' and 'board' in any combination: make IDs change for each day or board, | |||
# 'mask': display masked IP address (similar IPs look similar, but are still encrypted) | |||
# 'sage': don't display ID when user sages, 'link': don't display ID when the user fills out the link field, | |||
# 'ip': display user's IP, 'host': display user's host) | |||
config['DISPLAY_ID'] = 0 # Display user IDs (0: never, 1: if no email, 2:always) | |||
config['EMAIL_ID'] = 'Heaven' # ID string to use when DISPLAY_ID is 1 and the user uses an email. | |||
config['TRIPKEY'] = '!' # this character is displayed before tripcodes | |||
config['ENABLE_WAKABAMARK'] = 1 # Enable WakabaMark formatting. (0: no, 1: yes) | |||
config['APPROX_LINE_LENGTH'] = 150 # Approximate line length used by reply abbreviation code to guess at the length of a reply. | |||
config['STUPID_THUMBNAILING'] = 0 # Bypass thumbnailing code and just use HTML to resize the image. STUPID, wastes bandwidth. (1: enable, 0: disable) | |||
config['COOKIE_PATH'] = 'root' # Path argument for cookies ('root': cookies apply to all boards on the site, 'current': cookies apply only to this board, 'parent': cookies apply to all boards in the parent directory) | |||
config['FORCED_ANON'] = 0 # Force anonymous posting (0: no, 1: yes) | |||
config['USE_XHTML'] = 0 # Send pages as application/xhtml+xml to browsers that support this (0:no, 1:yes) | |||
config['SPAM_TRAP'] = 1 # Enable the spam trap (empty, hidden form fields that spam bots usually fill out) (0:no, 1:yes) | |||
config['STYLE_COOKIE'] = 'wakastyle' # Name of the board's style cookie. Generally a good idea to keep the same across all boards. | |||
# Internal paths and files - might as well leave this alone. | |||
config['IMG_DIR'] = 'src/' # Image directory (needs to be writeable by the script) | |||
config['THUMB_DIR'] = 'thumb/' # Thumbnail directory (needs to be writeable by the script) | |||
config['RES_DIR'] = 'res/' # Reply cache directory (needs to be writeable by the script) | |||
config['ARCHIVE_DIR'] = 'arch/' # Root of archive directories (all need to be writeable by the script) | |||
config['BACKUP_DIR'] = "backup/" # Subdirectory in ARCHIVE_DIR for all backup images and thumbnails. | |||
config['REDIR_DIR'] = 'redir/' # Redir directory, used for redirecting clients when load balancing | |||
config['HTML_SELF'] = 'wakaba.html' # Name of main html file | |||
config['JS_FILE'] = '/wakaba3.js' # Location of the js file | |||
config['CSS_DIR'] = '../include/common/css/' | |||
# Hints: * Set all boards to use the same file for easy updating. | |||
# * Set up two files, one being the official list from | |||
# http://wakaba.c3.cx/antispam/spam.txt, and one your own additions. | |||
# Oekaki Stuff | |||
config['ENABLE_OEKAKI'] = 0 # Enable Oekaki? | |||
config['TMP_DIR'] = 'tmp/' # Temp file directory (needs to be writeable by the script) | |||
config['OEKAKI_ENABLE_MODIFY'] = 1 # Enable image modification | |||
config['OEKAKI_DEFAULT_X'] = 300 # Default X dimension for oekaki drawings | |||
config['OEKAKI_DEFAULT_Y'] = 300 # Default Y dimension for oekaki drawings | |||
config['OEKAKI_MAX_X'] = 800 # Max X dimension allowed for oekaki drawings | |||
config['OEKAKI_MAX_Y'] = 800 # Max Y dimension allowed for oekaki drawings | |||
config['OEKAKI_MIN_X'] = 100 # Min X dimension allowed for oekaki drawings | |||
config['OEKAKI_MIN_Y'] = 100 # Min Y dimension allowed for oekaki drawings | |||
config['OEKAKI_DEFAULT_PAINTER'] = "shi_norm" # Default painter selection | |||
# Icons for filetypes - file extensions specified here will not be renamed, and will get icons | |||
# (except for the built-in image formats). These example icons can be found in the extras/ directory. | |||
config['FILETYPES'] = { | |||
# Audio files | |||
# mp3: '/include/icons/audio-mp3.png', | |||
# ogg: '/include/icons/audio-ogg.png', | |||
# aac: '/include/icons/audio-aac.png', | |||
# m4a: '/include/icons/audio-aac.png', | |||
# mpc: '/include/icons/audio-mpc.png', | |||
# mpp: '/include/icons/audio-mpp.png', | |||
# mod: '/include/icons/audio-mod.png', | |||
# it: '/include/icons/audio-it.png', | |||
# xm: '/include/icons/audio-xm.png', | |||
# fla: '/include/icons/audio-flac.png', | |||
# flac: '/include/icons/audio-flac.png', | |||
# sid: '/include/icons/audio-sid.png', | |||
# mo3: '/include/icons/audio-mo3.png', | |||
# spc: '/include/icons/audio-spc.png', | |||
# nsf: '/include/icons/audio-nsf.png', | |||
# Video files | |||
# avi: '/include/icons/video-avi.png', | |||
# ogm: '/include/icons/video-ogm.png', | |||
# mkv: '/include/icons/video-mkv.png', | |||
# Archive files | |||
# zip: '/include/icons/archive-zip.png', | |||
# rar: '/include/icons/archive-rar.png', | |||
# lzh: '/include/icons/archive-lzh.png', | |||
# lha: '/include/icons/archive-lzh.png', | |||
# gz: '/include/icons/archive-gz.png', | |||
# bz2: '/include/icons/archive-bz2.png', | |||
# '7z': '/include/icons/archive-7z.png', | |||
# Other files | |||
# swf: '/include/icons/flash.png', | |||
# torrent: '/include/icons/torrent.png', | |||
# To stop Wakaba from renaming image files, put their names in here like this: | |||
# gif: '.', | |||
# jpg: '.', | |||
# png: '.', | |||
} | |||
@@ -0,0 +1,4 @@ | |||
# Ignore everything in this directory | |||
* | |||
# Except this file | |||
!.gitignore |
@@ -0,0 +1,42 @@ | |||
# Wakarimasen configuration | |||
ADMIN_PASS = 'desu' # Admin password. For fucks's sake, change this. | |||
SECRET = 'desu' # Cryptographic secret. CHANGE THIS to something totally random, and long. | |||
SQL_ENGINE = 'mysql://desu:desu@localhost/desu' | |||
#SQL_BACKUP_TABLE = '__waka_backup' # Table backup | |||
#SQL_ADMIN_TABLE = 'admin' # Table used for admin information | |||
#SQL_PROXY_TABLE = 'proxy' # Table used for proxy information | |||
#DATE_STYLE = 'futaba' # Date style ('futaba', '2ch', 'localtime', 'tiny') | |||
#ERRORLOG = '' # Writes out all errors seen by user, mainly useful for debugging | |||
#CONVERT_COMMAND = 'convert' # location of the ImageMagick convert command (usually just 'convert', but sometime a full path is needed) | |||
#ALTERNATE_REDIRECT = 0 # Use alternate redirect method. (Javascript/meta-refresh instead of HTTP forwards. Needed to run on certain servers, like IIS.) | |||
#USE_SECURE_ADMIN = 1 # Use HTTPS for admin logins. | |||
#USE_TEMPFILES = 1 # Set this to 1 under Unix and 0 under Windows! (Use tempfiles when creating pages) | |||
#PAGE_EXT = '.html' # File extension for all board pages. | |||
#CHARSET = 'utf-8' | |||
#CONVERT_CHARSETS = 1 # Do character set conversions internally | |||
#SPAM_FILES = 'spam.txt' | |||
#USE_XHTML = 1 | |||
#HOME = './' | |||
#HTACCESS_PATH = './' | |||
#PASSFAIL_THRESHOLD = 5 # Number of times a user may fail a password prompt prior to banning. | |||
#PASSFAIL_ROLLBACK = 1*24*3600 # How long a failed password prompt is held against a host. | |||
#PASSPROMPT_EXPIRE_TO_FAILURE = 300 # How long password prompts last before timing out and counting against the user. | |||
#MAX_FCGI_LOOPS = 250 | |||
#TIME_OFFSET = 0 # Time offset in seconds, for display on board pages. You can use this to adjust board time to your local time! | |||
# Positive value adjusts forward; negative value adjusts backward. | |||
#SQL_REPORT_TABLE = 'user_report' | |||
#STAFF_LOG_RETENTION = 30*24*3600 # How long should staff log entries be retained? (Seconds) | |||
#REPORT_RETENTION = 30*24*3600 # How long should report entries be retained? (Seconds) | |||
#POST_BACKUP = 1 # 1: Back up posts that are deleted or edited. 0: Do not back up. | |||
#POST_BACKUP_EXPIRE = 3600*24*14 # How long should backups last prior to purging? | |||
#REPLIES_PER_STICKY = 1 # Number of replies per stickied thread. | |||
#ENABLE_ABBREVIATED_THREAD_PAGES = 1 # Want to enable "Last xx Posts?" Then set this to 1. | |||
#POSTS_IN_ABBREVIATED_THREAD_PAGES = 50 # Number of posts to show in abbreviated reply views. | |||
#ENABLE_RSS = 1 # Do RSS feeds. | |||
#RSS_LENGTH = 10 # Number of items in each feed. | |||
#RSS_WEBMASTER = "dark.master.schmidt@gmail.com (Dark^Master^Schmidt)" | |||
# Webmaster email address and name. Example format should be preserved for RSS spec. | |||
#BOARD_DIR = '' # Root of board cache relative to document root. | |||
#SERVER_NAME = 'desuchan.net' # What's the name of this server? | |||
#DEBUG = False # Debug mode |
@@ -0,0 +1,63 @@ | |||
SQL_ADMIN_TABLE = 'admin' | |||
SQL_PROXY_TABLE = 'proxy' | |||
SQL_REPORT_TABLE = 'reports' | |||
SQL_BACKUP_TABLE = '__waka_backup' | |||
SQL_ACCOUNT_TABLE = 'staff_accounts' | |||
SQL_STAFFLOG_TABLE = 'staff_activity' | |||
SQL_COMMON_SITE_TABLE = 'board_index' | |||
SQL_PASSPROMPT_TABLE = 'passprompt' | |||
SQL_PASSFAIL_TABLE = 'passfail' | |||
USE_TEMPFILES = 1 | |||
DATE_STYLE = 'futaba' | |||
ERRORLOG = '' | |||
HOME = '/' | |||
TIME_OFFSET = 0 | |||
JS_FILE = 'wakaba3.js' | |||
CONVERT_COMMAND = '' | |||
USE_TEMPFILES = 1 | |||
USE_SECURE_ADMIN = 0 | |||
USE_XHTML = 0 | |||
CHARSET = 'utf-8' | |||
CONVERT_CHARSETS = 1 | |||
PAGE_EXT = '.html' | |||
HTACCESS_PATH = './' | |||
WAKABA_VERSION = '3.0.7 + desuchan' | |||
ALTERNATE_REDIRECT = 0 | |||
SPAM_FILES = ['spam.txt'] | |||
MAX_FCGI_LOOPS = 250 | |||
REPORT_COMMENT_MAX_LENGTH = 250 | |||
REPORT_RENZOKU = 60 | |||
REPORT_RETENTION = 60*24*3600 | |||
STAFF_LOG_RETENTION = 60*24*3600 | |||
PROXY_WHITE_AGE = 14*24*3600 | |||
PROXY_BLACK_AGE = 14*24*3600 | |||
POST_BACKUP = 1 | |||
POST_BACKUP_EXPIRE = 3600*24*14 | |||
PASSPROMPT_EXPIRE_TO_FAILURE = 300 | |||
PASSFAIL_THRESHOLD = 5 | |||
PASSFAIL_ROLLBACK = 1*24*3600 | |||
REPLIES_PER_STICKY = 1 | |||
ENABLE_ABBREVIATED_THREAD_PAGES = 0 | |||
POSTS_IN_ABBREVIATED_THREAD_PAGES = 50 | |||
ENABLE_RSS = 1 | |||
RSS_LENGTH = 10 | |||
RSS_WEBMASTER = '' | |||
BOARD_DIR = '' | |||
DEBUG = False | |||
SERVER_NAME = 'localhost' | |||
IDENTIFY_COMMAND = 'identify' | |||
FG_ANIM_COLOR = 'white' | |||
BG_ANIM_COLOR = '#660066' | |||
# add default values to config.py | |||
import util as _util | |||
_util.module_default('config', locals()) |
@@ -0,0 +1,17 @@ | |||
{% include 'normal_head_include.html' %} | |||
<div align="center"> | |||
<h2>First Time Setup</h2> | |||
<form action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<p>Administrator, please enter your desired login username and password.</p> | |||
<input type="hidden" name="admin" value="{{ admin }}" /> | |||
<input type="hidden" name="task" value="setup" /> | |||
Username: | |||
<input type="text" name="username" size="8" value="" /> | |||
<br /> | |||
Password: | |||
<input type="password" name="password" size="8" value="" /> | |||
<br /> | |||
<input type="submit" value="{{ strings.MANASUB }}" /> | |||
</form></div> | |||
{% include 'normal_foot_include.html' %} |
@@ -0,0 +1,33 @@ | |||
{% include 'manager_head_include.html' %} | |||
<div align="center"><form action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<input type="hidden" name="task" value="admin" /> | |||
Username: | |||
<input type="text" name="desu" size="16" value="" /> | |||
<br /> | |||
Password: | |||
<input type="password" name="berra" size="16" value="" /> | |||
<br /> | |||
<label><input type="checkbox" name="savelogin" value="1" /> {{ strings.MANASAVE }}</label> | |||
<br /> | |||
<select name="nexttask"> | |||
<option value="mpanel" {% if login_task == "mpanel" or not login_task %}selected="selected"{% endif %}>{{ strings.MANAPANEL }}</option> | |||
<option value="bans" {% if login_task == "bans" %}selected="selected"{% endif %}>{{ strings.MANABANS }}</option> | |||
<option value="proxy" {% if login_task == "proxy" %}selected="selected"{% endif %}>{{ strings.MANAPROXY }}</option> | |||
<option value="spam" {% if login_task == "spam" %}selected="selected"{% endif %}>{{ strings.MANASPAM }}</option> | |||
<option value="sqldump" {% if login_task == "sqldump" %}selected="selected"{% endif %}>{{ strings.MANASQLDUMP }}</option> | |||
<option value="sql" {% if login_task == "sql" %}selected="selected"{% endif %}>{{ strings.MANASQLINT }}</option> | |||
<option value="mpost" {% if login_task == "mpost" %}selected="selected"{% endif %}>{{ strings.MANAPOST }}</option> | |||
<option value="rebuild" {% if login_task == "rebuild" %}selected="selected"{% endif %}>{{ strings.MANAREBUILD }}</option> | |||
<option value="reports" {% if login_task == "reports" %}selected="selected"{% endif %}>Reports</option> | |||
<option value="staff" {% if login_task == "staff" %}selected="selected"{% endif %}>Staff Management</option> | |||
<option value="staff" {% if login_task == "stafflog" %}selected="selected"{% endif %}>Staff Activity</option> | |||
<option value=""></option> | |||
<option value="nuke" {% if login_task == "nuke" %}selected="selected"{% endif %}>{{ strings.MANANUKE }}</option> | |||
</select> | |||
<input type="submit" value="{{ strings.MANASUB }}" /> | |||
<p><em>Cookies required for login.</em></p> | |||
</form></div> | |||
{% include 'normal_foot_include.html' %} |
@@ -0,0 +1,179 @@ | |||
{% include 'manager_head_include.html' %} | |||
<div class="dellist"><h2>Trash Bin</h2></div> | |||
{% if not config.POST_BACKUP %}<p align="center"><em>Wakaba is not set to backup deletions/edits at this time.</em></p>{% endif %} | |||
{% if config.POST_BACKUP %} | |||
<p align="center"><em>Wakaba is currently set to purge all posts older than {{ config.POST_BACKUP_EXPIRE / 24 / 3600 }} day(s) old.</em></p> | |||
<hr /> | |||
{% if not thread %} | |||
<table border="1" style="float:left"><tbody><tr><td> | |||
{% if prevpage != 'none' %}<form method="get" action="{{ get_script_name() }}"><input type="hidden" name="task" value="postbackups" /><input type="hidden" name="board" value="{{ board.name }}" /><input type="hidden" name="page" value="{{ prevpage }}" /><input value="{{ strings.PREV }}" type="submit" /></form>{% endif %} | |||
{% if prevpage == 'none' %}{{ strings.FIRSTPG }}{% endif %} | |||
</td><td> | |||
{% for page in pages %} | |||
{% if not page.current %}[<a href="{{ page.filename }}">{{ page.page }}</a>]{% endif %} | |||
{% if page.current %}[{{ page.page }}]{% endif %} | |||
{% endfor %} | |||
</td><td> | |||
{% if nextpage != 'none' %}<form method="get" action="{{ get_script_name() }}"><input type="hidden" name="task" value="postbackups" /><input type="hidden" name="board" value="{{ board.name }}" /><input type="hidden" name="page" value="{{ nextpage }}" /><input value="{{ strings.NEXT }}" type="submit" /></form>{% endif %} | |||
{% if nextpage == 'none' %}{{ strings.LASTPG }}{% endif %} | |||
</td></tr></tbody></table> | |||
{% endif %} | |||
{% if thread %} | |||
<span style="float:left">[<a href="{{ get_script_name() }}?task=postbackups&board={{ board.name }}">Return to Panel</a>]</span> | |||
{% endif %} | |||
<form action="{{ get_script_name() }}" method="post" id="delform"> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<input type="hidden" name="admindelete" value="1" /> | |||
<input type="hidden" name="task" value="restorebackups" /> | |||
<div class="delbuttons" style="float:right"> | |||
<input type="submit" name="handle" value="Restore" /> | |||
<input type="submit" name="handle" value="{{ strings.MPDELETE }}" /> | |||
<input type="reset" value="{{ strings.MPRESET }}" /> | |||
</div> | |||
<br clear="all" /> | |||
<hr /> | |||
{% for currentthread in threads %} | |||
{% for post in currentthread.posts %} | |||
{% if not post.parent or standalone %} | |||
{% if post.image %} | |||
<span class="filesize">{{ strings.PICNAME }}<a target="_blank" href="{{ (post.image)|expand_image_url }}">{{ (post.image)|basename }}</a> | |||
-(<em>{{ post.size }} B, {{ post.width }}x{{ post.height }}</em>)</span> | |||
<span class="thumbnailmsg">{{ strings.THUMB }}</span><br /> | |||
{% if post.thumbnail %} | |||
<a target="_blank" href="{{ (post.image)|expand_image_url }}" > | |||
<img src="{{ (post.thumbnail)|expand_url }}" width="{{ post.tn_width }}" height="{{ post.tn_height }}" alt="{{ post.size }}" class="thumb" id="img{{ (post.image)|basename }}" /></a> | |||
{% endif %} | |||
{% if not post.thumbnail %} | |||
{% if board.options.DELETED_THUMBNAIL %} | |||
<a target="_blank" href="{{ (board.options.DELETED_IMAGE)|expand_image_url }}"> | |||
<img src="{{ (board.options.DELETED_THUMBNAIL)|expand_url }}" width="{{ post.tn_width }}" height="{{ post.tn_height }}" alt="" class="thumb" /></a> | |||
{% endif %} | |||
{% if not (board.options.DELETED_THUMBNAIL) %} | |||
<div class="nothumb"><a target="_blank" href="{{ (post.image)|expand_image_url }}">{{ strings.NOTHUMB }}</a></div> | |||
{% endif %} | |||
{% endif %} | |||
{% endif %} | |||
<a name="{{ post.postnum }}"></a> | |||
<label><input type="checkbox" name="num" value="{{ post.postnum }}" /> | |||
<span class="filetitle">{{ post.subject }}</span> | |||
{% if post.email %}<span class="postername"><a href="{{ post.email }}">{{ post.name }}</a></span>{% if post.trip %}<span class="postertrip"><a href="{{ post.email }}">{{ post.trip }}</a></span>{% endif %}{% endif %} | |||
{% if not post.email %}<span class="postername">{{ post.name }}</span>{% if post.trip %}<span class="postertrip">{{ post.trip }}</span>{% endif %}{% endif %} | |||
<span class="ipaddr">(IP: {{ (post.ip)|dec_to_dot }}{% if post.admin_post == 'yes' %}; {% if not post.lastedit %}<strong>Moderator Post</strong>{% endif %}{% if post.lastedit %}<strong>Moderator Edit</strong>{% endif %}{% endif %})</span> | |||
{% if not post.parent %} | |||
{% if post.stickied %} <img src="{{ ('/include/boards/sticky.gif')|expand_url }}" alt="{{ strings.STICKIEDALT }}" title="{{ strings.STICKIED }}" /> {% endif %} | |||
{% if post.locked == 'yes' %} <img src="{{ ('/include/boards/locked.gif')|expand_url }}" alt="{{ strings.LOCKEDALT }}" title="{{ strings.LOCKED }}" /> {% endif %} | |||
{% endif %} | |||
{{ post.date }}</label> | |||
<span class="reflink"> | |||
No.{{ post.postnum }} | |||
</span> | |||
{% if standalone %}<span><em>(Orphaned From Parent: <a href="{{ (post.parent)|get_reply_link }}">{{ post.parent }}</a> )</em></span>{% endif %} | |||
{% if not thread %} | |||
[<a href="{{ get_script_name() }}?task=postbackups&board={{ board.name }}&page=t{{ post.postnum }}">View</a>] | |||
{% endif %} | |||
<br /> | |||
<blockquote> | |||
{% if omit %}{{ post.comment|redirect_reply_links(min_res) }}{% else %}{{ post.comment }}{% endif %} | |||
{% if post.abbrev %}<div class="abbrev">{% filter reverse_format(strings.ABBRTEXT) %}{{ get_script_name() }}?task=postbackups&board={{ board.name }}&page=t{{ post.postnum }}{% endfilter %}</div>{% endif %} | |||
{% if post.lastedit %}<p style="font-size: small; font-style: italic">{{ strings.LASTEDITED }}{% if post.admin_post == 'yes' %} {{ strings.BYMOD }}{% endif %} {{ post.lastedit }}. (IP: {{ (post.lastedit_ip)|dec_to_dot }})</p>{% endif %} | |||
</blockquote> | |||
{% if currentthread.omit %} | |||
<span class="omittedposts"> | |||
{% if currentthread.omitimages %}{{ (strings.ABBRIMG)|format(currentthread.omit, currentthread.omitimages) }}{% endif %} | |||
{% if not currentthread.omitimages %}{{ (strings.ABBR)|format(currentthread.omit) }}{% endif %} | |||
</span> | |||
{% endif %} | |||
{% endif %} | |||
{% if post.parent and not standalone %} | |||
<table><tbody><tr><td class="doubledash">>></td> | |||
<td class="reply" id="reply{{ post.postnum }}"> | |||
<a name="{{ post.postnum }}"></a> | |||
<label><input type="checkbox" name="num" value="{{ post.postnum }}" /> | |||
<span class="replytitle">{{ post.subject }}</span> | |||
{% if post.email %}<span class="commentpostername"><a href="{{ post.email }}">{{ post.name }}</a></span>{% if post.trip %}<span class="postertrip"><a href="{{ post.email }}">{{ post.trip }}</a></span>{% endif %}{% endif %} | |||
{% if not post.email %}<span class="commentpostername">{{ post.name }}</span>{% if post.trip %}<span class="postertrip">{{ post.trip }}</span>{% endif %}{% endif %} | |||
<span class="ipaddr">(IP: {{ (post.ip)|dec_to_dot }}{% if post.admin_post == 'yes' %}; {% if not post.lastedit %}<strong>Moderator Post</strong>{% endif %}{% if post.lastedit %}<strong>Moderator Edit</strong>{% endif %}{% endif %})</span> | |||
{{ post.date }}</label> | |||
<span class="reflink"> | |||
No.{{ post.postnum }} | |||
</span> | |||
{% if post.image %} | |||
<br /> | |||
<span class="filesize">{{ strings.PICNAME }}<a target="_blank" href="{{ (post.image)|expand_image_url }}">{{ (post.image)|basename }}</a> | |||
-(<em>{{ post.size }} B, {{ post.width }}x{{ post.height }}</em>)</span> | |||
<span class="thumbnailmsg">{{ strings.THUMB }}</span><br /> | |||
{% if post.thumbnail %} | |||
<a target="_blank" href="{{ (post.image)|expand_image_url }}"> | |||
<img src="{{ (post.thumbnail)|expand_url }}" width="{{ post.tn_width }}" height="{{ post.tn_height }}" alt="{{ post.size }}" class="thumb" id="img{{ (post.image)|basename }}" /></a> | |||
{% endif %} | |||
{% if not post.thumbnail %} | |||
{% if board.options.DELETED_THUMBNAIL %} | |||
<a target="_blank" href="{{ (board.options.DELETED_IMAGE)|expand_image_url }}"> | |||
<img src="{{ (board.options.DELETED_THUMBNAIL)|expand_url }}" width="{{ post.tn_width }}" height="{{ post.tn_height }}" alt="" class="thumb" /></a> | |||
{% endif %} | |||
{% if not (board.options.DELETED_THUMBNAIL) %} | |||
<div class="nothumb"><a target="_blank" href="{{ (post.image)|expand_image_url }}">{{ strings.NOTHUMB }}</a></div> | |||
{% endif %} | |||
{% endif %} | |||
{% endif %} | |||
<blockquote> | |||
{% if omit %}{{ post.comment|redirect_reply_links(min_res) }}{% else %}{{ post.comment }}{% endif %} | |||
{% if post.abbrev %}<div class="abbrev">{% filter reverse_format(strings.ABBRTEXT) %}{{ get_script_name() }}?task=postbackups&board={{ board.name }}&page=t{{ post.parent }}#{{ post.postnum }}{% endfilter %}</div>{% endif %} | |||
{% if post.lastedit %}<p style="font-size: small; font-style: italic">Last edited{% if post.admin_post == 'yes' %} by moderator{% endif %} {{ post.lastedit }}. (IP: {{ (post.lastedit_ip)|dec_to_dot }})</p>{% endif %} | |||
</blockquote> | |||
</td></tr></tbody></table> | |||
{% endif %} | |||
{% endfor %} | |||
<br clear="left" /><hr /> | |||
{% endfor %} | |||
<div class="delbuttons" style="float:right"> | |||
<input type="submit" name="handle" value="Restore" /> | |||
<input type="submit" name="handle" value="{{ strings.MPDELETE }}" /> | |||
<input type="reset" value="{{ strings.MPRESET }}" /> | |||
</div> | |||
</form> | |||
{% if not thread %} | |||
<table border="1" style="float:left"><tbody><tr><td> | |||
{% if prevpage != 'none' %}<form method="get" action="{{ get_script_name() }}"><input type="hidden" name="task" value="postbackups" /><input type="hidden" name="board" value="{{ board.name }}" /><input type="hidden" name="page" value="{{ prevpage }}" /><input value="{{ strings.PREV }}" type="submit" /></form>{% endif %} | |||
{% if prevpage == 'none' %}{{ strings.FIRSTPG }}{% endif %} | |||
</td><td> | |||
{% for page in pages %} | |||
{% if not page.current %}[<a href="{{ page.filename }}">{{ page.page }}</a>]{% endif %} | |||
{% if page.current %}[{{ page.page }}]{% endif %} | |||
{% endfor %} | |||
</td><td> | |||
{% if nextpage != 'none' %}<form method="get" action="{{ get_script_name() }}"><input type="hidden" name="task" value="postbackups" /><input type="hidden" name="board" value="{{ board.name }}" /><input type="hidden" name="page" value="{{ nextpage }}" /><input value="{{ strings.NEXT }}" type="submit" /></form>{% endif %} | |||
{% if nextpage == 'none' %}{{ strings.LASTPG }}{% endif %} | |||
</td></tr></tbody></table> | |||
{% endif %} | |||
<br clear="all" /> | |||
{% endif %} | |||
{% include 'normal_foot_include.html' %} |
@@ -0,0 +1,115 @@ | |||
{% include 'manager_head_include.html' %} | |||
<div class="dellist"><h2>{{ strings.MANABANS }}</h2></div> | |||
<div class="postarea"> | |||
<table><tbody><tr><td valign="middle"> | |||
<form action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="task" value="addip" /> | |||
<input type="hidden" name="type" value="ipban" /> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<table><tbody> | |||
<tr><td class="postblock">{{ strings.BANIPLABEL }}</td><td><input type="text" name="ip" size="24" value="{{ (ip)|dec_to_dot }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANMASKLABEL }}</td><td><input type="text" name="mask" size="24" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANEXPIRE }}</td><td><input type="text" name="expiration" size="16" /><br/> | |||
<select name="expirepresets" onchange="this.form.expiration.value = this.form.expirepresets.options[this.form.expirepresets.selectedIndex].value;"> | |||
<option value="" selected="selected">Presets</option> | |||
<option value="300">5 minutes</option> | |||
<option value="900">15 minutes</option> | |||
<option value="1800">30 minutes</option> | |||
<option value="3600">1 hour</option> | |||
<option value="7200">2 hours</option> | |||
<option value="43200">12 hours</option> | |||
<option value="86400">1 day</option> | |||
<option value="172800">2 days</option> | |||
<option value="604800">1 week</option> | |||
<option value="1209600">2 weeks</option> | |||
<option value="2419200">~1 month</option> | |||
<option value="4838400">~2 months</option> | |||
<option value="15768000">6 months</option> | |||
<option value="31536000">1 year</option> | |||
<option value="0">Eternity</option> | |||
</select> (Javascript) | |||
</td></tr> | |||
<tr><td class="postblock">{{ strings.BANCOMMENTLABEL }}</td><td><input type="text" name="comment" size="24" /></td></tr> | |||
<tr><td class="postblock">{{ strings.TOTALBAN }}</td><td><input type="checkbox" name="total" value="yes" style="float:left; clear:none" /> <input type="submit" value="{{ strings.BANIP }}" style="float: right; clear: none"/></td></tr> | |||
</tbody></table></form> | |||
</td><td> </td><td valign="middle"> | |||
<form action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="task" value="addip" /> | |||
<input type="hidden" name="type" value="whitelist" /> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<table><tbody> | |||
<tr><td class="postblock">{{ strings.BANIPLABEL }}</td><td><input type="text" name="ip" size="24" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANMASKLABEL }}</td><td><input type="text" name="mask" size="24" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANCOMMENTLABEL }}</td><td><input type="text" name="comment" size="16" /> | |||
<input type="submit" value="{{ strings.BANWHITELIST }}" /></td></tr> | |||
</tbody></table></form> | |||
</td><td> </td></tr><tr><td valign="bottom"> | |||
<form action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="task" value="addstring" /> | |||
<input type="hidden" name="type" value="wordban" /> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<table><tbody> | |||
<tr><td class="postblock">{{ strings.BANWORDLABEL }}</td><td><input type="text" name="string" size="24" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANCOMMENTLABEL }}</td><td><input type="text" name="comment" size="16" /> | |||
<input type="submit" value="{{ strings.BANWORD }}" /></td></tr> | |||
</tbody></table></form> | |||
</td><td> </td><td valign="bottom"> | |||
<form action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="task" value="addstring" /> | |||
<input type="hidden" name="type" value="trust" /> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<table><tbody> | |||
<tr><td class="postblock">{{ strings.BANTRUSTTRIP }}</td><td><input type="text" name="string" size="24" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANCOMMENTLABEL }}</td><td><input type="text" name="comment" size="16" /> | |||
<input type="submit" value="{{ strings.BANTRUST }}" /></td></tr> | |||
</tbody></table></form> | |||
</td></tr></tbody></table> | |||
</div><br /> | |||
<table align="center"><tbody> | |||
<tr class="managehead">{{ strings.BANTABLE }}</tr> | |||
{% for ban in bans %} | |||
{% if ban.divider %}<tr class="managehead"><th colspan="7"></th></tr>{% endif %} | |||
<tr class="row{{ ban.rowtype }}"> | |||
{% if ban.type == 'ipban' %} | |||
<td>IP</td> | |||
<td>{{ (ban.ival1)|dec_to_dot }}/{{ (ban.ival2)|dec_to_dot }}</td> | |||
{% endif %} | |||
{% if ban.type == 'wordban' %} | |||
<td>Word</td> | |||
<td>{{ (ban.sval1)|clean_string }}</td> | |||
{% endif %} | |||
{% if ban.type == 'trust' %} | |||
<td>NoCap</td> | |||
<td>{{ ban.sval1 }}</td> | |||
{% endif %} | |||
{% if ban.type == 'whitelist' %} | |||
<td>Whitelist</td> | |||
<td>{{ (ban.ival1)|dec_to_dot }}/{{ (ban.ival2)|dec_to_dot }}</td> | |||
{% endif %} | |||
<td>{{ (ban.comment)|clean_string }}</td> | |||
<td>{{ ban.expirehuman }}</td> | |||
<td style="text-align: center">{% if ban.type == 'ipban' %}{{ ban.browsingban }}{% endif %}{% if ban.type != 'ipban' %}--{% endif %}</td> | |||
<td>{{ ban.username }}</td> | |||
<td>[<a href="{{ get_script_name() }}?board={{ board.name }}&task=removeban&num={{ ban.num }}">{{ strings.BANREMOVE }}</a>] | |||
[<a href="{{ get_script_name() }}?board={{ board.name }}&task=baneditwindow&num={{ ban.num }}" target="_blank" onclick="popUp('{{ get_script_name() }}?board={{ board.name }}&task=baneditwindow&num={{ ban.num }}'); return false">{{ strings.BANEDIT }}</a>]</td> | |||
</tr> | |||
{% endfor %} | |||
</tbody></table><br /> | |||
{% include 'normal_foot_include.html' %} |
@@ -0,0 +1,49 @@ | |||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> | |||
<head> | |||
<link rel="stylesheet" type="text/css" href="/site.css" /> | |||
<title>{{ strings.BADHOST }} - Cirnochan</title> | |||
</head> | |||
<body class="content"> | |||
<div class="top"> | |||
<div class="wrapper"> | |||
<h1> | |||
<img border="0" src="desubanner.png" width="800" height="128" alt="The mother fucking banner goes here" /> | |||
</h1> | |||
<div class="bodywrapper"> | |||
<div class="subheader"> | |||
Back to the Internet desu~ | |||
</div> | |||
<div id="bannotice" class="contentbody"> | |||
<div class="item"> | |||
<div class="itemheader"> | |||
<h3>{{ strings.BADHOST }}</h3> | |||
</div> | |||
<div class="itemcontent"> | |||
<p style="text-align:center"><img src="{{ ('/include/boards/ban_images/randimg.php')|expand_url }}" alt="Ban Image" /></p> | |||
<p><em>{{ strings.BAN_WHY }}</em></p> | |||
<p>{{ strings.BAN_REASON }}: <strong>{{ comment }}</strong></p> | |||
<p>{{ strings.CURRENT_IP }} <strong>{{ numip }}</strong></p> | |||
<p>{% if expiration %}{{ strings.BAN_WILL_EXPIRE }} <strong>{{ expiration }}</strong>.{% endif %} | |||
{% if not expiration %}{{ strings.BAN_WILL_NOT_EXPIRE }}{% endif %}</p> | |||
</div> | |||
</div> | |||
<div class="item"> | |||
<div class="itemheader"> | |||
<h3>{{ strings.BAN_APPEAL_HEADER }}</h3> | |||
</div> | |||
<div class="itemcontent"> | |||
<p>{{ appeal }}</p> | |||
<!-- Temporary Notice --> | |||
<p><em>(Due to changing its software base from Kareha to our global Wakaba script, you will have to post from another computer. Sorry. This will be addressed soon. —(K.) Anonymous)</em></p> | |||
</div> | |||
</div> | |||
<div class="footertext">Template Updated: 19 July 2008</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</body> | |||
</html> |
@@ -0,0 +1,34 @@ | |||
{% include 'mini_head_include.html' %} | |||
<h1 style="text-align: center; font-size: 1em;color: red">Banning All Users in Thread No.{{ num }}</h1> | |||
<p align="center"><em>Careful!</em></p> | |||
<form action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="task" value="banthreadconfirm" /> | |||
<input type="hidden" name="num" value="{{ num }}" /> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<table align="center"><tbody> | |||
<tr><td class="postblock">{{ strings.BANEXPIRE }}</td><td><input type="text" name="expiration" size="16" /><br/> | |||
<select name="expirepresets" onchange="this.form.expiration.value = this.form.expirepresets.options[this.form.expirepresets.selectedIndex].value;"> | |||
<option value="" selected="selected">Presets</option> | |||
<option value="300">5 minutes</option> | |||
<option value="900">15 minutes</option> | |||
<option value="1800">30 minutes</option> | |||
<option value="3600">1 hour</option> | |||
<option value="7200">2 hours</option> | |||
<option value="43200">12 hours</option> | |||
<option value="86400">1 day</option> | |||
<option value="172800">2 days</option> | |||
<option value="604800">1 week</option> | |||
<option value="1209600">2 weeks</option> | |||
<option value="2419200">~1 month</option> | |||
<option value="4838400">~2 months</option> | |||
<option value="15768000">6 months</option> | |||
<option value="31536000">1 year</option> | |||
<option value="0">Eternity</option> | |||
</select> (Javascript) | |||
</td></tr> | |||
<tr><td class="postblock">{{ strings.BANCOMMENTLABEL }}</td><td><input type="text" name="comment" size="24" /></td></tr> | |||
<tr><td class="postblock">{{ strings.TOTALBAN }}</td><td><input type="checkbox" name="total" value="yes" style="float:left; clear:none" /> <input type="submit" value="{{ strings.BANIP }}" style="float: right; clear: none"/></td></tr> | |||
</tbody></table> | |||
<p align="center">[<label><input type="checkbox" name="delete" value="yes" /> Delete Thread?</label>]</p> | |||
</form> | |||
{% include 'mini_foot_include.html' %} |
@@ -0,0 +1,35 @@ | |||
{% include 'mini_head_include.html' %} | |||
<h1 style="text-align: center; font-size: 1em">{% if delete %}Banning IP Address {{ ip }} and Deleting Post {{ delete }}{% endif %}{% if not delete %}Banning IP Address {{ ip }}{% endif %}</h1> | |||
<form action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="ip" value="{{ ip }}" /> | |||
<input type="hidden" name="task" value="addipfrompopup" /> | |||
<input type="hidden" name="delete" value="{{ delete }}" /> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<table align="center"><tbody> | |||
<tr><td class="postblock">{{ strings.BANMASKLABEL }}</td><td><input type="text" name="mask" value="255.255.255.255" size="24" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANEXPIRE }}</td><td><input type="text" name="expiration" size="16" /><br/> | |||
<select name="expirepresets" onchange="this.form.expiration.value = this.form.expirepresets.options[this.form.expirepresets.selectedIndex].value;"> | |||
<option value="" selected="selected">Presets</option> | |||
<option value="300">5 minutes</option> | |||
<option value="900">15 minutes</option> | |||
<option value="1800">30 minutes</option> | |||
<option value="3600">1 hour</option> | |||
<option value="7200">2 hours</option> | |||
<option value="43200">12 hours</option> | |||
<option value="86400">1 day</option> | |||
<option value="172800">2 days</option> | |||
<option value="604800">1 week</option> | |||
<option value="1209600">2 weeks</option> | |||
<option value="2419200">~1 month</option> | |||
<option value="4838400">~2 months</option> | |||
<option value="15768000">6 months</option> | |||
<option value="31536000">1 year</option> | |||
<option value="0">Eternity</option> | |||
</select> (Javascript) | |||
</td></tr> | |||
<tr><td class="postblock">{{ strings.BANCOMMENTLABEL }}</td><td><input type="text" name="comment" size="24" /></td></tr> | |||
<tr><td class="postblock">{{ strings.TOTALBAN }}</td><td><input type="checkbox" name="total" value="yes" style="float:left; clear:none" /> <input type="submit" value="{{ strings.BANIP }}" style="float: right; clear: none"/></td></tr> | |||
</tbody></table> | |||
{% if delete %}<p align="center">[<label><input type="checkbox" name="deleteall_confirm" value="1" /> Delete <strong>All</strong> Posts From IP/Mask ({{ count }} for default mask)?</label>]</p>{% endif %} | |||
</form> | |||
{% include 'mini_foot_include.html' %} |
@@ -0,0 +1,13 @@ | |||
{% include 'manager_head_include.html' %} | |||
<div class="dellist"><h2>Delete All Posts Confirmation</h2></div> | |||
<p align="center">Are you sure you want to delete all <strong>{{ post_count }}</strong> posts by IP {{ ip }}?</p> | |||
<form id="confirm" action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<input type="hidden" name="task" value="deleteall" /> | |||
<input type="hidden" name="ip" value="{{ ip }}" /> | |||
<input type="hidden" name="mask" value="{{ mask }}" /> | |||
<input type="hidden" name="global" value="{{ global }}" /> | |||
<p align="center"><input type="submit" value="Yes" /></p> | |||
</form> | |||
{% include 'normal_foot_include.html' %} |
@@ -0,0 +1,16 @@ | |||
{% include 'mini_head_include.html' %} | |||
<h1 style="text-align:center;font-size:1em">Deleting Post No.{{ num }}</h1> | |||
<form action="{{ get_script_name() }}" method="post" id="delform"> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<input type="hidden" name="task" value="delete" /> | |||
<input type="hidden" name="num" value="{{ num }}" /> | |||
<input type="hidden" name="fromwindow" value="1" /> | |||
<p style="text-align:center"> | |||
{{ strings.PROMPTPASSWORD }}<input type="password" name="password" size="8"/> | |||
<br /> | |||
[<label><input type="checkbox" name="fileonly" value="on" />{{ strings.DELPICONLY }}</label>] | |||
<input value="Delete" type="submit" /> | |||
</p> | |||
<script type="text/javascript">set_delpass("delform")</script> | |||
</form> | |||
{% include 'mini_foot_include.html' %} |
@@ -0,0 +1,3 @@ | |||
{% include 'mini_head_refresh_include.html' %} | |||
<p style="font-size: 1em; text-align: center; font-weight: bold">Update Successful!</p> | |||
{% include 'mini_foot_include.html' %} |
@@ -0,0 +1,258 @@ | |||
{% include 'mini_head_include.html' %} | |||
<h1 style="text-align: center; font-size: 1em">Editing Admin Entry</h1> | |||
<div class="postarea"> | |||
{% for row in hash %} | |||
{% if row.type == 'ipban' %} | |||
<form action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="task" value="adminedit" /> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<input type="hidden" name="type" value="ipban" /> | |||
<input type="hidden" name="num" value="{{ row.num }}" /> | |||
<table><tbody> | |||
<tr><td class="postblock">{{ strings.BANIPLABEL }}</td><td><input type="text" name="ival1" size="24" value="{{ (row.ival1)|dec_to_dot }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANMASKLABEL }}</td><td><input type="text" name="ival2" size="24" value="{{ (row.ival2)|dec_to_dot }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANEXPIRE_EDIT }}</td><td> | |||
<select name="day"> | |||
<option value="1"{% if day == 1 %} selected="selected"{% endif %}>1</option> | |||
<option value="2"{% if day == 2 %} selected="selected"{% endif %}>2</option> | |||
<option value="3"{% if day == 3 %} selected="selected"{% endif %}>3</option> | |||
<option value="4"{% if day == 4 %} selected="selected"{% endif %}>4</option> | |||
<option value="5"{% if day == 5 %} selected="selected"{% endif %}>5</option> | |||
<option value="6"{% if day == 6 %} selected="selected"{% endif %}>6</option> | |||
<option value="7"{% if day == 7 %} selected="selected"{% endif %}>7</option> | |||
<option value="8"{% if day == 8 %} selected="selected"{% endif %}>8</option> | |||
<option value="9"{% if day == 9 %} selected="selected"{% endif %}>9</option> | |||
<option value="10"{% if day == 10 %} selected="selected"{% endif %}>10</option> | |||
<option value="11"{% if day == 11 %} selected="selected"{% endif %}>11</option> | |||
<option value="12"{% if day == 12 %} selected="selected"{% endif %}>12</option> | |||
<option value="13"{% if day == 13 %} selected="selected"{% endif %}>13</option> | |||
<option value="14"{% if day == 14 %} selected="selected"{% endif %}>14</option> | |||
<option value="15"{% if day == 15 %} selected="selected"{% endif %}>15</option> | |||
<option value="16"{% if day == 16 %} selected="selected"{% endif %}>16</option> | |||
<option value="17"{% if day == 17 %} selected="selected"{% endif %}>17</option> | |||
<option value="18"{% if day == 18 %} selected="selected"{% endif %}>18</option> | |||
<option value="19"{% if day == 19 %} selected="selected"{% endif %}>19</option> | |||
<option value="20"{% if day == 20 %} selected="selected"{% endif %}>20</option> | |||
<option value="21"{% if day == 21 %} selected="selected"{% endif %}>21</option> | |||
<option value="22"{% if day == 22 %} selected="selected"{% endif %}>22</option> | |||
<option value="23"{% if day == 23 %} selected="selected"{% endif %}>23</option> | |||
<option value="24"{% if day == 24 %} selected="selected"{% endif %}>24</option> | |||
<option value="25"{% if day == 25 %} selected="selected"{% endif %}>25</option> | |||
<option value="26"{% if day == 26 %} selected="selected"{% endif %}>26</option> | |||
<option value="27"{% if day == 27 %} selected="selected"{% endif %}>27</option> | |||
<option value="28"{% if day == 28 %} selected="selected"{% endif %}>28</option> | |||
<option value="29"{% if day == 29 %} selected="selected"{% endif %}>29</option> | |||
<option value="30"{% if day == 30 %} selected="selected"{% endif %}>30</option> | |||
<option value="31"{% if day == 31 %} selected="selected"{% endif %}>31</option> | |||
</select> | |||
<select name="month"> | |||
<option value="1" {% if month == 0 %}selected="selected"{% endif %}>January</option> | |||
<option value="2" {% if month == 1 %}selected="selected"{% endif %}>February</option> | |||
<option value="3" {% if month == 2 %}selected="selected"{% endif %}>March</option> | |||
<option value="4" {% if month == 3 %}selected="selected"{% endif %}>April</option> | |||
<option value="5" {% if month == 4 %}selected="selected"{% endif %}>May</option> | |||
<option value="6" {% if month == 5 %}selected="selected"{% endif %}>June</option> | |||
<option value="7" {% if month == 6 %}selected="selected"{% endif %}>July</option> | |||
<option value="8" {% if month == 7 %}selected="selected"{% endif %}>August</option> | |||
<option value="9" {% if month == 8 %}selected="selected"{% endif %}>September</option> | |||
<option value="10" {% if month == 9 %}selected="selected"{% endif %}>October</option> | |||
<option value="11" {% if month == 10 %}selected="selected"{% endif %}>November</option> | |||
<option value="12" {% if month == 11 %}selected="selected"{% endif %}>December</option> | |||
</select> | |||
<input type="text" name="year" value="{{ year }}" size="5" /> | |||
<br /> | |||
<select name="hour"> | |||
<option value="0" {% if hour == 0 %}selected="selected"{% endif %}>00</option> | |||
<option value="1" {% if hour == 1 %}selected="selected"{% endif %}>01</option> | |||
<option value="2" {% if hour == 2 %}selected="selected"{% endif %}>02</option> | |||
<option value="3" {% if hour == 3 %}selected="selected"{% endif %}>03</option> | |||
<option value="4" {% if hour == 4 %}selected="selected"{% endif %}>04</option> | |||
<option value="5" {% if hour == 5 %}selected="selected"{% endif %}>05</option> | |||
<option value="6" {% if hour == 6 %}selected="selected"{% endif %}>06</option> | |||
<option value="7" {% if hour == 7 %}selected="selected"{% endif %}>07</option> | |||
<option value="8" {% if hour == 8 %}selected="selected"{% endif %}>08</option> | |||
<option value="9" {% if hour == 9 %}selected="selected"{% endif %}>09</option> | |||
<option value="10" {% if hour == 10 %}selected="selected"{% endif %}>10</option> | |||
<option value="11" {% if hour == 11 %}selected="selected"{% endif %}>11</option> | |||
<option value="12" {% if hour == 12 %}selected="selected"{% endif %}>12</option> | |||
<option value="13" {% if hour == 13 %}selected="selected"{% endif %}>13</option> | |||
<option value="14" {% if hour == 14 %}selected="selected"{% endif %}>14</option> | |||
<option value="15" {% if hour == 15 %}selected="selected"{% endif %}>15</option> | |||
<option value="16" {% if hour == 16 %}selected="selected"{% endif %}>16</option> | |||
<option value="17" {% if hour == 17 %}selected="selected"{% endif %}>17</option> | |||
<option value="18" {% if hour == 18 %}selected="selected"{% endif %}>18</option> | |||
<option value="19" {% if hour == 19 %}selected="selected"{% endif %}>19</option> | |||
<option value="20" {% if hour == 20 %}selected="selected"{% endif %}>20</option> | |||
<option value="21" {% if hour == 21 %}selected="selected"{% endif %}>21</option> | |||
<option value="22" {% if hour == 22 %}selected="selected"{% endif %}>22</option> | |||
<option value="23" {% if hour == 23 %}selected="selected"{% endif %}>23</option> | |||
</select> : | |||
<select name="min"> | |||
<option value="0" {% if min == 0 %}selected="selected"{% endif %}>00</option> | |||
<option value="1" {% if min == 1 %}selected="selected"{% endif %}>01</option> | |||
<option value="2" {% if min == 2 %}selected="selected"{% endif %}>02</option> | |||
<option value="3" {% if min == 3 %}selected="selected"{% endif %}>03</option> | |||
<option value="4" {% if min == 4 %}selected="selected"{% endif %}>04</option> | |||
<option value="5" {% if min == 5 %}selected="selected"{% endif %}>05</option> | |||
<option value="6" {% if min == 6 %}selected="selected"{% endif %}>06</option> | |||
<option value="7" {% if min == 7 %}selected="selected"{% endif %}>07</option> | |||
<option value="8" {% if min == 8 %}selected="selected"{% endif %}>08</option> | |||
<option value="9" {% if min == 9 %}selected="selected"{% endif %}>09</option> | |||
<option value="10" {% if min == 10 %}selected="selected"{% endif %}>10</option> | |||
<option value="11" {% if min == 11 %}selected="selected"{% endif %}>11</option> | |||
<option value="12" {% if min == 12 %}selected="selected"{% endif %}>12</option> | |||
<option value="13" {% if min == 13 %}selected="selected"{% endif %}>13</option> | |||
<option value="14" {% if min == 14 %}selected="selected"{% endif %}>14</option> | |||
<option value="15" {% if min == 15 %}selected="selected"{% endif %}>15</option> | |||
<option value="16" {% if min == 16 %}selected="selected"{% endif %}>16</option> | |||
<option value="17" {% if min == 17 %}selected="selected"{% endif %}>17</option> | |||
<option value="18" {% if min == 18 %}selected="selected"{% endif %}>18</option> | |||
<option value="19" {% if min == 19 %}selected="selected"{% endif %}>19</option> | |||
<option value="20" {% if min == 20 %}selected="selected"{% endif %}>20</option> | |||
<option value="21" {% if min == 21 %}selected="selected"{% endif %}>21</option> | |||
<option value="22" {% if min == 22 %}selected="selected"{% endif %}>22</option> | |||
<option value="23" {% if min == 23 %}selected="selected"{% endif %}>23</option> | |||
<option value="24" {% if min == 24 %}selected="selected"{% endif %}>24</option> | |||
<option value="25" {% if min == 25 %}selected="selected"{% endif %}>25</option> | |||
<option value="26" {% if min == 26 %}selected="selected"{% endif %}>26</option> | |||
<option value="27" {% if min == 27 %}selected="selected"{% endif %}>27</option> | |||
<option value="28" {% if min == 28 %}selected="selected"{% endif %}>28</option> | |||
<option value="29" {% if min == 29 %}selected="selected"{% endif %}>29</option> | |||
<option value="30" {% if min == 30 %}selected="selected"{% endif %}>30</option> | |||
<option value="31" {% if min == 31 %}selected="selected"{% endif %}>31</option> | |||
<option value="32" {% if min == 32 %}selected="selected"{% endif %}>32</option> | |||
<option value="33" {% if min == 33 %}selected="selected"{% endif %}>33</option> | |||
<option value="34" {% if min == 34 %}selected="selected"{% endif %}>34</option> | |||
<option value="35" {% if min == 35 %}selected="selected"{% endif %}>35</option> | |||
<option value="36" {% if min == 36 %}selected="selected"{% endif %}>36</option> | |||
<option value="37" {% if min == 37 %}selected="selected"{% endif %}>37</option> | |||
<option value="38" {% if min == 38 %}selected="selected"{% endif %}>38</option> | |||
<option value="39" {% if min == 39 %}selected="selected"{% endif %}>39</option> | |||
<option value="40" {% if min == 40 %}selected="selected"{% endif %}>40</option> | |||
<option value="41" {% if min == 41 %}selected="selected"{% endif %}>41</option> | |||
<option value="42" {% if min == 42 %}selected="selected"{% endif %}>42</option> | |||
<option value="43" {% if min == 43 %}selected="selected"{% endif %}>43</option> | |||
<option value="44" {% if min == 44 %}selected="selected"{% endif %}>44</option> | |||
<option value="45" {% if min == 45 %}selected="selected"{% endif %}>45</option> | |||
<option value="46" {% if min == 46 %}selected="selected"{% endif %}>46</option> | |||
<option value="47" {% if min == 47 %}selected="selected"{% endif %}>47</option> | |||
<option value="48" {% if min == 48 %}selected="selected"{% endif %}>48</option> | |||
<option value="49" {% if min == 49 %}selected="selected"{% endif %}>49</option> | |||
<option value="50" {% if min == 50 %}selected="selected"{% endif %}>50</option> | |||
<option value="51" {% if min == 51 %}selected="selected"{% endif %}>51</option> | |||
<option value="52" {% if min == 52 %}selected="selected"{% endif %}>52</option> | |||
<option value="53" {% if min == 53 %}selected="selected"{% endif %}>53</option> | |||
<option value="54" {% if min == 54 %}selected="selected"{% endif %}>54</option> | |||
<option value="55" {% if min == 55 %}selected="selected"{% endif %}>55</option> | |||
<option value="56" {% if min == 56 %}selected="selected"{% endif %}>56</option> | |||
<option value="57" {% if min == 57 %}selected="selected"{% endif %}>57</option> | |||
<option value="58" {% if min == 58 %}selected="selected"{% endif %}>58</option> | |||
<option value="59" {% if min == 59 %}selected="selected"{% endif %}>59</option> | |||
<option value="60" {% if min == 60 %}selected="selected"{% endif %}>60</option> | |||
</select> : | |||
<select name="sec"> | |||
<option value="0" {% if sec == 0 %}selected="selected"{% endif %}>00</option> | |||
<option value="1" {% if sec == 1 %}selected="selected"{% endif %}>01</option> | |||
<option value="2" {% if sec == 2 %}selected="selected"{% endif %}>02</option> | |||
<option value="3" {% if sec == 3 %}selected="selected"{% endif %}>03</option> | |||
<option value="4" {% if sec == 4 %}selected="selected"{% endif %}>04</option> | |||
<option value="5" {% if sec == 5 %}selected="selected"{% endif %}>05</option> | |||
<option value="6" {% if sec == 6 %}selected="selected"{% endif %}>06</option> | |||
<option value="7" {% if sec == 7 %}selected="selected"{% endif %}>07</option> | |||
<option value="8" {% if sec == 8 %}selected="selected"{% endif %}>08</option> | |||
<option value="9" {% if sec == 9 %}selected="selected"{% endif %}>09</option> | |||
<option value="10" {% if sec == 10 %}selected="selected"{% endif %}>10</option> | |||
<option value="11" {% if sec == 11 %}selected="selected"{% endif %}>11</option> | |||
<option value="12" {% if sec == 12 %}selected="selected"{% endif %}>12</option> | |||
<option value="13" {% if sec == 13 %}selected="selected"{% endif %}>13</option> | |||
<option value="14" {% if sec == 14 %}selected="selected"{% endif %}>14</option> | |||
<option value="15" {% if sec == 15 %}selected="selected"{% endif %}>15</option> | |||
<option value="16" {% if sec == 16 %}selected="selected"{% endif %}>16</option> | |||
<option value="17" {% if sec == 17 %}selected="selected"{% endif %}>17</option> | |||
<option value="18" {% if sec == 18 %}selected="selected"{% endif %}>18</option> | |||
<option value="19" {% if sec == 19 %}selected="selected"{% endif %}>19</option> | |||
<option value="20" {% if sec == 20 %}selected="selected"{% endif %}>20</option> | |||
<option value="21" {% if sec == 21 %}selected="selected"{% endif %}>21</option> | |||
<option value="22" {% if sec == 22 %}selected="selected"{% endif %}>22</option> | |||
<option value="23" {% if sec == 23 %}selected="selected"{% endif %}>23</option> | |||
<option value="24" {% if sec == 24 %}selected="selected"{% endif %}>24</option> | |||
<option value="25" {% if sec == 25 %}selected="selected"{% endif %}>25</option> | |||
<option value="26" {% if sec == 26 %}selected="selected"{% endif %}>26</option> | |||
<option value="27" {% if sec == 27 %}selected="selected"{% endif %}>27</option> | |||
<option value="28" {% if sec == 28 %}selected="selected"{% endif %}>28</option> | |||
<option value="29" {% if sec == 29 %}selected="selected"{% endif %}>29</option> | |||
<option value="30" {% if sec == 30 %}selected="selected"{% endif %}>30</option> | |||
<option value="31" {% if sec == 31 %}selected="selected"{% endif %}>31</option> | |||
<option value="32" {% if sec == 32 %}selected="selected"{% endif %}>32</option> | |||
<option value="33" {% if sec == 33 %}selected="selected"{% endif %}>33</option> | |||
<option value="34" {% if sec == 34 %}selected="selected"{% endif %}>34</option> | |||
<option value="35" {% if sec == 35 %}selected="selected"{% endif %}>35</option> | |||
<option value="36" {% if sec == 36 %}selected="selected"{% endif %}>36</option> | |||
<option value="37" {% if sec == 37 %}selected="selected"{% endif %}>37</option> | |||
<option value="38" {% if sec == 38 %}selected="selected"{% endif %}>38</option> | |||
<option value="39" {% if sec == 39 %}selected="selected"{% endif %}>39</option> | |||
<option value="40" {% if sec == 40 %}selected="selected"{% endif %}>40</option> | |||
<option value="41" {% if sec == 41 %}selected="selected"{% endif %}>41</option> | |||
<option value="42" {% if sec == 42 %}selected="selected"{% endif %}>42</option> | |||
<option value="43" {% if sec == 43 %}selected="selected"{% endif %}>43</option> | |||
<option value="44" {% if sec == 44 %}selected="selected"{% endif %}>44</option> | |||
<option value="45" {% if sec == 45 %}selected="selected"{% endif %}>45</option> | |||
<option value="46" {% if sec == 46 %}selected="selected"{% endif %}>46</option> | |||
<option value="47" {% if sec == 47 %}selected="selected"{% endif %}>47</option> | |||
<option value="48" {% if sec == 48 %}selected="selected"{% endif %}>48</option> | |||
<option value="49" {% if sec == 49 %}selected="selected"{% endif %}>49</option> | |||
<option value="50" {% if sec == 50 %}selected="selected"{% endif %}>50</option> | |||
<option value="51" {% if sec == 51 %}selected="selected"{% endif %}>51</option> | |||
<option value="52" {% if sec == 52 %}selected="selected"{% endif %}>52</option> | |||
<option value="53" {% if sec == 53 %}selected="selected"{% endif %}>53</option> | |||
<option value="54" {% if sec == 54 %}selected="selected"{% endif %}>54</option> | |||
<option value="55" {% if sec == 55 %}selected="selected"{% endif %}>55</option> | |||
<option value="56" {% if sec == 56 %}selected="selected"{% endif %}>56</option> | |||
<option value="57" {% if sec == 57 %}selected="selected"{% endif %}>57</option> | |||
<option value="58" {% if sec == 58 %}selected="selected"{% endif %}>58</option> | |||
<option value="59" {% if sec == 59 %}selected="selected"{% endif %}>59</option> | |||
<option value="60" {% if sec == 60 %}selected="selected"{% endif %}>60</option> | |||
</select> UTC<br /> | |||
<input type="checkbox" name="noexpire" value="noexpire"{% if row.expiration == 0 %} checked="checked"{% endif %} /> {{ strings.SETNOEXPIRE }} | |||
</td></tr> | |||
<tr><td class="postblock">{{ strings.BANCOMMENTLABEL }}</td><td><input type="text" name="comment" size="16" value="{{ row.comment }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.TOTALBAN }}</td><td><input type="checkbox" name="total" value="yes"{% if row.total == 'yes' %} checked="checked"{% endif %} style="float:left; clear:none" /> | |||
<input type="submit" value="{{ strings.UPDATE }}" style="float: right; clear:none"/></td></tr> | |||
</tbody></table></form>{% endif %} | |||
{% if row.type == 'whitelist' %} | |||
<form action="{{ get_script_name() }}?board={{ board.name }}" method="post"> | |||
<input type="hidden" name="task" value="adminedit" /> | |||
<input type="hidden" name="type" value="whitelist" /> | |||
<input type="hidden" name="num" value="{{ row.num }}" /> | |||
<table><tbody> | |||
<tr><td class="postblock">{{ strings.BANIPLABEL }}</td><td><input type="text" name="ival1" size="24" value="{{ (row.ival1)|dec_to_dot }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANMASKLABEL }}</td><td><input type="text" name="ival2" size="24" value="{{ (row.ival2)|dec_to_dot }}"/></td></tr> | |||
<tr><td class="postblock">{{ strings.BANCOMMENTLABEL }}</td><td><input type="text" name="comment" size="16" value="{{ row.comment }}" /> | |||
<input type="submit" value="{{ strings.UPDATE }}" /></td></tr> | |||
</tbody></table></form> | |||
{% endif %} | |||
{% if row.type == 'trust' %} | |||
<form action="{{ get_script_name() }}?board={{ board.name }}" method="post"> | |||
<input type="hidden" name="task" value="adminedit" /> | |||
<input type="hidden" name="type" value="trust" /> | |||
<input type="hidden" name="num" value="{{ row.num }}" /> | |||
<table><tbody> | |||
<tr><td class="postblock">{{ strings.BANTRUSTTRIP }}</td><td><input type="text" name="sval1" size="24" value="{{ row.sval1 }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.BANCOMMENTLABEL }}</td><td><input type="text" name="comment" size="16" value="{{ row.comment }}" /> | |||
<input type="submit" value="{{ strings.UPDATE }}" /></td></tr> | |||
</tbody></table></form> | |||
{% endif %} | |||
{% if row.type == 'wordban' %} | |||
<form action="{{ get_script_name() }}?board={{ board.name }}" method="post"> | |||
<input type="hidden" name="task" value="adminedit" /> | |||
<input type="hidden" name="type" value="wordban" /> | |||
<input type="hidden" name="num" value="{{ row.num }}" /> | |||
<table><tbody> | |||
<tr><td class="postblock">{{ strings.BANWORDLABEL }}</td><td><input type="text" name="sval1" size="24" value="{{ row.sval1 }}"/></td></tr> | |||
<tr><td class="postblock">{{ strings.BANCOMMENTLABEL }}</td><td><input type="text" name="comment" size="16" value="{{ row.comment }}" /> | |||
<input type="submit" value="{{ strings.UPDATE }}" /></td></tr> | |||
</tbody></table></form> | |||
{% endif %} | |||
{% endfor %} | |||
</div> | |||
{% include 'mini_foot_include.html' %} |
@@ -0,0 +1,7 @@ | |||
{% include 'normal_head_include.html' %} | |||
<h1 style="text-align: center">{{ error }}<br /><br /> | |||
<a href="{{ (environ['HTTP_REFERER'])|escape }}">{{ strings.RETURN }}</a><br /><br /> | |||
</h1> | |||
{% include 'normal_foot_include.html' %} |
@@ -0,0 +1,7 @@ | |||
{% include 'mini_head_include.html' %} | |||
<h1 style="text-align:center">{{ error }}<br /><br /> | |||
<a href="{{ (environ['HTTP_REFERER'])|escape }}">{{ strings.RETURN }}</a><br /><br /> | |||
</h1> | |||
{% include 'mini_foot_include.html' %} |
@@ -0,0 +1,12 @@ | |||
{% include 'normal_head_include.html' %} | |||
<div align="center"> | |||
<h2>First Time Setup</h2> | |||
<form action="{{ get_script_name() }}" method="post"> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<input type="hidden" name="task" value="entersetup" /> | |||
<p>Staff accounts have not yet been set up.</p> | |||
{{ strings.ADMINPASS }} | |||
<input type="password" name="berra" size="8" value="" /> | |||
<input type="submit" value="{{ strings.MANASUB }}" /> | |||
</form></div> | |||
{% include 'normal_foot_include.html' %} |
@@ -0,0 +1,27 @@ | |||
{% include 'normal_head_include.html' %} | |||
<span style="float:left">[<a href="{{ (board.options.HTML_SELF)|expand_url(1) }}">{{ strings.MANARET }}</a>]</span> | |||
{% if admin %} | |||
<div style="float:right;font-size:85%;padding-left:2em"> | |||
<span style="float:left">[<a href="{{ get_script_name() }}?task=mpanel&board={{ board.name }}">{{ strings.MANAPANEL }}</a>] </span> | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=reports&board={{ board.name }}">Reports</a>] </span> | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=postbackups&board={{ board.name }}">Trash Bin</a>] </span> | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=bans&board={{ board.name }}">{{ strings.MANABANS }}</a>] </span> | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=proxy&board={{ board.name }}">{{ strings.MANAPROXY }}</a>] </span> | |||
{% if type == 'admin' %} | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=spam&board={{ board.name }}">{{ strings.MANASPAM }}</a>] </span> | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=sqldump&board={{ board.name }}">{{ strings.MANASQLDUMP }}</a>] </span> | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=sql&board={{ board.name }}">{{ strings.MANASQLINT }}</a>] </span> | |||
{% endif %} | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=rebuild&board={{ board.name }}">{{ strings.MANAREBUILD }}</a>] </span> | |||
{% if type == 'admin' %} | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=staff&board={{ board.name }}">Staff Management</a>] </span> | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=stafflog&board={{ board.name }}">Staff Activity</a>] </span> | |||
<span style="float:left;padding-left:0.2em">[<a href="{{ get_script_name() }}?task=security&board={{ board.name }}">Script Security</a>] </span> | |||
{% endif %} | |||
</div> | |||
{% endif %} | |||
<div class="passvalid" style="clear:both"><strong>{{ strings.MANAMODE }}</strong></div> | |||
{% if admin %}<div style="margin-top:0;float:left;font-size:120%;font-weight:bold">→ </div><div style="margin-top:0;margin-left:0.2em;float:left">Logged in as <span class="postername">{{ username }}</span> ({% if type == 'admin' %}Administrator{% endif %}{% if type == 'mod' %}Moderator{% endif %}{% if type == 'globmod' %}Global Moderator{% endif %}). [<a href="{{ get_script_name() }}?task=edituserwindow&username={{ username }}&board={{ board.name }}">Options</a>] [<a href="{{ get_script_name() }}?task=logout&board={{ board.name }}">{{ strings.MANALOGOUT }}</a>] <form action="{{ get_script_name() }}" id="boardselect" method="get" style="display:block"><input type="hidden" name="task" value="admin" /><label>Switch to board: <select name="board">{% for board in boards_select %}<option value="{{ board.board_entry }}">{{ board.board_entry }}</option>{% endfor %}</select></label> <input type="submit" name="switchboard" value="Go" /></form></div> | |||
{% if type != 'mod' %}<div style="margin-top:0;float:right"><strong>Global Options:</strong> [<a href="{{ get_script_name() }}?task=rebuildglobal&board={{ board.name }}">Rebuild Cache</a>]{% if type == 'admin' %} [<a href="{{ get_script_name() }}?task=restart&board={{ board.name }}">Restart Script</a>]{% endif %}</div>{% endif %}{% endif %} | |||
<br clear="all"/> |
@@ -0,0 +1,2 @@ | |||
</body></html> |
@@ -0,0 +1,35 @@ | |||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> | |||
<head> | |||
<title>{{ board.name }} - {{ board.options.TITLE }}</title> | |||
<meta http-equiv="Content-Type" content="text/html;charset={{ config.CHARSET }}" /> | |||
<link rel="shortcut icon" href="{{ (board.options.FAVICON)|expand_url }}" /> | |||
<style type="text/css"> | |||
#adv { background: url('/include/common/unblockad.png') center no-repeat;padding: 0px;margin: 0px auto;text-align:center;width:750px;height:107px;} | |||
body { margin: 0; padding: 8px; margin-bottom: auto; } | |||
blockquote blockquote { margin-left: 0em } | |||
form { margin-bottom: 0px } | |||
form .trap { display:none } | |||
.postarea { text-align: center } | |||
.postarea table { margin: 0px auto; text-align: left } | |||
.thumb { border: none; float: left; margin: 2px 20px } | |||
.nothumb { float: left; background: #eee; border: 2px dashed #aaa; text-align: center; margin: 2px 20px; padding: 1em 0.5em 1em 0.5em; } | |||
.reply blockquote, blockquote :last-child { margin-bottom: 0em } | |||
.reflink a { color: inherit; text-decoration: none } | |||
.reply .filesize { margin-left: 20px } | |||
.userdelete { float: right; text-align: center; white-space: nowrap } | |||
.replypage .replylink { display: none } | |||
</style> | |||
{% for stylesheet in stylesheets %} | |||
<link rel="{% if not stylesheet.default %}alternate {% endif %}stylesheet" type="text/css" href="{{ stylesheet.filename }}" title="{{ stylesheet.title }}" /> | |||
{% endfor %} | |||
<script type="text/javascript">var style_cookie="{{ board.options.STYLE_COOKIE }}"; var thread_cookie = "{{ board.name }}_hidden_threads"; var lastopenfield = 0;</script> | |||
<script type="text/javascript" src="{{ (config.JS_FILE)|root_path_to_filename }}"></script> | |||
</head> | |||
<body> |
@@ -0,0 +1,35 @@ | |||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> | |||
<head> | |||
<title>{% if title %}{{ title }} - {% endif %}{{ board.options.TITLE }}</title> | |||
<meta http-equiv="Content-Type" content="text/html;charset={{ config.CHARSET }}" /> | |||
<link rel="shortcut icon" href="{{ (board.options.FAVICON)|expand_url }}" /> | |||
<style type="text/css"> | |||
#adv { background: url('/include/common/unblockad.png') center no-repeat; padding: 0px; margin: 0px auto; text-align: center; } | |||
body { margin: 0; padding: 8px; margin-bottom: auto; } | |||
blockquote blockquote { margin-left: 0em } | |||
form { margin-bottom: 0px } | |||
form .trap { display:none } | |||
.postarea { text-align: center } | |||
.postarea table { margin: 0px auto; text-align: left } | |||
.thumb { border: none; float: left; margin: 2px 20px } | |||
.nothumb { float: left; background: #eee; border: 2px dashed #aaa; text-align: center; margin: 2px 20px; padding: 1em 0.5em 1em 0.5em; } | |||
.reply blockquote, blockquote :last-child { margin-bottom: 0em } | |||
.reflink a { color: inherit; text-decoration: none } | |||
.reply .filesize { margin-left: 20px } | |||
.userdelete { float: right; text-align: center; white-space: nowrap } | |||
.replypage .replylink { display: none } | |||
</style> | |||
{% for stylesheet in stylesheets %} | |||
<link rel="{% if not stylesheet.default %}alternate {% endif %}stylesheet" type="text/css" href="{{ stylesheet.filename }}" title="{{ stylesheet.title }}" /> | |||
{% endfor %} | |||
<script type="text/javascript">var style_cookie="{{ board.options.STYLE_COOKIE }}";</script> | |||
<script type="text/javascript" src="{{ (config.JS_FILE)|root_path_to_filename }}"></script> | |||
</head> | |||
<body onload="window.opener.location.reload()"> |
@@ -0,0 +1,2 @@ | |||
{% include 'include/boards/footer.html' %} | |||
</body></html> |
@@ -0,0 +1,60 @@ | |||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> | |||
<head> | |||
<meta http-equiv="expires" content="Wed, 03 Nov 1999 12:21:14 GMT" /> | |||
<meta http-equiv="Pragma" content="no-cache" /> | |||
<meta http-equiv="Cache-Control" content="no-cache" /> | |||
<title>{% if title %}{{ title }} - {% endif %}{{ board.options.TITLE }}</title> | |||
<meta http-equiv="Content-Type" content="text/html;charset={{ config.CHARSET }}" /> | |||
<link rel="shortcut icon" href="{{ (board.options.FAVICON)|expand_url }}" /> | |||
<style type="text/css"> | |||
#adv { background: url('/include/common/unblockad.png') center no-repeat;padding: 0px;margin: 0px auto;text-align:center;width:750px;height:107px;} | |||
body { margin: 0; padding: 8px; margin-bottom: auto; } | |||
blockquote blockquote { margin-left: 0em } | |||
form { margin-bottom: 0px } | |||
form .trap { display:none } | |||
.postarea { text-align: center } | |||
.postarea table { margin: 0px auto; text-align: left } | |||
.thumb { border: none; float: left; margin: 2px 20px } | |||
.nothumb { float: left; background: #eee; border: 2px dashed #aaa; text-align: center; margin: 2px 20px; padding: 1em 0.5em 1em 0.5em; } | |||
.reply blockquote, blockquote :last-child { margin-bottom: 0em } | |||
.reflink a { color: inherit; text-decoration: none } | |||
.reply .filesize { margin-left: 20px } | |||
.userdelete { float: right; text-align: center; white-space: nowrap } | |||
.replypage .replylink { display: none } | |||
.oekinfo { font-size: small } | |||
.hidden { display: none } | |||
.inline { display: inline } | |||
</style> | |||
{% for stylesheet in stylesheets %} | |||
<link rel="{% if not stylesheet.default %}alternate {% endif %}stylesheet" type="text/css" href="{{ stylesheet.filename }}" title="{{ stylesheet.title }}" /> | |||
{% endfor %} | |||
<script type="text/javascript">var style_cookie="{{ board.options.STYLE_COOKIE }}"; var thread_cookie = "{{ board.name }}_hidden_threads"; var lastopenfield = 0;</script> | |||
<script type="text/javascript" src="{{ (config.JS_FILE)|root_path_to_filename }}"></script> | |||
</head> | |||
{% if thread %}<body class="replypage">{% endif %} | |||
{% if not thread %}<body>{% endif %} | |||
{% include 'include/boards/header.html' %} | |||
<div class="adminbar"> | |||
{% for stylesheet in stylesheets %} | |||
[<a href="javascript:set_stylesheet('{{ stylesheet.title }}')">{{ stylesheet.title }}</a>] | |||
{% endfor %} | |||
- | |||
[<a href="{{ (config.HOME)|expand_url }}" target="_top">{{ strings.HOME }}</a>] | |||
[<a href="{{ ("board.rss")|expand_url(1) }}" title="Local RSS Feed for This Board"><img src="{{ ("../rss.png")|expand_url }}" style="border:0" alt="RSS" /> Live Feed</a>] | |||
[<a href="{{ get_secure_script_name() }}?task=loginpanel&board={{ board.name }}">{{ strings.ADMIN }}</a>] | |||
</div> | |||
<div class="logo"> | |||
{% if board.options.SHOWTITLEIMG == 1 %}<img src="{{ (board.options.TITLEIMG)|expand_url }}" alt="{{ title }}" />{% endif %} | |||
{% if board.options.SHOWTITLEIMG == 2 %}<img src="{{ (board.options.TITLEIMG)|expand_url }}" onclick="this.src=this.src;" alt="{{ board.options.TITLE }}" />{% endif %} | |||
{% if board.options.SHOWTITLEIMG and board.options.SHOWTITLETXT %}<br />{% endif %} | |||
{% if board.options.SHOWTITLETXT %}{{ board.options.TITLE }}{% endif %} | |||
</div><hr /> |
@@ -0,0 +1,29 @@ | |||
<html> | |||
<head> | |||
<title>Oekaki Animation</title> | |||
<style type="text/css"> | |||
body { background: #9999BB; font-family: sans-serif; } | |||
input,textarea { background-color:#CFCFFF; font-size: small; } | |||
table.nospace { border-collapse:collapse; } | |||
table.nospace tr td { margin:0px; } | |||
.menu { background-color:#CFCFFF; border: 1px solid #666666; padding: 2px; margin-bottom: 2px; } | |||
</style> | |||
</head> | |||
<body> | |||
<table class="nospace" width="100%" height="100%"><tbody><tr> | |||
<td width="100%"> | |||
<applet name="pch" code="pch2.PCHViewer.class" codebase="./" archive="PCHViewer.jar" width="100%" height="100%"> | |||
<param name="pch_file" value="{{ pch_file }}" /> | |||
<param name="tt.zip" value="tt_def.zip" /> | |||
<param name="res.zip" value="res.zip" /> | |||
<param name="speed" value="0" /> | |||
<param name="buffer_canvas" value="true" /> | |||
<param name="buffer_progress" value="true" /> | |||
</applet> | |||
</td> | |||
</tr> | |||
</tbody> | |||
</table> | |||
</body> | |||
</html> |
@@ -0,0 +1,4 @@ | |||
<p class="oekinfo"><strong> | |||
Edited in Oekaki</strong> (Time: {{ time }}, Painter: {{ painter }}) | |||
</p> |
@@ -0,0 +1,42 @@ | |||
{% include 'mini_head_include.html' %} | |||
<h1 style="text-align:center;font-size:1em">Now Editing Post No.{{ num }}</h1> | |||
<div class="postarea"> | |||
<form id="postform" action="{{ get_script_name() }}" method="post" enctype="multipart/form-data"> | |||
<input type="hidden" name="task" value="oekakiedit" /> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<input type="hidden" name="oek_ip" value="{{ oek_ip }}" /> | |||
<input type="hidden" name="srcinfo" value="{{ srcinfo }}" /> | |||
<input type="hidden" name="num" value="{{ num }}" /> | |||
<table><tbody> | |||
<tr><td class="postblock">{{ strings.NAME }}</td><td><input type="text" name="field1" size="28" value="{{ name }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.EMAIL }}</td><td><input type="text" name="email" size="28" value="{{ email }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.SUBJECT }}</td><td><input type="text" name="subject" size="35" value="{{ subject }}" /> | |||
<input type="submit" value="{{ strings.SUBMIT }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.COMMENT }}</td><td><textarea name="comment" cols="48" rows="4">{{ comment }}</textarea></td></tr> | |||
{% if image_inp %} | |||
<tr><td class="postblock">{{ strings.UPLOADFILE }}</td><td><input type="file" name="file" size="35" /> | |||
{% if textonly_inp %}[<label><input type="checkbox" name="nofile" value="on" />{{ strings.NOFILE }}</label>{% endif %} | |||
</td></tr> | |||
{% endif %} | |||
{% if enable_captcha and not admin %} | |||
<tr><td class="postblock">{{ strings.CAPTCHA }}</td><td><input type="text" name="captcha" size="10" /> | |||
<img alt="" src="{{ (captcha_script)|expand_url }}?key={% if oek_parent %}res{{ oek_parent }}{% endif %}{% if not oek_parent %}mainpage{% endif %}&dummy={{ num }}" /> | |||
</td></tr> | |||
{% endif %} | |||
<input type="hidden" name="password" value="{{ password }}" /> | |||
</tbody></table></form></div> | |||
<hr /> | |||
<div align="center"> | |||
<img src="{{ (tmpname)|expand_url }}" /> | |||
{{ decodedinfo }} | |||
</div> | |||
<hr /> | |||
{% include 'normal_foot_include.html' %} |
@@ -0,0 +1,53 @@ | |||
{% include 'normal_head_include.html' %} | |||
[<a href="{{ (board.options.HTML_SELF)|expand_url }}">{{ strings.RETURN }}</a>] | |||
{% if oek_parent %}<div class="theader">{{ strings.POSTING }}</div>{% endif %} | |||
<div class="postarea"> | |||
<form id="postform" action="{{ get_script_name() }}" method="post" enctype="multipart/form-data"> | |||
<input type="hidden" name="task" value="oekakipost" /> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<input type="hidden" name="oek_ip" value="{{ oek_ip }}" /> | |||
<input type="hidden" name="srcinfo" value="{{ srcinfo }}" /> | |||
<table><tbody> | |||
{% if not (board.options.FORCED_ANON) %}<tr><td class="postblock">{{ strings.NAME }}</td><td><input type="text" name="field1" value="{{ name }}" size="28" />{% if trip %} {{ trip }}<br />(Enter new tripcode above to change.)<br />[<label><input type="checkbox" value="1" name="killtrip" /> Remove Tripcode?</label>]{% endif %}</td></tr>{% endif %} | |||
<tr><td class="postblock">{{ strings.EMAIL }}</td><td><input type="text" name="email" size="28" /></td></tr> | |||
<tr><td class="postblock">{{ strings.SUBJECT }}</td><td><input type="text" name="subject" size="35" /> | |||
<input type="submit" value="{{ strings.SUBMIT }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.COMMENT }}</td><td><textarea name="comment" cols="48" rows="4"></textarea></td></tr> | |||
{% if image_inp %} | |||
<tr><td class="postblock">{{ strings.UPLOADFILE }}</td><td><input type="file" name="file" size="35" /> | |||
{% if textonly_inp %}[<label><input type="checkbox" name="nofile" value="on" />{{ strings.NOFILE }}</label>{% endif %} | |||
</td></tr> | |||
{% endif %} | |||
{% if board.options.ENABLE_CAPTCHA %} | |||
<tr><td class="postblock">{{ strings.CAPTCHA }}</td><td><input type="text" name="captcha" size="10" /> | |||
<img alt="" src="{{ (board.options.ENABLE_CAPTCHA)|expand_url }}?key={% if oek_parent %}res{{ oek_parent }}{% endif %}{% if not oek_parent %}mainpage{% endif %}&dummy={{ dummy }}" /> | |||
</td></tr> | |||
{% endif %} | |||
<tr><td class="postblock">{{ strings.DELPASS }}</td><td><input type="password" name="password" size="8" /> {{ strings.DELEXPL }}</td></tr> | |||
{% if oek_parent %} | |||
<input type="hidden" name="parent" value="{{ oek_parent }}" /> | |||
<tr><td class="postblock">{{ strings.OEKIMGREPLY }}</td> | |||
<td>{{ (strings.OEKREPEXPL)|format((board.options.RES_DIR + oek_parent + config.PAGE_EXT)|expand_url, oek_parent) }}</td></tr> | |||
{% endif %} | |||
<tr><td colspan="2"> | |||
<div class="rules">{% include 'rules.html' %}</div></td></tr> | |||
</tbody></table></form></div> | |||
<script type="text/javascript">set_inputs("postform",false)</script> | |||
<hr /> | |||
<div align="center"> | |||
<img src="{{ (tmpname)|expand_url }}" /> | |||
{{ decodedinfo }} | |||
</div> | |||
<hr /> | |||
{% include 'normal_foot_include.html' %} |
@@ -0,0 +1,5 @@ | |||
<p class="oekinfo"> | |||
<strong>Oekaki Post</strong> | |||
(Time: {{ time }}, Painter: {{ painter }}{% if source %}, Source: <a href="{{ source }}">{{ source }}</a>{% endif %}{% if animation %}, Animation: [<a href="{{ get_script_name() }}?task=oekakianimation&board={{ board.name }}&pchfile={{ animation }}" target="_blank">View</a>]{% endif %}) | |||
</p> |
@@ -0,0 +1,39 @@ | |||
<html> | |||
<head> | |||
<style type="text/css"> | |||
body { background: #9999BB; font-family: sans-serif; } | |||
input,textarea { background-color:#CFCFFF; font-size: small; } | |||
table.nospace { border-collapse:collapse; } | |||
table.nospace tr td { margin:0px; } | |||
.menu { background-color:#CFCFFF; border: 1px solid #666666; padding: 2px; margin-bottom: 2px; } | |||
</style> | |||
</head><body> | |||
<script type="text/javascript" src="palette_selfy.js"></script> | |||
<table class="nospace" width="100%" height="100%"><tbody><tr> | |||
<td width="100%"> | |||
<applet code="c.ShiPainter.class" name="paintbbs" archive="spainter_all.jar" width="100%" height="100%"> | |||
<param name="image_width" value="{{ oek_x }}" /> | |||
<param name="image_height" value="{{ oek_y }}" /> | |||
{% if oek_src and not oek_pch %}<param name="image_canvas" value="{{ oek_src }}" />{% endif %} | |||
{% if oek_pch %}<param name="pch_file" value="{{ oek_pch }}" />{% endif %} | |||
<param name="dir_resource" value="./" /> | |||
<param name="tt.zip" value="tt_def.zip" /> | |||
<param name="res.zip" value="res.zip" /> | |||
<param name="tools" value="{{ mode }}" /> | |||
<param name="layer_count" value="3" /> | |||
<param name="thumbnail_type" value="animation" /> | |||
<param name="url_save" value="{{ (tmp_dir + 'getpic.pl')|expand_url }}" /> | |||
<param name="url_exit" value="{{ get_script_name() }}?task=finishpaint&board={{ board.name }}&oek_parent={{ oek_parent }}&oek_ip={{ ip }}&{% if oek_editing %}oek_editing=1&password={{ password }}&num={{ num }}&{% endif %}dummy={{ dummy }}&srcinfo={{ time }},{{ oek_painter }},{{ oek_src }}" /> | |||
<param name="send_header" value="{{ ip }}" /> | |||
</applet> | |||
</td> | |||
{% if selfy %} | |||
<td valign="top"> | |||
<script>palette_selfy();</script> | |||
</td> | |||
{% endif %} | |||
</tr></tbody></table> | |||
</body> | |||
</html> |
@@ -0,0 +1,69 @@ | |||
{% include 'mini_head_include.html' %} | |||
{% for post in loop %} | |||
<h1 style="text-align:center;font-size:1em">Now Editing Post No.{{ post.num }}</h1> | |||
{% if admin %}<div align="center"><em>{{ strings.NOTAGS }}</em></div>{% endif %} | |||
<div class="postarea"> | |||
{% if not admin %} | |||
<form action="{{ ('paint.pl')|expand_url }}" method="get"> | |||
<hr /> | |||
{{ strings.OEKPAINT }} | |||
<select name="oek_painter"> | |||
{% for painters in strings.OEKPAINTERS %} | |||
{% if painter == board.options.OEKAKI_DEFAULT_PAINTER %} | |||
<option value="{{ painter }}" selected="selected">{{ post.name }}</option> | |||
{% endif %} | |||
{% if painter != board.options.OEKAKI_DEFAULT_PAINTER %} | |||
<option value="{{ painter }}">{{ post.name }}</option> | |||
{% endif %} | |||
{% endfor %} | |||
</select> | |||
{{ strings.OEKX }}<input type="text" name="oek_x" size="3" value="{{ post.width }}" /> | |||
{{ strings.OEKY }}<input type="text" name="oek_y" size="3" value="{{ post.height }}" /> | |||
<input type="hidden" name="oek_src" value="{{ post.image }}" /> | |||
<input type="hidden" name="num" value="{{ post.num }}" /> | |||
<input type="hidden" name="oek_parent" value="{{ post.parent }}" /> | |||
<input type="submit" value="Oekaki Edit" name="oek_editing" /> | |||
<input type="hidden" name="password" value="{{ post.password }}" /> | |||
<input type="hidden" name="num" value="{{ post.num }}" /> | |||
<hr /> | |||
</form> | |||
{% endif %} | |||
<form id="postform" action="{{ get_script_name() }}" method="post" enctype="multipart/form-data"> | |||
<input type="hidden" name="num" value="{{ post.num }}" /> | |||
<input type="hidden" name="password" value="{{ post.password }}" /> | |||
<input type="hidden" name="task" value="editpost" /> | |||
{% if admin %} | |||
<input type="hidden" name="no_captcha" value="1" /> | |||
<input type="hidden" name="no_format" value="1" />{% endif %} | |||
{% if post.parent %}<input type="hidden" name="parent" value="{{ post.parent }}" />{% endif %} | |||
{% if board.options.FORCED_ANON %}<input type="hidden" name="name" />{% endif %} | |||
{% if board.options.SPAM_TRAP %}<div class="trap">{{ strings.SPAMTRAP }}<input type="text" name="name" size="28" /><input type="text" name="link" size="28" /></div>{% endif %} | |||
<table><tbody> | |||
{% if not (board.options.FORCED_ANON) %}<tr><td class="postblock">{{ strings.NAME }}</td><td><input type="text" name="field1" value="{{ post.name }}" size="28" />{% if post.trip %} # {{ post.trip }}<br />(Enter new tripcode above to change.)<br />[<label><input type="checkbox" value="1" name="killtrip" /> Remove Tripcode?</label>]{% endif %}</td></tr>{% endif %} | |||
<tr><td class="postblock">{{ strings.EMAIL }}</td><td><input type="text" name="email" size="28" value="{{ post.email }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.SUBJECT }}</td><td><input type="text" name="subject" size="35" value="{{ post.subject }}" /> | |||
<input type="submit" value="{{ strings.SUBMIT }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.COMMENT }}</td><td> | |||
<textarea name="comment" cols="48" rows="4">{% if admin %}{{ (post.comment)|clean_string }}{% endif %}{% if not admin %}{{ (post.comment)|tag_killa }}{% endif %}</textarea></td></tr> | |||
{% if board.options.ALLOW_IMAGE_REPLIES or not post.parent %} | |||
<tr><td class="postblock">{{ strings.NEWFILE }}</td><td><input type="file" name="file" size="35" /> | |||
<br />(Keep this field blank to leave the file unchanged.) | |||
</td></tr> | |||
{% endif %} | |||
{% if board.options.ENABLE_OEKAKI and not admin %} | |||
<tr><td class="postblock">{{ strings.CAPTCHA }}</td><td><input type="text" name="captcha" size="10" /> | |||
<img alt="" src="{{ (board.options.OEKAKI_SCRIPT)|expand_url }}?key={{ (post.parent)|get_captcha_key }}&dummy={{ post.num }}" /> | |||
</td></tr> | |||
{% endif %} | |||
</tbody></table></form></div> | |||
{% endfor %} | |||
{% include 'mini_foot_include.html' %} |
@@ -0,0 +1,282 @@ | |||
{% include 'normal_head_include.html' %} | |||
{% if lockedthread != 'yes' %} | |||
{% if thread %} | |||
[<a href="{{ (board.options.HTML_SELF)|expand_url }}">{{ strings.RETURN }}</a>] | |||
{% if not omit %} | |||
<div class="theader">{{ strings.POSTING }}</div> | |||
{% endif %} | |||
{% if omit %} | |||
<div class="theader">Posting Mode: Reply (Abbreviated Thread View)</div> | |||
{% endif %} | |||
{% endif %} | |||
<div class="globalannounce">{% include 'announcements_global.html' %}</div> | |||
<div class="announcements">{% include 'announcements.html' %}</div> | |||
{% if board.options.ENABLE_OEKAKI %} | |||
{% if thread %}<hr />{% endif %} | |||
<div align="center"> | |||
<form action="{{ get_script_name() }}" method="get"> | |||
<input type="hidden" name="task" value="paint" /> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
{% if thread %}<input type="hidden" name="oek_parent" value="{{ thread }}" />{% endif %} | |||
{{ strings.OEKPAINT }} | |||
<select name="oek_painter"> | |||
{% for painters in strings.OEKPAINTERS %} | |||
{% if painter == board.options.OEKAKI_DEFAULT_PAINTER %} | |||
<option value="{{ painter }}" selected="selected">{{ name }}</option> | |||
{% endif %} | |||
{% if painter != board.options.OEKAKI_DEFAULT_PAINTER %} | |||
<option value="{{ painter }}">{{ name }}</option> | |||
{% endif %} | |||
{% endfor %} | |||
</select> | |||
{{ strings.OEKX }}<input type="text" name="oek_x" size="3" value="{{ board.options.OEKAKI_DEFAULT_X }}" /> | |||
{{ strings.OEKY }}<input type="text" name="oek_y" size="3" value="{{ board.options.OEKAKI_DEFAULT_Y }}" /> | |||
{% if thread %}<input type="hidden" name="dummy" value="{{ dummy }}" />{% endif %} | |||
{% if board.options.OEKAKI_ENABLE_MODIFY and thread %} | |||
{{ strings.OEKSOURCE }} | |||
<select name="oek_src"> | |||
<option value="">{{ strings.OEKNEW }}</option> | |||
{% for currentthread in threads %} | |||
{% for post in currentthread.posts %} | |||
{% if post.image %} | |||
<option value="{{ post.image }}">{{ (strings.OEKMODIFY)|format(post.num) }}</option> | |||
{% endif %} | |||
{% endfor %} | |||
{% endfor %} | |||
</select> | |||
{% endif %} | |||
<input type="submit" value="{{ strings.OEKSUBMIT }}" /> | |||
</form> | |||
</div><hr /> | |||
{% endif %} | |||
{% if postform %} | |||
<div class="postarea"> | |||
<form id="postform" action="{{ get_script_name() }}" method="post" enctype="multipart/form-data"> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
<input type="hidden" name="task" value="post" /> | |||
{% if thread %}<input type="hidden" name="parent" value="{{ thread }}" />{% endif %} | |||
{% if not image_inp and not thread and board.options.ALLOW_TEXTONLY %} | |||
<input type="hidden" name="nofile" value="1" /> | |||
{% endif %} | |||
{% if board.options.FORCED_ANON %}<input type="hidden" name="name" />{% endif %} | |||
{% if board.options.SPAM_TRAP %}<div class="trap">{{ strings.SPAMTRAP }}<input type="text" name="name" size="28" /><input type="text" name="link" size="28" /></div>{% endif %} | |||
<table><tbody> | |||
{% if not (board.options.FORCED_ANON) %}<tr><td class="postblock">{{ strings.NAME }}</td><td><input type="text" name="field1" size="28" /></td></tr>{% endif %} | |||
<tr><td class="postblock">{{ strings.EMAIL }}</td><td><input type="text" name="email" size="28" /></td></tr> | |||
<tr><td class="postblock">{{ strings.SUBJECT }}</td><td><input type="text" name="subject" size="35" /> | |||
<input type="submit" value="{{ strings.SUBMIT }}" /></td></tr> | |||
<tr><td class="postblock">{{ strings.COMMENT }}</td><td><textarea name="comment" cols="48" rows="4"></textarea></td></tr> | |||
{% if image_inp %} | |||
<tr><td class="postblock">{{ strings.UPLOADFILE }}</td><td><input type="file" name="file" size="35" /> | |||
{% if textonly_inp %}[<label><input type="checkbox" name="nofile" value="on" />{{ strings.NOFILE }} ]</label>{% endif %} | |||
</td></tr> | |||
{% endif %} | |||
{% if board.options.ENABLE_CAPTCHA %} | |||
<tr><td class="postblock">{{ strings.CAPTCHA }}</td><td><input type="text" name="captcha" size="10" /> | |||
<img alt="" src="{{ (board.options.CAPTCHA_SCRIPT)|expand_url }}?key={{ (thread)|get_captcha_key }}&dummy={{ dummy }}" /> | |||
</td></tr> | |||
{% endif %} | |||
<tr><td class="postblock">{{ strings.DELPASS }}</td><td><input type="password" name="password" size="8" /> {{ strings.DELEXPL }}</td></tr> | |||
<tr><td colspan="2"> | |||
<div class="rules">{% include 'rules.html' %}</div></td></tr> | |||
</tbody></table></form></div> | |||
<script type="text/javascript">set_inputs("postform",false)</script> | |||
{% endif %} | |||
{% endif %} | |||
{% if lockedthread == 'yes' %} | |||
[<a href="{{ (board.options.HTML_SELF)|expand_url }}">{{ strings.RETURN }}</a>] | |||
<p style="font-weight:bold;font-size:1.2em">{{ strings.LOCKEDANNOUNCE }}</p> | |||
{% endif %} | |||
<hr /> | |||
{% if not thread %} | |||
<script type="text/javascript"> | |||
var hiddenThreads=get_cookie(thread_cookie); | |||
</script> | |||
{% endif %} | |||
<form id="delform" action="{{ get_script_name() }}" method="post"> | |||
{% for currentthread in threads %} | |||
{% for post in currentthread.posts %} | |||
{% if not post.parent %} | |||
<div id="t{{ post.num }}_info" style="float:left"></div> | |||
{% if not thread %}<span id="t{{ post.num }}_display" style="float:right"><a href="javascript:threadHide('t{{ post.num }}')" id="togglet{{ post.num }}">Hide Thread (−)</a><ins><noscript><br/>(Javascript Required.)</noscript></ins></span>{% endif %} | |||
<div id="t{{ post.num }}"> | |||
{% if post.image %} | |||
<span class="filesize">{{ strings.PICNAME }}<a target="_blank" href="{{ (post.image)|expand_image_url }}">{{ (post.image)|basename }}</a> | |||
-(<em>{% if (post.size <= 10240) %}{{ post.size }} B{% endif %}{% if (post.size > 10240 and post.size < 1048576) %}{{ (post.size / 1024)|round(1) }} KiB{% endif %}{% if (post.size >= 1048576) %}{{ (post.size / 1048576)|round(1) }} MiB{% endif %}, {{ post.width }}x{{ post.height }}</em>)</span> | |||
<span class="thumbnailmsg">{{ strings.THUMB }}</span><br /> | |||
{% if post.thumbnail %} | |||
<a target="_blank" href="{{ (post.image)|expand_image_url }}" > | |||
<img src="{{ (post.thumbnail)|expand_url }}" width="{{ post.tn_width }}" height="{{ post.tn_height }}" alt="{{ post.size }}" class="thumb" /></a> | |||
{% endif %} | |||
{% if not post.thumbnail %} | |||
{% if board.options.DELETED_THUMBNAIL %} | |||
<a target="_blank" href="{{ (board.options.DELETED_IMAGE)|expand_image_url }}"> | |||
<img src="{{ (board.options.DELETED_THUMBNAIL)|expand_url }}" width="{{ post.tn_width }}" height="{{ post.tn_height }}" alt="" class="thumb" /></a> | |||
{% endif %} | |||
{% if not (board.options.DELETED_THUMBNAIL) %} | |||
<div class="nothumb"><a target="_blank" href="{{ (post.image)|expand_image_url }}">{{ strings.NOTHUMB }}</a></div> | |||
{% endif %} | |||
{% endif %} | |||
{% endif %} | |||
<a name="{{ post.num }}"></a> | |||
<label><input type="checkbox" name="num" value="{{ post.num }}" /> | |||
<span class="filetitle">{{ post.subject }}</span> | |||
{% if post.email %}<span class="postername"><a href="{{ post.email }}">{{ post.name }}</a></span>{% if post.trip %}<span class="postertrip"><a href="{{ post.email }}">{{ post.trip }}</a></span>{% endif %}{% endif %} | |||
{% if not post.email %}<span class="postername">{{ post.name }}</span>{% if post.trip %}<span class="postertrip">{{ post.trip }}</span>{% endif %}{% endif %} | |||
{% if post.stickied %} <img src="{{ ('/include/boards/sticky.gif')|expand_url }}" alt="{{ strings.STICKIEDALT }}" title="{{ strings.STICKIED }}" /> {% endif %} | |||
{% if post.locked == 'yes' %} <img src="{{ ('/include/boards/locked.gif')|expand_url }}" alt="{{ strings.LOCKEDALT }}" title="{{ strings.LOCKED }}" /> {% endif %} | |||
{{ post.date }}</label> | |||
<span class="reflink"> | |||
{% if not thread %}<span><a href="{{ (post.num)|get_reply_link(0) }}#{{ post.num }}">No.</a><a href="{{ (post.num)|get_reply_link(0) }}#i{{ post.num }}">{{ post.num }}</a></span>{% endif %} | |||
{% if thread %}<span><a href="#{{ post.num }}">No.</a><a href="javascript:insert('>>{{ post.num }}')">{{ post.num }}</a></span>{% endif %} | |||
</span> | |||
<span class="deletelink" id="deletelink{{ post.num }}"> | |||
[<a href="{{ get_script_name() }}?task=delpostwindow&num={{ post.num }}&board={{ board.name }}" target="_blank" onclick="passfield('{{ post.num }}',false); return false">Delete</a>] | |||
<span id="delpostcontent{{ post.num }}" style="display:inline"></span> | |||
</span> | |||
[<a href="{{ get_script_name() }}?task=edit&board={{ board.name }}&num={{ post.num }}{% if post.admin_post == 'yes' %}&admin_post=1{% endif %}" target="_blank" onclick="popUpPost('{{ get_script_name() }}?task=edit&board={{ board.name }}&num={{ post.num }}{% if post.admin_post == 'yes' %}&admin_post=1{% endif %}'); return false">Edit</a>] | |||
{% if not thread %} | |||
{% if post.locked != 'yes' %}[<a href="{{ (post.num)|get_reply_link(0) }}">{{ strings.REPLY }}</a>{% if config.ENABLE_ABBREVIATED_THREAD_PAGES and currentthread.omit and currentthread.omit + board.options.REPLIES_PER_THREAD > config.POSTS_IN_ABBREVIATED_THREAD_PAGES %}/<a href="{{ (post.num)|get_reply_link(0, 1) }}">Last {{ config.POSTS_IN_ABBREVIATED_THREAD_PAGES }}</a>{% endif %}]{% endif %} | |||
{% if post.locked == 'yes' %}[<a href="{{ (post.num)|get_reply_link(0) }}">{{ strings.VIEW }}</a>]{% endif %} | |||
{% endif %} | |||
<blockquote> | |||
{% if omit %}{{ post.comment|redirect_reply_links(min_res) }}{% else %}{{ post.comment }}{% endif %} | |||
{% if post.abbrev %}<div class="abbrev">{{ (strings.ABBRTEXT)|format((config.ENABLE_ABBREVIATED_THREAD_PAGES and currentthread.omit and currentthread.omit + board.options.REPLIES_PER_THREAD > config.POSTS_IN_ABBREVIATED_THREAD_PAGES) and (post.num)|get_reply_link(post.parent, 1) or (post.num)|get_reply_link(post.parent)) }}</div>{% endif %} | |||
{% if post.lastedit %}<p style="font-size: small; font-style: italic">{{ strings.LASTEDITED }}{% if post.admin_post == 'yes' %} {{ strings.BYMOD }}{% endif %} {{ post.lastedit }}.</p>{% endif %} | |||
</blockquote> | |||
{% if not thread and currentthread.omit %} | |||
<span class="omittedposts"> | |||
{% if currentthread.omitimages and not post.locked %}{{ (strings.ABBRIMG)|format(currentthread.omit, currentthread.omitimages) }}{% endif %} | |||
{% if currentthread.omitimages and post.locked %}{{ (strings.ABBRIMG_LOCK)|format(currentthread.omit, currentthread.omitimages) }}{% endif %} | |||
{% if not currentthread.omitimages and not post.locked %}{{ (strings.ABBR)|format(currentthread.omit) }}{% endif %} | |||
{% if not currentthread.omitimages and post.locked %}{{ (strings.ABBR_LOCK)|format(currentthread.omit) }}{% endif %} | |||
</span> | |||
{% endif %} | |||
{% if thread and omit %} | |||
<span class="omittedposts"> | |||
This page shows only the latest {{ config.POSTS_IN_ABBREVIATED_THREAD_PAGES }} replies to this thread. | |||
For the other {{ omit }}, refer to <a href="{{ (thread)|get_reply_link(0) }}">the full thread page</a>. | |||
</span> | |||
{% endif %} | |||
{% if not thread %} | |||
<script type="text/javascript"> | |||
if (hiddenThreads.indexOf('t{{ post.num }},') != -1) | |||
{ | |||
toggleHidden('t{{ post.num }}'); | |||
} | |||
</script> | |||
{% endif %} | |||
{% endif %} | |||
{% if post.parent %} | |||
<table><tbody><tr><td class="doubledash">>></td> | |||
<td class="reply" id="reply{{ post.num }}"> | |||
<a name="{{ post.num }}"></a> | |||
<label><input type="checkbox" name="num" value="{{ post.num }}" /> | |||
<span class="replytitle">{{ post.subject }}</span> | |||
{% if post.email %}<span class="commentpostername"><a href="{{ post.email }}">{{ post.name }}</a></span>{% if post.trip %}<span class="postertrip"><a href="{{ post.email }}">{{ post.trip }}</a></span>{% endif %}{% endif %} | |||
{% if not post.email %}<span class="commentpostername">{{ post.name }}</span>{% if post.trip %}<span class="postertrip">{{ post.trip }}</span>{% endif %}{% endif %} | |||
{{ post.date }}</label> | |||
<span class="reflink"> | |||
{% if not thread %}<span><a href="{{ (post.parent)|get_reply_link(0) }}#{{ post.num }}">No.</a><a href="{{ (post.parent)|get_reply_link(0) }}#i{{ post.num }}">{{ post.num }}</a></span>{% endif %} | |||
{% if thread %}<span><a href="#{{ post.num }}">No.</a><a href="javascript:insert('>>{{ post.num }}')">{{ post.num }}</a></span>{% endif %} | |||
</span> | |||
<span class="deletelink" id="deletelink{{ post.num }}"> | |||
[<a href="{{ get_script_name() }}?task=delpostwindow&num={{ post.num }}&board={{ board.name }}" target="_blank" onclick="passfield('{{ post.num }}', false); return false">Delete</a>] | |||
<span id="delpostcontent{{ post.num }}" style="display:inline"></span> | |||
</span> | |||
[<a href="{{ get_script_name() }}?task=edit&board={{ board.name }}&num={{ post.num }}{% if post.admin_post == 'yes' %}&admin_post=1{% endif %}" target="_blank" onclick="popUpPost('{{ get_script_name() }}?task=edit&board={{ board.name }}&num={{ post.num }}{% if post.admin_post == 'yes' %}&admin_post=1{% endif %}'); return false">Edit</a>] | |||
{% if post.image %} | |||
<br /> | |||
<span class="filesize">{{ strings.PICNAME }}<a target="_blank" href="{{ (post.image)|expand_image_url }}">{{ (post.image)|basename }}</a> | |||
-(<em>{% if (post.size <= 10240) %}{{ post.size }} B{% endif %}{% if (post.size > 10240 and post.size < 1048576) %}{{ (post.size / 1024)|round(1) }} KiB{% endif %}{% if (post.size >= 1048576) %}{{ (post.size / 1048576)|round(1) }} MiB{% endif %}, {{ post.width }}x{{ post.height }}</em>)</span> | |||
<span class="thumbnailmsg">{{ strings.THUMB }}</span><br /> | |||
{% if post.thumbnail %} | |||
<a target="_blank" href="{{ (post.image)|expand_image_url }}"> | |||
<img src="{{ (post.thumbnail)|expand_url }}" width="{{ post.tn_width }}" height="{{ post.tn_height }}" alt="{{ post.size }}" class="thumb" id="img{{ (post.image)|basename }}" /></a> | |||
{% endif %} | |||
{% if not post.thumbnail %} | |||
{% if board.options.DELETED_THUMBNAIL %} | |||
<a target="_blank" href="{{ (board.options.DELETED_IMAGE)|expand_image_url }}"> | |||
<img src="{{ (board.options.DELETED_THUMBNAIL)|expand_url }}" width="{{ post.tn_width }}" height="{{ post.tn_height }}" alt="" class="thumb" /></a> | |||
{% endif %} | |||
{% if not (board.options.DELETED_THUMBNAIL) %} | |||
<div class="nothumb"><a target="_blank" href="{{ (post.image)|expand_image_url }}">{{ strings.NOTHUMB }}</a></div> | |||
{% endif %} | |||
{% endif %} | |||
{% endif %} | |||
<blockquote> | |||
{% if omit %}{{ post.comment|redirect_reply_links(min_res) }}{% else %}{{ post.comment }}{% endif %} | |||
{% if post.abbrev %}<div class="abbrev">{{ (strings.ABBRTEXT)|format(((config.ENABLE_ABBREVIATED_THREAD_PAGES and currentthread.omit and currentthread.omit + board.options.REPLIES_PER_THREAD > config.POSTS_IN_ABBREVIATED_THREAD_PAGES) and (post.num)|get_reply_link(post.parent, 1) or (post.num)|get_reply_link(post.parent))) }}</div>{% endif %} | |||
{% if post.lastedit %}<p style="font-size: small; font-style: italic">Last edited{% if post.admin_post == 'yes' %} by moderator{% endif %} {{ post.lastedit }}.</p>{% endif %} | |||
</blockquote> | |||
</td></tr></tbody></table> | |||
{% endif %} | |||
{% endfor %} | |||
</div> | |||
<br clear="left" /><hr /> | |||
{% endfor %} | |||
<table class="userdelete"><tbody><tr><td> | |||
<input type="hidden" name="board" value="{{ board.name }}" /> | |||
{{ strings.REPDEL }}[<label><input type="checkbox" name="fileonly" value="on" />{{ strings.DELPICONLY }}</label>] | |||
{{ strings.DELKEY }}<input type="password" name="password" size="8" /> | |||
<input value="{{ strings.DELETE }}" name="task" type="submit" /> | |||
</td></tr> | |||
<tr><td>Report Post(s) to Staff <input value="Report" name="task" type="submit" /></td></tr> | |||
</tbody></table> | |||
</form> | |||
<script type="text/javascript">set_delpass("delform")</script> | |||
{% if not thread %} | |||
<table border="1"><tbody><tr><td> | |||
{% if prevpage %}<form method="get" action="{{ prevpage }}"><input value="{{ strings.PREV }}" type="submit" /></form>{% endif %} | |||
{% if not prevpage %}{{ strings.FIRSTPG }}{% endif %} | |||
</td><td> | |||
{% for page in pages %} | |||
{% if not page.current %}[<a href="{{ page.filename }}">{{ page.page }}</a>]{% endif %} | |||
{% if page.current %}[{{ page.page }}]{% endif %} | |||
{% endfor %} | |||
</td><td> | |||
{% if nextpage %}<form method="get" action="{{ nextpage }}"><input value="{{ strings.NEXT }}" type="submit" /></form>{% endif %} | |||
{% if not nextpage %}{{ strings.LASTPG }}{% endif %} | |||
</td></tr></tbody></table> | |||
{% endif %} | |||
<br clear="all" /> | |||
{% include 'normal_foot_include.html' %} |
@@ -0,0 +1,26 @@ | |||
<div align="center"> | |||
There were <strong>{{ rowcount }}</strong> entries found. Showing {{ perpage }} per page. | |||
<br /> | |||
<span> | |||
{% if page != 1 and number_of_pages %}<a href="{{ rooturl }}&page=1&perpage={{ perpage }}">{% endif %} | |||
<<{% if page != 1 and number_of_pages %}</a>{% endif %} | |||
</span> | |||
<span style="padding-left:1em"> | |||
{% if page != 1 and number_of_pages %}<a href="{{ rooturl }}&page={{ page - 1 }}&perpage={{ perpage }}">{% endif %} | |||
<{% if page != 1 and number_of_pages %}</a>{% endif %} |