Index: openacs-4/packages/theme-selva/theme-selva.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/theme-selva/theme-selva.info,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/theme-selva/theme-selva.info 26 Jul 2005 14:28:28 -0000 1.1
@@ -0,0 +1,22 @@
+
+
+
+
+ Selva Theme
+ Selva Themes
+ f
+ t
+
+
+ Jeremy Monnet
+
+
+
+
+
+
+
+
+
+
+
Index: openacs-4/packages/theme-selva/sql/postgresql/theme-selva-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/theme-selva/sql/postgresql/theme-selva-create.sql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/theme-selva/sql/postgresql/theme-selva-create.sql 26 Jul 2005 14:28:29 -0000 1.1
@@ -0,0 +1,3 @@
+UPDATE apm_parameter_values SET attr_value = '/packages/theme-selva/www/selva-master' WHERE parameter_id IN (SELECT parameter_id FROM apm_parameters WHERE parameter_name='DefaultMaster')
+
+
Index: openacs-4/packages/theme-selva/sql/postgresql/theme-selva-drop.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/theme-selva/sql/postgresql/theme-selva-drop.sql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/theme-selva/sql/postgresql/theme-selva-drop.sql 26 Jul 2005 14:28:29 -0000 1.1
@@ -0,0 +1 @@
+UPDATE apm_parameter_values SET attr_value = '/packages/dotlrn/www/dotlrn-master' WHERE parameter_id IN (SELECT parameter_id FROM apm_parameters WHERE parameter_name='DefaultMaster')
\ No newline at end of file
Index: openacs-4/packages/theme-selva/tcl/selva-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/theme-selva/tcl/selva-procs.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/theme-selva/tcl/selva-procs.tcl 26 Jul 2005 14:28:29 -0000 1.1
@@ -0,0 +1,166 @@
+# Copyright (C) 2001, 2002 MIT
+# This file is part of dotLRN.
+# dotLRN is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+# dotLRN is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+
+# tcl/portal-procs.tcl
+
+ad_library {
+
+ Selva.
+
+ @author Jeremy Monnet (jmonnet@gmail.com)
+ @creation-date June 2005
+ @version $Id: selva-procs.tcl,v 1.1 2005/07/26 14:28:29 maltes Exp $
+}
+
+namespace eval selva {
+
+ ad_proc -public portal_navbar {
+ {-user_id:required}
+ {-link_control_panel:required}
+ {-control_panel_text:required}
+ {-link_all 0}
+ {-pre_html ""}
+ {-post_html ""}
+ } {
+ A helper procedure that generates the PORTAL navbar (the thing with the portal pages on it) for dotlrn. It is called from the
+ dotlrn-master template
+ } {
+
+ set dotlrn_url [dotlrn::get_url]
+ set community_id [dotlrn_community::get_community_id]
+ set control_panel_name control-panel
+ set control_panel_url "$dotlrn_url/$control_panel_name"
+
+ if {[empty_string_p $community_id]} {
+
+ # We are not under a dotlrn community. However we could be
+ # under /dotlrn (i.e. in the user's portal) or anywhere
+ # else on the site
+
+ set link "[dotlrn::get_url]/"
+
+ if {[dotlrn::user_p \
+ -user_id $user_id]} {
+
+ # this user is a dotlrn user, show their personal
+ # portal navbar, including the control panel link
+
+ set portal_id [dotlrn::get_portal_id \
+ -user_id $user_id]
+ set show_control_panel 1
+ } else {
+
+ # not a dotlrn user, so no user portal to show
+
+ set portal_id {}
+ set show_control_panel 0
+ }
+ } else {
+
+ # We are under a dotlrn community. Get the community's
+ # portal_id, etc.
+
+ # some defaults
+
+ set text [dotlrn_community::get_community_header_name $community_id]
+ set control_panel_name one-community-admin
+
+ # link is important : it sets the options_set value, which
+ # will be used later to select the current page
+
+ set link [dotlrn_community::get_community_url $community_id]
+ set control_panel_url "$link/$control_panel_name"
+
+ # figure out what this privs this user has on the community
+
+ set admin_p [dotlrn::user_can_admin_community_p \
+ -user_id $user_id \
+ -community_id $community_id
+ ]
+
+ if {!$admin_p} {
+
+ # the user can't admin this community, perhaps they
+ # are a humble member instead?
+
+ set member_p [dotlrn_community::member_p $community_id $user_id]
+ set show_control_panel 0
+ } else {
+
+ # admins always get the control_panel_link, unless
+ # it's explictly turned off
+
+ set show_control_panel 1
+ }
+
+ if {$admin_p
+ || $member_p} {
+
+ set portal_id [dotlrn_community::get_portal_id \
+ -community_id $community_id
+ ]
+ } else {
+
+ # show this person the comm's non-member-portal
+
+ set portal_id [dotlrn_community::get_non_member_portal_id \
+ -community_id $community_id
+ ]
+ }
+ }
+
+ #AG: This code belongs in the portal package, near portal::navbar.
+ #AFor display reasons we need to do this s a ul instead of a table,
+ #Awhich portal::navbar returns. Obviously we shouldn't be letting
+ #Adisplay-level #stuff decide where we put our code, but first we'll
+ #Aneed to mod the portal package accordingly.
+
+ set page_num [ns_queryget page_num]
+
+ #Strip out extra anchors and other crud. #page_num will be
+ #Sempty_string for special pages like #My Space and Control
+ #SPanel
+
+ regsub -all {[^0-9]} $page_num {} page_num
+
+ set navbar "
\n"
+
+ db_foreach list_page_nums_select {} {
+ if {("$dotlrn_url/" == [ad_conn url]
+ || "$dotlrn_url/index" == [ad_conn url]) && $sort_key == 0 && $page_num == ""} {
+
+ # active tab is first tab and page_num may be ""
+
+ append navbar "\n
"
+ }
+ }
+
+ # Common code for the the behavior of the control panel link
+ # (class administration or my account)
+
+ if {$show_control_panel} {
+ if {$link_control_panel} {
+ append navbar "
"
+ }
+}
\ No newline at end of file
Index: openacs-4/packages/theme-selva/tcl/selva-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/theme-selva/tcl/selva-procs.xql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/theme-selva/tcl/selva-procs.xql 26 Jul 2005 14:28:29 -0000 1.1
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+ select pretty_name,
+ sort_key
+ from portal_pages
+ where portal_id = :portal_id
+ order by sort_key
+
+
+
+
+
\ No newline at end of file
Index: openacs-4/packages/theme-selva/www/selva-blank-master.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/theme-selva/www/selva-blank-master.adp,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/theme-selva/www/selva-blank-master.adp 26 Jul 2005 14:28:29 -0000 1.1
@@ -0,0 +1,40 @@
+@doc_type;noquote@
+
+
+
+ @title;noquote@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @header_stuff;noquote@
+
+ @attribute.key@="@attribute.value@">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: openacs-4/packages/theme-selva/www/selva-blank-master.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/theme-selva/www/selva-blank-master.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/theme-selva/www/selva-blank-master.tcl 26 Jul 2005 14:28:29 -0000 1.1
@@ -0,0 +1,94 @@
+# /www/master-default.tcl
+#
+# Set basic attributes and provide the logical defaults for variables that
+# aren't provided by the slave page.
+#
+# Author: Kevin Scaldeferri (kevin@arsdigita.com)
+# Creation Date: 14 Sept 2000
+# $Id: selva-blank-master.tcl,v 1.1 2005/07/26 14:28:29 maltes Exp $
+#
+
+# fall back on defaults
+
+if { [template::util::is_nil doc_type] } {
+ set doc_type {}
+}
+
+if { [template::util::is_nil title] } {
+ set title [ad_conn instance_name]
+}
+
+#AG: Markup in tags doesn't render well.
+set title [ns_striphtml $title]
+
+
+if { ![info exists header_stuff] } {
+ set header_stuff {}
+}
+
+
+# Attributes
+
+multirow create attribute key value
+
+set onload {}
+
+# Handle htmlArea widget, which needs special javascript and css in the page header
+global acs_blank_master__htmlareas
+if { [info exists acs_blank_master__htmlareas] } {
+ foreach htmlarea_id $acs_blank_master__htmlareas {
+ append header_stuff ""
+ lappend onload "acs_initHtmlArea(editor_var_${htmlarea_id}, '${htmlarea_id}');"
+ }
+}
+
+if { ![template::util::is_nil focus] } {
+ # Handle elements where the name contains a dot
+ if { [regexp {^([^.]*)\.(.*)$} $focus match form_name element_name] } {
+ lappend onload "acs_Focus('${form_name}', '${element_name}');"
+ }
+}
+
+multirow append attribute onload [join $onload " "]
+
+# Additional Body Attributes
+
+if {[exists_and_not_null body_attributes]} {
+ foreach body_attribute $body_attributes {
+ multirow append attribute [lindex $body_attribute 0] [lindex $body_attribute 1]
+ }
+} else {
+ set body_attributes ""
+}
+
+# Header links (stylesheets, javascript)
+multirow create header_links rel type href media
+#multirow append header_links "stylesheet" "text/css" "/resources/acs-templating/lists.css" "all"
+#multirow append header_links "stylesheet" "text/css" "/resources/acs-templating/forms.css" "all"
+#multirow append header_links "stylesheet" "text/css" "/resources/acs-subsite/default-master.css" "all"
+
+# Developer-support: We include that here, so that master template authors don't have to worry about it
+
+if { [llength [namespace eval :: info procs ds_show_p]] == 1 } {
+ set developer_support_p 1
+} else {
+ set developer_support_p 0
+}
+
+set translator_mode_p [lang::util::translator_mode_p]
+
+set openacs_version [ad_acs_version]
+
+# Toggle translator mode link
+
+set acs_lang_url [apm_package_url_from_key "acs-lang"]
+if { [empty_string_p $acs_lang_url] } {
+ set lang_admin_p 0
+} else {
+ set lang_admin_p [permission::permission_p \
+ -object_id [site_node::get_element -url $acs_lang_url -element object_id] \
+ -privilege admin \
+ -party_id [ad_conn untrusted_user_id]]
+}
+set toggle_translator_mode_url [export_vars -base "${acs_lang_url}admin/translator-mode-toggle" { { return_url [ad_return_url] } }]
+
Index: openacs-4/packages/theme-selva/www/selva-master.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/theme-selva/www/selva-master.adp,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/theme-selva/www/selva-master.adp 26 Jul 2005 14:28:29 -0000 1.1
@@ -0,0 +1,28 @@
+
+
+ @header_stuff;noquote@
+
+ @context;noquote@
+ @context_bar;noquote@
+ @focus;noquote@
+ @doc_type;noquote@
+
+
+@subnavbar;noquote@
+
+
+
+
+ @navbar;noquote@
+
+
+
+
+
+
+
+
+
Index: openacs-4/packages/theme-selva/www/selva-master.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/theme-selva/www/selva-master.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/theme-selva/www/selva-master.tcl 26 Jul 2005 14:28:29 -0000 1.1
@@ -0,0 +1,415 @@
+# Copyright (C) 2001, 2002 MIT
+#
+# This file is part of dotLRN.
+#
+# dotLRN is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# dotLRN is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+#
+# /www/dotlrn-master.tcl
+#
+# This is the "default-master" template for dotlrn sites.
+#
+# Instructions:
+#
+# 1. Put this file and it's .adp file into the server's /www directory.
+# That's the one with the "default-master" tcl and adp files. You don't
+# have to edit or remove the "default-master" files, since they will be
+# ignored by the next step.
+#
+# 2. Change the "Main Site"'s "DefaultMaster" parameter
+# from "/www/default-master" to "/www/dotlrn-master"
+# at http://yoursite.com/admin/site-map
+#
+# This tells OpenACS to to use these files instead of the "default-master"
+#
+# 3. Edit these files to chage the look of the site including the banner
+# at the top of the page, the title of the pages, the fonts of the portlets, etc.
+#
+# WARNING: All current portlet themes (table, deco, nada, etc) depend on some
+# of the CSS defined below. Be carefull when you edit the CSS below,
+# and check how themes use it.
+#
+#
+# Author: Arjun Sanyal (arjun@openforce.net), yon@openforce.net
+#
+# $Id: selva-master.tcl,v 1.1 2005/07/26 14:28:29 maltes Exp $
+
+set user_id [ad_get_user_id]
+set community_id [dotlrn_community::get_community_id]
+set dotlrn_url [dotlrn::get_url]
+
+# Hack for title and context bar outside of dotlrn
+
+set in_dotlrn_p [expr [string match "[dotlrn::get_url]/*" [ad_conn url]]]
+
+
+
+#Scope Related graphics/css parameters
+# Set everything for user level scope as default then modify it later as we refine the scope.
+set scope_name "user"
+set scope_main_color "#003366"
+set scope_header_color "#6DB2C9"
+set scope_highlight_text "white"
+set scope_z_dark "#C9D7DC"
+set scope_z_light "#EAF0F2"
+set scope_light_border "#DDEBF5"
+set help_url "[dotlrn::get_url]/control-panel"
+set header_font "Arial, Helvetica, sans-serif"
+set header_font_size "medium"
+set header_font_color "black"
+set header_logo_item_id ""
+set header_img_url "/resources/dotlrn/logo"
+set header_img_file "[acs_root_dir]/packages/dotlrn/www/resources/logo"
+set header_img_alt_text "Header Logo"
+
+set extra_spaces ""
+set td_align "align=\"center\" valign=\"top\""
+
+if {[dotlrn::user_p -user_id $user_id]} {
+ set portal_id [dotlrn::get_portal_id -user_id $user_id]
+}
+
+if {![empty_string_p $community_id]} {
+ set have_comm_id_p 1
+} else {
+ set have_comm_id_p 0
+}
+
+if {[exists_and_not_null portal_id]} {
+ set have_portal_id_p 1
+} else {
+ set have_portal_id_p 0
+}
+
+# navbar vars
+set show_navbar_p 1
+if {[exists_and_not_null no_navbar_p] && $no_navbar_p} {
+ set show_navbar_p 0
+}
+
+if {![info exists link_all]} {
+ set link_all 0
+}
+
+if {![info exists return_url]} {
+ set link [ad_conn -get extra_url]
+} else {
+ set link $return_url
+}
+
+if {![info exists link_control_panel]} {
+ set link_control_panel 1
+}
+
+if { ![string equal [ad_conn package_key] [dotlrn::package_key]] } {
+ # Peter M: We are in a package (an application) that may or may not be under a dotlrn instance
+ # (i.e. in a news instance of a class)
+ # and we want all links in the navbar to be active so the user can return easily to the class homepage
+ # or to the My Space page
+ set link_all 1
+}
+
+if {$have_comm_id_p} {
+ # in a community or just under one in a mounted package like /calendar
+ # get this comm's info
+ set control_panel_text "Administer"
+
+ set portal_id [dotlrn_community::get_portal_id -community_id $community_id]
+ set text [dotlrn_community::get_community_header_name $community_id]
+ set link [dotlrn_community::get_community_url $community_id]
+ set admin_p [dotlrn::user_can_admin_community_p -user_id $user_id -community_id $community_id]
+
+ if {[empty_string_p $portal_id] && !$admin_p } {
+ # not a member yet
+ set portal_id [dotlrn_community::get_non_member_portal_id -community_id $community_id]
+ }
+
+ if { $have_portal_id_p && $show_navbar_p } {
+ set make_navbar_p 1
+
+ } else {
+ set make_navbar_p 0
+ set portal_id ""
+ }
+} elseif {[parameter::get -parameter community_type_level_p] == 1} {
+ set control_panel_text "Administer"
+
+ set extra_td_html ""
+ set link_all 1
+ set link [dotlrn::get_url]
+ # in a community type
+ set text \
+ [dotlrn_community::get_community_type_name [dotlrn_community::get_community_type]]
+
+ if {$have_portal_id_p && $show_navbar_p} {
+ set make_navbar_p 1
+ } else {
+ set make_navbar_p 0
+ set portal_id ""
+ }
+} else {
+ # we could be anywhere (maybe under /dotlrn, maybe not)
+ set control_panel_text "My Account"
+ set link "[dotlrn::get_url]/"
+ set community_id ""
+ set text ""
+ set make_navbar_p 1
+ if {$have_portal_id_p && $show_navbar_p} {
+ } else {
+ set make_navbar_p 0
+ set portal_id ""
+ }
+}
+
+# Set up some basic stuff
+set user_id [ad_get_user_id]
+if { [ad_conn untrusted_user_id] == 0 } {
+ set user_name {}
+} else {
+ set user_name [acs_user::get_element -user_id [ad_conn untrusted_user_id] -element name]
+}
+
+if {![exists_and_not_null title]} {
+ set title [ad_system_name]
+}
+
+if {[empty_string_p [dotlrn_community::get_parent_community_id -package_id [ad_conn package_id]]]} {
+ set parent_comm_p 0
+} else {
+ set parent_comm_p 1
+}
+
+set community_id [dotlrn_community::get_community_id]
+
+set control_panel_text [_ "dotlrn.control_panel"]
+
+if {![empty_string_p $community_id]} {
+ # in a community or just under one in a mounted package like /calendar
+ set comm_type [dotlrn_community::get_community_type_from_community_id $community_id]
+ set control_panel_text [_ acs-subsite.Admin]
+
+ if {[dotlrn_community::subcommunity_p -community_id $community_id]} {
+ #The colors for a subgroup are set by the parent group with a few overwritten.
+ set comm_type [dotlrn_community::get_community_type_from_community_id [dotlrn_community::get_parent_id -community_id $community_id]]
+ }
+
+ if {$comm_type == "dotlrn_club"} {
+ #community colors
+ set scope_name "comm"
+ set scope_main_color "#CC6633"
+ set scope_header_color "#F48F5C"
+ set scope_z_dark "#FFDDB0"
+ set scope_z_light "#FFF2E2"
+ set scope_light_border "#E7B59C"
+ if {[dotlrn_community::subcommunity_p -community_id $community_id]} {
+ set scope_z_dark "#FFDDB0"
+ set scope_z_light "#FFF2E2"
+ }
+ } else {
+ set scope_name "course"
+ set scope_main_color "#6C9A83"
+ set scope_header_color $scope_main_color
+ set scope_z_dark "#CDDED5"
+ set scope_z_light "#E6EEEA"
+ set scope_light_border "#D0DFD9"
+ if {[dotlrn_community::subcommunity_p -community_id $community_id]} {
+ set scope_z_dark "#D0DFD9"
+ set scope_z_light "#ECF3F0"
+ }
+ }
+
+ # DRB: default logo for dotlrn is a JPEG provided by Collaboraid. This can
+ # be replaced by custom gifs if prefered (as is done by SloanSpace)
+
+ if { [file exists "$header_img_file-$scope_name.jpg"] } {
+ set header_img_url "$header_img_url-$scope_name.jpg"
+ } elseif { [file exists "$header_img_file-$scope_name.gif"] } {
+ set header_img_url "$header_img_url-$scope_name.gif"
+ }
+
+ # set header_img_url "$header_img_url-$scope_name.gif"
+
+ # font hack
+ set community_header_font [dotlrn_community::get_attribute \
+ -community_id $community_id \
+ -attribute_name header_font
+ ]
+
+ if {![empty_string_p $community_header_font]} {
+ set header_font "$community_header_font,$header_font"
+ }
+
+
+ set header_font_size [dotlrn_community::get_attribute \
+ -community_id $community_id \
+ -attribute_name header_font_size
+ ]
+
+ set header_font_color [dotlrn_community::get_attribute \
+ -community_id $community_id \
+ -attribute_name header_font_color
+ ]
+
+ # logo hack
+ set header_logo_item_id [dotlrn_community::get_attribute \
+ -community_id $community_id \
+ -attribute_name header_logo_item_id
+ ]
+
+ if {![empty_string_p $header_logo_item_id]} {
+
+ # Need filename
+ set header_img_url "[dotlrn_community::get_community_url $community_id]/file-storage/download/?version_id=$header_logo_item_id"
+ }
+
+
+ set header_logo_alt_text [dotlrn_community::get_attribute \
+ -community_id $community_id \
+ -attribute_name header_logo_alt_text
+ ]
+
+ if {![empty_string_p $header_logo_alt_text]} {
+ set header_img_alt_text $header_logo_alt_text
+ }
+
+ set text [dotlrn::user_context_bar -community_id $community_id]
+
+ if { [string equal [ad_conn package_key] [dotlrn::package_key]] } {
+ set text "$text"
+ }
+
+} elseif {[parameter::get -parameter community_type_level_p] == 1} {
+ # in a community type (subject)
+ set text \
+ [dotlrn_community::get_community_type_name [dotlrn_community::get_community_type]]
+} else {
+ # under /dotlrn
+
+ # DRB: default logo for dotlrn is a JPEG provided by Collaboraid. This can
+ # be replaced by custom gifs if prefered (as is done by SloanSpace)
+
+ if { [file exists "$header_img_file-$scope_name.jpg"] } {
+ set header_img_url "$header_img_url-$scope_name.jpg"
+ } elseif { [file exists "$header_img_file-$scope_name.gif"] } {
+ set header_img_url "$header_img_url-$scope_name.gif"
+ }
+
+ set text ""
+}
+
+if { $make_navbar_p } {
+ if {$link_control_panel} {
+ set link_control_panel 1
+ } else {
+ set link_control_panel 0
+ }
+ set extra_spaces ""
+ #set subnavbar [selva::portal_navbar]
+ if {$in_dotlrn_p == 1} {
+ set navbar [selva::portal_navbar \
+ -user_id $user_id \
+ -link_control_panel $link_control_panel \
+ -control_panel_text $control_panel_text \
+ -pre_html "$extra_spaces" \
+ -post_html $extra_spaces \
+ -link_all $link_all
+ ]
+ } else {
+ set navbar ""
+ if {[exists_and_not_null navbar_list]} {
+ set navbar "
+You can create a new theme by copying /packages/new-portal/www/themes/selva-theme.adp to /packages/new-portal/www/themes/yourtheme.adp
+and the directory (that conpatins the theme's images) sloan-theme to yourtheme-theme.
+
+This changes the inside of the portlet.
+
+(still do not know how to get it listed in /dotlrn/admin/templates)
+
+
+
+changed main-navigation for portal navigation class in /packages/dotlrn/tcl/navigation-procs.tcl
+
+
+