#!/usr/bin/perl # MimerDesk # Web based groupware and eLearning environment # www.mimerdesk.org # # Copyright (C) 2001 Ionstream Ltd. # www.ionstream.fi # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed with a hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # $Id: navigation.html,v 1.5 2002/06/13 20:51:01 inf Exp $ ################################################## # # # MimerDesk online help navigation # # # # (C) Ionstream Oy 2000 # # # # Programmed by Teemu Arina # # # ################################################## ########## # Common # ########## use strict; use vars qw ($APPLICATION $ARTICLE $MONTH $USER $IP $LAST_ACT $FORWARDED $TIME_USED $IDLE $form $ref $sth $header $footer $size $open_book $closed_book $spacer_vertical $spacer_horizontal $spacer_blank $page $hidden_field $row %book_title @hidden_fields); use lib::MimerDesk; use CGI::Carp "fatalsToBrowser"; read_config('../config/mimerdesk.cfg'); initialize(); $form = decode_multipart(); $form->{'ID'} =~ tr/0-9//cd; $form->{'auth'} =~ tr/0-9a-z//cd; &print_frames if $form->{'help_section'}; initializes(); lock_tables('READ', 'helpbooks', 'helppages'); my $f = 0; print header(); book_listing(get_books('0')); print $footer; unlock_tables(); db_end('disconnect'); exit; ####################### # Return book listing # ####################### sub book_listing { my ($table,$return,$book_number,%level,$additional,%returned); foreach $book_number (@_) {$level{$book_number} = $f;} foreach $book_number (@_) { $f = ($level{$book_number} + ($f + 1)); undef($additional); for (my $n = 0;$n < $level{$book_number};$n++) {$additional .= "$spacer_blank";} $table = $row; $table =~ s/<>/$book_title{$book_number}/g; if ((check_open($book_number)) > 0) { $table =~ s/<>/javascript\:UPDATE\($book_number,\'close\',\'\'\)/; $table =~ s/<>/javascript\:UPDATE\($book_number,\'close\',\'\'\)/; $table =~ s/<>/$additional/; $table =~ s/<>/$open_book/; $table =~ s/<>/Close book/g; print $table; print book_content($book_number,$additional); if (!$returned{$book_number}) { $returned{$book_number} = 'yes'; book_listing(get_books($book_number)); } } else { $table =~ s/<>/javascript\:UPDATE\($book_number,\'open\',\'\'\)/; $table =~ s/<>/javascript\:UPDATE\($book_number,\'open\',\'\'\)/; $table =~ s/<>/$additional/; $table =~ s/<>/$closed_book/; $table =~ s/<>/Open book/g; print $table; } $f = ''; } } ######################## # Return book contents # ######################## sub book_content { my (@page_number,%page_title,$page_count,$n,$table,$return,%page_link,$page_number); db_list("select page,page_number,book,link from helppages where book='$_[0]' group by page_number"); while (my $ref = $sth->fetchrow_hashref()) { push @page_number, $ref->{'page_number'}; $page_title{$ref->{'page_number'}} = $ref->{'page'}; $page_link{$ref->{'page_number'}} = $ref->{'link'}; } db_end(); $page_count = @page_number; $n = '0'; foreach $page_number (@page_number) { $table = $row; $n++; $table =~ s/<>/$config{'static_dir'}$page_link{$page_number}\" target\=\"help/; $table =~ s/<>/$config{'static_dir'}$page_link{$page_number}\" target\=\"help/; if ($n != $page_count) { $table =~ s/<>/$_[1]<\/td>$spacer_vertical/; $table =~ s/<>/$page/; } else { $table =~ s/<>/$_[1]<\/td>$spacer_horizontal/; $table =~ s/<>/$page/; } $table =~ s/<>/$page_title{$page_number}/g; $table =~ s/<>/Open page/g; $return .= $table; } return $return; } #################### # check open books # #################### sub check_open { my $rivi; foreach $rivi (@hidden_fields) {return(1) if $_[0] == $rivi;} return(0); } ############# # Get books # ############# sub get_books { my (@book_number); db_list("select * from helpbooks where level='$_[0]' group by number"); while (my $ref = $sth->fetchrow_hashref()) { push @book_number, $ref->{'number'}; $book_title{$ref->{'number'}} = $ref->{'book'}; } db_end(); return (@book_number); } ########## # header # ########## sub header { my($found,$hidden_fields); @hidden_fields = split /,/, $form->{'open_books'}; if ($form->{'action'} eq 'close') {@hidden_fields = grep !(/^$form->{'book'}$/), @hidden_fields;} elsif ($form->{'action'} eq 'open') { foreach (@hidden_fields) { if ($form->{'book'} eq $_) {$found = 'yes';} } if ($found ne 'yes') {push @hidden_fields, $form->{'book'};} } $hidden_fields = join ",", @hidden_fields; my $hidden = $hidden_field; $hidden =~ s/<>/open_books/; $hidden =~ s/<>/$hidden_fields/; $header =~ s/<>/$hidden/; return $header; } ################## # Initialization # ################## sub initializes { $header = < Help navigation
<>
MimerDesk Online Help

EOF $footer = < EOF $row = < <> <>   <> EOF $size = "width=16 height=21 border=0"; $open_book = ""; $closed_book = ""; $spacer_vertical = ""; $spacer_horizontal = ""; $spacer_blank = ""; $page = ""; $hidden_field = ">\" value=\"<>\">"; } ################ # Print frames # ################ sub print_frames { print < Sorry, your browser doesn't support farmes! EOF }