Augmentation vers version 3.3.0
@@ -20,9 +20,9 @@ define('PHPBB_ENVIRONMENT', 'production');
|
||||
$phpbb_root_path = '../';
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
|
||||
if (version_compare(PHP_VERSION, '5.4.7', '<') || version_compare(PHP_VERSION, '7.3-dev', '>='))
|
||||
if (version_compare(PHP_VERSION, '7.1.3', '<'))
|
||||
{
|
||||
die('You are running an unsupported PHP version. Please upgrade to PHP equal to or greater than 5.4.7 but less than 7.3-dev in order to install or update to phpBB 3.2');
|
||||
die('You are running an unsupported PHP version. Please upgrade to PHP 7.1.3 or higher before trying to install or update to phpBB 3.3');
|
||||
}
|
||||
|
||||
$startup_new_path = $phpbb_root_path . 'install/update/update/new/install/startup.' . $phpEx;
|
||||
|
||||
@@ -63,7 +63,7 @@ class convertor
|
||||
{
|
||||
global $user, $phpbb_root_path, $phpEx, $db, $lang, $config, $cache, $auth;
|
||||
global $convert, $convert_row, $message_parser, $skip_rows, $language;
|
||||
global $request, $phpbb_dispatcher;
|
||||
global $request, $phpbb_dispatcher, $phpbb_container;
|
||||
|
||||
$phpbb_config_php_file = new \phpbb\config_php_file($phpbb_root_path, $phpEx);
|
||||
extract($phpbb_config_php_file->get_all());
|
||||
@@ -148,16 +148,6 @@ class convertor
|
||||
$convert->src_truncate_statement = 'DELETE FROM ';
|
||||
break;
|
||||
|
||||
// Thanks MySQL, for silently converting...
|
||||
case 'mysql':
|
||||
case 'mysql4':
|
||||
if (version_compare($src_db->sql_server_info(true, false), '4.1.3', '>='))
|
||||
{
|
||||
$convert->mysql_convert = true;
|
||||
}
|
||||
$convert->src_truncate_statement = 'TRUNCATE TABLE ';
|
||||
break;
|
||||
|
||||
case 'mysqli':
|
||||
$convert->mysql_convert = true;
|
||||
$convert->src_truncate_statement = 'TRUNCATE TABLE ';
|
||||
@@ -687,7 +677,7 @@ class convertor
|
||||
|
||||
$this->template->assign_block_vars('checks', array(
|
||||
'TITLE' => "skip_rows = $skip_rows",
|
||||
'RESULT' => $rows . ((defined('DEBUG') && function_exists('memory_get_usage')) ? ceil(memory_get_usage()/1024) . ' ' . $user->lang['KIB'] : ''),
|
||||
'RESULT' => $rows . (($phpbb_container->getParameter('debug.memory') && function_exists('memory_get_usage')) ? ceil(memory_get_usage()/1024) . ' ' . $user->lang['KIB'] : ''),
|
||||
));
|
||||
|
||||
$mtime = explode(' ', microtime());
|
||||
@@ -748,8 +738,6 @@ class convertor
|
||||
switch ($db->get_sql_layer())
|
||||
{
|
||||
// If MySQL, we'll wait to have num_wait_rows rows to submit at once
|
||||
case 'mysql':
|
||||
case 'mysql4':
|
||||
case 'mysqli':
|
||||
$waiting_rows[] = '(' . implode(', ', $insert_values) . ')';
|
||||
|
||||
@@ -920,6 +908,7 @@ class convertor
|
||||
{
|
||||
global $user, $db, $phpbb_root_path, $phpEx, $config, $cache;
|
||||
global $convert;
|
||||
global $phpbb_container;
|
||||
|
||||
include_once ($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
|
||||
|
||||
@@ -959,7 +948,7 @@ class convertor
|
||||
sync('topic', 'range', 'topic_id BETWEEN ' . $sync_batch . ' AND ' . $end, true, true);
|
||||
|
||||
$this->template->assign_block_vars('checks', array(
|
||||
'TITLE' => sprintf($user->lang['SYNC_TOPIC_ID'], $sync_batch, ($sync_batch + $batch_size)) . ((defined('DEBUG') && function_exists('memory_get_usage')) ? ' [' . ceil(memory_get_usage()/1024) . ' ' . $user->lang['KIB'] . ']' : ''),
|
||||
'TITLE' => sprintf($user->lang['SYNC_TOPIC_ID'], $sync_batch, ($sync_batch + $batch_size)) . (($phpbb_container->getParameter('debug.memory') && function_exists('memory_get_usage')) ? ' [' . ceil(memory_get_usage()/1024) . ' ' . $user->lang['KIB'] . ']' : ''),
|
||||
'RESULT' => $user->lang['DONE'],
|
||||
));
|
||||
|
||||
@@ -1257,9 +1246,7 @@ class convertor
|
||||
global $db, $user;
|
||||
global $convert;
|
||||
|
||||
// Can we use IGNORE with this DBMS?
|
||||
$sql_ignore = (strpos($db->get_sql_layer(), 'mysql') === 0 && !defined('DEBUG')) ? 'IGNORE ' : '';
|
||||
$insert_query = 'INSERT ' . $sql_ignore . 'INTO ' . $schema['target'] . ' (';
|
||||
$insert_query = 'INSERT INTO ' . $schema['target'] . ' (';
|
||||
|
||||
$aliases = array();
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ if (php_sapi_name() !== 'cli')
|
||||
define('IN_PHPBB', true);
|
||||
define('IN_INSTALL', true);
|
||||
define('PHPBB_ENVIRONMENT', 'production');
|
||||
define('PHPBB_VERSION', '3.2.7');
|
||||
define('PHPBB_VERSION', '3.3.0');
|
||||
$phpbb_root_path = __DIR__ . '/../';
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
|
||||
|
||||
@@ -120,6 +120,7 @@ $phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relati
|
||||
$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : $phpbb_root_path . $phpbb_adm_relative_path;
|
||||
|
||||
// Include files
|
||||
phpbb_require_updated('includes/compatibility_globals.' . $phpEx, $phpbb_root_path);
|
||||
phpbb_require_updated('includes/functions.' . $phpEx, $phpbb_root_path);
|
||||
phpbb_require_updated('includes/functions_content.' . $phpEx, $phpbb_root_path);
|
||||
phpbb_include_updated('includes/functions_compatibility.' . $phpEx, $phpbb_root_path);
|
||||
|
||||
395
install/update/index.php
Normal file
@@ -0,0 +1,395 @@
|
||||
<?php
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
// Set update info with file structure to update
|
||||
$update_info = array(
|
||||
'version' => array('from' => '3.2.7', 'to' => '3.3.0'),
|
||||
'files' => array(
|
||||
'.htaccess',
|
||||
'adm/images/phpbb_logo.svg',
|
||||
'adm/index.php',
|
||||
'adm/style/acp_attachments.html',
|
||||
'adm/style/acp_avatar_options_upload.html',
|
||||
'adm/style/acp_ban.html',
|
||||
'adm/style/acp_contact.html',
|
||||
'adm/style/acp_database.html',
|
||||
'adm/style/acp_ext_actions.html',
|
||||
'adm/style/acp_ext_list.html',
|
||||
'adm/style/acp_forums.html',
|
||||
'adm/style/acp_groups.html',
|
||||
'adm/style/acp_help_phpbb.html',
|
||||
'adm/style/acp_icons.html',
|
||||
'adm/style/acp_language.html',
|
||||
'adm/style/acp_main.html',
|
||||
'adm/style/acp_modules.html',
|
||||
'adm/style/acp_permission_roles.html',
|
||||
'adm/style/acp_posting_buttons.html',
|
||||
'adm/style/acp_ranks.html',
|
||||
'adm/style/acp_search.html',
|
||||
'adm/style/acp_styles.html',
|
||||
'adm/style/acp_users_overview.html',
|
||||
'adm/style/acp_users_prefs.html',
|
||||
'adm/style/acp_users_signature.html',
|
||||
'adm/style/admin.css',
|
||||
'adm/style/admin.js',
|
||||
'adm/style/ajax.js',
|
||||
'adm/style/captcha_recaptcha.html',
|
||||
'adm/style/installer_footer.html',
|
||||
'adm/style/overall_footer.html',
|
||||
'adm/style/overall_header.html',
|
||||
'adm/style/permission_forum_copy.html',
|
||||
'adm/style/permission_mask.html',
|
||||
'adm/style/permissions.js',
|
||||
'adm/style/progress_bar.html',
|
||||
'adm/style/simple_footer.html',
|
||||
'adm/style/simple_header.html',
|
||||
'assets/cookieconsent/cookieconsent.min.css',
|
||||
'assets/cookieconsent/cookieconsent.min.js',
|
||||
'assets/javascript/core.js',
|
||||
'assets/javascript/editor.js',
|
||||
'assets/javascript/jquery-3.4.1.min.js',
|
||||
'assets/javascript/plupload.js',
|
||||
'common.php',
|
||||
'composer.json',
|
||||
'composer.lock',
|
||||
'config/default/container/parameters.yml',
|
||||
'config/default/container/services.yml',
|
||||
'config/default/container/services_auth.yml',
|
||||
'config/default/container/services_console.yml',
|
||||
'config/default/container/services_cron.yml',
|
||||
'config/default/container/services_password.yml',
|
||||
'config/default/container/services_routing.yml',
|
||||
'config/default/container/services_text_formatter.yml',
|
||||
'config/default/container/services_twig.yml',
|
||||
'config/default/container/services_ucp.yml',
|
||||
'config/default/routing/cron.yml',
|
||||
'config/default/routing/routing.yml',
|
||||
'config/default/routing/ucp.yml',
|
||||
'cron.php',
|
||||
'download/file.php',
|
||||
'ext/phpbb/viglink/acp/viglink_helper.php',
|
||||
'ext/phpbb/viglink/composer.json',
|
||||
'ext/phpbb/viglink/composer.lock',
|
||||
'ext/phpbb/viglink/styles/all/theme/viglink.css',
|
||||
'feed.php',
|
||||
'includes/acp/acp_attachments.php',
|
||||
'includes/acp/acp_bbcodes.php',
|
||||
'includes/acp/acp_board.php',
|
||||
'includes/acp/acp_database.php',
|
||||
'includes/acp/acp_extensions.php',
|
||||
'includes/acp/acp_forums.php',
|
||||
'includes/acp/acp_help_phpbb.php',
|
||||
'includes/acp/acp_main.php',
|
||||
'includes/acp/acp_permissions.php',
|
||||
'includes/acp/acp_prune.php',
|
||||
'includes/acp/acp_reasons.php',
|
||||
'includes/acp/acp_styles.php',
|
||||
'includes/acp/acp_update.php',
|
||||
'includes/acp/acp_users.php',
|
||||
'includes/acp/auth.php',
|
||||
'includes/bbcode.php',
|
||||
'includes/compatibility_globals.php',
|
||||
'includes/constants.php',
|
||||
'includes/diff/engine.php',
|
||||
'includes/functions.php',
|
||||
'includes/functions_acp.php',
|
||||
'includes/functions_admin.php',
|
||||
'includes/functions_compatibility.php',
|
||||
'includes/functions_compress.php',
|
||||
'includes/functions_content.php',
|
||||
'includes/functions_convert.php',
|
||||
'includes/functions_display.php',
|
||||
'includes/functions_download.php',
|
||||
'includes/functions_messenger.php',
|
||||
'includes/functions_module.php',
|
||||
'includes/functions_posting.php',
|
||||
'includes/functions_privmsgs.php',
|
||||
'includes/functions_transfer.php',
|
||||
'includes/functions_user.php',
|
||||
'includes/mcp/mcp_ban.php',
|
||||
'includes/mcp/mcp_logs.php',
|
||||
'includes/mcp/mcp_main.php',
|
||||
'includes/mcp/mcp_notes.php',
|
||||
'includes/mcp/mcp_topic.php',
|
||||
'includes/mcp/mcp_warn.php',
|
||||
'includes/message_parser.php',
|
||||
'includes/questionnaire/questionnaire.php',
|
||||
'includes/startup.php',
|
||||
'includes/ucp/ucp_attachments.php',
|
||||
'includes/ucp/ucp_groups.php',
|
||||
'includes/ucp/ucp_pm.php',
|
||||
'includes/ucp/ucp_pm_compose.php',
|
||||
'includes/ucp/ucp_pm_viewfolder.php',
|
||||
'includes/ucp/ucp_profile.php',
|
||||
'includes/ucp/ucp_register.php',
|
||||
'includes/ucp/ucp_resend.php',
|
||||
'includes/utf/utf_tools.php',
|
||||
'index.php',
|
||||
'language/en/acp/attachments.php',
|
||||
'language/en/acp/board.php',
|
||||
'language/en/acp/common.php',
|
||||
'language/en/acp/forums.php',
|
||||
'language/en/acp/permissions.php',
|
||||
'language/en/acp/permissions_phpbb.php',
|
||||
'language/en/acp/posting.php',
|
||||
'language/en/acp/profile.php',
|
||||
'language/en/acp/styles.php',
|
||||
'language/en/captcha_recaptcha.php',
|
||||
'language/en/cli.php',
|
||||
'language/en/common.php',
|
||||
'language/en/email/admin_activate.txt',
|
||||
'language/en/email/user_forgot_password.txt',
|
||||
'language/en/install.php',
|
||||
'language/en/migrator.php',
|
||||
'language/en/posting.php',
|
||||
'language/en/ucp.php',
|
||||
'mcp.php',
|
||||
'memberlist.php',
|
||||
'phpbb/auth/provider/apache.php',
|
||||
'phpbb/auth/provider/base.php',
|
||||
'phpbb/auth/provider/db.php',
|
||||
'phpbb/auth/provider/ldap.php',
|
||||
'phpbb/auth/provider/oauth/oauth.php',
|
||||
'phpbb/auth/provider/oauth/service/base.php',
|
||||
'phpbb/auth/provider/oauth/service/bitly.php',
|
||||
'phpbb/auth/provider/oauth/service/facebook.php',
|
||||
'phpbb/auth/provider/oauth/service/google.php',
|
||||
'phpbb/auth/provider/oauth/service/service_interface.php',
|
||||
'phpbb/auth/provider/oauth/service/twitter.php',
|
||||
'phpbb/auth/provider/oauth/token_storage.php',
|
||||
'phpbb/auth/provider/provider_interface.php',
|
||||
'phpbb/avatar/driver/remote.php',
|
||||
'phpbb/avatar/driver/upload.php',
|
||||
'phpbb/cache/driver/memcached.php',
|
||||
'phpbb/cache/driver/memory.php',
|
||||
'phpbb/captcha/non_gd.php',
|
||||
'phpbb/captcha/plugins/qa.php',
|
||||
'phpbb/class_loader.php',
|
||||
'phpbb/config/config.php',
|
||||
'phpbb/config_php_file.php',
|
||||
'phpbb/console/command/cron/run.php',
|
||||
'phpbb/console/command/extension/enable.php',
|
||||
'phpbb/console/command/update/check.php',
|
||||
'phpbb/console/command/user/add.php',
|
||||
'phpbb/content_visibility.php',
|
||||
'phpbb/controller/helper.php',
|
||||
'phpbb/cron/controller/cron.php',
|
||||
'phpbb/cron/event/cron_runner_listener.php',
|
||||
'phpbb/cron/manager.php',
|
||||
'phpbb/cron/task/core/update_hashes.php',
|
||||
'phpbb/cron/task/wrapper.php',
|
||||
'phpbb/db/driver/driver.php',
|
||||
'phpbb/db/driver/driver_interface.php',
|
||||
'phpbb/db/driver/factory.php',
|
||||
'phpbb/db/driver/mssql_odbc.php',
|
||||
'phpbb/db/driver/mssqlnative.php',
|
||||
'phpbb/db/driver/mysqli.php',
|
||||
'phpbb/db/driver/oracle.php',
|
||||
'phpbb/db/driver/postgres.php',
|
||||
'phpbb/db/driver/sqlite3.php',
|
||||
'phpbb/db/extractor/mysql_extractor.php',
|
||||
'phpbb/db/migration/data/v30x/release_3_0_4_rc1.php',
|
||||
'phpbb/db/migration/data/v310/softdelete_p1.php',
|
||||
'phpbb/db/migration/data/v32x/timezone_p3.php',
|
||||
'phpbb/db/migration/data/v32x/user_emoji_permission.php',
|
||||
'phpbb/db/migration/data/v32x/v328.php',
|
||||
'phpbb/db/migration/data/v32x/v328rc1.php',
|
||||
'phpbb/db/migration/data/v32x/v329.php',
|
||||
'phpbb/db/migration/data/v32x/v329rc1.php',
|
||||
'phpbb/db/migration/data/v330/add_display_unapproved_posts_config.php',
|
||||
'phpbb/db/migration/data/v330/dev.php',
|
||||
'phpbb/db/migration/data/v330/forums_legend_limit.php',
|
||||
'phpbb/db/migration/data/v330/jquery_update.php',
|
||||
'phpbb/db/migration/data/v330/remove_attachment_flash.php',
|
||||
'phpbb/db/migration/data/v330/remove_email_hash.php',
|
||||
'phpbb/db/migration/data/v330/remove_max_pass_chars.php',
|
||||
'phpbb/db/migration/data/v330/reset_password.php',
|
||||
'phpbb/db/migration/data/v330/v330.php',
|
||||
'phpbb/db/migration/data/v330/v330b1.php',
|
||||
'phpbb/db/migration/data/v330/v330b2.php',
|
||||
'phpbb/db/migration/data/v330/v330rc1.php',
|
||||
'phpbb/db/migration/tool/module.php',
|
||||
'phpbb/db/migrator.php',
|
||||
'phpbb/db/tools/mssql.php',
|
||||
'phpbb/db/tools/postgres.php',
|
||||
'phpbb/db/tools/tools.php',
|
||||
'phpbb/di/container_builder.php',
|
||||
'phpbb/di/extension/container_configuration.php',
|
||||
'phpbb/di/extension/core.php',
|
||||
'phpbb/di/extension/tables.php',
|
||||
'phpbb/di/service_collection.php',
|
||||
'phpbb/event/md_exporter.php',
|
||||
'phpbb/extension/extension_interface.php',
|
||||
'phpbb/extension/manager.php',
|
||||
'phpbb/feed/controller/feed.php',
|
||||
'phpbb/feed/topics_active.php',
|
||||
'phpbb/files/filespec.php',
|
||||
'phpbb/filesystem/filesystem.php',
|
||||
'phpbb/filesystem/filesystem_interface.php',
|
||||
'phpbb/filesystem.php',
|
||||
'phpbb/finder.php',
|
||||
'phpbb/group/helper.php',
|
||||
'phpbb/help/controller/bbcode.php',
|
||||
'phpbb/help/controller/faq.php',
|
||||
'phpbb/install/controller/helper.php',
|
||||
'phpbb/install/helper/container_factory.php',
|
||||
'phpbb/install/helper/database.php',
|
||||
'phpbb/install/helper/iohandler/iohandler_interface.php',
|
||||
'phpbb/install/installer_configuration.php',
|
||||
'phpbb/install/module/install_database/task/add_config_settings.php',
|
||||
'phpbb/install/module/install_database/task/create_schema.php',
|
||||
'phpbb/install/module/install_database/task/set_up_database.php',
|
||||
'phpbb/install/module/install_filesystem/task/create_config_file.php',
|
||||
'phpbb/install/module/requirements/task/check_server_environment.php',
|
||||
'phpbb/install/module_base.php',
|
||||
'phpbb/language/language_file_loader.php',
|
||||
'phpbb/lock/db.php',
|
||||
'phpbb/lock/flock.php',
|
||||
'phpbb/message/form.php',
|
||||
'phpbb/mimetype/guesser.php',
|
||||
'phpbb/notification/type/approve_post.php',
|
||||
'phpbb/notification/type/approve_topic.php',
|
||||
'phpbb/notification/type/base.php',
|
||||
'phpbb/notification/type/post.php',
|
||||
'phpbb/notification/type/topic.php',
|
||||
'phpbb/notification/type/type_interface.php',
|
||||
'phpbb/passwords/driver/argon2i.php',
|
||||
'phpbb/passwords/driver/argon2id.php',
|
||||
'phpbb/passwords/driver/base_native.php',
|
||||
'phpbb/passwords/manager.php',
|
||||
'phpbb/permissions.php',
|
||||
'phpbb/plupload/plupload.php',
|
||||
'phpbb/report/report_handler.php',
|
||||
'phpbb/request/request.php',
|
||||
'phpbb/request/request_interface.php',
|
||||
'phpbb/request/type_cast_helper.php',
|
||||
'phpbb/search/fulltext_mysql.php',
|
||||
'phpbb/search/fulltext_native.php',
|
||||
'phpbb/search/fulltext_postgres.php',
|
||||
'phpbb/search/fulltext_sphinx.php',
|
||||
'phpbb/session.php',
|
||||
'phpbb/template/asset.php',
|
||||
'phpbb/template/context.php',
|
||||
'phpbb/template/template.php',
|
||||
'phpbb/template/twig/extension/avatar.php',
|
||||
'phpbb/template/twig/extension/config.php',
|
||||
'phpbb/template/twig/extension/username.php',
|
||||
'phpbb/template/twig/extension.php',
|
||||
'phpbb/template/twig/lexer.php',
|
||||
'phpbb/template/twig/loader.php',
|
||||
'phpbb/template/twig/node/definenode.php',
|
||||
'phpbb/template/twig/node/includeasset.php',
|
||||
'phpbb/template/twig/node/includephp.php',
|
||||
'phpbb/template/twig/tokenparser/defineparser.php',
|
||||
'phpbb/template/twig/tokenparser/event.php',
|
||||
'phpbb/template/twig/tokenparser/includecss.php',
|
||||
'phpbb/template/twig/tokenparser/includejs.php',
|
||||
'phpbb/template/twig/tokenparser/includeparser.php',
|
||||
'phpbb/template/twig/tokenparser/includephp.php',
|
||||
'phpbb/template/twig/tokenparser/php.php',
|
||||
'phpbb/textformatter/acp_utils_interface.php',
|
||||
'phpbb/textformatter/s9e/acp_utils.php',
|
||||
'phpbb/textformatter/s9e/bbcode_merger.php',
|
||||
'phpbb/textformatter/s9e/factory.php',
|
||||
'phpbb/textformatter/s9e/link_helper.php',
|
||||
'phpbb/textformatter/s9e/parser.php',
|
||||
'phpbb/textformatter/s9e/quote_helper.php',
|
||||
'phpbb/ucp/controller/reset_password.php',
|
||||
'phpbb/user.php',
|
||||
'phpbb/user_loader.php',
|
||||
'posting.php',
|
||||
'report.php',
|
||||
'search.php',
|
||||
'styles/prosilver/style.cfg',
|
||||
'styles/prosilver/template/attachment.html',
|
||||
'styles/prosilver/template/bbcode.html',
|
||||
'styles/prosilver/template/captcha_recaptcha.html',
|
||||
'styles/prosilver/template/forum_fn.js',
|
||||
'styles/prosilver/template/forumlist_body.html',
|
||||
'styles/prosilver/template/mcp_forum.html',
|
||||
'styles/prosilver/template/mcp_move.html',
|
||||
'styles/prosilver/template/mcp_topic.html',
|
||||
'styles/prosilver/template/memberlist_body.html',
|
||||
'styles/prosilver/template/memberlist_search.html',
|
||||
'styles/prosilver/template/navbar_header.html',
|
||||
'styles/prosilver/template/overall_footer.html',
|
||||
'styles/prosilver/template/overall_header.html',
|
||||
'styles/prosilver/template/plupload.html',
|
||||
'styles/prosilver/template/posting_attach_body.html',
|
||||
'styles/prosilver/template/posting_buttons.html',
|
||||
'styles/prosilver/template/posting_layout.html',
|
||||
'styles/prosilver/template/posting_poll_body.html',
|
||||
'styles/prosilver/template/posting_review.html',
|
||||
'styles/prosilver/template/posting_topic_review.html',
|
||||
'styles/prosilver/template/search_results.html',
|
||||
'styles/prosilver/template/simple_footer.html',
|
||||
'styles/prosilver/template/ucp_agreement.html',
|
||||
'styles/prosilver/template/ucp_attachments.html',
|
||||
'styles/prosilver/template/ucp_avatar_options_upload.html',
|
||||
'styles/prosilver/template/ucp_groups_manage.html',
|
||||
'styles/prosilver/template/ucp_pm_history.html',
|
||||
'styles/prosilver/template/ucp_pm_viewmessage_print.html',
|
||||
'styles/prosilver/template/ucp_profile_profile_info.html',
|
||||
'styles/prosilver/template/ucp_register.html',
|
||||
'styles/prosilver/template/ucp_reset_password.html',
|
||||
'styles/prosilver/template/viewforum_body.html',
|
||||
'styles/prosilver/template/viewtopic_body.html',
|
||||
'styles/prosilver/template/viewtopic_print.html',
|
||||
'styles/prosilver/theme/colours.css',
|
||||
'styles/prosilver/theme/common.css',
|
||||
'styles/prosilver/theme/forms.css',
|
||||
'styles/prosilver/theme/icons.css',
|
||||
'styles/prosilver/theme/images/site_logo.svg',
|
||||
'styles/prosilver/theme/plupload.css',
|
||||
'styles/prosilver/theme/print.css',
|
||||
'styles/prosilver/theme/stylesheet.css',
|
||||
'ucp.php',
|
||||
'viewforum.php',
|
||||
'viewonline.php',
|
||||
'viewtopic.php',
|
||||
),
|
||||
'binary' => array(
|
||||
'images/upload_icons/flash.gif',
|
||||
'styles/prosilver/theme/images/bg_header.gif',
|
||||
'styles/prosilver/theme/images/bg_list.gif',
|
||||
'styles/prosilver/theme/images/icon_download.gif',
|
||||
'styles/prosilver/theme/images/icon_offline.gif',
|
||||
'styles/prosilver/theme/images/icon_online.gif',
|
||||
'styles/prosilver/theme/images/icon_rate_bad.gif',
|
||||
'styles/prosilver/theme/images/icon_rate_good.gif',
|
||||
'styles/prosilver/theme/images/quote.gif',
|
||||
'styles/prosilver/theme/images/quote_rtl.gif',
|
||||
'styles/prosilver/theme/images/site_logo.gif',
|
||||
),
|
||||
'deleted' => array(
|
||||
'adm/style/acp_ext_delete_data.html',
|
||||
'adm/style/acp_ext_disable.html',
|
||||
'adm/style/acp_ext_enable.html',
|
||||
'assets/javascript/jquery.min.js',
|
||||
'images/upload_icons/flash.gif',
|
||||
'includes/ucp/ucp_remind.php',
|
||||
'language/en/email/user_activate_passwd.txt',
|
||||
'phpbb/cache/driver/apc.php',
|
||||
'phpbb/cache/driver/eaccelerator.php',
|
||||
'phpbb/cache/driver/memcache.php',
|
||||
'phpbb/cache/driver/xcache.php',
|
||||
'phpbb/console/command/fixup/recalculate_email_hash.php',
|
||||
'phpbb/db/driver/mysql.php',
|
||||
'phpbb/db/tools.php',
|
||||
'styles/prosilver/template/ucp_remind.html',
|
||||
'styles/prosilver/theme/images/bg_header.gif',
|
||||
'styles/prosilver/theme/images/bg_list.gif',
|
||||
'styles/prosilver/theme/images/icon_download.gif',
|
||||
'styles/prosilver/theme/images/icon_offline.gif',
|
||||
'styles/prosilver/theme/images/icon_online.gif',
|
||||
'styles/prosilver/theme/images/icon_rate_bad.gif',
|
||||
'styles/prosilver/theme/images/icon_rate_good.gif',
|
||||
'styles/prosilver/theme/images/quote.gif',
|
||||
'styles/prosilver/theme/images/quote_rtl.gif',
|
||||
'styles/prosilver/theme/images/site_logo.gif',
|
||||
),
|
||||
);
|
||||
92
install/update/new/.htaccess
Normal file
@@ -0,0 +1,92 @@
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine on
|
||||
|
||||
#
|
||||
# Uncomment the statement below if URL rewriting doesn't
|
||||
# work properly. If you installed phpBB in a subdirectory
|
||||
# of your site, properly set the argument for the statement.
|
||||
# e.g.: if your domain is test.com and you installed phpBB
|
||||
# in http://www.test.com/phpBB/index.php you have to set
|
||||
# the statement RewriteBase /phpBB/
|
||||
#
|
||||
#RewriteBase /
|
||||
|
||||
#
|
||||
# Uncomment the statement below if you want to make use of
|
||||
# HTTP authentication and it does not already work.
|
||||
# This could be required if you are for example using PHP via Apache CGI.
|
||||
#
|
||||
#RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
|
||||
|
||||
#
|
||||
# The following 3 lines will rewrite URLs passed through the front controller
|
||||
# to not require app.php in the actual URL. In other words, a controller is
|
||||
# by default accessed at /app.php/my/controller, but can also be accessed at
|
||||
# /my/controller
|
||||
#
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^(.*)$ app.php [QSA,L]
|
||||
|
||||
#
|
||||
# If symbolic links are not already being followed,
|
||||
# uncomment the line below.
|
||||
# http://anothersysadmin.wordpress.com/2008/06/10/mod_rewrite-forbidden-403-with-apache-228/
|
||||
#
|
||||
#Options +FollowSymLinks
|
||||
</IfModule>
|
||||
|
||||
# Apache content negotation tries to interpret non-existent paths as files if
|
||||
# MultiViews is enabled. This will however cause issues with paths containg
|
||||
# dots, e.g. for the cron tasks
|
||||
<IfModule mod_negotiation.c>
|
||||
Options -MultiViews
|
||||
</IfModule>
|
||||
|
||||
# With Apache 2.4 the "Order, Deny" syntax has been deprecated and moved from
|
||||
# module mod_authz_host to a new module called mod_access_compat (which may be
|
||||
# disabled) and a new "Require" syntax has been introduced to mod_authz_host.
|
||||
# We could just conditionally provide both versions, but unfortunately Apache
|
||||
# does not explicitly tell us its version if the module mod_version is not
|
||||
# available. In this case, we check for the availability of module
|
||||
# mod_authz_core (which should be on 2.4 or higher only) as a best guess.
|
||||
<IfModule mod_version.c>
|
||||
<IfVersion < 2.4>
|
||||
<Files "config.php">
|
||||
Order Allow,Deny
|
||||
Deny from All
|
||||
</Files>
|
||||
<Files "common.php">
|
||||
Order Allow,Deny
|
||||
Deny from All
|
||||
</Files>
|
||||
</IfVersion>
|
||||
<IfVersion >= 2.4>
|
||||
<Files "config.php">
|
||||
Require all denied
|
||||
</Files>
|
||||
<Files "common.php">
|
||||
Require all denied
|
||||
</Files>
|
||||
</IfVersion>
|
||||
</IfModule>
|
||||
<IfModule !mod_version.c>
|
||||
<IfModule !mod_authz_core.c>
|
||||
<Files "config.php">
|
||||
Order Allow,Deny
|
||||
Deny from All
|
||||
</Files>
|
||||
<Files "common.php">
|
||||
Order Allow,Deny
|
||||
Deny from All
|
||||
</Files>
|
||||
</IfModule>
|
||||
<IfModule mod_authz_core.c>
|
||||
<Files "config.php">
|
||||
Require all denied
|
||||
</Files>
|
||||
<Files "common.php">
|
||||
Require all denied
|
||||
</Files>
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
BIN
install/update/new/adm/images/alert_close.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
install/update/new/adm/images/arrow_down.gif
Normal file
|
After Width: | Height: | Size: 51 B |
BIN
install/update/new/adm/images/arrow_left.gif
Normal file
|
After Width: | Height: | Size: 49 B |
BIN
install/update/new/adm/images/arrow_right.gif
Normal file
|
After Width: | Height: | Size: 49 B |
BIN
install/update/new/adm/images/arrow_up.gif
Normal file
|
After Width: | Height: | Size: 51 B |
BIN
install/update/new/adm/images/bg_button.gif
Normal file
|
After Width: | Height: | Size: 182 B |
BIN
install/update/new/adm/images/bg_hash1.gif
Normal file
|
After Width: | Height: | Size: 48 B |
BIN
install/update/new/adm/images/bg_hash2.gif
Normal file
|
After Width: | Height: | Size: 48 B |
BIN
install/update/new/adm/images/bg_hash3.gif
Normal file
|
After Width: | Height: | Size: 48 B |
BIN
install/update/new/adm/images/bg_hash4.gif
Normal file
|
After Width: | Height: | Size: 48 B |
BIN
install/update/new/adm/images/bg_header.gif
Normal file
|
After Width: | Height: | Size: 416 B |
BIN
install/update/new/adm/images/bg_header.jpg
Normal file
|
After Width: | Height: | Size: 385 B |
BIN
install/update/new/adm/images/bg_tabs_alt1.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
install/update/new/adm/images/bg_tabs_alt2.gif
Normal file
|
After Width: | Height: | Size: 420 B |
BIN
install/update/new/adm/images/cellpic3.gif
Normal file
|
After Width: | Height: | Size: 826 B |
BIN
install/update/new/adm/images/file_conflict.gif
Normal file
|
After Width: | Height: | Size: 344 B |
BIN
install/update/new/adm/images/file_modified.gif
Normal file
|
After Width: | Height: | Size: 358 B |
BIN
install/update/new/adm/images/file_new.gif
Normal file
|
After Width: | Height: | Size: 229 B |
BIN
install/update/new/adm/images/file_new_conflict.gif
Normal file
|
After Width: | Height: | Size: 357 B |
BIN
install/update/new/adm/images/file_not_modified.gif
Normal file
|
After Width: | Height: | Size: 570 B |
BIN
install/update/new/adm/images/file_up_to_date.gif
Normal file
|
After Width: | Height: | Size: 357 B |
BIN
install/update/new/adm/images/gradient2b.gif
Normal file
|
After Width: | Height: | Size: 192 B |
BIN
install/update/new/adm/images/icon_delete.gif
Normal file
|
After Width: | Height: | Size: 255 B |
BIN
install/update/new/adm/images/icon_delete_disabled.gif
Normal file
|
After Width: | Height: | Size: 249 B |
BIN
install/update/new/adm/images/icon_down.gif
Normal file
|
After Width: | Height: | Size: 239 B |
BIN
install/update/new/adm/images/icon_down_disabled.gif
Normal file
|
After Width: | Height: | Size: 166 B |
BIN
install/update/new/adm/images/icon_edit.gif
Normal file
|
After Width: | Height: | Size: 242 B |
BIN
install/update/new/adm/images/icon_edit_disabled.gif
Normal file
|
After Width: | Height: | Size: 239 B |
BIN
install/update/new/adm/images/icon_folder.gif
Normal file
|
After Width: | Height: | Size: 662 B |
BIN
install/update/new/adm/images/icon_folder_link.gif
Normal file
|
After Width: | Height: | Size: 708 B |
BIN
install/update/new/adm/images/icon_folder_lock.gif
Normal file
|
After Width: | Height: | Size: 681 B |
BIN
install/update/new/adm/images/icon_subfolder.gif
Normal file
|
After Width: | Height: | Size: 725 B |
BIN
install/update/new/adm/images/icon_sync.gif
Normal file
|
After Width: | Height: | Size: 251 B |
BIN
install/update/new/adm/images/icon_sync_disabled.gif
Normal file
|
After Width: | Height: | Size: 246 B |
BIN
install/update/new/adm/images/icon_trace.gif
Normal file
|
After Width: | Height: | Size: 307 B |
BIN
install/update/new/adm/images/icon_up.gif
Normal file
|
After Width: | Height: | Size: 240 B |
BIN
install/update/new/adm/images/icon_up_disabled.gif
Normal file
|
After Width: | Height: | Size: 168 B |
BIN
install/update/new/adm/images/innerbox_bg.gif
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
install/update/new/adm/images/loading.gif
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
install/update/new/adm/images/no_avatar.gif
Normal file
|
After Width: | Height: | Size: 930 B |
BIN
install/update/new/adm/images/no_image.png
Normal file
|
After Width: | Height: | Size: 401 B |
BIN
install/update/new/adm/images/phpbb_logo.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
6
install/update/new/adm/images/phpbb_logo.svg
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
install/update/new/adm/images/progress_bar.gif
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
install/update/new/adm/images/spacer.gif
Normal file
|
After Width: | Height: | Size: 807 B |
90
install/update/new/adm/index.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
*/
|
||||
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_acp.' . $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_'))
|
||||
{
|
||||
send_status_line(403, 'Forbidden');
|
||||
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);
|
||||
|
||||
// Some oft used variables
|
||||
$file_uploads = (@ini_get('file_uploads') == '1' || strtolower(@ini_get('file_uploads')) === 'on') ? true : false;
|
||||
$module_id = $request->variable('i', '');
|
||||
$mode = $request->variable('mode', '');
|
||||
|
||||
// Set custom style for admin area
|
||||
$template->set_custom_style(array(
|
||||
array(
|
||||
'name' => 'adm',
|
||||
'ext_path' => 'adm/style/',
|
||||
),
|
||||
), $phpbb_admin_path . 'style');
|
||||
|
||||
$template->assign_var('T_ASSETS_PATH', $phpbb_root_path . 'assets');
|
||||
$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style');
|
||||
|
||||
// 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();
|
||||
495
install/update/new/adm/style/acp_attachments.html
Normal file
@@ -0,0 +1,495 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF U_BACK -->
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {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 -->
|
||||
|
||||
<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}{L_COLON}</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}" />
|
||||
<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}{L_COLON}</label></dt>
|
||||
<dd><textarea id="ip_hostname" cols="40" rows="3" name="ips"></textarea></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="exclude">{L_IP_EXCLUDE}{L_COLON}</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}{L_COLON}</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>
|
||||
// <![CDATA[
|
||||
function update_image(newimage)
|
||||
{
|
||||
if (newimage == 'no_image')
|
||||
{
|
||||
document.getElementById('image_upload_icon').src = "{ROOT_PATH}images/spacer.gif";
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById('image_upload_icon').src = "{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}{L_COLON}</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}{L_COLON}</label><br /><span>{L_SPECIAL_CATEGORY_EXPLAIN}</span></dt>
|
||||
<dd>{S_CATEGORY_SELECT}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="allowed">{L_ALLOWED}{L_COLON}</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}{L_COLON}</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}{L_COLON}</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> <img <!-- IF S_NO_IMAGE -->src="{ROOT_PATH}images/spacer.gif"<!-- ELSE -->src="{UPLOAD_ICON_SRC}"<!-- ENDIF --> id="image_upload_icon" alt="" title="" /> </dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="extgroup_filesize">{L_MAX_EXTGROUP_FILESIZE}{L_COLON}</label></dt>
|
||||
<dd><input type="number" id="extgroup_filesize" min="0" max="999999999999999" step="any" 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}{L_COLON}</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}{L_COLON}</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></dd>
|
||||
<dd><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}" />
|
||||
<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 class="table1">
|
||||
<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"> </td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<tr>
|
||||
<td><strong>{groups.GROUP_NAME}</strong>
|
||||
<!-- IF groups.S_GROUP_ALLOWED and not groups.S_ALLOWED_IN_PM --><br /><span>» {L_NOT_ALLOWED_IN_PM}</span>
|
||||
<!-- ELSEIF groups.S_ALLOWED_IN_PM and not groups.S_GROUP_ALLOWED --><br /><span>» {L_ONLY_ALLOWED_IN_PM}</span>
|
||||
<!-- ELSEIF not groups.S_GROUP_ALLOWED and not groups.S_ALLOWED_IN_PM --><br /><span>» {L_NOT_ALLOWED_IN_PM_POST}</span>
|
||||
<!-- ELSE --><br /><span>» {L_ALLOWED_IN_PM_POST}</span><!-- ENDIF -->
|
||||
</td>
|
||||
<td>{groups.CATEGORY}</td>
|
||||
<td align="center" valign="middle" style="white-space: nowrap;"> <a href="{groups.U_EDIT}">{ICON_EDIT}</a> <a href="{groups.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a> </td>
|
||||
</tr>
|
||||
<!-- END groups -->
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="quick">
|
||||
{L_CREATE_GROUP}{L_COLON} <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>
|
||||
|
||||
<form id="change_ext" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset class="tabulated">
|
||||
<legend>{L_TITLE}</legend>
|
||||
|
||||
<table class="table1">
|
||||
<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"> </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}" />
|
||||
<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>
|
||||
|
||||
<div class="pagination top-pagination">
|
||||
<!-- IF .pagination or TOTAL_FILES -->
|
||||
{L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE}
|
||||
<!-- IF .pagination -->
|
||||
• <!-- INCLUDE pagination.html -->
|
||||
<!-- ELSE -->
|
||||
• {PAGE_NUMBER}
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
</div>
|
||||
|
||||
<!-- IF .orphan -->
|
||||
<table class="table1 zebra-table fixed-width-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_FILENAME}</th>
|
||||
<th style="width: 15%;">{L_FILEDATE}</th>
|
||||
<th style="width: 15%;">{L_FILESIZE}</th>
|
||||
<th style="width: 15%;">{L_ATTACH_POST_ID}</th>
|
||||
<th style="width: 15%;">{L_ATTACH_TO_POST}</th>
|
||||
<th style="width: 15%;">{L_DELETE}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN orphan -->
|
||||
<tr>
|
||||
<td><a href="{orphan.U_FILE}">{orphan.REAL_FILENAME}</a></td>
|
||||
<td>{orphan.FILETIME}</td>
|
||||
<td>{orphan.FILESIZE}</td>
|
||||
<td><strong>{L_ATTACH_ID}{L_COLON} </strong><input type="number" min="0" max="9999999999" name="post_id[{orphan.ATTACH_ID}]" value="{orphan.POST_ID}" style="width: 75%;" /></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"> </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>
|
||||
<!-- ELSE -->
|
||||
<div class="errorbox">
|
||||
<p>{L_NO_ATTACHMENTS}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF TOTAL_FILES -->
|
||||
<div class="pagination">
|
||||
{L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE}
|
||||
<!-- IF .pagination -->
|
||||
• <!-- INCLUDE pagination.html -->
|
||||
<!-- ELSE -->
|
||||
• {PAGE_NUMBER}
|
||||
<!-- ENDIF -->
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF .orphan -->
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
</p>
|
||||
<!-- ENDIF -->
|
||||
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSEIF S_MANAGE -->
|
||||
|
||||
<form id="attachments" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset class="tabulated">
|
||||
<legend>{L_TITLE}</legend>
|
||||
|
||||
<div class="pagination top-pagination">
|
||||
<!-- IF .pagination or TOTAL_FILES -->
|
||||
{L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE}
|
||||
<!-- IF .pagination -->
|
||||
• <!-- INCLUDE pagination.html -->
|
||||
<!-- ELSE -->
|
||||
• {PAGE_NUMBER}
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
</div>
|
||||
|
||||
<!-- IF .attachments -->
|
||||
<table class="table1 zebra-table fixed-width-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_FILENAME}</th>
|
||||
<th style="width: 15%;">{L_POSTED}</th>
|
||||
<th style="width: 15%;" class="centered-text">{L_FILESIZE}</th>
|
||||
<th style="width: 10%;" class="centered-text">{L_MARK}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for attachments in attachments %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ lang('EXTENSION_GROUP') ~ lang('COLON') }} <strong>{{ attachments.EXT_GROUP_NAME }}</strong>
|
||||
{% if attachments.S_IN_MESSAGE %}
|
||||
<br>{{ attachments.L_DOWNLOAD_COUNT }}
|
||||
<br>{{ lang('IN') }} {{ lang('PRIVATE_MESSAGE') }}
|
||||
{% else %}
|
||||
<br><a href="{{ attachments.U_FILE }}"><strong>{{ attachments.REAL_FILENAME }}</strong></a>
|
||||
{% if attachments.COMMENT %}<br>{{ attachments.COMMENT }}{% endif %}
|
||||
<br>{{ attachments.L_DOWNLOAD_COUNT }}
|
||||
<br>{{ lang('TOPIC') ~ lang('COLON') }} <a href="{{ attachments.U_VIEW_TOPIC }}">{{ attachments.TOPIC_TITLE }}</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ attachments.FILETIME }}<br>{{ lang('POST_BY_AUTHOR') }} {{ attachments.ATTACHMENT_POSTER }}</td>
|
||||
<td class="centered-text">{{ attachments.FILESIZE }}</td>
|
||||
<td class="centered-text"><input type="checkbox" class="radio" name="delete[{{ attachments.ATTACH_ID }}]" /></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- ELSE -->
|
||||
<div class="errorbox">
|
||||
<p>{L_NO_ATTACHMENTS}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF TOTAL_FILES -->
|
||||
<div class="pagination">
|
||||
{L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE}
|
||||
<!-- IF .pagination -->
|
||||
• <!-- INCLUDE pagination.html -->
|
||||
<!-- ELSE -->
|
||||
• {PAGE_NUMBER}
|
||||
<!-- ENDIF -->
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<fieldset class="display-options">
|
||||
{L_DISPLAY_LOG}{L_COLON} {S_LIMIT_DAYS} {L_SORT_BY}{L_COLON} {S_SORT_KEY} {S_SORT_DIR}
|
||||
<input class="button2" type="submit" value="{L_GO}" name="sort" />
|
||||
</fieldset>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- IF .attachments -->
|
||||
<fieldset class="quick">
|
||||
<input class="button2" type="submit" name="submit" value="{L_DELETE_MARKED}" /><br />
|
||||
<p class="small">
|
||||
<a href="#" onclick="marklist('attachments', 'delete', true); return false;">{L_MARK_ALL}</a> •
|
||||
<a href="#" onclick="marklist('attachments', 'delete', false); return false;">{L_UNMARK_ALL}</a>
|
||||
</p>
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- IF S_ACTION_OPTIONS -->
|
||||
<fieldset>
|
||||
<legend>{L_RESYNC_STATS}</legend>
|
||||
<form id="action_stats_form" method="post" action="{U_ACTION}">
|
||||
<dl>
|
||||
<dt><label for="action_stats">{L_RESYNC_FILES_STATS}</label><br /><span>{L_RESYNC_FILES_STATS_EXPLAIN}</span></dt>
|
||||
<dd><input type="hidden" name="action" value="stats" /><input class="button2" type="submit" id="action_stats" name="action_stats" value="{L_RUN}" /></dd>
|
||||
</dl>
|
||||
</form>
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
11
install/update/new/adm/style/acp_avatar_options_upload.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<dl>
|
||||
<dt><label for="avatar_upload_file">{L_UPLOAD_AVATAR_FILE}{L_COLON}</label></dt>
|
||||
<dd><input type="hidden" name="MAX_FILE_SIZE" value="{AVATAR_UPLOAD_SIZE}" /><input type="file" name="avatar_upload_file" id="avatar_upload_file" class="inputbox autowidth" accept="{{ AVATAR_ALLOWED_EXTENSIONS }}" /></dd>
|
||||
</dl>
|
||||
|
||||
<!-- IF S_UPLOAD_AVATAR_URL -->
|
||||
<dl>
|
||||
<dt><label for="avatar_upload_url">{L_UPLOAD_AVATAR_URL}{L_COLON}</label><br /><span>{L_UPLOAD_AVATAR_URL_EXPLAIN}</span></dt>
|
||||
<dd><input type="url" name="avatar_upload_url" id="avatar_upload_url" value="" class="inputbox" /></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
131
install/update/new/adm/style/acp_ban.html
Normal file
@@ -0,0 +1,131 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<p>{L_ACP_BAN_EXPLAIN}</p>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_EXPLAIN}</p>
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
|
||||
var ban_length = new Array();
|
||||
ban_length[-1] = '';
|
||||
var ban_reason = new Array();
|
||||
ban_reason[-1] = '';
|
||||
var ban_give_reason = new Array();
|
||||
ban_give_reason[-1] = '';
|
||||
|
||||
<!-- BEGIN bans -->
|
||||
ban_length['{bans.BAN_ID}'] = '{bans.A_LENGTH}';
|
||||
<!-- IF bans.A_REASON -->
|
||||
ban_reason['{bans.BAN_ID}'] = '{bans.A_REASON}';
|
||||
<!-- ENDIF -->
|
||||
<!-- IF bans.A_GIVE_REASON -->
|
||||
ban_give_reason['{bans.BAN_ID}'] = '{bans.A_GIVE_REASON}';
|
||||
<!-- ENDIF -->
|
||||
<!-- END bans -->
|
||||
|
||||
function display_details(option)
|
||||
{
|
||||
document.getElementById('unbanlength').value = ban_length[option];
|
||||
if (option in ban_reason) {
|
||||
document.getElementById('unbanreason').innerHTML = ban_reason[option];
|
||||
} else {
|
||||
document.getElementById('unbanreason').innerHTML = '';
|
||||
}
|
||||
if (option in ban_give_reason) {
|
||||
document.getElementById('unbangivereason').innerHTML = ban_give_reason[option];
|
||||
} else {
|
||||
document.getElementById('unbangivereason').innerHTML = '';
|
||||
}
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<form id="acp_ban" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_TITLE}</legend>
|
||||
<dl>
|
||||
<dt><label for="ban">{L_BAN_CELL}{L_COLON}</label></dt>
|
||||
<dd><!-- EVENT acp_ban_cell_prepend --><textarea name="ban" cols="40" rows="3" id="ban"></textarea><!-- EVENT acp_ban_cell_append --></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}{L_COLON}</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}{L_COLON}</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}{L_COLON}</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}{L_COLON}</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}" />
|
||||
<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}{L_COLON}</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}{L_COLON}</label></dt>
|
||||
<dd><input style="border: 0;" type="text" class="text full" readonly="readonly" name="unbanlength" id="unbanlength" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="unbanreason">{L_BAN_REASON}{L_COLON}</label></dt>
|
||||
<dd><textarea style="border: 0;" class="text full" readonly="readonly" name="unbanreason" id="unbanreason" rows="5" cols="80"> </textarea></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="unbangivereason">{L_BAN_GIVE_REASON}{L_COLON}</label></dt>
|
||||
<dd><textarea style="border: 0;" class="text full" readonly="readonly" name="unbangivereason" id="unbangivereason" rows="5" cols="80"> </textarea></dd>
|
||||
</dl>
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="unbansubmit" name="unbansubmit" value="{L_SUBMIT}" />
|
||||
<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 -->
|
||||
76
install/update/new/adm/style/acp_contact.html
Normal file
@@ -0,0 +1,76 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
|
||||
var form_name = 'acp_contact';
|
||||
var text_name = 'contact_admin_info';
|
||||
var load_draft = false;
|
||||
var upload = false;
|
||||
var imageTag = false;
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<h1>{L_ACP_CONTACT_SETTINGS}</h1>
|
||||
|
||||
<p>{L_ACP_CONTACT_SETTINGS_EXPLAIN}</p>
|
||||
|
||||
<form id="acp_contact" method="post" action="{U_ACTION}">
|
||||
<fieldset>
|
||||
<legend>{L_GENERAL_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="contact_admin_form_enable">{L_CONTACT_US_ENABLE}{L_COLON}</label><br /><span>{L_CONTACT_US_ENABLE_EXPLAIN}</span></dt>
|
||||
<dd>
|
||||
<label><input type="radio" class="radio" id="contact_admin_form_enable" name="contact_admin_form_enable" value="1"<!-- IF CONTACT_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_ENABLED}</label>
|
||||
<label><input type="radio" class="radio" name="contact_admin_form_enable" value="0"<!-- IF not CONTACT_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_DISABLED}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
<!-- IF CONTACT_US_INFO_PREVIEW -->
|
||||
<fieldset>
|
||||
<legend>{L_CONTACT_US_INFO_PREVIEW}</legend>
|
||||
<p>{CONTACT_US_INFO_PREVIEW}</p>
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_CONTACT_US_INFO}</legend>
|
||||
<p>{L_CONTACT_US_INFO_EXPLAIN}</p>
|
||||
|
||||
<!-- INCLUDE acp_posting_buttons.html -->
|
||||
|
||||
<dl class="responsive-columns">
|
||||
<dt style="width: 90px;" id="color_palette_placeholder" data-color-palette="v" data-height="12" data-width="15" data-bbcode="true">
|
||||
</dt>
|
||||
|
||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px;">
|
||||
<textarea name="contact_admin_info" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();" data-bbcode="true">{CONTACT_US_INFO}</textarea>
|
||||
</dd>
|
||||
|
||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 5px;">
|
||||
<!-- IF S_BBCODE_ALLOWED -->
|
||||
<label><input type="checkbox" class="radio" name="disable_bbcode"<!-- IF S_BBCODE_DISABLE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_DISABLE_BBCODE}</label>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_SMILIES_ALLOWED -->
|
||||
<label><input type="checkbox" class="radio" name="disable_smilies"<!-- IF S_SMILIES_DISABLE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_DISABLE_SMILIES}</label>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_LINKS_ALLOWED -->
|
||||
<label><input type="checkbox" class="radio" name="disable_magic_url"<!-- IF S_MAGIC_URL_DISABLE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_DISABLE_MAGIC_URL}</label>
|
||||
<!-- ENDIF -->
|
||||
</dd>
|
||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 10px;"><strong>{L_OPTIONS}{L_COLON} </strong>{BBCODE_STATUS} :: {IMG_STATUS} :: {FLASH_STATUS} :: {URL_STATUS} :: {SMILIES_STATUS}</dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="submit" name="preview" value="{L_PREVIEW}" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
90
install/update/new/adm/style/acp_database.html
Normal file
@@ -0,0 +1,90 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF MODE eq 'restore' -->
|
||||
<h1>{L_ACP_RESTORE}</h1>
|
||||
|
||||
<p>{L_ACP_RESTORE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF .files -->
|
||||
<form id="acp_backup" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_RESTORE_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="file">{L_SELECT_FILE}{L_COLON}</label></dt>
|
||||
<dd><select id="file" name="file" size="10"><!-- BEGIN files --><option value="{files.FILE}"<!-- IF files.S_FIRST_ROW --> selected="selected"<!-- ENDIF -->>{files.NAME}</option><!-- END files --></select></dd>
|
||||
</dl>
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_START_RESTORE}" />
|
||||
<input class="button2" type="submit" id="delete" name="delete" value="{L_DELETE_BACKUP}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ELSE -->
|
||||
<div class="errorbox">
|
||||
<p>{L_ACP_NO_ITEMS}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- ELSE -->
|
||||
<h1>{L_ACP_BACKUP}</h1>
|
||||
|
||||
<p>{L_ACP_BACKUP_EXPLAIN}</p>
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
|
||||
function selector(bool)
|
||||
{
|
||||
var table = document.getElementById('table');
|
||||
|
||||
for (var i = 0; i < table.options.length; i++)
|
||||
{
|
||||
table.options[i].selected = bool;
|
||||
}
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<form id="acp_backup" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_BACKUP_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="type">{L_BACKUP_TYPE}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="type" value="full" id="type" checked="checked" /> {L_FULL_BACKUP}</label>
|
||||
<label><input type="radio" name="type" class="radio" value="structure" /> {L_STRUCTURE_ONLY}</label>
|
||||
<label><input type="radio" class="radio" name="type" value="data" /> {L_DATA_ONLY}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="method">{L_FILE_TYPE}{L_COLON}</label></dt>
|
||||
<dd><!-- BEGIN methods -->
|
||||
<label><input name="method"<!-- IF methods.S_FIRST_ROW --> id="method" checked="checked"<!-- ENDIF --> type="radio" class="radio" value="{methods.TYPE}" /> {methods.TYPE}</label>
|
||||
<!-- END methods --></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="table">{L_TABLE_SELECT}{L_COLON}</label></dt>
|
||||
<dd><select id="table" name="table[]" size="10" multiple="multiple">
|
||||
<!-- BEGIN tables -->
|
||||
<option value="{tables.TABLE}">{tables.TABLE}</option>
|
||||
<!-- END tables -->
|
||||
</select></dd>
|
||||
<dd><a href="#" onclick="selector(true); return false;">{L_SELECT_ALL}</a> :: <a href="#" onclick="selector(false); return false;">{L_DESELECT_ALL}</a></dd>
|
||||
</dl>
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
7
install/update/new/adm/style/acp_ext_actions.html
Normal file
@@ -0,0 +1,7 @@
|
||||
{% for action in enabled.actions %}
|
||||
<a href="{{ action.U_ACTION }}"{% if action.L_ACTION_EXPLAIN %} title="{{ action.L_ACTION_EXPLAIN }}"{% endif %}{% if action.COLOR %} style="color: {{ action.COLOR }};"{% endif %} data-ajax="{{ action.ACTION_AJAX }}" data-refresh="true">{{ action.L_ACTION }}</a>{% if not action.S_LAST_ROW %} | {% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% for action in disabled.actions %}
|
||||
<a href="{{ action.U_ACTION }}"{% if action.L_ACTION_EXPLAIN %} title="{{ action.L_ACTION_EXPLAIN }}"{% endif %}{% if action.COLOR %} style="color: {{ action.COLOR }};"{% endif %} data-ajax="{{ action.ACTION_AJAX }}" data-refresh="true">{{ action.L_ACTION }}</a>{% if not action.S_LAST_ROW %} | {% endif %}
|
||||
{% endfor %}
|
||||
114
install/update/new/adm/style/acp_ext_list.html
Normal file
@@ -0,0 +1,114 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<h1>{L_EXTENSIONS_ADMIN}</h1>
|
||||
|
||||
<p>{L_EXTENSIONS_EXPLAIN}</p>
|
||||
|
||||
<fieldset class="quick">
|
||||
<span class="small"><a href="https://www.phpbb.com/go/customise/extensions/3.3" target="_blank">{L_BROWSE_EXTENSIONS_DATABASE}</a> • <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE_ALL}</a> • <a href="javascript:phpbb.toggleDisplay('version_check_settings');">{L_SETTINGS}</a></span>
|
||||
</fieldset>
|
||||
|
||||
<form id="version_check_settings" method="post" action="{U_ACTION}" style="display:none">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_EXTENSIONS_VERSION_CHECK_SETTINGS}</legend>
|
||||
<dl>
|
||||
<dt><label for="force_unstable">{L_FORCE_UNSTABLE}{L_COLON}</label></dt>
|
||||
<dd>
|
||||
<label><input type="radio" id="force_unstable" name="force_unstable" class="radio" value="1"<!-- IF FORCE_UNSTABLE --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" name="force_unstable" class="radio" value="0"<!-- IF not FORCE_UNSTABLE --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" name="reset" value="{L_RESET}" />
|
||||
<input type="hidden" name="action" value="set_config_version_check_force_unstable" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<table class="table1">
|
||||
<col class="row1" ><col class="row1" ><col class="row2" ><col class="row2" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_EXTENSION_NAME}</th>
|
||||
<th style="text-align: center; width: 20%;">{L_CURRENT_VERSION}</th>
|
||||
<th style="text-align: center; width: 10%;">{L_EXTENSION_OPTIONS}</th>
|
||||
<th style="text-align: center; width: 25%;">{L_EXTENSION_ACTIONS}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr id="ext_enabled_header"<!-- IF not .enabled --> class="hidden"<!-- ENDIF -->>
|
||||
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_ENABLED}</strong><!-- EVENT acp_ext_list_enabled_title_after --></td>
|
||||
</tr>
|
||||
<!-- BEGIN enabled -->
|
||||
<tr class="ext_enabled row-highlight">
|
||||
<td><strong title="{enabled.NAME}">{enabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_enabled_name_after --></td>
|
||||
<td style="text-align: center;">
|
||||
<!-- IF enabled.S_VERSIONCHECK -->
|
||||
<strong class="<!-- IF enabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{enabled.META_VERSION}</strong>
|
||||
<!-- IF not enabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF -->
|
||||
<!-- ELSE -->
|
||||
{enabled.META_VERSION}
|
||||
<!-- ENDIF -->
|
||||
</td>
|
||||
<td style="text-align: center;"><a href="{enabled.U_DETAILS}">{L_DETAILS}</a></td>
|
||||
<td style="text-align: center;">
|
||||
<!-- INCLUDE acp_ext_actions.html -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END enabled -->
|
||||
|
||||
<tr id="ext_disabled_header"<!-- IF not .disabled --> class="hidden"<!-- ENDIF -->>
|
||||
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_DISABLED}</strong><!-- EVENT acp_ext_list_disabled_title_after --></td>
|
||||
</tr>
|
||||
<!-- BEGIN disabled -->
|
||||
<tr class="ext_disabled row-highlight">
|
||||
<td><strong title="{disabled.NAME}">{disabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_disabled_name_after --></td>
|
||||
<td style="text-align: center;">
|
||||
<!-- IF disabled.S_VERSIONCHECK -->
|
||||
<strong class="<!-- IF disabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{disabled.META_VERSION}</strong>
|
||||
<!-- IF not disabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF -->
|
||||
<!-- ELSE -->
|
||||
{disabled.META_VERSION}
|
||||
<!-- ENDIF -->
|
||||
</td>
|
||||
<td style="text-align: center;">
|
||||
<!-- IF disabled.U_DETAILS --><a href="{disabled.U_DETAILS}">{L_DETAILS}</a><!-- ENDIF -->
|
||||
</td>
|
||||
<td style="text-align: center;">
|
||||
<!-- INCLUDE acp_ext_actions.html -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END disabled -->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table class="table1">
|
||||
<tr>
|
||||
<th>{L_EXTENSION_INSTALL_HEADLINE}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row3">{L_EXTENSION_INSTALL_EXPLAIN}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{L_EXTENSION_UPDATE_HEADLINE}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row3">{L_EXTENSION_UPDATE_EXPLAIN}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{L_EXTENSION_REMOVE_HEADLINE}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row3">{L_EXTENSION_REMOVE_EXPLAIN}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
524
install/update/new/adm/style/acp_forums.html
Normal file
@@ -0,0 +1,524 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF S_EDIT_FORUM -->
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
/**
|
||||
* Handle displaying/hiding several options based on the forum type
|
||||
*/
|
||||
function display_options(value)
|
||||
{
|
||||
<!-- IF not S_ADD_ACTION and S_FORUM_ORIG_POST -->
|
||||
if (value == {FORUM_POST})
|
||||
{
|
||||
phpbb.toggleDisplay('type_actions', -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
phpbb.toggleDisplay('type_actions', 1);
|
||||
}
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF not S_ADD_ACTION and S_FORUM_ORIG_CAT and S_HAS_SUBFORUMS -->
|
||||
if (value == {FORUM_LINK})
|
||||
{
|
||||
phpbb.toggleDisplay('cat_to_link_actions', 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
phpbb.toggleDisplay('cat_to_link_actions', -1);
|
||||
}
|
||||
<!-- ENDIF -->
|
||||
|
||||
if (value == {FORUM_POST})
|
||||
{
|
||||
phpbb.toggleDisplay('forum_post_options', 1);
|
||||
phpbb.toggleDisplay('forum_link_options', -1);
|
||||
phpbb.toggleDisplay('forum_rules_options', 1);
|
||||
phpbb.toggleDisplay('forum_cat_options', -1);
|
||||
}
|
||||
else if (value == {FORUM_LINK})
|
||||
{
|
||||
phpbb.toggleDisplay('forum_post_options', -1);
|
||||
phpbb.toggleDisplay('forum_link_options', 1);
|
||||
phpbb.toggleDisplay('forum_rules_options', -1);
|
||||
phpbb.toggleDisplay('forum_cat_options', -1);
|
||||
}
|
||||
else if (value == {FORUM_CAT})
|
||||
{
|
||||
phpbb.toggleDisplay('forum_post_options', -1);
|
||||
phpbb.toggleDisplay('forum_link_options', -1);
|
||||
phpbb.toggleDisplay('forum_rules_options', 1);
|
||||
phpbb.toggleDisplay('forum_cat_options', 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Init the wanted display functionality if javascript is enabled.
|
||||
* If javascript is not available, the user is still able to properly administer.
|
||||
*/
|
||||
onload = function()
|
||||
{
|
||||
<!-- IF not S_ADD_ACTION and S_FORUM_ORIG_POST -->
|
||||
<!-- IF S_FORUM_POST -->
|
||||
phpbb.toggleDisplay('type_actions', -1);
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF not S_ADD_ACTION and S_FORUM_ORIG_CAT and S_HAS_SUBFORUMS -->
|
||||
<!-- IF S_FORUM_CAT -->
|
||||
phpbb.toggleDisplay('cat_to_link_actions', -1);
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF not S_FORUM_POST -->
|
||||
phpbb.toggleDisplay('forum_post_options', -1);
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF not S_FORUM_CAT -->
|
||||
phpbb.toggleDisplay('forum_cat_options', -1);
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF not S_FORUM_LINK -->
|
||||
phpbb.toggleDisplay('forum_link_options', -1);
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_FORUM_LINK -->
|
||||
phpbb.toggleDisplay('forum_rules_options', -1);
|
||||
<!-- ENDIF -->
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<h1>{L_TITLE} <!-- IF FORUM_NAME -->:: {FORUM_NAME}<!-- ENDIF --></h1>
|
||||
|
||||
<p>{L_FORUM_EDIT_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<form id="forumedit" method="post" action="{U_EDIT_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_FORUM_SETTINGS}</legend>
|
||||
<!-- EVENT acp_forums_main_settings_prepend -->
|
||||
<dl>
|
||||
<dt><label for="forum_type">{L_FORUM_TYPE}{L_COLON}</label></dt>
|
||||
<dd><select id="forum_type" name="forum_type" onchange="display_options(this.options[this.selectedIndex].value);">{S_FORUM_TYPE_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<!-- IF not S_ADD_ACTION and S_FORUM_ORIG_POST -->
|
||||
<div id="type_actions">
|
||||
<dl>
|
||||
<dt><label for="type_action">{L_DECIDE_MOVE_DELETE_CONTENT}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="type_action" value="delete"<!-- IF not S_MOVE_FORUM_OPTIONS --> checked="checked" id="type_action"<!-- ENDIF --> /> {L_DELETE_ALL_POSTS}</label></dd>
|
||||
<!-- IF S_MOVE_FORUM_OPTIONS --><dd><label><input type="radio" class="radio" name="type_action" id="type_action" value="move" checked="checked" /> {L_MOVE_POSTS_TO}</label> <select name="to_forum_id">{S_MOVE_FORUM_OPTIONS}</select></dd><!-- ENDIF -->
|
||||
</dl>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF not S_ADD_ACTION and S_FORUM_ORIG_CAT and S_HAS_SUBFORUMS -->
|
||||
<div id="cat_to_link_actions">
|
||||
<dl>
|
||||
<dt><label for="action_subforums">{L_DECIDE_MOVE_DELETE_SUBFORUMS}{L_COLON}</label></dt>
|
||||
<!-- IF S_FORUMS_LIST -->
|
||||
<dd><label><input type="radio" class="radio" id="action_subforums" name="action_subforums" value="move" checked="checked" /> {L_MOVE_SUBFORUMS_TO}</label> <select name="subforums_to_id">{S_FORUMS_LIST}</select></dd>
|
||||
<!-- ELSE -->
|
||||
<dd><label><input type="radio" class="radio" id="action_subforums" name="action_subforums" value="delete" checked="checked" /> {L_DELETE_SUBFORUMS}</label></dd>
|
||||
<!-- ENDIF -->
|
||||
</dl>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="parent">{L_FORUM_PARENT}{L_COLON}</label></dt>
|
||||
<dd><select id="parent" name="forum_parent_id"><option value="0"<!-- IF not S_FORUM_PARENT_ID --> selected="selected"<!-- ENDIF -->>{L_NO_PARENT}</option>{S_PARENT_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<!-- IF S_CAN_COPY_PERMISSIONS -->
|
||||
<dl>
|
||||
<dt><label for="forum_perm_from">{L_COPY_PERMISSIONS}{L_COLON}</label><br /><span>{L_COPY_PERMISSIONS_EXPLAIN}</span></dt>
|
||||
<dd><select id="forum_perm_from" name="forum_perm_from"><option value="0">{L_NO_PERMISSIONS}</option>{S_FORUM_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="forum_name">{L_FORUM_NAME}{L_COLON}</label></dt>
|
||||
<dd><input class="text medium" type="text" id="forum_name" name="forum_name" value="{FORUM_NAME}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="forum_desc">{L_FORUM_DESC}{L_COLON}</label><br /><span>{L_FORUM_DESC_EXPLAIN}</span></dt>
|
||||
<dd><textarea id="forum_desc" name="forum_desc" rows="5" cols="45" data-bbcode="true">{FORUM_DESC}</textarea></dd>
|
||||
<dd><label><input type="checkbox" class="radio" name="desc_parse_bbcode"<!-- IF S_DESC_BBCODE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_BBCODE}</label>
|
||||
<label><input type="checkbox" class="radio" name="desc_parse_smilies"<!-- IF S_DESC_SMILIES_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_SMILIES}</label>
|
||||
<label><input type="checkbox" class="radio" name="desc_parse_urls"<!-- IF S_DESC_URLS_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_URLS}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="forum_image">{L_FORUM_IMAGE}{L_COLON}</label><br /><span>{L_FORUM_IMAGE_EXPLAIN}</span></dt>
|
||||
<dd><input class="text medium" type="text" id="forum_image" name="forum_image" value="{FORUM_IMAGE}" maxlength="255" /></dd>
|
||||
<!-- IF FORUM_IMAGE_SRC -->
|
||||
<dd><img src="{FORUM_IMAGE_SRC}" alt="{L_FORUM_IMAGE}" /></dd>
|
||||
<!-- ENDIF -->
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="forum_password">{L_FORUM_PASSWORD}{L_COLON}</label><br /><span>{L_FORUM_PASSWORD_EXPLAIN}</span></dt>
|
||||
<dd><input type="password" id="forum_password" name="forum_password" value="<!-- IF S_FORUM_PASSWORD_SET -->      <!-- ENDIF -->" autocomplete="off" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="forum_password_confirm">{L_FORUM_PASSWORD_CONFIRM}{L_COLON}</label><br /><span>{L_FORUM_PASSWORD_CONFIRM_EXPLAIN}</span></dt>
|
||||
<dd><input type="password" id="forum_password_confirm" name="forum_password_confirm" value="<!-- IF S_FORUM_PASSWORD_SET -->      <!-- ENDIF -->" autocomplete="off" /></dd>
|
||||
</dl>
|
||||
<!-- IF S_FORUM_PASSWORD_SET -->
|
||||
<dl>
|
||||
<dt><label for="forum_password_unset">{L_FORUM_PASSWORD_UNSET}{L_COLON}</label><br /><span>{L_FORUM_PASSWORD_UNSET_EXPLAIN}</span></dt>
|
||||
<dd><input id="forum_password_unset" name="forum_password_unset" type="checkbox" /></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="forum_style">{L_FORUM_STYLE}{L_COLON}</label></dt>
|
||||
<dd><select id="forum_style" name="forum_style"><option value="0">{L_DEFAULT_STYLE}</option>{S_STYLES_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<!-- EVENT acp_forums_main_settings_append -->
|
||||
</fieldset>
|
||||
|
||||
<div id="forum_cat_options">
|
||||
<fieldset>
|
||||
<legend>{L_GENERAL_FORUM_SETTINGS}</legend>
|
||||
<dl>
|
||||
<dt><label for="display_active">{L_DISPLAY_ACTIVE_TOPICS}{L_COLON}</label><br /><span>{L_DISPLAY_ACTIVE_TOPICS_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="display_active" value="1"<!-- IF S_ENABLE_ACTIVE_TOPICS --> id="display_active" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="display_active" value="0"<!-- IF not S_ENABLE_ACTIVE_TOPICS --> id="display_active" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<div id="forum_post_options">
|
||||
<fieldset>
|
||||
<legend>{L_GENERAL_FORUM_SETTINGS}</legend>
|
||||
<!-- EVENT acp_forums_normal_settings_prepend -->
|
||||
<dl>
|
||||
<dt><label for="forum_status">{L_FORUM_STATUS}{L_COLON}</label></dt>
|
||||
<dd><select id="forum_status" name="forum_status">{S_STATUS_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="display_subforum_list">{L_LIST_SUBFORUMS}{L_COLON}</label><br /><span>{L_LIST_SUBFORUMS_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="display_subforum_list" value="1"<!-- IF S_DISPLAY_SUBFORUM_LIST --> id="display_subforum_list" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="display_subforum_list" value="0"<!-- IF not S_DISPLAY_SUBFORUM_LIST --> id="display_subforum_list" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="display_subforum_limit">{L_LIMIT_SUBFORUMS}{L_COLON}</label><br /><span>{L_LIMIT_SUBFORUMS_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="display_subforum_limit" value="1"<!-- IF S_DISPLAY_SUBFORUM_LIMIT --> id="display_subforum_limit" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="display_subforum_limit" value="0"<!-- IF not S_DISPLAY_SUBFORUM_LIMIT --> id="display_subforum_limit" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="display_on_index">{L_LIST_INDEX}{L_COLON}</label><br /><span>{L_LIST_INDEX_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="display_on_index" value="1"<!-- IF S_DISPLAY_ON_INDEX --> id="display_on_index" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="display_on_index" value="0"<!-- IF not S_DISPLAY_ON_INDEX --> id="display_on_index" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="enable_post_review">{L_ENABLE_POST_REVIEW}{L_COLON}</label><br /><span>{L_ENABLE_POST_REVIEW_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="enable_post_review" value="1"<!-- IF S_ENABLE_POST_REVIEW --> id="enable_post_review" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="enable_post_review" value="0"<!-- IF not S_ENABLE_POST_REVIEW --> id="enable_post_review" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="enable_quick_reply">{L_ENABLE_QUICK_REPLY}{L_COLON}</label><br /><span>{L_ENABLE_QUICK_REPLY_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="enable_quick_reply" value="1"<!-- IF S_ENABLE_QUICK_REPLY --> id="enable_quick_reply" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="enable_quick_reply" value="0"<!-- IF not S_ENABLE_QUICK_REPLY --> id="enable_quick_reply" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="enable_indexing">{L_ENABLE_INDEXING}{L_COLON}</label><br /><span>{L_ENABLE_INDEXING_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="enable_indexing" value="1"<!-- IF S_ENABLE_INDEXING --> id="enable_indexing" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="enable_indexing" value="0"<!-- IF not S_ENABLE_INDEXING --> id="enable_indexing" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="enable_icons">{L_ENABLE_TOPIC_ICONS}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="enable_icons" value="1"<!-- IF S_TOPIC_ICONS --> id="enable_icons" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="enable_icons" value="0"<!-- IF not S_TOPIC_ICONS --> id="enable_icons" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="display_recent">{L_ENABLE_RECENT}{L_COLON}</label><br /><span>{L_ENABLE_RECENT_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="display_recent" value="1"<!-- IF S_DISPLAY_ACTIVE_TOPICS --> id="display_recent" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="display_recent" value="0"<!-- IF not S_DISPLAY_ACTIVE_TOPICS --> id="display_recent" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="topics_per_page">{L_FORUM_TOPICS_PAGE}{L_COLON}</label><br /><span>{L_FORUM_TOPICS_PAGE_EXPLAIN}</span></dt>
|
||||
<dd><input type="number" id="topics_per_page" name="topics_per_page" value="{TOPICS_PER_PAGE}" min="0" max="9999" /></dd>
|
||||
</dl>
|
||||
<!-- EVENT acp_forums_normal_settings_append -->
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_FORUM_PRUNE_SETTINGS}</legend>
|
||||
<!-- EVENT acp_forums_prune_settings_prepend -->
|
||||
<dl>
|
||||
<dt><label for="enable_prune">{L_FORUM_AUTO_PRUNE}{L_COLON}</label><br /><span>{L_FORUM_AUTO_PRUNE_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="enable_prune" value="1"<!-- IF S_PRUNE_ENABLE --> id="enable_prune" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="enable_prune" value="0"<!-- IF not S_PRUNE_ENABLE --> id="enable_prune" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="prune_freq">{L_AUTO_PRUNE_FREQ}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_FREQ_EXPLAIN}</span></dt>
|
||||
<dd><input type="number" id="prune_freq" name="prune_freq" value="{PRUNE_FREQ}" min="0" max="9999" /> {L_DAYS}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="prune_days">{L_AUTO_PRUNE_DAYS}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_DAYS_EXPLAIN}</span></dt>
|
||||
<dd><input type="number" id="prune_days" name="prune_days" value="{PRUNE_DAYS}" min="0" max="9999" /> {L_DAYS}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="prune_viewed">{L_AUTO_PRUNE_VIEWED}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_VIEWED_EXPLAIN}</span></dt>
|
||||
<dd><input type="number" id="prune_viewed" name="prune_viewed" value="{PRUNE_VIEWED}" min="0" max="9999" /> {L_DAYS}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="prune_old_polls">{L_PRUNE_OLD_POLLS}{L_COLON}</label><br /><span>{L_PRUNE_OLD_POLLS_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="prune_old_polls" value="1"<!-- IF S_PRUNE_OLD_POLLS --> id="prune_old_polls" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="prune_old_polls" value="0"<!-- IF not S_PRUNE_OLD_POLLS --> id="prune_old_polls" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="prune_announce">{L_PRUNE_ANNOUNCEMENTS}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="prune_announce" value="1"<!-- IF S_PRUNE_ANNOUNCE --> id="prune_announce" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="prune_announce" value="0"<!-- IF not S_PRUNE_ANNOUNCE --> id="prune_announce" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="prune_sticky">{L_PRUNE_STICKY}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="prune_sticky" value="1"<!-- IF S_PRUNE_STICKY --> id="prune_sticky" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="prune_sticky" value="0"<!-- IF not S_PRUNE_STICKY --> id="prune_sticky" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="enable_shadow_prune">{L_FORUM_PRUNE_SHADOW}{L_COLON}</label><br /><span>{L_FORUM_PRUNE_SHADOW_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="enable_shadow_prune" value="1"<!-- IF S_PRUNE_SHADOW_ENABLE --> id="enable_shadow_prune" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="enable_shadow_prune" value="0"<!-- IF not S_PRUNE_SHADOW_ENABLE --> id="enable_shadow_prune" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="prune_shadow_freq">{L_AUTO_PRUNE_SHADOW_FREQ}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_SHADOW_FREQ_EXPLAIN}</span></dt>
|
||||
<dd><input type="number" id="prune_shadow_freq" name="prune_shadow_freq" value="{PRUNE_SHADOW_FREQ}" min="0" max="9999" /> {L_DAYS}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="prune_shadow_days">{L_AUTO_PRUNE_SHADOW_DAYS}{L_COLON}</label><br /><span>{L_AUTO_PRUNE_SHADOW_DAYS_EXPLAIN}</span></dt>
|
||||
<dd><input type="number" id="prune_shadow_days" name="prune_shadow_days" value="{PRUNE_SHADOW_DAYS}" min="0" max="9999" /> {L_DAYS}</dd>
|
||||
</dl>
|
||||
<!-- EVENT acp_forums_prune_settings_append -->
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<div id="forum_link_options">
|
||||
<fieldset>
|
||||
<legend>{L_GENERAL_FORUM_SETTINGS}</legend>
|
||||
<dl>
|
||||
<dt><label for="link_display_on_index">{L_LIST_INDEX}{L_COLON}</label><br /><span>{L_LIST_INDEX_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="link_display_on_index" value="1"<!-- IF S_DISPLAY_ON_INDEX --> id="link_display_on_index" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="link_display_on_index" value="0"<!-- IF not S_DISPLAY_ON_INDEX --> id="link_display_on_index" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="forum_link">{L_FORUM_LINK}{L_COLON}</label><br /><span>{L_FORUM_LINK_EXPLAIN}</span></dt>
|
||||
<dd><input class="text medium" type="text" id="forum_link" name="forum_link" value="{FORUM_DATA_LINK}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="forum_link_track">{L_FORUM_LINK_TRACK}{L_COLON}</label><br /><span>{L_FORUM_LINK_TRACK_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="forum_link_track" value="1"<!-- IF S_FORUM_LINK_TRACK --> id="forum_link_track" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="forum_link_track" value="0"<!-- IF not S_FORUM_LINK_TRACK --> id="forum_link_track" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<div id="forum_rules_options">
|
||||
<fieldset>
|
||||
<legend>{L_FORUM_RULES}</legend>
|
||||
<!-- EVENT acp_forums_rules_settings_prepend -->
|
||||
<dl>
|
||||
<dt><label for="forum_rules_link">{L_FORUM_RULES_LINK}{L_COLON}</label><br /><span>{L_FORUM_RULES_LINK_EXPLAIN}</span></dt>
|
||||
<dd><input class="text medium" type="text" id="forum_rules_link" name="forum_rules_link" value="{FORUM_RULES_LINK}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<!-- IF FORUM_RULES_PREVIEW -->
|
||||
<dl>
|
||||
<dt><label>{L_FORUM_RULES_PREVIEW}{L_COLON}</label></dt>
|
||||
<dd>{FORUM_RULES_PREVIEW}</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="forum_rules">{L_FORUM_RULES}{L_COLON}</label><br /><span>{L_FORUM_RULES_EXPLAIN}</span></dt>
|
||||
<dd><textarea id="forum_rules" name="forum_rules" rows="4" cols="70" data-bbcode="true">{FORUM_RULES_PLAIN}</textarea></dd>
|
||||
<dd><label><input type="checkbox" class="radio" name="rules_parse_bbcode"<!-- IF S_BBCODE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_BBCODE}</label>
|
||||
<label><input type="checkbox" class="radio" name="rules_parse_smilies"<!-- IF S_SMILIES_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_SMILIES}</label>
|
||||
<label><input type="checkbox" class="radio" name="rules_parse_urls"<!-- IF S_URLS_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_URLS}</label></dd>
|
||||
</dl>
|
||||
<!-- EVENT acp_forums_rules_settings_append -->
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<!-- EVENT acp_forums_custom_settings -->
|
||||
|
||||
<fieldset class="submit-buttons">
|
||||
<legend>{L_SUBMIT}</legend>
|
||||
<input class="button1" type="submit" id="submit" name="update" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSEIF S_DELETE_FORUM -->
|
||||
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<h1>{L_FORUM_DELETE}</h1>
|
||||
|
||||
<p>{L_FORUM_DELETE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<form id="acp_forum" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_FORUM_DELETE}</legend>
|
||||
<dl>
|
||||
<dt><label>{L_FORUM_NAME}{L_COLON}</label></dt>
|
||||
<dd><strong>{FORUM_NAME}</strong></dd>
|
||||
</dl>
|
||||
<!-- IF S_FORUM_POST -->
|
||||
<dl>
|
||||
<dt><label for="delete_action">{L_ACTION}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" id="delete_action" name="action_posts" value="delete" checked="checked" /> {L_DELETE_ALL_POSTS}</label></dd>
|
||||
<!-- IF S_MOVE_FORUM_OPTIONS -->
|
||||
<dd><label><input type="radio" class="radio" name="action_posts" value="move" /> {L_MOVE_POSTS_TO}</label> <select name="posts_to_id">{S_MOVE_FORUM_OPTIONS}</select></dd>
|
||||
<!-- ENDIF -->
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_HAS_SUBFORUMS -->
|
||||
<dl>
|
||||
<dt><label for="sub_delete_action">{L_ACTION}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" id="sub_delete_action" name="action_subforums" value="delete" checked="checked" /> {L_DELETE_SUBFORUMS}</label></dd>
|
||||
<!-- IF S_FORUMS_LIST -->
|
||||
<dd><label><input type="radio" class="radio" name="action_subforums" value="move" /> {L_MOVE_SUBFORUMS_TO}</label> <select name="subforums_to_id">{S_FORUMS_LIST}</select></dd>
|
||||
<!-- ENDIF -->
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<p class="quick">
|
||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSEIF S_CONTINUE_SYNC -->
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
var close_waitscreen = 0;
|
||||
// no scrollbars...
|
||||
popup('{UA_PROGRESS_BAR}', 400, 240, '_sync');
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<h1>{L_FORUM_ADMIN}</h1>
|
||||
|
||||
<p>{L_FORUM_ADMIN_EXPLAIN}</p>
|
||||
|
||||
<p>{L_PROGRESS_EXPLAIN}</p>
|
||||
|
||||
<!-- ELSE -->
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
/**
|
||||
* Popup search progress bar
|
||||
*/
|
||||
function popup_progress_bar()
|
||||
{
|
||||
var close_waitscreen = 0;
|
||||
// no scrollbars...
|
||||
popup('{UA_PROGRESS_BAR}', 400, 240, '_sync');
|
||||
}
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<h1>{L_FORUM_ADMIN}</h1>
|
||||
|
||||
<p>{L_FORUM_ADMIN_EXPLAIN}</p>
|
||||
|
||||
<!-- IF ERROR_MSG -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_RESYNCED -->
|
||||
<script>
|
||||
// <![CDATA[
|
||||
var close_waitscreen = 1;
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<div class="successbox">
|
||||
<h3>{L_NOTIFY}</h3>
|
||||
<p>{L_FORUM_RESYNCED}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<p><strong>{NAVIGATION}<!-- IF S_NO_FORUMS --> [<a href="{U_EDIT}">{L_EDIT}</a> | <a href="{U_DELETE}">{L_DELETE}</a><!-- IF not S_LINK --> | <a href="{U_SYNC}">{L_RESYNC}</a><!-- ENDIF -->]<!-- ENDIF --></strong></p>
|
||||
|
||||
<!-- IF .forums -->
|
||||
<table class="table1 forums">
|
||||
<col class="row1" /><col class="row1" /><col class="row2" />
|
||||
<tbody>
|
||||
<!-- BEGIN forums -->
|
||||
<tr>
|
||||
<td class="folder">{forums.FOLDER_IMAGE}</td>
|
||||
<td class="forum-desc">
|
||||
<!-- IF forums.FORUM_IMAGE --><div style="float: {S_CONTENT_FLOW_BEGIN}; margin-right: 5px;">{forums.FORUM_IMAGE}</div><!-- ENDIF -->
|
||||
<strong><!-- IF forums.S_FORUM_LINK -->{forums.FORUM_NAME}<!-- ELSE --><a href="{forums.U_FORUM}">{forums.FORUM_NAME}</a><!-- ENDIF --></strong>
|
||||
<!-- IF forums.FORUM_DESCRIPTION --><br /><span>{forums.FORUM_DESCRIPTION}</span><!-- ENDIF -->
|
||||
<!-- IF forums.S_FORUM_POST --><br /><br /><span>{L_TOPICS}{L_COLON} <strong>{forums.FORUM_TOPICS}</strong> / {L_POSTS}{L_COLON} <strong>{forums.FORUM_POSTS}</strong></span><!-- ENDIF -->
|
||||
</td>
|
||||
<td class="actions">
|
||||
<span class="up-disabled" style="display:none;">{ICON_MOVE_UP_DISABLED}</span>
|
||||
<span class="up"><a href="{forums.U_MOVE_UP}" data-ajax="row_up">{ICON_MOVE_UP}</a></span>
|
||||
<span class="down-disabled" style="display:none;">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||
<span class="down"><a href="{forums.U_MOVE_DOWN}" data-ajax="row_down">{ICON_MOVE_DOWN}</a></span>
|
||||
<a href="{forums.U_EDIT}">{ICON_EDIT}</a>
|
||||
<!-- IF not forums.S_FORUM_LINK -->
|
||||
<a href="{forums.U_SYNC}" onclick="popup_progress_bar();">{ICON_SYNC}</a>
|
||||
<!-- ELSE -->
|
||||
{ICON_SYNC_DISABLED}
|
||||
<!-- ENDIF -->
|
||||
<a href="{forums.U_DELETE}">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END forums -->
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<form id="fselect" method="post" action="{U_SEL_ACTION}">
|
||||
|
||||
<fieldset class="quick">
|
||||
{L_SELECT_FORUM}{L_COLON} <select name="parent_id" onchange="if(this.options[this.selectedIndex].value != -1){ this.form.submit(); }">{FORUM_BOX}</select>
|
||||
|
||||
<!-- EVENT acp_forums_quick_select_button_prepend --><input class="button2" type="submit" value="{L_GO}" /><!-- EVENT acp_forums_quick_select_button_append -->
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<form id="forums" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset class="quick">
|
||||
<input type="hidden" name="action" value="add" />
|
||||
|
||||
<input type="text" name="forum_name" value="" maxlength="255" />
|
||||
<input class="button2" name="addforum" type="submit" value="{L_CREATE_FORUM}" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
335
install/update/new/adm/style/acp_groups.html
Normal file
@@ -0,0 +1,335 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF S_EDIT -->
|
||||
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<h1>{L_ACP_GROUPS_MANAGE}</h1>
|
||||
|
||||
<p>{L_GROUP_EDIT_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<form id="settings" method="post" action="{U_ACTION}" enctype="multipart/form-data">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_GROUP_DETAILS}</legend>
|
||||
<dl>
|
||||
<dt><label<!-- IF not S_SPECIAL_GROUP --> for="group_name"<!-- ENDIF -->>{L_GROUP_NAME}{L_COLON}</label></dt>
|
||||
<dd><!-- IF S_SPECIAL_GROUP --><strong>{GROUP_NAME}</strong><!-- ENDIF --><input name="group_name" type="<!-- IF S_SPECIAL_GROUP -->hidden<!-- ELSE -->text<!-- ENDIF -->" id="group_name" value="{GROUP_INTERNAL_NAME}" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="group_desc">{L_GROUP_DESC}{L_COLON}</label></dt>
|
||||
<dd><textarea id="group_desc" name="group_desc" rows="5" cols="45">{GROUP_DESC}</textarea></dd>
|
||||
<dd><label><input type="checkbox" class="radio" name="desc_parse_bbcode"<!-- IF S_DESC_BBCODE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_BBCODE}</label>
|
||||
<label><input type="checkbox" class="radio" name="desc_parse_smilies"<!-- IF S_DESC_SMILIES_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_SMILIES}</label>
|
||||
<label><input type="checkbox" class="radio" name="desc_parse_urls"<!-- IF S_DESC_URLS_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_URLS}</label></dd>
|
||||
</dl>
|
||||
<!-- IF not S_SPECIAL_GROUP -->
|
||||
<dl>
|
||||
<dt><label for="group_type">{L_GROUP_TYPE}{L_COLON}</label><br /><span>{L_GROUP_TYPE_EXPLAIN}</span></dt>
|
||||
<dd>
|
||||
{% EVENT acp_group_types_prepend %}
|
||||
<label><input name="group_type" type="radio" class="radio" id="group_type" value="{GROUP_TYPE_FREE}"{GROUP_FREE} /> {L_GROUP_OPEN}</label>
|
||||
<label><input name="group_type" type="radio" class="radio" value="{GROUP_TYPE_OPEN}"{GROUP_OPEN} /> {L_GROUP_REQUEST}</label>
|
||||
<label><input name="group_type" type="radio" class="radio" value="{GROUP_TYPE_CLOSED}"{GROUP_CLOSED} /> {L_GROUP_CLOSED}</label>
|
||||
<label><input name="group_type" type="radio" class="radio" value="{GROUP_TYPE_HIDDEN}"{GROUP_HIDDEN} /> {L_GROUP_HIDDEN}</label>
|
||||
{% EVENT acp_group_types_append %}
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ELSE -->
|
||||
<input name="group_type" type="hidden" value="{GROUP_TYPE_SPECIAL}" />
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_ADD_GROUP and S_GROUP_PERM -->
|
||||
<dl>
|
||||
<dt><label for="group_perm_from">{L_COPY_PERMISSIONS}{L_COLON}</label><br /><span>{L_COPY_PERMISSIONS_EXPLAIN}</span></dt>
|
||||
<dd><select id="group_perm_from" name="group_perm_from"><option value="0">{L_NO_PERMISSIONS}</option>{S_GROUP_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_GROUP_OPTIONS_SAVE}</legend>
|
||||
<!-- EVENT acp_group_options_before -->
|
||||
<!-- IF S_USER_FOUNDER -->
|
||||
<dl>
|
||||
<dt><label for="group_founder_manage">{L_GROUP_FOUNDER_MANAGE}{L_COLON}</label><br /><span>{L_GROUP_FOUNDER_MANAGE_EXPLAIN}</span></dt>
|
||||
<dd><input name="group_founder_manage" type="checkbox" value="1" class="radio" id="group_founder_manage"{GROUP_FOUNDER_MANAGE} /></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label for="group_skip_auth">{L_GROUP_SKIP_AUTH}{L_COLON}</label><br /><span>{L_GROUP_SKIP_AUTH_EXPLAIN}</span></dt>
|
||||
<dd><input name="group_skip_auth" type="checkbox" value="1" class="radio" id="group_skip_auth"{GROUP_SKIP_AUTH} /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="group_legend">{L_GROUP_LEGEND}{L_COLON}</label></dt>
|
||||
<dd><input name="group_legend" type="checkbox" value="1" class="radio" id="group_legend"{GROUP_LEGEND} /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="group_teampage">{L_GROUP_TEAMPAGE}{L_COLON}</label></dt>
|
||||
<dd><input name="group_teampage" type="checkbox" value="1" class="radio" id="group_teampage"{GROUP_TEAMPAGE} /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="group_receive_pm">{L_GROUP_RECEIVE_PM}{L_COLON}</label><br /><span>{L_GROUP_RECEIVE_PM_EXPLAIN}</span></dt>
|
||||
<dd><input name="group_receive_pm" type="checkbox" value="1" class="radio" id="group_receive_pm"{GROUP_RECEIVE_PM} /></dd>
|
||||
</dl>
|
||||
<!-- EVENT acp_group_options_after -->
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_GROUP_SETTINGS_SAVE}</legend>
|
||||
<dl>
|
||||
<dt><label for="group_message_limit">{L_GROUP_MESSAGE_LIMIT}{L_COLON}</label><br /><span>{L_GROUP_MESSAGE_LIMIT_EXPLAIN}</span></dt>
|
||||
<dd><input name="group_message_limit" type="number" id="group_message_limit" min="0" max="9999" value="{GROUP_MESSAGE_LIMIT}" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="group_max_recipients">{L_GROUP_MAX_RECIPIENTS}{L_COLON}</label><br /><span>{L_GROUP_MAX_RECIPIENTS_EXPLAIN}</span></dt>
|
||||
<dd><input name="group_max_recipients" type="number" id="group_max_recipients" min="0" max="9999" value="{GROUP_MAX_RECIPIENTS}" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="group_colour">{L_GROUP_COLOR}{L_COLON}</label><br /><span>{L_GROUP_COLOR_EXPLAIN}</span></dt>
|
||||
<dd>
|
||||
<input name="group_colour" type="text" id="group_colour" value="{GROUP_COLOUR}" size="6" maxlength="6" />
|
||||
<!-- IF GROUP_COLOUR --> <span style="background-color: #{GROUP_COLOUR}"> </span><!-- ENDIF --> <span>
|
||||
[ <a href="#" id="color_palette_toggle">{L_COLOUR_SWATCH}</a> ]</span>
|
||||
<div id="color_palette_placeholder" style="display: none;" data-color-palette="h" data-height="12" data-width="15" data-target="#group_colour"></div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="group_rank">{L_GROUP_RANK}{L_COLON}</label></dt>
|
||||
<dd><select name="group_rank" id="group_rank">{S_RANK_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_GROUP_AVATAR}</legend>
|
||||
<dl>
|
||||
<dt><label>{L_CURRENT_IMAGE}{L_COLON}</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
|
||||
<dd>{AVATAR}</dd>
|
||||
<dd><label for="avatar_delete"><input type="checkbox" name="avatar_delete" id="avatar_delete" /> {L_DELETE_AVATAR}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_AVATAR_TYPE}{L_COLON}</label></dt>
|
||||
<dd><select name="avatar_driver" id="avatar_driver" data-togglable-settings="true">
|
||||
<!-- BEGIN avatar_drivers -->
|
||||
<option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF --> data-toggle-setting="#avatar_option_{avatar_drivers.DRIVER}">{avatar_drivers.L_TITLE}</option>
|
||||
<!-- END avatar_drivers -->
|
||||
</select></dd>
|
||||
</dl>
|
||||
<div id="avatar_options">
|
||||
<!-- BEGIN avatar_drivers -->
|
||||
<div id="avatar_option_{avatar_drivers.DRIVER}">
|
||||
<p>{avatar_drivers.L_EXPLAIN}</p>
|
||||
{avatar_drivers.OUTPUT}
|
||||
</div>
|
||||
<!-- END avatar_drivers -->
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="submit-buttons">
|
||||
<legend>{L_SUBMIT}</legend>
|
||||
<input class="button1" type="submit" id="submit" name="update" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSEIF S_LIST -->
|
||||
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<h1>{L_GROUP_MEMBERS} :: {GROUP_NAME}</h1>
|
||||
|
||||
<p>{L_GROUP_MEMBERS_EXPLAIN}</p>
|
||||
|
||||
<form id="list" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset class="quick">
|
||||
<a href="{U_DEFAULT_ALL}">» {L_MAKE_DEFAULT_FOR_ALL}</a>
|
||||
</fieldset>
|
||||
|
||||
<table class="table1 zebra-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_USERNAME}</th>
|
||||
<th>{L_GROUP_DEFAULT}</th>
|
||||
<th>{L_JOINED}</th>
|
||||
<th>{L_POSTS}</th>
|
||||
<th>{L_MARK}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="row3" colspan="5"><strong>{L_GROUP_LEAD}</strong></td>
|
||||
</tr>
|
||||
<!-- BEGIN leader -->
|
||||
<tr>
|
||||
<td><!-- IF leader.USERNAME_COLOUR --><a href="{leader.U_USER_EDIT}" style="color: #{leader.USERNAME_COLOUR};" class="username-coloured">{leader.USERNAME}</a><!-- ELSE --><a href="{leader.U_USER_EDIT}">{leader.USERNAME}</a><!-- ENDIF --></td>
|
||||
<td style="text-align: center;"><!-- IF leader.S_GROUP_DEFAULT -->{L_YES}<!-- ELSE -->{L_NO}<!-- ENDIF --></td>
|
||||
<td style="text-align: center;">{leader.JOINED}</td>
|
||||
<td style="text-align: center;">{leader.USER_POSTS}</td>
|
||||
<td style="text-align: center;"><input type="checkbox" class="radio" name="mark[]" value="{leader.USER_ID}" /></td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr>
|
||||
<td colspan="5" style="text-align: center;">{L_GROUPS_NO_MODS}</td>
|
||||
</tr>
|
||||
<!-- END leader -->
|
||||
<tr>
|
||||
<td class="row3" colspan="5"><strong>{L_GROUP_APPROVED}</strong></td>
|
||||
</tr>
|
||||
<!-- BEGIN member -->
|
||||
<!-- IF member.S_PENDING -->
|
||||
<tr>
|
||||
<td class="row3" colspan="5"><strong>{L_GROUP_PENDING}</strong></td>
|
||||
</tr>
|
||||
<!-- ELSE -->
|
||||
<tr>
|
||||
<td><!-- IF member.USERNAME_COLOUR --><a href="{member.U_USER_EDIT}" style="color: #{member.USERNAME_COLOUR};" class="username-coloured">{member.USERNAME}</a><!-- ELSE --><a href="{member.U_USER_EDIT}">{member.USERNAME}</a><!-- ENDIF --></td>
|
||||
<td style="text-align: center;"><!-- IF member.S_GROUP_DEFAULT -->{L_YES}<!-- ELSE -->{L_NO}<!-- ENDIF --></td>
|
||||
<td style="text-align: center;">{member.JOINED}</td>
|
||||
<td style="text-align: center;">{member.USER_POSTS}</td>
|
||||
<td style="text-align: center;"><input type="checkbox" class="radio" name="mark[]" value="{member.USER_ID}" /></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- BEGINELSE -->
|
||||
<tr>
|
||||
<td colspan="5" style="text-align: center;">{L_GROUPS_NO_MEMBERS}</td>
|
||||
</tr>
|
||||
<!-- END member -->
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="pagination">
|
||||
<!-- IF .pagination -->
|
||||
<!-- INCLUDE pagination.html -->
|
||||
<!-- ENDIF -->
|
||||
</div>
|
||||
|
||||
<fieldset class="quick">
|
||||
<select name="action"><option class="sep" value="">{L_SELECT_OPTION}</option>{S_ACTION_OPTIONS}</select>
|
||||
<input class="button2" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
<p class="small"><a href="#" onclick="marklist('list', 'mark', true); return false;">{L_MARK_ALL}</a> • <a href="#" onclick="marklist('list', 'mark', false); return false;">{L_UNMARK_ALL}</a></p>
|
||||
</fieldset>
|
||||
|
||||
<h1>{L_ADD_USERS}</h1>
|
||||
|
||||
<p>{L_ADD_USERS_EXPLAIN}</p>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_ADD_USERS}</legend>
|
||||
<dl>
|
||||
<dt><label for="leader">{L_USER_GROUP_LEADER}{L_COLON}</label></dt>
|
||||
<dd><label><input name="leader" type="radio" class="radio" value="1" /> {L_YES}</label>
|
||||
<label><input name="leader" type="radio" class="radio" id="leader" value="0" checked="checked" /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="default">{L_USER_GROUP_DEFAULT}{L_COLON}</label><br /><span>{L_USER_GROUP_DEFAULT_EXPLAIN}</span></dt>
|
||||
<dd><label><input name="default" type="radio" class="radio" value="1" /> {L_YES}</label>
|
||||
<label><input name="default" type="radio" class="radio" id="default" value="0" checked="checked" /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="usernames">{L_USERNAME}{L_COLON}</label><br /><span>{L_USERNAMES_EXPLAIN}</span></dt>
|
||||
<dd><textarea id="usernames" name="usernames" cols="40" rows="5"></textarea></dd>
|
||||
<dd><!-- EVENT acp_groups_find_username_prepend -->[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]<!-- EVENT acp_groups_find_username_append --></dd>
|
||||
</dl>
|
||||
|
||||
<p class="quick">
|
||||
<input class="button2" type="submit" name="addusers" value="{L_SUBMIT}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSE -->
|
||||
|
||||
<h1>{L_ACP_GROUPS_MANAGE}</h1>
|
||||
|
||||
<p>{L_ACP_GROUPS_MANAGE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<h1>{L_USER_DEF_GROUPS}</h1>
|
||||
|
||||
<p>{L_USER_DEF_GROUPS_EXPLAIN}</p>
|
||||
|
||||
<form id="acp_groups" method="post" action="{U_ACTION}">
|
||||
|
||||
<!-- EVENT acp_groups_manage_before -->
|
||||
<table class="table1">
|
||||
<col class="col1" /><col class="col1" /><col class="col1" /><col class="col2" /><col class="col2" /><col class="col2" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50%">{L_GROUP}</th>
|
||||
<th>{L_TOTAL_MEMBERS}</th>
|
||||
<th>{L_PENDING_MEMBERS}</th>
|
||||
<th colspan="2">{L_OPTIONS}</th>
|
||||
<th>{L_ACTION}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN groups -->
|
||||
<!-- IF groups.S_SPECIAL -->
|
||||
<!-- IF groups.S_FIRST_ROW -->
|
||||
<tr>
|
||||
<td colspan="6" class="row3">{L_NO_GROUPS_CREATED}</td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- EVENT acp_groups_manage_after -->
|
||||
|
||||
<fieldset class="quick">
|
||||
<!-- IF S_GROUP_ADD -->
|
||||
{L_CREATE_GROUP}{L_COLON} <input type="text" name="group_name" value="" /> <input class="button2" type="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input type="hidden" name="add" value="1" />
|
||||
<!-- ENDIF -->
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<h1>{L_SPECIAL_GROUPS}</h1>
|
||||
|
||||
<p>{L_SPECIAL_GROUPS_EXPLAIN}</p>
|
||||
|
||||
<table class="table1">
|
||||
<col class="col1" /><col class="col1" /><col class="col1" /><col class="col2" /><col class="col2" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50%">{L_GROUP}</th>
|
||||
<th>{L_TOTAL_MEMBERS}</th>
|
||||
<th>{L_PENDING_MEMBERS}</th>
|
||||
<th colspan="2">{L_OPTIONS}</th>
|
||||
<th>{L_ACTION}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- ELSE -->
|
||||
<tr>
|
||||
<td><strong<!-- IF groups.GROUP_COLOR --> style="color: #{groups.GROUP_COLOR}"<!-- ENDIF -->>{groups.GROUP_NAME}</strong></td>
|
||||
<td style="text-align: center;">{groups.TOTAL_MEMBERS}</td>
|
||||
<td style="text-align: center;">{groups.PENDING_MEMBERS}</td>
|
||||
<td style="text-align: center;"><a href="{groups.U_EDIT}">{L_SETTINGS}</a></td>
|
||||
<td style="text-align: center;"><a href="{groups.U_LIST}">{L_MEMBERS}</a></td>
|
||||
<td style="text-align: center;"><!-- IF not groups.S_GROUP_SPECIAL and groups.U_DELETE --><a href="{groups.U_DELETE}" data-ajax="row_delete">{L_DELETE}</a><!-- ELSE -->{L_DELETE}<!-- ENDIF --></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- END groups -->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
67
install/update/new/adm/style/acp_help_phpbb.html
Normal file
@@ -0,0 +1,67 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<h1>{L_ACP_HELP_PHPBB}</h1>
|
||||
|
||||
<form id="acp_help_phpbb" method="post" action="{U_ACTION}" data-ajax-action="{U_COLLECT_STATS}">
|
||||
<div class="send-stats-row">
|
||||
<!-- EVENT acp_help_phpbb_stats_before -->
|
||||
<div class="send-stats-tile">
|
||||
<h2><i class="icon fa-bar-chart"></i>{L_SEND_STATISTICS}</h2>
|
||||
<p>{L_EXPLAIN_SEND_STATISTICS}</p>
|
||||
<div class="send-stats-row">
|
||||
<div class="send-stats-data-row send-stats-data-only-row">
|
||||
<a id="trigger-configlist" data-ajax="toggle_link" data-overlay="false" data-toggle-text="{L_HIDE_STATISTICS}"><span>{L_SHOW_STATISTICS}</span><i class="icon fa-angle-down"></i></a>
|
||||
</div>
|
||||
<div class="send-stats-data-row">
|
||||
<div class="configlist" id="configlist">
|
||||
<!-- BEGIN providers -->
|
||||
<fieldset>
|
||||
<legend>{providers.NAME}</legend>
|
||||
<!-- BEGIN values -->
|
||||
<dl>
|
||||
<dt>{providers.values.KEY}</dt>
|
||||
<dd>{providers.values.VALUE}</dd>
|
||||
</dl>
|
||||
<!-- END values -->
|
||||
</fieldset>
|
||||
<!-- END providers -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<dl class="send-stats-settings">
|
||||
<dt>
|
||||
<input name="help_send_statistics" id="help_send_statistics" type="checkbox"<!-- IF S_COLLECT_STATS --> checked="checked"<!-- ENDIF --> />
|
||||
<label for="help_send_statistics"></label>
|
||||
</dt>
|
||||
<dd>{L_SEND_STATISTICS_LONG}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<script>
|
||||
var statsData = {{ S_STATS_DATA }};
|
||||
</script>
|
||||
<!-- EVENT acp_help_phpbb_stats_after -->
|
||||
<fieldset>
|
||||
<p class="submit-buttons">
|
||||
<input type="hidden" name="help_send_statistics_time" value="{COLLECT_STATS_TIME}" />
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</div>
|
||||
</form>
|
||||
<form action="{U_COLLECT_STATS}" method="post" target="questionaire_result" id="questionnaire-form">
|
||||
<fieldset>
|
||||
<p class="submit-buttons">
|
||||
{% for providers in providers %}
|
||||
{% for values in providers.values %}
|
||||
<input type="hidden" name="{{ providers.NAME }}[{{ values.KEY }}]" value="{{ values.VALUE }}" />
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
<input class="button1" type="submit" id="submit_stats" name="submit" value="{L_SEND_STATISTICS}" />
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
282
install/update/new/adm/style/acp_icons.html
Normal file
@@ -0,0 +1,282 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF S_EDIT -->
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
<!-- IF S_ADD_CODE -->
|
||||
|
||||
var smiley = Array();
|
||||
<!-- BEGIN smile -->
|
||||
smiley['{smile.SMILEY_URL}'] = Array();
|
||||
smiley['{smile.SMILEY_URL}']['code'] = '{smile.CODE}';
|
||||
smiley['{smile.SMILEY_URL}']['emotion'] = '{smile.EMOTION}';
|
||||
smiley['{smile.SMILEY_URL}']['width'] = {smile.WIDTH};
|
||||
smiley['{smile.SMILEY_URL}']['height'] = {smile.HEIGHT};
|
||||
smiley['{smile.SMILEY_URL}']['order'] = {smile.ORDER};
|
||||
<!-- END smile -->
|
||||
|
||||
function update_image(newimage)
|
||||
{
|
||||
var use_element = smiley[newimage];
|
||||
|
||||
document.getElementById('add_image_src').src = '{ROOT_PATH}{IMG_PATH}/' + encodeURI(newimage);
|
||||
document.getElementById('add_code').value = use_element['code'];
|
||||
document.getElementById('add_emotion').value = use_element['emotion'];
|
||||
document.getElementById('add_width').value = use_element['width'];
|
||||
document.getElementById('add_height').value = use_element['height'];
|
||||
|
||||
element = document.getElementById('add_order');
|
||||
for (var i = 0; i < element.length; i++)
|
||||
{
|
||||
if (element.options[i].value == use_element['order'])
|
||||
{
|
||||
document.getElementById('add_order').options.selectedIndex = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
|
||||
function toggle_select(icon, display, select)
|
||||
{
|
||||
var disp = document.getElementById('order_disp_' + select);
|
||||
var nodisp = document.getElementById('order_no_disp_' + select);
|
||||
disp.disabled = !display;
|
||||
nodisp.disabled = display;
|
||||
if (display)
|
||||
{
|
||||
document.getElementById('order_' + select).selectedIndex = 0;
|
||||
nodisp.className = 'disabled-options';
|
||||
disp.className = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById('order_' + select).selectedIndex = {S_ORDER_LIST_DISPLAY_COUNT};
|
||||
disp.className = 'disabled-options';
|
||||
nodisp.className = '';
|
||||
}
|
||||
}
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_EXPLAIN}</p>
|
||||
|
||||
<form id="acp_icons" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset class="tabulated">
|
||||
<legend>{L_TITLE}</legend>
|
||||
|
||||
<table class="table1 zebra-table" id="smilies">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="{COLSPAN}">{L_CONFIG}</th>
|
||||
</tr>
|
||||
<!-- IF .items or S_ADD_CODE -->
|
||||
<tr class="row3">
|
||||
<td>{L_URL}</td>
|
||||
<td>{L_LOCATION}</td>
|
||||
<!-- IF S_SMILIES -->
|
||||
<td>{L_SMILIES_CODE}</td>
|
||||
<td>{L_SMILIES_EMOTION}</td>
|
||||
<!-- ENDIF -->
|
||||
<td>{L_WIDTH}</td>
|
||||
<td>{L_HEIGHT}</td>
|
||||
<!-- IF not S_SMILIES -->
|
||||
<td>{L_ALT_TEXT}</td>
|
||||
<!-- ENDIF -->
|
||||
<td>{L_DISPLAY_ON_POSTING}</td>
|
||||
<!-- IF ID or S_ADD -->
|
||||
<td>{L_ORDER}</td>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_ADD -->
|
||||
<td>{L_ADD} <a href="#" onclick="marklist('smilies', 'add_img', true); return false;">({L_MARK_ALL})</a></td>
|
||||
<!-- ENDIF -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN items -->
|
||||
<tr>
|
||||
|
||||
<td style="text-align: center;"><img src="{items.IMG_SRC}" alt="{items.TEXT_ALT}" title="{items.TEXT_ALT}" /><input type="hidden" name="image[{items.IMG}]" value="1" /></td>
|
||||
<td style="vertical-align: top;">[{items.IMG}]</td>
|
||||
<!-- IF S_SMILIES -->
|
||||
<td><input class="text post" type="text" name="code[{items.IMG}]" value="{items.CODE}" size="10" maxlength="50" /></td>
|
||||
<td><input class="text post" type="text" name="emotion[{items.IMG}]" value="{items.EMOTION}" size="10" maxlength="50" /></td>
|
||||
<!-- ENDIF -->
|
||||
<td><input class="text post" type="number" min="0" max="999" name="width[{items.IMG}]" value="{items.WIDTH}" /></td>
|
||||
<td><input class="text post" type="number" min="0" max="999" name="height[{items.IMG}]" value="{items.HEIGHT}" /></td>
|
||||
<!-- IF not S_SMILIES -->
|
||||
<td><input class="text post" type="text" name="alt[{items.IMG}]" value="{items.ALT}" size="10" maxlength="50" /></td>
|
||||
<!-- ENDIF -->
|
||||
<td>
|
||||
<input type="checkbox" class="radio" name="display_on_posting[{items.IMG}]"{items.POSTING_CHECKED} onclick="toggle_select('{items.A_IMG}', this.checked, '{items.S_ROW_COUNT}');"/>
|
||||
<!-- IF items.S_ID -->
|
||||
<input type="hidden" name="id[{items.IMG}]" value="{items.ID}" />
|
||||
<!-- ENDIF -->
|
||||
</td>
|
||||
<!-- IF ID or S_ADD -->
|
||||
<td><select id="order_{items.S_ROW_COUNT}" name="order[{items.IMG}]">
|
||||
<optgroup id="order_disp_{items.S_ROW_COUNT}" label="{L_DISPLAY_POSTING}" <!-- IF not items.POSTING_CHECKED -->disabled="disabled" class="disabled-options" <!-- ENDIF -->>{S_ORDER_LIST_DISPLAY}</optgroup>
|
||||
<optgroup id="order_no_disp_{items.S_ROW_COUNT}" label="{L_DISPLAY_POSTING_NO}" <!-- IF items.POSTING_CHECKED -->disabled="disabled" class="disabled-options" <!-- ENDIF -->>{S_ORDER_LIST_UNDISPLAY}</optgroup>
|
||||
</select></td>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_ADD -->
|
||||
<td><input type="checkbox" class="radio" name="add_img[{items.IMG}]" value="1" /></td>
|
||||
<!-- ENDIF -->
|
||||
</tr>
|
||||
<!-- END items -->
|
||||
<!-- IF S_ADD_CODE -->
|
||||
<tr>
|
||||
<th colspan="{COLSPAN}">{L_ADD_SMILEY_CODE}</th>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<td style="text-align: center;"><select name="add_image" id="add_image" onchange="update_image(this.options[selectedIndex].value);">{S_IMG_OPTIONS}</select></td>
|
||||
<td style="vertical-align: top;"><img src="{IMG_SRC}" id="add_image_src" alt="" title="" /></td>
|
||||
<td><input class="text post" type="text" name="add_code" id="add_code" value="{CODE}" size="10" maxlength="50" /></td>
|
||||
<td><input class="text post" type="text" name="add_emotion" id="add_emotion" value="{EMOTION}" size="10" maxlength="50" /></td>
|
||||
<td><input class="text post" type="number" min="0" max="999" name="add_width" id="add_width" value="{WIDTH}" /></td>
|
||||
<td><input class="text post" type="number" min="0" max="999" name="add_height" id="add_height" value="{HEIGHT}" /></td>
|
||||
<td><input type="checkbox" class="radio" name="add_display_on_posting" checked="checked" onclick="toggle_select('add', this.checked, 'add_order');"/></td>
|
||||
<td><select id="order_add_order" name="add_order">
|
||||
<optgroup id="order_disp_add_order" label="{L_DISPLAY_POSTING}">{S_ADD_ORDER_LIST_DISPLAY}</optgroup>
|
||||
<optgroup id="order_no_disp_add_order" label="{L_DISPLAY_POSTING_NO}" disabled="disabled" class="disabled-options" >{S_ADD_ORDER_LIST_UNDISPLAY}</optgroup>
|
||||
</select></td>
|
||||
<td><input type="checkbox" class="radio" name="add_additional_code" value="1" /></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- ELSE -->
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="row3">
|
||||
<td colspan="{COLSPAN}">{L_NO_ICONS}</td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSEIF S_CHOOSE_PAK -->
|
||||
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_EXPLAIN}</p>
|
||||
|
||||
<form id="acp_icons" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_IMPORT}</legend>
|
||||
|
||||
<!-- IF not S_PAK_OPTIONS -->
|
||||
<p>{L_NO_PAK_OPTIONS}</p>
|
||||
|
||||
<!-- ELSE -->
|
||||
<dl>
|
||||
<dt><label for="pak">{L_SELECT_PACKAGE}</label></dt>
|
||||
<dd><select id="pak" name="pak">{S_PAK_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<dt><label for="current">{L_CURRENT}</label><br /><span>{L_CURRENT_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" id="current" name="current" value="keep" checked="checked" /> {L_KEEP_ALL}</label>
|
||||
<label><input type="radio" class="radio" name="current" value="replace" /> {L_REPLACE_MATCHES}</label>
|
||||
<label><input type="radio" class="radio" name="current" value="delete" /> {L_DELETE_ALL}</label></dd>
|
||||
</dl>
|
||||
|
||||
<p class="quick">
|
||||
<input class="button1" type="submit" id="import" name="import" value="{L_IMPORT_SUBMIT}" />
|
||||
</p>
|
||||
<!-- ENDIF -->
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSE -->
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_EXPLAIN}</p>
|
||||
|
||||
<!-- IF NOTICE -->
|
||||
<div class="successbox">
|
||||
<h3>{L_NOTIFY}</h3>
|
||||
<p>{NOTICE}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<form id="acp_icons" method="post" action="{U_ACTION}">
|
||||
|
||||
<div style="text-align: right;"><a href="{U_IMPORT}">{L_IMPORT}</a> | <a href="{U_EXPORT}">{L_EXPORT}</a></div>
|
||||
|
||||
<fieldset class="tabulated">
|
||||
|
||||
<legend>{L_TITLE}</legend>
|
||||
|
||||
<table class="table1 zebra-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_TITLE}</th>
|
||||
<!-- IF S_SMILIES -->
|
||||
<th>{L_CODE}</th>
|
||||
<th>{L_EMOTION}</th>
|
||||
<!-- ENDIF -->
|
||||
<th>{L_OPTIONS}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN items -->
|
||||
<!-- IF items.S_SPACER -->
|
||||
<tr>
|
||||
<td class="row3" colspan="{COLSPAN}" style="text-align: center;">{L_NOT_DISPLAYED}</td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<tr>
|
||||
<td style="width: 85%; text-align: center;"><img src="{items.IMG_SRC}" width="{items.WIDTH}" height="{items.HEIGHT}" alt="{items.ALT_TEXT}" title="{items.ALT_TEXT}" /></td>
|
||||
<!-- IF S_SMILIES -->
|
||||
<td style="text-align: center;">{items.CODE}</td>
|
||||
<td style="text-align: center;">{items.EMOTION}</td>
|
||||
<!-- ENDIF -->
|
||||
<td class="actions" style="text-align: right;">
|
||||
<span class="up-disabled" style="display:none;">{ICON_MOVE_UP_DISABLED}</span>
|
||||
<span class="up"><a href="{items.U_MOVE_UP}" data-ajax="row_up">{ICON_MOVE_UP}</a></span>
|
||||
<span class="down-disabled" style="display:none;">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||
<span class="down"><a href="{items.U_MOVE_DOWN}" data-ajax="row_down">{ICON_MOVE_DOWN}</a></span>
|
||||
<a href="{items.U_EDIT}">{ICON_EDIT}</a> <a href="{items.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr class="row3">
|
||||
<td colspan="{COLSPAN}">{L_ACP_NO_ITEMS}</td>
|
||||
</tr>
|
||||
<!-- END items -->
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="pagination">
|
||||
<!-- IF .pagination -->
|
||||
<!-- INCLUDE pagination.html -->
|
||||
<!-- ENDIF -->
|
||||
</div>
|
||||
<p class="quick">
|
||||
<input class="button2" name="add" type="submit" value="{L_ICON_ADD}" /> <input class="button2" type="submit" name="edit" value="{L_ICON_EDIT}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
116
install/update/new/adm/style/acp_language.html
Normal file
@@ -0,0 +1,116 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF S_DETAILS -->
|
||||
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<h1>{L_LANGUAGE_PACK_DETAILS}</h1>
|
||||
|
||||
<form id="details" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{LANG_LOCAL_NAME}</legend>
|
||||
<dl>
|
||||
<dt><label for="lang_english_name">{L_LANG_ENGLISH_NAME}{L_COLON}</label></dt>
|
||||
<dd><input type="text" id="lang_english_name" name="lang_english_name" value="{LANG_ENGLISH_NAME}" maxlength="100" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="lang_local_name">{L_LANG_LOCAL_NAME}{L_COLON}</label></dt>
|
||||
<dd><input type="text" id="lang_local_name" name="lang_local_name" value="{LANG_LOCAL_NAME}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_LANG_ISO_CODE}{L_COLON}</label></dt>
|
||||
<dd><strong>{LANG_ISO}</strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="lang_author">{L_LANG_AUTHOR}{L_COLON}</label></dt>
|
||||
<dd><input type="text" id="lang_author" name="lang_author" value="{LANG_AUTHOR}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
|
||||
<p class="quick" style="margin-top: -15px;">
|
||||
<input type="submit" name="update_details" class="button2" value="{L_SUBMIT}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- IF .missing_files -->
|
||||
<h3 class="error">{L_MISSING_FILES}</h3>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_MISSING_LANG_FILES}</legend>
|
||||
<!-- BEGIN missing_files -->
|
||||
» {missing_files.FILE_NAME}<br />
|
||||
<!-- END missing_files -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF .missing_varfile -->
|
||||
<h3 class="error">{L_MISSING_VARS_EXPLAIN}</h3>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_MISSING_LANG_VARIABLES}</legend>
|
||||
<!-- BEGIN missing_varfile -->
|
||||
<dl>
|
||||
<dt><label>{missing_varfile.FILE_NAME}</label></dt>
|
||||
<!-- BEGIN variable -->
|
||||
<dd>{missing_varfile.variable.VAR_NAME}</dd>
|
||||
<!-- END variable -->
|
||||
</dl>
|
||||
<!-- END missing_varfile -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<!-- ELSE -->
|
||||
|
||||
<h1>{L_ACP_LANGUAGE_PACKS}</h1>
|
||||
|
||||
<p>{L_ACP_LANGUAGE_PACKS_EXPLAIN}</p>
|
||||
|
||||
<fieldset class="quick">
|
||||
<span class="small"><a href="https://www.phpbb.com/go/customise/language-packs/3.3" target="_blank">{L_BROWSE_LANGUAGE_PACKS_DATABASE}</a></span>
|
||||
</fieldset>
|
||||
|
||||
<table class="table1 zebra-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_LANGUAGE_PACK_NAME}</th>
|
||||
<th>{L_LANGUAGE_PACK_LOCALNAME}</th>
|
||||
<th>{L_LANGUAGE_PACK_ISO}</th>
|
||||
<th>{L_LANGUAGE_PACK_USED_BY}</th>
|
||||
<th>{L_OPTIONS}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="row3" colspan="5"><strong>{L_INSTALLED_LANGUAGE_PACKS}</strong></td>
|
||||
</tr>
|
||||
<!-- BEGIN lang -->
|
||||
<tr>
|
||||
<td><a href="{lang.U_DETAILS}">{lang.ENGLISH_NAME}</a> {lang.TAG}</td>
|
||||
<td>{lang.LOCAL_NAME}</td>
|
||||
<td style="text-align: center;"><strong>{lang.ISO}</strong></td>
|
||||
<td style="text-align: center;">{lang.USED_BY}</td>
|
||||
<td style="text-align: center;"><a href="{lang.U_DELETE}">{L_DELETE}</a></td>
|
||||
</tr>
|
||||
<!-- END lang -->
|
||||
<!-- IF .notinst -->
|
||||
<tr>
|
||||
<td class="row3" colspan="5"><strong>{L_UNINSTALLED_LANGUAGE_PACKS}</strong></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- BEGIN notinst -->
|
||||
<tr>
|
||||
<td>{notinst.NAME}</td>
|
||||
<td>{notinst.LOCAL_NAME}</td>
|
||||
<td style="text-align: center;"><strong>{notinst.ISO}</strong></td>
|
||||
<td colspan="2" style="text-align: center;"><a href="{notinst.U_INSTALL}">{L_INSTALL}</a></td>
|
||||
</tr>
|
||||
<!-- END notinst -->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
339
install/update/new/adm/style/acp_main.html
Normal file
@@ -0,0 +1,339 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF S_RESTORE_PERMISSIONS -->
|
||||
|
||||
<h1>{L_PERMISSIONS_TRANSFERRED}</h1>
|
||||
|
||||
<p>{L_PERMISSIONS_TRANSFERRED_EXPLAIN}</p>
|
||||
|
||||
<!-- ELSE -->
|
||||
|
||||
<h1>{L_WELCOME_PHPBB}</h1>
|
||||
|
||||
<p>{L_ADMIN_INTRO}</p>
|
||||
|
||||
<!-- IF S_UPDATE_INCOMPLETE -->
|
||||
<div class="errorbox">
|
||||
<p>{L_UPDATE_INCOMPLETE} <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
||||
</div>
|
||||
<!-- ELSEIF S_VERSIONCHECK_FAIL -->
|
||||
<div class="errorbox notice">
|
||||
<p>{L_VERSIONCHECK_FAIL}</p>
|
||||
<p>{VERSIONCHECK_FAIL_REASON}</p>
|
||||
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> · <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
||||
</div>
|
||||
<!-- ELSEIF not S_VERSION_UP_TO_DATE -->
|
||||
<div class="errorbox">
|
||||
<p>{L_VERSION_NOT_UP_TO_DATE_TITLE}</p>
|
||||
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> · <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_VERSION_UPGRADEABLE -->
|
||||
<div class="errorbox notice">
|
||||
<p>{UPGRADE_INSTRUCTIONS}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_SEARCH_INDEX_MISSING -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{L_NO_SEARCH_INDEX}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_REMOVE_INSTALL -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{L_REMOVE_INSTALL}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_MBSTRING_LOADED -->
|
||||
<!-- IF S_MBSTRING_FUNC_OVERLOAD_FAIL -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_ERROR_MBSTRING_FUNC_OVERLOAD}</h3>
|
||||
<p>{L_ERROR_MBSTRING_FUNC_OVERLOAD_EXPLAIN}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_MBSTRING_ENCODING_TRANSLATION_FAIL -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_ERROR_MBSTRING_ENCODING_TRANSLATION}</h3>
|
||||
<p>{L_ERROR_MBSTRING_ENCODING_TRANSLATION_EXPLAIN}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_MBSTRING_HTTP_INPUT_FAIL -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_ERROR_MBSTRING_HTTP_INPUT}</h3>
|
||||
<p>{L_ERROR_MBSTRING_HTTP_INPUT_EXPLAIN}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_MBSTRING_HTTP_OUTPUT_FAIL -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_ERROR_MBSTRING_HTTP_OUTPUT}</h3>
|
||||
<p>{L_ERROR_MBSTRING_HTTP_OUTPUT_EXPLAIN}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_WRITABLE_CONFIG -->
|
||||
<div class="errorbox notice">
|
||||
<p>{L_WRITABLE_CONFIG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_PHP_VERSION_OLD -->
|
||||
<div class="errorbox notice">
|
||||
<p>{L_PHP_VERSION_OLD}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- EVENT acp_main_notice_after -->
|
||||
|
||||
<div class="lside">
|
||||
<table class="table2 zebra-table no-header" data-no-responsive-header="true">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ lang('STATISTIC') }}</th>
|
||||
<th>{{ lang('VALUE') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('BOARD_STARTED') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ START_DATE }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('AVATAR_DIR_SIZE') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ AVATAR_DIR_SIZE }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('DATABASE_SIZE') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ DBSIZE }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('UPLOAD_DIR_SIZE') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ UPLOAD_DIR_SIZE }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('DATABASE_SERVER_INFO') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ DATABASE_INFO }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('GZIP_COMPRESSION') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ GZIP_COMPRESSION }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('PHP_VERSION') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ PHP_VERSION_INFO }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
{% if S_TOTAL_ORPHAN %}
|
||||
<td class="tabled">{{ lang('NUMBER_ORPHAN') ~ lang('COLON') }}</td>
|
||||
<td class="tabled">
|
||||
{% if TOTAL_ORPHAN > 0 %}
|
||||
<a href="{{ U_ATTACH_ORPHAN }}" title="{{ lang('MORE_INFORMATION') }}"><strong>{{ TOTAL_ORPHAN }}</strong></a>
|
||||
{% else %}
|
||||
<strong>{{ TOTAL_ORPHAN }}</strong>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% else %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% if S_VERSIONCHECK %}
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('BOARD_VERSION') ~ lang('COLON') }}</td>
|
||||
<td class="tabled">
|
||||
<strong><a href="{{ U_VERSIONCHECK }}" {% if S_VERSION_UP_TO_DATE %}style="color: #228822;" {% elseif not S_VERSIONCHECK_FAIL %}style="color: #BC2A4D;" {% endif %}title="{{ lang('MORE_INFORMATION') }}">{{ BOARD_VERSION }}</a></strong> [ <a href="{{ U_VERSIONCHECK_FORCE }}">{{ lang('VERSIONCHECK_FORCE_UPDATE') }}</a> ]
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table class="table2 zebra-table no-header" data-no-responsive-header="true">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ lang('STATISTIC') }}</th>
|
||||
<th>{{ lang('VALUE') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('NUMBER_POSTS') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ TOTAL_POSTS }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('POSTS_PER_DAY') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ POSTS_PER_DAY }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('NUMBER_TOPICS') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ TOTAL_TOPICS }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('TOPICS_PER_DAY') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ TOPICS_PER_DAY }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('NUMBER_USERS') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ TOTAL_USERS }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('USERS_PER_DAY') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ USERS_PER_DAY }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('NUMBER_FILES') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ TOTAL_FILES }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled">{{ lang('FILES_PER_DAY') ~ lang('COLON') }}</td>
|
||||
<td class="tabled"><strong>{{ FILES_PER_DAY }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tabled"> </td>
|
||||
<td class="tabled"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- IF S_ACTION_OPTIONS -->
|
||||
<fieldset>
|
||||
<legend>{L_STATISTIC_RESYNC_OPTIONS}</legend>
|
||||
|
||||
<form id="action_online_form" method="post" action="{U_ACTION}" data-ajax="true">
|
||||
<dl>
|
||||
<dt><label for="action_online">{L_RESET_ONLINE}</label><br /><span> </span></dt>
|
||||
<dd><input type="hidden" name="action" value="online" /><input class="button2" type="submit" id="action_online" name="action_online" value="{L_RUN}" /></dd>
|
||||
</dl>
|
||||
</form>
|
||||
|
||||
<form id="action_date_form" method="post" action="{U_ACTION}" data-ajax="true">
|
||||
<dl>
|
||||
<dt><label for="action_date">{L_RESET_DATE}</label><br /><span> </span></dt>
|
||||
<dd><input type="hidden" name="action" value="date" /><input class="button2" type="submit" id="action_date" name="action_date" value="{L_RUN}" /></dd>
|
||||
</dl>
|
||||
</form>
|
||||
|
||||
<form id="action_stats_form" method="post" action="{U_ACTION}">
|
||||
<dl>
|
||||
<dt><label for="action_stats">{L_RESYNC_STATS}</label><br /><span>{L_RESYNC_STATS_EXPLAIN}</span></dt>
|
||||
<dd><input type="hidden" name="action" value="stats" /><input class="button2" type="submit" id="action_stats" name="action_stats" value="{L_RUN}" /></dd>
|
||||
</dl>
|
||||
</form>
|
||||
|
||||
<form id="action_user_form" method="post" action="{U_ACTION}">
|
||||
<dl>
|
||||
<dt><label for="action_user">{L_RESYNC_POSTCOUNTS}</label><br /><span>{L_RESYNC_POSTCOUNTS_EXPLAIN}</span></dt>
|
||||
<dd><input type="hidden" name="action" value="user" /><input class="button2" type="submit" id="action_user" name="action_user" value="{L_RUN}" /></dd>
|
||||
</dl>
|
||||
</form>
|
||||
|
||||
<form id="action_db_track_form" method="post" action="{U_ACTION}">
|
||||
<dl>
|
||||
<dt><label for="action_db_track">{L_RESYNC_POST_MARKING}</label><br /><span>{L_RESYNC_POST_MARKING_EXPLAIN}</span></dt>
|
||||
<dd><input type="hidden" name="action" value="db_track" /><input class="button2" type="submit" id="action_db_track" name="action_db_track" value="{L_RUN}" /></dd>
|
||||
</dl>
|
||||
</form>
|
||||
|
||||
<!-- IF S_FOUNDER -->
|
||||
<form id="action_purge_sessions_form" method="post" action="{U_ACTION}" data-ajax="true">
|
||||
<dl>
|
||||
<dt><label for="action_purge_sessions">{L_PURGE_SESSIONS}</label><br /><span>{L_PURGE_SESSIONS_EXPLAIN}</span></dt>
|
||||
<dd><input type="hidden" name="action" value="purge_sessions" /><input class="button2" type="submit" id="action_purge_sessions" name="action_purge_sessions" value="{L_RUN}" /></dd>
|
||||
</dl>
|
||||
</form>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<form id="action_purge_cache_form" method="post" action="{U_ACTION}" data-ajax="true">
|
||||
<dl>
|
||||
<dt><label for="action_purge_cache">{L_PURGE_CACHE}</label><br /><span>{L_PURGE_CACHE_EXPLAIN}</span></dt>
|
||||
<dd><input type="hidden" name="action" value="purge_cache" /><input class="button2" type="submit" id="action_purge_cache" name="action_purge_cache" value="{L_RUN}" /></dd>
|
||||
</dl>
|
||||
</form>
|
||||
|
||||
<!-- EVENT acp_main_actions_append -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF .log -->
|
||||
<h2>{L_ADMIN_LOG}</h2>
|
||||
|
||||
<p>{L_ADMIN_LOG_INDEX_EXPLAIN}</p>
|
||||
|
||||
<div style="text-align: right;"><a href="{U_ADMIN_LOG}">» {L_VIEW_ADMIN_LOG}</a></div>
|
||||
|
||||
<table class="table1 zebra-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_USERNAME}</th>
|
||||
<th>{L_IP}</th>
|
||||
<th>{L_TIME}</th>
|
||||
<th>{L_ACTION}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN log -->
|
||||
<tr>
|
||||
<td>{log.USERNAME}</td>
|
||||
<td style="text-align: center;">{log.IP}</td>
|
||||
<td style="text-align: center;">{log.DATE}</td>
|
||||
<td>{log.ACTION}</td>
|
||||
</tr>
|
||||
<!-- END log -->
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_INACTIVE_USERS -->
|
||||
<h2>{L_INACTIVE_USERS}</h2>
|
||||
|
||||
<p>{L_INACTIVE_USERS_EXPLAIN_INDEX}</p>
|
||||
|
||||
<div style="text-align: right;"><a href="{U_INACTIVE_USERS}">» {L_VIEW_INACTIVE_USERS}</a></div>
|
||||
|
||||
<table class="table1 zebra-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_USERNAME}</th>
|
||||
<th>{L_JOINED}</th>
|
||||
<th>{L_INACTIVE_DATE}</th>
|
||||
<th>{L_LAST_VISIT}</th>
|
||||
<th>{L_INACTIVE_REASON}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN inactive -->
|
||||
<tr>
|
||||
<td style="vertical-align: top;">
|
||||
{inactive.USERNAME_FULL}
|
||||
<!-- IF inactive.POSTS --><br />{L_POSTS}{L_COLON} <strong>{inactive.POSTS}</strong> [<a href="{inactive.U_SEARCH_USER}">{L_SEARCH_USER_POSTS}</a>]<!-- ENDIF -->
|
||||
</td>
|
||||
<td style="vertical-align: top;">{inactive.JOINED}</td>
|
||||
<td style="vertical-align: top;">{inactive.INACTIVE_DATE}</td>
|
||||
<td style="vertical-align: top;">{inactive.LAST_VISIT}</td>
|
||||
<td style="vertical-align: top;">
|
||||
{inactive.REASON}
|
||||
<!-- IF inactive.REMINDED --><br />{inactive.REMINDED_EXPLAIN}<!-- ENDIF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr>
|
||||
<td colspan="5" style="text-align: center;">{L_NO_INACTIVE_USERS}</td>
|
||||
</tr>
|
||||
<!-- END inactive -->
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
203
install/update/new/adm/style/acp_modules.html
Normal file
@@ -0,0 +1,203 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF S_EDIT_MODULE -->
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
function display_options(value)
|
||||
{
|
||||
if (value == 'category')
|
||||
{
|
||||
phpbb.toggleDisplay('modoptions', -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
phpbb.toggleDisplay('modoptions', 1);
|
||||
}
|
||||
}
|
||||
|
||||
function display_modes(value)
|
||||
{
|
||||
// Find the old select tag
|
||||
var item = document.getElementById('module_mode');
|
||||
|
||||
// Create the new select tag
|
||||
var new_node = document.createElement('select');
|
||||
new_node.setAttribute('id', 'module_mode');
|
||||
new_node.setAttribute('name', 'module_mode');
|
||||
|
||||
// Substitute it for the old one
|
||||
item.parentNode.replaceChild(new_node, item);
|
||||
|
||||
// Reset the variable
|
||||
item = document.getElementById('module_mode');
|
||||
|
||||
var j = 0;
|
||||
<!-- BEGIN m_names -->
|
||||
|
||||
if (value == '{m_names.A_NAME}')
|
||||
{
|
||||
<!-- BEGIN modes -->
|
||||
item.options[j] = new Option('{m_names.modes.A_VALUE}');
|
||||
item.options[j].value = '{m_names.modes.A_OPTION}';
|
||||
j++;
|
||||
<!-- END modes -->
|
||||
}
|
||||
<!-- END m_names -->
|
||||
|
||||
// select first item
|
||||
item.options[0].selected = true;
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<h1>{L_TITLE} :: {MODULENAME}</h1>
|
||||
|
||||
<p>{L_EDIT_MODULE_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<form id="moduleedit" method="post" action="{U_EDIT_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_GENERAL_OPTIONS}</legend>
|
||||
<dl>
|
||||
<dt><label for="module_langname">{L_MODULE_LANGNAME}{L_COLON}</label><br />
|
||||
<span>{L_MODULE_LANGNAME_EXPLAIN}</span></dt>
|
||||
<dd><input name="module_langname" type="text" class="text medium" id="module_langname" value="{MODULE_LANGNAME}" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_type">{L_MODULE_TYPE}{L_COLON}</label></dt>
|
||||
<dd><select name="module_type" id="module_type" onchange="display_options(this.value);"><option value="category"<!-- IF S_IS_CAT --> selected="selected"<!-- ENDIF -->>{L_CATEGORY}</option><option value="module"<!-- IF not S_IS_CAT --> selected="selected"<!-- ENDIF -->>{L_MODULE}</option></select></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="parent_id">{L_PARENT}{L_COLON}</label></dt>
|
||||
<dd><select name="module_parent_id" id="parent_id">{S_CAT_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<hr />
|
||||
<dl>
|
||||
<dt><label for="module_enabled">{L_MODULE_ENABLED}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="module_enabled" id="module_enabled" value="1"<!-- IF MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="module_enabled" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<div id="modoptions"<!-- IF S_IS_CAT --> style="display: none;"<!-- ENDIF -->>
|
||||
<dl>
|
||||
<dt><label for="module_display">{L_MODULE_DISPLAYED}{L_COLON}</label><br /><span>{L_MODULE_DISPLAYED_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="module_display" id="module_display" value="1"<!-- IF MODULE_DISPLAY --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="module_display" value="0"<!-- IF not MODULE_DISPLAY --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_basename">{L_CHOOSE_MODULE}{L_COLON}</label><br />
|
||||
<span>{L_CHOOSE_MODULE_EXPLAIN}</span></dt>
|
||||
<dd><select name="module_basename" id="module_basename" onchange="display_modes(this.value);">{S_MODULE_NAMES}</select></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="module_mode">{L_CHOOSE_MODE}{L_COLON}</label><br />
|
||||
<span>{L_CHOOSE_MODE_EXPLAIN}</span></dt>
|
||||
<dd><select name="module_mode" id="module_mode">{S_MODULE_MODES}</select></dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input type="hidden" name="action" value="{ACTION}" />
|
||||
<input type="hidden" name="m" value="{MODULE_ID}" />
|
||||
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSE -->
|
||||
|
||||
<h1>{L_ACP_MODULE_MANAGEMENT}</h1>
|
||||
|
||||
<p>{L_ACP_MODULE_MANAGEMENT_EXPLAIN}</p>
|
||||
|
||||
<!-- IF S_ERROR -->
|
||||
<div class="errorbox">
|
||||
<h3>{L_WARNING}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<table class="table1">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="row3">{NAVIGATION}<!-- IF S_NO_MODULES --> [<a href="{U_EDIT}">{L_EDIT}</a> | <a href="{U_DELETE}">{L_DELETE}</a> | <!-- IF MODULE_ENABLED --><a href="{U_DISABLE}">{L_DISABLE}</a><!-- ELSE --><a href="{U_ENABLE}">{L_ENABLE}</a><!-- ENDIF -->]<!-- ENDIF --></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- IF .modules -->
|
||||
<table class="table1">
|
||||
<col class="row1" /><col class="row1" /><col class="row2" /><col class="row2" />
|
||||
<tbody>
|
||||
<!-- BEGIN modules -->
|
||||
<tr>
|
||||
<td style="width: 5%; text-align: center;">{modules.MODULE_IMAGE}</td>
|
||||
<td><a href="{modules.U_MODULE}">{modules.MODULE_TITLE}</a><!-- IF not modules.MODULE_DISPLAYED --> <span class="small">[{L_HIDDEN_MODULE}]</span><!-- ENDIF --></td>
|
||||
<td style="width: 15%; white-space: nowrap; text-align: center; vertical-align: middle;"> <!-- IF modules.MODULE_ENABLED --><a href="{modules.U_DISABLE}">{L_DISABLE}</a><!-- ELSE --><a href="{modules.U_ENABLE}">{L_ENABLE}</a><!-- ENDIF --> </td>
|
||||
<td class="actions">
|
||||
<span class="up-disabled" style="display:none;">{ICON_MOVE_UP_DISABLED}</span>
|
||||
<span class="up"><a href="{modules.U_MOVE_UP}" data-ajax="row_up">{ICON_MOVE_UP}</a></span>
|
||||
<span class="down-disabled" style="display:none;">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||
<span class="down"><a href="{modules.U_MOVE_DOWN}" data-ajax="row_down">{ICON_MOVE_DOWN}</a></span>
|
||||
<a href="{modules.U_EDIT}">{ICON_EDIT}</a>
|
||||
<a href="{modules.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END modules -->
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<div class="clearfix"> </div>
|
||||
|
||||
<form id="quick" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset class="quick" style="float: {S_CONTENT_FLOW_END};">
|
||||
<input type="hidden" name="action" value="quickadd" />
|
||||
|
||||
<select name="quick_install">{S_INSTALL_OPTIONS}</select>
|
||||
<input class="button2" name="quickadd" type="submit" value="{L_ADD_MODULE}" />
|
||||
</fieldset>
|
||||
|
||||
</form>
|
||||
|
||||
<form id="module" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset class="quick" style="float: {S_CONTENT_FLOW_BEGIN};">
|
||||
<input type="hidden" name="action" value="add" />
|
||||
<input type="hidden" name="module_parent_id" value="{PARENT_ID}" />
|
||||
|
||||
<input type="text" name="module_langname" maxlength="255" />
|
||||
<input class="button2" name="addmodule" type="submit" value="{L_CREATE_MODULE}" />
|
||||
</fieldset>
|
||||
|
||||
</form>
|
||||
|
||||
<div class="clearfix"> </div><br style="clear: both;" />
|
||||
|
||||
<form id="mselect" method="post" action="{U_SEL_ACTION}">
|
||||
<fieldset class="quick">
|
||||
{L_SELECT_MODULE}{L_COLON} <select name="parent_id" onchange="if(this.options[this.selectedIndex].value != -1){ this.form.submit(); }">{MODULE_BOX}</select>
|
||||
|
||||
<input class="button2" type="submit" value="{L_GO}" />
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
191
install/update/new/adm/style/acp_permission_roles.html
Normal file
@@ -0,0 +1,191 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF S_EDIT -->
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
var active_pmask = '0';
|
||||
var active_fmask = '0';
|
||||
var active_cat = '0';
|
||||
|
||||
var id = '000';
|
||||
|
||||
var role_options = new Array();
|
||||
|
||||
<!-- IF S_ROLE_JS_ARRAY -->
|
||||
{S_ROLE_JS_ARRAY}
|
||||
<!-- ENDIF -->
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<script src="style/permissions.js"></script>
|
||||
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_EXPLAIN}</p>
|
||||
|
||||
<br />
|
||||
<a href="#acl">» {L_SET_ROLE_PERMISSIONS}</a>
|
||||
|
||||
<form id="acp_roles" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_ROLE_DETAILS}</legend>
|
||||
<dl>
|
||||
<dt><label for="role_name">{L_ROLE_NAME}{L_COLON}</label></dt>
|
||||
<dd><input name="role_name" type="text" id="role_name" value="{ROLE_NAME}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="role_description">{L_ROLE_DESCRIPTION}{L_COLON}</label><br /><span>{L_ROLE_DESCRIPTION_EXPLAIN}</span></dt>
|
||||
<dd><textarea id="role_description" name="role_description" rows="3" cols="45">{ROLE_DESCRIPTION}</textarea></dd>
|
||||
</dl>
|
||||
|
||||
<p class="quick">
|
||||
<input type="submit" class="button1" name="submit" value="{L_SUBMIT}" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</fieldset>
|
||||
|
||||
<!-- IF S_DISPLAY_ROLE_MASK -->
|
||||
|
||||
<h1>{L_ROLE_ASSIGNED_TO}</h1>
|
||||
|
||||
<!-- INCLUDE permission_roles_mask.html -->
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<p>
|
||||
|
||||
<a id="acl"></a>
|
||||
|
||||
<a href="#maincontent">» {L_BACK_TO_TOP}</a><br />
|
||||
<br /><br />
|
||||
|
||||
</p>
|
||||
|
||||
<h1>{L_ACL_TYPE}</h1>
|
||||
|
||||
<fieldset class="perm nolegend">
|
||||
|
||||
<div id="advanced00">
|
||||
<div class="permissions-category">
|
||||
<ul>
|
||||
<!-- BEGIN auth -->
|
||||
<!-- IF auth.S_YES -->
|
||||
<li class="permissions-preset-yes<!-- IF auth.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab00{auth.S_ROW_COUNT}">
|
||||
<!-- ELSEIF auth.S_NEVER -->
|
||||
<li class="permissions-preset-never<!-- IF auth.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab00{auth.S_ROW_COUNT}">
|
||||
<!-- ELSEIF auth.S_NO -->
|
||||
<li class="permissions-preset-no<!-- IF auth.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab00{auth.S_ROW_COUNT}">
|
||||
<!-- ELSE -->
|
||||
<li class="permissions-preset-custom<!-- IF auth.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab00{auth.S_ROW_COUNT}">
|
||||
<!-- ENDIF -->
|
||||
<a href="#" onclick="swap_options('0','0','{auth.S_ROW_COUNT}'); return false;"><span class="tabbg"><span class="colour"></span>{auth.CAT_NAME}</span></a></li>
|
||||
<!-- END auth -->
|
||||
</ul>
|
||||
</div>
|
||||
<!-- BEGIN auth -->
|
||||
<div class="permissions-panel" id="options00{auth.S_ROW_COUNT}"<!-- IF auth.S_FIRST_ROW --><!-- ELSE --> style="display: none;"<!-- ENDIF -->>
|
||||
<div class="tablewrap">
|
||||
<table id="table00{auth.S_ROW_COUNT}" class="table1 not-responsive">
|
||||
<colgroup>
|
||||
<col class="permissions-name" />
|
||||
<col class="permissions-yes" />
|
||||
<col class="permissions-no" />
|
||||
<col class="permissions-never" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="name" scope="col"><strong>{L_ACL_SETTING}</strong></th>
|
||||
<th class="value permissions-yes" scope="col"><a href="#" onclick="mark_options('options00{auth.S_ROW_COUNT}', 'y'); set_colours('00{auth.S_ROW_COUNT}', false, 'yes'); return false;">{L_ACL_YES}</a></th>
|
||||
<th class="value permissions-no" scope="col"><a href="#" onclick="mark_options('options00{auth.S_ROW_COUNT}', 'u'); set_colours('00{auth.S_ROW_COUNT}', false, 'no'); return false;">{L_ACL_NO}</a></th>
|
||||
<th class="value permissions-never" scope="col"><a href="#" onclick="mark_options('options00{auth.S_ROW_COUNT}', 'n'); set_colours('00{auth.S_ROW_COUNT}', false, 'never'); return false;">{L_ACL_NEVER}</a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN mask -->
|
||||
<!-- IF auth.mask.S_ROW_COUNT is even --><tr class="row4"><!-- ELSE --><tr class="row3"><!-- ENDIF -->
|
||||
<th class="permissions-name<!-- IF auth.mask.S_ROW_COUNT is even --> row4<!-- ELSE --> row3<!-- ENDIF -->">{auth.mask.PERMISSION}</th>
|
||||
|
||||
<td class="permissions-yes"><label for="setting_{auth.mask.FIELD_NAME}_y"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="setting_{auth.mask.FIELD_NAME}_y" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></label></td>
|
||||
<td class="permissions-no"><label for="setting_{auth.mask.FIELD_NAME}_u"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="setting_{auth.mask.FIELD_NAME}_u" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_NO --> checked="checked"<!-- ENDIF --> value="-1" /></label></td>
|
||||
<td class="permissions-never"><label for="setting_{auth.mask.FIELD_NAME}_n"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="setting_{auth.mask.FIELD_NAME}_n" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_NEVER --> checked="checked"<!-- ENDIF --> value="0" /></label></td>
|
||||
</tr>
|
||||
<!-- END mask -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END auth -->
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="quick">
|
||||
<input type="submit" class="button1" name="submit" value="{L_SUBMIT}" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<a href="#maincontent">» {L_BACK_TO_TOP}</a><br />
|
||||
<br />
|
||||
|
||||
<!-- ELSE -->
|
||||
|
||||
<h1>{L_TITLE}</h1>
|
||||
|
||||
<p>{L_EXPLAIN}</p>
|
||||
|
||||
<form id="acp_roles" method="post" action="{U_ACTION}">
|
||||
|
||||
<table class="table1">
|
||||
<col class="col2" /><col class="col2" /><col class="col1" /><col class="col2" /><col class="col2" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_ROLE_NAME}</th>
|
||||
<th colspan="2">{L_OPTIONS}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN roles -->
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><strong>{roles.ROLE_NAME}</strong>
|
||||
<!-- IF roles.ROLE_DESCRIPTION --><br /><span>{roles.ROLE_DESCRIPTION}</span><!-- ENDIF -->
|
||||
</td>
|
||||
<td style="width: 30%; text-align: center; vertical-align: top; white-space: nowrap;"><!-- IF roles.U_DISPLAY_ITEMS --><a href="{roles.U_DISPLAY_ITEMS}">{L_VIEW_ASSIGNED_ITEMS}</a><!-- ELSE -->{L_VIEW_ASSIGNED_ITEMS}<!-- ENDIF --></td>
|
||||
<td class="actions">
|
||||
<span class="up-disabled" style="display:none;">{ICON_MOVE_UP_DISABLED}</span>
|
||||
<span class="up"><a href="{roles.U_MOVE_UP}" data-ajax="row_up">{ICON_MOVE_UP}</a></span>
|
||||
<span class="down-disabled" style="display:none;">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||
<span class="down"><a href="{roles.U_MOVE_DOWN}" data-ajax="row_down">{ICON_MOVE_DOWN}</a></span>
|
||||
<a href="{roles.U_EDIT}" title="{L_EDIT_ROLE}">{ICON_EDIT}</a>
|
||||
<a href="{roles.U_REMOVE}" title="{L_REMOVE_ROLE}" data-ajax="row_delete">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END roles -->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<fieldset class="quick">
|
||||
{L_CREATE_ROLE}{L_COLON} <input type="text" name="role_name" value="" maxlength="255" /><!-- IF S_ROLE_OPTIONS --> <select name="options_from"><option value="0" selected="selected">{L_CREATE_ROLE_FROM}</option>{S_ROLE_OPTIONS}</select><!-- ENDIF --> <input class="button2" type="submit" name="add" value="{L_SUBMIT}" /><br />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- IF S_DISPLAY_ROLE_MASK -->
|
||||
|
||||
<a id="assigned_to"></a>
|
||||
|
||||
<h1>{L_ROLE_ASSIGNED_TO}</h1>
|
||||
|
||||
<!-- INCLUDE permission_roles_mask.html -->
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
50
install/update/new/adm/style/acp_posting_buttons.html
Normal file
@@ -0,0 +1,50 @@
|
||||
<script>
|
||||
// <![CDATA[
|
||||
|
||||
// Define the bbCode tags
|
||||
var bbcode = new Array();
|
||||
var bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->);
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<!-- INCLUDEJS {T_ASSETS_PATH}/javascript/editor.js -->
|
||||
|
||||
<!-- EVENT acp_posting_buttons_before -->
|
||||
<div id="format-buttons">
|
||||
<input type="button" class="button2" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onclick="bbstyle(0)" title="{L_BBCODE_B_HELP}" />
|
||||
<input type="button" class="button2" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" onclick="bbstyle(2)" title="{L_BBCODE_I_HELP}" />
|
||||
<input type="button" class="button2" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onclick="bbstyle(4)" title="{L_BBCODE_U_HELP}" />
|
||||
<!-- IF S_BBCODE_QUOTE -->
|
||||
<input type="button" class="button2" accesskey="q" name="addbbcode6" value="Quote" style="width: 50px" onclick="bbstyle(6)" title="{L_BBCODE_Q_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<input type="button" class="button2" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" title="{L_BBCODE_C_HELP}" />
|
||||
<input type="button" class="button2" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" title="{L_BBCODE_L_HELP}" />
|
||||
<input type="button" class="button2" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" title="{L_BBCODE_O_HELP}" />
|
||||
<input type="button" class="button2" accesskey="y" name="addlistitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" title="{L_BBCODE_LISTITEM_HELP}" />
|
||||
<!-- IF S_BBCODE_IMG -->
|
||||
<input type="button" class="button2" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" title="{L_BBCODE_P_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_LINKS_ALLOWED -->
|
||||
<input type="button" class="button2" accesskey="w" name="addbbcode16" value="URL" style="text-decoration: underline; width: 40px" onclick="bbstyle(16)" title="{L_BBCODE_W_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_BBCODE_FLASH -->
|
||||
<input type="button" class="button2" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" title="{L_BBCODE_D_HELP}" />
|
||||
<!-- ENDIF -->
|
||||
<select name="addbbcode20" onchange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]');this.form.addbbcode20.selectedIndex = 2;" title="{L_BBCODE_F_HELP}">
|
||||
<option value="50">{L_FONT_TINY}</option>
|
||||
<option value="85">{L_FONT_SMALL}</option>
|
||||
<option value="100" selected="selected">{L_FONT_NORMAL}</option>
|
||||
<!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 150 -->
|
||||
<option value="150">{L_FONT_LARGE}</option>
|
||||
<!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 200 -->
|
||||
<option value="200">{L_FONT_HUGE}</option>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
</select>
|
||||
<!-- EVENT acp_posting_buttons_custom_tags_before -->
|
||||
<!-- BEGIN custom_tags -->
|
||||
<input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{{ custom_tags.BBCODE_HELPLINE|e('html_attr') }}" />
|
||||
<!-- END custom_tags -->
|
||||
</div>
|
||||
<!-- EVENT acp_posting_buttons_after -->
|
||||
107
install/update/new/adm/style/acp_ranks.html
Normal file
@@ -0,0 +1,107 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF S_EDIT -->
|
||||
|
||||
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
function update_image(newimage)
|
||||
{
|
||||
document.getElementById('image').src = (newimage) ? "{RANKS_PATH}/" + encodeURI(newimage) : "./images/spacer.gif";
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<h1>{L_ACP_MANAGE_RANKS}</h1>
|
||||
|
||||
<p>{L_ACP_RANKS_EXPLAIN}</p>
|
||||
|
||||
<form id="acp_ranks" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_ACP_RANKS}</legend>
|
||||
|
||||
<!-- EVENT acp_ranks_edit_before -->
|
||||
|
||||
<dl>
|
||||
<dt><label for="title">{L_RANK_TITLE}{L_COLON}</label></dt>
|
||||
<dd><input name="title" type="text" id="title" value="{RANK_TITLE}" maxlength="255" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="rank_image">{L_RANK_IMAGE}{L_COLON}</label></dt>
|
||||
<dd><select name="rank_image" id="rank_image" onchange="update_image(this.options[selectedIndex].value);">{S_FILENAME_LIST}</select></dd>
|
||||
<dd><img src="{RANK_IMAGE}" id="image" alt="" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="special_rank">{L_RANK_SPECIAL}{L_COLON}</label></dt>
|
||||
<dd><label><input onclick="phpbb.toggleDisplay('posts', -1)" type="radio" class="radio" name="special_rank" value="1" id="special_rank"<!-- IF S_SPECIAL_RANK --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input onclick="phpbb.toggleDisplay('posts', 1)" type="radio" class="radio" name="special_rank" value="0"<!-- IF not S_SPECIAL_RANK --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<div id="posts"<!-- IF S_SPECIAL_RANK --> style="display: none;"<!-- ENDIF -->>
|
||||
<dl>
|
||||
<dt><label for="min_posts">{L_RANK_MINIMUM}{L_COLON}</label></dt>
|
||||
<dd><input name="min_posts" type="number" id="min_posts" min="0" max="9999999999" value="{MIN_POSTS}" /></dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<!-- EVENT acp_ranks_edit_after -->
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input type="hidden" name="action" value="save" />
|
||||
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSE -->
|
||||
|
||||
<h1>{L_ACP_MANAGE_RANKS}</h1>
|
||||
|
||||
<p>{L_ACP_RANKS_EXPLAIN}</p>
|
||||
|
||||
<form id="acp_ranks" method="post" action="{U_ACTION}">
|
||||
<fieldset class="tabulated">
|
||||
<legend>{L_ACP_MANAGE_RANKS}</legend>
|
||||
|
||||
<table class="table1 zebra-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<!-- EVENT acp_ranks_list_header_before -->
|
||||
<th>{L_RANK_IMAGE}</th>
|
||||
<th>{L_RANK_TITLE}</th>
|
||||
<th>{L_RANK_MINIMUM}</th>
|
||||
<!-- EVENT acp_ranks_list_header_after -->
|
||||
<th>{L_ACTION}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN ranks -->
|
||||
<tr>
|
||||
<!-- EVENT acp_ranks_list_column_before -->
|
||||
<td style="text-align: center;"><!-- IF ranks.S_RANK_IMAGE --><img src="{ranks.RANK_IMAGE}" alt="{ranks.RANK_TITLE}" title="{ranks.RANK_TITLE}" /><!-- ELSE --> - <!-- ENDIF --></td>
|
||||
<td style="text-align: center;">{ranks.RANK_TITLE}</td>
|
||||
<td style="text-align: center;"><!-- IF ranks.S_SPECIAL_RANK --> - <!-- ELSE -->{ranks.MIN_POSTS}<!-- ENDIF --></td>
|
||||
<!-- EVENT acp_ranks_list_column_after -->
|
||||
<td style="text-align: center;"><a href="{ranks.U_EDIT}">{ICON_EDIT}</a> <a href="{ranks.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a></td>
|
||||
</tr>
|
||||
<!-- END ranks -->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p class="quick">
|
||||
<input class="button2" name="add" type="submit" value="{L_ADD_RANK}" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
159
install/update/new/adm/style/acp_search.html
Normal file
@@ -0,0 +1,159 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF S_SETTINGS -->
|
||||
<h1>{L_ACP_SEARCH_SETTINGS}</h1>
|
||||
|
||||
<p>{L_ACP_SEARCH_SETTINGS_EXPLAIN}</p>
|
||||
|
||||
<form id="acp_search" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_GENERAL_SEARCH_SETTINGS}</legend>
|
||||
<dl>
|
||||
<dt><label for="load_search">{L_YES_SEARCH}{L_COLON}</label><br /><span>{L_YES_SEARCH_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" id="load_search" name="config[load_search]" value="1"<!-- IF S_YES_SEARCH --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="config[load_search]" value="0"<!-- IF not S_YES_SEARCH --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="search_interval">{L_SEARCH_INTERVAL}{L_COLON}</label><br /><span>{L_SEARCH_INTERVAL_EXPLAIN}</span></dt>
|
||||
<dd><input id="search_interval" type="number" min="0" max="9999" name="config[search_interval]" value="{SEARCH_INTERVAL}" /> {L_SECONDS}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="search_anonymous_interval">{L_SEARCH_GUEST_INTERVAL}{L_COLON}</label><br /><span>{L_SEARCH_GUEST_INTERVAL_EXPLAIN}</span></dt>
|
||||
<dd><input id="search_anonymous_interval" type="number" min="0" max="9999" name="config[search_anonymous_interval]" value="{SEARCH_GUEST_INTERVAL}" /> {L_SECONDS}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="limit_search_load">{L_LIMIT_SEARCH_LOAD}{L_COLON}</label><br /><span>{L_LIMIT_SEARCH_LOAD_EXPLAIN}</span></dt>
|
||||
<dd><input id="limit_search_load" type="text" size="4" maxlength="4" name="config[limit_search_load]" value="{LIMIT_SEARCH_LOAD}" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="min_search_author_chars">{L_MIN_SEARCH_AUTHOR_CHARS}{L_COLON}</label><br /><span>{L_MIN_SEARCH_AUTHOR_CHARS_EXPLAIN}</span></dt>
|
||||
<dd><input id="min_search_author_chars" type="number" min="0" max="9999" name="config[min_search_author_chars]" value="{MIN_SEARCH_AUTHOR_CHARS}" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="max_num_search_keywords">{L_MAX_NUM_SEARCH_KEYWORDS}{L_COLON}</label><br /><span>{L_MAX_NUM_SEARCH_KEYWORDS_EXPLAIN}</span></dt>
|
||||
<dd><input id="max_num_search_keywords" type="number" min="0" max="9999" name="config[max_num_search_keywords]" value="{MAX_NUM_SEARCH_KEYWORDS}" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="search_store_results">{L_SEARCH_STORE_RESULTS}{L_COLON}</label><br /><span>{L_SEARCH_STORE_RESULTS_EXPLAIN}</span></dt>
|
||||
<dd><input id="search_store_results" type="number" min="0" max="999999" name="config[search_store_results]" value="{SEARCH_STORE_RESULTS}" /> {L_SECONDS}</dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_SEARCH_TYPE}</legend>
|
||||
<dl>
|
||||
<dt><label for="search_type">{L_SEARCH_TYPE}{L_COLON}</label><br /><span>{L_SEARCH_TYPE_EXPLAIN}</span></dt>
|
||||
<dd><select id="search_type" name="config[search_type]" data-togglable-settings="true">{S_SEARCH_TYPES}</select></dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
<!-- BEGIN backend -->
|
||||
|
||||
<fieldset id="search_{backend.IDENTIFIER}_settings">
|
||||
<legend>{backend.NAME}</legend>
|
||||
{backend.SETTINGS}
|
||||
</fieldset>
|
||||
|
||||
<!-- END backend -->
|
||||
|
||||
<fieldset class="submit-buttons">
|
||||
<legend>{L_SUBMIT}</legend>
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- ELSEIF S_INDEX -->
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
/**
|
||||
* Popup search progress bar
|
||||
*/
|
||||
function popup_progress_bar(progress_type)
|
||||
{
|
||||
close_waitscreen = 0;
|
||||
// no scrollbars
|
||||
popup('{UA_PROGRESS_BAR}&type=' + progress_type, 400, 240, '_index');
|
||||
}
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<h1>{L_ACP_SEARCH_INDEX}</h1>
|
||||
|
||||
<!-- IF S_CONTINUE_INDEXING -->
|
||||
<p>{L_CONTINUE_EXPLAIN}</p>
|
||||
|
||||
<form id="acp_search_continue" method="post" action="{U_CONTINUE_INDEXING}">
|
||||
<fieldset class="submit-buttons">
|
||||
<legend>{L_SUBMIT}</legend>
|
||||
<input class="button1" type="submit" id="continue" name="continue" value="{L_CONTINUE}" onclick="popup_progress_bar('{S_CONTINUE_INDEXING}');" />
|
||||
<input class="button2" type="submit" id="cancel" name="cancel" value="{L_CANCEL}" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ELSE -->
|
||||
|
||||
<p>{L_ACP_SEARCH_INDEX_EXPLAIN}</p>
|
||||
|
||||
<!-- BEGIN backend -->
|
||||
|
||||
<!-- IF backend.S_STATS -->
|
||||
|
||||
<form id="acp_search_index_{backend.NAME}" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset class="tabulated">
|
||||
|
||||
{backend.S_HIDDEN_FIELDS}
|
||||
|
||||
<legend>{L_INDEX_STATS}{L_COLON} {backend.L_NAME} <!-- IF backend.S_ACTIVE -->({L_ACTIVE}) <!-- ENDIF --></legend>
|
||||
|
||||
<table class="table1">
|
||||
<caption>{backend.L_NAME} <!-- IF backend.S_ACTIVE -->({L_ACTIVE}) <!-- ENDIF --></caption>
|
||||
<col class="col1" /><col class="col2" /><col class="col1" /><col class="col2" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_STATISTIC}</th>
|
||||
<th>{L_VALUE}</th>
|
||||
<th>{L_STATISTIC}</th>
|
||||
<th>{L_VALUE}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN data -->
|
||||
<tr>
|
||||
<td>{backend.data.STATISTIC_1}{L_COLON}</td>
|
||||
<td>{backend.data.VALUE_1}</td>
|
||||
<td>{backend.data.STATISTIC_2}<!-- IF backend.data.STATISTIC_2 -->{L_COLON}<!-- ENDIF --></td>
|
||||
<td>{backend.data.VALUE_2}</td>
|
||||
</tr>
|
||||
<!-- END data -->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<p class="quick">
|
||||
<!-- IF backend.S_INDEXED -->
|
||||
<input type="hidden" name="action" value="delete" />
|
||||
<input class="button2" type="submit" value="{L_DELETE_INDEX}" onclick="popup_progress_bar('delete');" />
|
||||
<!-- ELSE -->
|
||||
<input type="hidden" name="action" value="create" />
|
||||
<input class="button2" type="submit" value="{L_CREATE_INDEX}" onclick="popup_progress_bar('create');" />
|
||||
<!-- ENDIF -->
|
||||
</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
|
||||
</form>
|
||||
<!-- END backend -->
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
178
install/update/new/adm/style/acp_styles.html
Normal file
@@ -0,0 +1,178 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<!-- IF S_STYLE_DETAILS -->
|
||||
<a href="{U_ACTION}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_CONFIRM_ACTION -->
|
||||
<form id="confirm" method="post" action="{S_CONFIRM_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<h1>{MESSAGE_TITLE}</h1>
|
||||
<p>{MESSAGE_TEXT}</p>
|
||||
<!-- IF S_CONFIRM_DELETE -->
|
||||
<label><input type="checkbox" class="checkbox" name="confirm_delete_files" /> {L_DELETE_FROM_FS}</label>
|
||||
<!-- ENDIF -->
|
||||
|
||||
{S_HIDDEN_FIELDS}
|
||||
|
||||
<div style="text-align: center;">
|
||||
<input type="submit" name="confirm" value="{L_YES}" class="button2" />
|
||||
<input type="submit" name="cancel" value="{L_NO}" class="button2" />
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
</form>
|
||||
<!-- ELSE -->
|
||||
|
||||
<!-- IF L_TITLE --><h1>{L_TITLE}</h1><!-- ENDIF -->
|
||||
|
||||
<!-- IF L_EXPLAIN --><p>{L_EXPLAIN}</p><!-- ENDIF -->
|
||||
|
||||
<fieldset class="quick">
|
||||
<span class="small"><a href="https://www.phpbb.com/go/customise/styles/3.3" target="_blank">{L_BROWSE_STYLES_DATABASE}</a></span>
|
||||
</fieldset>
|
||||
|
||||
<form id="acp_styles" method="post" action="{U_ACTION}">
|
||||
{S_HIDDEN_FIELDS}
|
||||
{S_FORM_TOKEN}
|
||||
|
||||
<!-- IF S_STYLE_DETAILS -->
|
||||
<input type="hidden" name="id" value="{STYLE_ID}" />
|
||||
<fieldset>
|
||||
<dl>
|
||||
<dt><label for="name">{L_STYLE_NAME}{L_COLON}</label></dt>
|
||||
<dd><input type="text" id="name" name="style_name" value="{STYLE_NAME}" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_STYLE_PATH}{L_COLON}</label></dt>
|
||||
<dd><strong>{STYLE_PATH}</strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_STYLE_VERSION}{L_COLON}</label></dt>
|
||||
<dd><strong>{STYLE_VERSION}</strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="name">{L_COPYRIGHT}{L_COLON}</label></dt>
|
||||
<dd><strong>{STYLE_COPYRIGHT}</strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="style_parent">{L_INHERITING_FROM}{L_COLON}</label></dt>
|
||||
<dd><select id="style_parent" name="style_parent">
|
||||
<option value=""<!-- IF STYLE_PARENT == 0 --> selected="selected"<!-- ENDIF -->> - </option>
|
||||
<!-- BEGIN parent_styles -->
|
||||
<option value="{parent_styles.STYLE_ID}"<!-- IF parent_styles.STYLE_ID == STYLE_PARENT --> selected="selected"<!-- ENDIF -->>{parent_styles.SPACER}{parent_styles.STYLE_NAME}</option>
|
||||
<!-- END parent_styles -->
|
||||
</select></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="style_active">{L_STYLE_ACTIVE}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="style_active" value="1"<!-- IF S_STYLE_ACTIVE --> id="style_active" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="style_active" value="0"<!-- IF not S_STYLE_ACTIVE --> id="style_active" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<!-- IF not S_STYLE_DEFAULT -->
|
||||
<dl>
|
||||
<dt><label for="style_default">{L_STYLE_DEFAULT}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="style_default" value="1" /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" id="style_default" name="style_default" value="0" checked="checked" /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="submit-buttons">
|
||||
<legend>{L_SUBMIT}</legend>
|
||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF .styles_list -->
|
||||
<!-- EVENT acp_styles_list_before -->
|
||||
<table class="table1 styles">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_STYLE_NAME}</th>
|
||||
<th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_PHPBB_VERSION}</th>
|
||||
<!-- IF not STYLES_LIST_HIDE_COUNT --><th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_USED_BY}</th><!-- ENDIF -->
|
||||
<th width="25%" style="white-space: nowrap; text-align: center;">{L_ACTIONS}</th>
|
||||
{STYLES_LIST_EXTRA}
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!-- BEGIN styles_list -->
|
||||
<tbody id="styles-list-{styles_list.S_ROW_COUNT}">
|
||||
<tr class="row-highlight<!-- IF styles_list.STYLE_ID and not styles_list.STYLE_ACTIVE --> row-inactive<!-- ENDIF -->">
|
||||
<!-- IF styles_list.LEVEL is odd -->
|
||||
<!-- IF $ROW_CLASS == 'row1a' --><!-- DEFINE $ROW_CLASS = 'row1b' --><!-- ELSE --><!-- DEFINE $ROW_CLASS = 'row1a' --><!-- ENDIF -->
|
||||
<!-- ELSE -->
|
||||
<!-- IF $ROW_CLASS == 'row2a' --><!-- DEFINE $ROW_CLASS = 'row2b' --><!-- ELSE --><!-- DEFINE $ROW_CLASS = 'row2a' --><!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
<td class="{$ROW_CLASS}" style="padding-{S_CONTENT_FLOW_BEGIN}: {styles_list.PADDING}px;">
|
||||
<!-- IF styles_list.STYLE_ID and styles_list.COMMENT == '' and styles_list.STYLE_ACTIVE -->
|
||||
<div class="default-style" style="display: none; float: {S_CONTENT_FLOW_END};">
|
||||
<input class="radio" type="radio" name="default" value="{styles_list.STYLE_ID}"<!-- IF styles_list.DEFAULT --> checked="checked"<!-- ELSE --><!-- DEFINE $S_DEFAULT = 1 --><!-- ENDIF --> title="{L_STYLE_DEFAULT}" />
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF styles_list.DEFAULT or styles_list.SHOW_COPYRIGHT -->
|
||||
<strong>{styles_list.STYLE_NAME}</strong>
|
||||
<!-- IF styles_list.SHOW_COPYRIGHT and styles_list.COMMENT == '' --><span><br />{styles_list.STYLE_COPYRIGHT}</span><!-- ENDIF -->
|
||||
<!-- ELSE -->
|
||||
<span>{styles_list.STYLE_NAME}</span>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF styles_list.COMMENT != '' -->
|
||||
<span class="error"><br />{styles_list.COMMENT}</span>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF not styles_list.STYLE_ID and styles_list.COMMENT == '' -->
|
||||
<span class="style-path"><br />{L_STYLE_PATH}{L_COLON} {styles_list.STYLE_PATH_FULL}</span>
|
||||
<!-- ENDIF -->
|
||||
</td>
|
||||
<td class="{$ROW_CLASS} users">{styles_list.STYLE_PHPBB_VERSION}</td>
|
||||
<!-- IF not STYLES_LIST_HIDE_COUNT -->
|
||||
<td class="{$ROW_CLASS} users">{styles_list.USERS}</td>
|
||||
<!-- ENDIF -->
|
||||
<td class="{$ROW_CLASS} actions">
|
||||
<!-- BEGIN actions -->
|
||||
<!-- IF styles_list.actions.S_ROW_COUNT > 0 --> | <!-- ENDIF -->
|
||||
<!-- IF styles_list.actions.U_ACTION -->
|
||||
<a href="{styles_list.actions.U_ACTION}"{styles_list.actions.U_ACTION_ATTR}>{styles_list.actions.L_ACTION}</a>
|
||||
<!-- ENDIF -->
|
||||
{styles_list.actions.HTML}
|
||||
<!-- END actions -->
|
||||
</td>
|
||||
{styles_list.EXTRA}
|
||||
<td class="{$ROW_CLASS} mark" width="20">
|
||||
<!-- IF styles_list.STYLE_ID -->
|
||||
{% if styles_list.STYLE_NAME !== 'prosilver' %}
|
||||
<input class="checkbox" type="checkbox" name="ids[]" value="{styles_list.STYLE_ID}" />
|
||||
{% endif %}
|
||||
<!-- ELSE -->
|
||||
<!-- IF styles_list.COMMENT != '' -->
|
||||
|
||||
<!-- ELSE -->
|
||||
<input class="checkbox" type="checkbox" name="dirs[]" value="{styles_list.STYLE_PATH}" />
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<!-- END styles_list -->
|
||||
</table>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF .extra_actions -->
|
||||
<fieldset class="quick">
|
||||
<!-- BEGIN extra_actions -->
|
||||
<input type="submit" name="{extra_actions.ACTION_NAME}" class="button2" value="{extra_actions.L_ACTION}" />
|
||||
<!-- END extra_actions -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
|
||||
</form>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
169
install/update/new/adm/style/acp_users_overview.html
Normal file
@@ -0,0 +1,169 @@
|
||||
<form id="user_overview" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_ACP_USER_OVERVIEW}</legend>
|
||||
<dl>
|
||||
<dt><label for="user">{L_USERNAME}{L_COLON}</label><br /><span>{L_NAME_CHARS_EXPLAIN}</span></dt>
|
||||
<dd><input type="text" id="user" name="user" value="{USER}" /></dd>
|
||||
<!-- IF U_SWITCH_PERMISSIONS --><dd>[ <a href="{U_SWITCH_PERMISSIONS}">{L_USE_PERMISSIONS}</a> ]</dd><!-- ENDIF -->
|
||||
</dl>
|
||||
<!-- IF S_USER_INACTIVE -->
|
||||
<dl>
|
||||
<dt><label>{L_USER_IS_INACTIVE}{L_COLON}</label></dt>
|
||||
<dd><strong>{USER_INACTIVE_REASON}</strong></dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label>{L_REGISTERED}{L_COLON}</label></dt>
|
||||
<dd><strong>{USER_REGISTERED}</strong></dd>
|
||||
</dl>
|
||||
<!-- IF S_USER_IP -->
|
||||
<dl>
|
||||
<dt><label>{L_REGISTERED_IP}{L_COLON}</label></dt>
|
||||
<dd><a href="{U_SHOW_IP}">{REGISTERED_IP}</a></dd>
|
||||
<dd>[ <a href="{U_WHOIS}" onclick="popup(this.href, 700, 500, '_whois'); return false;">{L_WHOIS}</a> ]</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<dl>
|
||||
<dt><label>{L_LAST_ACTIVE}{L_COLON}</label></dt>
|
||||
<dd><strong>{USER_LASTACTIVE}</strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_POSTS}{L_COLON}</label></dt>
|
||||
<dd>
|
||||
<strong>
|
||||
<!-- IF USER_HAS_POSTS and U_SEARCH_USER -->
|
||||
<a href="{U_SEARCH_USER}">{USER_POSTS}</a>
|
||||
<!-- ELSE -->
|
||||
{USER_POSTS}
|
||||
<!-- ENDIF -->
|
||||
</strong>
|
||||
<!-- IF POSTS_IN_QUEUE and U_MCP_QUEUE -->
|
||||
(<a href="{U_MCP_QUEUE}">{L_POSTS_IN_QUEUE}</a>)
|
||||
<!-- ELSEIF POSTS_IN_QUEUE -->
|
||||
({L_POSTS_IN_QUEUE})
|
||||
<!-- ENDIF -->
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_WARNINGS}{L_COLON}</label></dt>
|
||||
<dd><strong>{USER_WARNINGS}</strong></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="user_founder">{L_FOUNDER}{L_COLON}</label><br /><span>{L_FOUNDER_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="user_founder" value="1"<!-- IF S_USER_FOUNDER --> id="user_founder" checked="checked"<!-- ENDIF --><!-- IF not S_FOUNDER --> disabled="disabled"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="user_founder" value="0"<!-- IF not S_USER_FOUNDER --> id="user_founder" checked="checked"<!-- ENDIF --><!-- IF not S_FOUNDER --> disabled="disabled"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="user_email">{L_EMAIL}{L_COLON}</label></dt>
|
||||
<dd><input class="text medium" type="email" id="user_email" name="user_email" value="{USER_EMAIL}" autocomplete="off" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="new_password">{L_NEW_PASSWORD}{L_COLON}</label><br /><span>{L_CHANGE_PASSWORD_EXPLAIN}</span></dt>
|
||||
<dd><input type="password" id="new_password" name="new_password" value="" autocomplete="off" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="password_confirm">{L_CONFIRM_PASSWORD}{L_COLON}</label><br /><span>{L_CONFIRM_PASSWORD_EXPLAIN}</span></dt>
|
||||
<dd><input type="password" id="password_confirm" name="password_confirm" value="" autocomplete="off" /></dd>
|
||||
</dl>
|
||||
<!-- EVENT acp_users_overview_options_append -->
|
||||
|
||||
<p class="quick">
|
||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
<input type="hidden" name="action" value="" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- IF not S_USER_FOUNDER or S_FOUNDER -->
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
|
||||
function display_reason(option)
|
||||
{
|
||||
if (option != 'banuser' && option != 'banemail' && option != 'banip')
|
||||
{
|
||||
phpbb.toggleDisplay('reasons', -1);
|
||||
return;
|
||||
}
|
||||
|
||||
phpbb.toggleDisplay('reasons', 1);
|
||||
|
||||
element = document.getElementById('user_quick_tools').ban_reason;
|
||||
|
||||
if (element.value && element.value != '{LA_USER_ADMIN_BAN_NAME_REASON}' && element.value != '{LA_USER_ADMIN_BAN_EMAIL_REASON}' && element.value != '{LA_USER_ADMIN_BAN_IP_REASON}')
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (option == 'banuser')
|
||||
{
|
||||
element.value = '{LA_USER_ADMIN_BAN_NAME_REASON}';
|
||||
}
|
||||
else if (option == 'banemail')
|
||||
{
|
||||
element.value = '{LA_USER_ADMIN_BAN_EMAIL_REASON}';
|
||||
}
|
||||
else if (option == 'banip')
|
||||
{
|
||||
element.value = '{LA_USER_ADMIN_BAN_IP_REASON}';
|
||||
}
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<form id="user_quick_tools" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_USER_TOOLS}</legend>
|
||||
<dl>
|
||||
<dt><label for="quicktools">{L_QUICK_TOOLS}{L_COLON}</label></dt>
|
||||
<dd><select id="quicktools" name="action" onchange="display_reason(this.options[this.selectedIndex].value);">{S_ACTION_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<div style="display: none;" id="reasons">
|
||||
<dl>
|
||||
<dt><label for="ban_reason">{L_BAN_REASON}{L_COLON}</label></dt>
|
||||
<dd><input name="ban_reason" type="text" class="text medium" maxlength="3000" id="ban_reason" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="ban_give_reason">{L_BAN_GIVE_REASON}{L_COLON}</label></dt>
|
||||
<dd><input name="ban_give_reason" type="text" class="text medium" maxlength="3000" id="ban_give_reason" /></dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<p class="quick">
|
||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
|
||||
</fieldset>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- IF not S_OWN_ACCOUNT -->
|
||||
<form id="user_delete" method="post" action="{U_ACTION}">
|
||||
<fieldset>
|
||||
<legend>{L_DELETE_USER}</legend>
|
||||
<dl>
|
||||
<dt><label for="delete_type">{L_DELETE_USER}{L_COLON}</label><br /><span>{L_DELETE_USER_EXPLAIN}</span></dt>
|
||||
<dd>
|
||||
<!-- IF USER_HAS_POSTS -->
|
||||
<select id="delete_type" name="delete_type"><option class="sep" value="">{L_SELECT_OPTION}</option><option value="retain">{L_RETAIN_POSTS}</option><option value="remove">{L_DELETE_POSTS}</option></select>
|
||||
<!-- ELSE -->
|
||||
{L_USER_NO_POSTS_TO_DELETE}<input type="hidden" id="delete_type" name="delete_type" value="retain" />
|
||||
<!-- ENDIF -->
|
||||
</dd>
|
||||
</dl>
|
||||
<p class="quick">
|
||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
<input type="hidden" name="delete" value="1" />
|
||||
{S_FORM_TOKEN}
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
151
install/update/new/adm/style/acp_users_prefs.html
Normal file
@@ -0,0 +1,151 @@
|
||||
<script>
|
||||
// <![CDATA[
|
||||
var default_dateformat = '{A_DEFAULT_DATEFORMAT}';
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<form id="user_prefs" method="post" action="{U_ACTION}">
|
||||
<!-- EVENT acp_users_prefs_prepend -->
|
||||
<fieldset>
|
||||
<legend>{L_UCP_PREFS_PERSONAL}</legend>
|
||||
<!-- EVENT acp_users_prefs_personal_prepend -->
|
||||
<dl>
|
||||
<dt><label for="viewemail">{L_SHOW_EMAIL}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="viewemail" value="1"<!-- IF VIEW_EMAIL --> id="viewemail" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="viewemail" value="0"<!-- IF not VIEW_EMAIL --> id="viewemail" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="massemail">{L_ADMIN_EMAIL}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="massemail" value="1"<!-- IF MASS_EMAIL --> id="massemail" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="massemail" value="0"<!-- IF not MASS_EMAIL --> id="massemail" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="allowpm">{L_ALLOW_PM}{L_COLON}</label><br /><span>{L_ALLOW_PM_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="allowpm" value="1"<!-- IF ALLOW_PM --> id="allowpm" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="allowpm" value="0"<!-- IF not ALLOW_PM --> id="allowpm" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="hideonline">{L_HIDE_ONLINE}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="hideonline" value="1"<!-- IF HIDE_ONLINE --> id="hideonline" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="hideonline" value="0"<!-- IF not HIDE_ONLINE --> id="hideonline" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="notifymethod">{L_NOTIFY_METHOD}{L_COLON}</label><br /><span>{L_NOTIFY_METHOD_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" class="radio" name="notifymethod" value="0"<!-- IF NOTIFY_EMAIL --> id="notifymethod" checked="checked"<!-- ENDIF --> /> {L_NOTIFY_METHOD_EMAIL}</label>
|
||||
<label><input type="radio" class="radio" name="notifymethod" value="1"<!-- IF NOTIFY_IM --> id="notifymethod" checked="checked"<!-- ENDIF --><!-- IF S_JABBER_DISABLED --> disabled="disabled"<!-- ENDIF --> /> {L_NOTIFY_METHOD_IM}</label>
|
||||
<label><input type="radio" class="radio" name="notifymethod" value="2"<!-- IF NOTIFY_BOTH --> id="notifymethod" checked="checked"<!-- ENDIF --><!-- IF S_JABBER_DISABLED --> disabled="disabled"<!-- ENDIF --> /> {L_NOTIFY_METHOD_BOTH}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="notifypm">{L_NOTIFY_ON_PM}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="notifypm" value="1"<!-- IF NOTIFY_PM --> id="notifypm" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="notifypm" value="0"<!-- IF not NOTIFY_PM --> id="notifypm" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="lang">{L_BOARD_LANGUAGE}{L_COLON}</label></dt>
|
||||
<dd><select id="lang" name="lang">{S_LANG_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="style">{L_BOARD_STYLE}{L_COLON}</label></dt>
|
||||
<dd><select id="style" name="style">{S_STYLE_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<!-- INCLUDE timezone_option.html -->
|
||||
<dl>
|
||||
<dt><label for="dateoptions">{L_BOARD_DATE_FORMAT}{L_COLON}</label><br /><span>{L_BOARD_DATE_FORMAT_EXPLAIN}</span></dt>
|
||||
<dd><select name="dateoptions" id="dateoptions" onchange="if(this.value=='custom'){phpbb.toggleDisplay('custom_date',1);}else{phpbb.toggleDisplay('custom_date',-1);} if (this.value == 'custom') { document.getElementById('dateformat').value = default_dateformat; } else { document.getElementById('dateformat').value = this.value; }">{S_DATEFORMAT_OPTIONS}</select></dd>
|
||||
<dd><div id="custom_date"<!-- IF not S_CUSTOM_DATEFORMAT --> style="display:none;"<!-- ENDIF -->><input type="text" name="dateformat" id="dateformat" value="{DATE_FORMAT}" maxlength="64" /></div></dd>
|
||||
</dl>
|
||||
<!-- EVENT acp_users_prefs_personal_append -->
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_UCP_PREFS_POST}</legend>
|
||||
<!-- EVENT acp_users_prefs_post_prepend -->
|
||||
<dl>
|
||||
<dt><label for="bbcode">{L_DEFAULT_BBCODE}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="bbcode" value="1"<!-- IF BBCODE --> id="bbcode" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="bbcode" value="0"<!-- IF not BBCODE --> id="bbcode" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="smilies">{L_DEFAULT_SMILIES}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="smilies" value="1"<!-- IF SMILIES --> id="smilies" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="smilies" value="0"<!-- IF not SMILIES --> id="smilies" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="sig">{L_DEFAULT_ADD_SIG}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="sig" value="1"<!-- IF ATTACH_SIG --> id="sig" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="sig" value="0"<!-- IF not ATTACH_SIG --> id="sig" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="notify">{L_DEFAULT_NOTIFY}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="notify" value="1"<!-- IF NOTIFY --> id="notify" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="notify" value="0"<!-- IF not NOTIFY --> id="notify" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<!-- EVENT acp_users_prefs_post_append -->
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_UCP_PREFS_VIEW}</legend>
|
||||
<!-- EVENT acp_users_prefs_view_prepend -->
|
||||
<dl>
|
||||
<dt><label for="view_images">{L_VIEW_IMAGES}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="view_images" value="1"<!-- IF VIEW_IMAGES --> id="view_images" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="view_images" value="0"<!-- IF not VIEW_IMAGES --> id="view_images" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="view_flash">{L_VIEW_FLASH}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="view_flash" value="1"<!-- IF VIEW_FLASH --> id="view_flash" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="view_flash" value="0"<!-- IF not VIEW_FLASH --> id="view_flash" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="view_smilies">{L_VIEW_SMILIES}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="view_smilies" value="1"<!-- IF VIEW_SMILIES --> id="view_smilies" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="view_smilies" value="0"<!-- IF not VIEW_SMILIES --> id="view_smilies" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="view_sigs">{L_VIEW_SIGS}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="view_sigs" value="1"<!-- IF VIEW_SIGS --> id="view_sigs" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="view_sigs" value="0"<!-- IF not VIEW_SIGS --> id="view_sigss" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="view_avatars">{L_VIEW_AVATARS}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="view_avatars" value="1"<!-- IF VIEW_AVATARS --> id="view_avatars" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="view_avatars" value="0"<!-- IF not VIEW_AVATARS --> id="view_avatars" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="view_wordcensor">{L_DISABLE_CENSORS}{L_COLON}</label></dt>
|
||||
<dd><label><input type="radio" class="radio" name="view_wordcensor" value="1"<!-- IF VIEW_WORDCENSOR --> id="view_wordcensor" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input type="radio" class="radio" name="view_wordcensor" value="0"<!-- IF not VIEW_WORDCENSOR --> id="view_wordcensor" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_VIEW_TOPICS_DAYS}{L_COLON}</label></dt>
|
||||
<dd>{S_TOPIC_SORT_DAYS}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_VIEW_TOPICS_KEY}{L_COLON}</label></dt>
|
||||
<dd>{S_TOPIC_SORT_KEY}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_VIEW_TOPICS_DIR}{L_COLON}</label></dt>
|
||||
<dd>{S_TOPIC_SORT_DIR}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_VIEW_POSTS_DAYS}{L_COLON}</label></dt>
|
||||
<dd>{S_POST_SORT_DAYS}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_VIEW_POSTS_KEY}{L_COLON}</label></dt>
|
||||
<dd>{S_POST_SORT_KEY}</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label>{L_VIEW_POSTS_DIR}{L_COLON}</label></dt>
|
||||
<dd>{S_POST_SORT_DIR}</dd>
|
||||
</dl>
|
||||
<!-- EVENT acp_users_prefs_view_append -->
|
||||
</fieldset>
|
||||
<!-- EVENT acp_users_prefs_append -->
|
||||
<fieldset class="quick">
|
||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
|
||||
</form>
|
||||
52
install/update/new/adm/style/acp_users_signature.html
Normal file
@@ -0,0 +1,52 @@
|
||||
<script>
|
||||
// <![CDATA[
|
||||
|
||||
var form_name = 'user_signature';
|
||||
var text_name = 'signature';
|
||||
var load_draft = false;
|
||||
var upload = false;
|
||||
var imageTag = false;
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<form id="user_signature" method="post" action="{U_ACTION}">
|
||||
|
||||
<!-- IF SIGNATURE_PREVIEW -->
|
||||
<fieldset>
|
||||
<legend>{L_ADMIN_SIG_PREVIEW}</legend>
|
||||
<p>{SIGNATURE_PREVIEW}</p>
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_SIGNATURE}</legend>
|
||||
<p>{L_SIGNATURE_EXPLAIN}</p>
|
||||
|
||||
<!-- INCLUDE acp_posting_buttons.html -->
|
||||
|
||||
<dl class="responsive-columns">
|
||||
<dt style="width: 90px;" id="color_palette_placeholder" data-color-palette="v" data-height="12" data-width="15" data-bbcode="true">
|
||||
</dt>
|
||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px;"><textarea name="signature" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();" data-bbcode="true">{SIGNATURE}</textarea></dd>
|
||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 5px;">
|
||||
<!-- IF S_BBCODE_ALLOWED -->
|
||||
<label><input type="checkbox" class="radio" name="disable_bbcode"{S_BBCODE_CHECKED} /> {L_DISABLE_BBCODE}</label>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_SMILIES_ALLOWED -->
|
||||
<label><input type="checkbox" class="radio" name="disable_smilies"{S_SMILIES_CHECKED} /> {L_DISABLE_SMILIES}</label>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_LINKS_ALLOWED -->
|
||||
<label><input type="checkbox" class="radio" name="disable_magic_url"{S_MAGIC_URL_CHECKED} /> {L_DISABLE_MAGIC_URL}</label>
|
||||
<!-- ENDIF -->
|
||||
</dd>
|
||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 10px;"><strong>{L_OPTIONS}{L_COLON} </strong>{BBCODE_STATUS} :: {IMG_STATUS} :: {FLASH_STATUS} :: {URL_STATUS} :: {SMILIES_STATUS}</dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="submit-buttons">
|
||||
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="submit" name="preview" value="{L_PREVIEW}" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
2736
install/update/new/adm/style/admin.css
Normal file
316
install/update/new/adm/style/admin.js
Normal file
@@ -0,0 +1,316 @@
|
||||
/**
|
||||
* phpBB3 ACP functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* Parse document block
|
||||
*/
|
||||
function parse_document(container)
|
||||
{
|
||||
var test = document.createElement('div'),
|
||||
oldBrowser = (typeof test.style.borderRadius == 'undefined');
|
||||
|
||||
delete test;
|
||||
|
||||
/**
|
||||
* Navigation
|
||||
*/
|
||||
container.find('#menu').each(function() {
|
||||
var menu = $(this),
|
||||
blocks = menu.children('.menu-block');
|
||||
|
||||
if (!blocks.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Set onclick event
|
||||
blocks.children('a.header').click(function() {
|
||||
var parent = $(this).parent();
|
||||
if (!parent.hasClass('active')) {
|
||||
parent.siblings().removeClass('active');
|
||||
}
|
||||
parent.toggleClass('active');
|
||||
});
|
||||
|
||||
// Set active menu
|
||||
menu.find('#activemenu').parents('.menu-block').addClass('active');
|
||||
|
||||
// Check if there is active menu
|
||||
if (!blocks.filter('.active').length) {
|
||||
blocks.filter(':first').addClass('active');
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Responsive tables
|
||||
*/
|
||||
container.find('table').not('.not-responsive').each(function() {
|
||||
var $this = $(this),
|
||||
th = $this.find('thead > tr > th'),
|
||||
columns = th.length,
|
||||
headers = [],
|
||||
totalHeaders = 0,
|
||||
i, headersLength;
|
||||
|
||||
// Find columns
|
||||
$this.find('colgroup:first').children().each(function(i) {
|
||||
var column = $(this);
|
||||
$this.find('td:nth-child(' + (i + 1) + ')').addClass(column.prop('className'));
|
||||
});
|
||||
|
||||
// Styles table
|
||||
if ($this.hasClass('styles')) {
|
||||
$this.find('td:first-child[style]').each(function() {
|
||||
var style = $(this).attr('style');
|
||||
if (style.length) {
|
||||
$(this).parent('tr').attr('style', style.toLowerCase().replace('padding', 'margin')).addClass('responsive-style-row');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Find each header
|
||||
if (!$this.data('no-responsive-header'))
|
||||
{
|
||||
th.each(function(column) {
|
||||
var cell = $(this),
|
||||
colspan = parseInt(cell.attr('colspan')),
|
||||
dfn = cell.attr('data-dfn'),
|
||||
text = dfn ? dfn : $.trim(cell.text());
|
||||
|
||||
if (text == ' ') text = '';
|
||||
colspan = isNaN(colspan) || colspan < 1 ? 1 : colspan;
|
||||
|
||||
for (i=0; i<colspan; i++) {
|
||||
headers.push(text);
|
||||
}
|
||||
totalHeaders ++;
|
||||
|
||||
if (dfn && !column) {
|
||||
$this.addClass('show-header');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
headersLength = headers.length;
|
||||
|
||||
// Add header text to each cell as <dfn>
|
||||
$this.addClass('responsive');
|
||||
|
||||
if (totalHeaders < 2) {
|
||||
$this.addClass('show-header');
|
||||
return;
|
||||
}
|
||||
|
||||
$this.find('tbody > tr').each(function() {
|
||||
var row = $(this),
|
||||
cells = row.children('td'),
|
||||
column = 0;
|
||||
|
||||
if (cells.length == 1) {
|
||||
row.addClass('big-column');
|
||||
return;
|
||||
}
|
||||
|
||||
cells.each(function() {
|
||||
var cell = $(this),
|
||||
colspan = parseInt(cell.attr('colspan')),
|
||||
text = $.trim(cell.text());
|
||||
|
||||
if (headersLength <= column) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((text.length && text !== '-') || cell.children().length) {
|
||||
if (headers[column] != '') {
|
||||
cell.prepend('<dfn style="display: none;">' + headers[column] + '</dfn>');
|
||||
}
|
||||
}
|
||||
else {
|
||||
cell.addClass('empty');
|
||||
}
|
||||
|
||||
colspan = isNaN(colspan) || colspan < 1 ? 1 : colspan;
|
||||
column += colspan;
|
||||
});
|
||||
});
|
||||
|
||||
// Remove <dfn> in disabled extensions list
|
||||
$this.find('tr.ext_disabled > .empty:nth-child(2) + .empty').siblings(':first-child').children('dfn').remove();
|
||||
});
|
||||
|
||||
/**
|
||||
* Hide empty responsive tables
|
||||
*/
|
||||
container.find('table.responsive > tbody').each(function() {
|
||||
var items = $(this).children('tr');
|
||||
if (items.length == 0)
|
||||
{
|
||||
$(this).parent('table:first').addClass('responsive-hide');
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Fieldsets with empty <span>
|
||||
*/
|
||||
container.find('fieldset dt > span:last-child').each(function() {
|
||||
var $this = $(this);
|
||||
if ($this.html() == ' ') {
|
||||
$this.addClass('responsive-hide');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* Responsive tabs
|
||||
*/
|
||||
container.find('#tabs').not('[data-skip-responsive]').each(function() {
|
||||
var $this = $(this),
|
||||
$body = $('body'),
|
||||
ul = $this.children(),
|
||||
tabs = ul.children().not('[data-skip-responsive]'),
|
||||
links = tabs.children('a'),
|
||||
item = ul.append('<li class="tab responsive-tab" style="display:none;"><a href="javascript:void(0);" class="responsive-tab-link"> </a><div class="dropdown tab-dropdown" style="display: none;"><div class="pointer"><div class="pointer-inner" /></div><ul class="dropdown-contents" /></div></li>').find('li.responsive-tab'),
|
||||
menu = item.find('.dropdown-contents'),
|
||||
maxHeight = 0,
|
||||
lastWidth = false,
|
||||
responsive = false;
|
||||
|
||||
links.each(function() {
|
||||
var link = $(this);
|
||||
maxHeight = Math.max(maxHeight, Math.max(link.outerHeight(true), link.parent().outerHeight(true)));
|
||||
})
|
||||
|
||||
function check() {
|
||||
var width = $body.width(),
|
||||
height = $this.height();
|
||||
|
||||
if (arguments.length == 0 && (!responsive || width <= lastWidth) && height <= maxHeight) {
|
||||
return;
|
||||
}
|
||||
|
||||
tabs.show();
|
||||
item.hide();
|
||||
|
||||
lastWidth = width;
|
||||
height = $this.height();
|
||||
if (height <= maxHeight) {
|
||||
responsive = false;
|
||||
if (item.hasClass('dropdown-visible')) {
|
||||
phpbb.toggleDropdown.call(item.find('a.responsive-tab-link').get(0));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
responsive = true;
|
||||
item.show();
|
||||
menu.html('');
|
||||
|
||||
var availableTabs = tabs.filter(':not(.activetab, .responsive-tab)'),
|
||||
total = availableTabs.length,
|
||||
i, tab;
|
||||
|
||||
for (i = total - 1; i >= 0; i --) {
|
||||
tab = availableTabs.eq(i);
|
||||
menu.prepend(tab.clone(true).removeClass('tab'));
|
||||
tab.hide();
|
||||
if ($this.height() <= maxHeight) {
|
||||
menu.find('a').click(function() { check(true); });
|
||||
return;
|
||||
}
|
||||
}
|
||||
menu.find('a').click(function() { check(true); });
|
||||
}
|
||||
|
||||
phpbb.registerDropdown(item.find('a.responsive-tab-link'), item.find('.dropdown'), {visibleClass: 'activetab', verticalDirection: 'down'});
|
||||
|
||||
check(true);
|
||||
$(window).resize(check);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Extension actions helper functions
|
||||
*/
|
||||
function move_to_enabled(element)
|
||||
{
|
||||
var disabled_header = document.querySelector('#ext_disabled_header');
|
||||
disabled_header.parentNode.insertBefore(element, disabled_header);
|
||||
element.classList.remove('ext_disabled');
|
||||
element.classList.add('ext_enabled');
|
||||
}
|
||||
function move_to_disabled(element)
|
||||
{
|
||||
var table_body = document.querySelector('#ext_disabled_header').parentNode;
|
||||
table_body.appendChild(element);
|
||||
element.classList.remove('ext_enabled');
|
||||
element.classList.add('ext_disabled');
|
||||
}
|
||||
function set_actions(container, actions) {
|
||||
container.innerHTML = '';
|
||||
for (var i = 0; i < actions.length; i++) {
|
||||
var a = document.createElement('a');
|
||||
a.href = actions[i].U_ACTION.split('&').join('&'); // replace all occurances
|
||||
a.title = actions[i].L_ACTION_EXPLAIN;
|
||||
if (actions[i].COLOR) {
|
||||
a.style = actions[i].COLOR;
|
||||
}
|
||||
a.innerHTML = actions[i].L_ACTION;
|
||||
// ajaxify this action as well
|
||||
phpbb.ajaxify({
|
||||
selector: a,
|
||||
refresh: true,
|
||||
callback: actions[i].ACTION_AJAX
|
||||
});
|
||||
|
||||
container.appendChild(a);
|
||||
|
||||
if (i < actions.length - 1) {
|
||||
container.innerHTML += ' | ';
|
||||
}
|
||||
}
|
||||
}
|
||||
function show_enabled_header() {
|
||||
document.querySelector('#ext_enabled_header').classList.remove('hidden');
|
||||
}
|
||||
function show_disabled_header() {
|
||||
document.querySelector('#ext_disabled_header').classList.remove('hidden');
|
||||
}
|
||||
function hide_disabled_header_if_empty() {
|
||||
if (!document.querySelector('.ext_disabled')) {
|
||||
document.querySelector('#ext_disabled_header').classList.add('hidden');
|
||||
}
|
||||
}
|
||||
function hide_enabled_header_if_empty() {
|
||||
if (!document.querySelector('.ext_enabled')) {
|
||||
document.querySelector('#ext_enabled_header').classList.add('hidden');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Run onload functions
|
||||
*/
|
||||
(function($) {
|
||||
$(document).ready(function() {
|
||||
// Swap .nojs and .hasjs
|
||||
$('body.nojs').toggleClass('nojs hasjs');
|
||||
|
||||
// Focus forms
|
||||
$('form[data-focus]:first').each(function() {
|
||||
$('#' + this.getAttribute('data-focus')).focus();
|
||||
});
|
||||
|
||||
parse_document($('body'));
|
||||
|
||||
$('#questionnaire-form').css('display', 'none');
|
||||
var $triggerConfiglist = $('#trigger-configlist');
|
||||
|
||||
$triggerConfiglist.on('click', function () {
|
||||
var $configlist = $('#configlist');
|
||||
$configlist.closest('.send-stats-data-row').toggleClass('send-stats-data-hidden');
|
||||
$configlist.closest('.send-stats-row').find('.send-stats-data-row:first-child').toggleClass('send-stats-data-only-row');
|
||||
$(this).find('i').toggleClass('fa-angle-down fa-angle-up');
|
||||
});
|
||||
|
||||
$('#configlist').closest('.send-stats-data-row').addClass('send-stats-data-hidden');
|
||||
});
|
||||
})(jQuery);
|
||||
360
install/update/new/adm/style/ajax.js
Normal file
@@ -0,0 +1,360 @@
|
||||
/* global phpbb, statsData */
|
||||
|
||||
(function($) { // Avoid conflicts with other libraries
|
||||
|
||||
'use strict';
|
||||
|
||||
|
||||
phpbb.prepareSendStats = function () {
|
||||
var $form = $('#acp_help_phpbb');
|
||||
var $dark = $('#darkenwrapper');
|
||||
var $loadingIndicator;
|
||||
|
||||
$form.on('submit', function (event) {
|
||||
var $this = $(this),
|
||||
currentTime = Math.floor(new Date().getTime() / 1000),
|
||||
statsTime = parseInt($this.find('input[name=help_send_statistics_time]').val(), 10);
|
||||
|
||||
event.preventDefault();
|
||||
$this.unbind('submit');
|
||||
|
||||
// Skip ajax request if form is submitted too early or send stats
|
||||
// checkbox is not checked
|
||||
if (!$this.find('input[name=help_send_statistics]').is(':checked') ||
|
||||
statsTime > currentTime) {
|
||||
$form.find('input[type=submit]').click();
|
||||
setTimeout(function () {
|
||||
$form.find('input[type=submit]').click();
|
||||
}, 300);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for AJAX errors
|
||||
*/
|
||||
function errorHandler(jqXHR, textStatus, errorThrown) {
|
||||
if (typeof console !== 'undefined' && console.log) {
|
||||
console.log('AJAX error. status: ' + textStatus + ', message: ' + errorThrown);
|
||||
}
|
||||
phpbb.clearLoadingTimeout();
|
||||
var errorText = '';
|
||||
|
||||
if (typeof errorThrown === 'string' && errorThrown.length > 0) {
|
||||
errorText = errorThrown;
|
||||
} else {
|
||||
errorText = $dark.attr('data-ajax-error-text-' + textStatus);
|
||||
if (typeof errorText !== 'string' || !errorText.length) {
|
||||
errorText = $dark.attr('data-ajax-error-text');
|
||||
}
|
||||
}
|
||||
phpbb.alert($dark.attr('data-ajax-error-title'), errorText);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a private function used to handle the callbacks, refreshes
|
||||
* and alert. It calls the callback, refreshes the page if necessary, and
|
||||
* displays an alert to the user and removes it after an amount of time.
|
||||
*
|
||||
* It cannot be called from outside this function, and is purely here to
|
||||
* avoid repetition of code.
|
||||
*
|
||||
* @param {object} res The object sent back by the server.
|
||||
*/
|
||||
function returnHandler(res) {
|
||||
phpbb.clearLoadingTimeout();
|
||||
|
||||
// If a confirmation is not required, display an alert and call the
|
||||
// callbacks.
|
||||
$dark.fadeOut(phpbb.alertTime);
|
||||
|
||||
if ($loadingIndicator) {
|
||||
$loadingIndicator.fadeOut(phpbb.alertTime);
|
||||
}
|
||||
|
||||
var $sendStatisticsSuccess = $('<input />', {
|
||||
type: 'hidden',
|
||||
name: 'send_statistics_response',
|
||||
value: JSON.stringify(res)
|
||||
});
|
||||
$sendStatisticsSuccess.appendTo('p.submit-buttons');
|
||||
|
||||
// Finish actual form submission
|
||||
$form.find('input[type=submit]').click();
|
||||
}
|
||||
|
||||
$loadingIndicator = phpbb.loadingIndicator();
|
||||
|
||||
$.ajax({
|
||||
url: $this.attr('data-ajax-action').replace('&', '&'),
|
||||
type: 'POST',
|
||||
data: statsData,
|
||||
success: returnHandler,
|
||||
error: errorHandler,
|
||||
cache: false
|
||||
}).always(function() {
|
||||
if ($loadingIndicator && $loadingIndicator.is(':visible')) {
|
||||
$loadingIndicator.fadeOut(phpbb.alertTime);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* The following callbacks are for reording items. row_down
|
||||
* is triggered when an item is moved down, and row_up is triggered when
|
||||
* an item is moved up. It moves the row up or down, and deactivates /
|
||||
* activates any up / down icons that require it (the ones at the top or bottom).
|
||||
*/
|
||||
phpbb.addAjaxCallback('row_down', function(res) {
|
||||
if (typeof res.success === 'undefined' || !res.success) {
|
||||
return;
|
||||
}
|
||||
|
||||
var $firstTr = $(this).parents('tr'),
|
||||
$secondTr = $firstTr.next();
|
||||
|
||||
$firstTr.insertAfter($secondTr);
|
||||
});
|
||||
|
||||
phpbb.addAjaxCallback('row_up', function(res) {
|
||||
if (typeof res.success === 'undefined' || !res.success) {
|
||||
return;
|
||||
}
|
||||
|
||||
var $secondTr = $(this).parents('tr'),
|
||||
$firstTr = $secondTr.prev();
|
||||
|
||||
$secondTr.insertBefore($firstTr);
|
||||
});
|
||||
|
||||
/**
|
||||
* This callback replaces activate links with deactivate links and vice versa.
|
||||
* It does this by replacing the text, and replacing all instances of "activate"
|
||||
* in the href with "deactivate", and vice versa.
|
||||
*/
|
||||
phpbb.addAjaxCallback('activate_deactivate', function(res) {
|
||||
var $this = $(this),
|
||||
newHref = $this.attr('href');
|
||||
|
||||
$this.text(res.text);
|
||||
|
||||
if (newHref.indexOf('deactivate') !== -1) {
|
||||
newHref = newHref.replace('deactivate', 'activate');
|
||||
} else {
|
||||
newHref = newHref.replace('activate', 'deactivate');
|
||||
}
|
||||
|
||||
$this.attr('href', newHref);
|
||||
});
|
||||
|
||||
/**
|
||||
* The removes the parent row of the link or form that triggered the callback,
|
||||
* and is good for stuff like the removal of forums.
|
||||
*/
|
||||
phpbb.addAjaxCallback('row_delete', function(res) {
|
||||
if (res.SUCCESS !== false) {
|
||||
$(this).parents('tr').remove();
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Callbacks for extension actions
|
||||
*/
|
||||
phpbb.addAjaxCallback('ext_enable', function(res) {
|
||||
if (res.EXT_ENABLE_SUCCESS) {
|
||||
move_to_enabled(this.parentNode.parentNode);
|
||||
set_actions(this.parentNode, res.ACTIONS);
|
||||
show_enabled_header();
|
||||
hide_disabled_header_if_empty();
|
||||
}
|
||||
});
|
||||
phpbb.addAjaxCallback('ext_delete_data', function(res) {
|
||||
if (res.EXT_DELETE_DATA_SUCCESS) {
|
||||
move_to_disabled(this.parentNode.parentNode);
|
||||
set_actions(this.parentNode, res.ACTIONS);
|
||||
show_disabled_header();
|
||||
hide_enabled_header_if_empty();
|
||||
}
|
||||
});
|
||||
phpbb.addAjaxCallback('ext_disable', function(res) {
|
||||
if (res.EXT_DISABLE_SUCCESS) {
|
||||
move_to_disabled(this.parentNode.parentNode);
|
||||
set_actions(this.parentNode, res.ACTIONS);
|
||||
show_disabled_header();
|
||||
hide_enabled_header_if_empty();
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Handler for submitting permissions form in chunks
|
||||
* This call will submit permissions forms in chunks of 5 fieldsets.
|
||||
*/
|
||||
function submitPermissions() {
|
||||
var $form = $('form#set-permissions'),
|
||||
fieldsetList = $form.find('fieldset[id^=perm]'),
|
||||
formDataSets = [],
|
||||
dataSetIndex = 0,
|
||||
$submitAllButton = $form.find('input[type=submit][name^=action]')[0],
|
||||
$submitButton = $form.find('input[type=submit][data-clicked=true]')[0];
|
||||
|
||||
// Set proper start values for handling refresh of page
|
||||
var permissionSubmitSize = 0,
|
||||
permissionRequestCount = 0,
|
||||
forumIds = [],
|
||||
permissionSubmitFailed = false;
|
||||
|
||||
if ($submitAllButton !== $submitButton) {
|
||||
fieldsetList = $form.find('fieldset#' + $submitButton.closest('fieldset.permissions').id);
|
||||
}
|
||||
|
||||
$.each(fieldsetList, function (key, value) {
|
||||
dataSetIndex = Math.floor(key / 5);
|
||||
var $fieldset = $('fieldset#' + value.id);
|
||||
if (key % 5 === 0) {
|
||||
formDataSets[dataSetIndex] = $fieldset.find('select:visible, input:not([data-name])').serialize();
|
||||
} else {
|
||||
formDataSets[dataSetIndex] += '&' + $fieldset.find('select:visible, input:not([data-name])').serialize();
|
||||
}
|
||||
|
||||
// Find proper role value
|
||||
var roleInput = $fieldset.find('input[name^=role][data-name]');
|
||||
if (roleInput.val()) {
|
||||
formDataSets[dataSetIndex] += '&' + roleInput.attr('name') + '=' + roleInput.val();
|
||||
} else {
|
||||
formDataSets[dataSetIndex] += '&' + roleInput.attr('name') + '=' +
|
||||
$fieldset.find('select[name="' + roleInput.attr('name') + '"]').val();
|
||||
}
|
||||
});
|
||||
|
||||
permissionSubmitSize = formDataSets.length;
|
||||
|
||||
// Add each forum ID to forum ID list to preserve selected forums
|
||||
$.each($form.find('input[type=hidden][name^=forum_id]'), function (key, value) {
|
||||
if (value.name.match(/^forum_id\[([0-9]+)\]$/)) {
|
||||
forumIds.push(value.value);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Handler for submitted permissions form chunk
|
||||
*
|
||||
* @param {object} res Object returned by AJAX call
|
||||
*/
|
||||
function handlePermissionReturn(res) {
|
||||
permissionRequestCount++;
|
||||
var $dark = $('#darkenwrapper');
|
||||
|
||||
if (res.S_USER_WARNING) {
|
||||
phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
|
||||
permissionSubmitFailed = true;
|
||||
} else if (!permissionSubmitFailed && res.S_USER_NOTICE) {
|
||||
// Display success message at the end of submitting the form
|
||||
if (permissionRequestCount >= permissionSubmitSize) {
|
||||
var $alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
|
||||
var $alertBoxLink = $alert.find('p.alert_text > a');
|
||||
|
||||
// Create form to submit instead of normal "Back to previous page" link
|
||||
if ($alertBoxLink) {
|
||||
// Remove forum_id[] from URL
|
||||
$alertBoxLink.attr('href', $alertBoxLink.attr('href').replace(/(&forum_id\[\]=[0-9]+)/g, ''));
|
||||
var previousPageForm = '<form action="' + $alertBoxLink.attr('href') + '" method="post">';
|
||||
$.each(forumIds, function (key, value) {
|
||||
previousPageForm += '<input type="text" name="forum_id[]" value="' + value + '" />';
|
||||
});
|
||||
previousPageForm += '</form>';
|
||||
|
||||
$alertBoxLink.on('click', function (e) {
|
||||
var $previousPageForm = $(previousPageForm);
|
||||
$('body').append($previousPageForm);
|
||||
e.preventDefault();
|
||||
$previousPageForm.submit();
|
||||
});
|
||||
}
|
||||
|
||||
// Do not allow closing alert
|
||||
$dark.off('click');
|
||||
$alert.find('.alert_close').hide();
|
||||
|
||||
if (typeof res.REFRESH_DATA !== 'undefined') {
|
||||
setTimeout(function () {
|
||||
// Create forum to submit using POST. This will prevent
|
||||
// exceeding the maximum length of URLs
|
||||
var form = '<form action="' + res.REFRESH_DATA.url.replace(/(&forum_id\[\]=[0-9]+)/g, '') + '" method="post">';
|
||||
$.each(forumIds, function (key, value) {
|
||||
form += '<input type="text" name="forum_id[]" value="' + value + '" />';
|
||||
});
|
||||
form += '</form>';
|
||||
$form = $(form);
|
||||
$('body').append($form);
|
||||
|
||||
// Hide the alert even if we refresh the page, in case the user
|
||||
// presses the back button.
|
||||
$dark.fadeOut(phpbb.alertTime, function () {
|
||||
if (typeof $alert !== 'undefined') {
|
||||
$alert.hide();
|
||||
}
|
||||
});
|
||||
|
||||
// Submit form
|
||||
$form.submit();
|
||||
}, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create AJAX request for each form data set
|
||||
$.each(formDataSets, function (key, formData) {
|
||||
$.ajax({
|
||||
url: $form.action,
|
||||
type: 'POST',
|
||||
data: formData + '&' + $submitButton.name + '=' + encodeURIComponent($submitButton.value) +
|
||||
'&creation_time=' + $form.find('input[type=hidden][name=creation_time]')[0].value +
|
||||
'&form_token=' + $form.find('input[type=hidden][name=form_token]')[0].value +
|
||||
'&' + $form.children('input[type=hidden]').serialize() +
|
||||
'&' + $form.find('input[type=checkbox][name^=inherit]').serialize(),
|
||||
success: handlePermissionReturn,
|
||||
error: handlePermissionReturn
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$('[data-ajax]').each(function() {
|
||||
var $this = $(this),
|
||||
ajax = $this.attr('data-ajax');
|
||||
|
||||
if (ajax !== 'false') {
|
||||
var fn = (ajax !== 'true') ? ajax : null;
|
||||
phpbb.ajaxify({
|
||||
selector: this,
|
||||
refresh: $this.attr('data-refresh') !== undefined,
|
||||
callback: fn
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Automatically resize textarea
|
||||
*/
|
||||
$(function() {
|
||||
phpbb.resizeTextArea($('textarea:not(.no-auto-resize)'), {minHeight: 75});
|
||||
|
||||
var $setPermissionsForm = $('form#set-permissions');
|
||||
if ($setPermissionsForm.length) {
|
||||
$setPermissionsForm.on('submit', function (e) {
|
||||
submitPermissions();
|
||||
e.preventDefault();
|
||||
});
|
||||
$setPermissionsForm.find('input[type=submit]').click(function() {
|
||||
$('input[type=submit]', $(this).parents($('form#set-permissions'))).removeAttr('data-clicked');
|
||||
$(this).attr('data-clicked', true);
|
||||
});
|
||||
}
|
||||
|
||||
if ($('#acp_help_phpbb')) {
|
||||
phpbb.prepareSendStats();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
})(jQuery); // Avoid conflicts with other libraries
|
||||
15
install/update/new/adm/style/captcha_recaptcha.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<!-- IF S_RECAPTCHA_AVAILABLE -->
|
||||
<dl>
|
||||
<dd>
|
||||
<noscript>
|
||||
<div>{L_RECAPTCHA_NOSCRIPT}</div>
|
||||
</noscript>
|
||||
|
||||
{L_RECAPTCHA_INVISIBLE}
|
||||
<script src="{RECAPTCHA_SERVER}.js?hl={LA_RECAPTCHA_LANG}" async defer></script>
|
||||
<div class="g-recaptcha" data-sitekey="{RECAPTCHA_PUBKEY}" data-size="invisible"></div>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ELSE -->
|
||||
{L_RECAPTCHA_NOT_AVAILABLE}
|
||||
<!-- ENDIF -->
|
||||
87
install/update/new/adm/style/installer_convert.html
Normal file
@@ -0,0 +1,87 @@
|
||||
<!-- INCLUDE installer_header.html -->
|
||||
<!-- IF TITLE --><h1>{TITLE}</h1><!-- ENDIF -->
|
||||
<!-- IF S_ERROR_BOX -->
|
||||
<div class="errorbox">
|
||||
<h3>{ERROR_TITLE}</h3>
|
||||
<p>{ERROR_MSG}</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF .errors -->
|
||||
<div id="error-container">
|
||||
<!-- BEGIN errors -->
|
||||
<strong>{errors.TITLE}</strong>
|
||||
<!-- IF errors.DESCRIPTION --><p>{errors.DESCRIPTION}</p><!-- ENDIF -->
|
||||
<!-- END errors -->
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF BODY --><p>{BODY}</p><!-- ENDIF -->
|
||||
<!-- IF CONTENT -->{CONTENT}<!-- ENDIF -->
|
||||
<!-- IF S_CONV_IN_PROGRESS -->
|
||||
<p class="centered-text"><a href="{U_ACTION}" class="button1<!-- IF S_REFRESH --> disabled<!-- ENDIF -->"<!-- IF S_REFRESH --> onclick="return false;"<!-- ENDIF -->>{L_SUBMIT}</a></p>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_CONTINUE -->
|
||||
<div id="download-wrapper" class="download-box">
|
||||
<p class="centered-text">
|
||||
<a href="{U_NEW_ACTION}" class="button1">{L_CONVERT_NEW_CONVERSION}</a>
|
||||
<a href="{U_CONTINUE_ACTION}" class="button1">{L_CONTINUE_OLD_CONVERSION}</a>
|
||||
</p>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_LIST -->
|
||||
<table class="table1">
|
||||
<caption>{L_AVAILABLE_CONVERTORS}</caption>
|
||||
<col class="col1" /><col class="col2" /><col class="col1" /><col class="col2" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{L_SOFTWARE}</th>
|
||||
<th>{L_VERSION}</th>
|
||||
<th>{L_AUTHOR}</th>
|
||||
<th>{L_CONVERT_OPTIONS}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- IF .convertors -->
|
||||
<!-- BEGIN convertors -->
|
||||
<tr>
|
||||
<td>{convertors.SOFTWARE}</td>
|
||||
<td>{convertors.VERSION}</td>
|
||||
<td>{convertors.AUTHOR}</td>
|
||||
<td><a href="{convertors.U_CONVERT}">{L_CONVERT}</a></td>
|
||||
</tr>
|
||||
<!-- END convertors -->
|
||||
<!-- ELSE -->
|
||||
<tr>
|
||||
<td>{L_NO_CONVERTORS}</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF .checks -->
|
||||
<fieldset>
|
||||
|
||||
<!-- BEGIN checks -->
|
||||
<!-- IF checks.S_LEGEND -->
|
||||
<!-- IF not checks.S_FIRST_ROW -->
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<!-- ENDIF -->
|
||||
<legend>{checks.LEGEND}</legend>
|
||||
<!-- IF checks.LEGEND_EXPLAIN --><p>{checks.LEGEND_EXPLAIN}</p><!-- ENDIF -->
|
||||
<!-- ELSE -->
|
||||
|
||||
<dl>
|
||||
<dt><label>{checks.TITLE}{L_COLON}</label><!-- IF checks.S_EXPLAIN --><br /><span class="explain">{checks.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
|
||||
<dd>{checks.RESULT}</dd>
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
<!-- END checks -->
|
||||
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<!-- INCLUDEJS {T_ASSETS_PATH}/javascript/installer.js -->
|
||||
<!-- INCLUDE installer_footer.html -->
|
||||
32
install/update/new/adm/style/installer_footer.html
Normal file
@@ -0,0 +1,32 @@
|
||||
</div>
|
||||
</div><!-- /#main -->
|
||||
</div>
|
||||
</div><!-- /#acp -->
|
||||
</div>
|
||||
|
||||
<div id="page-footer">
|
||||
<div class="copyright">
|
||||
{% if S_COPYRIGHT_HTML %}
|
||||
{{ CREDIT_LINE }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--
|
||||
installLang = {
|
||||
title: '{LA_TIMEOUT_DETECTED_TITLE}',
|
||||
msg: '{LA_TIMEOUT_DETECTED_MESSAGE}'
|
||||
};
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<script src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.4.1.min.js">\x3C/script>');</script><!-- ENDIF -->
|
||||
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||
<!-- INCLUDEJS admin.js -->
|
||||
{$SCRIPTS}
|
||||
|
||||
</body>
|
||||
</html>
|
||||
57
install/update/new/adm/style/installer_form.html
Normal file
@@ -0,0 +1,57 @@
|
||||
<!-- IF FORM_TITLE --><h1>{FORM_TITLE}</h1><!-- ENDIF -->
|
||||
<form id="<!-- IF FORM_ID -->{FORM_ID}<!-- ELSE -->install_install<!-- ENDIF -->" method="POST" action="{U_ACTION}">
|
||||
<!-- IF .options -->
|
||||
<!-- IF S_NOT_ONLY_BUTTON_FORM -->
|
||||
<fieldset>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- 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}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span class="explain">{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
|
||||
<dd>
|
||||
<!-- IF options.TYPE == 'text' -->
|
||||
<input type="text" name="{options.KEY}" value="{options.DEFAULT}" />
|
||||
<!-- ENDIF -->
|
||||
<!-- IF options.TYPE == 'email' -->
|
||||
<input type="email" name="{options.KEY}" value="{options.DEFAULT}" />
|
||||
<!-- ENDIF -->
|
||||
<!-- IF options.TYPE == 'password' -->
|
||||
<input type="password" name="{options.KEY}" />
|
||||
<!-- ENDIF -->
|
||||
<!-- IF options.TYPE == 'select' -->
|
||||
<select name="{options.KEY}">
|
||||
<!-- BEGIN options.OPTIONS -->
|
||||
<option value="{options.OPTIONS.value}"<!-- IF options.OPTIONS.selected --> selected<!-- ENDIF -->>{options.OPTIONS.label}</option>
|
||||
<!-- END options.OPTIONS -->
|
||||
</select>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF options.TYPE == 'radio' -->
|
||||
<!-- BEGIN options.OPTIONS -->
|
||||
<input type="radio" name="{options.KEY}" value="{options.OPTIONS.value}" <!-- IF options.OPTIONS.selected -->checked<!-- ENDIF --> /> {options.OPTIONS.label}
|
||||
<!-- END options.OPTIONS -->
|
||||
<!-- ENDIF -->
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ENDIF-->
|
||||
<!-- END options -->
|
||||
<!-- IF S_NOT_ONLY_BUTTON_FORM -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
<!-- IF .submit_buttons -->
|
||||
<fieldset class="submit-buttons">
|
||||
<legend>{L_SUBMIT}</legend>
|
||||
<!-- BEGIN submit_buttons -->
|
||||
<input class="<!-- IF not submit_buttons.IS_SECONDARY -->button1<!-- ELSE -->button2<!-- ENDIF --><!-- IF submit_buttons.DISABLED --> disabled<!-- ENDIF -->" type="submit" name="{submit_buttons.KEY}" value="{submit_buttons.TITLE}"<!-- IF submit_buttons.DISABLED --> disabled="disabled"<!-- ENDIF --> />
|
||||
<!-- END submit_buttons -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
</form>
|
||||
58
install/update/new/adm/style/installer_header.html
Normal file
@@ -0,0 +1,58 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{S_CONTENT_DIRECTION}" lang="{S_USER_LANG}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<!-- IF META -->{META}<!-- ENDIF -->
|
||||
<title>{PAGE_TITLE}</title>
|
||||
|
||||
<link href="{T_TEMPLATE_PATH}/admin.css" rel="stylesheet" type="text/css" media="screen" />
|
||||
</head>
|
||||
|
||||
<body class="{S_CONTENT_DIRECTION} nojs">
|
||||
<div id="wrap">
|
||||
<div id="page-header">
|
||||
<h1>{L_INSTALL_PANEL}</h1>
|
||||
<p id="skip"><a href="#acp">{L_SKIP}</a></p>
|
||||
<!-- IF S_LANG_SELECT -->
|
||||
<form method="post" action="#" id="language_selector">
|
||||
<fieldset class="nobg">
|
||||
<label for="language">{L_SELECT_LANG}{L_COLON}</label>
|
||||
<select id="language" name="language">
|
||||
<!-- BEGIN language_select_item -->
|
||||
<option value="{language_select_item.VALUE}"<!-- IF language_select_item.SELECTED --> selected="selected"<!-- ENDIF -->>{language_select_item.NAME}</option>
|
||||
<!-- END language_select_item -->
|
||||
</select>
|
||||
<input class="button1" type="submit" id="change_lang" name="change_lang" value="{L_CHANGE}" />
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ENDIF -->
|
||||
</div>
|
||||
|
||||
<div id="page-body">
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<!-- BEGIN t_block1 -->
|
||||
<li class="tab<!-- IF t_block1.S_SELECTED --> activetab<!-- ENDIF -->"><a href="{t_block1.U_TITLE}">{t_block1.L_TITLE}</a></li>
|
||||
<!-- END t_block1 -->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="acp">
|
||||
<div id="content">
|
||||
<div id="menu">
|
||||
<div class="menu-block no-header">
|
||||
<ul>
|
||||
<!-- BEGIN l_block1 -->
|
||||
<li<!-- IF l_block1.S_SELECTED --> id="activemenu"<!-- ENDIF -->><a href="{l_block1.U_TITLE}"><span>{l_block1.L_TITLE}</span></a></li>
|
||||
<!-- END l_block1 -->
|
||||
<!-- BEGIN l_block2 -->
|
||||
<li<!-- IF l_block2.S_SELECTED --> id="activemenu"<!-- ENDIF -->><span<!-- IF l_block2.S_COMPLETE --> class="completed"<!-- ENDIF --> id="installer-stage-{l_block2.STAGE_NAME}">{l_block2.L_TITLE}</span></li>
|
||||
<!-- END l_block2 -->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="main" class="install-body">
|
||||
<div class="main">
|
||||
13
install/update/new/adm/style/installer_install.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<!-- INCLUDE installer_header.html -->
|
||||
<h1>{TITLE}</h1>
|
||||
<p>{CONTENT}</p>
|
||||
<!-- IF SHOW_INSTALL_START_FORM -->
|
||||
<form id="install_install" method="post" action="{U_ACTION}">
|
||||
<fieldset class="submit-buttons">
|
||||
<legend>{L_SUBMIT}</legend>
|
||||
<input class="button1" name="install" type="submit" value="{L_INSTALL}" />
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ENDIF -->
|
||||
<!-- INCLUDEJS {T_ASSETS_PATH}/javascript/installer.js -->
|
||||
<!-- INCLUDE installer_footer.html -->
|
||||
6
install/update/new/adm/style/installer_main.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<!-- INCLUDE installer_header.html -->
|
||||
|
||||
<h1>{TITLE}</h1>
|
||||
<p>{BODY}</p>
|
||||
|
||||
<!-- INCLUDE installer_footer.html -->
|
||||
13
install/update/new/adm/style/installer_update.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<!-- INCLUDE installer_header.html -->
|
||||
<h1>{TITLE}</h1>
|
||||
<p>{CONTENT}</p>
|
||||
<!-- IF SHOW_INSTALL_START_FORM -->
|
||||
<form id="install_install" method="post" action="{U_ACTION}">
|
||||
<fieldset class="submit-buttons">
|
||||
<legend>{L_SUBMIT}</legend>
|
||||
<input class="button1" name="update" type="submit" value="{L_UPDATE}" />
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- ENDIF -->
|
||||
<!-- INCLUDEJS {T_ASSETS_PATH}/javascript/installer.js -->
|
||||
<!-- INCLUDE installer_footer.html -->
|
||||
@@ -0,0 +1,80 @@
|
||||
<!-- IF .deleted -->
|
||||
<h2>{L_FILES_DELETED}</h2>
|
||||
<div style="float: {S_CONTENT_FLOW_END};">» <a href="#" onclick="phpbb.toggleDisplay('deleted', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
|
||||
<p>{L_FILES_DELETED_EXPLAIN}</p>
|
||||
|
||||
<fieldset id="deleted">
|
||||
<legend><img src="{T_IMAGE_PATH}/icon_delete.gif" alt="{L_STATUS_DELETED}" /></legend>
|
||||
<!-- BEGIN deleted -->
|
||||
<dl>
|
||||
<dt style="width: 100%;"><!-- IF deleted.DIR_PART -->{deleted.DIR_PART}<!-- ENDIF --><strong>{deleted.FILE_PART}</strong></dt>
|
||||
</dl>
|
||||
<!-- END deleted -->
|
||||
</fieldset>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF .conflict -->
|
||||
<h2>{L_FILES_CONFLICT}</h2>
|
||||
<div style="float: {S_CONTENT_FLOW_END};">» <a href="#" onclick="phpbb.toggleDisplay('conflict', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
|
||||
<p>{L_FILES_CONFLICT_EXPLAIN}</p>
|
||||
|
||||
<fieldset id="conflict">
|
||||
<legend><img src="{T_IMAGE_PATH}/file_conflict.gif" alt="{L_STATUS_CONFLICT}" /></legend>
|
||||
<!-- BEGIN conflict -->
|
||||
<dl>
|
||||
<dt style="width: 100%;"><!-- IF conflict.DIR_PART -->{conflict.DIR_PART}<!-- ENDIF --><strong>{conflict.FILE_PART}</strong></dt>
|
||||
</dl>
|
||||
<!-- END conflict -->
|
||||
</fieldset>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF .modified -->
|
||||
<h2>{L_FILES_MODIFIED}</h2>
|
||||
<div style="float: {S_CONTENT_FLOW_END};">» <a href="#" onclick="phpbb.toggleDisplay('modified', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
|
||||
<p>{L_FILES_MODIFIED_EXPLAIN}</p>
|
||||
|
||||
<fieldset id="modified">
|
||||
<legend><img src="{T_IMAGE_PATH}/file_modified.gif" alt="{L_STATUS_MODIFIED}" /></legend>
|
||||
<!-- BEGIN modified -->
|
||||
<dl>
|
||||
<dt style="width: 100%;"><!-- IF modified.DIR_PART -->{modified.DIR_PART}<!-- ENDIF --><strong>{modified.FILE_PART}</strong></dt>
|
||||
</dl>
|
||||
<!-- END modified -->
|
||||
</fieldset>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF .new -->
|
||||
<h2>{L_FILES_NEW}</h2>
|
||||
<div style="float: {S_CONTENT_FLOW_END};">» <a href="#" onclick="phpbb.toggleDisplay('new_files', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
|
||||
<p>{L_FILES_NEW_EXPLAIN}</p>
|
||||
|
||||
<fieldset id="new_files" style="display: none;">
|
||||
<legend><img src="{T_IMAGE_PATH}/file_new.gif" alt="{L_STATUS_NEW}" /></legend>
|
||||
<!-- BEGIN new -->
|
||||
<dl>
|
||||
<dt style="width: 100%;"><!-- IF new.DIR_PART -->{new.DIR_PART}<!-- ENDIF --><strong>{new.FILE_PART}</strong>
|
||||
</dt>
|
||||
</dl>
|
||||
<!-- END new -->
|
||||
</fieldset>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF .not_modified -->
|
||||
<h2>{L_FILES_NOT_MODIFIED}</h2>
|
||||
<div style="float: {S_CONTENT_FLOW_END};">» <a href="#" onclick="phpbb.toggleDisplay('not_modified', 0); return false;">{L_TOGGLE_DISPLAY}</a></div>
|
||||
<p>{L_FILES_NOT_MODIFIED_EXPLAIN}</p>
|
||||
|
||||
<fieldset id="not_modified" style="display: none;">
|
||||
<legend><img src="{T_IMAGE_PATH}/file_not_modified.gif" alt="{L_STATUS_NOT_MODIFIED}" /></legend>
|
||||
<!-- BEGIN not_modified -->
|
||||
<dl>
|
||||
<dt style="width: 100%;"><!-- IF not_modified.DIR_PART -->{not_modified.DIR_PART}<!-- ENDIF --><strong>{not_modified.FILE_PART}</strong></dt>
|
||||
</dl>
|
||||
<!-- END not_modified -->
|
||||
</fieldset>
|
||||
|
||||
<!-- ENDIF -->
|
||||
46
install/update/new/adm/style/overall_footer.html
Normal file
@@ -0,0 +1,46 @@
|
||||
</div>
|
||||
</div><!-- /#main -->
|
||||
</div>
|
||||
</div><!-- /#acp -->
|
||||
</div>
|
||||
|
||||
<div id="page-footer">
|
||||
<div class="copyright">
|
||||
<!-- IF S_COPYRIGHT_HTML -->
|
||||
{CREDIT_LINE}
|
||||
<!-- IF TRANSLATION_INFO --><br />{TRANSLATION_INFO}<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF DEBUG_OUTPUT -->
|
||||
<!-- IF S_COPYRIGHT_HTML --><br /><!-- ENDIF -->
|
||||
{DEBUG_OUTPUT}
|
||||
<!-- ENDIF -->
|
||||
</div>
|
||||
|
||||
<div id="darkenwrapper" data-ajax-error-title="{L_AJAX_ERROR_TITLE}" data-ajax-error-text="{L_AJAX_ERROR_TEXT}" data-ajax-error-text-abort="{L_AJAX_ERROR_TEXT_ABORT}" data-ajax-error-text-timeout="{L_AJAX_ERROR_TEXT_TIMEOUT}" data-ajax-error-text-parsererror="{L_AJAX_ERROR_TEXT_PARSERERROR}">
|
||||
<div id="darken"> </div>
|
||||
</div>
|
||||
<div id="loading_indicator"></div>
|
||||
|
||||
<div id="phpbb_alert" class="phpbb_alert" data-l-err="{L_ERROR}" data-l-timeout-processing-req="{L_TIMEOUT_PROCESSING_REQ}">
|
||||
<a href="#" class="alert_close"></a>
|
||||
<h3 class="alert_title"></h3><p class="alert_text"></p>
|
||||
</div>
|
||||
<div id="phpbb_confirm" class="phpbb_alert">
|
||||
<a href="#" class="alert_close"></a>
|
||||
<div class="alert_text"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.4.1.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
|
||||
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||
<!-- INCLUDEJS ajax.js -->
|
||||
<!-- INCLUDEJS admin.js -->
|
||||
|
||||
<!-- EVENT acp_overall_footer_after -->
|
||||
{$SCRIPTS}
|
||||
|
||||
</body>
|
||||
</html>
|
||||
157
install/update/new/adm/style/overall_header.html
Normal file
@@ -0,0 +1,157 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{S_CONTENT_DIRECTION}" lang="{S_USER_LANG}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<!-- IF META -->{META}<!-- ENDIF -->
|
||||
<title>{PAGE_TITLE}</title>
|
||||
|
||||
<link href="{T_FONT_AWESOME_LINK}" rel="stylesheet">
|
||||
<link href="style/admin.css?assets_version={T_ASSETS_VERSION}" rel="stylesheet" type="text/css" media="screen" />
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
var jump_page = '{LA_JUMP_PAGE}{L_COLON}';
|
||||
var on_page = '{CURRENT_PAGE}';
|
||||
var per_page = '{PER_PAGE}';
|
||||
var base_url = '{BASE_URL|e('js')}';
|
||||
|
||||
/**
|
||||
* Jump to page
|
||||
*/
|
||||
function jumpto()
|
||||
{
|
||||
var page = prompt(jump_page, on_page);
|
||||
|
||||
if (page !== null && !isNaN(page) && page == Math.floor(page) && page > 0)
|
||||
{
|
||||
if (base_url.indexOf('?') == -1)
|
||||
{
|
||||
document.location.href = base_url + '?start=' + ((page - 1) * per_page);
|
||||
}
|
||||
else
|
||||
{
|
||||
document.location.href = base_url.replace(/&/g, '&') + '&start=' + ((page - 1) * per_page);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark/unmark checkboxes
|
||||
* id = ID of parent container, name = name prefix, state = state [true/false]
|
||||
*/
|
||||
function marklist(id, name, state)
|
||||
{
|
||||
var parent = document.getElementById(id) || document[id];
|
||||
|
||||
if (!parent)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var rb = parent.getElementsByTagName('input');
|
||||
|
||||
for (var r = 0; r < rb.length; r++)
|
||||
{
|
||||
if (rb[r].name.substr(0, name.length) == name && rb[r].disabled !== true)
|
||||
{
|
||||
rb[r].checked = state;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a member
|
||||
*/
|
||||
function find_username(url)
|
||||
{
|
||||
popup(url, 760, 570, '_usersearch');
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Window popup
|
||||
*/
|
||||
function popup(url, width, height, name)
|
||||
{
|
||||
if (!name)
|
||||
{
|
||||
name = '_popup';
|
||||
}
|
||||
|
||||
window.open(url.replace(/&/g, '&'), name, 'height=' + height + ',resizable=yes,scrollbars=yes, width=' + width);
|
||||
return false;
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<!-- EVENT acp_overall_header_head_append -->
|
||||
|
||||
{$STYLESHEETS}
|
||||
|
||||
<!-- EVENT acp_overall_header_stylesheets_after -->
|
||||
|
||||
</head>
|
||||
|
||||
<body class="{S_CONTENT_DIRECTION} {BODY_CLASS} nojs">
|
||||
|
||||
<!-- EVENT acp_overall_header_body_before -->
|
||||
|
||||
<div id="wrap">
|
||||
<div id="page-header">
|
||||
<h1>{L_ADMIN_PANEL}</h1>
|
||||
<p><a href="{U_ADM_INDEX}">{L_ADMIN_INDEX}</a> • <a href="{U_INDEX}">{L_FORUM_INDEX}</a></p>
|
||||
<p id="skip"><a href="#acp">{L_SKIP}</a></p>
|
||||
</div>
|
||||
|
||||
<div id="page-body">
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<!-- BEGIN t_block1 -->
|
||||
<li class="tab<!-- IF t_block1.S_SELECTED --> activetab<!-- ENDIF -->"><a href="{t_block1.U_TITLE}">{t_block1.L_TITLE}</a></li>
|
||||
<!-- END t_block1 -->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="acp">
|
||||
<div id="content">
|
||||
<div id="menu">
|
||||
<p>{L_LOGGED_IN_AS}<br /><strong>{USERNAME}</strong> [ <a href="{U_LOGOUT}">{L_LOGOUT}</a> ][ <a href="{U_ADM_LOGOUT}">{L_ADM_LOGOUT}</a> ] </p>
|
||||
<!-- DEFINE $LI_USED = 0 -->
|
||||
<!-- BEGIN l_block1 -->
|
||||
<!-- IF l_block1.S_SELECTED -->
|
||||
|
||||
<!-- BEGIN l_block2 -->
|
||||
<!-- IF .l_block1.l_block2.l_block3 -->
|
||||
<!-- IF $LI_USED --></ul></div><!-- ENDIF -->
|
||||
<div class="menu-block">
|
||||
<a class="header" href="javascript:void(0);">{l_block1.l_block2.L_TITLE}</a>
|
||||
<ul>
|
||||
<!-- DEFINE $LI_USED = 1 -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- BEGIN l_block3 -->
|
||||
<li<!-- IF l_block1.l_block2.l_block3.S_SELECTED --> id="activemenu"<!-- ENDIF -->><a href="{l_block1.l_block2.l_block3.U_TITLE}"><span>{l_block1.l_block2.l_block3.L_TITLE}</span></a></li>
|
||||
<!-- DEFINE $LI_USED = 1 -->
|
||||
<!-- END l_block3 -->
|
||||
<!-- END l_block2 -->
|
||||
|
||||
<!-- ENDIF -->
|
||||
<!-- END l_block1 -->
|
||||
<!-- IF $LI_USED -->
|
||||
</ul>
|
||||
</div>
|
||||
<!-- ENDIF -->
|
||||
</div>
|
||||
|
||||
<div id="main">
|
||||
<div class="main">
|
||||
{% if CONTAINER_EXCEPTION !== false %}
|
||||
<div class="errorbox">
|
||||
<p>{{ lang('CONTAINER_EXCEPTION') }}</p><br />
|
||||
<p>{{ lang('EXCEPTION') }}{{ lang('COLON') }} {{ CONTAINER_EXCEPTION.getMessage() }}</p>
|
||||
<pre>{{ CONTAINER_EXCEPTION.getTraceAsString() }}</pre>
|
||||
</div>
|
||||
{% endif %}
|
||||
40
install/update/new/adm/style/permission_forum_copy.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
|
||||
<h1>{L_ACP_FORUM_PERMISSIONS_COPY}</h1>
|
||||
|
||||
<p>{L_ACP_FORUM_PERMISSIONS_COPY_EXPLAIN}</p>
|
||||
|
||||
<form id="forum_perm_copy" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_LOOK_UP_FORUM}</legend>
|
||||
|
||||
<dl>
|
||||
<dt><!-- EVENT acp_permission_forum_copy_src_forum_prepend --><label for="src_forum">{L_COPY_PERMISSIONS_FROM}{L_COLON}</label><br /><span>{L_COPY_PERMISSIONS_FORUM_FROM_EXPLAIN}</span><!-- EVENT acp_permission_forum_copy_src_forum_append --></dt>
|
||||
<dd><select id="src_forum" name="src_forum_id"><option value="0">{L_SELECT_FORUM}</option><option value="-1">------------------</option>{S_FORUM_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_LOOK_UP_FORUM}</legend>
|
||||
<p>{L_LOOK_UP_FORUMS_EXPLAIN}</p>
|
||||
|
||||
<dl>
|
||||
<dt><!-- EVENT acp_permission_forum_copy_dest_forum_prepend --><label for="dest_forums">{L_COPY_PERMISSIONS_TO}{L_COLON}</label><br /><span>{L_COPY_PERMISSIONS_FORUM_TO_EXPLAIN}</span><!-- EVENT acp_permission_forum_copy_dest_forum_append --></dt>
|
||||
<dd><select id="dest_forums" name="dest_forum_ids[]" multiple="multiple" size="10">{S_FORUM_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="submit-buttons">
|
||||
<legend>{L_SUBMIT}</legend>
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
{S_HIDDEN_FIELDS}
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
152
install/update/new/adm/style/permission_mask.html
Normal file
@@ -0,0 +1,152 @@
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
var active_pmask = '0';
|
||||
var active_fmask = '0';
|
||||
var active_cat = '0';
|
||||
|
||||
var id = '000';
|
||||
|
||||
var role_options = new Array();
|
||||
|
||||
var no_role_assigned = "{LA_NO_ROLE_ASSIGNED}";
|
||||
|
||||
<!-- IF S_ROLE_JS_ARRAY -->
|
||||
{S_ROLE_JS_ARRAY}
|
||||
<!-- ENDIF -->
|
||||
// ]]>
|
||||
</script>
|
||||
<script src="style/permissions.js"></script>
|
||||
|
||||
<!-- BEGIN p_mask -->
|
||||
<div class="clearfix"></div>
|
||||
<h3>{p_mask.NAME}<!-- IF p_mask.S_LOCAL --> <span class="small"> [{p_mask.L_ACL_TYPE}]</span><!-- ENDIF --></h3>
|
||||
|
||||
<!-- BEGIN f_mask -->
|
||||
<div class="clearfix"></div>
|
||||
<fieldset class="permissions" id="perm{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">
|
||||
<legend id="legend{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">
|
||||
<!-- IF not p_mask.S_VIEW -->
|
||||
<input type="checkbox" style="display: none;" class="permissions-checkbox" name="inherit[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" id="checkbox{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" value="1" onclick="toggle_opacity('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')" />
|
||||
<!-- ELSE -->
|
||||
<!-- ENDIF -->
|
||||
<!-- IF p_mask.f_mask.PADDING --><span class="padding">{p_mask.f_mask.PADDING}{p_mask.f_mask.PADDING}</span><!-- ENDIF -->{p_mask.f_mask.NAME}
|
||||
</legend>
|
||||
<!-- IF not p_mask.S_VIEW -->
|
||||
<div class="permissions-switch">
|
||||
<div class="permissions-reset">
|
||||
<a href="#" onclick="mark_options('perm{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'y'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); init_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_ALL_YES}</a> · <a href="#" onclick="mark_options('perm{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'u'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); init_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_ALL_NO}</a> · <a href="#" onclick="mark_options('perm{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'n'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); init_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_ALL_NEVER}</a>
|
||||
</div>
|
||||
<a href="#" onclick="swap_options('{p_mask.S_ROW_COUNT}', '{p_mask.f_mask.S_ROW_COUNT}', '0', true); return false;">{L_ADVANCED_PERMISSIONS}</a><!-- IF not p_mask.S_VIEW and p_mask.f_mask.S_CUSTOM --> *<!-- ENDIF -->
|
||||
</div>
|
||||
<dl class="permissions-simple">
|
||||
<dt style="width: 20%"><label for="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">{L_ROLE}{L_COLON}</label></dt>
|
||||
{% if p_mask.f_mask.role_options %}
|
||||
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 20%">
|
||||
<div class="dropdown-container dropdown-{S_CONTENT_FLOW_END} dropdown-button-control roles-options" data-alt-text="{LA_ROLE_DESCRIPTION}">
|
||||
<select id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]">{p_mask.f_mask.S_ROLE_OPTIONS}</select>
|
||||
<span title="Roles" class="button icon-button tools-icon dropdown-trigger dropdown-select">{L_NO_ROLE_ASSIGNED}</span>
|
||||
<div class="dropdown hidden">
|
||||
<ul class="dropdown-contents" id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" >
|
||||
{% for role in p_mask.f_mask.role_options %}
|
||||
<li data-id="{{ role.ID }}" data-target-id="advanced{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" data-title="{{ role.TITLE }}"{% if role.SELECTED == true %} data-selected="{{ role.SELECTED }}"{% endif %}>{{ role.ROLE_NAME }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
<input type="hidden" data-name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]"{% if p_mask.f_mask.S_ROLE_ID %}value="{{ p_mask.f_mask.S_ROLE_ID }}"{% endif %} />
|
||||
</div>
|
||||
</dd>
|
||||
{% else %}
|
||||
<dd>{L_NO_ROLE_AVAILABLE}</dd>
|
||||
{% endif %}
|
||||
</dl>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- BEGIN category -->
|
||||
<!-- IF p_mask.f_mask.category.S_FIRST_ROW -->
|
||||
<!-- IF not p_mask.S_VIEW -->
|
||||
<div class="permissions-advanced" id="advanced{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" style="display: none;">
|
||||
<!-- ELSE -->
|
||||
<div class="permissions-advanced" id="advanced{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">
|
||||
<!-- ENDIF -->
|
||||
|
||||
<div class="permissions-category">
|
||||
<ul>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF p_mask.f_mask.category.S_YES -->
|
||||
<li class="permissions-preset-yes<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}">
|
||||
<!-- ELSEIF p_mask.f_mask.category.S_NEVER -->
|
||||
<li class="permissions-preset-never<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}">
|
||||
<!-- ELSEIF p_mask.f_mask.category.S_NO -->
|
||||
<li class="permissions-preset-no<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}">
|
||||
<!-- ELSE -->
|
||||
<li class="permissions-preset-custom<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}">
|
||||
<!-- ENDIF -->
|
||||
<a href="#" onclick="swap_options('{p_mask.S_ROW_COUNT}', '{p_mask.f_mask.S_ROW_COUNT}', '{p_mask.f_mask.category.S_ROW_COUNT}', false<!-- IF p_mask.S_VIEW -->, true<!-- ENDIF -->); return false;"><span class="tabbg"><span class="colour"></span>{p_mask.f_mask.category.CAT_NAME}</span></a></li>
|
||||
<!-- END category -->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- BEGIN category -->
|
||||
<div class="permissions-panel" id="options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}" <!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --><!-- ELSE --> style="display: none;"<!-- ENDIF -->>
|
||||
<div class="tablewrap">
|
||||
<table id="table{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}" class="table1 not-responsive">
|
||||
<colgroup>
|
||||
<col class="permissions-name" />
|
||||
<col class="permissions-yes" />
|
||||
<col class="permissions-no" />
|
||||
<!-- IF not p_mask.S_VIEW -->
|
||||
<col class="permissions-never" />
|
||||
<!-- ENDIF -->
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="name" scope="col"><strong>{L_ACL_SETTING}</strong></th>
|
||||
<!-- IF p_mask.S_VIEW -->
|
||||
<th class="value" scope="col">{L_ACL_YES}</th>
|
||||
<th class="value" scope="col">{L_ACL_NEVER}</th>
|
||||
<!-- ELSE -->
|
||||
<th class="value permissions-yes" scope="col"><a href="#" onclick="mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'y'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false, 'yes'); return false;">{L_ACL_YES}</a></th>
|
||||
<th class="value permissions-no" scope="col"><a href="#" onclick="mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'u'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false, 'no'); return false;">{L_ACL_NO}</a></th>
|
||||
<th class="value permissions-never" scope="col"><a href="#" onclick="mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'n'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false, 'never'); return false;">{L_ACL_NEVER}</a></th>
|
||||
<!-- ENDIF -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- BEGIN mask -->
|
||||
<!-- IF p_mask.f_mask.category.mask.S_ROW_COUNT is even --><tr class="row4"><!-- ELSE --><tr class="row3"><!-- ENDIF -->
|
||||
<th class="permissions-name<!-- IF p_mask.f_mask.category.mask.S_ROW_COUNT is even --> row4<!-- ELSE --> row3<!-- ENDIF -->"><!-- IF p_mask.f_mask.category.mask.U_TRACE --><a href="{p_mask.f_mask.category.mask.U_TRACE}" class="trace" onclick="popup(this.href, 750, 515, '_trace'); return false;" title="{L_TRACE_SETTING}"><img src="images/icon_trace.gif" alt="{L_TRACE_SETTING}" /></a> <!-- ENDIF -->{p_mask.f_mask.category.mask.PERMISSION}</th>
|
||||
<!-- IF p_mask.S_VIEW -->
|
||||
<td<!-- IF p_mask.f_mask.category.mask.S_YES --> class="yes"<!-- ENDIF -->> </td>
|
||||
<td<!-- IF p_mask.f_mask.category.mask.S_NEVER --> class="never"<!-- ENDIF -->></td>
|
||||
<!-- ELSE -->
|
||||
<td class="permissions-yes"><label for="{p_mask.f_mask.category.mask.S_FIELD_NAME}_y"><input onclick="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false)" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_y" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" class="radio" type="radio"<!-- IF p_mask.f_mask.category.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></label></td>
|
||||
<td class="permissions-no"><label for="{p_mask.f_mask.category.mask.S_FIELD_NAME}_u"><input onclick="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false)" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_u" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" class="radio" type="radio"<!-- IF p_mask.f_mask.category.mask.S_NO --> checked="checked"<!-- ENDIF --> value="-1" /></label></td>
|
||||
<td class="permissions-never"><label for="{p_mask.f_mask.category.mask.S_FIELD_NAME}_n"><input onclick="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false)" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_n" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" class="radio" type="radio"<!-- IF p_mask.f_mask.category.mask.S_NEVER --> checked="checked"<!-- ENDIF --> value="0" /></label></td>
|
||||
<!-- ENDIF -->
|
||||
</tr>
|
||||
<!-- END mask -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- IF not p_mask.S_VIEW -->
|
||||
<fieldset class="quick" style="margin-{S_CONTENT_FLOW_END}{L_COLON} 11px;">
|
||||
<p class="small">{L_APPLY_PERMISSIONS_EXPLAIN}</p>
|
||||
<input class="button1" type="submit" name="psubmit[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" value="{L_APPLY_PERMISSIONS}" />
|
||||
<!-- IF .p_mask.f_mask gt 1 or .p_mask gt 1 -->
|
||||
<p class="small"><a href="#" onclick="reset_opacity(0, '{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_MARK_ALL}</a> • <a href="#" onclick="reset_opacity(1, '{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_UNMARK_ALL}</a></p>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
</div>
|
||||
<!-- END category -->
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<!-- END f_mask -->
|
||||
|
||||
<!-- END p_mask -->
|
||||
304
install/update/new/adm/style/permissions.js
Normal file
@@ -0,0 +1,304 @@
|
||||
/**
|
||||
* Hide and show all checkboxes
|
||||
* status = true (show boxes), false (hide boxes)
|
||||
*/
|
||||
function display_checkboxes(status) {
|
||||
var form = document.getElementById('set-permissions');
|
||||
var cb = document.getElementsByTagName('input');
|
||||
var display;
|
||||
|
||||
//show
|
||||
if (status) {
|
||||
display = 'inline';
|
||||
}
|
||||
//hide
|
||||
else {
|
||||
display = 'none';
|
||||
}
|
||||
|
||||
for (var i = 0; i < cb.length; i++ ) {
|
||||
if (cb[i].className === 'permissions-checkbox') {
|
||||
cb[i].style.display = display;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change opacity of element
|
||||
* e = element
|
||||
* value = 0 (hidden) till 10 (fully visible)
|
||||
*/
|
||||
function set_opacity(e, value) {
|
||||
e.style.opacity = value/10;
|
||||
|
||||
//IE opacity currently turned off, because of its astronomical stupidity
|
||||
//e.style.filter = 'alpha(opacity=' + value*10 + ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the opacity and checkboxes
|
||||
* block_id = id of the element that needs to be toggled
|
||||
*/
|
||||
function toggle_opacity(block_id) {
|
||||
var cb = document.getElementById('checkbox' + block_id);
|
||||
var fs = document.getElementById('perm' + block_id);
|
||||
|
||||
if (cb.checked) {
|
||||
set_opacity(fs, 5);
|
||||
} else {
|
||||
set_opacity(fs, 10);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the opacity and checkboxes
|
||||
* value = 0 (checked) and 1 (unchecked)
|
||||
* except_id = id of the element not to hide
|
||||
*/
|
||||
function reset_opacity(status, except_id) {
|
||||
var perm = document.getElementById('set-permissions');
|
||||
var fs = perm.getElementsByTagName('fieldset');
|
||||
var opacity = 5;
|
||||
|
||||
if (status) {
|
||||
opacity = 10;
|
||||
}
|
||||
|
||||
for (var i = 0; i < fs.length; i++ ) {
|
||||
if (fs[i].className !== 'quick') {
|
||||
set_opacity(fs[i], opacity);
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof(except_id) !== 'undefined') {
|
||||
set_opacity(document.getElementById('perm' + except_id), 10);
|
||||
}
|
||||
|
||||
//reset checkboxes too
|
||||
marklist('set-permissions', 'inherit', !status);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether we have a full radiobutton row of true
|
||||
* index = offset for the row of inputs (0 == first row, 1 == second, 2 == third),
|
||||
* rb = array of radiobuttons
|
||||
*/
|
||||
function get_radio_status(index, rb) {
|
||||
for (var i = index; i < rb.length; i = i + 3 ) {
|
||||
if (rb[i].checked !== true) {
|
||||
if (i > index) {
|
||||
//at least one is true, but not all (custom)
|
||||
return 2;
|
||||
}
|
||||
//first one is not true
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// all radiobuttons true
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set tab colours
|
||||
* id = panel the tab needs to be set for,
|
||||
* init = initialising on open,
|
||||
* quick = If no calculation needed, this contains the colour
|
||||
*/
|
||||
function set_colours(id, init, quick) {
|
||||
var table = document.getElementById('table' + id);
|
||||
var tab = document.getElementById('tab' + id);
|
||||
|
||||
if (typeof(quick) !== 'undefined') {
|
||||
tab.className = 'permissions-preset-' + quick + ' activetab';
|
||||
return;
|
||||
}
|
||||
|
||||
var rb = table.getElementsByTagName('input');
|
||||
var colour = 'custom';
|
||||
|
||||
var status = get_radio_status(0, rb);
|
||||
|
||||
if (status === 1) {
|
||||
colour = 'yes';
|
||||
} else if (status === 0) {
|
||||
// We move on to No
|
||||
status = get_radio_status(1, rb);
|
||||
|
||||
if (status === 1) {
|
||||
colour = 'no';
|
||||
} else if (status === 0) {
|
||||
// We move on to Never
|
||||
status = get_radio_status(2, rb);
|
||||
|
||||
if (status === 1) {
|
||||
colour = 'never';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (init) {
|
||||
tab.className = 'permissions-preset-' + colour;
|
||||
} else {
|
||||
tab.className = 'permissions-preset-' + colour + ' activetab';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialise advanced tab colours on first load
|
||||
* block_id = block that is opened
|
||||
*/
|
||||
function init_colours(block_id) {
|
||||
var block = document.getElementById('advanced' + block_id);
|
||||
var panels = block.getElementsByTagName('div');
|
||||
var tab = document.getElementById('tab' + id);
|
||||
|
||||
for (var i = 0; i < panels.length; i++) {
|
||||
if (panels[i].className === 'permissions-panel') {
|
||||
set_colours(panels[i].id.replace(/options/, ''), true);
|
||||
}
|
||||
}
|
||||
|
||||
tab.className = tab.className + ' activetab';
|
||||
}
|
||||
|
||||
/**
|
||||
* Show/hide option panels
|
||||
* value = suffix for ID to show
|
||||
* adv = we are opening advanced permissions
|
||||
* view = called from view permissions
|
||||
*/
|
||||
function swap_options(pmask, fmask, cat, adv, view) {
|
||||
id = pmask + fmask + cat;
|
||||
active_option = active_pmask + active_fmask + active_cat;
|
||||
|
||||
var old_tab = document.getElementById('tab' + active_option);
|
||||
var new_tab = document.getElementById('tab' + id);
|
||||
var adv_block = document.getElementById('advanced' + pmask + fmask);
|
||||
|
||||
if (adv_block.style.display === 'block' && adv === true) {
|
||||
phpbb.toggleDisplay('advanced' + pmask + fmask, -1);
|
||||
reset_opacity(1);
|
||||
display_checkboxes(false);
|
||||
return;
|
||||
}
|
||||
|
||||
// no need to set anything if we are clicking on the same tab again
|
||||
if (new_tab === old_tab && !adv) {
|
||||
return;
|
||||
}
|
||||
|
||||
// init colours
|
||||
if (adv && (pmask + fmask) !== (active_pmask + active_fmask)) {
|
||||
init_colours(pmask + fmask);
|
||||
display_checkboxes(true);
|
||||
reset_opacity(1);
|
||||
} else if (adv) {
|
||||
//Checkbox might have been clicked, but we need full visibility
|
||||
display_checkboxes(true);
|
||||
reset_opacity(1);
|
||||
}
|
||||
|
||||
// set active tab
|
||||
old_tab.className = old_tab.className.replace(/\ activetab/g, '');
|
||||
new_tab.className = new_tab.className + ' activetab';
|
||||
|
||||
if (id === active_option && adv !== true) {
|
||||
return;
|
||||
}
|
||||
|
||||
phpbb.toggleDisplay('options' + active_option, -1);
|
||||
|
||||
//hiding and showing the checkbox
|
||||
if (document.getElementById('checkbox' + active_pmask + active_fmask)) {
|
||||
phpbb.toggleDisplay('checkbox' + pmask + fmask, -1);
|
||||
|
||||
if ((pmask + fmask) !== (active_pmask + active_fmask)) {
|
||||
document.getElementById('checkbox' + active_pmask + active_fmask).style.display = 'inline';
|
||||
}
|
||||
}
|
||||
|
||||
if (!view) {
|
||||
phpbb.toggleDisplay('advanced' + active_pmask + active_fmask, -1);
|
||||
}
|
||||
|
||||
if (!view) {
|
||||
phpbb.toggleDisplay('advanced' + pmask + fmask, 1);
|
||||
}
|
||||
phpbb.toggleDisplay('options' + id, 1);
|
||||
|
||||
active_pmask = pmask;
|
||||
active_fmask = fmask;
|
||||
active_cat = cat;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark all radio buttons in one panel
|
||||
* id = table ID container, s = status ['y'/'u'/'n']
|
||||
*/
|
||||
function mark_options(id, s) {
|
||||
var t = document.getElementById(id);
|
||||
|
||||
if (!t) {
|
||||
return;
|
||||
}
|
||||
|
||||
var rb = t.getElementsByTagName('input');
|
||||
|
||||
for (var r = 0; r < rb.length; r++) {
|
||||
if (rb[r].id.substr(rb[r].id.length-1) === s) {
|
||||
rb[r].checked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function mark_one_option(id, field_name, s) {
|
||||
var t = document.getElementById(id);
|
||||
|
||||
if (!t) {
|
||||
return;
|
||||
}
|
||||
|
||||
var rb = t.getElementsByTagName('input');
|
||||
|
||||
for (var r = 0; r < rb.length; r++) {
|
||||
if (rb[r].id.substr(rb[r].id.length-field_name.length-3, field_name.length) === field_name && rb[r].id.substr(rb[r].id.length-1) === s) {
|
||||
rb[r].checked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset role dropdown field to Select role... if an option gets changed
|
||||
*/
|
||||
function reset_role(id) {
|
||||
var t = document.getElementById(id);
|
||||
|
||||
if (!t) {
|
||||
return;
|
||||
}
|
||||
|
||||
t.options[0].selected = true;
|
||||
|
||||
var parent = t.parentNode;
|
||||
parent.querySelector('span.dropdown-trigger').innerText = no_role_assigned;
|
||||
parent.querySelector('input[data-name^=role]').value = '0';
|
||||
}
|
||||
|
||||
/**
|
||||
* Load role and set options accordingly
|
||||
*/
|
||||
function set_role_settings(role_id, target_id) {
|
||||
settings = role_options[role_id];
|
||||
|
||||
if (!settings) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Mark all options to no (unset) first...
|
||||
mark_options(target_id, 'u');
|
||||
|
||||
for (var r in settings) {
|
||||
mark_one_option(target_id, r, (settings[r] === 1) ? 'y' : 'n');
|
||||
}
|
||||
}
|
||||
40
install/update/new/adm/style/progress_bar.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<!-- INCLUDE simple_header.html -->
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
/**
|
||||
* Close previously opened popup
|
||||
*/
|
||||
function close_popup()
|
||||
{
|
||||
if (opener != null)
|
||||
{
|
||||
if (opener.close_waitscreen != null)
|
||||
{
|
||||
if (opener.close_waitscreen == 1)
|
||||
{
|
||||
opener.close_waitscreen = 0;
|
||||
self.close();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
setTimeout("close_popup()", 1000);
|
||||
return 0;
|
||||
}
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<div class="successbox">
|
||||
<h3>{L_PROGRESS}</h3>
|
||||
<img src="images/progress_bar.gif" alt="{L_PROGRESS}" />
|
||||
<p>{L_PROGRESS_EXPLAIN}</p>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
close_popup();
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<!-- INCLUDE simple_footer.html -->
|
||||
27
install/update/new/adm/style/simple_footer.html
Normal file
@@ -0,0 +1,27 @@
|
||||
<div style="text-align: {S_CONTENT_FLOW_END};"><a href="#" onclick="self.close(); return false;">{L_CLOSE_WINDOW}</a></div>
|
||||
<br /><br />
|
||||
</div>
|
||||
|
||||
<div id="page-footer">
|
||||
|
||||
<!-- IF S_COPYRIGHT_HTML -->
|
||||
<br />{CREDIT_LINE}
|
||||
<!-- IF TRANSLATION_INFO --><br />{TRANSLATION_INFO}<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF DEBUG_OUTPUT -->
|
||||
<!-- IF S_COPYRIGHT_HTML --><br /><br /><!-- ENDIF -->
|
||||
{DEBUG_OUTPUT}
|
||||
<!-- ENDIF -->
|
||||
|
||||
</div>
|
||||
|
||||
<script src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.4.1.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
|
||||
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||
|
||||
<!-- EVENT acp_simple_footer_after -->
|
||||
{$SCRIPTS}
|
||||
|
||||
</body>
|
||||
</html>
|
||||
96
install/update/new/adm/style/simple_header.html
Normal file
@@ -0,0 +1,96 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{S_CONTENT_DIRECTION}" lang="{S_USER_LANG}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<!-- IF META -->{META}<!-- ENDIF -->
|
||||
<title>{PAGE_TITLE}</title>
|
||||
|
||||
<link href="style/admin.css?assets_version={T_ASSETS_VERSION}" rel="stylesheet" type="text/css" media="screen" />
|
||||
|
||||
<script>
|
||||
// <![CDATA[
|
||||
var jump_page = '{LA_JUMP_PAGE}{L_COLON}';
|
||||
var on_page = '{CURRENT_PAGE}';
|
||||
var per_page = '{PER_PAGE}';
|
||||
var base_url = '{BASE_URL|e('js')}';
|
||||
|
||||
/**
|
||||
* Window popup
|
||||
*/
|
||||
function popup(url, width, height, name)
|
||||
{
|
||||
if (!name)
|
||||
{
|
||||
name = '_popup';
|
||||
}
|
||||
|
||||
window.open(url.replace(/&/g, '&'), name, 'height=' + height + ',resizable=yes,scrollbars=yes, width=' + width);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Jump to page
|
||||
*/
|
||||
function jumpto()
|
||||
{
|
||||
var page = prompt(jump_page, on_page);
|
||||
|
||||
if (page !== null && !isNaN(page) && page == Math.floor(page) && page > 0)
|
||||
{
|
||||
if (base_url.indexOf('?') == -1)
|
||||
{
|
||||
document.location.href = base_url + '?start=' + ((page - 1) * per_page);
|
||||
}
|
||||
else
|
||||
{
|
||||
document.location.href = base_url.replace(/&/g, '&') + '&start=' + ((page - 1) * per_page);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark/unmark checkboxes
|
||||
* id = ID of parent container, name = name prefix, state = state [true/false]
|
||||
*/
|
||||
function marklist(id, name, state)
|
||||
{
|
||||
var parent = document.getElementById(id);
|
||||
if (!parent)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var rb = parent.getElementsByTagName('input');
|
||||
|
||||
for (var r = 0; r < rb.length; r++)
|
||||
{
|
||||
if (rb[r].name.substr(0, name.length) == name && rb[r].disabled !== true)
|
||||
{
|
||||
rb[r].checked = state;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a member
|
||||
*/
|
||||
function find_username(url)
|
||||
{
|
||||
popup(url, 760, 570, '_usersearch');
|
||||
return false;
|
||||
}
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
<!-- EVENT acp_simple_header_head_append -->
|
||||
{$STYLESHEETS}
|
||||
<!-- EVENT acp_simple_header_stylesheets_after -->
|
||||
</head>
|
||||
|
||||
<body class="{S_CONTENT_DIRECTION} {BODY_CLASS}">
|
||||
|
||||
<!-- EVENT acp_simple_header_body_before -->
|
||||
|
||||
<div id="page-body" class="simple-page-body">
|
||||
6
install/update/new/assets/cookieconsent/cookieconsent.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
.cc-window{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{-webkit-transition:transform 1s ease;-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.cc-animate.cc-revoke.cc-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-top{-webkit-transform:translateY(0);transform:translateY(0)}.cc-animate.cc-revoke.cc-active.cc-bottom{-webkit-transform:translateY(0);transform:translateY(0)}.cc-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;-webkit-transition:max-height 1s;transition:max-height 1s}
|
||||
.cc-revoke,.cc-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-revoke:hover{text-decoration:underline}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em;text-decoration:underline}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}
|
||||
.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.cc-window.cc-banner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:100%;margin-right:1em}.cc-compliance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-floating .cc-compliance>.cc-btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em}
|
||||
@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-floating,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset}.cc-window.cc-banner .cc-message{margin-right:0}}
|
||||
.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-webkit-box-flex:0;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}
|
||||
.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em;margin-bottom:1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}
|
||||
1
install/update/new/assets/cookieconsent/cookieconsent.min.js
vendored
Normal file
1823
install/update/new/assets/javascript/core.js
Normal file
418
install/update/new/assets/javascript/editor.js
Normal file
@@ -0,0 +1,418 @@
|
||||
/**
|
||||
* bbCode control by subBlue design [ www.subBlue.com ]
|
||||
* Includes unixsafe colour palette selector by SHS`
|
||||
*/
|
||||
|
||||
// Startup variables
|
||||
var imageTag = false;
|
||||
var theSelection = false;
|
||||
var bbcodeEnabled = true;
|
||||
|
||||
// Check for Browser & Platform for PC & IE specific bits
|
||||
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
|
||||
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
|
||||
var clientVer = parseInt(navigator.appVersion, 10); // Get browser version
|
||||
|
||||
var is_ie = ((clientPC.indexOf('msie') !== -1) && (clientPC.indexOf('opera') === -1));
|
||||
var is_win = ((clientPC.indexOf('win') !== -1) || (clientPC.indexOf('16bit') !== -1));
|
||||
var baseHeight;
|
||||
|
||||
/**
|
||||
* Fix a bug involving the TextRange object. From
|
||||
* http://www.frostjedi.com/terra/scripts/demo/caretBug.html
|
||||
*/
|
||||
function initInsertions() {
|
||||
var doc;
|
||||
|
||||
if (document.forms[form_name]) {
|
||||
doc = document;
|
||||
} else {
|
||||
doc = opener.document;
|
||||
}
|
||||
|
||||
var textarea = doc.forms[form_name].elements[text_name];
|
||||
|
||||
if (is_ie && typeof(baseHeight) !== 'number') {
|
||||
textarea.focus();
|
||||
baseHeight = doc.selection.createRange().duplicate().boundingHeight;
|
||||
|
||||
if (!document.forms[form_name]) {
|
||||
document.body.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* bbstyle
|
||||
*/
|
||||
function bbstyle(bbnumber) {
|
||||
if (bbnumber !== -1) {
|
||||
bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]);
|
||||
} else {
|
||||
insert_text('[*]');
|
||||
document.forms[form_name].elements[text_name].focus();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply bbcodes
|
||||
*/
|
||||
function bbfontstyle(bbopen, bbclose) {
|
||||
theSelection = false;
|
||||
|
||||
var textarea = document.forms[form_name].elements[text_name];
|
||||
|
||||
textarea.focus();
|
||||
|
||||
if ((clientVer >= 4) && is_ie && is_win) {
|
||||
// Get text selection
|
||||
theSelection = document.selection.createRange().text;
|
||||
|
||||
if (theSelection) {
|
||||
// Add tags around selection
|
||||
document.selection.createRange().text = bbopen + theSelection + bbclose;
|
||||
textarea.focus();
|
||||
theSelection = '';
|
||||
return;
|
||||
}
|
||||
} else if (textarea.selectionEnd && (textarea.selectionEnd - textarea.selectionStart > 0)) {
|
||||
mozWrap(textarea, bbopen, bbclose);
|
||||
textarea.focus();
|
||||
theSelection = '';
|
||||
return;
|
||||
}
|
||||
|
||||
//The new position for the cursor after adding the bbcode
|
||||
var caret_pos = getCaretPosition(textarea).start;
|
||||
var new_pos = caret_pos + bbopen.length;
|
||||
|
||||
// Open tag
|
||||
insert_text(bbopen + bbclose);
|
||||
|
||||
// Center the cursor when we don't have a selection
|
||||
// Gecko and proper browsers
|
||||
if (!isNaN(textarea.selectionStart)) {
|
||||
textarea.selectionStart = new_pos;
|
||||
textarea.selectionEnd = new_pos;
|
||||
}
|
||||
// IE
|
||||
else if (document.selection) {
|
||||
var range = textarea.createTextRange();
|
||||
range.move("character", new_pos);
|
||||
range.select();
|
||||
storeCaret(textarea);
|
||||
}
|
||||
|
||||
textarea.focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert text at position
|
||||
*/
|
||||
function insert_text(text, spaces, popup) {
|
||||
var textarea;
|
||||
|
||||
if (!popup) {
|
||||
textarea = document.forms[form_name].elements[text_name];
|
||||
} else {
|
||||
textarea = opener.document.forms[form_name].elements[text_name];
|
||||
}
|
||||
|
||||
if (spaces) {
|
||||
text = ' ' + text + ' ';
|
||||
}
|
||||
|
||||
// Since IE9, IE also has textarea.selectionStart, but it still needs to be treated the old way.
|
||||
// Therefore we simply add a !is_ie here until IE fixes the text-selection completely.
|
||||
if (!isNaN(textarea.selectionStart) && !is_ie) {
|
||||
var sel_start = textarea.selectionStart;
|
||||
var sel_end = textarea.selectionEnd;
|
||||
|
||||
mozWrap(textarea, text, '');
|
||||
textarea.selectionStart = sel_start + text.length;
|
||||
textarea.selectionEnd = sel_end + text.length;
|
||||
} else if (textarea.createTextRange && textarea.caretPos) {
|
||||
if (baseHeight !== textarea.caretPos.boundingHeight) {
|
||||
textarea.focus();
|
||||
storeCaret(textarea);
|
||||
}
|
||||
|
||||
var caret_pos = textarea.caretPos;
|
||||
caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) === ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
|
||||
} else {
|
||||
textarea.value = textarea.value + text;
|
||||
}
|
||||
|
||||
if (!popup) {
|
||||
textarea.focus();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add inline attachment at position
|
||||
*/
|
||||
function attachInline(index, filename) {
|
||||
insert_text('[attachment=' + index + ']' + filename + '[/attachment]');
|
||||
document.forms[form_name].elements[text_name].focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add quote text to message
|
||||
*/
|
||||
function addquote(post_id, username, l_wrote, attributes) {
|
||||
var message_name = 'message_' + post_id;
|
||||
var theSelection = '';
|
||||
var divarea = false;
|
||||
var i;
|
||||
|
||||
if (l_wrote === undefined) {
|
||||
// Backwards compatibility
|
||||
l_wrote = 'wrote';
|
||||
}
|
||||
if (typeof attributes !== 'object') {
|
||||
attributes = {};
|
||||
}
|
||||
|
||||
if (document.all) {
|
||||
divarea = document.all[message_name];
|
||||
} else {
|
||||
divarea = document.getElementById(message_name);
|
||||
}
|
||||
|
||||
// Get text selection - not only the post content :(
|
||||
// IE9 must use the document.selection method but has the *.getSelection so we just force no IE
|
||||
if (window.getSelection && !is_ie && !window.opera) {
|
||||
theSelection = window.getSelection().toString();
|
||||
} else if (document.getSelection && !is_ie) {
|
||||
theSelection = document.getSelection();
|
||||
} else if (document.selection) {
|
||||
theSelection = document.selection.createRange().text;
|
||||
}
|
||||
|
||||
if (theSelection === '' || typeof theSelection === 'undefined' || theSelection === null) {
|
||||
if (divarea.innerHTML) {
|
||||
theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');
|
||||
theSelection = theSelection.replace(/<br\/>/ig, '\n');
|
||||
theSelection = theSelection.replace(/<\;/ig, '<');
|
||||
theSelection = theSelection.replace(/>\;/ig, '>');
|
||||
theSelection = theSelection.replace(/&\;/ig, '&');
|
||||
theSelection = theSelection.replace(/ \;/ig, ' ');
|
||||
} else if (document.all) {
|
||||
theSelection = divarea.innerText;
|
||||
} else if (divarea.textContent) {
|
||||
theSelection = divarea.textContent;
|
||||
} else if (divarea.firstChild.nodeValue) {
|
||||
theSelection = divarea.firstChild.nodeValue;
|
||||
}
|
||||
}
|
||||
|
||||
if (theSelection) {
|
||||
if (bbcodeEnabled) {
|
||||
attributes.author = username;
|
||||
insert_text(generateQuote(theSelection, attributes));
|
||||
} else {
|
||||
insert_text(username + ' ' + l_wrote + ':' + '\n');
|
||||
var lines = split_lines(theSelection);
|
||||
for (i = 0; i < lines.length; i++) {
|
||||
insert_text('> ' + lines[i] + '\n');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a quote block for given text
|
||||
*
|
||||
* Possible attributes:
|
||||
* - author: author's name (usually a username)
|
||||
* - post_id: post_id of the post being quoted
|
||||
* - user_id: user_id of the user being quoted
|
||||
* - time: timestamp of the original message
|
||||
*
|
||||
* @param {!string} text Quote's text
|
||||
* @param {!Object} attributes Quote's attributes
|
||||
* @return {!string} Quote block to be used in a new post/text
|
||||
*/
|
||||
function generateQuote(text, attributes) {
|
||||
text = text.replace(/^\s+/, '').replace(/\s+$/, '');
|
||||
var quote = '[quote';
|
||||
if (attributes.author) {
|
||||
// Add the author as the BBCode's default attribute
|
||||
quote += '=' + formatAttributeValue(attributes.author);
|
||||
delete attributes.author;
|
||||
}
|
||||
for (var name in attributes) {
|
||||
if (attributes.hasOwnProperty(name)) {
|
||||
var value = attributes[name];
|
||||
quote += ' ' + name + '=' + formatAttributeValue(value.toString());
|
||||
}
|
||||
}
|
||||
quote += ']';
|
||||
var newline = ((quote + text + '[/quote]').length > 80 || text.indexOf('\n') > -1) ? '\n' : '';
|
||||
quote += newline + text + newline + '[/quote]';
|
||||
|
||||
return quote;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format given string to be used as an attribute value
|
||||
*
|
||||
* Will return the string as-is if it can be used in a BBCode without quotes. Otherwise,
|
||||
* it will use either single- or double- quotes depending on whichever requires less escaping.
|
||||
* Quotes and backslashes are escaped with backslashes where necessary
|
||||
*
|
||||
* @param {!string} str Original string
|
||||
* @return {!string} Same string if possible, escaped string within quotes otherwise
|
||||
*/
|
||||
function formatAttributeValue(str) {
|
||||
if (!/[ "'\\\]]/.test(str)) {
|
||||
// Return as-is if it contains none of: space, ' " \ or ]
|
||||
return str;
|
||||
}
|
||||
var singleQuoted = "'" + str.replace(/[\\']/g, '\\$&') + "'",
|
||||
doubleQuoted = '"' + str.replace(/[\\"]/g, '\\$&') + '"';
|
||||
|
||||
return (singleQuoted.length < doubleQuoted.length) ? singleQuoted : doubleQuoted;
|
||||
}
|
||||
|
||||
function split_lines(text) {
|
||||
var lines = text.split('\n');
|
||||
var splitLines = new Array();
|
||||
var j = 0;
|
||||
var i;
|
||||
|
||||
for(i = 0; i < lines.length; i++) {
|
||||
if (lines[i].length <= 80) {
|
||||
splitLines[j] = lines[i];
|
||||
j++;
|
||||
} else {
|
||||
var line = lines[i];
|
||||
var splitAt;
|
||||
do {
|
||||
splitAt = line.indexOf(' ', 80);
|
||||
|
||||
if (splitAt === -1) {
|
||||
splitLines[j] = line;
|
||||
j++;
|
||||
} else {
|
||||
splitLines[j] = line.substring(0, splitAt);
|
||||
line = line.substring(splitAt);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
while(splitAt !== -1);
|
||||
}
|
||||
}
|
||||
return splitLines;
|
||||
}
|
||||
|
||||
/**
|
||||
* From http://www.massless.org/mozedit/
|
||||
*/
|
||||
function mozWrap(txtarea, open, close) {
|
||||
var selLength = (typeof(txtarea.textLength) === 'undefined') ? txtarea.value.length : txtarea.textLength;
|
||||
var selStart = txtarea.selectionStart;
|
||||
var selEnd = txtarea.selectionEnd;
|
||||
var scrollTop = txtarea.scrollTop;
|
||||
|
||||
var s1 = (txtarea.value).substring(0,selStart);
|
||||
var s2 = (txtarea.value).substring(selStart, selEnd);
|
||||
var s3 = (txtarea.value).substring(selEnd, selLength);
|
||||
|
||||
txtarea.value = s1 + open + s2 + close + s3;
|
||||
txtarea.selectionStart = selStart + open.length;
|
||||
txtarea.selectionEnd = selEnd + open.length;
|
||||
txtarea.focus();
|
||||
txtarea.scrollTop = scrollTop;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert at Caret position. Code from
|
||||
* http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
|
||||
*/
|
||||
function storeCaret(textEl) {
|
||||
if (textEl.createTextRange && document.selection) {
|
||||
textEl.caretPos = document.selection.createRange().duplicate();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Caret Position object
|
||||
*/
|
||||
function caretPosition() {
|
||||
var start = null;
|
||||
var end = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the caret position in an textarea
|
||||
*/
|
||||
function getCaretPosition(txtarea) {
|
||||
var caretPos = new caretPosition();
|
||||
|
||||
// simple Gecko/Opera way
|
||||
if (txtarea.selectionStart || txtarea.selectionStart === 0) {
|
||||
caretPos.start = txtarea.selectionStart;
|
||||
caretPos.end = txtarea.selectionEnd;
|
||||
}
|
||||
// dirty and slow IE way
|
||||
else if (document.selection) {
|
||||
// get current selection
|
||||
var range = document.selection.createRange();
|
||||
|
||||
// a new selection of the whole textarea
|
||||
var range_all = document.body.createTextRange();
|
||||
range_all.moveToElementText(txtarea);
|
||||
|
||||
// calculate selection start point by moving beginning of range_all to beginning of range
|
||||
var sel_start;
|
||||
for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++) {
|
||||
range_all.moveStart('character', 1);
|
||||
}
|
||||
|
||||
txtarea.sel_start = sel_start;
|
||||
|
||||
// we ignore the end value for IE, this is already dirty enough and we don't need it
|
||||
caretPos.start = txtarea.sel_start;
|
||||
caretPos.end = txtarea.sel_start;
|
||||
}
|
||||
|
||||
return caretPos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow to use tab character when typing code
|
||||
* Keep indentation of last line of code when typing code
|
||||
*/
|
||||
(function($) {
|
||||
$(document).ready(function() {
|
||||
var doc, textarea;
|
||||
|
||||
// find textarea, make sure browser supports necessary functions
|
||||
if (document.forms[form_name]) {
|
||||
doc = document;
|
||||
} else {
|
||||
doc = opener.document;
|
||||
}
|
||||
|
||||
if (!doc.forms[form_name]) {
|
||||
return;
|
||||
}
|
||||
|
||||
textarea = doc.forms[form_name].elements[text_name];
|
||||
|
||||
phpbb.applyCodeEditor(textarea);
|
||||
if ($('#attach-panel').length) {
|
||||
phpbb.showDragNDrop(textarea);
|
||||
}
|
||||
|
||||
$('textarea').on('keydown', function (e) {
|
||||
if (e.which === 13 && (e.metaKey || e.ctrlKey)) {
|
||||
$(this).closest('form').find(':submit').click();
|
||||
}
|
||||
});
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
615
install/update/new/assets/javascript/installer.js
Normal file
@@ -0,0 +1,615 @@
|
||||
/**
|
||||
* Installer's AJAX frontend handler
|
||||
*/
|
||||
|
||||
(function($) { // Avoid conflicts with other libraries
|
||||
'use strict';
|
||||
|
||||
// Installer variables
|
||||
var pollTimer = null;
|
||||
var nextReadPosition = 0;
|
||||
var progressBarTriggered = false;
|
||||
var progressTimer = null;
|
||||
var currentProgress = 0;
|
||||
var refreshRequested = false;
|
||||
var transmissionOver = false;
|
||||
var statusCount = 0;
|
||||
|
||||
// Template related variables
|
||||
var $contentWrapper = $('.install-body').find('.main');
|
||||
|
||||
// Intercept form submits
|
||||
interceptFormSubmit($('#install_install'));
|
||||
|
||||
/**
|
||||
* Creates an XHR object
|
||||
*
|
||||
* jQuery cannot be used as the response is streamed, and
|
||||
* as of now, jQuery does not provide access to the response until
|
||||
* the connection is not closed.
|
||||
*
|
||||
* @return XMLHttpRequest
|
||||
*/
|
||||
function createXhrObject() {
|
||||
return new XMLHttpRequest();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays error, warning and log messages
|
||||
*
|
||||
* @param type
|
||||
* @param messages
|
||||
*/
|
||||
function addMessage(type, messages) {
|
||||
// Get message containers
|
||||
var $errorContainer = $('#error-container');
|
||||
var $warningContainer = $('#warning-container');
|
||||
var $logContainer = $('#log-container');
|
||||
|
||||
var $title, $description, $msgElement, arraySize = messages.length;
|
||||
for (var i = 0; i < arraySize; i++) {
|
||||
$msgElement = $('<div />');
|
||||
$title = $('<strong />');
|
||||
$title.text(messages[i].title);
|
||||
$msgElement.append($title);
|
||||
|
||||
if (messages[i].hasOwnProperty('description')) {
|
||||
$description = $('<p />');
|
||||
$description.html(messages[i].description);
|
||||
$msgElement.append($description);
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case 'error':
|
||||
$msgElement.addClass('errorbox');
|
||||
$errorContainer.append($msgElement);
|
||||
break;
|
||||
case 'warning':
|
||||
$msgElement.addClass('warningbox');
|
||||
$warningContainer.append($msgElement);
|
||||
break;
|
||||
case 'log':
|
||||
$msgElement.addClass('log');
|
||||
$logContainer.prepend($msgElement);
|
||||
$logContainer.addClass('show_log_container');
|
||||
break;
|
||||
case 'success':
|
||||
$msgElement.addClass('successbox');
|
||||
$errorContainer.prepend($msgElement);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render a download box
|
||||
*/
|
||||
function addDownloadBox(downloadArray)
|
||||
{
|
||||
var $downloadContainer = $('#download-wrapper');
|
||||
var $downloadBox, $title, $content, $link;
|
||||
|
||||
for (var i = 0; i < downloadArray.length; i++) {
|
||||
$downloadBox = $('<div />');
|
||||
$downloadBox.addClass('download-box');
|
||||
|
||||
$title = $('<strong />');
|
||||
$title.text(downloadArray[i].title);
|
||||
$downloadBox.append($title);
|
||||
|
||||
if (downloadArray[i].hasOwnProperty('msg')) {
|
||||
$content = $('<p />');
|
||||
$content.text(downloadArray[i].msg);
|
||||
$downloadBox.append($content);
|
||||
}
|
||||
|
||||
$link = $('<a />');
|
||||
$link.addClass('button1');
|
||||
$link.attr('href', downloadArray[i].href);
|
||||
$link.text(downloadArray[i].download);
|
||||
$downloadBox.append($link);
|
||||
|
||||
$downloadContainer.append($downloadBox);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render update files' status
|
||||
*/
|
||||
function addUpdateFileStatus(fileStatus)
|
||||
{
|
||||
var $statusContainer = $('#file-status-wrapper');
|
||||
$statusContainer.html(fileStatus);
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays a form from the response
|
||||
*
|
||||
* @param formHtml
|
||||
*/
|
||||
function addForm(formHtml) {
|
||||
var $formContainer = $('#form-wrapper');
|
||||
$formContainer.html(formHtml);
|
||||
var $form = $('#install_install');
|
||||
interceptFormSubmit($form);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles navigation status updates
|
||||
*
|
||||
* @param navObj
|
||||
*/
|
||||
function updateNavbarStatus(navObj) {
|
||||
var navID, $stage, $stageListItem, $active;
|
||||
$active = $('#activemenu');
|
||||
|
||||
if (navObj.hasOwnProperty('finished')) {
|
||||
// This should be an Array
|
||||
var navItems = navObj.finished;
|
||||
|
||||
for (var i = 0; i < navItems.length; i++) {
|
||||
navID = 'installer-stage-' + navItems[i];
|
||||
$stage = $('#' + navID);
|
||||
$stageListItem = $stage.parent();
|
||||
|
||||
if ($active.length && $active.is($stageListItem)) {
|
||||
$active.removeAttr('id');
|
||||
}
|
||||
|
||||
$stage.addClass('completed');
|
||||
}
|
||||
}
|
||||
|
||||
if (navObj.hasOwnProperty('active')) {
|
||||
navID = 'installer-stage-' + navObj.active;
|
||||
$stage = $('#' + navID);
|
||||
$stageListItem = $stage.parent();
|
||||
|
||||
if ($active.length && !$active.is($stageListItem)) {
|
||||
$active.removeAttr('id');
|
||||
}
|
||||
|
||||
$stageListItem.attr('id', 'activemenu');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders progress bar
|
||||
*
|
||||
* @param progressObject
|
||||
*/
|
||||
function setProgress(progressObject) {
|
||||
var $statusText, $progressBar, $progressText, $progressFiller, $progressFillerText;
|
||||
|
||||
if (progressObject.task_name.length) {
|
||||
if (!progressBarTriggered) {
|
||||
// Create progress bar
|
||||
var $progressBarWrapper = $('#progress-bar-container');
|
||||
|
||||
// Create progress bar elements
|
||||
$progressBar = $('<div />');
|
||||
$progressBar.attr('id', 'progress-bar');
|
||||
$progressText = $('<p />');
|
||||
$progressText.attr('id', 'progress-bar-text');
|
||||
$progressFiller = $('<div />');
|
||||
$progressFiller.attr('id', 'progress-bar-filler');
|
||||
$progressFillerText = $('<p />');
|
||||
$progressFillerText.attr('id', 'progress-bar-filler-text');
|
||||
|
||||
$statusText = $('<p />');
|
||||
$statusText.attr('id', 'progress-status-text');
|
||||
|
||||
$progressFiller.append($progressFillerText);
|
||||
$progressBar.append($progressText);
|
||||
$progressBar.append($progressFiller);
|
||||
|
||||
$progressBarWrapper.append($statusText);
|
||||
$progressBarWrapper.append($progressBar);
|
||||
|
||||
$progressFillerText.css('width', $progressBar.width());
|
||||
|
||||
progressBarTriggered = true;
|
||||
} else if (progressObject.hasOwnProperty('restart')) {
|
||||
clearInterval(progressTimer);
|
||||
|
||||
$progressFiller = $('#progress-bar-filler');
|
||||
$progressFillerText = $('#progress-bar-filler-text');
|
||||
$progressText = $('#progress-bar-text');
|
||||
$statusText = $('#progress-status-text');
|
||||
|
||||
$progressText.text('0%');
|
||||
$progressFillerText.text('0%');
|
||||
$progressFiller.css('width', '0%');
|
||||
|
||||
currentProgress = 0;
|
||||
} else {
|
||||
$statusText = $('#progress-status-text');
|
||||
}
|
||||
|
||||
// Update progress bar
|
||||
$statusText.text(progressObject.task_name + '…');
|
||||
incrementProgressBar(Math.round(progressObject.task_num / progressObject.task_count * 100));
|
||||
}
|
||||
}
|
||||
|
||||
// Set cookies
|
||||
function setCookies(cookies) {
|
||||
var cookie;
|
||||
|
||||
for (var i = 0; i < cookies.length; i++) {
|
||||
// Set cookie name and value
|
||||
cookie = encodeURIComponent(cookies[i].name) + '=' + encodeURIComponent(cookies[i].value);
|
||||
// Set path
|
||||
cookie += '; path=/';
|
||||
document.cookie = cookie;
|
||||
}
|
||||
}
|
||||
|
||||
// Redirects user
|
||||
function redirect(url, use_ajax) {
|
||||
if (use_ajax) {
|
||||
resetPolling();
|
||||
|
||||
var xhReq = createXhrObject();
|
||||
xhReq.open('GET', url, true);
|
||||
xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||
xhReq.send();
|
||||
|
||||
startPolling(xhReq);
|
||||
} else {
|
||||
window.location.href = url;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse messages from the response object
|
||||
*
|
||||
* @param messageJSON
|
||||
*/
|
||||
function parseMessage(messageJSON) {
|
||||
$('#loading_indicator').css('display', 'none');
|
||||
var responseObject;
|
||||
|
||||
try {
|
||||
responseObject = JSON.parse(messageJSON);
|
||||
} catch (err) {
|
||||
if (window.console) {
|
||||
console.log('Failed to parse JSON object\n\nMessage: ' + err.message + '\n\nServer Response: ' + messageJSON);
|
||||
} else {
|
||||
alert('Failed to parse JSON object\n\nMessage: ' + err.message + '\n\nServer Response: ' + messageJSON);
|
||||
}
|
||||
|
||||
resetPolling();
|
||||
return;
|
||||
}
|
||||
|
||||
// Parse object
|
||||
if (responseObject.hasOwnProperty('errors')) {
|
||||
addMessage('error', responseObject.errors);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('warnings')) {
|
||||
addMessage('warning', responseObject.warnings);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('logs')) {
|
||||
addMessage('log', responseObject.logs);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('success')) {
|
||||
addMessage('success', responseObject.success);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('form')) {
|
||||
addForm(responseObject.form);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('progress')) {
|
||||
setProgress(responseObject.progress);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('download')) {
|
||||
addDownloadBox(responseObject.download);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('file_status')) {
|
||||
addUpdateFileStatus(responseObject.file_status);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('nav')) {
|
||||
updateNavbarStatus(responseObject.nav);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('cookies')) {
|
||||
setCookies(responseObject.cookies);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('refresh')) {
|
||||
refreshRequested = true;
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('redirect')) {
|
||||
redirect(responseObject.redirect.url, responseObject.redirect.use_ajax);
|
||||
}
|
||||
|
||||
if (responseObject.hasOwnProperty('over')) {
|
||||
if (responseObject.over) {
|
||||
transmissionOver = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes status data
|
||||
*
|
||||
* @param status
|
||||
*/
|
||||
function processTimeoutResponse(status) {
|
||||
if (statusCount === 12) { // 1 minute hard cap
|
||||
status = 'fail';
|
||||
}
|
||||
|
||||
if (status === 'continue') {
|
||||
refreshRequested = false;
|
||||
doRefresh();
|
||||
} else if (status === 'running') {
|
||||
statusCount++;
|
||||
$('#loading_indicator').css('display', 'block');
|
||||
setTimeout(queryInstallerStatus, 5000);
|
||||
} else {
|
||||
$('#loading_indicator').css('display', 'none');
|
||||
addMessage('error',
|
||||
[{
|
||||
title: installLang.title,
|
||||
description: installLang.msg
|
||||
}]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Queries the installer's status
|
||||
*/
|
||||
function queryInstallerStatus() {
|
||||
var url = $(location).attr('pathname');
|
||||
var lookUp = 'install/app.php';
|
||||
var position = url.indexOf(lookUp);
|
||||
|
||||
if (position === -1) {
|
||||
lookUp = 'install';
|
||||
position = url.indexOf(lookUp);
|
||||
|
||||
if (position === -1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
url = url.substring(0, position) + lookUp + '/installer/status';
|
||||
$.getJSON(url, function(data) {
|
||||
processTimeoutResponse(data.status);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Process updates in streamed response
|
||||
*
|
||||
* @param xhReq XHR object
|
||||
*/
|
||||
function pollContent(xhReq) {
|
||||
var messages = xhReq.responseText;
|
||||
var msgSeparator = '}\n\n';
|
||||
var unprocessed, messageEndIndex, endOfMessageIndex, message;
|
||||
|
||||
do {
|
||||
unprocessed = messages.substring(nextReadPosition);
|
||||
messageEndIndex = unprocessed.indexOf(msgSeparator);
|
||||
|
||||
if (messageEndIndex !== -1) {
|
||||
endOfMessageIndex = messageEndIndex + msgSeparator.length;
|
||||
message = unprocessed.substring(0, endOfMessageIndex);
|
||||
parseMessage($.trim(message));
|
||||
nextReadPosition += endOfMessageIndex;
|
||||
}
|
||||
} while (messageEndIndex !== -1);
|
||||
|
||||
if (xhReq.readyState === 4) {
|
||||
$('#loading_indicator').css('display', 'none');
|
||||
resetPolling();
|
||||
|
||||
var timeoutDetected = !transmissionOver;
|
||||
|
||||
if (refreshRequested) {
|
||||
refreshRequested = false;
|
||||
doRefresh();
|
||||
}
|
||||
|
||||
if (timeoutDetected) {
|
||||
statusCount = 0;
|
||||
queryInstallerStatus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Animates the progress bar
|
||||
*
|
||||
* @param $progressText
|
||||
* @param $progressFiller
|
||||
* @param $progressFillerText
|
||||
* @param progressLimit
|
||||
*/
|
||||
function incrementFiller($progressText, $progressFiller, $progressFillerText, progressLimit) {
|
||||
if (currentProgress >= progressLimit || currentProgress >= 100) {
|
||||
clearInterval(progressTimer);
|
||||
return;
|
||||
}
|
||||
|
||||
var $progressBar = $('#progress-bar');
|
||||
|
||||
currentProgress++;
|
||||
$progressFillerText.css('width', $progressBar.width());
|
||||
$progressFillerText.text(currentProgress + '%');
|
||||
$progressText.text(currentProgress + '%');
|
||||
$progressFiller.css('width', currentProgress + '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper function for progress bar rendering and animating
|
||||
*
|
||||
* @param progressLimit
|
||||
*/
|
||||
function incrementProgressBar(progressLimit) {
|
||||
var $progressFiller = $('#progress-bar-filler');
|
||||
var $progressFillerText = $('#progress-bar-filler-text');
|
||||
var $progressText = $('#progress-bar-text');
|
||||
var progressStart = $progressFiller.width() / $progressFiller.offsetParent().width() * 100;
|
||||
currentProgress = Math.floor(progressStart);
|
||||
|
||||
clearInterval(progressTimer);
|
||||
progressTimer = setInterval(function() {
|
||||
incrementFiller($progressText, $progressFiller, $progressFillerText, progressLimit);
|
||||
}, 10);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the polling timer
|
||||
*/
|
||||
function resetPolling() {
|
||||
clearInterval(pollTimer);
|
||||
nextReadPosition = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up timer for processing the streamed HTTP response
|
||||
*
|
||||
* @param xhReq
|
||||
*/
|
||||
function startPolling(xhReq) {
|
||||
resetPolling();
|
||||
transmissionOver = false;
|
||||
pollTimer = setInterval(function () {
|
||||
pollContent(xhReq);
|
||||
}, 250);
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh page
|
||||
*/
|
||||
function doRefresh() {
|
||||
resetPolling();
|
||||
|
||||
var xhReq = createXhrObject();
|
||||
xhReq.open('GET', $(location).attr('pathname'), true);
|
||||
xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||
xhReq.send();
|
||||
|
||||
startPolling(xhReq);
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the AJAX UI layout
|
||||
*/
|
||||
function setupAjaxLayout() {
|
||||
progressBarTriggered = false;
|
||||
|
||||
// Clear content
|
||||
$contentWrapper.html('');
|
||||
|
||||
var $header = $('<div />');
|
||||
$header.attr('id', 'header-container');
|
||||
$contentWrapper.append($header);
|
||||
|
||||
var $description = $('<div />');
|
||||
$description.attr('id', 'description-container');
|
||||
$contentWrapper.append($description);
|
||||
|
||||
var $errorContainer = $('<div />');
|
||||
$errorContainer.attr('id', 'error-container');
|
||||
$contentWrapper.append($errorContainer);
|
||||
|
||||
var $warningContainer = $('<div />');
|
||||
$warningContainer.attr('id', 'warning-container');
|
||||
$contentWrapper.append($warningContainer);
|
||||
|
||||
var $progressContainer = $('<div />');
|
||||
$progressContainer.attr('id', 'progress-bar-container');
|
||||
$contentWrapper.append($progressContainer);
|
||||
|
||||
var $logContainer = $('<div />');
|
||||
$logContainer.attr('id', 'log-container');
|
||||
$contentWrapper.append($logContainer);
|
||||
|
||||
var $installerContentWrapper = $('<div />');
|
||||
$installerContentWrapper.attr('id', 'content-container');
|
||||
$contentWrapper.append($installerContentWrapper);
|
||||
|
||||
var $installerDownloadWrapper = $('<div />');
|
||||
$installerDownloadWrapper.attr('id', 'download-wrapper');
|
||||
$installerContentWrapper.append($installerDownloadWrapper);
|
||||
|
||||
var $updaterFileStatusWrapper = $('<div />');
|
||||
$updaterFileStatusWrapper.attr('id', 'file-status-wrapper');
|
||||
$installerContentWrapper.append($updaterFileStatusWrapper);
|
||||
|
||||
var $formWrapper = $('<div />');
|
||||
$formWrapper.attr('id', 'form-wrapper');
|
||||
$installerContentWrapper.append($formWrapper);
|
||||
|
||||
var $spinner = $('<div />');
|
||||
$spinner.attr('id', 'loading_indicator');
|
||||
$spinner.html(' ');
|
||||
$contentWrapper.append($spinner);
|
||||
}
|
||||
|
||||
// Submits a form
|
||||
function submitForm($form, $submitBtn) {
|
||||
$form.css('display', 'none');
|
||||
|
||||
var xhReq = createXhrObject();
|
||||
xhReq.open('POST', $form.attr('action'), true);
|
||||
xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||
xhReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
|
||||
xhReq.send(getFormFields($form, $submitBtn));
|
||||
|
||||
// Disable language selector
|
||||
$('#language_selector :input, label').css('display', 'none');
|
||||
|
||||
// Clear content
|
||||
setupAjaxLayout();
|
||||
$('#loading_indicator').css('display', 'block');
|
||||
|
||||
startPolling(xhReq);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add submit button to the POST information
|
||||
*
|
||||
* @param $form
|
||||
* @param $submitBtn
|
||||
*
|
||||
* @returns {*}
|
||||
*/
|
||||
function getFormFields($form, $submitBtn) {
|
||||
var formData = $form.serialize();
|
||||
formData += ((formData.length) ? '&' : '') + encodeURIComponent($submitBtn.attr('name')) + '=';
|
||||
formData += encodeURIComponent($submitBtn.attr('value'));
|
||||
|
||||
return formData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Intercept form submit events and determine the submit button used
|
||||
*
|
||||
* @param $form
|
||||
*/
|
||||
function interceptFormSubmit($form) {
|
||||
if (!$form.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
$form.find(':submit').bind('click', function (event) {
|
||||
event.preventDefault();
|
||||
submitForm($form, $(this));
|
||||
});
|
||||
}
|
||||
})(jQuery); // Avoid conflicts with other libraries
|
||||