fn conf_enable_flip { extensions=(pdf ps) prev_res=150 thumb_res=15 pages_root=`{pwd}^'/_werc/pages' mkdir -p $pages_root base_path=`{basename -d $conf_wd} conf_enable_app flip} fn flip_init { # this could cause problems with filenames matching [0-9]+ pages_doc=`{echo $local_path | sed 's|/[0-9]+(-[0-9]*)?/?$||'} if (test -f $werc_root^'/'^$pages_doc^'.'^$extensions){ name=`{basename $pages_doc} pages_doc_root=$pages_root^'/'^$name pages_file=`{ls $werc_root^'/'^$pages_doc^'.'^$extensions} if (! test $pages_doc_root -nt $pages_file){ mkdir -p $pages_doc_root'/thumbs/' pages2pngs $pages_file $pages_doc_root'/thumbs' 15 pages2pngs $pages_file $pages_doc_root 90 } page_num=`{basename $req_path} page_tot=`{ls $pages_doc_root^/*.png |wc -l} if (echo $page_num | grep -s '^[0-9]+-[0-9]*$'){ page_num=`{basename $req_path | sed 's/-[0-9]*//'} handler_body_main=pageindex } if not if (~ $pages_doc $local_path){ page_num=1 handler_body_main=pageindex } if not handler_body_main=pageprev if (test $page_num -gt $page_tot) handler_body_main=() }} fn pages2pngs { gs -q -dNOPAUSE -dBATCH -s'DEVICE=png16m' -r^$3 -d'TextAlphaBits=4' -d'GraphicsAlphaBits=4' -s'OutputFile='^$2^'/%d.png' $1 } fn pagelist { ls -p $pages_doc_root | sed 's/\.png//p;d' | sort -n} # Usage: paginate number step total 'string %d %s'fn paginate { awk ' BEGIN { n='$1'; s='$2'; s3=int(s/3); a=int(n/s3)*s3-s3; if(a<1) a=1; if(n>a+2*s3) a+=s3; w=a+s; t='$3'; str="'$4'"; } NR==a && NR>1 { printf(str, 1, "first"); if(n-s > 0) printf(str, n-s, "(-" s ")"); print "|"; } NR>=a && NR<w { printf(str, NR, NR); } NR==w && NR<=t { print "|"; if(n+s <= t) printf(str, n+s, "(+" s ")"); printf(str, t, "last"); }'} fn pagethumbs { for (p in `{ls -p $pages_doc_root | sed 's/\.png//p;d' | sort -n}){ img='<img src="'$base_path'/_werc/pages/'$name'/thumbs/'$p'.png">' echo '<a href="'$base_path'/'$name'/'$p'">'$img'</a>' }} fn pagenav { ls -p $pages_doc_root^/*.png | sort -n | awk ' /^'^`{basename $req_path}^'\.png/{ if(sub("\.png$", "", p)) print "<a title=\"prev\" href=\"" p "\">'$1'</a>"; print "<a title=\"all\" href=\"" int('$page_num'/50)*50+1 "-\">'$3'</a>"; getline; if(sub("\.png$", "", $0)) print "<a title=\"next\" href=\"" $0 "\">'$2'</a>"; exit; } {p = $0;}'} fn pageindex { tpl_handler apps/flip/pageindex.tpl} fn pageprev { tpl_handler apps/flip/pageprev.tpl}
fn conf_enable_flip {
extensions=(pdf ps)
prev_res=150
thumb_res=15
pages_root=`{pwd}^'/_werc/pages'
mkdir -p $pages_root
base_path=`{basename -d $conf_wd}
conf_enable_app flip
}
fn flip_init {
# this could cause problems with filenames matching [0-9]+
pages_doc=`{echo $local_path | sed 's|/[0-9]+(-[0-9]*)?/?$||'}
if (test -f $werc_root^'/'^$pages_doc^'.'^$extensions){
name=`{basename $pages_doc}
pages_doc_root=$pages_root^'/'^$name
pages_file=`{ls $werc_root^'/'^$pages_doc^'.'^$extensions}
if (! test $pages_doc_root -nt $pages_file){
mkdir -p $pages_doc_root'/thumbs/'
pages2pngs $pages_file $pages_doc_root'/thumbs' 15
pages2pngs $pages_file $pages_doc_root 90
}
page_num=`{basename $req_path}
page_tot=`{ls $pages_doc_root^/*.png |wc -l}
if (echo $page_num | grep -s '^[0-9]+-[0-9]*$'){
page_num=`{basename $req_path | sed 's/-[0-9]*//'}
handler_body_main=pageindex
}
if not if (~ $pages_doc $local_path){
page_num=1
handler_body_main=pageindex
}
if not
handler_body_main=pageprev
if (test $page_num -gt $page_tot)
handler_body_main=()
}
}
fn pages2pngs {
gs -q -dNOPAUSE -dBATCH -s'DEVICE=png16m' -r^$3 -d'TextAlphaBits=4' -d'GraphicsAlphaBits=4' -s'OutputFile='^$2^'/%d.png' $1
}
fn pagelist {
ls -p $pages_doc_root | sed 's/\.png//p;d' | sort -n
}
# Usage: paginate number step total 'string %d %s'
fn paginate {
awk '
BEGIN {
n='$1';
s='$2'; s3=int(s/3);
a=int(n/s3)*s3-s3;
if(a<1) a=1;
if(n>a+2*s3) a+=s3;
w=a+s;
t='$3';
str="'$4'";
}
NR==a && NR>1 {
printf(str, 1, "first");
if(n-s > 0)
printf(str, n-s, "(-" s ")");
print "|";
}
NR>=a && NR<w {
printf(str, NR, NR);
}
NR==w && NR<=t {
print "|";
if(n+s <= t)
printf(str, n+s, "(+" s ")");
printf(str, t, "last");
}'
}
fn pagethumbs {
for (p in `{ls -p $pages_doc_root | sed 's/\.png//p;d' | sort -n}){
img='<img src="'$base_path'/_werc/pages/'$name'/thumbs/'$p'.png">'
echo '<a href="'$base_path'/'$name'/'$p'">'$img'</a>'
}
}
fn pagenav {
ls -p $pages_doc_root^/*.png | sort -n | awk '
/^'^`{basename $req_path}^'\.png/{
if(sub("\.png$", "", p))
print "<a title=\"prev\" href=\"" p "\">'$1'</a>";
print "<a title=\"all\" href=\"" int('$page_num'/50)*50+1 "-\">'$3'</a>";
getline;
if(sub("\.png$", "", $0))
print "<a title=\"next\" href=\"" $0 "\">'$2'</a>";
exit;
}
{p = $0;}'
}
fn pageindex {
tpl_handler apps/flip/pageindex.tpl
}
fn pageprev {
tpl_handler apps/flip/pageprev.tpl
}