summaryrefslogtreecommitdiff
path: root/lib/headers.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/headers.pm')
-rw-r--r--lib/headers.pm347
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;
+