Forum .LRN Q&A: navigation changes in dotLRN: RFC

Collapse
Posted by Rafael Calvo on
Hi

We are working on a couple of new themes, documentation and features that wil make it easier to customize the look and feel fo dotLRN.
Dorian Peters as 'Art Director' has done really nice graphics, and with Jeremy's Monnet programming is looking really good. Dorian has also identified a number of usability issues described below.

These are important changes on the portal navigation. I just thought it might be useful to explain the usability decisions regarding the tab rearrangement (since it's technically tricky to acheive, or at least that it compromises backwards compatibility).

After being in contact with non-technical users of .LRN for a while, we've been able to pick up on the many usability issues that are of particular difficulty for them. A lot of these are details that can
be dealt with with graphic design changes or technical tweaks. One issue, however, is the navigation and has to do with the fact that it suffers from a "false logic" in the tab structure.

It is assumed by common understanding that tabs are all on the same level. Like folders in a cabinet they're top level items that contain content within them. Therefore, the 4 common tabs in .LRN (eg. MySpace, MyCalendar, MyFiles, etc.) should all be on the same level.
But they're not. Calendar and files are not alternatives to MySpace, they are part of MySpace. They are located within this MySpace section and should therefore, logically, be subnavigation pertaining to that tab, not separate tabs themselves.

The tab logic is also comprimised when you click to go elsewhere, such as into a community. Suddenly all the tabs you had established as your primary navigation, dissappear and are replaced with all new ones. While they seem to mirror the old ones to some extent (eg. community, calendar, files, etc.) they're still not the same ones. So
the main navigation is, in essence continuatlly changing, which is generally regarded as a usability no no. Meanwhile, there's the repeated problem, that calendar, files and people are all part of this specific community, not separate from it and should therefore be subnavigation to a community tab. While community hompage is indeed
on the same level as community calendar and the rest, the
representation of this is awkward. We're meant to assume that because the first tab says community home, that for the other tabs community should be inferred.

I believe changing the tab structure to remove the false logic and make it more clear and intutive will greatly enhance usability, particularly for new users. The new structure I propose also makes it immediately clear what possibilities .LRN offers the user. A user can
easily see what they have access to with my proposed tabs: MySpace, Classes, Communities, Preferences and Tools. The .LRN offering and the structure of the entire system is suddenly obvious to the user from the very first page. This should improve users understanding of the system dramatically. Right now, when you first arrive in MySpace,
there are few clues to what you're doing there. You may not know there are classes or communities on offer unless you are already enrolled in them. If you're looking for a particular community it is often hard to find (since it's just a small link among others in one of many portlets, no more prominent than a news item). You are also
likely to have trouble finding personal preferences or tools like
help. All these problems have already been encountered repeatedly with users of .LRN. All these tasks would be greatly simplified for users with the new proposed tab structure.

I think these changes will make a huge usability improvement. Once it's implemented we plan to test it with users of .LRN to ensure that it is easier to use this way for them. I hope we can eventually establish the new strucutre as a default for .LRN.

Screenshots can be seen here: http://jmonnet80.free.fr/Selva/

cheers,

Rafael

Collapse
Posted by Orzenil Silva Junior on
Thank you Rafael to bring this discussion in the community.

Next september we are going to initiate usability tests with dotlrn within communities of practice and e-learning program for a group of people in the corporate sector. We have similar programs running with other groups and not rare we are facing the necessity to develop easier interfaces to make dotlrn accessible to a growing diversity of users.

I think you pointed a great weakness in dotlrn interface. Our experience have been showing us that tab structure really create a false sense to users and frequently people feel very discomfortable with their experience with this structure. People claims too there are links that could be immediatly acessible from tab structure instead buried in the interface.

I tried Selva-theme today in a test installation and i think it represents a good approach to improve the quality of dotLRN associated to usability issues. I made some screeshots and uploaded them to http://www.teknedigital.com.br/screenshots/ . I did little modifications to Jeremys' code to get header_logo change working and putting Selva Theme as a option for portal template layout. The idea about submenu structure is really interesting and will be a great enhancing to dotlrn interface when fully implemented.

Our approach to usability tests will follow heuristic evaluation methodology developed by Nielsen and modified for an evaluation of e-learning programs by Reeves et all (see for example http://dl.aace.org/10405).
We are not totally committed with this approach yet but we have a number of papers published here in Brazil using Reeves' approach and some of them could be used in our work. I really appreciate if you could put available documentation developed by Dorian and others.

Thank you.

\Orzenil

Collapse
Posted by Jeremy Monnet on
Hi Orzenil !

That's nice you did the job to use selva theme for portal template, but do you think (as I do) that we should remove completely the choice for such a template (at least from the admin menu) ? I mean, with css and class tags, anyone is able to completely change the layout without changing the html code generated. Moreover, it will be more difficult to go closer to xhtml compliance (and full coherent theme) if every kind of package can change layout of its own parts.

Also, I would like to know how you did to move mt Files and and My Calendar to the submenu ? (I mean what manner did you choose to achieve this goal)

And my last thing : how would you implement the fact that a "top" menu (actually the tab) would be always the same tabs, and what would change really would be only the submenu. The result to achieve is the behaviour you can see in the MockUps pictures that I will add as soon as possible in the Selva directory on my web site ( http://jmonnet80.free.fr/Selva ). At the moment I have found several ways to do it (static menu, portal by default (with the current portal in the submenu) but there are always something worrying me : or it is not understandable choice from the developper point of view, or it is not from the user ....

Jeremy

Collapse
Posted by Jeremy Monnet on
Hi again,

I looked at different ways of implementing a kind of "static" menu for the tabs.

The goal is what is what is described in the post of Rafael : having a tabbed static menu (My Space, Courses, Preferences) that should qute never change (we are thinking if we should write the name of the community we're in, in case we're in one for example), and the menu that is now in the tabs (so the portal pages and control panel links) would move to the submenu.

In this view people would always have a reference and a contextual menu.

Now here are a few tries I made and the problems I had. Maybe you can help me find the good solution to solve them ?

-> I tried a few static links (written by hand in the adp). My problem is that portlets should be in a page, and to be referenced a page should be in a portal. So I tried to create a virtual portal with only the static pages. The problem is I don't how to reach these pages ?
-> I then tried to insert my pages in the default portal (My dotLRN workspace), but the fact is that in this case the page also appears in the contextual submenu of "My Workspace" (this is how I called the link to /dotlrn/index in the static menu, to make the difference with "My Space" page)

So the only thing I'm thinking about now is to do the last solution, and add conditionnals in the TCL procs to say "that's the page I use on top so I don't put in the submenu", but that's dreadful, isn't it ?

Hope you can help me make the right choice ! 😊

Jeremy

Collapse
Posted by Orzenil Silva Junior on
Hi Jeremy,

Sorry for this late response 😊

I don't know if i am going totally wrong but i suspect an approach to get tabbed static menu in dotLRN is by means of new callbacks implemented for openacs HEAD. see https://openacs.org/forums/message-view?message_id=274647

I said i just suspect because i am still reading about callbacks. As i see the very goal of callbacks -
"to promote reuse of standard pages and functions by removing the need to create per-package versions of these" - fits well in the issues you are dealing. Indeed callbacks seems to be in the near future a simple, flexible alternative to service contracts. As we know tab structure (pages) in dotlrn is today provided by service contracts defined in portlets.

As i said i am not sure i am understood correctly callbacks but i saw examples from HEAD wich administrative links for certains packages were created with callbacks. see for example forums package code ( forums/tcl/forums-callback-procs.tcl)

ad_proc -public -callback navigation::package_admin -impl forums {} {
return the admin actions for the forum package.
} {

What do you think? Did you already explore this feature? Is it fits to what you are doing?

I see Dirk Gomes, Dave Bauer and DeeDee Kane are working in backporting callbacks from HEAD to 5.1 so we could use it with dotlrn 2.1. see https://openacs.org/forums/message-view?message%5fid=305077

Maybe we could contact them to see if callbacks could help you deal with tab structure. I think Andrew Grumet
(https://openacs.org/forums/user-history?user_id=6611) could evaluate it too and dismiss or confirm this suspicion.

\Orzenil

Collapse
6: Callbacks on 5.1 (response to 1)
Posted by Malte Sussdorff on
As far as I know Matthew Geddert already backported callbacks to 5.1, not sure if he committed though.
Collapse
Posted by Andrew Grumet on
Hello. Hmm, I think I understand Rafael's proposed navigation, though I'm not sure I understand Jeremy's questions.

In any case, if I understand Rafael's proposed navigation, it should be reasonably straightforward to implement it by remixing bits of existing code. I haven't seen a compelling case for callbacks yet, but there may be one.

The tabs are queried out of the portal_pages table. The proc responsible for this is dotlrn::portal_navbar in packages/dotlrn/tcl/navigation-procs.tcl. The My Space pages are part of the user's personal portal, whose id can be found from dotlrn::get_portal_id.

Putting the My Space etc. navigation on all pages would just mean querying out the pages for the user's personal portal in addition to the pages for whatever class portal the user happens to be visiting.

Collapse
Posted by Andrew Grumet on
Some clarification on "static" menus.

It's important to note that the tabs/pages appearing on the user's personal portal are not static. The user can modify the number of pages, the ordering of the pages, the titles of the pages, and their contents from Control Panel -> Customize Layout.

So the personal portal tabs are only "static" in the sense that they remain constant until the user edits their personal portal.

Collapse
Posted by Jeremy Monnet on
Hi Andrew,

I will try to explain things in a different way.

What is now as tabs will be as submenu. What does not exist now will be the tabs. You should have a look at the pictures http://jmonnet80.free.fr/Selva/MockUps/ to understand what Rafael wants.

The future will be with tabs user can't change (or are unadvice to do so), while they can change the submenu (in fact this is part of the code that doesn't change : when they add a tab/page now, they will add a submenu item).

So I moved the information from portal_navbar to the submenu, and I am asking now what is the best way to create what will be a menu "above" what we know now.

Dorian found it difficult to navigate, because you never know where you are. The goal is the user always knows where he is.

Maybe now you understand better my questions ?

So I'm trying to figure out what is the best way not to compromise the logic of the dorlrn, and to create a functionnality that was not expected (a sort of main menu above the existing one). We should be able to remove the "where-we-are" section at top of the page with these features.

I will look to the callbacks, I don't know anything about it, so it may help ?

Collapse
Posted by Malte Sussdorff on
Jeremy, these mockups are right on track. I discussed this independently with a client of ours and will show the mockups to her on Friday, but this is most likely exactly what she would like to have.

Do you have any time schedule for this? Can we help (you asked about callbacks, I guess I can help out there)?

Collapse
Posted by Carl Robert Blesius on
Wow, those screenshots are beautiful (and motivating)!
Hats off to Dorian and Jeremy.

Question:
How would this work with subgroups and sub-subgroups?
I see the tab shows up on the upper left when you are in an actual course or community: http://jmonnet80.free.fr/Selva/MockUps/2a_Course.png
Would more tabs appear to the left as you go deeper into the hierarchy?

Collapse
Posted by Rafael Calvo on
Malte

that would be excellent!

jeremy (and most of WEG) will be all next week in the Web Engineering Conference, so we would not be able to make much progress. I will ask jeremy to send you what we have got, and you can try to finish it up next week. How about that?

He has done the submenus, but we need to get the tabs (community/courses) odne. This could be done as new portals. If you do them as new pages to the same portal_id they would show up in the menu

cheers

rafael

Collapse
Posted by Malte Sussdorff on
Rafael, before you get your hopes up to high, we are not Graphic Designers, so we'd primarily focus on getting the menus worked out correctly and displayed accordingly in new-portal. Hopefully someone with CSS experience will then make them into nice tabs :). I'll look at what you can give me and hopefully drive it further next week.
Collapse
Posted by Jeremy Monnet on
It is nearly ready, but you may understand that I made some ugly hacks to do it ...

So for the time being, I just moved the tabs to the submenu, and I make a few static links in replacement for the tabs. The fact is (what I already explained) I need to link a page, to support a portlet (tell me if I'm wrong), and I can't create a portal above the portals ...

So I'm asking once again if someone would have the brilliant idea to generate in a clean way the future tabs ?

I had a look at the callbacks, but if I understand, this is for register an application into another (or kinda : if I do something in an application, that should do something else in other at the same time) ?

I will add tomorrow (Australian time) some screenshots and codes for you to see where I am and what I have done, and to give me your opinions on how I should do it better.

Jeremy

Jeremy

Collapse
Posted by Emmanuelle Raffenne on
Hi,

Those mockups are really great and are a great enhancement for the navigation through portals and portal pages. I've shown those to several users (profesors and students) here at UNED and it responds very well to the navigation scheme they expect. So we'll follow your steps and can help to work on it. We can start on august, 1st.

Jeremy, une question: I understand that the "where-we-are" section is the context bar, right? Do you want to remove it only from the main page of each portal or also from inside each aplication? I think these section is useful when you are, for example displaying a news item and want to go back to the news items list.

Collapse
Posted by Bruce Spear on
I like the Selva design VERY much: the yellow/green color scheme is especially pleasing to my eye: cool, but not cold: aloe vera maybe (is it hot in Australia?). The teardrop shapes really do take the rough edges off of things, and I like how the center and right gutters are bigger than the left: you get tight left and then air in the rest. I especially like the discussion of false logic: I've felt until now that we've treated tabs as basically lists lists and not as tree structures with a sense of proportion, which is what I think you've got going here nicely.
Collapse
Posted by Orzenil Silva Junior on
Jeremy,

I discuss suggested tab structure and navigation with client we are going to do some dotlrn usability tests about september or october as i said before and they had a positive experience.

I could go into Andrew suggestions by i'm not sure i could offer a concrete agenda to you and community because for now i am very involved with a implementation of project-manager. Indeed i think a experienced Jedi Master like Malte could take this important implementation in a better way.

Malte, if you want you could coordinate changes with me. I could test your changes or make reviews. If Jeremy and you think it will be necessary i could take a person from my staff who has knowledge in css and xhtml compliance to help in graphic design of course respecting work done by Art Directors from WEG.

\Orzenil

Collapse
Posted by Andrew Grumet on
Hi Jeremy,

I've studied the mockups a bit more and re-read your posts and am starting to get it. I see how the tabs at the top (My Space / Courses / Communities / Preferences / Tools) are consistently viewable in all the screenshots, and how the old tabs are now in a horizontal menu bar below the tabs. I see that set of top tabs are themselves a portal, and that there may be some question about how to link to the different pages in this "magic portal" when serving content in other portals like class and community portals.

Probably it's best to look over your code when you're ready, do some review, and propose, if applicable, ways to make it cleaner.

This is look great so far!

Collapse
Posted by Jeremy Monnet on
Andrew,

That's exactly it ! I don't know how to implement this "super-portal" ... 😟 I thought I could create a new portal and use it to store my pages, but then I have no way then to go to this portal ... Or maybe if I would declare a new set of url's (I will have a closer look at the request processor tomorrow) ?

Today here is where I am :

-> I have written pure static links ("/pvt/home", "/dotlrn/", etc) for most things,
-> I have a link to a page of the default portal to use a portlet (the "Courses" tab, to display the "Groups" portlet), but BTW the same page appears also in the My Space links in the submenu (which may confuse both future developpers and users : 2 links to 2 identical pages, one in a tab, the other in the submenu ...).

To fix the second problem, I only thought of making conditionnals (if page "Courses" then do nothing) but I think it's dreadfull. Anyway, I think that now things are clear so you'll be able to give me nice advice 😉

As I said, I will post screenshots and (ugly) code tomorrow.

Jeremy

Collapse
Posted by Deirdre Kane on
I second Bruce's comments and add that the more I look at those mock-ups, the more I like them. I think our users will also appreciate the changes and that the new tab structure will resolve some of the confusion our users experience in orienting themselves to the system. I'm looking forward (if one ever really does) to our next upgrade so that we can implement the new UI.

DeeDee

Collapse
Posted by Rafael Calvo on
Hi
Of course I am dorian's biggest fan 😊.

Others might be interested in her blog on Visual Design for eLearning:
http://designerelearning.blogspot.com/

cheers

rafael

Collapse
Posted by Jeremy Monnet on
http://jmonnet80.free.fr/Selva/html/

Here it is. Screenshots, explanation of the things I did.
I do know I did it a wrong way, but I couldn't find yet a better way 😟

So please HELP !

I am cleaning the code of all the tried I made before (even sql tables a,d things and I will post a link to the package in a couple of hours.

Collapse
Posted by Jeremy Monnet on
http://jmonnet80.free.fr/Selva/theme-selva_20050722.tar.gz

You can find the clean source code for the results I posted above.

This is a service package so you can install it and uninstall it with the APM.

Jeremy

Collapse
Posted by Dave Bauer on
This is very confusing.

What is the different between My Workspace and My Space?

There are two control Panel links. Where do they go?

I like the idea of the tabs being static and having local navigation under it. But I think it needs a little more thought into what will go in each.

Collapse
Posted by Rafael Calvo on
Hi Dave

I don't think those were things in the design. They must be bugs in the implementation of the theme.

We are all in a conference this week, but I will ask Jeremy to have a look

cheers

Rafael

Collapse
Posted by Malte Sussdorff on
I took the liberty of uploading this to CVS HEAD. Furthermore I introduced the property "navbar_list" which allows other applications (namely contacts and project-manager) that have their own navigation bar to use it instead of the .LRN related one.

We should continue to work from the CVS checkout. BTW, very good idea to make it such a theme.

Collapse
Posted by Andrew Grumet on
Looks like you put it in packages/theme-selva, correct?

I think it's fine to have it in CVS so we can all work on it together.

There's an open question about where we should be putting these themes (this is the first instance I know of a dotlrn theme landing in its own package), and how to make sure that we don't unnecessarily duplicate code in them, but these are secondary IMO.

Collapse
Posted by Andrew Grumet on
I've looked this over a bit more.

Regarding the big issues, yes I agree the tabs probably shouldn't be their own portal, if the aim of the navigation is that they should be pretty consistent no matter where the user is.

* My Workspace
* Courses
* Preferences
* Control Panel

Except for Courses, these are all standard OpenACS pages, which makes me think we should create similar page for Courses that either invokes or copies or shares the code that powers the Groups portlet (dotlrn-main-portlet.*).

To highlight the tabs, if we agree that the tabs should be at fixed URLs (not inside portals), then we should be able to compare the current URL against a the URL for each tab and highlight accordingly. Theses comparisons could be made cleanly, I'm pretty sure, e.g. relative the dotlrn instance URL for the Courses and Control Panel URLs, or by querying for the HomeURL kernel parameter for Preferences.

Another way is for the special pages to send the information back to the master template, either through attributes to the <master> tag or via globals. This would require changing at least one core page (/pvt/home). Might not be ideal.

Smaller stuff:

There's an install script for Oracle now.

Malte, I've committed over a few files based on what was in Jeremy's last tarball. These were notably different from CVS, even taking the navbar_list code into account, and looked better. The commits preserved the navbar_list code chunk in selva-master.tcl.

The tabs don't render well in IE.

The tabs don't resize well in Firefox/Windows.

The portlet headings (Groups, Forums, FAQs, etc) render inside the portlets, not outside, as they do on the sample page.

Collapse
Posted by Malte Sussdorff on
After your commit:

a) Blank Master from selva-theme is broken. Developer Support is screwed.

b) I know that people are highly fond of the name and the title, but the way it is solved in the theme (and in .LRN themes in general) is not good. That's why I moved it around a little bit / got rid altogether.

c) I have not found a place for "number people online", so I left it out as well.

I did not commit, You can view screenshots in the file-storage.

Be advised that the "contacts" tab is driven by a parameter in selma-theme (so you can decide what goes up there). If you look at the community view, you see that the Community name is written in it's own tab.

If you look at the integration e.g. of project manager and contacts, you will see that the navbar (in blue) can be either set (if not in .LRN like contacts) or extended if within (see the project manager screenshot).

I use the MIT Sloan new-portal theme.

Last but not least, if you are *outside* .LRN the title will show up in the top middle of the screen (see the contacts screenshot, there you see "contacts" in the middle).

Tell me if you like this.

Collapse
Posted by Andrew Grumet on
Hey, sorry if that undid your work, I was trying to make sense of the changes and it just seemed broken. I don't care too much about the details at this point, Jeremy should weigh in, but for what it's worth I'll list a few of the things I was trying to fix. If your revised code takes them into account, that'll be fine w/me.

There was stray whitespace in selva-procs.tcl that made it hard to diff against the analogous code in dotlrn (from navigation-procs.tcl). The tarball version didn't have this problem.

The tabs contained lookups on missing message catalog entries. The tarball version was okay.

The logo was missing. You didn't say that you'd removed it so I thought it was a bug. Perhaps the logo should be optional, subject to a parameter, and the path to the logo should be a parameter too.

The "Contacts" tab was showing even though I don't have that package installed.

Collapse
Posted by Rafael Calvo on
Malte,
You screenshots are missing the tabs in the portlets.
You mustt be missing some changes
cheers

Rafa

Collapse
Posted by Malte Sussdorff on
Rafa, as I mentioned I'm using the SLOAN theme internally for the portlets, that's why.
Collapse
Posted by Jeremy Monnet on
Thanks for all this Andrew.

I am sorry for answering late, last week was a conference week in Sydney, so I didn't work for this ...

I think you're right, and the only way to have these static tabs is to have a static page behind (I mean as you wrote "standard OpenACS pages") so I'm going to look in this way.

As their link will be static (e.g. "/pvt/home") we can compare directly with "ad_conn url" I think ?

I would not like to send info back to master template. As you said it would mean modify some core pages, and I don't want to break everything 😉

For IE/Firefox/windows : I am sorry, I haven't tried this yet with windows (although I must say I was expecting trouble with this ...)

The protlet headings are inside because we must change the sloan-theme.adp file (new_portal/www/themes) for separate title and content, and use our tags by the way.

So I have two questions now :
-> I've seen that some files are available directly (/www and /packages/acs-subsite/www for example). Where part of the documentation decribes what pages are or aren't accessible ? Is it part of the request pre-processor, or something else ?
-> Is it possible to use a portlet in a "standard OpenACS pages" ?

Jeremy

Collapse
Posted by Rafael Calvo on
Hi
I tried downloading the code with

cd packages;
cvs -d :pserver:mailto:anonymous@cvs.openacs.org:/cvsroot checkout -r dotlrn-2-1-2 theme-selva

but it says it cannnot find the module

What am i doing wrong?

Rafa

Collapse
Posted by Malte Sussdorff on
The code resides in HEAD and is not part of .LRN. Therefore you have to leave out the "-r" part.

Our changes which are not included as I did not commit until someone says I want them:

- Parameter driven subnavbars
- Show we are in a community in a prominent place.
- No more logo.
- Some color changes in the CSS.

Collapse
Posted by Jeremy Monnet on
Ok I found the answers to my questions :

-> Yes, I can call a portlet directly
-> I have to mount the application package.

So I'll probably mount the application under /theme (Not used at the moment I think ?) and the courses tab (and more tabs maybe later) will still be in the theme package. So the system can work with our new tabs system, or when uninstalling with the current "tab-only" system ...

Jeremy

Collapse
37: New package Selva (response to 1)
Posted by Jeremy Monnet on
http://jmonnet80.free.fr/Selva/theme-selva-0.3d.tgz
This package is quite big (10M) because I added the pictures in the doc, as Rafael requested.

The page courses has been added, the tabs are highlighted for their own url.

I have another question for the xml info file :
We can set parameters with it (the parameters are set for the installation of the package I think. What happens when we uninstall the package ? Should we take care of the parameters manually (in the sql drop file), or is there a sort of history, and the parameter falls back to its previous value ?

Jeremy

Collapse
38: Re: New package Selva (response to 37)
Posted by Malte Sussdorff on
Jeremy, let me apologize in advance for the upcoming sarcasm, but as you apparently had no look at the code provided by us before you implemented the changes I think it is fully justified.

- You created a subnavbar navigation helper procedure. So much so good. Sadly you didn't bother to take our parameters driven subnavbar stuff, so it is IMPOSSIBLE for an administrator of the site to add additional subnavbars.
- Your Procedure is not I18N
- You make multiple elseif statements depending on the URL to set the active URL. I'm not sure if you know, but this can be achieved in a one liner, especially if you use the parameter driven code 😊.

- It is impossible to see in which community you are, unless I missed something in the code. We added this functionality by dynamically adding a tab for the current community on the left so you immediately see which community you are in.

- Minor issues: Your .info file is broken (you won't be able to upgrade due to a not changed URL).

Cooperation and coordination in the OpenACS community works by both sides looking at the respective changes, otherwise a fork is inevitable. I like the work you've done and think it has potential, but it is missing some crucial parts.

Collapse
Posted by Jeremy Monnet on
Malte, I do forgive you, and I hope you will forgive me too ! 😉

I did not expect you people to put your things in the cvs and modify what you wanted (each on your side, without knowing if someone else is doing it also : we call that communication. 3 or 4 persons on the same files : problems.).

I thought that I would do some stuff (maybe not the better, but I asked questions for which I have very few answers (thanks Andrew and myself). Then when the thing would be good enough (near version 1.0,or about) it would be september, and time for me to leave (unfortunately) Australia and the dotLRN.
I thought you would drive me to the bright side, by giving me advice, and not doing things instead of me.

I am not saying I am the best, and I am not saying your job is bad, and in general I am not saying anything bad about you and the dotLRN community in general.

I just say that the 2 first remarks and the last one may not make sense for a development and learning (I am learning) package. You probably noticed that it has moved from a service to an application : because a service (as far as I know, please correct me otherwise) is not mounted, and so I would have accessed the courses page through a long path. I am not sure you can update from a service to an application ?

And I say that I didn't know that I could achieve the url active in one line. I knew I did it wrong, but I hoped you would have given me a better way ...

BTW, you didn't answer (or give a link to the documentation) for my question about the paramters in the .info file. Although I am pretty sure you know perfectly well the answer ... 😉

For the community problem, 2 things :
- Yes, it is impossible now. This is part of the lots of questions I asked along this (very long) thread. I wanted to do something dynamic (like the navbar) but it seems it is not possible to do it the same way (portal problem). So I did it the way I could imagine (static links). It is not impossible at all to add a link, but I agree this is a very bad solution.
- I am planning to add in the next days a css selection, so as to change the color (as it is done now) when you enter a community.

Now, I am going to spend the next hours reading source code to learn .... 😟

Collapse
Posted by Jeremy Monnet on
Hi it's me again ! 😊

So I looked at the cvs code, and I have some remarks/questions :
- http://jmonnet80.free.fr/Selva/problems/ : I don't have the names I18n ("MISSING KEY"), did I miss something ?
- Are we supposed to put everything we don't know what to do with in the apm_parameters ?
- Why are most of the tabs written manually, and only 1 taken from the DB ? (I do understand for the community tab)
- Won't you prefer to say "you're in that community" a big red blinking text "this community", instead of a tab ? I mean, when I see a road sign "Munich 200 km" I think I'm not in Munich ... When I see a tab "community something", I think I should click on it to go there ?
- Why do you want to stay with the top blue bar ? The tabs should give a clever way to navigate through the site (at least, we do it for that).
- You don't like the blue .LRN logo ? Is it because it take some space on top of the page ? So I think you'll like even less the top picture I've put in the last package. (this is a test, Rafael thinks it is a great design idea)

Maybe you already discussed some of these points, but I have seen no explanation so far, so I ask ! 😉

Jeremy

Collapse
Posted by Jeremy Monnet on
Some other points :
- I see a "navbar_list" variable, which is never used anywhere else in the code. Is it normal ? Is is just we will need it in the future ?
- Why did you write a "log in" tab while this code will never be executed when the user is logged out (except if there are more state than logged in and out for a user ?)
- Why do you remove the menu bar when the user is not in the dotlrn anymore ? My understanding is that you want to make the difference between OACS (system admin only) and .LRN (software admin and use), am I right ? if so, I think it is a bad idea. The software is already far too complicated, and say to people "you are using two softwares, and you must be aware of it" is not a way to do. As I already said (even if it may be complicated for developpers (you), an effort should be made IMHO to simplify the administration. Of course, this is just a way to start a debate 😊

Jeremy

Collapse
Posted by Malte Sussdorff on
Before you check the code, be advised that Andrew reverted part of the changes :). I did a resubmit, so please update your code and take a look.
Collapse
Posted by Malte Sussdorff on
It was clearly stated that the package was put into CVS (https://openacs.org/forums/message-view?message_id=308673). All communication what has happened has been done through this forum posting. So I'd not say we did not communicate.

Reason for me to do the things are plain and simple: Client needs. Your design was the best thing around for the client, so we took it and improved it everywhere. But instead of forking we tried to bring everything back.

Collapse
Posted by Malte Sussdorff on
You are missing the name because of a missing update of acs-subsite. the new version should have the languages key in it (actually, we are using acs-subsite 5.2, maybe this explains as well).

APM Parameters is supposed to be the place where a *USER* administrator can change the behaviour of a package. Adding TABS to the navigation is something that should not require code but be handled through a parameter. So I don't think your statement is correct in its broadness 😊.

Honestly, it doesn't matter, but we need certain tabs for .LRN to work, so I decided to keep them in there hardcoded, but this is totally up for grabs :).

The standard behaviour in .LRN is to have a TAB with the community name for the community and this is what I did. I'm not sure if "Flashing Red" "you are here" is the best way, but if you know where to place the name of the community you are at in a very prominent place (which the top left is, at least in western civilizations that read from top left to bottom right), I'm all ears.

I didn't get around to make the logo "optional". You could do this by adding a parameter "LogoURL" and use the LogoURL parameter in your files where you want to put the logo to. So if someone doesn't want a Logo or wants to change it he can just remove the content of the LogoURL parameter. (And you can just to a "< if @logo_url@ ne "" >" in your selva-master.adp).

The navbar-list variable is used in the latest version of the code. Actually it is passed in as a property by packages like contacts or project-manager that have their own navigation bar, but now can use your one (see the posting of the pictures to get an idea how this looks like).

The log in tab will only show if the user is logged in, otherwise the logout tab will show. This is standard OpenACS behaviour and the code was strictly taken from site-master.tcl.

Which menu bar are you talking about. If you mean the one below the subnavbar navigation then it does not make sense to show it if there is no information in it, or does it?

Collapse
Posted by Andrew Grumet on
Jumping back a few posts...

As their link will be static (e.g. "/pvt/home") we can
compare directly with "ad_conn url" I think ?

Right. Note that /pvt/home is specified by the HomeURL kernel parameter. So the check could be done against the parameter value instead of the hardcoded string "/pvt/home". Email me if you have any question about how to do the lookup.

I've seen that some files are available directly (/www
and /packages/acs-subsite/www for example). Where part of
the documentation decribes what pages are or aren't
accessible ? Is it part of the request pre-processor,
or something else ?

It's part of the request processor (RP), and should be documented there. If not there's always the source code 😊 Here's how it works though:

a) The RP looks for a matching file under /www and will use it if it finds one.
b) If it doesn't find one, it climbs up the URL looking for a site node that matches. Then it looks in the www subdirectory for the package that is mounted there and tries to find a match.

There are some other tricks as well. For example URLs that start with /resources are treated specially for performance. /resources/package-key maps to package-key/www/resources. There are also "virtual url handler" or .vuh files that can process all URLs under their root. It's neat stuff!

-> Is it possible to use a portlet in a "standard OpenACS pages" ?

Sounds like it would be a bit of a hack, but it should be possible. One issue is how to get hold of the element_id. You might take a look at "magic objects", e.g. the acs__magic_object_id() database function.

Collapse
Posted by Andrew Grumet on
Rafa,

Try this, making sure you're in a directory that doesn't already contain a file or folder named openacs-4:

cvs -d :pserver:mailto:anonymous@cvs.openacs.org:/cvsroot checkout openacs-4/packages/theme-selva

The code will be in openacs-4/packages/theme-selva.

Collapse
Posted by Jeremy Monnet on
When I said there was a lack a communication, it was regarding to the fact that you need to re-commit the code because where are now 3 wotking at the same time on the very same files. I have seen nowhere a posting "stop working guys ! I'm doing some stuff on file.tcl, file.xql and file.info", which is what I'm used to in every others communities ... 😟 I assume you have a different way of communicating, but as long as you need to commit the same code several times, I also assume you can improve this way ...

Anyway, I would like to stop trolling now (and stop sarcasm by the way 😉 ) and concentrate on technical issues, if you don't mind ?

Collapse
Posted by Jeremy Monnet on
locales : if the package needs a specific version, shouldn't we have a "require" tag in the .info ? Or maybe use a catalog in the package, so it is acs-version independant ?

apm_parameter : I thought (for the name) that it was related to the instalation parameters of the packages ? Anyway the concept behind the tabs is to review the whole navigation logic for the dotlrn. This is what I insisted for Rafael to start this thread : this is not only adding some links or tabs, to is reviewing (and simplifying whenever possible) the navigation through the dotlrn system. I honestly think that before starting writing any piece of code, I should have come and start a complete debate with the dotlrn community about what things and how we can do it. Not every one of us is looking for the same things, and before coding all our different thinkings, we should agree on what we want, should we ?

community_tab : An excellent remark from my girlfriend : there is already the community written : in the "where_you_are" links. But we can certainly improve this display ? Otherwise I can just add it on top of the tabs (top left, just below the where_you_are section).

navbar_list: I understood that for the next release the dotlrn will still use openacs 5.1 because it has not been fuly tested on 5.2 ? Did I miss something ?

login/logout tabs : They are in the "make_navbar_p" section. My understanding (although I didn't look for what was setting this boolean) is that it creates a navbar only when user is logged in ? (for the 2 months I'm working with the dotlrn, this is what I saw)

menubar : yes, the one below the tabs. It does make sense if you understand my feeling about what user should see. I can not improve the core-openacs, because I'm too young in that software. However, the best I can bring into this community IS my youth 😊 I can tell you all my feelings as a new user, all the problems I encounter, and what I expected. hen we can discuss about what you wanted to show and to do. But only if you want to make the software easier for newcomers. If you think you don't need that, or that newcomers will become strong after a few months, and this is a lose of time to simplify it, I will just shut up my feelings ...

Jeremy

Collapse
Posted by vivian Aguilar on
Hello,
i was testing the theme , and i do checkout from head, unfortunately i see here http://jmonnet80.free.fr/Selva/theme-selva_0.5d.tar.gz that there is an updated files. It would be nice if everything is commited since .

And by the way the header is missing, on the version that is commited on head (i dont see login information and .LRN logo)...

Collapse
Posted by Jeremy Monnet on
Hi Vivian, this is good you post : I've tried for the last days, and I got an error message all the time. Now I can post the details of my package. I do'nt have cvs write access (and I don't want to), that's why I am maintaining my own version of the package, but the cvs will be updated as soon as people like Malte or Andrew (one at a time please !) have checked the code.

So here i what I wanted to post on monday :

- localized (using catalog files, so it doesn't rely on the next version of OACS)
- parameter driven tabs (following Malte recommandations)
- using theme/selva-theme file for all portlets
- optional logo (but you must set the parameter in the info file before installing the package)
- "You are here" red blinking 😊 (Since Monday I changed it to blue for personal space, and green for community, with no blinking)

package is here :
http://jmonnet80.free.fr/Selva/theme-selva_0.5d.tar.gz . Suggests, comments ? (Please, no sarcasm)

Jeremy

Collapse
Posted by Andrew Grumet on
Reviewing the latest changes now, will commit soon.
Collapse
Posted by vivian Aguilar on
Don't worry Jeremy I appreaciate all the work that you and your team are doing for this new theme, it is a new concept and it is one of the things that .LRN needs now not tomorrow and i am glad that people like you are investing efforts making a new face to a platform that have lot of potential. And i am sure that everyone in this community are happy of seeing this.

We are used to download everything from cvs in order to follow a path of work , and what i think is that a package doesn't have to be 100% without errors and funtionalities to be commited otherwise never going to be commited..

Maybe you can ask Dave,Don or someone to give you perms to keep commiting your work. An if you commit something that is bad coded it can't be reversed anyway..

Collapse
Posted by vivian Aguilar on
I mean it can be reversed =)
Collapse
Posted by Andrew Grumet on
Maybe you can ask Dave,Don or someone to give you perms
to keep commiting your work. An if you commit something
that is bad coded it can't be reversed anyway..

Yeah I think that's fine, better even, as long as Jeremy's commiting only the theme-selva and people are aware that it's in-progress.

I got diverted off into xotcl-land tonight (a very interesting place!) and didn't put in the time on this that I wanted to.

Collapse
Posted by Malte Sussdorff on
I'm reviewing now. Will commit with comments when done :).
Collapse
Posted by Malte Sussdorff on
Okay, I won't commit as someone else should take a look as well, but I like what I see (taking into account that I settled with a fork of the theme for our purposes 😊).

Here are some comments:

- In the parameters section you are storing the language keys without the "#". This has one mayor drawback. If someone does not want to have an I18N version of his string he is stuck. Furthermore, when an administrator sees something like <span>#</span>mypackage.mystring#, he is vary, as this actually *looks* like code, whereas he might be wondering what mypackage.mystring is and how he can change that string to suit his purposes.

- I'm still convinced that the bar with "login", "your account" aso. should become tabs in the subnavbar section. This leaves only the "Welcome xyz" and the "xxx members online" links, saving up some space.

- The blinking Red Text is, well, annoying, and I'm yet unconvinced that it makes more sense to spend a whole new line for this text instead of putting it on the left of the subnavbars (and only show it if you are within a community). This being said, I'd ask you to display the title if you are outside a community (instead of "My Space").

- You left the title out completely. Though this is in line with my usual "make it as compact as possible" way of doing things, this breaks existing functionality in some packages as they rely on the title information (take contacts or project-manager as examples). This is why I added the title again below the navbars (centered in the middle). If you are going to display the title instead of the name of the community and change .LRN to set the title to the community name if there is no title set in the first place, then I think we are on to something for a generic solution.

- The breadcrump and the welcome string are on two seperate lines. This should be condensed to one line to save space. If the breadcrump get's too long, it could break into two lines.

- It would be great if the CSS file had comments what property has which effect.

- You are still using selva-blank-master. This sadly still breaks the developer support, so it would be great if you fix the selva-blank-master or use the /www/blank-master instead.

- The round corners from the Subnavbar TABs broke on IE6, maybe you fixed that already (no IE here to test, just remembered from some time ago).

- Can the round edges of the Subnavbar TAB be achieved without adding images to it? Otherwise changing the colors of the Subnavbar TAB is a nightmare (well, you need a graphic editor and can't rely on the CSS file). In this case I'd propably vote for using only blocks without round edges so it could be easily changed.

Collapse
Posted by Jeremy Monnet on
Hi Malte !

I18N : no, that's the opposite ! 😉 people are stuck if they non-I18N words ... I' m currently using catalog files not to require an extra version of other packages (OACS 5.2 in your case). I haven't find the solution now, but I would like not to rely on a package version, AND have the advantages of the ## words ... Furthermore, Rafael told me he had the 'missing keys' messages, but I couldn't find a computer when I saw it from my eyes (and be able to look at the code). Are you sure you restarted the server after install ? I think the catalog files are read only once at startup ...

login bar : yes, you are right ! The "your account" is already the same as the "preferences" tab anyway, and I can probably add the logout as the last tab ?

Blinking text : of course it was french humor, sorry 😊 It's not blinking anymore, but it's blue for My Space, and green for a community (that will be in the next release). As we have different opinion on that point, I would like other people (Vivian, Andrew, Rafael, ...) to give their opinion on that particular point. I disagree to display the title of the page if we are not in a community : this is just to have a very few values (My Space, and communities) to be a reference for people. The more different values, the more confusing it is ... Well, let's hear other opinions now.

Title : ok, I'll do it this way (if noone else express another constraint)

Breadcrumps, 2 lines : Be careful, you are going to have an argument with the designer 😉 Dorian did it this way, so I'll wait for her opinion on that. Even if I agree that in general "smaller is better", we must also think in term of "beautiful" and "space". A lot of people like when it is written large with lot of space, this is very subjective. On that also I would like to hear from other people !

CSS : yes for comments, and I'll also have to fix IE bugs BTW ... I am not using IE, so it is not my priority for the next week, but I hope to do that for the end of August.

blank-master : what kind of compatibility does it breaks ? Selva-blank-master is just a copy (I changed maybe the css links ?) of the /www/blank-master (from previous version of dotlrn, the one from debian package, I don't know if this code was modified in between ?)

Corner : see CSS.

Round edges : Dorian is working on another css without images at all (easier to change colors, lighter web page, etc). We can achieve the round edges without images only by using proprietary css extension (--moz-border-radius for mozilla and firefox for example) which is in my opinion not a good way as it is not standard. Otherwise a lot of ugly solution exist (like creating a lot of different areas inside a class, and move them from 1 px each. We have the result with the double html tags, and the page becomes unreadable ... 😟 ) At the end, I think we'll have 2 solutions : pictures, or blocks. I think we can propose both by default, and the user choose ?

Jeremy
PS : should we start a new thread now ? This one is becoming too long, and we can't find information in it anymore. I could start with a summup of what has been done ?

Collapse
Posted by Malte Sussdorff on
I18N: I guess we are talking about something *TOTALLY* different. What I'm saying is, it is bad coding style to mandate a string to be a localized string. You do this. In the parameter you are saying "/pvt/home selva-theme.Home". This is in the parameter and in the tcl procedure you say: [_ name] where name is the second part of the parameter which is "selva-theme.Home". Now comes the occasional user that has heard he can change the number of subnavbars using this parameter. He wants to add "/contacts Contacts". He does not care about I18N, it is a plain english site. You approach will result in "MESSAGE KEY missing: Contacts". This is why you should never take a string and run it through [_ ] unless you are 100% sure it will be a valid message key.

As for relying on other packages, well, fine with me, but keep one thing in mind. You will force translators to translate the *exactly* same string twice, because you are running this on OpenACS 5.1.5. It would be considerably better to take the 5.2 acs-subsite catalog file and store it in 5.1.5.

Blank-Master changes from OpenACS version to OpenACS version, so unless there is a compelling reason not to use it, one should. Probably this is why DS is broken on my 5.2 install.

As for the rest, fine with me and we could start a new thread :).

P.S.: I'm not sure how long .LRN will run on 5.1, but I think it should move to 5.2 within this year, as it already works beautifully on 5.2 and there a considerable enhancements in 5.2 that make development easier.

Collapse
Posted by Nima Mazloumi on
Malte, how did you get dotlrn running on oacs-5-2? I would like to upgrade dotlrn 2.1.1 with oacs 5.1.4 to oacs 5.2. How did you upgrade and did you have any problems along the way?
Collapse
Posted by Jeremy Monnet on
I18N : Ok, I understand you ! Yes, you're right, that's why I thought we should provide an interface for people to add tabs. This mechanism would take care of adding the correct string where it should (in this event, it would be to add a line in the catalog xml file. I agree it may not be the best solution, but that's the best I have for now). My work is not to make the .LRN more beautiful (even if this is part of it) but to make the .LRN attractive to new comers : easy and beautiful. I know Rafael would like this theme (it goes further than just a theme, but this is the codename for now) for the next stable release, which will probably run OACS 5.1. If you can convince the consortium to move on the current 5.2 OACS release, that will be just fine for me 😊

Blank-master : My only problem is that it uses lots of css (4 if I well remember) which will be confusing in the pure theming part ... Do you know who I should talk to, in order to find an agrement to remove the unused css (3 on 4) from this template ?

Jeremy (who will start a new thread tomorrow from the office)