]> err.no Git - scalable-opengroupware.org/blob - UI/Templates/MailPartViewers/UIxMailPartICalViewer.wox
Install libs to /usr/lib
[scalable-opengroupware.org] / UI / Templates / MailPartViewers / UIxMailPartICalViewer.wox
1 <?xml version="1.0" standalone="yes"?>
2 <!DOCTYPE div>
3 <div xmlns="http://www.w3.org/1999/xhtml"
4   xmlns:var="http://www.skyrix.com/od/binding"
5   xmlns:label="OGo:label"
6   xmlns:const="http://www.skyrix.com/od/constant"
7   xmlns:rsrc="OGo:url"
8   class="linked_attachment_frame"
9   >
10   <!-- TODO: add iMIP actions -->
11
12   <input id="iCalendarAttachment" type="hidden"
13     var:value="pathToAttachment"/>
14
15   <var:if condition="couldParseCalendar" const:negate="1">
16     <fieldset>
17       <legend>Parsing Error</legend>
18       
19       The SOGo/SOPE iCalendar parser could not parse the body of this MIME part.
20
21       <pre><var:string value="flatContentAsString" /></pre>
22     </fieldset>
23   </var:if>
24
25   <var:if condition="couldParseCalendar">
26     <fieldset>
27       <legend>
28         <var:string label:value="Appointment"/>:
29         <var:string value="inEvent.summary" /> <!-- TODO: shorted title -->
30
31         <var:if condition="isLoggedInUserTheOrganizer">
32           (<var:string label:value="organized_by_you"/>)
33         </var:if>
34         <var:if condition="isLoggedInUserAnAttendee">
35           (<var:string label:value="you_are_an_attendee"/>)
36         </var:if>
37       </legend>
38       
39       <var:if condition="inCalendar.method.uppercaseString" const:value="REQUEST">
40         <!-- sent to attendees to propose or update a meeting -->
41         <var:if condition="isLoggedInUserAnAttendee">
42           <var:if condition="$storedReplyAttendee.partStatWithDefault"
43             const:value="NEEDS-ACTION" const:negate="YES">
44             <p class="uix_ical_toolbar" id="iCalendarToolbar">
45               <input id="iCalendarAccept" class="button"
46                 type="button" label:value="Accept"/>
47               <input id="iCalendarDecline" class="button"
48                 type="button" label:value="Decline"/>
49               <!-- <input id="iCalendarTentative" class="button"
50               type="button" label:value="Tentative"/> -->
51               <var:if condition="isEventStoredInCalendar" const:negate="YES">
52                 | <input id="iCalendarAddToCalendar" class="button"
53                   type="button" label:value="Add to calendar"/>
54               </var:if>
55             </p>
56           </var:if>
57
58           <p>
59             <var:string label:value="Organizer" />
60             <a var:href="inEvent.organizer.email"
61               ><var:string value="organizerDisplayName" /></a>
62             <var:string label:value="request_info" />
63           </p>
64         </var:if>
65         
66         <var:if condition="isLoggedInUserAnAttendee" const:negate="YES">
67           <p>
68             <var:string label:value="Organizer" />
69             <a var:href="inEvent.organizer.email"
70               ><var:string value="organizerDisplayName" /></a>
71             <var:string label:value="request_info_no_attendee" />
72           </p>
73         </var:if>
74       </var:if>
75
76         
77       <var:if condition="inCalendar.method.uppercaseString" const:value="REPLY">
78         <!-- sent to organizer to update the status of the participant -->
79         <var:if condition="isReplySenderAnAttendee" const:negate="1">
80           <p><var:string label:value="reply_info_no_attendee" /></p>
81         </var:if>
82
83         <var:if condition="isReplySenderAnAttendee">
84           <var:if condition="hasSenderStatusChanged"
85             ><p class="uix_ical_toolbar">
86               <input id="iCalendarUpdateUserStatus" class="button"
87                 type="button" label:value="Update status"/>
88             </p>
89           
90           <!-- TODO: replies to events not in the calendar? -->
91
92             <p>
93               Status Update:
94               <var:string label:value="$inReplyAttendee.partStatWithDefault" />,
95               was:
96               <var:string
97                 label:value="$storedReplyAttendee.partStatWithDefault" />.
98             </p></var:if>
99         </var:if>
100       </var:if>
101
102       <var:if condition="inCalendar.method.uppercaseString" const:value="CANCEL">
103         <!-- sent to attendees to notify of the attendee being removed or the
104         event being deleted -->
105         <var:if condition="isEventStoredInCalendar">
106           <p class="uix_ical_toolbar">
107             <input id="iCalendarDeleteFromCalendar" class="button"
108               type="button" label:value="Delete from calendar"/>
109           </p>
110         </var:if>
111         
112         <p>
113           <!-- todo: if there are no attendees, the whole meeting was stopped -->
114           <var:string label:value="cancel_info_text" />
115         </p>
116       </var:if>
117
118
119       <var:if condition="inCalendar.method.uppercaseString" const:value="ADD">
120         <!-- TODO -->
121         <p><var:string label:value="add_info_text" /></p>
122       </var:if>
123
124
125       <var:if condition="inCalendar.method.uppercaseString" const:value="PUBLISH">
126         <!-- none-scheduling event sent to someone for adding to the calendar -->
127         <p><var:string label:value="publish_info_text" /></p>
128       </var:if>
129       
130       
131       <var:if condition="isLoggedInUserTheOrganizer">
132         <!--
133         Possible Status:
134         REPLY    => check whether it matches, if not suggest change, show
135         comment
136         REFRESH  => add button to resent iCal
137         COUNTER  => show panel to decide on counter
138         -->
139       </var:if>
140       <var:if condition="isLoggedInUserTheOrganizer" const:negate="1">
141         <!--
142         Possible Status:
143         REQUEST => ACCEPT, TENTATIVELY, DECLINE buttons with comment field
144         - only show buttons for attendees
145         PUBLISH => just the 'add to calendar' button, rewrite organizer?
146         ADD / CANCEL
147         DECLINE-COUNTER
148         -->
149       </var:if>
150
151       <!-- the user comment is used in replies -->
152       <var:if condition="inEvent.userComment.isNotEmpty">
153         <div class="linked_attachment_meta" style="background-color: white;">
154           <var:string value="inEvent.userComment" const:insertBR="1" />
155         </div>
156         <br />
157       </var:if>
158       
159       <div class="linked_attachment_meta" style="background-color: white;">
160         <table border="0" class="linked_attachment_meta">
161           <tr>
162             <td><var:string label:value="Time"/>:</td>
163             <td>
164               <!-- TODO: we need a better viewer for that -->
165               <var:string value="startTime" formatter="dateFormatter" />
166               <var:string label:value="to" />
167               <var:string value="endTime" formatter="dateFormatter" />
168             </td>
169           </tr>
170
171           <tr>
172             <td><var:string label:value="Organizer"/>:</td>
173             <td>
174               <a var:href="authorativeEvent.organizer.email"
175                 ><var:string value="organizerDisplayName" /></a>
176             </td>
177           </tr>
178           
179           <tr>
180             <td valign="top"><var:string label:value="Attendees"/>:</td>
181             <td>
182               <var:foreach list="authorativeEvent.participants" item="attendee">
183                 <a var:href="attendee.email"><var:string value="attendeeForDisplay"/></a>
184                 (<var:string label:value="$attendee.partStatWithDefault" />)
185                 <br />
186               </var:foreach>
187             </td>
188           </tr>
189
190           <var:if condition="inEvent.comment.isNotEmpty">
191             <tr> <!-- description in iCal -->
192               <td valign="top"><var:string label:value="Comment"/>:</td>
193               <td>
194                 <var:string value="authorativeEvent.comment" const:insertBR="1" />
195               </td>
196             </tr>
197           </var:if>
198         </table>
199       </div>
200     </fieldset>
201   </var:if><!-- could parse -->
202
203   <!--
204   <var:string value="appointment" />
205   <br />
206   <br />
207   <br />
208   -->
209   <pre style="display: none;"><var:string value="flatContentAsString" /></pre>
210 </div>