mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
Merge branch 'develop' into feature/merging-style-components
* develop: (175 commits) [feature/ajax] Remove strange non-breaking spaces from approve button [feature/ajax] Add entirely unrelated but nice newlines [feature/ajax] Unify phpbb_json_response instantiation [feature/ajax] Fix acp_styles activate_deactivate ajax callback name [feature/ajax] Send correct activate/deactivate JSON response in acp_profile [ticket/10270] Alter background colors for posts [feature/ajax] Remove not working module enable/disable ajax code [feature/ajax] Replace static call to phpbb_request with OO [feature/ajax] Remove quick-reply AJAX handling until we have something good [ticket/10270] Changing close button for ajax popups [ticket/10270] Disabling links in disappearing content [ticket/10291] Fixed an AJAX bug on quick reply form submit. [ticket/10273] Fixed accepting / denying posts AJAX. [ticket/10272] Removed code that was prevent event propogation in AJAX. [ticket/10291] Fixed a bug in the quick reply AJAX. [feature/ajax] Handle acp_modules error cases with JSON response [feature/ajax] Fix filter check, quick mod tools data-attribute [feature/ajax] Use the error handler [feature/ajax] Generic error handling with a phpbb.alert box [feature/ajax] Change filter semantics, some minor adjustments ... Conflicts: phpBB/adm/style/acp_styles.html phpBB/includes/acp/acp_styles.php
This commit is contained in:
commit
398a6c8045
81 changed files with 1716 additions and 627 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -3,6 +3,7 @@
|
|||
/phpBB/cache/*.html
|
||||
/phpBB/cache/*.php
|
||||
/phpBB/cache/queue.php.lock
|
||||
/phpBB/composer.phar
|
||||
/phpBB/config.php
|
||||
/phpBB/config_dev.php
|
||||
/phpBB/config_test.php
|
||||
|
@ -11,6 +12,7 @@
|
|||
/phpBB/images/avatars/gallery/*
|
||||
/phpBB/images/avatars/upload/*
|
||||
/phpBB/store/*
|
||||
/phpBB/vendor
|
||||
/tests/phpbb_unit_tests.sqlite2
|
||||
/tests/test_config.php
|
||||
/tests/tmp/*
|
||||
|
|
|
@ -13,6 +13,8 @@ before_script:
|
|||
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'create database IF NOT EXISTS phpbb_tests;'; fi"
|
||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.2' ]; then pear install --force phpunit/DbUnit; else pyrus install --force phpunit/DbUnit; fi"
|
||||
- phpenv rehash
|
||||
- curl -s http://getcomposer.org/installer | php
|
||||
- php composer.phar install
|
||||
|
||||
script:
|
||||
- phpunit --configuration travis/phpunit-$DB-travis.xml
|
||||
|
|
|
@ -8,6 +8,15 @@ phpBB is a free bulletin board written in PHP.
|
|||
|
||||
Find support and lots more on [phpBB.com](http://www.phpbb.com)! Discuss the development on [area51](http://area51.phpbb.com/phpBB/index.php).
|
||||
|
||||
## INSTALLING DEPENDENCIES
|
||||
|
||||
To be able to run an installation from the repo (and not from a pre-built package) you need to run the following commands to install phpBB's dependencies.
|
||||
|
||||
cd phpBB
|
||||
curl -s http://getcomposer.org/installer | php
|
||||
php composer.phar install
|
||||
|
||||
|
||||
## CONTRIBUTE
|
||||
|
||||
1. [Create an account on phpBB.com](http://www.phpbb.com/community/ucp.php?mode=register)
|
||||
|
|
BIN
phpBB/adm/images/alert_close.png
Normal file
BIN
phpBB/adm/images/alert_close.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2 KiB |
|
@ -248,7 +248,7 @@
|
|||
<!-- 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}">{ICON_DELETE}</a> </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>
|
||||
|
|
|
@ -101,7 +101,7 @@
|
|||
<!-- BEGIN bbcodes -->
|
||||
<!-- IF bbcodes.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td style="text-align: center;">{bbcodes.BBCODE_TAG}</td>
|
||||
<td style="text-align: right; width: 40px;"><a href="{bbcodes.U_EDIT}">{ICON_EDIT}</a> <a href="{bbcodes.U_DELETE}">{ICON_DELETE}</a></td>
|
||||
<td style="text-align: right; width: 40px;"><a href="{bbcodes.U_EDIT}">{ICON_EDIT}</a> <a href="{bbcodes.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a></td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr class="row3">
|
||||
|
|
|
@ -76,9 +76,9 @@
|
|||
<!-- IF bots.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td style="width: 50%;">{bots.BOT_NAME}</td>
|
||||
<td style="width: 15%; white-space: nowrap;" align="center"> {bots.LAST_VISIT} </td>
|
||||
<td style="text-align: center;"> <a href="{bots.U_ACTIVATE_DEACTIVATE}">{bots.L_ACTIVATE_DEACTIVATE}</a> </td>
|
||||
<td style="text-align: center;"> <a href="{bots.U_ACTIVATE_DEACTIVATE}" data-ajax="activate_deactivate">{bots.L_ACTIVATE_DEACTIVATE}</a> </td>
|
||||
<td style="text-align: center;"> <a href="{bots.U_EDIT}">{L_EDIT}</a> </td>
|
||||
<td style="text-align: center;"> <a href="{bots.U_DELETE}">{L_DELETE}</a> </td>
|
||||
<td style="text-align: center;"> <a href="{bots.U_DELETE}" data-ajax="row_delete">{L_DELETE}</a> </td>
|
||||
<td style="text-align: center;"><input type="checkbox" class="radio" name="mark[]" value="{bots.BOT_ID}" /></td>
|
||||
</tr>
|
||||
<!-- END bots -->
|
||||
|
|
|
@ -443,7 +443,7 @@
|
|||
<col class="row1" /><col class="row1" /><col class="row2" />
|
||||
<tbody>
|
||||
<!-- BEGIN forums -->
|
||||
<tr>
|
||||
<tr data-down="{forums.U_MOVE_DOWN}" data-up="{forums.U_MOVE_UP}">
|
||||
<td style="width: 5%; text-align: center;">{forums.FOLDER_IMAGE}</td>
|
||||
<td>
|
||||
<!-- IF forums.FORUM_IMAGE --><div style="float: {S_CONTENT_FLOW_BEGIN}; margin-right: 5px;">{forums.FORUM_IMAGE}</div><!-- ENDIF -->
|
||||
|
@ -453,17 +453,17 @@
|
|||
</td>
|
||||
<td style="vertical-align: top; width: 100px; text-align: right; white-space: nowrap;">
|
||||
<!-- IF forums.S_FIRST_ROW && not forums.S_LAST_ROW -->
|
||||
{ICON_MOVE_UP_DISABLED}
|
||||
<a href="{forums.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a>
|
||||
<span class="up">{ICON_MOVE_UP_DISABLED}</span>
|
||||
<span class="down"><a href="{forums.U_MOVE_DOWN}" data-ajax="forum_down">{ICON_MOVE_DOWN}</a></span>
|
||||
<!-- ELSEIF not forums.S_FIRST_ROW && not forums.S_LAST_ROW -->
|
||||
<a href="{forums.U_MOVE_UP}">{ICON_MOVE_UP}</a>
|
||||
<a href="{forums.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a>
|
||||
<span class="up"><a href="{forums.U_MOVE_UP}" data-ajax="forum_up">{ICON_MOVE_UP}</a></span>
|
||||
<span class="down"><a href="{forums.U_MOVE_DOWN}" data-ajax="forum_down">{ICON_MOVE_DOWN}</a></span>
|
||||
<!-- ELSEIF forums.S_LAST_ROW && not forums.S_FIRST_ROW -->
|
||||
<a href="{forums.U_MOVE_UP}">{ICON_MOVE_UP}</a>
|
||||
{ICON_MOVE_DOWN_DISABLED}
|
||||
<span class="up"><a href="{forums.U_MOVE_UP}" data-ajax="forum_up">{ICON_MOVE_UP}</a></span>
|
||||
<span class="down">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||
<!-- ELSE -->
|
||||
{ICON_MOVE_UP_DISABLED}
|
||||
{ICON_MOVE_DOWN_DISABLED}
|
||||
<span class="up">{ICON_MOVE_UP_DISABLED}</span>
|
||||
<span class="down">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||
<!-- ENDIF -->
|
||||
<a href="{forums.U_EDIT}">{ICON_EDIT}</a>
|
||||
<!-- IF not forums.S_FORUM_LINK -->
|
||||
|
@ -500,6 +500,14 @@
|
|||
</fieldset>
|
||||
</form>
|
||||
|
||||
<div class="hidden">
|
||||
<a class="template-up-img" href="#">{ICON_MOVE_UP}</a>
|
||||
<span class="template-up-img-disabled">{ICON_MOVE_UP_DISABLED}</span>
|
||||
|
||||
<a class="template-down-img" href="#">{ICON_MOVE_DOWN}</a>
|
||||
<span class="template-down-img-disabled">{ICON_MOVE_DOWN_DISABLED}</span>
|
||||
</div>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
|
|
|
@ -350,7 +350,7 @@
|
|||
<td style="text-align: center;">{groups.TOTAL_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}">{L_DELETE}</a><!-- ELSE -->{L_DELETE}<!-- ENDIF --></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 -->
|
||||
|
|
|
@ -245,7 +245,7 @@
|
|||
<td style="text-align: right; white-space: nowrap;">
|
||||
<!-- IF items.S_FIRST_ROW and not PREVIOUS_PAGE -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{items.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF -->
|
||||
<!-- IF items.S_LAST_ROW and not NEXT_PAGE -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{items.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->
|
||||
<a href="{items.U_EDIT}">{ICON_EDIT}</a> <a href="{items.U_DELETE}">{ICON_DELETE}</a>
|
||||
<a href="{items.U_EDIT}">{ICON_EDIT}</a> <a href="{items.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
|
|
|
@ -152,35 +152,35 @@
|
|||
<fieldset>
|
||||
<legend>{L_STATISTIC_RESYNC_OPTIONS}</legend>
|
||||
|
||||
<form id="action_online_form" method="post" action="{U_ACTION}">
|
||||
<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}">
|
||||
<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}">
|
||||
<form id="action_stats_form" method="post" action="{U_ACTION}" data-ajax="true">
|
||||
<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}">
|
||||
<form id="action_user_form" method="post" action="{U_ACTION}" data-ajax="true">
|
||||
<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}">
|
||||
<form id="action_db_track_form" method="post" action="{U_ACTION}" data-ajax="true">
|
||||
<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>
|
||||
|
@ -188,19 +188,20 @@
|
|||
</form>
|
||||
|
||||
<!-- IF S_FOUNDER -->
|
||||
<form id="action_purge_sessions_form" method="post" action="{U_ACTION}">
|
||||
<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>
|
||||
<form id="action_purge_cache_form" method="post" action="{U_ACTION}">
|
||||
<!-- 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>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
<!-- ENDIF -->
|
||||
|
||||
|
|
|
@ -164,7 +164,7 @@
|
|||
{ICON_MOVE_DOWN_DISABLED}
|
||||
<!-- ENDIF -->
|
||||
<a href="{modules.U_EDIT}">{ICON_EDIT}</a>
|
||||
<a href="{modules.U_DELETE}">{ICON_DELETE}</a>
|
||||
<a href="{modules.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END modules -->
|
||||
|
|
|
@ -174,7 +174,7 @@
|
|||
{ICON_MOVE_DOWN_DISABLED}
|
||||
<!-- ENDIF -->
|
||||
<a href="{roles.U_EDIT}" title="{L_EDIT_ROLE}">{ICON_EDIT}</a>
|
||||
<a href="{roles.U_REMOVE}" title="{L_REMOVE_ROLE}">{ICON_DELETE}</a>
|
||||
<a href="{roles.U_REMOVE}" title="{L_REMOVE_ROLE}" data-ajax="row_delete">{ICON_DELETE}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END roles -->
|
||||
|
|
|
@ -195,7 +195,7 @@
|
|||
|
||||
<td>{fields.FIELD_IDENT}</td>
|
||||
<td>{fields.FIELD_TYPE}</td>
|
||||
<td style="text-align: center;"><a href="{fields.U_ACTIVATE_DEACTIVATE}">{fields.L_ACTIVATE_DEACTIVATE}</a><!-- IF fields.S_NEED_EDIT --> | <a href="{fields.U_TRANSLATE}" style="color: red;">{L_TRANSLATE}</a><!-- ENDIF --></td>
|
||||
<td style="text-align: center;"><a href="{fields.U_ACTIVATE_DEACTIVATE}" data-ajax="activate_deactivate">{fields.L_ACTIVATE_DEACTIVATE}</a><!-- IF fields.S_NEED_EDIT --> | <a href="{fields.U_TRANSLATE}" style="color: red;">{L_TRANSLATE}</a><!-- ENDIF --></td>
|
||||
|
||||
<td style="width: 80px; text-align: right; white-space: nowrap;">
|
||||
<!-- IF fields.S_FIRST_ROW && not fields.S_LAST_ROW -->
|
||||
|
@ -213,7 +213,7 @@
|
|||
<!-- ELSE -->
|
||||
{ICON_EDIT_DISABLED}
|
||||
<!-- ENDIF -->
|
||||
<a href="{fields.U_DELETE}">{ICON_DELETE}</a>
|
||||
<a href="{fields.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
<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>
|
||||
<td style="text-align: center;"><a href="{ranks.U_EDIT}">{ICON_EDIT}</a> <a href="{ranks.U_DELETE}">{ICON_DELETE}</a></td>
|
||||
<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>
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
<!-- ENDIF -->
|
||||
<a href="{reasons.U_EDIT}">{ICON_EDIT}</a>
|
||||
<!-- IF reasons.U_DELETE -->
|
||||
<a href="{reasons.U_DELETE}">{ICON_DELETE}</a>
|
||||
<a href="{reasons.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a>
|
||||
<!-- ELSE -->
|
||||
{ICON_DELETE_DISABLED}
|
||||
<!-- ENDIF -->
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
<!-- IF words.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
|
||||
<td style="text-align: center;">{words.WORD}</td>
|
||||
<td style="text-align: center;">{words.REPLACEMENT}</td>
|
||||
<td> <a href="{words.U_EDIT}">{ICON_EDIT}</a> <a href="{words.U_DELETE}">{ICON_DELETE}</a> </td>
|
||||
<td> <a href="{words.U_EDIT}">{ICON_EDIT}</a> <a href="{words.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a> </td>
|
||||
</tr>
|
||||
<!-- BEGINELSE -->
|
||||
<tr class="row3">
|
||||
|
|
|
@ -101,6 +101,10 @@ hr {
|
|||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* General links */
|
||||
a:link, a:visited {
|
||||
color: #105289;
|
||||
|
@ -1087,6 +1091,56 @@ input.disabled {
|
|||
color: #666666;
|
||||
}
|
||||
|
||||
/* jQuery popups
|
||||
---------------------------------------- */
|
||||
.phpbb_alert {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #999999;
|
||||
position: fixed;
|
||||
display: none;
|
||||
top: 100px;
|
||||
left: 35%;
|
||||
width: 30%;
|
||||
z-index: 50;
|
||||
padding: 25px;
|
||||
padding: 0 25px 20px 25px;
|
||||
}
|
||||
|
||||
.phpbb_alert .alert_close {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
overflow: hidden;
|
||||
text-decoration: none !important;
|
||||
background: transparent url("../images/alert_close.png") 0 0 no-repeat;
|
||||
margin-top: -7px;
|
||||
margin-right: -31px;
|
||||
}
|
||||
.phpbb_alert .alert_close:hover {
|
||||
background-position: 0 -16px;
|
||||
}
|
||||
|
||||
|
||||
.phpbb_alert p {
|
||||
margin: 8px 0;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
#darkenwrapper {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#darken {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000000;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* Pagination
|
||||
---------------------------------------- */
|
||||
.pagination {
|
||||
|
|
135
phpBB/adm/style/ajax.js
Normal file
135
phpBB/adm/style/ajax.js
Normal file
|
@ -0,0 +1,135 @@
|
|||
(function($) { // Avoid conflicts with other libraries
|
||||
|
||||
"use strict";
|
||||
|
||||
var img_templates = {
|
||||
up: $('.template-up-img'),
|
||||
up_disabled: $('.template-up-img-disabled'),
|
||||
down: $('.template-down-img'),
|
||||
down_disabled: $('.template-down-img-disabled')
|
||||
};
|
||||
|
||||
/**
|
||||
* The following callbacks are for reording forums in acp_forums. forum_down
|
||||
* is triggered when a forum is moved down, and forum_up is triggered when
|
||||
* a forum 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.add_ajax_callback('forum_down', function() {
|
||||
var el = $(this),
|
||||
tr = el.parents('tr');
|
||||
|
||||
if (tr.is(':first-child'))
|
||||
{
|
||||
var up_img = img_templates.up.clone().attr('href', tr.attr('data-up'));
|
||||
el.parents('span').siblings('.up').html(up_img);
|
||||
|
||||
tr.next().find('.up').html(img_templates.up_disabled);
|
||||
|
||||
phpbb.ajaxify({
|
||||
selector: el.parents('span').siblings('.up').children('a'),
|
||||
callback: 'forum_up'
|
||||
});
|
||||
}
|
||||
|
||||
tr.insertAfter(tr.next());
|
||||
|
||||
if (tr.is(':last-child'))
|
||||
{
|
||||
el.replaceWith(img_templates.down_disabled);
|
||||
|
||||
var down_img = img_templates.down.clone().attr('href', tr.attr('data-down'));
|
||||
tr.prev().find('.down').html(down_img);
|
||||
|
||||
phpbb.ajaxify({
|
||||
selector: tr.prev().find('.down').children('a'),
|
||||
callback: 'forum_down'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
phpbb.add_ajax_callback('forum_up', function() {
|
||||
var el = $(this),
|
||||
tr = el.parents('tr');
|
||||
|
||||
if (tr.is(':last-child'))
|
||||
{
|
||||
var down_img = img_templates.down.clone().attr('href', tr.attr('data-down'));
|
||||
el.parents('span').siblings('.down').html(down_img);
|
||||
|
||||
tr.prev().find('.down').html(img_templates.down_disabled);
|
||||
|
||||
phpbb.ajaxify({
|
||||
selector: el.parents('span').siblings('.down').children('a'),
|
||||
callback: 'forum_down'
|
||||
});
|
||||
}
|
||||
|
||||
tr.insertBefore(tr.prev());
|
||||
|
||||
if (tr.is(':first-child'))
|
||||
{
|
||||
el.replaceWith(img_templates.up_disabled);
|
||||
|
||||
var up_img = img_templates.up.clone().attr('href', tr.attr('data-up'));
|
||||
tr.next().find('.up').html(up_img);
|
||||
|
||||
phpbb.ajaxify({
|
||||
selector: tr.next().find('.up').children('a'),
|
||||
callback: 'forum_up'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 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.add_ajax_callback('activate_deactivate', function(res) {
|
||||
var el = $(this),
|
||||
new_href = el.attr('href');
|
||||
|
||||
el.text(res.text);
|
||||
|
||||
if (new_href.indexOf('deactivate') !== -1)
|
||||
{
|
||||
new_href = new_href.replace('deactivate', 'activate')
|
||||
}
|
||||
else
|
||||
{
|
||||
new_href = new_href.replace('activate', 'deactivate')
|
||||
}
|
||||
|
||||
el.attr('href', new_href);
|
||||
});
|
||||
|
||||
/**
|
||||
* 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.add_ajax_callback('row_delete', function() {
|
||||
$(this).parents('tr').remove();
|
||||
});
|
||||
|
||||
|
||||
|
||||
$('[data-ajax]').each(function() {
|
||||
var $this = $(this),
|
||||
ajax = $this.attr('data-ajax'),
|
||||
fn;
|
||||
|
||||
if (ajax !== 'false')
|
||||
{
|
||||
fn = (ajax !== 'true') ? ajax : null;
|
||||
phpbb.ajaxify({
|
||||
selector: this,
|
||||
refresh: $this.attr('data-refresh') !== undefined,
|
||||
callback: fn
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
})(jQuery); // Avoid conflicts with other libraries
|
|
@ -17,11 +17,29 @@
|
|||
<!-- IF S_COPYRIGHT_HTML --><br /><!-- ENDIF -->
|
||||
{DEBUG_OUTPUT}
|
||||
<!-- ENDIF -->
|
||||
|
||||
<div id="darkenwrapper" data-ajax-error-title="{L_AJAX_ERROR_TITLE}" data-ajax-error-text="{L_AJAX_ERROR_TEXT}">
|
||||
<div id="darken"> </div>
|
||||
<div class="jalert" id="loadingalert"><h3>{L_LOADING}</h3><p>{L_PLEASE_WAIT}</p></div>
|
||||
</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>
|
||||
<p class="alert_text"></p>
|
||||
<input type="button" class="button1" value="{L_YES}" />
|
||||
<input type="button" class="button2" value="{L_NO}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
||||
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/core.js"></script>
|
||||
<script type="text/javascript" src="style/ajax.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
445
phpBB/assets/javascript/core.js
Normal file
445
phpBB/assets/javascript/core.js
Normal file
|
@ -0,0 +1,445 @@
|
|||
var phpbb = {};
|
||||
phpbb.alert_time = 100;
|
||||
|
||||
(function($) { // Avoid conflicts with other libraries
|
||||
|
||||
"use strict";
|
||||
|
||||
// define a couple constants for keydown functions.
|
||||
var keymap = {
|
||||
ENTER: 13,
|
||||
ESC: 27
|
||||
};
|
||||
|
||||
var dark = $('#darkenwrapper');
|
||||
var loading_alert = $('#loadingalert');
|
||||
|
||||
|
||||
/**
|
||||
* Display a loading screen.
|
||||
*
|
||||
* @returns object Returns loading_alert.
|
||||
*/
|
||||
phpbb.loading_alert = function() {
|
||||
if (dark.is(':visible'))
|
||||
{
|
||||
loading_alert.fadeIn(phpbb.alert_time);
|
||||
}
|
||||
else
|
||||
{
|
||||
loading_alert.show();
|
||||
dark.fadeIn(phpbb.alert_time, function() {
|
||||
// Wait five seconds and display an error if nothing has been returned by then.
|
||||
setTimeout(function() {
|
||||
if (loading_alert.is(':visible'))
|
||||
{
|
||||
phpbb.alert($('#phpbb_alert').attr('data-l-err'), $('#phpbb_alert').attr('data-l-timeout-processing-req'));
|
||||
}
|
||||
}, 5000);
|
||||
});
|
||||
}
|
||||
|
||||
return loading_alert;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a simple alert similar to JSs native alert().
|
||||
*
|
||||
* You can only call one alert or confirm box at any one time.
|
||||
*
|
||||
* @param string title Title of the message, eg "Information" (HTML).
|
||||
* @param string msg Message to display (HTML).
|
||||
* @param bool fadedark Remove the dark background when done? Defaults
|
||||
* to yes.
|
||||
*
|
||||
* @returns object Returns the div created.
|
||||
*/
|
||||
phpbb.alert = function(title, msg, fadedark) {
|
||||
var div = $('#phpbb_alert');
|
||||
div.find('.alert_title').html(title);
|
||||
div.find('.alert_text').html(msg);
|
||||
|
||||
div.bind('click', function(e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
dark.one('click', function(e) {
|
||||
var fade;
|
||||
|
||||
div.find('.alert_close').unbind('click');
|
||||
fade = (typeof fadedark !== 'undefined' && !fadedark) ? div : dark;
|
||||
fade.fadeOut(phpbb.alert_time, function() {
|
||||
div.hide();
|
||||
});
|
||||
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
$(document).bind('keydown', function(e) {
|
||||
if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) {
|
||||
dark.trigger('click');
|
||||
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
});
|
||||
|
||||
div.find('.alert_close').one('click', function(e) {
|
||||
dark.trigger('click');
|
||||
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
if (loading_alert.is(':visible'))
|
||||
{
|
||||
loading_alert.fadeOut(phpbb.alert_time, function() {
|
||||
dark.append(div);
|
||||
div.fadeIn(phpbb.alert_time);
|
||||
});
|
||||
}
|
||||
else if (dark.is(':visible'))
|
||||
{
|
||||
dark.append(div);
|
||||
div.fadeIn(phpbb.alert_time);
|
||||
}
|
||||
else
|
||||
{
|
||||
dark.append(div);
|
||||
div.show();
|
||||
dark.fadeIn(phpbb.alert_time);
|
||||
}
|
||||
|
||||
return div;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a simple yes / no box to the user.
|
||||
*
|
||||
* You can only call one alert or confirm box at any one time.
|
||||
*
|
||||
* @param string msg Message to display (HTML).
|
||||
* @param function callback Callback. Bool param, whether the user pressed
|
||||
* yes or no (or whatever their language is).
|
||||
* @param bool fadedark Remove the dark background when done? Defaults
|
||||
* to yes.
|
||||
*
|
||||
* @returns object Returns the div created.
|
||||
*/
|
||||
phpbb.confirm = function(msg, callback, fadedark) {
|
||||
var div = $('#phpbb_confirm');
|
||||
div.find('.alert_text').html(msg);
|
||||
|
||||
div.bind('click', function(e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
var click_handler = function(e) {
|
||||
var res = this.className === 'button1';
|
||||
var fade = (typeof fadedark !== 'undefined' && !fadedark && res) ? div : dark;
|
||||
fade.fadeOut(phpbb.alert_time, function() {
|
||||
div.hide();
|
||||
});
|
||||
div.find('input[type="button"]').unbind('click', click_handler);
|
||||
callback(res);
|
||||
|
||||
if (e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
};
|
||||
div.find('input[type="button"]').one('click', click_handler);
|
||||
|
||||
dark.one('click', function(e) {
|
||||
div.find('.alert_close').unbind('click');
|
||||
dark.fadeOut(phpbb.alert_time, function() {
|
||||
div.hide();
|
||||
});
|
||||
callback(false);
|
||||
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
$(document).bind('keydown', function(e) {
|
||||
if (e.keyCode === keymap.ENTER) {
|
||||
$('input[type="button"].button1').trigger('click');
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
} else if (e.keyCode === keymap.ESC) {
|
||||
$('input[type="button"].button2').trigger('click');
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
});
|
||||
|
||||
div.find('.alert_close').one('click', function(e) {
|
||||
var fade = (typeof fadedark !== 'undefined' && fadedark) ? div : dark;
|
||||
fade.fadeOut(phpbb.alert_time, function() {
|
||||
div.hide();
|
||||
});
|
||||
callback(false);
|
||||
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
if (loading_alert.is(':visible'))
|
||||
{
|
||||
loading_alert.fadeOut(phpbb.alert_time, function() {
|
||||
dark.append(div);
|
||||
div.fadeIn(phpbb.alert_time);
|
||||
});
|
||||
}
|
||||
else if (dark.is(':visible'))
|
||||
{
|
||||
dark.append(div);
|
||||
div.fadeIn(phpbb.alert_time);
|
||||
}
|
||||
else
|
||||
{
|
||||
dark.append(div);
|
||||
div.show();
|
||||
dark.fadeIn(phpbb.alert_time);
|
||||
}
|
||||
|
||||
return div;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turn a querystring into an array.
|
||||
*
|
||||
* @argument string string The querystring to parse.
|
||||
* @returns object The object created.
|
||||
*/
|
||||
phpbb.parse_querystring = function(string) {
|
||||
var params = {}, i, split;
|
||||
|
||||
string = string.split('&');
|
||||
for (i = 0; i < string.length; i++)
|
||||
{
|
||||
split = string[i].split('=');
|
||||
params[split[0]] = decodeURIComponent(split[1]);
|
||||
}
|
||||
return params;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Makes a link use AJAX instead of loading an entire page.
|
||||
*
|
||||
* This function will work for links (both standard links and links which
|
||||
* invoke confirm_box) and forms. It will be called automatically for links
|
||||
* and forms with the data-ajax attribute set, and will call the necessary
|
||||
* callback.
|
||||
*
|
||||
* For more info, view the following page on the phpBB wiki:
|
||||
* http://wiki.phpbb.com/JavaScript_Function.phpbb.ajaxify
|
||||
*
|
||||
* @param object options Options.
|
||||
* @param bool/function refresh If we are sent back a refresh, should it be
|
||||
* acted upon? This can either be true / false / a function.
|
||||
* @param function callback Callback to call on completion of event. Has
|
||||
* three parameters: the element that the event was evoked from, the JSON
|
||||
* that was returned and (if it is a form) the form action.
|
||||
*/
|
||||
phpbb.ajaxify = function(options) {
|
||||
var elements = $(options.selector),
|
||||
refresh = options.refresh,
|
||||
callback = options.callback,
|
||||
is_form = elements.is('form'),
|
||||
event_name = is_form ? 'submit' : 'click';
|
||||
|
||||
elements.bind(event_name, function(event) {
|
||||
var action, method, data, submit, that = this, $this = $(this);
|
||||
|
||||
if ($this.find('input[type="submit"][data-clicked]').attr('data-ajax') === 'false')
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 return_handler(res)
|
||||
{
|
||||
var alert;
|
||||
|
||||
// Is a confirmation required?
|
||||
if (typeof res.S_CONFIRM_ACTION === 'undefined')
|
||||
{
|
||||
// If a confirmation is not required, display an alert and call the
|
||||
// callbacks.
|
||||
if (typeof res.MESSAGE_TITLE !== 'undefined')
|
||||
{
|
||||
alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
|
||||
}
|
||||
else
|
||||
{
|
||||
dark.fadeOut(phpbb.alert_time);
|
||||
}
|
||||
|
||||
if (typeof phpbb.ajax_callbacks[callback] === 'function')
|
||||
{
|
||||
phpbb.ajax_callbacks[callback].call(that, res);
|
||||
}
|
||||
|
||||
// If the server says to refresh the page, check whether the page should
|
||||
// be refreshed and refresh page after specified time if required.
|
||||
if (res.REFRESH_DATA)
|
||||
{
|
||||
if (typeof refresh === 'function')
|
||||
{
|
||||
refresh = refresh(res.REFRESH_DATA.url);
|
||||
}
|
||||
else if (typeof refresh !== 'boolean')
|
||||
{
|
||||
refresh = false;
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
if (refresh)
|
||||
{
|
||||
window.location = res.REFRESH_DATA.url;
|
||||
}
|
||||
|
||||
// Hide the alert even if we refresh the page, in case the user
|
||||
// presses the back button.
|
||||
dark.fadeOut(phpbb.alert_time, function() {
|
||||
alert.hide();
|
||||
});
|
||||
}, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// If confirmation is required, display a diologue to the user.
|
||||
phpbb.confirm(res.MESSAGE_TEXT, function(del) {
|
||||
if (del)
|
||||
{
|
||||
phpbb.loading_alert();
|
||||
data = $('<form>' + res.S_HIDDEN_FIELDS + '</form>').serialize();
|
||||
$.ajax({
|
||||
url: res.S_CONFIRM_ACTION,
|
||||
type: 'POST',
|
||||
data: data + '&confirm=' + res.YES_VALUE,
|
||||
success: return_handler,
|
||||
error: error_handler
|
||||
});
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
|
||||
function error_handler()
|
||||
{
|
||||
var alert;
|
||||
|
||||
alert = phpbb.alert(dark.attr('data-ajax-error-title'), dark.attr('data-ajax-error-text'));
|
||||
|
||||
setTimeout(function () {
|
||||
dark.fadeOut(phpbb.alert_time, function() {
|
||||
alert.hide();
|
||||
});
|
||||
}, 5000);
|
||||
}
|
||||
|
||||
// If the element is a form, POST must be used and some extra data must
|
||||
// be taken from the form.
|
||||
var run_filter = (typeof options.filter === 'function');
|
||||
|
||||
if (is_form)
|
||||
{
|
||||
action = $this.attr('action').replace('&', '&');
|
||||
data = $this.serializeArray();
|
||||
method = $this.attr('method') || 'GET';
|
||||
|
||||
if ($this.find('input[type="submit"][data-clicked]'))
|
||||
{
|
||||
submit = $this.find('input[type="submit"][data-clicked]');
|
||||
data.push({
|
||||
name: submit.attr('name'),
|
||||
value: submit.val()
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
action = this.href;
|
||||
data = null;
|
||||
method = 'GET';
|
||||
}
|
||||
|
||||
// If filter function returns false, cancel the AJAX functionality,
|
||||
// and return true (meaning that the HTTP request will be sent normally).
|
||||
if (run_filter && !options.filter.call(this, data))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
phpbb.loading_alert();
|
||||
|
||||
$.ajax({
|
||||
url: action,
|
||||
type: method,
|
||||
data: data,
|
||||
success: return_handler,
|
||||
error: error_handler
|
||||
});
|
||||
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
if (is_form) {
|
||||
elements.find('input:submit').click(function () {
|
||||
var $this = $(this);
|
||||
|
||||
$this.siblings('[data-clicked]').removeAttr('data-clicked');
|
||||
$this.attr('data-clicked', 'true');
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
phpbb.ajax_callbacks = {};
|
||||
|
||||
/**
|
||||
* Adds an AJAX callback to be used by phpbb.ajaxify.
|
||||
*
|
||||
* See the phpbb.ajaxify comments for information on stuff like parameters.
|
||||
*
|
||||
* @param string id The name of the callback.
|
||||
* @param function callback The callback to be called.
|
||||
*/
|
||||
phpbb.add_ajax_callback = function(id, callback)
|
||||
{
|
||||
if (typeof callback === 'function')
|
||||
{
|
||||
phpbb.ajax_callbacks[id] = callback;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This callback alternates text - it replaces the current text with the text in
|
||||
* the alt-text data attribute, and replaces the text in the attribute with the
|
||||
* current text so that the process can be repeated.
|
||||
*/
|
||||
phpbb.add_ajax_callback('alt_text', function(data) {
|
||||
var el = $(this),
|
||||
alt_text;
|
||||
|
||||
alt_text = el.attr('data-alt-text');
|
||||
el.attr('title', alt_text);
|
||||
el.text(alt_text);
|
||||
});
|
||||
|
||||
|
||||
})(jQuery); // Avoid conflicts with other libraries
|
|
@ -15,6 +15,8 @@ if (!defined('IN_PHPBB'))
|
|||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
|
||||
require($phpbb_root_path . 'includes/startup.' . $phpEx);
|
||||
|
||||
if (file_exists($phpbb_root_path . 'config.' . $phpEx))
|
||||
|
@ -98,6 +100,7 @@ $phpbb_class_loader_ext->set_cache($cache->get_driver());
|
|||
$phpbb_class_loader->set_cache($cache->get_driver());
|
||||
|
||||
// Instantiate some basic classes
|
||||
$phpbb_dispatcher = new phpbb_event_dispatcher();
|
||||
$request = new phpbb_request();
|
||||
$user = new user();
|
||||
$auth = new auth();
|
||||
|
@ -124,6 +127,9 @@ $phpbb_extension_manager = new phpbb_extension_manager($db, EXT_TABLE, $phpbb_ro
|
|||
$style = new phpbb_style($phpbb_root_path, $phpEx, $config, $user, $phpbb_extension_manager);
|
||||
$template = $style->template;
|
||||
|
||||
$phpbb_subscriber_loader = new phpbb_event_extension_subscriber_loader($phpbb_dispatcher, $phpbb_extension_manager);
|
||||
$phpbb_subscriber_loader->load();
|
||||
|
||||
// Add own hook handler
|
||||
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
|
||||
$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display')));
|
||||
|
|
5
phpBB/composer.json
Normal file
5
phpBB/composer.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"require": {
|
||||
"symfony/event-dispatcher": "2.0.*"
|
||||
}
|
||||
}
|
10
phpBB/composer.lock
generated
Normal file
10
phpBB/composer.lock
generated
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"hash": "9bada3748ec2933fe0864dcfafbcd671",
|
||||
"packages": [
|
||||
{
|
||||
"package": "symfony/event-dispatcher",
|
||||
"version": "v2.0.10"
|
||||
}
|
||||
],
|
||||
"aliases": []
|
||||
}
|
|
@ -79,3 +79,6 @@ Pear (c) 2001-2004 PHP Group, http://pear.php.net
|
|||
|
||||
Text_Diff-0.2.1 http://pear.php.net/package/Text_Diff
|
||||
|
||||
MIT licenced:
|
||||
Symfony2 (c) 2004-2011 Fabien Potencier, http://symfony.com/
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@ if (isset($_GET['avatar']))
|
|||
$phpbb_class_loader_ext->set_cache($cache->get_driver());
|
||||
$phpbb_class_loader->set_cache($cache->get_driver());
|
||||
|
||||
$phpbb_dispatcher = new phpbb_event_dispatcher();
|
||||
$request = new phpbb_request();
|
||||
$db = new $sql_db();
|
||||
|
||||
|
@ -78,6 +79,9 @@ if (isset($_GET['avatar']))
|
|||
// load extensions
|
||||
$phpbb_extension_manager = new phpbb_extension_manager($db, EXT_TABLE, $phpbb_root_path, ".$phpEx", $cache->get_driver());
|
||||
|
||||
$phpbb_subscriber_loader = new phpbb_event_extension_subscriber_loader($phpbb_dispatcher, $phpbb_extension_manager);
|
||||
$phpbb_subscriber_loader->load();
|
||||
|
||||
$filename = request_var('avatar', '');
|
||||
$avatar_group = false;
|
||||
$exit = false;
|
||||
|
|
|
@ -24,7 +24,7 @@ class acp_bbcodes
|
|||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template, $cache;
|
||||
global $db, $user, $auth, $template, $cache, $request;
|
||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||
|
||||
$user->add_lang('acp/posting');
|
||||
|
@ -272,6 +272,18 @@ class acp_bbcodes
|
|||
$db->sql_query('DELETE FROM ' . BBCODES_TABLE . " WHERE bbcode_id = $bbcode_id");
|
||||
$cache->destroy('sql', BBCODES_TABLE);
|
||||
add_log('admin', 'LOG_BBCODE_DELETE', $row['bbcode_tag']);
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array(
|
||||
'MESSAGE_TITLE' => $user->lang['INFORMATION'],
|
||||
'MESSAGE_TEXT' => $user->lang['BBCODE_DELETED'],
|
||||
'REFRESH_DATA' => array(
|
||||
'time' => 3
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -24,7 +24,7 @@ class acp_bots
|
|||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $db, $user, $auth, $template, $cache;
|
||||
global $config, $db, $user, $auth, $template, $cache, $request;
|
||||
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix;
|
||||
|
||||
$action = request_var('action', '');
|
||||
|
@ -353,6 +353,14 @@ class acp_bots
|
|||
break;
|
||||
}
|
||||
|
||||
if ($request->is_ajax() && ($action == 'activate' || $action == 'deactivate'))
|
||||
{
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array(
|
||||
'text' => $user->lang['BOT_' . (($action == 'activate') ? 'DE' : '') . 'ACTIVATE'],
|
||||
));
|
||||
}
|
||||
|
||||
$s_options = '';
|
||||
$_options = array('activate' => 'BOT_ACTIVATE', 'deactivate' => 'BOT_DEACTIVATE', 'delete' => 'DELETE');
|
||||
foreach ($_options as $value => $lang)
|
||||
|
|
|
@ -25,7 +25,7 @@ class acp_forums
|
|||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template, $cache;
|
||||
global $db, $user, $auth, $template, $cache, $request;
|
||||
global $config, $phpbb_admin_path, $phpbb_root_path, $phpEx;
|
||||
|
||||
$user->add_lang('acp/forums');
|
||||
|
@ -256,6 +256,12 @@ class acp_forums
|
|||
$cache->destroy('sql', FORUMS_TABLE);
|
||||
}
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array('success' => ($move_forum_name !== false)));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'sync':
|
||||
|
|
|
@ -782,6 +782,18 @@ class acp_icons
|
|||
|
||||
$cache->destroy('_icons');
|
||||
$cache->destroy('sql', $table);
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array(
|
||||
'MESSAGE_TITLE' => $user->lang['INFORMATION'],
|
||||
'MESSAGE_TEXT' => $notice,
|
||||
'REFRESH_DATA' => array(
|
||||
'time' => 3
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -24,7 +24,7 @@ class acp_main
|
|||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $db, $user, $auth, $template;
|
||||
global $config, $db, $user, $auth, $template, $request;
|
||||
global $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||
|
||||
// Show restore permissions notice
|
||||
|
@ -129,6 +129,11 @@ class acp_main
|
|||
set_config('record_online_users', 1, true);
|
||||
set_config('record_online_date', time(), true);
|
||||
add_log('admin', 'LOG_RESET_ONLINE');
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
trigger_error('RESET_ONLINE_SUCCESS');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'stats':
|
||||
|
@ -179,6 +184,11 @@ class acp_main
|
|||
update_last_username();
|
||||
|
||||
add_log('admin', 'LOG_RESYNC_STATS');
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
trigger_error('RESYNC_STATS_SUCCESS');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'user':
|
||||
|
@ -242,6 +252,10 @@ class acp_main
|
|||
|
||||
add_log('admin', 'LOG_RESYNC_POSTCOUNTS');
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
trigger_error('RESYNC_POSTCOUNTS_SUCCESS');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'date':
|
||||
|
@ -252,6 +266,11 @@ class acp_main
|
|||
|
||||
set_config('board_startdate', time() - 1);
|
||||
add_log('admin', 'LOG_RESET_DATE');
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
trigger_error('RESET_DATE_SUCCESS');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'db_track':
|
||||
|
@ -327,14 +346,14 @@ class acp_main
|
|||
}
|
||||
|
||||
add_log('admin', 'LOG_RESYNC_POST_MARKING');
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
trigger_error('RESYNC_POST_MARKING_SUCCESS');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'purge_cache':
|
||||
if ((int) $user->data['user_type'] !== USER_FOUNDER)
|
||||
{
|
||||
trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
global $cache;
|
||||
$cache->purge();
|
||||
|
||||
|
@ -343,6 +362,11 @@ class acp_main
|
|||
cache_moderators();
|
||||
|
||||
add_log('admin', 'LOG_PURGE_CACHE');
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
trigger_error('PURGE_CACHE_SUCCESS');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'purge_sessions':
|
||||
|
@ -389,6 +413,11 @@ class acp_main
|
|||
$db->sql_query($sql);
|
||||
|
||||
add_log('admin', 'LOG_PURGE_SESSIONS');
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
trigger_error('PURGE_SESSIONS_SUCCESS');
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ class acp_modules
|
|||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template, $module;
|
||||
global $db, $user, $auth, $template, $module, $request;
|
||||
global $config, $phpbb_admin_path, $phpbb_root_path, $phpEx;
|
||||
|
||||
// Set a global define for modules we might include (the author is able to prevent execution of code by checking this constant)
|
||||
|
@ -373,6 +373,15 @@ class acp_modules
|
|||
// Default management page
|
||||
if (sizeof($errors))
|
||||
{
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array(
|
||||
'MESSAGE_TITLE' => $user->lang('ERROR'),
|
||||
'MESSAGE_TEXT' => implode('<br />', $errors),
|
||||
));
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_ERROR' => true,
|
||||
'ERROR_MSG' => implode('<br />', $errors))
|
||||
|
|
|
@ -242,6 +242,15 @@ class acp_profile
|
|||
$db->sql_freeresult($result);
|
||||
|
||||
add_log('admin', 'LOG_PROFILE_FIELD_ACTIVATE', $field_ident);
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$json_response = new phpbb_json_response();
|
||||
$json_response->send(array(
|
||||
'text' => $user->lang('DEACTIVATE'),
|
||||
));
|
||||
}
|
||||
|
||||
trigger_error($user->lang['PROFILE_FIELD_ACTIVATED'] . adm_back_link($this->u_action));
|
||||
|
||||
break;
|
||||
|
@ -266,7 +275,16 @@ class acp_profile
|
|||
$field_ident = (string) $db->sql_fetchfield('field_ident');
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$json_response = new phpbb_json_response();
|
||||
$json_response->send(array(
|
||||
'text' => $user->lang('ACTIVATE'),
|
||||
));
|
||||
}
|
||||
|
||||
add_log('admin', 'LOG_PROFILE_FIELD_DEACTIVATE', $field_ident);
|
||||
|
||||
trigger_error($user->lang['PROFILE_FIELD_DEACTIVATED'] . adm_back_link($this->u_action));
|
||||
|
||||
break;
|
||||
|
|
|
@ -24,7 +24,7 @@ class acp_ranks
|
|||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template, $cache;
|
||||
global $db, $user, $auth, $template, $cache, $request;
|
||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||
|
||||
$user->add_lang('acp/posting');
|
||||
|
@ -122,6 +122,18 @@ class acp_ranks
|
|||
$cache->destroy('_ranks');
|
||||
|
||||
add_log('admin', 'LOG_RANK_REMOVED', $rank_title);
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array(
|
||||
'MESSAGE_TITLE' => $user->lang['INFORMATION'],
|
||||
'MESSAGE_TEXT' => $user->lang['RANK_REMOVED'],
|
||||
'REFRESH_DATA' => array(
|
||||
'time' => 3
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
68
phpBB/includes/event/data.php
Normal file
68
phpBB/includes/event/data.php
Normal file
|
@ -0,0 +1,68 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\EventDispatcher\Event;
|
||||
|
||||
class phpbb_event_data extends Event implements ArrayAccess
|
||||
{
|
||||
private $data;
|
||||
|
||||
public function __construct(array $data = array())
|
||||
{
|
||||
$this->set_data($data);
|
||||
}
|
||||
|
||||
public function set_data(array $data = array())
|
||||
{
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
public function get_data()
|
||||
{
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns data filtered to only include specified keys.
|
||||
*
|
||||
* This effectively discards any keys added to data by hooks.
|
||||
*/
|
||||
public function get_data_filtered($keys)
|
||||
{
|
||||
return array_intersect_key($this->data, array_flip($keys));
|
||||
}
|
||||
|
||||
public function offsetExists($offset)
|
||||
{
|
||||
return isset($this->data[$offset]);
|
||||
}
|
||||
|
||||
public function offsetGet($offset)
|
||||
{
|
||||
return isset($this->data[$offset]) ? $this->data[$offset] : null;
|
||||
}
|
||||
|
||||
public function offsetSet($offset, $value)
|
||||
{
|
||||
$this->data[$offset] = $value;
|
||||
}
|
||||
|
||||
public function offsetUnset($offset)
|
||||
{
|
||||
unset($this->data[$offset]);
|
||||
}
|
||||
}
|
42
phpBB/includes/event/dispatcher.php
Normal file
42
phpBB/includes/event/dispatcher.php
Normal file
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
|
||||
/**
|
||||
* Extension of the Symfony2 EventDispatcher
|
||||
*
|
||||
* It provides an additional `trigger_event` method, which
|
||||
* gives some syntactic sugar for dispatching events. Instead
|
||||
* of creating the event object, the method will do that for
|
||||
* you.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* $vars = array('page_title');
|
||||
* extract($phpbb_dispatcher->trigger_event('core.index', compact($vars)));
|
||||
*
|
||||
*/
|
||||
class phpbb_event_dispatcher extends EventDispatcher
|
||||
{
|
||||
public function trigger_event($eventName, $data = array())
|
||||
{
|
||||
$event = new phpbb_event_data($data);
|
||||
$this->dispatch($eventName, $event);
|
||||
return $event->get_data_filtered(array_keys($data));
|
||||
}
|
||||
}
|
46
phpBB/includes/event/extension_subscriber_loader.php
Normal file
46
phpBB/includes/event/extension_subscriber_loader.php
Normal file
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
class phpbb_event_extension_subscriber_loader
|
||||
{
|
||||
private $dispatcher;
|
||||
private $extension_manager;
|
||||
|
||||
public function __construct(EventDispatcherInterface $dispatcher, phpbb_extension_manager $extension_manager)
|
||||
{
|
||||
$this->dispatcher = $dispatcher;
|
||||
$this->extension_manager = $extension_manager;
|
||||
}
|
||||
|
||||
public function load()
|
||||
{
|
||||
$finder = $this->extension_manager->get_finder();
|
||||
$subscriber_classes = $finder
|
||||
->extension_directory('/event')
|
||||
->suffix('listener')
|
||||
->core_path('event/')
|
||||
->get_classes();
|
||||
|
||||
foreach ($subscriber_classes as $class)
|
||||
{
|
||||
$subscriber = new $class();
|
||||
$this->dispatcher->addSubscriber($subscriber);
|
||||
}
|
||||
}
|
||||
}
|
77
phpBB/includes/extension/controller.php
Normal file
77
phpBB/includes/extension/controller.php
Normal file
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package extension
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Abstract class extended by extension front controller classes
|
||||
*
|
||||
* @package extension
|
||||
*/
|
||||
abstract class phpbb_extension_controller implements phpbb_extension_controller_interface
|
||||
{
|
||||
/**
|
||||
* @var phpbb_request Request class object
|
||||
*/
|
||||
protected $request;
|
||||
|
||||
/**
|
||||
* @var dbal DBAL class object
|
||||
*/
|
||||
protected $db;
|
||||
|
||||
/**
|
||||
* @var user User class object
|
||||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* @var phpbb_template Template class object
|
||||
*/
|
||||
protected $template;
|
||||
|
||||
/**
|
||||
* @var array Config array
|
||||
*/
|
||||
protected $config;
|
||||
|
||||
/**
|
||||
* @var string PHP Extension
|
||||
*/
|
||||
protected $phpEx;
|
||||
|
||||
/**
|
||||
* @var string Relative path to board root
|
||||
*/
|
||||
protected $phpbb_root_path;
|
||||
|
||||
/**
|
||||
* Constructor method that provides the common phpBB objects as inherited class
|
||||
* properties for automatic availability in extension controllers
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
global $request, $db, $user, $template, $config;
|
||||
global $phpEx, $phpbb_root_path;
|
||||
|
||||
$this->request = $request;
|
||||
$this->db = $db;
|
||||
$this->user = $user;
|
||||
$this->template = $template;
|
||||
$this->config = $config;
|
||||
$this->phpEx = $phpEx;
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
}
|
||||
}
|
|
@ -23,7 +23,7 @@ if (!defined('IN_PHPBB'))
|
|||
interface phpbb_extension_controller_interface
|
||||
{
|
||||
/**
|
||||
* handle the request to display a page from an extension
|
||||
* Handle the request to display a page from an extension
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
|
|
|
@ -2448,8 +2448,17 @@ function build_url($strip_vars = false)
|
|||
*/
|
||||
function meta_refresh($time, $url, $disable_cd_check = false)
|
||||
{
|
||||
global $template;
|
||||
global $template, $refresh_data, $request;
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$refresh_data = array(
|
||||
'time' => $time,
|
||||
'url' => str_replace('&', '&', $url)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$url = redirect($url, true, $disable_cd_check);
|
||||
$url = str_replace('&', '&', $url);
|
||||
|
||||
|
@ -2457,6 +2466,7 @@ function meta_refresh($time, $url, $disable_cd_check = false)
|
|||
$template->assign_vars(array(
|
||||
'META' => '<meta http-equiv="refresh" content="' . $time . ';url=' . $url . '" />')
|
||||
);
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
@ -2619,7 +2629,7 @@ function check_form_key($form_name, $timespan = false, $return_page = '', $trigg
|
|||
*/
|
||||
function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_body.html', $u_action = '')
|
||||
{
|
||||
global $user, $template, $db;
|
||||
global $user, $template, $db, $request;
|
||||
global $phpEx, $phpbb_root_path, $request;
|
||||
|
||||
if (isset($_POST['cancel']))
|
||||
|
@ -2699,6 +2709,21 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
|
|||
WHERE user_id = " . $user->data['user_id'];
|
||||
$db->sql_query($sql);
|
||||
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$u_action .= '&confirm_uid=' . $user->data['user_id'] . '&sess=' . $user->session_id . '&sid=' . $user->session_id;
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array(
|
||||
'MESSAGE_TITLE' => (!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang[$title],
|
||||
'MESSAGE_TEXT' => (!isset($user->lang[$title . '_CONFIRM'])) ? $title : $user->lang[$title . '_CONFIRM'],
|
||||
|
||||
'YES_VALUE' => $user->lang['YES'],
|
||||
'S_CONFIRM_ACTION' => str_replace('&', '&', $u_action), //inefficient, rewrite whole function
|
||||
'S_HIDDEN_FIELDS' => $hidden . $s_hidden_fields
|
||||
));
|
||||
}
|
||||
|
||||
if (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])
|
||||
{
|
||||
adm_page_footer();
|
||||
|
@ -3723,7 +3748,7 @@ function phpbb_checkdnsrr($host, $type = 'MX')
|
|||
*/
|
||||
function msg_handler($errno, $msg_text, $errfile, $errline)
|
||||
{
|
||||
global $cache, $db, $auth, $template, $config, $user;
|
||||
global $cache, $db, $auth, $template, $config, $user, $request;
|
||||
global $phpEx, $phpbb_root_path, $msg_title, $msg_long_text;
|
||||
|
||||
// Do not display notices if we suppress them via @
|
||||
|
@ -3922,6 +3947,20 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
|
|||
'S_USER_NOTICE' => ($errno == E_USER_NOTICE) ? true : false)
|
||||
);
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
global $refresh_data;
|
||||
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array(
|
||||
'MESSAGE_TITLE' => $msg_title,
|
||||
'MESSAGE_TEXT' => $msg_text,
|
||||
'S_USER_WARNING' => ($errno == E_USER_WARNING) ? true : false,
|
||||
'S_USER_NOTICE' => ($errno == E_USER_NOTICE) ? true : false,
|
||||
'REFRESH_DATA' => (!empty($refresh_data)) ? $refresh_data : null
|
||||
));
|
||||
}
|
||||
|
||||
// We do not want the cron script to be called on error messages
|
||||
define('IN_CRON', true);
|
||||
|
||||
|
@ -4478,6 +4517,7 @@ function phpbb_http_login($param)
|
|||
function page_header($page_title = '', $display_online_list = true, $item_id = 0, $item = 'forum')
|
||||
{
|
||||
global $db, $config, $template, $SID, $_SID, $_EXTRA_URL, $user, $auth, $phpEx, $phpbb_root_path;
|
||||
global $phpbb_dispatcher;
|
||||
|
||||
if (defined('HEADER_INC'))
|
||||
{
|
||||
|
@ -4761,6 +4801,9 @@ function page_header($page_title = '', $display_online_list = true, $item_id = 0
|
|||
'A_COOKIE_SETTINGS' => addslashes('; path=' . $config['cookie_path'] . ((!$config['cookie_domain'] || $config['cookie_domain'] == 'localhost' || $config['cookie_domain'] == '127.0.0.1') ? '' : '; domain=' . $config['cookie_domain']) . ((!$config['cookie_secure']) ? '' : '; secure')),
|
||||
));
|
||||
|
||||
$vars = array('page_title', 'display_online_list', 'item_id', 'item');
|
||||
extract($phpbb_dispatcher->trigger_event('core.page_header', compact($vars)));
|
||||
|
||||
// application/xhtml+xml not used because of IE
|
||||
header('Content-type: text/html; charset=UTF-8');
|
||||
|
||||
|
|
|
@ -1258,6 +1258,22 @@ function get_username_string($mode, $user_id, $username, $username_colour = '',
|
|||
return str_replace(array('{PROFILE_URL}', '{USERNAME_COLOUR}', '{USERNAME}'), array($profile_url, $username_colour, $username), (!$username_colour) ? $_profile_cache['tpl_profile'] : $_profile_cache['tpl_profile_colour']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an option to the quick-mod tools.
|
||||
*
|
||||
* @param string $option The language key for the value of the option.
|
||||
* @param string $lang_string The language string to use.
|
||||
*/
|
||||
function phpbb_add_quickmod_option($option, $lang_string)
|
||||
{
|
||||
global $template, $user;
|
||||
$lang_string = $user->lang($lang_string);
|
||||
$template->assign_block_vars('quickmod', array(
|
||||
'VALUE' => $option,
|
||||
'TITLE' => $lang_string,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @package phpBB3
|
||||
*/
|
||||
|
|
|
@ -273,6 +273,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
|||
markread('topics', $forum_ids);
|
||||
$message = sprintf($user->lang['RETURN_FORUM'], '<a href="' . $redirect . '">', '</a>');
|
||||
meta_refresh(3, $redirect);
|
||||
|
||||
trigger_error($user->lang['FORUMS_MARKED'] . '<br /><br />' . $message);
|
||||
}
|
||||
else
|
||||
|
|
41
phpBB/includes/json_response.php
Normal file
41
phpBB/includes/json_response.php
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2011 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* JSON class
|
||||
* @package phpBB3
|
||||
*/
|
||||
class phpbb_json_response
|
||||
{
|
||||
/**
|
||||
* Send the data to the client and exit the script.
|
||||
*
|
||||
* @param array $data Any additional data to send.
|
||||
* @param bool $exit Will exit the script if true.
|
||||
*/
|
||||
public function send($data, $exit = true)
|
||||
{
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
|
||||
if ($exit)
|
||||
{
|
||||
garbage_collection();
|
||||
exit_handler();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -451,6 +451,7 @@ function approve_post($post_id_list, $id, $mode)
|
|||
{
|
||||
global $db, $template, $user, $config;
|
||||
global $phpEx, $phpbb_root_path;
|
||||
global $request;
|
||||
|
||||
if (!check_ids($post_id_list, POSTS_TABLE, 'post_id', array('m_approve')))
|
||||
{
|
||||
|
@ -709,7 +710,20 @@ function approve_post($post_id_list, $id, $mode)
|
|||
$add_message = '<br /><br />' . sprintf($user->lang['RETURN_POST'], '<a href="' . $post_url . '">', '</a>');
|
||||
}
|
||||
|
||||
trigger_error($user->lang[$success_msg] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], "<a href=\"$redirect\">", '</a>') . $add_message);
|
||||
$message = $user->lang[$success_msg] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], "<a href=\"$redirect\">", '</a>') . $add_message;
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array(
|
||||
'MESSAGE_TITLE' => $user->lang['INFORMATION'],
|
||||
'MESSAGE_TEXT' => $message,
|
||||
'REFRESH_DATA' => null,
|
||||
'approved' => true
|
||||
));
|
||||
}
|
||||
|
||||
trigger_error($message);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -968,7 +982,20 @@ function disapprove_post($post_id_list, $id, $mode)
|
|||
}
|
||||
else
|
||||
{
|
||||
$message = $user->lang[$success_msg] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], "<a href=\"$redirect\">", '</a>');
|
||||
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array(
|
||||
'MESSAGE_TITLE' => $user->lang['INFORMATION'],
|
||||
'MESSAGE_TEXT' => $message,
|
||||
'REFRESH_DATA' => null,
|
||||
'approved' => false
|
||||
));
|
||||
}
|
||||
|
||||
meta_refresh(3, $redirect);
|
||||
trigger_error($user->lang[$success_msg] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], "<a href=\"$redirect\">", '</a>'));
|
||||
trigger_error($message);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -147,5 +147,36 @@ if (function_exists('date_default_timezone_set') && function_exists('date_defaul
|
|||
date_default_timezone_set(@date_default_timezone_get());
|
||||
}
|
||||
|
||||
// Autoloading of dependencies.
|
||||
// Three options are supported:
|
||||
// 1. If dependencies are installed with Composer, Composer will create a
|
||||
// vendor/.composer/autoload.php. If this file exists it will be
|
||||
// automatically used by phpBB. This is the default mode that phpBB
|
||||
// will use when shipped.
|
||||
// 2. To disable composer autoloading, PHPBB_NO_COMPOSER_AUTOLOAD can be specified.
|
||||
// Additionally specify PHPBB_AUTOLOAD=/path/to/autoload.php in the
|
||||
// environment. This is useful for running CLI scripts and tests.
|
||||
// /path/to/autoload.php should define and register class loaders
|
||||
// for all of phpBB's dependencies.
|
||||
// 3. You can also set PHPBB_NO_COMPOSER_AUTOLOAD without setting PHPBB_AUTOLOAD.
|
||||
// In this case autoloading needs to be defined before running any phpBB
|
||||
// script. This might be useful in cases when phpBB is integrated into a
|
||||
// larger program.
|
||||
if (getenv('PHPBB_NO_COMPOSER_AUTOLOAD'))
|
||||
{
|
||||
if (getenv('PHPBB_AUTOLOAD'))
|
||||
{
|
||||
require(getenv('PHPBB_AUTOLOAD'));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!file_exists($phpbb_root_path . 'vendor/.composer/autoload.php'))
|
||||
{
|
||||
trigger_error('You have not set up composer dependencies. See http://getcomposer.org/.', E_USER_ERROR);
|
||||
}
|
||||
require($phpbb_root_path . 'vendor/.composer/autoload.php');
|
||||
}
|
||||
|
||||
$starttime = explode(' ', microtime());
|
||||
$starttime = $starttime[1] + $starttime[0];
|
||||
|
|
|
@ -25,7 +25,7 @@ class ucp_zebra
|
|||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx;
|
||||
global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx, $request;
|
||||
|
||||
$submit = (isset($_POST['submit']) || isset($_GET['add']) || isset($_GET['remove'])) ? true : false;
|
||||
$s_hidden_fields = '';
|
||||
|
@ -199,7 +199,23 @@ class ucp_zebra
|
|||
}
|
||||
}
|
||||
|
||||
if ($updated)
|
||||
if ($request->is_ajax())
|
||||
{
|
||||
$message = ($updated) ? $user->lang[$l_mode . '_UPDATED'] : implode('<br />', $error);
|
||||
|
||||
$json_response = new phpbb_json_response;
|
||||
$json_response->send(array(
|
||||
'success' => $updated,
|
||||
|
||||
'MESSAGE_TITLE' => $user->lang['INFORMATION'],
|
||||
'MESSAGE_TEXT' => $message,
|
||||
'REFRESH_DATA' => array(
|
||||
'time' => 3,
|
||||
'url' => $this->u_action
|
||||
)
|
||||
));
|
||||
}
|
||||
else if ($updated)
|
||||
{
|
||||
meta_refresh(3, $this->u_action);
|
||||
$message = $user->lang[$l_mode . '_UPDATED'] . '<br />' . implode('<br />', $error) . ((sizeof($error)) ? '<br />' : '') . '<br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
|
||||
|
|
|
@ -17,12 +17,11 @@ define('IN_PHPBB', true);
|
|||
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
include($phpbb_root_path . 'common.' . $phpEx);
|
||||
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
|
||||
|
||||
// Start session management
|
||||
$user->session_begin();
|
||||
$auth->acl($user->data);
|
||||
$user->setup('viewforum');
|
||||
$user->setup();
|
||||
|
||||
// Handle the display of extension front pages
|
||||
if ($ext = $request->variable('ext', ''))
|
||||
|
@ -57,6 +56,10 @@ if ($ext = $request->variable('ext', ''))
|
|||
exit_handler();
|
||||
}
|
||||
|
||||
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
|
||||
|
||||
$user->add_lang('viewforum');
|
||||
|
||||
display_forums('', $config['load_moderators']);
|
||||
|
||||
$order_legend = ($config['legend_sort_groupname']) ? 'group_name' : 'group_legend';
|
||||
|
|
|
@ -120,6 +120,7 @@ $cache = $cache_factory->get_service();
|
|||
$phpbb_class_loader_ext->set_cache($cache->get_driver());
|
||||
$phpbb_class_loader->set_cache($cache->get_driver());
|
||||
|
||||
$phpbb_dispatcher = new phpbb_event_dispatcher();
|
||||
$request = new phpbb_request();
|
||||
$user = new user();
|
||||
$db = new $sql_db();
|
||||
|
|
|
@ -92,6 +92,7 @@ $cache = $cache_factory->get_service();
|
|||
$phpbb_class_loader_ext->set_cache($cache->get_driver());
|
||||
$phpbb_class_loader->set_cache($cache->get_driver());
|
||||
|
||||
$phpbb_dispatcher = new phpbb_event_dispatcher();
|
||||
$request = new phpbb_request();
|
||||
|
||||
// make sure request_var uses this request instance
|
||||
|
|
|
@ -95,10 +95,10 @@ $lang = array_merge($lang, array(
|
|||
'ACP_GLOBAL_MODERATORS' => 'Global moderators',
|
||||
'ACP_GLOBAL_PERMISSIONS' => 'Global permissions',
|
||||
'ACP_GROUPS' => 'Groups',
|
||||
'ACP_GROUPS_FORUM_PERMISSIONS' => 'Groups’ forum permissions',
|
||||
'ACP_GROUPS_FORUM_PERMISSIONS' => 'Group forum permissions',
|
||||
'ACP_GROUPS_MANAGE' => 'Manage groups',
|
||||
'ACP_GROUPS_MANAGEMENT' => 'Group management',
|
||||
'ACP_GROUPS_PERMISSIONS' => 'Groups’ permissions',
|
||||
'ACP_GROUPS_PERMISSIONS' => 'Group permissions',
|
||||
'ACP_GROUPS_POSITION' => 'Manage group positions',
|
||||
|
||||
'ACP_ICONS' => 'Topic icons',
|
||||
|
@ -177,9 +177,9 @@ $lang = array_merge($lang, array(
|
|||
'ACP_THEMES' => 'Themes',
|
||||
|
||||
'ACP_UPDATE' => 'Updating',
|
||||
'ACP_USERS_FORUM_PERMISSIONS' => 'Users’ forum permissions',
|
||||
'ACP_USERS_FORUM_PERMISSIONS' => 'User forum permissions',
|
||||
'ACP_USERS_LOGS' => 'User logs',
|
||||
'ACP_USERS_PERMISSIONS' => 'Users’ permissions',
|
||||
'ACP_USERS_PERMISSIONS' => 'User permissions',
|
||||
'ACP_USER_ATTACH' => 'Attachments',
|
||||
'ACP_USER_AVATAR' => 'Avatar',
|
||||
'ACP_USER_FEEDBACK' => 'Feedback',
|
||||
|
@ -370,25 +370,32 @@ $lang = array_merge($lang, array(
|
|||
'PURGE_CACHE' => 'Purge the cache',
|
||||
'PURGE_CACHE_CONFIRM' => 'Are you sure you wish to purge the cache?',
|
||||
'PURGE_CACHE_EXPLAIN' => 'Purge all cache related items, this includes any cached template files or queries.',
|
||||
'PURGE_CACHE_SUCCESS' => 'Cache successfully purged.',
|
||||
|
||||
'PURGE_SESSIONS' => 'Purge all sessions',
|
||||
'PURGE_SESSIONS_CONFIRM' => 'Are you sure you wish to purge all sessions? This will log out all users.',
|
||||
'PURGE_SESSIONS_EXPLAIN' => 'Purge all sessions. This will log out all users by truncating the session table.',
|
||||
'PURGE_SESSIONS_SUCCESS' => 'Sessions successfully purged.',
|
||||
|
||||
'RESET_DATE' => 'Reset board’s start date',
|
||||
'RESET_DATE_CONFIRM' => 'Are you sure you wish to reset the board’s start date?',
|
||||
'RESET_DATE_SUCCESS' => 'Board’s start date reset',
|
||||
'RESET_ONLINE' => 'Reset most users ever online',
|
||||
'RESET_ONLINE_CONFIRM' => 'Are you sure you wish to reset the most users ever online counter?',
|
||||
'RESET_ONLINE_SUCCESS' => 'Most users ever online reset',
|
||||
'RESYNC_FILES_STATS_CONFIRM' => 'Are you sure you wish to resynchronise files statistics?',
|
||||
'RESYNC_POSTCOUNTS' => 'Resynchronise post counts',
|
||||
'RESYNC_POSTCOUNTS_EXPLAIN' => 'Only existing posts will be taken into consideration. Pruned posts will not be counted.',
|
||||
'RESYNC_POSTCOUNTS_CONFIRM' => 'Are you sure you wish to resynchronise post counts?',
|
||||
'RESYNC_POSTCOUNTS_SUCCESS' => 'Resynchronised post counts',
|
||||
'RESYNC_POST_MARKING' => 'Resynchronise dotted topics',
|
||||
'RESYNC_POST_MARKING_CONFIRM' => 'Are you sure you wish to resynchronise dotted topics?',
|
||||
'RESYNC_POST_MARKING_EXPLAIN' => 'First unmarks all topics and then correctly marks topics that have seen any activity during the past six months.',
|
||||
'RESYNC_POST_MARKING_SUCCESS' => 'Resynchronised dotted topics',
|
||||
'RESYNC_STATS' => 'Resynchronise statistics',
|
||||
'RESYNC_STATS_CONFIRM' => 'Are you sure you wish to resynchronise statistics?',
|
||||
'RESYNC_STATS_EXPLAIN' => 'Recalculates the total number of posts, topics, users and files.',
|
||||
'RESYNC_STATS_SUCCESS' => 'Resynchronised statistics',
|
||||
'RUN' => 'Run now',
|
||||
|
||||
'STATISTIC' => 'Statistic',
|
||||
|
|
|
@ -39,10 +39,10 @@ $lang = array_merge($lang, array(
|
|||
<p>Permissions are highly granular and grouped into four major sections, which are:</p>
|
||||
|
||||
<h2>Global Permissions</h2>
|
||||
<p>These are used to control access on a global level and apply to the entire bulletin board. They are further divided into Users’ Permissions, Groups’ Permissions, Administrators and Global Moderators.</p>
|
||||
<p>These are used to control access on a global level and apply to the entire bulletin board. They are further divided into User Permissions, Group Permissions, Administrators and Global Moderators.</p>
|
||||
|
||||
<h2>Forum Based Permissions</h2>
|
||||
<p>These are used to control access on a per forum basis. They are further divided into Forum Permissions, Forum Moderators, Users’ Forum Permissions and Groups’ Forum Permissions.</p>
|
||||
<p>These are used to control access on a per forum basis. They are further divided into Forum Permissions, Forum Moderators, User Forum Permissions and Group Forum Permissions.</p>
|
||||
|
||||
<h2>Permission Roles</h2>
|
||||
<p>These are used to create different sets of permissions for the different permission types later being able to be assigned on a role-based basis. The default roles should cover the administration of bulletin boards large and small, though within each of the four divisions, you can add/edit/delete roles as you see fit.</p>
|
||||
|
@ -82,13 +82,13 @@ $lang = array_merge($lang, array(
|
|||
'ACP_FORUM_PERMISSIONS_COPY_EXPLAIN' => 'Here you can copy forum permissions from one forum to one or more other forums.',
|
||||
'ACP_GLOBAL_MODERATORS_EXPLAIN' => 'Here you can assign global moderator permissions to users or groups. These moderators are like ordinary moderators except they have access to every forum on your board.',
|
||||
'ACP_GROUPS_FORUM_PERMISSIONS_EXPLAIN' => 'Here you can assign forum permissions to groups.',
|
||||
'ACP_GROUPS_PERMISSIONS_EXPLAIN' => 'Here you can assign global permissions to groups - user permissions, global moderator permissions and administrator permissions. User permissions include capabilities such as the use of avatars, sending private messages, et cetera; global moderator permissions such as approving posts, manage topics, manage bans, et cetera and lastly administrator permissions such as altering permissions, define custom BBCodes, manage forums, et cetera. Individual users permissions should only be changed in rare occasions, the preferred method is putting users in groups and assigning the group’s permissions.',
|
||||
'ACP_GROUPS_PERMISSIONS_EXPLAIN' => 'Here you can assign global permissions to groups - user permissions, global moderator permissions and administrator permissions. User permissions include capabilities such as the use of avatars, sending private messages, et cetera; global moderator permissions such as approving posts, manage topics, manage bans, et cetera and lastly administrator permissions such as altering permissions, define custom BBCodes, manage forums, et cetera. Individual user permissions should only be changed in rare occasions, the preferred method is putting users in groups and assigning the group permissions.',
|
||||
'ACP_ADMIN_ROLES_EXPLAIN' => 'Here you are able to manage the roles for administrative permissions. Roles are effective permissions, if you change a role the items having this role assigned will change its permissions too.',
|
||||
'ACP_FORUM_ROLES_EXPLAIN' => 'Here you are able to manage the roles for forum permissions. Roles are effective permissions, if you change a role the items having this role assigned will change its permissions too.',
|
||||
'ACP_MOD_ROLES_EXPLAIN' => 'Here you are able to manage the roles for moderative permissions. Roles are effective permissions, if you change a role the items having this role assigned will change its permissions too.',
|
||||
'ACP_USER_ROLES_EXPLAIN' => 'Here you are able to manage the roles for user permissions. Roles are effective permissions, if you change a role the items having this role assigned will change its permissions too.',
|
||||
'ACP_USERS_FORUM_PERMISSIONS_EXPLAIN' => 'Here you can assign forum permissions to users.',
|
||||
'ACP_USERS_PERMISSIONS_EXPLAIN' => 'Here you can assign global permissions to users - user permissions, global moderator permissions and administrator permissions. User permissions include capabilities such as the use of avatars, sending private messages, et cetera; global moderator permissions such as approving posts, manage topics, manage bans, et cetera and lastly administrator permissions such as altering permissions, define custom BBCodes, manage forums, et cetera. To alter these settings for large numbers of users the Group permissions system is the preferred method. User’s permissions should only be changed in rare occasions, the preferred method is putting users in groups and assigning the group’s permissions.',
|
||||
'ACP_USERS_PERMISSIONS_EXPLAIN' => 'Here you can assign global permissions to users - user permissions, global moderator permissions and administrator permissions. User permissions include capabilities such as the use of avatars, sending private messages, et cetera; global moderator permissions such as approving posts, manage topics, manage bans, et cetera and lastly administrator permissions such as altering permissions, define custom BBCodes, manage forums, et cetera. To alter these settings for large numbers of users the Group permissions system is the preferred method. User permissions should only be changed in rare occasions, the preferred method is putting users in groups and assigning the group permissions.',
|
||||
'ACP_VIEW_ADMIN_PERMISSIONS_EXPLAIN' => 'Here you can view the effective administrative permissions assigned to the selected users/groups.',
|
||||
'ACP_VIEW_GLOBAL_MOD_PERMISSIONS_EXPLAIN' => 'Here you can view the global moderative permissions assigned to the selected users/groups.',
|
||||
'ACP_VIEW_FORUM_PERMISSIONS_EXPLAIN' => 'Here you can view the forum permissions assigned to the selected users/groups and forums.',
|
||||
|
@ -224,8 +224,8 @@ $lang = array_merge($lang, array(
|
|||
'SELECT_TYPE' => 'Select type',
|
||||
'SET_PERMISSIONS' => 'Set permissions',
|
||||
'SET_ROLE_PERMISSIONS' => 'Set role permissions',
|
||||
'SET_USERS_PERMISSIONS' => 'Set users permissions',
|
||||
'SET_USERS_FORUM_PERMISSIONS' => 'Set users forum permissions',
|
||||
'SET_USERS_PERMISSIONS' => 'Set user permissions',
|
||||
'SET_USERS_FORUM_PERMISSIONS' => 'Set user forum permissions',
|
||||
|
||||
'TRACE_DEFAULT' => 'By default every permission is <samp>NO</samp> (unset). So the permission can be overwritten by other settings.',
|
||||
'TRACE_FOR' => 'Trace for',
|
||||
|
|
|
@ -45,6 +45,7 @@ $lang = array_merge($lang, array(
|
|||
|
||||
'BBCODE_ADDED' => 'BBCode added successfully.',
|
||||
'BBCODE_EDITED' => 'BBCode edited successfully.',
|
||||
'BBCODE_DELETED' => 'The BBCode has been removed successfully.',
|
||||
'BBCODE_NOT_EXIST' => 'The BBCode you selected does not exist.',
|
||||
'BBCODE_HELPLINE' => 'Help line',
|
||||
'BBCODE_HELPLINE_EXPLAIN' => 'This field contains the mouse over text of the BBCode.',
|
||||
|
|
|
@ -283,9 +283,11 @@ $lang = array_merge($lang, array(
|
|||
'SELECTED_THEME_FILE' => 'Selected theme file',
|
||||
'STORE_FILESYSTEM' => 'Filesystem',
|
||||
'STYLE_ACTIVATE' => 'Activate',
|
||||
'STYLE_ACTIVATED' => 'Style activated successfully',
|
||||
'STYLE_ACTIVE' => 'Active',
|
||||
'STYLE_ADDED' => 'Style added successfully.',
|
||||
'STYLE_DEACTIVATE' => 'Deactivate',
|
||||
'STYLE_DEACTIVATED' => 'Style deactivated successfully',
|
||||
'STYLE_DEFAULT' => 'Make default style',
|
||||
'STYLE_DEFAULT_CHANGE' => 'Change default style',
|
||||
'STYLE_DEFAULT_CHANGE_INACTIVE' => 'You must activate style before making it default style.',
|
||||
|
|
|
@ -67,6 +67,8 @@ $lang = array_merge($lang, array(
|
|||
'ADMINISTRATORS' => 'Administrators',
|
||||
'AGE' => 'Age',
|
||||
'AIM' => 'AIM',
|
||||
'AJAX_ERROR_TITLE' => 'AJAX error',
|
||||
'AJAX_ERROR_TEXT' => 'Something went wrong when processing your request.',
|
||||
'ALLOWED' => 'Allowed',
|
||||
'ALL_FILES' => 'All files',
|
||||
'ALL_FORUMS' => 'All forums',
|
||||
|
@ -183,6 +185,7 @@ $lang = array_merge($lang, array(
|
|||
'ERR_UNWATCHING' => 'An error occured while trying to unsubscribe.',
|
||||
'ERR_WATCHING' => 'An error occured while trying to subscribe.',
|
||||
'ERR_WRONG_PATH_TO_PHPBB' => 'The phpBB path specified appears to be invalid.',
|
||||
'ERROR' => 'Error',
|
||||
'EXPAND_VIEW' => 'Expand view',
|
||||
'EXTENSION' => 'Extension',
|
||||
'EXTENSION_CONTROLLER_MISSING' => 'The extension <strong>%s</strong> is missing a controller class and cannot be accessed through the front-end.',
|
||||
|
@ -314,6 +317,7 @@ $lang = array_merge($lang, array(
|
|||
'LDAP_NO_SERVER_CONNECTION' => 'Could not connect to LDAP server.',
|
||||
'LDAP_SEARCH_FAILED' => 'An error occured while searching the LDAP directory.',
|
||||
'LEGEND' => 'Legend',
|
||||
'LOADING' => 'Loading',
|
||||
'LOCATION' => 'Location',
|
||||
'LOCK_POST' => 'Lock post',
|
||||
'LOCK_POST_EXPLAIN' => 'Prevent editing',
|
||||
|
@ -451,6 +455,7 @@ $lang = array_merge($lang, array(
|
|||
2 => '%d pixels',
|
||||
),
|
||||
'PLAY_QUICKTIME_FILE' => 'Play Quicktime file',
|
||||
'PLEASE_WAIT' => 'Please wait.',
|
||||
'PM' => 'PM',
|
||||
'PM_REPORTED' => 'Click to view report',
|
||||
'POSTING_MESSAGE' => 'Posting message in %s',
|
||||
|
@ -476,7 +481,7 @@ $lang = array_merge($lang, array(
|
|||
'POST_SUBJECT' => 'Post subject',
|
||||
'POST_TIME' => 'Post time',
|
||||
'POST_TOPIC' => 'Post a new topic',
|
||||
'POST_UNAPPROVED' => 'This post is waiting for approval',
|
||||
'POST_UNAPPROVED' => 'Post awaiting approval:',
|
||||
'PREVIEW' => 'Preview',
|
||||
'PREVIOUS' => 'Previous', // Used in pagination
|
||||
'PREVIOUS_STEP' => 'Previous',
|
||||
|
@ -597,6 +602,7 @@ $lang = array_merge($lang, array(
|
|||
'TEST_CONNECTION' => 'Test connection',
|
||||
'THE_TEAM' => 'The team',
|
||||
'TIME' => 'Time',
|
||||
'TIMEOUT_PROCESSING_REQ' => 'Request timed out.',
|
||||
|
||||
'TOO_LARGE' => 'The value you entered is too large.',
|
||||
'TOO_LARGE_MAX_RECIPIENTS' => 'The value of <strong>Maximum number of allowed recipients per private message</strong> setting you entered is too large.',
|
||||
|
|
|
@ -35,6 +35,7 @@ if (empty($lang) || !is_array($lang))
|
|||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
|
||||
$lang = array_merge($lang, array(
|
||||
'APPROVE' => 'Approve',
|
||||
'ATTACHMENT' => 'Attachment',
|
||||
'ATTACHMENT_FUNCTIONALITY_DISABLED' => 'The attachments feature has been disabled.',
|
||||
|
||||
|
@ -47,9 +48,9 @@ $lang = array_merge($lang, array(
|
|||
'BUMP_TOPIC' => 'Bump topic',
|
||||
|
||||
'CODE' => 'Code',
|
||||
'COLLAPSE_QR' => 'Hide Quick Reply',
|
||||
|
||||
'DELETE_TOPIC' => 'Delete topic',
|
||||
'DISAPPROVE' => 'Disapprove',
|
||||
'DOWNLOAD_NOTICE' => 'You do not have the required permissions to view the files attached to this post.',
|
||||
|
||||
'EDITED_TIMES_TOTAL' => array(
|
||||
|
@ -97,7 +98,6 @@ $lang = array_merge($lang, array(
|
|||
'REPLY_TO_TOPIC' => 'Reply to topic',
|
||||
'RETURN_POST' => '%sReturn to the post%s',
|
||||
|
||||
'SHOW_QR' => 'Quick Reply',
|
||||
'SUBMIT_VOTE' => 'Submit vote',
|
||||
|
||||
'TOTAL_VOTES' => 'Total votes',
|
||||
|
|
100
phpBB/styles/prosilver/template/ajax.js
Normal file
100
phpBB/styles/prosilver/template/ajax.js
Normal file
|
@ -0,0 +1,100 @@
|
|||
(function($) { // Avoid conflicts with other libraries
|
||||
|
||||
"use strict";
|
||||
|
||||
// This callback finds the post from the delete link, and removes it.
|
||||
phpbb.add_ajax_callback('post_delete', function() {
|
||||
var el = $(this),
|
||||
post_id;
|
||||
|
||||
if (el.attr('data-refresh') === undefined)
|
||||
{
|
||||
post_id = el[0].href.split('&p=')[1];
|
||||
var post = el.parents('#p' + post_id).css('pointer-events', 'none');
|
||||
if (post.hasClass('bg1') || post.hasClass('bg2'))
|
||||
{
|
||||
var posts1 = post.nextAll('.bg1');
|
||||
post.nextAll('.bg2').removeClass('bg2').addClass('bg1');
|
||||
posts1.removeClass('bg1').addClass('bg2');
|
||||
}
|
||||
post.fadeOut(function() {
|
||||
$(this).remove();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// This callback removes the approve / disapprove div or link.
|
||||
phpbb.add_ajax_callback('post_approve', function(res) {
|
||||
var remove = (res.approved) ? $(this) : $(this).parents('.post');
|
||||
$(remove).css('pointer-events', 'none').fadeOut(function() {
|
||||
$(this).remove();
|
||||
});
|
||||
});
|
||||
|
||||
// This removes the parent row of the link or form that fired the callback.
|
||||
phpbb.add_ajax_callback('row_delete', function() {
|
||||
$(this).parents('tr').remove();
|
||||
});
|
||||
|
||||
// This handles friend / foe additions removals.
|
||||
phpbb.add_ajax_callback('zebra', function(res) {
|
||||
var zebra;
|
||||
|
||||
if (res.success) {
|
||||
zebra = $('.zebra');
|
||||
zebra.first().html(res.MESSAGE_TEXT);
|
||||
zebra.not(':first').html(' ').prev().html(' ');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
$('[data-ajax]').each(function() {
|
||||
var $this = $(this),
|
||||
ajax = $this.attr('data-ajax'),
|
||||
fn;
|
||||
|
||||
if (ajax !== 'false')
|
||||
{
|
||||
fn = (ajax !== 'true') ? ajax : null;
|
||||
phpbb.ajaxify({
|
||||
selector: this,
|
||||
refresh: $this.attr('data-refresh') !== undefined,
|
||||
callback: fn
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This AJAXifies the quick-mod tools. The reason it cannot be a standard
|
||||
* callback / data attribute is that it requires filtering - some of the options
|
||||
* can be ajaxified, while others cannot.
|
||||
*/
|
||||
phpbb.ajaxify({
|
||||
selector: '#quickmodform',
|
||||
refresh: true,
|
||||
filter: function (data) {
|
||||
var action = $('#quick-mod-select').val();
|
||||
|
||||
if (action === 'make_normal')
|
||||
{
|
||||
return $(this).find('select option[value="make_global"]').length > 0;
|
||||
}
|
||||
else if (action === 'lock' || action === 'unlock')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (action === 'delete_topic' || action === 'make_sticky' || action === 'make_announce' || action === 'make_global') {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
})(jQuery); // Avoid conflicts with other libraries
|
|
@ -8,7 +8,7 @@
|
|||
<!-- IF S_DISPLAY_SEARCH -->
|
||||
<li><a href="{U_SEARCH_UNANSWERED}">{L_SEARCH_UNANSWERED}</a><!-- IF S_LOAD_UNREADS --> • <a href="{U_SEARCH_UNREAD}">{L_SEARCH_UNREAD}</a><!-- ENDIF --><!-- IF S_USER_LOGGED_IN --> • <a href="{U_SEARCH_NEW}">{L_SEARCH_NEW}</a><!-- ENDIF --> • <a href="{U_SEARCH_ACTIVE_TOPICS}">{L_SEARCH_ACTIVE_TOPICS}</a></li>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF not S_IS_BOT and U_MARK_FORUMS --><li class="rightside"><a href="{U_MARK_FORUMS}" accesskey="m">{L_MARK_FORUMS_READ}</a></li><!-- ENDIF -->
|
||||
<!-- IF not S_IS_BOT and U_MARK_FORUMS --><li class="rightside"><a href="{U_MARK_FORUMS}" accesskey="m" data-ajax="true">{L_MARK_FORUMS_READ}</a></li><!-- ENDIF -->
|
||||
</ul>
|
||||
<!-- ENDIF -->
|
||||
|
||||
|
|
|
@ -35,15 +35,15 @@
|
|||
<!-- BEGIN custom_fields --><dt>{custom_fields.PROFILE_FIELD_NAME}:</dt> <dd>{custom_fields.PROFILE_FIELD_VALUE}</dd><!-- END custom_fields -->
|
||||
<!-- IF S_USER_LOGGED_IN and S_ZEBRA -->
|
||||
<!-- IF U_REMOVE_FRIEND -->
|
||||
<dt> </dt> <dd><a href="{U_REMOVE_FRIEND}"><strong>{L_REMOVE_FRIEND}</strong></a></dd>
|
||||
<dt> </dt> <dd class="zebra"><a href="{U_REMOVE_FRIEND}" data-ajax="zebra"><strong>{L_REMOVE_FRIEND}</strong></a></dd>
|
||||
<!-- ELSEIF U_REMOVE_FOE -->
|
||||
<dt> </dt> <dd><a href="{U_REMOVE_FOE}"><strong>{L_REMOVE_FOE}</strong></a></dd>
|
||||
<dt> </dt> <dd class="zebra"><a href="{U_REMOVE_FOE}" data-ajax="zebra"><strong>{L_REMOVE_FOE}</strong></a></dd>
|
||||
<!-- ELSE -->
|
||||
<!-- IF U_ADD_FRIEND -->
|
||||
<dt> </dt> <dd><a href="{U_ADD_FRIEND}"><strong>{L_ADD_FRIEND}</strong></a></dd>
|
||||
<dt> </dt> <dd class="zebra"><a href="{U_ADD_FRIEND}" data-ajax="zebra"><strong>{L_ADD_FRIEND}</strong></a></dd>
|
||||
<!-- ENDIF -->
|
||||
<!-- IF U_ADD_FOE -->
|
||||
<dt> </dt> <dd><a href="{U_ADD_FOE}"><strong>{L_ADD_FOE}</strong></a></dd>
|
||||
<dt> </dt> <dd class="zebra"><a href="{U_ADD_FOE}" data-ajax="zebra"><strong>{L_ADD_FOE}</strong></a></dd>
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
|
|
@ -8,12 +8,12 @@
|
|||
<ul class="linklist">
|
||||
<li class="icon-home"><a href="{U_INDEX}" accesskey="h">{L_INDEX}</a></li>
|
||||
<!-- IF not S_IS_BOT -->
|
||||
<!-- IF S_WATCH_FORUM_LINK --><li <!-- IF S_WATCHING_FORUM -->class="icon-unsubscribe"<!-- ELSE -->class="icon-subscribe"<!-- ENDIF -->><a href="{S_WATCH_FORUM_LINK}" title="{S_WATCH_FORUM_TITLE}">{S_WATCH_FORUM_TITLE}</a></li><!-- ENDIF -->
|
||||
<!-- IF U_WATCH_TOPIC --><li <!-- IF S_WATCHING_TOPIC -->class="icon-unsubscribe"<!-- ELSE -->class="icon-subscribe"<!-- ENDIF -->><a href="{U_WATCH_TOPIC}" title="{L_WATCH_TOPIC}">{L_WATCH_TOPIC}</a></li><!-- ENDIF -->
|
||||
<!-- IF U_BOOKMARK_TOPIC --><li class="icon-bookmark"><a href="{U_BOOKMARK_TOPIC}" title="{L_BOOKMARK_TOPIC}">{L_BOOKMARK_TOPIC}</a></li><!-- ENDIF -->
|
||||
<!-- IF U_BUMP_TOPIC --><li class="icon-bump"><a href="{U_BUMP_TOPIC}" title="{L_BUMP_TOPIC}">{L_BUMP_TOPIC}</a></li><!-- ENDIF -->
|
||||
<!-- IF S_WATCH_FORUM_LINK --><li <!-- IF S_WATCHING_FORUM -->class="icon-unsubscribe"<!-- ELSE -->class="icon-subscribe"<!-- ENDIF -->><a href="{S_WATCH_FORUM_LINK}" title="{S_WATCH_FORUM_TITLE}" data-ajax="alt_text" data-alt-text="<!-- IF S_WATCHING_FORUM -->{L_START_WATCHING_FORUM}<!-- ELSE -->{L_STOP_WATCHING_FORUM}<!-- ENDIF -->">{S_WATCH_FORUM_TITLE}</a></li><!-- ENDIF -->
|
||||
<!-- IF U_WATCH_TOPIC --><li <!-- IF S_WATCHING_TOPIC -->class="icon-unsubscribe"<!-- ELSE -->class="icon-subscribe"<!-- ENDIF -->><a href="{U_WATCH_TOPIC}" title="{L_WATCH_TOPIC}" data-ajax="alt_text" data-alt-text="<!-- IF S_WATCHING_TOPIC -->{L_START_WATCHING_TOPIC}<!-- ELSE -->{L_STOP_WATCHING_TOPIC}<!-- ENDIF -->">{L_WATCH_TOPIC}</a></li><!-- ENDIF -->
|
||||
<!-- IF U_BOOKMARK_TOPIC --><li class="icon-bookmark"><a href="{U_BOOKMARK_TOPIC}" title="{L_BOOKMARK_TOPIC}" data-ajax="alt_text" data-alt-text="<!-- IF S_BOOKMARKED_TOPIC -->{L_BOOKMARK_TOPIC_REAL}<!-- ELSE -->{L_BOOKMARK_TOPIC_REMOVE}<!-- ENDIF -->">{L_BOOKMARK_TOPIC}</a></li><!-- ENDIF -->
|
||||
<!-- IF U_BUMP_TOPIC --><li class="icon-bump"><a href="{U_BUMP_TOPIC}" title="{L_BUMP_TOPIC}" data-ajax="true">{L_BUMP_TOPIC}</a></li><!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
<li class="rightside"><!-- IF U_TEAM --><a href="{U_TEAM}">{L_THE_TEAM}</a> • <!-- ENDIF --><!-- IF not S_IS_BOT --><a href="{U_DELETE_COOKIES}">{L_DELETE_COOKIES}</a> • <!-- ENDIF -->{S_TIMEZONE}</li>
|
||||
<li class="rightside"><!-- IF U_TEAM --><a href="{U_TEAM}">{L_THE_TEAM}</a> • <!-- ENDIF --><!-- IF not S_IS_BOT --><a href="{U_DELETE_COOKIES}" data-ajax="true" data-refresh="true">{L_DELETE_COOKIES}</a> • <!-- ENDIF -->{S_TIMEZONE}</li>
|
||||
</ul>
|
||||
|
||||
<span class="corners-bottom"><span></span></span></div>
|
||||
|
@ -24,6 +24,22 @@
|
|||
<!-- IF DEBUG_OUTPUT --><br />{DEBUG_OUTPUT}<!-- ENDIF -->
|
||||
<!-- IF U_ACP --><br /><strong><a href="{U_ACP}">{L_ACP}</a></strong><!-- ENDIF -->
|
||||
</div>
|
||||
|
||||
<div id="darkenwrapper" data-ajax-error-title="{L_AJAX_ERROR_TITLE}" data-ajax-error-text="{L_AJAX_ERROR_TEXT}">
|
||||
<div id="darken"> </div>
|
||||
<div class="jalert" id="loadingalert"><h3>{L_LOADING}</h3><p>{L_PLEASE_WAIT}</p></div>
|
||||
</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>
|
||||
<p class="alert_text"></p>
|
||||
<input type="button" class="button1" value="{L_YES}" />
|
||||
<input type="button" class="button2" value="{L_NO}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -35,6 +51,8 @@
|
|||
|
||||
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
||||
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/core.js"></script>
|
||||
<script type="text/javascript" src="{T_TEMPLATE_PATH}/ajax.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -84,6 +84,10 @@
|
|||
<link href="{T_THEME_PATH}/bidi.css" rel="stylesheet" type="text/css" media="screen, projection" />
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!--[if lte IE 8]>
|
||||
<link href="{T_THEME_PATH}/tweaks.css" rel="stylesheet" type="text/css" media="screen, projection" />
|
||||
<![endif]-->
|
||||
|
||||
</head>
|
||||
|
||||
<body id="phpbb" class="section-{SCRIPT_NAME} {S_CONTENT_DIRECTION}">
|
||||
|
|
|
@ -1,51 +1,5 @@
|
|||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
function hide_qr(show)
|
||||
{
|
||||
dE('qr_editor_div');
|
||||
dE('qr_showeditor_div');
|
||||
if (show && document.getElementById('qr_editor_div').style.display != 'none')
|
||||
{
|
||||
document.getElementsByName('message')[0].focus();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function init_qr()
|
||||
{
|
||||
dE('qr_showeditor_div');
|
||||
return true;
|
||||
}
|
||||
onload_functions.push('init_qr();');
|
||||
// ]]>
|
||||
</script>
|
||||
<noscript>
|
||||
<form method="post" action="{U_QR_ACTION}">
|
||||
<div class="panel" id="qr_ns_editor_div">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
<h2>{L_QUICKREPLY}</h2>
|
||||
<fieldset class="fields1">
|
||||
<dl style="clear: left;">
|
||||
<dt><label for="subject">{L_SUBJECT}:</label></dt>
|
||||
<dd><input type="text" name="subject" id="subject-ns" size="45" maxlength="64" tabindex="2" value="{SUBJECT}" class="inputbox autowidth" /></dd>
|
||||
</dl>
|
||||
<div id="message-box-ns">
|
||||
<textarea style="height: 9em;" name="message" rows="7" cols="76" tabindex="3" class="inputbox"></textarea>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="submit-buttons">
|
||||
{S_FORM_TOKEN}
|
||||
{QR_HIDDEN_FIELDS}
|
||||
<input type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" class="button1" />
|
||||
<input type="submit" accesskey="f" tabindex="7" name="full_editor" value="{L_FULL_EDITOR}" class="button2" />
|
||||
</fieldset>
|
||||
<span class="corners-bottom"><span></span></span></div>
|
||||
</div>
|
||||
</form>
|
||||
</noscript>
|
||||
<form method="post" action="{U_QR_ACTION}">
|
||||
<div class="panel" style="display: none" id="qr_editor_div">
|
||||
<div class="panel">
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
<h2>{L_QUICKREPLY}</h2>
|
||||
<fieldset class="fields1">
|
||||
|
@ -61,19 +15,8 @@
|
|||
{S_FORM_TOKEN}
|
||||
{QR_HIDDEN_FIELDS}
|
||||
<input type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" class="button1" />
|
||||
<input type="submit" accesskey="f" tabindex="7" name="full_editor" value="{L_FULL_EDITOR}" class="button2" />
|
||||
<input type="submit" accesskey="f" tabindex="7" name="full_editor" value="{L_FULL_EDITOR}" class="button2" data-ajax="false" />
|
||||
</fieldset>
|
||||
<a href="" class="right-box up" onclick="hide_qr(false); return false;" title="{L_COLLAPSE_QR}">{L_COLLAPSE_QR}</a>
|
||||
<span class="corners-bottom"><span></span></span></div>
|
||||
</div>
|
||||
<div class="panel" style="display: none" id="qr_showeditor_div" >
|
||||
<div class="inner"><span class="corners-top"><span></span></span>
|
||||
|
||||
<div class="content">
|
||||
<fieldset class="submit-buttons">
|
||||
<input type="submit" name="show_qr" tabindex="1" class="button2" value="{L_SHOW_QR}" onclick="hide_qr(true);return false;"/>
|
||||
</fieldset>
|
||||
</div>
|
||||
<span class="corners-bottom"><span></span></span></div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -50,6 +50,10 @@
|
|||
<link href="{T_THEME_PATH}/bidi.css" rel="stylesheet" type="text/css" media="screen, projection" />
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!--[if lte IE 8]>
|
||||
<link href="{T_THEME_PATH}/tweaks.css" rel="stylesheet" type="text/css" media="screen, projection" />
|
||||
<![endif]-->
|
||||
|
||||
<!-- DEFINE $POPUP = 1 -->
|
||||
|
||||
</head>
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
|
||||
<!-- IF PAGINATION or TOTAL_POSTS or TOTAL_TOPICS -->
|
||||
<div class="pagination">
|
||||
<!-- IF not S_IS_BOT and U_MARK_TOPICS --><a href="{U_MARK_TOPICS}" accesskey="m">{L_MARK_TOPICS_READ}</a> • <!-- ENDIF --><!-- IF TOTAL_TOPICS -->{TOTAL_TOPICS}<!-- ENDIF -->
|
||||
<!-- IF not S_IS_BOT and U_MARK_TOPICS --><a href="{U_MARK_TOPICS}" accesskey="m" data-ajax="true">{L_MARK_TOPICS_READ}</a> • <!-- ENDIF --><!-- IF TOTAL_TOPICS -->{TOTAL_TOPICS}<!-- ENDIF -->
|
||||
<!-- IF PAGE_NUMBER -->
|
||||
<!-- IF PAGINATION --> • <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER}</a> • <span>{PAGINATION}</span><!-- ELSE --> • {PAGE_NUMBER}<!-- ENDIF -->
|
||||
<!-- ENDIF -->
|
||||
|
|
|
@ -122,7 +122,7 @@
|
|||
<!-- IF postrow.U_EDIT or postrow.U_DELETE or postrow.U_REPORT or postrow.U_WARN or postrow.U_INFO or postrow.U_QUOTE -->
|
||||
<ul class="profile-icons">
|
||||
<!-- IF postrow.U_EDIT --><li class="edit-icon"><a href="{postrow.U_EDIT}" title="{L_EDIT_POST}"><span>{L_EDIT_POST}</span></a></li><!-- ENDIF -->
|
||||
<!-- IF postrow.U_DELETE --><li class="delete-icon"><a href="{postrow.U_DELETE}" title="{L_DELETE_POST}"><span>{L_DELETE_POST}</span></a></li><!-- ENDIF -->
|
||||
<!-- IF postrow.U_DELETE --><li class="delete-icon"><a href="{postrow.U_DELETE}" title="{L_DELETE_POST}" data-ajax="post_delete"<!-- IF postrow.POST_NUMBER == 1 --> data-refresh="true"<!-- ENDIF -->><span>{L_DELETE_POST}</span></a></li><!-- ENDIF -->
|
||||
<!-- IF postrow.U_REPORT --><li class="report-icon"><a href="{postrow.U_REPORT}" title="{L_REPORT_POST}"><span>{L_REPORT_POST}</span></a></li><!-- ENDIF -->
|
||||
<!-- IF postrow.U_WARN --><li class="warn-icon"><a href="{postrow.U_WARN}" title="{L_WARN_USER}"><span>{L_WARN_USER}</span></a></li><!-- ENDIF -->
|
||||
<!-- IF postrow.U_INFO --><li class="info-icon"><a href="{postrow.U_INFO}" title="{L_INFORMATION}"><span>{L_INFORMATION}</span></a></li><!-- ENDIF -->
|
||||
|
@ -135,10 +135,18 @@
|
|||
<p class="author"><!-- IF S_IS_BOT -->{postrow.MINI_POST_IMG}<!-- ELSE --><a href="{postrow.U_MINI_POST}">{postrow.MINI_POST_IMG}</a><!-- ENDIF -->{L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong> » {postrow.POST_DATE} </p>
|
||||
|
||||
<!-- IF postrow.S_POST_UNAPPROVED or postrow.S_POST_REPORTED -->
|
||||
<form method="post" class="mcp_approve" action="{postrow.U_APPROVE_ACTION}" data-ajax="post_approve">
|
||||
<p class="rules">
|
||||
<!-- IF postrow.S_POST_UNAPPROVED -->{UNAPPROVED_IMG} <a href="{postrow.U_MCP_APPROVE}"><strong>{L_POST_UNAPPROVED}</strong></a><br /><!-- ENDIF -->
|
||||
<!-- IF postrow.S_POST_UNAPPROVED -->
|
||||
{UNAPPROVED_IMG} <strong>{L_POST_UNAPPROVED}</strong>
|
||||
<input class="button2" type="submit" value="{L_DISAPPROVE}" name="action[disapprove]" />
|
||||
<input class="button1" type="submit" value="{L_APPROVE}" name="action[approve]" />
|
||||
<input type="hidden" name="post_id_list[]" value="{postrow.POST_ID}" />
|
||||
{S_FORM_TOKEN}
|
||||
<br /><!-- ENDIF -->
|
||||
<!-- IF postrow.S_POST_REPORTED -->{REPORTED_IMG} <a href="{postrow.U_MCP_REPORT}"><strong>{L_POST_REPORTED}</strong></a><!-- ENDIF -->
|
||||
</p>
|
||||
</form>
|
||||
<!-- ENDIF -->
|
||||
|
||||
<div class="content">{postrow.MESSAGE}</div>
|
||||
|
@ -254,10 +262,16 @@
|
|||
|
||||
<!-- INCLUDE jumpbox.html -->
|
||||
|
||||
<!-- IF S_TOPIC_MOD -->
|
||||
<form method="post" action="{S_MOD_ACTION}">
|
||||
<!-- IF .quickmod -->
|
||||
<form method="post" action="{S_MOD_ACTION}" id="quickmodform" data-ajax="true">
|
||||
<fieldset class="quickmod">
|
||||
<label for="quick-mod-select">{L_QUICK_MOD}:</label> {S_TOPIC_MOD} <input type="submit" value="{L_GO}" class="button2" />
|
||||
<label for="quick-mod-select">{L_QUICK_MOD}:</label>
|
||||
<select name="action" id="quick-mod-select">
|
||||
<!-- BEGIN quickmod -->
|
||||
<option value="{quickmod.VALUE}">{quickmod.TITLE}</option>
|
||||
<!-- END quickmod -->
|
||||
</select>
|
||||
<input type="submit" value="{L_GO}" class="button2" />
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
|
|
@ -26,10 +26,6 @@ hr {
|
|||
border-top-color: #CCCCCC;
|
||||
}
|
||||
|
||||
hr.dashed {
|
||||
border-top-color: #CCCCCC;
|
||||
}
|
||||
|
||||
/* Search box
|
||||
--------------------------------------------- */
|
||||
|
||||
|
@ -452,6 +448,10 @@ dl.faq dt {
|
|||
color: #BC2A4D;
|
||||
}
|
||||
|
||||
.announce, .unreadpost {
|
||||
/* Highlight the announcements & unread posts box */
|
||||
}
|
||||
|
||||
/* Post signature */
|
||||
.signature {
|
||||
border-top-color: #CCCCCC;
|
||||
|
@ -957,7 +957,7 @@ dl.mini dt {
|
|||
|
||||
/* Avatar gallery */
|
||||
#gallery label {
|
||||
background-color: #FFFFFF;
|
||||
background: #FFFFFF;
|
||||
border-color: #CCC;
|
||||
}
|
||||
|
||||
|
@ -992,6 +992,10 @@ dd label {
|
|||
color: #333;
|
||||
}
|
||||
|
||||
fieldset.fields1 {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Hover effects */
|
||||
fieldset dl:hover dt label {
|
||||
color: #000000;
|
||||
|
@ -1070,3 +1074,17 @@ input.search {
|
|||
input.disabled {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
/* jQuery popups
|
||||
---------------------------------------- */
|
||||
.phpbb_alert {
|
||||
background-color: #FFFFFF;
|
||||
border-color: #999999;
|
||||
}
|
||||
.phpbb_alert .alert_close {
|
||||
background-image: url("./images/alert_close.png");
|
||||
}
|
||||
#darken {
|
||||
background-color: #000000;
|
||||
}
|
||||
|
||||
|
|
|
@ -55,8 +55,6 @@ html {
|
|||
body {
|
||||
/* Text-Sizing with ems: http://www.clagnut.com/blog/348/ */
|
||||
font-family: Verdana, Helvetica, Arial, sans-serif;
|
||||
color: #828282;
|
||||
background-color: #FFFFFF;
|
||||
/*font-size: 62.5%; This sets the default font size to be equivalent to 10px */
|
||||
font-size: 10px;
|
||||
line-height: normal;
|
||||
|
@ -68,7 +66,6 @@ h1 {
|
|||
/* Forum name */
|
||||
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
|
||||
margin-right: 200px;
|
||||
color: #FFFFFF;
|
||||
margin-top: 15px;
|
||||
font-weight: bold;
|
||||
font-size: 2em;
|
||||
|
@ -78,7 +75,6 @@ h2 {
|
|||
/* Forum header titles */
|
||||
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
|
||||
font-weight: normal;
|
||||
color: #3f3f3f;
|
||||
font-size: 2em;
|
||||
margin: 0.8em 0 0.2em 0;
|
||||
}
|
||||
|
@ -92,11 +88,10 @@ h3 {
|
|||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
border-bottom: 1px solid transparent;
|
||||
margin-bottom: 3px;
|
||||
padding-bottom: 2px;
|
||||
font-size: 1.05em;
|
||||
color: #989898;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
|
@ -118,8 +113,8 @@ img {
|
|||
|
||||
hr {
|
||||
/* Also see tweaks.css */
|
||||
border: 0 none #FFFFFF;
|
||||
border-top: 1px solid #CCCCCC;
|
||||
border: 0 solid transparent;
|
||||
border-top-width: 1px;
|
||||
height: 1px;
|
||||
margin: 5px 0;
|
||||
display: block;
|
||||
|
@ -127,7 +122,7 @@ hr {
|
|||
}
|
||||
|
||||
hr.dashed {
|
||||
border-top: 1px dashed #CCCCCC;
|
||||
border-top-style: dashed;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
|
@ -209,7 +204,6 @@ a#logo:hover {
|
|||
/* Search box
|
||||
--------------------------------------------- */
|
||||
#search-box {
|
||||
color: #FFFFFF;
|
||||
position: relative;
|
||||
margin-top: 30px;
|
||||
margin-right: 5px;
|
||||
|
@ -221,11 +215,10 @@ a#logo:hover {
|
|||
|
||||
#search-box #keywords {
|
||||
width: 95px;
|
||||
background-color: #FFF;
|
||||
}
|
||||
|
||||
#search-box input {
|
||||
border: 1px solid #b0b0b0;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
/* .button1 style defined later, just a few tweaks for the search button version */
|
||||
|
@ -256,26 +249,24 @@ a#logo:hover {
|
|||
/* Round cornered boxes and backgrounds
|
||||
---------------------------------------- */
|
||||
.headerbar {
|
||||
background: #ebebeb none repeat-x 0 0;
|
||||
color: #FFFFFF;
|
||||
background: transparent none repeat-x 0 0;
|
||||
margin-bottom: 4px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
background-color: #ebebeb;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.forabg {
|
||||
background: #b1b1b1 none repeat-x 0 0;
|
||||
background: transparent none repeat-x 0 0;
|
||||
margin-bottom: 4px;
|
||||
padding: 0 5px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.forumbg {
|
||||
background: #ebebeb none repeat-x 0 0;
|
||||
background: transparent none repeat-x 0 0;
|
||||
margin-bottom: 4px;
|
||||
padding: 0 5px;
|
||||
clear: both;
|
||||
|
@ -284,8 +275,6 @@ a#logo:hover {
|
|||
.panel {
|
||||
margin-bottom: 4px;
|
||||
padding: 0 10px;
|
||||
background-color: #f3f3f3;
|
||||
color: #3f3f3f;
|
||||
}
|
||||
|
||||
.post {
|
||||
|
@ -295,31 +284,10 @@ a#logo:hover {
|
|||
background-position: 100% 0;
|
||||
}
|
||||
|
||||
.post:target .content {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.post:target h3 a {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.bg1 { background-color: #f7f7f7;}
|
||||
.bg2 { background-color: #f2f2f2; }
|
||||
.bg3 { background-color: #ebebeb; }
|
||||
|
||||
.rowbg {
|
||||
margin: 5px 5px 2px 5px;
|
||||
}
|
||||
|
||||
.ucprowbg {
|
||||
background-color: #e2e2e2;
|
||||
}
|
||||
|
||||
.fieldsbg {
|
||||
/*border: 1px #DBDEE2 solid;*/
|
||||
background-color: #eaeaea;
|
||||
}
|
||||
|
||||
span.corners-top, span.corners-bottom, span.corners-top span, span.corners-bottom span {
|
||||
font-size: 1px;
|
||||
line-height: 1px;
|
||||
|
@ -372,6 +340,8 @@ span.corners-bottom span {
|
|||
ul.linklist {
|
||||
display: block;
|
||||
margin: 0;
|
||||
height: 4%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
ul.linklist li {
|
||||
|
@ -394,7 +364,7 @@ ul.linklist li.rightside, p.rightside {
|
|||
ul.navlinks {
|
||||
padding-bottom: 1px;
|
||||
margin-bottom: 1px;
|
||||
border-bottom: 1px solid #FFFFFF;
|
||||
border-bottom: 1px solid transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
@ -425,7 +395,6 @@ table.table1 {
|
|||
table.table1 thead th {
|
||||
font-weight: normal;
|
||||
text-transform: uppercase;
|
||||
color: #FFFFFF;
|
||||
line-height: 1.3em;
|
||||
font-size: 1em;
|
||||
padding: 0 0 4px 3px;
|
||||
|
@ -436,30 +405,22 @@ table.table1 thead th span {
|
|||
}
|
||||
|
||||
table.table1 tbody tr {
|
||||
border: 1px solid #cfcfcf;
|
||||
}
|
||||
|
||||
table.table1 tbody tr:hover, table.table1 tbody tr.hover {
|
||||
background-color: #f6f6f6;
|
||||
color: #000;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
table.table1 td {
|
||||
color: #6a6a6a;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
table.table1 tbody td {
|
||||
padding: 5px;
|
||||
border-top: 1px solid #FAFAFA;
|
||||
border-top: 1px solid transparent;
|
||||
}
|
||||
|
||||
table.table1 tbody th {
|
||||
padding: 5px;
|
||||
border-bottom: 1px solid #000000;
|
||||
border-bottom: 1px solid transparent;
|
||||
text-align: left;
|
||||
color: #333333;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* Specific column styles */
|
||||
|
@ -486,7 +447,6 @@ table.info tbody th {
|
|||
padding: 3px;
|
||||
text-align: right;
|
||||
vertical-align: top;
|
||||
color: #000000;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
@ -545,7 +505,6 @@ dl.details dt {
|
|||
clear: left;
|
||||
width: 30%;
|
||||
text-align: right;
|
||||
color: #000000;
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
@ -553,11 +512,15 @@ dl.details dd {
|
|||
margin-left: 0;
|
||||
padding-left: 5px;
|
||||
margin-bottom: 5px;
|
||||
color: #828282;
|
||||
float: left;
|
||||
width: 65%;
|
||||
}
|
||||
|
||||
.clearfix, #tabs, #minitabs, fieldset dl, ul.topiclist dl, dl.polls {
|
||||
height: 1%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Pagination
|
||||
---------------------------------------- */
|
||||
.pagination {
|
||||
|
@ -584,28 +547,21 @@ li.pagination {
|
|||
padding: 0 2px;
|
||||
margin: 0 2px;
|
||||
font-weight: normal;
|
||||
color: #FFFFFF;
|
||||
background-color: #bfbfbf;
|
||||
border: 1px solid #bfbfbf;
|
||||
border: 1px solid transparent;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.pagination span a, .pagination span a:link, .pagination span a:visited, .pagination span a:active {
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
color: #747474;
|
||||
margin: 0 2px;
|
||||
padding: 0 2px;
|
||||
background-color: #eeeeee;
|
||||
border: 1px solid #bababa;
|
||||
border: 1px solid transparent;
|
||||
font-size: 0.9em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
.pagination span a:hover {
|
||||
border-color: #d2d2d2;
|
||||
background-color: #d2d2d2;
|
||||
color: #FFF;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
@ -632,6 +588,53 @@ li.pagination {
|
|||
background-color: #d2d2d2;
|
||||
}
|
||||
|
||||
/* jQuery popups
|
||||
---------------------------------------- */
|
||||
.phpbb_alert {
|
||||
border: 1px solid transparent;
|
||||
position: fixed;
|
||||
display: none;
|
||||
top: 100px;
|
||||
left: 35%;
|
||||
width: 30%;
|
||||
z-index: 50;
|
||||
padding: 25px;
|
||||
padding: 0 25px 20px 25px;
|
||||
}
|
||||
|
||||
.phpbb_alert .alert_close {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
overflow: hidden;
|
||||
text-decoration: none !important;
|
||||
background: transparent none 0 0 no-repeat;
|
||||
margin-top: -7px;
|
||||
margin-right: -31px;
|
||||
}
|
||||
.phpbb_alert .alert_close:hover {
|
||||
background-position: 0 -16px;
|
||||
}
|
||||
|
||||
.phpbb_alert p {
|
||||
margin: 8px 0;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
#darkenwrapper {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#darken {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* Miscellaneous styles
|
||||
---------------------------------------- */
|
||||
#forum-permissions {
|
||||
|
@ -646,7 +649,6 @@ li.pagination {
|
|||
.copyright {
|
||||
padding: 5px;
|
||||
text-align: center;
|
||||
color: #555555;
|
||||
}
|
||||
|
||||
.small {
|
||||
|
@ -662,22 +664,11 @@ li.pagination {
|
|||
}
|
||||
|
||||
.error {
|
||||
color: #bcbcbc;
|
||||
font-weight: bold;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.reported {
|
||||
background-color: #f7f7f7;
|
||||
}
|
||||
|
||||
li.reported:hover {
|
||||
background-color: #ececec;
|
||||
}
|
||||
|
||||
div.rules {
|
||||
background-color: #ececec;
|
||||
color: #bcbcbc;
|
||||
padding: 0 10px;
|
||||
margin: 10px 0;
|
||||
font-size: 1.1em;
|
||||
|
@ -688,13 +679,16 @@ div.rules ul, div.rules ol {
|
|||
}
|
||||
|
||||
p.rules {
|
||||
background-color: #ececec;
|
||||
background-image: none;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
p.rules img {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
p.rules strong {
|
||||
vertical-align: middle;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
|
@ -715,3 +709,7 @@ p.rules a {
|
|||
line-height: 1px;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -8,13 +8,12 @@ ul.topiclist {
|
|||
}
|
||||
|
||||
ul.forums {
|
||||
background: #f9f9f9 none repeat-x 0 0;
|
||||
background: transparent none repeat-x 0 0;
|
||||
}
|
||||
|
||||
ul.topiclist li {
|
||||
display: block;
|
||||
list-style-type: none;
|
||||
color: #777777;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
@ -38,7 +37,7 @@ ul.topiclist dt {
|
|||
ul.topiclist dd {
|
||||
display: block;
|
||||
float: left;
|
||||
border-left: 1px solid #FFFFFF;
|
||||
border-left: 1px solid transparent;
|
||||
padding: 4px 0;
|
||||
}
|
||||
|
||||
|
@ -65,28 +64,18 @@ ul.topiclist li.row dt a.subforum {
|
|||
}
|
||||
|
||||
li.row {
|
||||
border-top: 1px solid #FFFFFF;
|
||||
border-bottom: 1px solid #8f8f8f;
|
||||
border-top: 1px solid transparent;
|
||||
border-bottom: 1px solid transparent;
|
||||
}
|
||||
|
||||
li.row strong {
|
||||
font-weight: normal;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
li.row:hover {
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
|
||||
li.row:hover dd {
|
||||
border-left-color: #CCCCCC;
|
||||
}
|
||||
|
||||
li.header dt, li.header dd {
|
||||
line-height: 1em;
|
||||
border-left-width: 0;
|
||||
margin: 2px 0 4px 0;
|
||||
color: #FFFFFF;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
font-size: 1em;
|
||||
|
@ -205,7 +194,6 @@ ul.topiclist dd.searchextra {
|
|||
margin-left: 5px;
|
||||
padding: 0.2em 0;
|
||||
font-size: 1.1em;
|
||||
color: #333333;
|
||||
border-left: none;
|
||||
clear: both;
|
||||
width: 98%;
|
||||
|
@ -228,7 +216,6 @@ div[class].topic-actions {
|
|||
.postbody {
|
||||
padding: 0;
|
||||
line-height: 1.48em;
|
||||
color: #333333;
|
||||
width: 76%;
|
||||
float: left;
|
||||
clear: both;
|
||||
|
@ -320,14 +307,12 @@ div[class].topic-actions {
|
|||
line-height: 1.4em;
|
||||
font-family: "Lucida Grande", "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif;
|
||||
font-size: 1em;
|
||||
color: #333333;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
.content h2, .panel h2 {
|
||||
font-weight: normal;
|
||||
color: #989898;
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
border-bottom: 1px solid transparent;
|
||||
font-size: 1.6em;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
|
@ -361,7 +346,6 @@ dl.faq {
|
|||
|
||||
dl.faq dt {
|
||||
font-weight: bold;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.content dl.faq {
|
||||
|
@ -379,17 +363,9 @@ dl.faq dt {
|
|||
}
|
||||
|
||||
.posthilit {
|
||||
background-color: #f3f3f3;
|
||||
color: #BCBCBC;
|
||||
padding: 0 2px 1px 2px;
|
||||
}
|
||||
|
||||
.announce, .unreadpost {
|
||||
/* Highlight the announcements & unread posts box */
|
||||
border-left-color: #BCBCBC;
|
||||
border-right-color: #BCBCBC;
|
||||
}
|
||||
|
||||
/* Post author */
|
||||
p.author {
|
||||
margin: 0 15em 0.6em 0;
|
||||
|
@ -404,7 +380,7 @@ p.author {
|
|||
margin-top: 1.5em;
|
||||
padding-top: 0.2em;
|
||||
font-size: 1.1em;
|
||||
border-top: 1px solid #CCCCCC;
|
||||
border-top: 1px solid transparent;
|
||||
clear: left;
|
||||
line-height: 140%;
|
||||
overflow: hidden;
|
||||
|
@ -434,7 +410,7 @@ dd .signature {
|
|||
margin-top: 1.5em;
|
||||
padding-top: 0.2em;
|
||||
font-size: 1em;
|
||||
border-top: 1px dashed #CCCCCC;
|
||||
border-top: 1px dashed transparent;
|
||||
clear: left;
|
||||
line-height: 130%;
|
||||
}
|
||||
|
@ -450,8 +426,8 @@ ul.searchresults {
|
|||
----------------------------------------*/
|
||||
/* Quote block */
|
||||
blockquote {
|
||||
background: #ebebeb none 6px 8px no-repeat;
|
||||
border: 1px solid #dbdbdb;
|
||||
background: transparent none 6px 8px no-repeat;
|
||||
border: 1px solid transparent;
|
||||
font-size: 0.95em;
|
||||
margin: 0.5em 1px 0 25px;
|
||||
overflow: hidden;
|
||||
|
@ -460,16 +436,10 @@ blockquote {
|
|||
|
||||
blockquote blockquote {
|
||||
/* Nested quotes */
|
||||
background-color: #bababa;
|
||||
font-size: 1em;
|
||||
margin: 0.5em 1px 0 15px;
|
||||
}
|
||||
|
||||
blockquote blockquote blockquote {
|
||||
/* Nested quotes */
|
||||
background-color: #e4e4e4;
|
||||
}
|
||||
|
||||
blockquote cite {
|
||||
/* Username/source of quoter */
|
||||
font-style: normal;
|
||||
|
@ -490,14 +460,13 @@ blockquote.uncited {
|
|||
/* Code block */
|
||||
dl.codebox {
|
||||
padding: 3px;
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #d8d8d8;
|
||||
border: 1px solid transparent;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
dl.codebox dt {
|
||||
text-transform: uppercase;
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
border-bottom: 1px solid transparent;
|
||||
margin-bottom: 3px;
|
||||
font-size: 0.8em;
|
||||
font-weight: bold;
|
||||
|
@ -518,17 +487,9 @@ dl.codebox code {
|
|||
padding-top: 5px;
|
||||
font: 0.9em Monaco, "Andale Mono","Courier New", Courier, mono;
|
||||
line-height: 1.3em;
|
||||
color: #8b8b8b;
|
||||
margin: 2px 0;
|
||||
}
|
||||
|
||||
.syntaxbg { color: #FFFFFF; }
|
||||
.syntaxcomment { color: #000000; }
|
||||
.syntaxdefault { color: #bcbcbc; }
|
||||
.syntaxhtml { color: #000000; }
|
||||
.syntaxkeyword { color: #585858; }
|
||||
.syntaxstring { color: #a7a7a7; }
|
||||
|
||||
/* Attachments
|
||||
----------------------------------------*/
|
||||
.attachbox {
|
||||
|
@ -536,15 +497,10 @@ dl.codebox code {
|
|||
width: auto;
|
||||
margin: 5px 5px 5px 0;
|
||||
padding: 6px;
|
||||
background-color: #FFFFFF;
|
||||
border: 1px dashed #d8d8d8;
|
||||
border: 1px dashed transparent;
|
||||
clear: left;
|
||||
}
|
||||
|
||||
.pm-message .attachbox {
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
|
||||
.attachbox dt {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
text-transform: uppercase;
|
||||
|
@ -554,7 +510,7 @@ dl.codebox code {
|
|||
margin-top: 4px;
|
||||
padding-top: 4px;
|
||||
clear: left;
|
||||
border-top: 1px solid #d8d8d8;
|
||||
border-top: 1px solid transparent;
|
||||
}
|
||||
|
||||
.attachbox dd dd {
|
||||
|
@ -563,7 +519,6 @@ dl.codebox code {
|
|||
|
||||
.attachbox p {
|
||||
line-height: 110%;
|
||||
color: #666666;
|
||||
font-weight: normal;
|
||||
clear: left;
|
||||
}
|
||||
|
@ -571,7 +526,6 @@ dl.codebox code {
|
|||
.attachbox p.stats
|
||||
{
|
||||
line-height: 110%;
|
||||
color: #666666;
|
||||
font-weight: normal;
|
||||
clear: left;
|
||||
}
|
||||
|
@ -584,7 +538,7 @@ dl.codebox code {
|
|||
}
|
||||
|
||||
.attach-image img {
|
||||
border: 1px solid #999999;
|
||||
border: 1px solid transparent;
|
||||
/* cursor: move; */
|
||||
cursor: default;
|
||||
}
|
||||
|
@ -613,19 +567,16 @@ dl.file dt {
|
|||
}
|
||||
|
||||
dl.file dd {
|
||||
color: #666666;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
dl.thumbnail img {
|
||||
padding: 3px;
|
||||
border: 1px solid #666666;
|
||||
background-color: #FFF;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
dl.thumbnail dd {
|
||||
color: #666666;
|
||||
font-style: italic;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
@ -634,12 +585,8 @@ dl.thumbnail dd {
|
|||
font-size: 100%;
|
||||
}
|
||||
|
||||
dl.thumbnail dt a:hover {
|
||||
background-color: #EEEEEE;
|
||||
}
|
||||
|
||||
dl.thumbnail dt a:hover img {
|
||||
border: 1px solid #d2d2d2;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
/* Post poll styles
|
||||
|
@ -650,15 +597,13 @@ fieldset.polls {
|
|||
|
||||
fieldset.polls dl {
|
||||
margin-top: 5px;
|
||||
border-top: 1px solid #e2e2e2;
|
||||
border-top: 1px solid transparent;
|
||||
padding: 5px 0 0 0;
|
||||
line-height: 120%;
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
fieldset.polls dl.voted {
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
fieldset.polls dt {
|
||||
|
@ -692,41 +637,15 @@ fieldset.polls dd input {
|
|||
fieldset.polls dd div {
|
||||
text-align: right;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color: #FFFFFF;
|
||||
font-weight: bold;
|
||||
padding: 0 2px;
|
||||
overflow: visible;
|
||||
min-width: 2%;
|
||||
}
|
||||
|
||||
.pollbar1 {
|
||||
background-color: #aaaaaa;
|
||||
border-bottom: 1px solid #747474;
|
||||
border-right: 1px solid #747474;
|
||||
}
|
||||
|
||||
.pollbar2 {
|
||||
background-color: #bebebe;
|
||||
border-bottom: 1px solid #8c8c8c;
|
||||
border-right: 1px solid #8c8c8c;
|
||||
}
|
||||
|
||||
.pollbar3 {
|
||||
background-color: #D1D1D1;
|
||||
border-bottom: 1px solid #aaaaaa;
|
||||
border-right: 1px solid #aaaaaa;
|
||||
}
|
||||
|
||||
.pollbar4 {
|
||||
background-color: #e4e4e4;
|
||||
border-bottom: 1px solid #bebebe;
|
||||
border-right: 1px solid #bebebe;
|
||||
}
|
||||
|
||||
.pollbar5 {
|
||||
background-color: #f8f8f8;
|
||||
border-bottom: 1px solid #D1D1D1;
|
||||
border-right: 1px solid #D1D1D1;
|
||||
.pollbar1, .pollbar2, .pollbar3, .pollbar4, .pollbar5 {
|
||||
border-bottom: 1px solid transparent;
|
||||
border-right: 1px solid transparent;
|
||||
}
|
||||
|
||||
/* Poster profile block
|
||||
|
@ -735,15 +654,11 @@ fieldset.polls dd div {
|
|||
/* Also see tweaks.css */
|
||||
margin: 5px 0 10px 0;
|
||||
min-height: 80px;
|
||||
color: #666666;
|
||||
border-left: 1px solid #FFFFFF;
|
||||
border-left: 1px solid transparent;
|
||||
width: 22%;
|
||||
float: right;
|
||||
display: inline;
|
||||
}
|
||||
.pm .postprofile {
|
||||
border-left: 1px solid #DDDDDD;
|
||||
}
|
||||
|
||||
.postprofile dd, .postprofile dt {
|
||||
line-height: 1.2em;
|
||||
|
@ -752,7 +667,6 @@ fieldset.polls dd div {
|
|||
|
||||
.postprofile strong {
|
||||
font-weight: normal;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
|
|
|
@ -20,10 +20,6 @@
|
|||
padding: 0;
|
||||
}
|
||||
|
||||
#cp-main h3, #cp-main hr, #cp-menu hr {
|
||||
border-color: #bfbfbf;
|
||||
}
|
||||
|
||||
#cp-main .panel p {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
@ -34,17 +30,16 @@
|
|||
}
|
||||
|
||||
#cp-main .panel li.row {
|
||||
border-bottom: 1px solid #cbcbcb;
|
||||
border-top: 1px solid #F9F9F9;
|
||||
border-bottom: 1px solid transparent;
|
||||
border-top: 1px solid transparent;
|
||||
}
|
||||
|
||||
ul.cplist {
|
||||
margin-bottom: 5px;
|
||||
border-top: 1px solid #cbcbcb;
|
||||
border-top: 1px solid transparent;
|
||||
}
|
||||
|
||||
#cp-main .panel li.header dd, #cp-main .panel li.header dt {
|
||||
color: #000000;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
|
@ -53,9 +48,8 @@ ul.cplist {
|
|||
}
|
||||
|
||||
#cp-main table.table1 thead th {
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #333333;
|
||||
border-bottom: 1px solid transparent;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
@ -76,9 +70,8 @@ ul.cplist {
|
|||
}
|
||||
|
||||
#cp-main .pm-message {
|
||||
border: 1px solid #e2e2e2;
|
||||
border: 1px solid transparent;
|
||||
margin: 10px 0;
|
||||
background-color: #FFFFFF;
|
||||
width: auto;
|
||||
float: none;
|
||||
}
|
||||
|
@ -141,23 +134,17 @@ ul.cplist {
|
|||
display: block;
|
||||
background: none no-repeat 100% -35px;
|
||||
padding: 6px 10px 6px 5px;
|
||||
color: #828282;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#tabs a:hover span {
|
||||
color: #bcbcbc;
|
||||
}
|
||||
|
||||
#tabs .activetab a {
|
||||
background-position: 0 0;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
border-bottom: 1px solid transparent;
|
||||
}
|
||||
|
||||
#tabs .activetab a span {
|
||||
background-position: 100% 0;
|
||||
padding-bottom: 7px;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
#tabs a:hover {
|
||||
|
@ -173,7 +160,6 @@ ul.cplist {
|
|||
}
|
||||
|
||||
#tabs .activetab a:hover span {
|
||||
color: #000000;
|
||||
background-position: 100% 0;
|
||||
}
|
||||
|
||||
|
@ -196,7 +182,6 @@ ul.cplist {
|
|||
padding: 0 10px 4px 10px;
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
background-color: #f2f2f2;
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
|
@ -207,14 +192,6 @@ ul.cplist {
|
|||
text-decoration: none;
|
||||
}
|
||||
|
||||
#minitabs li.activetab {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
#minitabs li.activetab a, #minitabs li.activetab a:hover {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
/* UCP navigation menu
|
||||
----------------------------------------*/
|
||||
/* Container for sub-navigation list */
|
||||
|
@ -242,43 +219,25 @@ ul.cplist {
|
|||
margin: 1px 0;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
background: #cfcfcf none repeat-y 100% 0;
|
||||
background: transparent none repeat-y 100% 0;
|
||||
}
|
||||
|
||||
#navigation a:hover {
|
||||
text-decoration: none;
|
||||
background-color: #c6c6c6;
|
||||
color: #bcbcbc;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
#navigation #active-subsection a {
|
||||
display: block;
|
||||
color: #d3d3d3;
|
||||
background-color: #F9F9F9;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
#navigation #active-subsection a:hover {
|
||||
color: #d3d3d3;
|
||||
}
|
||||
|
||||
/* Preferences pane layout
|
||||
----------------------------------------*/
|
||||
#cp-main h2 {
|
||||
border-bottom: none;
|
||||
padding: 0;
|
||||
margin-left: 10px;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
#cp-main .panel {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
#cp-main .pm {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
#cp-main span.corners-top, #cp-menu span.corners-top {
|
||||
|
@ -316,7 +275,6 @@ ul.cplist {
|
|||
|
||||
/* Friends list */
|
||||
.cp-mini {
|
||||
background-color: #f9f9f9;
|
||||
padding: 0 5px;
|
||||
margin: 10px 15px 10px 5px;
|
||||
}
|
||||
|
@ -327,7 +285,6 @@ ul.cplist {
|
|||
|
||||
dl.mini dt {
|
||||
font-weight: bold;
|
||||
color: #676767;
|
||||
}
|
||||
|
||||
dl.mini dd {
|
||||
|
@ -362,11 +319,6 @@ dl.mini dd {
|
|||
padding-top: 5px;
|
||||
}
|
||||
|
||||
/* PM Message history */
|
||||
.current {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
/* Defined rules list for PM options */
|
||||
ol.def-rules {
|
||||
padding-left: 0;
|
||||
|
@ -387,31 +339,16 @@ ol.def-rules li {
|
|||
}
|
||||
|
||||
.pmlist li.pm_message_reported_colour, .pm_message_reported_colour {
|
||||
border-left-color: #bcbcbc;
|
||||
border-right-color: #bcbcbc;
|
||||
}
|
||||
|
||||
.pmlist li.pm_marked_colour, .pm_marked_colour {
|
||||
padding: 0;
|
||||
border: solid 3px #ffffff;
|
||||
border-width: 0 3px;
|
||||
}
|
||||
|
||||
.pmlist li.pm_replied_colour, .pm_replied_colour {
|
||||
padding: 0;
|
||||
border: solid 3px #c2c2c2;
|
||||
border-width: 0 3px;
|
||||
}
|
||||
|
||||
.pmlist li.pm_friend_colour, .pm_friend_colour {
|
||||
padding: 0;
|
||||
border: solid 3px #bdbdbd;
|
||||
border-width: 0 3px;
|
||||
border-left-color: transparent;
|
||||
border-right-color: transparent;
|
||||
}
|
||||
|
||||
.pmlist li.pm_marked_colour, .pm_marked_colour,
|
||||
.pmlist li.pm_replied_colour, .pm_replied_colour,
|
||||
.pmlist li.pm_friend_colour, .pm_friend_colour,
|
||||
.pmlist li.pm_foe_colour, .pm_foe_colour {
|
||||
padding: 0;
|
||||
border: solid 3px #000000;
|
||||
border: solid 3px transparent;
|
||||
border-width: 0 3px;
|
||||
}
|
||||
|
||||
|
@ -430,11 +367,6 @@ ol.def-rules li {
|
|||
margin: 10px;
|
||||
padding: 5px;
|
||||
width: auto;
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #CCC;
|
||||
border: 1px solid transparent;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#gallery label:hover {
|
||||
background-color: #EEE;
|
||||
}
|
||||
|
|
|
@ -23,9 +23,8 @@ select {
|
|||
font-weight: normal;
|
||||
cursor: pointer;
|
||||
vertical-align: middle;
|
||||
border: 1px solid #666666;
|
||||
border: 1px solid transparent;
|
||||
padding: 1px;
|
||||
background-color: #FAFAFA;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
|
@ -33,10 +32,6 @@ option {
|
|||
padding-right: 1em;
|
||||
}
|
||||
|
||||
option.disabled-option {
|
||||
color: graytext;
|
||||
}
|
||||
|
||||
textarea {
|
||||
font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif;
|
||||
width: 60%;
|
||||
|
@ -48,7 +43,6 @@ textarea {
|
|||
label {
|
||||
cursor: default;
|
||||
padding-right: 5px;
|
||||
color: #676767;
|
||||
}
|
||||
|
||||
label input {
|
||||
|
@ -89,10 +83,6 @@ fieldset.fields1 dd {
|
|||
border-left-width: 0;
|
||||
}
|
||||
|
||||
fieldset.fields1 {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
fieldset.fields1 div {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
@ -121,7 +111,6 @@ dt label {
|
|||
|
||||
dd label {
|
||||
white-space: nowrap;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
dd input, dd textarea {
|
||||
|
@ -137,22 +126,10 @@ dd textarea {
|
|||
}
|
||||
|
||||
/* Hover effects */
|
||||
fieldset dl:hover dt label {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
fieldset.fields2 dl:hover dt label {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
#timezone {
|
||||
width: 95%;
|
||||
}
|
||||
|
||||
* html #timezone {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
/* Quick-login on index page */
|
||||
fieldset.quick-login {
|
||||
margin-top: 5px;
|
||||
|
@ -166,7 +143,6 @@ fieldset.quick-login input.inputbox {
|
|||
width: 15%;
|
||||
vertical-align: middle;
|
||||
margin-right: 5px;
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
|
||||
fieldset.quick-login label {
|
||||
|
@ -268,7 +244,6 @@ fieldset.submit-buttons input {
|
|||
min-width: 100%;
|
||||
max-width: 100%;
|
||||
font-size: 1.2em;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
/* Emoticons panel */
|
||||
|
@ -284,20 +259,13 @@ fieldset.submit-buttons input {
|
|||
/* Input field styles
|
||||
---------------------------------------- */
|
||||
.inputbox {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #c0c0c0;
|
||||
color: #333333;
|
||||
border: 1px solid transparent;
|
||||
padding: 2px;
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.inputbox:hover {
|
||||
border: 1px solid #eaeaea;
|
||||
}
|
||||
|
||||
.inputbox:focus {
|
||||
border: 1px solid #eaeaea;
|
||||
color: #4b4b4b;
|
||||
.inputbox:hover, .inputbox:focus {
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
input.inputbox { width: 85%; }
|
||||
|
@ -324,13 +292,12 @@ a.button1, input.button1, input.button3, a.button2, input.button2 {
|
|||
padding-top: 1px;
|
||||
padding-bottom: 1px;
|
||||
font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif;
|
||||
color: #000;
|
||||
background: #FAFAFA none repeat-x top left;
|
||||
background: transparent none repeat-x top left;
|
||||
}
|
||||
|
||||
a.button1, input.button1 {
|
||||
font-weight: bold;
|
||||
border: 1px solid #666666;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
input.button3 {
|
||||
|
@ -344,13 +311,12 @@ input.button3 {
|
|||
|
||||
/* Alternative button */
|
||||
a.button2, input.button2, input.button3 {
|
||||
border: 1px solid #666666;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
/* <a> button in the style of the form buttons */
|
||||
a.button1, a.button1:link, a.button1:visited, a.button1:active, a.button2, a.button2:link, a.button2:visited, a.button2:active {
|
||||
text-decoration: none;
|
||||
color: #000000;
|
||||
padding: 2px 8px;
|
||||
line-height: 250%;
|
||||
vertical-align: text-bottom;
|
||||
|
@ -359,14 +325,12 @@ a.button1, a.button1:link, a.button1:visited, a.button1:active, a.button2, a.but
|
|||
|
||||
/* Hover states */
|
||||
a.button1:hover, input.button1:hover, a.button2:hover, input.button2:hover, input.button3:hover {
|
||||
border: 1px solid #BCBCBC;
|
||||
border: 1px solid transparent;
|
||||
background-position: 0 100%;
|
||||
color: #BCBCBC;
|
||||
}
|
||||
|
||||
input.disabled {
|
||||
font-weight: normal;
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
/* Topic and forum Search */
|
||||
|
|
BIN
phpBB/styles/prosilver/theme/images/alert_close.png
Normal file
BIN
phpBB/styles/prosilver/theme/images/alert_close.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2 KiB |
|
@ -7,10 +7,17 @@ a {
|
|||
unicode-bidi: embed;
|
||||
}
|
||||
|
||||
a:link { color: #898989; text-decoration: none; }
|
||||
a:visited { color: #898989; text-decoration: none; }
|
||||
a:hover { color: #d3d3d3; text-decoration: underline; }
|
||||
a:active { color: #d2d2d2; text-decoration: none; }
|
||||
a:link, a:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:active {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Coloured usernames */
|
||||
.username-coloured {
|
||||
|
@ -21,22 +28,18 @@ a:active { color: #d2d2d2; text-decoration: none; }
|
|||
|
||||
/* Links on gradient backgrounds */
|
||||
#search-box a:link, .navbg a:link, .forumbg .header a:link, .forabg .header a:link, th a:link {
|
||||
color: #FFFFFF;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#search-box a:visited, .navbg a:visited, .forumbg .header a:visited, .forabg .header a:visited, th a:visited {
|
||||
color: #FFFFFF;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#search-box a:hover, .navbg a:hover, .forumbg .header a:hover, .forabg .header a:hover, th a:hover {
|
||||
color: #ffffff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#search-box a:active, .navbg a:active, .forumbg .header a:active, .forabg .header a:active, th a:active {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
@ -45,96 +48,65 @@ a.forumtitle {
|
|||
font-family: "Trebuchet MS", Helvetica, Arial, Sans-serif;
|
||||
font-size: 1.2em;
|
||||
font-weight: bold;
|
||||
color: #898989;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* a.forumtitle:visited { color: #898989; } */
|
||||
|
||||
a.forumtitle:hover {
|
||||
color: #bcbcbc;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.forumtitle:active {
|
||||
color: #898989;
|
||||
}
|
||||
|
||||
a.topictitle {
|
||||
font-family: "Trebuchet MS", Helvetica, Arial, Sans-serif;
|
||||
font-size: 1.2em;
|
||||
font-weight: bold;
|
||||
color: #898989;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* a.topictitle:visited { color: #d2d2d2; } */
|
||||
|
||||
a.topictitle:hover {
|
||||
color: #bcbcbc;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.topictitle:active {
|
||||
color: #898989;
|
||||
}
|
||||
|
||||
/* Post body links */
|
||||
.postlink {
|
||||
text-decoration: none;
|
||||
color: #d2d2d2;
|
||||
border-bottom: 1px solid #d2d2d2;
|
||||
border-bottom: 1px solid transparent;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
/* .postlink:visited { color: #bdbdbd; } */
|
||||
|
||||
.postlink:active {
|
||||
color: #d2d2d2;
|
||||
}
|
||||
|
||||
.postlink:hover {
|
||||
background-color: #f6f6f6;
|
||||
text-decoration: none;
|
||||
color: #404040;
|
||||
}
|
||||
|
||||
.signature a, .signature a:visited, .signature a:hover, .signature a:active {
|
||||
border: none;
|
||||
text-decoration: underline;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Profile links */
|
||||
.postprofile a:link, .postprofile a:visited, .postprofile dt.author a {
|
||||
font-weight: bold;
|
||||
color: #898989;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.postprofile a:hover, .postprofile dt.author a:hover {
|
||||
text-decoration: underline;
|
||||
color: #d3d3d3;
|
||||
}
|
||||
|
||||
/* CSS spec requires a:link, a:visited, a:hover and a:active rules to be specified in this order. */
|
||||
/* See http://www.phpbb.com/bugs/phpbb3/59685 */
|
||||
.postprofile a:active {
|
||||
font-weight: bold;
|
||||
color: #898989;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
||||
/* Profile searchresults */
|
||||
.search .postprofile a {
|
||||
color: #898989;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.search .postprofile a:hover {
|
||||
color: #d3d3d3;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
@ -177,7 +149,6 @@ a.up, a.up:link, a.up:active, a.up:visited {
|
|||
|
||||
a.up:hover {
|
||||
background-position: left top;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
a.down, a.down:link, a.down:active, a.down:visited {
|
||||
|
@ -194,7 +165,6 @@ a.left, a.left:active, a.left:visited {
|
|||
}
|
||||
|
||||
a.left:hover {
|
||||
color: #d2d2d2;
|
||||
text-decoration: none;
|
||||
background-position: 0 60%;
|
||||
}
|
||||
|
@ -204,7 +174,6 @@ a.right, a.right:active, a.right:visited {
|
|||
}
|
||||
|
||||
a.right:hover {
|
||||
color: #d2d2d2;
|
||||
text-decoration: none;
|
||||
background-position: 100% 60%;
|
||||
}
|
||||
|
|
|
@ -13,6 +13,5 @@
|
|||
@import url("buttons.css");
|
||||
@import url("cp.css");
|
||||
@import url("forms.css");
|
||||
@import url("tweaks.css");
|
||||
@import url("colours.css");
|
||||
@import url("imageset.css");
|
||||
|
|
|
@ -1,97 +1,31 @@
|
|||
/* Style Sheet Tweaks
|
||||
|
||||
These style definitions are mainly IE specific
|
||||
These style definitions are IE 7 and 8 specific
|
||||
tweaks required due to its poor CSS support.
|
||||
-------------------------------------------------*/
|
||||
|
||||
* html table, * html select, * html input { font-size: 100%; }
|
||||
* html hr { margin: 0; }
|
||||
* html span.corners-top, * html span.corners-bottom { background-image: url("./images/corners_left.gif"); }
|
||||
* html span.corners-top span, * html span.corners-bottom span { background-image: url("./images/corners_right.gif"); }
|
||||
|
||||
table.table1 {
|
||||
width: 99%; /* IE < 6 browsers */
|
||||
/* Tantek hack */
|
||||
voice-family: "\"}\"";
|
||||
voice-family: inherit;
|
||||
width: 100%;
|
||||
}
|
||||
html>body table.table1 { width: 100%; } /* Reset 100% for opera */
|
||||
|
||||
* html ul.topiclist li { position: relative; }
|
||||
* html .postbody h3 img { vertical-align: middle; }
|
||||
|
||||
/* Form styles */
|
||||
html>body dd label input { vertical-align: text-bottom; } /* Align checkboxes/radio buttons nicely */
|
||||
|
||||
* html input.button1, * html input.button2 {
|
||||
padding-bottom: 0;
|
||||
margin-bottom: 1px;
|
||||
/* Align checkboxes/radio buttons nicely */
|
||||
dd label input {
|
||||
vertical-align: text-bottom;
|
||||
*vertical-align: middle;
|
||||
}
|
||||
|
||||
/* Misc layout styles */
|
||||
* html .column1, * html .column2 { width: 45%; }
|
||||
|
||||
/* Nice method for clearing floated blocks without having to insert any extra markup (like spacer above)
|
||||
From http://www.positioniseverything.net/easyclearing.html
|
||||
#tabs:after, #minitabs:after, .post:after, .navbar:after, fieldset dl:after, ul.topiclist dl:after, ul.linklist:after, dl.polls:after {
|
||||
content: ".";
|
||||
display: block;
|
||||
height: 0;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
}*/
|
||||
|
||||
.clearfix, #tabs, #minitabs, fieldset dl, ul.topiclist dl, dl.polls {
|
||||
height: 1%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* viewtopic fix */
|
||||
* html .post {
|
||||
height: 25%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* navbar fix */
|
||||
* html .clearfix, * html .navbar, ul.linklist {
|
||||
height: 4%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Simple fix so forum and topic lists always have a min-height set, even in IE6
|
||||
From http://www.dustindiaz.com/min-height-fast-hack */
|
||||
/* Simple fix so forum and topic lists always have a height set */
|
||||
dl.icon {
|
||||
min-height: 35px;
|
||||
height: auto !important;
|
||||
height: 35px;
|
||||
}
|
||||
|
||||
* html li.row dl.icon dt {
|
||||
height: 35px;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
* html #search-box {
|
||||
width: 25%;
|
||||
*height: 35px;
|
||||
}
|
||||
|
||||
/* Correctly clear floating for details on profile view */
|
||||
*:first-child+html dl.details dd {
|
||||
margin-left: 30%;
|
||||
float: none;
|
||||
dl.details dd {
|
||||
*margin-left: 30%;
|
||||
*float: none;
|
||||
}
|
||||
|
||||
* html dl.details dd {
|
||||
margin-left: 30%;
|
||||
float: none;
|
||||
}
|
||||
|
||||
/* Headerbar height fix for IE7 and below */
|
||||
* html #site-description p {
|
||||
margin-bottom: 1.0em;
|
||||
}
|
||||
|
||||
*:first-child+html #site-description p {
|
||||
margin-bottom: 1.0em;
|
||||
/* Headerbar height fix for IE7 */
|
||||
#site-description p {
|
||||
*margin-bottom: 1.0em;
|
||||
}
|
|
@ -347,7 +347,19 @@
|
|||
|
||||
<table width="100%" cellspacing="1">
|
||||
<tr>
|
||||
<td width="40%" valign="top" nowrap="nowrap" align="{S_CONTENT_FLOW_BEGIN}"><!-- IF S_TOPIC_MOD --><form method="post" action="{S_MOD_ACTION}"><span class="gensmall">{L_QUICK_MOD}:</span> {S_TOPIC_MOD} <input class="btnlite" type="submit" value="{L_GO}" /></form><!-- ENDIF --></td>
|
||||
<td width="40%" valign="top" nowrap="nowrap" align="{S_CONTENT_FLOW_BEGIN}">
|
||||
<!-- IF .quickmod -->
|
||||
<form method="post" action="{S_MOD_ACTION}">
|
||||
<span class="gensmall">{L_QUICK_MOD}:</span>
|
||||
<select name="action" id="quick-mod-select">
|
||||
<!-- BEGIN quickmod -->
|
||||
<option value="{quickmod.VALUE}">{quickmod.TITLE}</option>
|
||||
<!-- END quickmod -->
|
||||
</select>
|
||||
<input class="btnlite" type="submit" value="{L_GO}" />
|
||||
</form>
|
||||
<!-- ENDIF -->
|
||||
</td>
|
||||
<td align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap"><span class="gensmall"><!-- BEGIN rules -->{rules.RULE}<br /><!-- END rules --></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -517,19 +517,31 @@ gen_forum_auth_level('topic', $forum_id, $topic_data['forum_status']);
|
|||
// Quick mod tools
|
||||
$allow_change_type = ($auth->acl_get('m_', $forum_id) || ($user->data['is_registered'] && $user->data['user_id'] == $topic_data['topic_poster'])) ? true : false;
|
||||
|
||||
$topic_mod = '';
|
||||
$topic_mod .= ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && $user->data['user_id'] == $topic_data['topic_poster'] && $topic_data['topic_status'] == ITEM_UNLOCKED)) ? (($topic_data['topic_status'] == ITEM_UNLOCKED) ? '<option value="lock">' . $user->lang['LOCK_TOPIC'] . '</option>' : '<option value="unlock">' . $user->lang['UNLOCK_TOPIC'] . '</option>') : '';
|
||||
$topic_mod .= ($auth->acl_get('m_delete', $forum_id)) ? '<option value="delete_topic">' . $user->lang['DELETE_TOPIC'] . '</option>' : '';
|
||||
$topic_mod .= ($auth->acl_get('m_move', $forum_id) && $topic_data['topic_status'] != ITEM_MOVED) ? '<option value="move">' . $user->lang['MOVE_TOPIC'] . '</option>' : '';
|
||||
$topic_mod .= ($auth->acl_get('m_split', $forum_id)) ? '<option value="split">' . $user->lang['SPLIT_TOPIC'] . '</option>' : '';
|
||||
$topic_mod .= ($auth->acl_get('m_merge', $forum_id)) ? '<option value="merge">' . $user->lang['MERGE_POSTS'] . '</option>' : '';
|
||||
$topic_mod .= ($auth->acl_get('m_merge', $forum_id)) ? '<option value="merge_topic">' . $user->lang['MERGE_TOPIC'] . '</option>' : '';
|
||||
$topic_mod .= ($auth->acl_get('m_move', $forum_id)) ? '<option value="fork">' . $user->lang['FORK_TOPIC'] . '</option>' : '';
|
||||
$topic_mod .= ($allow_change_type && $auth->acl_gets('f_sticky', 'f_announce', $forum_id) && $topic_data['topic_type'] != POST_NORMAL) ? '<option value="make_normal">' . $user->lang['MAKE_NORMAL'] . '</option>' : '';
|
||||
$topic_mod .= ($allow_change_type && $auth->acl_get('f_sticky', $forum_id) && $topic_data['topic_type'] != POST_STICKY) ? '<option value="make_sticky">' . $user->lang['MAKE_STICKY'] . '</option>' : '';
|
||||
$topic_mod .= ($allow_change_type && $auth->acl_get('f_announce', $forum_id) && $topic_data['topic_type'] != POST_ANNOUNCE) ? '<option value="make_announce">' . $user->lang['MAKE_ANNOUNCE'] . '</option>' : '';
|
||||
$topic_mod .= ($allow_change_type && $auth->acl_get('f_announce', $forum_id) && $topic_data['topic_type'] != POST_GLOBAL) ? '<option value="make_global">' . $user->lang['MAKE_GLOBAL'] . '</option>' : '';
|
||||
$topic_mod .= ($auth->acl_get('m_', $forum_id)) ? '<option value="topic_logs">' . $user->lang['VIEW_TOPIC_LOGS'] . '</option>' : '';
|
||||
$quickmod_array = array(
|
||||
// 'key' => array('LANG_KEY', $userHasPermissions),
|
||||
|
||||
'lock' => array('LOCK_TOPIC', ($topic_data['topic_status'] == ITEM_UNLOCKED) && ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && $user->data['user_id'] == $topic_data['topic_poster'] && $topic_data['topic_status'] == ITEM_UNLOCKED))),
|
||||
'unlock' => array('UNLOCK_TOPIC', ($topic_data['topic_status'] != ITEM_UNLOCKED) && ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && $user->data['user_id'] == $topic_data['topic_poster'] && $topic_data['topic_status'] == ITEM_UNLOCKED))),
|
||||
'delete_topic' => array('DELETE_TOPIC', $auth->acl_get('m_delete', $forum_id)),
|
||||
'move' => array('MOVE_TOPIC', $auth->acl_get('m_move', $forum_id) && $topic_data['topic_status'] != ITEM_MOVED),
|
||||
'split' => array('SPLIT_TOPIC', $auth->acl_get('m_split', $forum_id)),
|
||||
'merge' => array('MERGE_POSTS', $auth->acl_get('m_merge', $forum_id)),
|
||||
'merge_topic' => array('MERGE_TOPIC', $auth->acl_get('m_merge', $forum_id)),
|
||||
'fork' => array('FORK_TOPIC', $auth->acl_get('m_move', $forum_id)),
|
||||
'make_normal' => array('MAKE_NORMAL', ($allow_change_type && $auth->acl_gets('f_sticky', 'f_announce', $forum_id) && $topic_data['topic_type'] != POST_NORMAL)),
|
||||
'make_sticky' => array('MAKE_STICKY', ($allow_change_type && $auth->acl_get('f_sticky', $forum_id) && $topic_data['topic_type'] != POST_STICKY)),
|
||||
'make_announce' => array('MAKE_ANNOUNCE', ($allow_change_type && $auth->acl_get('f_announce', $forum_id) && $topic_data['topic_type'] != POST_ANNOUNCE)),
|
||||
'make_global' => array('MAKE_GLOBAL', ($allow_change_type && $auth->acl_get('f_announce', $forum_id) && $topic_data['topic_type'] != POST_GLOBAL)),
|
||||
'topic_logs' => array('VIEW_TOPIC_LOGS', $auth->acl_get('m_', $forum_id)),
|
||||
);
|
||||
|
||||
foreach($quickmod_array as $option => $qm_ary)
|
||||
{
|
||||
if (!empty($qm_ary[1]))
|
||||
{
|
||||
phpbb_add_quickmod_option($option, $qm_ary[0]);
|
||||
}
|
||||
}
|
||||
|
||||
// If we've got a hightlight set pass it on to pagination.
|
||||
$pagination = generate_pagination(append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id" . ((strlen($u_sort_param)) ? "&$u_sort_param" : '') . (($highlight_match) ? "&hilit=$highlight" : '')), $total_posts, $config['posts_per_page'], $start);
|
||||
|
@ -617,7 +629,6 @@ $template->assign_vars(array(
|
|||
'S_SELECT_SORT_DAYS' => $s_limit_days,
|
||||
'S_SINGLE_MODERATOR' => (!empty($forum_moderators[$forum_id]) && sizeof($forum_moderators[$forum_id]) > 1) ? false : true,
|
||||
'S_TOPIC_ACTION' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id" . (($start == 0) ? '' : "&start=$start")),
|
||||
'S_TOPIC_MOD' => ($topic_mod != '') ? '<select name="action" id="quick-mod-select">' . $topic_mod . '</select>' : '',
|
||||
'S_MOD_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "f=$forum_id&t=$topic_id" . (($start == 0) ? '' : "&start=$start") . "&quickmod=1&redirect=" . urlencode(str_replace('&', '&', $viewtopic_url)), true, $user->session_id),
|
||||
|
||||
'S_VIEWTOPIC' => true,
|
||||
|
@ -644,6 +655,8 @@ $template->assign_vars(array(
|
|||
|
||||
'U_BOOKMARK_TOPIC' => ($user->data['is_registered'] && $config['allow_bookmarks']) ? $viewtopic_url . '&bookmark=1&hash=' . generate_link_hash("topic_$topic_id") : '',
|
||||
'L_BOOKMARK_TOPIC' => ($user->data['is_registered'] && $config['allow_bookmarks'] && $topic_data['bookmarked']) ? $user->lang['BOOKMARK_TOPIC_REMOVE'] : $user->lang['BOOKMARK_TOPIC'],
|
||||
'L_BOOKMARK_TOPIC_REAL' => $user->lang['BOOKMARK_TOPIC'],
|
||||
'S_BOOKMARKED_TOPIC' => ($user->data['is_registered'] && $config['allow_bookmarks'] && $topic_data['bookmarked']) ? true : false,
|
||||
|
||||
'U_POST_NEW_TOPIC' => ($auth->acl_get('f_post', $forum_id) || $user->data['user_id'] == ANONYMOUS) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=post&f=$forum_id") : '',
|
||||
'U_POST_REPLY_TOPIC' => ($auth->acl_get('f_reply', $forum_id) || $user->data['user_id'] == ANONYMOUS) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=reply&f=$forum_id&t=$topic_id") : '',
|
||||
|
@ -1523,6 +1536,7 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i)
|
|||
'U_YIM' => $user_cache[$poster_id]['yim'],
|
||||
'U_JABBER' => $user_cache[$poster_id]['jabber'],
|
||||
|
||||
'U_APPROVE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&p={$row['post_id']}&f=$forum_id"),
|
||||
'U_REPORT' => ($auth->acl_get('f_report', $forum_id)) ? append_sid("{$phpbb_root_path}report.$phpEx", 'f=' . $forum_id . '&p=' . $row['post_id']) : '',
|
||||
'U_MCP_REPORT' => ($auth->acl_get('m_report', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&mode=report_details&f=' . $forum_id . '&p=' . $row['post_id'], true, $user->session_id) : '',
|
||||
'U_MCP_APPROVE' => ($auth->acl_get('m_approve', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&mode=approve_details&f=' . $forum_id . '&p=' . $row['post_id'], true, $user->session_id) : '',
|
||||
|
|
29
tests/event/dispatcher_test.php
Normal file
29
tests/event/dispatcher_test.php
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2012 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
class phpbb_event_dispatcher_test extends phpbb_test_case
|
||||
{
|
||||
public function test_trigger_event()
|
||||
{
|
||||
$dispatcher = new phpbb_event_dispatcher();
|
||||
|
||||
$dispatcher->addListener('core.test_event', function (phpbb_event_data $event) {
|
||||
$event['foo'] = $event['foo'] . '2';
|
||||
$event['bar'] = $event['bar'] . '2';
|
||||
});
|
||||
|
||||
$foo = 'foo';
|
||||
$bar = 'bar';
|
||||
|
||||
$vars = array('foo', 'bar');
|
||||
$result = $dispatcher->trigger_event('core.test_event', compact($vars));
|
||||
|
||||
$this->assertSame(array('foo' => 'foo2', 'bar' => 'bar2'), $result);
|
||||
}
|
||||
}
|
|
@ -1,13 +1,10 @@
|
|||
<?php
|
||||
|
||||
class phpbb_ext_foobar_controller implements phpbb_extension_controller_interface
|
||||
class phpbb_ext_foobar_controller extends phpbb_extension_controller
|
||||
{
|
||||
public function handle()
|
||||
{
|
||||
global $template;
|
||||
$template->set_ext_dir_prefix($phpbb_root_path . 'ext/error/class/');
|
||||
|
||||
$template->set_filenames(array(
|
||||
$this->template->set_filenames(array(
|
||||
'body' => 'index_body.html'
|
||||
));
|
||||
|
||||
|
|
|
@ -5,8 +5,6 @@ class phpbb_ext_error_classtype_controller
|
|||
public function handle()
|
||||
{
|
||||
global $template;
|
||||
$template->set_ext_dir_prefix($phpbb_root_path . 'ext/error/classtype/');
|
||||
|
||||
$template->set_filenames(array(
|
||||
'body' => 'index_body.html'
|
||||
));
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
<?php
|
||||
|
||||
class phpbb_ext_error_disabled_controller implements phpbb_extension_controller_interface
|
||||
class phpbb_ext_error_disabled_controller extends phpbb_extension_controller
|
||||
{
|
||||
public function handle()
|
||||
{
|
||||
global $template;
|
||||
$template->set_ext_dir_prefix($phpbb_root_path . 'ext/error/disabled/');
|
||||
|
||||
$template->set_filenames(array(
|
||||
$this->template->set_filenames(array(
|
||||
'body' => 'index_body.html'
|
||||
));
|
||||
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
<?php
|
||||
|
||||
class phpbb_ext_foo_bar_controller implements phpbb_extension_controller_interface
|
||||
class phpbb_ext_foo_bar_controller extends phpbb_extension_controller
|
||||
{
|
||||
public function handle()
|
||||
{
|
||||
global $template;
|
||||
$template->set_ext_dir_prefix($phpbb_root_path . 'ext/foo/bar/');
|
||||
|
||||
$template->set_filenames(array(
|
||||
$this->template->set_filenames(array(
|
||||
'body' => 'foobar_body.html'
|
||||
));
|
||||
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
<?php
|
||||
|
||||
class phpbb_ext_foobar_controller implements phpbb_extension_controller_interface
|
||||
class phpbb_ext_foobar_controller extends phpbb_extension_controller
|
||||
{
|
||||
public function handle()
|
||||
{
|
||||
global $template;
|
||||
$template->set_ext_dir_prefix($phpbb_root_path . 'ext/foobar/');
|
||||
|
||||
$template->set_filenames(array(
|
||||
$this->template->set_filenames(array(
|
||||
'body' => 'foobar_body.html'
|
||||
));
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue