$msg{'template'}: $_[4]
~;
}
sub category_list {
#----------------------------------------------------------
my ($obj, @keys, @list, %category);
$obj = new Sanitarium_WL("$data/categories", 'categories');
%category = $obj->get_nn_recs('all');
#categories=>['cat_dir', 'cat_name', 'cat_description', 'cat_keywords', 'template'],
@keys= keys %category;
foreach my $cat(@keys){
my %cat=$obj->unpack_to_hash($category{$cat});
push(@list,$cat,$cat{'cat_name'});
}
$obj=0;
return @list;
}
#......#ARTICLES
################
sub add_article {
#--------------------------------------------------------------
my ($obj, $html,$value, $name, $id, $modify_old, $page, @keys, %art_dump, %article, %first);
$modify_old=shift;
$modify_old||=0;
#$in{'page'}||=shift;
#$in{'cat_id'}||=shift
#$in{'entry'}||=shift;
$page=$in{'page'}||1;
if ($in{'cat_id'}&&$in{'id'}){
#CREATE OBJECT
$obj = new Sanitarium_WL ("$data/$in{'cat_id'}/$in{'id'}", 'article');
%art_dump = $obj->get_nn_recs('all');
@keys= sort {$a <=> $b} keys %art_dump;
%article=$obj->unpack_to_hash($art_dump{$keys[$page-1]}) if $in{'page'};
%first=$obj->unpack_to_hash($art_dump{$keys[0]});
$first{'id'}=$in{'id'};
undef %art_dump;
#DESTROY
$obj=0;
$value='Modify Page!';
$name='save_mod_article';#don't change this value
#IMG EMOTICONS TO SYMBOLS:
if ($use_emoticons){
$article{'preview'}=&emoticons_to_symbol($article{'preview'}) if $article{'preview'};
$article{'content'}=&emoticons_to_symbol($article{'content'}) if $article{'content'};
$first{'preview'}=&emoticons_to_symbol($first{'preview'});
}
#HTML to form:
if ($article{'related'}=~//){$article{'related'}=$1;}
elsif ($first{'related'}=~//){$first{'related'}=$1;}
$article{'preview'}=&text_to_form($article{'preview'}) if $article{'preview'};
$article{'content'}=&text_to_form($article{'content'}) if $article{'content'};
$first{'preview'}=&text_to_form($first{'preview'}) if $first{'preview'};
}
else {
$value='Post!';
$name='save_article';#don't change this value
$obj= new Sanitarium_WL("$data/id", 'none');
$id=$obj->get_id();
$obj=0;
}
#if ($modify_old eq 'next'){undef $modify_old;}
#Print Page
$id||=$in{'id'};
&head;
print qq~
~;
&foot;
#end sub
}
sub save_article {
#--------------------------------------------------------------
my ($obj, $id, @check, @err);
#article =>['cat_id', 'title', 'date', 'author', 'preview', 'content', 'keywords', 'num', 'pages'],);
@check=('cat_id', 'title', 'content', 'num', 'pages');
foreach my $check(@check){
if (!$in{$check}){push(@err, $check);}
}
if (@err){&msg("$msg{'not_defined'} @err! $msg{'back'}");}
unless($in{'date'}){$in{'date'}=&get_time();}
#IF MODIFY:
if ($in{'indexing'}&&$use_search){&delete_page_from_index($in{'cat_id'}, $in{'id'}, $in{'num'});}
#IF ADD PAGE to old article
if ($in{'add_page'}) {
&delete_from_index_all if $use_search;
$in{'num'}=$in{'add_page'};#update some %in data
$in{'pages'}++;
$obj= new Sanitarium_WL("$data/$in{'cat_id'}/$in{'id'}", 'article');
$obj->add_page($in{'id'}, $in{'add_page'});#rebuild article DB
$obj=0;
foreach my $db_index ($in{'cat_id'}, 'index'){
$obj=new Sanitarium_WL("$data/$db_index", 'index');
$obj->modify_fields($in{'id'}, 'pages', 'pages++');#Update number of pages in indexes
$obj=0;
}
#END IF PAGE
}
#RELATED
if ($in{'related'}){
$in{'related'} =~ s/[^\d,]//g;
my @related=split(/,/,$in{'related'});
$in{'related'}= qq~~;
&load_cfg;
$in{'related'} .= $builder->related_links($in{'cat_id'},@related);
$builder=0;
}
#AUTHOR
unless($in{'author'}||$in{'radiom'}){&msg("$msg{'not_defined'} - author! $msg{'back'}");}
if ($in{'radiom'}){
if ($in{'radiom'} eq 'my'){
unless($in{'authorid'}){&msg("$msg{'not_defined'} - author! $msg{'back'}");}
$in{'author'}=$in{'authorid'};
}
else {$in{'author'}=join(",,,", $in{'authname'},$in{'authmail'},$in{'authsignature'},$in{'authfoto'},$in{'authwww'});}
}
elsif ($in{'author'}=~/,,,/){
#Encoding unregistered authors data from hidden field to normal html view
$in{'author'}=~s/\|34;/"/g;
$in{'author'}=~s/\|44;/'/g;
$in{'author'}=~s/\|60;//g;
}
#CONTENT
my $content=&parse_article($in{'content'});
$in{'content'}=0;#DESTROY!
#PREVIEW
$in{'preview'}||= substr($content, 0, 180);#180 simbols in preview by default!
my $preview=&parse_article($in{'preview'});
$in{'preview'}=0;#DESTROY!
$id=$in{'id'};
#NOW WRITE INTO ARTICLE DB
#'article'=>['cat_id', 'title', 'date', 'author', 'preview', 'content', 'keywords', 'num', 'pages', 'related']
$obj= new Sanitarium_WL("$data/$in{'cat_id'}/$id", 'article');
$obj->add_entry($in{'num'},
$in{'cat_id'},
$in{'title'},
$in{'date'},
$in{'author'},
$preview,
$content,
$in{'keywords'},
$in{'num'},
$in{'pages'},
$in{'related'});
$in{'id'}=$id;
#IF MODIFY ARTICLE
if ($in{'modify_old'}&&($in{'num'}!=1)){&mod_article;}
#IF END - UPDATE INDEX!
elsif (($in{'num'} == $in{'pages'})||($in{'modify_old'})){
if ($in{'modify_old'}){
&indexing_page($in{'cat_id'}, $in{'id'}, $in{'num'}) if (($in{'modify_old'}!=666)&&($use_search)&&$in{'indexing'});
&end_article_input;
}#If Modify First Article Page
else {&end_article_input;}#If add new article
}
#IF NEXT PAGE
else {
$in{'page'}=($in{'num'}+1);
&add_article;
#('next', ($in{'num'}+1), $in{'cat_id'}, $id)
}
#end sub
}
sub mod_by_id {
#-------------------------------------------------------------
my $html;
if ($in{'id'}){
my $obj=new Sanitarium_WL("$data/index", 'index');
my %art=$obj->check_and_get($in{'id'});
$obj=0;
if ($art{'cat_id'}){
%in=%art;
&mod_article($in{'id'});
exit;
}
else {$html = qq~ID:$in{'id'} $msg{'not_id'}
~;}
}
&head;
#Search by ID
$html .= qq~
~;
&table("Input ID", $html);
#Search by Category
$html = qq~~;
&table('Select Category', $html);
&foot;
#end sub
}
sub mod_article {
#-------------------------------------------------------------
my ($obj, $modify, $html, @keys, %art_dump, %article, %authors);
my $id=shift;
my $cat_id=shift;
$id||=$in{'id'};
$cat_id||=$in{'cat_id'};
&head;
$obj= new Sanitarium_WL("$data/$cat_id/$id", 'article');
%art_dump = $obj->get_nn_recs('all');
#Now Print short article info
my %art=$obj->unpack_to_hash($art_dump{1});#Get info from first page
$art{'author'}=&get_author_name($art{'author'});
$html= qq~
~;
}
sub table {
#--------------------------------------------------------------
my ($title, @content);
$title=shift;
@content=@_;
print qq~
\ || $title
@content
~;
}
sub input_form {
#--------------------------------------------------------------
#my ($iname, $size, $max, $val)=@_;
my $val=$_[3];
if ($val){$val=&for_form($val);}
else {$val='';}
return qq~
~;
}
sub textarea {
#--------------------------------------------------------------
my ($fname, $cols, $rows, $val)=@_;
if ($val){$val=&for_form($val);}
else {$val='';}
return qq~
~;
}
sub drop_list {
#-------------------------------------------------------------
my ($name, $mylist, $selected, %list );
$name=shift;
$selected=shift;
$selected||='';
%list=@_;
#@list=@_;
#$list[0]||return 0;
#my $lst=$#list;
$mylist= qq~~;
return $mylist;
}
sub js_drop_list {
#-------------------------------------------------------------
my ($name, $mylist, $event, $selected, $a_name, $a_mail, $a_signatures, $a_foto, $a_www, %list );
$name=shift;
$event=shift;
$selected=shift;
my ($checked1, $checked2);
$selected||='';
if ($selected=~/,,,/){
$checked2='checked';
$checked1='';
}
else {
$checked1='checked';
$checked2='';
}
%list=@_;
$mylist= qq~
$msg{'select_author'}
$msg{'reg_auth'}
$msg{'unreg_auth'}
$msg{'author_name'}:
$msg{'mail'}:
$msg{'foto'}:
$msg{'www'}:
$msg{'signatures'}:
~;
return $mylist;
}
sub file_list {
#---------------------------------------------------
my ($file, @file);
my $for_dir=shift;
opendir(FILE, $for_dir)||&WLerr("Can't open $foto_dir, reason: $!");
(undef,undef,@file)=readdir(FILE);
close FILE;
return sort {$a cmp $b} @file;
}
sub print_file_list {
#----------------------------------------------------
my @fotos= &file_list($foto_dir);
my @img=&file_list($img_dir);
my $html = qq~
» $msg{'upload_img'} ~;
foreach my $file(@img){
next unless (-f "$img_dir/$file");
$html .= qq~