MOAR layout upgrading

git-svn-id: http://yolanda.mister-muffin.de/svn@366 7eef14d0-6ed0-489d-bf55-20463b2d70db
This commit is contained in:
erlehmann 2008-08-12 21:10:18 +00:00
parent 025dd1bc61
commit b0a54a6e64
12 changed files with 188 additions and 98 deletions

View file

@ -1,7 +1,7 @@
from mako import runtime, filters, cache from mako import runtime, filters, cache
UNDEFINED = runtime.UNDEFINED UNDEFINED = runtime.UNDEFINED
_magic_number = 2 _magic_number = 2
_modified_time = 1218437120.3345709 _modified_time = 1218555872.226696
_template_filename=u'/home/nils/src/yolanda/trunk/yolanda/templates/xhtml/base.mako' _template_filename=u'/home/nils/src/yolanda/trunk/yolanda/templates/xhtml/base.mako'
_template_uri=u'/xhtml/base.mako' _template_uri=u'/xhtml/base.mako'
_template_cache=cache.Cache(__name__, _modified_time) _template_cache=cache.Cache(__name__, _modified_time)
@ -28,7 +28,7 @@ def render_body(context,**pageargs):
context.write(u'"\n />\n\n <title>\n Yolanda - ') context.write(u'"\n />\n\n <title>\n Yolanda - ')
# SOURCE LINE 106 # SOURCE LINE 106
context.write(unicode(self.title())) context.write(unicode(self.title()))
context.write(u'\n </title>\n\n</head>\n\n<body>\n\n <div id="heading-box">\n <h1>\n ') context.write(u'\n </title>\n\n</head>\n\n<body>\n\n <div id="heading">\n <h1>\n ')
# SOURCE LINE 115 # SOURCE LINE 115
context.write(unicode(self.heading())) context.write(unicode(self.heading()))
context.write(u'\n </h1>\n </div>\n\n ') context.write(u'\n </h1>\n </div>\n\n ')
@ -36,10 +36,10 @@ def render_body(context,**pageargs):
context.write(unicode(self.search())) context.write(unicode(self.search()))
context.write(u'\n\n ') context.write(u'\n\n ')
# SOURCE LINE 121 # SOURCE LINE 121
context.write(unicode(self.tagcloud())) context.write(unicode(self.login()))
context.write(u'\n\n ') context.write(u'\n\n ')
# SOURCE LINE 123 # SOURCE LINE 123
context.write(unicode(self.login())) context.write(unicode(self.tagcloud()))
context.write(u'\n\n ') context.write(u'\n\n ')
# SOURCE LINE 125 # SOURCE LINE 125
context.write(unicode(self.body())) context.write(unicode(self.body()))
@ -69,7 +69,7 @@ def render_search(context):
try: try:
h = context.get('h', UNDEFINED) h = context.get('h', UNDEFINED)
# SOURCE LINE 5 # SOURCE LINE 5
context.write(u'\n <div id="search-box">\n\n ') context.write(u'\n <div id="search">\n\n ')
# SOURCE LINE 8 # SOURCE LINE 8
context.write(unicode(h.form(h.url_for('search_results'), method='get'))) context.write(unicode(h.form(h.url_for('search_results'), method='get')))
context.write(u'\n\n ') context.write(u'\n\n ')
@ -91,7 +91,7 @@ def render_tagcloud(context):
context.caller_stack.push_frame() context.caller_stack.push_frame()
try: try:
# SOURCE LINE 55 # SOURCE LINE 55
context.write(u'\n <div id="tagcloud-box">\n\n <h1>Tag cloud</h1>\n\n <a class="tag4+">Proin</a>\n <a class="tag16+">lectus</a>\n <a class="tag4+">orci</a>\n <a class="tag4+">venenatis</a>\n <a class="tag16+">pharetra</a>\n <a class="tag4+">egestas</a>\n <a class="tag16+">id</a>\n <a class="tag4+">tincidunt</a>\n <a class="tag16+">vel</a>\n <a class="tag16+">eros</a>\n <a class="tag4+">Integer</a>\n <a class="tag4+">risus</a>\n <a class="tag4+">velit</a>\n <a class="tag16+">facilisis</a>\n <a class="tag16+">eget</a>\n <a class="tag4+">viverra</a>\n <a class="tag4+">et</a>\n <a class="tag4+">leo</a>\n <a class="tag16+">Suspendisse</a>\n <a class="tag16+">potenti</a>\n <a class="tag16+">Phasellus</a>\n <a class="tag16+">auctor</a>\n <a class="tag16+">enim</a>\n <a class="tag4+">eget</a>\n <a class="tag16g+">sem</a>\n\n </div>\n') context.write(u'\n <div id="tagcloud">\n\n <h1>Popular tags</h1>\n\n <a href="" class="tag6">Proin</a>\n <a href="" class="tag5">lectus</a>\n <a href="" class="tag2">orci</a>\n <a href="" class="tag6">venenatis</a>\n <a href="" class="tag5">pharetra</a>\n <a href="" class="tag6">egestas</a>\n <a href="" class="tag1">id</a>\n <a href="" class="tag6">tincidunt</a>\n <a href="" class="tag5">vel</a>\n <a href="" class="tag3">eros</a>\n <a href="" class="tag6">Integer</a>\n <a href="" class="tag6">risus</a>\n <a href="" class="tag6">velit</a>\n <a href="" class="tag2">facilisis</a>\n <a href="" class="tag4">eget</a>\n <a href="" class="tag5">viverra</a>\n <a href="" class="tag6">et</a>\n <a href="" class="tag6">leo</a>\n <a href="" class="tag1">Suspendisse</a>\n <a href="" class="tag3">potenti</a>\n <a href="" class="tag5">Phasellus</a>\n <a href="" class="tag4">auctor</a>\n <a href="" class="tag6">enim</a>\n <a href="" class="tag3">eget</a>\n <a href="" class="tag4">sem</a>\n\n </div>\n')
return '' return ''
finally: finally:
context.caller_stack.pop_frame() context.caller_stack.pop_frame()
@ -102,7 +102,7 @@ def render_login(context):
try: try:
h = context.get('h', UNDEFINED) h = context.get('h', UNDEFINED)
# SOURCE LINE 40 # SOURCE LINE 40
context.write(u'\n <div id="login-box">\n\n <h1>Login to upload videos</h1>\n\n ') context.write(u'\n <div id="login">\n\n <h1>To upload videos, login.</h1>\n\n ')
# SOURCE LINE 45 # SOURCE LINE 45
context.write(unicode(h.form(h.url_for('account_login'), method='post'))) context.write(unicode(h.form(h.url_for('account_login'), method='post')))
context.write(u'\n\n ') context.write(u'\n\n ')

View file

@ -1,7 +1,7 @@
from mako import runtime, filters, cache from mako import runtime, filters, cache
UNDEFINED = runtime.UNDEFINED UNDEFINED = runtime.UNDEFINED
_magic_number = 2 _magic_number = 2
_modified_time = 1218428536.96173 _modified_time = 1218565522.49384
_template_filename='/home/nils/src/yolanda/trunk/yolanda/templates/xhtml/index.mako' _template_filename='/home/nils/src/yolanda/trunk/yolanda/templates/xhtml/index.mako'
_template_uri='/xhtml/index.mako' _template_uri='/xhtml/index.mako'
_template_cache=cache.Cache(__name__, _modified_time) _template_cache=cache.Cache(__name__, _modified_time)
@ -29,7 +29,7 @@ def render_body(context,**pageargs):
# SOURCE LINE 5 # SOURCE LINE 5
context.write(u'\n\n') context.write(u'\n\n')
# SOURCE LINE 9 # SOURCE LINE 9
context.write(u'\n\n<h1>Welcome to Yolanda</h1>\n\n<h2>WTF Is This Shit ?</h2>\n\n<p>\nMauris et dolor. Suspendisse potenti. Proin diam augue, semper vitae, varius et, viverra id, felis. Praesent lacus. Pellentesque tempor. Suspendisse viverra placerat tortor. Maecenas justo. Aenean justo ipsum, luctus ut, volutpat laoreet, vehicula in, libero. Morbi volutpat. Cras gravida. \n</p>\n\n<p>\nSed non ipsum. Maecenas justo. Etiam fermentum. Praesent scelerisque. Quisque malesuada nulla sed pede volutpat pulvinar. Curabitur tincidunt tellus nec purus. Praesent a lacus vitae turpis consequat semper. Aenean turpis ipsum, rhoncus vitae, posuere vitae, euismod sed, ligula. Praesent semper, neque vel condimentum hendrerit, lectus elit pretium ligula, nec consequat nisl velit at dui. Nam malesuada sapien eu nibh. \n</p>\n\n<h2>Lol Awesome !</h2>\n\n<p>\nEtiam fermentum. Quisque arcu ante, cursus in, ornare quis, viverra ut, justo. Nulla sed lacus. Morbi turpis arcu, egestas congue, condimentum quis, tristique cursus, leo. Vestibulum non arcu a ante feugiat vestibulum. Quisque facilisis, urna sit amet pulvinar mollis, purus arcu adipiscing velit, non condimentum diam purus eu massa. Nulla sagittis condimentum ligula. Quisque dictum quam vel neque. Nam id neque. Fusce venenatis ligula in pede. \n</p>\n\n') context.write(u'\n\n<h1>An introduction to Yolanda</h1>\n\n<h2>What exactly is this ?</h2>\n\n<p>\nYolanda is a <em>free software video platform</em> and, as far as we (the developers) know, the <em>only</em> one that doesn\'t rely on proprietary browser extensions. Instead, we only use <em>open standards</em>, namely <a href="">XHTML</a>, <a href="">CSS</a> and <a href="">JavaScript</a>; Videos are served in <a href="">Ogg Theora</a> format. Since Yolanda is <a href="">free software</a>, you can <a href="">download the source code</a> to adapt, modify and extend it.\n</p>\n\n<h2>What do I need to play videos ?</h2>\n\n<p>\nIf you use a recent GNU/Linux Desktop distribution such as Ubuntu, no additional software is required. Users of inferior operating systems and arcane desktop environments are advised to install the <a href="">VLC media player</a> web plugin (Links and Lynx users should use VLC\'s aalib or libcaca output). As soon as browsers support the XHTML 5 &lt;video&gt; element, we will use it, which means that no additional software will be required.\n</p>\n\n<h2>How do I upload videos ?</h2>\n<p>\nSed non ipsum. Maecenas justo. Etiam fermentum. Praesent scelerisque. Quisque malesuada nulla sed pede volutpat pulvinar. Curabitur tincidunt tellus nec purus. Praesent a lacus vitae turpis consequat semper. Aenean turpis ipsum, rhoncus vitae, posuere vitae, euismod sed, ligula. Praesent semper, neque vel condimentum hendrerit, lectus elit pretium ligula, nec consequat nisl velit at dui. Nam malesuada sapien eu nibh. \n</p>\n\n<h2>Why don\'t you use Flash / Java / $foo ?</h2>\n<p>\nProbably because it is not <a href="">free (as in freedom)</a>. If you are serious about your suggestion, please file a ticket in our <a href="">bug tracker</a>.\n</p>\n\n')
return '' return ''
finally: finally:
context.caller_stack.pop_frame() context.caller_stack.pop_frame()

View file

@ -1,7 +1,7 @@
from mako import runtime, filters, cache from mako import runtime, filters, cache
UNDEFINED = runtime.UNDEFINED UNDEFINED = runtime.UNDEFINED
_magic_number = 2 _magic_number = 2
_modified_time = 1218464716.3410029 _modified_time = 1218555558.912719
_template_filename='/home/nils/src/yolanda/trunk/yolanda/templates/xhtml/results.mako' _template_filename='/home/nils/src/yolanda/trunk/yolanda/templates/xhtml/results.mako'
_template_uri='/xhtml/results.mako' _template_uri='/xhtml/results.mako'
_template_cache=cache.Cache(__name__, _modified_time) _template_cache=cache.Cache(__name__, _modified_time)
@ -80,10 +80,10 @@ def render_heading(context):
try: try:
c = context.get('c', UNDEFINED) c = context.get('c', UNDEFINED)
# SOURCE LINE 7 # SOURCE LINE 7
context.write(u'\n 9001 results for "') context.write(u'\n There are over 9000 videos matching "')
# SOURCE LINE 8 # SOURCE LINE 8
context.write(unicode(c.query)) context.write(unicode(c.query))
context.write(u'":\n') context.write(u'".\n')
return '' return ''
finally: finally:
context.caller_stack.pop_frame() context.caller_stack.pop_frame()

View file

@ -13,17 +13,54 @@ Purpose of this file is to provide decoration, such as:
*/ */
a a
{ {
color: #88D9F3; color: #88D9F3;
text-decoration: none; text-decoration: none;
} }
a:hover a:hover
{ {
text-decoration: underline; text-decoration: underline;
}
a.tag1
{
font-size: 1.5em;
line-height: 1.25em;
} }
body { a.tag2
{
font-size: 1.4em;
line-height: 1.2em;
}
a.tag3
{
font-size: 1.3em;
line-height: 1.15em;
}
a.tag4
{
font-size: 1.2em;
line-height: 1.25em;
}
a.tag5
{
font-size: 1.1em;
line-height: 1.05em;
}
a.tag6
{
font-size: 1em;
line-height: 1em;
}
body
{
background-color: #000000; background-color: #000000;
color: #E5E5E5; color: #E5E5E5;
font-size: 12px; font-size: 12px;
@ -62,20 +99,20 @@ h1
h2 h2
{ {
font-size: 1.25em; font-size: 1.4em;
line-height: 1.125em; line-height: 1.2em;
} }
h3 h3
{ {
font-size: 1.125em; font-size: 1.3em;
line-height: 1.0625em; line-height: 1.15em;
} }
input input
{ {
background-color: #E5E5E5; background-color: #E5E5E5;
color: #131313; color: #131313;
border-color: #363636; border-color: #363636;
border-style: solid; border-style: solid;
} }
@ -113,6 +150,11 @@ ol#results
font-weight: bold; font-weight: bold;
} }
p
{
line-height: 1.4em;
}
q:before q:before
{ {
content: open-quote; content: open-quote;
@ -132,22 +174,22 @@ ul#queries
{ {
font-size: 1.5em; font-size: 1.5em;
line-height: 1.25em; line-height: 1.25em;
text-transform: uppercase; text-transform: uppercase;
} }
ul#queries li#important ul#queries li#important
{ {
list-style-image:url(/images/tango/16x16/emblems/emblem-important.png) list-style-image: url(/images/tango/16x16/emblems/emblem-important.png)
} }
ul#queries li#new ul#queries li#new
{ {
list-style-image:url(/images/tango/16x16/actions/document-new.png) list-style-image: url(/images/tango/16x16/actions/document-new.png)
} }
ul#queries li#popular ul#queries li#popular
{ {
list-style-image:url(/images/tango/16x16/emblems/emblem-favorite.png) list-style-image: url(/images/tango/16x16/emblems/emblem-favorite.png)
} }
ul#queries li a ul#queries li a
@ -165,10 +207,10 @@ ul#queries
font-family: monospace; font-family: monospace;
} }
#heading-box, #heading,
#login-box, #login,
#search-box, #search,
#tagcloud-box #tagcloud
{ {
background-color: #131313; background-color: #131313;
border-color: #363636; border-color: #363636;

View file

@ -4,7 +4,7 @@ Yolanda default stylesheet colors (using tango color palette)
This file is licensed under the WTF Public License This file is licensed under the WTF Public License
Purpose of this file is to import color, decoration and structure stylesheets. Purpose of this file is to import reset, decoration and structure stylesheets.
*/ */
@import "reset.css"; @import "reset.css";

View file

@ -20,6 +20,26 @@ body
min-width: 46em; min-width: 46em;
} }
form
{
margin-bottom: 0.5em;
}
h1
{
margin-bottom: 0.33em; /* roughly 0.5em of relative to base */
}
h2
{
margin-bottom: 0.35em; /* roughly 0.5em of relative to base */
}
h3
{
margin-bottom: 0.38em; /* roughly 0.5em of relative to base */
}
h1, h1,
h2, h2,
h3 h3
@ -48,38 +68,58 @@ input
width: 9.5em; width: 9.5em;
} }
ol#results ol
{ {
/* compensate for list element margin */
margin-left: -1em;
text-align: center;
} }
ol#results li ol#results
{ {
display: inline-block; /* compensate for list element margin */
margin-left: 1em; margin-left: -1em;
margin-bottom: 1em; text-align: center;
width: 216px;
} }
ol#results li img ol#results li
{ {
border-width: 1px; display: inline-block;
margin-left: 1em;
margin-bottom: 1em;
width: 216px;
} }
ol#results li a.title ol#results li img
{ {
display: block; border-width: 1px;
height: 1em; }
overflow: hidden;
}
ul#queries ol#results li a.title
{
display: block;
height: 1em;
overflow: hidden;
}
ul
{ {
padding-left: 0.5em;
} }
ul#badges
{
text-align: center;
}
#badges li
{
display: inline-block;
margin-left: 0.5em;
margin-right: 0.5em;
}
ul#queries
{
padding-left: 0.5em;
}
/* classes */ /* classes */
/* ids */ /* ids */
@ -87,24 +127,26 @@ ul#queries
/* sidebar stuff */ /* sidebar stuff */
#copyright, #copyright,
#heading-box, #heading,
#login-box, #login,
#search-box, #search,
#tagcloud-box #tagcloud
{ {
border-width: 1px; border-width: 1px;
clear: right; clear: right;
margin-bottom: 1em; margin-bottom: 1em;
padding: 1em; padding: 1em;
text-align: justify;
} }
#heading-box, #heading,
#login-box, #login,
#search-box, #search,
#tagcloud-box #tagcloud
{ {
float: right; float: right;
width: 25em; width: 25em;
padding-bottom: 0.5em;
} }
#results #results

View file

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%def name="search()"> <%def name="search()">
<div id="search-box"> <div id="search">
${h.form(h.url_for('search_results'), method='get')} ${h.form(h.url_for('search_results'), method='get')}
@ -38,9 +38,9 @@
</%def> </%def>
<%def name="login()"> <%def name="login()">
<div id="login-box"> <div id="login">
<h1>Login to upload videos</h1> <h1>To upload videos, login.</h1>
${h.form(h.url_for('account_login'), method='post')} ${h.form(h.url_for('account_login'), method='post')}
@ -53,35 +53,35 @@
</%def> </%def>
<%def name="tagcloud()"> <%def name="tagcloud()">
<div id="tagcloud-box"> <div id="tagcloud">
<h1>Tag cloud</h1> <h1>Popular tags</h1>
<a class="tag4+">Proin</a> <a href="" class="tag6">Proin</a>
<a class="tag16+">lectus</a> <a href="" class="tag5">lectus</a>
<a class="tag4+">orci</a> <a href="" class="tag2">orci</a>
<a class="tag4+">venenatis</a> <a href="" class="tag6">venenatis</a>
<a class="tag16+">pharetra</a> <a href="" class="tag5">pharetra</a>
<a class="tag4+">egestas</a> <a href="" class="tag6">egestas</a>
<a class="tag16+">id</a> <a href="" class="tag1">id</a>
<a class="tag4+">tincidunt</a> <a href="" class="tag6">tincidunt</a>
<a class="tag16+">vel</a> <a href="" class="tag5">vel</a>
<a class="tag16+">eros</a> <a href="" class="tag3">eros</a>
<a class="tag4+">Integer</a> <a href="" class="tag6">Integer</a>
<a class="tag4+">risus</a> <a href="" class="tag6">risus</a>
<a class="tag4+">velit</a> <a href="" class="tag6">velit</a>
<a class="tag16+">facilisis</a> <a href="" class="tag2">facilisis</a>
<a class="tag16+">eget</a> <a href="" class="tag4">eget</a>
<a class="tag4+">viverra</a> <a href="" class="tag5">viverra</a>
<a class="tag4+">et</a> <a href="" class="tag6">et</a>
<a class="tag4+">leo</a> <a href="" class="tag6">leo</a>
<a class="tag16+">Suspendisse</a> <a href="" class="tag1">Suspendisse</a>
<a class="tag16+">potenti</a> <a href="" class="tag3">potenti</a>
<a class="tag16+">Phasellus</a> <a href="" class="tag5">Phasellus</a>
<a class="tag16+">auctor</a> <a href="" class="tag4">auctor</a>
<a class="tag16+">enim</a> <a href="" class="tag6">enim</a>
<a class="tag4+">eget</a> <a href="" class="tag3">eget</a>
<a class="tag16g+">sem</a> <a href="" class="tag4">sem</a>
</div> </div>
</%def> </%def>
@ -110,7 +110,7 @@
<body> <body>
<div id="heading-box"> <div id="heading">
<h1> <h1>
${self.heading()} ${self.heading()}
</h1> </h1>
@ -118,10 +118,10 @@
${self.search()} ${self.search()}
${self.tagcloud()}
${self.login()} ${self.login()}
${self.tagcloud()}
${self.body()} ${self.body()}
<div id="copyright"> <div id="copyright">

View file

@ -8,21 +8,27 @@
Welcome to Yolanda, a place for people who hate Adobe Flash. Welcome to Yolanda, a place for people who hate Adobe Flash.
</%def> </%def>
<h1>Welcome to Yolanda</h1> <h1>An introduction to Yolanda</h1>
<h2>WTF Is This Shit ?</h2> <h2>What exactly is this ?</h2>
<p> <p>
Mauris et dolor. Suspendisse potenti. Proin diam augue, semper vitae, varius et, viverra id, felis. Praesent lacus. Pellentesque tempor. Suspendisse viverra placerat tortor. Maecenas justo. Aenean justo ipsum, luctus ut, volutpat laoreet, vehicula in, libero. Morbi volutpat. Cras gravida. Yolanda is a <em>free software video platform</em> and, as far as we (the developers) know, the <em>only</em> one that doesn't rely on proprietary browser extensions. Instead, we only use <em>open standards</em>, namely <a href="">XHTML</a>, <a href="">CSS</a> and <a href="">JavaScript</a>; Videos are served in <a href="">Ogg Theora</a> format. Since Yolanda is <a href="">free software</a>, you can <a href="">download the source code</a> to adapt, modify and extend it.
</p> </p>
<h2>What do I need to play videos ?</h2>
<p>
If you use a recent GNU/Linux Desktop distribution such as Ubuntu, no additional software is required. Users of inferior operating systems and arcane desktop environments are advised to install the <a href="">VLC media player</a> web plugin (Links and Lynx users should use VLC's aalib or libcaca output). As soon as browsers support the XHTML 5 &lt;video&gt; element, we will use it, which means that no additional software will be required.
</p>
<h2>How do I upload videos ?</h2>
<p> <p>
Sed non ipsum. Maecenas justo. Etiam fermentum. Praesent scelerisque. Quisque malesuada nulla sed pede volutpat pulvinar. Curabitur tincidunt tellus nec purus. Praesent a lacus vitae turpis consequat semper. Aenean turpis ipsum, rhoncus vitae, posuere vitae, euismod sed, ligula. Praesent semper, neque vel condimentum hendrerit, lectus elit pretium ligula, nec consequat nisl velit at dui. Nam malesuada sapien eu nibh. Sed non ipsum. Maecenas justo. Etiam fermentum. Praesent scelerisque. Quisque malesuada nulla sed pede volutpat pulvinar. Curabitur tincidunt tellus nec purus. Praesent a lacus vitae turpis consequat semper. Aenean turpis ipsum, rhoncus vitae, posuere vitae, euismod sed, ligula. Praesent semper, neque vel condimentum hendrerit, lectus elit pretium ligula, nec consequat nisl velit at dui. Nam malesuada sapien eu nibh.
</p> </p>
<h2>Lol Awesome !</h2> <h2>Why don't you use Flash / Java / $foo ?</h2>
<p> <p>
Etiam fermentum. Quisque arcu ante, cursus in, ornare quis, viverra ut, justo. Nulla sed lacus. Morbi turpis arcu, egestas congue, condimentum quis, tristique cursus, leo. Vestibulum non arcu a ante feugiat vestibulum. Quisque facilisis, urna sit amet pulvinar mollis, purus arcu adipiscing velit, non condimentum diam purus eu massa. Nulla sagittis condimentum ligula. Quisque dictum quam vel neque. Nam id neque. Fusce venenatis ligula in pede. Probably because it is not <a href="">free (as in freedom)</a>. If you are serious about your suggestion, please file a ticket in our <a href="">bug tracker</a>.
</p> </p>

View file

@ -5,7 +5,7 @@
</%def> </%def>
<%def name="heading()"> <%def name="heading()">
9001 results for "${c.query}": There are over 9000 videos matching "${c.query}".
</%def> </%def>
<%def name="results_listing(results)"> <%def name="results_listing(results)">