代码之家  ›  专栏  ›  技术社区  ›  Brian Hsu

更改Lift/Scala中某些CalendarItem的背景

  •  3
  • Brian Hsu  · 技术社区  · 14 年前

    我正在尝试使用Lift和CalendarMonthView小部件来构建一个 预约制。

    CalendarMonthView和Lift配合得很好,但我有个问题 无法更改上显示的某些日历项的样式

    根据API文档,我使用以下代码来更改

    class MySnippet {
        def test (xhtml: NodeSeq) = {
            val c    = Calendar.getInstance
            val meta = MonthViewMeta (Calendar.SUNDAY, Locale.getDefault)
    
            c.set (2010, 0, 0)
    
            bind ("cal", xhtml, 
                  "widget" -> CalendarMonthView (c, meta, cals, Empty, 
                                                 Empty, Empty))
        }
    
        def cals = {
            val c1 = Calendar.getInstance
            val c2 = Calendar.getInstance
    
            c1.set (2010, 0, 5, 10, 0)
            c2.set (2010, 0, 6, 10, 0)
    
            val calitem1 = CalendarItem ("4", c1, CalendarType.MEETING).
                           optional (
                               _.subject     ("Red Item"),
                               _.description ("Background should be read")
                           )
    
            val calitem2 = CalendarItem ("5", c2, CalendarType.MEETING).
                           optional (
                               _.subject     ("Green Item"),
                               _.description ("Background should be green"),
                               _.baseCSSClassName ("greenItem")
                           )
    
    
            List (calitem1, calitem2)
        }
    
    }
    

    我已经确认在输出HTML中,calitem2有一个“cssClass” 属性设置为“greenItem”。

    var calendars = {
        "items": [{"id": "4", "start": 20, "end": 48,
                   "weekDay": "3", "startTime": "10:0",              
                   "subject": "Red Item", "month": 0, "dayOfMonth": 5,              
                   "description": "Background should be read"},
                  {"id": "5", "start": 20, "end": 48, "weekDay": "4", 
                   "startTime": "10:0", "subject": "Green Item", "month": 0, 
                   "dayOfMonth": 6, "description": "Background should be green", 
                   "cssClass": "greenItem"}]
    };             
    

    我还重写了CalendarMonthView附带的原始样式css 把它放在WEB-INF/classes/toserv/calendars/monthview下。

    我已经浏览了它,并确保它是我的修改版本,其中添加了 下面的“greenItem”CSS类。

    .greenItem {
            margin: 1px;
    
    }
    
    .greenItem a {
            margin-left: 1px;
            color: #FFFFFF;
            text-decoration: none;
            background-color: #00FF00;
            display: block;
    
    }
    
    .greenItem a:hover {
            text-decoration: none;
            background-color: #ff6655;
            display: block;
    
    }
    
    .greenItemHead {
            margin: 1px;
    
    }
    
    .greenItemHead a {
            margin-left: 1px;
            color: #FFFFFF;
            text-decoration: none;
            background-color: #00FF00;
            display: block;
    
    }
    
    .greenItemHead a:hover {
            text-decoration: none;
            background-color: #ff6655;
            display: block;
    
    }
    
    .greenItemBody {
            margin: 1px;
    
    }
    
    .greenItemBody a {
            margin-left: 1px;
            color: #FFFFFF;
            text-decoration: none;
            background-color: #00FF00;
            display: block;
    
    }
    
    .greenItemBody a:hover {
            text-decoration: none;
            background-color: #ff6655;
            display: block;
    }
    

    但是当我浏览我的日历页面时,第二个日历项仍然是 在红色背景中,CSS类似乎不起作用。

    我不熟悉JavaScript和JQuery,所以我会错过什么吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Brian Hsu    14 年前

    好的,我发现这是由日历小部件模块中的一个错误引起的。

    所以我在追踪器上做了个补丁。

    https://www.assembla.com/spaces/liftweb/tickets/563