#!/usr/local/bin/perl # # control panel for nicky! # # 定義部 $panelVer="2008.02.29"; # # HTMLヘッダを吹く # sub PutHTMLheader { if( !$flag_type ){ print "Content-type: text/html\n\n"; $flag_type = 1; } print < html_eof } # # 削除 # sub delete_category { my(@cdl)=@_; my($i, @pt, $ct); my(@nli, $no); if( $rmvctg eq "idrst" ){ $errmsg=< 全て用IDは削除できません。
表示させたくない場合は非表示に設定します。 err_msg return @cdl; } $ctg=1<<($rmvctg-1) if( $rmvctg ); @nli=&GetNickyList("r"); #tc以外なら可 if( $#nli >= 0 ){ $errmsg=< 記事が存在するカテゴリは削除できません err_msg return @cdl; } for $ct( @cdl ){ my(@f); next if( $rmvctg == $$ct[4] ); @f=($$ct[0], $$ct[1], $$ct[2], $$ct[3], $$ct[4]); $pt[$i]=\@f; $i++; } @pt; } # # カテゴリリスト編集画面 # sub put_catelist { my($cnt, $no, $idstr, @idfree, $idcnt); my($pt1, $pt2, $pt3, $ctgname, $dat4, $flag_html); if( $put_type =~ /link/i ){ $pt1=" checked"; }elsif( $put_type =~ /chkbox/i ){ $pt2=" checked"; }else{ $pt3=" checked"; } $flag_html=0; print <control panel

カテゴリリスト編集

ver:$panelVer
  • カテゴリリストを追加・編集します。
  • 新規にカテゴリを登録する場合は一番下の入力欄に入力します。
  • 編集が終了したら『SAVE』ボタンをクリックします。
  • 表示順を変更したい場合は『表示順』の数字を変更します。
    カテゴリネームを入れ替えると記事との関連も入れ替わります。

表示設定

Category表示方法 :  リンク  チェックボックス  セレクト
カテゴリボタンに表示する名称 : 
カテゴリ間の文字 : 

Category List$errmsg

html_eof print "" if( $subcmd eq "削除" ); print "\n"; $cnt=1; for $categorydat(@catelist) { $no=$cnt*10; $dat4=$$categorydat[4]; if( $dat4 eq "idrst" ){ $idstr=$dat4; }else{ $idstr=sprintf("%08d", $$categorydat[4]); $idfree[$idstr]=1; } if( !$$categorydat[4] ){ next; $cnt++; } $ctgname=&tagenc($$categorydat[0]); print ""; # # 表示順 # print ""; # # カテゴリネーム # print ""; # # 表示可非 # $pt1=$pt2=""; if( $$categorydat[2] ne "no"){ $pt1=" checked"; }else{ $pt2=" checked"; } print ""; # # HTML化 # if( $stchtml eq $idstr){ $pt1=" checked"; $flag_html=1; }else{ $pt1=""; } print ""; # # 文末 # $pt2=&tagenc($$categorydat[3]); print ""; # # ID # print "\n"; # # 削除 # if( $subcmd eq "削除" ){ print ""; } print "\n"; $cnt++; last if( $cnt > 32 ); } # # 新規追加欄 # if( ($cnt < 32) && ($subcmd ne "削除") ){ my($i); $no=$cnt*10; for($i=1;$i<32;$i++){ last unless( $idfree[$i] ); } $cnt=$i; $idstr=sprintf("%08d", $cnt); $pt1=""; if( $flag_html == 0 ){$pt1=" checked"; } print < html_eof4 } if( $subcmd ne "削除" ){ $delstr="削除"; }else{ $delstr="削除実行"; } print <
  • カテゴリ間の文字はnicky.cgi?UserCustom用です。
    \$ctgTagでリンク無し、\$ctgTagLでリンク有りで表示します。
  • 文末はカテゴリネームの後ろに表示させる文字です。
    例えばカテゴリネームを縦に並べたい場合は『<br>』と記載します。
    ヘッダ/フッタで%Category%と記載された場所に反映されます。
  • 表示順の数字が小さいカテゴリネームが先に表示されます。
    番号はボタンクリックのタイミングでリナンバーされます。
    これは、例えば表示順の番号が1,2,3,4…となった場合に挿入出来なくなる事を防ぐための処置です。
  • 表示順の数字は10の倍数でなくても構いません。
  • 表示する/しない設定は、カテゴリネームの設定です。
    記事を表示する/しないの設定ではありません。
  • html化は現在択一です。どのカテゴリもhtml化させたくない場合は、一番下の欄(表示順=999)にチェックを入れます。
html_eof5 } # # file read. # sub read_catelist { my($linedat, $cnt, $j, $flag_rst, $j1, $j2); my(@listdat); $cnt=0; if( open(RD, "./catelist.cgi") ){ binmode(RD); for $linedat(){ my(@cateline, $name, $num, $putok, $lstr, $id); $linedat=~s/\r|\n//g; next if( !$linedat ); if( $cnt == 0 ){ #最初の行は表示方法 $linedat=~s/ | //g; $put_type=$linedat; $cnt++; next; }elsif( $cnt == 1 ){ #2行目はカテゴリボタンの名前 $catebtn=$linedat; $cnt++; next; } ($name, $num, $putok, $lstr, $id, $stchtml)=split(/,/, $linedat); $name=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/ego; $lstr=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/ego; if( $id eq "idrst" ){ $flag_rst=1; }elsif( $id == 0 ){ $lstr=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/ego; ($j1,$ctgSplit,$j2)=split(/\x01/,$lstr); $cnt++; next; } $num=~s/ | //g; $putok=~s/ | //g; @cateline=($name, $num, $putok, $lstr, $id, $stchtml); $listdat[$cnt]=\@cateline; $cnt++; } close(RD); } if( !$flag_rst ){ my(@fr); @fr=("全て", 5, "yes", "", "idrst"); $listdat[$j]=\@fr; } @listdat; } sub get_category_param{ my($i, $j, @pt, @fr, $rstid); $catenamerst="全て" if( !$catenamerst ); @fr=($catenameidrst, $catenumidrst, $putokidrst, $lstridrst, "idrst"); $pt[$j]=\@fr; $j++; for($i=0;$i<1000;$i++){ my(@f, $catenum, $catename, $putok, $lstr, $id, $idstr, $nstc); $id=sprintf("%08d", $i); $putok=${"putok$id"}; next if( !$putok ); $catenum=${"catenum$id"}; $catename=${"catename$id"}; if( !$catename ){ next if( $catenum == 999 ); $catename=" "; } $lstr=${"lstr$id"}; $idstr=sprintf("%08d", ${"id$id"}); $nstc=${"nstc$id"}; @f=($catename, $catenum, $putok, $lstr, $idstr, $nstc); $pt[$j]=\@f; $j++; } @pt; } sub save_exec{ my($categorydat, $i, $catename, $lstr, $idstr); @catelist=sort{$$a[4] <=> $$b[4]} @catelist; $ctgSplit=~s/%/%25/g; $ctgSplit=~s/,/%2c/g; open(WD, ">./catelist.cgi"); binmode WD; print WD "$put_type\n"; print WD "$catebtn\n"; print WD "dummyname, putnum, putok, \x01$ctgSplit\x01, 00000000\n"; #ダミー for $categorydat(@catelist){ $catename=$$categorydat[0]; $catename=~s/%/%25/g; $catename=~s/,/%2c/g; $lstr=$$categorydat[3]; #文末 $lstr=~s/%/%25/g; $lstr=~s/,/%2c/g; print WD "$catename,"; #カテゴリネーム print WD "$$categorydat[1],"; #表示順 print WD "$$categorydat[2],"; #表示可否 print WD "$lstr,"; #文末 print WD "$$categorydat[4],"; #ID print WD "$stchtml,"; #html化 print WD "\n"; $i++; } close WD; return if( !$i ); # # 表示用カテゴリリストデータの保存 # my($ctgstr, $ctgid); @catelist=sort{$$a[1] <=> $$b[1]} @catelist; $i=0; open(WD, ">./ctgput.cgi"); print WD "
\n" if( $put_type ne "link" ); print WD "$$categorydat[0]"; print WD $$categorydat[3]; }else{ print WD ""; } } print WD "\n" if( $put_type eq "sel" ); print WD "" if( $put_type ne "link" ); print WD "
\n" if( $put_type ne "link" ); close WD; &NickyPageOut(0, $PrintDay); exit; } sub panel { my(@cl); if( !$subcmd ){ @catelist=&read_catelist(); }else{ @cl=&get_category_param(); if( $subcmd eq "削除実行" ){ @cl=&delete_category(@cl); } @catelist=@cl; } $catebtn="Category Search" if( !$catebtn ); &save_exec() if( $subcmd eq "SAVE" ); &PutHTMLheader(); @catelist=sort{$$a[1] <=> $$b[1]} @catelist; &put_catelist(); exit; } # # S.Kano # if( !$Admin || $ENV{'SCRIPT_NAME'} !~ /nicky.cgi/ ){ &PutHTMLheader(); print "\n"; print "Invalid access
\n"; print "IP::$ENV{'REMOTE_ADDR'}"; print "\n"; exit; } &panel(); 1; #end of script
表示順カテゴリネーム表示html化文末ID削除
"; if( $subcmd eq "表示順編集" ){ print ""; }else{ print ""; print "$no"; } print ""; if( $subcmd eq "カテゴリネーム編集" ){ print ""; }else{ print ""; print "$$categorydat[0]"; } print ""; print "する/"; print "しない"; print ""; if( $idstr ne "idrst" ){ print "する"; } else { print "不可"; } print "$idstr
する/しない する $idstr