Commit 391b4b29dea0a6baf4711985336e8b472285c3a9

Authored by Tássia Camões Araújo
2 parents 8815101b ffe5e0f7
Exists in master and in 1 other branch add_vagrant

Merge branch 'master' of github.com:tassia/AppRecommender

src/web/server.py 0 → 100644
... ... @@ -0,0 +1,85 @@
  1 +#!/usr/bin/env python
  2 +
  3 +import web
  4 +from web import form
  5 +import tempfile
  6 +
  7 +render = web.template.render('templates/', base='layout')
  8 +
  9 +urls = ('/', 'Index',
  10 + '/feedback', 'FeedbackForm',
  11 + '/thanks', 'FeedbackThanks'
  12 + )
  13 +
  14 +web.webapi.internalerror = web.debugerror
  15 +
  16 +def add_global_hook():
  17 + g = web.storage({"counter": "1"})
  18 + def _wrapper(handler):
  19 + web.ctx.globals = g
  20 + return handler()
  21 + return _wrapper
  22 +
  23 +
  24 +if __name__ == "__main__":
  25 + app = web.application(urls, globals())
  26 + app.add_processor(add_global_hook())
  27 + app.run()
  28 +
  29 +class Index:
  30 + def GET(self):
  31 + action = "/feedback"
  32 + method = "post"
  33 + return render.index(action, method, self._form())
  34 +
  35 + def _form(self):
  36 + send_form = form.Form(
  37 + form.File("myfile", description="Packages list"),
  38 + form.Dropdown('Limit results', [('5', '05'), ('10', '10'), ('20', '20')]),
  39 + form.Checkbox("strategy_1", value="True", checked=True, description="Strategy 1"),
  40 + form.Checkbox("strategy_2", value="True", checked=True, description="Strategy 2"),
  41 + form.Checkbox("strategy_3", value="True", checked=True, description="Strategy 3"),
  42 + form.Checkbox("strategy_4", value="True", checked=True, description="Strategy 4"),
  43 + form.Checkbox("strategy_5", value="True", checked=True, description="Strategy 5"),
  44 + form.Checkbox("strategy_6", value="True", checked=True, description="Strategy 6"),
  45 +
  46 + )
  47 + return send_form()
  48 +
  49 +class FeedbackForm:
  50 + def POST(self):
  51 + action = "/thanks"
  52 + method = "post"
  53 + outputdir = tempfile.mkdtemp() + '/'
  54 + x = web.input(myfile={})
  55 + f = open(outputdir + x['myfile'].filename, "wb")
  56 + content = x['myfile'].value
  57 + while 1:
  58 + chunk = x['myfile'].file.read(10000)
  59 + if not chunk:
  60 + break
  61 + f.write(chunk)
  62 + f.close()
  63 + return render.feedbackForm(action, method, self._recommends(), self._form())
  64 +
  65 + def _recommends(self):
  66 + results = [['Strategy 1', 'gnome-subtitles', 'brasero', 'inkscape', 'kde'], ['Strategy 2', 'airstrike', 'gimp', 'gthumb', 'iceweasel']]
  67 + return results
  68 +
  69 + def _form(self):
  70 + send_form = form.Form(
  71 + form.Radio('Strategy 1',[('1','1 '),('2','2 '),('3','3 '),('4','4 '),('5','5')]),
  72 + form.Radio('Strategy 2',[('1','1 '),('2','2 '),('3','3 '),('4','4 '),('5','5')]),
  73 + form.Radio('Strategy 3',[('1','1 '),('2','2 '),('3','3 '),('4','4 '),('5','5')]),
  74 + form.Radio('Strategy 4',[('1','1 '),('2','2 '),('3','3 '),('4','4 '),('5','5')]),
  75 + form.Radio('Strategy 5',[('1','1 '),('2','2 '),('3','3 '),('4','4 '),('5','5')]),
  76 + form.Radio('Strategy 6',[('1','1 '),('2','2 '),('3','3 '),('4','4 '),('5','5')]),
  77 + form.Dropdown('level', ["Newbie", "Intermediate", "Advanced", "Guru", "Chuck Norris"], description ='Expertise'),
  78 + form.Textarea('anything', rows="7", cols="60", description='Anything to share?'),
  79 +
  80 + )
  81 + return send_form
  82 +
  83 +class FeedbackThanks:
  84 + def POST(self):
  85 + return render.feedbackThanks()
... ...
src/web/static/Pics/AppRecommender-logo.jpg 0 → 100644

32.1 KB

src/web/static/Pics/gradient.png 0 → 100644

247 Bytes

src/web/static/Pics/greydot.png 0 → 100644

197 Bytes

src/web/static/Pics/openlogo-50.png 0 → 100644

1.96 KB

src/web/static/Pics/reddot.png 0 → 100644

146 Bytes

src/web/static/debhome.css 0 → 100644
... ... @@ -0,0 +1,203 @@
  1 +/*
  2 + http://www.debian.org Homepage Stylesheet
  3 +
  4 + Copyright 2011 Kalle Söderman
  5 +
  6 + This stylesheet is free software; you can redistribute it and/or modify it
  7 + under the terms of the GNU General Public License, version 2, as published by
  8 + the Free Software Foundation.
  9 +
  10 + This program is distributed in the hope that it will be useful, but WITHOUT ANY
  11 + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  12 + PARTICULAR PURPOSE. See the GNU General Public License for more details.
  13 +
  14 + You should have received a copy of the GNU General Public License along with
  15 + this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
  16 + Street, Fifth Floor, Boston, MA 02110-1301 USA.
  17 +
  18 + The license text can also be found at http://www.gnu.org/copyleft/gpl.html and
  19 + /usr/share/common-licenses/GPL-2 on Debian GNU/Linux.
  20 +*/
  21 +
  22 +@import url("debian.css");
  23 +
  24 +#splash {
  25 + margin-top: 0;
  26 + margin-bottom: 1.5em;
  27 + text-align: center;
  28 + overflow: hidden;
  29 + height: 120px;
  30 +}
  31 +#splash h1 {
  32 + background-image: url('Pics/spacefun.png');
  33 + background-position:top center;
  34 + padding-top:130px;
  35 + overflow:hidden;
  36 + text-align:center;
  37 + background-repeat:no-repeat;
  38 + display:block;
  39 + margin:0;
  40 + height:0;
  41 +}
  42 +span.download {
  43 + display: block;
  44 + position: absolute;
  45 + right: 13px;
  46 + font-size: 0.75em;
  47 + line-height: 2;
  48 + background-color: white;
  49 + margin-top: 10px;
  50 +}
  51 +span.download a {
  52 + color: white;
  53 + font-weight: bold;
  54 + text-decoration: none;
  55 + border: 0.15em solid #339900;
  56 + display: block;
  57 + background: transparent url('Pics/emblem-downloads.png') no-repeat 5px 5px;
  58 + padding-left: 30px;
  59 + padding-right: 1em;
  60 + color:#339900;
  61 +}
  62 +span.download a:hover {
  63 + text-decoration: none;
  64 + color: white;
  65 + background-color: #339900;
  66 +}
  67 +span.download a em {
  68 + font-size: 0.75em;
  69 + font-weight: normal;
  70 + clear: right;
  71 + color: #339900;
  72 + line-height: 0.5em;
  73 + font-style: normal;
  74 + display: block;
  75 + margin-bottom: 1em;
  76 +}
  77 +span.download a:hover em {
  78 + color: white;
  79 + background-color: #339900;
  80 +}
  81 +#content {
  82 + background-image: url('Pics/spacefun-bg.png');
  83 + background-position:top center;
  84 + background-repeat: repeat-x;
  85 +}
  86 +#announce {
  87 + text-align: center;
  88 + float: left;
  89 + width: 41%;
  90 + min-width: 260px;
  91 + margin-bottom: 1.5em;
  92 +}
  93 +#intro {
  94 + padding-top: 0;
  95 +}
  96 +#intro p {
  97 + margin-top: 0em;
  98 + padding:0;
  99 +}
  100 +
  101 +/* Homepage Links */
  102 +
  103 +#hometoc {
  104 + list-style:none;
  105 + margin: 0 0 2em 0;
  106 + padding: 0;
  107 + width:100%;
  108 + font-size: 0.75em;
  109 + overflow: hidden;
  110 + line-height: 1.5em;
  111 + border: 0;
  112 +}
  113 +#hometoc a {
  114 + text-decoration: none;
  115 +}
  116 +#hometoc a:hover {
  117 + text-decoration: underline;
  118 +}
  119 +ul#hometoc-cola a, ul#hometoc-colb a, ul#hometoc-colc a, ul#hometoc-cold a, ul#hometoc-cole a {
  120 + padding-left: 5px;
  121 + display: block;
  122 +}
  123 +ul#hometoc-cola, ul#hometoc-colb,ul#hometoc-colc, ul#hometoc-cold, ul#hometoc-cole {
  124 + float:left;
  125 + width: 19.2%;
  126 + min-width: 11em;
  127 + height: 12em; /* Update when adding items */
  128 + margin:0 1% 0 0;
  129 + padding: 0;
  130 + background-position: bottom left;
  131 + background-repeat: repeat-x;
  132 + background-image: url('Pics/reddot.png');
  133 + list-style: none;
  134 +}
  135 +ul#hometoc-cole {
  136 + width: 18.9%;
  137 + margin-right:0;
  138 +}
  139 +#hometoc-wrap {
  140 + padding:1em 1em 1em 1em;
  141 + border-top: 1px solid white;
  142 +}
  143 +#hometoc a {
  144 + margin: 0;
  145 +}
  146 +#hometoc ul{
  147 + list-style: none;
  148 + padding: 0 0 0 0;
  149 +}
  150 +#hometoc ul ul {
  151 + padding: 0;
  152 +}
  153 +#hometoc li {
  154 + text-indent:0;
  155 + background-color: transparent;
  156 + font-weight:bold;
  157 +}
  158 +#hometoc li ul {
  159 + margin: 0;
  160 + padding: 0;
  161 +}
  162 +#hometoc li li {
  163 + margin:0;
  164 + text-indent:0;
  165 + padding:0;
  166 + font-weight:normal;
  167 + border:0;
  168 + background-image:none;
  169 + background-color:transparent;
  170 +}
  171 +li.sponsorbutton {
  172 + padding-top: 1.25em;
  173 + text-align: left;
  174 + display: block;
  175 + width: 100%;
  176 + background-image: url('/Pics/greydot.png');
  177 + background-position:top left;
  178 + background-repeat: repeat-x;
  179 +}
  180 +.infobar {
  181 + margin: 0 0 2em 0;
  182 + padding: 0 0 2em 0;
  183 + line-height: 1em;
  184 + font-size: 0.75em;
  185 + background-image: url('Pics/greydot.png');
  186 + background-position: bottom left;
  187 + background-repeat: repeat-x;
  188 + clear: both;
  189 +}
  190 +div.trans-note {
  191 + position: absolute;
  192 + top: 200px;
  193 + right: 10px;
  194 + left: 52px;
  195 + margin: 0;
  196 + background-position: 0.5em 2px;
  197 + background-image: none;
  198 + padding: 0em;
  199 + padding-left: 1em;
  200 +}
  201 +div.trans-note p {
  202 + margin:0;
  203 +}
... ...
src/web/static/debian.css 0 → 100644
... ... @@ -0,0 +1,832 @@
  1 +/*
  2 + http://www.debian.org Stylesheet
  3 +
  4 + Copyright 2011 Kalle Söderman
  5 +
  6 + This stylesheet is free software; you can redistribute it and/or modify it
  7 + under the terms of the GNU General Public License, version 2, as published by
  8 + the Free Software Foundation.
  9 +
  10 + This program is distributed in the hope that it will be useful, but WITHOUT ANY
  11 + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  12 + PARTICULAR PURPOSE. See the GNU General Public License for more details.
  13 +
  14 + You should have received a copy of the GNU General Public License along with
  15 + this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
  16 + Street, Fifth Floor, Boston, MA 02110-1301 USA.
  17 +
  18 + The license text can also be found at http://www.gnu.org/copyleft/gpl.html and
  19 + /usr/share/common-licenses/GPL-2 on Debian GNU/Linux.
  20 +*/
  21 +
  22 +/*
  23 + Font size table (Browser default 16px)
  24 +
  25 + pixels relative
  26 + --------------------
  27 + 36px 2.25em
  28 + 31px 0.5161em
  29 + 24px 1.5em
  30 + 21px 1.3125em
  31 + 18px 1.125em
  32 + 16px 1em
  33 + 14px 0.875em
  34 + 12px 0.75em
  35 + 11px 0.6875em
  36 + 10px 0.625em
  37 + 9px 0.5625em
  38 + --------------------
  39 +*/
  40 +
  41 +/* Reset */
  42 +
  43 +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
  44 +blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
  45 +font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl,
  46 +dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody,
  47 +tfoot, thead, tr, th, td {
  48 + margin: 0;
  49 + padding: 0;
  50 + border: 0;
  51 + outline: 0;
  52 + font-weight: inherit;
  53 + font-style: inherit;
  54 + font-size: 100%;
  55 + font-family: inherit;
  56 + vertical-align: baseline;
  57 +}
  58 +
  59 +body { line-height: 1; color: black; background: white; }
  60 +ol, ul { list-style: none; }
  61 +table { border-collapse: separate; border-spacing: 0; }
  62 +blockquote, q { quotes: "" ""; }
  63 +html { background-color: transparent; }
  64 +:focus { outline: 0; }
  65 +caption, th, td { text-align: left; font-weight: normal; }
  66 +blockquote:before, blockquote:after, q:before, q:after { content: ""; }
  67 +
  68 +/* Main */
  69 +
  70 +body {
  71 + margin: 0;
  72 + font: normal 100% sans-serif;
  73 + line-height: 1.5;
  74 + color: #222;
  75 + background-color: white;
  76 + background-image:url('Pics/gradient.png');
  77 + background-position: 0 0;
  78 + background-repeat: repeat-x;
  79 + /* Uncomment to show baseline grid
  80 + background-image: url('24grid.png');
  81 + background-position: 30px 9px;
  82 + */
  83 +}
  84 +#content {
  85 + margin: 0 10px 0 52px;
  86 +}
  87 +#inner {
  88 + position: relative;
  89 +}
  90 +#maincol {
  91 + margin: 0 15em 1.5em 0;
  92 +}
  93 +
  94 +/* Header */
  95 +
  96 +#header {
  97 + margin:0;
  98 + padding:0 10px 0 52px;
  99 +}
  100 +#header a:link
  101 +, #header a:visited
  102 +, #second-nav a:link
  103 +, #second-nav a:visited {
  104 + text-decoration: none;
  105 +}
  106 +#header a:hover
  107 +, #second-nav a:hover {
  108 + text-decoration: underline;
  109 +}
  110 +#breadcrumbs {
  111 + margin:0;
  112 + font-size: 0.75em;
  113 + text-transform: lowercase;
  114 + line-height: 2;
  115 + background-color: transparent;
  116 + background-color: #f5f6f7;
  117 + border-bottom: 1px solid #d2d3d7 ;
  118 + min-height: 20px;
  119 +}
  120 +#breadcrumbs:before {
  121 + content: "/";
  122 + margin-left: 0.5em;
  123 + margin-right: 0.5em;
  124 +}
  125 +p.section {
  126 + margin: 0;
  127 + padding: 0 5px 0 5px;
  128 + font-family:monospace;
  129 + line-height: 16px;
  130 + color:white;
  131 + text-transform: uppercase;
  132 + letter-spacing: 0.08em;
  133 + position:absolute;
  134 + top: 0px;
  135 + left:52px;
  136 + background-color: #c70036;
  137 +}
  138 +p.section a {
  139 + color: white;
  140 + text-decoration: none;
  141 +}
  142 +p.section a:hover {
  143 + color:white;
  144 + text-decoration: underline;
  145 +}
  146 +#navbar {
  147 + background-color: transparent;
  148 + list-style:none;
  149 + display:block;
  150 + border-bottom:1px solid #c70036;
  151 + text-indent:0;
  152 + padding: 0;
  153 + margin-top:0;
  154 + margin-bottom:0;
  155 +}
  156 +#navbar ul {
  157 + margin: 0;
  158 + padding: 0;
  159 + clear: both;
  160 + overflow: hidden;
  161 + min-height: 45px;
  162 +}
  163 +#navbar li {
  164 + list-style: none;
  165 + float: left;
  166 + padding: 0;
  167 + margin: 0;
  168 +}
  169 +#navbar a:link
  170 +, #navbar a:visited {
  171 + padding: 1.75em 0.5em 0.25em 0.5em;
  172 + border-left: 1px solid transparent;
  173 + border-right: 1px solid transparent;
  174 + display: block;
  175 + text-decoration: none;
  176 +}
  177 +#navbar a:visited {
  178 + color: #54638c;
  179 +}
  180 +#navbar a:hover
  181 +, #navbar a:visited:hover {
  182 + background-color: #f5f6f7;
  183 + border-left: 1px solid #d2d3d7;
  184 + border-right: 1px solid #d2d3d7;
  185 + text-decoration: underline;
  186 +}
  187 +ul.subnav {
  188 + list-style: none;
  189 + margin-left: 0;
  190 + padding-left: 0;
  191 + margin-top: 0;
  192 +}
  193 +ul.subnav li {
  194 + display: inline;
  195 + margin-right: 1em;
  196 +}
  197 +#searchbox {
  198 + text-align:left;
  199 + line-height: 1;
  200 + margin: 0 10px 0 0.5em;
  201 + padding: 1px 0 1px 0;
  202 + position: absolute;
  203 + top:0;
  204 + right:0;
  205 + font-size: 0.75em;
  206 +}
  207 +#searchbox p {
  208 + margin: 0;
  209 + padding: 0;
  210 +}
  211 +#upperheader {
  212 + margin:0;
  213 + padding:0;
  214 +}
  215 +#logo {
  216 + position:absolute;
  217 + top:0;
  218 + left:0;
  219 + padding: 0;
  220 + background-color: transparent;
  221 + border: 1px solid transparent;
  222 + border-top: 0;
  223 + width: 50px;
  224 + height: 5.07em;
  225 + min-height: 65px;
  226 +}
  227 +#logo a {
  228 + display: block;
  229 + position: relative;
  230 + padding: 0;
  231 + height: 100%;
  232 + min-height: 65px;
  233 +}
  234 +#logo img {
  235 + margin-top: 5px;
  236 + position: absolute;
  237 + bottom: 0.3em;
  238 + overflow: auto;
  239 +}
  240 +#logo:hover {
  241 + border: 1px solid #d2d3d7 ;
  242 + border-top: 0;
  243 + background-color: #f5f6f7;
  244 +}
  245 +
  246 +/* Links */
  247 +
  248 +a:link {
  249 + color: #0035c7;
  250 + text-decoration: underline;
  251 +}
  252 +a:visited {
  253 + color: #54638c;
  254 +}
  255 +a:link:hover {
  256 + text-decoration: none;
  257 + color: #00207a;
  258 +}
  259 +a:visited:hover {
  260 + text-decoration: none;
  261 +}
  262 +a:active {
  263 + color:#c2c3c7;
  264 +}
  265 +a img {
  266 + border:0;
  267 +}
  268 +a.rss_logo {
  269 + font-size: 0.75em;
  270 + float: right;
  271 + width: 35px;
  272 + line-height: 10px;
  273 + color: #ffffff;
  274 + background-color: #ff6600;
  275 + font-weight: bold;
  276 + font-family: sans-serif;
  277 + text-align: center;
  278 + text-decoration: none;
  279 + padding: 0.25em;
  280 + margin-left: 0.25em;
  281 + border: 1px solid #ff6600;
  282 +}
  283 +
  284 +a.rss_logo:hover {
  285 + background-color: white;
  286 + border: 1px solid #ff6600;
  287 + color: #ff6600;
  288 +}
  289 +
  290 +a.rss_logo.generic {
  291 + background-color: #ff8800;
  292 +}
  293 +
  294 +a.rss_logo.generic:hover {
  295 + background-color: #ee7700;
  296 +}
  297 +
  298 +
  299 +/* Secondnav */
  300 +
  301 +#second-nav {
  302 + width: 16em;
  303 + font-size: 0.75em;
  304 + line-height: 1.5;
  305 + float: right;
  306 + top: 0;
  307 + right: 0;
  308 + margin: 3em 0 0 0;
  309 + padding: 0 0 0 1em;
  310 + border-left: 1px solid #d2d3d7 ;
  311 +}
  312 +#second-nav ul {
  313 + padding:0;
  314 + margin:0;
  315 + list-style:none;
  316 +}
  317 +#second-nav ul ul {
  318 + margin-left: 1em;
  319 +}
  320 +#second-nav li {
  321 + font-weight: normal;
  322 + margin:0;
  323 + padding:0;
  324 +}
  325 +#second-nav p {
  326 + line-height: 2;
  327 + font-weight: bold;
  328 + margin: 0;
  329 +}
  330 +#second-nav h2 {
  331 + margin:0;
  332 +}
  333 +
  334 +/* Typography */
  335 +
  336 +p {
  337 + margin: 1.5em 0 1.5em 0;
  338 +}
  339 +strong {
  340 + font-weight: bold;
  341 +}
  342 +em {
  343 + font-style: italic;
  344 + color: #444;
  345 +}
  346 +small {
  347 + font-size: 0.75em;
  348 +}
  349 +sup {
  350 + font-size: 0.75em;
  351 + vertical-align:top;
  352 +}
  353 +h1
  354 +, h2
  355 +, h3
  356 +, h4
  357 +, h5
  358 +, h6 {
  359 + font-weight: 600;
  360 + color: black;
  361 +}
  362 +h1 {
  363 + font-weight: normal;
  364 + font-size: 1.8em;
  365 + line-height: 0.83333;
  366 + margin: 0.83333em 0 0.83333em 0;
  367 +}
  368 +h2 {
  369 + font-size: 1.4em;
  370 + font-weight: normal;
  371 + line-height: 1.0714286;
  372 + margin: 1.0714286em 0 1.0714286em 0;
  373 +}
  374 +h3 {
  375 + font-size: 1.125em;
  376 + line-height: 1.333em;
  377 + margin: 1.333em 0 0 0;
  378 +}
  379 +h4 {
  380 + font-weight: normal;
  381 + font-style: italic;
  382 + margin: 1.5em 0 1.5em 0;
  383 + color: #444;
  384 +}
  385 +h5 {
  386 + font-style: italic;
  387 + font-size: 0.75em;
  388 + margin: 2em 0 2em 0;
  389 +}
  390 +ol,ul {
  391 + padding-left: 1.5em;
  392 + margin-left:0;
  393 + margin: 1.5em 0 1.5em 0;
  394 +}
  395 +ol>ol, ul>ul, li>ol, li>ul {
  396 + margin: 0;
  397 +}
  398 +
  399 +ol {
  400 + list-style-type: decimal;
  401 +}
  402 +ul {
  403 + list-style-type: disc;
  404 +}
  405 +th {
  406 + font-weight: bold;
  407 + margin: 1.5em 0 1.5em 0;
  408 +}
  409 +hr {
  410 + border: none;
  411 + background-color: #bbb;
  412 + height: 1px;
  413 + margin: 1.4375em 0 1.5em 0;
  414 +}
  415 +pre {
  416 + margin: 1.5em 0 1.5em 0;
  417 + overflow: auto;
  418 + font-family: monospace;
  419 + white-space: pre;
  420 + color: black;
  421 +}
  422 +tt, code {
  423 + font-family: monospace;
  424 + white-space: pre;
  425 + color: black;
  426 +}
  427 +dt {
  428 + margin: 1.5em 0 0 0;
  429 + font-weight: bold;
  430 +}
  431 +dd {
  432 + margin: 0 0 0 1.5em;
  433 +}
  434 +blockquote {
  435 + font-size: 0.75em;
  436 + margin: 2em;
  437 + line-height: 2;
  438 +}
  439 +cite {
  440 + font-style: italic;
  441 + color: #444;
  442 +}
  443 +acronym, abbr {
  444 + text-transform: uppercase;
  445 + font-size: 0.9em;
  446 +}
  447 +.toc {
  448 + font-size: 0.75em;
  449 + list-style:none;
  450 + background-image: url('Pics/greydot.png');
  451 + background-position: bottom left;
  452 + background-repeat: repeat-x;
  453 + line-height:1.833;
  454 + padding: 0;
  455 + max-width: 62%;
  456 + margin: 2em 0 2em 0;
  457 +}
  458 +.toc li {
  459 + background-image: url('Pics/greydot.png');
  460 + background-position: top left;
  461 + background-repeat: repeat-x;
  462 + padding: 0.0833em 0 0.0833em 0;
  463 + }
  464 +.toc a {
  465 + display:block;
  466 + text-decoration: none;
  467 +}
  468 +.toc a:hover {
  469 + display:block;
  470 + background-color: #f0f0f4;
  471 + text-decoration: underline;
  472 +}
  473 +.toc dt {
  474 + margin: 0;
  475 + background-image: url('Pics/greydot.png');
  476 + background-position: top left;
  477 + background-repeat: repeat-x;
  478 + padding: 0.0833em 0 0.0833em 0;
  479 +}
  480 +
  481 +/* Sitemap */
  482 +
  483 +.card {
  484 + clear:both;
  485 + margin:1.5em 0 1.5em 0;
  486 + background-position: 0 -50px;
  487 + background-repeat: repeat-x;
  488 + padding:0;
  489 +}
  490 +.card ul {
  491 +}
  492 +.card ul li {
  493 + list-style:none;
  494 +}
  495 +.card h2 {
  496 +}
  497 +.lefthalf {
  498 + float:left;
  499 +}
  500 +.righthalf {
  501 + margin-left:50%;
  502 +}
  503 +.lefthalf ul {
  504 + margin-top:0;
  505 +}
  506 +
  507 +/* Footer */
  508 +
  509 +#footer {
  510 + font-size: 0.75em;
  511 + border: 1px solid #dfdfe0;
  512 + padding:1em;
  513 + background-color: #f5f6f7;
  514 + margin: 0 10px 0 52px;
  515 + line-height: 1.5em;
  516 + border-left: 0;
  517 + border-right: 0;
  518 +}
  519 +#content #footer {
  520 + margin-left: 0;
  521 +}
  522 +#footer p {
  523 + margin: 1em 0 1em 0;
  524 +}
  525 +#footer hr {
  526 + border-top: 1px solid #d2d3d7;
  527 + border-bottom: 1px solid white;
  528 + height: 0;
  529 +}
  530 +#footer .editbar li {
  531 + display: inline;
  532 + margin-right: 2em;
  533 +}
  534 +#footer .info {
  535 +}
  536 +#fineprint {
  537 + margin-bottom: 1em;
  538 +}
  539 +#footermap {
  540 + list-style:none;
  541 + margin: 0 0 0 0;
  542 + padding: 0;
  543 + width:100%;
  544 + overflow: hidden;
  545 + border: 0;
  546 +}
  547 +ul#footermap-cola a
  548 +, ul#footermap-colb a
  549 +, ul#footermap-colc a
  550 +, ul#footermap-cold a
  551 +, ul#footermap-cole a {
  552 + padding-left: 0;
  553 +}
  554 +ul#footermap-cola
  555 +, ul#footermap-colb
  556 +, ul#footermap-colc
  557 +, ul#footermap-cold
  558 +, ul#footermap-cole {
  559 + float:left;
  560 + width: 19%;
  561 + min-width: 11em;
  562 + height: 12em; /* Update when adding items */
  563 + margin:0 1% 0 0;
  564 + padding: 2em 0 0 0;
  565 + list-style: none;
  566 +}
  567 +ul#footermap-cole {
  568 + width: 18.9%;
  569 + margin-right:0;
  570 +}
  571 +#footermap-wrap {
  572 + padding:2em;
  573 + border-top: 1px solid white;
  574 +}
  575 +#footermap a {
  576 + margin: 0;
  577 +}
  578 +#footermap ul{
  579 + list-style: none;
  580 + padding:0;
  581 +}
  582 +#footermap li {
  583 + text-indent:0;
  584 + background-color: transparent;
  585 + font-weight:bold;
  586 +}
  587 +#footermap li ul {
  588 + margin: 0;
  589 + padding: 0;
  590 +}
  591 +#footermap li li {
  592 + margin:0;
  593 + text-indent:0;
  594 + padding:0;
  595 + font-weight:normal;
  596 + border:0;
  597 + background-image:none;
  598 + background-color:transparent;
  599 +}
  600 +#serverselect {
  601 +}
  602 +#serverselect input
  603 +, #serverselect option
  604 +, #serverselect select {
  605 +}
  606 +#serverselect ul {
  607 + display: inline;
  608 + margin-left: 2em;
  609 +}
  610 +#serverselect li {
  611 + list-style: none;
  612 + display: inline;
  613 + padding:0 1em 0 1em;
  614 + margin:0;
  615 +}
  616 +#serverselect form p {
  617 + margin:0;
  618 + padding:0;
  619 + line-height: 1;
  620 +}
  621 +.lcol50 {
  622 + float: left;
  623 + width: 49%;
  624 + font-size:0.75em;
  625 + margin:0 0 0 0;
  626 + padding:0 0.5em 0 0;
  627 +}
  628 +.lcol50 h2 {
  629 + margin-top:0;
  630 +}
  631 +.rcol50 {
  632 + margin:0 0 0 51%;
  633 + padding:0;
  634 + font-size:0.75em;
  635 +}
  636 +form#pageLang {
  637 + display: inline;
  638 +}
  639 +
  640 +/* Extras */
  641 +
  642 +input:focus {
  643 + background-color:#FFFFCB;
  644 +
  645 +}
  646 +.hidecss {
  647 + display: none;
  648 +}
  649 +.clear {
  650 + clear:both
  651 +}
  652 +#clear {
  653 + clear:both;
  654 + border:0;
  655 + height:1px;
  656 + display:block;
  657 +}
  658 +.quicklist:before {
  659 + content: "Quick Links: ";
  660 + font-weight: bold;
  661 +}
  662 +.quicklist {
  663 + list-style: none;
  664 + font-size: 0.75em;
  665 + margin: 2em 0 2em 0;
  666 + padding:0;
  667 + text-indent:0;
  668 + line-height: 2em;
  669 +}
  670 +.quicklist li {
  671 + display:inline;
  672 +}
  673 +.item p{
  674 + margin: 0;
  675 +}
  676 +.item h2
  677 +, .item p
  678 +, .item ul{
  679 + margin-right: 10px
  680 +}
  681 +.item h2
  682 +, .item h3
  683 +, .item h4
  684 +, .item h5 {
  685 + margin-top: 0;
  686 +}
  687 +.line {
  688 + padding: 0;
  689 + width: auto;
  690 + overflow: hidden;
  691 + }
  692 +div.downloads {
  693 + border-top: 0.17em solid #339900;
  694 + margin: 1.33em 0 0 0;
  695 +}
  696 +.downloads ul.downlist {
  697 + margin:0;
  698 +}
  699 +div.downloads .col50 {
  700 + border-top: 0.15em solid #339900;
  701 +}
  702 +ul.downlist {
  703 + padding-left: 30px;
  704 + text-indent:0;
  705 + background: url('Pics/emblem-downloads.png') no-repeat 0 0.15em;
  706 + /*
  707 + * border-top: 0.17em solid #339900;
  708 + */
  709 +}
  710 +ul.quicklist.downlist {
  711 + border-top: 0.17em solid #339900;
  712 + padding-top: 0.25em;
  713 + margin-top: 1.6em;
  714 +}
  715 +ul.downlist li {
  716 + display: inline;
  717 +}
  718 +ul.downlist li:after {
  719 + content: ', ';
  720 +}
  721 +ul.downlist li:last-child:after {
  722 + content: '';
  723 +}
  724 +div.tip
  725 +, div.important
  726 +, div.warning
  727 +, div.note
  728 +, p.trans-note {
  729 + padding:0 2em 0 4em;
  730 + margin: 1.85em 0 1.85em 0;
  731 + background-repeat: no-repeat;
  732 + background-position: 0.5em 1em;
  733 + font-size: 0.75em;
  734 + line-height: 2em;
  735 + background-color:#FFFFCB;
  736 + border:0.15em solid #CCCCA3;
  737 +}
  738 +div.tip p
  739 +, div.important p
  740 +, div.warning p
  741 +, div.note p {
  742 + margin: 1em 0 1em 0;
  743 +}
  744 +div.tip
  745 +, p.trans-note {
  746 + background-image: url('Pics/admon-tip.png');
  747 +}
  748 +div.important{
  749 + background-image: url('Pics/admon-important.png');
  750 +}
  751 +div.warning {
  752 + background-image: url('Pics/admon-warning.png');
  753 +}
  754 +div.note {
  755 + background-image: url('Pics/admon-note.png');
  756 +}
  757 +
  758 +/* Layout Elements */
  759 +
  760 +.col50
  761 +, .cardleft
  762 +, .cardright {
  763 + width:47.5%;
  764 + float: left;
  765 + padding-bottom: 1.5em;
  766 +}
  767 +.lastcol
  768 +, .cardright {
  769 + margin: auto;
  770 + width: 47.5%;
  771 + float:left;
  772 + padding-right: 0;
  773 + margin-left: 5%;
  774 +}
  775 +.lastcol h2
  776 +, .lastcol p
  777 +, .lastcol ul {
  778 + margin-right:0;
  779 +}
  780 +.cardleft h2 {
  781 + margin-right: 1em;
  782 +}
  783 +.cardright div {
  784 + margin-left: 1.5em;
  785 +}
  786 +.cardright h2 {
  787 + margin-left: 1em;
  788 +}
  789 +.votemenu a {
  790 + display:block;
  791 +}
  792 +table.vote td, table.vote th {
  793 + padding-right: 1.5em;
  794 +}
  795 +#maincol.with-toolbox {
  796 + margin-right: 14em;
  797 +}
  798 +div.tabular table, table.tabular, table.vendors {
  799 +/* border-bottom: 1px solid #a9abb3;
  800 + border-top: 1px solid #a9abb3; */
  801 + border-bottom: 0.15em solid #666;
  802 + border-top: 0.15em solid #666;
  803 + width: auto;
  804 + font-size: 0.75em;
  805 + line-height: 2em;
  806 + margin-bottom: 4em;
  807 + margin-top: -0.169em;
  808 +}
  809 +table td {
  810 + padding-right: 1.5em;
  811 +}
  812 +div.tabular table tr, table.tabular tr, table.vendors tr {
  813 + width: 100%;
  814 +}
  815 +table th {
  816 + padding-right: 1.5em;
  817 +}
  818 +div.tabular table td, table.tabular td, table.vendors td {
  819 + background-image: url(Pics/greydot.png);
  820 + background-position: top left;
  821 + background-repeat: repeat-x;
  822 +}
  823 +div.tabular table > td:fist-child, table.tabular > td:fist-child, table.vendors > td:fist-child {
  824 + background-image: none;
  825 +}
  826 +#pageLang p, #pageLang form {
  827 + display: inline;
  828 +}
  829 +.inline a {
  830 + float: left;
  831 + margin-right: 1em;
  832 +}
... ...
src/web/static/local.css 0 → 100644
... ... @@ -0,0 +1,68 @@
  1 +/* Add local styling here, instead of modifying debian.css. */
  2 +
  3 +.align-left {
  4 + float:left;
  5 +}
  6 +
  7 +.align-right {
  8 + float:right;
  9 +}
  10 +/*
  11 + Cusco Sky table styles
  12 + written by Braulio Soncco http://www.buayacorp.com
  13 +*/
  14 +
  15 +table, th, td {
  16 + border: 1px solid #D4E0EE;
  17 + border-collapse: collapse;
  18 + font-family: "Trebuchet MS", Arial, sans-serif;
  19 + color: #555;
  20 + overflow: hidden
  21 +}
  22 +
  23 +caption {
  24 + font-size: 150%;
  25 + font-weight: bold;
  26 + margin: 5px;
  27 +}
  28 +
  29 +td, th {
  30 + padding: 4px;
  31 + text-align: left;
  32 +}
  33 +
  34 +tbody td.odd { background: #F7F9FC; }
  35 +
  36 +thead th {
  37 + text-align: center;
  38 + background: #E6EDF5;
  39 + color: #4F76A3;
  40 + font-size: 100% !important;
  41 +}
  42 +
  43 +tbody th {
  44 + font-weight: bold;
  45 +}
  46 +
  47 +tbody tr { background: #FCFDFE; }
  48 +
  49 +tbody tr.odd { background: #F7F9FC; }
  50 +
  51 +table a:link {
  52 + color: #718ABE;
  53 + text-decoration: none;
  54 +}
  55 +
  56 +table a:visited {
  57 + color: #718ABE;
  58 + text-decoration: none;
  59 +}
  60 +
  61 +table a:hover {
  62 + color: #718ABE;
  63 + text-decoration: underline !important;
  64 +}
  65 +
  66 +tfoot th, tfoot td {
  67 + font-size: 85%;
  68 +}
... ...
src/web/templates/feedbackForm.html 0 → 100644
... ... @@ -0,0 +1,50 @@
  1 +$def with (action, method, recommends, form)
  2 +$var title: Feedback
  3 +$var mod = 'feedback';
  4 +
  5 + <div class="index_include">
  6 +
  7 +
  8 +<center>
  9 + <h1>Results</h1>
  10 +</center>
  11 +
  12 +<p>Results index:</p>
  13 +
  14 +<ul class="toc">
  15 +$for list in recommends:
  16 + <li><a href="#$list[0]">$list[0]</a></li>
  17 +<li><a href="#feedback">Your feedback is appreciated!</a></li>
  18 +</ul>
  19 +
  20 +<form action="$action" method="$method">
  21 +$for list in recommends:
  22 + <h2><a name="$list[0]" id="$list[0]">$list[0]</a></h2>
  23 + $for p in list[1:]:
  24 + <div class="line">
  25 + <div class="item col50">
  26 + <image src="http://screenshots.debian.net/screenshot/$p" width="300">
  27 + </div>
  28 + <div class="item col50 lastcol">
  29 + <script>loadPackage("$p");</script>
  30 + <b id="pack-$p"></b><div id="desc-$p"> </div>
  31 + <ul>
  32 + <li id="maint-$p"></li>
  33 + <li id="homepage-$p"></li>
  34 + </ul>
  35 + </div>
  36 + <div class="clear"></div>
  37 + </div>
  38 + <hr />
  39 +
  40 +<h2><a name="feedback" id="feedback">Feedback</a></h2>
  41 +
  42 +$if not form.valid: <p>Try again, AmeriCAN:</p>
  43 +$:form.render()
  44 +<br />
  45 +<input type="submit" />
  46 +</form>
  47 +
  48 +
  49 +</div>
  50 +
... ...
src/web/templates/feedbackThanks.html 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +$var title: Feedback
  2 +$var mod = 'thanks';
  3 +
  4 + <div class="index_include">
  5 +<center>
  6 + <h1>Thanks!</h1>
  7 +</center>
  8 +
  9 +</div>
... ...
src/web/templates/index.html 0 → 100644
... ... @@ -0,0 +1,25 @@
  1 +$def with (action, method, form)
  2 +$var title: Home
  3 +$var mod = 'index';
  4 +
  5 + <div class="index_include">
  6 +<center>
  7 + <h1>Welcome to AppRecommender</h1>
  8 +</center>
  9 +
  10 +<div class="align-right"><img alt="AppRecommender logo" src="/static/Pics/AppRecommender-logo.jpg" /></div>
  11 +
  12 +<p>AppRecommender is a project in development that aims to provide solutions
  13 +for application recommendation at the GNU/Linux world. It was initially thought
  14 +as a Debian package recommender, but considering the multi-distro effort in
  15 +providing platform independent solutions, it should also follow this
  16 +principle.</p>
  17 +
  18 +<form action="$action" enctype="multipart/form-data" method="$method">
  19 +$if not form.valid: <p>Try again, AmeriCAN:</p>
  20 +$:form.render()
  21 +<p>&nbsp;</p>
  22 +<input type="submit" />
  23 +</form>
  24 +
  25 +</div>
... ...
src/web/templates/layout.html 0 → 100644
... ... @@ -0,0 +1,161 @@
  1 +$def with (content)
  2 +$ url_base = "http://localhost:8080/"
  3 +
  4 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  5 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  6 +<html xmlns="http://www.w3.org/1999/xhtml">
  7 +<head>
  8 + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9 + <title>AppRecommender - $content.title</title>
  10 + <link rel="stylesheet" href="/static/debian.css" type="text/css" />
  11 + <link rel="stylesheet" href="/static/local.css" type="text/css" />
  12 + <script src="http://code.jquery.com/jquery-latest.js"></script>
  13 +<script>
  14 +
  15 +function loadPackage(packagename)
  16 +{
  17 + $$.getJSON("http://dde.debian.net/dde/q/udd/packages/prio-debian-unstable/"+packagename,
  18 + {
  19 + t: "json"
  20 + },
  21 + function(json) {
  22 + $$("#pack-"+packagename).html(json.r.package);
  23 + $$("#desc-"+packagename).html(json.r.description);
  24 + $$("#maint-"+packagename).html('<a href="http://qa.debian.org/developer.php?login='+json.r.maintainer+'">'+json.r.maintainer+'</a>');
  25 + $$("#homepage-"+packagename).html('<a href="http://qa.debian.org/developer.php?login='+json.r.homepage+'">'+json.r.homepage+'</a>');
  26 + $$("#pts-"+packagename).html(json.r.homepage);
  27 + $$("#bts-"+packagename).html(json.r.homepage);
  28 + });
  29 +
  30 +}
  31 +
  32 +
  33 +</script>
  34 +
  35 +</head>
  36 +<body>
  37 +
  38 +<div id="header">
  39 + <div id="upperheader">
  40 + <div id="logo">
  41 + <a href="http://www.debian.org/" title="Debian Home"><img src="/static/Pics/openlogo-50.png" alt="Debian" width="50" height="61" /></a>
  42 + </div>
  43 + <p class="section">AppR</p>
  44 +
  45 + </div>
  46 +
  47 + <div id="navbar">
  48 +
  49 + <p class="hidecss"><a href="#inner">Skip Quicknav</a></p>
  50 + <ul>
  51 + <li><a href="http://www.debian.org/intro/about">About Debian</a></li>
  52 + <li><a href="http://www.debian.org/distrib/">Getting Debian</a></li>
  53 + <li><a href="http://www.debian.org/support">Support</a></li>
  54 + <li><a href="http://www.debian.org/devel/">Developers'&nbsp;Corner</a></li>
  55 +
  56 + </ul>
  57 + </div>
  58 + <p id="breadcrumbs">$content.mod</p>
  59 +</div>
  60 +
  61 +
  62 +<div id="content">
  63 +
  64 +$:content
  65 +
  66 +</div>
  67 +<p>&nbsp;</p>
  68 +
  69 + <div id="footer">
  70 + <div id="pageinfo">
  71 +
  72 +<p>Back to the <a href="http://www.debian.org/../">Debian Project homepage</a>.</p>
  73 +<hr/>
  74 +<div id="footermap">
  75 +<!--UdmComment-->
  76 +<p><strong><a href="http://www.debian.org">Home</a></strong></p>
  77 + <ul id="footermap-cola">
  78 + <li><a href="http://www.debian.org/intro/about">About</a>
  79 + <ul>
  80 +
  81 + <li><a href="http://www.debian.org/social_contract">Social&nbsp;Contract</a></li>
  82 + <li><a href="http://www.debian.org/intro/free">Free&nbsp;Software</a></li>
  83 + <li><a href="http://www.debian.org/partners/">Partners</a></li>
  84 + <li><a href="http://www.debian.org/donations">Donations</a></li>
  85 + <li><a href="http://www.debian.org/contact">Contact&nbsp;Us</a></li>
  86 +
  87 + </ul>
  88 + </li>
  89 + </ul>
  90 + <ul id="footermap-colb">
  91 + <li><a href="http://www.debian.org/distrib/">Getting Debian</a>
  92 + <ul>
  93 + <li><a href="http://www.debian.org/CD/vendors/">CD vendors</a></li>
  94 + <li><a href="http://www.debian.org/CD/">CD ISO images</a></li>
  95 +
  96 + <li><a href="http://www.debian.org/distrib/netinst">Network install</a></li>
  97 + <li><a href="http://www.debian.org/distrib/pre-installed">Pre-installed</a></li>
  98 + </ul>
  99 + </li>
  100 + <li><a href="http://www.debian.org/distrib/packages">Debian&nbsp;Packages</a></li>
  101 + </ul>
  102 + <ul id="footermap-colc">
  103 +
  104 + <li><a href="http://www.debian.org/News/">News</a>
  105 + <ul>
  106 + <li><a href="http://www.debian.org/News/project/">Project&nbsp;News</a></li>
  107 + <li><a href="http://www.debian.org/events/">Events</a></li>
  108 + </ul>
  109 + </li>
  110 + <li><a href="http://www.debian.org/doc/">Documentation</a>
  111 +
  112 + <ul>
  113 + <li><a href="http://www.debian.org/releases/">Release&nbsp;Info</a></li>
  114 + <li><a href="http://www.debian.org/releases/stable/installmanual">Installation&nbsp;manual</a></li>
  115 + <li><a href="http://www.debian.org/doc/books">Debian&nbsp;Books</a></li>
  116 + </ul>
  117 + </li>
  118 +
  119 + </ul>
  120 + <ul id="footermap-cold">
  121 + <li><a href="http://www.debian.org/../support">Support</a>
  122 + <ul>
  123 + <li><a href="http://www.debian.org/international/">Debian&nbsp;International</a></li>
  124 + <li><a href="http://www.debian.org/security/">Security&nbsp;Information</a></li>
  125 +
  126 + <li><a href="http://www.debian.org/Bugs/">Bug reports</a></li>
  127 + <li><a href="http://www.debian.org/MailingLists/">Mailing&nbsp;Lists</a></li>
  128 + <li><a href="http://www.debian.org/http://lists.debian.org/">Mailing&nbsp;List&nbsp;Archives</a></li>
  129 + <li><a href="http://www.debian.org/ports/">Ports/Architectures</a></li>
  130 + </ul>
  131 +
  132 + </li>
  133 +</ul>
  134 +<ul id="footermap-cole">
  135 + <li><a href="http://www.debian.org/../misc/">Miscellaneous</a></li>
  136 + <li><a href="http://www.debian.org/../intro/help">Help Debian</a></li>
  137 + <li><a href="http://www.debian.org/../devel/">Developers'&nbsp;Corner</a></li>
  138 + <li><a href="http://www.debian.org/../sitemap">Site map</a></li>
  139 +
  140 + <li><a href="http://www.debian.org/http://search.debian.org/">Search</a></li>
  141 +</ul>
  142 +<!--/UdmComment-->
  143 +</div> <!-- end footermap -->
  144 +<div id="fineprint">
  145 + <p>To report a problem with the web site, e-mail <a
  146 + href="mailto:tassia@gmail.com">tassia@gmail.com</a>.</p>
  147 +<p>
  148 +Last Modified: <span class="date">Mon 09 May 2011 04:08:40 AM UTC</span>
  149 + <br />
  150 + Copyright &copy; 2011
  151 + <a href="$url_base">AppRecommender</a>.<br />
  152 + Source and binary forms released under the terms of the GNU General Public
  153 + License version 2.
  154 +</p>
  155 +</div>
  156 +</div> <!-- end footer -->
  157 +
  158 +</div>
  159 +</div>
  160 +</body>
  161 +</html>
... ...