Changeset 139


Ignore:
Timestamp:
Sep 28, 2009, 10:01:43 AM (13 years ago)
Author:
gav
Message:

Install Navigation plugin, work on navigation and hopefully fixed a few more IE vs Firefox CSS issues.
New skin for class-diagram plugin.
Adjust security config to suite.
Replace home.gsp with start.gsp, remove options.gsp and acknowledgements.gsp as they are now on start.gsp tabs.
Create search pages for Tasks, Assets and Inventory.
Change suggested login to manager.
Change all date formats to format="EEE, dd-MMM-yyyy".

Location:
trunk
Files:
5 added
4 deleted
33 edited

Legend:

Unmodified
Added
Removed
  • trunk/application.properties

    r138 r139  
    11#utf-8
    2 #Thu Sep 17 12:53:38 EST 2009
     2#Sun Sep 20 20:21:33 EST 2009
    33plugins.acegi=0.5.1
     4plugins.navigation=1.1
    45app.version=
    56plugins.class-diagram=0.3
  • trunk/grails-app/conf/Config.groovy

    r58 r139  
    6868}
    6969
     70//log4j.logger.org.springframework.security='off,stdout'
    7071
     72/** Navigation plugin menu.
     73   * The top level titles are taken from i18n message bundles.
     74   * Subitems i18n message bundles are not currently resolving with this plugin.
     75   */
     76navigation.nav = [
     77    [order:10, controller:'appCore', title:'home', action:'start',
     78        subItems: [
     79            [order:10, controller:'appCore', title:'Start', action:'start', isVisible: { true }],
     80            [order:20, controller:'appCore', title:'Manager', action:'manager', isVisible: { authenticateService.ifAllGranted('ROLE_Manager') }],
     81            [order:30, controller:'appCore', title:'Admin', action:'appAdmin', isVisible: { authenticateService.ifAllGranted('ROLE_AppAdmin') }],
     82            [order:90, controller:'appCore', title:'Timeout', action:'changeSessionTimeout', isVisible: { params.action == 'changeSessionTimeout' }],
     83            [order:91, controller:'appCore', title:'Password', action:'changePassword', isVisible: { params.action == 'changePassword' }],
     84        ]
     85    ],
     86    [order:20, controller:'taskDetailed', title:'tasks', action:'search',
     87        subItems: [
     88            [order:10, controller:'taskDetailed', title:'Search', action:'search', isVisible: { true }],
     89            [order:20, controller:'taskDetailed', title:'Create', action:'create', isVisible: { true }],
     90            [order:90, controller:'taskDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
     91            [order:91, controller:'taskDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
     92        ]
     93    ],
     94    [order:30, controller:'inventoryItemDetailed', title:'inventory', action:'search',
     95        subItems: [
     96            [order:10, controller:'inventoryItemDetailed', title:'Search', action:'search', isVisible: { true }],
     97            [order:20, controller:'inventoryItemDetailed', title:'Create', action:'create', isVisible: { true }],
     98            [order:90, controller:'inventoryItemDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
     99            [order:91, controller:'inventoryItemDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
     100        ]
     101    ],
     102    [order:40, controller:'assetDetailed', title:'assets', action:'search',
     103        subItems: [
     104            [order:10, controller:'assetDetailed', title:'Search', action:'search', isVisible: { true }],
     105            [order:20, controller:'assetDetailed', title:'Create', action:'create', isVisible: { true }],
     106            [order:90, controller:'assetDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
     107            [order:91, controller:'assetDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
     108        ]
     109    ]
     110]
    71111
    72 
    73 //log4j.logger.org.springframework.security='off,stdout'
     112/** Class-diagram plugin overrides.
     113  *
     114  */
     115classDiagram {
     116    associations {
     117        arrows {
     118            // See http://www.graphviz.org/doc/info/arrows.html for available arrowheads and their visual appearance
     119            references = "open"
     120            belongsTo = "odiamond"
     121            embedded = "diamond"
     122            inherits = "onormal"
     123            none = "none"
     124        }
     125        decorators {
     126            // plain text to be shown on edge ends
     127            hasOne = "1"
     128            hasMany = "*"
     129            none = ""
     130        }
     131    }
     132    skins {
     133        classicSpacey {
     134            name = " Classic Spacey"
     135            graphStyle = [bgcolor:"none", mclimit:100, nodesep:'1.5 equally', ranksep:'2 equally' ]
     136            nodeStyle = [style:"rounded,filled", color:"blue", fillcolor:"azure2", fontname:"Verdana", fontsize:18]
     137            edgeStyle = [color:"gray40", fontname:"Verdana", fontsize:18, labelfontsize:20, labeldistance:3.5]
     138        }
     139    }
     140}
  • trunk/grails-app/conf/SecurityConfig.groovy

    r138 r139  
    4040    '/js/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
    4141    '/plugins/help-balloons-1.2/**': ['IS_AUTHENTICATED_FULLY'],
    42      '/plugins/richui-0.6/**': ['IS_AUTHENTICATED_FULLY'],
    43      '/plugins/class-diagram-0.3/**': ['IS_AUTHENTICATED_FULLY'],
     42    '/plugins/richui-0.6/**': ['IS_AUTHENTICATED_FULLY'],
     43    '/plugins/navigation-1.1/**': ['IS_AUTHENTICATED_FULLY'],
     44    '/plugins/class-diagram-0.3/**': ['IS_AUTHENTICATED_FULLY'],
     45    '/classDiagram*': ['IS_AUTHENTICATED_FULLY'],
    4446    '/classDiagram/**': ['IS_AUTHENTICATED_FULLY'],
    4547    '/login*': ['IS_AUTHENTICATED_ANONYMOUSLY'],
  • trunk/grails-app/controllers/AppCoreController.groovy

    r134 r139  
    55    def authenticateService
    66
    7     def index = { redirect(action:home,params:params) }
     7    def index = { redirect(action:start,params:params) }
    88
    99    // the delete, save and update actions only accept POST requests
    1010    //def allowedMethods = [delete:'POST', save:'POST', update:'POST']
    1111
     12    /**
     13    * This is where we arrive after login.
     14    *  Attach the welcome flash message and redirect to where ever we want the user to start.
     15    * e.g. redirect(controller:"taskDetailed", action:"search")
     16    */
    1217    def welcome = {
    1318        def personInstance = Person.get(authenticateService.userDomain().id)
     
    1621        def sess = getSession()
    1722        sess.setMaxInactiveInterval(personInstance.sessionTimeout)
    18         redirect(action:home)
     23        redirect(action:start)
    1924    }
    2025
    21     def home = {
    22     }
    23 
    24     def options = {
    25     }
    26 
    27     def acknowledgements = {
     26    def start = {
    2827    }
    2928
     
    3534        if (request.method == 'POST') {
    3635            def personInstance = Person.get(authenticateService.userDomain().id)
    37 //             personInstance.sessionTimeout = params.sessionTimeout.toInteger()
    3836                personInstance.properties = params
    3937                if (!personInstance.hasErrors() && personInstance.save()) {
     
    4139                    sess.setMaxInactiveInterval(personInstance.sessionTimeout)
    4240                    flash.message = "Session timeout changed."
    43                     redirect(action:options)
     41                    redirect(action:start)
    4442                }
    4543                else {
     
    6866                    //userCache.removeUserFromCache(personInstance.loginName)
    6967                    flash.message = "Password changed successfully."
    70                     redirect(action:options)
     68                    redirect(action:start)
    7169                }
    7270                else {
  • trunk/grails-app/controllers/AssetDetailedController.groovy

    r124 r139  
    33class AssetDetailedController extends BaseController {
    44   
    5     def index = { redirect(action:list,params:params) }
     5    def index = { redirect(action:search,params:params) }
    66
    77    // the delete, save and update actions only accept POST requests
     
    1313    }
    1414
     15    def search = {
     16        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
     17        [ assetInstanceList: Asset.list( params ), assetInstanceTotal: Asset.count() ]
     18    }
     19
    1520    def show = {
     21       
     22        // In the case of an actionSubmit button, rewrite action name from 'index'.
     23        if(params._action_Show)
     24        { params.action='show' }
     25       
    1626        def assetInstance = Asset.get( params.id )
    1727
    1828        if(!assetInstance) {
    1929            flash.message = "Asset not found with id ${params.id}"
    20             redirect(action:list)
     30            redirect(action:search)
    2131        }
    2232        else { return [ assetInstance : assetInstance ] }
     
    2939                assetInstance.delete()
    3040                flash.message = "Asset ${params.id} deleted"
    31                 redirect(action:list)
     41                redirect(action:search)
    3242            }
    3343            catch(org.springframework.dao.DataIntegrityViolationException e) {
     
    3848        else {
    3949            flash.message = "Asset not found with id ${params.id}"
    40             redirect(action:list)
     50            redirect(action:search)
    4151        }
    4252    }
    4353
    4454    def edit = {
     55       
     56        // In the case of an actionSubmit button, rewrite action name from 'index'.
     57        if(params._action_Edit)
     58        { params.action='edit' }
     59       
    4560        def assetInstance = Asset.get( params.id )
    4661
    4762        if(!assetInstance) {
    4863            flash.message = "Asset not found with id ${params.id}"
    49             redirect(action:list)
     64            redirect(action:search)
    5065        }
    5166        else {
  • trunk/grails-app/controllers/InventoryItemDetailedController.groovy

    r116 r139  
    33class InventoryItemDetailedController extends BaseController {
    44   
    5     def index = { redirect(action:list,params:params) }
     5    def index = { redirect(action:search, params:params) }
    66
    77    // the delete, save and update actions only accept POST requests
     
    1313    }
    1414
     15    def search = {
     16        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
     17        [ inventoryItemInstanceList: InventoryItem.list( params ), inventoryItemInstanceTotal: InventoryItem.count() ]
     18    }
     19
    1520    def show = {
     21       
     22        // In the case of an actionSubmit button, rewrite action name from 'index'.
     23        if(params._action_Show)
     24        { params.action='show' }
     25       
    1626        def inventoryItemInstance = InventoryItem.get( params.id )
    1727
    1828        if(!inventoryItemInstance) {
    1929            flash.message = "InventoryItem not found with id ${params.id}"
    20             redirect(action:list)
     30            redirect(action:search)
    2131        }
    2232        else { return [ inventoryItemInstance : inventoryItemInstance ] }
     
    2939                inventoryItemInstance.delete()
    3040                flash.message = "InventoryItem ${params.id} deleted"
    31                 redirect(action:list)
     41                redirect(action:search)
    3242            }
    3343            catch(org.springframework.dao.DataIntegrityViolationException e) {
     
    3848        else {
    3949            flash.message = "InventoryItem not found with id ${params.id}"
    40             redirect(action:list)
     50            redirect(action:search)
    4151        }
    4252    }
    4353
    4454    def edit = {
     55       
     56        // In the case of an actionSubmit button, rewrite action name from 'index'.
     57        if(params._action_Edit)
     58        { params.action='edit' }
     59       
    4560        def inventoryItemInstance = InventoryItem.get( params.id )
    4661
    4762        if(!inventoryItemInstance) {
    4863            flash.message = "InventoryItem not found with id ${params.id}"
    49             redirect(action:list)
     64            redirect(action:search)
    5065        }
    5166        else {
  • trunk/grails-app/controllers/TaskDetailedController.groovy

    r137 r139  
    22
    33class TaskDetailedController extends BaseController {
    4    
    5     def index = { redirect(action:list,params:params) }
     4
     5    def index = {
     6        println "index called"
     7        redirect(action:search,params:params)
     8    }
    69
    710    // the delete, save and update actions only accept POST requests
    811    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
    9 
    10 //     def list = {
    11 //         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
    12 //         def taskInstanceActives = Task.findAllByIsActive( true ).list( params )
    13 // //         def taskInstanceList = taskInstanceActives.list( params )
    14 //         return [ taskInstanceList: taskInstanceList, taskInstanceTotal: taskInstanceActives.count() ]
    15 //     }
    1612
    1713    def list = {
     
    2016    }
    2117
     18    def search = {
     19        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
     20       
     21        if(!params.order) {
     22            params.sort = "id"
     23            params.order = "desc"
     24        }
     25       
     26        if(params.search == "ShowAll")
     27        {
     28            def taskInstanceActivesList = Task.findAllByIsActive(true, params)
     29            def taskInstanceActivesTotal = Task.countByIsActive(true)
     30            return [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
     31        }
     32        if(params.search == "ShowDeleted")
     33        {
     34            def taskInstanceActivesList = Task.findAllByIsActive(false, params)
     35            def taskInstanceActivesTotal = Task.countByIsActive(false)
     36            return [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
     37        }
     38        // Default:
     39        def taskInstanceActivesList = Task.findAllByIsActive(true, params)
     40        def taskInstanceActivesTotal = Task.countByIsActive(true)
     41        [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
     42    }
     43   
     44    def searchShowAll = {
     45        redirect(action:'search', params:[search:"ShowAll"])
     46    }
     47   
     48    def searchShowDeleted = {
     49        redirect(action:'search', params:[search:"ShowDeleted"])
     50    }
     51
    2252    def show = {
     53       
     54        // In the case of an actionSubmit button, rewrite action name from 'index'.
     55        if(params._action_Show)
     56        { params.action='show' }
     57
    2358        def taskInstance = Task.get( params.id )
    2459
    2560        if(!taskInstance) {
    2661            flash.message = "Task not found with id ${params.id}"
    27             redirect(action:list)
     62            redirect(action:search)
    2863        }
    2964        else {
     
    86121                taskInstance.isActive = false
    87122                flash.message = "Task ${params.id} has been set to inactive."
    88                 redirect(action:list)
     123                redirect(action:search)
    89124            }
    90125            catch(org.springframework.dao.DataIntegrityViolationException e) {
     
    95130        else {
    96131            flash.message = "Task not found with id ${params.id}"
    97             redirect(action:list)
     132            redirect(action:search)
    98133        }
    99134    }
    100135
    101136    def edit = {
     137       
     138        // In the case of an actionSubmit button, rewrite action name from 'index'.
     139        if(params._action_Edit)
     140        { params.action='edit' }
     141       
    102142        def taskInstance = Task.get( params.id )
    103143
    104144        if(!taskInstance) {
    105145            flash.message = "Task not found with id ${params.id}"
    106             redirect(action:list)
     146            redirect(action:search)
    107147        }
    108148        else {
     
    166206        if(!parentTaskInstance) {
    167207            flash.message = "Task not found with id ${params.id}"
    168             redirect(action:list)
     208            redirect(action:search)
    169209        }
    170210        else {
  • trunk/grails-app/domain/Person.groovy

    r127 r139  
    1515
    1616    /* Set after login by 'welcome' action, default to 12 hours, aka "sess.setMaxInactiveInterval(seconds) */
    17     Integer sessionTimeout = 720
     17    Integer sessionTimeout = 43200
    1818
    1919        /** MD5 Password */
     
    4545        //So we need to use pass for validation then encode it for above.
    4646        pass(blank: false, minSize:4)
    47         sessionTimeout(min:60, max:720)
     47        sessionTimeout(min:60, max:43200)
    4848
    4949        }
  • trunk/grails-app/i18n/messages.properties

    r137 r139  
    5454typeMismatch.java.math.BigInteger=Property {0} must be a valid number
    5555
     56# Navigation plugin, see conf/Config.groovy for menu's.
     57# Subitems are not currently resolving with this plugin.
     58navigation.nav.home=Home
     59navigation.nav.home.start=Start
     60navigation.nav.home.appAdmin=Admin
     61navigation.nav.home.manager=Manager
     62navigation.nav.home.changeSessionTimeout=Timeout
     63navigation.nav.home.changePassword=Password
    5664
     65navigation.nav.tasks=Tasks
     66navigation.nav.tasks.create=Create
     67navigation.nav.tasks.search=Search
     68navigation.nav.tasks.show=Show
     69
     70navigation.nav.inventory=Inventory
     71navigation.nav.assets=Assets
  • trunk/grails-app/views/appCore/appAdmin.gsp

    r116 r139  
    44        <meta name="layout" content="main" />
    55        <title>Admin</title>
     6        <nav:resources override="true"/>
    67    </head>
    78    <body>
    89        <div class="nav">
    9             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
     10            <nav:renderSubItems group="nav"/>
    1011        </div>
    1112        <div class="body">
  • trunk/grails-app/views/appCore/changePassword.gsp

    r101 r139  
    11<head>
    2         <meta name="layout" content="main" />
    3         <title>Change Password</title>
     2    <meta name="layout" content="main" />
     3    <title>Change Password</title>
     4    <nav:resources override="true"/>
    45</head>
    56
    67<body onload="document.changePasswordForm.pass.focus();">
    7         <div class="nav">
    8                 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
     8    <div class="nav">
     9        <nav:renderSubItems group="nav"/>
    910    </div>
    1011
    11         <div class="body">
    12                 <h1>Change Password</h1>
    13                 <g:if test="${flash.message}">
    14                 <div class="message">${flash.message}</div>
    15                 </g:if>
    16                 <g:hasErrors bean="${personInstance}">
    17                 <div class="errors">
    18                         <g:renderErrors bean="${personInstance}" as="list" />
    19                 </div>
    20                 </g:hasErrors>
     12    <div class="body">
     13        <g:if test="${flash.message}">
     14        <div class="message">${flash.message}</div>
     15        </g:if>
     16        <g:hasErrors bean="${personInstance}">
     17        <div class="errors">
     18            <g:renderErrors bean="${personInstance}" as="list" />
     19        </div>
     20        </g:hasErrors>
    2121
    22                 <g:form name="changePasswordForm" id="changePasswordForm">
    23                         <div class="dialog">
    24                                 <table>
    25                                 <tbody>
     22            <g:form name="changePasswordForm" id="changePasswordForm">
     23                <div class="dialog">
     24                    <table>
     25                        <tbody>
    2626
    27                                         <tr class="prop">
    28                                                 <td valign="top" class="name"><label for="pass">Password:</label></td>
    29                                                 <td valign="top" class="value ${hasErrors(bean:personInstance,field:'pass','errors')}">
    30                                                         <input type="password" id="pass" name="pass" />
    31                                                 </td>
    32                                         </tr>
     27                        <tr class="prop">
     28                            <td valign="top" class="name"><label for="pass">Password:</label></td>
     29                            <td valign="top" class="value ${hasErrors(bean:personInstance,field:'pass','errors')}">
     30                                <input type="password" id="pass" name="pass" />
     31                            </td>
     32                        </tr>
    3333
    34                     <tr class="prop">
    35                         <td valign="top" class="name"><label for="confirmPass">Confirm password:</label></td>
    36                         <td valign="top" class="value">
    37                             <input type="password" id="confirmPass" name="confirmPass" />
    38                         </td>
    39                     </tr>
     34                        <tr class="prop">
     35                            <td valign="top" class="name"><label for="confirmPass">Confirm password:</label></td>
     36                            <td valign="top" class="value">
     37                                <input type="password" id="confirmPass" name="confirmPass" />
     38                            </td>
     39                        </tr>
    4040
    41                                 </tbody>
    42                                 </table>
    43                         </div>
     41                    </tbody>
     42                </table>
     43            </div>
    4444
    45                         <div class="buttons">
    46                                 <span class="button"><g:actionSubmit class="save" value="Change Password" action="changePassword"/></span>
    47                         </div>
    48                 </g:form>
     45            <div class="buttons">
     46                <span class="button"><g:actionSubmit class="save" value="Change Password" action="changePassword"/></span>
     47            </div>
     48        </g:form>
    4949
    50         </div>
     50    </div>
    5151
    5252</body>
  • trunk/grails-app/views/appCore/changeSessionTimeout.gsp

    r127 r139  
    22        <meta name="layout" content="main" />
    33        <title>Change Session Timeout</title>
     4    <nav:resources override="true"/>
    45</head>
    56
    6 <body onload="document.changeSessionTimeoutForm.sessionTimeout.focus();">
    7         <div class="nav">
    8                 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
     7<body onload="document.changeSessionTimeoutForm.sessionTimeout.focus();">       
     8    <div class="nav">
     9        <nav:renderSubItems group="nav"/>
    910    </div>
    1011
    1112        <div class="body">
    12                 <h1>Change Session Timeout</h1>
    1313                <g:if test="${flash.message}">
    1414                <div class="message">${flash.message}</div>
  • trunk/grails-app/views/appCore/manager.gsp

    r110 r139  
    44        <meta name="layout" content="main" />
    55        <title>Admin</title>
     6        <nav:resources override="true"/>
    67    </head>
    78    <body>
    89        <div class="nav">
    9             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    10             <span class="menuButton"><g:link controller="person" action="create">New Person</g:link></span>
    11             <span class="menuButton"><g:link controller="person" action="list">Person List</g:link></span>
     10            <nav:renderSubItems group="nav"/>
    1211        </div>
    1312        <div class="body">
    14             <h1>Welcome to Manager</h1>
    1513            <g:if test="${flash.message}">
    1614                <div class="message">${flash.message}</div>
    1715            </g:if>
     16            <br />
     17            <br />
     18            <a href="${createLink(controller:'person', action:'list')}">Manage application users</a>
     19            <br />
     20            <br />
     21            View Entity Relationship Diagram:
     22            <a href="${createLink(controller:'classDiagram', action:'model', params:[outputFormat: 'pdf', skin: 'classicSpacey', showMethods: 'false', autoUpdate: 'false'])}">pdf</a>
     23            and
     24            <a href="${createLink(controller:'classDiagram', action:'legend', target:'_blank')}">legend</a>
     25            or
     26            <a href="${createLink(controller:'classDiagram', action:'show')}">interactive.</a>
    1827        </div>
    1928    </body>
  • trunk/grails-app/views/assetDetailed/create.gsp

    r124 r139  
    55        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    66        <meta name="layout" content="main" />
    7         <title>Create Asset</title>         
     7        <title>Create Asset</title>   
     8        <nav:resources override="true"/>
    89    </head>
    910    <body>
    1011        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    12             <span class="menuButton"><g:link class="list" action="list">Asset List</g:link></span>
     12            <nav:renderSubItems group="nav"/>
    1313        </div>
    1414        <div class="body">
    15             <h1>Create Asset</h1>
    1615            <g:if test="${flash.message}">
    1716            <div class="message">${flash.message}</div>
  • trunk/grails-app/views/assetDetailed/edit.gsp

    r124 r139  
    66        <meta name="layout" content="main" />
    77        <title>Edit Asset</title>
     8        <nav:resources override="true"/>
    89    </head>
    910    <body>
    1011        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    12             <span class="menuButton"><g:link class="list" action="list">Asset List</g:link></span>
    13             <span class="menuButton"><g:link class="create" action="create">New Asset</g:link></span>
     12            <nav:renderSubItems group="nav"/>
    1413        </div>
    1514        <div class="body">
    16             <h1>Edit Asset</h1>
    1715            <g:if test="${flash.message}">
    1816            <div class="message">${flash.message}</div>
  • trunk/grails-app/views/assetDetailed/list.gsp

    r124 r139  
    66        <meta name="layout" content="main" />
    77        <title>Asset List</title>
     8        <nav:resources override="true"/>
    89    </head>
    910    <body>
    1011        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    12             <span class="menuButton"><g:link class="create" action="create">New Asset</g:link></span>
     12            <nav:renderSubItems group="nav"/>
    1313        </div>
    1414        <div class="body">
    15             <h1>Asset List</h1>
    1615            <g:if test="${flash.message}">
    1716            <div class="message">${flash.message}</div>
  • trunk/grails-app/views/assetDetailed/show.gsp

    r124 r139  
    66        <meta name="layout" content="main" />
    77        <title>Show Asset</title>
     8        <nav:resources override="true"/>
    89    </head>
    910    <body>
    1011        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    12             <span class="menuButton"><g:link class="list" action="list">Asset List</g:link></span>
    13             <span class="menuButton"><g:link class="create" action="create">New Asset</g:link></span>
     12            <nav:renderSubItems group="nav"/>
    1413        </div>
    1514        <div class="body">
    16             <h1>Show Asset</h1>
    1715            <g:if test="${flash.message}">
    1816            <div class="message">${flash.message}</div>
  • trunk/grails-app/views/entryDetailed/edit.gsp

    r137 r139  
    7878                                </td>
    7979                                <td valign="top" class="value">
    80                                     <g:formatDate date="${entryInstance?.dateEntered}" format="EEE, dd MMM yyyy @ HH:mm"/>
     80                                    <g:formatDate date="${entryInstance?.dateEntered}" format="EEE, dd-MMM-yyyy @ HH:mm"/>
    8181                                </td>
    8282                            </tr>
  • trunk/grails-app/views/index.gsp

    r75 r139  
    1 <%response.sendRedirect(request.getContextPath()+'/appCore/home')%>
     1<%response.sendRedirect(request.getContextPath()+'/appCore/')%>
  • trunk/grails-app/views/inventoryItemDetailed/create.gsp

    r116 r139  
    55        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    66        <meta name="layout" content="main" />
    7         <title>Create InventoryItem</title>         
     7        <title>Create InventoryItem</title>   
     8        <nav:resources override="true"/>     
    89    </head>
    910    <body>
    1011        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    12             <span class="menuButton"><g:link class="list" action="list">InventoryItem List</g:link></span>
     12            <nav:renderSubItems group="nav"/>
    1313        </div>
    1414        <div class="body">
    15             <h1>Create InventoryItem</h1>
    1615            <g:if test="${flash.message}">
    1716            <div class="message">${flash.message}</div>
  • trunk/grails-app/views/inventoryItemDetailed/edit.gsp

    r125 r139  
    66        <meta name="layout" content="main" />
    77        <title>Edit InventoryItem</title>
     8        <nav:resources override="true"/>
    89    </head>
    910    <body>
    1011        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    12             <span class="menuButton"><g:link class="list" action="list">InventoryItem List</g:link></span>
    13             <span class="menuButton"><g:link class="create" action="create">New InventoryItem</g:link></span>
     12            <nav:renderSubItems group="nav"/>
    1413        </div>
    1514        <div class="body">
    16             <h1>Edit InventoryItem</h1>
    1715            <g:if test="${flash.message}">
    1816            <div class="message">${flash.message}</div>
  • trunk/grails-app/views/inventoryItemDetailed/list.gsp

    r124 r139  
    66        <meta name="layout" content="main" />
    77        <title>InventoryItem List</title>
     8        <nav:resources override="true"/>
    89    </head>
    910    <body>
    1011        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    12             <span class="menuButton"><g:link class="create" action="create">New InventoryItem</g:link></span>
     12            <nav:renderSubItems group="nav"/>
    1313        </div>
    1414        <div class="body">
    15             <h1>InventoryItem List</h1>
    1615            <g:if test="${flash.message}">
    1716            <div class="message">${flash.message}</div>
  • trunk/grails-app/views/inventoryItemDetailed/show.gsp

    r125 r139  
    66        <meta name="layout" content="main" />
    77        <title>Show InventoryItem</title>
     8        <nav:resources override="true"/>
    89    </head>
    910    <body>
    1011        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    12             <span class="menuButton"><g:link class="list" action="list">InventoryItem List</g:link></span>
    13             <span class="menuButton"><g:link class="create" action="create">New InventoryItem</g:link></span>
     12            <nav:renderSubItems group="nav"/>
    1413        </div>
    1514        <div class="body">
    16             <h1>Show InventoryItem</h1>
    1715            <g:if test="${flash.message}">
    1816            <div class="message">${flash.message}</div>
  • trunk/grails-app/views/layouts/main.gsp

    r110 r139  
    66        <g:layoutHead />
    77        <g:helpBalloons/>
     8        <nav:resources override="true"/>
    89        <g:javascript library="application" />
    910    </head>
     
    2122                    <a href="http://www.gnumims.org" id=HeaderLink></a>
    2223                </div>
     24               
    2325                <div class="appControl">
    24                     <g:render template="/adminmenubar" />
     26                    <g:isLoggedIn>
     27                        <span class="appControlButton">
     28                            <g:link controller="logout">
     29                                    Log out (<g:loggedInUsername/>)
     30                            </g:link>
     31                        </span>
     32                        <div id="menu">
     33                            <nav:render group="nav"/>
     34                        </div>                   
     35                    </g:isLoggedIn>
    2536                </div>
    2637
    27                     <g:layoutBody />
     38                <g:layoutBody />
    2839
    29             </div><!--content-->
     40            </div> <!-- content -->
    3041            <div id="bottom">
    3142            </div>
    32         </div>
     43        </div> <!-- wrapper -->
    3344    </body>     
    3445</html>
  • trunk/grails-app/views/login/auth.gsp

    r135 r139  
    3131        width: 120px;
    3232}
     33#login .inner .cssform input[type='submit']:link {
     34}
     35#login .inner .cssform input[type='submit']:visited {
     36}
     37#login .inner .cssform input[type='submit']:hover {
     38    background:#bfdaff;
     39}
    3340#login .inner .cssform label {
    3441        font-weight: bold;
     
    5663                                <p>
    5764                                        <label for='j_username'>Login ID</label>
    58                                         <input type='text' class='text_' name='j_username' id='j_username' value='user' />
     65                                        <input type='text' class='text_' name='j_username' id='j_username' value='manager' />
    5966                                </p>
    6067                                <p>
  • trunk/grails-app/views/taskDetailed/create.gsp

    r134 r139  
    1 
    2 
    31<html>
    42    <head>
    53        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    64        <meta name="layout" content="main" />
    7         <title>Create Task</title>         
     5        <title>Create Task</title>
     6        <nav:resources override="true"/>
    87    </head>
    98    <body>
    109        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    12             <span class="menuButton"><g:link class="list" action="list">Task List</g:link></span>
     10            <nav:renderSubItems group="nav"/>
    1311        </div>
    1412        <div class="body">
    15             <h1>Create Task</h1>
    1613            <g:if test="${flash.message}">
    1714            <div class="message">${flash.message}</div>
  • trunk/grails-app/views/taskDetailed/edit.gsp

    r134 r139  
    66        <meta name="layout" content="main" />
    77        <title>Edit Task</title>
     8        <nav:resources override="true"/>
    89    </head>
    910    <body>
    1011        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    12             <span class="menuButton"><g:link class="list" action="list">Task List</g:link></span>
    13             <span class="menuButton"><g:link class="create" action="create">New Task</g:link></span>
     12            <nav:renderSubItems group="nav"/>
    1413        </div>
    1514        <div class="body">
    16             <h1>Edit Task</h1>
    1715            <g:if test="${flash.message}">
    1816            <div class="message">${flash.message}</div>
  • trunk/grails-app/views/taskDetailed/list.gsp

    r134 r139  
    44        <meta name="layout" content="main" />
    55        <title>Task List</title>
     6        <nav:resources override="true"/>
    67    </head>
    78    <body>
    89        <div class="nav">
    9             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    10             <span class="menuButton"><g:link class="create" action="create">New Task</g:link></span>
     10            <nav:renderSubItems group="nav"/>
    1111        </div>
    1212        <div class="body">
    13             <h1>Task List</h1>
    1413            <g:if test="${flash.message}">
    1514                <div class="message">${flash.message}</div>
     
    1918                    <thead>
    2019                        <tr>
    21                        
    22                                 <g:sortableColumn property="id" title="Id" />
    23                        
    24                                 <g:sortableColumn property="targetStartDate" title="Target Start Date" />
    25                        
    26                                 <g:sortableColumn property="description" title="Description" />
    27                        
    28                                 <g:sortableColumn  property="leadPerson" title="Lead Person" />
    29                        
     20
     21                            <g:sortableColumn defaultOrder="desc" property="id" title="Id" />
     22
     23                            <g:sortableColumn property="targetStartDate" title="Target Start Date" />
     24
     25                            <g:sortableColumn property="description" title="Description" />
     26
     27                            <g:sortableColumn  property="leadPerson" title="Lead Person" />
     28
    3029                            <g:sortableColumn  property="taskPriority" title="Task Priority" />
    31                        
     30
    3231                            <g:sortableColumn  property="taskStatus" title="Task Status" />
    3332
    3433                            <th></th>
    35                            
     34
    3635                        </tr>
    3736                    </thead>
     
    4140
    4241                            <td>${fieldValue(bean:taskInstance, field:'id')}</td>
    43                        
    44                             <td><g:formatDate date="${taskInstance.targetStartDate}" format="EEE, dd MMM yyyy"/></td>
    45                        
     42
     43                            <td><g:formatDate date="${taskInstance.targetStartDate}" format="EEE, dd-MMM-yyyy"/></td>
     44
    4645                            <td>${fieldValue(bean:taskInstance, field:'description')}</td>
    47                        
     46
    4847                            <td>${fieldValue(bean:taskInstance, field:'leadPerson')}</td>
    49                        
     48
    5049                            <td>${fieldValue(bean:taskInstance, field:'taskPriority')}</td>
    51                        
     50
    5251                            <td>${fieldValue(bean:taskInstance, field:'taskStatus')}</td>
    5352
     
    5756                                </g:link>
    5857                            </td>
    59                        
     58
    6059                        </tr>
    6160                    </g:each>
  • trunk/grails-app/views/taskDetailed/listSubTasks.gsp

    r134 r139  
    44        <meta name="layout" content="main" />
    55        <title>Task List</title>
     6        <nav:resources override="true"/>
    67    </head>
    78    <body>
    89        <div class="nav">
    9             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    10             <span class="menuButton"><g:link class="create" action="create">New Task</g:link></span>
     10            <nav:renderSubItems group="nav"/>
    1111        </div>
    1212        <div class="body">
     
    4343                            <td>${fieldValue(bean:taskInstance, field:'id')}</td>
    4444                       
    45                             <td><g:formatDate date="${taskInstance.targetStartDate}" format="EEE, dd MMM yyyy"/></td>
     45                            <td><g:formatDate date="${taskInstance.targetStartDate}" format="EEE, dd-MMM-yyyy"/></td>
    4646                       
    4747                            <td>${fieldValue(bean:taskInstance, field:'description')}</td>
  • trunk/grails-app/views/taskDetailed/show.gsp

    r137 r139  
    44        <meta name="layout" content="main" />
    55        <title>Show Task</title>
     6        <nav:resources override="true"/>
    67        <resource:tabView skin="tabviewCustom" />
    78    </head>
    89    <body>
    910        <div class="nav">
    10             <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
    11             <span class="menuButton"><g:link class="list" action="list">Task List</g:link></span>
    12             <span class="menuButton"><g:link class="create" action="create">New Task</g:link></span>
     11            <nav:renderSubItems group="nav"/>
    1312        </div>
    1413        <div class="body">
     
    6665                                        <td valign="top" class="name">Target Start Date:</td>
    6766                                       
    68                                         <td valign="top" class="value"><g:formatDate date="${taskInstance.targetStartDate}" format="EEE, dd MMM yyyy"/></td>
     67                                        <td valign="top" class="value"><g:formatDate date="${taskInstance.targetStartDate}" format="EEE, dd-MMM-yyyy"/></td>
    6968                                       
    7069                                    </tr>
     
    7372                                        <td valign="top" class="name">Target Completion Date:</td>
    7473                                       
    75                                         <td valign="top" class="value"><g:formatDate date="${taskInstance.targetCompletionDate}" format="EEE, dd MMM yyyy"/></td>
     74                                        <td valign="top" class="value"><g:formatDate date="${taskInstance.targetCompletionDate}" format="EEE, dd-MMM-yyyy"/></td>
    7675                                       
    7776                                    </tr>
     
    189188                                       
    190189                                            <td style="width:65%">${entry.comment}</td>
    191                                             <td><g:formatDate date="${entry.dateDone}" format="EEE, dd MMM yyyy"/></td>
     190                                            <td><g:formatDate date="${entry.dateDone}" format="EEE, dd-MMM-yyyy"/></td>
    192191                                            <td>${entry.durationHour}:${entry.durationMinute}</td>
    193192                                            <td>${entry.enteredBy}</td>
     
    228227           
    229228                                            <td width="65%">${entry.comment}</td>
    230                                             <td><g:formatDate date="${entry.dateDone}" format="EEE, dd MMM yyyy"/></td>
     229                                            <td><g:formatDate date="${entry.dateDone}" format="EEE, dd-MMM-yyyy"/></td>
    231230                                            <td>${entry.durationHour}:${entry.durationMinute}</td>
    232231                                            <td>${entry.enteredBy}</td>
     
    393392                                                                                       
    394393                                                                                        <td valign="top" class="value">
    395                                                                                                 <g:formatDate date="${taskRecurringScheduleInstance.startDate}" format="EEE, dd MMM yyyy"/>
     394                                                                                                <g:formatDate date="${taskRecurringScheduleInstance.startDate}" format="EEE, dd-MMM-yyyy"/>
    396395                                                                                        </td>
    397396                           
     
    434433                                                                                                                 
    435434                                                                                        <td valign="top" class="value">
    436                                                                                                 <g:formatDate date="${taskRecurringScheduleInstance.nextTargetStartDate}" format="EEE, dd MMM yyyy"/>
     435                                                                                                <g:formatDate date="${taskRecurringScheduleInstance.nextTargetStartDate}" format="EEE, dd-MMM-yyyy"/>
    437436                                                                                        </td>
    438437                                                                                       
     
    443442                                                                     
    444443                                            <td valign="top" class="value">
    445                                                 <g:formatDate date="${taskRecurringScheduleInstance.nextTargetCompletionDate}" format="EEE, dd MMM yyyy"/>
     444                                                <g:formatDate date="${taskRecurringScheduleInstance.nextTargetCompletionDate}" format="EEE, dd-MMM-yyyy"/>
    446445                                            </td>
    447446                                           
     
    452451                                           
    453452                                            <td valign="top" class="value">
    454                                                 <g:formatDate date="${taskRecurringScheduleInstance.nextGenerationDate}" format="EEE, dd MMM yyyy"/>
     453                                                <g:formatDate date="${taskRecurringScheduleInstance.nextGenerationDate}" format="EEE, dd-MMM-yyyy"/>
    455454                                            </td>
    456455                                        </tr>
     
    460459                                                                                                                   
    461460                                                                                        <td valign="top" class="value">
    462                                                                                                 <g:formatDate date="${taskRecurringScheduleInstance.lastGeneratedDate}" format="EEE, dd MMM yyyy"/>
     461                                                                                                <g:formatDate date="${taskRecurringScheduleInstance.lastGeneratedDate}" format="EEE, dd-MMM-yyyy"/>
    463462                                                                                        </td>
    464463                                                                                       
     
    524523                                                                                        <td>${fieldValue(bean:subTaskInstance, field:'id')}</td>
    525524                                                                                       
    526                                                                                         <td><g:formatDate date="${subTaskInstance.targetStartDate}" format="EEE, dd MMM yyyy"/></td>
     525                                                                                        <td><g:formatDate date="${subTaskInstance.targetStartDate}" format="EEE, dd-MMM-yyyy"/></td>
    527526                                                                                       
    528527                                                                                        <td>${subTaskInstance.description}</td>
  • trunk/grails-app/views/taskRecurringScheduleDetailed/show.gsp

    r137 r139  
    4242                           
    4343                            <td valign="top" class="value">
    44                                 <g:formatDate date="${taskRecurringScheduleInstance.startDate}" format="EEE, dd MMM yyyy"/>
     44                                <g:formatDate date="${taskRecurringScheduleInstance.startDate}" format="EEE, dd-MMM-yyyy"/>
    4545                            </td>
    4646                        </tr>
     
    8787                           
    8888                            <td valign="top" class="value">
    89                                                                 <g:formatDate date="${taskRecurringScheduleInstance.nextTargetStartDate}" format="EEE, dd MMM yyyy"/>
     89                                                                <g:formatDate date="${taskRecurringScheduleInstance.nextTargetStartDate}" format="EEE, dd-MMM-yyyy"/>
    9090                                                        </td>
    9191                           
     
    9696                           
    9797                            <td valign="top" class="value">
    98                                 <g:formatDate date="${taskRecurringScheduleInstance.nextTargetCompletionDate}" format="EEE, dd MMM yyyy"/>
     98                                <g:formatDate date="${taskRecurringScheduleInstance.nextTargetCompletionDate}" format="EEE, dd-MMM-yyyy"/>
    9999                            </td>
    100100                           
     
    105105                           
    106106                            <td valign="top" class="value">
    107                                 <g:formatDate date="${taskRecurringScheduleInstance.nextGenerationDate}" format="EEE, dd MMM yyyy"/>
     107                                <g:formatDate date="${taskRecurringScheduleInstance.nextGenerationDate}" format="EEE, dd-MMM-yyyy"/>
    108108                            </td>
    109109                        </tr>
     
    113113                           
    114114                            <td valign="top" class="value">
    115                                         <g:formatDate date="${taskRecurringScheduleInstance.lastGeneratedDate}" format="EEE, dd MMM yyyy"/>
     115                                        <g:formatDate date="${taskRecurringScheduleInstance.lastGeneratedDate}" format="EEE, dd-MMM-yyyy"/>
    116116                                                        </td>
    117117                        </tr>
  • trunk/web-app/css/main.css

    r134 r139  
    4444  width: 980px;
    4545  height: 160px;
     46  /*border: 1px solid;*/
    4647}
    4748#HeaderLink{
     
    4950  width: 650px;
    5051  height: 160px;
     52}
     53
     54/* Navigation plugin, top level. */
     55#menu {
     56    float: left;
    5157}
    5258
     
    8389}
    8490textarea {
    85         width: 450px;
    86         height: 150px;
    87         vertical-align: top;
     91    width: 450px;
     92    height: 150px;
     93    vertical-align: top;
    8894}
    8995
     
    97103}
    98104
    99 /* Login/out and Admin*/
     105/* Login/out and Admin */
    100106
    101107.appcontrol {
    102     text-align: right;
    103     padding: 5px 160px 5px 5px
    104 }
    105 
    106 .appcontrolButton {
    107     font-size: 14px;
    108     padding: 5px 5px;
    109 }
    110 
    111 /* NAVIGATION MENU */
     108    width: 980px;
     109    height: 2em;
     110/*     text-align: right; */
     111/*     padding: 0px 160px 70px 5px; */
     112/*     padding: 0.5em 0px 0.5em 0px; */
     113    /*border: 1px solid blue;*/
     114    /*border-style: solid solid solid solid;*/
     115    /*overflow: hidden;*/ /* Clearing floats */
     116}
     117
     118.appcontrolButton a {
     119    padding: 0.3em 165px 0em 5px;
     120/*   width: 980px; */
     121    float: right;
     122    font-size: 14px;
     123/*     padding: 0.5em 5px ; */
     124    text-decoration: none;
     125    display: block;
     126    /*overflow: hidden;*/ /* Clearing floats */
     127}
     128
     129.appcontrolButton a:hover {
     130    color: red;
     131    margin: 0.2em 0 0 0;
     132    /*padding: 0.8em 5px;*/
     133}
     134
     135/* ORIGINAL NAVIGATION MENU */
    112136
    113137.nav {
     
    116140    /*border: 1px solid #ccc;
    117141    border-style: solid none solid none;*/
    118     padding: 15px 0px 0px 0px;
     142    padding: 10px 0px 0px 0px;
    119143    width: 980px;
    120144    height: 40px;
    121 }
    122 
    123 /*.nav a{
    124     background: url("../images/linkPanel.png") no-repeat top;
    125     display: inline-block;
    126     width: 140px;
    127     height: 40px;
    128     text-decoration: none;
    129 }*/
     145    /*border: 1px solid;*/
     146}
    130147
    131148.menuButton {
     
    375392  height: 100px;
    376393}
     394
     395 /* Navigation Plugin Override */
     396.navigation {
     397    padding: 0px 0px 0px 165px;
     398    list-style-type: none;
     399    clear: both;
     400    font-size: 14px;
     401    overflow: hidden; /* Clearing floats */
     402}
     403
     404.navigation li {
     405    float: left;
     406    /*border: 0px*/
     407    /* border: 1px solid #888; */
     408     /*border-left-color: #bbb;*/  /* Highlight border-color */
     409}
     410
     411.navigation li.navigation_first {
     412     /*border-left-color: #888; */
     413}
     414
     415.navigation li.navigation_active {
     416     /*border-left-color: #555;*/  /* Highlight border-color of active item */
     417}
     418
     419.navigation li a {
     420    /* color: #fff; */
     421    /* background-color: #aaa; */
     422    padding: 0.3em 0.75em;
     423    display: block;
     424    text-decoration: none;
     425}
     426
     427.navigation li a:hover {
     428    color: red;
     429    /* background-color: #999; */
     430/*     font-weight: normal; */
     431/*     font-size: 14px; */
     432    margin: 0.2em 0 0 0;
     433    /*cursor: default;*/
     434}
     435
     436.navigation li.navigation_active a {
     437    /* background-color: #555; */
     438/*    color: #fff;*/
     439    color: #006dba;
     440    /*color: black;*/
     441    font-weight: bold;
     442    font-size: 17px;
     443    margin: 0 0 0 0;
     444    /*cursor: default;*/
     445}
     446
     447.navigation li.navigation_active a:hover {
     448    color: #006dba;
     449    font-weight: bold;
     450    font-size: 17px;
     451    margin: 0 0 0 0;
     452    /*background-color: #555;*/
     453}
     454
     455/* Sub navigation */
     456.subnavigation {
     457    /*padding: 0px 0px 0px 165px;*/
     458    padding: 0px 0px 0px 220px;
     459    list-style-type: none;
     460    clear: both;
     461    overflow: hidden; /* Clearing floats */
     462}
     463.subnavigation li {
     464    float: left;
     465    /* background-color: #555; */
     466    padding: 0em 0.75em;
     467    border-width: 0px 0;
     468}
     469.subnavigation li a {
     470    color: #006dba;
     471    font-weight: bold;
     472    font-size: 17px;
     473    display: block;
     474    /*padding: 0px 0;*/
     475    /* border-color: #555; */
     476    border-style: solid;
     477    border-width: 0px 0;
     478    text-decoration: none;
     479    /*margin: 0 0 0 0;*/
     480    /*cursor: default;*/
     481}
     482
     483.subnavigation li a:visited {
     484    color: #006dba;
     485}
     486
     487.subnavigation li a:hover {
     488    /*color: red;*/
     489    /*border-color: black;*/
     490    border-width: 1px 0;
     491}
     492.subnavigation li.subnavigation_active a {
     493    /*color: #e0e0e0; */
     494    /*cursor: default;*/
     495    /*border-color: #e0e0e0;*/
     496    border-width: 1px 0;
     497}
  • trunk/web-app/css/tabviewCustom.css

    r126 r139  
    187187.yui-skin-sam .yui-navset .yui-nav a:focus{/*hover background*/
    188188/*     background:#bfdaff url("../images/skin/sprite.png") repeat-x left -1300px;  */
    189     background:#bfdaff
     189    background:#bfdaff;
    190190    outline:0;
    191191}
Note: See TracChangeset for help on using the changeset viewer.