Commit: 703abfd16b79743ee33baa155757d0ee49caf8c0
Author: Hannes Magnusson <[email protected]> Wed, 20 Nov 2013
14:04:33 -0800
Parents: 766bf21ed7d77d237adfb1694588c2996ac9ebc0
Branches: master
Link:
http://git.php.net/?p=web/php.git;a=commitdiff;h=703abfd16b79743ee33baa155757d0ee49caf8c0
Log:
Prettify the download page
Changed paths:
M include/get-download.inc
D include/mirrortable.inc
M include/site.inc
M mirrors.php
M styles/mirror.css
diff --git a/include/get-download.inc b/include/get-download.inc
index d1ca357..f46d73e 100644
--- a/include/get-download.inc
+++ b/include/get-download.inc
@@ -1,6 +1,5 @@
<?php
// $Id$
-include_once $_SERVER['DOCUMENT_ROOT'] . '/include/mirrortable.inc';
// Try to make this page non-cached
header_nocache();
@@ -13,6 +12,11 @@ if (!isset($df)) {
// Could be a normal download or a manual download file
$possible_files = array($df, "manual/$df");
+$site_config = array(
+ 'current' => 'downloads',
+ 'css' => array('mirror.css')
+);
+
// Find out what is the exact file requested
$file = FALSE;
foreach ($possible_files as $name) {
@@ -24,7 +28,7 @@ foreach ($possible_files as $name) {
// No downloadable file found
if ($file === FALSE) {
- site_header("Download not found");
+ site_header("Download not found", $site_config);
$info = "<p>
The file you requested (<strong> " . htmlspecialchars($df, ENT_QUOTES,
"UTF-8") . " </strong>) is not found on
@@ -47,36 +51,30 @@ EOT;
$local_file = $_SERVER['DOCUMENT_ROOT'] . '/distributions/' . $file;
// Print out common header
-site_header('Get Download');
+site_header('Get Download', $site_config);
?>
+<div id="mirrors-container">
<h1>Choose mirror site for download</h1>
<p>
You have chosen to download the following file:
+ <strong class="filename"><?php echo $df ?></strong><br />
</p>
-<div class="center">
-<table border="0" cellpadding="10" cellspacing="1" width="500">
-<tr bgcolor="#cccccc"><td align="center">
-<?php
-echo '<strong>' . $df . '</strong><br />';
-
+<?php
// Try to get filesize to display
$size = @filesize($local_file);
if ($size) {
echo '<small>' . number_format($size, 0, '.', ',') . ' bytes</small><br
/>';
}
?>
-</td></tr></table>
+
+ <div class="mirrors-list">
+<?php print_full_mirror_list($df); ?>
+ </div>
</div>
-<p>
- Please choose the mirror closest to you from which to download the file.
- The current mirror is highlighted in yellow, mirror sites detected to be
- out of date or dysfunctional are not listed for your convenience.
-</p>
-
-<?php
-mirror_list($df);
-site_footer();
+
+<?php site_footer();
+
diff --git a/include/mirrortable.inc b/include/mirrortable.inc
deleted file mode 100644
index babe5aa..0000000
--- a/include/mirrortable.inc
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-/* $Id$ */
-
-/*
- This file includes functions to find close mirrors and list
- the sites in to tables below each other. First is the close
- mirror's table (sites in the same country as the user), second
- is the other mirror's table.
-
- Include this file only if you are going to output a page which
- should list mirror sites.
-*/
-
-// If we have a valid country, and we have at least one mirror
-// in that country, provide some intro text and the list of
-// close mirrors, and other mirrors
-function mirror_list($df = '') {
-
- global $COUNTRY;
-
- // Valid country code present in $COUNTRY
- if (i2c_valid_country()) {
-
- // Count number of active mirrors in this country
- $close = count_mirrors($COUNTRY);
-
- // There is at least one close mirror
- if ($close > 0) {
-
- // Print out close mirrors' table
- $mnum = (($close > 1) ? "mirrors" : "mirror");
- echo "<p>\n We have automatically detected the following $mnum to
be close\n" .
- " to you. If you use a mirror close to you for downloads
and\n" .
- " your usual daily work, you will get better response
times.\n</p>\n";
- mirror_table($df, $COUNTRY);
-
- // Print out table of other mirror sites
- echo "<p>\n Here is the list of all the other sites in case our
detection\n" .
- " did something wrong, or the local mirror sites are
busy.\n</p>\n";
- mirror_table($df, '', $COUNTRY);
- } else { mirror_table($df); }
- } else { mirror_table($df); }
-}
-
-// List mirrors, possibly restricted
-function mirror_table($df = '', $cmatch = '', $cnomatch = '') {
-
- global $MIRRORS, $COUNTRIES, $MYSITE;
-
- // Configure the table based on whether this is a download
- // table or a usual mirror listing table
- if (!empty($df)) {
- $cnf = array(
- 'virtual' => TRUE,
- 'datacols' => 2,
- 'download' => TRUE
- );
- } else {
- $cnf = array(
- 'virtual' => FALSE,
- 'datacols' => 2,
- 'download' => FALSE
- );
- }
-
- echo "<div class=\"center\">\n" .
- " <table border=\"0\" cellpadding=\"3\" class=\"mirrors\">\n";
-
- // Previous mirror country code
- $prevcc = 'aa';
-
- // Go through all mirror sites and print out information about them
- $MURLS = array_keys($MIRRORS);
- foreach ($MURLS as $murl) {
-
- // If the mirror is not all right or it is virtual (not an official
mirror), or if this is an IP, skip it
- if (mirror_status($murl) != MIRROR_OK ||
- (!$cnf['virtual'] && mirror_type($murl) == MIRROR_VIRTUAL) ||
preg_match('/^\d/',$murl)) { continue; }
-
- // Get the country code and check if it is
- // matching the country provided (or does not
- // match the country, which it should not be)
- $country = mirror_country($murl);
- if (!empty($cmatch) && $country != $cmatch) { continue; }
- if (!empty($cnomatch) && $country == $cnomatch) { continue; }
-
- // Print out a country header, if a new country is found
- if ($prevcc != $country && $country != "xx") {
- echo " <tr>\n <th class=\"flag\">";
- if ($country == 'xxx') {
- echo " ";
- } else {
- print_image(
- 'flags/' . strtolower($country) . '.png',
- $COUNTRIES[$country]
- );
- }
- echo "</th>\n" .
- ' <th class="ch" colspan="' . $cnf['datacols'] . '">' .
- $COUNTRIES[$country] . "</th>\n </tr>\n";
- }
-
- // We print out a row for the current mirror
- $thismirror = ($MYSITE == $murl);
-
- // Highlight this mirror if it is the current one
- echo " <tr" . ($thismirror ? " class=\"this\"" : "") . ">\n";
-
- // Print out caret (in bold if current mirror)
- echo ' <td class="caret">';
- print_image(($thismirror ? 'caret-r.gif' : 'caret-rg.gif'));
- echo "</td>\n";
-
- // Get short name of the mirror site
- $mirrorshort = substr($murl, strpos($murl, '//') + 2, -1);
-
- // If this is a download table print out download links
- if ($cnf['download']) {
- // Print out mirror site download link
- echo ' <td>';
- $mirrorname = ($thismirror ? "this" : $mirrorshort);
- print_link("/get/$df/from/$mirrorname/mirror", $mirrorshort);
- echo "</td>\n";
-
- // Print out mirror provider's name
- echo ' <td>' . htmlspecialchars(mirror_provider($murl)) .
"</td>\n";
- }
-
- // If this is a normal table, print out information
- else {
- // Print out mirror site and provider link
- echo " <td><a href=\"$murl\">$mirrorshort</a></td>\n" .
- " <td><a href=\"" .
- mirror_provider_url($murl) . "\">" .
- htmlspecialchars(mirror_provider($murl)) .
- "</a></td>\n";
- }
-
- // End row for this mirror
- echo " </tr>\n";
-
- // Maintain previous country code
- $prevcc = $country;
- }
- echo " </table>\n</div>";
-}
diff --git a/include/site.inc b/include/site.inc
index 31b7e0b..c930534 100644
--- a/include/site.inc
+++ b/include/site.inc
@@ -189,6 +189,72 @@ function mirror_setcookie($name, $content, $exptime)
}
}
+function organise_mirrors($mirrors) {
+ // Lets group the mirrors by country code, for easy output on the page.
+ $retval = array();
+ foreach($mirrors as $key => $mirror) {
+
+ // If the mirror is not all right or it is virtual (not an official
mirror), skip it
+ if (mirror_status($key) != MIRROR_OK || mirror_type($key) ==
MIRROR_VIRTUAL) { continue; }
+
+ if(!isset($grouped_mirrors[$mirror[0]])) {
+ $grouped_mirrors[$mirror[0]] = array();
+ }
+
+ $retval[$mirror[0]][] = array(
+ 'url' => $key,
+ 'country_code' => $mirror[0],
+ 'provider_title' => $mirror[1],
+ 'provider_url' => $mirror[3]
+ );
+
+ }
+ return $retval;
+}
+function print_full_mirror_list($download_file = null) {
+ global $COUNTRIES, $COUNTRY, $MIRRORS;
+
+ $groupped = organise_mirrors($MIRRORS);
+ $close = count_mirrors($COUNTRY);
+ if ($close) {
+ $mnum = (($close > 1) ? "mirrors" : "mirror");
+ echo "<p>We have automatically detected the following $mnum to be
close to you</p>";
+
+ if (isset($groupped[$COUNTRY])) {
+ print_mirror_box($COUNTRIES[$COUNTRY], $COUNTRY,
$groupped[$COUNTRY], $download_file, true);
+ echo "<br />";
+ }
+ }
+ foreach($groupped as $mirrorcode => $country) {
+ print_mirror_box($COUNTRIES[$mirrorcode], $mirrorcode, $country,
$download_file, false);
+ }
+}
+
+function print_mirror_box($countryname, $countrycode, $mirrors, $file = null,
$homecountry = false) {
+?>
+ <div class="mirror <?php echo $homecountry ? "homecountry" : ""?>">
+ <div class="title"><?php echo $countryname; ?>
+ <img alt="<?php echo $countrycode; ?>"
+ height="25"
+ width="45"
+ src="<?php echo $_SERVER['STATIC_ROOT'] .
'/images/flags/beta/' . strtolower($countrycode) . '.png'; ?>">
+ </div>
+ <?php foreach($mirrors as $mirror): ?>
+<?php
+ $url = substr($mirror["url"], strpos($mirror["url"], '//') + 2, -1);
+ if ($file) {
+ $url = "/get/$file/from/$url/mirror";
+ }
+?>
+ <div class="entry">
+ <div class="url"><a href="<?php echo $url; ?>" title="<?php
echo clean($mirror['url']); ?>"><?php echo clean($mirror['url']); ?></a></div>
+ <div class="provider"><a href="<?php echo
$mirror['provider_url']; ?>" title="<?php echo
clean($mirror['provider_title']); ?>"><?php echo
clean($mirror['provider_title']); ?></a></div>
+ </div>
+ <?php endforeach; ?>
+ </div>
+<?php
+}
+
// Use this function to write out proper headers on
// pages where the content should not be publicly cached
function header_nocache()
diff --git a/mirrors.php b/mirrors.php
index f307380..5e0b99c 100644
--- a/mirrors.php
+++ b/mirrors.php
@@ -10,45 +10,7 @@ $header_config = array(
);
site_header("Mirror Sites", $header_config);
-function print_mirror_box($countryname, $countrycode, $country, $homecountry =
false) {
-?>
- <div class="mirror <?php echo $homecountry ? "homecountry" : ""?>">
- <div class="title"><?php echo $countryname; ?>
- <img alt="<?php echo $countrycode; ?>"
- height="25"
- width="45"
- src="<?php echo $_SERVER['STATIC_ROOT'] .
'/images/flags/beta/' . strtolower($countrycode) . '.png'; ?>">
- </div>
- <?php foreach($country as $mirror): ?>
- <div class="entry">
- <div class="url"><a href="<?php echo $mirror['url']; ?>"
title="<?php echo clean($mirror['url']); ?>"><?php echo clean($mirror['url']);
?></a></div>
- <div class="provider"><a href="<?php echo
$mirror['provider_url']; ?>" title="<?php echo
clean($mirror['provider_title']); ?>"><?php echo
clean($mirror['provider_title']); ?></a></div>
- </div>
- <?php endforeach; ?>
- </div>
-<?php
-}
-
-// Lets group the mirrors by country code, for easy output on the page.
-$grouped_mirrors = array();
-foreach($MIRRORS as $key => $mirror) {
-
- // If the mirror is not all right or it is virtual (not an official
mirror), skip it
- if (mirror_status($key) != MIRROR_OK || mirror_type($key) ==
MIRROR_VIRTUAL) { continue; }
-
- if(!isset($grouped_mirrors[$mirror[0]])) {
- $grouped_mirrors[$mirror[0]] = array();
- }
- $grouped_mirrors[$mirror[0]][] = array(
- 'url' => $key,
- 'country_code' => $mirror[0],
- 'provider_title' => $mirror[1],
- 'provider_url' => $mirror[3]
- );
-}
-
-$close = count_mirrors($COUNTRY);
?>
<div id="mirrors-container">
@@ -74,21 +36,7 @@ $close = count_mirrors($COUNTRY);
</div>
<div class="mirrors-list">
-<?php if ($close) {
- $mnum = (($close > 1) ? "mirrors" : "mirror");
- echo "<p>We have automatically detected the following $mnum to be close to
you</p>";
-
- if (isset($grouped_mirrors[$COUNTRY])) {
- print_mirror_box($COUNTRIES[$COUNTRY], $COUNTRY,
$grouped_mirrors[$COUNTRY], 1);
- echo "<br />";
- }
-}
-?>
-
- <?php foreach($grouped_mirrors as $mirrorcode => $country): ?>
- <?php print_mirror_box($COUNTRIES[$mirrorcode], $mirrorcode, $country)
?>
- <?php endforeach ?>
-
+ <?php print_full_mirror_list() ?>
</div>
</div>
diff --git a/styles/mirror.css b/styles/mirror.css
index 0b8ffc8..92efd8f 100644
--- a/styles/mirror.css
+++ b/styles/mirror.css
@@ -45,6 +45,15 @@ div#usernotes a.usernotes-voted:hover {
font-size: 1.7em;
}
+#mirrors-container .filename {
+ display: block;
+ padding: 20px;
+ border: 1px;
+ font-size: 1.4em;
+ background-color: #EEE;
+ text-align: center;
+}
+
#mirrors-container .mirrors-list .mirror {
display: inline-block;
@@ -59,10 +68,12 @@ div#usernotes a.usernotes-voted:hover {
display: block;
margin: 5px auto;
height: 100%;
+ background-color: #9C9;
+ padding: 20px 20px 40px 20px;
}
#mirrors-container .mirrors-list .mirror:hover {
- background-color: #EEE;
+ background-color: #9C9;
}
#mirrors-container .mirrors-list .mirror .url {--
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php