Hello,
according to this post
(http://apache-wicket.1842946.n4.nabble.com/Overloaded-ClientProperties-isJavaEnabled-and-JavaScript-support-detection-td1889053.html#a1889053)
I'm wondering whether somebody got some problems with the java-enabled
property of his browser too. Using IE8 the
I still got no solution for the problem mentioned above.
I assume the detection of JavaScript with the following line of code does
not work for Firefox even if JavaScript support is enabled:
((WebClientInfo)Session.get().getClientInfo()).getProperties().isJavaEnabled();
This works for IE but
After migration to Wicket 1.5 I'm wondering why our tests with our own
IPageFactory implementation is not working anymore. In our tests we use the
following code ...
WicketTester tester = new WicketTester();
tester.getApplication().getSessionSettings().setPageFactory( new
FooPageFactory() );
But
Martin Grigorov-4 [via Apache Wicket]:
Indeed this is missed.
I'll create a ticket for it.
Thanks!
On Thu, Sep 29, 2011 at 8:05 AM, Dirk Forchel [hidden email]
/user/SendEmail.jtp?type=nodenode=3854567i=0 wrote:
After migration to Wicket 1.5 I'm wondering why our tests with our own
.
Dirk Forchel
Am 29.09.2011 09:40, schrieb Martin Grigorov-4 [via Apache Wicket]:
Put a breakpoint in your factory and see what it returns and why
PageProvider believes it is null ...
On Thu, Sep 29, 2011 at 9:34 AM, Dirk Forchel [hidden email]
/user/SendEmail.jtp?type=nodenode=3854689i=0
...
On Thu, Sep 29, 2011 at 9:34 AM, Dirk Forchel [hidden email]
/user/SendEmail.jtp?type=nodenode=3854689i=0 wrote:
Hi Martin,
thank you for your quick response ... indeed I have another problem
too ...
In our own BookmarkablePageFactoryTest I set up now the test
environment
After struggle for hours with a custom PageFactory implementation and the
WicketTester in Wicket 1.5 I finally figured out, that setting the flag
FLAG_WAS_CREATED_BOOKMARKABLE on a new created page solved our problems with
a new page instance and page redirection (see also
In Wicket 1.4 we used our custom RequestCycle and the onRuntimeException
method to add/change the exception handling. How do we change the exception
handling in Wicket 1.5?
The Migration Guide says:
Exception handling
In Wicket 1.4 it was needed to extend
What is the prefered way to replace removed HeaderContributors in Wicket 1.5?
The migration guide says:
Wicket 1.4:
public class MyPage extends WebPage {
public MyPage() {
add(HeaderContributor.forCss(AbstractCalendar.class,
assets/skins/sam/calendar.css));
}
}
becomes in Wicket 1.5:
After creating a quickstart I've noticed that this might not be a bug but
rather a problem with my application settings. I've got no problems with the
quickstart application and the test page running on Jetty. I let you know
what causes the problem.
--
View this message in context:
I've figured out, that this might be a problem with autodetecting the content
type of a FileResourceStream. If our application uses the development mode,
we use our own ResourceStreamLocator for loading resources from the source
path rather than the class path. This was working in Wicket 1.4
In our WebApplication we use a customized WebRequest which extends
ServletWebRequest.
@Override
protected WebRequest newWebRequest( final HttpServletRequest servletRequest,
final String filterPath )
{
return new FooServletWebRequest( servletRequest, filterPath );
}
In order to test some
Similiar to this post
(http://apache-wicket.1842946.n4.nabble.com/Enclosure-changes-in-1-5-tp3822819p3822819.html)
I've got the same error message using the enclosure-tag and a transparent
WebContainer. I’ve just converted some working 1.4.18 code to 1.5.2 and got
the same error:
Here the correct markup:
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/Enclosures-and-transparent-WebContainer-tp3935753p3939487.html
Sent from the Users forum mailing list archive at Nabble.com.
I've created a quickstart and a ticket in Jira (see
https://issues.apache.org/jira/browse/WICKET-4172).
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/Enclosures-and-transparent-WebContainer-tp3935753p3939556.html
Sent from the Users forum mailing list archive at
Based on the staticpages examples in Wicket 1.4 we used a
CapturingBookmarkablePageRequestTargetUrlCodingStrategy to capture requests
to a bookmarkable page with page parameters and respond with a 'static' page
afterwards. During the capture phase
Hi Martin,
do you mean the asemail package with the MailTemplate page? Unfortunately
this example is not visible live (see
http://www.wicket-library.com/wicket-examples/index.html). But I'm able to
run these examples locally with the latest checkout. But if you type in your
name into the input
Yes, but not on my local machine. Strange enough, only the Panel example
updates the name attribute correctly ...
Oh dear, I found the problem. My local IDE made the String name final. So
the PropertyModel could not update the value correctly. Now it works.
Cheers.
--
View this message in
With Wicket 1.4 we used the CapturingBookmarkablePageRequestTarget (and the
belonging CapturingBookmarkablePageRequestTargetUrlCodingStrategy) from the
static examples to capture the response of a page request and display
another page as result instead. I still don't know how to achieve the same
I know this example, but in my opinion this is not really the same use-case,
isn't it? Or I don't fully understand this example. The mailtemplate example
uses a link to generate an email (e.g. generated by the rendering of the
TemplateBaseOnPage) and replaces the content of the MultiLineLabel
Okay, this is the preferred way if I would have a link on the page, but I
have not. This is also the way like the DownloadLink works:
@Override
public void onClick()
{
...
getRequestCycle().scheduleRequestHandlerAfterCurrent(
Sorry for all the hassle. This sounds now obvious to me. Thank you for your
hint.
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/Capture-the-response-of-a-page-request-and-displays-another-page-as-result-tp4039468p4042521.html
Sent from the Users forum mailing list
Finally I've implemented my customized IRequestMapper
(CapturingRequestMapper). How can I contribute this little working example
to the wicket-examples?
--
View this message in context:
See https://issues.apache.org/jira/browse/WICKET-4228. Please check the
attached patch whether it works.
Locally it works the way intented.
Dirk Forchel
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/Capture-the-response-of-a-page-request-and-displays-another-page
Why is it important not to use RestartResponseException? In Wicket 1.4 it was
the preferred way to redirect to another (error) page e.g. in case of a
missing resource during construction time of a page.
--
View this message in context:
Our Wicket application is stateless and doesn't need a HttpSession (the
JSessionID is disabled by default for some SEO reasons for all requests). In
Wicket 1.4 we use our own CodingStrategy implementation to switch between
the Http/Https protocols if a secure annotation (RequireHttps) for a page
I'm not sure. But this is the comment within the source of the
HttpsConfig.class:
/**
* Sets whether or not a new session is created before redirecting from
{@code http} to {@code
* https}
* p
* BE VERY CAREFUL WHEN SETTING THIS VALUE TO {@code false}.
I know, that this setting tells Wicket when to create the HttpSession. And it
seems that if the HttpSession is created in the Https request, the created
Session is not visible to any Http request. In Wicket 1.4 we never switch
back to the Http protocol once the secure protocol is used. So probably
Similar to this topic
(http://apache-wicket.1842946.n4.nabble.com/Possible-AbstractAjaxBehavior-Bug-tp1867734p1867734.html)
I'm running into trouble adding a Behavior to a Component dynamically with
an Ajax request.
I have a test page for jQuery UI Effects similar to this example
I have a static list of pre-configured instances (my Effects). On the
page is a select box (a DropDownChoiceAbstractEffect component) which uses
this list of instances to select an effect. Within the onClick() method of
an additional AjaxLink, the WebMarkupContainer (effectContainer) is
updated
Yes, I mean Java's static. Actually it was not meant to re-use this list due
to concurrent requests. It's just a test page. But I've got it. I'll chance
the page and use new instances instead.
--
View this message in context:
Just a non-technical question. We're using Wicket 1.4.x and 1.5.x in
different projects and we're feeling quite confident (at least me) using
this framework. By the way, it might be not quite easy migrating an existing
wicket 1.4 project to wicket 1.5. But that's not the point.
I've noticed, that
Just a non-technical question. We're using Wicket 1.4.x and 1.5.x in
different projects and we're feeling quite confident (at least me) using
this framework. By the way, it might be not quite easy migrating an existing
wicket 1.4 project to wicket 1.5. But that's not the point.
I've noticed, that
Okay. Thank you both for the short explanation. I've got the feeling that
migrating an existing 1.5 project to Wicket 6 will be a pain. But obviously
it will not.
Cheers.
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/The-vision-of-Wicket-6-tp4437649p4438216.html
I've a qestion regarding ivy and wiQuery.
I'd like to use the wiQuery jars (wiquery-core and wiquery-jquery-ui) in the
same way I do with all the Wicket libraries. For example, a configuration
dependency for the Wicket core library in my project ivy.xml is written
like:
This means, ivy is
The sources are just for our IDE (Eclipse) to link these sources to the
binaries.
Because the wiquery repository is maven2 compatible, I've changed the
resolver configuration in my ivysettings.xml to ibiblio:
I assume only this resolver can downoad all jars (sources, docs) from the
repository if
I have a problem loading my fonts defined in my css file with the @font-face
css rule which allows me to download the fonts from my server.
Initally I define the rules in my css file the following way:
The css-file is references by a CssResourceReference and contributed to the
header with a
Thanks. I go for the 2nd approach and it seems to be working except the
access to static packages resources with an unknown file ending.
What did you mean with
The problem is that '..' escapes from the package name.
See
I'm wondering what is the preferred way to include static image resources to
my web application. Instead of having a directory like images in my root
web container (WEB-INF) with all the static images used in my application it
is advised (so far I can remember) to have a directory next to the
Similiar to this wiQuery example
http://wiquery-plugins-demo.appspot.com/demo/;jsessionid=-bDymblOPJUPu9QqdWv7ug?wicket:bookmarkablePage=:com.wiquery.plugins.demo.TestLinkEffectsPage
Hello,
I've a question regarding Fragements inside a TransparentWebMarkupContainer.
I've a base WebPage with a TransparentWebMarkupContainer to allow subclasses
register CSS classes on the body tag. If I add a Fragment to one of these
subsclasses, the markup of the Fragment is not found.
JIRA Issue https://issues.apache.org/jira/browse/WICKET-4545 with quickstart
created.
Thanks for the awkward hint and for the quick hack. I'll use a Panel
instead.
--
View this message in context:
Since we migrate our application to Wicket 1.5.6 some URLs from
BookmarkablePageLinks have duplicate segements for indicating a Shop and a
Language item from our persistence model. For indicating a Shop and Language
item we use our own ShopMapper and LanguageMapper (subclass of
I've created issue https://issues.apache.org/jira/browse/WICKET-4561.
Unfortunately I can't attach the quickstart since the JIRA server does
respond with an error message.
--
View this message in context:
Hi Martin,
attached you can find the quickstart application.
Thanks,
Dirk
Am 15.05.2012 10:39, schrieb Martin Grigorov-4 [via Apache Wicket]:
Thanks.
Send it directly to me. I'll attach it when Jira is OK.
On Tue, May 15, 2012 at 10:34 AM, Dirk Forchel [hidden email]
/user/SendEmail.jtp
Hi,
we have to use PIE (see http://css3pie.com/ http://css3pie.com/ ) to make
IE7 and IE8 capable of rendering CSS3 decoration features. We use a shared
resource mount to have an absolute URL in our CSS file (see also
https://issues.apache.org/jira/browse/WICKET-3046
Hi Martin,
actually I don't get it. How should I use
org.apache.wicket.request.UrlRenderer within a CSS file?
At the moment I prepare a quickstart application for our problem. Maybe this
helps to get an impression how it should work.
--
View this message in context:
I'm already familiar with the usual way how to mount bookmarkable pages and
how to handle page parameters. That's not the point. I don't wanna create
the URLs manually, because Wicket does already have the knowledge about all
mounted pages. The URLs might be change in the future (different
No more hints about generating bookmarkable page links with Wicket?
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/Using-and-creating-URLs-to-Bookmarkable-Pages-without-Wicket-Application-tp4652002p4652024.html
Sent from the Users forum mailing list archive at
Thank you for the hint. I just thought about using the WicketTester to mock
the behavior (RequestCycle) of getting the url for a mounted page.
--
View this message in context:
First of all, sorry for messing up the Core Developer Forum with my question
as well.
By the way, have a look at issue
https://issues.apache.org/jira/browse/WICKET-4776 first.
I've adapted the solution to preserve the port and the protocol in the
UrlRender in our UrlRender subclass and at the
Hallo Sven,
I doubt it. I don't wanna blame the HttpsMapper as the mapping is done in
the usual way as RootRequestMapper:
Application#init()
There is no magic and there were no changes at all. Since we upgraded our
application from Wicket 1.5.5 to Wicket 1.5.8 and/or Wicket 6 (NOTE: we have
the
Okay, I'll try out the change in a couple of minutes and give you a feedback.
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/UrlRenderer-renders-wrong-HTTPS-links-tp4653059p4653100.html
Sent from the Users forum mailing list archive at Nabble.com.
Hi Sven,
it works!!! Yep. You safed my day ... almost ;-)
Dirk
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/UrlRenderer-renders-wrong-HTTPS-links-tp4653059p4653104.html
Sent from the Users forum mailing list archive at Nabble.com.
Here a short example with two Pages (a kind of overview page and a
detailed view page) how it could work:
e.g. in OverviewPage.java:
in DetailedViewPage.java:
--
View this message in context:
Sorry, I did not read your question carefully. Yes my suggestion does not
work with BookmarkablePageLinks.
But Martin has given you already the right solution.
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/Using-PageReference-for-a-back-link-tp4653212p4653257.html
We have a mutli-language Application where Button values are rendered with
wrong and escaped Strings. Therefore our Button components have a default
Model which property is used to set the value attribute.
For example in French, the default Model String of a specific button is S'
abonner but the
Hallo,
I'd like to get an hint how to provide the following URLs. What is the
preferred way to improve our existing URLs?
We need search-friendly URLs by naming them with clear keywords.
For example for product pages the current URL looks like:
http://localhost:8080/product.html?product=1234
This
Sorry for the Igor, Martin.
Anyway, thank you for your help.
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/MounterMapper-and-optional-parameters-tp4655372p4655384.html
Sent from the Users forum mailing list archive at Nabble.com.
Concerning Wicket 1.5/6:
I've mounted a page for example with a mount path like product.html and
with a query string (PageParameter) like product.html?product=1234. This
is my old mounting path which has already been indexed by Google.
The new mounting path for the same page will look different,
Hm, I already thought about that. But I miss the link between the old mounted
pages and the new pages. I mean I have to mount a pair of page classes
though.
mountPage(product.html, LegacyProductPage.class);
mountPage(product/#{product_name}/${product}, ProductPage.class)
And in the new Mapper
You don't need to mountPage(TheLegacyPage) - it wont be used anyway.
Yes, you are right. There is actually no need to do this.
But I don't have a glue how to check whether the request URL is an obsolete
one or not AND how to map the old parameters to the new parameters. So I
thought, having
Sounds to complicated. Then I prefer the old fashioned way like this ...
Wicket generates the new Url based on a passed in Product. I don't have to
bother about .html ending and segement sizes and so on ...
mountPage(product.html, LegacyProductPage.class);
Hi,
I've a problem with my optional parameter and encoded Umlauts.
My example page is mapped with the MountedMapper on
/landing/#{seoString}/${context}, where as seoString is the optional
parameter and context is the required parameter.
Bookmarkable page links are generated with the correct URL,
Can give me a hint in which class the encoding for this redirect is done?
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/REDIRECT-TO-BUFFER-and-Url-encoding-problem-with-Umlauts-tp4657840p4657844.html
Sent from the Users forum mailing list archive at Nabble.com.
Seems to be not a problem with Wicket but rather with Tomcat. The requestURI
is not encoded correctly (see below).
target Url: landing/M%C3%A4nner/men.html
redirect_to_buffer targetUrl: landing/M%C3%A4nner/men.html
targetUrl2: landing/M%C3%A4nner/men.html?1
storeBufferedResponse:
Heureka, I found the solution by myself. I changed the URI encoding in my
server.xml and all works fine:
Connector port=8080 URIEncoding=UTF8/
--
View this message in context:
For security reasons we've added a filter to our web application which
invalidates session if the session ID is exposed in the URL (disable
JSessionID URL encoding). We only accept HttpSession creation if the user
allows cookies. But this may be a problem for web crawlers (e.g. Google
bot), as
A simple quickstart application running with Wicket 6.8.0 and Jetty and two
mounted pages (stateless?) do not trigger the problem. It might be more
difficult to figure out what causes the redirect. Any hint?
--
View this message in context:
Unfortunately I can not build the package. Any help would be appreciated.
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-surefire-plugin:2.12.2:test (default-test) on
project wicket-core: There are test failures.
[ERROR]
[ERROR] Please refer to
I found the solution by myself ...
mvn clean -DskipTests package does the job on my Windows system
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/REDIRECT-TO-BUFFER-render-strategy-and-Wicket-6-8-0-tp4658991p4659009.html
Sent from the Users forum mailing list
Hi Martin, I could pinpoint the commit which changed the behavior in our
application:
git.exe bisect bad
34f43642195058f375d161dbb7cec58b40711423 is the first bad commit
commit 34f43642195058f375d161dbb7cec58b40711423
Author: Martin Tzvetanov Grigorov mgrigo...@apache.org
Date: Fri Apr 19
Here the failure trace:
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:92)
at org.junit.Assert.assertTrue(Assert.java:43)
at org.junit.Assert.assertTrue(Assert.java:54)
at
I reckon WICKET-5083 is a bugfix for wrong rendered URLs (stateful pages were
rendered without a page version number) which in our case was correct but
just as a mistake. It seems, that our pages are stateful and therefore get
the page version number (page id ?x) attached. As I described above, in
You mean setStatelessHint(true) should be enough to simulate that it is
stateless (and not setStatelessHint(false)), do you?
Actually we didn't care about whether a page is stateless or not as long as
they are bookmarkable.
After a while we've noticed, that stateful pages (with the page version
Actually I don't see any reason why to redirect for stateless pages, but
browsing the source code I found that the default WePageRenderer returns
true for
org.apache.wicket.request.handler.render.PageRenderer.enableRedirectForStatelessPage().
Should I override this method as well to disable the
With the fixed bug of WICKET-5140 the public method
Component#clearOriginalDestination() has been added which uses the private
method RestartResponseAtInterceptPageException.clearOriginalDestination().
I have no glue how to use this public method as we use the
AuthenticatedWebApplication from the
Any idea? Any hint? Or should I add clearInterceptData() to the constructor
of each Page class with authorized access? A short description in source
code would be helpful.
--
View this message in context:
I've a question regarding this issue
https://issues.apache.org/jira/browse/WICKET-5083 and
Commit:34f43642195058f375d161dbb7cec58b40711423. This commit changed the
behavior of our application (I used git:bisect to pinpoint the changes
made). From this revision on, our application does not behave
To be honest, I'm a bit confused. I reckon this has to do with the redirect
from http://localhost:8080/ to http://localhost:8080/de/home. If I call de
URL http://localhost:8080/de/home directly all works as expected and no
exception is thrown. By the way my Home page is stateless and bookmarkable.
Unfortunately not. It's not that easy to create a quickstart without using
all the additional stuff we're currently using. I think of our persistence
framework etc.
--
View this message in context:
We've added a TransactionRequestCycleListener (extends
AbstractRequestCycleListener). This class handles transactions mainly like
this:
@Override
public void onRequestHandlerResolved(final RequestCycle cycle, final
IRequestHandler handler)
{
LOGGER.debug( start transaction --- +
So, I've started to figure out which of our components tries to access our
Model in #onInitialize. It ended up that almost every component does. This
means, that I have to re-write all these components which might be very time
consuming. I'm wondering why a request with a redirect has to
I'm currently try to add some kind of microdata
(http://en.wikipedia.org/wiki/Microdata_%28HTML%29) to our project. Exists a
wicketstuff project dealing with this problem?
What is the preferred way to add valueless attributes to HTML tags? E.g. I
have to add the following attributes to the body
Martin Grigorov-4 wrote
Hi,
On Thu, Aug 29, 2013 at 3:29 PM, Dirk Forchel lt;
dirk.forchel@
gt;wrote:
I'm currently try to add some kind of microdata
(http://en.wikipedia.org/wiki/Microdata_%28HTML%29) to our project.
Exists a
wicketstuff project dealing with this problem?
I'm
Hi,
I'm a newbie to all the Google Maps API stuff and I've noticed that a
wicket-stuff project (gmap3) could help me to show a Google Map with a list
of shops for a known business company. I found an example on this french
page http://www.bebecash.com/Magasins/ which is similar to our tasks. And
Hi Martin,
thanks for your answer. Actually, all of our stores are persistent in our
database. These are about 300 and I think it is a good idea to pre-compute
all the coordinates (GLatLng) with a cronjob. Afterwards I would like to
show only a part of these stores which fit to a certain specific
OK, sounds reasonable. Is there a way to return only these stores with their
coordinates (GLatLng) which fit into a special bound. I mean, the user types
in a region or postcode and wants to so only thouse stores which fit into
this bound. How could I perform this?
Thanks in advance.
--
View
Hi Martin,
there is still an open issue with showing the marker for all stores and an
appropriate info window. Actually I wanna do something like the following
Javascript code but in Java:
// Init a new map
var map = new GMap2(document.getElementById('map'));
map.addControl(new
Yes, I've already tried this, but unfortunately it was not working. But I
found the problem by myself.
My first try (not working):
GMarker marker = new GMarker(new GMarkerOptions(map, location, click
here));
marker.addListener(GEvent.click, getClickHandler());
I mount two different resources almost the same way to figure out how it
works. First of all a context relative resource (the dotclear_tmp.png image
is relative to the context root in my WEB-INF container) and second a
dynamically created image resource (see below). But in my panel the src
And finally I've added two Image components to the Panel (this works as
expected).
In my Panel.class:
add( new Image(img1, new SharedResourceReference(dotclear) ) );
add( new Image(img2, new PlaceholderImageResourceReference() ) );
HTML:
Rendered URLs:
In addition we use the placeholder
No comment? No idea? Probably another solution?
Thanks
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/Struggling-with-ContextRelativeResource-RenderedDynamicImageResource-and-SharedResources-tp4662190p4662219.html
Sent from the Users forum mailing list archive at
Yes, I know this article and based on this one I wrote the
PlaceholderImageResourceReference class. And it works as expected. I mean I
can add this resource reference to each component I want.
Panel:
add( new Image(placeholderImg, new PlaceholderImageResourceReference() )
);
Markup:
But this
Okay. I know, but their is no need for an additional parameter. I want to
generate always the same image (a 1x1px PNG with a transparent background).
So I don't see the need for a parameter.
But I try to prepare a quickstart.
--
View this message in context:
No, actually not. We've got a complete layout for our web applications from
an external design company and they use this CSS+static image resource thing
quite often. And, as I have mentioned before, we have two Wicket web
applications running in the same container. One of them on the root context
Did anybody try to run my attached quickstart application and can explain why
the additional LocaleMapper changes the path?
--
View this message in context:
Hi Ernesto,
after a couple of weeks (months) I still haven't found a solution. Any idea?
Thanks for your helping hand.
--
View this message in context:
Hi,
after I have changed the RenderStrategy from REDIRECT_TO_BUFFER to
REDIRECT_TO_RENDER one of our tests fails. Actually I could not figure out
why the markup is not found although it is created, but the test fails with
a MarkupNotFoundException. I'm wondering why?
Here is the stacktrace:
Yes I can, the quickstart is already attached (see above).
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/RenderStrategy-REDIRECT-TO-RENDER-lets-fail-Test-with-startComponentInPage-tp4667101p4667103.html
Sent from the Users forum mailing list archive at Nabble.com.
1 - 100 of 130 matches
Mail list logo