return NOT_FOUND unless( $ok );
my $prettyAddr = encode( $address->pretty() );
genHtmlHead( $req, "$prettyAddr - add new item", undef );
- print "<div class='top'>\n";
- print "<h1>$prettyAddr - add new item</h1>\n";
- genLocMenu( $req, $args, [ logItem( $auth ), $address->canDiscuss() ? [ 'Discuss', 'newhistory' ] : (), [ 'Notifications', 'notifications' ], [ 'Help', 'help', 'newitem' ], [ 'ID syntax', 'help', $address->helpName() ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, $address, "$prettyAddr - add new item", [ $address->canDiscuss() ? [ 'Discuss', 'newhistory' ] : (), [ 'Help', 'help', 'newitem' ], [ 'ID syntax', 'help', $address->helpName() ] ], [ logItem( $auth ), [ 'Notifications', 'notifications' ] ] );
print "<div class='error'>$error</div>\n" if( defined $error );
print "<form name='newitem' id='newitem' method='POST' action='".( $args->{'full_links'} ? 'http://'.$req->hostname().$req->uri().buildExcept( 'action', $args ).'?action=newitem' : '' )."'>\n<table>";
genFormEx( [ [ 'input', 'Id:', 'text', 'id', 'maxlength="50"' ],
my( $result, $comName ) = $tables->submitItem( $data, $auth );
if( $result eq 'exists' ) {
genHtmlHead( $req, 'ID collision', undef );
- print "<div class='top'>\n";
- print '<h1>ID collision</h1>';
my $addr = PciIds::Address::new( $req->uri() );
- genCustomMenu( $req, $addr, $args, [ logItem( $auth ), [ 'Add other item', 'newitem' ], $addr->canDiscuss() ? [ 'Discuss', 'newhistory' ] : () ] );
- genPath( $req, $data->{'address'}, 1 );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, $addr, 'ID collision', [ [ 'Add other item', 'newitem' ], $addr->canDiscuss() ? [ 'Discuss', 'newhistory' ] : () ], [ logItem( $auth ) ] );
print '<p>Sorry, this ID already exists.';
genHtmlTail();
return OK;
return NOT_FOUND unless( $ok );
my $prettyAddr = encode( $address->pretty() );
genHtmlHead( $req, "$prettyAddr - discuss", undef );
- print "<div class='top'>\n";
- print "<h1>$prettyAddr - discuss</h1>\n";
- genLocMenu( $req, $args, [ logItem( $auth ), $address->canAddItem() ? [ 'Add item', 'newitem' ] : (), [ 'Notifications', 'notifications' ], [ 'Help', 'help', 'newhistory' ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, $address, "$prettyAddr - discuss", [ $address->canAddItem() ? [ 'Add item', 'newitem' ] : (), [ 'Help', 'help', 'newhistory' ] ], [ logItem( $auth ), [ 'Notifications', 'notifications' ] ] );
print "<div class='error'>$error</div>\n" if( defined $error );
print "<form name='newhistory' id='newhistory' method='POST' action='".( $args->{'full_links'} ? 'http://'.$req->hostname().$req->uri().buildExcept( 'action', $args ).'?action=newhistory' : '' )."'>\n<table>";
genFormEx( [ [ 'textarea', 'Text:', undef, 'text', 'rows="5" cols="50"' ],
sub genRegisterForm( $$$$ ) {
my( $req, $args, $error, $values ) = @_;
genHtmlHead( $req, 'Register a new user', undef );
- print "<div class='top'>\n";
- print '<h1>Register a new user</h1>';
- genLocMenu( $req, $args, [ [ 'Log in', 'login' ], [ 'Help', 'help', 'account' ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'Register a new user', [ [ 'Help', 'help', 'account' ] ], [ [ 'Log in', 'login' ] ] );
print '<div class="error">'.$error.'</div>' if( defined $error );
print '<form name="register" id="register" method="POST" action="">
<table>';
"\nThank you\n".
"\n(This is an autogenerated email, do not respond to it)" );
genHtmlHead( $req, 'Registration email sent', undef );
- print "<div class='top'>\n";
- print "<h1>Registration email sent</h1>\n";
- genLocMenu( $req, $args, [ [ 'Log in', 'login' ], [ 'Help', 'help', 'account' ] ] );
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'Registration email sent', [ [ 'Help', 'help', 'account' ] ], [ [ 'Log in', 'login' ] ] );
print "<div class='clear'></div></div>\n";
print '<p>
An email containing further information has been sent to you.
sub genConfirmForm( $$$$ ) {
my( $req, $args, $error, $values ) = @_;
genHtmlHead( $req, 'Confirm registration', undef );
- print "<div class='top'>\n";
- print '<h1>Confirm registration</h1>';
- genLocMenu( $req, $args, [ [ 'Register', 'register' ], [ 'Help', 'help', 'account' ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'Confirm registration', [ [ 'Help', 'help', 'account' ] ], [ [ 'Register', 'register' ] ] );
print '<div class="error">'.$error.'</div>' if( defined $error );
print '<p>Email address: '.encode( $values->{'email'} );
print '<form name="register-confirm" id="register-confirm" method="POST" action="">';
sub usedAddress( $$ ) {
my( $req, $args ) = @_;
genHtmlHead( $req, 'Used address', undef );
- print "<div class='top'>\n";
- print "<h1>Used address</h1>\n";
- genLocMenu( $req, $args, [ [ 'Log in', 'login' ], [ 'Reset password', 'respass' ], [ 'Register', 'register' ], [ 'Help', 'help', 'account' ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'Used address', [ [ 'Help', 'help', 'account' ] ], [ [ 'Log in', 'login' ], [ 'Reset password', 'respass' ], [ 'Register', 'register' ] ] );
print '<div class="error">
<p>
An account for this address is already registered.
return OK;
}
genHtmlHead( $req, 'Registered', undef );
- print "<div class='top'>\n";
- print "<h1>Registered</h1>\n";
- genLocMenu( $req, $args, [ [ 'Log in', 'login' ], [ 'Help', 'help', 'account' ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'Registered', [ [ 'Help', 'help', 'account' ] ], [ [ 'Log in', 'login' ] ] );
print '<p>
You have registered successfully.';
genHtmlTail();
sub genLoginForm( $$$$ ) {
my( $req, $args, $error, $values ) = @_;
$req->headers_out->add( 'Set-Cookie' => new CGI::Cookie( -name => 'cookie-test', -value => 1 ) );
- genHtmlHead( $req, 'Login', undef );
- print "<div class='top'>\n";
- print '<h1>Login</h1>';
- genLocMenu( $req, $args, [ [ 'Register', 'register' ], [ 'Reset password', 'respass' ], [ 'Help', 'help', 'account' ] ] );
- print "<div class='clear'></div></div>\n";
+ genHtmlHead( $req, 'Log in', undef );
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'Log in', [ [ 'Help', 'help', 'account' ] ], [ [ 'Register', 'register' ], [ 'Reset password', 'respass' ] ] );
print '<div class="error"><p>'.$error.'</div>' if( defined $error );
print '<form name="login" id="login" method="POST" action="'.setAddrPrefix( $req->uri(), 'mods' ).buildExcept( 'action', $args ).'?action=login"><table>';
genForm( [ [ 'Login name or email:', 'text', 'login', 'maxlength="255"' ],
sub genResetPasswdForm( $$$$ ) {
my( $req, $args, $error, $values ) = @_;
genHtmlHead( $req, 'Reset password', undef );
- print "<div class='top'>\n";
- print "<h1>Reset password</h1>\n";
- genLocMenu( $req, $args, [ [ 'Log in', 'login' ], [ 'Register', 'register' ], [ 'Help', 'help', 'account' ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'Reset password', [ [ 'Help', 'help', 'account' ] ], [ [ 'Log in', 'login' ], [ 'Register', 'register' ] ] );
print "<p>If you forgot your password (or didn't create one yet), you can reset it to a new value here.\n";
print "Provide your email address here and further instructions will be sent to you.\n";
print '<div class="error">'.$error.'</div>' if( defined $error );
"\n\nThank you\n".
"\n(This is an autogenerated email, do not respond to it)" );
genHtmlHead( $req, 'Reset password', undef );
- print "<div class='top'>\n";
- print "<h1>Reset password</h1>\n";
- genLocMenu( $req, $args, [ [ 'Log in', 'login' ], [ 'Help', 'help', 'account' ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'Reset password', [ [ 'Help', 'help', 'account' ] ], [ [ 'Log in', 'login' ] ] );
print "<p>An email with information has been sent to your address.\n";
genHtmlTail();
return OK;
sub genResetPasswdConfigForm( $$$$$$ ) {
my( $req, $args, $error, $values, $email, $hash ) = @_;
genHtmlHead( $req, 'Reset password', undef );
- print "<div class='top'>\n";
- print "<h1>Reset password</h1>\n";
- genLocMenu( $req, $args, [ [ 'Log in', 'login' ], [ 'Help', 'help', 'account' ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'Reset password', [ [ 'Help', 'help', 'account' ] ], [ [ 'Log in', 'login' ] ] );
print '<div class="error">'.$error.'</div>' if( defined $error );
print "<p>You can enter new password here:\n";
print '<form name="respass-confirm" id="respass-confirm" method="POST" action="">
if( defined( $myHash ) && ( $myHash eq $hash ) ) {
changePasswd( $tables, $id, $data->{'password'}, $email );
genHtmlHead( $req, 'Reset password', undef );
- print "<div class='top'>\n";
- print "<h1>Reset password</h1>\n";
- genLocMenu( $req, $args, [ [ 'Log in', 'login' ], [ 'Help', 'help', 'account' ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'Reset password', [ [ 'Help', 'help', 'account' ] ], [ [ 'Log in', 'login' ] ] );
print "<p>Your password was successfuly changed.\n";
genHtmlTail();
return OK;
delete $data->{'current_password'};
delete $data->{'confirm_password'};
delete $data->{'password'};
- print "<div class='top'>\n";
- print "<h1>User profile</h1>\n";
- genLocMenu( $req, $args, [ logItem( $auth ), [ 'Notifications', 'notifications' ], [ 'Help', 'help', 'profile' ] ] );
- print "<div class='clear'></div></div>\n";
+ genCustomHead( $req, $args, PciIds::Address::new( $req->uri() ), 'User profile', [ [ 'Help', 'help', 'profile' ] ], [ logItem( $auth ), [ 'Notifications', 'notifications' ] ] );
print '<div class="error"><p>'.$error.'</div>' if defined $error;
print "<div class='info'><p>$info</div>\n" if defined $info;
print '<form name="profile" id="profile" method="POST" action=""><table>';
use Apache2::Const qw(:common :http);
use APR::Table;
-our @EXPORT = qw(&genHtmlHead &htmlDiv &genHtmlTail &genTableHead &genTableTail &parseArgs &buildExcept &buildArgs &genMenu &genCustomMenu &encode &setAddrPrefix &HTTPRedirect &genPath &logItem &genLocMenu);
+our @EXPORT = qw(&genHtmlHead &htmlDiv &genHtmlTail &genTableHead &genTableTail &parseArgs &buildExcept &buildArgs &genMenu &genCustomMenu &encode &setAddrPrefix &HTTPRedirect &genPath &logItem &genLocMenu &genCustomHead);
sub encode( $ ) {
return encode_entities( shift, "\"'&<>" );
} else {
$url = '/read/?action=';
}
- print "<div class='menu'>\n<ul>\n";
+ print "<ul>\n";
foreach( @{$list} ) {
my( $label, $action, $param ) = @{$_};
my $prefix = '/mods';
$suffix = '?help='.$param if( $action eq 'help' );
item( 'http://'.$req->hostname().$prefix.$url.$action.$suffix, $label );
}
- print "</ul></div>\n";
+ print "</ul>\n";
}
sub logItem( $ ) {
sub genMenu( $$$$$ ) {
my( $req, $address, $args, $auth, $append ) = @_;
- my @list = ( logItem( $auth ) );
+ my @list;
if( defined $address ) {
push @list, [ 'Add item', 'newitem' ] if( $address->canAddItem() );
push @list, [ 'Discuss', 'newhistory' ] if( $address->canDiscuss() );
}
push @list, [ 'Administrate', 'admin' ] if( hasRight( $auth->{'accrights'}, 'validate' ) );
+ push @list, @{$append} if defined $append;
+ if( @list ) {
+ print "<div class='lmenu'>\n";
+ genCustomMenu( $req, $address, $args, \@list );
+ print "</div>\n";
+ }
+ @list = ( logItem( $auth ) );
push @list, [ 'Profile', 'profile' ] if defined $auth->{'authid'};
push @list, [ 'Notifications', 'notifications' ] if defined $auth->{'authid'};
- push @list, @{$append} if defined $append;
+ print "<div class='rmenu'>\n";
genCustomMenu( $req, $address, $args, \@list );
+ print "</div>\n";
}
sub genTableHead( $$$ ) {
print "</div>\n";
}
-sub genLocMenu( $$$ ) {
- my( $req, $args, $actions ) = @_;
- my $addr = PciIds::Address::new( $req->uri() );
- genCustomMenu( $req, $addr, $args, $actions );
+sub genLocMenu( $$$$$ ) {
+ my( $req, $args, $addr, $lactions, $ractions ) = @_;
+ print "<div class='lmenu'>\n";
+ genCustomMenu( $req, $addr, $args, $lactions );
+ print "</div>\n<div class='rmenu'>\n";
+ genCustomMenu( $req, $addr, $args, $ractions );
+ print "</div>\n";
+}
+
+sub genCustomHead( $$$$$$ ) {
+ my( $req, $args, $addr, $caption, $lactions, $ractions ) = @_;
+ print "<div class='top'>\n";
+ print "<h1>$caption</h1>\n";
+ genLocMenu( $req, $args, $addr, $lactions, $ractions );
+ print "<div class='clear'></div></div>\n";
genPath( $req, $addr, 1 );
}