Commit cfc42d5bd36cb21122457b0ae51550815576d191
1 parent
b6c00f52
Exists in
master
and in
1 other branch
Web interface cleaning/fixing for AppRecommender server and survey.
Showing
20 changed files
with
300 additions
and
506 deletions
Show diff stats
src/web/static/css/apprec.css
| 1 | +#upload-slide { | |
| 2 | +display: block; | |
| 3 | +position: absolute; | |
| 4 | +top: 0px; | |
| 5 | +left: 0px; | |
| 6 | +padding: 0px; | |
| 7 | +} | |
| 1 | 8 | |
| 2 | -/* | |
| 3 | - * Result Recommendation | |
| 4 | - */ | |
| 9 | +#header, | |
| 10 | +#recommender-box { | |
| 11 | +height: 40px; | |
| 12 | +} | |
| 13 | + | |
| 14 | +#submit-button { | |
| 15 | +height: 42px; | |
| 16 | +} | |
| 17 | + | |
| 18 | +#tip-upload { | |
| 19 | +top: 40px; | |
| 20 | +width: 420px; | |
| 21 | +} | |
| 22 | + | |
| 23 | +#wrap { | |
| 24 | +max-width: 780px; | |
| 25 | +} | |
| 26 | + | |
| 27 | +body.apprec #wrap { | |
| 28 | +padding-top: 20px; | |
| 29 | +} | |
| 30 | + | |
| 31 | + | |
| 32 | +#recommender-box #upfile, | |
| 33 | +#advanced-button, | |
| 34 | +#pkgs_list { | |
| 35 | +display: none; | |
| 36 | +} | |
| 5 | 37 | |
| 6 | 38 | #result-thumbnail .item { |
| 7 | 39 | display: block; |
| ... | ... | @@ -11,6 +43,7 @@ overflow: hidden; |
| 11 | 43 | float: left; |
| 12 | 44 | text-align: center; |
| 13 | 45 | border-radius: 5px; |
| 46 | +margin-left: 30px; | |
| 14 | 47 | } |
| 15 | 48 | |
| 16 | 49 | #result-thumbnail .item:hover { |
| ... | ... | @@ -25,7 +58,6 @@ color: gray; |
| 25 | 58 | |
| 26 | 59 | |
| 27 | 60 | a.link-thumb img { |
| 28 | -height: 100px; | |
| 29 | 61 | margin: 5px; |
| 30 | 62 | border-radius: 4px; |
| 31 | 63 | box-shadow: 0 1px 2px gray; |
| ... | ... | @@ -83,6 +115,7 @@ cursor: pointer; |
| 83 | 115 | #debresources_box { |
| 84 | 116 | float: left; |
| 85 | 117 | margin-top: 20px; |
| 118 | +padding: 10px; | |
| 86 | 119 | } |
| 87 | 120 | |
| 88 | 121 | #debresources_box li { | ... | ... |
src/web/static/css/facebox.css
src/web/static/css/style.css
| ... | ... | @@ -151,7 +151,7 @@ float: right; |
| 151 | 151 | } |
| 152 | 152 | |
| 153 | 153 | .innertube { |
| 154 | -margin: 15px; | |
| 154 | +margin: 30px; | |
| 155 | 155 | } |
| 156 | 156 | |
| 157 | 157 | #footer { |
| ... | ... | @@ -294,7 +294,8 @@ background-image: url('../images/admon-note.png'); |
| 294 | 294 | |
| 295 | 295 | /* Recommender BOX */ |
| 296 | 296 | |
| 297 | -#recommender-box { | |
| 297 | +#recommender-box { | |
| 298 | +height: 43px; | |
| 298 | 299 | position: relative; |
| 299 | 300 | margin:0; |
| 300 | 301 | vertical-align: top; |
| ... | ... | @@ -325,8 +326,9 @@ z-index: 1; |
| 325 | 326 | } |
| 326 | 327 | |
| 327 | 328 | #pkgs_list, #input-box { |
| 329 | +padding:10px; | |
| 328 | 330 | position: relative; |
| 329 | -width: 400px; | |
| 331 | +width: auto; | |
| 330 | 332 | } |
| 331 | 333 | |
| 332 | 334 | #pkgs_list { | ... | ... |
src/web/static/css/survey.css
57.4 KB
src/web/static/images/diaappr.png
44.3 KB
src/web/templates/about.html
| 1 | 1 | $var title: About |
| 2 | +$var url_base: / | |
| 2 | 3 | $var mod = 'about'; |
| 4 | +$var action: RECOMMENDATION | |
| 3 | 5 | $var cssfiles: static/css/facebox.css |
| 4 | 6 | $var jsfiles: static/js/facebox.js |
| 5 | 7 | |
| ... | ... | @@ -15,29 +17,24 @@ $var jsfiles: static/js/facebox.js |
| 15 | 17 | <div id="maincontent"> |
| 16 | 18 | <div class="innertube"> |
| 17 | 19 | |
| 18 | -<h1>AppRecommender Survey</h1> | |
| 20 | +<h1>AppRecommender</h1> | |
| 19 | 21 | <h2>About</h2> |
| 20 | 22 | |
| 21 | -<p align="justify">This experiment aims to compare and validate automated application | |
| 22 | -recommendations produced by different strategies and algorithms tuning. We | |
| 23 | -believe that real users evaluation regarding the relevance of recommendations is | |
| 24 | -the most accurate data source for computing recommender system effectiveness.</p> | |
| 25 | -<br/> | |
| 23 | +<p align="justify"><a href="http://github.com/tassia/AppRecommender">AppRecommender</a> | |
| 24 | +is a free recommender system for GNU/Linux applications developed as part of a | |
| 25 | +Master's project. It was initially developed using the Debian Project | |
| 26 | +infrasctructure, but the solution is essentially distro-independent and can | |
| 27 | +be adapted to other environments given that there is available data sources for | |
| 28 | +computing recommendations.</p> | |
| 26 | 29 | |
| 27 | -<p align="justify">The engine that is being tested is a free software called <a | |
| 28 | -href="http://github.com/tassia/AppRecommender">AppRecommender</a>. It was | |
| 29 | -initially developed using the Debian Project infrasctructure, but the solution | |
| 30 | -is essentially distro-independent and can even be adapted to non GNU/Linux | |
| 31 | -systems given that there is available data for that.</p> | |
| 32 | - | |
| 33 | -<a rel="facebox" href="static/images/diaappr.png" title="AppRecommender Diagram"> | |
| 30 | +<a rel="facebox" href="static/images/apprec.png" title="AppRecommender Diagram"> | |
| 34 | 31 | <img style="float: right; margin: 10px;" alt="AppRecommender dataflow" |
| 35 | -src="static/images/diaappr.png" width="230px" /></a> | |
| 32 | +src="static/images/apprec.png" width="230px" /></a> | |
| 36 | 33 | <br /> |
| 37 | 34 | |
| 38 | 35 | <p align="justify">The picture on the right gives an idea of the data workflow |
| 39 | -for AppRecommender. The user provides a set of applications installed in his | |
| 40 | -system and the recommender suggests a set of programs that he might also | |
| 36 | +for AppRecommender. The user provides a set of applications installed in her/his | |
| 37 | +system and the recommender suggests a set of programs that she/he might also | |
| 41 | 38 | be interested in, based on the profile deduced from the his previous choices |
| 42 | 39 | and other similar users choices. The recommendations are composed using |
| 43 | 40 | classification and information retrieval techniques using | ... | ... |
| ... | ... | @@ -0,0 +1,52 @@ |
| 1 | +$var title: About | |
| 2 | +$var url_base: /survey/ | |
| 3 | +$var action: START | |
| 4 | +$var mod = 'about'; | |
| 5 | +$var cssfiles: static/css/facebox.css | |
| 6 | +$var jsfiles: static/js/facebox.js | |
| 7 | + | |
| 8 | +<script type="text/javascript"> | |
| 9 | + $$(document).ready(function() { | |
| 10 | + $$('a[rel*=facebox]').facebox({ | |
| 11 | + loadingImage : 'static/images/loading.gif', | |
| 12 | + closeImage : 'static/images/closelabel.png' | |
| 13 | + }); | |
| 14 | + }); | |
| 15 | +</script> | |
| 16 | + | |
| 17 | +<div id="maincontent"> | |
| 18 | +<div class="innertube"> | |
| 19 | + | |
| 20 | +<h1>AppRecommender Survey</h1> | |
| 21 | +<h2>About</h2> | |
| 22 | + | |
| 23 | +<p align="justify">This experiment aims to compare and validate automated application | |
| 24 | +recommendations produced by different strategies and algorithms tuning. We | |
| 25 | +believe that real users evaluation regarding the relevance of recommendations is | |
| 26 | +the most accurate data source for computing recommender system effectiveness.</p> | |
| 27 | +<br/> | |
| 28 | + | |
| 29 | +<p align="justify">The engine that is being tested is a free software called <a | |
| 30 | +href="http://github.com/tassia/AppRecommender">AppRecommender</a>. It was | |
| 31 | +initially developed using the Debian Project infrasctructure, but the solution | |
| 32 | +is essentially distro-independent and can even be adapted to non GNU/Linux | |
| 33 | +systems given that there is available data for that.</p> | |
| 34 | + | |
| 35 | +<a rel="facebox" href="static/images/apprec.png" title="AppRecommender Diagram"> | |
| 36 | +<img style="float: right; margin: 10px;" alt="AppRecommender dataflow" | |
| 37 | +src="static/images/apprec.png" width="230px" /></a> | |
| 38 | +<br /> | |
| 39 | + | |
| 40 | +<p align="justify">The picture on the right gives an idea of the data workflow | |
| 41 | +for AppRecommender. The user provides a set of applications installed in his | |
| 42 | +system and the recommender suggests a set of programs that he might also | |
| 43 | +be interested in, based on the profile deduced from the his previous choices | |
| 44 | +and other similar users choices. The recommendations are composed using | |
| 45 | +classification and information retrieval techniques using | |
| 46 | +<a href="http://wiki.debian.org/Debtags">debtags</a>, | |
| 47 | +<a href="http://www.enricozini.org/sw/apt-xapian-index/">apt-xapian-index</a>, | |
| 48 | +<a href="http://popcon.debian.org/">Popcon</a> and <a | |
| 49 | +href="http://udd.debian.org/">UDD</a> as data sources.</p> | |
| 50 | + | |
| 51 | +</div><!-- id="innertube" --> | |
| 52 | +</div><!-- id="maincontent" --> | ... | ... |
src/web/templates/apprec.html
| 1 | -$def with (recommends, pkg_summaries, request) | |
| 2 | -$var title: Feedback | |
| 3 | -$var mod = 'feedback'; | |
| 4 | -$var cssfiles: static/css/apprec.css static/css/facebox.css static/css/voting.css | |
| 1 | +$def with (pkgs_details) | |
| 2 | +$var title: AppRecommender | |
| 3 | +$var url_base: / | |
| 4 | +$var action: RECOMMENDATION | |
| 5 | +$var mod = 'apprec'; | |
| 6 | +$var cssfiles: static/css/apprec.css static/css/facebox.css static/css/voting.css static/css/survey.css | |
| 5 | 7 | $var jsfiles: static/js/facebox.js |
| 6 | 8 | |
| 7 | 9 | <script type="application/x-javascript"> |
| ... | ... | @@ -41,44 +43,26 @@ $$(document).ready(function() { |
| 41 | 43 | }); |
| 42 | 44 | </script> |
| 43 | 45 | |
| 44 | -<div id="sidebar"> | |
| 45 | -<div class="innertube"> | |
| 46 | - | |
| 47 | -<div id="details_box" class="graybox align-left vert-grad"> | |
| 48 | -<h2>Recommendation strategy details</h2> | |
| 49 | - <ul class="toc"> | |
| 50 | - $for key, value in request.get_details().items(): | |
| 51 | - | |
| 52 | - <li><b>$key:</b> $value</li> | |
| 53 | - | |
| 54 | -</div> | |
| 55 | - | |
| 56 | -</div><!-- class="innertube" --> | |
| 57 | -<br style="clear: both"> | |
| 58 | -</div><!-- id="sidebar" --> | |
| 59 | - | |
| 60 | 46 | <div id="maincontent"> |
| 61 | 47 | <div class="innertube"> |
| 62 | 48 | |
| 63 | -<h1>Recomendation</h1> | |
| 49 | +<center> | |
| 50 | +<h1>Recommended applications</h1> | |
| 51 | +</center> | |
| 64 | 52 | |
| 65 | 53 | <form action="thanks" method="post" enctype="multipart/form-data"> |
| 66 | 54 | |
| 67 | 55 | <div id="result-thumbnail"> |
| 68 | -$for strategy, result in recommends.items(): | |
| 69 | - <!--<h2><a name="$strategy" id="$strategy">$strategy</a></h2>--> | |
| 70 | - $ count = 0 | |
| 71 | - $for pkg in result: | |
| 72 | - $ count = count + 1 | |
| 56 | +$for pkg in pkgs_details: | |
| 73 | 57 | <div class="item"> |
| 74 | - <h3><a href="package/$pkg" rel="facebox" title="General information for package $pkg">$pkg</a></h3> | |
| 75 | - <a class="link-thumb" rel="facebox" href="http://screenshots.debian.net/screenshot/$pkg?.jpg" title="Screenshot of package $pkg"> | |
| 76 | - <img src="http://screenshots.debian.net/thumbnail/$pkg" alt="Screenshot $pkg" /> | |
| 58 | + <h3><a href="package/$pkg.name" rel="facebox" class="thickbox" title="General information for package $pkg.name">$pkg.name</a></h3> | |
| 59 | + <a class="link-thumb" rel="facebox" | |
| 60 | + href="http://screenshots.debian.net/screenshot/$pkg.name?.jpg" title="Screenshot of package $pkg.name" | |
| 61 | + alt="Click to enlarge screenshot"> | |
| 62 | + <img src="http://screenshots.debian.net/thumbnail/$pkg.name" alt="Screenshot $pkg.name" /> | |
| 77 | 63 | </a> |
| 78 | - <p class="thumb-caption"><a href="package/$pkg" rel="facebox" title="General information for package $pkg"> $pkg_summaries[pkg] </a></p> | |
| 64 | + <p class="thumb-caption">$pkg.summary</p> | |
| 79 | 65 | </div> |
| 80 | - $if count == 5: | |
| 81 | - $ count = 0 | |
| 82 | 66 | |
| 83 | 67 | </div><!-- id="result-thumbnail" --> |
| 84 | 68 | </form> | ... | ... |
src/web/templates/error.html
| 1 | -$def with (error_msgs) | |
| 1 | +$def with (error_msgs,url_base,action) | |
| 2 | 2 | $var title: Error |
| 3 | +$var url_base: $url_base | |
| 4 | +$var action: $action | |
| 3 | 5 | $var mod = 'error'; |
| 4 | 6 | $var cssfiles: static/css/facebox.css static/css/facebox.css static/css/survey.css |
| 5 | 7 | $var jsfiles: static/js/facebox.js |
| ... | ... | @@ -10,21 +12,20 @@ $var jsfiles: static/js/facebox.js |
| 10 | 12 | |
| 11 | 13 | |
| 12 | 14 | <div class="index_include"> |
| 13 | -<center> | |
| 14 | - <h1>Welcome to AppRecommender</h1> | |
| 15 | -</center> | |
| 15 | + | |
| 16 | +<h1>AppRecommender</h1> | |
| 17 | +<h2>Unexpected error</h2> | |
| 16 | 18 | |
| 17 | 19 | Your request could not be proccessed due to the following error(s): |
| 18 | 20 | |
| 19 | -<div class="warning"> | |
| 20 | 21 | <p><ul> |
| 21 | 22 | $for e in error_msgs: |
| 22 | 23 | <b><li>$e</li></b> |
| 23 | 24 | </ul></p> |
| 24 | -</div> | |
| 25 | 25 | |
| 26 | -<p><a href="/">Go back</a> and try again. If you believe it is a bug, please report to <a | |
| 27 | -href="mailto:tassia@gamil.com">tassia@gmail.com</a>.</p> | |
| 26 | +<br /> | |
| 27 | +<p>If you believe it is a bug, please report this error along with the uploaded file to <a | |
| 28 | +href="mailto:tassia@ime.usp.br">tassia@ime.usp.br</a>.</p> | |
| 28 | 29 | |
| 29 | 30 | </div> |
| 30 | 31 | ... | ... |
src/web/templates/error_survey.html
| ... | ... | @@ -1,20 +0,0 @@ |
| 1 | -$var title: Error | |
| 2 | -$var mod = 'error'; | |
| 3 | -$var cssfiles: static/css/facebox.css static/css/facebox.css static/css/survey.css | |
| 4 | -$var jsfiles: static/js/facebox.js | |
| 5 | - | |
| 6 | - | |
| 7 | -<div id="maincontent"> | |
| 8 | -<div class="innertube"> | |
| 9 | - | |
| 10 | -<center> | |
| 11 | -<div class="index_include"> | |
| 12 | - <h1>AppRecommender Survey</h1> | |
| 13 | -<p>Unfortunately your request could not be proccessed.</p> | |
| 14 | -<p>Please report this error along with the submitted <br />file to <a href="mailto:tassia@gamil.com">tassia@gmail.com</a>.</p> | |
| 15 | -</center> | |
| 16 | - | |
| 17 | -</div> | |
| 18 | - | |
| 19 | -</div><!-- id="innertube" --> | |
| 20 | -</div><!-- id="maincontent" --> |
src/web/templates/index.html
| 1 | 1 | $var title: Home |
| 2 | +$var url_base: / | |
| 3 | +$var action: RECOMMENDATION | |
| 2 | 4 | $var mod = 'index'; |
| 3 | -$var cssfiles: static/css/tabs.css static/css/debtags.css static/css/facebox.css | |
| 5 | +$var cssfiles: static/css/tabs.css static/css/debtags.css static/css/facebox.css static/css/apprec.css | |
| 4 | 6 | $var jsfiles: static/js/facebox.js |
| 5 | 7 | |
| 6 | 8 | |
| ... | ... | @@ -604,9 +606,40 @@ function showtags(tagid) { |
| 604 | 606 | |
| 605 | 607 | </div><!-- id="box-three" --> |
| 606 | 608 | |
| 609 | + <div id="tab-one" class="tabs"> | |
| 610 | + | |
| 611 | +<h2>Most popular (<a href="#">all</a>)</h2> | |
| 612 | + <ul> | |
| 613 | + <li><a href="#">app...1</a></li> | |
| 614 | + <li><a href="#">app...2</a></li> | |
| 615 | + <li><a href="#">app...3</a></li> | |
| 616 | + <li><a href="#">app...4</a></li> | |
| 617 | + <li><a href="#">app...5</a></li> | |
| 618 | + </ul> | |
| 619 | + | |
| 620 | +<h2>Most voted (<a href="#">all</a>)</h2> | |
| 621 | + <ul> | |
| 622 | + <li><a href="#">app...1</a></li> | |
| 623 | + <li><a href="#">app...2</a></li> | |
| 624 | + <li><a href="#">app...3</a></li> | |
| 625 | + <li><a href="#">app...4</a></li> | |
| 626 | + <li><a href="#">app...5</a></li> | |
| 627 | + </ul> | |
| 628 | + | |
| 629 | +<h2>Most searched (<a href="#">all</a>)</h2> | |
| 630 | + <ul> | |
| 631 | + <li><a href="#">app...1</a></li> | |
| 632 | + <li><a href="#">app...2</a></li> | |
| 633 | + <li><a href="#">app...3</a></li> | |
| 634 | + <li><a href="#">app...4</a></li> | |
| 635 | + <li><a href="#">app...5</a></li> | |
| 636 | + </ul> | |
| 637 | + | |
| 638 | + </div> <!-- id="tab-one" --> | |
| 639 | + | |
| 607 | 640 | <div id="tab-two" class="tabs"> |
| 608 | 641 | |
| 609 | -<h2>Atualizados recentemente</h2> | |
| 642 | +<h2>Recently updated</h2> | |
| 610 | 643 | <ul> |
| 611 | 644 | <li><a href="#">Recents...1</a></li> |
| 612 | 645 | <li><a href="#">Recents...2</a></li> |
| ... | ... | @@ -622,40 +655,6 @@ function showtags(tagid) { |
| 622 | 655 | |
| 623 | 656 | </div><!-- id="box-two" --> |
| 624 | 657 | |
| 625 | - <div id="tab-one" class="tabs"> | |
| 626 | - | |
| 627 | -<h2>Os mais usados</h2> | |
| 628 | - <ul> | |
| 629 | - <li><a href="#">Lista...1</a></li> | |
| 630 | - <li><a href="#">Lista...2</a></li> | |
| 631 | - <li><a href="#">Lista...3</a></li> | |
| 632 | - <li><a href="#">Lista...4</a></li> | |
| 633 | - <li><a href="#">Lista...5</a></li> | |
| 634 | - </ul> | |
| 635 | - <a href="#">Listar todos nessa ordem</a> | |
| 636 | - | |
| 637 | -<h2>Os mais votados</h2> | |
| 638 | - <ul> | |
| 639 | - <li><a href="#">Lista...</a></li> | |
| 640 | - <li><a href="#">Lista...</a></li> | |
| 641 | - <li><a href="#">Lista...</a></li> | |
| 642 | - <li><a href="#">Lista...</a></li> | |
| 643 | - <li><a href="#">Lista...</a></li> | |
| 644 | - </ul> | |
| 645 | - <a href="#">Listar todos nessa ordem</a> | |
| 646 | - | |
| 647 | -<h2>Os mais pesquisados</h2> | |
| 648 | - <ul> | |
| 649 | - <li><a href="#">Lista...</a></li> | |
| 650 | - <li><a href="#">Lista...</a></li> | |
| 651 | - <li><a href="#">Lista...</a></li> | |
| 652 | - <li><a href="#">Lista...</a></li> | |
| 653 | - <li><a href="#">Lista...</a></li> | |
| 654 | - </ul> | |
| 655 | - <a href="#">Listar todos nessa ordem</a> | |
| 656 | - | |
| 657 | - </div> <!-- id="tab-one" --> | |
| 658 | - | |
| 659 | 658 | </div><!-- id="tab-wrap" --> |
| 660 | 659 | </div><!-- id="tab-area" --> |
| 661 | 660 | |
| ... | ... | @@ -667,13 +666,19 @@ function showtags(tagid) { |
| 667 | 666 | <div class="innertube"> |
| 668 | 667 | |
| 669 | 668 | <div class="textbox"> |
| 670 | -<h1>You might also like...</h1> | |
| 671 | - | |
| 672 | -<p>Provide a popcon submission's file and you'll get | |
| 673 | -a list of suggested packages automatically computed by AppRecommender. | |
| 674 | -</p> | |
| 669 | +<h1>AppRecommender</h1> | |
| 670 | +<h2>You might also like...</h2> | |
| 675 | 671 | |
| 676 | -<p>This is a tentative web interface for the recommender, if you have any suggestion about it, please get in touch.</p> | |
| 672 | +<p align="justify"> Provide the list of packages installed in your | |
| 673 | +system and a set of applications will be suggested for you. | |
| 674 | +</p><br /> | |
| 675 | +<p align="justify">Upload a popularity-contest submission file | |
| 676 | +(usually located at '/var/log/popularity-contest') or run the | |
| 677 | +following command and upload the generated 'packages.list' file.<br /> | |
| 678 | +<code> # dpkg-query --show > packages.list </code> | |
| 679 | +</p><br /> | |
| 680 | +<p>This is a tentative web interface for AppRecommender, if you have any | |
| 681 | +suggestion about it, please get in touch!</p> | |
| 677 | 682 | |
| 678 | 683 | </div> |
| 679 | 684 | ... | ... |
| ... | ... | @@ -0,0 +1,36 @@ |
| 1 | +$var title: Survey | |
| 2 | +$var url_base: /survey/ | |
| 3 | +$var action: START | |
| 4 | +$var mod = 'index'; | |
| 5 | +$var cssfiles: static/css/survey.css | |
| 6 | +$var jsfiles: | |
| 7 | + | |
| 8 | +<!-- Dynamic form --> | |
| 9 | +<script type="application/x-javascript"> | |
| 10 | +window.onload = function() { | |
| 11 | + setupDependencies('weboptions'); //name of form(s). Seperate each with a comma (ie: 'weboptions', 'myotherform' ) | |
| 12 | + }; | |
| 13 | +</script> | |
| 14 | + | |
| 15 | +<div id="maincontent"> | |
| 16 | +<div class="innertube"> | |
| 17 | + | |
| 18 | +<div class="textbox"> | |
| 19 | +<h1>AppRecommender Survey</h1> | |
| 20 | +<h2>Help us learn your needs</h2> | |
| 21 | + | |
| 22 | +<p>Participate in this survey and contribute for the development of | |
| 23 | +<a href="http://github.com/tassia/AppRecommender">AppRecommender</a>, | |
| 24 | +a recommender system for GNU/Linux applications.</p><br /> | |
| 25 | + <p align="justify"> Given a list of packages installed in a real | |
| 26 | + running system and a set of applications will be suggested for it. | |
| 27 | + Upload a popularity-contest submission file (usually located at | |
| 28 | + '/var/log/popularity-contest') or run the following command and | |
| 29 | + upload the generated 'packages.list' file.</p><br /> | |
| 30 | + <p><code> # dpkg-query --show > packages.list </code></p> | |
| 31 | +</div> | |
| 32 | + | |
| 33 | +</div><!-- class="innertube" --> | |
| 34 | +</div><!-- id="maincontent" --> | |
| 35 | + | |
| 36 | + | ... | ... |
src/web/templates/layout.html
| 1 | 1 | $def with (content) |
| 2 | -$ url_base = "/" | |
| 2 | +$ url_base = "/survey/" | |
| 3 | 3 | <!--Force IE6 into quirks mode with this comment tag--> |
| 4 | 4 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| 5 | 5 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| ... | ... | @@ -8,16 +8,16 @@ $ url_base = "/" |
| 8 | 8 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
| 9 | 9 | <title>AppRecommender - $content.title</title> |
| 10 | 10 | <link rev="made" href="mailto:tassia@gmail.com" /> |
| 11 | - <link rel="shortcut icon" href="$(url_base)static/favicon.ico" /> | |
| 11 | + <link rel="shortcut icon" href="$(content.url_base)static/favicon.ico" /> | |
| 12 | 12 | |
| 13 | - <link href="$(url_base)static/css/style.css" rel="stylesheet" type="text/css" media="screen" charset="utf-8" /> | |
| 13 | + <link href="$(content.url_base)static/css/style.css" rel="stylesheet" type="text/css" media="screen" charset="utf-8" /> | |
| 14 | 14 | |
| 15 | 15 | $if content.has_key('cssfiles'): |
| 16 | 16 | $for css in content.cssfiles.split(): |
| 17 | - <link href="$(url_base)$css" rel="stylesheet" type="text/css" media="screen" charset="utf-8" /> | |
| 17 | + <link href="$(content.url_base)$css" rel="stylesheet" type="text/css" media="screen" charset="utf-8" /> | |
| 18 | 18 | |
| 19 | - <script src="$(url_base)static/js/jquery.js" type="text/javascript"></script> | |
| 20 | - <script src="$(url_base)static/js/FormManager.js" type="text/javascript"></script> | |
| 19 | + <script src="$(content.url_base)static/js/jquery.js" type="text/javascript"></script> | |
| 20 | + <script src="$(content.url_base)static/js/FormManager.js" type="text/javascript"></script> | |
| 21 | 21 | |
| 22 | 22 | $if content.has_key('jsfiles'): |
| 23 | 23 | $for js in content.jsfiles.split(): |
| ... | ... | @@ -61,12 +61,12 @@ function validateForm() |
| 61 | 61 | |
| 62 | 62 | <div id="wrap" class="vert-grad"> |
| 63 | 63 | <div id="header" class="glass"> |
| 64 | - <a href="$url_base" title="AppRecommender"><h1 id="logo"><span>AppRecommender</span></h1></a> | |
| 64 | + <a href="$content.url_base" title="AppRecommender"><h1 id="logo"><span>AppRecommender</span></h1></a> | |
| 65 | 65 | <div id="recommender-box"> |
| 66 | - <form action="/survey/apprec" enctype="multipart/form-data" method="post" name="weboptions" onsubmit="return validateForm()"> | |
| 66 | + <form action="$(content.url_base)apprec" enctype="multipart/form-data" method="post" name="weboptions" onsubmit="return validateForm()"> | |
| 67 | 67 | <fieldset> |
| 68 | 68 | <div id="submit-box"> |
| 69 | - <input type="submit" value="START" id="submit-button" class="glass"><br /> | |
| 69 | + <input type="submit" value="$content.action" id="submit-button" class="glass"><br /> | |
| 70 | 70 | <a id="advanced-button">advanced query?</a> |
| 71 | 71 | </div> |
| 72 | 72 | <div id="input-box"> |
| ... | ... | @@ -85,7 +85,7 @@ function validateForm() |
| 85 | 85 | </p> |
| 86 | 86 | <div id="tip-upload" class="tip important"> |
| 87 | 87 | <p> |
| 88 | - File format: each line begins with a packages name or the popularity-contest format. | |
| 88 | + Format: one package per line or the popularity-contest log file. | |
| 89 | 89 | </div><!-- id="tip-upload" --> |
| 90 | 90 | </fieldset> |
| 91 | 91 | </div><!-- id="upload-slide" --> |
| ... | ... | @@ -160,8 +160,8 @@ $:content |
| 160 | 160 | |
| 161 | 161 | <div id="navbar"> |
| 162 | 162 | <ul> |
| 163 | - <li><a href="$url_base">Home</a></li> | |
| 164 | - <li><a href="$(url_base)about">About</a></li> | |
| 163 | + <li><a href="$content.url_base">Home</a></li> | |
| 164 | + <li><a href="$(content.url_base)about">About</a></li> | |
| 165 | 165 | <li><a href="http://github.com/tassia/AppRecommender">Development</a></li> |
| 166 | 166 | </ul> |
| 167 | 167 | </div><!-- id="navbar" --> | ... | ... |
src/web/templates/package.html
| 1 | 1 | $def with (pkg) |
| 2 | +$var url_base: / | |
| 2 | 3 | |
| 3 | 4 | <div class="align-left" id="voting_box"> |
| 4 | 5 | <button type="button" class="like_button" onclick=";return false;" id="like" > |
| ... | ... | @@ -16,12 +17,12 @@ $def with (pkg) |
| 16 | 17 | </div> |
| 17 | 18 | </div><!-- id="voting_box" --> |
| 18 | 19 | |
| 19 | -<h1 id="title_pkg">$pkg['package'] <br /><span>$pkg['description']</span></h1> | |
| 20 | +<h2 id="title_pkg">$pkg.name <br /><span>$pkg.summary</span></h2> | |
| 20 | 21 | |
| 21 | 22 | <div id="debtags_box" class="graybox horiz-grad"> |
| 22 | 23 | <h2>Debtags</h2> |
| 23 | 24 | <ul id="debtags_pkg"> |
| 24 | -$for facet, tags in pkg['tag'].items(): | |
| 25 | +$for facet, tags in pkg.tags.items(): | |
| 25 | 26 | <li> $facet |
| 26 | 27 | <ul> |
| 27 | 28 | $for tag in tags: |
| ... | ... | @@ -35,32 +36,33 @@ $for facet, tags in pkg['tag'].items(): |
| 35 | 36 | <h2>Details</h2> |
| 36 | 37 | |
| 37 | 38 | <ul> |
| 38 | - <li><b>Description</b>: <br />$:pkg['long_description']</li> | |
| 39 | - $if pkg['homepage']: | |
| 40 | - <li><b>Homepage</b>:<a href="$pkg['homepage']">$pkg['homepage']</a></li> | |
| 41 | - $if pkg['task']: | |
| 42 | - <li><b>Tasks</b>: $pkg['task']</li> | |
| 43 | - <li><b>Section</b>: $pkg['section']</li> | |
| 44 | - $if pkg['recommends']: | |
| 45 | - <li><b>Recommends</b>: $pkg['recommends']</li> | |
| 46 | - $if pkg['suggests']: | |
| 47 | - <li><b>Suggests</b>: $pkg['suggests']</li> | |
| 48 | - $if pkg['origin']: | |
| 49 | - <li><b>Origin</b>: $pkg['origin']</li> | |
| 50 | - <li><b>Maintainer</b>: $pkg['maintainer']</li> | |
| 39 | + $if hasattr(pkg, 'description'): | |
| 40 | + <li><b>Description:</b> <br />$:pkg.description</li> | |
| 41 | + $if hasattr(pkg, 'maintainer'): | |
| 42 | + <li><b>Maintainer:</b> $pkg.maintainer</li> | |
| 43 | + $if hasattr(pkg, 'homepage'): | |
| 44 | + <li><b>Homepage:</b> <a href="$pkg.homepage">$pkg.homepage</a></li> | |
| 45 | + $if hasattr(pkg,'section'): | |
| 46 | + <li><b>Section:</b> $pkg.section</li> | |
| 47 | + $if hasattr(pkg,'recommends'): | |
| 48 | + <li><b>Recommends:</b> $pkg.recommends</li> | |
| 49 | + $if hasattr(pkg,'suggests'): | |
| 50 | + <li><b>Suggests:</b> $pkg.suggests</li> | |
| 51 | + $if hasattr(pkg,'origin'): | |
| 52 | + <li><b>Origin:</b> $pkg.origin</li> | |
| 51 | 53 | </ul> |
| 52 | 54 | |
| 53 | 55 | </p> |
| 54 | 56 | |
| 55 | 57 | <div id="debresources_box" class="graybox vert-grad"> |
| 56 | -<h2>Debian resources:</h2> | |
| 58 | +<h2>Debian resources</h2> | |
| 57 | 59 | <ul> |
| 58 | - <li><a href="http://packages.debian.org/$pkg['package']">Package page on debian.org</a></li> | |
| 59 | - <li><a href="http://bugs.debian.org/$pkg['package']">Debian bug tracking system (BTS)</a></li> | |
| 60 | - <li><a href="http://packages.qa.debian.org/$pkg['package']">Debian package tracking system (PTS)</a></li> | |
| 61 | - <li><a href="http://qa.debian.org/popcon.php?package=$pkg['package']">Popularity contest statistics (Popcon)</a></li> | |
| 62 | - <li><a href="http://patch-tracker.debian.org/package/$pkg['package']">Debian patch tracking system</a></li> | |
| 63 | - <li><a href="http://screenshots.debian.net/package/$pkg['package']">Screenshots</a></li> | |
| 60 | + <li><a href="http://packages.debian.org/$pkg.name">Package page on debian.org</a></li> | |
| 61 | + <li><a href="http://bugs.debian.org/$pkg.name">Debian bug tracking system (BTS)</a></li> | |
| 62 | + <li><a href="http://packages.qa.debian.org/$pkg.name">Debian package tracking system (PTS)</a></li> | |
| 63 | + <li><a href="http://qa.debian.org/popcon.php?package=$pkg.name">Popularity contest statistics (Popcon)</a></li> | |
| 64 | + <li><a href="http://patch-tracker.debian.org/package/$pkg.name">Debian patch tracking system</a></li> | |
| 65 | + <li><a href="http://screenshots.debian.net/package/$pkg.name">Screenshots</a></li> | |
| 64 | 66 | </ul> |
| 65 | 67 | </div><!-- id="debresources_box --> |
| 66 | 68 | ... | ... |
src/web/templates/survey.html
| 1 | 1 | $def with (pkgs_details, request) |
| 2 | 2 | $var title: Survey |
| 3 | +$var url_base: /survey/ | |
| 4 | +$var action: START | |
| 3 | 5 | $var mod = 'survey'; |
| 4 | 6 | $var cssfiles: static/coda-slider-2.0/stylesheets/coda-slider-2.0.css static/css/facebox.css static/css/survey.css |
| 5 | 7 | $var jsfiles: /static/coda-slider-2.0/javascripts/jquery-1.3.2.min.js /static/coda-slider-2.0/javascripts/jquery.coda-slider-2.0.js /static/coda-slider-2.0/javascripts/jquery.easing.1.3.js /static/js/facebox.js |
| ... | ... | @@ -27,9 +29,7 @@ $var jsfiles: /static/coda-slider-2.0/javascripts/jquery-1.3.2.min.js /static/co |
| 27 | 29 | <div class="show-end" style="display: none;"> |
| 28 | 30 | |
| 29 | 31 | <p> |
| 30 | -You have completed this round of evaluations. If you have time to do some more, | |
| 31 | -please do so. Otherwise, please conclude your participation clicking in the | |
| 32 | -button below. | |
| 32 | +If you have any comment regarding this set of suggestions, please write in the form below. Choose <i>Continue</i> if you can perform another round of evaluations, or <i>Finish</i> to conclude your participation. | |
| 33 | 33 | </p> |
| 34 | 34 | |
| 35 | 35 | </div> |
| ... | ... | @@ -38,24 +38,25 @@ button below. |
| 38 | 38 | |
| 39 | 39 | <input type="hidden" name="user_id" value=$request.user.user_id> |
| 40 | 40 | <input type="hidden" name="strategy" value=$request.strategy> |
| 41 | -<div id="controls-form" style="display: none;" class="show-end"><!-- display show in the end form --> | |
| 42 | -<label for="finish_button" id="tip-finish"> | |
| 43 | - <!--<div class="tip important"> | |
| 44 | - <p>Conclude your participation in this survey</p> | |
| 45 | - </div>--> | |
| 41 | + | |
| 42 | +<div style="display: none; width: 400px; margin-left: 150px; margin-top: 10px;" class="show-end"><!-- display show in the end form --> | |
| 43 | +<p align="center"> | |
| 44 | +<label for="comments"> | |
| 45 | + <b>Comments</b><br /> | |
| 46 | + <textarea name="comments" value="" rows="4" cols="48"></textarea> <br /> | |
| 47 | +</label> | |
| 48 | +</p> | |
| 49 | +<label for="finish_button"> | |
| 46 | 50 | <input id="finish-button" name="finish_button" type="submit" value="Finish" class="glass" /> |
| 47 | 51 | </label> |
| 48 | -<label for="continue_button" id="tip-continue"> | |
| 49 | - <!--<div class="tip tip"> | |
| 50 | - <p>Evaluate more suggestions </p> | |
| 51 | - </div>--> | |
| 52 | +<label for="continue_button"> | |
| 52 | 53 | <input id="continue-button" name="continue_button" type="submit" value="Continue" class="glass" /> |
| 53 | 54 | </label> |
| 54 | 55 | </div><!-- id="controls-form" --> |
| 55 | 56 | |
| 56 | 57 | <div class="coda-slider-wrapper hide-end"> |
| 57 | 58 | <div class="coda-slider preload" id="coda-slider-1"> |
| 58 | - <h5 style="float: right;">How do you evaluate this recommendation?</h5> <br /> | |
| 59 | + <h5 style="float: right;"><b>How do you evaluate this recommendation?</b></h5> <br /> | |
| 59 | 60 | $for pkg in pkgs_details: |
| 60 | 61 | <div class="panel"> |
| 61 | 62 | <div id="panel-controls" class="glass"> |
| ... | ... | @@ -92,7 +93,7 @@ $for pkg in pkgs_details: |
| 92 | 93 | $if hasattr(pkg,'maintainer'): |
| 93 | 94 | <li><pre> Maintained by $:pkg.maintainer</pre></li> |
| 94 | 95 | $if hasattr(pkg,'homepage'): |
| 95 | - <li><pre> Homepage is $:pkg.homepage</pre></li> | |
| 96 | + <li><pre> Homepage: $:pkg.homepage</pre></li> | |
| 96 | 97 | </ul> |
| 97 | 98 | </div><!-- id="content-pkg" --> |
| 98 | 99 | </div><!-- .panel-wrapper --> | ... | ... |
src/web/templates/survey_index.html
| ... | ... | @@ -1,35 +0,0 @@ |
| 1 | -$var title: Survey | |
| 2 | -$var mod = 'index'; | |
| 3 | -$var cssfiles: static/css/survey.css | |
| 4 | -$var jsfiles: | |
| 5 | - | |
| 6 | -<!-- Dynamic form --> | |
| 7 | -<script type="application/x-javascript"> | |
| 8 | -window.onload = function() { | |
| 9 | - setupDependencies('weboptions'); //name of form(s). Seperate each with a comma (ie: 'weboptions', 'myotherform' ) | |
| 10 | - }; | |
| 11 | -</script> | |
| 12 | - | |
| 13 | -<div id="maincontent"> | |
| 14 | -<div class="innertube"> | |
| 15 | - | |
| 16 | -<div class="textbox"> | |
| 17 | -<h1>AppRecommender Survey</h1> | |
| 18 | -<h2>Help us learn your needs</h2> | |
| 19 | - | |
| 20 | -<p>Participate in this survey and contribute for the development of | |
| 21 | -<a href="http://github.com/tassia/AppRecommender">AppRecommender</a>, | |
| 22 | -a recommender system for GNU/Linux applications.</p><br /> | |
| 23 | - <p align="justify"> Provide a list of packages installed in a real | |
| 24 | - running system and a set of applications will be suggested for it. You can | |
| 25 | - upload a popularity-contest submission file (usually located at | |
| 26 | - '/var/log/popularity-contest') or any other file with packages name as first | |
| 27 | - field of each line. For instance, you can run the following command and | |
| 28 | - upload the generated 'packages.list' file.</p><br /> | |
| 29 | - <p><code> # dpkg-query --show > packages.list </code></p> | |
| 30 | -</div> | |
| 31 | - | |
| 32 | -</div><!-- class="innertube" --> | |
| 33 | -</div><!-- id="maincontent" --> | |
| 34 | - | |
| 35 | - |
src/web/templates/thanks.html
| 1 | 1 | $def with (user_id) |
| 2 | +$var url_base: /survey/ | |
| 3 | +$var action: START | |
| 2 | 4 | $var title: Thanks |
| 3 | 5 | $var mod = 'thanks'; |
| 4 | 6 | $var cssfiles: static/css/survey.css |
| ... | ... | @@ -11,302 +13,31 @@ $var cssfiles: static/css/survey.css |
| 11 | 13 | <div id="maincontent"> |
| 12 | 14 | <div class="innertube"> |
| 13 | 15 | |
| 14 | -<center> | |
| 15 | -<h1>Thanks!</h1> | |
| 16 | -<p>Thank you very much for participating in this survey. Your help is very much | |
| 17 | -appreciated!</p><br /> | |
| 18 | - | |
| 19 | -<div id="optionalform"> | |
| 20 | -<center> | |
| 21 | -<h2>Optional Info</h2> | |
| 22 | -<p> | |
| 23 | - Provide your name or nick if you agree with that being published in our | |
| 24 | - thanks page and final report. If you also provide a valid e-mail address we'll | |
| 25 | - be able to send you the survey report as soon as it is ready. | |
| 16 | +<h1>AppRecommender Survey</h1> | |
| 17 | +<p>Thank you very much for participating in this survey, you help is very much | |
| 18 | +appreciated! Identify yourself if you want to be mentioned in our thanks page | |
| 19 | +and final report. | |
| 26 | 20 | </p><br /> |
| 27 | -</center> | |
| 28 | 21 | |
| 29 | - <form action="thanks" method="post" enctype="multipart/form-data" name="identification_form"> | |
| 30 | - <label> | |
| 31 | - <input type="hidden" name="user_id" value=$user_id> | |
| 32 | - Name: <input class="text" type="text" name="name" value="" size="40"> | |
| 33 | - </label></p> | |
| 34 | - <p> | |
| 35 | - <label> | |
| 36 | - E-mail: <input class="text" type="text" name="email" value="" size="40"> | |
| 37 | - </label></p><!-- | |
| 38 | - <p> | |
| 39 | - <label> | |
| 40 | - Country: <select name="Country"> | |
| 41 | - <option value="" selected="selected">--- Select ---</option> | |
| 42 | - <option value="United States">United States</option> | |
| 43 | - <option value="United Kingdom">United Kingdom</option> | |
| 44 | - <option value="Afghanistan">Afghanistan</option> | |
| 45 | - <option value="Albania">Albania</option> | |
| 46 | - <option value="Algeria">Algeria</option> | |
| 47 | - <option value="American Samoa">American Samoa</option> | |
| 48 | - <option value="Andorra">Andorra</option> | |
| 49 | - <option value="Angola">Angola</option> | |
| 50 | - <option value="Anguilla">Anguilla</option> | |
| 51 | - <option value="Antarctica">Antarctica</option> | |
| 52 | - <option value="Antigua and Barbuda">Antigua and Barbuda</option> | |
| 53 | - <option value="Argentina">Argentina</option> | |
| 54 | - <option value="Armenia">Armenia</option> | |
| 55 | - <option value="Aruba">Aruba</option> | |
| 56 | - <option value="Australia">Australia</option> | |
| 57 | - <option value="Austria">Austria</option> | |
| 58 | - <option value="Azerbaijan">Azerbaijan</option> | |
| 59 | - <option value="Bahamas">Bahamas</option> | |
| 60 | - <option value="Bahrain">Bahrain</option> | |
| 61 | - <option value="Bangladesh">Bangladesh</option> | |
| 62 | - <option value="Barbados">Barbados</option> | |
| 63 | - <option value="Belarus">Belarus</option> | |
| 64 | - <option value="Belgium">Belgium</option> | |
| 65 | - <option value="Belize">Belize</option> | |
| 66 | - <option value="Benin">Benin</option> | |
| 67 | - <option value="Bermuda">Bermuda</option> | |
| 68 | - <option value="Bhutan">Bhutan</option> | |
| 69 | - <option value="Bolivia">Bolivia</option> | |
| 70 | - <option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option> | |
| 71 | - <option value="Botswana">Botswana</option> | |
| 72 | - <option value="Bouvet Island">Bouvet Island</option> | |
| 73 | - <option value="Brazil">Brazil</option> | |
| 74 | - <option value="British Indian Ocean Territory">British Indian Ocean | |
| 75 | - Territory</option> | |
| 76 | - <option value="Brunei Darussalam">Brunei Darussalam</option> | |
| 77 | - <option value="Bulgaria">Bulgaria</option> | |
| 78 | - <option value="Burkina Faso">Burkina Faso</option> | |
| 79 | - <option value="Burundi">Burundi</option> | |
| 80 | - <option value="Cambodia">Cambodia</option> | |
| 81 | - <option value="Cameroon">Cameroon</option> | |
| 82 | - <option value="Canada">Canada</option> | |
| 83 | - <option value="Cape Verde">Cape Verde</option> | |
| 84 | - <option value="Cayman Islands">Cayman Islands</option> | |
| 85 | - <option value="Central African Republic">Central African Republic</option> | |
| 86 | - <option value="Chad">Chad</option> | |
| 87 | - <option value="Chile">Chile</option> | |
| 88 | - <option value="China">China</option> | |
| 89 | - <option value="Christmas Island">Christmas Island</option> | |
| 90 | - <option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option> | |
| 91 | - <option value="Colombia">Colombia</option> | |
| 92 | - <option value="Comoros">Comoros</option> | |
| 93 | - <option value="Congo">Congo</option> | |
| 94 | - <option value="Congo, The Democratic Republic of The">Congo, The Democratic | |
| 95 | - Republic of The</option> | |
| 96 | - <option value="Cook Islands">Cook Islands</option> | |
| 97 | - <option value="Costa Rica">Costa Rica</option> | |
| 98 | - <option value="Cote D'ivoire">Cote D'ivoire</option> | |
| 99 | - <option value="Croatia">Croatia</option> | |
| 100 | - <option value="Cuba">Cuba</option> | |
| 101 | - <option value="Cyprus">Cyprus</option> | |
| 102 | - <option value="Czech Republic">Czech Republic</option> | |
| 103 | - <option value="Denmark">Denmark</option> | |
| 104 | - <option value="Djibouti">Djibouti</option> | |
| 105 | - <option value="Dominica">Dominica</option> | |
| 106 | - <option value="Dominican Republic">Dominican Republic</option> | |
| 107 | - <option value="Ecuador">Ecuador</option> | |
| 108 | - <option value="Egypt">Egypt</option> | |
| 109 | - <option value="El Salvador">El Salvador</option> | |
| 110 | - <option value="Equatorial Guinea">Equatorial Guinea</option> | |
| 111 | - <option value="Eritrea">Eritrea</option> | |
| 112 | - <option value="Estonia">Estonia</option> | |
| 113 | - <option value="Ethiopia">Ethiopia</option> | |
| 114 | - <option value="Falkland Islands (Malvinas)">Falkland Islands | |
| 115 | - (Malvinas)</option> | |
| 116 | - <option value="Faroe Islands">Faroe Islands</option> | |
| 117 | - <option value="Fiji">Fiji</option> | |
| 118 | - <option value="Finland">Finland</option> | |
| 119 | - <option value="France">France</option> | |
| 120 | - <option value="French Guiana">French Guiana</option> | |
| 121 | - <option value="French Polynesia">French Polynesia</option> | |
| 122 | - <option value="French Southern Territories">French Southern | |
| 123 | - Territories</option> | |
| 124 | - <option value="Gabon">Gabon</option> | |
| 125 | - <option value="Gambia">Gambia</option> | |
| 126 | - <option value="Georgia">Georgia</option> | |
| 127 | - <option value="Germany">Germany</option> | |
| 128 | - <option value="Ghana">Ghana</option> | |
| 129 | - <option value="Gibraltar">Gibraltar</option> | |
| 130 | - <option value="Greece">Greece</option> | |
| 131 | - <option value="Greenland">Greenland</option> | |
| 132 | - <option value="Grenada">Grenada</option> | |
| 133 | - <option value="Guadeloupe">Guadeloupe</option> | |
| 134 | - <option value="Guam">Guam</option> | |
| 135 | - <option value="Guatemala">Guatemala</option> | |
| 136 | - <option value="Guinea">Guinea</option> | |
| 137 | - <option value="Guinea-bissau">Guinea-bissau</option> | |
| 138 | - <option value="Guyana">Guyana</option> | |
| 139 | - <option value="Haiti">Haiti</option> | |
| 140 | - <option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald | |
| 141 | - Islands</option> | |
| 142 | - <option value="Holy See (Vatican City State)">Holy See (Vatican City | |
| 143 | - State)</option> | |
| 144 | - <option value="Honduras">Honduras</option> | |
| 145 | - <option value="Hong Kong">Hong Kong</option> | |
| 146 | - <option value="Hungary">Hungary</option> | |
| 147 | - <option value="Iceland">Iceland</option> | |
| 148 | - <option value="India">India</option> | |
| 149 | - <option value="Indonesia">Indonesia</option> | |
| 150 | - <option value="Iran, Islamic Republic of">Iran, Islamic Republic | |
| 151 | - of</option> | |
| 152 | - <option value="Iraq">Iraq</option> | |
| 153 | - <option value="Ireland">Ireland</option> | |
| 154 | - <option value="Israel">Israel</option> | |
| 155 | - <option value="Italy">Italy</option> | |
| 156 | - <option value="Jamaica">Jamaica</option> | |
| 157 | - <option value="Japan">Japan</option> | |
| 158 | - <option value="Jordan">Jordan</option> | |
| 159 | - <option value="Kazakhstan">Kazakhstan</option> | |
| 160 | - <option value="Kenya">Kenya</option> | |
| 161 | - <option value="Kiribati">Kiribati</option> | |
| 162 | - <option value="Korea, Democratic People's Republic of">Korea, Democratic | |
| 163 | - People's Republic of</option> | |
| 164 | - <option value="Korea, Republic of">Korea, Republic of</option> | |
| 165 | - <option value="Kuwait">Kuwait</option> | |
| 166 | - <option value="Kyrgyzstan">Kyrgyzstan</option> | |
| 167 | - <option value="Lao People's Democratic Republic">Lao People's Democratic | |
| 168 | - Republic</option> | |
| 169 | - <option value="Latvia">Latvia</option> | |
| 170 | - <option value="Lebanon">Lebanon</option> | |
| 171 | - <option value="Lesotho">Lesotho</option> | |
| 172 | - <option value="Liberia">Liberia</option> | |
| 173 | - <option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option> | |
| 174 | - <option value="Liechtenstein">Liechtenstein</option> | |
| 175 | - <option value="Lithuania">Lithuania</option> | |
| 176 | - <option value="Luxembourg">Luxembourg</option> | |
| 177 | - <option value="Macao">Macao</option> | |
| 178 | - <option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The | |
| 179 | - Former Yugoslav Republic of</option> | |
| 180 | - <option value="Madagascar">Madagascar</option> | |
| 181 | - <option value="Malawi">Malawi</option> | |
| 182 | - <option value="Malaysia">Malaysia</option> | |
| 183 | - <option value="Maldives">Maldives</option> | |
| 184 | - <option value="Mali">Mali</option> | |
| 185 | - <option value="Malta">Malta</option> | |
| 186 | - <option value="Marshall Islands">Marshall Islands</option> | |
| 187 | - <option value="Martinique">Martinique</option> | |
| 188 | - <option value="Mauritania">Mauritania</option> | |
| 189 | - <option value="Mauritius">Mauritius</option> | |
| 190 | - <option value="Mayotte">Mayotte</option> | |
| 191 | - <option value="Mexico">Mexico</option> | |
| 192 | - <option value="Micronesia, Federated States of">Micronesia, Federated | |
| 193 | - States of</option> | |
| 194 | - <option value="Moldova, Republic of">Moldova, Republic of</option> | |
| 195 | - <option value="Monaco">Monaco</option> | |
| 196 | - <option value="Mongolia">Mongolia</option> | |
| 197 | - <option value="Montserrat">Montserrat</option> | |
| 198 | - <option value="Morocco">Morocco</option> | |
| 199 | - <option value="Mozambique">Mozambique</option> | |
| 200 | - <option value="Myanmar">Myanmar</option> | |
| 201 | - <option value="Namibia">Namibia</option> | |
| 202 | - <option value="Nauru">Nauru</option> | |
| 203 | - <option value="Nepal">Nepal</option> | |
| 204 | - <option value="Netherlands">Netherlands</option> | |
| 205 | - <option value="Netherlands Antilles">Netherlands Antilles</option> | |
| 206 | - <option value="New Caledonia">New Caledonia</option> | |
| 207 | - <option value="New Zealand">New Zealand</option> | |
| 208 | - <option value="Nicaragua">Nicaragua</option> | |
| 209 | - <option value="Niger">Niger</option> | |
| 210 | - <option value="Nigeria">Nigeria</option> | |
| 211 | - <option value="Niue">Niue</option> | |
| 212 | - <option value="Norfolk Island">Norfolk Island</option> | |
| 213 | - <option value="Northern Mariana Islands">Northern Mariana Islands</option> | |
| 214 | - <option value="Norway">Norway</option> | |
| 215 | - <option value="Oman">Oman</option> | |
| 216 | - <option value="Pakistan">Pakistan</option> | |
| 217 | - <option value="Palau">Palau</option> | |
| 218 | - <option value="Palestinian Territory, Occupied">Palestinian Territory, | |
| 219 | - Occupied</option> | |
| 220 | - <option value="Panama">Panama</option> | |
| 221 | - <option value="Papua New Guinea">Papua New Guinea</option> | |
| 222 | - <option value="Paraguay">Paraguay</option> | |
| 223 | - <option value="Peru">Peru</option> | |
| 224 | - <option value="Philippines">Philippines</option> | |
| 225 | - <option value="Pitcairn">Pitcairn</option> | |
| 226 | - <option value="Poland">Poland</option> | |
| 227 | - <option value="Portugal">Portugal</option> | |
| 228 | - <option value="Puerto Rico">Puerto Rico</option> | |
| 229 | - <option value="Qatar">Qatar</option> | |
| 230 | - <option value="Reunion">Reunion</option> | |
| 231 | - <option value="Romania">Romania</option> | |
| 232 | - <option value="Russian Federation">Russian Federation</option> | |
| 233 | - <option value="Rwanda">Rwanda</option> | |
| 234 | - <option value="Saint Helena">Saint Helena</option> | |
| 235 | - <option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option> | |
| 236 | - <option value="Saint Lucia">Saint Lucia</option> | |
| 237 | - <option value="Saint Pierre and Miquelon">Saint Pierre and | |
| 238 | - Miquelon</option> | |
| 239 | - <option value="Saint Vincent and The Grenadines">Saint Vincent and The | |
| 240 | - Grenadines</option> | |
| 241 | - <option value="Samoa">Samoa</option> | |
| 242 | - <option value="San Marino">San Marino</option> | |
| 243 | - <option value="Sao Tome and Principe">Sao Tome and Principe</option> | |
| 244 | - <option value="Saudi Arabia">Saudi Arabia</option> | |
| 245 | - <option value="Senegal">Senegal</option> | |
| 246 | - <option value="Serbia and Montenegro">Serbia and Montenegro</option> | |
| 247 | - <option value="Seychelles">Seychelles</option> | |
| 248 | - <option value="Sierra Leone">Sierra Leone</option> | |
| 249 | - <option value="Singapore">Singapore</option> | |
| 250 | - <option value="Slovakia">Slovakia</option> | |
| 251 | - <option value="Slovenia">Slovenia</option> | |
| 252 | - <option value="Solomon Islands">Solomon Islands</option> | |
| 253 | - <option value="Somalia">Somalia</option> | |
| 254 | - <option value="South Africa">South Africa</option> | |
| 255 | - <option value="South Georgia and The South Sandwich Islands">South Georgia | |
| 256 | - and The South Sandwich Islands</option> | |
| 257 | - <option value="Spain">Spain</option> | |
| 258 | - <option value="Sri Lanka">Sri Lanka</option> | |
| 259 | - <option value="Sudan">Sudan</option> | |
| 260 | - <option value="Suriname">Suriname</option> | |
| 261 | - <option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option> | |
| 262 | - <option value="Swaziland">Swaziland</option> | |
| 263 | - <option value="Sweden">Sweden</option> | |
| 264 | - <option value="Switzerland">Switzerland</option> | |
| 265 | - <option value="Syrian Arab Republic">Syrian Arab Republic</option> | |
| 266 | - <option value="Taiwan, Province of China">Taiwan, Province of | |
| 267 | - China</option> | |
| 268 | - <option value="Tajikistan">Tajikistan</option> | |
| 269 | - <option value="Tanzania, United Republic of">Tanzania, United Republic | |
| 270 | - of</option> | |
| 271 | - <option value="Thailand">Thailand</option> | |
| 272 | - <option value="Timor-leste">Timor-leste</option> | |
| 273 | - <option value="Togo">Togo</option> | |
| 274 | - <option value="Tokelau">Tokelau</option> | |
| 275 | - <option value="Tonga">Tonga</option> | |
| 276 | - <option value="Trinidad and Tobago">Trinidad and Tobago</option> | |
| 277 | - <option value="Tunisia">Tunisia</option> | |
| 278 | - <option value="Turkey">Turkey</option> | |
| 279 | - <option value="Turkmenistan">Turkmenistan</option> | |
| 280 | - <option value="Turks and Caicos Islands">Turks and Caicos Islands</option> | |
| 281 | - <option value="Tuvalu">Tuvalu</option> | |
| 282 | - <option value="Uganda">Uganda</option> | |
| 283 | - <option value="Ukraine">Ukraine</option> | |
| 284 | - <option value="United Arab Emirates">United Arab Emirates</option> | |
| 285 | - <option value="United Kingdom">United Kingdom</option> | |
| 286 | - <option value="United States">United States</option> | |
| 287 | - <option value="United States Minor Outlying Islands">United States Minor | |
| 288 | - Outlying Islands</option> | |
| 289 | - <option value="Uruguay">Uruguay</option> | |
| 290 | - <option value="Uzbekistan">Uzbekistan</option> | |
| 291 | - <option value="Vanuatu">Vanuatu</option> | |
| 292 | - <option value="Venezuela">Venezuela</option> | |
| 293 | - <option value="Viet Nam">Viet Nam</option> | |
| 294 | - <option value="Virgin Islands, British">Virgin Islands, British</option> | |
| 295 | - <option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option> | |
| 296 | - <option value="Wallis and Futuna">Wallis and Futuna</option> | |
| 297 | - <option value="Western Sahara">Western Sahara</option> | |
| 298 | - <option value="Yemen">Yemen</option> | |
| 299 | - <option value="Zambia">Zambia</option> | |
| 300 | - <option value="Zimbabwe">Zimbabwe</option> | |
| 301 | - </select> | |
| 302 | - </label></p><br />--> | |
| 303 | - <p> <label class="text-left"> | |
| 304 | - Comments:<br /> | |
| 305 | - <textarea name="comments" value="" rows="2" cols="50"></textarea> | |
| 306 | - </label></p> | |
| 307 | - <p><input type="submit" name="send_button" value="Submit" class="glass" | |
| 308 | - id="finish-button"><p> | |
| 309 | - </form> | |
| 22 | +<div style="margin-left:150px;" id="optionalform"> | |
| 23 | +<center> | |
| 24 | +<form action="thanks" method="post" enctype="multipart/form-data" name="identification_form"> | |
| 25 | + <p> | |
| 26 | + <label> | |
| 27 | + <input type="hidden" name="user_id" value=$user_id> | |
| 28 | + Name <input class="text" type="text" name="name" value="" size="40"> | |
| 29 | + </label></p> | |
| 30 | + <p> | |
| 31 | + <label> | |
| 32 | + E-mail <input class="text" type="text" name="email" value="" size="40"> | |
| 33 | + </label></p> | |
| 34 | + <p> | |
| 35 | + <label style="align:left"> | |
| 36 | + General comments or suggestions<br /> | |
| 37 | + <textarea name="comments" value="" rows="2" cols="50"></textarea> | |
| 38 | + </label></p> | |
| 39 | + <p><input type="submit" name="send_button" value="Submit" class="glass" id="finish-button"><p> | |
| 40 | +</form> | |
| 310 | 41 | |
| 311 | 42 | <div><!-- optionalform --> |
| 312 | 43 | </center> | ... | ... |