]> err.no Git - sope/blob - sope-appserver/WEExtensions/WExCalElemBuilder.m
fix for SoProductResourceManager.m
[sope] / sope-appserver / WEExtensions / WExCalElemBuilder.m
1 /*
2   Copyright (C) 2000-2004 SKYRIX Software AG
3
4   This file is part of OpenGroupware.org.
5
6   OGo is free software; you can redistribute it and/or modify it under
7   the terms of the GNU Lesser General Public License as published by the
8   Free Software Foundation; either version 2, or (at your option) any
9   later version.
10
11   OGo is distributed in the hope that it will be useful, but WITHOUT ANY
12   WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14   License for more details.
15
16   You should have received a copy of the GNU Lesser General Public
17   License along with OGo; see the file COPYING.  If not, write to the
18   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19   02111-1307, USA.
20 */
21 // $Id$
22
23 #include <NGObjWeb/WOxElemBuilder.h>
24
25 /*
26   This builder builds various calendaring elements from the WEExtensions
27   library.
28
29   All tags are mapped into the <var:> namespace (XMLNS_OD_BIND).
30
31   Supported tags:
32     <var:month-overview .../> to WEMonthOverview
33     <var:month-label    .../> to WEMonthLabel
34     <var:month-title    .../> to WEMonthTitle
35     <var:month-info     .../> to WEMonthOverviewInfoMode
36     <var:month          .../> to WEMonthOverviewContentMode
37
38     <var:week-overview  .../> to WEWeekOverview
39     <var:week-title     .../> to WEWeekOverviewTitleMode
40     <var:week-info      .../> to WEWeekOverviewInfoMode
41     <var:week-pminfo    .../> to WEWeekOverviewPMInfoMode
42     <var:week           .../> to WEWeekOverviewContentMode
43     <var:week-header    .../> to WEWeekOverviewHeaderMode
44     <var:week-footer    .../> to WEWeekOverviewFooterMode
45
46     <var:weekcol-view   .../> to WEWeekColumnView
47     <var:weekcol-title  .../> to WEWeekColumnViewTitleMode
48     <var:weekcol-info   .../> to WEWeekColumnViewInfoMode
49     <var:weekcol        .../> to WEWeekColumnViewContentMode
50 */
51
52 @interface WExCalElemBuilder : WOxTagClassElemBuilder
53 {
54 }
55
56 @end
57
58 #include <SaxObjC/XMLNamespaces.h>
59 #include "common.h"
60
61 @implementation WExCalElemBuilder
62
63 - (Class)classForElement:(id<DOMElement>)_element {
64   NSString *tagName;
65   unsigned tl;
66   unichar  c1;
67   
68   if (![[_element namespaceURI] isEqualToString:XMLNS_OD_BIND])
69     return Nil;
70   
71   tagName = [_element tagName];
72   if ((tl = [tagName length]) < 4)
73     return Nil;
74
75   c1 = [tagName characterAtIndex:0];
76
77   if (c1 == 'm') {
78     /* month stuff */
79
80     if (![tagName hasPrefix:@"month"])
81       return Nil;
82     
83     switch (tl) {
84       case 5:
85         return NSClassFromString(@"WEMonthOverviewContentMode");
86
87       case 10:
88         if ([tagName isEqualToString:@"month-info"])
89           return NSClassFromString(@"WEMonthOverviewInfoMode");
90         break;
91         
92       case 11:
93         if ([tagName isEqualToString:@"month-label"])
94           return NSClassFromString(@"WEMonthLabel");
95         if ([tagName isEqualToString:@"month-title"])
96           return NSClassFromString(@"WEMonthTitle");
97         break;
98         
99       case 14:
100         if ([tagName isEqualToString:@"month-overview"])
101           return NSClassFromString(@"WEMonthOverview");
102         break;
103     }
104   }
105   else if (c1 == 'w') {
106     /* week stuff */
107     
108     if (![tagName hasPrefix:@"week"])
109       return Nil;
110     
111     switch (tl) {
112       case 4:
113         return NSClassFromString(@"WEWeekOverviewContentMode");
114         
115       case 7:
116         if ([tagName isEqualToString:@"weekcol"])
117           return NSClassFromString(@"WEWeekColumnViewContentMode");
118         break;
119
120       case 9:
121         if ([tagName isEqualToString:@"week-info"])
122           return NSClassFromString(@"WEWeekOverviewInfoMode");
123         break;
124         
125       case 10:
126         if ([tagName isEqualToString:@"week-title"])
127           return NSClassFromString(@"WEWeekOverviewTitleMode");
128         break;
129         
130       case 11:
131         if ([tagName isEqualToString:@"week-header"])
132           return NSClassFromString(@"WEWeekOverviewHeaderMode");
133         if ([tagName isEqualToString:@"week-footer"])
134           return NSClassFromString(@"WEWeekOverviewFooterMode");
135         if ([tagName isEqualToString:@"week-pminfo"])
136           return NSClassFromString(@"WEWeekOverviewPMInfoMode");
137         break;
138
139       case 12:
140         if ([tagName isEqualToString:@"weekcol-view"])
141           return NSClassFromString(@"WEWeekColumnView");
142         if ([tagName isEqualToString:@"weekcol-info"])
143           return NSClassFromString(@"WEWeekColumnViewInfoMode");
144         break;
145
146       case 13:
147         if ([tagName isEqualToString:@"weekcol-title"])
148           return NSClassFromString(@"WEWeekColumnViewTitleMode");
149         if ([tagName isEqualToString:@"week-overview"])
150           return NSClassFromString(@"WEWeekOverview");
151         break;
152     }
153   }
154   
155   return Nil;
156 }
157
158 @end /* WExCalElemBuilder */