Changeset 386721 in indico
- Timestamp:
- 04/19/12 18:09:13 (13 months ago)
- Branches:
- master, hello-world-walkthrough, ipv6, v0.98-series, v0.98.2, v0.98.3, v0.99, 051b2622c51afb171a1dedb46a0df4fbb0cbd02e, 0da0c1403bae8e51d8229f460181c71b9e6dda72
- Children:
- a829f8
- Parents:
- cde8e0
- git-author:
- Alberto Resco Perez <alberto.resco.perez@…> (04/18/12 12:40:52)
- git-committer:
- Jose Benito <jose.benito.gonzalez@…> (04/19/12 18:09:13)
- Location:
- indico
- Files:
-
- 9 edited
-
MaKaC/webinterface/pages/abstracts.py (modified) (6 diffs)
-
MaKaC/webinterface/rh/CFADisplay.py (modified) (2 diffs)
-
MaKaC/webinterface/tpls/AbstractDisplay.tpl (modified) (1 diff)
-
MaKaC/webinterface/tpls/ContributionDisplayFull.tpl (modified) (1 diff)
-
MaKaC/webinterface/tpls/UserAbstracts.tpl (modified) (1 diff)
-
MaKaC/webinterface/urlHandlers.py (modified) (2 diffs)
-
htdocs/abstractDisplay.py (modified) (1 diff)
-
htdocs/css/Default.css (modified) (14 diffs)
-
htdocs/userAbstracts.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
indico/MaKaC/webinterface/pages/abstracts.py
r4fd80c r386721 21 21 from xml.sax.saxutils import quoteattr 22 22 import urllib 23 from pytz import timezone 23 24 24 25 import MaKaC.webinterface.wcomponents as wcomponents … … 29 30 from MaKaC.common import Config 30 31 from MaKaC.webinterface.common.abstractStatusWrapper import AbstractStatusList 31 from MaKaC.webinterface.common.person_titles import TitlesRegistry32 32 from MaKaC.i18n import _ 33 33 from indico.util.i18n import i18nformat 34 from indico.util.date_time import format_time, format_date, format_datetime 34 35 from MaKaC.common.timezoneUtils import nowutc, getAdjustedDate, DisplayTZ 35 36 from MaKaC.common import Configuration … … 152 153 self._conf = conf 153 154 155 def _getAbstractStatus(self, abstract): 156 status = abstract.getCurrentStatus() 157 if isinstance( status, review.AbstractStatusAccepted ): 158 statusLabel = _("Accepted") 159 if status.getType() is not None and status.getType()!="": 160 return "%s as %s"%(statusLabel, status.getType().getName()) 161 elif isinstance( status, review.AbstractStatusRejected ): 162 return _("Rejected") 163 elif isinstance( status, review.AbstractStatusWithdrawn ): 164 return _("Withdrawn") 165 elif isinstance(status,review.AbstractStatusDuplicated): 166 return _("Duplicated") 167 elif isinstance(status,review.AbstractStatusMerged): 168 return _("Merged") 169 elif isinstance(status, (review.AbstractStatusProposedToAccept, review.AbstractStatusProposedToReject)): 170 return _("UnderReview") 171 return _("Submitted") 172 154 173 def getVars( self ): 155 174 vars = wcomponents.WTemplated.getVars( self ) 156 175 cfaMgr = self._conf.getAbstractMgr() 157 176 158 tzUtil = DisplayTZ(self._aw,self._conf) 159 tz = tzUtil.getDisplayTZ() 160 161 l = cfaMgr.getAbstractListForAvatar( self._aw.getUser() ) 162 l += cfaMgr.getAbstractListForAuthorEmail(self._aw.getUser().getEmail()) 163 164 l = sorted(set(l), key=lambda i:int(i.getId())) 165 166 if not l: 167 vars["abstracts"] = i18nformat("""<tr> 168 <td align="center" colspan="4" bgcolor="white"> 169 <br> 170 --_("No submitted abstract found within this conference")-- 171 </td> 172 </tr> 173 """) 174 else: 175 res = [] 176 for abstract in l: 177 status = abstract.getCurrentStatus() 178 statusLabel = _("SUBMITTED") 179 if isinstance( status, review.AbstractStatusAccepted ): 180 statusLabel = _("ACCEPTED") 181 if status.getType() is not None and status.getType()!="": 182 statusLabel="%s as %s"%(statusLabel,status.getType().getName()) 183 elif isinstance( status, review.AbstractStatusRejected ): 184 statusLabel = _("REJECTED") 185 elif isinstance( status, review.AbstractStatusWithdrawn ): 186 statusLabel = _("WITHDRAWN") 187 elif isinstance(status,review.AbstractStatusDuplicated): 188 statusLabel = _("DUPLICATED") 189 elif isinstance(status,review.AbstractStatusMerged): 190 statusLabel = _("MERGED") 191 res.append(""" 192 <tr> 193 <td class="abstractLeftDataCell">%s</td> 194 <td class="abstractDataCell"><input type="checkbox" name="abstracts" value=%s><a href=%s>%s</a></td> 195 <td class="abstractDataCell" nowrap>%s</td> 196 <td class="abstractDataCell">%s</td> 197 </tr>"""%( \ 198 abstract.getId(), \ 199 quoteattr(abstract.getId()), \ 200 quoteattr(str(urlHandlers.UHAbstractDisplay.getURL(abstract))), \ 201 self.htmlText( abstract.getTitle() ), statusLabel, \ 202 getAdjustedDate(abstract.getModificationDate(),tz=tz).strftime("%Y-%m-%d %H:%M"))) 203 vars["abstracts"] = "".join(res) 204 vars["abstractsPDFURL"]=quoteattr(str(urlHandlers.UHAbstractsDisplayPDF.getURL(self._conf))) 177 abstracts = cfaMgr.getAbstractListForAvatar( self._aw.getUser() ) 178 abstracts += cfaMgr.getAbstractListForAuthorEmail(self._aw.getUser().getEmail()) 179 180 vars["abstracts"] = sorted(set(abstracts), key=lambda i:int(i.getId())) 181 vars["formatDate"] = lambda date: format_date(date, "d MMM yyyy") 182 vars["formatTime"] = lambda time: format_time(time, format="short", timezone=timezone(DisplayTZ(self._aw, self._conf).getDisplayTZ())) 183 vars["getAbstractStatus"] = lambda abstract: self._getAbstractStatus(abstract) 184 vars["conf"] = self._conf 205 185 return vars 206 186 … … 271 251 self._aw = aw 272 252 273 def _getAuthorHTML( self, author ):274 res = "%s, %s"%(author.getSurName().upper(), author.getFirstName())275 if author.getAffiliation() != "":276 res = "%s (%s)"%(res, author.getAffiliation())277 return self.htmlText( res )278 279 def _getAdditionalFieldsHTML(self):280 html=""281 afm = self._abstract.getConference().getAbstractMgr().getAbstractFieldsMgr()282 for f in afm.getActiveFields():283 id = f.getId()284 caption = f.getName()285 html+="""286 <tr>287 <td>288 <table width="100%%" cellspacing="0">289 <tr>290 <td class="displayField" valign="top" width="1%%" nowrap><b>%s:</b></td>291 </tr>292 <tr>293 <td valign="top"><table class="tablepre"><tr><td><pre>%s</pre></td></tr></table></td>294 </tr>295 </table>296 </td>297 </tr>298 """%(caption, self.htmlText(self._abstract.getField(id)) )299 return html300 301 253 def getVars( self ): 302 254 vars = wcomponents.WTemplated.getVars( self ) … … 305 257 tz = tzUtil.getDisplayTZ() 306 258 307 vars["title"] = self.htmlText( self._abstract.getTitle() )308 vars["additionalFields"] = self._getAdditionalFieldsHTML()309 vars["primary_authors"] = i18nformat("""--_("none")--""")310 vars["authors"] = i18nformat("""--_("none")--""")311 primary = []312 for author in self._abstract.getPrimaryAuthorList():313 primary.append( self._getAuthorHTML( author ) )314 authors = []315 for author in self._abstract.getCoAuthorList():316 authors.append( self._getAuthorHTML( author ) )317 if primary:318 vars["primary_authors"] = "<br>".join( primary )319 if authors:320 vars["authors"] = "<br>".join( authors )321 vars["speakers"] = i18nformat("""--_("none")--""")322 speakers = []323 for spk in self._abstract.getSpeakerList():324 speakers.append( "%s"%self.htmlText( spk.getFullName() ) )325 if speakers:326 vars["speakers"] = "<br>".join( speakers )327 vars["tracks"] = i18nformat("""--_("none")--""")328 vars["contribType"] = i18nformat("""--_("none")--""")329 259 status=self._abstract.getCurrentStatus() 330 260 if isinstance(status,review.AbstractStatusAccepted): 331 vars["contribType"]= i18nformat("""--_("none")--""") 332 if status.getType() is not None: 333 vars["contribType"]=self.htmlText(status.getType().getName()) 334 vars["tracks"]="" 335 if status.getTrack() is not None: 336 vars["tracks"]=self.htmlText(status.getTrack().getTitle()) 261 vars["contribType"]= status.getType() 262 vars["tracks"]= status.getTrack() 337 263 else: 338 tracks = [] 339 for track in self._abstract.getTrackListSorted(): 340 tracks.append( self.htmlText( track.getTitle() ) ) 341 if tracks: 342 vars["tracks"] = ", ".join( tracks ) 343 if self._abstract.getContribType() is not None and \ 344 self._abstract.getContribType()!="": 345 vars["contribType"]=self.htmlText(self._abstract.getContribType().getName()) 346 if self._abstract.getConference().getContribTypeList() != []: 347 vars["contribType"]= i18nformat(""" 348 <tr> 349 <td> 350 <table width="100%%" cellspacing="0"> 351 <tr> 352 <td nowrap class="displayField" valign="top"><b> _("Contribution type"):</b></td> 353 <td width="100%%">%s</td> 354 </tr> 355 </table> 356 </td> 357 </tr> 358 """%vars["contribType"]) 264 vars["tracks"] = self._abstract.getTrackListSorted() 265 vars["contribType"]=self._abstract.getContribType() 266 vars["modifyURL"] = str(urlHandlers.UHAbstractModify.getURL(self._abstract)) 267 vars["withdrawURL"] = str(urlHandlers.UHAbstractWithdraw.getURL(self._abstract)) 268 vars["recoverURL"] = str(urlHandlers.UHAbstractRecovery.getURL(self._abstract)) 269 270 vars["attachments"] = fossilize(self._abstract.getAttachments().values(), ILocalFileAbstractMaterialFossil) 271 vars["abstract"] = self._abstract 272 273 vars["formatDate"] = lambda date: format_date(date, "d MMM yyyy") 274 vars["formatTime"] = lambda time: format_time(time, format="short", timezone=timezone(tz)) 275 276 vars["modifyDisabled"] = isinstance( status, (review.AbstractStatusSubmitted, review.AbstractStatusAccepted, 277 review.AbstractStatusRejected, review.AbstractStatusDuplicated, review.AbstractStatusMerged ) ) 278 vars["withdrawDisabled"] = isinstance( status, (review.AbstractStatusAccepted, review.AbstractStatusRejected, 279 review.AbstractStatusWithdrawn, review.AbstractStatusDuplicated, review.AbstractStatusMerged ) ) 280 status = self._abstract.getCurrentStatus() 281 if isinstance( status, review.AbstractStatusAccepted ): 282 vars["statusText"] = _("ACCEPTED ") 283 if status.getType() is not None and status.getType()!="": 284 vars["statusText"] += "as %s"% status.getType().getName() 285 vars["statusClass"] = "abstractStatusAccepted" 286 vars["statusComments"] = "" 287 elif isinstance( status, review.AbstractStatusRejected ): 288 vars["statusText"] = _("REJECTED") 289 vars["statusClass"] = "abstractStatusRejected" 290 vars["statusComments"] = "" 291 elif isinstance( status, review.AbstractStatusWithdrawn ): 292 vars["statusText"] = _("Withdrawn") 293 vars["statusClass"] = "abstractStatusWithdrawn" 294 vars["statusComments"] = i18nformat("""_("Withdrawn") by %s _("on") %s %s""")%(self.htmlText(status.getResponsible().getFullName()),format_date(status.getDate(), "d MMM yyyy"), format_time(status.getDate(), format="short", timezone=timezone(tz))) 295 elif isinstance(status,review.AbstractStatusDuplicated): 296 vars["statusText"] = _("Duplicated") 297 vars["statusClass"] = "abstractStatusDuplicated" 298 vars["statusComments"] = "" 299 elif isinstance(status,review.AbstractStatusMerged): 300 vars["statusText"] = _("Merged") 301 vars["statusClass"] = "abstractStatusMerged" 302 vars["statusComments"] = i18nformat("""_("Merged") into %s-%s""")%(self.htmlText(self._abstract.getId()),self.htmlText(self._abstract.getTitle())) 303 elif isinstance(status, (review.AbstractStatusProposedToAccept, review.AbstractStatusProposedToReject)): 304 vars["statusText"] = _("Under Review") 305 vars["statusClass"] = "abstractStatusUnderReview" 306 vars["statusComments"] = "" 359 307 else: 360 vars["contribType"]="" 361 vars["submitter"] = "%s"%self.htmlText( self._abstract.getSubmitter().getFullName() ) 362 vars["submissionDate"] = getAdjustedDate(self._abstract.getSubmissionDate(),tz=tz).strftime("%d %B %Y %H:%M") 363 vars["modificationDate"] = getAdjustedDate(self._abstract.getModificationDate(),tz=tz).strftime("%d %B %Y %H:%M") 364 vars["modifyURL"] = quoteattr( str( urlHandlers.UHAbstractModify.getURL( self._abstract ) ) ) 365 vars["withdrawURL"] = quoteattr( str( urlHandlers.UHAbstractWithdraw.getURL( self._abstract ) ) ) 366 vars["status"] = _("SUBMITTED") 367 vars["btnWithdrawDisabled"] = "" 368 vars["btnModifyDisabled"] = "" 369 vars["btnRecover"] = "" 370 vars["btnManageMaterialDisabled"] = "disabled" 371 if not isinstance( status, review.AbstractStatusSubmitted ): 372 vars["btnModifyDisabled"] = "disabled" 373 if isinstance( status, review.AbstractStatusAccepted ): 374 vars["status"] = _("ACCEPTED") 375 vars["btnWithdrawDisabled"] = "disabled" 376 vars["btnModifyDisabled"] = "disabled" 377 vars["btnManageMaterialDisabled"] = "" 378 elif isinstance( status, review.AbstractStatusRejected ): 379 vars["status"] = _("REJECTED") 380 vars["btnModifyDisabled"] = "disabled" 381 vars["btnWithdrawDisabled"] = "disabled" 382 elif isinstance( status, review.AbstractStatusWithdrawn ): 383 vars["status"] = i18nformat(""" _("WITHDRAWN") <font size="-1">by %s _("on") %s</font>""")%(self.htmlText(status.getResponsible().getFullName()),getAdjustedDate(status.getDate(),tz=tz).strftime("%d %B %Y %H:%M")) 384 if status.getComments().strip() != "": 385 vars["status"] = """%s<br><i>%s</i>"""%(vars["status"],self.htmlText(status.getComments())) 386 vars["btnWithdrawDisabled"] = "disabled" 387 vars["btnRecover"] = i18nformat("""<form action=%s method="POST"> 388 <td> 389 <input type="submit" class="btn" value="_("recover")"> 390 </td> 391 </form> 392 """)%( quoteattr( str( urlHandlers.UHAbstractRecovery.getURL( self._abstract ) ) )) 393 elif isinstance(status,review.AbstractStatusDuplicated): 394 vars["status"] = _("DUPLICATED") 395 vars["btnModifyDisabled"]="disabled" 396 vars["btnWithdrawDisabled"]="disabled" 397 vars["btnManageMaterialDisabled"] = "disabled" 398 elif isinstance(status,review.AbstractStatusMerged): 399 target=status.getTargetAbstract() 400 vars["status"] = i18nformat(""" _("MERGED") into %s-%s""")%(self.htmlText(target.getId()),self.htmlText(target.getTitle())) 401 vars["btnModifyDisabled"]="disabled" 402 vars["btnWithdrawDisabled"]="disabled" 403 vars["btnManageMaterialDisabled"] = "disabled" 404 elif isinstance(status, review.AbstractStatusProposedToAccept) or isinstance(status, review.AbstractStatusProposedToReject): 405 vars["status"] = "UNDER REVIEW" 406 vars["comments"] = self.htmlText( self._abstract.getComments() ) 407 vars["abstractId"] = self._abstract.getId() 408 vars["attachments"] = fossilize(self._abstract.getAttachments().values(), ILocalFileAbstractMaterialFossil) 308 vars["statusText"] = _("Submitted") 309 vars["statusClass"] = "abstractStatusSubmitted" 310 vars["statusComments"] = "" 311 vars["accessWrapper"] = self._aw 409 312 return vars 410 313 … … 416 319 wc = WAbstractDisplay( self._getAW(), self._abstract ) 417 320 return wc.getHTML() 418 419 def _defineToolBar(self):420 pdf=wcomponents.WTBItem( _("get PDF of the programme"),421 icon = Config.getInstance().getSystemIconURL("pdf"),422 actionURL=urlHandlers.UHAbstractDisplayPDF.getURL(self._abstract))423 self._toolBar.addItem(pdf)424 425 321 426 322 class WAbstractDataModification( wcomponents.WTemplated ): -
indico/MaKaC/webinterface/rh/CFADisplay.py
r3a480c r386721 396 396 397 397 398 class RH AbstractsDisplayPDF(RHConferenceBaseDisplay):398 class RHUserAbstractsPDF(RHConferenceBaseDisplay): 399 399 400 400 def _checkProtection( self ): … … 403 403 raise MaKaCError( _("The Call For Abstracts was disabled by the conference managers")) 404 404 405 def _checkParams( self, params ):406 RHConferenceBaseDisplay._checkParams( self, params )407 self._abstractIds = normaliseListParam( params.get("abstracts", []) )408 409 405 def _process( self ): 410 406 tz = timezoneUtils.DisplayTZ(self._aw,self._conf).getDisplayTZ() 411 filename = "Abstracts.pdf" 407 cfaMgr = self._conf.getAbstractMgr() 408 abstracts = cfaMgr.getAbstractListForAvatar( self._aw.getUser() ) 409 abstracts += cfaMgr.getAbstractListForAuthorEmail(self._aw.getUser().getEmail()) 410 self._abstractIds = [abstract.getId() for abstract in abstracts] 412 411 if not self._abstractIds: 413 412 return _("No abstract to print") 413 414 filename = "Abstracts.pdf" 414 415 pdf = AbstractsToPDF(self._conf, self._abstractIds,tz=tz) 415 416 data = pdf.getPDFBin() -
indico/MaKaC/webinterface/tpls/AbstractDisplay.tpl
rd8fbd8 r386721 1 <% import MaKaC.webinterface.urlHandlers as urlHandlers %> 2 <% from MaKaC.paperReviewing import ConferencePaperReview as CPR %> 3 <% from MaKaC.review import AbstractStatusWithdrawn %> 1 4 2 <table width="100%" align="center"> 3 <tr> 4 <td align="center"> 5 <table align="center"> 6 <tr> 7 <form action=${ modifyURL } method="POST"> 8 <td> 9 <input type="submit" class="btn" value="${ _("modify")}" ${ btnModifyDisabled }> 10 </td> 11 </form> 12 <form action=${ withdrawURL } method="POST"> 13 <td> 14 <input type="submit" class="btn" value="${ _("withdraw")}" ${ btnWithdrawDisabled }> 15 </td> 16 </form> 17 ${ btnRecover } 18 </tr> 19 </table> 20 </td> 21 </tr> 22 <tr> 23 <td> 24 <table width="95%" style="border:1px solid #777777;" cellspacing="1" align="center"> 25 <tr> 26 <td bgcolor="white"> 27 <table width="90%" align="center"> 28 <tr> 29 <td align="center"> 30 <font size="+1" color="black"><b>${ title }</b></font> 31 </td> 32 </tr> 33 <tr><td> </td></tr> 34 <tr> 35 <td><br></td> 36 </tr> 37 <tr> 38 <td> 39 <table width="90%" align="center"> 40 <tr> 41 <td> 42 <table width="100%" cellspacing="0"> 43 <tr> 44 <td nowrap class="displayField"><b> ${ _("Abstract ID")} :</b></td> 45 <td width="100%">${ abstractId }</td> 46 </tr> 47 </table> 48 </td> 49 </tr> 50 ${ additionalFields } 51 <tr> 52 <td> 53 <table width="100%" cellspacing="0"> 54 <tr> 55 <td nowrap class="displayField" valign="top"><b> ${ _("Attached files")} :</b></td> 56 <td width="100%"> 57 % if len(attachments) == 0: 58 <span>--none--</span> 59 % else: 60 % for file in attachments: 61 <div style="padding-bottom:3px;"><a href=${ file["url"] }>${ file["file"]["fileName"] }</a></div> 62 % endfor 63 % endif 64 </td> 65 </tr> 66 </table> 67 </td> 68 </tr> 69 <tr> 70 <td> 71 <table width="100%" cellspacing="0"> 72 <tr> 73 <td nowrap class="displayField" valign="top"><b> ${ _("Primary authors")} :</b></td> 74 <td width="100%">${ primary_authors }</td> 75 </tr> 76 </table> 77 </td> 78 </tr> 79 <tr> 80 <td> 81 <table width="100%" cellspacing="0"> 82 <tr> 83 <td nowrap class="displayField" valign="top"><b> ${ _("Co-Authors")} :</b></td> 84 <td width="100%">${ authors }</td> 85 </tr> 86 </table> 87 </td> 88 </tr> 89 <tr> 90 <td><table width="100%" cellspacing="0"> 91 <tr> 92 <td nowrap class="displayField" valign="top"><b> ${ _("Presenters")} :</b></td> 93 <td width="100%">${ speakers }</td> 94 </tr> 95 </table> 96 </td> 97 </tr> 98 <tr> 99 <td> 100 <table width="100%" cellspacing="0"> 101 <tr> 102 <td nowrap class="displayField" valign="top"><b> ${ _("Track classification")} :</b></td> 103 <td width="100%">${ tracks }</td> 104 </tr> 105 </table> 106 </td> 107 </tr> 108 ${ contribType } 109 <tr> 110 <td> 111 <table cellspacing="0"> 112 <tr> 113 <td nowrap class="displayField" valign="top"><b> ${ _("Submitted by")} :</b></td> 114 <td>${ submitter }</td> 115 </tr> 116 </table> 117 </td> 118 </tr> 119 <tr> 120 <td> 121 <table width="100%" cellspacing="0"> 122 <tr> 123 <td nowrap class="displayField" valign="top"><b> ${ _("Submitted on")} :</b></td> 124 <td width="100%">${ submissionDate }</td> 125 </tr> 126 </table> 127 </td> 128 </tr> 129 <tr> 130 <td> 131 <table width="100%" cellspacing="0"> 132 <tr> 133 <td nowrap class="displayField" valign="top"><b> ${ _("Last modified on")} :</b></td> 134 <td width="100%">${ modificationDate }</td> 135 </tr> 136 </table> 137 </td> 138 </tr> 139 <tr> 140 <td> 141 <table> 142 <tr> 143 <td nowrap class="displayField" valign="top"><b> ${ _("Status")} :</b></td> 144 <td>${ status }</td> 145 </tr> 146 </table> 147 </td> 148 </tr> 149 <tr> 150 <td> 151 <table cellspacing="0"> 152 <tr> 153 <td nowrap class="displayField" valign="top"><b> ${ _("Comments")} :</b></td> 154 </tr> 155 <tr> 156 <td width="30"></td> 157 <td><pre>${ comments }</pre></td> 158 </tr> 159 </table> 160 </td> 161 </tr> 162 </table> 163 </td> 164 </tr> 165 </table> 166 </td> 167 </tr> 168 </table> 169 </td> 170 </tr> 171 <tr> 172 <td align="center"> 173 <table align="center"> 174 <tr> 175 <form action=${ modifyURL } method="POST"> 176 <td> 177 <input type="submit" class="btn" value="${ _("modify")}" ${ btnModifyDisabled }> 178 </td> 179 </form> 180 <form action=${ withdrawURL } method="POST"> 181 <td> 182 <input type="submit" class="btn" value="${ _("withdraw")}" ${ btnWithdrawDisabled }> 183 </td> 184 </form> 185 ${ btnRecover } 186 </tr> 187 </table> 188 </td> 189 </tr> 190 </table> 191 <br> 5 <div id="buttonBar" class="abstractButtonBar"> 6 % if abstract.canModify(accessWrapper): 7 % if not modifyDisabled: 8 <a href="${modifyURL}" style="font-weight:bold" >${_("Edit")}</a> | 9 % endif 10 % if isinstance(abstract.getCurrentStatus(), AbstractStatusWithdrawn): 11 <a href="${recoverURL}">${_("Recover")}</a> | 12 % elif not withdrawDisabled: 13 <a href="${withdrawURL}" ">${_("Withdraw")}</a> | 14 % endif 15 % endif 16 <a href="${str(urlHandlers.UHAbstractDisplayPDF.getURL(abstract))}" target="_blank">${_("PDF")}</a> 17 </div> 18 <h1 class="abstractTitle"> 19 ${abstract.getTitle()} 20 </h1> 21 <div> 22 <div class="abstractMainContent"> 23 <div class="abstractInformation"> 24 <div class="abstractSubmitter"> 25 ${("Submitted by")} <span style="font-weight: bold">${abstract.getSubmitter().getStraightFullName()} </span> 26 ${_("on")} 27 <span style="font-weight: bold">${formatDate(abstract.getSubmissionDate())}</span> 28 ${_("at")} 29 <span style="font-weight: bold">${formatTime(abstract.getSubmissionDate())}</span> 30 </div> 31 <div class="abstractHeader"> 32 <div> 33 <span style="font-weight:bold">${("Id")}:</span> 34 ${abstract.getId()} 35 </div> 36 <div> 37 <span style="font-weight: bold">${_("Last modification")}:</span> 38 ${formatDate(abstract.getModificationDate())} ${formatTime(abstract.getModificationDate())} 39 </div> 40 % if contribType: 41 <div> 42 <span style="font-weight:bold">${("Contribution type")}:</span> 43 ${contribType.getName()} 44 </div> 45 % endif 46 % if False: 47 <div> 48 <span style="font-weight:bold">${("Track classification")}:</span> 49 ${",".join([t.getTitle() for t in tracks])} 50 </div> 51 % endif 52 </div> 53 </div> 54 <div class="abstractDetail"> 55 % for f in abstract.getConference().getAbstractMgr().getAbstractFieldsMgr().getActiveFields(): 56 % if abstract.getField(f.getId()): 57 <div class="abstractSection"> 58 <h2 class="abstractSectionTitle">${f.getName()}</h2> 59 <div class="abstractSectionContent">${abstract.getField(f.getId())} 60 </div> 61 </div> 62 % endif 63 % endfor 64 % if abstract.getComments(): 65 <div class="abstractSection"> 66 <h2 class="abstractSectionTitle">${_("Comments")}</h2> 67 <div class="abstractSectionContent">${abstract.getComments()}</div> 68 </div> 69 % endif 70 </div> 71 </div> 72 73 <div class="abstractRightPanel"> 74 75 <div class="abstractStatusSection" style="border-bottom:1px solid #eaeaea; padding-bottom:5px;"> 76 <h2 class="abstractSectionTitle">${_("Abstract status")}</h2> 77 <div> 78 <div class="abstractStatus ${statusClass}">${statusText}</div> 79 </div> 80 </div> 81 % if abstract.getPrimaryAuthorList(): 82 <div class="abstractRightPanelSection"> 83 <h2 class="abstractSectionTitle">${_("Primary authors")}</h2> 84 <ul> 85 % for pa in abstract.getPrimaryAuthorList(): 86 <li>${pa.getStraightFullName()} 87 (${pa.getAffiliation()}) 88 % endfor 89 </ul> 90 </div> 91 % endif 92 % if abstract.getCoAuthorList(): 93 <div class="abstractRightPanelSection"> 94 <h2 class="abstractSectionTitle">${_("Co-authors")}</h2> 95 <ul> 96 % for ca in abstract.getCoAuthorList(): 97 <li>${ca.getStraightFullName()} 98 (${ca.getAffiliation()}) 99 % endfor 100 </ul> 101 </div> 102 % endif 103 % if abstract.getSpeakerList(): 104 <div class="abstractRightPanelSection"> 105 <h2 class="abstractSectionTitle">${_("Presenters")}</h2> 106 <ul> 107 % for sp in abstract.getSpeakerList(): 108 <li>${sp.getStraightFullName()} 109 (${sp.getAffiliation()}) 110 % endfor 111 </ul> 112 </div> 113 % endif 114 % if len(attachments) != 0: 115 <div class="abstractRightPanelSection"> 116 <h2 class="abstractSectionTitle">${_("Attached files")}</h2> 117 <ul> 118 % for file in attachments: 119 <li><a href="${file['url']}">${ file["file"]["fileName"] }</a> 120 % endfor 121 </ul> 122 </div> 123 % endif 124 </div> 125 </div> 126 <script type="text/javascript"> 127 % if statusComments: 128 $(".abstractStatus").qtip({ 129 content: " ${statusComments}", 130 position :{ 131 at: "bottom middle", 132 my: "top middle" 133 } 134 }); 135 % endif 136 137 138 </script> -
indico/MaKaC/webinterface/tpls/ContributionDisplayFull.tpl
r3982db r386721 47 47 <%block name="paperReview"> 48 48 % if reviewingActive: 49 <div class="contributionReviewingSection" style="border-bottom:1px solid #eaeaea; padding-bottom:5px;">49 <div class="contributionReviewingSection"> 50 50 <h2 class="contributionSectionTitle">${_("Call for papers")}</h2> 51 51 <div> -
indico/MaKaC/webinterface/tpls/UserAbstracts.tpl
r988cfe r386721 1 <div style="border-bottom: 1px solid #EAEAEA; padding-bottom: 5px; margin-bottom: 15px;"> 2 % if abstracts: 3 <form action="${str(urlHandlers.UHUserAbstractsPDF.getURL(conf))}" method="post" target="_blank" id="formAbstracts"> 4 <span class="fakeLink" id="exportPDF">${ _("Export to PDF")}</span> 5 </form> 6 % else: 7 <span class="collShowBookingsText">${_("No submitted abstract found within this conference")}</span> 8 % endif 9 </div> 10 <div id="abstractList"> 11 % for abstract in abstracts: 12 <div class="abstractListAbstractItem"> 13 <div> 14 <a href="${str( urlHandlers.UHAbstractDisplay.getURL( abstract ))}" style="font-size:14px">${abstract.getTitle()} </a> 15 </div> 16 <div style="line-height:17px; font-size: 12px; color:#666666;"> 17 <div style="display:inline"><span style="font-weight:bold">${("Id")}: </span>${abstract.getId()}</div> 18 <div style="display:inline"><span style="font-weight:bold">${("Status")}: </span>${getAbstractStatus(abstract)}</div> 19 <div style="display:inline"><span style="font-weight:bold">${("Last modified")}: </span>${formatDate(abstract.getModificationDate()) + " "+ formatTime(abstract.getModificationDate())}</div> 20 </div> 21 </div> 22 % endfor 23 </div> 1 24 2 <table width="100%" align="center"> 3 <tr> 4 <td><br> 5 </td> 6 </tr> 7 <tr> 8 <td> 9 <table style="border-left:1px solid #777777;border-top:1px solid #777777;" width="95%" align="center" cellspacing="0"> 10 <tr> 11 <td class="groupTitle" colspan="4" style="background:#E5E5E5; color:gray; border-top:2px solid #FFFFFF; border-left:2px solid #FFFFFF"> ${ _("Abstracts")}</td> 12 </tr> 13 <tr> 14 <td colspan="4">  ${ _("Click on the title of an abstract to see its details, or if you want to modify or withdraw it")}</td> 15 </tr> 16 <tr> 17 <td nowrap class="titleCellFormat" style="border-right:5px solid #FFFFFF;border-left:5px solid #FFFFFF;border-bottom: 1px solid #5294CC;"> ${ _("ID")}</td> 18 <td nowrap class="titleCellFormat" style="border-right:5px solid #FFFFFF;border-left:5px solid #FFFFFF;border-bottom: 1px solid #5294CC;"> ${ _("Title")}</td> 19 <td nowrap class="titleCellFormat" style="border-right:5px solid #FFFFFF;border-left:5px solid #FFFFFF;border-bottom: 1px solid #5294CC;"> ${ _("Status")}</td> 20 <td nowrap class="titleCellFormat" style="border-right:5px solid #FFFFFF;border-left:5px solid #FFFFFF;border-bottom: 1px solid #5294CC;"> ${ _("Modification date")}</td> 21 </tr> 22 <form action=${ abstractsPDFURL } method="post" target="_blank"> 23 ${ abstracts } 24 <tr><td colspan="4"> </td></tr> 25 <tr> 26 <td align="center" colspan="4"> 27 <input type="submit" class="btn" value="${ _("get PDF of selected abstracts")}"> 28 </td> 29 </form> 30 </tr> 31 </table> 32 </td> 33 </tr> 34 </table> 35 <br> 25 <script type="text/javascript"> 26 IndicoUI.executeOnLoad(function(){ 27 $("#exportPDF").click(function(){ 28 $("#formAbstracts").submit(); 29 }); 30 }); 31 </script> -
indico/MaKaC/webinterface/urlHandlers.py
rae6d2f r386721 797 797 _relativeURL = "abstractDisplay.py/pdf" 798 798 799 class UHAbstractsDisplayPDF( URLHandler ):800 _relativeURL = "abstractDisplay.py/abstractsPdf"801 802 803 799 class UHAbstractConfManagerDisplayPDF( URLHandler ): 804 800 _relativeURL = "abstractManagment.py/abstractToPDF" … … 840 836 _relativeURL = "userAbstracts.py" 841 837 838 class UHUserAbstractsPDF( URLHandler ): 839 _relativeURL = "userAbstracts.py/pdf" 842 840 843 841 class UHAbstractModify( URLHandler ): -
indico/htdocs/abstractDisplay.py
r633342 r386721 25 25 return CFADisplay.RHAbstractDisplay( req ).process( params ) 26 26 27 28 27 def pdf(req, **params): 29 28 return CFADisplay.RHAbstractDisplayPDF( req ).process( params ) 30 29 31 32 def abstractsPdf(req, **params):33 return CFADisplay.RHAbstractsDisplayPDF( req ).process( params )34 35 30 def getAttachedFile(req,**params): 36 31 return CFADisplay.RHGetAttachedFile(req).process(params) -
indico/htdocs/css/Default.css
rae6d2f r386721 7966 7966 padding: 0 0 5px 5px; 7967 7967 z-index:999; 7968 } 7968 7969 7969 7970 .contributionListFiltersContainer { … … 7979 7980 } 7980 7981 7981 .contributionListContribItem {7982 .contributionListContribItem, .abstractListAbstractItem { 7982 7983 border-bottom: 1px solid #EBEBEB; 7983 7984 padding-bottom: 5px; … … 8008 8009 } 8009 8010 8010 .contributionListContribHeader, .contributionHeader, .subContributionHeader {8011 .contributionListContribHeader, .contributionHeader, .subContributionHeader, .abstractHeader { 8011 8012 line-height:17px; 8012 8013 color:#888; … … 8022 8023 } 8023 8024 8024 .contributionButtonBar, .subContributionButtonBar, .materialButtonBar {8025 .contributionButtonBar, .subContributionButtonBar, .materialButtonBar, .abstractButtonBar{ 8025 8026 text-align: right; 8026 8027 margin-bottom: 5px; 8027 8028 } 8028 8029 8029 .contributionTitle, .subContributionTitle, .materialTitle {8030 .contributionTitle, .subContributionTitle, .materialTitle, .abstractTitle { 8030 8031 font-size: 18px; 8031 8032 font-weight: bold; … … 8037 8038 } 8038 8039 8039 .contributionMainContent, .subContributionMainContent, .materialMainContent {8040 .contributionMainContent, .subContributionMainContent, .materialMainContent, .abstractMainContent{ 8040 8041 float:left; 8041 8042 width:500px; 8042 8043 } 8043 .contributionRightPanel, .subContributionRightPanel {8044 .contributionRightPanel, .subContributionRightPanel, .materialRightPanel, .abstractRightPanel{ 8044 8045 float:right; 8045 8046 width: 200px; … … 8048 8049 border-left: 1px solid #EAEAEA; 8049 8050 } 8050 .contributionRightPanelSection, .subContributionRightPanelSection {8051 .contributionRightPanelSection, .subContributionRightPanelSection, .abstractRightPanelSection{ 8051 8052 border-bottom: 1px solid #EAEAEA; 8052 8053 font-size: 11px; … … 8056 8057 } 8057 8058 8058 .contributionRightPanelSection ul, .subContributionRightPanelSection ul, .materialSection ul {8059 .contributionRightPanelSection ul, .subContributionRightPanelSection ul, .materialSection ul, .abstractRightPanelSection ul{ 8059 8060 list-style: none inside none; 8060 8061 margin: 0px; … … 8062 8063 } 8063 8064 8064 .contributionRightPanelSection li, .subContributionRightPanelSection li {8065 .contributionRightPanelSection li, .subContributionRightPanelSection li, .materialSection li, .abstractRightPanelSection li{ 8065 8066 margin-bottom: 3px; 8066 8067 } … … 8072 8073 } 8073 8074 8074 .contributionRightPanelSection a, .subContributionRightPanelSection a {8075 .contributionRightPanelSection a, .subContributionRightPanelSection a, .abstractRightPanelSection a{ 8075 8076 font-size: 11px; 8076 8077 word-wrap: break-word; … … 8087 8088 } 8088 8089 8089 .contributionInformation, .subContributionInformation {8090 .contributionInformation, .subContributionInformation, .abstractInformation { 8090 8091 border-bottom: 1px solid #EAEAEA; 8091 8092 margin-bottom: 15px; … … 8093 8094 } 8094 8095 8095 .contributionDetail, .subContributionDetail, .materialDetail {}8096 8097 .contributionSection, .subContributionSection, .materialSection {8096 .contributionDetail, .subContributionDetail, .materialDetail, .abstractDetail {} 8097 8098 .contributionSection, .subContributionSection, .materialSection, .abstractSection { 8098 8099 margin-bottom: 10px; 8099 8100 } 8100 .contributionSectionTitle, .subContributionSectionTitle {8101 .contributionSectionTitle, .subContributionSectionTitle, .abstractSectionTitle { 8101 8102 color: #444; 8102 8103 font-size: 14px; … … 8105 8106 margin-top: 0; 8106 8107 } 8107 .contributionSectionContent, .subContributionSectionContent, .materialSectionContent {8108 .contributionSectionContent, .subContributionSectionContent, .materialSectionContent, .abstractSectionContent { 8108 8109 font-size: 12px; 8109 8110 line-height: 1.5em; … … 8113 8114 } 8114 8115 8115 .contributionSpeakerList, .subContributionSpeakerList {8116 .contributionSpeakerList, .subContributionSpeakerList, .abstractSubmitter{ 8116 8117 margin-bottom:3px; 8117 8118 color:#666666; 8118 8119 } 8119 8120 8120 .contributionReviewingSection {8121 .contributionReviewingSection, .abstractStatusSection { 8121 8122 margin-bottom: 5px; 8122 8123 border-radius: 5px; 8123 8124 color: #888; 8124 } 8125 8126 .contributionReviewingStatus { 8125 border-bottom:1px solid #eaeaea; 8126 padding-bottom:5px; 8127 } 8128 8129 .contributionReviewingStatus, .abstractStatus { 8127 8130 border-radius: 5px; 8128 8131 margin-top: 5px; … … 8134 8137 } 8135 8138 8136 .contributionReviewingStatusRejected {8137 background: none repeat scroll 0 0 #B93725; /*#881122;*/8138 } 8139 8140 .contributionReviewingStatusAccepted {8139 .contributionReviewingStatusRejected, .abstractStatusRejected, .abstractStatusDuplicated, .abstractStatusWithdrawn { 8140 background: none repeat scroll 0 0 #B93725; 8141 } 8142 8143 .contributionReviewingStatusAccepted, .abstractStatusAccepted { 8141 8144 background: none repeat scroll 0 0 #9AC33A; 8142 8145 } 8143 8146 8144 .contributionReviewingStatusPending {8147 .contributionReviewingStatusPending, .abstractStatusUnderReview { 8145 8148 background: none repeat scroll 0 0 #A4CCC9; 8146 8149 } 8147 8150 8148 .contributionReviewingStatusCorrected {8151 .contributionReviewingStatusCorrected, .abstractStatusMerged { 8149 8152 background: none repeat scroll 0 0 #D8B81A; 8150 8153 } 8151 8154 8152 .contributionReviewingStatusNotSubmitted {8155 .contributionReviewingStatusNotSubmitted, .abstractStatusSubmitted { 8153 8156 background: none repeat scroll 0 0 #BCB8A3; 8154 8157 } -
indico/htdocs/userAbstracts.py
rbdd862 r386721 27 27 return CFADisplay.RHUserAbstracts( req ).process( params ) 28 28 29 def pdf(req, **params): 30 return CFADisplay.RHUserAbstractsPDF( req ).process( params )
Note: See TracChangeset
for help on using the changeset viewer.
