Permalink
Browse files

Commiting clean installation of phpBB3, along with nginx and apache c…

…onfig.
  • Loading branch information...
1 parent b680217 commit 1438ae3d07e0dd7bc0f8c2e75e335d304d5976c7 @mikewest committed Jul 29, 2009
Showing with 21,590 additions and 0 deletions.
  1. +29 −0 private/apache.conf
  2. +43 −0 private/nginx.conf
  3. +9 −0 public/.htaccess
  4. BIN public/adm/images/arrow_down.gif
  5. BIN public/adm/images/arrow_left.gif
  6. BIN public/adm/images/arrow_right.gif
  7. BIN public/adm/images/arrow_up.gif
  8. BIN public/adm/images/bg_button.gif
  9. BIN public/adm/images/bg_hash1.gif
  10. BIN public/adm/images/bg_hash2.gif
  11. BIN public/adm/images/bg_hash3.gif
  12. BIN public/adm/images/bg_hash4.gif
  13. BIN public/adm/images/bg_header.gif
  14. BIN public/adm/images/bg_header.jpg
  15. BIN public/adm/images/bg_tabs1.gif
  16. BIN public/adm/images/bg_tabs2.gif
  17. BIN public/adm/images/bg_tabs_alt1.gif
  18. BIN public/adm/images/bg_tabs_alt2.gif
  19. BIN public/adm/images/cellpic3.gif
  20. BIN public/adm/images/corners_left.gif
  21. BIN public/adm/images/corners_left2.gif
  22. BIN public/adm/images/corners_right.gif
  23. BIN public/adm/images/corners_right2.gif
  24. BIN public/adm/images/file_conflict.gif
  25. BIN public/adm/images/file_modified.gif
  26. BIN public/adm/images/file_new.gif
  27. BIN public/adm/images/file_new_conflict.gif
  28. BIN public/adm/images/file_not_modified.gif
  29. BIN public/adm/images/file_up_to_date.gif
  30. BIN public/adm/images/gradient2b.gif
  31. BIN public/adm/images/icon_delete.gif
  32. BIN public/adm/images/icon_delete_disabled.gif
  33. BIN public/adm/images/icon_down.gif
  34. BIN public/adm/images/icon_down_disabled.gif
  35. BIN public/adm/images/icon_edit.gif
  36. BIN public/adm/images/icon_edit_disabled.gif
  37. BIN public/adm/images/icon_folder.gif
  38. BIN public/adm/images/icon_folder_link.gif
  39. BIN public/adm/images/icon_folder_lock.gif
  40. BIN public/adm/images/icon_subfolder.gif
  41. BIN public/adm/images/icon_sync.gif
  42. BIN public/adm/images/icon_sync_disabled.gif
  43. BIN public/adm/images/icon_trace.gif
  44. BIN public/adm/images/icon_up.gif
  45. BIN public/adm/images/icon_up_disabled.gif
  46. BIN public/adm/images/innerbox_bg.gif
  47. BIN public/adm/images/no_avatar.gif
  48. BIN public/adm/images/no_image.png
  49. BIN public/adm/images/phpbb_logo.gif
  50. BIN public/adm/images/progress_bar.gif
  51. BIN public/adm/images/spacer.gif
  52. BIN public/adm/images/toggle.gif
  53. +611 −0 public/adm/index.php
  54. +376 −0 public/adm/style/acp_attachments.html
  55. +124 −0 public/adm/style/acp_ban.html
  56. +124 −0 public/adm/style/acp_bbcodes.html
  57. +49 −0 public/adm/style/acp_board.html
  58. +102 −0 public/adm/style/acp_bots.html
  59. +95 −0 public/adm/style/acp_captcha.html
  60. +97 −0 public/adm/style/acp_database.html
  61. +45 −0 public/adm/style/acp_disallow.html
  62. +54 −0 public/adm/style/acp_email.html
  63. +500 −0 public/adm/style/acp_forums.html
  64. +350 −0 public/adm/style/acp_groups.html
  65. +268 −0 public/adm/style/acp_icons.html
  66. +71 −0 public/adm/style/acp_inactive.html
  67. +65 −0 public/adm/style/acp_jabber.html
  68. +255 −0 public/adm/style/acp_language.html
  69. +85 −0 public/adm/style/acp_logs.html
  70. +222 −0 public/adm/style/acp_main.html
  71. +212 −0 public/adm/style/acp_modules.html
  72. +202 −0 public/adm/style/acp_permission_roles.html
  73. +357 −0 public/adm/style/acp_permissions.html
  74. +13 −0 public/adm/style/acp_php_info.html
  75. +228 −0 public/adm/style/acp_profile.html
  76. +108 −0 public/adm/style/acp_prune_forums.html
  77. +59 −0 public/adm/style/acp_prune_users.html
  78. +98 −0 public/adm/style/acp_ranks.html
  79. +127 −0 public/adm/style/acp_reasons.html
  80. +157 −0 public/adm/style/acp_search.html
  81. +521 −0 public/adm/style/acp_styles.html
  82. +46 −0 public/adm/style/acp_update.html
  83. +230 −0 public/adm/style/acp_users.html
  84. +76 −0 public/adm/style/acp_users_avatar.html
  85. +76 −0 public/adm/style/acp_users_feedback.html
  86. +144 −0 public/adm/style/acp_users_overview.html
  87. +158 −0 public/adm/style/acp_users_prefs.html
  88. +66 −0 public/adm/style/acp_users_profile.html
  89. +117 −0 public/adm/style/acp_users_signature.html
  90. +77 −0 public/adm/style/acp_words.html
  91. +1,644 −0 public/adm/style/admin.css
  92. +78 −0 public/adm/style/colour_swatch.html
  93. +20 −0 public/adm/style/confirm_body.html
  94. +30 −0 public/adm/style/confirm_body_prune.html
  95. +32 −0 public/adm/style/custom_profile_fields.html
  96. +399 −0 public/adm/style/editor.js
  97. +134 −0 public/adm/style/install_convert.html
  98. +8 −0 public/adm/style/install_error.html
  99. +26 −0 public/adm/style/install_footer.html
  100. +81 −0 public/adm/style/install_header.html
  101. +77 −0 public/adm/style/install_install.html
  102. +6 −0 public/adm/style/install_main.html
  103. +477 −0 public/adm/style/install_update.html
  104. +253 −0 public/adm/style/install_update_diff.html
  105. +8 −0 public/adm/style/message_body.html
  106. +34 −0 public/adm/style/overall_footer.html
  107. +215 −0 public/adm/style/overall_header.html
  108. +139 −0 public/adm/style/permission_mask.html
  109. +38 −0 public/adm/style/permission_roles_mask.html
  110. +58 −0 public/adm/style/permission_trace.html
  111. +359 −0 public/adm/style/permissions.js
  112. +40 −0 public/adm/style/progress_bar.html
  113. +8 −0 public/adm/style/simple_body.html
  114. +31 −0 public/adm/style/simple_footer.html
  115. +112 −0 public/adm/style/simple_header.html
  116. +251 −0 public/adm/style/tooltip.js
  117. +21 −0 public/adm/style/viewsource.html
  118. +53 −0 public/adm/swatch.php
  119. +4 −0 public/cache/.htaccess
  120. +10 −0 public/cache/index.htm
  121. +227 −0 public/common.php
  122. 0 public/config.php
  123. +287 −0 public/cron.php
  124. +69 −0 public/docs/AUTHORS
  125. +905 −0 public/docs/CHANGELOG.html
  126. +281 −0 public/docs/COPYING
  127. +352 −0 public/docs/FAQ.html
  128. +448 −0 public/docs/INSTALL.html
  129. +363 −0 public/docs/README.html
  130. +253 −0 public/docs/auth_api.html
  131. BIN public/docs/bg_header.gif
  132. +2,361 −0 public/docs/coding-guidelines.html
  133. BIN public/docs/corners_left.gif
  134. BIN public/docs/corners_left.png
  135. BIN public/docs/corners_right.gif
  136. BIN public/docs/corners_right.png
  137. +859 −0 public/docs/hook_system.html
  138. BIN public/docs/site_logo.gif
  139. +352 −0 public/docs/stylesheet.css
  140. +706 −0 public/download/file.php
  141. +10 −0 public/download/index.htm
  142. +74 −0 public/faq.php
  143. +4 −0 public/files/.htaccess
  144. +10 −0 public/files/index.htm
  145. +10 −0 public/images/avatars/gallery/index.htm
  146. +10 −0 public/images/avatars/index.htm
  147. +4 −0 public/images/avatars/upload/.htaccess
  148. +10 −0 public/images/avatars/upload/index.htm
  149. +10 −0 public/images/icons/index.htm
  150. BIN public/images/icons/misc/fire.gif
  151. BIN public/images/icons/misc/heart.gif
  152. +10 −0 public/images/icons/misc/index.htm
  153. BIN public/images/icons/misc/radioactive.gif
  154. BIN public/images/icons/misc/star.gif
  155. BIN public/images/icons/misc/thinking.gif
  156. BIN public/images/icons/smile/alert.gif
  157. +10 −0 public/images/icons/smile/index.htm
  158. BIN public/images/icons/smile/info.gif
  159. BIN public/images/icons/smile/mrgreen.gif
  160. BIN public/images/icons/smile/question.gif
  161. BIN public/images/icons/smile/redface.gif
  162. +10 −0 public/images/index.htm
  163. +10 −0 public/images/ranks/index.htm
  164. BIN public/images/smilies/icon_arrow.gif
  165. BIN public/images/smilies/icon_cool.gif
  166. BIN public/images/smilies/icon_cry.gif
  167. BIN public/images/smilies/icon_e_biggrin.gif
  168. BIN public/images/smilies/icon_e_confused.gif
  169. BIN public/images/smilies/icon_e_geek.gif
  170. BIN public/images/smilies/icon_e_sad.gif
  171. BIN public/images/smilies/icon_e_smile.gif
  172. BIN public/images/smilies/icon_e_surprised.gif
  173. BIN public/images/smilies/icon_e_ugeek.gif
  174. BIN public/images/smilies/icon_e_wink.gif
  175. BIN public/images/smilies/icon_eek.gif
  176. BIN public/images/smilies/icon_evil.gif
  177. BIN public/images/smilies/icon_exclaim.gif
  178. BIN public/images/smilies/icon_idea.gif
  179. BIN public/images/smilies/icon_lol.gif
  180. BIN public/images/smilies/icon_mad.gif
  181. BIN public/images/smilies/icon_mrgreen.gif
  182. BIN public/images/smilies/icon_neutral.gif
  183. BIN public/images/smilies/icon_question.gif
  184. BIN public/images/smilies/icon_razz.gif
  185. BIN public/images/smilies/icon_redface.gif
  186. BIN public/images/smilies/icon_rolleyes.gif
  187. BIN public/images/smilies/icon_twisted.gif
  188. BIN public/images/spacer.gif
  189. BIN public/images/upload_icons/avi.gif
  190. BIN public/images/upload_icons/bmp.gif
  191. BIN public/images/upload_icons/doc.gif
  192. BIN public/images/upload_icons/exe.gif
  193. BIN public/images/upload_icons/flash.gif
  194. BIN public/images/upload_icons/gif.gif
  195. BIN public/images/upload_icons/html.gif
  196. BIN public/images/upload_icons/jpg.gif
  197. BIN public/images/upload_icons/mid.gif
  198. BIN public/images/upload_icons/mov.gif
  199. BIN public/images/upload_icons/mp3.gif
  200. BIN public/images/upload_icons/mpg.gif
  201. BIN public/images/upload_icons/netscape.gif
  202. BIN public/images/upload_icons/pdf.gif
  203. BIN public/images/upload_icons/ppt.gif
  204. BIN public/images/upload_icons/rar.gif
  205. BIN public/images/upload_icons/txt.gif
  206. BIN public/images/upload_icons/wav.gif
  207. BIN public/images/upload_icons/xls.gif
  208. BIN public/images/upload_icons/zip.gif
  209. +525 −0 public/includes/acm/acm_file.php
  210. +1,450 −0 public/includes/acp/acp_attachments.php
  211. +235 −0 public/includes/acp/acp_ban.php
  212. +443 −0 public/includes/acp/acp_bbcodes.php
Sorry, we could not display the entire diff because too many files (899) changed.
View
29 private/apache.conf
@@ -0,0 +1,29 @@
+<VirtualHost *:8080>
+ ServerName forum.lddebate.org
+ ServerAlias forums.lddebate.org
+ ServerSignature Off
+ ServerAdmin mike@mikewest.org
+
+ RPAFenable On
+ RPAFsethostname On
+ RPAFproxy_ips 127.0.0.1
+ DirectoryIndex index.php
+ DocumentRoot /home/mikewest/public_html/forum.lddebate.org/public/
+ <Directory /home/mikewest/public_html/forum.lddebate.org/public>
+ Options SymLinksIfOwnerMatch -Indexes -Includes -MultiViews
+ AllowOverride None
+ <Files "config.php">
+ Order Deny,Allow
+ Deny from All
+ </Files>
+
+ <Files "common.php">
+ Order Deny,Allow
+ Deny from All
+ </Files>
+ </Directory>
+
+ LogLevel warn
+ ErrorLog /home/mikewest/public_html/forum.lddebate.org/log/error.log
+ CustomLog /home/mikewest/public_html/forum.lddebate.org/log/access.log combined
+</VirtualHost>
View
43 private/nginx.conf
@@ -0,0 +1,43 @@
+###############################################################################
+#
+# Nginx config for `lddebate.org`
+#
+# -*- Mode: nginx; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+
+upstream forumApache {
+ server 127.0.0.1:8080;
+}
+
+server {
+ listen 80;
+ server_name forums.lddebate.org;
+ rewrite ^/(.*) http://forum.lddebate.org/$1 permanent;
+}
+
+server {
+ listen 80;
+ server_name forum.lddebate.org;
+
+ access_log off;
+ error_log /home/mikewest/public_html/forum.lddebate.org/log/nginx_error.log;
+
+ root /home/mikewest/public_html/forum.lddebate.org/public/;
+ index index.html;
+
+ add_header Vary Accept-Encoding;
+
+ # serve static files directly
+ location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|rdf)$ {
+ expires 30d;
+ }
+
+ location / {
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header Host $http_host;
+ proxy_redirect off;
+
+ proxy_pass http://forumApache;
+ break;
+ }
+}
View
9 public/.htaccess
@@ -0,0 +1,9 @@
+<Files "config.php">
+Order Allow,Deny
+Deny from All
+</Files>
+
+<Files "common.php">
+Order Allow,Deny
+Deny from All
+</Files>
View
BIN public/adm/images/arrow_down.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/arrow_left.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/arrow_right.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/arrow_up.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_button.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_hash1.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_hash2.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_hash3.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_hash4.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_header.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_header.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_tabs1.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_tabs2.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_tabs_alt1.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/bg_tabs_alt2.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/cellpic3.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/corners_left.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/corners_left2.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/corners_right.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/corners_right2.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/file_conflict.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/file_modified.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/file_new.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/file_new_conflict.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/file_not_modified.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/adm/images/file_up_to_date.gif
Diff not rendered.
View
BIN public/adm/images/gradient2b.gif
Diff not rendered.
View
BIN public/adm/images/icon_delete.gif
Diff not rendered.
View
BIN public/adm/images/icon_delete_disabled.gif
Diff not rendered.
View
BIN public/adm/images/icon_down.gif
Diff not rendered.
View
BIN public/adm/images/icon_down_disabled.gif
Diff not rendered.
View
BIN public/adm/images/icon_edit.gif
Diff not rendered.
View
BIN public/adm/images/icon_edit_disabled.gif
Diff not rendered.
View
BIN public/adm/images/icon_folder.gif
Diff not rendered.
View
BIN public/adm/images/icon_folder_link.gif
Diff not rendered.
View
BIN public/adm/images/icon_folder_lock.gif
Diff not rendered.
View
BIN public/adm/images/icon_subfolder.gif
Diff not rendered.
View
BIN public/adm/images/icon_sync.gif
Diff not rendered.
View
BIN public/adm/images/icon_sync_disabled.gif
Diff not rendered.
View
BIN public/adm/images/icon_trace.gif
Diff not rendered.
View
BIN public/adm/images/icon_up.gif
Diff not rendered.
View
BIN public/adm/images/icon_up_disabled.gif
Diff not rendered.
View
BIN public/adm/images/innerbox_bg.gif
Diff not rendered.
View
BIN public/adm/images/no_avatar.gif
Diff not rendered.
View
BIN public/adm/images/no_image.png
Diff not rendered.
View
BIN public/adm/images/phpbb_logo.gif
Diff not rendered.
View
BIN public/adm/images/progress_bar.gif
Diff not rendered.
View
BIN public/adm/images/spacer.gif
Diff not rendered.
View
BIN public/adm/images/toggle.gif
Diff not rendered.
View
611 public/adm/index.php
@@ -0,0 +1,611 @@
+<?php
+/**
+*
+* @package acp
+* @version $Id: index.php 9369 2009-03-16 12:08:38Z acydburn $
+* @copyright (c) 2005 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
+*/
+
+/**
+*/
+define('IN_PHPBB', true);
+define('ADMIN_START', true);
+define('NEED_SID', true);
+
+// Include files
+$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../';
+$phpEx = substr(strrchr(__FILE__, '.'), 1);
+require($phpbb_root_path . 'common.' . $phpEx);
+require($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
+require($phpbb_root_path . 'includes/functions_module.' . $phpEx);
+
+// Start session management
+$user->session_begin();
+$auth->acl($user->data);
+$user->setup('acp/common');
+// End session management
+
+// Have they authenticated (again) as an admin for this session?
+if (!isset($user->data['session_admin']) || !$user->data['session_admin'])
+{
+ login_box('', $user->lang['LOGIN_ADMIN_CONFIRM'], $user->lang['LOGIN_ADMIN_SUCCESS'], true, false);
+}
+
+// Is user any type of admin? No, then stop here, each script needs to
+// check specific permissions but this is a catchall
+if (!$auth->acl_get('a_'))
+{
+ trigger_error('NO_ADMIN');
+}
+
+// We define the admin variables now, because the user is now able to use the admin related features...
+define('IN_ADMIN', true);
+$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : './';
+
+// Some oft used variables
+$safe_mode = (@ini_get('safe_mode') == '1' || strtolower(@ini_get('safe_mode')) === 'on') ? true : false;
+$file_uploads = (@ini_get('file_uploads') == '1' || strtolower(@ini_get('file_uploads')) === 'on') ? true : false;
+$module_id = request_var('i', '');
+$mode = request_var('mode', '');
+
+// Set custom template for admin area
+$template->set_custom_template($phpbb_admin_path . 'style', 'admin');
+$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style');
+
+// the acp template is never stored in the database
+$user->theme['template_storedb'] = false;
+
+// Instantiate new module
+$module = new p_master();
+
+// Instantiate module system and generate list of available modules
+$module->list_modules('acp');
+
+// Select the active module
+$module->set_active($module_id, $mode);
+
+// Assign data to the template engine for the list of modules
+// We do this before loading the active module for correct menu display in trigger_error
+$module->assign_tpl_vars(append_sid("{$phpbb_admin_path}index.$phpEx"));
+
+// Load and execute the relevant module
+$module->load_active();
+
+// Generate the page
+adm_page_header($module->get_page_title());
+
+$template->set_filenames(array(
+ 'body' => $module->get_tpl_name(),
+));
+
+adm_page_footer();
+
+/**
+* Header for acp pages
+*/
+function adm_page_header($page_title)
+{
+ global $config, $db, $user, $template;
+ global $phpbb_root_path, $phpbb_admin_path, $phpEx, $SID, $_SID;
+
+ if (defined('HEADER_INC'))
+ {
+ return;
+ }
+
+ define('HEADER_INC', true);
+
+ // gzip_compression
+ if ($config['gzip_compress'])
+ {
+ if (@extension_loaded('zlib') && !headers_sent())
+ {
+ ob_start('ob_gzhandler');
+ }
+ }
+
+ $template->assign_vars(array(
+ 'PAGE_TITLE' => $page_title,
+ 'USERNAME' => $user->data['username'],
+
+ 'SID' => $SID,
+ '_SID' => $_SID,
+ 'SESSION_ID' => $user->session_id,
+ 'ROOT_PATH' => $phpbb_admin_path,
+
+ 'U_LOGOUT' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=logout'),
+ 'U_ADM_LOGOUT' => append_sid("{$phpbb_admin_path}index.$phpEx", 'action=admlogout'),
+ 'U_ADM_INDEX' => append_sid("{$phpbb_admin_path}index.$phpEx"),
+ 'U_INDEX' => append_sid("{$phpbb_root_path}index.$phpEx"),
+
+ 'T_IMAGES_PATH' => "{$phpbb_root_path}images/",
+ 'T_SMILIES_PATH' => "{$phpbb_root_path}{$config['smilies_path']}/",
+ 'T_AVATAR_PATH' => "{$phpbb_root_path}{$config['avatar_path']}/",
+ 'T_AVATAR_GALLERY_PATH' => "{$phpbb_root_path}{$config['avatar_gallery_path']}/",
+ 'T_ICONS_PATH' => "{$phpbb_root_path}{$config['icons_path']}/",
+ 'T_RANKS_PATH' => "{$phpbb_root_path}{$config['ranks_path']}/",
+ 'T_UPLOAD_PATH' => "{$phpbb_root_path}{$config['upload_path']}/",
+
+ 'ICON_MOVE_UP' => '<img src="' . $phpbb_admin_path . 'images/icon_up.gif" alt="' . $user->lang['MOVE_UP'] . '" title="' . $user->lang['MOVE_UP'] . '" />',
+ 'ICON_MOVE_UP_DISABLED' => '<img src="' . $phpbb_admin_path . 'images/icon_up_disabled.gif" alt="' . $user->lang['MOVE_UP'] . '" title="' . $user->lang['MOVE_UP'] . '" />',
+ 'ICON_MOVE_DOWN' => '<img src="' . $phpbb_admin_path . 'images/icon_down.gif" alt="' . $user->lang['MOVE_DOWN'] . '" title="' . $user->lang['MOVE_DOWN'] . '" />',
+ 'ICON_MOVE_DOWN_DISABLED' => '<img src="' . $phpbb_admin_path . 'images/icon_down_disabled.gif" alt="' . $user->lang['MOVE_DOWN'] . '" title="' . $user->lang['MOVE_DOWN'] . '" />',
+ 'ICON_EDIT' => '<img src="' . $phpbb_admin_path . 'images/icon_edit.gif" alt="' . $user->lang['EDIT'] . '" title="' . $user->lang['EDIT'] . '" />',
+ 'ICON_EDIT_DISABLED' => '<img src="' . $phpbb_admin_path . 'images/icon_edit_disabled.gif" alt="' . $user->lang['EDIT'] . '" title="' . $user->lang['EDIT'] . '" />',
+ 'ICON_DELETE' => '<img src="' . $phpbb_admin_path . 'images/icon_delete.gif" alt="' . $user->lang['DELETE'] . '" title="' . $user->lang['DELETE'] . '" />',
+ 'ICON_DELETE_DISABLED' => '<img src="' . $phpbb_admin_path . 'images/icon_delete_disabled.gif" alt="' . $user->lang['DELETE'] . '" title="' . $user->lang['DELETE'] . '" />',
+ 'ICON_SYNC' => '<img src="' . $phpbb_admin_path . 'images/icon_sync.gif" alt="' . $user->lang['RESYNC'] . '" title="' . $user->lang['RESYNC'] . '" />',
+ 'ICON_SYNC_DISABLED' => '<img src="' . $phpbb_admin_path . 'images/icon_sync_disabled.gif" alt="' . $user->lang['RESYNC'] . '" title="' . $user->lang['RESYNC'] . '" />',
+
+ 'S_USER_LANG' => $user->lang['USER_LANG'],
+ 'S_CONTENT_DIRECTION' => $user->lang['DIRECTION'],
+ 'S_CONTENT_ENCODING' => 'UTF-8',
+ 'S_CONTENT_FLOW_BEGIN' => ($user->lang['DIRECTION'] == 'ltr') ? 'left' : 'right',
+ 'S_CONTENT_FLOW_END' => ($user->lang['DIRECTION'] == 'ltr') ? 'right' : 'left',
+ ));
+
+ // application/xhtml+xml not used because of IE
+ header('Content-type: text/html; charset=UTF-8');
+
+ header('Cache-Control: private, no-cache="set-cookie"');
+ header('Expires: 0');
+ header('Pragma: no-cache');
+
+ return;
+}
+
+/**
+* Page footer for acp pages
+*/
+function adm_page_footer($copyright_html = true)
+{
+ global $db, $config, $template, $user, $auth, $cache;
+ global $starttime, $phpbb_root_path, $phpbb_admin_path, $phpEx;
+
+ // Output page creation time
+ if (defined('DEBUG'))
+ {
+ $mtime = explode(' ', microtime());
+ $totaltime = $mtime[0] + $mtime[1] - $starttime;
+
+ if (!empty($_REQUEST['explain']) && $auth->acl_get('a_') && defined('DEBUG_EXTRA') && method_exists($db, 'sql_report'))
+ {
+ $db->sql_report('display');
+ }
+
+ $debug_output = sprintf('Time : %.3fs | ' . $db->sql_num_queries() . ' Queries | GZIP : ' . (($config['gzip_compress']) ? 'On' : 'Off') . (($user->load) ? ' | Load : ' . $user->load : ''), $totaltime);
+
+ if ($auth->acl_get('a_') && defined('DEBUG_EXTRA'))
+ {
+ if (function_exists('memory_get_usage'))
+ {
+ if ($memory_usage = memory_get_usage())
+ {
+ global $base_memory_usage;
+ $memory_usage -= $base_memory_usage;
+ $memory_usage = get_formatted_filesize($memory_usage);
+
+ $debug_output .= ' | Memory Usage: ' . $memory_usage;
+ }
+ }
+
+ $debug_output .= ' | <a href="' . build_url() . '&amp;explain=1">Explain</a>';
+ }
+ }
+
+ $template->assign_vars(array(
+ 'DEBUG_OUTPUT' => (defined('DEBUG')) ? $debug_output : '',
+ 'TRANSLATION_INFO' => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
+ 'S_COPYRIGHT_HTML' => $copyright_html,
+ 'VERSION' => $config['version'])
+ );
+
+ $template->display('body');
+
+ garbage_collection();
+ exit_handler();
+}
+
+/**
+* Generate back link for acp pages
+*/
+function adm_back_link($u_action)
+{
+ global $user;
+ return '<br /><br /><a href="' . $u_action . '">&laquo; ' . $user->lang['BACK_TO_PREV'] . '</a>';
+}
+
+/**
+* Build select field options in acp pages
+*/
+function build_select($option_ary, $option_default = false)
+{
+ global $user;
+
+ $html = '';
+ foreach ($option_ary as $value => $title)
+ {
+ $selected = ($option_default !== false && $value == $option_default) ? ' selected="selected"' : '';
+ $html .= '<option value="' . $value . '"' . $selected . '>' . $user->lang[$title] . '</option>';
+ }
+
+ return $html;
+}
+
+/**
+* Build radio fields in acp pages
+*/
+function h_radio($name, &$input_ary, $input_default = false, $id = false, $key = false)
+{
+ global $user;
+
+ $html = '';
+ $id_assigned = false;
+ foreach ($input_ary as $value => $title)
+ {
+ $selected = ($input_default !== false && $value == $input_default) ? ' checked="checked"' : '';
+ $html .= '<label><input type="radio" name="' . $name . '"' . (($id && !$id_assigned) ? ' id="' . $id . '"' : '') . ' value="' . $value . '"' . $selected . (($key) ? ' accesskey="' . $key . '"' : '') . ' class="radio" /> ' . $user->lang[$title] . '</label>';
+ $id_assigned = true;
+ }
+
+ return $html;
+}
+
+/**
+* Build configuration template for acp configuration pages
+*/
+function build_cfg_template($tpl_type, $key, &$new, $config_key, $vars)
+{
+ global $user, $module;
+
+ $tpl = '';
+ $name = 'config[' . $config_key . ']';
+
+ switch ($tpl_type[0])
+ {
+ case 'text':
+ case 'password':
+ $size = (int) $tpl_type[1];
+ $maxlength = (int) $tpl_type[2];
+
+ $tpl = '<input id="' . $key . '" type="' . $tpl_type[0] . '"' . (($size) ? ' size="' . $size . '"' : '') . ' maxlength="' . (($maxlength) ? $maxlength : 255) . '" name="' . $name . '" value="' . $new[$config_key] . '" />';
+ break;
+
+ case 'dimension':
+ $size = (int) $tpl_type[1];
+ $maxlength = (int) $tpl_type[2];
+
+ $tpl = '<input id="' . $key . '" type="text"' . (($size) ? ' size="' . $size . '"' : '') . ' maxlength="' . (($maxlength) ? $maxlength : 255) . '" name="config[' . $config_key . '_width]" value="' . $new[$config_key . '_width'] . '" /> x <input type="text"' . (($size) ? ' size="' . $size . '"' : '') . ' maxlength="' . (($maxlength) ? $maxlength : 255) . '" name="config[' . $config_key . '_height]" value="' . $new[$config_key . '_height'] . '" />';
+ break;
+
+ case 'textarea':
+ $rows = (int) $tpl_type[1];
+ $cols = (int) $tpl_type[2];
+
+ $tpl = '<textarea id="' . $key . '" name="' . $name . '" rows="' . $rows . '" cols="' . $cols . '">' . $new[$config_key] . '</textarea>';
+ break;
+
+ case 'radio':
+ $key_yes = ($new[$config_key]) ? ' checked="checked"' : '';
+ $key_no = (!$new[$config_key]) ? ' checked="checked"' : '';
+
+ $tpl_type_cond = explode('_', $tpl_type[1]);
+ $type_no = ($tpl_type_cond[0] == 'disabled' || $tpl_type_cond[0] == 'enabled') ? false : true;
+
+ $tpl_no = '<label><input type="radio" name="' . $name . '" value="0"' . $key_no . ' class="radio" /> ' . (($type_no) ? $user->lang['NO'] : $user->lang['DISABLED']) . '</label>';
+ $tpl_yes = '<label><input type="radio" id="' . $key . '" name="' . $name . '" value="1"' . $key_yes . ' class="radio" /> ' . (($type_no) ? $user->lang['YES'] : $user->lang['ENABLED']) . '</label>';
+
+ $tpl = ($tpl_type_cond[0] == 'yes' || $tpl_type_cond[0] == 'enabled') ? $tpl_yes . $tpl_no : $tpl_no . $tpl_yes;
+ break;
+
+ case 'select':
+ case 'select_multiple':
+ case 'custom':
+
+ $return = '';
+
+ if (isset($vars['method']))
+ {
+ $call = array($module->module, $vars['method']);
+ }
+ else if (isset($vars['function']))
+ {
+ $call = $vars['function'];
+ }
+ else
+ {
+ break;
+ }
+
+ if (isset($vars['params']))
+ {
+ $args = array();
+ foreach ($vars['params'] as $value)
+ {
+ switch ($value)
+ {
+ case '{CONFIG_VALUE}':
+ $value = $new[$config_key];
+ break;
+
+ case '{KEY}':
+ $value = $key;
+ break;
+ }
+
+ $args[] = $value;
+ }
+ }
+ else
+ {
+ if ($tpl_type[0] == 'select_multiple')
+ {
+ $new[$config_key] = @unserialize(trim($new[$config_key]));
+ }
+
+ $args = array($new[$config_key], $key);
+ }
+
+ $return = call_user_func_array($call, $args);
+
+ if ($tpl_type[0] == 'select_multiple')
+ {
+ $tpl = '<select id="' . $key . '" name="' . $name . '[]" multiple="multiple">' . $return . '</select>';
+ }
+ else if ($tpl_type[0] == 'select')
+ {
+ $tpl = '<select id="' . $key . '" name="' . $name . '">' . $return . '</select>';
+ }
+ else
+ {
+ $tpl = $return;
+ }
+
+ break;
+
+ default:
+ break;
+ }
+
+ if (isset($vars['append']))
+ {
+ $tpl .= $vars['append'];
+ }
+
+ return $tpl;
+}
+
+/**
+* Going through a config array and validate values, writing errors to $error. The validation method accepts parameters separated by ':' for string and int.
+* The first parameter defines the type to be used, the second the lower bound and the third the upper bound. Only the type is required.
+*/
+function validate_config_vars($config_vars, &$cfg_array, &$error)
+{
+ global $phpbb_root_path, $user;
+ $type = 0;
+ $min = 1;
+ $max = 2;
+
+ foreach ($config_vars as $config_name => $config_definition)
+ {
+ if (!isset($cfg_array[$config_name]) || strpos($config_name, 'legend') !== false)
+ {
+ continue;
+ }
+
+ if (!isset($config_definition['validate']))
+ {
+ continue;
+ }
+
+ $validator = explode(':', $config_definition['validate']);
+
+ // Validate a bit. ;) (0 = type, 1 = min, 2= max)
+ switch ($validator[$type])
+ {
+ case 'string':
+ $length = strlen($cfg_array[$config_name]);
+
+ // the column is a VARCHAR
+ $validator[$max] = (isset($validator[$max])) ? min(255, $validator[$max]) : 255;
+
+ if (isset($validator[$min]) && $length < $validator[$min])
+ {
+ $error[] = sprintf($user->lang['SETTING_TOO_SHORT'], $user->lang[$config_definition['lang']], $validator[$min]);
+ }
+ else if (isset($validator[$max]) && $length > $validator[2])
+ {
+ $error[] = sprintf($user->lang['SETTING_TOO_LONG'], $user->lang[$config_definition['lang']], $validator[$max]);
+ }
+ break;
+
+ case 'bool':
+ $cfg_array[$config_name] = ($cfg_array[$config_name]) ? 1 : 0;
+ break;
+
+ case 'int':
+ $cfg_array[$config_name] = (int) $cfg_array[$config_name];
+
+ if (isset($validator[$min]) && $cfg_array[$config_name] < $validator[$min])
+ {
+ $error[] = sprintf($user->lang['SETTING_TOO_LOW'], $user->lang[$config_definition['lang']], $validator[$min]);
+ }
+ else if (isset($validator[$max]) && $cfg_array[$config_name] > $validator[$max])
+ {
+ $error[] = sprintf($user->lang['SETTING_TOO_BIG'], $user->lang[$config_definition['lang']], $validator[$max]);
+ }
+ break;
+
+ // Absolute path
+ case 'script_path':
+ if (!$cfg_array[$config_name])
+ {
+ break;
+ }
+
+ $destination = str_replace('\\', '/', $cfg_array[$config_name]);
+
+ if ($destination !== '/')
+ {
+ // Adjust destination path (no trailing slash)
+ if (substr($destination, -1, 1) == '/')
+ {
+ $destination = substr($destination, 0, -1);
+ }
+
+ $destination = str_replace(array('../', './'), '', $destination);
+
+ if ($destination[0] != '/')
+ {
+ $destination = '/' . $destination;
+ }
+ }
+
+ $cfg_array[$config_name] = trim($destination);
+
+ break;
+
+ // Absolute path
+ case 'lang':
+ if (!$cfg_array[$config_name])
+ {
+ break;
+ }
+
+ $cfg_array[$config_name] = basename($cfg_array[$config_name]);
+
+ if (!file_exists($phpbb_root_path . 'language/' . $cfg_array[$config_name] . '/'))
+ {
+ $error[] = $user->lang['WRONG_DATA_LANG'];
+ }
+ break;
+
+ // Relative path (appended $phpbb_root_path)
+ case 'rpath':
+ case 'rwpath':
+ if (!$cfg_array[$config_name])
+ {
+ break;
+ }
+
+ $destination = $cfg_array[$config_name];
+
+ // Adjust destination path (no trailing slash)
+ if (substr($destination, -1, 1) == '/' || substr($destination, -1, 1) == '\\')
+ {
+ $destination = substr($destination, 0, -1);
+ }
+
+ $destination = str_replace(array('../', '..\\', './', '.\\'), '', $destination);
+ if ($destination && ($destination[0] == '/' || $destination[0] == "\\"))
+ {
+ $destination = '';
+ }
+
+ $cfg_array[$config_name] = trim($destination);
+
+ // Path being relative (still prefixed by phpbb_root_path), but with the ability to escape the root dir...
+ case 'path':
+ case 'wpath':
+
+ if (!$cfg_array[$config_name])
+ {
+ break;
+ }
+
+ $cfg_array[$config_name] = trim($cfg_array[$config_name]);
+
+ // Make sure no NUL byte is present...
+ if (strpos($cfg_array[$config_name], "\0") !== false || strpos($cfg_array[$config_name], '%00') !== false)
+ {
+ $cfg_array[$config_name] = '';
+ break;
+ }
+
+ if (!file_exists($phpbb_root_path . $cfg_array[$config_name]))
+ {
+ $error[] = sprintf($user->lang['DIRECTORY_DOES_NOT_EXIST'], $cfg_array[$config_name]);
+ }
+
+ if (file_exists($phpbb_root_path . $cfg_array[$config_name]) && !is_dir($phpbb_root_path . $cfg_array[$config_name]))
+ {
+ $error[] = sprintf($user->lang['DIRECTORY_NOT_DIR'], $cfg_array[$config_name]);
+ }
+
+ // Check if the path is writable
+ if ($config_definition['validate'] == 'wpath' || $config_definition['validate'] == 'rwpath')
+ {
+ if (file_exists($phpbb_root_path . $cfg_array[$config_name]) && !@is_writable($phpbb_root_path . $cfg_array[$config_name]))
+ {
+ $error[] = sprintf($user->lang['DIRECTORY_NOT_WRITABLE'], $cfg_array[$config_name]);
+ }
+ }
+
+ break;
+ }
+ }
+
+ return;
+}
+
+/**
+* Checks whatever or not a variable is OK for use in the Database
+* param mixed $value_ary An array of the form array(array('lang' => ..., 'value' => ..., 'column_type' =>))'
+* param mixed $error The error array
+*/
+function validate_range($value_ary, &$error)
+{
+ global $user;
+
+ $column_types = array(
+ 'BOOL' => array('php_type' => 'int', 'min' => 0, 'max' => 1),
+ 'USINT' => array('php_type' => 'int', 'min' => 0, 'max' => 65535),
+ 'UINT' => array('php_type' => 'int', 'min' => 0, 'max' => (int) 0x7fffffff),
+ 'INT' => array('php_type' => 'int', 'min' => (int) 0x80000000, 'max' => (int) 0x7fffffff),
+ 'TINT' => array('php_type' => 'int', 'min' => -128, 'max' => 127),
+
+ 'VCHAR' => array('php_type' => 'string', 'min' => 0, 'max' => 255),
+ );
+ foreach ($value_ary as $value)
+ {
+ $column = explode(':', $value['column_type']);
+ $max = $min = 0;
+ $type = 0;
+ if (!isset($column_types[$column[0]]))
+ {
+ continue;
+ }
+ else
+ {
+ $type = $column_types[$column[0]];
+ }
+
+ switch ($type['php_type'])
+ {
+ case 'string' :
+ $max = (isset($column[1])) ? min($column[1],$type['max']) : $type['max'];
+ if (strlen($value['value']) > $max)
+ {
+ $error[] = sprintf($user->lang['SETTING_TOO_LONG'], $user->lang[$value['lang']], $max);
+ }
+ break;
+
+ case 'int':
+ $min = (isset($column[1])) ? max($column[1],$type['min']) : $type['min'];
+ $max = (isset($column[2])) ? min($column[2],$type['max']) : $type['max'];
+ if ($value['value'] < $min)
+ {
+ $error[] = sprintf($user->lang['SETTING_TOO_LOW'], $user->lang[$value['lang']], $min);
+ }
+ else if ($value['value'] > $max)
+ {
+ $error[] = sprintf($user->lang['SETTING_TOO_BIG'], $user->lang[$value['lang']], $max);
+ }
+ break;
+ }
+ }
+}
+
+?>
View
376 public/adm/style/acp_attachments.html
@@ -0,0 +1,376 @@
+<!-- INCLUDE overall_header.html -->
+
+<a name="maincontent"></a>
+
+<!-- IF U_BACK -->
+ <a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">&laquo; {L_BACK}</a>
+<!-- ENDIF -->
+
+<h1>{L_TITLE}</h1>
+
+<p>{L_TITLE_EXPLAIN}</p>
+
+<!-- IF S_WARNING -->
+ <div class="errorbox">
+ <h3>{L_WARNING}</h3>
+ <p>{WARNING_MSG}</p>
+ </div>
+<!-- ENDIF -->
+
+<!-- IF S_NOTIFY -->
+ <div class="successbox">
+ <h3>{L_NOTIFY}</h3>
+ <p>{NOTIFY_MSG}</p>
+ </div>
+<!-- ENDIF -->
+
+<!-- IF S_UPLOADING_FILES -->
+ <h2>{L_UPLOADING_FILES}</h2>
+
+ <!-- BEGIN upload -->
+ :: {upload.FILE_INFO}<br />
+ <!-- IF upload.S_DENIED --><span class="error">{upload.DENIED}</span><!-- ELSEIF upload.ERROR_MSG --><span class="error">{upload.ERROR_MSG}</span><!-- ELSE --><span class="success">{L_SUCCESSFULLY_UPLOADED}</span><!-- ENDIF -->
+ <br /><br />
+ <!-- END upload -->
+
+<!-- ENDIF -->
+
+<!-- IF S_ATTACHMENT_SETTINGS -->
+
+ <!-- IF not S_THUMBNAIL_SUPPORT -->
+ <div class="errorbox">
+ <p>{L_NO_THUMBNAIL_SUPPORT}</p>
+ </div>
+ <!-- ENDIF -->
+
+ <form id="attachsettings" method="post" action="{U_ACTION}">
+ <!-- BEGIN options -->
+ <!-- IF options.S_LEGEND -->
+ <!-- IF not options.S_FIRST_ROW -->
+ </fieldset>
+ <!-- ENDIF -->
+ <fieldset>
+ <legend>{options.LEGEND}</legend>
+ <!-- ELSE -->
+
+ <dl>
+ <dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
+ <dd>{options.CONTENT}</dd>
+ </dl>
+
+ <!-- ENDIF -->
+ <!-- END options -->
+ </fieldset>
+
+ <fieldset class="submit-buttons">
+ <legend>{L_SUBMIT}</legend>
+ <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
+ <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
+ </fieldset>
+
+ <!-- IF not S_SECURE_DOWNLOADS -->
+ <div class="errorbox">
+ <p>{L_SECURE_DOWNLOAD_NOTICE}</p>
+ </div>
+ <!-- ENDIF -->
+
+ <fieldset>
+ <legend>{L_SECURE_TITLE}</legend>
+ <p>{L_DOWNLOAD_ADD_IPS_EXPLAIN}</p>
+ <dl>
+ <dt><label for="ip_hostname">{L_IP_HOSTNAME}:</label></dt>
+ <dd><textarea id="ip_hostname" cols="40" rows="3" name="ips"></textarea></dd>
+ </dl>
+ <dl>
+ <dt><label for="exclude">{L_IP_EXCLUDE}:</label><br /><span>{L_EXCLUDE_ENTERED_IP}</span></dt>
+ <dd><label><input type="radio" id="exclude" name="ipexclude" value="1" class="radio" /> {L_YES}</label>
+ <label><input type="radio" name="ipexclude" value="0" checked="checked" class="radio" /> {L_NO}</label></dd>
+ </dl>
+
+ <p class="quick">
+ <input class="button1" type="submit" id="securesubmit" name="securesubmit" value="{L_SUBMIT}" />
+ </p>
+ </fieldset>
+
+ <fieldset>
+ <legend>{L_REMOVE_IPS}</legend>
+ <!-- IF S_DEFINED_IPS -->
+ <p>{L_DOWNLOAD_REMOVE_IPS_EXPLAIN}</p>
+ <dl>
+ <dt><label for="remove_ip_hostname">{L_IP_HOSTNAME}:</label></dt>
+ <dd><select name="unip[]" id="remove_ip_hostname" multiple="multiple" size="10">{DEFINED_IPS}</select></dd>
+ </dl>
+
+ <p class="quick">
+ <input class="button1" type="submit" id="unsecuresubmit" name="unsecuresubmit" value="{L_SUBMIT}" />
+ </p>
+ </fieldset>
+
+ <!-- ELSE -->
+ <p>{L_NO_IPS_DEFINED}</p>
+ <!-- ENDIF -->
+ {S_FORM_TOKEN}
+ </fieldset>
+ </form>
+
+<!-- ELSEIF S_EXTENSION_GROUPS -->
+
+ <!-- IF S_EDIT_GROUP -->
+ <script type="text/javascript" defer="defer">
+ // <![CDATA[
+ function update_image(newimage)
+ {
+ if (newimage == 'no_image')
+ {
+ document.getElementById('image_upload_icon').src = "{PHPBB_ROOT_PATH}images/spacer.gif";
+ }
+ else
+ {
+ document.getElementById('image_upload_icon').src = "{PHPBB_ROOT_PATH}{IMG_PATH}/" + newimage;
+ }
+ }
+
+ function show_extensions(elem)
+ {
+ var str = '';
+
+ for (i = 0; i < elem.length; i++)
+ {
+ var element = elem.options[i];
+ if (element.selected)
+ {
+ if (str)
+ {
+ str = str + ', ';
+ }
+
+ str = str + element.innerHTML;
+ }
+ }
+
+ if (document.all)
+ {
+ document.all.ext.innerText = str;
+ }
+ else if (document.getElementById('ext').textContent)
+ {
+ document.getElementById('ext').textContent = str;
+ }
+ else if (document.getElementById('ext').firstChild.nodeValue)
+ {
+ document.getElementById('ext').firstChild.nodeValue = str;
+ }
+ }
+
+ // ]]>
+ </script>
+
+ <form id="extgroups" method="post" action="{U_ACTION}">
+ <fieldset>
+ <input type="hidden" name="action" value="{ACTION}" />
+ <input type="hidden" name="g" value="{GROUP_ID}" />
+
+ <legend>{L_LEGEND}</legend>
+ <dl>
+ <dt><label for="group_name">{L_GROUP_NAME}:</label></dt>
+ <dd><input type="text" id="group_name" size="20" maxlength="100" name="group_name" value="{GROUP_NAME}" /></dd>
+ </dl>
+ <dl>
+ <dt><label for="category">{L_SPECIAL_CATEGORY}:</label><br /><span>{L_SPECIAL_CATEGORY_EXPLAIN}</span></dt>
+ <dd>{S_CATEGORY_SELECT}</dd>
+ </dl>
+ <dl>
+ <dt><label for="allowed">{L_ALLOWED}:</label></dt>
+ <dd><input type="checkbox" class="radio" id="allowed" name="allow_group" value="1"<!-- IF ALLOW_GROUP --> checked="checked"<!-- ENDIF --> /></dd>
+ </dl>
+ <dl>
+ <dt><label for="allow_in_pm">{L_ALLOW_IN_PM}:</label></dt>
+ <dd><input type="checkbox" class="radio" id="allow_in_pm" name="allow_in_pm" value="1"<!-- IF ALLOW_IN_PM --> checked="checked"<!-- ENDIF --> /></dd>
+ </dl>
+ <dl>
+ <dt><label for="upload_icon">{L_UPLOAD_ICON}:</label></dt>
+ <dd><select name="upload_icon" id="upload_icon" onchange="update_image(this.options[selectedIndex].value);">
+ <option value="no_image"<!-- IF S_NO_IMAGE --> selected="selected"<!-- ENDIF -->>{L_NO_IMAGE}</option>{S_FILENAME_LIST}
+ </select></dd>
+ <dd>&nbsp;<img <!-- IF S_NO_IMAGE -->src="{PHPBB_ROOT_PATH}images/spacer.gif"<!-- ELSE -->src="{UPLOAD_ICON_SRC}"<!-- ENDIF --> id="image_upload_icon" alt="" title="" />&nbsp;</dd>
+ </dl>
+ <dl>
+ <dt><label for="extgroup_filesize">{L_MAX_EXTGROUP_FILESIZE}:</label></dt>
+ <dd><input type="text" id="extgroup_filesize" size="3" maxlength="15" name="max_filesize" value="{EXTGROUP_FILESIZE}" /> <select name="size_select">{S_EXT_GROUP_SIZE_OPTIONS}</select></dd>
+ </dl>
+ <dl>
+ <dt><label for="assigned_extensions">{L_ASSIGNED_EXTENSIONS}:</label></dt>
+ <dd><div id="ext">{ASSIGNED_EXTENSIONS}</div> <span>[<a href="{U_EXTENSIONS}">{L_GO_TO_EXTENSIONS}</a> ]</span></dd>
+ <dd><select name="extensions[]" id="assigned_extensions" class="narrow" onchange="show_extensions(this);" multiple="multiple" size="8">{S_EXTENSION_OPTIONS}</select></dd>
+ </dl>
+ <dl>
+ <dt><label for="allowed_forums">{L_ALLOWED_FORUMS}:</label><br /><span>{L_ALLOWED_FORUMS_EXPLAIN}</span></dt>
+ <dd><label><input type="radio" id="allowed_forums" class="radio" name="forum_select" value="0"<!-- IF not S_FORUM_IDS --> checked="checked"<!-- ENDIF --> /> {L_ALLOW_ALL_FORUMS}</label>
+ <label><input type="radio" class="radio" name="forum_select" value="1"<!-- IF S_FORUM_IDS --> checked="checked"<!-- ENDIF --> /> {L_ALLOW_SELECTED_FORUMS}</label></dd>
+ <dd><select name="allowed_forums[]" multiple="multiple" size="8">{S_FORUM_ID_OPTIONS}</select></dd>
+ </dl>
+
+ <p class="submit-buttons">
+ <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
+ <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
+ </p>
+ {S_FORM_TOKEN}
+ </fieldset>
+
+ </form>
+ <!-- ELSE -->
+
+ <form id="extgroups" method="post" action="{U_ACTION}">
+ <fieldset class="tabulated">
+ <legend>{L_TITLE}</legend>
+
+ <table cellspacing="1">
+ <col class="row1" /><col class="row1" /><col class="row2" />
+ <thead>
+ <tr>
+ <th>{L_EXTENSION_GROUP}</th>
+ <th>{L_SPECIAL_CATEGORY}</th>
+ <th>{L_OPTIONS}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- BEGIN groups -->
+ <!-- IF groups.S_ADD_SPACER and not groups.S_FIRST_ROW -->
+ <tr>
+ <td class="spacer" colspan="3">&nbsp;</td>
+ </tr>
+ <!-- ENDIF -->
+ <tr>
+ <td><strong>{groups.GROUP_NAME}</strong>
+ <!-- IF groups.S_GROUP_ALLOWED and not groups.S_ALLOWED_IN_PM --><br /><span>&raquo; {L_NOT_ALLOWED_IN_PM}</span>
+ <!-- ELSEIF groups.S_ALLOWED_IN_PM and not groups.S_GROUP_ALLOWED --><br /><span>&raquo; {L_ONLY_ALLOWED_IN_PM}</span>
+ <!-- ELSEIF not groups.S_GROUP_ALLOWED and not groups.S_ALLOWED_IN_PM --><br /><span>&raquo; {L_NOT_ALLOWED_IN_PM_POST}</span>
+ <!-- ELSE --><br /><span>&raquo; {L_ALLOWED_IN_PM_POST}</span><!-- ENDIF -->
+ </td>
+ <td>{groups.CATEGORY}</td>
+ <td align="center" valign="middle" style="white-space: nowrap;">&nbsp;<a href="{groups.U_EDIT}">{ICON_EDIT}</a>&nbsp;&nbsp;<a href="{groups.U_DELETE}">{ICON_DELETE}</a>&nbsp;</td>
+ </tr>
+ <!-- END groups -->
+ </tbody>
+ </table>
+ <p class="quick">
+ {L_CREATE_GROUP}: <input type="text" name="group_name" maxlength="30" />
+ <input class="button2" name="add" type="submit" value="{L_SUBMIT}" />
+ </p>
+ {S_FORM_TOKEN}
+ </fieldset>
+ </form>
+
+ <!-- ENDIF -->
+
+<!-- ELSEIF S_EXTENSIONS -->
+
+ <form id="add_ext" method="post" action="{U_ACTION}">
+ <fieldset>
+ <legend>{L_ADD_EXTENSION}</legend>
+ <dl>
+ <dt><label for="add_extension">{L_EXTENSION}</label></dt>
+ <dd><input type="text" id="add_extension" size="20" maxlength="100" name="add_extension" value="{ADD_EXTENSION}" /></dd>
+ </dl>
+ <dl>
+ <dt><label for="extension_group">{L_EXTENSION_GROUP}</label></dt>
+ <dd>{GROUP_SELECT_OPTIONS}</dd>
+ </dl>
+
+ <p class="quick">
+ <input type="submit" id="add_extension_check" name="add_extension_check" class="button2" value="{L_SUBMIT}" />
+ </p>
+ {S_FORM_TOKEN}
+ </fieldset>
+ </form>
+
+ <br />
+
+ <form id="change_ext" method="post" action="{U_ACTION}">
+
+ <fieldset class="tabulated">
+ <legend>{L_TITLE}</legend>
+
+ <table cellspacing="1">
+ <col class="row1" /><col class="row1" /><col class="row2" />
+ <thead>
+ <tr>
+ <th>{L_EXTENSION}</th>
+ <th>{L_EXTENSION_GROUP}</th>
+ <th>{L_DELETE}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- BEGIN extensions -->
+ <!-- IF extensions.S_SPACER -->
+ <tr>
+ <td class="spacer" colspan="3">&nbsp;</td>
+ </tr>
+ <!-- ENDIF -->
+ <tr>
+ <td><strong>{extensions.EXTENSION}</strong></td>
+ <td>{extensions.GROUP_OPTIONS}</td>
+ <td><input type="checkbox" class="radio" name="extension_id_list[]" value="{extensions.EXTENSION_ID}" /><input type="hidden" name="extension_change_list[]" value="{extensions.EXTENSION_ID}" /></td>
+ </tr>
+ <!-- END extensions -->
+ </tbody>
+ </table>
+
+ <p class="submit-buttons">
+ <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
+ <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
+ </p>
+ {S_FORM_TOKEN}
+ </fieldset>
+ </form>
+
+<!-- ELSEIF S_ORPHAN -->
+
+ <form id="orphan" method="post" action="{U_ACTION}">
+
+ <fieldset class="tabulated">
+ <legend>{L_TITLE}</legend>
+
+ <table cellspacing="1">
+ <thead>
+ <tr>
+ <th>{L_FILENAME}</th>
+ <th>{L_FILEDATE}</th>
+ <th>{L_FILESIZE}</th>
+ <th>{L_ATTACH_POST_ID}</th>
+ <th>{L_ATTACH_TO_POST}</th>
+ <th>{L_DELETE}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- BEGIN orphan -->
+ <!-- IF orphan.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
+ <td><a href="{orphan.U_FILE}">{orphan.REAL_FILENAME}</a></td>
+ <td>{orphan.FILETIME}</td>
+ <td>{orphan.FILESIZE}</td>
+ <td><strong>{L_ATTACH_ID}: </strong><input type="text" name="post_id[{orphan.ATTACH_ID}]" size="7" maxlength="10" value="{orphan.POST_ID}" /></td>
+ <td><input type="checkbox" class="radio" name="add[{orphan.ATTACH_ID}]" /></td>
+ <td><input type="checkbox" class="radio" name="delete[{orphan.ATTACH_ID}]" /></td>
+ </tr>
+ <!-- END orphan -->
+ <tr class="row4">
+ <td colspan="4">&nbsp;</td>
+ <td class="small"><a href="#" onclick="marklist('orphan', 'add', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('orphan', 'add', false); return false;">{L_UNMARK_ALL}</a></td>
+ <td class="small"><a href="#" onclick="marklist('orphan', 'delete', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('orphan', 'delete', false); return false;">{L_UNMARK_ALL}</a></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <br />
+
+ <p class="submit-buttons">
+ <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
+ <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
+ </p>
+ {S_FORM_TOKEN}
+ </fieldset>
+ </form>
+
+<!-- ENDIF -->
+
+<!-- INCLUDE overall_footer.html -->
View
124 public/adm/style/acp_ban.html
@@ -0,0 +1,124 @@
+<!-- INCLUDE overall_header.html -->
+
+<a name="maincontent"></a>
+
+<p>{L_ACP_BAN_EXPLAIN}</p>
+
+<h1>{L_TITLE}</h1>
+
+<p>{L_EXPLAIN}</p>
+
+<script type="text/javascript">
+// <![CDATA[
+
+ var ban_length = new Array();
+ ban_length[-1] = '';
+ <!-- BEGIN ban_length -->
+ ban_length['{ban_length.BAN_ID}'] = '{ban_length.A_LENGTH}';
+ <!-- END ban_length -->
+
+ var ban_reason = new Array();
+ ban_reason[-1] = '';
+ <!-- BEGIN ban_reason -->
+ ban_reason['{ban_reason.BAN_ID}'] = '{ban_reason.A_REASON}';
+ <!-- END ban_reason -->
+
+ var ban_give_reason = new Array();
+ ban_give_reason[-1] = '';
+ <!-- BEGIN ban_give_reason -->
+ ban_give_reason['{ban_give_reason.BAN_ID}'] = '{ban_give_reason.A_REASON}';
+ <!-- END ban_give_reason -->
+
+ function display_details(option)
+ {
+ document.getElementById('acp_unban').unbangivereason.value = ban_give_reason[option];
+ document.getElementById('acp_unban').unbanreason.value = ban_reason[option];
+ document.getElementById('acp_unban').unbanlength.value = ban_length[option];
+ }
+
+// ]]>
+</script>
+
+<form id="acp_ban" method="post" action="{U_ACTION}">
+
+<fieldset>
+ <legend>{L_TITLE}</legend>
+<dl>
+ <dt><label for="ban">{L_BAN_CELL}:</label></dt>
+ <dd><textarea name="ban" cols="40" rows="3" id="ban"></textarea></dd>
+ <!-- IF S_USERNAME_BAN --><dd>[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</dd><!-- ENDIF -->
+</dl>
+<dl>
+ <dt><label for="banlength">{L_BAN_LENGTH}:</label></dt>
+ <dd><label for="banlength"><select name="banlength" id="banlength" onchange="if(this.value==-1){document.getElementById('banlengthother').style.display = 'block';}else{document.getElementById('banlengthother').style.display='none';}">{S_BAN_END_OPTIONS}</select></label></dd>
+ <dd id="banlengthother" style="display: none;"><label><input type="text" name="banlengthother" class="inputbox" /><br /><span>{L_YEAR_MONTH_DAY}</span></label></dd>
+</dl>
+<dl>
+ <dt><label for="banexclude">{L_BAN_EXCLUDE}:</label><br /><span>{L_BAN_EXCLUDE_EXPLAIN}</span></dt>
+ <dd><label><input type="radio" name="banexclude" value="1" class="radio" /> {L_YES}</label>
+ <label><input type="radio" name="banexclude" id="banexclude" value="0" checked="checked" class="radio" /> {L_NO}</label></dd>
+</dl>
+<dl>
+ <dt><label for="banreason">{L_BAN_REASON}:</label></dt>
+ <dd><input name="banreason" type="text" class="text medium" maxlength="255" id="banreason" /></dd>
+</dl>
+<dl>
+ <dt><label for="bangivereason">{L_BAN_GIVE_REASON}:</label></dt>
+ <dd><input name="bangivereason" type="text" class="text medium" maxlength="255" id="bangivereason" /></dd>
+</dl>
+
+<p class="submit-buttons">
+ <input class="button1" type="submit" id="bansubmit" name="bansubmit" value="{L_SUBMIT}" />&nbsp;
+ <input class="button2" type="reset" id="banreset" name="banreset" value="{L_RESET}" />
+</p>
+{S_FORM_TOKEN}
+</fieldset>
+</form>
+
+<br /><br />
+
+<h1>{L_UNBAN_TITLE}</h1>
+
+<p>{L_UNBAN_EXPLAIN}</p>
+
+<form id="acp_unban" method="post" action="{U_ACTION}">
+
+<fieldset>
+ <legend>{L_UNBAN_TITLE}</legend>
+
+<!-- IF S_BANNED_OPTIONS -->
+ <dl>
+ <dt><label for="unban">{L_BAN_CELL}:</label></dt>
+ <dd><select id="unban" name="unban[]" multiple="multiple" size="10" style="width: 50%" onchange="if (this.selectedIndex > -1) display_details(this.options[this.selectedIndex].value); else display_details(-1);">{BANNED_OPTIONS}</select></dd>
+ </dl>
+ <dl>
+ <dt><label for="unbanlength">{L_BAN_LENGTH}:</label></dt>
+ <dd><input style="border: 0;" type="text" class="text full" disabled="disabled" name="unbanlength" id="unbanlength" /></dd>
+ </dl>
+ <dl>
+ <dt><label for="unbanreason">{L_BAN_REASON}:</label></dt>
+ <dd><textarea style="border: 0;" class="text full" disabled="disabled" name="unbanreason" id="unbanreason" rows="5" cols="80">&nbsp;</textarea></dd>
+ </dl>
+ <dl>
+ <dt><label for="unbangivereason">{L_BAN_GIVE_REASON}:</label></dt>
+ <dd><textarea style="border: 0;" class="text full" disabled="disabled" name="unbangivereason" id="unbangivereason" rows="5" cols="80">&nbsp;</textarea></dd>
+ </dl>
+
+ <p class="submit-buttons">
+ <input class="button1" type="submit" id="unbansubmit" name="unbansubmit" value="{L_SUBMIT}" />&nbsp;
+ <input class="button2" type="reset" id="unbanreset" name="unbanreset" value="{L_RESET}" />
+ </p>
+ {S_FORM_TOKEN}
+ </fieldset>
+
+<!-- ELSE -->
+
+ <p>{L_NO_BAN_CELL}</p>
+ {S_FORM_TOKEN}
+</fieldset>
+
+<!-- ENDIF -->
+
+</form>
+
+<!-- INCLUDE overall_footer.html -->
View
124 public/adm/style/acp_bbcodes.html
@@ -0,0 +1,124 @@
+<!-- INCLUDE overall_header.html -->
+
+<a name="maincontent"></a>
+
+<!-- IF S_EDIT_BBCODE -->
+
+ <a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">&laquo; {L_BACK}</a>
+
+ <h1>{L_ACP_BBCODES}</h1>
+
+ <p>{L_ACP_BBCODES_EXPLAIN}</p>
+
+ <form id="acp_bbcodes" method="post" action="{U_ACTION}">
+
+ <fieldset>
+ <legend>{L_BBCODE_USAGE}</legend>
+ <p>{L_BBCODE_USAGE_EXPLAIN}</p>
+ <dl>
+ <dt><label for="bbcode_match">{L_EXAMPLES}</label><br /><br /><span>{L_BBCODE_USAGE_EXAMPLE}</span></dt>
+ <dd><textarea id="bbcode_match" name="bbcode_match" cols="60" rows="5">{BBCODE_MATCH}</textarea></dd>
+ </dl>
+ </fieldset>
+
+ <fieldset>
+ <legend>{L_HTML_REPLACEMENT}</legend>
+ <p>{L_HTML_REPLACEMENT_EXPLAIN}</p>
+ <dl>
+ <dt><label for="bbcode_tpl">{L_EXAMPLES}</label><br /><br /><span>{L_HTML_REPLACEMENT_EXAMPLE}</span></dt>
+ <dd><textarea id="bbcode_tpl" name="bbcode_tpl" cols="60" rows="8">{BBCODE_TPL}</textarea></dd>
+ </dl>
+ </fieldset>
+
+ <fieldset>
+ <legend>{L_BBCODE_HELPLINE}</legend>
+ <p>{L_BBCODE_HELPLINE_EXPLAIN}</p>
+ <dl>
+ <dt><label for="bbcode_helpline">{L_BBCODE_HELPLINE_TEXT}</label></dt>
+ <dd><input type="text" id="bbcode_helpline" name="bbcode_helpline" size="60" maxlength="255" value="{BBCODE_HELPLINE}" /></dd>
+ </dl>
+ </fieldset>
+
+ <fieldset>
+ <legend>{L_SETTINGS}</legend>
+ <dl>
+ <dt><label for="display_on_posting">{L_DISPLAY_ON_POSTING}</label></dt>
+ <dd><input type="checkbox" class="radio" name="display_on_posting" id="display_on_posting" value="1"<!-- IF DISPLAY_ON_POSTING --> checked="checked"<!-- ENDIF --> /></dd>
+ </dl>
+ </fieldset>
+
+ <fieldset class="submit-buttons">
+ <legend>{L_SUBMIT}</legend>
+ <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
+ <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
+ {S_FORM_TOKEN}
+ </fieldset>
+
+ <br />
+
+ <table cellspacing="1" id="down">
+ <thead>
+ <tr>
+ <th colspan="2">{L_TOKENS}</th>
+ </tr>
+ <tr>
+ <td class="row3" colspan="2">{L_TOKENS_EXPLAIN}</td>
+ </tr>
+ <tr>
+ <th>{L_TOKEN}</th>
+ <th>{L_TOKEN_DEFINITION}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- BEGIN token -->
+ <tr valign="top">
+ <td class="row1">{token.TOKEN}</td>
+ <td class="row2">{token.EXPLAIN}</td>
+ </tr>
+ <!-- END token -->
+ </tbody>
+ </table>
+ </form>
+
+<!-- ELSE -->
+
+ <h1>{L_ACP_BBCODES}</h1>
+
+ <p>{L_ACP_BBCODES_EXPLAIN}</p>
+
+ <form id="acp_bbcodes" method="post" action="{U_ACTION}">
+ <fieldset class="tabulated">
+ <legend>{L_ACP_BBCODES}</legend>
+
+ <table cellspacing="1" id="down">
+ <thead>
+ <tr>
+ <th>{L_BBCODE_TAG}</th>
+ <th>{L_ACTION}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- BEGIN bbcodes -->
+ <!-- IF bbcodes.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
+ <td style="text-align: center;">{bbcodes.BBCODE_TAG}</td>
+ <td style="text-align: right; width: 40px;"><a href="{bbcodes.U_EDIT}">{ICON_EDIT}</a> <a href="{bbcodes.U_DELETE}">{ICON_DELETE}</a></td>
+ </tr>
+ <!-- BEGINELSE -->
+ <tr class="row3">
+ <td colspan="2">{L_ACP_NO_ITEMS}</td>
+ </tr>
+ <!-- END bbcodes -->
+ </tbody>
+ </table>
+
+ <p class="quick">
+ <input class="button2" name="submit" type="submit" value="{L_ADD_BBCODE}" />
+ </p>
+ {S_FORM_TOKEN}
+ </fieldset>
+
+ </form>
+
+<!-- ENDIF -->
+
+<!-- INCLUDE overall_footer.html -->
View
49 public/adm/style/acp_board.html
@@ -0,0 +1,49 @@
+<!-- INCLUDE overall_header.html -->
+
+<a name="maincontent"></a>
+
+<h1>{L_TITLE}</h1>
+
+<p>{L_TITLE_EXPLAIN}</p>
+
+<!-- IF S_ERROR -->
+ <div class="errorbox">
+ <h3>{L_WARNING}</h3>
+ <p>{ERROR_MSG}</p>
+ </div>
+<!-- ENDIF -->
+
+<form id="acp_board" method="post" action="{U_ACTION}">
+
+<!-- BEGIN options -->
+ <!-- IF options.S_LEGEND -->
+ <!-- IF not options.S_FIRST_ROW -->
+ </fieldset>
+ <!-- ENDIF -->
+ <fieldset>
+ <legend>{options.LEGEND}</legend>
+ <!-- ELSE -->
+
+ <dl>
+ <dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
+ <dd>{options.CONTENT}</dd>
+ </dl>
+
+ <!-- ENDIF -->
+<!-- END options -->
+
+<!-- IF S_AUTH -->
+ <!-- BEGIN auth_tpl -->
+ {auth_tpl.TPL}
+ <!-- END auth_tpl -->
+<!-- ENDIF -->
+
+ <p class="submit-buttons">
+ <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
+ <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
+ </p>
+ {S_FORM_TOKEN}
+</fieldset>
+</form>
+
+<!-- INCLUDE overall_footer.html -->
View
102 public/adm/style/acp_bots.html
@@ -0,0 +1,102 @@
+<!-- INCLUDE overall_header.html -->
+
+<a name="maincontent"></a>
+
+<!-- IF S_EDIT_BOT -->
+
+ <a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">&laquo; {L_BACK}</a>
+
+ <h1>{L_TITLE}</h1>
+
+ <p>{L_BOT_EDIT_EXPLAIN}</p>
+
+ <!-- IF S_ERROR -->
+ <div class="errorbox">
+ <h3>{L_WARNING}</h3>
+ <p>{ERROR_MSG}</p>
+ </div>
+ <!-- ENDIF -->
+
+ <form id="acp_bots" method="post" action="{U_ACTION}">
+
+ <fieldset>
+ <legend>{L_TITLE}</legend>
+ <dl>
+ <dt><label for="bot_name">{L_BOT_NAME}:</label><br /><span>{L_BOT_NAME_EXPLAIN}</span></dt>
+ <dd><input name="bot_name" type="text" id="bot_name" value="{BOT_NAME}" maxlength="255" /></dd>
+ </dl>
+ <dl>
+ <dt><label for="bot_style">{L_BOT_STYLE}:</label><br /><span>{L_BOT_STYLE_EXPLAIN}</span></dt>
+ <dd><select id="bot_style" name="bot_style">{S_STYLE_OPTIONS}</select></dd>
+ </dl>
+ <dl>
+ <dt><label for="bot_lang">{L_BOT_LANG}:</label><br /><span>{L_BOT_LANG_EXPLAIN}</span></dt>
+ <dd><select id="bot_lang" name="bot_lang">{S_LANG_OPTIONS}</select></dd>
+ </dl>
+ <dl>
+ <dt><label for="bot_active">{L_BOT_ACTIVE}:</label></dt>
+ <dd><select id="bot_active" name="bot_active">{S_ACTIVE_OPTIONS}</select></dd>
+ </dl>
+ <dl>
+ <dt><label for="bot_agent">{L_BOT_AGENT}:</label><br /><span>{L_BOT_AGENT_EXPLAIN}</span></dt>
+ <dd><input name="bot_agent" type="text" id="bot_agent" value="{BOT_AGENT}" maxlength="255" /></dd>
+ </dl>
+ <dl>
+ <dt><label for="bot_ip">{L_BOT_IP}:</label><br /><span>{L_BOT_IP_EXPLAIN}</span></dt>
+ <dd><input name="bot_ip" type="text" id="bot_ip" value="{BOT_IP}" maxlength="255" /></dd>
+ </dl>
+
+ <p class="submit-buttons">
+ <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
+ <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
+ {S_FORM_TOKEN}
+ </p>
+ </fieldset>
+ </form>
+
+<!-- ELSE -->
+
+ <h1>{L_BOTS}</h1>
+
+ <p>{L_BOTS_EXPLAIN}</p>
+
+ <form id="acp_bots" method="post" action="{U_ACTION}">
+
+ <table cellspacing="1">
+ <thead>
+ <tr>
+ <th>{L_BOT_NAME}</th>