{ICON_MOVE_UP_DISABLED}
- {ICON_MOVE_DOWN}
+ {ICON_MOVE_DOWN}
- {ICON_MOVE_UP}
- {ICON_MOVE_DOWN}
+ {ICON_MOVE_UP}
+ {ICON_MOVE_DOWN}
- {ICON_MOVE_UP}
+ {ICON_MOVE_UP}{ICON_MOVE_DOWN_DISABLED}{ICON_MOVE_UP_DISABLED}
diff --git a/phpBB/adm/style/ajax.js b/phpBB/adm/style/ajax.js
index 12541cb057..a3a77df89b 100644
--- a/phpBB/adm/style/ajax.js
+++ b/phpBB/adm/style/ajax.js
@@ -10,76 +10,98 @@ var img_templates = {
};
/**
- * 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 /
+ * The following callbacks are for reording items. row_down
+ * is triggered when an item is moved down, and row_up is triggered when
+ * an item is moved up. It moves the row up or down, and deactivates /
* activates any up / down icons that require it (the ones at the top or bottom).
*/
-phpbb.add_ajax_callback('forum_down', function() {
+phpbb.add_ajax_callback('row_down', function() {
var el = $(this),
- tr = el.parents('tr');
+ tr = el.parents('tr'),
+ tr_swap = tr.next();
+ /*
+ * If the element was the first one, we have to:
+ * - Add the up-link to the row we moved
+ * - Remove the up-link on the next row
+ */
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);
+ tr.find('.up').html(up_img);
phpbb.ajaxify({
- selector: el.parents('span').siblings('.up').children('a'),
- callback: 'forum_up',
+ selector: tr.find('.up').children('a'),
+ callback: 'row_up',
overlay: false
});
+
+ tr_swap.find('.up').html(img_templates.up_disabled);
}
- tr.insertAfter(tr.next());
+ tr.insertAfter(tr_swap);
+ /*
+ * As well as:
+ * - Remove the down-link on the moved row, if it is now the last row
+ * - Add the down-link to the next row, if it was the last row
+ */
if (tr.is(':last-child'))
{
- el.replaceWith(img_templates.down_disabled);
+ tr.find('.down').html(img_templates.down_disabled);
- var down_img = img_templates.down.clone().attr('href', tr.attr('data-down'));
- tr.prev().find('.down').html(down_img);
+ var down_img = img_templates.down.clone().attr('href', tr_swap.attr('data-down'));
+ tr_swap.find('.down').html(down_img);
phpbb.ajaxify({
- selector: tr.prev().find('.down').children('a'),
- callback: 'forum_down',
+ selector: tr_swap.find('.down').children('a'),
+ callback: 'row_down',
overlay: false
});
}
});
-phpbb.add_ajax_callback('forum_up', function() {
+phpbb.add_ajax_callback('row_up', function() {
var el = $(this),
- tr = el.parents('tr');
+ tr = el.parents('tr'),
+ tr_swap = tr.prev();
+ /*
+ * If the element was the last one, we have to:
+ * - Add the down-link to the row we moved
+ * - Remove the down-link on the next row
+ */
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);
+ tr.find('.down').html(down_img);
phpbb.ajaxify({
- selector: el.parents('span').siblings('.down').children('a'),
- callback: 'forum_down',
+ selector: tr.find('.down').children('a'),
+ callback: 'row_down',
overlay: false
});
+
+ tr_swap.find('.down').html(img_templates.down_disabled);
}
- tr.insertBefore(tr.prev());
+ tr.insertBefore(tr_swap);
+ /*
+ * As well as:
+ * - Remove the up-link on the moved row, if it is now the first row
+ * - Add the up-link to the previous row, if it was the first row
+ */
if (tr.is(':first-child'))
{
- el.replaceWith(img_templates.up_disabled);
+ tr.find('.up').html(img_templates.up_disabled);
- var up_img = img_templates.up.clone().attr('href', tr.attr('data-up'));
- tr.next().find('.up').html(up_img);
+ var up_img = img_templates.up.clone().attr('href', tr_swap.attr('data-up'));
+ tr_swap.find('.up').html(up_img);
phpbb.ajaxify({
- selector: tr.next().find('.up').children('a'),
- callback: 'forum_up',
+ selector: tr_swap.find('.up').children('a'),
+ callback: 'row_up',
overlay: false
});
}
diff --git a/phpBB/common.php b/phpBB/common.php
index 002d435b6e..c4237dfcf5 100644
--- a/phpBB/common.php
+++ b/phpBB/common.php
@@ -94,7 +94,7 @@ $phpbb_container = phpbb_create_dumped_container_unless_debug(
new phpbb_di_extension_core($phpbb_root_path),
),
array(
- new phpbb_di_pass_collection_pass('cron.task_collection', 'cron.task'),
+ new phpbb_di_pass_collection_pass(),
),
$phpbb_root_path,
$phpEx
diff --git a/phpBB/config/services.yml b/phpBB/config/services.yml
index eccdbc7631..991d7381e2 100644
--- a/phpBB/config/services.yml
+++ b/phpBB/config/services.yml
@@ -48,6 +48,8 @@ services:
class: phpbb_di_service_collection
arguments:
- @service_container
+ tags:
+ - { name: service_collection, tag: cron.task }
cron.manager:
class: phpbb_cron_manager
diff --git a/phpBB/download/file.php b/phpBB/download/file.php
index 95b20a88d2..79f53245b9 100644
--- a/phpBB/download/file.php
+++ b/phpBB/download/file.php
@@ -65,7 +65,7 @@ if (isset($_GET['avatar']))
new phpbb_di_extension_core($phpbb_root_path),
),
array(
- new phpbb_di_pass_collection_pass('cron.task_collection', 'cron.task'),
+ new phpbb_di_pass_collection_pass(),
),
$phpbb_root_path,
$phpEx
diff --git a/phpBB/includes/cache/driver/file.php b/phpBB/includes/cache/driver/file.php
index b20c0064ea..32bdb1918a 100644
--- a/phpBB/includes/cache/driver/file.php
+++ b/phpBB/includes/cache/driver/file.php
@@ -214,7 +214,7 @@ class phpbb_cache_driver_file extends phpbb_cache_driver_base
while (($entry = readdir($dir)) !== false)
{
- if (strpos($entry, 'container') !== 0 &&
+ if (strpos($entry, 'container_') !== 0 &&
strpos($entry, 'sql_') !== 0 &&
strpos($entry, 'data_') !== 0 &&
strpos($entry, 'ctpl_') !== 0 &&
diff --git a/phpBB/includes/cache/driver/memory.php b/phpBB/includes/cache/driver/memory.php
index 98ac02b161..1ea9a3e9e7 100644
--- a/phpBB/includes/cache/driver/memory.php
+++ b/phpBB/includes/cache/driver/memory.php
@@ -162,7 +162,7 @@ abstract class phpbb_cache_driver_memory extends phpbb_cache_driver_base
while (($entry = readdir($dir)) !== false)
{
- if (strpos($entry, 'container') !== 0 &&
+ if (strpos($entry, 'container_') !== 0 &&
strpos($entry, 'sql_') !== 0 &&
strpos($entry, 'data_') !== 0 &&
strpos($entry, 'ctpl_') !== 0 &&
diff --git a/phpBB/includes/di/pass/collection_pass.php b/phpBB/includes/di/pass/collection_pass.php
index 70a44d1d51..63a5c7dfc4 100644
--- a/phpBB/includes/di/pass/collection_pass.php
+++ b/phpBB/includes/di/pass/collection_pass.php
@@ -18,17 +18,13 @@ if (!defined('IN_PHPBB'))
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+/**
+* Appends an add method call to the definition of each collection service for
+* the services tagged with the appropriate name defined in the collection's
+* service_collection tag.
+*/
class phpbb_di_pass_collection_pass implements CompilerPassInterface
{
- private $collection_service;
- private $service_tag;
-
- public function __construct($collection_service, $service_tag)
- {
- $this->collection_service = $collection_service;
- $this->service_tag = $service_tag;
- }
-
/**
* Modify the container before it is passed to the rest of the code
*
@@ -37,11 +33,14 @@ class phpbb_di_pass_collection_pass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container)
{
- $definition = $container->getDefinition($this->collection_service);
-
- foreach ($container->findTaggedServiceIds($this->service_tag) as $id => $data)
+ foreach ($container->findTaggedServiceIds('service_collection') as $id => $data)
{
- $definition->addMethodCall('add', array($id));
+ $definition = $container->getDefinition($id);
+
+ foreach ($container->findTaggedServiceIds($data[0]['tag']) as $service_id => $service_data)
+ {
+ $definition->addMethodCall('add', array($service_id));
+ }
}
}
}
diff --git a/phpBB/includes/functions_container.php b/phpBB/includes/functions_container.php
index 1de1d9f7ea..8014574443 100644
--- a/phpBB/includes/functions_container.php
+++ b/phpBB/includes/functions_container.php
@@ -84,8 +84,13 @@ function phpbb_create_compiled_container(array $extensions, array $passes, $phpb
$tmp_container = phpbb_create_container($extensions, $phpbb_root_path, $php_ext);
$tmp_container->compile();
+ // XXX stop writing to global $cache when
+ // http://tracker.phpbb.com/browse/PHPBB3-11203 is fixed
+ $GLOBALS['cache'] = $tmp_container->get('cache');
+ $installed_exts = $tmp_container->get('ext.manager')->all_enabled();
+
// Now pass the enabled extension paths into the ext compiler extension
- $extensions[] = new phpbb_di_extension_ext($tmp_container->get('ext.manager')->all_enabled());
+ $extensions[] = new phpbb_di_extension_ext($installed_exts);
// Create the final container to be compiled and cached
$container = phpbb_create_container($extensions, $phpbb_root_path, $php_ext);
@@ -126,15 +131,12 @@ function phpbb_create_dumped_container(array $extensions, array $passes, $phpbb_
function phpbb_create_dumped_container_unless_debug(array $extensions, array $passes, $phpbb_root_path, $php_ext)
{
- if (defined('DEBUG')) {
- return phpbb_create_compiled_container($extensions, $passes, $phpbb_root_path, $php_ext);
- }
-
- return phpbb_create_dumped_container($extensions, $passes, $phpbb_root_path, $php_ext);
+ $container_factory = defined('DEBUG') ? 'phpbb_create_compiled_container' : 'phpbb_create_dumped_container';
+ return $container_factory($extensions, $passes, $phpbb_root_path, $php_ext);
}
function phpbb_container_filename($phpbb_root_path, $php_ext)
{
$filename = str_replace(array('/', '.'), array('slash', 'dot'), $phpbb_root_path);
- return $phpbb_root_path . 'cache/' . $filename . '_container.' . $php_ext;
+ return $phpbb_root_path . 'cache/container_' . $filename . '.' . $php_ext;
}
diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php
index 540b66d030..9384850fe6 100644
--- a/phpBB/install/database_update.php
+++ b/phpBB/install/database_update.php
@@ -112,7 +112,7 @@ $phpbb_container = phpbb_create_dumped_container_unless_debug(
new phpbb_di_extension_core($phpbb_root_path),
),
array(
- new phpbb_di_pass_collection_pass('cron.task_collection', 'cron.task'),
+ new phpbb_di_pass_collection_pass(),
),
$phpbb_root_path,
$phpEx
diff --git a/phpBB/styles/prosilver/template/jumpbox.html b/phpBB/styles/prosilver/template/jumpbox.html
index 0060e83b15..ff234464dc 100644
--- a/phpBB/styles/prosilver/template/jumpbox.html
+++ b/phpBB/styles/prosilver/template/jumpbox.html
@@ -1,12 +1,12 @@
-