#!/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: newseditor.html,v 1.9 2002/06/06 14:58:02 inf Exp $ ########################################### # # # MimerDesk: News editor # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # (c) Ionstream Oy 1999 - 2001 # # # # Programmed by: Teemu Arina # # # ########################################### # Asetukset ################################## $APPLICATION = 'Tools - News Editor'; $head_adds = <{'ID'} =~ tr/0-9//cd; $form->{'auth'} =~ tr/0-9a-z//cd; $kuvat = getPictures(); unlink($form->{'file-to-upload-01'}) if $form->{'file-to-upload-01'} ne '' && !$form->{'upload'}; ($USER, $IP, $LAST_ACT, $FORWARDED, $TIME_USED, $IDLE, $ACTIVEGRP) = authenticate($form->{'ID'}, $form->{'auth'}, $form->{'changeGroup'}); $trans = lib::MimerDesk->new_gettext(program => 'edit_news',language => $config{'language'}); $APPLICATION = $trans->gettext("Tools - News Editor"); lock_tables('READ', 'users'); db_list("SELECT flags FROM users where nimi = '$USER'"); while (my $ref = $sth->fetchrow_hashref()) {$admin_status = $ref->{'flags'};} db_end(); unlock_tables(); if ($admin_status !~ /N0/) {print_template("$config{'theme'}_accfailure");} if ($form->{'selectBase'} eq 'generalnews') {$news_table = 'generalnews';} elsif ($form->{'selectBase'} eq 'localnews') {$news_table = 'localnews';} else {$news_table = 'visionnews';$form->{'selectBase'} = 'visionnews';$atemp = '_vision';} if ($form->{'quit'} || $form->{'log_out'}) {redirect("$config{'loc_server'}$config{'bin_dir'}/index.html?ID=$form->{'ID'}&auth=$form->{'auth'}&quit=quit");} elsif ($form->{'go'} eq 'preview_pic') {display_pic();} elsif ($form->{'go'} eq 'preview') {display_preview();} elsif ($form->{'go'} eq 'edit_preview') {edit_preview();} elsif ($form->{'preview2'}) {reprint_edit("new_article$atemp");} elsif ($form->{'new2'}) {print_template("new_article$atemp");} elsif ($form->{'edit'} && $form->{'selected'} ne '') {print_template("new_article$atemp");} elsif ($form->{'upload'}) {upload();} elsif ($form->{'picdelete2'}) {pic_delete();} elsif ($form->{'picpreview2'}) {pic_preview();} elsif ($form->{'edit_preview'}) {reprint_edit('news_edit');} elsif ($form->{'delete2'} && $form->{'selected'} ne '') {delete_article();} elsif ($form->{'submit2'}) {submit_article();} else {print_template('news_edit');} exit; #################### # Get picture list # #################### sub getPictures { my($num, %kuvat); my @pictures = `ls $config{'xtrapics'}/`; foreach (@pictures) { s/\n//; $num = $num + 1; $kuvat->{$_} = $num; $kuvat->{$num} = $_; } $num = ''; return \%kuvat; } ################### # Submit article # ################### sub display_pic { print_header('pragma'); print < Preview picture [$form->{'pic'}]


Close this window
EOF exit; } #################### # Display preview # #################### sub display_preview { my ($rivi, $sender,$othersend,$date_value,$other,$headline,$article); print_header('pragma'); open STUFF, "<$form->{'tmp'}" or die "Could not open: $!"; flock STUFF, 2; while ($rivi = ) { if ($rivi =~ /::/) { $rivi =~ /::(.*)::(.*)::(.*)::(.*)::(.*)::(.*)::/; $sender = $1; $othersend = $2; $date_value = $3; $other = $4; $headline = $5; $article = $6; } } close STUFF; unlink "$form->{'tmp'}"; if ($sender eq 'other') {$sender = "$othersend";} else {$sender = "- $USER";} my (undef,$min,$hour,$mday,$mon,$year) = utc_epoch2date(time()); if ($date_value eq 'other') {$date_value = $other;} else {$date_value = "$mday.$mon.$year $hour:$min";} my $template = get_template('preview2'); $template->{'preview2'} = replace_tags($template->{'preview2'}, $USER, $form->{'auth'}, $form->{'ID'}, $TIME_USED); ($article, $date_value, $sender, $headline) = html_escape($article, $date_value, $sender, $headline); $article = itag_replacer($article); $article =~ s/\r?\n/
/mg; $template->{'preview2'} =~ s/<>/$headline/gm; $template->{'preview2'} =~ s/<>/$date_value/gm; $template->{'preview2'} =~ s/<>/- $sender/gm; $template->{'preview2'} =~ s/<>/$article/g; print $template->{'preview2'}; db_end('disconnect'); exit; } ################### # Submit article # ################### sub submit_article { $form->{'sender'} = "$form->{'othersend'}"; $form->{'date_value'} = $form->{'other'}; if ($news_table eq 'visionnews') { $form->{'headline'} =~ s/ö/Ö/g; $form->{'headline'} =~ s/ä/Ä/g; $form->{'headline'} =~ s/å/Å/g; $form->{'headline'} = uc $form->{'headline'}; } ($form->{'date_value'}, $form->{'bground'}, $form->{'headline'}, $form->{'sender'}, $form->{'date_value'}, $form->{'article'}, $form->{'editing'},$form->{'size'}) = prepare_fordb($form->{'date_value'}, $form->{'bground'}, $form->{'headline'}, $form->{'sender'}, $form->{'date_value'}, $form->{'article'}, $form->{'editing'},$form->{'size'}); write_log("$USER added article named $form->{'headline'}", 'ok'); if ($form->{'editing'} ne '') { lock_tables('WRITE', $news_table); db_list("update $news_table set date = '$form->{'date_value'}', headline = '$form->{'headline'}', news = '$form->{'article'}', sender = '$form->{'sender'}' where number = '$form->{'editing'}'"); db_end(); if ($news_table eq 'visionnews') { db_list("update $news_table set background = '$form->{'bground'}', fontsize = '$form->{'size'}' where number = '$form->{'editing'}'"); db_end(); } unlock_tables(); print_template('news_edit'); } else { lock_tables('WRITE', $news_table); my $submitted = time(); if ($news_table eq 'visionnews') { db_list("insert into $news_table (number, date, headline, news, sender, submitted, background,fontsize) values ('NULL', '$form->{'date_value'}', '$form->{'headline'}', '$form->{'article'}', '$form->{'sender'}', '$submitted', '$form->{'bground'}', '$form->{'size'}')"); db_end(); } else { db_list("insert into $news_table (number, date, headline, news, sender, submitted) values ('NULL', '$form->{'date_value'}', '$form->{'headline'}', '$form->{'article'}', '$form->{'sender'}', '$submitted')"); db_end(); } unlock_tables(); print_template('news_edit'); } } ############################# # Preview selected article # ############################# sub edit_preview { my ($num, $headline,$date,$sender,$article); print_header('pragma'); lock_tables('READ', $news_table); db_list("SELECT * FROM $news_table where number = '$form->{'news'}'"); while (my $ref = $sth->fetchrow_hashref()) { $headline = $ref->{'headline'}; $date = $ref->{'date'}; $sender = $ref->{'sender'}; $article = $ref->{'news'}; } db_end(); unlock_tables(); ($article, $date, $sender, $headline) = html_escape($article, $date, $sender, $headline); $article = itag_replacer($article); $article =~ s/\r?\n/
/mg; my $template = get_template('preview2'); $template->{'preview2'} = replace_tags($template->{'preview2'}, $USER, $form->{'auth'}, $form->{'ID'}, $TIME_USED); $template->{'preview2'} =~ s/<>/$headline/gm; $template->{'preview2'} =~ s/<>/$date/gm; $template->{'preview2'} =~ s/<>/$sender/gm; $template->{'preview2'} =~ s/<>/$article/g; print $template->{'preview2'}; db_end('disconnect'); exit; } ######################## # Upload a new picture # ######################## sub upload { my $prefix = $form->{'file-to-upload-01' , 'tiedostonimi'}; $prefix =~ s/(.*)\.(.*)$/$2/; $prefix =~ s/\n//; $prefix = lc $prefix; if ($prefix =~ /jpg/ || $prefix =~ /gif/ || $prefix =~ /png/) { unlink("$config{'xtrapics'}".'/'."$form->{'file-to-upload-01','tiedostonimi'}"); rename $form->{'file-to-upload-01'},"$config{'xtrapics'}".'/'."$form->{'file-to-upload-01','tiedostonimi'}"; write_log("$USER uploaded a new image named $form->{'file-to-upload-01','tiedostonimi'}", 'notify'); } else { unlink($form->{'file-to-upload-01'}); write_log("$USER tried to upload a file named $form->{'file-to-upload-01','tiedostonimi'}", 'error'); } reprint_edit("new_article$atemp"); } ################################# # Re-print article being edited # ################################# sub reprint_edit {print_template($_[0], $form->{'sender'}, $form->{'othersend'}, $form->{'date_value'}, $form->{'other'}, $form->{'headline'}, $form->{'article'});} ########################### # Delete selected article # ########################### sub delete_article { lock_tables('WRITE', $news_table); $form->{'selected'} = prepare_fordb($form->{'selected'}); db_list("delete from $news_table where number = \'$form->{'selected'}\'"); db_end(); unlock_tables(); write_log("$USER deleted article number $form->{'selected'}", 'notify'); reprint_edit('news_edit'); } ########################### # Delete selected picture # ########################### sub pic_delete { $form->{'pictures'} =~ tr/\/\&\;\`\'\\\"\|\*\?\~\<\>\^\(\)\[\]\{\}\n\r//d; unlink("$config{'xtrapics'}".'/'."$form->{'pictures'}"); reprint_edit("new_article$atemp"); } ############################ # Preview selected picture # ############################ sub pic_preview { $form->{'pictures'} =~ tr/\/\&\;\`\'\\\"\|\*\?\~\<\>\^\(\)\[\]\{\}\n\r//d; reprint_edit("new_article$atemp"); } ############################### # Lue template ja tulosta se # ############################### sub print_template { my($num,$fulltemplate,$number,$headline,$date,$sender,$background,$article); my ($template, $sender, $othersend, $date, $other, $headline, $article) = @_; print_header('pragma'); $ref = get_template('maintemplate',$template); $ref->{'maintemplate'} =~ s/<>/$ref->{$template}/m; $fulltemplate = $ref->{'maintemplate'}; $ref = get_template('js_doClock', 'js_help', 'js_gotosite'); my $stuff = join "", ($ref->{'js_doClock'},$ref->{'js_help'},$ref->{'js_gotosite'}); $fulltemplate =~ s/<>/$stuff/ms; $fulltemplate = replace_tags($fulltemplate, $USER, $form->{'auth'}, $form->{'ID'}, $TIME_USED); $fulltemplate = add_popups($fulltemplate, $USER, $form->{'auth'}, $form->{'ID'}); $fulltemplate =~ s/<>/minea/gm; $fulltemplate = create_buttons($fulltemplate, 'Tools', 'Edit News', $form); $fulltemplate =~ s/<>/MimerDesk\: $APPLICATION/ms; if ($form->{'new2'}) { $fulltemplate =~ s/<>/Other/m; $fulltemplate =~ s/<>/Other/m; $fulltemplate =~ s/<>//gm; $fulltemplate =~ s/(