From 437c5df6373cbf14cdaaa927655abe06f78b6d27 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Tue, 2 Jan 2007 23:15:14 +0100 Subject: [PATCH] Add the client code for the WinXP wizard. --- files/pr0n.ico | Bin 0 -> 4286 bytes files/wizard.css | 24 +++ files/wizard.js | 163 ++++++++++++++++++ perl/Sesse/pr0n/Registry.pm | 31 ++++ perl/Sesse/pr0n/Wizard.pm | 45 +++++ perl/Sesse/pr0n/pr0n.pm | 9 + .../bilder.knatten.com/wizard-description | 1 + templates/default/wizard-description | 1 + templates/default/wizard-footer | 54 ++++++ templates/default/wizard-header | 22 +++ 10 files changed, 350 insertions(+) create mode 100644 files/pr0n.ico create mode 100644 files/wizard.css create mode 100644 files/wizard.js create mode 100644 perl/Sesse/pr0n/Registry.pm create mode 100644 perl/Sesse/pr0n/Wizard.pm create mode 100644 templates/bilder.knatten.com/wizard-description create mode 100644 templates/default/wizard-description create mode 100644 templates/default/wizard-footer create mode 100644 templates/default/wizard-header diff --git a/files/pr0n.ico b/files/pr0n.ico new file mode 100644 index 0000000000000000000000000000000000000000..e45b5788c5c59627c47212412157bda69795568c GIT binary patch literal 4286 zcmZQzU<5)11qKkwutI==L5zWcK?8_^LJST-3=+o${{R2aFp9BLxgXa4{9=a&m5;q)Gl|8eC@ zWbu2sg8x6CUPX3XQEETPEg(1icyNX+H&DZVkQ<)%f}#O?9g9z#TK0q7Ku%hqrv2Zp z?j|`5KzfkV6EYiDxFM@SW{=uGyuu$;zM-c9kQj2DBeThge^8!5HUpUrDpy`DO#A<4 zO*yz62C+e6$ZC+;D4X>9lgKawD*ONcA2SJ&]/) || date.length > 100) { + valid = false; + } + if (desc.match(/^\s*$/) || desc.match(/[<>&]/) || desc.length > 100) { + valid = false; + } + } + + // enable/disable the "existing event" form + form.existingevent.disabled = disable_existingevent; + + var extexts = getElementsByClass(document, 'existingeventtext', '*'); + for (i = 0; i < extexts.length; ++i) { + extexts[i].style.color = disable_existingevent ? 'gray' : ''; + } + + // enable/disable the "new event" form + form.neweventid.disabled = disable_newevent; + form.neweventdate.disabled = disable_newevent; + form.neweventdesc.disabled = disable_newevent; + + var netexts = getElementsByClass(document, 'neweventtext', '*'); + for (i = 0; i < netexts.length; ++i) { + netexts[i].style.color = disable_newevent ? 'gray' : ''; + } + + // and finally, the "who" form + var disable_who; + if (form.me.checked) { + disable_who = true; + } else { + disable_who = false; + + var who = form.other.value; + if (who.match(/^\s*$/) || who.match(/[<>&]/) || who.length > 100) { + valid = false; + } + } + + form.other.disabled = disable_who; + + var whotexts = getElementsByClass(document, 'whotext', '*'); + for (i = 0; i < whotexts.length; ++i) { + whotexts[i].style.color = disable_who ? 'gray' : ''; + } + + + window.external.SetWizardButtons(true, valid, false); +} + +function getElementsByClass(node,searchClass,tag) { + var classElements = new Array(); + var els = node.getElementsByTagName(tag); + var elsLen = els.length; + for (i = 0, j = 0; i < elsLen; i++) { + if (els[i].className == searchClass) { + classElements[j] = els[i]; + j++; + } + } + return classElements; +} + +somethingchanged(); diff --git a/perl/Sesse/pr0n/Registry.pm b/perl/Sesse/pr0n/Registry.pm new file mode 100644 index 0000000..14b5b14 --- /dev/null +++ b/perl/Sesse/pr0n/Registry.pm @@ -0,0 +1,31 @@ +# Not related to Apache2::Registry; generates a .reg file for Windows XP to import. + +package Sesse::pr0n::Registry; +use strict; +use warnings; + +use Sesse::pr0n::Common qw(error dberror); +use Apache2::Request; + +sub handler { + my $r = shift; + my $dbh = Sesse::pr0n::Common::get_dbh(); + my $vhost = $r->get_server_name; + chomp (my $desc = Sesse::pr0n::Templates::fetch_template($r, 'wizard-description')); + + $r->content_type("application/octet-stream"); + $r->headers_out->add('Content-disposition' => 'attachment; filename="' . $vhost . '.reg"'); + + $r->print("Windows Registry Editor Version 5.00\r\n\r\n"); + $r->print("[HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Currentversion\\Explorer\\PublishingWizard\\PublishingWizard\\Providers\\$vhost]\r\n"); + $r->print("\"Icon\"=\"http://$vhost/pr0n.ico\"\r\n"); + $r->print("\"DisplayName\"=\"$vhost\"\r\n"); + $r->print("\"Description\"=\"$desc\"\r\n"); + $r->print("\"HREF\"=\"http://$vhost/wizard\"\r\n"); + + return Apache2::Const::OK; +} + +1; + + diff --git a/perl/Sesse/pr0n/Wizard.pm b/perl/Sesse/pr0n/Wizard.pm new file mode 100644 index 0000000..929b7db --- /dev/null +++ b/perl/Sesse/pr0n/Wizard.pm @@ -0,0 +1,45 @@ +package Sesse::pr0n::Wizard; +use strict; +use warnings; + +use Sesse::pr0n::Common qw(error dberror); +use Apache2::Request; + +sub handler { + my $r = shift; + my $apr = Apache2::Request->new($r); + my $dbh = Sesse::pr0n::Common::get_dbh(); + + # Internal? (Ugly?) + if ($r->get_server_name =~ /internal/ || $r->get_server_name =~ /skoyen\.bilder\.knatten\.com/) { + my $user = Sesse::pr0n::Common::check_access($r); + if (!defined($user)) { + return Apache2::Const::OK; + } + } + + # Find events + my $q = $dbh->prepare('SELECT id,date,name FROM events e JOIN last_picture_cache c ON e.id=c.event WHERE vhost=? ORDER BY last_picture DESC') + or dberror($r, "Couldn't list events"); + $q->execute($r->get_server_name) + or dberror($r, "Couldn't get events"); + + $r->content_type('text/html; charset=utf-8'); + $r->print(Sesse::pr0n::Templates::fetch_template($r, 'wizard-header')); + + while (my $ref = $q->fetchrow_hashref()) { + my $id = $ref->{'id'}; + my $date = $ref->{'date'}; + my $name = $ref->{'name'}; + + $r->print(" \n"); + } + + $r->print(Sesse::pr0n::Templates::fetch_template($r, 'wizard-footer')); + + return Apache2::Const::OK; +} + +1; + + diff --git a/perl/Sesse/pr0n/pr0n.pm b/perl/Sesse/pr0n/pr0n.pm index 0175c95..55e64de 100644 --- a/perl/Sesse/pr0n/pr0n.pm +++ b/perl/Sesse/pr0n/pr0n.pm @@ -6,6 +6,8 @@ use Sesse::pr0n::Rotate; use Sesse::pr0n::Select; use Sesse::pr0n::WebDAV; use Sesse::pr0n::NewEvent; +use Sesse::pr0n::Registry; +use Sesse::pr0n::Wizard; package Sesse::pr0n::pr0n; use strict; @@ -27,6 +29,9 @@ sub handler { $uri eq '/previous.png' || $uri eq '/next.png' || $uri eq '/close.png' || + $uri eq '/wizard.js' || + $uri eq '/wizard.css' || + $uri eq '/pr0n.ico' || $uri =~ m#^/usage/([a-zA-Z0-9_.]+)$#) { $uri =~ s#^/##; my $fname = Sesse::pr0n::Common::get_base($r) . 'files/' . $uri; @@ -58,6 +63,10 @@ sub handler { return Sesse::pr0n::Select::handler($r); } elsif ($uri =~ m#^/newevent$#) { return Sesse::pr0n::NewEvent::handler($r); + } elsif ($uri =~ m#^/registry$#) { + return Sesse::pr0n::Registry::handler($r); + } elsif ($uri =~ m#^/wizard$#) { + return Sesse::pr0n::Wizard::handler($r); } elsif ($uri =~ m#^/[a-zA-Z0-9-]+/?$#) { return Sesse::pr0n::Index::handler($r); } elsif ($uri =~ m#^/[a-zA-Z0-9-]+/(\d+x\d+/|original/)?(nobox/)?[a-zA-Z0-9._-]+$#) { diff --git a/templates/bilder.knatten.com/wizard-description b/templates/bilder.knatten.com/wizard-description new file mode 100644 index 0000000..b9e4980 --- /dev/null +++ b/templates/bilder.knatten.com/wizard-description @@ -0,0 +1 @@ +Bilder fra SVURR-arrangementer diff --git a/templates/default/wizard-description b/templates/default/wizard-description new file mode 100644 index 0000000..19244c0 --- /dev/null +++ b/templates/default/wizard-description @@ -0,0 +1 @@ +Personal image gallery diff --git a/templates/default/wizard-footer b/templates/default/wizard-footer new file mode 100644 index 0000000..7cb875e --- /dev/null +++ b/templates/default/wizard-footer @@ -0,0 +1,54 @@ + + + + + + + + + + + ID: +   (e.g. "revy03"; a-zA-Z0-9 and - only, no spaces) + + + + Date: +   (e.g. "27.-31. desember 2003") + + + + Description: +   (e.g. "NyttÃ¥rsrevyen 2003") + + + +

Who took these images?

+ + + + + + + + + + + + + + + + + +
Who:
+ +

After pressing Next, be sure to turn OFF image + resizing; otherwise, you will get an error.

+ + + + + + + diff --git a/templates/default/wizard-header b/templates/default/wizard-header new file mode 100644 index 0000000..a50cc30 --- /dev/null +++ b/templates/default/wizard-header @@ -0,0 +1,22 @@ + + + XP Publish Wizard + + + +
+

What event do you want to upload to?

+ + + + + + + + + +
+ +
Select one: +