Commit cfc42d5bd36cb21122457b0ae51550815576d191

Authored by Tássia Camões Araújo
1 parent b6c00f52
Exists in master and in 1 other branch add_vagrant

Web interface cleaning/fixing for AppRecommender server and survey.

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 #result-thumbnail .item { 38 #result-thumbnail .item {
7 display: block; 39 display: block;
@@ -11,6 +43,7 @@ overflow: hidden; @@ -11,6 +43,7 @@ overflow: hidden;
11 float: left; 43 float: left;
12 text-align: center; 44 text-align: center;
13 border-radius: 5px; 45 border-radius: 5px;
  46 +margin-left: 30px;
14 } 47 }
15 48
16 #result-thumbnail .item:hover { 49 #result-thumbnail .item:hover {
@@ -25,7 +58,6 @@ color: gray; @@ -25,7 +58,6 @@ color: gray;
25 58
26 59
27 a.link-thumb img { 60 a.link-thumb img {
28 -height: 100px;  
29 margin: 5px; 61 margin: 5px;
30 border-radius: 4px; 62 border-radius: 4px;
31 box-shadow: 0 1px 2px gray; 63 box-shadow: 0 1px 2px gray;
@@ -83,6 +115,7 @@ cursor: pointer; @@ -83,6 +115,7 @@ cursor: pointer;
83 #debresources_box { 115 #debresources_box {
84 float: left; 116 float: left;
85 margin-top: 20px; 117 margin-top: 20px;
  118 +padding: 10px;
86 } 119 }
87 120
88 #debresources_box li { 121 #debresources_box li {
src/web/static/css/facebox.css
@@ -20,8 +20,8 @@ @@ -20,8 +20,8 @@
20 20
21 #facebox .content { 21 #facebox .content {
22 display:table; 22 display:table;
23 - width: 370px;  
24 - padding: 10px; 23 + width: 650px;
  24 + padding: 20px;
25 background: #fff; 25 background: #fff;
26 -webkit-border-radius:4px; 26 -webkit-border-radius:4px;
27 -moz-border-radius:4px; 27 -moz-border-radius:4px;
src/web/static/css/style.css
@@ -151,7 +151,7 @@ float: right; @@ -151,7 +151,7 @@ float: right;
151 } 151 }
152 152
153 .innertube { 153 .innertube {
154 -margin: 15px; 154 +margin: 30px;
155 } 155 }
156 156
157 #footer { 157 #footer {
@@ -294,7 +294,8 @@ background-image: url('../images/admon-note.png'); @@ -294,7 +294,8 @@ background-image: url('../images/admon-note.png');
294 294
295 /* Recommender BOX */ 295 /* Recommender BOX */
296 296
297 -#recommender-box { 297 +#recommender-box {
  298 +height: 43px;
298 position: relative; 299 position: relative;
299 margin:0; 300 margin:0;
300 vertical-align: top; 301 vertical-align: top;
@@ -325,8 +326,9 @@ z-index: 1; @@ -325,8 +326,9 @@ z-index: 1;
325 } 326 }
326 327
327 #pkgs_list, #input-box { 328 #pkgs_list, #input-box {
  329 +padding:10px;
328 position: relative; 330 position: relative;
329 -width: 400px; 331 +width: auto;
330 } 332 }
331 333
332 #pkgs_list { 334 #pkgs_list {
src/web/static/css/survey.css
@@ -67,7 +67,7 @@ min-height: 200px; @@ -67,7 +67,7 @@ min-height: 200px;
67 67
68 body.survey #wrap { 68 body.survey #wrap {
69 padding-top: 0px; 69 padding-top: 0px;
70 -min-height: 200px; 70 +min-height: 400px;
71 position: relative; 71 position: relative;
72 } 72 }
73 73
src/web/static/images/apprec.png 0 → 100644

57.4 KB

src/web/static/images/diaappr.png

44.3 KB

src/web/templates/about.html
1 $var title: About 1 $var title: About
  2 +$var url_base: /
2 $var mod = 'about'; 3 $var mod = 'about';
  4 +$var action: RECOMMENDATION
3 $var cssfiles: static/css/facebox.css 5 $var cssfiles: static/css/facebox.css
4 $var jsfiles: static/js/facebox.js 6 $var jsfiles: static/js/facebox.js
5 7
@@ -15,29 +17,24 @@ $var jsfiles: static/js/facebox.js @@ -15,29 +17,24 @@ $var jsfiles: static/js/facebox.js
15 <div id="maincontent"> 17 <div id="maincontent">
16 <div class="innertube"> 18 <div class="innertube">
17 19
18 -<h1>AppRecommender Survey</h1> 20 +<h1>AppRecommender</h1>
19 <h2>About</h2> 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 <img style="float: right; margin: 10px;" alt="AppRecommender dataflow" 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 <br /> 33 <br />
37 34
38 <p align="justify">The picture on the right gives an idea of the data workflow 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 be interested in, based on the profile deduced from the his previous choices 38 be interested in, based on the profile deduced from the his previous choices
42 and other similar users choices. The recommendations are composed using 39 and other similar users choices. The recommendations are composed using
43 classification and information retrieval techniques using 40 classification and information retrieval techniques using
src/web/templates/about_survey.html 0 → 100755
@@ -0,0 +1,52 @@ @@ -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 $var jsfiles: static/js/facebox.js 7 $var jsfiles: static/js/facebox.js
6 8
7 <script type="application/x-javascript"> 9 <script type="application/x-javascript">
@@ -41,44 +43,26 @@ $$(document).ready(function() { @@ -41,44 +43,26 @@ $$(document).ready(function() {
41 }); 43 });
42 </script> 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 <div id="maincontent"> 46 <div id="maincontent">
61 <div class="innertube"> 47 <div class="innertube">
62 48
63 -<h1>Recomendation</h1> 49 +<center>
  50 +<h1>Recommended applications</h1>
  51 +</center>
64 52
65 <form action="thanks" method="post" enctype="multipart/form-data"> 53 <form action="thanks" method="post" enctype="multipart/form-data">
66 54
67 <div id="result-thumbnail"> 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 <div class="item"> 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 </a> 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 </div> 65 </div>
80 - $if count == 5:  
81 - $ count = 0  
82 66
83 </div><!-- id="result-thumbnail" --> 67 </div><!-- id="result-thumbnail" -->
84 </form> 68 </form>
src/web/templates/error.html
1 -$def with (error_msgs) 1 +$def with (error_msgs,url_base,action)
2 $var title: Error 2 $var title: Error
  3 +$var url_base: $url_base
  4 +$var action: $action
3 $var mod = 'error'; 5 $var mod = 'error';
4 $var cssfiles: static/css/facebox.css static/css/facebox.css static/css/survey.css 6 $var cssfiles: static/css/facebox.css static/css/facebox.css static/css/survey.css
5 $var jsfiles: static/js/facebox.js 7 $var jsfiles: static/js/facebox.js
@@ -10,21 +12,20 @@ $var jsfiles: static/js/facebox.js @@ -10,21 +12,20 @@ $var jsfiles: static/js/facebox.js
10 12
11 13
12 <div class="index_include"> 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 Your request could not be proccessed due to the following error(s): 19 Your request could not be proccessed due to the following error(s):
18 20
19 -<div class="warning">  
20 <p><ul> 21 <p><ul>
21 $for e in error_msgs: 22 $for e in error_msgs:
22 <b><li>$e</li></b> 23 <b><li>$e</li></b>
23 </ul></p> 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 </div> 30 </div>
30 31
src/web/templates/error_survey.html
@@ -1,20 +0,0 @@ @@ -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/fake.html 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +$var title: Home
  2 +$var mod = 'index';
  3 +<p>Fixing bugs...</p>
src/web/templates/index.html
1 $var title: Home 1 $var title: Home
  2 +$var url_base: /
  3 +$var action: RECOMMENDATION
2 $var mod = 'index'; 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 $var jsfiles: static/js/facebox.js 6 $var jsfiles: static/js/facebox.js
5 7
6 8
@@ -604,9 +606,40 @@ function showtags(tagid) { @@ -604,9 +606,40 @@ function showtags(tagid) {
604 606
605 </div><!-- id="box-three" --> 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 <div id="tab-two" class="tabs"> 640 <div id="tab-two" class="tabs">
608 641
609 -<h2>Atualizados recentemente</h2> 642 +<h2>Recently updated</h2>
610 <ul> 643 <ul>
611 <li><a href="#">Recents...1</a></li> 644 <li><a href="#">Recents...1</a></li>
612 <li><a href="#">Recents...2</a></li> 645 <li><a href="#">Recents...2</a></li>
@@ -622,40 +655,6 @@ function showtags(tagid) { @@ -622,40 +655,6 @@ function showtags(tagid) {
622 655
623 </div><!-- id="box-two" --> 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 </div><!-- id="tab-wrap" --> 658 </div><!-- id="tab-wrap" -->
660 </div><!-- id="tab-area" --> 659 </div><!-- id="tab-area" -->
661 660
@@ -667,13 +666,19 @@ function showtags(tagid) { @@ -667,13 +666,19 @@ function showtags(tagid) {
667 <div class="innertube"> 666 <div class="innertube">
668 667
669 <div class="textbox"> 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 </div> 683 </div>
679 684
src/web/templates/index_survey.html 0 → 100755
@@ -0,0 +1,36 @@ @@ -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 $def with (content) 1 $def with (content)
2 -$ url_base = "/" 2 +$ url_base = "/survey/"
3 <!--Force IE6 into quirks mode with this comment tag--> 3 <!--Force IE6 into quirks mode with this comment tag-->
4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 5 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -8,16 +8,16 @@ $ url_base = &quot;/&quot; @@ -8,16 +8,16 @@ $ url_base = &quot;/&quot;
8 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 8 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9 <title>AppRecommender - $content.title</title> 9 <title>AppRecommender - $content.title</title>
10 <link rev="made" href="mailto:tassia@gmail.com" /> 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 $if content.has_key('cssfiles'): 15 $if content.has_key('cssfiles'):
16 $for css in content.cssfiles.split(): 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 $if content.has_key('jsfiles'): 22 $if content.has_key('jsfiles'):
23 $for js in content.jsfiles.split(): 23 $for js in content.jsfiles.split():
@@ -61,12 +61,12 @@ function validateForm() @@ -61,12 +61,12 @@ function validateForm()
61 61
62 <div id="wrap" class="vert-grad"> 62 <div id="wrap" class="vert-grad">
63 <div id="header" class="glass"> 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 <div id="recommender-box"> 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 <fieldset> 67 <fieldset>
68 <div id="submit-box"> 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 <a id="advanced-button">advanced query?</a> 70 <a id="advanced-button">advanced query?</a>
71 </div> 71 </div>
72 <div id="input-box"> 72 <div id="input-box">
@@ -85,7 +85,7 @@ function validateForm() @@ -85,7 +85,7 @@ function validateForm()
85 </p> 85 </p>
86 <div id="tip-upload" class="tip important"> 86 <div id="tip-upload" class="tip important">
87 <p> 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 </div><!-- id="tip-upload" --> 89 </div><!-- id="tip-upload" -->
90 </fieldset> 90 </fieldset>
91 </div><!-- id="upload-slide" --> 91 </div><!-- id="upload-slide" -->
@@ -160,8 +160,8 @@ $:content @@ -160,8 +160,8 @@ $:content
160 160
161 <div id="navbar"> 161 <div id="navbar">
162 <ul> 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 <li><a href="http://github.com/tassia/AppRecommender">Development</a></li> 165 <li><a href="http://github.com/tassia/AppRecommender">Development</a></li>
166 </ul> 166 </ul>
167 </div><!-- id="navbar" --> 167 </div><!-- id="navbar" -->
src/web/templates/package.html
1 $def with (pkg) 1 $def with (pkg)
  2 +$var url_base: /
2 3
3 <div class="align-left" id="voting_box"> 4 <div class="align-left" id="voting_box">
4 <button type="button" class="like_button" onclick=";return false;" id="like" > 5 <button type="button" class="like_button" onclick=";return false;" id="like" >
@@ -16,12 +17,12 @@ $def with (pkg) @@ -16,12 +17,12 @@ $def with (pkg)
16 </div> 17 </div>
17 </div><!-- id="voting_box" --> 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 <div id="debtags_box" class="graybox horiz-grad"> 22 <div id="debtags_box" class="graybox horiz-grad">
22 <h2>Debtags</h2> 23 <h2>Debtags</h2>
23 <ul id="debtags_pkg"> 24 <ul id="debtags_pkg">
24 -$for facet, tags in pkg['tag'].items(): 25 +$for facet, tags in pkg.tags.items():
25 <li> $facet 26 <li> $facet
26 <ul> 27 <ul>
27 $for tag in tags: 28 $for tag in tags:
@@ -35,32 +36,33 @@ $for facet, tags in pkg[&#39;tag&#39;].items(): @@ -35,32 +36,33 @@ $for facet, tags in pkg[&#39;tag&#39;].items():
35 <h2>Details</h2> 36 <h2>Details</h2>
36 37
37 <ul> 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 </ul> 53 </ul>
52 54
53 </p> 55 </p>
54 56
55 <div id="debresources_box" class="graybox vert-grad"> 57 <div id="debresources_box" class="graybox vert-grad">
56 -<h2>Debian resources:</h2> 58 +<h2>Debian resources</h2>
57 <ul> 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 </ul> 66 </ul>
65 </div><!-- id="debresources_box --> 67 </div><!-- id="debresources_box -->
66 68
src/web/templates/survey.html
1 $def with (pkgs_details, request) 1 $def with (pkgs_details, request)
2 $var title: Survey 2 $var title: Survey
  3 +$var url_base: /survey/
  4 +$var action: START
3 $var mod = 'survey'; 5 $var mod = 'survey';
4 $var cssfiles: static/coda-slider-2.0/stylesheets/coda-slider-2.0.css static/css/facebox.css static/css/survey.css 6 $var cssfiles: static/coda-slider-2.0/stylesheets/coda-slider-2.0.css static/css/facebox.css static/css/survey.css
5 $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 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,9 +29,7 @@ $var jsfiles: /static/coda-slider-2.0/javascripts/jquery-1.3.2.min.js /static/co
27 <div class="show-end" style="display: none;"> 29 <div class="show-end" style="display: none;">
28 30
29 <p> 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 </p> 33 </p>
34 34
35 </div> 35 </div>
@@ -38,24 +38,25 @@ button below. @@ -38,24 +38,25 @@ button below.
38 38
39 <input type="hidden" name="user_id" value=$request.user.user_id> 39 <input type="hidden" name="user_id" value=$request.user.user_id>
40 <input type="hidden" name="strategy" value=$request.strategy> 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 <input id="finish-button" name="finish_button" type="submit" value="Finish" class="glass" /> 50 <input id="finish-button" name="finish_button" type="submit" value="Finish" class="glass" />
47 </label> 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 <input id="continue-button" name="continue_button" type="submit" value="Continue" class="glass" /> 53 <input id="continue-button" name="continue_button" type="submit" value="Continue" class="glass" />
53 </label> 54 </label>
54 </div><!-- id="controls-form" --> 55 </div><!-- id="controls-form" -->
55 56
56 <div class="coda-slider-wrapper hide-end"> 57 <div class="coda-slider-wrapper hide-end">
57 <div class="coda-slider preload" id="coda-slider-1"> 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 $for pkg in pkgs_details: 60 $for pkg in pkgs_details:
60 <div class="panel"> 61 <div class="panel">
61 <div id="panel-controls" class="glass"> 62 <div id="panel-controls" class="glass">
@@ -92,7 +93,7 @@ $for pkg in pkgs_details: @@ -92,7 +93,7 @@ $for pkg in pkgs_details:
92 $if hasattr(pkg,'maintainer'): 93 $if hasattr(pkg,'maintainer'):
93 <li><pre> Maintained by $:pkg.maintainer</pre></li> 94 <li><pre> Maintained by $:pkg.maintainer</pre></li>
94 $if hasattr(pkg,'homepage'): 95 $if hasattr(pkg,'homepage'):
95 - <li><pre> Homepage is $:pkg.homepage</pre></li> 96 + <li><pre> Homepage: $:pkg.homepage</pre></li>
96 </ul> 97 </ul>
97 </div><!-- id="content-pkg" --> 98 </div><!-- id="content-pkg" -->
98 </div><!-- .panel-wrapper --> 99 </div><!-- .panel-wrapper -->
src/web/templates/survey_index.html
@@ -1,35 +0,0 @@ @@ -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 $def with (user_id) 1 $def with (user_id)
  2 +$var url_base: /survey/
  3 +$var action: START
2 $var title: Thanks 4 $var title: Thanks
3 $var mod = 'thanks'; 5 $var mod = 'thanks';
4 $var cssfiles: static/css/survey.css 6 $var cssfiles: static/css/survey.css
@@ -11,302 +13,31 @@ $var cssfiles: static/css/survey.css @@ -11,302 +13,31 @@ $var cssfiles: static/css/survey.css
11 <div id="maincontent"> 13 <div id="maincontent">
12 <div class="innertube"> 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 </p><br /> 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 <div><!-- optionalform --> 42 <div><!-- optionalform -->
312 </center> 43 </center>
src/web/templates/thanks_id.html
1 -$var title: Feedback 1 +$var title: Thanks
  2 +$var url_base: /survey/
  3 +$var action: START
2 $var mod = 'thanks'; 4 $var mod = 'thanks';
3 $var cssfiles: static/css/survey.css 5 $var cssfiles: static/css/survey.css
4 6