Channels: |HiFi|HomeTheatre|ProAudio|DesktopAudio|DVD-A|CarAudio|MP3|NetAudio|MusicBiz|AudioBiz|
AudioWorld Online
Search in:
Thursday, June 13

Today's Audio News

Directory
Add URL
Search
New Listings
Most Popular
Highest Rated

Categories
Top
Pro Audio
HiFi Audio
DVD-Audio
SACD
Car Audio
Music
Internet Audio
Personal Pages

Channels
HiFi Audio
Home Theater
Pro Audio
Home Recording
Car Audio
MP3
Net Audio
AudioBiz
MusicBiz

Forums
Talkback
StraightWire

Media
About AudioWorld
Submit Material
Advertise
Link to Us
Contact Us



Advertise Now!

Audio Site Links
Audio Site Directory

blank place holder
AudioWorld Web Directory 4000 links online!

| Top | New | Popular | Top Rated | Search |
| Add URL | Modify URL | Email Updates | Link to Us |


Car Audio (102)
Manufacturers... Retailers... Resources... E-Zines... Installation...

DVD-Audio (25)
Labels releasing in DVD-Audio and SACD formats, recording resources and reference material about high-resolution multichannel audio.

HiFi Audio (1184)

Home Theater (33)
Publications, manufacturers, retailers, reference material - home theatre, home cinema, whole-house audio, multimedia, A/V.

Internet Audio (150)
MP3... Real Audio... Liquid Audio... Hardware... Software... Files... Downloads...

Music (280)
Recordings... Labels... Downloads... Vinyl... Gold CD... MP3...

MusicBiz (36)
Sites and resources aimed at performing musicians, aspiring and professional artists, the music industry.

Personal Pages (73)

Pro Audio (2454)
Sites and resources of interest primarily to audio professionals, engineers, advanced hobbyists, home recordists

SACD (10)
Information, reference material, labels and publications about the Super Audio CD format.
Search
choice - recommended sites
new - recently added
popular - most visited

Links updated on: 17-Sep-2015 - 16:31:10
Engine by:
Gossamer Threads Inc.

First Time Visitors
Subscribe
Quit


#!/usr/bin/perl # # Master Merry-Go-Round # Version 1.2 # Version 1.0 completed August 14, 2000 # Version 1.2 completed May 28, 2002 # # Tech Support at http://willmaster.com/master/techsupport/ # # Before installing and/or using Master Merry-Go-Round, # you must agree to the complete license agreement # linked from http://willmaster.com/master # # (G) Access your control panel by putting the URL of your script plus # ?admin=YOURPASSWORD # #=============================== # my $Password = 'abroc39'; my $DataDirectory = 'rotatedata'; use strict; my %In = (); my $DBname = 'mmgr'; my $TrackFile = 'mmgTrack'; my $DBextension = '.db'; my @TopLines = qw(abovecontent abovebold aboveitalic aboveunderlined abovelarge abovecenter); my %TopLines = (); { my $i = 0; for(@TopLines) { $TopLines{$_} = $i; $i++; } } my $ME = $0; $ME =~ s/.*\///; sub ForDisplay { my $s = shift; $s =~ s/\/\>/sg; $s =~ s/\"/\"/sg; return $s; } # sub ForDisplay sub GetBottom { return <

More Master Series scripts are available at http://willmaster.com/master/

Copyright 2000 William Bontrager
Copyright 2002 Bontrager Connection, LLC

QQ } # sub GetBottom sub GetTop { return <

M a s t e r   M e r r y - G o - R o u n d

$_[0]

QQ } # sub GetTop sub LockFile { my $tm = time; my $f = "${DataDirectory}/$DBname\.lock"; while((time - $tm) < 12) { last unless -e $f; sleep 2; } open LOCKFILE,">$f"; close LOCKFILE; } # sub LockFile sub UnLockFile { unlink "${DataDirectory}/$DBname\.lock"; return 0; } # sub UnLockFile sub Display { my ($line,$next,$howmany) = (); if(open R,"<${DataDirectory}/$TrackFile$DBextension") { my $line = ; close R; ($next,$howmany) = split /\t/,$line; } LockFile; open R,"<${DataDirectory}/$DBname$DBextension"; my @originalslurp = ; close R; chomp @originalslurp; UnLockFile; unless($howmany > 0) { $howmany = $#originalslurp; $next = 0; } return unless $howmany > 0; $next++; $next = 1 unless $next > 1 and $next <= $howmany; open W,">${DataDirectory}/$TrackFile$DBextension"; print W "$next\t$howmany"; close W; my $filename; ($filename,undef) = split /\t/,$originalslurp[$next],2; print "Content-Type: text/html\n\n"; print '' if $In{page} =~ /^complete$/i; open R,"<${DataDirectory}/$filename"; print ; close R; print '' if $In{page} =~ /^complete$/i; exit; } # sub Display sub Parse { my $buffer; if ($ENV{REQUEST_METHOD} eq 'GET') { $buffer = $ENV{QUERY_STRING}; } else { read(STDIN,$buffer,$ENV{CONTENT_LENGTH}); } my @pairs = split(/&/,$buffer); for(@pairs) { my ($n,$v) = split(/=/,$_); $v =~ tr/+/ /; $v =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $v =~ tr/\t/ /; $In{$n} = $v; } } # sub Parse sub ErrorHTML { my $s = join("\n
  • ",@_); print "Content-Type: text/html\n\n"; print GetTop; print qq~

    Message

    • $s
    ~; print GetBottom; exit; } # sub ErrorHTML sub Overview { print "Content-Type: text/html\n\n"; print GetTop('Overview'); print <
  • You can rotate text ads or any other content, including images, sound, flash -- singly or in combination. You can display any amount of information -- even entire web pages. (It can be used to rotate web pages if you're testing for marketing or other purposes.)

    Every time the script is called, it displays the next content. When it reaches the end, it starts at the beginning again.

    Your content can be displayed on the page with SSI or inside a popup window. To view example code, click the applicable button:

       

    OVERVIEW print GetBottom; exit; } # sub Overview sub ExampleSSI { print "Content-Type: text/html\n\n"; print GetTop('Example SSI'); print <
    Code for implementing Master Merry-Go-Round to display contant as a Server Side Include for seamless integration into a web page.

    On most servers, this requires a .shtml page file name extenstion. Ask your server admin if you're unsure about their requirements.

    The code is presented in two different ways. Use whichever works best for you.

    <HTML>
    <BODY>
    
    
    <!--#exec cgi="/cgi-bin/MasterMerryGoRound.cgi"-->
    
    
    </BODY>
    </HTML>
    

    EXAMPLESSI print GetBottom; exit; } # sub ExampleSSI sub ExamplePopup { print "Content-Type: text/html\n\n"; print GetTop('Example Popup'); print <Code for implementing a Master Merry-Go-Round popup box.

    The code is presented in two different ways. Use whichever works best for you.

    <HTML>
    <HEAD>
    
    
    <script type="text/javascript" language="JavaScript"><!--
    function MMGR(){
    // (1) Specify the height, in pixels, of your popup box.
    var height = '200';
    // (2) Specify the width, in pixels, of your popup box.
    var width = '300';
    // (3) May the popup have scrollbars? 'yes' or 'no'
    var scrollbars = 'yes';
    // (4) Shall the popup be resizable? 'yes' or 'no'
    var resizable = 'yes';
    // (5) Specify the URL of your Master Merry-Go-Round program.
    var url = 'cgi-bin/MasterMerryGoRound.cgi';
    // No other edits required in this function.
    var param = 'height=' + height + ',width=' + width +
    ',scrollbars=' + scrollbars + ',resizable=' + resizable;
    url = url  + '?page=complete';
    mdc = window.open(url,"dc",param);
    } // -->
    </script>
    
    
    </HEAD>
    <BODY>
    
    
    <a href="javascript:MMGR()">Click for popup</a>
    
    
    </BODY>
    </HTML>
    

    EXAMPLEPOPUP print GetBottom; exit; } # sub ExamplePopup sub DisplayControlPanel { unless($In{admin} eq $Password) { print "Location: $ENV{HTTP_REFERER}\n\n"; exit; } my @originalslurp = (); LockFile; if(open R,"<${DataDirectory}/$DBname$DBextension") { @originalslurp = ; close R; chomp @originalslurp; } UnLockFile; my($next,$howmany) = split /\t/,$originalslurp[0],2; print "Content-Type: text/html\n\n"; print GetTop('Main Menu'); print <

    Tech Support at http://willmaster.com/master/techsupport/

     
    TOPTHECONTROLPANELPAGE if($originalslurp[1]) { $next++; $next = 1 if $next > $howmany; print <
    Currently, you have $howmany different content display blocks.

    Content block number $next is next in line for display.

    INSIDE1 for(1..$#originalslurp) { my($filename,$sequence,$filenum,$title) = split /\t/,$originalslurp[$_]; $title = ForDisplay($title); print < INSIDEMID } print <

    INSIDE2 } print GetBottom; exit; } # sub DisplayControlPanel sub UpdateAddContent { ErrorHTML('A title must be specified.') unless $In{title} =~ /\w/; ErrorHTML('Please provide some kind of content.') unless $In{content} =~ /\w/; if($In{content} =~ /\n/) { $In{content} =~ s/\r//gs; } else { $In{content} =~ s/\r/\n/gs; } my @originalslurp = ("0\t0\t0\t0"); LockFile; if(open R,"<${DataDirectory}/$DBname$DBextension") { @originalslurp = ; close R; chomp @originalslurp; } UnLockFile; my($filename,$sequence,$filenum,$title) = split /\t/,$originalslurp[$#originalslurp]; my($next,$howmany) = split /\t/,$originalslurp[0],2; $howmany++; $originalslurp[0] = "$next\t$howmany"; $title = $In{title}; $filenum++; $sequence = @originalslurp; $filename = "$DBname$filenum$DBextension"; push @originalslurp,"$filename\t$sequence\t$filenum\t$title"; LockFile; open W,">${DataDirectory}/$DBname$DBextension"; for(@originalslurp) { print W "$_\n"; } close W; UnLockFile; open W,">${DataDirectory}/$filename"; print W $In{content}; close W; unlink "${DataDirectory}/$TrackFile$DBextension"; } # UpdateAddContent sub AddContent { print "Content-Type: text/html\n\n"; print GetTop('Add Content'); print <

    $_ $title
    Give this content a name you will recognize:

    Put your content here (HTML okay):

    THECONTROLPANELPAGE print GetBottom; exit; } # sub AddContent sub UpdateEditContent { ErrorHTML('A title must be specified.') unless $In{title} =~ /\w/; ErrorHTML('Please provide some kind of content.') unless $In{content} =~ /\w/; if($In{content} =~ /\n/) { $In{content} =~ s/\r//gs; } else { $In{content} =~ s/\r/\n/gs; } LockFile; open R,"<${DataDirectory}/$DBname$DBextension"; my @originalslurp = ; close R; UnLockFile; chomp @originalslurp; my $t; for $t (@originalslurp) { if(index($t,"$In{filename}\t") == 0) { my ($filename,$sequence,$filenum,$title) = split /\t/,$t; $title = $In{title}; $t = join "\t",$filename,$sequence,$filenum,$title; last; } } LockFile; open W,">${DataDirectory}/$DBname$DBextension"; for(@originalslurp) { print W "$_\n"; } close W; UnLockFile; open W,">${DataDirectory}/$In{filename}"; print W $In{content}; close W; unlink "${DataDirectory}/$TrackFile$DBextension"; } # UpdateEditContent sub EditContent { LockFile; open R,"<${DataDirectory}/$DBname$DBextension"; my @originalslurp = ; close R; UnLockFile; chomp @originalslurp; my $filename = "$DBname$In{editcontent}$DBextension"; my($title,$content); for(@originalslurp) { if(index($_,"$filename\t") == 0) { (undef,undef,undef,$title) = split /\t/; last; } } open R,"<${DataDirectory}/$filename"; { my @p = ; close R; $content = join '',@p; } $title = ForDisplay($title); $content = ForDisplay($content); print "Content-Type: text/html\n\n"; print GetTop('Edit Content'); print <

    The content's name for recognition:

    The content (HTML okay):

    THECONTROLPANELPAGE print GetBottom; exit; } # sub EditContent sub UpdateDeleteContent { unlink "${DataDirectory}/$In{filename}"; LockFile; open R,"<${DataDirectory}/$DBname$DBextension"; my @originalslurp = ; close R; UnLockFile; chomp @originalslurp; my($next,$howmany) = split /\t/,$originalslurp[0],2; $howmany--; $originalslurp[0] = "$next\t$howmany"; my $t; for $t (@originalslurp) { if(index($t,"$In{filename}\t") == 0) { $t = ''; last; } } LockFile; open W,">${DataDirectory}/$DBname$DBextension"; for(@originalslurp) { print W "$_\n" if $_; } close W; UnLockFile; unlink "${DataDirectory}/$TrackFile$DBextension"; } # UpdateDeleteContent sub DeleteContent { LockFile; open R,"<${DataDirectory}/$DBname$DBextension"; my @originalslurp = ; close R; UnLockFile; chomp @originalslurp; my $filename = "$DBname$In{deletecontent}$DBextension"; my($title,$content); for(@originalslurp) { if(index($_,"$filename\t") == 0) { (undef,undef,undef,$title) = split /\t/; last; } } open R,"<${DataDirectory}/$filename"; { my @p = ; close R; $content = join '',@p; } print "Content-Type: text/html\n\n"; print GetTop('Delete Content'); print <
    Name:
    $title

    Content:
    $content

    THECONTROLPANELPAGE print GetBottom; exit; } # sub DeleteContent sub ControlPanel { for(keys %In) { if(/\Aedit\_/ and $In{$_}) { (undef,$In{editcontent}) = split /\_/; last; } if(/\Adelete\_/ and $In{$_}) { (undef,$In{deletecontent}) = split /\_/; last; } } CONTROLPANELSWITCHER: { if($In{addcontent}) { AddContent; last CONTROLPANELSWITCHER; } if($In{updateaddcontent}) { UpdateAddContent; last CONTROLPANELSWITCHER; } if($In{editcontent}) { EditContent; last CONTROLPANELSWITCHER; } if($In{updateeditcontent}) { UpdateEditContent; last CONTROLPANELSWITCHER; } if($In{deletecontent}) { DeleteContent; last CONTROLPANELSWITCHER; } if($In{updatedeletecontent}) { UpdateDeleteContent; last CONTROLPANELSWITCHER; } } # CONTROLPANELSWITCHER &DisplayControlPanel; } # sub ControlPanel Parse; Overview if $In{overview}; ExampleSSI if $In{examplessi}; ExamplePopup if $In{examplepopup}; ControlPanel if $In{admin}; Display;



    This page last updated Thu Feb. 9 2023
    Copyright 1996, 2006 AudioWorld Online & Today.Net. All rights reserved.
    Comments, questions, corrections to webmaster@audioworld.com