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

tazwikiss/wkp_Admin: add pages section
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Jun 19 16:09:09 2011 +0200 (2011-06-19)
parents 3d9bc6051576
children 73d6a8a85986
rev   line source
pascal@58 1 plugin="<a href=\"?action=admin\">Administration</a>"
pascal@58 2 description_fr="Administration du Wiki"
pascal@58 3 description="Wiki administration"
pascal@58 4
pascal@58 5 admin_enable()
pascal@58 6 {
pascal@58 7 [ -n "$(POST $1)" ] || return
pascal@121 8 chmod 444 $4/$2*
pascal@58 9 for i in $(POST); do
pascal@121 10 case "$i" in $3*) chmod 755 $4/${i/$3/$2}.* ;; esac
pascal@58 11 done
pascal@58 12 }
pascal@58 13
pascal@120 14 admin_download()
pascal@120 15 {
pascal@120 16 cat - $1 <<EOT
pascal@120 17 Content-Type: application/octet-stream
pascal@120 18 Content-Length: $(stat -c %s $1)
pascal@120 19 Content-Disposition: attachment; filename=${2:-$1}
pascal@120 20
pascal@120 21 EOT
pascal@120 22 }
pascal@120 23
pascal@58 24 action()
pascal@58 25 {
pascal@117 26 case "$1" in
pascal@117 27 list|config|admin);;
pascal@120 28 backup) file=$(FILE file tmpname)
pascal@120 29 if [ -z "$file" ]; then
pascal@117 30 file=$(mktemp -p /tmp)
pascal@117 31 find */ | cpio -o -H newc | gzip -9 > $file
pascal@120 32 admin_download $file wiki-$(date '+%Y%m%d%H%M').cpio.gz
pascal@117 33 rm -f $file
pascal@117 34 exit 0
pascal@117 35 else
pascal@117 36 zcat $file | cpio -idmu $(echo */ | sed 's|/||g')
pascal@117 37 rm -rf $(dirname $file)
pascal@117 38 return 1
pascal@117 39 fi ;;
pascal@120 40 *) return 1 ;;
pascal@117 41 esac
pascal@117 42 PAGE_TITLE_link=false
pascal@117 43 editable=false
pascal@117 44 lang="${HTTP_ACCEPT_LANGUAGE%%,*}"
pascal@117 45 PAGE_TITLE="Administration"
pascal@121 46 curpass="$(POST curpass)"
pascal@58 47 secret="admin.secret"
pascal@121 48 if [ -n "$(POST setpass)" ]; then
pascal@121 49 if [ -z "$curpass" ]; then # unauthorized
pascal@58 50 if [ ! -s $secret -o "$(cat $secret)" == \
pascal@58 51 "$(echo $(POST password) | md5sum)" ]; then
pascal@121 52 curpass="$(POST password)"
pascal@58 53 fi
pascal@58 54 fi
pascal@121 55 [ -n "$curpass" ] && echo $curpass | md5sum > $secret
pascal@58 56 fi
pascal@58 57 if [ -n "$(POST save)" ]; then
pascal@120 58 admin_download $(POST file)
pascal@58 59 exit 0
pascal@58 60 fi
pascal@111 61 [ -n "$(POST restore)" ] && mv -f $(FILE data tmpname) $(POST file)
pascal@121 62 admin_enable Locales config- config_ .
pascal@121 63 admin_enable Plugins wkp_ wkp_ plugins
pascal@121 64 admin_enable Pages '' page pages
pascal@120 65 disabled="disabled=disabled"
pascal@121 66 [ -n "$curpass" ] && disabled="" &&
pascal@121 67 curpass="<input type=\"hidden\" name=\"curpass\" value=\"$curpass\" />
pascal@120 68 "
pascal@121 69 hr="$curpass<tr><td colspan=2><hr /></td><tr />"
pascal@58 70 CONTENT="
pascal@58 71 <table width=\"100%\">
pascal@58 72 <form method=\"post\" action=\"?action=admin\">
pascal@58 73 <tr><td><h2>$MDP</h2></td>
pascal@121 74 <td><input type=\"text\" name=\"password\" />$curpass
pascal@121 75 <input type=\"submit\" value=\"$DONE_BUTTON\" name=\"setpass\" /></td></tr>
pascal@120 76 </form>
pascal@121 77 "
pascal@121 78 mform="form method=\"post\" enctype=\"multipart/form-data\" action=\"?action"
pascal@121 79 while read section files test; do
pascal@121 80 CONTENT="$CONTENT
pascal@121 81 <$mform=admin\">
pascal@120 82 $hr
pascal@121 83 <tr><td><h2>$section</h2></td>
pascal@121 84 <td><input type=\"submit\" $disabled value=\"$DONE_BUTTON\" name=\"$section\" /></td></tr>
pascal@58 85 "
pascal@121 86 for i in $files ; do
pascal@121 87 case "$section" in
pascal@121 88 Plugins)
pascal@121 89 plugin=
pascal@121 90 eval $(grep ^plugin= $i)
pascal@121 91 [ -n "$plugin" ] || continue
pascal@121 92 eval $(grep ^description= $i)
pascal@121 93 alt="$(grep ^description_$lang= $i)"
pascal@121 94 [ -n "$alt" ] && eval $(echo "$alt" | sed 's/_..=/=/')
pascal@121 95 name="$(basename $i .sh)"
pascal@121 96 ;;
pascal@121 97 Locales)
pascal@121 98 j=${i#config-}
pascal@121 99 j=${j%.sh}
pascal@121 100 [ -n "$j" ] || continue
pascal@121 101 name="config_$j"
pascal@121 102 plugin="$j"
pascal@121 103 description="$(. ./$i ; echo $WIKI_TITLE)"
pascal@121 104 ;;
pascal@121 105 Pages)
pascal@121 106 j="$(basename $i .txt)"
pascal@121 107 plugin="<a href=\"?page=$j\">$j</a>"
pascal@121 108 name="page$j"
pascal@121 109 description="$([ -w $i ] || echo -n $PROTECTED_BUTTON)"
pascal@121 110 ;;
pascal@121 111 esac
pascal@121 112 CONTENT="$CONTENT
pascal@58 113 <tr><td><b>
pascal@121 114 <input type=checkbox $disabled $([ $test $i ] && echo 'checked=checked ') name=\"$name\" />
pascal@58 115 $plugin</b></td><td><i>$description</i></td></tr>"
pascal@121 116 done
pascal@121 117 CONTENT="$CONTENT\n</form>\n"
pascal@121 118 done <<EOT
pascal@121 119 Plugins $plugins_dir/*.sh -x
pascal@121 120 Locales config-*.sh -x
pascal@121 121 Pages pages/*.txt -w
pascal@121 122 EOT
pascal@58 123 CONTENT="$CONTENT
pascal@121 124 <$mform=admin\">
pascal@120 125 $hr
pascal@120 126 <tr><td><h2>Configuration</h2></td>
pascal@120 127 <td><select name="file" $disabled>
pascal@58 128 $(for i in template.html style.css config*.sh; do
pascal@58 129 [ -x $i ] && echo "<option>$i</option>"; done)
pascal@58 130 </select>
pascal@117 131 <input type=\"submit\" $disabled value=\"$DONE_BUTTON\" name=\"save\" />
pascal@117 132 <input type=\"file\" $disabled name=\"data\" />
pascal@117 133 <input type=\"submit\" $disabled value=\"$RESTORE\" name=\"restore\" /></td></tr>
pascal@117 134 </form>
pascal@121 135 <$mform=backup\">
pascal@120 136 $hr
pascal@117 137 <tr><td><h2>Data</h2></td>
pascal@117 138 <td><input type=\"submit\" $disabled name=\"save\" value=\"$DONE_BUTTON\" />
pascal@117 139 <input type=\"file\" $disabled name=\"file\" value=\"file\" />
pascal@120 140 <input type=\"submit\" $disabled name=\"restore\" value=\"$RESTORE\" />
pascal@117 141 </td></tr>
pascal@120 142 $(du -hs */ | sed 's|\(.*\)\t\(.*\)|<tr><td><b>\1</b></td><td><i>\2</i></td></tr>|')
pascal@58 143 </form>
pascal@58 144 </table>
pascal@58 145 "
pascal@58 146 }