From ac8291a5dcbfe9edf53d627be1139fe52708d4ce Mon Sep 17 00:00:00 2001 From: eliott Date: Sat, 22 Sep 2007 12:09:00 -0700 Subject: Changes to bring the main arch site theme to the aur. --- .gitignore | 3 + web/html/css/arch.css | 449 +++++++++++++++++++++++++++++++++++++++++ web/html/images/logo.png | Bin 0 -> 15730 bytes web/html/images/tab.png | Bin 0 -> 107 bytes web/html/images/title.png | Bin 0 -> 6465 bytes web/html/images/title_back.png | Bin 0 -> 168 bytes web/lang/en/pkgfuncs_po.inc | 4 +- web/lib/aur.inc | 166 +++++++-------- web/lib/pkgfuncs.inc | 360 ++++++++++++++------------------- 9 files changed, 676 insertions(+), 306 deletions(-) create mode 100644 .gitignore create mode 100644 web/html/css/arch.css create mode 100644 web/html/images/logo.png create mode 100644 web/html/images/tab.png create mode 100644 web/html/images/title.png create mode 100644 web/html/images/title_back.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..9e572cee --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.swp +web/lib/config.inc + diff --git a/web/html/css/arch.css b/web/html/css/arch.css new file mode 100644 index 00000000..7d8f41f3 --- /dev/null +++ b/web/html/css/arch.css @@ -0,0 +1,449 @@ +* { margin: 0; padding: 0; } +* ul { padding: 20px; } +body { + background: url("/images/title_back.png") repeat-x top left #fbf8f1; + padding: 0 30px; + color: #46494d; + font-family: Bitstream Vera Sans, Lucida Grande, Arial, sans-serif; +} +/* + * Divs + */ +#head_container { + height: 175px; +} +#main_nav ul { + list-style: none; + padding-right: 10px; + padding-top: 48px; +} +#main_nav ul li { + display: block; + float: right; + width: 67px; + height: 20px; + padding-top: 2px; + margin-left: 3px; + background: url("/images/tab.png") repeat-x bottom left #fbf8f1; + text-align: center; + font-size: 13px; +} +#main_nav ul li[class~=selected] { + background: #fbf8f1; +} +#main_nav ul li a { + text-decoration: none; +} +#sub_nav ul { + list-style: none; + padding-right: 10px; + padding-top: 5px; +} +#sub_nav ul li { + display: block; + float: right; + width: 87px; + height: 20px; + padding-top: 2px; + margin-left: 3px; + background: url("/images/tab.png") repeat-x bottom left #fbf8f1; + border: 1px solid #cccccc; + text-align: center; + font-size: 13px; +} +#sub_nav ul li[class~=selected] { + background: #fbf8f1; +} +#sub_nav ul li a { + text-decoration: none; +} + +#lang_sub { + display: block; + position: absolute; + top: 0; + right: 20px; +} +#lang_sub ul { + list-style: none; +} +#lang_sub ul a { + text-decoration: none; + color: #000000; +} +#lang_sub ul a:hover { + color: #FF0000; +} +#lang_sub ul li { + display: block; + float: right; + margin-left: 6px; + font-size: 10px; + text-align: center; +} + +#title { + height: 140px; + float: left; +} +#updates { + font-size: small; + /*position: relative;*/ + top: 0px; + background: #f6efe0; + border: 1px solid #eee4cb; + padding: 10px; +} +#ads { + float: right; +} +#logo { + float: left; + width: 140px; + height: 140px; +} +#titleimg { + float: left; +} +#devlist { + width: 80%; + padding: 10px; + margin-left: auto; + margin-right: auto; + border-top: 1px dashed black; + border-bottom: 1px dashed black; + text-align: center; +} +.clear { + clear: both; + margin: 0; + padding: 0; +} +.right { + float: right; + width: 320px; + padding: 0 10px 10px 0; +} +.left { + padding: 10px; + margin: 0 360px 0 0; +} +.left p { + text-align: justify; + padding-bottom: 10px; +} +.box { + padding: 10px; + background: #e1e3e6; + border: 1px solid #8faecd; +} +.greybox { + padding: 10px; + background: #f6efe0; + border: 1px solid #eee4cb; +} +div.listing { + padding-right: 10px; + border-left: 1px solid #387cbf; +} +.error { + color: #dd0000; + font-size: small; +} +.foot { + clear: both; + text-align: center; + font-size: 0.8em; +} +#search { + float: right; + position: relative; + top: -2em; + font-size: 0.8em; +} +#search input { + background: #f6efe0; + border: 1px solid #eee4cb; +} +.smalltext { + text-align: right; + font-size: x-small; +} +/* + * Headers + */ +h2 { + margin: 20px 0 10px 0; +} +h2.title { + border-bottom: 1px solid #46494d; +} +h3 { + margin-bottom: 10px; +} +h3.title { + text-align: right; + border-bottom: 1px solid #46494d; +} +h4.title { + text-align: left; + border-bottom: 1px solid #46494d; +} +h4.news { + border-bottom: 1px dotted #8faecd; +} +div.listing h4 { + background: #d1d3d6; + border-top: 1px double #387cbf; + padding: 3px; +} +/* + * Paragraphs, Anchors, Images + */ +p { + padding-bottom: 20px; +} +p.news { + text-align: left; + font-size: small; +} +a { + color: #35526f; + font-weight: bold; + text-decoration: underline; +} +.news a { + text-decoration: none; +} +#about { + position: relative; + top: -9px; +} +#about a { + text-decoration: none; +} +.community a { + text-decoration: none; +} +ol { + padding-left: 45px; +} +ul.small { + list-style: none; + font-size: x-small; +} +ul.links { + list-style: none; + font-size: small; + padding: 0px 0px 20px 20px; +} +img { + border: none; +} +hr { + border: none; + border-top: 1px solid #46494d; +} +.greybox input, button, textarea, select { + background: #e1e3e6; + border: 1px solid #8faecd; +} +.box input, button { + padding: 2px; + background: #c1c3f6; + font-size: x-small; + border: 1px solid #8faecd; +} +button#f_trigger { + background: #e1e3e6; +} +/* + * Table stuff + */ +table.center { + margin-left: auto; + margin-right: auto; +} +table#releases { + font-size: small; + width: 100%; +} +table#releases td { + padding-right: 20px; +} +table#repolinks { + font-size: small; + width: 100%; +} +table#repolinks td { + text-align: right; +} +table#repolinks th { + text-align: left; +} +table#art { + text-align: center; + margin-left: auto; + margin-right: auto; +} +.devpic { + vertical-align: top; + padding-right: 15px; +} +table.deventry { + padding-bottom: 25px; +} +.deventry th { + text-align: left; + vertical-align: top; + white-space: nowrap; +} +.deventry td { + border-bottom: 1px solid black; + width: 100%; +} +table.results { + padding: 0px; + border-collapse: collapse; +} +.results th { + background: #e1e3e6; + border-bottom: 1px solid #46494d; + border-top: 1px solid #46494d; + text-align: left; + padding-top: 0px; + padding-bottom: 0px; + padding-right: 5px; +} +.results th>a { + text-decoration: none; + color: #46494d; +} +.results td { + padding-right: 5px; + vertical-align: top; + font-size: 0.8em; +} +.listing th { + background: #d1d3d6; + border-left: 1px solid #387cbf; + font-size: small; + vertical-align: top; + text-align: left; + padding: 2px; +} +.listing td { + font-size: small; + padding: 2px; +} +blockquote.code { + background: #c1c3f6; + border: 1px solid #8faecd; + margin-left: auto; + margin-right: auto; + white-space: nowrap; + padding: 5px; + font-family: Courier, Courier New, Monospace; +} +/* + * Wiki Styles + */ +h1.wiki { + border-bottom: 1px solid #46494d; +} +div.wikifoot_l { + font-size: x-small; + text-align: left; + padding-top: 25px; +} +div.wikifoot_r { + font-size: x-small; + text-align: right; + float: right; + padding-top: 25px; +} +.wikibody { + padding-top: 15px; +} +.wikibody ol { + padding-left: 28px; + padding-top: 0px; +} +.wikibody ul { + padding-left: 25px; + padding-top: 0px; +} +.wikibody dd { + padding-left: 30px; +} +.wikibody pre code { + background: #c1c3f6; + border: 1px solid #8faecd; + margin-left: auto; + margin-right: auto; + white-space: nowrap; + padding: 5px; + font-family: Courier, Courier New, Monospace; +} +.wikibody blockquote { + padding-left: 30px; +} +.wikibody td { + padding: 5px; + border: 1px solid black; +} + +/* Used by Django's FormWrappers */ +textarea.vLargeTextField { + width: 450px; + height: 250px; +} +.pkgr2 { + background-color: #eee4cb; +} +#maincontent { + width: 100%; + text-align: left; +} +#maincontent > table { + width: 90%; + margin-left: 5%; + margin-right: 5%; +} +.pkgbox { + width: 90%; + margin-left: 5%; + margin-right: 5%; + background-color: #ffffff; + border-width: 2px; + border-color: #dddddd; + border-style: solid; + text-align: left; + padding: 3px; +} +.pkgboxtitle { + border-width: 2px; + border-style: solid; + border-color: #dddddd; + border-top-width: 1px; + border-top-color: #ffffff; + border-left-width: 1px; + border-left-color: #ffffff; + background-color: #f1f2f4; + text-align: right; + padding-top: 2px; + padding-bottom: 2px; + padding-right: 10px; +} +.pkgboxbody, .pkgboxbody-comment { + padding: 10px; +} +.pkgboxbody input { + margin-right: 10px; +} + +.pkgboxbody-comment > table { + border-collapse: separate; + border-spacing: 0 15px; +} + diff --git a/web/html/images/logo.png b/web/html/images/logo.png new file mode 100644 index 00000000..b2b6d863 Binary files /dev/null and b/web/html/images/logo.png differ diff --git a/web/html/images/tab.png b/web/html/images/tab.png new file mode 100644 index 00000000..56d2e617 Binary files /dev/null and b/web/html/images/tab.png differ diff --git a/web/html/images/title.png b/web/html/images/title.png new file mode 100644 index 00000000..e16971a1 Binary files /dev/null and b/web/html/images/title.png differ diff --git a/web/html/images/title_back.png b/web/html/images/title_back.png new file mode 100644 index 00000000..95c98d7a Binary files /dev/null and b/web/html/images/title_back.png differ diff --git a/web/lang/en/pkgfuncs_po.inc b/web/lang/en/pkgfuncs_po.inc index 220cdb37..dcd46f4f 100644 --- a/web/lang/en/pkgfuncs_po.inc +++ b/web/lang/en/pkgfuncs_po.inc @@ -31,7 +31,7 @@ $_t["en"]["Error retrieving package details."] = "Error retrieving package detai $_t["en"]["Description"] = "Description"; -$_t["en"]["My Packages"] = "My Packages"; +$_t["en"]["My Packages"] = "My Pkgs"; $_t["en"]["Keywords"] = "Keywords"; @@ -151,4 +151,4 @@ $_t["en"]["License"] = "License"; $_t["en"]["unknown"] = "unknown"; -?> \ No newline at end of file +?> diff --git a/web/lib/aur.inc b/web/lib/aur.inc index cce53848..ce662f7b 100644 --- a/web/lib/aur.inc +++ b/web/lib/aur.inc @@ -359,100 +359,77 @@ function html_header() { global $_SERVER; global $_COOKIE; global $LANG; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "AUR (".$LANG.")\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print " \n"; - print " \n"; - print " \n"; - print " \n"; - print " \n"; - print " \n"; - - # Menu items - # - print " \n"; - print " "; - print " "; - print " \n"; - print " \n"; - print " \n"; - print "
"; - print __("%s: %sAn ArchLinux project%s", array("AUR", "", "")); - print "
\n"; - print " \n"; - print " \n"; - print " \n"; - print " \n"; - print " \n"; - print "
"; - - # XXX Can I scale a PNG like this? - # - print ""; - print "ArchLinux User-community Repository
"; - - # XXX CSS help - a:link, a:visited, etc are defined, but I don't want to - # use the defaults. Is this the way to override them? - # - print "English "; - print "Polski "; - print "Italiano "; - print "Català "; - print "Português "; - print "Español "; - print "Deutsch "; - print "Français"; - print "Русский"; - print "
\n"; - print "
\n"; - print "  
\n"; - print "\n\n"; - - return; + echo '
  • '.__("Discussion")."
  • \n"; + echo '
  • '.__("Bugs")."
  • \n"; + echo '
  • '.__("Packages")."
  • \n"; + echo '
  • '.__("Accounts")."
  • \n"; + echo '
  • AUR-'.__("Home")."
  • \n"; + echo " \n"; + echo " \n"; + echo '
    '."\n"; + echo "
      \n"; + echo "
    • RU
    • \n"; + echo "
    • FR
    • \n"; + echo "
    • DE
    • \n"; + echo "
    • ES
    • \n"; + echo "
    • PT
    • \n"; + echo "
    • CA
    • \n"; + echo "
    • IT
    • \n"; + echo "
    • PL
    • \n"; + echo "
    • EN
    • \n"; + echo "
    • Lang:
    • \n"; + echo "
    \n"; + echo "
    \n"; + echo "\n"; + echo "
    \n"; + echo "\n\n"; + return; } @@ -461,9 +438,6 @@ function html_header() { function html_footer($ver="") { print "\n\n\n"; print "
    \n"; - print "
    \n"; if ($ver) { print "

    \n"; print "\n"; @@ -471,7 +445,7 @@ function html_footer($ver="") { print "
    \n"; print "

    \n"; } - print "
    \n"; + print "\n"; print "\n"; return; } diff --git a/web/lib/pkgfuncs.inc b/web/lib/pkgfuncs.inc index b9ad0d4a..de1dc5fa 100644 --- a/web/lib/pkgfuncs.inc +++ b/web/lib/pkgfuncs.inc @@ -268,36 +268,19 @@ function package_details($id=0, $SID="") { } else { # print out package details - # - print "
    \n"; - print "
    \n"; - print "\n"; - print "\n"; - print " \n"; - print "\n"; - print "\n"; - print "
    "; - print "".__("Package Details")."
    \n"; - print "
    \n"; - print "\n"; - print "\n"; - print " \n"; - print "\n"; - print "\n"; - print " \n"; - print "\n"; - print "\n"; - print " \n"; - print "\n"; - print "\n"; - print " "; - print "\n"; - - print "\n"; - print " \n"; + echo " \n"; + echo "
    "; - print $row["Name"] . " " . $row["Version"]."
    "; - print "".$row["URL"]."
    ".$row["Description"]; - print "
    "; + # + echo "
    \n"; + echo "
    ".__("Package Details")."
    \n"; + echo "
    \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " "; - - print "\n"; - print "\n"; - print " \n"; + echo " "; + echo ""; + echo $maintainer . ""; } else { - print $maintainer . ""; + echo $maintainer . ""; } } else { $maintainer = "None"; - print $maintainer . ""; + echo $maintainer . ""; } - print "\n"; - - print "\n"; - print " "; - print "\n"; + echo " \n"; + echo " \n"; # In case of wanting to put a custom message $msg = __("unknown"); $license = $row["License"] == "" ? $msg : $row["License"]; - print "\n"; - print " \n"; - print "\n"; - - print "\n"; - print " "; - print "\n"; + echo " \n"; + echo " \n"; # Print the timestamps for last updates $updated_time = ($row["ModifiedTS"] == 0) ? "(unknown)" : gmdate("r", intval($row["ModifiedTS"])); $submitted_time = ($row["SubmittedTS"] == 0) ? "(unknown)" : gmdate("r", intval($row["SubmittedTS"])); - print "\n"; - print " \n"; - print "\n"; - - print "\n"; - print " "; - print "\n"; - print "\n"; - print " \n"; + echo " \n"; + echo " "; + echo "".__("Tarball")." :: ".__("Files")." :: PKGBUILD"; } elseif ($row["LocationID"] == 3) { - print "CVS"; + echo "CVS"; } - print "\n"; + echo "\n"; if ($row["LocationID"] == 2) { - print "\n"; - print " "; + echo "".__("The above files have been verified (by %s) and are safe to use.", array(username_from_id($row["VerifiedBy"]))).""; } else { - print "".__("Be careful! The above files may contain malicious code that can damage your system.").""; - } + echo "".__("Be careful! The above files may contain malicious code that can damage your system.").""; + } + echo " \n"; } - print "\n"; - print " "; - print "\n"; - print "\n"; - print " \n"; - print "\n"; + echo "\n"; + echo "
    "; + echo $row["Name"] . " " . $row["Version"]."
    "; + echo "".$row["URL"]."
    ".$row["Description"]; + echo "
    "; if ($row["Location"] == "unsupported" and ( uid_from_sid($SID) == $row["MaintainerUID"] or (account_from_sid($SID) == "Developer" or @@ -309,87 +292,65 @@ function package_details($id=0, $SID="") { } else { $edit_cat = $row["Category"]; } - print $row["Location"]." :: ".$edit_cat."
    ".__("Maintainer").": "; + echo $row["Location"]." :: ".$edit_cat."
    ".__("Maintainer").": "; if ($row["MaintainerUID"]) { $maintainer = username_from_id($row["MaintainerUID"]); if ($SID) { - print ""; - print $maintainer . "
    ".__("Votes").": "; - print $row["NumVotes"] . "
    ".__("Votes").": "; + echo $row["NumVotes"] . "

    ".__("License").": ".$license; - print "

    ".__("License").": ".$license; + echo "
    "; - print ""; - print __("Last Updated").": ".$updated_time."
    "; - print __("First Submitted").": ".$submitted_time; - print "
    "; - print "
    "; + echo "
    "; + echo __("Last Updated").": ".$updated_time."
    "; + echo __("First Submitted").": ".$submitted_time."
    "; if ($row["LocationID"] == 2) { global $URL_DIR; $urlpath = $URL_DIR.$row["Name"]."/".$row["Name"]; - print "".__("Tarball")." :: ".__("Files")." :: PKGBUILD
    "; + echo "
    "; if ($row["Safe"]) { - print "".__("The above files have been verified (by %s) and are safe to use.", array(username_from_id($row["VerifiedBy"])))."
    "; - print ""; - print "\n"; - print "\n"; + echo " \n"; + echo " "; - - print " \n"; + echo " "; - print "\n"; - print "\n"; - print " \n"; - print "
    "; - print __("Dependencies")."
    "; + echo "
    \n"; + echo " \n"; + echo " \n"; + echo " \n"; - print "
    "; + echo __("Dependencies")."
    "; $deps = package_dependencies($row["ID"]); # $deps[0] = array('id','name', 'dummy'); while (list($k, $darr) = each($deps)) { $url = "".$darr[1].$darr[3]."
    \n"; - else print "".$darr[1].$darr[3]."
    \n"; + if ($darr[2] == 0) echo $url."'>".$darr[1].$darr[3]."
    \n"; + else echo "".$darr[1].$darr[3]."
    \n"; } - print "
    "; - print ""; - print "\n"; - print "\n"; + echo "
    "; - print __("Sources")."
    "; + echo "
    \n"; + echo "
    \n"; + echo " \n"; + echo " \n"; + echo " \n"; - print "
    "; + echo __("Sources")."
    "; $sources = package_sources($row["ID"]); # $sources[0] = 'src'; while (list($k, $src) = each($sources)) { $parsed_url = parse_url($src); if ($parsed_url['scheme']) { //It is an external source - print "".$src."
    \n"; + echo "".$src."
    \n"; } else { //It is presumably an internal source if ($row["LocationID"] == 2) { - print "".$src."
    \n"; + echo "".$src."
    \n"; } elseif ($row["LocationID"] == 3) { - print ""; - print $src."
    \n"; + echo ""; + echo $src."
    \n"; } } } - print "
    "; - print "
    \n"; - print "\n"; - print "
    \n"; + echo "
    \n"; + echo " \n"; + echo "\n\n"; + echo "
    \n\n"; - print "

    \n"; # Actions Bar # if ($SID) { - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "
    ".__("Actions")."
    \n"; - print "\n"; - print "\n"; + echo "
    \n"; + echo "
    ".__("Actions")."
    \n"; + echo "
    \n"; + echo " \n"; + echo " \n"; + echo " \n"; # Voting Button # $q = "SELECT * FROM PackageVotes WHERE UsersID = ".uid_from_sid($SID); $q.= " AND PackageID = ".$row["ID"]; if (!mysql_num_rows(db_query($q, $dbh))) { - print ""; + echo " "; } else { - print ""; + echo ""; } # Comment Nofify Button # $q = "SELECT * FROM CommentNotify WHERE UserID = ".uid_from_sid($SID); $q.= " AND PkgID = ".$row["ID"]; if (!mysql_num_rows(db_query($q, $dbh))) { - print ""; + echo ""; } else { - print ""; + echo ""; } # Flag Safe Button # - if ($row["LocationID"] == 2 && (account_from_sid($SID) == "Trusted User" || account_from_sid($SID) == "Developer")) - { - if ($row["Safe"] == 0) - { - print ""; - } - else - { - print ""; + if ($row["LocationID"] == 2 && (account_from_sid($SID) == "Trusted User" || account_from_sid($SID) == "Developer")) { + if ($row["Safe"] == 0) { + echo ""; + } else { + echo ""; } + } + + if ($row["OutOfDate"] == 0) { + echo "\n"; + } else { + echo "\n"; } - if ($row["OutOfDate"] == 0) - { - print "\n"; - } - else - { - print "\n"; - } - if ($row["AURMaintainerUID"] == 0 && $row["MaintainerUID"] == 0) - { - print "\n"; - } + if ($row["AURMaintainerUID"] == 0 && $row["MaintainerUID"] == 0) { + echo "\n"; + } - if ($row["MaintainerUID"] == uid_from_sid($SID)) - { - print "\n"; - } + if ($row["MaintainerUID"] == uid_from_sid($SID)) { + echo "\n"; + } - if ($row["MaintainerUID"] == uid_from_sid($SID) || - account_from_sid($SID) == "Trusted User" || - account_from_sid($SID) == "Developer") - { - print "\n"; - } + if ($row["MaintainerUID"] == uid_from_sid($SID) || + account_from_sid($SID) == "Trusted User" || + account_from_sid($SID) == "Developer") { + echo "\n"; + } - print "

    \n"; + echo " \n"; + echo " \n"; + echo "\n"; + echo "\n
    \n\n"; } # Comments # - print "\n"; - print "\n"; - print "\n"; - print "
    ".__("Comments")."
    "; - - print "\n"; + echo "
    \n"; + echo "
    ".__("Comments")."
    \n"; + echo "
    \n"; + echo "
    \n"; $comments = package_comments($row["ID"]); if (!empty($comments)) { while (list($indx, $carr) = each($comments)) { - print "\n"; - print " \n"; - - print "\n"; - print " \n"; + echo " \n"; } } - print "\n"; - print " \n"; - print "\n"; - print " "; - print "\n"; - - print "
    "; - print "
    "; - print ""; - print "\n"; + echo " \n"; - print "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
    "; + + echo "
    \n"; + echo " \n"; + echo " \n"; + echo " \n"; - print "
    "; if (canDeleteComment($carr["ID"], account_from_sid($SID), $SID)) { $durl = ""; - print $durl . "  "; + echo $durl . "  "; } if ($SID) { - print __("Comment by: %h%s%h on %h%s%h", + echo __("Comment by: %h%s%h on %h%s%h", array("",$carr["UserName"],"", "",gmdate("Ymd [H:i:s]",$carr["CommentTS"]),"")); } else { - print __("Comment by: %h%s%h on %h%s%h", + echo __("Comment by: %h%s%h on %h%s%h", array("",$carr["UserName"],"", "",gmdate("Ymd [H:i:s]",$carr["CommentTS"]),"")); } - print ""; - print "
    "; - print "\n"; - print str_replace("\n", "
    ", str_replace('"',""", htmlspecialchars(strip_tags(stripslashes($carr["Comments"]))))); - print "
    \n"; - print "
    \n"; - print "
    "; + echo "\n"; + echo str_replace("\n", "
    ", str_replace('"',""", htmlspecialchars(strip_tags(stripslashes($carr["Comments"]))))); + echo "
    \n"; + echo "
    "; - print "
    "; - print "
    \n"; - print "\n"; - print ""; - print "
    \n"; - print "
    \n"; - - - print "
    \n"; + echo " \n"; + echo " \n"; + echo "
    \n"; + echo " \n"; + echo " \n"; + echo "
    \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "\n"; } } -- cgit v1.2.3-24-g4f1b