13 Replies Latest reply: Aug 17, 2012 2:40 PM by gwhitworth RSS

    Change navigation

    gwhitworth

      Hey Guys,

       

      I am very used to themeing Drupal, Joomla and WordPress sites and jive seems nothing like this. Does anyone know how I can make changes to the navigation, like how this community has a completely different navigation structure than the initial Jive 5 install?

        • Re: Change navigation
          Lsparks

          Greg,

           

          Creating a Jive theme is similar to creating a WordPress child theme. Because of the massive amount of styled elements in Jive, it is not really practical to create a theme from scratch like you would with WordPress or Drupal. You create a theme which then overlays the files you want to modify.

           

          The basic process would be to create a new theme, and add the files to it which you would need to overwrite to modify the menu, following the directory structure used by the core system. In Jive5 this would probably be the navlink.soy or navbar.soy files.

           

          So, you would have:

           

          mythemehomedir

                    | _soy    

                         |_nav

                              |_navbar.soy

                              |_navlink.soy                   

           

          Here are some documents with the basics:

           

          Themes Overview

          FTL Templates and Descriptions

            • Re: Change navigation
              gwhitworth

              Ok cool. Thanks for the help.

              • Re: Change navigation
                gwhitworth

                Ok, so I see the loops in the SOY files but where are the values for these navigation items. I see that FreeMarker should have a model file that is passing these values to them. Where do I find these? Thanks again.

                  • Re: Change navigation
                    Lsparks

                    Are you trying to add a new item to the nav, or modify the wording on an existing nav item?

                     

                    The soy files generally pull data from a Java bean, so you would do most of the modifications in the soy file itself. If you are adding a nav item, you can just add a new <li> element inside of the <ul id="j-globalNav"> in navbar.soy.

                     

                    If you want to modify or add text to the Activity, Communications, or Actions nav icons, you would need to check for each one in the loop in navlink.soy and then do your modifications there. You can use the i18n keys used for the link hover titles as the actual nav text, or make the conditional more specific for each nav item if you want them to say something other than their i18n title.

                     

                    This uses the standard i18n titles to display the words  Activity, Communications, or Actions next to the icons in the nav bar.

                     

                    <!-- Add in labels to Activity, Communications and Actions menu items -->

                                {if ($id != 'jive-nav-link-home') and ($id != 'jive-nav-link-apps')}

                            <a href="{buildUrl($url)|noAutoescape}" {if $titleKey}title="{i18nText($titleKey)}"{/if}

                                       class="{$linkCss} {if $extraLinkCss}{$extraLinkCss}{/if}">

                                {if ($id == 'jive-nav-link-activity') or ($id == 'jive-nav-link-inbox') or ($id == 'jive-nav-link-actions')}

                                  <span class="nav-name">{i18nText($nameKey)}</span>

                                {/if}

                                <span class="nav-link {if $nameCss}{$nameCss}{/if}">

                                    {i18nText($nameKey)}

                                </span>

                                </a>

                                {/if}

                    <!-- end label add -->

                      • Re: Change navigation
                        gwhitworth

                        So there is no way to have dynamic navs, it has to be static either from the bean or hand coded HTML?

                          • Re: Change navigation
                            Aaron Perrotte

                            We developed our nav to build dynamically off of group permissions. It's a javascript menu which goes into the soy template. Then there's a jquery call to check if an element in the nav is permissions specific if so it defaults as hidden. If the user has permission to view that page it shows the javascript nav element. This allows for different groups to have custom navs and each menu is called in on load based on permissions.

                             

                            Once again, not out of the box functionality. But with a little CSS massaging we've integrated most of JIVE's nav into our own.

                             

                            Sincerely,

                            Aaron J. Perrotte

                            • Re: Change navigation
                              Lsparks

                              It all depends on what you are trying to display dynamically. Generally you can ultimately accomplish what you want, but the level of effort is a bit (or significantly) higher than other platforms you might be used to working with. I came from a open-source background working primarily with creating custom WordPress plugins and themes, and was initially taken off-guard by how difficult things were in Jive that were simple in other systems.

                      • Re: Change navigation
                        gwhitworth

                        Ok so I was able to add in a static item, but man do I not like doing it this way. There is already an array built $link, why can't I force my $link into that and configure this in the admin area? Is there a way to manage the arrays? I am more a PHP & C# developer than a JAVA one, but there has to be a way I can push or pop an item onto the array.