From: short <>
Date: Sat, 8 Sep 2001 01:09:09 +0000 (+0000)
Subject: Contents appendixes implemented
X-Git-Url: https://git.jankratochvil.net/?p=www.energie.vellum.cz.git;a=commitdiff_plain;h=72ed4b0b640d8896f479b36c119cf61f3e7c7925
Contents appendixes implemented
"name_full" implemented for month_a() (uses new "sequential" column)
---
diff --git a/common.php b/common.php
index 327304b..1d4c8c7 100644
--- a/common.php
+++ b/common.php
@@ -108,19 +108,40 @@ function db_item($query)
return($row[0]);
}
-function month_a($year,$month,$month_last=0)
+function num2greg($num)
{
- global $tb_obsah;
+ $r="";
+ $vals=array(1=>"I",5=>"V",10=>"X",50=>"L",100=>"C",500=>"D",1000=>"M");
+ krsort($vals,SORT_NUMERIC);
+ foreach($vals as $val=>$sym) {
+ while ($num<0 && $num+$val<-$num) {
+ $r=substr($r,0,-1).$sym.substr($r,-1,1);
+ $num+=$val;
+ }
+ while (10*$num>=8*$val+(substr($val,0,1)=="1")) {
+ $r=$r.$sym;
+ $num-=$val;
+ }
+ }
+ return($r);
+}
+
+function month_a($year,$month,$month_last=0,$sequential=0)
+{
+ global $tb_obsah,$obsah_year_base;
- if (!$month_last)
- $month_last=db_item("select month_last from $tb_obsah where year='$year' and month='$month'");
+ if (!$month_last || !$sequential)
+ list($month_last,$sequential)=db_row("select month_last,sequential from $tb_obsah where year='$year' and month='$month'");
$month_full=sprintf("%02d".($month==$month_last ? "" : "-%02d"),$month,$month_last);
$r=array("year"=>$year,"month"=>$month,"month_last"=>$month_last,"month_full"=>$month_full,
- "name"=>"$month".($month==$month_last ? "" : "-$month_last")."/$year",
+ "name"=>"$month" .($month==$month_last ? "" : "-$month_last")."/$year",
"img" =>"img/eap-$year-${month_full}.jpeg",
"icon"=>"img/eap-$year-${month_full}s.jpeg",
);
+ $r["name_full"]=$r["name"]
+ ." ($sequential".($month==$month_last ? "" : "-".($sequential+$month_last-$month)).")"
+ ." - ".num2greg($year-$obsah_year_base+1).". roèník";
return($r);
}
@@ -161,7 +182,7 @@ function title_name($year,$month)
{
if (isset($year) && isset($month)) {
$month_a=month_a($year,$month);
- return("Èíslo ".$month_a["name"]);
+ return("Èíslo ".$month_a["name_full"]);
}
else if (isset($year))
return("Roèník $year");
@@ -181,11 +202,11 @@ function title_month($year,$month)
);
}
-function title_icons_table_month($year,$month,$month_last)
+function title_icons_table_month($year,$month,$month_last,$sequential)
{
- $month_a=month_a($year,$month,$month_last);
+ $month_a=month_a($year,$month,$month_last,$sequential);
print(""
- .img($month_a["icon"],"titulní stránka ".$month_a["name"])."
"
+ .img($month_a["icon"],"titulní stránka ".$month_a["name_full"])."
"
."obsah ".$month_a["name"].""
);
}
@@ -200,7 +221,7 @@ function title_icons($year,$month)
.(isset($year) ? "" : "")
."\n");
- $result=db_query("select year,month,month_last from $tb_obsah"
+ $result=db_query("select year,month,month_last,sequential from $tb_obsah"
.(isset($year) || isset($month) ? " where" : "")
.(isset($year ) ? " year=$year" : "")
.(isset($year) && isset($month) ? " and" : "")
@@ -246,7 +267,7 @@ function title_icons($year,$month)
print("
");
- title_icons_table_month($year,$row["month"]+1,$row["month_last"]+1);
+ title_icons_table_month($year,$row["month"]+1,$row["month_last"]+1,$row["sequential"]);
print(" | \n");
$month=$row["month_last"];
}
diff --git a/config.php b/config.php
index 5d46ac6..1bed492 100644
--- a/config.php
+++ b/config.php
@@ -17,6 +17,8 @@
$tb_obsah="energie_obsah";
$sep_obsah_contents=chr(1);
$page_obsah_contents=chr(3);
+ $appendix_obsah_contents=chr(4);
+ $obsah_year_base=1996;
$tb_objednavka="energie_objednavka";
?>
diff --git a/obsah.php b/obsah.php
index 922cd36..669795d 100644
--- a/obsah.php
+++ b/obsah.php
@@ -15,7 +15,7 @@
$title_tail="Obsahy èísel roku $year";
else {
$month_a=month_a($year,$month);
- $title_tail="Obsah èísla ".$month_a["name"];
+ $title_tail="Obsah èísla ".$month_a["name_full"];
}
$head_css="
@@ -34,15 +34,17 @@
while ($row=mysql_fetch_array($result)) {
if (!$month) {
$month_a=month_a($row["year"],$row["month"],$row["month_last"]);
- print("Èíslo ".$month_a["name"]."
\n");
+ print("Èíslo ".$month_a["name_full"]."
\n");
}
$contents=htmlspecialchars($sep_obsah_contents.$row["contents"]);
$contents=ereg_replace("http://[^[:space:]$page_obsah_contents$sep_obsah_contents]+",
"\\0",$contents);
- $contents=ereg_replace("$page_obsah_contents([^$sep_obsah_contents]+)",
+ $contents=ereg_replace("$page_obsah_contents([^$sep_obsah_contents$appendix_obsah_contents]+)",
"
strana ... \\1
",$contents);
$contents=ereg_replace("\n","
\n\t\t",$contents);
- $contents=ereg_replace("$sep_obsah_contents([^$sep_obsah_contents]*)","\t\\1\n",$contents);
+ $contents=ereg_replace("$sep_obsah_contents([^$sep_obsah_contents$appendix_obsah_contents]*)","\t\\1\n",$contents);
+ if (1Pøílohy:\n".ereg_replace("\t","\t\t",$contents_a[1])."\t
\n";
print("\n");
}
mysql_free_result($result);
diff --git a/obsah_init.pl b/obsah_init.pl
index 89d40a7..917e2da 100755
--- a/obsah_init.pl
+++ b/obsah_init.pl
@@ -35,13 +35,14 @@ eval { &db_do("drop table $tb_obsah") };
."year year(4) not null,"
."month tinyint not null,"
."month_last tinyint not null,"
+ ."sequential smallint not null,"
."contents text not null"
.")");
&db_do("alter table $tb_obsah add unique (year,month)");
-use vars qw/$insert_tb_obsah $year $month $month_last $contents/;
+use vars qw/$insert_tb_obsah $year $month $month_last $sequential $contents $first/;
sub where
{
@@ -58,35 +59,56 @@ sub flush_month
else {
tr/ \t\n/ \n/s;
s/([\001\n]) | ([\002\n])/$1$2/g;
- s/\nstrana \.\.\. ([\d ,]+\002)/\003$1/g;
- die "Page marker not found somewhere in this month".&where() if (/\001[^\003]*\002/);
+ die "Page marker not found somewhere in this month".&where() if (/^[^\004]*\001[^\003\004]*\002/);
+ die "Duplicate page markers in this month".&where() if (/strana /);
tr/\002//d;
$_=substr($_,1);
}
- $insert_tb_obsah->execute($year,$month,$month_last,$_) or die "SQL insert failure: $!";
+ $insert_tb_obsah->execute($year,$month,$month_last,$sequential,$_) or die "SQL insert failure: $!";
undef $year,$month;
undef $contents;
+ undef $first;
}
-$insert_tb_obsah=$db->prepare("insert into $tb_obsah (year,month,month_last,contents) values (?,?,?,?)")
+$insert_tb_obsah=$db->prepare("insert into $tb_obsah (year,month,month_last,sequential,contents) values (?,?,?,?,?)")
or die "Prepare fail: $!";
while (<>) {
chomp;
- if (m#^EaP (\d+)(-(\d+))?/(\d+)$#) {
+ if (m#^EaP (\d+)(-(\d+))?/(\d+) \((\d+)(-\d+)?\)$#) {
&flush_month();
$month=$1;
$month_last=($3 ? $3 : $1);
$year =$4;
+ $sequential=$5;
$contents="";
next;
}
- if (/^\.\s(.*)$/) {
- $contents.="\001$1\002";
+ if (/^Pøíloha:$/) {
+ die "Multiple \"Pøíloha\"s".&where() if ($contents=~/\004/);
+ $contents.="\004";
+ next;
+ }
+ if (/^[^[:space:]]/ || (/^\s/ && $contents=~/\004/)) {
+ $contents.="\001$_\002";
+ $first=$_;
+ next;
+ }
+ if (/^\s+strana \.\.\. ([\d ,-]+)$/) {
+ die "Page number without start".&where() if ("\002"!=substr($contents,-1,1));
+ die "Page number already specified".&where() if ($contents=~/\003[^\001\002\004]*\002$/);
+ $contents=substr($contents,0,-1)."\003$1\002";
next;
}
if (/^\s(.*)$/) {
- $contents=substr($contents,0,-1)."\n$1\002";
+ my( $s )=$1;
+ die "INTERNAL: continuation for \"Pøíloha\"".&where() if ($contents=~/\004/);
+ die "Continuation contents without start".&where() if ("\002"!=substr($contents,-1,1));
+ if ($contents=~/\003[^\001\002\004]*\002$/) {
+ die "First line not found".&where() if !defined($first);
+ $contents.="\001$first\002";
+ }
+ $contents=substr($contents,0,-1)."\n$s\002";
next;
}
die "Unexpected text".&where().": $_" if (/\S/);