Commit b528360b51c1940ae4434b8f1caec060624722af
1 parent
1faea87f
Exists in
master
and in
1 other branch
opis.. send others style up bar.. and pog @tiagovaz on data.py and $me on server.py
Showing
8 changed files
with
194 additions
and
597 deletions
Show diff stats
src/data.py
| ... | ... | @@ -167,8 +167,10 @@ class PopconXapianIndex(xapian.WritableDatabase): |
| 167 | 167 | logging.info("Opening existing popcon xapian index at \'%s\'" |
| 168 | 168 | % self.path) |
| 169 | 169 | xapian.Database.__init__(self,self.path) |
| 170 | + return True | |
| 170 | 171 | except xapian.DatabaseError: |
| 171 | 172 | logging.info("Could not open popcon index.") |
| 173 | + return True | |
| 172 | 174 | return 0 |
| 173 | 175 | |
| 174 | 176 | def build_index(self): | ... | ... |
src/web/server.py
| ... | ... | @@ -39,6 +39,10 @@ class Thanks: |
| 39 | 39 | def POST(self): |
| 40 | 40 | return render.thanks() |
| 41 | 41 | |
| 42 | +class Support: | |
| 43 | + def POST(self): | |
| 44 | + return render.support() | |
| 45 | + | |
| 42 | 46 | class Package: |
| 43 | 47 | def GET(self, pkg): |
| 44 | 48 | json_source = "http://dde.debian.net/dde/q/udd/packages/all/%s?t=json" % pkg #FIXME: url goes to config |
| ... | ... | @@ -271,10 +275,11 @@ def add_global_hook(): |
| 271 | 275 | render = web.template.render('templates/', base='layout') |
| 272 | 276 | render_plain = web.template.render('templates/') |
| 273 | 277 | |
| 274 | -urls = ('/', 'Index', | |
| 275 | - '/apprec', 'AppRecommender', | |
| 278 | +urls = ('/', 'Index', | |
| 279 | + '/apprec', 'AppRecommender', | |
| 276 | 280 | '/thanks', 'Thanks', |
| 277 | - '/about', 'About', | |
| 281 | + '/support', 'Support', | |
| 282 | + '/about', 'About', | |
| 278 | 283 | '/package/(.*)', 'Package' |
| 279 | 284 | ) |
| 280 | 285 | ... | ... |
src/web/static/css/apprec.css
src/web/static/css/style.css
| ... | ... | @@ -60,10 +60,9 @@ background-image: url('../images/pattern.gif'); |
| 60 | 60 | } |
| 61 | 61 | |
| 62 | 62 | #wrap { |
| 63 | -position:relative; | |
| 64 | 63 | min-width: 470px; |
| 65 | 64 | max-width: 960px; |
| 66 | -margin-top: 0px; | |
| 65 | +margin-top: 100px; | |
| 67 | 66 | margin-right: auto; |
| 68 | 67 | margin-bottom: 0px; |
| 69 | 68 | margin-left: auto; |
| ... | ... | @@ -71,7 +70,29 @@ background-color: white; |
| 71 | 70 | } |
| 72 | 71 | |
| 73 | 72 | #header { |
| 73 | +position: absolute; | |
| 74 | +top: 0px; | |
| 75 | +left: -310px; | |
| 76 | +margin-left: 50%; | |
| 77 | +width: 620px; | |
| 78 | +height: 60px; | |
| 79 | +border-radius: 0 0 10px 10px; | |
| 74 | 80 | padding: 15px; |
| 81 | +background: #000; | |
| 82 | +filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#babdb6', endColorstr='#000000'); | |
| 83 | +background: -webkit-gradient(linear, left top, left bottom, from(#babdb6), to(#000000)); | |
| 84 | +background: -moz-linear-gradient(top, #babdb6, #000000); | |
| 85 | +} | |
| 86 | + | |
| 87 | +#logo span { display: none; } | |
| 88 | +#logo { | |
| 89 | +background: url('../images/icon45.png') no-repeat; | |
| 90 | +width: 45px; | |
| 91 | +height: 45px; | |
| 92 | +margin: 0px; | |
| 93 | +margin-top: 5px; | |
| 94 | +display: block; | |
| 95 | +float: right; | |
| 75 | 96 | } |
| 76 | 97 | |
| 77 | 98 | #navbar { |
| ... | ... | @@ -79,8 +100,7 @@ list-style: none; |
| 79 | 100 | height: 20px; |
| 80 | 101 | width: 100%; |
| 81 | 102 | padding:0; |
| 82 | -margin:0; | |
| 83 | -border: 1px solid gray; | |
| 103 | +margin:10px; | |
| 84 | 104 | } |
| 85 | 105 | |
| 86 | 106 | #navbar li { |
| ... | ... | @@ -98,8 +118,12 @@ margin-left: -1px; |
| 98 | 118 | position: relative; |
| 99 | 119 | left: 1px; |
| 100 | 120 | text-decoration: none; |
| 121 | +border: 1px solid gray; | |
| 101 | 122 | } |
| 102 | 123 | |
| 124 | +#navbar li a:hover { | |
| 125 | +color: red; | |
| 126 | +} | |
| 103 | 127 | |
| 104 | 128 | #sidebar { |
| 105 | 129 | width: 370px; |
| ... | ... | @@ -224,6 +248,7 @@ background-color: #dfdfdf; |
| 224 | 248 | border-radius: 5px; |
| 225 | 249 | font-size: 0.8; |
| 226 | 250 | padding: 5px; |
| 251 | +box-shadow: 0 1px 2px gray; | |
| 227 | 252 | } |
| 228 | 253 | |
| 229 | 254 | |
| ... | ... | @@ -267,13 +292,15 @@ background-image: url('../images/admon-note.png'); |
| 267 | 292 | /* Recommender BOX */ |
| 268 | 293 | |
| 269 | 294 | #recommender-box { |
| 270 | -margin-top: 0px; | |
| 271 | -margin-right: auto; | |
| 272 | -margin-bottom: 0px; | |
| 273 | -margin-left: auto; | |
| 274 | -width: 560px; | |
| 275 | 295 | position: relative; |
| 296 | +margin:0; | |
| 297 | +width: 560px; | |
| 276 | 298 | vertical-align: top; |
| 299 | +border: 1px solid #888a85; | |
| 300 | +border-radius: 4px; | |
| 301 | +box-shadow: 0 1px 4px gray inset; | |
| 302 | +background: white; | |
| 303 | +z-index: 3; | |
| 277 | 304 | } |
| 278 | 305 | |
| 279 | 306 | #recommender-box label { |
| ... | ... | @@ -304,6 +331,11 @@ width: 410px; |
| 304 | 331 | font-size: 13px; |
| 305 | 332 | font-family: Arial, Verdana, Sans-serif; |
| 306 | 333 | color: gray; |
| 334 | +border: 0 none; | |
| 335 | +margin: 0; | |
| 336 | +outline: 0 none; | |
| 337 | +padding: 3px; | |
| 338 | +background: none; | |
| 307 | 339 | } |
| 308 | 340 | |
| 309 | 341 | #pkgs_list:hover, #pkgs_list:active, #pkgs_list:focus { |
| ... | ... | @@ -314,21 +346,75 @@ color: black; |
| 314 | 346 | float: right; |
| 315 | 347 | display: block; |
| 316 | 348 | width: 135px; |
| 317 | -text-align: center; | |
| 349 | +height: 45px; | |
| 350 | +overflow: hidden; | |
| 351 | +position: relative; | |
| 318 | 352 | } |
| 319 | 353 | |
| 320 | -#submit-box input { | |
| 321 | -font-size: 14px; | |
| 322 | -margin: 5px; | |
| 354 | +#submit-button { | |
| 355 | +border: 1px solid #888a85; | |
| 356 | +box-shadow: 0 1px 4px gray inset; | |
| 357 | +border-radius: 0; | |
| 358 | +background: #ffffff; /* for non-css3 browsers */ | |
| 359 | +filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#d3d7cf'); /* for IE */ | |
| 360 | +background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#d3d7cf)); /* for webkit browsers */ | |
| 361 | +background: -moz-linear-gradient(top, #ffffff, #d3d7cf); /* for firefox 3.6+ */ | |
| 362 | +color: #585C60; | |
| 363 | +font-size: 12px; | |
| 364 | +font-weight: 600; | |
| 365 | +width: 135px; | |
| 366 | +height: 30px; | |
| 367 | +line-height: 14px; | |
| 368 | +margin: 0; | |
| 369 | +padding: 5px; | |
| 370 | +position: absolute; | |
| 371 | +right: -1px; | |
| 372 | +top: -1px; | |
| 373 | +text-shadow: 0 1px 0 gray; | |
| 374 | +z-index: 2; | |
| 375 | +cursor: pointer; | |
| 323 | 376 | } |
| 324 | 377 | |
| 325 | -/* Advance Query */ | |
| 378 | +#submit-button:hover { | |
| 379 | +background: #d3d7cf; | |
| 380 | +filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#d3d7cf', endColorstr='#d3d7cf'); | |
| 381 | +background: -webkit-gradient(linear, left top, left bottom, from(#d3d7cf), to(#d3d7cf)); | |
| 382 | +background: -moz-linear-gradient(top, #d3d7cf, #d3d7cf); | |
| 383 | +} | |
| 384 | + | |
| 385 | +#advanced-button { | |
| 386 | +color: #888a85; | |
| 387 | +font-size: 10px; | |
| 388 | +font-weight: 600; | |
| 389 | +height: 15px; | |
| 390 | +width: 135px; | |
| 391 | +line-height: 14px; | |
| 392 | +margin: 0; | |
| 393 | +position: absolute; | |
| 394 | +right: -1px; | |
| 395 | +text-shadow: 0 1px 0 gray; | |
| 396 | +text-align: center; | |
| 397 | +bottom: -1px; | |
| 398 | +z-index: 2; | |
| 399 | +cursor: pointer; | |
| 400 | +} | |
| 326 | 401 | |
| 402 | +#advanced-button:hover { color: black; } | |
| 327 | 403 | |
| 328 | -#content-form, #colaborative-form { display: none; } | |
| 329 | 404 | |
| 330 | -#content-form:target, #colaborative-form:target, #hybrid-form:target { z-index: 1; display: block; } | |
| 405 | +/* Advance Query */ | |
| 331 | 406 | |
| 407 | +#advanced-slide { display: none; } | |
| 408 | + | |
| 409 | +#advanced-slide legend { | |
| 410 | +font-weight: bold; | |
| 411 | +} | |
| 412 | +#advanced-slide fieldset { | |
| 413 | +boder: 1px solid gray; | |
| 414 | +font-size: 0.9em; | |
| 415 | +padding: 5px; | |
| 416 | +margin: 10px; | |
| 417 | +} | |
| 332 | 418 | |
| 333 | 419 | |
| 334 | 420 | ... | ... |
src/web/static/css/thickbox.css
| ... | ... | @@ -1,161 +0,0 @@ |
| 1 | -/* ----------------------------------------------------------------------------------------------------------------*/ | |
| 2 | -/* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/ | |
| 3 | -/* ----------------------------------------------------------------------------------------------------------------*/ | |
| 4 | -*{padding: 0; margin: 0;} | |
| 5 | - | |
| 6 | -/* ----------------------------------------------------------------------------------------------------------------*/ | |
| 7 | -/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/ | |
| 8 | -/* ----------------------------------------------------------------------------------------------------------------*/ | |
| 9 | -#TB_window { | |
| 10 | - font: 12px Arial, Helvetica, sans-serif; | |
| 11 | - color: #333333; | |
| 12 | -} | |
| 13 | - | |
| 14 | -#TB_secondLine { | |
| 15 | - font: 10px Arial, Helvetica, sans-serif; | |
| 16 | - color:#666666; | |
| 17 | -} | |
| 18 | - | |
| 19 | -#TB_window a:link {color: #666666;} | |
| 20 | -#TB_window a:visited {color: #666666;} | |
| 21 | -#TB_window a:hover {color: #000;} | |
| 22 | -#TB_window a:active {color: #666666;} | |
| 23 | -#TB_window a:focus{color: #666666;} | |
| 24 | - | |
| 25 | -/* ----------------------------------------------------------------------------------------------------------------*/ | |
| 26 | -/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/ | |
| 27 | -/* ----------------------------------------------------------------------------------------------------------------*/ | |
| 28 | -#TB_overlay { | |
| 29 | - position: fixed; | |
| 30 | - z-index:100; | |
| 31 | - top: 0px; | |
| 32 | - left: 0px; | |
| 33 | - height:100%; | |
| 34 | - width:100%; | |
| 35 | -} | |
| 36 | - | |
| 37 | -.TB_overlayMacFFBGHack {background: url(/static/images/macFFBgHack.png) repeat;} | |
| 38 | -.TB_overlayBG { | |
| 39 | - background-color:#000; | |
| 40 | - filter:alpha(opacity=75); | |
| 41 | - -moz-opacity: 0.75; | |
| 42 | - opacity: 0.75; | |
| 43 | -} | |
| 44 | - | |
| 45 | -* html #TB_overlay { /* ie6 hack */ | |
| 46 | - position: absolute; | |
| 47 | - height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); | |
| 48 | -} | |
| 49 | - | |
| 50 | -#TB_window { | |
| 51 | - position: fixed; | |
| 52 | - background: #ffffff; | |
| 53 | - z-index: 102; | |
| 54 | - color:#000000; | |
| 55 | - display:none; | |
| 56 | - border: 4px solid #525252; | |
| 57 | - text-align:left; | |
| 58 | - top:50%; | |
| 59 | - left:50%; | |
| 60 | -} | |
| 61 | - | |
| 62 | -* html #TB_window { /* ie6 hack */ | |
| 63 | -position: absolute; | |
| 64 | -margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); | |
| 65 | -} | |
| 66 | - | |
| 67 | -#TB_window img#TB_Image { | |
| 68 | - display:block; | |
| 69 | - margin: 15px 0 0 15px; | |
| 70 | - border-right: 1px solid #ccc; | |
| 71 | - border-bottom: 1px solid #ccc; | |
| 72 | - border-top: 1px solid #666; | |
| 73 | - border-left: 1px solid #666; | |
| 74 | -} | |
| 75 | - | |
| 76 | -#TB_caption{ | |
| 77 | - height:25px; | |
| 78 | - padding:7px 30px 10px 25px; | |
| 79 | - float:left; | |
| 80 | -} | |
| 81 | - | |
| 82 | -#TB_closeWindow{ | |
| 83 | - height:25px; | |
| 84 | - padding:11px 25px 10px 0; | |
| 85 | - float:right; | |
| 86 | -} | |
| 87 | - | |
| 88 | -#TB_closeAjaxWindow{ | |
| 89 | - padding:7px 10px 5px 0; | |
| 90 | - margin-bottom:1px; | |
| 91 | - text-align:right; | |
| 92 | - float:right; | |
| 93 | -} | |
| 94 | - | |
| 95 | -#TB_ajaxWindowTitle{ | |
| 96 | - float:left; | |
| 97 | - padding:7px 0 5px 10px; | |
| 98 | - margin-bottom:1px; | |
| 99 | -} | |
| 100 | - | |
| 101 | -#TB_title{ | |
| 102 | -} | |
| 103 | - | |
| 104 | -#TB_ajaxContent{ | |
| 105 | - clear:both; | |
| 106 | - padding:2px 15px 15px 15px; | |
| 107 | - overflow:auto; | |
| 108 | - text-align:left; | |
| 109 | - line-height:1.4em; | |
| 110 | -} | |
| 111 | - | |
| 112 | -#TB_ajaxContent.TB_modal{ | |
| 113 | - padding:15px; | |
| 114 | -} | |
| 115 | - | |
| 116 | -#TB_ajaxContent p{ | |
| 117 | - padding:5px 0px 5px 0px; | |
| 118 | -} | |
| 119 | - | |
| 120 | -#TB_load{ | |
| 121 | - position: fixed; | |
| 122 | - display:none; | |
| 123 | - height:13px; | |
| 124 | - width:208px; | |
| 125 | - z-index:103; | |
| 126 | - top: 50%; | |
| 127 | - left: 50%; | |
| 128 | - margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */ | |
| 129 | -} | |
| 130 | - | |
| 131 | -* html #TB_load { /* ie6 hack */ | |
| 132 | -position: absolute; | |
| 133 | -margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); | |
| 134 | -} | |
| 135 | - | |
| 136 | -#TB_HideSelect{ | |
| 137 | - z-index:99; | |
| 138 | - position:fixed; | |
| 139 | - top: 0; | |
| 140 | - left: 0; | |
| 141 | - background-color:#fff; | |
| 142 | - border:none; | |
| 143 | - filter:alpha(opacity=0); | |
| 144 | - -moz-opacity: 0; | |
| 145 | - opacity: 0; | |
| 146 | - height:100%; | |
| 147 | - width:100%; | |
| 148 | -} | |
| 149 | - | |
| 150 | -* html #TB_HideSelect { /* ie6 hack */ | |
| 151 | - position: absolute; | |
| 152 | - height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); | |
| 153 | -} | |
| 154 | - | |
| 155 | -#TB_iframeContent{ | |
| 156 | - clear:both; | |
| 157 | - border:none; | |
| 158 | - margin-bottom:-1px; | |
| 159 | - margin-top:1px; | |
| 160 | - _margin-bottom:1px; | |
| 161 | -} |
src/web/static/js/thickbox.js
| ... | ... | @@ -1,319 +0,0 @@ |
| 1 | -/* | |
| 2 | - * Thickbox 3.1 - One Box To Rule Them All. | |
| 3 | - * By Cody Lindley (http://www.codylindley.com) | |
| 4 | - * Copyright (c) 2007 cody lindley | |
| 5 | - * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php | |
| 6 | -*/ | |
| 7 | - | |
| 8 | -var tb_pathToImage = "/static/images/loadingAnimation.gif"; | |
| 9 | - | |
| 10 | -/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/ | |
| 11 | - | |
| 12 | -//on page load call tb_init | |
| 13 | -$(document).ready(function(){ | |
| 14 | - tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox | |
| 15 | - imgLoader = new Image();// preload image | |
| 16 | - imgLoader.src = tb_pathToImage; | |
| 17 | -}); | |
| 18 | - | |
| 19 | -//add thickbox to href & area elements that have a class of .thickbox | |
| 20 | -function tb_init(domChunk){ | |
| 21 | - $(domChunk).click(function(){ | |
| 22 | - var t = this.title || this.name || null; | |
| 23 | - var a = this.href || this.alt; | |
| 24 | - var g = this.rel || false; | |
| 25 | - tb_show(t,a,g); | |
| 26 | - this.blur(); | |
| 27 | - return false; | |
| 28 | - }); | |
| 29 | -} | |
| 30 | - | |
| 31 | -function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link | |
| 32 | - | |
| 33 | - try { | |
| 34 | - if (typeof document.body.style.maxHeight === "undefined") {//if IE 6 | |
| 35 | - $("body","html").css({height: "100%", width: "100%"}); | |
| 36 | - $("html").css("overflow","hidden"); | |
| 37 | - if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6 | |
| 38 | - $("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>"); | |
| 39 | - $("#TB_overlay").click(tb_remove); | |
| 40 | - } | |
| 41 | - }else{//all others | |
| 42 | - if(document.getElementById("TB_overlay") === null){ | |
| 43 | - $("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>"); | |
| 44 | - $("#TB_overlay").click(tb_remove); | |
| 45 | - } | |
| 46 | - } | |
| 47 | - | |
| 48 | - if(tb_detectMacXFF()){ | |
| 49 | - $("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash | |
| 50 | - }else{ | |
| 51 | - $("#TB_overlay").addClass("TB_overlayBG");//use background and opacity | |
| 52 | - } | |
| 53 | - | |
| 54 | - if(caption===null){caption="";} | |
| 55 | - $("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page | |
| 56 | - $('#TB_load').show();//show loader | |
| 57 | - | |
| 58 | - var baseURL; | |
| 59 | - if(url.indexOf("?")!==-1){ //ff there is a query string involved | |
| 60 | - baseURL = url.substr(0, url.indexOf("?")); | |
| 61 | - }else{ | |
| 62 | - baseURL = url; | |
| 63 | - } | |
| 64 | - | |
| 65 | - var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/; | |
| 66 | - var urlType = baseURL.toLowerCase().match(urlString); | |
| 67 | - | |
| 68 | - if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images | |
| 69 | - | |
| 70 | - TB_PrevCaption = ""; | |
| 71 | - TB_PrevURL = ""; | |
| 72 | - TB_PrevHTML = ""; | |
| 73 | - TB_NextCaption = ""; | |
| 74 | - TB_NextURL = ""; | |
| 75 | - TB_NextHTML = ""; | |
| 76 | - TB_imageCount = ""; | |
| 77 | - TB_FoundURL = false; | |
| 78 | - if(imageGroup){ | |
| 79 | - TB_TempArray = $("a[@rel="+imageGroup+"]").get(); | |
| 80 | - for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) { | |
| 81 | - var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString); | |
| 82 | - if (!(TB_TempArray[TB_Counter].href == url)) { | |
| 83 | - if (TB_FoundURL) { | |
| 84 | - TB_NextCaption = TB_TempArray[TB_Counter].title; | |
| 85 | - TB_NextURL = TB_TempArray[TB_Counter].href; | |
| 86 | - TB_NextHTML = "<span id='TB_next'> <a href='#'>Next ></a></span>"; | |
| 87 | - } else { | |
| 88 | - TB_PrevCaption = TB_TempArray[TB_Counter].title; | |
| 89 | - TB_PrevURL = TB_TempArray[TB_Counter].href; | |
| 90 | - TB_PrevHTML = "<span id='TB_prev'> <a href='#'>< Prev</a></span>"; | |
| 91 | - } | |
| 92 | - } else { | |
| 93 | - TB_FoundURL = true; | |
| 94 | - TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length); | |
| 95 | - } | |
| 96 | - } | |
| 97 | - } | |
| 98 | - | |
| 99 | - imgPreloader = new Image(); | |
| 100 | - imgPreloader.onload = function(){ | |
| 101 | - imgPreloader.onload = null; | |
| 102 | - | |
| 103 | - // Resizing large images - orginal by Christian Montoya edited by me. | |
| 104 | - var pagesize = tb_getPageSize(); | |
| 105 | - var x = pagesize[0] - 150; | |
| 106 | - var y = pagesize[1] - 150; | |
| 107 | - var imageWidth = imgPreloader.width; | |
| 108 | - var imageHeight = imgPreloader.height; | |
| 109 | - if (imageWidth > x) { | |
| 110 | - imageHeight = imageHeight * (x / imageWidth); | |
| 111 | - imageWidth = x; | |
| 112 | - if (imageHeight > y) { | |
| 113 | - imageWidth = imageWidth * (y / imageHeight); | |
| 114 | - imageHeight = y; | |
| 115 | - } | |
| 116 | - } else if (imageHeight > y) { | |
| 117 | - imageWidth = imageWidth * (y / imageHeight); | |
| 118 | - imageHeight = y; | |
| 119 | - if (imageWidth > x) { | |
| 120 | - imageHeight = imageHeight * (x / imageWidth); | |
| 121 | - imageWidth = x; | |
| 122 | - } | |
| 123 | - } | |
| 124 | - // End Resizing | |
| 125 | - | |
| 126 | - TB_WIDTH = imageWidth + 30; | |
| 127 | - TB_HEIGHT = imageHeight + 60; | |
| 128 | - $("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div>"); | |
| 129 | - | |
| 130 | - $("#TB_closeWindowButton").click(tb_remove); | |
| 131 | - | |
| 132 | - if (!(TB_PrevHTML === "")) { | |
| 133 | - function goPrev(){ | |
| 134 | - if($(document).unbind("click",goPrev)){$(document).unbind("click",goPrev);} | |
| 135 | - $("#TB_window").remove(); | |
| 136 | - $("body").append("<div id='TB_window'></div>"); | |
| 137 | - tb_show(TB_PrevCaption, TB_PrevURL, imageGroup); | |
| 138 | - return false; | |
| 139 | - } | |
| 140 | - $("#TB_prev").click(goPrev); | |
| 141 | - } | |
| 142 | - | |
| 143 | - if (!(TB_NextHTML === "")) { | |
| 144 | - function goNext(){ | |
| 145 | - $("#TB_window").remove(); | |
| 146 | - $("body").append("<div id='TB_window'></div>"); | |
| 147 | - tb_show(TB_NextCaption, TB_NextURL, imageGroup); | |
| 148 | - return false; | |
| 149 | - } | |
| 150 | - $("#TB_next").click(goNext); | |
| 151 | - | |
| 152 | - } | |
| 153 | - | |
| 154 | - document.onkeydown = function(e){ | |
| 155 | - if (e == null) { // ie | |
| 156 | - keycode = event.keyCode; | |
| 157 | - } else { // mozilla | |
| 158 | - keycode = e.which; | |
| 159 | - } | |
| 160 | - if(keycode == 27){ // close | |
| 161 | - tb_remove(); | |
| 162 | - } else if(keycode == 190){ // display previous image | |
| 163 | - if(!(TB_NextHTML == "")){ | |
| 164 | - document.onkeydown = ""; | |
| 165 | - goNext(); | |
| 166 | - } | |
| 167 | - } else if(keycode == 188){ // display next image | |
| 168 | - if(!(TB_PrevHTML == "")){ | |
| 169 | - document.onkeydown = ""; | |
| 170 | - goPrev(); | |
| 171 | - } | |
| 172 | - } | |
| 173 | - }; | |
| 174 | - | |
| 175 | - tb_position(); | |
| 176 | - $("#TB_load").remove(); | |
| 177 | - $("#TB_ImageOff").click(tb_remove); | |
| 178 | - $("#TB_window").css({display:"block"}); //for safari using css instead of show | |
| 179 | - }; | |
| 180 | - | |
| 181 | - imgPreloader.src = url; | |
| 182 | - }else{//code to show html | |
| 183 | - | |
| 184 | - var queryString = url.replace(/^[^\?]+\??/,''); | |
| 185 | - var params = tb_parseQuery( queryString ); | |
| 186 | - | |
| 187 | - TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL | |
| 188 | - TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL | |
| 189 | - ajaxContentW = TB_WIDTH - 30; | |
| 190 | - ajaxContentH = TB_HEIGHT - 45; | |
| 191 | - | |
| 192 | - if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window | |
| 193 | - urlNoQuery = url.split('TB_'); | |
| 194 | - $("#TB_iframeContent").remove(); | |
| 195 | - if(params['modal'] != "true"){//iframe no modal | |
| 196 | - $("#TB_window").append("<div id='TB_title'><h1 id='TB_ajaxWindowTitle'>"+caption+"</h1><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>"); | |
| 197 | - }else{//iframe modal | |
| 198 | - $("#TB_overlay").unbind(); | |
| 199 | - $("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>"); | |
| 200 | - } | |
| 201 | - }else{// not an iframe, ajax | |
| 202 | - if($("#TB_window").css("display") != "block"){ | |
| 203 | - if(params['modal'] != "true"){//ajax no modal | |
| 204 | - $("#TB_window").append("<div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div>"); | |
| 205 | - }else{//ajax modal | |
| 206 | - $("#TB_overlay").unbind(); | |
| 207 | - $("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>"); | |
| 208 | - } | |
| 209 | - }else{//this means the window is already up, we are just loading new content via ajax | |
| 210 | - $("#TB_ajaxContent")[0].style.width = ajaxContentW +"px"; | |
| 211 | - $("#TB_ajaxContent")[0].style.height = ajaxContentH +"px"; | |
| 212 | - $("#TB_ajaxContent")[0].scrollTop = 0; | |
| 213 | - $("#TB_ajaxWindowTitle").html(caption); | |
| 214 | - } | |
| 215 | - } | |
| 216 | - | |
| 217 | - $("#TB_closeWindowButton").click(tb_remove); | |
| 218 | - | |
| 219 | - if(url.indexOf('TB_inline') != -1){ | |
| 220 | - $("#TB_ajaxContent").append($('#' + params['inlineId']).children()); | |
| 221 | - $("#TB_window").unload(function () { | |
| 222 | - $('#' + params['inlineId']).append( $("#TB_ajaxContent").children() ); // move elements back when you're finished | |
| 223 | - }); | |
| 224 | - tb_position(); | |
| 225 | - $("#TB_load").remove(); | |
| 226 | - $("#TB_window").css({display:"block"}); | |
| 227 | - }else if(url.indexOf('TB_iframe') != -1){ | |
| 228 | - tb_position(); | |
| 229 | - if($.browser.safari){//safari needs help because it will not fire iframe onload | |
| 230 | - $("#TB_load").remove(); | |
| 231 | - $("#TB_window").css({display:"block"}); | |
| 232 | - } | |
| 233 | - }else{ | |
| 234 | - $("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method | |
| 235 | - tb_position(); | |
| 236 | - $("#TB_load").remove(); | |
| 237 | - tb_init("#TB_ajaxContent a.thickbox"); | |
| 238 | - $("#TB_window").css({display:"block"}); | |
| 239 | - }); | |
| 240 | - } | |
| 241 | - | |
| 242 | - } | |
| 243 | - | |
| 244 | - if(!params['modal']){ | |
| 245 | - document.onkeyup = function(e){ | |
| 246 | - if (e == null) { // ie | |
| 247 | - keycode = event.keyCode; | |
| 248 | - } else { // mozilla | |
| 249 | - keycode = e.which; | |
| 250 | - } | |
| 251 | - if(keycode == 27){ // close | |
| 252 | - tb_remove(); | |
| 253 | - } | |
| 254 | - }; | |
| 255 | - } | |
| 256 | - | |
| 257 | - } catch(e) { | |
| 258 | - //nothing here | |
| 259 | - } | |
| 260 | -} | |
| 261 | - | |
| 262 | -//helper functions below | |
| 263 | -function tb_showIframe(){ | |
| 264 | - $("#TB_load").remove(); | |
| 265 | - $("#TB_window").css({display:"block"}); | |
| 266 | -} | |
| 267 | - | |
| 268 | -function tb_remove() { | |
| 269 | - $("#TB_imageOff").unbind("click"); | |
| 270 | - $("#TB_closeWindowButton").unbind("click"); | |
| 271 | - $("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();}); | |
| 272 | - $("#TB_load").remove(); | |
| 273 | - if (typeof document.body.style.maxHeight == "undefined") {//if IE 6 | |
| 274 | - $("body","html").css({height: "auto", width: "auto"}); | |
| 275 | - $("html").css("overflow",""); | |
| 276 | - } | |
| 277 | - document.onkeydown = ""; | |
| 278 | - document.onkeyup = ""; | |
| 279 | - return false; | |
| 280 | -} | |
| 281 | - | |
| 282 | -function tb_position() { | |
| 283 | -$("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'}); | |
| 284 | - if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6 | |
| 285 | - $("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'}); | |
| 286 | - } | |
| 287 | -} | |
| 288 | - | |
| 289 | -function tb_parseQuery ( query ) { | |
| 290 | - var Params = {}; | |
| 291 | - if ( ! query ) {return Params;}// return empty object | |
| 292 | - var Pairs = query.split(/[;&]/); | |
| 293 | - for ( var i = 0; i < Pairs.length; i++ ) { | |
| 294 | - var KeyVal = Pairs[i].split('='); | |
| 295 | - if ( ! KeyVal || KeyVal.length != 2 ) {continue;} | |
| 296 | - var key = unescape( KeyVal[0] ); | |
| 297 | - var val = unescape( KeyVal[1] ); | |
| 298 | - val = val.replace(/\+/g, ' '); | |
| 299 | - Params[key] = val; | |
| 300 | - } | |
| 301 | - return Params; | |
| 302 | -} | |
| 303 | - | |
| 304 | -function tb_getPageSize(){ | |
| 305 | - var de = document.documentElement; | |
| 306 | - var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth; | |
| 307 | - var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight; | |
| 308 | - arrayPageSize = [w,h]; | |
| 309 | - return arrayPageSize; | |
| 310 | -} | |
| 311 | - | |
| 312 | -function tb_detectMacXFF() { | |
| 313 | - var userAgent = navigator.userAgent.toLowerCase(); | |
| 314 | - if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) { | |
| 315 | - return true; | |
| 316 | - } | |
| 317 | -} | |
| 318 | - | |
| 319 | - |
src/web/templates/apprec.html
| ... | ... | @@ -2,7 +2,7 @@ $def with (recommends, pkg_summaries, form, request) |
| 2 | 2 | $var title: Feedback |
| 3 | 3 | $var mod = 'feedback'; |
| 4 | 4 | $var cssfiles: static/css/apprec.css static/css/facebox.css static/css/voting.css |
| 5 | -$var jsfiles: static/js/facebox.js static/js/jquery.simplerss.js | |
| 5 | +$var jsfiles: static/js/facebox.js | |
| 6 | 6 | |
| 7 | 7 | <script type="application/x-javascript"> |
| 8 | 8 | $$(document).ready(function() { | ... | ... |
src/web/templates/layout.html
| ... | ... | @@ -17,24 +17,39 @@ $ url_base = "http://localhost:8080" |
| 17 | 17 | <link href="$css" rel="stylesheet" type="text/css" media="screen" charset="utf-8"/> |
| 18 | 18 | |
| 19 | 19 | <script src="/static/js/jquery.js" type="text/javascript"></script> |
| 20 | + <script src="/static/js/FormManager.js" type="text/javascript"></script> | |
| 20 | 21 | |
| 21 | 22 | $if content.jsfiles: |
| 22 | 23 | $for js in content.jsfiles.split(): |
| 23 | 24 | <script src="$js" type="text/javascript"></script> |
| 24 | 25 | |
| 26 | +<!-- Dynamic form --> | |
| 27 | +<script type="text/javascript"> | |
| 28 | +window.onload = function() { | |
| 29 | + setupDependencies('weboptions'); //name of form(s). Seperate each with a comma (ie: 'weboptions', 'myotherform' ) | |
| 30 | + }; | |
| 31 | +</script> | |
| 32 | +<script type="text/javascript"> | |
| 33 | + $$(document).ready(function() { | |
| 34 | + $$("#advanced-button").click(function () { | |
| 35 | + $$("#advanced-slide").toggle("slow"); | |
| 36 | + }); | |
| 37 | + }); | |
| 38 | +</script> | |
| 39 | + | |
| 25 | 40 | </head> |
| 26 | 41 | |
| 27 | 42 | <body class="$content.mod"> |
| 28 | 43 | |
| 29 | 44 | <div id="wrap"> |
| 30 | 45 | <div id="header"> |
| 31 | - | |
| 32 | -<form action="apprec" enctype="multipart/form-data" method="post" name="recommenderbox-form"> | |
| 33 | - <fieldset> | |
| 46 | + <a href="$url_base" title="AppRecommender"><h1 id="logo"><span>AppRecommender</span></h1></a> | |
| 34 | 47 | <div id="recommender-box"> |
| 48 | + <form action="apprec" enctype="multipart/form-data" method="post" name="weboptions"> | |
| 49 | + <fieldset> | |
| 35 | 50 | <div id="submit-box"> |
| 36 | - <input type="submit" value="Recommender!"><br /> | |
| 37 | - [<a href="#advancedquery" rel="facebox">advanced query</a>] | |
| 51 | + <input type="submit" value="RECOMMENDER" id="submit-button"><br /> | |
| 52 | + <a id="advanced-button">advanced query?</a> | |
| 38 | 53 | </div> |
| 39 | 54 | <div id="input-box"> |
| 40 | 55 | <a href="#attachfile" rel="facebox" id="upfile"><span style="display: none;">Upload a file.</span></a> |
| ... | ... | @@ -43,23 +58,71 @@ $ url_base = "http://localhost:8080" |
| 43 | 58 | if(/^\s*$$/.test(this.value)){ this.value='Write your list App here or send a file list this icon:'; |
| 44 | 59 | this.form.className='clean' }" rows="2" cols="55" name="pkgs_list" id="pkgs_list" |
| 45 | 60 | >Write your list App here or send a file list this icon:</textarea></label> |
| 61 | + </div> | |
| 62 | + </fieldset> | |
| 63 | + | |
| 64 | + <div id="advanced-slide"> | |
| 65 | + <fieldset> | |
| 66 | + <legend>General</legend> | |
| 67 | + <div> | |
| 68 | + <label><input type="hidden">Profile size:</label> | |
| 69 | + <label class="special"><input type="text" name="profile_size" value="10" size="4"></label> | |
| 70 | + <label><input type="hidden">Recommendations:</label> | |
| 71 | + <label class="special"><input type="text" name="limit" value="10" size="4"></label> | |
| 72 | + </div> | |
| 73 | + <div> | |
| 74 | + <label><input type="hidden">Weighting:</label> | |
| 75 | + <label class="special"><input type="radio" name="weight" value="BM25" checked="checked"> BM25</label> | |
| 76 | + <label class="special"><input type="radio" name="weight" value="trad"> Traditional</label> | |
| 77 | + </div> | |
| 78 | + <div> | |
| 79 | + <label><input type="hidden">Strategy:</label> | |
| 80 | + <label class="special"><input type="radio" name="strategy" value="content" checked="checked"> Content-based</label> | |
| 81 | + <label class="special"><input type="radio" name="strategy" value="collab"> Collaborative</label> | |
| 82 | + <label class="special"><input type="radio" name="strategy" value="hybrid"> Hybrid</label> | |
| 83 | + </div> | |
| 84 | + </fieldset> | |
| 85 | + <fieldset> | |
| 86 | + <legend>Tuning up</legend> | |
| 87 | + <div id="content-form" class="group-form group-hybrid"> | |
| 88 | + <label><input type="hidden" class="DEPENDS ON strategy BEING content OR strategy BEING hybrid">Content representation:</label> | |
| 89 | + <label class="special"><input type="radio" name="content" value="tag" class="DEPENDS ON strategy BEING content OR strategy BEING hybrid"> tag</label> | |
| 90 | + <label class="special"><input type="radio" name="content" value="desc" class="DEPENDS ON strategy BEING content OR strategy BEING hybrid"> description</label> | |
| 91 | + <label class="special"><input type="radio" name="content" value="full" class="DEPENDS ON strategy BEING content OR strategy BEING hybrid"> both</label> | |
| 92 | + </div> | |
| 93 | + <div id="colaborative-form" class="group-form group-hybrid"> | |
| 94 | + <label><input type="hidden">Clustering:</label> | |
| 95 | + <label class="special"><input type="radio" name="cluster" value="yes"> yes</label> | |
| 96 | + <label class="special"><input type="radio" name="cluster" value="no"> no</label> | |
| 97 | + </div> | |
| 98 | + <div id="hybrid-form" class="group-form group-hybrid"> | |
| 99 | + <label><input type="hidden" class="DEPENDS ON strategy BEING hybrid">Neighborhood:</label> | |
| 100 | + <label class="special"><input type="text" name="neighbours" class="DEPENDS ON strategy BEING hybrid" value="50" size="4"></label> | |
| 101 | + <label><input type="hidden" class="DEPENDS ON strategy BEING hybrid">Personal profile:</label> | |
| 102 | + <label class=special><input type="checkbox" name="profile_desktop" class="DEPENDS ON strategy BEING hybrid" > Desktop</label> | |
| 103 | + <label class=special><input type="checkbox" name="profile_admin" class="DEPENDS ON strategy BEING hybrid" > Admin</label> | |
| 104 | + <label class=special><input type="checkbox" name="profile_devel" class="DEPENDS ON strategy BEING hybrid" > Devel</label> | |
| 105 | + <label class=special><input type="checkbox" name="profile_science" class="DEPENDS ON strategy BEING hybrid" > Science</label> | |
| 106 | + <label class=special><input type="checkbox" name="profile_arts" class="DEPENDS ON strategy BEING hybrid" > Arts</label> | |
| 46 | 107 | </div> |
| 108 | + </fieldset> | |
| 109 | + <fieldset> | |
| 110 | + <legend>Your packages</legend> | |
| 111 | + <div> | |
| 112 | + <label>Upload file<input type="file" id="pkgs_file" name="pkgs_file" size="18"/></label> | |
| 113 | + </div> | |
| 114 | + </fieldset> | |
| 115 | + </div><!-- id="advanced-slide" --> | |
| 116 | + | |
| 117 | + </form> | |
| 47 | 118 | </div> |
| 48 | - <input type="file" name="pkgs_file" size="18" style="display: none;" /> | |
| 49 | - <input type="hidden" name="weight" value="BM25" checked="checked"> | |
| 50 | - <input type="hidden" name="strategy" value="content" checked="checked"> | |
| 51 | - <input type="hidden" name="profile_size" value="10" size="4"> | |
| 52 | - <input type="hidden" name="limit" value="10" size="4"> | |
| 53 | - <input type="hidden" name="neighbours" class="DEPENDS ON strategy BEING hybrid" value="50" size="4"> | |
| 54 | - </fieldset> | |
| 55 | -</form> | |
| 56 | 119 | |
| 57 | 120 | |
| 58 | 121 | |
| 59 | 122 | <!-- BOX ATTACHMENT FILE --> |
| 60 | 123 | <div id="attachfile" style="display: none;"> |
| 61 | 124 | <h2>Recommendation with file list</h2> |
| 62 | -<form action="apprec" enctype="multipart/form-data" method="post" name="uploadbox-form"> | |
| 125 | +<form action="apprec" enctype="multipart/form-data" method="post" name="uploadform"> | |
| 63 | 126 | <fieldset> |
| 64 | 127 | <label title="Upload file">Upload file: <input type="file" name="pkgs_file" size="18"/></label> |
| 65 | 128 | <p> |
| ... | ... | @@ -81,89 +144,6 @@ You can use file <strong>/var/log/popularity-contest</strong> or create a with < |
| 81 | 144 | </div><!-- id="attachfile" --> |
| 82 | 145 | <!-- END BOX ATTACHMENT FILE --> |
| 83 | 146 | |
| 84 | -<!-- Dynamic form --> | |
| 85 | -<script type="application/javascript"> | |
| 86 | -window.onload = function() { | |
| 87 | - setupDependencies('weboptions'); //name of form(s). Seperate each with a comma (ie: 'weboptions', 'myotherform' ) | |
| 88 | - }; | |
| 89 | -</script> | |
| 90 | - | |
| 91 | -<div id="advancedquery" style="display: none"> | |
| 92 | -<form action="apprec" enctype="multipart/form-data" method="post" name="weboptions"> | |
| 93 | - | |
| 94 | - <fieldset> | |
| 95 | - <legend>General</legend> | |
| 96 | -<div> | |
| 97 | - <label><input type="hidden">Profile size:</label> | |
| 98 | - <label class="special"><input type="text" name="profile_size" value="10" size="4"></label> | |
| 99 | - <label><input type="hidden">Recommendations:</label> | |
| 100 | - <label class="special"><input type="text" name="limit" value="10" size="4"></label> | |
| 101 | -</div><div> | |
| 102 | - <label><input type="hidden">Weighting:</label> | |
| 103 | - <label class="special"><input type="radio" name="weight" value="BM25" checked="checked"> BM25</label> | |
| 104 | - <label class="special"><input type="radio" name="weight" value="trad"> Traditional</label> | |
| 105 | -</div><div> | |
| 106 | - <label><input type="hidden">Strategy:</label> | |
| 107 | -<div id="tab-area"> | |
| 108 | - <ul id="list-tabs"> | |
| 109 | - <li class="tab-one"><a href="#content-form"> | |
| 110 | - <label class="special"><input type="radio" name="strategy" value="content" id="strategy-content"> Content-based</label> | |
| 111 | - </a></li> | |
| 112 | - <li class="tab-two"><a href="#colaborative-form"> | |
| 113 | - <label class="special"><input type="radio" name="strategy" value="collab" id="strategy-collaborative"> Collaborative</label> | |
| 114 | - </a></li> | |
| 115 | - <li class="tab-three"><a href="#hybrid-form"> | |
| 116 | - <label class="special"><input type="radio" name="strategy" value="hybrid" id="strategy-hybrid"> Hybrid</label> | |
| 117 | - </a></li> | |
| 118 | - </ul> | |
| 119 | - </div> | |
| 120 | - | |
| 121 | -</div> | |
| 122 | - </fieldset> | |
| 123 | - <fieldset> | |
| 124 | - <legend>Tuning up</legend> | |
| 125 | - <div id="content-form" class="group-form group-hybrid"> | |
| 126 | - <label><input type="hidden" class="DEPENDS ON strategy BEING content OR strategy BEING hybrid">Content representation:</label> | |
| 127 | - <label class="special"><input type="radio" name="content" value="tag" class="DEPENDS ON strategy BEING content OR strategy BEING hybrid"> tag</label> | |
| 128 | - <label class="special"><input type="radio" name="content" value="desc" class="DEPENDS ON strategy BEING content OR strategy BEING hybrid"> description</label> <label class="special"><input type="radio" name="content" value="full" class="DEPENDS ON strategy BEING content OR strategy BEING hybrid"> both</label> | |
| 129 | - </div> | |
| 130 | - <div id="colaborative-form" class="group-form group-hybrid"> | |
| 131 | - <label><input type="hidden">Clustering:</label> | |
| 132 | - <label class="special"><input type="radio" name="cluster" value="yes"> yes</label> | |
| 133 | - <label class="special"><input type="radio" name="cluster" value="no"> no</label> | |
| 134 | - </div> | |
| 135 | - <div id="hybrid-form" class="group-form group-hybrid"> | |
| 136 | - <label><input type="hidden" class="DEPENDS ON strategy BEING hybrid">Neighborhood:</label> | |
| 137 | - <label class="special"><input type="text" name="neighbours" class="DEPENDS ON strategy BEING hybrid" value="50" size="4"></label> | |
| 138 | - <label><input type="hidden" class="DEPENDS ON strategy BEING hybrid">Personal profile:</label> | |
| 139 | - <label class=special><input type="checkbox" name="profile_desktop" class="DEPENDS ON strategy BEING hybrid" > Desktop</label> | |
| 140 | - <label class=special><input type="checkbox" name="profile_admin" class="DEPENDS ON strategy BEING hybrid" > Admin</label> | |
| 141 | - <label class=special><input type="checkbox" name="profile_devel" class="DEPENDS ON strategy BEING hybrid" > Devel</label> | |
| 142 | - <label class=special><input type="checkbox" name="profile_science" class="DEPENDS ON strategy BEING hybrid" > Science</label> | |
| 143 | - <label class=special><input type="checkbox" name="profile_arts" class="DEPENDS ON strategy BEING hybrid" > Arts</label> | |
| 144 | - </div> | |
| 145 | - </fieldset> | |
| 146 | - <fieldset> | |
| 147 | - <legend>Your packages</legend> | |
| 148 | - <div> | |
| 149 | - <label>Packages list<textarea rows="2" cols="33" name="pkgs_list" id="pkgs_list"></textarea></label> | |
| 150 | - <label>Upload file<input type="file" id="pkgs_file" name="pkgs_file" size="18"/></label> | |
| 151 | - </div> | |
| 152 | - </fieldset> | |
| 153 | -<div style="text-align: right;"><input type="submit"></div> | |
| 154 | -</form> | |
| 155 | - | |
| 156 | - | |
| 157 | -</div><!-- id="advancedquery" --> | |
| 158 | - | |
| 159 | - <div id="navbar"> | |
| 160 | - <ul> | |
| 161 | - <li><a href="$url_base">Home</a></li> | |
| 162 | - <li><a href="$url_base/about">About</a></li> | |
| 163 | - <li><a href="$url_base/support">Support</a></li> | |
| 164 | - <li><a href="http://github.com/tassia/AppRecommender">Development</a></li> | |
| 165 | - </ul> | |
| 166 | - </div><!-- id="navbar" --> | |
| 167 | 147 | |
| 168 | 148 | </div><!-- id="header" --> |
| 169 | 149 | <div id="content"> | ... | ... |