Code source wiki de Meeting Cycle Class Sheet
Modifié par Vincent Massol le 2011/08/12 21:26
Masquer les derniers auteurs
author | version | line-number | content |
---|---|---|---|
![]() |
1.1 | 1 | {{velocity clean="false"}} |
2 | |||
3 | {{html wiki="true" clean="false"}} | ||
4 | |||
5 | {{include document="MMCode.MeetingManagerMacros"/}} | ||
6 | |||
7 | #set($meetingSpace="${doc.web}") ##TODO take this out at to the including sheet. | ||
8 | #set($cycle = $doc.getObject("MMCode.MeetingCycleClass")) | ||
9 | #if(!$cycle) | ||
10 | #warning("This document must be applied to meeting cycles pages.") | ||
11 | #else | ||
12 | #set($ok = $xwiki.ssx.use("MMCode.MeetingManager")) | ||
13 | #set($ok = $xwiki.jsx.use("MMCode.MeetingManager")) | ||
14 | #set($ok = $xwiki.jsx.use("XWiki.ModalBox")) | ||
15 | #set($ok = $xwiki.ssx.use("XWiki.ModalBox")) | ||
16 | #set($showattachments = "no") | ||
17 | #set($showcomments = "no") | ||
18 | #set($showhistory = "no") | ||
19 | #set($showinformation = "no") | ||
20 | #set($ok = $xwiki.jsx.use("XWiki.DatePickerExtension")) | ||
21 | #set($ok = $xwiki.ssx.use("XWiki.DatePickerExtension")) | ||
22 | |||
23 | = Cycle <em>$cycle.get('name')</em> = | ||
24 | |||
25 | #if($context.action=="inline")<div id="meetingcycleedit">#end | ||
26 | <div class="cycleinfos"><div class="cyclefreq"> | ||
27 | **$msg.get('meetings.cycle.frequency')** <p> $cycle.get('frequency')</p></div> | ||
28 | |||
29 | <div class="cycledesc"> | ||
30 | **$msg.get('meetings.cycle.description')** $cycle.get('description')</div> | ||
31 | #if($context.action=="inline")</div>#end | ||
32 | |||
33 | #if($context.action == "view") | ||
34 | #if($hasEdit) | ||
35 | <div id="newmeetingform" class="hidden"> | ||
36 | ## <form action="" id="newdoc" method="post"> | ||
37 | <div> | ||
38 | <input type="hidden" name="parent" value="${doc.web}.WebHome" /> | ||
39 | #set($lm = $xwiki.searchDocuments(", BaseObject as meeting, BaseObject cycleitem, StringProperty as cycle, DateProperty as date where meeting.name=doc.fullName and meeting.className='MMCode.MeetingClass' and cycleitem.className='MMCode.MeetingCycleItemClass' and cycleitem.name=doc.fullName and cycle.id.id=cycleitem.id and cycle.id.name='cycle' and cycle.value='$doc.fullName' and date.id.id=meeting.id and date.id.name='date' order by date.value desc", 1, 0)) | ||
40 | ##set($count = $xwiki.countDocuments(", BaseObject as meeting, BaseObject cycleitem, StringProperty as cycle, DateProperty as date where meeting.name=doc.fullName and meeting.className='MMCode.MeetingClass' and cycleitem.className='MMCode.MeetingCycleItemClass' and cycleitem.name=doc.fullName and cycle.id.id=cycleitem.id and cycle.id.name='cycle' and cycle.value='$doc.fullName' and date.id.id=meeting.id and date.id.name='date'")) | ||
41 | #if($lm.size() > 0) | ||
42 | #set($lastmeeting = $listtool.get($lm, 0)) | ||
43 | #set($lastmeetingobj = $xwiki.getDocument($lastmeeting).getObject("MMCode.MeetingClass")) | ||
44 | #set($lastdate = $lastmeetingobj.getProperty('date').value) | ||
45 | <div id="lastmeeting" class="infomessage"> | ||
46 | $msg.get('meetings.cycle.lastmeeting') | ||
47 | <div style="margin-top:15px;"> | ||
48 | <em>$msg.get('meetings.cycle.lastname') </em> | ||
49 | $xwiki.getDocument($lastmeeting).displayTitle | ||
50 | </div> | ||
51 | <div> | ||
52 | <em>$msg.get('meetings.cycle.lastdate') </em> | ||
53 | **$datetool.format("dd/MM/yyyy", $lastdate)** | ||
54 | ($msg.get('meetings.cycle.laststatus') **$lastmeetingobj.display('status','view')**)</div> | ||
55 | </div> | ||
56 | <input type="hidden" name="template" class="template" value="$lastmeeting" /> | ||
57 | #set($frequency = $cycle.getProperty('frequency').value) | ||
58 | #if("$!frequency" == "") #set($frequency = "weekly") #end | ||
59 | #set($mdt = $xwiki.jodatime.getMutableDateTime($mathtool.add(1900, $lastdate.year), $mathtool.add($lastdate.month, 1), $lastdate.date, $lastdate.hours, $lastdate.minutes, $lastdate.seconds, 0)) | ||
60 | #if($frequency=="bimonthly") #set($ok = $mdt.addDays(14)) | ||
61 | #elseif($frequency=="monthly") #set($ok = $mdt.addMonths(1)) | ||
62 | #elseif($frequency=="quarterly") #set($ok = $mdt.addMonths(3)) | ||
63 | #elseif($frequency=="yearly") #set($ok = $mdt.addYears(1)) | ||
64 | #else ##weekly | ||
65 | #set($ok = $mdt.addDays(7)) | ||
66 | #end | ||
67 | #set($sdate = $xwiki.jodatime.getDateTimeFormatterForPattern("yyyy/MM/dd").print($mdt)) | ||
68 | <div id="nextmeeting" class="infomessage"> | ||
69 | <div style="margin-bottom:20px;">**$msg.get('meetings.cycle.nextmeeting')** </div> | ||
70 | <div> | ||
71 | $msg.get('meetings.cycle.nextname') | ||
72 | <input type="text" autocomplete="off" value="$cycle.get('name') ${sdate}" id="nextmeetingname" name="nextmeetingdate" class="title" size="50"/> | ||
73 | <input type="hidden" name="name" class="clean" value="$util.clearName($cycle.get('name'))${sdate}"/> | ||
74 | </div> | ||
75 | <div style="color:grey;padding:5px;"> | ||
76 | <div>$msg.get('meetings.dashboard.urlwillbe')</div> | ||
77 | <div><span class="url">$doc.getExternalURL('view')<span></div> | ||
78 | #help("$msg.get('meetings.dashboard.pickpagenamehelp')") | ||
79 | </div> | ||
80 | <div style="margin-top:10px;"> | ||
81 | $msg.get('meetings.cycle.nextdate') | ||
82 | <input type="text" value="$datetool.format("dd/MM/yyyy", $mdt.toDate())" id="nextmeetingdate" class="date"/> | ||
83 | <img src="$xwiki.getDocument('MMCode.MeetingManager').getAttachmentURL('calendar.gif')" /> | ||
84 | ($msg.get("meetings.cycle.${frequency}.fromlast")) | ||
85 | </div> | ||
86 | <div style="margin-top:20px;"> | ||
87 | <span class="buttonwrapper"><button id="docreatenextmeeting">$msg.get('meetings.cycle.submitcreate')</button></span> | ||
88 | </div> | ||
89 | </div> | ||
90 | #else | ||
91 | No last meeting found | ||
92 | #end | ||
93 | </div> | ||
94 | ## </form> | ||
95 | </div> | ||
96 | |||
97 | #if("$!cycle.get('frequency')" != "") | ||
98 | <div align="right"> | ||
99 | <span class="buttonwrapper"> | ||
100 | <button id="createnextmeeting" title="$msg.get('meetings.dashboard.createnewmeeting')" /> | ||
101 | $msg.get('meetings.cycle.createnextmeeting') | ||
102 | </button> | ||
103 | </span> | ||
104 | </div> | ||
105 | #end | ||
106 | </div> | ||
107 | |||
108 | {{html wiki="false"}} | ||
109 | <script type="text/javascript"> | ||
110 | |||
111 | function createNextMeeting(){ | ||
112 | var title = $('MB_content').down(".title").value; | ||
113 | var name = $('MB_content').down(".clean").value; | ||
114 | var date = $('MB_content').down(".date").value; | ||
115 | var template = $('MB_content').down(".template").value; | ||
116 | if(name.strip() == "") { | ||
117 | alert("Le nom de la prochaine reunion ne peut etre vide"); | ||
118 | return; | ||
119 | } | ||
120 | else { | ||
121 | var url = "$xwiki.getDocument('MMCode.MeetingManagerService').getURL('view','xpage=plain&service=nextmeeting')"; | ||
122 | url += ("&title=" + title + "&name=$meetingSpace." + name + "&date=" + date + "&template=" + template); | ||
123 | var ajx = new Ajax.Request(url, { | ||
124 | onComplete: function(transport) { | ||
125 | window.location = transport.responseText; | ||
126 | /* | ||
127 | if(!transport.responseText.match(/^http:.*$/)) { | ||
128 | alert(transport.responseText); | ||
129 | } | ||
130 | else { | ||
131 | window.location = transport.responseText; | ||
132 | } | ||
133 | */ | ||
134 | } | ||
135 | }); | ||
136 | } | ||
137 | } | ||
138 | Event.observe($('createnextmeeting'), "click", function(){ | ||
139 | Modalbox.show($('newmeetingform').down("div"), { | ||
140 | autoFocusing: false, | ||
141 | title: this.title, | ||
142 | overlayClose: false, | ||
143 | width:800, | ||
144 | afterLoad: function() { | ||
145 | var p = new PageCreator($('MB_content'), "$xwiki.getDocument("${doc.web}.WebHome").getExternalURL('view')"); | ||
146 | p.updateURL(); | ||
147 | new DatePicker({ | ||
148 | relative:$('MB_frame').down("input.date"), | ||
149 | language:"$context.language", | ||
150 | zindex:10000, | ||
151 | enableCloseOnBlur:true | ||
152 | }); | ||
153 | $('MB_content').down("button").observe("click", createNextMeeting); | ||
154 | } | ||
155 | }); | ||
156 | }); | ||
157 | </script> | ||
158 | {{/html}} | ||
159 | #end | ||
160 | #end | ||
161 | #end | ||
162 | {{/html}} | ||
163 | {{/velocity}} | ||
164 | |||
165 | {{velocity clean="false"}} | ||
166 | #if("$!context.action" == "view") | ||
167 | #set($collist = [ "doc.title", "date", "doc.creator", "location", "status" ]) | ||
168 | #set($colprops = {"doc.title" : {"type" : "text", "size" : "20", "link": "view"}, | ||
169 | "doc.creator" : {"type":"text", "size" : "10"} , | ||
170 | "location" : {"type" : "text", "size" : "10"}, | ||
171 | "date" : {"type" : "text", "size" : "10", "link": "view"}, | ||
172 | "status" : {"type" : "list", "size" : "1"} | ||
173 | }) | ||
174 | ## id of the div, list of columns, columns properties, default column to sort for, class name | ||
175 | #set($className = "MMCode.MeetingClass") | ||
176 | #set($transprefix="meetings.cycle.table.") | ||
177 | #set($dataurl = $xwiki.getURL('MMCode.MeetingCycleResults','view',"xpage=plain&outputSyntax=plain&cycle=$doc.fullName")) | ||
178 | #set($collist2 = "") | ||
179 | #set($classparams = "") | ||
180 | #foreach($colname in $collist) | ||
181 | #set($collist2 = "${collist2},${colname}") | ||
182 | #set($propClassName = "") | ||
183 | #set($propClassName = $colprops.get($colname).get("class")) | ||
184 | #if($propClassName!="") | ||
185 | #set($classparams = "${classparams}&${colname}_class=${propClassName}") | ||
186 | #end | ||
187 | #end | ||
188 | #set($collist2 = $collist2.substring(1)) | ||
189 | #set($dataurl = "${dataurl}&transprefix=meetings.dashboard.grid.&classname=${className}&collist=${collist2}${classparams}") | ||
190 | |||
191 | {{html wiki=true clean=false}} | ||
192 | #livetable("meetingsgrid" $collist $colprops { | ||
193 | "selectedColumn":"doc.creationDate", | ||
194 | "defaultOrder":"desc", | ||
195 | "translationPrefix":"meetings.dashboard.grid.", | ||
196 | "className":"MMCode.MeetingClass", | ||
197 | "rowCount": 10, | ||
198 | "tagCloud": true, | ||
199 | "url":"$dataurl" | ||
200 | }) | ||
201 | {{/html}} | ||
202 | #end | ||
203 | |||
204 | {{/velocity}} |