slitaz-forge rev 293
pkgs: New features included, see README. Site yet not completed, but works fine...
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Fri Apr 20 17:42:46 2012 +0300 (2012-04-20) |
parents | 58d1f4820252 |
children | 1a1a1a02cb82 |
files | pkgs/README pkgs/lib/footer.sh pkgs/lib/header.sh pkgs/pkgs.css pkgs/search.sh pkgs/style/images/loader.gif |
line diff
1.1 --- a/pkgs/README Fri Apr 20 16:08:49 2012 +0200 1.2 +++ b/pkgs/README Fri Apr 20 17:42:46 2012 +0300 1.3 @@ -15,21 +15,20 @@ 1.4 * all css now in _standard_ slitaz.css (from website) and pkgs.css 1.5 * nice URLs to share via copy them from address bar 1.6 * improve debug mode 1.7 + * added progress ticker while page is not complete 1.8 + * added style highlighting for the receipts 1.9 1.10 TODO 1.11 ---- 1.12 1.13 * Add package page with all info and an install link 1.14 (tazpkg:// or tazpkg: works in Midori 1.15 - * implement POST method of the form submitting 1.16 - * implement more nice redirect, than http refresh 1.17 * add hint 'You are can search for depends loop, if textfield is empty'... 1.18 - * add progress ticker while page is not complete 1.19 * caching the footer summary 1.20 - * add style highlighting for the receipts 1.21 * clear the file names, so our goal is URL like: 1.22 http://pkgs.slitaz.org/?package=geany 1.23 (form action="$SCRIPT_NAME" -> action="/") 1.24 * standard 4.0 have /usr/lib/slitaz/httphelper (without '.sh') 1.25 + * display dependency trees as an unordered lists 1.26 1.27 ================================================================================
2.1 --- a/pkgs/lib/footer.sh Fri Apr 20 16:08:49 2012 +0200 2.2 +++ b/pkgs/lib/footer.sh Fri Apr 20 17:42:46 2012 +0300 2.3 @@ -1,9 +1,9 @@ 2.4 cat << _EOT_ 2.5 2.6 -<center> 2.7 -<i>$(eval_ngettext "\$PKGS package" "\$PKGS packages" $PKGS) 2.8 -$(eval_ngettext "and \$FILES file in \$SLITAZ_VERSION database" "and \$FILES files in \$SLITAZ_VERSION database" $FILES)</i> 2.9 -</center> 2.10 +<div class="summary"> 2.11 +$(eval_ngettext "\$PKGS package" "\$PKGS packages" $PKGS) 2.12 +$(eval_ngettext "and \$FILES file in \$SLITAZ_VERSION database" "and \$FILES files in \$SLITAZ_VERSION database" $FILES) 2.13 +</div> 2.14 2.15 <!-- End of content --> 2.16 </div> 2.17 @@ -14,6 +14,7 @@ 2.18 <script type="text/javascript"> 2.19 var q=document.getElementById('query'); 2.20 var v=q.value; q.value=''; q.focus(); q.value=v; 2.21 + document.getElementById('ticker').style.visibility='hidden'; 2.22 </script> 2.23 </body> 2.24 </html>
3.1 --- a/pkgs/lib/header.sh Fri Apr 20 16:08:49 2012 +0200 3.2 +++ b/pkgs/lib/header.sh Fri Apr 20 17:42:46 2012 +0300 3.3 @@ -29,7 +29,4 @@ 3.4 <h1><a href="./">$(gettext "SliTaz Packages")</a></h1> 3.5 </div> 3.6 3.7 -<!-- Content --> 3.8 -<div id="content"> 3.9 - 3.10 _EOF_
4.1 --- a/pkgs/pkgs.css Fri Apr 20 16:08:49 2012 +0200 4.2 +++ b/pkgs/pkgs.css Fri Apr 20 17:42:46 2012 +0300 4.3 @@ -1,50 +1,22 @@ 4.4 - 4.5 -#s_form { 4.6 - margin: auto; 4.7 - text-align: center; 4.8 - padding: 20px; 4.9 -} 4.10 4.11 /* Be compatible with old FF and Webkit version. */ 4.12 -input[type="submit"] { 4.13 +/*input[type="submit"] { 4.14 -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); 4.15 -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); 4.16 box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); 4.17 -} 4.18 +}*/ 4.19 4.20 -#header { 4.21 - border-bottom: 8px solid #D66018; 4.22 -} 4.23 +#header { border-bottom: 8px solid #D66018; } 4.24 +#header h1 { padding: 3px 0 0 42px; } 4.25 +#network { padding: 12px 5px 0; } 4.26 +#footer { background-color: #FFF; } 4.27 4.28 -#header h1 { 4.29 - padding: 3px 0 0 42px; 4.30 -} 4.31 - 4.32 -#network { 4.33 - padding: 12px 5px 0; 4.34 -} 4.35 - 4.36 -table, input, textarea, select { 4.37 - -moz-border-radius: 4px; 4.38 - -webkit-border-radius: 4px; 4.39 - border-radius: 4px; 4.40 -} 4.41 - 4.42 -input[type=text] { 4.43 - width: 40%; 4.44 -} 4.45 - 4.46 -#footer { 4.47 - background-color: #FFF; 4.48 -} 4.49 - 4.50 -select:focus, select:hover, input:focus, input:hover { 4.51 +/* COMMON STYLES */ 4.52 +select:focus, select:hover, input:focus, input[type]:hover { 4.53 color: #000; 4.54 - outline: 0 none; 4.55 -webkit-box-shadow: 0 0 4px rgba(0,0,0,0.3); 4.56 -moz-box-shadow: 0 0 4px rgba(0,0,0,0.3); 4.57 } 4.58 - 4.59 input, select { 4.60 -webkit-transition: all 0.3s ease-in-out; 4.61 -moz-transition: all 0.3s ease-in-out; 4.62 @@ -52,46 +24,124 @@ 4.63 -ms-transition: all 0.3s ease-in-out; 4.64 transition: all 0.3s ease-in-out; 4.65 } 4.66 +select, input[type="text"], input[type="submit"] { 4.67 + font-size: 14px; 4.68 + border: 1px solid #CCC; 4.69 + -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; 4.70 + color: #444; 4.71 + outline: 0 none; 4.72 +} 4.73 4.74 -input[type="submit"], input[type="text"], textarea { 4.75 - color: #444; 4.76 +/* TABLE */ 4.77 +table { 4.78 + width: 100%; 4.79 + font-size: 12px; 4.80 border: 1px solid #CCC; 4.81 + -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; 4.82 + border-spacing: 0; 4.83 + padding: 2px; 4.84 +} 4.85 +tr { 4.86 + margin: 0; 4.87 padding: 4px; 4.88 - margin: 4px 0px; 4.89 +} 4.90 +td { 4.91 + margin: 0; 4.92 + padding: 6px; 4.93 + vertical-align: top; 4.94 +} 4.95 +tr.even { 4.96 + background-color: #F0F0F0; 4.97 +} 4.98 +td.first { 4.99 + width: 1%; 4.100 + white-space: nowrap; 4.101 +} 4.102 +td.pre { 4.103 + padding-left: 2em; 4.104 + white-space: nowrap; 4.105 +} 4.106 + 4.107 + 4.108 +/* --- */ 4.109 + 4.110 +input[type="submit"] { 4.111 + padding: 4px; 4.112 + margin: 0; 4.113 font-size: 14px; 4.114 - line-height: 1.2em; 4.115 background-image: -webkit-linear-gradient(#FAFAFA, #F4F4F4 40%, #E5E5E5); 4.116 background-image: -moz-linear-gradient(#FAFAFA, #F4F4F4 40%, #E5E5E5); 4.117 - -webkit-appearance: none; 4.118 +/* -webkit-appearance: none; 4.119 -webkit-padding-end: 6px; 4.120 - -webkit-padding-start: 6px; 4.121 + -webkit-padding-start: 6px;*/ 4.122 } 4.123 4.124 -input[type="submit"]:hover { 4.125 - color: #000; 4.126 +div.form { 4.127 + display: table; 4.128 + table-layout: auto; 4.129 + width: 100%; 4.130 + padding: 0; 4.131 + margin: 0 0 20px 0; /* t r b l */ 4.132 } 4.133 4.134 -input[type="text"], textarea { background: #fefefe; border: 1px solid #ccc; } 4.135 -/*input[type="file"] { border: 2px solid #ddd; }*/ 4.136 -/*input[type="checkbox"] { background: #fefefe; }*/ 4.137 +#s_form { 4.138 + display: table-row; 4.139 + padding: 0; 4.140 + margin: 0; 4.141 + text-align: center; 4.142 + border: 1pt solid yellow; 4.143 +} 4.144 4.145 -input[type=submit], select { cursor: pointer; } 4.146 +.small { 4.147 + white-space: nowrap; 4.148 + display: table-cell; 4.149 + width: 10%; 4.150 +} 4.151 4.152 select { 4.153 - background-image: url(style/images/down.png), 4.154 - -webkit-linear-gradient(#FAFAFA, #F4F4F4 40%, #E5E5E5); 4.155 + padding: 4px; 4.156 + margin: 0 4px; 4.157 + background-image: -webkit-linear-gradient(#FAFAFA, #F4F4F4 40%, #E5E5E5); 4.158 background-position: center right; 4.159 background-repeat: no-repeat; 4.160 - 4.161 - color: #444444; 4.162 - border: 1px solid #cccccc; 4.163 - padding: 4px 32px 4px 4px; 4.164 - margin: 4px 0px; 4.165 - font-size: 14px; 4.166 - line-height: 1.2em; 4.167 -webkit-appearance: none; 4.168 + cursor: pointer; 4.169 } 4.170 4.171 -poption { 4.172 - padding: 4px 32px 4px 4px; 4.173 +span.stretch { 4.174 + display: table-cell; 4.175 + width: 100%; 4.176 + padding: 0 4px; 4.177 + margin: 0; 4.178 } 4.179 + 4.180 +input[type="text"] { 4.181 + padding: 4px 0; 4.182 + margin: 0; 4.183 + border: 1px solid #CCC; 4.184 + background-color: #FEFEFE; 4.185 +} 4.186 + 4.187 +div#ticker img { 4.188 + float: right; 4.189 +} 4.190 + 4.191 +.summary { 4.192 + margin-top: 12px; 4.193 + text-align: center; 4.194 + font-style: italic; 4.195 +} 4.196 +.match { 4.197 + font-weight: bold; 4.198 + color: #F33; 4.199 +} 4.200 + 4.201 +/* SYNTAX HIGHLIGHTER */ 4.202 +.r-comment { color: #888; } 4.203 +.r-literal { color: #f35a00; } 4.204 +.r-var { font-weight: bold; color: #070; } 4.205 +.r-func { color: #4895DD; } 4.206 +.r-url { text-decoration: none; } 4.207 +.r-com, .r-scom { color: #4895DD; font-weight: bold; /*background-color: #cde;*/ } 4.208 +.r-path { text-decoration: underline; color: brown; } 4.209 +.r-param { font-weight: bold; color: #444; }
5.1 --- a/pkgs/search.sh Fri Apr 20 16:08:49 2012 +0200 5.2 +++ b/pkgs/search.sh Fri Apr 20 17:42:46 2012 +0300 5.3 @@ -6,7 +6,7 @@ 5.4 5.5 # Parse query string 5.6 . /usr/lib/slitaz/httphelper.sh 5.7 - 5.8 +echo -n "0" > $HOME/ifEven 5.9 5.10 # User preferred language 5.11 # parameter $1 have priority; without parameter $1 - browser language only 5.12 @@ -40,57 +40,59 @@ 5.13 echo ${ll_CC%_*} 5.14 } 5.15 5.16 -# Nice URL replacer - to copy url from address bar 5.17 -# TODO: deal with POST method of form submitting 5.18 -nice_url() { 5.19 - # if user submitted a form 5.20 - if [ ! -z $(GET submit) ]; then 5.21 - OBJECT="$(GET object)" 5.22 - SEARCH="$(GET query)" 5.23 - case $OBJECT in 5.24 - Package) NICE="package=$SEARCH";; 5.25 - Desc) NICE="desc=$SEARCH";; 5.26 - Tags) NICE="tags=$SEARCH";; 5.27 - Receipt) NICE="receipt=$SEARCH";; 5.28 - Depends) NICE="depends=$SEARCH";; 5.29 - BuildDepends) NICE="builddepends=$SEARCH";; 5.30 - File) NICE="file=$SEARCH";; 5.31 - File_list) NICE="filelist=$SEARCH";; 5.32 - FileOverlap) NICE="fileoverlap=$SEARCH";; 5.33 - esac 5.34 - # version, if needed 5.35 - version="$(GET version)" 5.36 - if [ ! -z "$version" -a "$version" != "cooking" ]; then 5.37 - NICE="${NICE}&version=${version:0:1}" 5.38 - fi 5.39 - # lang, if needed 5.40 - query_lang="$(GET lang)" 5.41 - pref_lang="$(user_lang)" 5.42 - browser_lang="$(ll_lang $pref_lang)" 5.43 - if [ ! -z "$query_lang" -a "$query_lang" != "$browser_lang" ]; then 5.44 - NICE="${NICE}&lang=$query_lang" 5.45 - fi 5.46 - # verbose, if needed 5.47 - verboseq="$(GET verbose)" 5.48 - if [ ! -z "$verboseq" -a "$verboseq" != "0" ]; then 5.49 - NICE="${NICE}&verbose=1" 5.50 - fi 5.51 - # redirect 5.52 - # TODO: implement HTTP 301 Redirect 5.53 - cat << EOT 5.54 -Content-type: text/html 5.55 - 5.56 -<!DOCTYPE html> 5.57 -<html><head><meta http-equiv="refresh" content="0;url=$SCRIPT_NAME?$NICE" /> 5.58 -<title>Redirect</title></head></html> 5.59 -EOT 5.60 -# echo "Location: $SCRIPT_NAME?$NICE" 5.61 -# echo 5.62 - exit 0 5.63 - fi 5.64 +# Part of query to indicate current debug mode 5.65 +ifdebug() { 5.66 + ifdebug="$(GET debug)" 5.67 + [ ! -z "$ifdebug" ] && ifdebug="$1$ifdebug" 5.68 + echo "$ifdebug" 5.69 } 5.70 5.71 -nice_url 5.72 +# GET or POST variable 5.73 +GETPOST() { 5.74 + echo "$(POST $1)$(GET $1)" 5.75 +} 5.76 + 5.77 +# Nice URL replacer - to copy url from address bar 5.78 +if [ "$REQUEST_METHOD" == "POST" -o ! -z $(GET submit) ]; then 5.79 + OBJECT=$(GETPOST object) 5.80 + SEARCH=$(GETPOST query) 5.81 + case "$OBJECT" in 5.82 + Package) NICE="package=$SEARCH";; 5.83 + Desc) NICE="desc=$SEARCH";; 5.84 + Tags) NICE="tags=$SEARCH";; 5.85 + Receipt) NICE="receipt=$SEARCH";; 5.86 + Depends) NICE="depends=$SEARCH";; 5.87 + BuildDepends) NICE="builddepends=$SEARCH";; 5.88 + File) NICE="file=$SEARCH";; 5.89 + File_list) NICE="filelist=$SEARCH";; 5.90 + FileOverlap) NICE="fileoverlap=$SEARCH";; 5.91 + esac 5.92 + # version, if needed 5.93 + version="$(GETPOST version)" 5.94 + if [ ! -z "$version" -a "$version" != "cooking" ]; then 5.95 + NICE="${NICE}&version=${version:0:1}" 5.96 + fi 5.97 + # lang, if needed 5.98 + query_lang="$(GETPOST lang)" 5.99 + pref_lang="$(user_lang)" 5.100 + browser_lang="$(ll_lang $pref_lang)" 5.101 + if [ ! -z "$query_lang" -a "$query_lang" != "$browser_lang" ]; then 5.102 + NICE="${NICE}&lang=$query_lang" 5.103 + fi 5.104 + # verbose, if needed 5.105 + verboseq="$(GETPOST verbose)" 5.106 + if [ ! -z "$verboseq" -a "$verboseq" != "0" ]; then 5.107 + NICE="${NICE}&verbose=1" 5.108 + fi 5.109 + # debug, if needed 5.110 + debugq="$(GET debug)" 5.111 + if [ ! -z "$debugq" -a "$debugq" == "debug" ]; then 5.112 + NICE="${NICE}&debug" 5.113 + fi 5.114 + # redirect 5.115 + header "HTTP/1.1 301 Moved Permanently" "Location: $SCRIPT_NAME?$NICE" 5.116 + exit 0 5.117 +fi 5.118 5.119 5.120 5.121 @@ -131,11 +133,10 @@ 5.122 esac 5.123 done 5.124 [ -z "$SLITAZ_VERSION" ] && SLITAZ_VERSION=cooking 5.125 -#[ -n "$SEARCH" ] && REQUEST_METHOD="POST" 5.126 -#[ "$SEARCH" == "." ] && SEARCH= 5.127 5.128 - 5.129 +# 5.130 # Content negotiation for Gettext 5.131 +# 5.132 LANG=$(user_lang $(GET lang)) 5.133 lang="$(ll_lang $LANG)" 5.134 export LANG LC_ALL=$LANG 5.135 @@ -167,45 +168,48 @@ 5.136 WOK=/home/slitaz/$SLITAZ_VERSION/wok 5.137 PACKAGES_REPOSITORY=/home/slitaz/$SLITAZ_VERSION/packages 5.138 5.139 - 5.140 -# TODO: header function from httphelper 5.141 -echo "Content-type: text/html" 5.142 -echo 5.143 - 5.144 # Search form 5.145 -# TODO: implement POST method 5.146 -# ... method="post" enctype="multipart/form-data" ... 5.147 # TODO: add hint 'You are can search for depends loop, if textfield is empty'... 5.148 # add progress ticker while page is not complete 5.149 search_form() 5.150 { 5.151 cat << _EOT_ 5.152 5.153 -<form id="s_form" method="get" action="$SCRIPT_NAME"> 5.154 +<div class="form"> 5.155 +<form id="s_form" method="post" action="$SCRIPT_NAME$(ifdebug '?')"> 5.156 <input type="hidden" name="lang" value="$lang" /> 5.157 - <select name="object"> 5.158 - <option value="Package">$(gettext "Package")</option> 5.159 - <option $selected_desc value="Desc">$(gettext "Description")</option> 5.160 - <option $selected_tags value="Tags">$(gettext "Tags")</option> 5.161 - <option $selected_receipt value="Receipt">$(gettext "Receipt")</option> 5.162 - <option $selected_depends value="Depends">$(gettext "Depends")</option> 5.163 - <option $selected_build_depends value="BuildDepends">$(gettext "Build depends")</option> 5.164 - <option $selected_file value="File">$(gettext "File")</option> 5.165 - <option $selected_file_list value="File_list">$(gettext "File list")</option> 5.166 - <option $selected_overlap value="FileOverlap">$(gettext "common files")</option> 5.167 - </select> 5.168 - <input type="text" name="query" id="query" size="20" value="$SEARCH" /> 5.169 - <select name="version"> 5.170 - <option value="cooking">$(gettext "cooking")</option> 5.171 - <option $selected_stable value="stable">4.0</option> 5.172 - <option $selected_3 value="3.0">3.0</option> 5.173 - <option $selected_2 value="2.0">2.0</option> 5.174 - <option $selected_1 value="1.0">1.0</option> 5.175 - <option $selected_tiny value="tiny">$(gettext "tiny")</option> 5.176 - <option $selected_undigest value="undigest">$(gettext "undigest")</option> 5.177 - </select> 5.178 - <input type="submit" name="submit" value="$(gettext 'Search')" /> 5.179 + <span class="small"> 5.180 + <select name="object"> 5.181 + <option value="Package">$(gettext "Package")</option> 5.182 + <option $selected_desc value="Desc">$(gettext "Description")</option> 5.183 + <option $selected_tags value="Tags">$(gettext "Tags")</option> 5.184 + <option $selected_receipt value="Receipt">$(gettext "Receipt")</option> 5.185 + <option $selected_depends value="Depends">$(gettext "Depends")</option> 5.186 + <option $selected_build_depends value="BuildDepends">$(gettext "Build depends")</option> 5.187 + <option $selected_file value="File">$(gettext "File")</option> 5.188 + <option $selected_file_list value="File_list">$(gettext "File list")</option> 5.189 + <option $selected_overlap value="FileOverlap">$(gettext "common files")</option> 5.190 + </select> 5.191 + </span> 5.192 + <span class="stretch"> 5.193 + <input autofocus type="text" name="query" id="query" value="$SEARCH" /> 5.194 + </span> 5.195 + <span class="small"> 5.196 + <select name="version"> 5.197 + <option value="cooking">$(gettext "cooking")</option> 5.198 + <option $selected_stable value="stable">4.0</option> 5.199 + <option $selected_3 value="3.0">3.0</option> 5.200 + <option $selected_2 value="2.0">2.0</option> 5.201 + <option $selected_1 value="1.0">1.0</option> 5.202 + <option $selected_tiny value="tiny">$(gettext "tiny")</option> 5.203 + <option $selected_undigest value="undigest">$(gettext "undigest")</option> 5.204 + </select> 5.205 + </span> 5.206 + <span class="small"> 5.207 + <input type="submit" value="$(gettext 'Search')" /> 5.208 + </span> 5.209 </form> 5.210 +</div> 5.211 _EOT_ 5.212 } 5.213 5.214 @@ -233,23 +237,59 @@ 5.215 fi 5.216 } 5.217 5.218 -package_entry() 5.219 -{ 5.220 -if [ -s "$(dirname $0)/$SLITAZ_VERSION/$CATEGORY.html" ]; then 5.221 - cat << _EOT_ 5.222 -<a href="$SLITAZ_VERSION/$CATEGORY.html#$PACKAGE">$PACKAGE</a> $(installed_size $PACKAGE): $SHORT_DESC 5.223 +oddeven() { 5.224 + ifEven=$(cat $HOME/ifEven) 5.225 + [ "$1" == "1" ] && ifEven="0" 5.226 + case "$ifEven" in 5.227 + "0") ifEven="1"; echo -n " class=\"even\"";; 5.228 + "1") ifEven="0";; 5.229 + esac 5.230 + echo -n "$ifEven" > $HOME/ifEven 5.231 +} 5.232 + 5.233 +package_entry() { 5.234 + cat << EOT 5.235 +<tr$(oddeven $1)> 5.236 +EOT 5.237 + if [ -s "$(dirname $0)/$SLITAZ_VERSION/$CATEGORY.html" ]; then 5.238 + cat << _EOT_ 5.239 + <td class="first"><a href="$SLITAZ_VERSION/$CATEGORY.html#$PACKAGE">$PACKAGE</a></td> 5.240 + <td class="first">$(installed_size $PACKAGE)</td> 5.241 + <td>$SHORT_DESC</td> 5.242 _EOT_ 5.243 -else 5.244 - PACKAGE_HREF="<u>$PACKAGE</u>" 5.245 - PACKAGE_URL="http://mirror.slitaz.org/packages/$SLITAZ_VERSION/$PACKAGE-$VERSION$EXTRA_VERSION.tazpkg" 5.246 - nslookup mirror.slitaz.org | grep -q 127.0.0.1 && 5.247 - PACKAGE_URL="http://mirror.slitaz.org/packages/$SLITAZ_VERSION/$(cd /var/www/slitaz/mirror/packages/$SLITAZ_VERSION ; ls $PACKAGE-$VERSION*.tazpkg)" 5.248 - busybox wget -s $PACKAGE_URL 2> /dev/null && 5.249 - PACKAGE_HREF="<a href=\"$PACKAGE_URL\">$PACKAGE</a>" 5.250 - cat << _EOT_ 5.251 -$PACKAGE_HREF $(installed_size $PACKAGE): $SHORT_DESC 5.252 + else 5.253 + PACKAGE_HREF="<u>$PACKAGE</u>" 5.254 + PACKAGE_URL="http://mirror.slitaz.org/packages/$SLITAZ_VERSION/$PACKAGE-$VERSION$EXTRA_VERSION.tazpkg" 5.255 + nslookup mirror.slitaz.org | grep -q 127.0.0.1 && 5.256 + PACKAGE_URL="http://mirror.slitaz.org/packages/$SLITAZ_VERSION/$(cd /var/www/slitaz/mirror/packages/$SLITAZ_VERSION ; ls $PACKAGE-$VERSION*.tazpkg)" 5.257 + busybox wget -s $PACKAGE_URL 2> /dev/null && 5.258 + PACKAGE_HREF="<a href=\"$PACKAGE_URL\">$PACKAGE</a>" 5.259 + cat << _EOT_ 5.260 + <td class="first">$PACKAGE_HREF</td> 5.261 + <td class="first">$(installed_size $PACKAGE)</td> 5.262 + <td>$SHORT_DESC</td> 5.263 _EOT_ 5.264 -fi 5.265 + fi 5.266 + cat << EOT 5.267 +</tr> 5.268 +EOT 5.269 +} 5.270 +package_entry_inline() { 5.271 + if [ -s "$(dirname $0)/$SLITAZ_VERSION/$CATEGORY.html" ]; then 5.272 + cat << _EOT_ 5.273 +<a href="$SLITAZ_VERSION/$CATEGORY.html#$PACKAGE">$PACKAGE</a> $(installed_size $PACKAGE) : $SHORT_DESC 5.274 +_EOT_ 5.275 + else 5.276 + PACKAGE_HREF="<u>$PACKAGE</u>" 5.277 + PACKAGE_URL="http://mirror.slitaz.org/packages/$SLITAZ_VERSION/$PACKAGE-$VERSION$EXTRA_VERSION.tazpkg" 5.278 + nslookup mirror.slitaz.org | grep -q 127.0.0.1 && 5.279 + PACKAGE_URL="http://mirror.slitaz.org/packages/$SLITAZ_VERSION/$(cd /var/www/slitaz/mirror/packages/$SLITAZ_VERSION ; ls $PACKAGE-$VERSION*.tazpkg)" 5.280 + busybox wget -s $PACKAGE_URL 2> /dev/null && 5.281 + PACKAGE_HREF="<a href=\"$PACKAGE_URL\">$PACKAGE</a>" 5.282 + cat << _EOT_ 5.283 +$PACKAGE_HREF $(installed_size $PACKAGE) : $SHORT_DESC 5.284 +_EOT_ 5.285 + fi 5.286 } 5.287 5.288 # Show loop in depends/build_depends chains 5.289 @@ -304,7 +344,7 @@ 5.290 echo -n "$2" 5.291 ( 5.292 . $WOK/$i/receipt 5.293 - package_entry 5.294 + package_entry_inline 5.295 ) 5.296 fi 5.297 [ -f $WOK/$i/receipt ] || continue 5.298 @@ -364,7 +404,7 @@ 5.299 ' | while read pkg; do 5.300 . $WOK/${pkg##*/}/receipt 5.301 cat << _EOT_ 5.302 -$(echo ${pkg%/*} | sed 's|/| |g') $(package_entry) 5.303 +$(echo ${pkg%/*} | sed 's|/| |g') $(package_entry_inline) 5.304 _EOT_ 5.305 done 5.306 } 5.307 @@ -381,29 +421,122 @@ 5.308 } 5.309 5.310 # Display < > & 5.311 -htmlize() 5.312 -{ 5.313 +htmlize() { 5.314 sed -e 's/&/\&/g' -e 's/</\</g' -e 's/>/\>/g' 5.315 } 5.316 5.317 -display_packages_and_files() 5.318 -{ 5.319 +display_packages_and_files() { 5.320 last="" 5.321 while read pkg file; do 5.322 pkg=${pkg%:} 5.323 if [ "$pkg" != "$last" ]; then 5.324 . $WOK/$pkg/receipt 5.325 5.326 - package_entry 5.327 + package_entry_inline 5.328 last=$pkg 5.329 fi 5.330 echo " $file" 5.331 done 5.332 } 5.333 5.334 +# Syntax highlighting for receipt file - stolen from tazpanel: 5.335 +# '/var/www/tazpanel/lib/libtazpanel' and developed 5.336 +syntax_highlighter() { 5.337 + cat "$1" | sed -e "s|\&|\&|g; s|<|\<|g; s|>|\>|g; s| | |g" \ 5.338 + -e "s|@|\@|g; s|~|\~|g" \ 5.339 + -e "#literals" \ 5.340 + -e "s|'\([^']*\)'|@l\0~|g" \ 5.341 + -e 's|"\([^"]*\)"|@l\0~|g' \ 5.342 + -e 's|"\([^"]*\)\\|@l\0~|g' \ 5.343 + -e 's|\([^"]*\)\"$|@l\0~|g' \ 5.344 + -e "#paths" \ 5.345 + -e 's|\([ =]\)\([a-zA-Z0-9/-]*/[\$a-zA-Z0-9/\.-]\+\)\([ )]\)|\1@p\2~\3|g' \ 5.346 + -e 's|\([ =]\)\([a-zA-Z0-9/-]*/[\$a-zA-Z0-9/\.-]\+$\)|\1@p\2~|g' \ 5.347 + -e 's|\(\$[a-zA-Z0-9_\.-]\+\)\(/[\$a-zA-Z0-9_/\.\*-]\+\)\([ )]*\)|@p\1\2~\3|g' \ 5.348 + -e "#functions" \ 5.349 + -e 's|^\([^()]*\)\(()\)|@f\0~|g' \ 5.350 + -e "#single line comments" \ 5.351 + -e 's|^\([ ]*\)#\([^#]*$\)|@c\0~|g' \ 5.352 + -e "#parameters" \ 5.353 + -e 's|\( \)\(-[a-z0-9]\+\)\( *\)|\1@r\2~\3|g' \ 5.354 + -e 's|\( \)\(--[a-z0-9\-]\+\)\([= ]\)|\1@r\2~\3|g' \ 5.355 + -e "#variables" \ 5.356 + -e "s|^\([^=@#' \-]*\)\(=\)|@v\1~\2|g" \ 5.357 + -e 's|\([ ^@-]*\)\([a-zA-Z0-9]\+\)\(=\)|\1@v\2~\3|g' \ 5.358 + -e "s#\(\$[a-zA-Z0-9_]\+\)#@v\0~#g" \ 5.359 + -e "#urls" \ 5.360 + -e s"#\"\(http:[^\"\$ ]*\)\"#\"<a @u href=\0>\1</a>\"#"g \ 5.361 + -e s"#\"\(ftp:[^\"\$ ]*\)\"#\"<a @u href=\0>\1</a>\"#"g \ 5.362 + -e "#commands" \ 5.363 + -e s"#^\( \+\)\([^'= @\-]\+\)#\1@m\2~#"g \ 5.364 + -e "#simple commands" \ 5.365 + -e s"#\([{}\]$\)#@s\0~#"g \ 5.366 + -e s"#\( \)\(\&\&\)\( *\)#\1@s\2~\3#"g \ 5.367 + -e s"#\(|\)#@s\0~#"g \ 5.368 + -e s"#\(\<\)#@s\0~#"g \ 5.369 + -e s"#\(\>\&\)#@s\0~#"g \ 5.370 + -e s"#\(\>\)#@s\0~#"g \ 5.371 + -e s"#\(\[\)#@s\0~#"g \ 5.372 + -e s"#\(\]\)#@s\0~#"g \ 5.373 +\ 5.374 + -e "s|´|'|g; s|›|</span>|g" \ 5.375 + -e "s|@c|<span class='r-comment'>|g" \ 5.376 + -e "s|@l|<span class='r-literal'>|g" \ 5.377 + -e "s|@v|<span class='r-var'>|g" \ 5.378 + -e "s|@f|<span class='r-func'>|g" \ 5.379 + -e "s|@u|class='r-url' target='_blank'|g" \ 5.380 + -e "s|@m|<span class='r-com'>|g" \ 5.381 + -e "s|@s|<span class='r-scom'>|g" \ 5.382 + -e "s|@p|<span class='r-path'>|g" \ 5.383 + -e "s|@r|<span class='r-param'>|g" \ 5.384 + -e "s|~|</span>|g" 5.385 +} 5.386 + 5.387 + 5.388 +# 5.389 +# page begins 5.390 +# 5.391 +header "HTTP/1.1 200 OK" "Content-type: text/html" 5.392 xhtml_header 5.393 5.394 # 5.395 +# language selector, if needed 5.396 +# 5.397 +if [ -z "$HTTP_ACCEPT_LANGUAGE" ]; then 5.398 + oldlang=$(GETPOST lang) 5.399 + if [ -z "$oldlang" ]; then 5.400 + oldlang="C" 5.401 + [ -z "$QUERY_STRING" ] && QUERY_STRING="lang=C" || QUERY_STRING="${QUERY_STRING}&lang=C" 5.402 + fi 5.403 + cat << EOT 5.404 +<!-- Languages --> 5.405 +<div id="lang"> 5.406 +EOT 5.407 + for i in en de fr pt ru zh; do 5.408 + cat << EOT 5.409 + <a href="$SCRIPT_NAME?$(echo "$QUERY_STRING" | sed s/"lang=$oldlang"/"lang=$i"/)">$( 5.410 + case $i in 5.411 + en) echo -n "English";; 5.412 + de) echo -n "Deutsch";; 5.413 + fr) echo -n "Français";; 5.414 + pt) echo -n "Português";; 5.415 + ru) echo -n "Русский";; 5.416 + zh) echo -n "中文";; 5.417 + esac)</a> 5.418 +EOT 5.419 + done 5.420 + cat << EOT 5.421 +</div> 5.422 + 5.423 +EOT 5.424 +fi 5.425 + 5.426 +cat << EOT 5.427 +<!-- Content --> 5.428 +<div id="content"> 5.429 +EOT 5.430 + 5.431 +# 5.432 # Handle GET requests 5.433 # 5.434 case " $(GET) " in 5.435 @@ -416,6 +549,7 @@ 5.436 SEARCH=$SEARCH; 5.437 SLITAZ_VERSION=$SLITAZ_VERSION; 5.438 WOK=$WOK; 5.439 +GET=$(GET); 5.440 </pre> 5.441 EOT 5.442 #$(xhtml_footer) 5.443 @@ -426,9 +560,14 @@ 5.444 5.445 # Display search form and result if requested. 5.446 #xhtml_header 5.447 -echo "<h2>$(gettext 'Search for packages')</h2>" 5.448 +cat << EOT 5.449 +<h2>$(gettext 'Search for packages')</h2> 5.450 +<div id="ticker"><img src="style/images/loader.gif" alt="." /></div> 5.451 +EOT 5.452 search_form 5.453 5.454 + 5.455 + 5.456 case "$OBJECT" in 5.457 5.458 5.459 @@ -559,7 +698,7 @@ 5.460 cat << _EOT_ 5.461 5.462 <h3>$(eval_gettext "Result for: \$SEARCH")</h3> 5.463 -<pre> 5.464 +<table> 5.465 _EOT_ 5.466 last="" 5.467 unlzma -c $PACKAGES_REPOSITORY/files.list.lzma \ 5.468 @@ -569,16 +708,22 @@ 5.469 last=${pkg%:} 5.470 ( 5.471 . $WOK/$last/receipt 5.472 + [ -n "$last" ] && cat << EOT 5.473 +</td></tr> 5.474 +EOT 5.475 cat << _EOT_ 5.476 5.477 -<i>$(package_entry)</i> 5.478 +$(package_entry 1) 5.479 +<tr><td colspan="3" class="pre"> 5.480 _EOT_ 5.481 ) 5.482 fi 5.483 - echo " $file" 5.484 + echo -n "$file" | sed s/"$SEARCH"/"<span class='match'>$SEARCH<\/span>"/g 5.485 + echo "<br />" 5.486 done 5.487 cat << _EOT_ 5.488 -</pre> 5.489 +</td></tr> 5.490 +</table> 5.491 _EOT_ 5.492 fi 5.493 ;; 5.494 @@ -594,7 +739,7 @@ 5.495 _EOT_ 5.496 last="" 5.497 unlzma -c $PACKAGES_REPOSITORY/files.list.lzma \ 5.498 - | grep ^$SEARCH: | sed 's/.*: / /' | sort 5.499 + | grep ^$SEARCH: | sed 's/.*: / /' | sort 5.500 cat << _EOT_ 5.501 </pre> 5.502 <pre> 5.503 @@ -615,16 +760,16 @@ 5.504 if [ -f $WOK/$SEARCH/description.txt ]; then 5.505 cat << _EOT_ 5.506 5.507 -<h3>$(eval_gettext "Result for: \$SEARCH")</h3> 5.508 -<pre> 5.509 +<h3>$(eval_gettext "Description of package: \$SEARCH")</h3> 5.510 +<table> 5.511 $(htmlize < $WOK/$SEARCH/description.txt) 5.512 -</pre> 5.513 +</table> 5.514 _EOT_ 5.515 else 5.516 cat << _EOT_ 5.517 5.518 <h3>$(eval_gettext "Result for: \$SEARCH")</h3> 5.519 -<pre> 5.520 +<table> 5.521 _EOT_ 5.522 last="" 5.523 grep -i "$SEARCH" $PACKAGES_REPOSITORY/packages.desc | \ 5.524 @@ -633,7 +778,7 @@ 5.525 package_entry 5.526 done 5.527 cat << _EOT_ 5.528 -</pre> 5.529 +</table> 5.530 _EOT_ 5.531 fi 5.532 ;; 5.533 @@ -644,34 +789,35 @@ 5.534 cat << _EOT_ 5.535 5.536 <h3>$(eval_gettext "Result for: \$SEARCH")</h3> 5.537 -<pre> 5.538 +<table> 5.539 _EOT_ 5.540 last="" 5.541 - grep ^TAGS= $WOK/*/receipt | grep -i "$SEARCH" | \ 5.542 + grep ^TAGS= $WOK/*/receipt | grep -i "$SEARCH" | \ 5.543 sed "s|$WOK/\(.*\)/receipt:.*|\1|" | sort | while read pkg ; do 5.544 . $WOK/$pkg/receipt 5.545 package_entry 5.546 done 5.547 cat << _EOT_ 5.548 -</pre> 5.549 +</table> 5.550 _EOT_ 5.551 ;; 5.552 5.553 5.554 -### Package receipt 5.555 -# TODO: add style highlighting 5.556 +### Package receipt with syntax highlighter 5.557 Receipt) 5.558 - package_exist $SEARCH && cat << _EOT_ 5.559 + if package_exist "$SEARCH"; then 5.560 + cat << _EOT_ 5.561 5.562 <h3>$(eval_gettext "Result for: \$SEARCH")</h3> 5.563 <pre> 5.564 -$(if [ -f $WOK/$SEARCH/taz/*/receipt ]; then 5.565 - cat $WOK/$SEARCH/taz/*/receipt 5.566 - else 5.567 - cat $WOK/$SEARCH/receipt 5.568 - fi | htmlize) 5.569 -</pre> 5.570 _EOT_ 5.571 + if [ -f "$WOK/$SEARCH/taz/*/receipt" ]; then 5.572 + syntax_highlighter "$WOK/$SEARCH/taz/*/receipt" 5.573 + else 5.574 + syntax_highlighter "$WOK/$SEARCH/receipt" 5.575 + fi 5.576 + echo '</pre>' 5.577 + fi 5.578 ;; 5.579 5.580 5.581 @@ -681,12 +827,12 @@ 5.582 cat << _EOT_ 5.583 5.584 <h3>$(eval_gettext "Result for: \$SEARCH")</h3> 5.585 -<pre> 5.586 +<table> 5.587 _EOT_ 5.588 for pkg in `ls $WOK/ | grep "$SEARCH"` 5.589 do 5.590 . $WOK/$pkg/receipt 5.591 - DESC=" <a href=\"?object=Desc&query=$pkg&lang=$lang&version=$SLITAZ_VERSION&submit=go\">$(gettext description)</a>" 5.592 + DESC=" <a href=\"?object=Desc&query=$pkg&lang=$lang&version=$SLITAZ_VERSION$(ifdebug '&')&submit=go\">$(gettext description)</a>" 5.593 [ -f $WOK/$pkg/description.txt ] || DESC="" 5.594 cat << _EOT_ 5.595 $(package_entry)$DESC 5.596 @@ -696,10 +842,10 @@ 5.597 vpkgs="$(cat $equiv | cut -d= -f1 | grep $SEARCH)" 5.598 for vpkg in $vpkgs ; do 5.599 cat << _EOT_ 5.600 -</pre> 5.601 +</table> 5.602 5.603 <h3>$(eval_gettext "Result for: \$SEARCH (package providing \$vpkg)")</h3> 5.604 -<pre> 5.605 +<table> 5.606 _EOT_ 5.607 for pkg in $(grep $vpkg= $equiv | sed "s/$vpkg=//"); do 5.608 . $WOK/${pkg#*:}/receipt 5.609 @@ -707,7 +853,7 @@ 5.610 done 5.611 done 5.612 cat << _EOT_ 5.613 -</pre> 5.614 +</table> 5.615 _EOT_ 5.616 fi 5.617 ;;
6.1 Binary file pkgs/style/images/loader.gif has changed