diff --git a/.gitignore b/.gitignore
index e6e017f85e..4093aeb56d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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/*
diff --git a/.travis.yml b/.travis.yml
index d5e1231584..f21928dd37 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -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
diff --git a/README.md b/README.md
index 51e65176c6..a7feb8db40 100644
--- a/README.md
+++ b/README.md
@@ -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)
diff --git a/phpBB/adm/images/alert_close.png b/phpBB/adm/images/alert_close.png
new file mode 100644
index 0000000000..79750a013c
Binary files /dev/null and b/phpBB/adm/images/alert_close.png differ
diff --git a/phpBB/adm/style/acp_attachments.html b/phpBB/adm/style/acp_attachments.html
index 33ef8062a6..c2f8b34792 100644
--- a/phpBB/adm/style/acp_attachments.html
+++ b/phpBB/adm/style/acp_attachments.html
@@ -248,7 +248,7 @@
» {L_ALLOWED_IN_PM_POST}
{groups.CATEGORY} |
- {ICON_EDIT} {ICON_DELETE} |
+ {ICON_EDIT} {ICON_DELETE} |
diff --git a/phpBB/adm/style/acp_bbcodes.html b/phpBB/adm/style/acp_bbcodes.html
index b85e8eca81..5939af24ae 100644
--- a/phpBB/adm/style/acp_bbcodes.html
+++ b/phpBB/adm/style/acp_bbcodes.html
@@ -101,7 +101,7 @@
|
{bbcodes.BBCODE_TAG} |
- {ICON_EDIT} {ICON_DELETE} |
+ {ICON_EDIT} {ICON_DELETE} |
diff --git a/phpBB/adm/style/acp_bots.html b/phpBB/adm/style/acp_bots.html
index 886005caa3..87679fc33a 100644
--- a/phpBB/adm/style/acp_bots.html
+++ b/phpBB/adm/style/acp_bots.html
@@ -76,9 +76,9 @@
|
{bots.BOT_NAME} |
{bots.LAST_VISIT} |
- {bots.L_ACTIVATE_DEACTIVATE} |
+ {bots.L_ACTIVATE_DEACTIVATE} |
{L_EDIT} |
- {L_DELETE} |
+ {L_DELETE} |
|
diff --git a/phpBB/adm/style/acp_forums.html b/phpBB/adm/style/acp_forums.html
index 447c0ce466..048a24a328 100644
--- a/phpBB/adm/style/acp_forums.html
+++ b/phpBB/adm/style/acp_forums.html
@@ -443,7 +443,7 @@
-
+
{forums.FOLDER_IMAGE} |
{forums.FORUM_IMAGE}
@@ -453,17 +453,17 @@
|
- {ICON_MOVE_UP_DISABLED}
- {ICON_MOVE_DOWN}
+ {ICON_MOVE_UP_DISABLED}
+ {ICON_MOVE_DOWN}
- {ICON_MOVE_UP}
- {ICON_MOVE_DOWN}
+ {ICON_MOVE_UP}
+ {ICON_MOVE_DOWN}
- {ICON_MOVE_UP}
- {ICON_MOVE_DOWN_DISABLED}
+ {ICON_MOVE_UP}
+ {ICON_MOVE_DOWN_DISABLED}
- {ICON_MOVE_UP_DISABLED}
- {ICON_MOVE_DOWN_DISABLED}
+ {ICON_MOVE_UP_DISABLED}
+ {ICON_MOVE_DOWN_DISABLED}
{ICON_EDIT}
@@ -500,6 +500,14 @@
+
+
diff --git a/phpBB/adm/style/acp_groups.html b/phpBB/adm/style/acp_groups.html
index 158751623a..ed94fa985e 100644
--- a/phpBB/adm/style/acp_groups.html
+++ b/phpBB/adm/style/acp_groups.html
@@ -350,7 +350,7 @@
| {groups.TOTAL_MEMBERS} |
{L_SETTINGS} |
{L_MEMBERS} |
- {L_DELETE}{L_DELETE} |
+ {L_DELETE}{L_DELETE} |
diff --git a/phpBB/adm/style/acp_icons.html b/phpBB/adm/style/acp_icons.html
index 85b5343666..a8864d42f7 100644
--- a/phpBB/adm/style/acp_icons.html
+++ b/phpBB/adm/style/acp_icons.html
@@ -245,7 +245,7 @@
{ICON_MOVE_UP_DISABLED}{ICON_MOVE_UP}
{ICON_MOVE_DOWN_DISABLED}{ICON_MOVE_DOWN}
- {ICON_EDIT} {ICON_DELETE}
+ {ICON_EDIT} {ICON_DELETE}
|
diff --git a/phpBB/adm/style/acp_main.html b/phpBB/adm/style/acp_main.html
index 11f7fedd38..d9f833d878 100644
--- a/phpBB/adm/style/acp_main.html
+++ b/phpBB/adm/style/acp_main.html
@@ -152,35 +152,35 @@
diff --git a/phpBB/adm/style/acp_modules.html b/phpBB/adm/style/acp_modules.html
index 3f1c0bf50b..6c4645e80c 100644
--- a/phpBB/adm/style/acp_modules.html
+++ b/phpBB/adm/style/acp_modules.html
@@ -164,7 +164,7 @@
{ICON_MOVE_DOWN_DISABLED}
{ICON_EDIT}
- {ICON_DELETE}
+ {ICON_DELETE}
diff --git a/phpBB/adm/style/acp_permission_roles.html b/phpBB/adm/style/acp_permission_roles.html
index 658d8dd0c8..2ac77af25d 100644
--- a/phpBB/adm/style/acp_permission_roles.html
+++ b/phpBB/adm/style/acp_permission_roles.html
@@ -174,7 +174,7 @@
{ICON_MOVE_DOWN_DISABLED}
{ICON_EDIT}
- {ICON_DELETE}
+ {ICON_DELETE}
diff --git a/phpBB/adm/style/acp_profile.html b/phpBB/adm/style/acp_profile.html
index 0ac0d78a64..4a6df768a8 100644
--- a/phpBB/adm/style/acp_profile.html
+++ b/phpBB/adm/style/acp_profile.html
@@ -195,7 +195,7 @@
{fields.FIELD_IDENT} |
{fields.FIELD_TYPE} |
- {fields.L_ACTIVATE_DEACTIVATE} | {L_TRANSLATE} |
+ {fields.L_ACTIVATE_DEACTIVATE} | {L_TRANSLATE} |
@@ -213,7 +213,7 @@
{ICON_EDIT_DISABLED}
- {ICON_DELETE}
+ {ICON_DELETE}
|
diff --git a/phpBB/adm/style/acp_ranks.html b/phpBB/adm/style/acp_ranks.html
index 2f77a256b1..7fb7da7095 100644
--- a/phpBB/adm/style/acp_ranks.html
+++ b/phpBB/adm/style/acp_ranks.html
@@ -80,7 +80,7 @@
- |
{ranks.RANK_TITLE} |
- {ranks.MIN_POSTS} |
- {ICON_EDIT} {ICON_DELETE} |
+ {ICON_EDIT} {ICON_DELETE} |
diff --git a/phpBB/adm/style/acp_reasons.html b/phpBB/adm/style/acp_reasons.html
index 522aec5930..7cf2cce4c9 100644
--- a/phpBB/adm/style/acp_reasons.html
+++ b/phpBB/adm/style/acp_reasons.html
@@ -99,7 +99,7 @@
{ICON_EDIT}
- {ICON_DELETE}
+ {ICON_DELETE}
{ICON_DELETE_DISABLED}
diff --git a/phpBB/adm/style/acp_words.html b/phpBB/adm/style/acp_words.html
index 113f58ef92..4acd75f933 100644
--- a/phpBB/adm/style/acp_words.html
+++ b/phpBB/adm/style/acp_words.html
@@ -60,7 +60,7 @@
|
{words.WORD} |
{words.REPLACEMENT} |
- {ICON_EDIT} {ICON_DELETE} |
+ {ICON_EDIT} {ICON_DELETE} |
diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css
index 14a2b6dded..7afcc3d23b 100644
--- a/phpBB/adm/style/admin.css
+++ b/phpBB/adm/style/admin.css
@@ -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 {
diff --git a/phpBB/adm/style/ajax.js b/phpBB/adm/style/ajax.js
new file mode 100644
index 0000000000..fd2f7a2122
--- /dev/null
+++ b/phpBB/adm/style/ajax.js
@@ -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
diff --git a/phpBB/adm/style/overall_footer.html b/phpBB/adm/style/overall_footer.html
index f05e9c56c5..0337080f3d 100644
--- a/phpBB/adm/style/overall_footer.html
+++ b/phpBB/adm/style/overall_footer.html
@@ -17,11 +17,29 @@
{DEBUG_OUTPUT}
+
+
+
+
{L_LOADING}
{L_PLEASE_WAIT}
+
+
+
+
+
+