Hi Paul,<br><br>thanks again for the suggestion.<br><br>I'd just like to keep you updated:<br><br>We've now settled to build our own navigation implementation using structured content as well.<br>For editing the file I copied the CmsXmlContentEditor, changed its layout and added functionality for easier editing (collapse/expand, copy/paste element, etc.).<br>
<br>Thanks again for your help and inspirations. :)<br><br>Cheers,<br><br>Thomas<br><br><div class="gmail_quote">2011/10/15 Paul-Inge Flakstad <span dir="ltr"><<a href="mailto:flakstad@npolar.no">flakstad@npolar.no</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div link="blue" vlink="purple" lang="NO-BOK"><div><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Hi Thomas,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">I really don’t know the sitemap editor very well, as I’m not using it.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">As for the single structured content file for navigation:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Yes, this “navigation definition” file stores the navigation in different locales, exactly like with other types of (structured) content in OpenCms.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Yes, it is completely manual (unless you add some automated listing or something, which I’ve done in special cases), with independent content (when I say “content” I mean “the links that make up the navigation tree”) for each locale.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">I did use a custom content type – the structured content type I created for the “navigation definition” – but no special widgets, only the VFS file widget. (A navigation is quite simple, it’s really just a bunch of links in a tree structure. And each link consist of just 2 things: a target URI and a navigation text. So the only complexity is in how you create the tree.) <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">The majority of the hours spent developing this module went into the class library, which allows me to access the menu as an object. (The menu object is really just a tree structure which is built by reading the “navigation definition” file). I would strongly encourage this approach instead of just using JSPs (like I did at first). It gave me a bunch of benefits. Programming is a breeze – with just a few lines of code I can easily get the menu or parts of it, get the breadcrumb menu, determine what menu item is the “current” one, and so on. Everything is easy, and just works very well! (If I may say so myself :)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">To illustrate, the actual code could look as simple as something like this:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">MenuFactory mf = new MenuFactory(pageContext, request, response); // MenuFactory extends CmsJspXmlContentBean<u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Menu menu = mf.createFromXml(“my-menu-definition-file”);<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">boolean menuContainsRequestPage = menu.setCurrent(mf.getRequestContext().getUri());<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">out.print(menu.getHtml());<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">The .xsd is actually several nested .xsd’s (the number of .xsd’s will depend on the max. depth of your navigation), but each one looks pretty much the same. Each level (except the level at max. depth) consists of:<u></u><u></u></span></p>
<p><u></u><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><span>1.<span style="font:7.0pt "Times New Roman""> </span></span></span><u></u><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">A target URI and a navigation text<u></u><u></u></span></p>
<p><u></u><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><span>2.<span style="font:7.0pt "Times New Roman""> </span></span></span><u></u><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">An optional list of sub-elements, where each item in the list is also just a target URI and a navigation text<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Of course, there are some drawbacks to my solution... I have been unable to create an .xsd that allows for an arbitrary menu depth. Consequently, the menu depth is finite. (Adjusting the depth is easy, but I’ve settled for a max. depth of 4, as I’ve found that this depth has been sufficient on all of my sites. In terms of usability I’m also confident that shallow menus are far better than deep ones – in nearly all cases.)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">There is no collapse/expand functionality when editing, and reloading the edit view, e.g. when you add/move/delete items, will grow slower proportional to the size of your navigation. (However, if this becomes a serious problem, it can be avoided by splitting the navigation into several files instead of containing the entire definition in a single file.)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Sounds scary, I know – but that being said, I’ve got some quite big navigation files on a couple of sites (see for example <a href="http://www.npolar.no/en/" target="_blank">http://www.npolar.no/en/</a> - the entire navigation there is one file), and I hardly consider the reloads a problem. This is in part because navigation files are rarely edited once they are finished the first time. Those few times when I do any editing, it’s usually just a case of adding/moving/deleting one or two items, and because it is “just a quick edit”, the slightly slow reloads are not at all as annoying as one might think.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">As for customizing the “Edit navigation” option, I can’t give an exact answer, but I’d start by examining the handler JSP. I don’t know how easy it is to create custom dialogs, only that it should be possible. (Alkacon has custom dialogs for some resource types, for example).<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">It would be great to contribute my alternative navigation module at some time, but currently I’m unable to. :(<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Anyway, hope this helps you.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Cheers,<u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Paul<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"><u></u> <u></u></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm"><p class="MsoNormal"><b><span style="font-size:10.0pt" lang="EN-US">From:</span></b><span style="font-size:10.0pt" lang="EN-US"> <a href="mailto:opencms-dev-bounces@opencms.org" target="_blank">opencms-dev-bounces@opencms.org</a> [mailto:<a href="mailto:opencms-dev-bounces@opencms.org" target="_blank">opencms-dev-bounces@opencms.org</a>] <b>On Behalf Of </b>Thomas Göttlich<br>
<b>Sent:</b> 14. oktober 2011 16:45</span></p><div class="im"><br><b>To:</b> The OpenCms mailing list<br></div><b>Subject:</b> Re: [opencms-dev] Multilingual NavText<u></u><u></u><p></p></div><div><div></div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal" style="margin-bottom:12.0pt">Hi Paul, hi Christoph,<br><br>thanks for the information. <br><br>Is it possible to use the sitemap editor from the workplace as well or only using ADE?<br>
<br>@Paul ah, thanks for the explanation. I didn't think of a single XML-file describing the entire navigation. <br>Yes, that might be a quite usable approach.<br>Did you store the navigation per language then? <br>If so, you'd still need to manually update the navigation in all languages when you have changes, wouldn't you? (I mean when creating a new language the content of the default language is copied, but after that it'll be independent, right?)<br>
<br>I think I'll strongly consider that approach as well, since that would also enable kind of wysiwyg navigation editing (move up, down etc.).<br>Would you mind giving an example of how your xsd looks like? <br>Did you use any special widgets or custom content types?<br>
<br>Besides of that, is there a custom editor/option/widget that would allow to collapse subtrees when editing the xml-content for the navigation?<br>The navigation trees in the XML might become quite big with several levels, so it would be quite helpful if that was possible somehow (to reduce scrolling etc.).<br>
<br><br>Btw, how would I customize the "edit navigation" option?<br><br>Thanks for your help so far and the really good suggestions.<br><br>Cheers,<br><br>Thomas<u></u><u></u></p><div><p class="MsoNormal">2011/10/14 Paul-Inge Flakstad <<a href="mailto:flakstad@npolar.no" target="_blank">flakstad@npolar.no</a>><u></u><u></u></p>
<div><div><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Hi Thomas,</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"> </span><u></u><u></u></p><p class="MsoNormal">
<span style="font-size:11.0pt;color:#1F497D" lang="EN-US">See my comments below.</span><u></u><u></u></p><div><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">Hi Paul,<br>
<br>well, structured content can contain multiple languages so I'd say that also an intended possibility in OpenCMS. </span>It's just the navigation that doesn't support that.<u></u><u></u></p></div><p class="MsoNormal" style="margin-bottom:12.0pt">
<span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Content in multiple languages is indeed an intended possibility, but the standard way to _<i>handle</i>_ content in multiple languages is by employing siblings. (Relying heavily upon the fact that siblings do not necessarily share their set of properties. Furthermore, as you know, the standard OpenCms navigation is partly property-based.)</span><u></u><u></u></p>
<div><p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">We also have parts of our site that define the navigation inside the xml content. </span>That, however, makes it harder to view the navigation in the workplace explorer, since you'd then have to open the resource file. Ok, editing navigation in the workplace explorer is still suboptimal - you can't see the navpos for example - but it's still a start and AFAIK you don't have the new sitemap editor in the workplace, do you?<u></u><u></u></p>
</div><p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">I’ve created 20+ sites, all with a structured content-based navigation, and most with the entire navigation tree defined in a single file. Many editors have been involved, and this implementation has been easily understood by them. Given that the navigation tree is visible to them when editing the file, the whole thing is actually quite intuitive. (Of course, I do not get to use the new sitemap editor, but that’s hardly a problem. Bottom line is the standard OpenCms navigation solution does not work for me, and the structured content solution is a good substitute.)</span><u></u><u></u></p>
<div><p class="MsoNormal"><span lang="EN-US"><br><br>I'll think about the property-per-language approach, but that has the disadvantage that standard edit options like "edit navigation" wouldn't support that.</span><u></u><u></u></p>
</div><p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">It is possible to customize the edit option so that it would handle your custom solution.</span><u></u><u></u></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Best regards,</span><u></u><u></u></p><p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Paul</span><u></u><u></u></p>
<div><div><div><p class="MsoNormal"><span lang="EN-US">2011/10/14 Paul-Inge Flakstad <</span><a href="mailto:flakstad@npolar.no" target="_blank"><span lang="EN-US">flakstad@npolar.no</span></a><span lang="EN-US">></span><u></u><u></u></p>
<div><div><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Hi Thomas,</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">First of all, I don’t think you’re asking a commonly asked question. The “default” way to handle multiple languages in OpenCms is by employing siblings. Since you’re avoiding this (I don’t get why, it’s a pretty neat solution), you’re also straying from the way OpenCms was intended to work. With this in mind, I wouldn’t expect to find a quick fix anywhere. You’re at a point where you’ll have to create a custom implementation. </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">While your proposed solutions would work, they do raise the bar for the editors, and errors are likely to occur.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">A couple of other suggestions:</span><u></u><u></u></p>
<p><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">1.</span><span style="font-size:7.0pt;color:#1F497D" lang="EN-US"> </span><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Define one navtext property for each language. (Basically the same as using the default property, but this way you’ll free the editors from the syntax requirement.)</span><u></u><u></u></p>
<p><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">2.</span><span style="font-size:7.0pt;color:#1F497D" lang="EN-US"> </span><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Make your own navigation system – structured content works well for this. (I would go for this. It is like your properties file alternative, but easier to maintain. I have successfully implemented such a system on my sites, because I wanted a navigation that was independent from the folder structure. It works like a charm. :)</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">HTH. </span><u></u><u></u></p><p class="MsoNormal">
<span style="font-size:11.0pt;color:#1F497D" lang="EN-US"> </span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Best regards,</span><u></u><u></u></p><p class="MsoNormal">
<span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Paul</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"> </span><u></u><u></u></p><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:10.0pt" lang="EN-US">From:</span></b><span style="font-size:10.0pt" lang="EN-US"> <a href="mailto:opencms-dev-bounces@opencms.org" target="_blank">opencms-dev-bounces@opencms.org</a> [mailto:<a href="mailto:opencms-dev-bounces@opencms.org" target="_blank">opencms-dev-bounces@opencms.org</a>] <b>On Behalf Of </b>Thomas Göttlich<br>
<b>Sent:</b> 14. oktober 2011 11:30<br><b>To:</b> The OpenCms mailing list<br><b>Subject:</b> [opencms-dev] Multilingual NavText</span><u></u><u></u></p></div><div><div><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal" style="margin-bottom:12.0pt">
Hi,<br><br>I know this is a commonly asked question but since I couldn't find anything helpful in the wiki or using google yet, I'll ask my question here:<br><br>How can I maintain a folder's navtext property in a multilingual way?<br>
<br>We currently have a site that consists of one tree and structured content containing mutliple languages.<br>Our templates use a fallback mechanism to retrieve content in the default language (English) if there's no content for the requested language (e.g. German).<br>
This works on a per-field basis, i.e. you could, for example, set some images in the default language only and just translate the text in the other supported languages.<br><br>Because of this, and since it is a much cleaner approach IMHO, we don't want to fiddle around with different structures in multiple languages (i.e. no siblings!).<br>
<br>All worked fine so far, since we didn't use the OpenCMS navigation facilities yet.<br><br>However, now we need to employ them and thus there's the problem of how to translate the navtext property.<br><br>Right now I could think of two ways, both of which don't fully satisfy me:<br>
<br>1. Store a key in the navtext and in the template access a properties file. That would require the user to maintain an additional file and keep it in sync with the keys.<br><br>2. Directly store the translations in the navtext, i.e. like this: "en=Some Folder,de=Irgendein Ordner,nl=Een map,es=Cualquier directorio,zh=<span style="font-size:13.5pt;font-family:"MS Gothic"">某一个文件</span><span style="font-size:13.5pt;font-family:MingLiU">夹</span><span style="font-size:13.5pt">" etc.</span><br>
Then I'd have to split the navtext in the template and extract the correct language. The problem with this is that it's quite fragile since the user would need to enter the translations in the correct format, i.e. <language code>=<translation>,<language code>=<translation>, ... . This might be error prone.<br>
<br>Any more ideas?<br><br>Thanks in advance,<br><br>Thomas<u></u><u></u></p></div></div></div></div><p class="MsoNormal"><br><br>_______________________________________________<br>This mail is sent to you from the opencms-dev mailing list<br>
To change your list options, or to unsubscribe from the list, please visit<br><a href="http://lists.opencms.org/mailman/listinfo/opencms-dev" target="_blank">http://lists.opencms.org/mailman/listinfo/opencms-dev</a><u></u><u></u></p>
</div><p class="MsoNormal"> <u></u><u></u></p></div></div></div></div><p class="MsoNormal"><br><br>_______________________________________________<br>This mail is sent to you from the opencms-dev mailing list<br>To change your list options, or to unsubscribe from the list, please visit<br>
<a href="http://lists.opencms.org/mailman/listinfo/opencms-dev" target="_blank">http://lists.opencms.org/mailman/listinfo/opencms-dev</a><u></u><u></u></p></div><p class="MsoNormal"><u></u> <u></u></p></div></div></div></div>
<br><br>
_______________________________________________<br>
This mail is sent to you from the opencms-dev mailing list<br>
To change your list options, or to unsubscribe from the list, please visit<br>
<a href="http://lists.opencms.org/mailman/listinfo/opencms-dev" target="_blank">http://lists.opencms.org/mailman/listinfo/opencms-dev</a><br></blockquote></div><br>