diff options
| author | Jules Laplace <carbon@melanarchy.org> | 2013-08-02 17:14:41 -0500 |
|---|---|---|
| committer | Jules Laplace <carbon@melanarchy.org> | 2013-08-02 17:14:41 -0500 |
| commit | e9192b3d42660a5781101df4357d276318151e8a (patch) | |
| tree | 059eb6ace6147cf9559af74ed1ab5e221c80e280 /lib/headers.pm | |
| parent | 79670053c7247d3a49b607960efd284e93f057e5 (diff) | |
cgi-bin & lib
Diffstat (limited to 'lib/headers.pm')
| -rw-r--r-- | lib/headers.pm | 347 |
1 files changed, 347 insertions, 0 deletions
diff --git a/lib/headers.pm b/lib/headers.pm new file mode 100644 index 0000000..dffc84c --- /dev/null +++ b/lib/headers.pm @@ -0,0 +1,347 @@ +#### bucky's cheezy default headers! + +use RGB; + +our $SEEN_HEADER = 0; + +sub header + { + # my ($title, $subtitle, $sticky, $color, $sidetitle) = @_; + my ($args) = @_; + my $title = ref($args) ? $args->{title} : $args; + my $color = exists $args->{color} ? $args->{color} : "plain"; + + if ($SEEN_HEADER == 1) + { + # probably having an error if this has already been called + # already seen content-type so . . . + + print <<ERRORHEADER; +</td></tr></table> +<center> +<table width=100% cellpadding=0 cellspacing=0 border=0 style="padding: 0px margin: 0px;"> +<tr><td align=left style="padding: 0px 4px 0px 4px;"><span class="bigtitle">$title</span></td> +</td></tr></table> +ERRORHEADER + return; + } + $SEEN_HEADER = 1; + print "Content-type: text/html\n\n"; + my $buhtitle = $title; + $buhtitle =~ s/<(([^ >]|\n)*)>//g; + $color = $COLORS{$color} if exists $COLORS{$color}; + my $rgb = RGB->new($color); + $rgb->perturb([4,4,8]); + $rgb->add(nighttime_quotient()); + my $rgb_out = $rgb->hex(); + print <<head; +<html> + <head> + <title>$BUCKY_NAME [$buhtitle]</title> + <link rel="stylesheet" href="/css/bogart.css" type="text/css"> + <link rel="shortcut icon" href="/favicon.ico"> + <style type="text/css"> + <!-- + body { background-color: $rgb_out; } + --> + </style> +head + print qq( <link rel="stylesheet" href="/css/bogart/$color.css">\n) if $color eq "black"; + if ($0 =~ /login/) + { + print qq[<script defer>\n<!-- \nfunction yoink(){document.lf.username.focus();}\n// -->\n</script>\n]; + print qq! </head>\n\n<body onload=yoink()>\n!; + } + else + { + print qq! </head>\n\n<body>\n!; + } + if ($BUCKY_CONFIG->{SNOWBALL_MACHINE} eq "on" && $0 =~ /index/) # && (time % 13) < 7) + { + do_snowfall(); + $title = "ACTIVATE SNOWBALL MACHINE !!!"; + print <<__CSS__; +<style>body {background-color: #fff;}</style> +__CSS__ + } + print <<mid; +<center> +<div style="width: 95%; text-align: left; border: 0px; margin-bottom: 120px;"> +<table cellpadding=0 cellspacing=0 border=0 style="padding: 0px margin: 0px;" width=100%> +mid + + # print the header text. as these variables lie in different quadrants of a table, + # all may not exist, so here's some business logic! + # title sidetitle (nb: there must always be a title) + # subtitle sidesubtitle + print qq(<tr>); + print qq(<td align=left valign=bottom style="padding: 0px 4px 0px 4px;"); + if (! exists $args->{sidetitle} && exists $args->{sidesubtitle}) + { print qq( colspan=2); } + print qq(>); + print qq(<span class="bigtitle">$title</span>); + print qq(</td>); + + if (exists $args->{sidetitle}) + { + print qq(<td align=right valign=bottom style="padding: 0px 4px 0px 0px;"); + if (exists $args->{subtitle} && ! exists $args->{sidesubtitle}) + { print qq( rowspan=2); } + print qq(>); + print $args->{sidetitle}; + print qq(</td>); + } + + if (exists $args->{subtitle} || exists $args->{sidesubtitle}) + { print qq!</tr>\n<tr>!; } + if (exists $args->{subtitle}) + { + print qq!<td align="left" valign="middle" style="padding: 2px 0px 0px 4px;"!; + if (exists $args->{sidetitle} && ! exists $args->{sidesubtitle}) + { print qq( colspan=2); } + print qq(>); + print qq!<small><nobr>! . $args->{subtitle} . qq!</nobr></small></td>!; + } + if (exists $args->{sidesubtitle}) + { + print qq!<td align="right" valign="middle" style="padding: 2px 4px 0px 0px;"!; + if (exists $args->{sidetitle} && ! exists $args->{subtitle}) + { print qq( colspan=2); } + print qq(>); + print qq!<small><nobr>! . $args->{sidesubtitle} . qq!</nobr></small></td>!; + } + print qq!</tr>\n!; + print qq!</table>!; + } + +# sticky_button($args->{sticky}) if (($args->{sticky}) && ($USER != -1)); + +sub menu + { + my ($args) = @_; + my $kw = $args->{keywords}; + my $ftp = $BUCKY_CONFIG->{FTP_ENABLED} && $args->{ftp}; + my $loggedin = ($USER != -1); + my $keyed = (defined($kw) && ($kw->{public} || check_op($kw))); + print <<bigtitle; +<table width=100% cellpadding=0 cellspacing=0 border=0 style="padding: 0px margin: 0px;"> +<tr><td colspan=2 align="center"> +<hr noshade color="$BUCKY_COLOR_HR" style="padding: 0px; margin: 2px;"> +</td></tr> +<tr> +<td align=left nowrap style="padding: 0px 4px 0px 4px;"><small> +bigtitle + + if ( $loggedin ) + { + print qq!<span class="lite"><a href="$BUCKY/index">home</a></span>!; + + print qq! | !; + + # print qq!<a href="/cgi-bin/dump/index">dump</a> |\n! if ($USER->{ulevel} > 1); + + print qq!<a href="$BUCKY/2/search">search</a> | !; + + if ($keyed) + { print qq!<a href="$BUCKY/post/$kw->{keyword}">post</a> |\n!; } + else + { print qq!<a href="$BUCKY/post">post</a> |\n!; } + + if (defined($ftp) && $ftp > 0) + { + if ($ftp < 5) + { print qq(<a href="$BUCKY/import?id=$input->{id}"><b>ftp here</b></a> |\n); } + else + { print qq(<a href="$BUCKY/import?id=$input->{id}">ftp here</a> |\n); } + } + elsif ($ftp == 0) + { print qq(<a href="$BUCKY/import">ftp</a> |\n); } + elsif ($keyed) + { print qq(<a href="$BUCKY/import?keyword=$kw->{keyword}">ftp</a> |\n); } + else + { print qq(<a href="$BUCKY/import">ftp</a> |\n); } + + my $newmsg = count_new_messages($USER->{username}); + if ($newmsg > 0) + { print qq[<b><a href="$BUCKY/inbox"><u>inbox ($newmsg new)</u></a></b> |\n]; } + else + { print qq[<a href="$BUCKY/inbox">inbox</a> |\n]; } + + print qq[<a href="$BUCKY/message">message</a> |\n]; + + print <<bigfoot; +<a href="$BUCKY/profile?c=form">profile</a> | +<a href="$BUCKY/logout">logout</a> +</small></td> +<td align=right nowrap style="padding: 0px 4px 0px 4px;"><small> +$lastlog | <a href="$BUCKY/users">userlist</a> +</small></td></tr> +bigfoot + } + else + { + # else: logged out, only display "login" + print <<bigfeet; +<span class="lite"><a href="$BUCKY/index">home</a></span> +| +<a href="$BUCKY/login">login</a> +</small></td> +<td align=right nowrap style="padding: 0px 4px 0px 4px;"><small> +</small></td></tr> +bigfeet + } + + print <<bighonk; +<tr><td colspan=2 align="center"> +<hr noshade color="$BUCKY_COLOR_HR" style="padding: 0px; margin: 2px;"> +</td></tr> +</table> +bighonk + } + +sub footer + { + print <<foot; +</div> +</center> +foot + + print <<foot; + +</body> +</html> + +foot + } + +sub send_welcome_message + { + my $id = shift; + my $uname = get_username($id); + new_message("$uname.inbox", {sender => "system", recipient => $uname, unread => 1, subject => $BUCKY_WELCOME_SUBJECT, body => $BUCKY_WELCOME_BODY}); + return 1; + } + +sub do_snowfall + { + print <<snowfall; +<script> + +// *********HAPPY WINTER F-A-G-S********* + +// Distributed by http://www.hypergurl.com + +// Set the number of snowflakes (more than 30 - 40 not recommended) +var snowmax=40; + +// Set the colors for the snow. Add as many colors as you like +var snowcolor=new Array("#aaaacc","#ddddFF","#ccccDD") //shitballs +//var snowcolor=new Array("#C8A46E","#A9834F","#5B3714") + +// Set the fonts, that create the snowflakes. Add as many fonts as you like +var snowtype=new Array("Arial Black","Arial Narrow","Times","Comic Sans MS","Georgia","Trebuchet MS") + +// Set the letter that creates your snowflake (recommended:*) +var snowletter="*" + +// Set the speed of sinking (recommended values range from 0.3 to 2) +var sinkspeed=0.6 + +// Set the maximal-size of your snowflaxes +var snowmaxsize=43 + +// Set the minimal-size of your snowflaxes +var snowminsize=16 + +// Set the snowing-zone +// Set 1 for all-over-snowing, set 2 for left-side-snowing +// Set 3 for center-snowing, set 4 for right-side-snowing +var snowingzone=1 + +/////////////////////////////////////////////////////////////////////////// +// CONFIGURATION ENDS HERE +/////////////////////////////////////////////////////////////////////////// + + +// Do not edit below this line +var snow=new Array() +var marginbottom +var marginright +var timer +var i_snow=0 +var x_mv=new Array(); +var crds=new Array(); +var lftrght=new Array(); +var browserinfos=navigator.userAgent +var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/) +var ns6=document.getElementById&&!document.all +var opera=browserinfos.match(/Opera/) +var browserok=ie5||ns6||opera + +function randommaker(range) { + rand=Math.floor(range*Math.random()) + return rand +} + +function initsnow() { + if (ie5 || opera) { + marginbottom = document.body.clientHeight + marginright = document.body.clientWidth + } + else if (ns6) { + marginbottom = window.innerHeight + marginright = window.innerWidth + } + var snowsizerange=snowmaxsize-snowminsize + for (i=0;i<=snowmax;i++) { + crds[i] = 0; + lftrght[i] = Math.random()*15; + x_mv[i] = 0.03 + Math.random()/10; + snow[i]=document.getElementById("s"+i) + snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)] + snow[i].size=randommaker(snowsizerange)+snowminsize + snow[i].style.fontSize=snow[i].size + snow[i].style.color=snowcolor[randommaker(snowcolor.length)] + snow[i].sink=sinkspeed*snow[i].size/5 + if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)} + if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)} + if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4} + if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2} + snow[i].posy=randommaker(6*marginbottom-marginbottom-6*snow[i].size) + snow[i].style.left=snow[i].posx + snow[i].style.top=snow[i].posy + } + movesnow() +} + +function movesnow() { + for (i=0;i<=snowmax;i++) { + crds[i] += x_mv[i]; + snow[i].posy+=snow[i].sink + snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i]); + snow[i].style.top=snow[i].posy + + if (snow[i].posy>=marginbottom-6*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){ + if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)} + if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)} + if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4} + if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2} + snow[i].posy=0 + } + } + var timer=setTimeout("movesnow()",50) +} + +for (i=0;i<=snowmax;i++) { + document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>") +} +if (browserok) { + window.onload=initsnow +} +</script> + +snowfall + + } +1; + |
