tazpanel annotate settings.cgi @ rev 499

settings.cgi: disable live hardware clock on the page; base.css: fix statusbar height.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Sat May 23 17:20:17 2015 +0300 (2015-05-23)
parents 470ab4241de5
children 3117717c007d
rev   line source
pankso@42 1 #!/bin/sh
pankso@42 2 #
pankso@42 3 # System settings CGI interface: user, locale, keyboard, date. Since we
paul@205 4 # don't have multiple pages here there is only one case used to get command
paul@205 5 # values and the full content is followed directly.
pankso@42 6 #
al@419 7 # Copyright (C) 2011-2015 SliTaz GNU/Linux - BSD License
pankso@42 8 #
pankso@42 9
al@419 10
pankso@42 11 # Common functions from libtazpanel
al@419 12
pankso@42 13 . lib/libtazpanel
pankso@42 14 get_config
pankso@42 15
al@443 16 TITLE=$(_ 'TazPanel - Settings')
pankso@42 17
al@419 18
pascal@336 19 # Get system database. LDAP compatible.
al@419 20
al@437 21 getdb() {
pascal@336 22 getent $1 2>/dev/null || cat /etc/$1
pascal@336 23 }
pascal@336 24
al@498 25
al@437 26 listdb() {
al@498 27 for item in $(getdb $1 | cut -d: -f1); do
pascal@336 28 echo "<option>$item</option>\n"
pascal@336 29 done
pascal@336 30 }
pascal@336 31
al@498 32
al@476 33 restart_lxpanel() {
al@476 34 # `lxpanelctl restart` exists, but it breaks often leaving us without any panel
al@489 35 lxpanel_pid="$(ps -o comm,pid | fgrep lxpanel | awk '{print $2}')"
al@489 36 lxpanel_user="$(ps -o comm,user | fgrep lxpanel | awk '{print $2}')"
al@489 37 lxpanel_comm="$(ps -o pid,args | grep -e "^\ *$lxpanel_pid " | awk '{$1="";print}')"
al@489 38
al@489 39 if [ "$USER" == "$lxpanel_user" ]; then
al@489 40 kill $lxpanel_pid
al@498 41 DISPLAY=':0.0' XAUTHORITY='/var/run/slim.auth' $lxpanel_comm &
al@489 42 fi
al@476 43 }
al@419 44
al@419 45
al@419 46
pankso@42 47 #
pankso@42 48 # Commands executed before page loading.
pankso@42 49 #
pankso@42 50
pascal@81 51 case " $(GET) " in
pascal@115 52 *\ do\ *)
al@419 53 users=$(echo $QUERY_STRING | awk 'BEGIN{RS="&";FS="="}{if($1=="user") print $2}')
al@419 54 groups=$(echo $QUERY_STRING | awk 'BEGIN{RS="&";FS="="}{if($1=="group")print $2}')
al@419 55
al@419 56 case $(GET do) in
al@419 57
al@419 58 # Groups page
al@498 59 delgroups) for i in $groups; do delgroup $i; done ;;
al@498 60 addgroup) addgroup $groups ;;
al@498 61 addmember) addgroup $(GET member) $groups ;;
al@498 62 delmember) delgroup $(GET member) $groups ;;
al@419 63
al@419 64 # Users page
al@498 65 delusers) for i in $users; do deluser $i; done ;;
al@498 66 lockusers) for i in $users; do passwd -l $i | log; done ;;
al@498 67 unlockusers) for i in $users; do passwd -u $i | log; done ;;
al@498 68 chpasswd) echo "$users:$(GET password)" | chpasswd -m | log ;;
al@419 69 adduser)
al@419 70 if [ -n "$users" ]; then
al@498 71 name="$(GET name)"
al@498 72 adduser -D -s /bin/sh -g "${name:-SliTaz User}" -G users -h /home/$users $users
al@419 73 echo "$user:$(GET passwd)" | chpasswd -m | log
al@419 74 for i in audio cdrom floppy video tty; do addgroup $users $i; done
al@498 75 passwd -u $users | log
al@419 76 fi ;;
al@419 77
al@419 78 # System time
al@498 79 calendar) # display Yad date picker (AJAX)
al@498 80 new_date="$(DISPLAY=':0.0' XAUTHORITY='/var/run/slim.auth' \
al@498 81 yad --calendar --on-top --mouse --undecorated \
al@498 82 --window-icon=config-date --title="$(_ 'Set date')" \
al@498 83 --date-format='%x<span style="display:none">%F</span>')"
al@498 84 header
al@498 85 echo "$new_date"; exit 0;;
al@498 86
al@498 87 settz) # set timezone
al@498 88 GET tz > /etc/TZ ;;
al@498 89
al@498 90 date) # only accepted format is MMDDhhmm[[YY]YY][.ss]
al@498 91 if [ -n "$(GET dateFull)" ]; then
al@498 92 dateFull="$(GET dateFull)" # %F = YYYY-MM-DD
al@498 93 date $(printf '%02d%02d%02d%02d%d.%02d' "${dateFull:5:2}" \
al@498 94 "${dateFull:8:2}" "$(GET hour)" "$(GET min)" \
al@498 95 "${dateFull:0:4}" "$(GET sec)") >/dev/null
al@498 96 else
al@498 97 date $(printf '%02d%02d%02d%02d%d.%02d' "$(GET month)" \
al@498 98 "$(GET day)" "$(GET hour)" "$(GET min)" "$(GET year)" \
al@498 99 "$(GET sec)") >/dev/null
al@498 100 fi;;
al@498 101
al@498 102 rdate) # get and possibly set the system date/time from a remote host
al@419 103 rdate -s tick.greyware.com ;;
al@498 104
al@498 105 hwclock) # query and set hardware clock (RTC)
al@419 106 hwclock -w -u ;;
al@419 107
al@498 108 gethwclock) # get date/time from hardware clock (AJAX)
al@498 109 header; hwclock -ur | sed 's|0.000000 seconds||'; exit 0;;
al@498 110
al@419 111 esac
al@419 112 ;;
al@419 113
al@419 114
al@498 115 *\ gen_locale\ *) new_locale=$(GET gen_locale) ;;
al@498 116 *\ gen_keymap\ *) new_keymap=$(GET gen_keymap) ;;
al@498 117
pascal@142 118 *\ apply_xorg_kbd\ *)
pascal@142 119 sed -i "s/XkbLayout.*/XkbLayout \" \"$(GET apply_xorg_kbd)\"/" \
pascal@142 120 /etc/X11/xorg.conf.d/40-Keyboard.conf ;;
pankso@110 121 *\ style*)
pankso@110 122 sed -i s/'^STYLE.*'/"STYLE=\"$(GET style)\""/ $CONFIG
al@292 123 . $CONFIG ;;
al@474 124
al@474 125
al@474 126 *\ tweak\ *)
al@474 127 HOME="$(awk -F: -vu=$REMOTE_USER '$1==u{print $6}' /etc/passwd)"
al@474 128 [ -z "$HOME" ] && exit 0
al@474 129
al@476 130 dd="$HOME/.local/share/desktop-directories"; sd="$dd/SliTazMenu.directory"
al@476 131
al@498 132 case "$REMOTE_USER" in
al@498 133 root) color='31'; ind='#';;
al@498 134 *) color='32'; ind='$';;
al@474 135 esac
al@474 136
al@474 137 case $(GET tweak) in
al@474 138 monochrome)
al@474 139 # PS1='\u@\h:\w\$ '
al@474 140 sed -i "s|^PS1=.*|PS1='\\\\u@\\\\h:\\\\w\\\\$ind '|" $HOME/.profile;;
al@474 141 colored)
al@474 142 # PS1='\[\e[0;32m\]\u@\h\[\e[0m\]:\[\e[0;33m\]\w\[\e[0m\]\$ '
al@474 143 sed -i "s|^PS1=.*|PS1='\\\\\\[\\\\e\[0;${color}m\\\\\\]\\\\u@\\\\h\\\\\\[\\\\e\\[0m\\\\\\]:\\\\\\[\\\\e\\[0;33m\\\\\\]\\\\w\\\\\\[\\\\e\\[0m\\\\\\]\\\\$ind '|" $HOME/.profile;;
al@474 144 slitaz-*)
al@474 145 lxpanel="$HOME/.config/lxpanel"
al@474 146 if [ ! -e "$lxpanel" ]; then
al@474 147 mkdir -p "$lxpanel"; cp /etc/lxpanel/default /etc/lxpanel/slitaz $lxpanel
al@474 148 fi
al@489 149
al@476 150 for panel in $(find $lxpanel -type f -iname panel); do
al@474 151 awk -vicon="/usr/share/pixmaps/$(GET tweak).png" '
al@474 152 BEGIN{ found = "0"; }
al@474 153 {
al@474 154 if ($1 == "Plugin") { found = "1"; }
al@474 155
al@474 156 if (found == "1" && $1 == "type") {
al@474 157 if ($3 == "menu") found = "2"; else found = "0";
al@474 158 }
al@474 159
al@474 160 if (found == "2" && $1 == "Plugin") { found = "0"; }
al@474 161
al@474 162 if (found == "2" && index($1, "image")) {
al@474 163 printf " image=%s\n", icon;
al@474 164 found = 0;
al@474 165 } else {
al@474 166 print;
al@474 167 }
al@474 168 }
al@474 169 ' $panel > $panel.new
al@474 170 mv -f $panel.new $panel
al@474 171 done
al@474 172
al@476 173 restart_lxpanel;;
al@474 174 menu-notext)
al@474 175 mkdir -p $dd
al@476 176 echo -e '[Desktop Entry]\nType=Directory\nName=' > $sd
al@476 177 restart_lxpanel;;
al@474 178 menu-text)
al@476 179 [ -f "$sd" ] && rm "$sd"
al@476 180 restart_lxpanel;;
al@474 181 esac
al@474 182 exit 0
al@474 183 ;;
al@474 184
al@474 185
al@498 186 *\ menuIcon\ *) # return specified image (AJAX)
al@474 187 icon="/usr/share/pixmaps/$(GET menuIcon).png"
al@474 188 [ ! -r $icon ] && exit 0
al@474 189 header "Content-Type: image/png"; cat $icon; exit 0
al@474 190 ;;
pankso@42 191 esac
pankso@42 192
al@419 193
al@419 194
al@419 195
al@419 196
pankso@42 197 #
pankso@42 198 # Default xHTML content
pankso@42 199 #
al@419 200
al@474 201 header
pankso@42 202 xhtml_header
pankso@67 203
pankso@110 204 case " $(GET) " in
pascal@336 205 *\ group*)
pascal@336 206 #
pascal@336 207 # Groups management
pascal@336 208 #
al@474 209 check_root_tazpanel
al@474 210
pascal@336 211 cat <<EOT
al@443 212 <h2 id="groups">$(_ 'Manage groups')</h2>
pascal@336 213
pascal@336 214
al@419 215 <section>
al@419 216 <form class="wide">
al@419 217 <header>
al@419 218 <input type="hidden" name="groups"/>
al@443 219 <!-- $(_ 'Selection:') -->
al@443 220 <button name="do" value="delgroups" data-icon="delete">$(_ 'Delete group')</button>
al@419 221 </header>
al@419 222
al@419 223 <div class="scroll">
al@419 224 <table class="wide zebra scroll">
al@419 225 <thead>
al@419 226 <tr class="thead">
al@443 227 <td>$(_ 'Group')</td>
al@443 228 <td>$(_ 'Group ID')</td>
al@443 229 <td>$(_ 'Members')</td>
al@419 230 </tr>
al@419 231 </thead>
al@419 232 <tbody>
pascal@336 233 EOT
al@498 234 for group in $(getdb group | cut -d: -f1); do
pascal@336 235 IFS=':'
pascal@336 236 set -- $(getdb group | grep "^$group:")
pascal@336 237 unset IFS
pascal@336 238 cat <<EOT
al@419 239 <tr>
al@419 240 <td><input type="checkbox" name="group" value="$group" id="$group"/>
al@419 241 <label for="$group" data-icon="group">$group</label></td>
al@498 242 <td>$3</td>
al@498 243 <td>${4//,/, }</td>
al@419 244 </tr>
pascal@336 245 EOT
pascal@336 246 done
al@419 247 cat <<EOT
al@419 248 </tbody>
al@419 249 </table>
al@419 250 </div>
al@419 251 </form>
al@419 252 </section>
al@419 253
pascal@336 254
pascal@336 255 <section>
al@443 256 <header>$(_ 'Add a new group')</header>
al@498 257 <form class="wide">
al@419 258 <input type="hidden" name="groups"/>
al@498 259 <footer>$(_ 'Group name:') <input type="text" name="group"/>
al@498 260 <button type="submit" name="do" value="addgroup" data-icon="add">$(_ 'Create group')</button>
al@498 261 </footer>
al@419 262 </form>
pascal@336 263 </section>
pascal@336 264
al@419 265
pascal@336 266 <section>
al@443 267 <header>$(_ 'Manage group membership')</header>
al@498 268 <form class="wide">
al@419 269 <input type="hidden" name="groups"/>
al@498 270 <div>
al@498 271 $(_ 'Group name:') <select name="group">$(listdb group)</select>
al@498 272 $(_ 'User name:') <select name="member">$(listdb passwd)</select>
al@498 273 </div>
al@498 274 <footer>
al@498 275 <button name="do" value="addmember" data-icon="add">$(_ 'Add user')</button>
al@498 276 <button name="do" value="delmember" data-icon="delete">$(_ 'Remove user')</button>
al@498 277 </footer>
al@419 278 </form>
pascal@336 279 </section>
pascal@336 280
pascal@336 281 EOT
pascal@336 282 ;;
pascal@336 283
al@419 284
pankso@110 285 *\ user*)
pankso@110 286 #
pankso@110 287 # Users management
pankso@110 288 #
al@474 289 check_root_tazpanel
al@474 290
pankso@110 291 cat <<EOT
al@443 292 <h2 id="users">$(_ 'Manage users')</h2>
al@303 293
al@419 294 <section>
al@419 295 <form class="wide">
al@419 296 <header>
al@443 297 <!--$(_ 'Selection:')-->
al@443 298 <button name="do" value="delusers" data-icon="delete">$(_ 'Delete user')</button>
al@443 299 <button name="do" value="lockusers" data-icon="lock" >$(_ 'Lock user' )</button>
al@443 300 <button name="do" value="unlockusers" data-icon="unlock">$(_ 'Unlock user')</button>
al@419 301 </header>
al@303 302
al@419 303 <table class="wide zebra center">
al@419 304 <thead>
al@419 305 <tr>
al@443 306 <td>$(_ 'Login')</td>
al@443 307 <td>$(_ 'User ID')</td>
al@498 308 <td>$(_ 'User Name')</td>
al@443 309 <td>$(_ 'Home')</td>
al@443 310 <td>$(_ 'Shell')</td>
al@419 311 </tr>
al@419 312 </thead>
al@419 313 </tbody>
pascal@115 314 EOT
al@498 315 for login in $(getdb passwd | cut -d: -f1); do
al@498 316 if [ -d "/home/$login" ]; then
al@498 317 blocked=''; usericon='user'
al@498 318 if grep -qs "^$login:!" /etc/shadow; then
al@498 319 blocked='class="color31"'
al@498 320 usericon="lock"
al@498 321 fi
pascal@115 322 IFS=':'
pascal@336 323 set -- $(getdb passwd | grep "^$login:")
pascal@115 324 unset IFS
pascal@115 325 cat <<EOT
pascal@115 326 <tr>
al@419 327 <td style="white-space: nowrap">
al@419 328 <input type="checkbox" name="user" value="$login" id="$login"/>
al@498 329 <label for="$login" data-icon="$usericon" $blocked>$login</label></td>
al@419 330 <td>$3:$4</td>
al@419 331 <td>$(echo $5 | sed s/,.*//)</td>
al@419 332 <td>$6</td>
al@419 333 <td>$7</td>
pascal@115 334 </tr>
pascal@115 335 EOT
pankso@110 336 fi
pankso@110 337 done
al@419 338 cat <<EOT
al@419 339 </tbody>
al@419 340 </table>
al@303 341 EOT
al@419 342 cat <<EOT
al@419 343 <footer>
al@498 344 $(_ 'Password:')
al@498 345 <input type="password" name="password"/>
al@498 346 <button type="submit" name="do" value="chpasswd" data-icon="ok">$(_ 'Change password')</button>
al@419 347 </footer>
al@419 348 </form>
al@419 349 </section>
al@419 350
pankso@42 351
al@312 352 <section>
al@443 353 <header>$(_ 'Add a new user')</header>
al@303 354
al@419 355 <form>
al@419 356 <input type="hidden" name="users"/>
al@419 357 <table class="summary">
al@443 358 <tr><td>$(_ 'User login:')</td>
al@419 359 <td><input type="text" name="user" size="30" pattern="[a-z]*"/></td></tr>
al@443 360 <tr><td>$(_ 'User name:')</td>
al@419 361 <td><input type="text" name="name" size="30"/></td></tr>
al@443 362 <tr><td>$(_ 'User password:')</td>
al@419 363 <td><input type="password" name="passwd" size="30"/></td></tr>
al@419 364 </table>
al@419 365
al@419 366 <footer>
al@443 367 <button type="submit" name="do" value="adduser" data-icon="add">$(_ 'Create user')</button>
al@419 368 </footer>
al@419 369 </form>
al@312 370 </section>
al@470 371 EOT
pascal@147 372
al@498 373 # `who` output is empty in the SLiM sessions
al@470 374 if [ -n "$(who)" ]; then
al@470 375 cat <<EOT
al@312 376 <section>
al@443 377 <header>$(_ 'Current user sessions')</header>
al@419 378 <pre>$(who)</pre>
al@312 379 </section>
al@470 380 EOT
al@470 381 fi
al@303 382
al@470 383 # `last` output is empty (just header) in the Live mode
al@470 384 if [ "$(last | wc -l)" != "1" ]; then
al@470 385 cat <<EOT
al@312 386 <section>
al@443 387 <header>$(_ 'Last user sessions')</header>
al@419 388 <div class="scroll"><pre>$(last)</pre></div>
al@312 389 </section>
pankso@42 390 EOT
al@470 391 fi
pankso@110 392 ;;
al@313 393
al@313 394
al@313 395 *\ locale*)
al@313 396 #
al@313 397 # Choose locale
al@313 398 #
al@474 399 check_root_tazpanel
al@474 400
al@498 401 loading_msg "$(_ 'Please wait...')"
al@419 402
al@313 403 cur_loc=$(locale | grep LANG | cut -d= -f2)
al@419 404 cat <<EOT
al@498 405
al@498 406
al@443 407 <h2 id="locale">$(_ 'Choose locale')</h2>
al@313 408
al@419 409 <section>
al@443 410 <header>$(_ 'Current locale settings:')</header>
al@419 411 <div>
al@419 412 <pre>$(locale)</pre>
al@419 413 </div>
al@419 414 </section>
al@313 415
al@419 416 <section>
al@443 417 <header>$(_ 'Locales that are currently installed on the machine:')</header>
al@419 418 <div>
al@419 419 <pre>$(locale -a)</pre>
al@419 420 </div>
al@419 421 </section>
al@318 422 EOT
al@313 423
al@318 424 is_installed "glibc-locale"
al@318 425 [ $? = 1 ] &&
al@443 426 msg tip $(_ \
paul@319 427 "Can't see your language?<br/>You can \
pascal@441 428 <a href='pkgs.cgi?do=Install&amp;glibc-locale'>install glibc-locale</a> \
paul@319 429 to see a larger list of available locales.")
al@318 430
al@313 431
al@419 432 cat <<EOT
al@419 433 <section>
al@443 434 <header>$(_ 'Available locales:')</header>
al@419 435 <form class="wide">
al@419 436 <table class="wide zebra">
al@419 437 <thead>
al@443 438 <tr><td>$(_ 'Code')</td>
al@443 439 <td>$(_ 'Language')</td>
al@443 440 <td>$(_ 'Territory')</td>
al@443 441 <td>$(_ 'Description')</td>
al@419 442 </tr>
al@419 443 </thead>
al@419 444 <tbody>
al@313 445 EOT
al@419 446 for locale in $(find /usr/share/i18n/locales -type f | sort); do
al@313 447 locale_name=$(basename $locale)
al@313 448 locale_title=$(grep -m 1 -e '^ *title' $locale | cut -d'"' -f2)
al@313 449 if [ -n "$locale_title" ]; then
al@419 450 sel=''; [ "$locale_name" == "$cur_loc" ] && sel='checked="checked"'
al@419 451 cat <<EOT
al@419 452 <tr>
al@419 453 <td>
al@419 454 <input type="radio" name="gen_locale" value="$locale_name" $sel id="$locale_name"/>
al@419 455 <label for="$locale_name">$locale_name</label>
al@419 456 </td>
al@419 457 <td>$(gettext -d iso_639 "$(grep -m 1 -e '^ *language' $locale | cut -d '"' -f2)")</td>
al@419 458 <td>$(gettext -d iso_3166 "$(grep -m 1 -e '^ *territory' $locale | cut -d '"' -f2)")</td>
al@419 459 <td>$locale_title</td>
al@419 460 </tr>
al@313 461 EOT
al@313 462 fi
al@313 463 done
al@419 464 cat <<EOT
al@419 465 </tbody>
al@419 466 </table>
al@419 467
al@419 468 <footer>
al@443 469 <button type="submit" data-icon="ok">$(_ 'Activate')</button>
al@419 470 </footer>
al@419 471 </form>
al@419 472 </section>
al@313 473 EOT
al@313 474 ;;
al@313 475
al@313 476
al@474 477 *\ tweaks\ *)
al@474 478 #
al@474 479 # Small tweaks for user
al@474 480 #
al@474 481
al@474 482 user="$REMOTE_USER"; host="$(hostname)"
al@474 483 HOME="$(awk -F: -vu=$user '$1==u{print $6}' /etc/passwd)"
al@474 484 font="${TERM_FONT:-monospace}"; palette=$(echo $TERM_PALETTE | tr A-Z a-z)
al@474 485 case $user in
al@474 486 root) color=31; ind="#";;
al@474 487 *) color=32; ind="$";;
al@474 488 esac
al@474 489
al@474 490 prompt_bw="$user@$host:/usr/bin$ind"
al@474 491 prompt_c="<span class=\"color$color\">$user@$host</span>:<span class=\"color33\">/usr/bin</span>$ind"
al@474 492 cursor="<span class=\"color47\">_</span>"
al@474 493 cat <<EOT
al@474 494 <script type="text/javascript">
al@474 495 function tweak(tweakName) {
al@474 496 // Send request to the server
al@474 497 var hiddenImg = document.createElement('IMG');
al@474 498 hiddenImg.src = "settings.cgi?tweak=" + tweakName;
al@474 499 }
al@474 500 </script>
al@474 501
al@474 502 <section>
al@474 503 <header>$(_ 'Small quick tweaks for user %s' "$user")</header>
al@474 504
al@498 505 <div>
al@474 506 <fieldset><legend>$(_ 'Terminal prompt')</legend>
al@474 507 <table class="wide">
al@474 508 <tr>
al@474 509 <td>
al@474 510 <label>
al@474 511 <input type="radio" name="termPrompt" onclick="tweak('monochrome')"/>
al@474 512 $(_ 'Monochrome')
al@474 513 </label>
al@474 514 <pre class="term $palette" style="font-family: '$font'; height: 5rem;">
al@474 515 $prompt_bw uname -r<br/>$(uname -r)<br/>$prompt_bw date<br/>$(date)<br/>$prompt_bw $cursor
al@474 516 </pre>
al@474 517 </td>
al@474 518 <td>
al@474 519 <label>
al@474 520 <input type="radio" name="termPrompt" onclick="tweak('colored')"/>
al@474 521 $(_ 'Colored')
al@474 522 </label>
al@474 523 <pre class="term $palette" style="font-family: '$font'; height: 5rem;">
al@474 524 $prompt_c uname -r<br/>$(uname -r)<br/>$prompt_c date<br/>$(date)<br/>$prompt_c $cursor
al@474 525 </pre>
al@474 526 </td>
al@474 527 </tr>
al@474 528 </table>
al@474 529
al@474 530 <p>$(_ 'Manual edit: %s' "<a data-icon=\"conf\" href="index.cgi?file=$HOME/.profile">~/.profile</a>")<br/>
al@474 531 $(_ 'To take effect: log out and log in to system or execute command in the terminal:')</p>
al@474 532
al@474 533 <pre>. ~/.profile</pre>
al@474 534 </fieldset>
al@474 535
al@474 536 <br/>
al@474 537
al@474 538 <fieldset>
al@474 539 <legend>$(_ 'Menu button appearance')</legend>
al@474 540 <table class="wide">
al@474 541 <tr>
al@474 542 <td style="vertical-align: top">
al@474 543 <fieldset>
al@474 544 <legend>$(_ 'Icon:')</legend>
al@474 545 <label>
al@474 546 <input type="radio" name="menuIcon" onclick="tweak('slitaz-menu-empty')"/>
al@474 547 $(_ 'Do not show')
al@474 548 </label><br/>
al@474 549 <label>
al@474 550 <input type="radio" name="menuIcon" onclick="tweak('slitaz-button-red')"/>
al@474 551 <img src="?menuIcon=slitaz-button-red"/>
al@474 552 </label><br/>
al@474 553 <label>
al@474 554 <input type="radio" name="menuIcon" onclick="tweak('slitaz-menu')"/>
al@474 555 <img src="?menuIcon=slitaz-menu"/>
al@474 556 </label><br/>
al@474 557 <label>
al@474 558 <input type="radio" name="menuIcon" onclick="tweak('slitaz-button')"/>
al@474 559 <img src="?menuIcon=slitaz-button"/>
al@474 560 </label>
al@474 561 </fieldset>
al@474 562 </td>
al@474 563 <td style="vertical-align: top">
al@474 564 <fieldset>
al@474 565 <legend>$(_ 'Text:')</legend>
al@474 566 <label>
al@474 567 <input type="radio" name="menuText" onclick="tweak('menu-notext')"/>
al@474 568 $(_ 'Do not show')
al@474 569 </label><br/>
al@474 570 <label>
al@474 571 <input type="radio" name="menuText" onclick="tweak('menu-text')"/>
al@474 572 $(_ 'Show text')
al@474 573 </label>
al@474 574 </fieldset>
al@474 575 </td>
al@474 576 </tr>
al@474 577 </table>
al@474 578 <p>$(_ 'Manual edit: %s' \
al@474 579 "<a data-icon=\"conf\" href=\"index.cgi?file=$HOME/.local/share/desktop-directories/SliTazMenu.directory\">~/.local/share/desktop-directories/SliTazMenu.directory</a>
al@474 580 $(
al@474 581 find $HOME/.config/lxpanel -type f -name panel | awk -vh="$HOME" \
al@474 582 '{ printf "<a data-icon=\"conf\" href=\"index.cgi?file=%s\">%s</a> ", $1, gensub(h, "~", "")}'
al@474 583 )")</p>
al@474 584 </fieldset>
al@498 585 </div>
al@474 586 </section>
al@474 587 EOT
al@474 588 ;;
al@474 589
al@474 590
pankso@110 591 *)
pankso@110 592 #
paul@385 593 # Default system settings page
pankso@110 594 #
al@474 595 check_root_tazpanel
al@422 596
al@419 597 cat <<EOT
al@443 598 <h2>$(_ 'System settings')</h2>
al@419 599
al@443 600 <p>$(_ 'Manage system time, users or language settings')<p>
al@419 601
al@419 602 <form><!--
al@443 603 --><button name="users" data-icon="user" >$(_ 'Manage users' )</button><!--
al@443 604 --><button name="groups" data-icon="group">$(_ 'Manage groups')</button>
al@419 605 </form>
pankso@42 606
al@312 607 <section>
al@443 608 <header>$(_ 'System time')</header>
al@419 609 <div>
al@498 610 <form class="wide" id="sysTimeForm">
al@443 611 <fieldset><legend>$(_ 'Time zone:')</legend>
al@419 612 <select name="tz">
al@419 613 $(cd /usr/share/zoneinfo; find * -type f ! -name '*.tab' | sort | \
al@419 614 awk -vtz="$(cat /etc/TZ)" \
al@419 615 '{printf("<option%s>%s</option>", ($1 == tz)?" selected":"", $1)}')
al@419 616 </select>
al@443 617 <button name="do" value="settz" data-icon="ok">$(_ 'Change')</button>
al@419 618 </fieldset>
al@437 619
al@443 620 <fieldset><legend>$(_ 'System time:')</legend>
al@419 621 $(date | sed 's|[0-9][0-9]:[0-9:]*|<span id="time">&</span>|')
al@443 622 <button name="do" value="rdate" data-icon="sync">$(_ 'Sync online')</button>
al@419 623 </fieldset>
al@437 624
al@443 625 <fieldset id="hwclock1"><legend>$(_ 'Hardware clock:')</legend>
al@498 626 <span id="hwclocks">$(hwclock -ur | sed 's|0.000000 seconds||')</span>
al@443 627 <button name="do" value="hwclock" id="hwclock" data-icon="clock">$(_ 'Set hardware clock')</button>
al@419 628 </fieldset>
al@437 629
al@443 630 <fieldset><legend>$(_ 'Set date')</legend>
al@498 631 EOT
al@498 632 if [ -z "$(which yad)" ]; then
al@498 633 cat <<EOT
al@419 634 <input type="number" name="day" value="$(date +%d)" min="1" max="31" size="4" required/>
al@419 635 <select name="month" value="$(date +%m)">
al@419 636 $(for i in $(seq 12); do
al@437 637 sel=''; [ "$i" == "$(date +%-m)" ] && sel=' selected'
al@437 638 printf "<option value=\"%s\"$sel>%s</option>" $(date -d $i.01-01:01 '+%m %B')
al@419 639 done)
al@419 640 </select>
al@419 641 <input type="number" name="year" value="$(date +%Y)" min="2015" max="2030" size="6" required/>
al@498 642 EOT
al@498 643 else
al@498 644 cat <<EOT
al@498 645 <button onclick="datePicker(); return false">
al@498 646 <span id="dateTime" data-icon="calendar">$(date +%x)<span style="display:none">$(date +%F)</span></span>
al@498 647 </button>
al@498 648 EOT
al@498 649 fi
al@498 650 cat <<EOT
al@419 651 - <input type="number" name="hour" value="$(date +%H)" min="0" max="23" size="4" required/><!--
al@419 652 -->:<input type="number" name="min" value="$(date +%M)" min="0" max="59" size="4" required/><!--
al@419 653 -->:<input type="number" name="sec" value="00" min="0" max="59" size="4" required/>
al@498 654 EOT
al@498 655 if [ -z "$(which yad)" ]; then
al@498 656 cat <<EOT
al@443 657 <button name="do" value="date" data-icon="ok">$(_ 'Set date')</button>
al@498 658 EOT
al@498 659 else
al@498 660 cat <<EOT
al@498 661
al@498 662 <button data-icon="ok" onclick="submitSysTimeForm()">$(_ 'Set date')</button>
al@498 663 EOT
al@498 664 fi
al@498 665 cat <<EOT
al@419 666 </fieldset>
al@419 667 </form>
al@419 668 </div>
al@303 669
al@419 670 <script type="text/javascript">
al@419 671 // Live time on page
al@419 672 Date.prototype.timeNow = function() {
al@419 673 return ((this.getHours() < 10)?"0":"") + this.getHours() + ":" + ((this.getMinutes() < 10)?"0":"") + this.getMinutes() + ":" + ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
al@419 674 }
al@498 675 setInterval(function(){
al@498 676 document.getElementById('time').innerText = new Date().timeNow();
al@499 677 //ajax('settings.cgi?do=gethwclock', '1', 'hwclocks');
al@498 678 }, 1000);
al@437 679
al@498 680
al@498 681 // Run date picker and return value to the 'dateTime' element
al@498 682 function datePicker() {
al@498 683 ajax('settings.cgi?do=calendar', '1', 'dateTime');
al@498 684 }
al@498 685
al@498 686 // Actions to do before form submit and submit
al@498 687 function submitSysTimeForm() {
al@498 688 sysTimeForm = document.getElementById('sysTimeForm');
al@498 689
al@498 690 var dateFull = document.createElement('INPUT');
al@498 691 dateFull.name = 'dateFull';
al@498 692 dateFull.value = document.getElementById('dateTime').childNodes[1].innerText;
al@498 693 dateFull.type = 'hidden';
al@498 694 sysTimeForm.appendChild(dateFull);
al@498 695
al@498 696 var submitDo = document.createElement('INPUT');
al@498 697 submitDo.name = 'do'; submitDo.value = 'date';
al@498 698 submitDo.type = 'hidden';
al@498 699 sysTimeForm.appendChild(submitDo);
al@498 700
al@498 701 sysTimeForm.submit();
al@498 702 }
al@419 703 </script>
al@312 704 </section>
pankso@110 705 EOT
al@419 706
al@419 707
pankso@110 708 #
pankso@110 709 # Locale settings
pankso@110 710 #
al@419 711 cat <<EOT
al@312 712 <section>
al@443 713 <header id="locale">$(_ 'System language')</header>
al@419 714 <div>
al@419 715 <form>
pankso@42 716 EOT
pankso@42 717 # Check if a new locale was requested
pankso@42 718 if [ -n "$new_locale" ]; then
pankso@42 719 rm -rf /usr/lib/locale/$new_locale
pankso@42 720 localedef -i $new_locale -c -f UTF-8 \
pankso@42 721 /usr/lib/locale/$new_locale
pankso@42 722 # System configuration
pankso@42 723 echo "LANG=$new_locale" > /etc/locale.conf
pankso@42 724 echo "LC_ALL=$new_locale" >> /etc/locale.conf
al@443 725 msg warn "$(_ \
al@443 726 'You must logout and login again to your current session to use %s locale.' $new_locale)"
pankso@42 727 else
al@419 728 cat <<EOT
al@443 729 $(_ 'Current system locale:')
al@419 730 <strong>$(locale | grep LANG | cut -d= -f2)</strong>
al@443 731 <button name="locale" data-icon="locale">$(_ 'Change')</button>
al@419 732 EOT
pankso@42 733 fi
al@419 734 cat <<EOT
al@419 735 </div>
al@419 736 </form>
al@312 737 </section>
pankso@110 738
al@419 739
al@312 740 <section>
al@443 741 <header id="keymap">$(_ 'Keyboard layout')</header>
al@419 742 <div>
pascal@141 743 EOT
pascal@141 744 # Check if a new keymap was requested
pascal@141 745 if [ -n "$new_keymap" ]; then
pascal@141 746 echo "$new_keymap" > /etc/keymap.conf
pascal@141 747 if [ -x /bin/loadkeys ]; then
pascal@141 748 loadkeys $new_keymap
pascal@141 749 else
pascal@141 750 loadkmap < /usr/share/kmap/$new_keymap.kmap
pascal@141 751 fi
pascal@141 752 fi
al@419 753
pascal@142 754 keymap=$(cat /etc/keymap.conf)
al@443 755 _ 'Current console keymap: %s' $keymap
pascal@142 756 if [ -n "$keymap" ]; then
pascal@142 757 case "$keymap" in
pascal@142 758 fr_CH*)
pascal@142 759 keymap="ch" ;;
pascal@142 760 ru)
al@419 761 keymap="us,ru" ;;
pascal@142 762 slovene)
pascal@142 763 keymap=si ;;
pascal@142 764 *)
pascal@142 765 keymap=${keymap%-lat*}
pascal@142 766 keymap=${keymap%-abnt2} ;;
pascal@142 767 esac
pascal@142 768 keyboard_config=/etc/X11/xorg.conf.d/40-Keyboard.conf
al@419 769 cat <<EOT
al@419 770 <form id="settings"></form>
al@419 771 <form id="index" action="index.cgi"></form>
al@419 772 <br/>
al@443 773 $(_ 'Suggested keymap for Xorg:') $keymap
al@443 774 <button form="settings" name="apply_xorg_kbd" value="$keymap" data-icon="ok">$(_ 'Activate')</button>
al@443 775 <button form="index" name="file" value="$keyboard_config" data-icon="edit">$(_ 'Edit')</button>
al@419 776 <br/>
pascal@142 777 EOT
pascal@142 778 fi
al@419 779 cat <<EOT
al@419 780 <form>
al@443 781 $(_ 'Available keymaps:')
al@419 782 <select name="gen_keymap">
al@419 783 $(list_keymaps)
al@419 784 </select>
al@443 785 <button type="submit" data-icon="ok">$(_ 'Activate')</button>
al@419 786 </form>
al@419 787 </div>
al@312 788 </section>
pascal@141 789
al@419 790
al@312 791 <section>
al@443 792 <header>$(_ 'Panel configuration')</header>
al@419 793 <div>
al@419 794 <form class="wide">
al@443 795 <fieldset><legend>$(_ 'Style:')</legend>
al@419 796 <select name="style">$(list_styles)</select>
al@443 797 <button data-icon="ok">$(_ 'Activate')</button>
al@419 798 </fieldset>
al@419 799 </form>
al@419 800
al@443 801 <fieldset><legend>$(_ 'Configuration files:')</legend>
al@443 802 <button form="index" name="file" value="$CONFIG" data-icon="edit">$(_ 'Panel')</button>
al@443 803 <button form="index" name="file" value="$HTTPD_CONF" data-icon="edit">$(_ 'Server')</button>
al@419 804 </fieldset>
al@419 805
al@443 806 <p>$(_ 'TazPanel provides a debugging mode and page:')
pascal@441 807 <a href="index.cgi?debug">debug</a>
pankso@110 808 </p>
al@419 809 </div>
al@312 810 </section>
pankso@42 811 EOT
pankso@110 812 ;;
pankso@110 813 esac
pankso@42 814
pankso@42 815 xhtml_footer
pankso@42 816 exit 0