slitaz-dev-tools annotate tazwikiss/rootfs/var/www/wiki/plugins/wkp_Upload.sh @ rev 118

tazwikiss: avoid duplicate files with wkp_Upload.sh
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Jun 17 13:05:26 2011 +0200 (2011-06-17)
parents a237c07b34f1
children 46099c3f21e6
rev   line source
pascal@103 1 plugin="<a href=\"?action=upload\">Upload</a>"
pascal@103 2 description_fr="Télécharge des fichiers complémentaires (ex: images)"
pascal@103 3 description="Upload page extra files (ex: images)"
pascal@103 4
pascal@103 5 case "$LANG" in
pascal@103 6 fr) UPLOAD="Chargement" ;;
pascal@103 7 *) UPLOAD="Upload" ;;
pascal@103 8 esac
pascal@103 9
pascal@103 10 template()
pascal@103 11 {
pascal@103 12 case "$(GET action)" in
pascal@103 13 edit) UPLOAD="<a href=\"$urlbase?action=upload\">$UPLOAD</a>"
pascal@103 14 html="$(sed "s|HISTORY|$UPLOAD / HISTORY|" <<EOT
pascal@103 15 $html
pascal@103 16 EOT
pascal@103 17 )" ;;
pascal@103 18 upload*) html="$(sed 's| / <a href.*recent.*</a>||;s|.*name="query".*||' <<EOT
pascal@103 19 $html
pascal@103 20 EOT
pascal@103 21 )" ;;
pascal@103 22 *) return 1 ;;
pascal@103 23 esac
pascal@103 24 return 0
pascal@103 25 }
pascal@103 26
pascal@103 27 action()
pascal@103 28 {
pascal@103 29 case "$1" in
pascal@103 30 upload) CONTENT="$(cat <<EOT
pascal@103 31 <form method="post" enctype="multipart/form-data" action="?action=uploadfile">
pascal@103 32 <input type="file" name="file" value="file"/>
pascal@103 33 <input type="submit"/>
pascal@107 34 <table>
pascal@107 35 EOT
pascal@107 36 for i in pages/data/* ; do
pascal@107 37 [ -e $i ] || continue
pascal@107 38 echo -n "<tr><td><input type=checkbox "
pascal@107 39 grep -qs "$i" pages/*.txt && echo "checked=checked "
pascal@107 40 echo "disabled=disabled /><a href="$i">$(basename $i)</a></td></tr>"
pascal@107 41 done
pascal@107 42 cat <<EOT
pascal@107 43 </table>
pascal@103 44 </form>
pascal@103 45 EOT
pascal@103 46 )"
pascal@103 47 PAGE_TITLE_link=false
pascal@103 48 editable=false
pascal@103 49 lang="${HTTP_ACCEPT_LANGUAGE%%,*}"
pascal@103 50 PAGE_TITLE="$UPLOAD" ;;
pascal@103 51 uploadfile)
pascal@103 52 mkdir -p pages/data 2> /dev/null
pascal@103 53 name=$(FILE file name)
pascal@118 54 if [ -z "$name" ]; then
pascal@118 55 CONTENT="<script> history.go(-2); </script>"
pascal@118 56 return 1
pascal@118 57 fi
pascal@103 58 n=''
pascal@103 59 while [ -e pages/data/$n$name ]; do
pascal@103 60 n=$(($n+1))
pascal@103 61 done
pascal@118 62 filesize=$(stat -c "%s" $(FILE file tmpname))
pascal@118 63 ls pages/data | while read file; do
pascal@118 64 stat -c "%s %n" pages/data/$file
pascal@118 65 done | while read size file; do
pascal@118 66 [ $filesize == $size ] &&
pascal@118 67 cmp $(FILE file tmpname) $file > /dev/null &&
pascal@118 68 ln -s $(basename $file) pages/data/$n$name && break
pascal@118 69 done
pascal@118 70 if [ -L pages/data/$n$name ]; then
pascal@118 71 n=pages/data/$n$name
pascal@118 72 name="$(readlink $n)"
pascal@118 73 rm -f $n
pascal@118 74 n=""
pascal@118 75 else
pascal@118 76 mv $(FILE file tmpname) pages/data/$n$name
pascal@118 77 fi
pascal@103 78 rm -rf $(dirname $(FILE file tmpname) )
pascal@106 79 URL=pages/data/$n$name
pascal@103 80 PAGE_TITLE_link=false
pascal@103 81 editable=false
pascal@103 82 PAGE_TITLE="$UPLOAD"
pascal@103 83 CONTENT="$(cat <<EOT
pascal@103 84 <h1><a href="javascript:history.go(-2)">$EDIT_BUTTON</a></h1>
pascal@103 85 <p>
pascal@103 86 The file $(FILE file name) ($(FILE file size) bytes, $(FILE file type)) is
pascal@103 87 stored at <a href="$URL">$URL</a>.
pascal@103 88 </p>
pascal@103 89 EOT
pascal@103 90 )"
pascal@103 91 case "$(FILE file type)" in
pascal@103 92 image*) CONTENT="$(cat <<EOT
pascal@103 93 $CONTENT
pascal@103 94 <p>
pascal@103 95 You can insert this image with <b>[$URL]</b> see
pascal@103 96 <a href="?page=$HELP_BUTTON">$HELP_BUTTON</a> for details
pascal@103 97 </p>
pascal@103 98 <img src="$URL" alt="$URL" />
pascal@103 99 EOT
pascal@103 100 )"
pascal@103 101 esac ;;
pascal@103 102 *) return 1 ;;
pascal@103 103 esac
pascal@103 104 return 0
pascal@103 105 }