diff --git a/phpBB/adm/images/file_conflict.gif b/phpBB/adm/images/file_conflict.gif new file mode 100644 index 0000000000..8b42730474 Binary files /dev/null and b/phpBB/adm/images/file_conflict.gif differ diff --git a/phpBB/adm/images/file_modified.gif b/phpBB/adm/images/file_modified.gif new file mode 100644 index 0000000000..4728cb3d50 Binary files /dev/null and b/phpBB/adm/images/file_modified.gif differ diff --git a/phpBB/adm/images/file_new.gif b/phpBB/adm/images/file_new.gif new file mode 100644 index 0000000000..1d6e15b59d Binary files /dev/null and b/phpBB/adm/images/file_new.gif differ diff --git a/phpBB/adm/images/file_new_conflict.gif b/phpBB/adm/images/file_new_conflict.gif new file mode 100644 index 0000000000..83fc598393 Binary files /dev/null and b/phpBB/adm/images/file_new_conflict.gif differ diff --git a/phpBB/adm/images/file_not_modified.gif b/phpBB/adm/images/file_not_modified.gif new file mode 100644 index 0000000000..98ed26db32 Binary files /dev/null and b/phpBB/adm/images/file_not_modified.gif differ diff --git a/phpBB/adm/images/file_up_to_date.gif b/phpBB/adm/images/file_up_to_date.gif new file mode 100644 index 0000000000..aff41a15c2 Binary files /dev/null and b/phpBB/adm/images/file_up_to_date.gif differ diff --git a/phpBB/adm/images/icon_delete_disabled.gif b/phpBB/adm/images/icon_delete_disabled.gif new file mode 100644 index 0000000000..da55bbbe44 Binary files /dev/null and b/phpBB/adm/images/icon_delete_disabled.gif differ diff --git a/phpBB/adm/images/icon_down_disabled.gif b/phpBB/adm/images/icon_down_disabled.gif new file mode 100644 index 0000000000..3ba36975b4 Binary files /dev/null and b/phpBB/adm/images/icon_down_disabled.gif differ diff --git a/phpBB/adm/images/icon_edit_disabled.gif b/phpBB/adm/images/icon_edit_disabled.gif new file mode 100644 index 0000000000..ac96b0e6dc Binary files /dev/null and b/phpBB/adm/images/icon_edit_disabled.gif differ diff --git a/phpBB/adm/images/icon_sync_disabled.gif b/phpBB/adm/images/icon_sync_disabled.gif new file mode 100644 index 0000000000..39985045c8 Binary files /dev/null and b/phpBB/adm/images/icon_sync_disabled.gif differ diff --git a/phpBB/adm/images/icon_up_disabled.gif b/phpBB/adm/images/icon_up_disabled.gif new file mode 100644 index 0000000000..2797192574 Binary files /dev/null and b/phpBB/adm/images/icon_up_disabled.gif differ diff --git a/phpBB/adm/index.php b/phpBB/adm/index.php index 336afc0de1..6c142fde3f 100644 --- a/phpBB/adm/index.php +++ b/phpBB/adm/index.php @@ -136,21 +136,27 @@ function adm_page_header($page_title) 'T_RANKS_PATH' => "{$phpbb_root_path}{$config['ranks_path']}/", 'T_UPLOAD_PATH' => "{$phpbb_root_path}{$config['upload_path']}/", - 'ICON_MOVE_UP' => '' . $user->lang['MOVE_UP'] . '', - 'ICON_MOVE_DOWN' => '' . $user->lang['MOVE_DOWN'] . '', - 'ICON_EDIT' => '' . $user->lang['EDIT'] . '', - 'ICON_DELETE' => '' . $user->lang['DELETE'] . '', - 'ICON_SYNC' => '' . $user->lang['RESYNC'] . '', + 'ICON_MOVE_UP' => '' . $user->lang['MOVE_UP'] . '', + 'ICON_MOVE_UP_DISABLED' => '' . $user->lang['MOVE_UP'] . '', + 'ICON_MOVE_DOWN' => '' . $user->lang['MOVE_DOWN'] . '', + 'ICON_MOVE_DOWN_DISABLED' => '' . $user->lang['MOVE_DOWN'] . '', + 'ICON_EDIT' => '' . $user->lang['EDIT'] . '', + 'ICON_EDIT_DISABLED' => '' . $user->lang['EDIT'] . '', + 'ICON_DELETE' => '' . $user->lang['DELETE'] . '', + 'ICON_DELETE_DISABLED' => '' . $user->lang['DELETE'] . '', + 'ICON_SYNC' => '' . $user->lang['RESYNC'] . '', + 'ICON_SYNC_DISABLED' => '' . $user->lang['RESYNC'] . '', + 'S_USER_LANG' => $user->lang['USER_LANG'], 'S_CONTENT_DIRECTION' => $user->lang['DIRECTION'], - 'S_CONTENT_ENCODING' => $user->lang['ENCODING'], + 'S_CONTENT_ENCODING' => 'UTF-8', 'S_CONTENT_DIR_LEFT' => $user->lang['LEFT'], 'S_CONTENT_DIR_RIGHT' => $user->lang['RIGHT']) ); - if (!empty($config['send_encoding'])) + if ($config['send_encoding']) { - header('Content-type: text/html; charset: ' . $user->lang['ENCODING']); + header('Content-type: text/html; charset=UTF-8'); } header('Cache-Control: private, no-cache="set-cookie"'); header('Expires: 0'); @@ -371,4 +377,102 @@ function build_cfg_template($tpl_type, $key, &$new, $config_key, $vars) return $tpl; } +/** +* Going through a config array and validate values, writing errors to $error. +*/ +function validate_config_vars($config_vars, &$cfg_array, &$error) +{ + global $phpbb_root_path, $user; + + foreach ($config_vars as $config_name => $config_definition) + { + if (!isset($cfg_array[$config_name]) || strpos($config_name, 'legend') !== false) + { + continue; + } + + if (!isset($config_definition['validate'])) + { + continue; + } + + // Validate a bit. ;) String is already checked through request_var(), therefore we do not check this again + switch ($config_definition['validate']) + { + case 'bool': + $cfg_array[$config_name] = ($cfg_array[$config_name]) ? 1 : 0; + break; + + case 'int': + $cfg_array[$config_name] = (int) $cfg_array[$config_name]; + break; + + // Relative path (appended $phpbb_root_path) + case 'rpath': + case 'rwpath': + if (!$cfg_array[$config_name]) + { + break; + } + + $destination = $cfg_array[$config_name]; + + // Adjust destination path (no trailing slash) + if ($destination{(sizeof($destination)-1)} == '/' || $destination{(sizeof($destination)-1)} == '\\') + { + $destination = substr($destination, 0, sizeof($destination)-2); + } + + $destination = str_replace(array('../', '..\\', './', '.\\'), '', $destination); + if ($destination && ($destination[0] == '/' || $destination[0] == "\\")) + { + $destination = ''; + } + + $cfg_array[$config_name] = trim($destination); + + // Path being relative (still prefixed by phpbb_root_path), but with the ability to escape the root dir... + case 'path': + case 'wpath': + + if (!$cfg_array[$config_name]) + { + break; + } + + $cfg_array[$config_name] = trim($cfg_array[$config_name]); + + // Make sure no NUL byte is present... + if (strpos($cfg_array[$config_name], '\0') !== false || strpos($cfg_array[$config_name], '%00') !== false) + { + $cfg_array[$config_name] = ''; + break; + } + + if (!file_exists($phpbb_root_path . $cfg_array[$config_name])) + { + $error[] = sprintf($user->lang['DIRECTORY_DOES_NOT_EXIST'], $cfg_array[$config_name]); + } + + if (file_exists($phpbb_root_path . $cfg_array[$config_name]) && !is_dir($phpbb_root_path . $cfg_array[$config_name])) + { + $error[] = sprintf($user->lang['DIRECTORY_NOT_DIR'], $cfg_array[$config_name]); + } + + // Check if the path is writeable + if ($config_definition['validate'] == 'wpath' || $config_definition['validate'] == 'rwpath') + { + if (file_exists($phpbb_root_path . $cfg_array[$config_name]) && !is_writeable($phpbb_root_path . $cfg_array[$config_name])) + { + $error[] = sprintf($user->lang['DIRECTORY_NOT_WRITEABLE'], $cfg_array[$config_name]); + } + } + + break; + } + } + + return; +} + ?> \ No newline at end of file diff --git a/phpBB/adm/style/acp_attachments.html b/phpBB/adm/style/acp_attachments.html index 964a07bf67..42de3e7060 100644 --- a/phpBB/adm/style/acp_attachments.html +++ b/phpBB/adm/style/acp_attachments.html @@ -295,10 +295,9 @@ - {extensions.EXTENSION} {extensions.GROUP_OPTIONS} - + @@ -319,6 +318,7 @@ {L_FILENAME} + {L_FILEDATE} {L_FILESIZE} {L_ATTACH_POST_ID} {L_ATTACH_TO_POST} @@ -328,21 +328,24 @@ - {orphan.FILE} + {orphan.REAL_FILENAME} + {orphan.FILETIME} {orphan.FILESIZE} - ID: - - + ID: + + - -   - {L_MARK_ALL} :: {L_UNMARK_ALL} - {L_MARK_ALL} :: {L_UNMARK_ALL} + +   + {L_MARK_ALL} :: {L_UNMARK_ALL} + {L_MARK_ALL} :: {L_UNMARK_ALL} +
+
  diff --git a/phpBB/adm/style/acp_ban.html b/phpBB/adm/style/acp_ban.html index 8bfdf735a5..4629200c97 100644 --- a/phpBB/adm/style/acp_ban.html +++ b/phpBB/adm/style/acp_ban.html @@ -12,19 +12,19 @@ ban_length['{ban_length.BAN_ID}'] = "{ban_length.A_LENGTH}"; var ban_reason = new Array(); - ban_reason[-1] = ""; + ban_reason[-1] = ''; ban_reason['{ban_reason.BAN_ID}'] = "{ban_reason.A_REASON}"; var ban_give_reason = new Array(); - ban_give_reason[-1] = ""; + ban_give_reason[-1] = ''; ban_give_reason['{ban_give_reason.BAN_ID}'] = "{ban_give_reason.A_REASON}"; diff --git a/phpBB/adm/style/acp_bbcodes.html b/phpBB/adm/style/acp_bbcodes.html index 162ee18c35..c1eb7e2193 100644 --- a/phpBB/adm/style/acp_bbcodes.html +++ b/phpBB/adm/style/acp_bbcodes.html @@ -96,7 +96,7 @@ {bbcodes.BBCODE_TAG} - {ICON_EDIT} {ICON_DELETE} + {ICON_EDIT} {ICON_DELETE} diff --git a/phpBB/adm/style/acp_board.html b/phpBB/adm/style/acp_board.html index 02cb055a74..dd29017cb1 100644 --- a/phpBB/adm/style/acp_board.html +++ b/phpBB/adm/style/acp_board.html @@ -6,6 +6,13 @@

{L_TITLE_EXPLAIN}

+ +
+

{L_WARNING}

+

{ERROR_MSG}

+
+ +
diff --git a/phpBB/adm/style/acp_bots.html b/phpBB/adm/style/acp_bots.html index 1924133bfd..bc6c657490 100644 --- a/phpBB/adm/style/acp_bots.html +++ b/phpBB/adm/style/acp_bots.html @@ -89,7 +89,7 @@
-
+
diff --git a/phpBB/adm/style/acp_captcha.html b/phpBB/adm/style/acp_captcha.html index 2fc22d6371..bdc48ea0aa 100644 --- a/phpBB/adm/style/acp_captcha.html +++ b/phpBB/adm/style/acp_captcha.html @@ -18,100 +18,18 @@

{L_VISUAL_CONFIRM_POST_EXPLAIN}
checked="checked" /> {L_ENABLED}    checked="checked" /> {L_DISABLED}
-
- -
- {L_CAPTCHA_OVERLAP} -
-

{U_POLICY_OVERLAP}
-
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
+

{L_CAPTCHA_GD_EXPLAIN}
+
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
-
- +

{L_CAPTCHA_GD_NOISE_EXPLAIN}
+
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
-
-
- -
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
-
-
- -
- {L_CAPTCHA_ENTROPY} -
-

{U_POLICY_ENTROPY}
-
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
-
-
-
- -
-
- -
-
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
-
- -
- {L_CAPTCHA_SHAPE} -
-

{U_POLICY_SHAPE}
-
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
- -
-
-
- -
-
-
-
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
-
-
- - -
- {L_CAPTCHA_3DBITMAP} -
-

{U_POLICY_3DBITMAP}
-
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
-
-
- - -
- {L_CAPTCHA_CELLS} -
-

{U_POLICY_CELLS}
-
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
-
-
- -
- {L_CAPTCHA_STENCIL} -
-

{U_POLICY_STENCIL}
-
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
-
-
- -
- {L_CAPTCHA_COMPOSITE} -
-

{U_POLICY_COMPOSITE}
-
checked="checked" /> {L_YES}   checked="checked" /> {L_NO}
-
-
- - - -
  diff --git a/phpBB/adm/style/acp_email.html b/phpBB/adm/style/acp_email.html index e06bcc3b04..5b3d19c8b6 100644 --- a/phpBB/adm/style/acp_email.html +++ b/phpBB/adm/style/acp_email.html @@ -24,7 +24,7 @@

{L_SEND_TO_USERS_EXPLAIN}
-
[ {L_FIND_USERNAME} ]
+
[ {L_FIND_USERNAME} ]
diff --git a/phpBB/adm/style/acp_forums.html b/phpBB/adm/style/acp_forums.html index dff974e818..63ed7cb883 100644 --- a/phpBB/adm/style/acp_forums.html +++ b/phpBB/adm/style/acp_forums.html @@ -96,6 +96,14 @@
{L_FORUM_IMAGE}
+
+

{L_FORUM_PASSWORD_EXPLAIN}
+
+
+
+

{L_FORUM_PASSWORD_CONFIRM_EXPLAIN}
+
+
@@ -149,14 +157,6 @@

{L_FORUM_TOPICS_PAGE_EXPLAIN}
-
-

{L_FORUM_PASSWORD_EXPLAIN}
-
-
-
-

{L_FORUM_PASSWORD_CONFIRM_EXPLAIN}
-
-
@@ -283,8 +283,40 @@ + + + + +

{L_FORUM_ADMIN}

+ +

{L_FORUM_ADMIN_EXPLAIN}

+ +

{L_PROGRESS_EXPLAIN}

+ + +

{L_FORUM_ADMIN}

{L_FORUM_ADMIN_EXPLAIN}

@@ -297,12 +329,18 @@ + +

{L_NOTIFY}

{L_FORUM_RESYNCED}

- +

{NAVIGATION} [{L_EDIT} | {L_DELETE} | {L_RESYNC}]

@@ -313,15 +351,31 @@ {forums.FOLDER_IMAGE} - {forums.FORUM_NAME}{forums.FORUM_NAME} +
{forums.FORUM_IMAGE}
+ {forums.FORUM_NAME}{forums.FORUM_NAME}
{forums.FORUM_DESCRIPTION}

{L_TOPICS}: {forums.FORUM_TOPICS} / {L_POSTS}: {forums.FORUM_POSTS} - - {ICON_MOVE_UP} - {ICON_MOVE_DOWN} + + + {ICON_MOVE_UP_DISABLED} + {ICON_MOVE_DOWN} + + {ICON_MOVE_UP} + {ICON_MOVE_DOWN} + + {ICON_MOVE_UP} + {ICON_MOVE_DOWN_DISABLED} + + {ICON_MOVE_UP_DISABLED} + {ICON_MOVE_DOWN_DISABLED} + {ICON_EDIT} - {ICON_SYNC} + + {ICON_SYNC} + + {ICON_SYNC_DISABLED} + {ICON_DELETE} @@ -353,4 +407,4 @@ - \ No newline at end of file + diff --git a/phpBB/adm/style/acp_groups.html b/phpBB/adm/style/acp_groups.html index 2b446056a7..3d4e274228 100644 --- a/phpBB/adm/style/acp_groups.html +++ b/phpBB/adm/style/acp_groups.html @@ -217,14 +217,14 @@
- {L_MARK_ALL} :: {L_UNMARK_ALL}
+ {L_MARK_ALL} :: {L_UNMARK_ALL}
@@ -247,7 +247,7 @@

{L_USERNAMES_EXPLAIN}
-
[ {L_FIND_USERNAME} ]
+
[ {L_FIND_USERNAME} ]
diff --git a/phpBB/adm/style/acp_icons.html b/phpBB/adm/style/acp_icons.html index ca4c39004a..e3cfb5764a 100644 --- a/phpBB/adm/style/acp_icons.html +++ b/phpBB/adm/style/acp_icons.html @@ -139,14 +139,22 @@ - {items.ALT_TEXT} + {items.ALT_TEXT} {items.CODE} {items.EMOTION} - - {ICON_MOVE_UP} - {ICON_MOVE_DOWN} + + + {ICON_MOVE_UP_DISABLED} + {ICON_MOVE_DOWN} + + {ICON_MOVE_UP} + {ICON_MOVE_DOWN} + + {ICON_MOVE_UP} + {ICON_MOVE_DOWN_DISABLED} + {ICON_EDIT} {ICON_DELETE} diff --git a/phpBB/adm/style/acp_inactive.html b/phpBB/adm/style/acp_inactive.html new file mode 100755 index 0000000000..8c50ec5c41 --- /dev/null +++ b/phpBB/adm/style/acp_inactive.html @@ -0,0 +1,75 @@ + + + + +

{L_INACTIVE_USERS}

+ +

{L_INACTIVE_USERS_EXPLAIN}

+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{L_USERNAME}{L_JOINED}{L_INACTIVE_DATE}{L_INACTIVE_REASON}{L_LAST_VISIT}{L_MARK}
{inactive.USERNAME}{inactive.JOINED}{inactive.INACTIVE_DATE}{inactive.REASON}{inactive.LAST_VISIT}  
{L_NO_INACTIVE_USERS}
+ + +
+ {L_DISPLAY_LOG}:  {S_LIMIT_DAYS} {L_SORT_BY}: {S_SORT_KEY} {S_SORT_DIR} + +
+ +
+

{L_MARK_ALL}{L_UNMARK_ALL}

+ + + +
+ + + + +
+ + \ No newline at end of file diff --git a/phpBB/adm/style/acp_language.html b/phpBB/adm/style/acp_language.html index 5f32855f48..22cbd3921c 100644 --- a/phpBB/adm/style/acp_language.html +++ b/phpBB/adm/style/acp_language.html @@ -44,7 +44,7 @@
-
{LANG_ISO}
+
{LANG_ISO}
@@ -85,7 +85,7 @@ - {missing.FILE} + {missing.FILE} {missing.TPL} @@ -131,8 +131,12 @@ - {PRINT_MESSAGE}
{L_FILE_FROM_STORAGE}
-     {L_UPLOAD_METHOD}:  id="method" checked="checked" value="{buttons.VALUE}" name="method"> {buttons.VALUE}  + {PRINT_MESSAGE}
{L_FILE_FROM_STORAGE}
+    + + + +   {L_UPLOAD_METHOD}:  id="method" checked="checked" value="{buttons.VALUE}" name="method" /> {buttons.VALUE}  @@ -144,7 +148,10 @@ {TPL} -     {L_UPLOAD_METHOD}:  {buttons.VALUE}  +   {L_UPLOAD_METHOD}:  {buttons.VALUE}  + + +    @@ -173,12 +180,12 @@ {L_UPLOAD_SETTINGS}
-
{NAME}
+
{NAME}
-

{data.EXPLAIN}
-
+

{data.EXPLAIN}
+
@@ -209,27 +216,27 @@ - {L_INSTALLED_LANGUAGE_PACKS} + {L_INSTALLED_LANGUAGE_PACKS} {lang.ENGLISH_NAME} {lang.TAG} {lang.LOCAL_NAME} - {lang.ISO} + {lang.ISO} {lang.USED_BY}  {L_DOWNLOAD} | {L_DELETE} - {L_UNINSTALLED_LANGUAGE_PACKS} + {L_UNINSTALLED_LANGUAGE_PACKS} {notinst.NAME} {notinst.LOCAL_NAME} - {notinst.ISO} + {notinst.ISO} {L_INSTALL} diff --git a/phpBB/adm/style/acp_logs.html b/phpBB/adm/style/acp_logs.html index e3411fb393..e5dc04c94a 100644 --- a/phpBB/adm/style/acp_logs.html +++ b/phpBB/adm/style/acp_logs.html @@ -17,7 +17,7 @@